fuli-context 0.7.4-beta.3 → 0.7.6
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 +77 -6
- package/README.zh-CN.md +69 -6
- package/compose.graphiti.yml +6 -6
- package/dist/web/assets/AboutPage-sLV9WChi.js +1 -0
- package/dist/web/assets/ConnectionsPage-BWn4ywGJ.js +1 -0
- package/dist/web/assets/KnowledgeEditDialog-CZ5ziPrD.js +1 -0
- package/dist/web/assets/KnowledgeInspector-CRQWOaos.js +1 -0
- package/dist/web/assets/KnowledgeOrganizerPage-Dfj3vIpU.js +1 -0
- package/dist/web/assets/KnowledgePage-BRYC9S5Y.js +1 -0
- package/dist/web/assets/KnowledgeWorkspace-ChEB5Bwk.js +4 -0
- package/dist/web/assets/OverviewPage-Cd66M0RT.js +1 -0
- package/dist/web/assets/PersonalProfilePage-RCFHL0Wz.js +1 -0
- package/dist/web/assets/PersonalProjectsPage-DEh8XWby.js +1 -0
- package/dist/web/assets/ProjectAgentsPage-Crh7PrXa.css +1 -0
- package/dist/web/assets/ProjectAgentsPage-DPnaH-TR.js +11 -0
- package/dist/web/assets/PublicProjectsPage-mstPEjHe.js +1 -0
- package/dist/web/assets/ReviewPage-6Y1SmfZy.js +1 -0
- package/dist/web/assets/SearchableSelect-D3HM8YF8.js +1 -0
- package/dist/web/assets/SettingsPage--LdTMUm7.js +1 -0
- package/dist/web/assets/SettingsPage-CwZp2ka4.css +1 -0
- package/dist/web/assets/WritingTastePage-CIpKswvs.js +1 -0
- package/dist/web/assets/{console-D_2zC4lm.js → console-BT1P2Db4.js} +1 -1
- package/dist/web/assets/{conversation-launcher-settings-DQmMH2j7.js → conversation-launcher-settings-DrJEotdf.js} +1 -1
- package/dist/web/assets/i18n-js6gfc7j.js +9 -0
- package/dist/web/assets/{identity-DmGcY3Y6.js → identity-CfDfanpa.js} +1 -1
- package/dist/web/assets/index-BnH5mcZx.css +1 -0
- package/dist/web/assets/index-GqJf1xqg.js +2 -0
- package/dist/web/assets/{model-CVoOdRsL.js → model-DJkLAJsg.js} +1 -1
- package/dist/web/assets/{useApi-CROJJdhE-CBNg4CdH.js → useApi-CROJJdhE-BdSti7Y2.js} +1 -1
- package/dist/web/assets/vue-router-Kk67EaCP.js +1 -0
- package/dist/web/index.html +6 -6
- package/graph-provider/fuli_graph/app.py +8 -0
- package/graph-provider/fuli_graph/collaboration_context.py +69 -6
- package/graph-provider/fuli_graph/knowledge_search.py +84 -5
- package/graph-provider/fuli_graph/model_validation.py +130 -0
- package/graph-provider/fuli_graph/models.py +24 -5
- package/graph-provider/fuli_graph/project_agent_access.py +54 -0
- package/graph-provider/fuli_graph/project_agent_coordination_models.py +22 -0
- package/graph-provider/fuli_graph/project_agent_executor_models.py +635 -0
- package/graph-provider/fuli_graph/project_agent_models.py +278 -0
- package/graph-provider/fuli_graph/project_agent_routes.py +626 -0
- package/graph-provider/fuli_graph/project_agent_task_models.py +545 -0
- package/graph-provider/fuli_graph/runtime.py +259 -0
- package/graph-provider/fuli_graph/search_projection.py +3 -0
- package/graph-provider/fuli_graph/store.py +6 -0
- package/graph-provider/fuli_graph/store_knowledge.py +62 -9
- package/graph-provider/fuli_graph/store_project_agent_coordination_policy.py +122 -0
- package/graph-provider/fuli_graph/store_project_agent_executor_learning.py +756 -0
- package/graph-provider/fuli_graph/store_project_agent_executor_routing.py +601 -0
- package/graph-provider/fuli_graph/store_project_agent_executors.py +1087 -0
- package/graph-provider/fuli_graph/store_project_agent_task_reads.py +458 -0
- package/graph-provider/fuli_graph/store_project_agent_task_recruitment.py +705 -0
- package/graph-provider/fuli_graph/store_project_agent_task_staffing.py +586 -0
- package/graph-provider/fuli_graph/store_project_agent_tasks.py +1151 -0
- package/graph-provider/fuli_graph/store_project_agents.py +965 -0
- package/graph-provider/pyproject.toml +2 -1
- package/npm-shrinkwrap.json +2 -2
- package/package.json +1 -1
- package/skills/capturing-session-knowledge/SKILL.md +39 -0
- package/src/adaptive-runtime/executor-pool.js +127 -0
- package/src/adaptive-runtime/graph-services.js +166 -0
- package/src/adaptive-runtime/lease-client.js +335 -0
- package/src/adaptive-runtime/runtime-broker.js +318 -0
- package/src/adaptive-runtime/settings.js +111 -0
- package/src/adaptive-runtime/state.js +74 -0
- package/src/agent-tools/graph-definitions.js +419 -0
- package/src/agent-tools/graph-handlers.js +65 -0
- package/src/agent-tools/project-agent-definitions.js +307 -0
- package/src/backup/graph-backup.js +289 -0
- package/src/backup/identity-reconciliation.js +208 -0
- package/src/backup/runtime-adapters.js +269 -0
- package/src/cli/command-registry.js +6 -2
- package/src/cli/graph-data-command.js +112 -0
- package/src/cli/local-runtime-command.js +16 -2
- package/src/cli/setup-command.js +19 -3
- package/src/cli/update-command.js +4 -0
- package/src/cli.js +6 -0
- package/src/graphiti/collaboration-preference-projection.js +29 -1
- package/src/graphiti/collaboration-preference-workflow.js +121 -0
- package/src/graphiti/federated-application.js +53 -90
- package/src/graphiti/project-agent-control-plane.js +275 -0
- package/src/graphiti/project-agent-mapping.js +1024 -0
- package/src/graphiti/project-agent-workflows.js +576 -0
- package/src/graphiti/provider-client.js +282 -1
- package/src/http/api-router.js +63 -9
- package/src/http/graph-api-router.js +290 -0
- package/src/local-runtime/lifecycle.js +46 -10
- package/src/mcp/context-resources.js +15 -6
- package/src/mcp/create-mcp-server.js +51 -16
- package/src/mcp/instructions.js +7 -5
- package/src/mcp/runtime.js +17 -5
- package/src/mcp/session-id.js +38 -1
- package/src/mcp/tool-annotations.js +71 -0
- package/src/mcp-server.js +23 -6
- package/src/native-runtime/runtime.js +717 -0
- package/src/server.js +6 -2
- package/src/setup/agent-installation-status.js +7 -1
- package/src/setup/agents.js +3 -1
- package/src/setup/claude-code-config.js +3 -1
- package/src/setup/codex-bootstrap.js +11 -10
- package/src/setup/codex-config.js +7 -1
- package/src/setup/cursor-config.js +3 -1
- package/src/setup/graph-runtime.js +158 -13
- package/src/setup/neo4j-memory-profile.js +43 -0
- package/src/setup/options.js +38 -2
- package/src/setup/paths.js +14 -0
- package/src/setup/setup.js +37 -1
- package/src/system/resource-monitor.js +181 -16
- package/src/system/runtime-settings.js +10 -1
- package/src/system/system-service.js +27 -2
- package/dist/web/assets/AboutPage-Dpf5fRWv.js +0 -1
- package/dist/web/assets/ConnectionsPage-D21aUDCP.js +0 -1
- package/dist/web/assets/KnowledgeEditDialog-u7lpfN3j.js +0 -1
- package/dist/web/assets/KnowledgeInspector-k4xnHtXd.js +0 -1
- package/dist/web/assets/KnowledgeOrganizerPage-Bdj7Rn84.js +0 -1
- package/dist/web/assets/KnowledgePage-UHVAbC1W.js +0 -1
- package/dist/web/assets/KnowledgeWorkspace-Lq3d-MeC.js +0 -4
- package/dist/web/assets/OverviewPage-CycAgA1V.js +0 -1
- package/dist/web/assets/PersonalProfilePage-U9oIV5FT.js +0 -1
- package/dist/web/assets/PersonalProjectsPage-C5RpXKcA.js +0 -1
- package/dist/web/assets/PublicProjectsPage-DiWxm35E.js +0 -1
- package/dist/web/assets/ReviewPage-jxRfGSJK.js +0 -1
- package/dist/web/assets/SearchableSelect-B3-5IPup.js +0 -1
- package/dist/web/assets/SettingsPage-BqfGDOho.js +0 -1
- package/dist/web/assets/SettingsPage-CAfz4qiV.css +0 -1
- package/dist/web/assets/WritingTastePage-BJxhMqJR.js +0 -1
- package/dist/web/assets/i18n-CwqXDI1C.js +0 -5
- package/dist/web/assets/index-IUGLt4lG.js +0 -2
- package/dist/web/assets/index-X2j29j8i.css +0 -1
- package/dist/web/assets/vue-router-CWSsUUio.js +0 -1
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import{A as e,B as t,C as n,D as r,L as i,N as a,O as o,P as s,S as c,Y as l,_ as u,a as d,d as f,et as p,g as m,h,j as g,k as _,l as v,m as y,n as b,p as x,rt as S,s as C,tt as w,u as T,v as E,x as D,y as O,z as k}from"./i18n-js6gfc7j.js";import{a as A,i as j,n as M,o as ee,r as N,t as te}from"./console-BT1P2Db4.js";import{t as P}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{t as ne}from"./SearchableSelect-D3HM8YF8.js";var F=[`button:not([disabled])`,`input:not([disabled]):not([type="hidden"])`,`select:not([disabled])`,`textarea:not([disabled])`,`a[href]`,`[contenteditable="true"]`,`[tabindex]:not([tabindex="-1"])`].join(`,`);function re(e,t){let n=l(null),r=l(null),a=null,s=0;i(e,t=>{let i=++s;if(t){a=document.activeElement instanceof HTMLElement?document.activeElement:null,o().then(()=>{if(i!==s||!e())return;let t=n.value;t&&(t.open||t.showModal(),(r.value??I(t)[0])?.focus({preventScroll:!0}))});return}let l=n.value;l?.open&&l.close(),c(i)},{immediate:!0}),_(()=>{s+=1;let e=n.value;e?.open&&e.close();let t=a;a=null,t?.isConnected&&t.focus({preventScroll:!0})});function c(e){let t=a;a=null,o().then(()=>{e!==s||!t?.isConnected||t.focus({preventScroll:!0})})}function u(e){e.preventDefault(),t()}function d(e){if(e.key!==`Tab`)return;let t=n.value;if(!t)return;let r=I(t);if(!r.length){e.preventDefault(),t.focus({preventScroll:!0});return}let i=r[0],a=r.at(-1)??i,o=document.activeElement;e.shiftKey&&(o===i||!t.contains(o))?(e.preventDefault(),a.focus({preventScroll:!0})):!e.shiftKey&&(o===a||!t.contains(o))&&(e.preventDefault(),i.focus({preventScroll:!0}))}return{dialogRef:n,initialFocusRef:r,onCancel:u,onKeydown:d}}function I(e){return[...e.querySelectorAll(F)].filter(e=>!e.hidden&&e.getAttribute(`aria-hidden`)!==`true`)}var L={class:`project-agent-assignment-dialog-header`},ie={id:`project-agent-assignment-dialog-title`},R=[`disabled`],z={class:`project-agent-assignment-dialog-fields`},B={key:0},V={key:1},H=[`value`],ae={key:2},U={key:3,class:`project-agent-assignment-wide-field`},oe=[`disabled`],se={key:4},ce=[`disabled`],le={key:5},ue=[`disabled`,`placeholder`],de={class:`project-agent-assignment-wide-field`},fe=[`disabled`,`placeholder`],pe={key:0,class:`project-agent-assignment-dialog-error`,role:`alert`},me={class:`project-agent-assignment-dialog-actions`},he=[`disabled`],W=[`disabled`],ge=P(n({__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:n}){let r=e,a=n,o=l(``),s=l(``),u=l(``),f=l(``),_=l(``),v=l(``),y=l(!1),b=l(``),{dialogRef:C,initialFocusRef:w,onCancel:D,onKeydown:k}=re(()=>r.open,()=>a(`close`)),j=h(()=>r.action!==`assign`),M=h(()=>r.projects.map(e=>({value:e.project_id,label:e.profile.name,meta:e.project_id}))),ee=h(()=>r.availableAgents.filter(e=>e.agentId!==r.agent?.agentId&&e.profile.status===`active`).map(e=>({value:e.agentId,label:e.profile.name,meta:e.agentId})));i(()=>[r.open,r.agent,r.assignment,r.action,r.defaultProjectId],()=>{r.open&&(o.value=r.assignment?.personalProjectId??r.defaultProjectId??r.projects[0]?.project_id??``,s.value=``,u.value=r.assignment?.responsibility??r.agent?.profile.responsibility??``,f.value=r.assignment?.scope??``,_.value=r.assignment?.workKinds?.join(`
|
|
2
|
+
`)??``,v.value=``,b.value=``)},{immediate:!0});async function N(){if(!r.agent)return;b.value=``;let e=v.value.trim(),t=u.value.trim();if(!e||r.action===`assign`&&!t){b.value=d(`projectAgents.assignmentDialog.required`);return}if(r.action===`replace`&&!s.value){b.value=d(`projectAgents.assignmentDialog.replacementRequired`);return}y.value=!0;try{if(r.action===`assign`){let n=await A(`/api/project-agent-assignments`,{personalSpaceId:r.agent.personalSpaceId,personalProjectId:o.value,agentId:r.agent.agentId,idempotencyKey:P(),responsibility:t,workKinds:te(_.value),capabilities:[],reason:e});a(`saved`,n)}else{if(!r.assignment)return;await A(`/api/project-agent-assignments/${encodeURIComponent(r.assignment.assignmentId)}/${r.action}`,r.action===`replace`?{personalSpaceId:r.agent.personalSpaceId,personalProjectId:r.assignment.personalProjectId,assignmentId:r.assignment.assignmentId,expectedRevision:r.assignment.revision??0,replacementAgentId:s.value,idempotencyKey:P(),responsibility:t||r.assignment.responsibility,workKinds:te(_.value),capabilities:r.assignment.capabilities??[],reason:e}:{personalSpaceId:r.agent.personalSpaceId,personalProjectId:r.assignment.personalProjectId,assignmentId:r.assignment.assignmentId,expectedRevision:r.assignment.revision??0,reason:e}),a(`changed`)}a(`close`)}catch(e){b.value=e instanceof Error?e.message:d(`projectAgents.assignmentDialog.saveFailed`)}finally{y.value=!1}}function te(e){return[...new Set(e.split(`
|
|
3
|
+
`).map(e=>e.trim()).filter(Boolean))]}function P(){return`project-agent-assignment-${typeof crypto<`u`&&`randomUUID`in crypto?crypto.randomUUID():`${Date.now()}-${Math.random().toString(16).slice(2)}`}`}return(n,i)=>e.open?(g(),O(`dialog`,{key:0,ref_key:`dialogRef`,ref:C,class:`project-agent-assignment-dialog vue-dialog`,"aria-modal":`true`,"aria-labelledby":`project-agent-assignment-dialog-title`,onCancel:i[8]||=(...e)=>p(D)&&p(D)(...e),onKeydown:i[9]||=(...e)=>p(k)&&p(k)(...e)},[m(`form`,{class:`project-agent-assignment-dialog-shell`,onSubmit:x(N,[`prevent`])},[m(`header`,L,[m(`h3`,ie,S(p(d)(`projectAgents.assignmentDialog.${j.value?e.action:`assign`}Title`)),1),m(`button`,{ref_key:`initialFocusRef`,ref:w,"data-dialog-initial-focus":``,class:`quiet-button`,type:`button`,disabled:y.value,onClick:i[0]||=e=>a(`close`)},S(p(d)(`common.actions.close`)),9,R)]),m(`div`,z,[j.value?(g(),O(`label`,V,[m(`span`,null,S(p(d)(`projectAgents.fields.project`)),1),m(`input`,{value:r.assignment?r.assignment.personalProjectId:``,disabled:``},null,8,H)])):(g(),O(`label`,B,[m(`span`,null,S(p(d)(`projectAgents.fields.project`)),1),c(ne,{modelValue:o.value,"onUpdate:modelValue":i[1]||=e=>o.value=e,"control-id":`project-agent-assignment-project`,options:M.value,label:p(d)(`projectAgents.fields.project`),placeholder:p(d)(`projectAgents.dialog.projectPlaceholder`),disabled:y.value,required:``},null,8,[`modelValue`,`options`,`label`,`placeholder`,`disabled`])])),j.value&&e.action===`replace`?(g(),O(`label`,ae,[m(`span`,null,S(p(d)(`projectAgents.assignmentDialog.replacement`)),1),c(ne,{modelValue:s.value,"onUpdate:modelValue":i[2]||=e=>s.value=e,"control-id":`project-agent-assignment-replacement`,options:ee.value,label:p(d)(`projectAgents.assignmentDialog.replacement`),placeholder:p(d)(`projectAgents.assignmentDialog.replacementPlaceholder`),disabled:y.value,required:``},null,8,[`modelValue`,`options`,`label`,`placeholder`,`disabled`])])):E(``,!0),j.value?E(``,!0):(g(),O(`label`,U,[m(`span`,null,S(p(d)(`projectAgents.fields.responsibility`)),1),t(m(`textarea`,{"onUpdate:modelValue":i[3]||=e=>u.value=e,rows:`3`,maxlength:`4096`,disabled:y.value,required:``},null,8,oe),[[T,u.value]])])),j.value?E(``,!0):(g(),O(`label`,se,[m(`span`,null,S(p(d)(`projectAgents.fields.scope`)),1),t(m(`input`,{"onUpdate:modelValue":i[4]||=e=>f.value=e,maxlength:`4096`,disabled:y.value},null,8,ce),[[T,f.value]])])),j.value?E(``,!0):(g(),O(`label`,le,[m(`span`,null,S(p(d)(`projectAgents.assignmentDialog.workKinds`)),1),t(m(`textarea`,{"onUpdate:modelValue":i[5]||=e=>_.value=e,rows:`3`,disabled:y.value,placeholder:p(d)(`projectAgents.assignmentDialog.workKindsPlaceholder`)},null,8,ue),[[T,_.value]])])),m(`label`,de,[m(`span`,null,S(p(d)(`projectAgents.fields.reason`)),1),t(m(`textarea`,{"onUpdate:modelValue":i[6]||=e=>v.value=e,rows:`3`,maxlength:`2048`,disabled:y.value,placeholder:p(d)(`projectAgents.assignmentDialog.reasonPlaceholder`),required:``},null,8,fe),[[T,v.value]])])]),b.value?(g(),O(`p`,pe,S(b.value),1)):E(``,!0),m(`footer`,me,[m(`button`,{class:`quiet-button`,type:`button`,disabled:y.value,onClick:i[7]||=e=>a(`close`)},S(p(d)(`common.actions.cancel`)),9,he),m(`button`,{class:`project-agent-primary-action`,type:`submit`,disabled:y.value},S(p(d)(`projectAgents.assignmentDialog.${j.value?`saveChange`:`saveAssign`}`)),9,W)])],32)],544)):E(``,!0)}}),[[`__scopeId`,`data-v-27954ba8`]]),_e={class:`project-agent-dialog-header`},ve={id:`executor-routing-dialog-title`},ye=[`disabled`],be={class:`project-agent-dialog-fields`},G=[`disabled`],xe=[`disabled`],Se=[`disabled`],Ce=[`disabled`],we={class:`project-agent-wide-field`},Te=[`disabled`],Ee={class:`project-agent-dialog-check`},De=[`disabled`],Oe={class:`project-agent-dialog-note project-agent-wide-field`},ke=[`disabled`],K=[`disabled`],Ae={key:0},je={key:1},Me=[`disabled`],q=[`disabled`],Ne={class:`project-agent-wide-field`},Pe=[`placeholder`,`disabled`],Fe={class:`project-agent-wide-field`},Ie=[`disabled`],Le={class:`project-agent-wide-field`},Re=[`disabled`],ze={class:`project-agent-dialog-note project-agent-wide-field`},Be={key:0,class:`project-agent-dialog-error`,role:`alert`},Ve={class:`project-agent-dialog-actions`},He=[`disabled`],Ue=[`disabled`],We=P(n({__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 r=e,a=n,o=l(``),s=l(``),u=l(`external`),f=l(``),_=l(100),b=l(!1),w=l(`space`),k=l(``),A=l(``),j=l(``),M=l(``),N=l(``),te=l(``),P=l(!1),F=l(``),{dialogRef:I,initialFocusRef:L,onCancel:ie,onKeydown:R}=re(()=>r.open,()=>a(`close`)),z=h(()=>!!r.executor),B=h(()=>r.mode===`executor`?z.value?`executorEditTitle`:`executorCreateTitle`:`ruleCreateTitle`),V=h(()=>r.projects.map(e=>({value:e.project_id,label:e.profile.name,meta:e.project_id})));h(()=>r.availableExecutors.map(e=>({value:e.executorId,label:e.displayName||e.label||e.executorId,meta:e.executorId}))),i(()=>[r.open,r.mode,r.executor,r.rule],([e])=>{if(!e)return;let t=r.executor,n=r.rule;o.value=t?.executorId??``,s.value=t?.displayName??t?.label??``,u.value=t?.executorKind??`external`,f.value=t?.capabilities?.join(`
|
|
4
|
+
`)??``,_.value=t?.globalPriority??n?.priority??100,b.value=t?.healthRequired===!0,w.value=n?.scope??`space`,k.value=n?.personalProjectId??``,A.value=n?.taskId??``,j.value=n?.workKind??``,M.value=n?.requiredCapabilities?.join(`
|
|
5
|
+
`)??``,N.value=n?.executorIds?.join(`
|
|
6
|
+
`)??``,te.value=``,F.value=``},{immediate:!0});function H(e){return[...new Set(e.split(`
|
|
7
|
+
`).map(e=>e.trim()).filter(Boolean))]}function ae(e){return`${e}-${typeof crypto<`u`&&`randomUUID`in crypto?crypto.randomUUID():`${Date.now()}-${Math.random().toString(16).slice(2)}`}`}async function U(){if(P.value)return;let e=H(f.value),t=te.value.trim();if(r.mode===`executor`){if(!o.value.trim()||!s.value.trim()||_.value<1){F.value=d(`projectAgents.routing.editor.executorRequired`);return}}else if(!j.value.trim()||!H(N.value).length||!t){F.value=d(`projectAgents.routing.editor.ruleRequired`);return}P.value=!0,F.value=``;try{if(r.mode===`executor`){let t=await ee(`/api/executors`,{personalSpaceId:r.personalSpaceId,executorId:o.value.trim(),displayName:s.value.trim(),executorKind:u.value.trim()||`external`,capabilities:e,advertisedModels:r.executor?.advertisedModels??r.executor?.availableModels??[],globalPriority:_.value,healthRequired:b.value,expectedRevision:r.executor?.revision,idempotencyKey:ae(`executor-directory`)});a(`saved`,t)}else{let e=await ee(`/api/executor-routing-rules`,{personalSpaceId:w.value===`global`?void 0:r.personalSpaceId,scope:w.value,personalProjectId:(w.value===`project`||w.value===`task`)&&k.value||void 0,taskId:w.value===`task`&&A.value||void 0,workKind:j.value.trim(),requiredCapabilities:H(M.value),executorIds:H(N.value),priority:_.value,reason:t,idempotencyKey:ae(`executor-rule`)});a(`saved`,e)}a(`close`)}catch(e){F.value=e instanceof Error?e.message:d(`projectAgents.routing.editor.saveFailed`)}finally{P.value=!1}}return(n,r)=>e.open?(g(),O(`dialog`,{key:0,ref_key:`dialogRef`,ref:I,class:`project-agent-dialog vue-dialog`,"aria-modal":`true`,"aria-labelledby":`executor-routing-dialog-title`,onCancel:r[16]||=(...e)=>p(ie)&&p(ie)(...e),onKeydown:r[17]||=(...e)=>p(R)&&p(R)(...e)},[m(`form`,{class:`project-agent-dialog-shell`,onSubmit:x(U,[`prevent`])},[m(`header`,_e,[m(`h3`,ve,S(p(d)(`projectAgents.routing.editor.${B.value}`)),1),m(`button`,{ref_key:`initialFocusRef`,ref:L,"data-dialog-initial-focus":``,class:`quiet-button`,type:`button`,disabled:P.value,onClick:r[0]||=e=>a(`close`)},S(p(d)(`common.actions.close`)),9,ye)]),m(`div`,be,[e.mode===`executor`?(g(),O(y,{key:0},[m(`label`,null,[m(`span`,null,S(p(d)(`projectAgents.routing.editor.executorId`)),1),t(m(`input`,{"onUpdate:modelValue":r[1]||=e=>o.value=e,maxlength:`128`,disabled:z.value||P.value,required:``},null,8,G),[[T,o.value]])]),m(`label`,null,[m(`span`,null,S(p(d)(`projectAgents.routing.editor.displayName`)),1),t(m(`input`,{"onUpdate:modelValue":r[2]||=e=>s.value=e,maxlength:`160`,disabled:P.value,required:``},null,8,xe),[[T,s.value]])]),m(`label`,null,[m(`span`,null,S(p(d)(`projectAgents.routing.editor.executorKind`)),1),t(m(`input`,{"onUpdate:modelValue":r[3]||=e=>u.value=e,maxlength:`128`,disabled:P.value},null,8,Se),[[T,u.value]])]),m(`label`,null,[m(`span`,null,S(p(d)(`projectAgents.routing.editor.priority`)),1),t(m(`input`,{"onUpdate:modelValue":r[4]||=e=>_.value=e,type:`number`,min:`1`,max:`1000000`,disabled:P.value,required:``},null,8,Ce),[[T,_.value,void 0,{number:!0}]])]),m(`label`,we,[m(`span`,null,S(p(d)(`projectAgents.routing.editor.capabilities`)),1),t(m(`textarea`,{"onUpdate:modelValue":r[5]||=e=>f.value=e,rows:`3`,disabled:P.value},null,8,Te),[[T,f.value]])]),m(`label`,Ee,[t(m(`input`,{"onUpdate:modelValue":r[6]||=e=>b.value=e,type:`checkbox`,disabled:P.value},null,8,De),[[C,b.value]]),r[18]||=D(),m(`span`,null,S(p(d)(`projectAgents.routing.editor.healthRequired`)),1)]),m(`p`,Oe,S(p(d)(`projectAgents.routing.editor.evidenceNote`)),1)],64)):(g(),O(y,{key:1},[m(`label`,null,[m(`span`,null,S(p(d)(`projectAgents.routing.editor.scope`)),1),t(m(`select`,{"onUpdate:modelValue":r[7]||=e=>w.value=e,disabled:P.value},[...r[19]||=[m(`option`,{value:`space`},`space`,-1),m(`option`,{value:`project`},`project`,-1),m(`option`,{value:`task`},`task`,-1)]],8,ke),[[v,w.value]])]),m(`label`,null,[m(`span`,null,S(p(d)(`projectAgents.routing.editor.priority`)),1),t(m(`input`,{"onUpdate:modelValue":r[8]||=e=>_.value=e,type:`number`,min:`1`,max:`1000000`,disabled:P.value,required:``},null,8,K),[[T,_.value,void 0,{number:!0}]])]),w.value===`project`||w.value===`task`?(g(),O(`label`,Ae,[m(`span`,null,S(p(d)(`projectAgents.fields.project`)),1),c(ne,{modelValue:k.value,"onUpdate:modelValue":r[9]||=e=>k.value=e,"control-id":`executor-rule-project`,options:V.value,label:p(d)(`projectAgents.fields.project`),disabled:P.value},null,8,[`modelValue`,`options`,`label`,`disabled`])])):E(``,!0),w.value===`task`?(g(),O(`label`,je,[m(`span`,null,S(p(d)(`projectAgents.routing.editor.taskId`)),1),t(m(`input`,{"onUpdate:modelValue":r[10]||=e=>A.value=e,maxlength:`128`,disabled:P.value},null,8,Me),[[T,A.value]])])):E(``,!0),m(`label`,null,[m(`span`,null,S(p(d)(`projectAgents.routing.editor.workKind`)),1),t(m(`input`,{"onUpdate:modelValue":r[11]||=e=>j.value=e,maxlength:`128`,disabled:P.value,required:``},null,8,q),[[T,j.value]])]),m(`label`,Ne,[m(`span`,null,S(p(d)(`projectAgents.routing.editor.executorIds`)),1),t(m(`textarea`,{"onUpdate:modelValue":r[12]||=e=>N.value=e,rows:`3`,placeholder:p(d)(`projectAgents.routing.editor.executorIdsPlaceholder`),disabled:P.value,required:``},null,8,Pe),[[T,N.value]])]),m(`label`,Fe,[m(`span`,null,S(p(d)(`projectAgents.routing.editor.requiredCapabilities`)),1),t(m(`textarea`,{"onUpdate:modelValue":r[13]||=e=>M.value=e,rows:`3`,disabled:P.value},null,8,Ie),[[T,M.value]])]),m(`label`,Le,[m(`span`,null,S(p(d)(`projectAgents.fields.reason`)),1),t(m(`textarea`,{"onUpdate:modelValue":r[14]||=e=>te.value=e,rows:`3`,disabled:P.value,required:``},null,8,Re),[[T,te.value]])]),m(`p`,ze,S(p(d)(`projectAgents.routing.editor.ruleNote`)),1)],64))]),F.value?(g(),O(`p`,Be,S(F.value),1)):E(``,!0),m(`footer`,Ve,[m(`button`,{class:`quiet-button`,type:`button`,disabled:P.value,onClick:r[15]||=e=>a(`close`)},S(p(d)(`common.actions.cancel`)),9,He),m(`button`,{class:`project-agent-primary-action`,type:`submit`,disabled:P.value},S(p(d)(`projectAgents.routing.editor.save`)),9,Ue)])],32)],544)):E(``,!0)}}),[[`__scopeId`,`data-v-6b96c90d`]]),Ge=[`aria-label`,`aria-busy`],Ke={key:0,class:`project-agent-policy-state`,role:`status`},qe={key:1,class:`project-agent-policy-options`},Je=[`checked`,`disabled`],Ye=[`checked`,`disabled`],Xe={class:`project-agent-policy-feedback`,"aria-live":`polite`},J={key:0,role:`alert`},Ze=[`disabled`],Qe={key:1,role:`status`},$e={key:2,role:`status`},et=P(n({__name:`ProjectAgentAutomationPolicyPanel`,props:{personalSpaceId:{},personalProjectId:{},projectName:{}},setup(e){let t=e,n=l(y()),r=l(!1),a=l(!1),o=l(``),s=l(``),c=l(!1),u=0,f=h(()=>r.value||a.value);i(()=>[t.personalSpaceId,t.personalProjectId],()=>void _(),{immediate:!0});async function _(){let e=++u;if(n.value=y(),c.value=!1,s.value=``,!(!t.personalSpaceId||!t.personalProjectId)){r.value=!0,o.value=``;try{let r=await N(`/api/project-agent-coordination-policy?${new URLSearchParams({personalSpaceId:t.personalSpaceId,personalProjectId:t.personalProjectId})}`);e===u&&(n.value=b(r))}catch(t){e===u&&(o.value=t instanceof Error?t.message:d(`projectAgents.coordination.loadFailed`))}finally{e===u&&(r.value=!1)}}}async function v(e,r){if(f.value)return;let i={...n.value},o=r.currentTarget.checked;n.value={...n.value,[e]:o},a.value=!0,c.value=!1,s.value=``;try{let e=await j(`/api/project-agent-coordination-policy`,{personalSpaceId:t.personalSpaceId,personalProjectId:t.personalProjectId,askBeforeRecruitment:n.value.askBeforeRecruitment,autoReusePreviousAgent:n.value.autoReusePreviousAgent});n.value=b(e),c.value=!0}catch(e){n.value=i,s.value=e instanceof Error?e.message:d(`projectAgents.coordination.saveFailed`)}finally{a.value=!1}}function y(){return{personalSpaceId:t.personalSpaceId,personalProjectId:t.personalProjectId,askBeforeRecruitment:!0,autoReusePreviousAgent:!0,updatedAt:null}}function b(e){let n=e&&typeof e==`object`?e:{};return{personalSpaceId:C(n.personalSpaceId??n.personal_space_id)||t.personalSpaceId,personalProjectId:C(n.personalProjectId??n.personal_project_id)||t.personalProjectId,askBeforeRecruitment:x(n.askBeforeRecruitment??n.ask_before_recruitment,!0),autoReusePreviousAgent:x(n.autoReusePreviousAgent??n.auto_reuse_previous_agent,!0),updatedAt:C(n.updatedAt??n.updated_at)}}function x(e,t){return typeof e==`boolean`?e:t}function C(e){return typeof e==`string`&&e?e:null}return(t,i)=>(g(),O(`section`,{class:`project-agent-automation-policy`,"aria-label":p(d)(`projectAgents.coordination.aria`,{project:e.projectName}),"aria-busy":f.value},[m(`header`,null,[m(`h3`,null,S(p(d)(`projectAgents.coordination.title`)),1),m(`span`,null,S(e.projectName),1)]),r.value?(g(),O(`p`,Ke,S(p(d)(`projectAgents.coordination.loading`)),1)):(g(),O(`div`,qe,[m(`label`,null,[m(`span`,null,[m(`strong`,null,S(p(d)(`projectAgents.coordination.autoReuse`)),1),m(`small`,null,S(p(d)(`projectAgents.coordination.autoReuseMeta`)),1)]),m(`input`,{checked:n.value.autoReusePreviousAgent,disabled:f.value,type:`checkbox`,role:`switch`,onChange:i[0]||=e=>v(`autoReusePreviousAgent`,e)},null,40,Je)]),m(`label`,null,[m(`span`,null,[m(`strong`,null,S(p(d)(`projectAgents.coordination.askBeforeRecruitment`)),1),m(`small`,null,S(p(d)(`projectAgents.coordination.askBeforeRecruitmentMeta`)),1)]),m(`input`,{checked:n.value.askBeforeRecruitment,disabled:f.value,type:`checkbox`,role:`switch`,onChange:i[1]||=e=>v(`askBeforeRecruitment`,e)},null,40,Ye)])])),m(`div`,Xe,[o.value||s.value?(g(),O(`p`,J,[D(S(o.value||s.value)+` `,1),o.value?(g(),O(`button`,{key:0,type:`button`,disabled:f.value,onClick:_},S(p(d)(`projectAgents.retry`)),9,Ze)):E(``,!0)])):a.value?(g(),O(`p`,Qe,S(p(d)(`projectAgents.coordination.saving`)),1)):c.value?(g(),O(`p`,$e,S(p(d)(`projectAgents.coordination.saved`)),1)):E(``,!0)])],8,Ge))}}),[[`__scopeId`,`data-v-4160a96e`]]),tt={key:0,class:`project-agent-source-state`,role:`status`},nt={key:1,class:`project-agent-source-state`,role:`status`},rt={key:2,class:`project-agent-source-state is-error`,role:`alert`},it=P(n({__name:`ProjectAgentDetailState`,props:{status:{},error:{}},emits:[`retry`],setup(e){return(t,n)=>e.status===`idle`?(g(),O(`div`,tt,S(p(d)(`projectAgents.detail.notLoaded`)),1)):e.status===`loading`?(g(),O(`div`,nt,S(p(d)(`projectAgents.detail.loadingSection`)),1)):e.status===`error`?(g(),O(`div`,rt,[m(`span`,null,S(e.error||p(d)(`projectAgents.detail.sectionUnavailable`)),1),m(`button`,{class:`quiet-button`,type:`button`,onClick:n[0]||=e=>t.$emit(`retry`)},S(p(d)(`projectAgents.retry`)),1)])):s(t.$slots,`default`,{},void 0,!0,3)}}),[[`__scopeId`,`data-v-f174e20d`]]);function Y(e){return e&&typeof e==`object`?e:{}}function X(e,t,n){return e[t]??e[n]}function Z(e,t,n){let r=X(e,t,n);return typeof r==`string`?r:null}function Q(e){return Array.isArray(e)?e:[]}function at(e){let t=Y(e);return Array.isArray(e)?e:Q(t.agents??t.items)}function ot(e){if(!e||typeof e!=`object`)return null;let t=Y(e);return{mode:Z(t,`mode`,`mode`)??null,reasoningEffort:Z(t,`reasoningEffort`,`reasoning_effort`)??null,capabilityHints:Q(X(t,`capabilityHints`,`capability_hints`)).filter(e=>typeof e==`string`)}}function st(e){if(!e||typeof e!=`object`)return null;let t=Y(e);return{enabled:typeof t.enabled==`boolean`?t.enabled:null,independentVerification:typeof X(t,`independentVerification`,`independent_verification`)==`boolean`?X(t,`independentVerification`,`independent_verification`):null,conflictFreeScopes:typeof X(t,`conflictFreeScopes`,`conflict_free_scopes`)==`boolean`?X(t,`conflictFreeScopes`,`conflict_free_scopes`):null,reason:Z(t,`reason`,`reason`),workstreamBoundaries:Q(X(t,`workstreamBoundaries`,`workstream_boundaries`)).filter(e=>typeof e==`string`)}}function ct(e){if(!e||typeof e!=`object`)return null;let t=Y(e),n=Q(X(t,`allowList`,`allow_list`)).map(e=>{if(typeof e==`string`)return{executorId:e};let t=Y(e);return{executorId:Z(t,`executorId`,`executor_id`)??``,label:Z(t,`label`,`label`),provider:Z(t,`provider`,`provider`),model:Z(t,`model`,`model`),client:Z(t,`client`,`client`)}}).filter(({executorId:e})=>e),r=Q(X(t,`lockedExecutorIds`,`locked_executor_ids`)).filter(e=>typeof e==`string`),i=Q(X(t,`preferredExecutorIds`,`preferred_executor_ids`)).filter(e=>typeof e==`string`);return{mode:Z(t,`mode`,`mode`)??`flexible`,allowList:n,lockedExecutorIds:r,preferredExecutorIds:i}}function lt(e){if(!e||typeof e!=`object`)return null;let t=Y(e),n={executor:Z(t,`executor`,`executor`),provider:Z(t,`provider`,`provider`)??Z(t,`actualModelProvider`,`actual_model_provider`),model:Z(t,`model`,`model`)??Z(t,`actualModel`,`actual_model`),client:Z(t,`client`,`client`)??Z(t,`sourceApplication`,`source_application`),rule:Z(t,`rule`,`rule`),fallback:Z(t,`fallback`,`fallback`),reportedAt:Z(t,`reportedAt`,`reported_at`)};return[n.executor,n.provider,n.model,n.rule,n.fallback].some(Boolean)?n:null}function ut(e,t){let n=Y(e),r=Z(n,`personalProjectId`,`personal_project_id`),i=Z(n,`assignmentId`,`assignment_id`);return!r||!i?null:{assignmentId:i,personalSpaceId:Z(n,`personalSpaceId`,`personal_space_id`)??t.personalSpaceId,personalProjectId:r,agentId:Z(n,`agentId`,`agent_id`)??t.agentId,responsibility:Z(n,`responsibility`,`responsibility`)??t.profile.responsibility,scope:Z(n,`scope`,`scope`),workKinds:Q(X(n,`workKinds`,`work_kinds`)).filter(e=>typeof e==`string`),capabilities:Q(n.capabilities).filter(e=>typeof e==`string`),modelStrategyOverride:ot(X(n,`modelStrategyOverride`,`model_strategy_override`)),executorPolicyOverride:ct(X(n,`executorPolicyOverride`,`executor_policy_override`)),reason:Z(n,`reason`,`reason`),status:Z(n,`status`,`status`)??`active`,revision:typeof n.revision==`number`?n.revision:void 0,sourceApplication:Z(n,`sourceApplication`,`source_application`),sourceSessionId:Z(n,`sourceSessionId`,`source_session_id`),assignedAt:Z(n,`assignedAt`,`assigned_at`)??t.createdAt,updatedAt:Z(n,`updatedAt`,`updated_at`)??t.updatedAt,endedAt:Z(n,`endedAt`,`ended_at`),endReason:Z(n,`endReason`,`end_reason`),replacedByAssignmentId:Z(n,`replacedByAssignmentId`,`replaced_by_assignment_id`)}}function dt(e){let t=Y(e);return{agentId:Z(t,`agentId`,`agent_id`)??``,assignmentId:Z(t,`assignmentId`,`assignment_id`),role:Z(t,`role`,`role`)??`collaborator`,status:Z(t,`status`,`status`),assignmentSummary:Z(t,`assignmentSummary`,`assignment_summary`),joinedAt:Z(t,`joinedAt`,`joined_at`),updatedAt:Z(t,`updatedAt`,`updated_at`),endedAt:Z(t,`endedAt`,`ended_at`)}}function ft(e){if(Array.isArray(e))return e.map(e=>{let t=Y(e);return{agentId:Z(t,`agentId`,`agent_id`),agentName:Z(t,`agentName`,`agent_name`),occupationEmoji:Z(t,`occupationEmoji`,`occupation_emoji`),workerId:Z(t,`workerId`,`worker_id`),workerLabel:Z(t,`workerLabel`,`worker_label`),workerOccupationEmoji:Z(t,`workerOccupationEmoji`,`worker_occupation_emoji`),participantRole:Z(t,`participantRole`,`participant_role`),executor:Z(t,`executor`,`executor`),executorId:Z(t,`executorId`,`executor_id`),sourceApplication:Z(t,`sourceApplication`,`source_application`),actualModelProvider:Z(t,`actualModelProvider`,`actual_model_provider`),actualModel:Z(t,`actualModel`,`actual_model`),workSummary:Z(t,`workSummary`,`work_summary`),status:Z(t,`status`,`status`)}})}function pt(e){let t=Y(e),n=Z(t,`eventId`,`event_id`),r=Z(t,`taskId`,`task_id`);if(!n||!r)return null;let i=lt(X(t,`actualExecution`,`actual_execution`))??lt({executor:Z(t,`actualExecutor`,`actual_executor`),provider:Z(t,`actualModelProvider`,`actual_model_provider`),model:Z(t,`actualModel`,`actual_model`),client:Z(t,`sourceApplication`,`source_application`),rule:Z(t,`routingRuleId`,`routing_rule_id`)??Z(t,`matchedExecutorRuleId`,`matched_executor_rule_id`),fallback:Z(t,`fallbackReason`,`fallback_reason`)??Z(t,`executorFallbackReason`,`executor_fallback_reason`),reportedAt:Z(t,`createdAt`,`created_at`)});return{eventId:n,taskId:r,agentId:Z(t,`agentId`,`agent_id`),status:Z(t,`status`,`status`),actorKind:Z(t,`actorKind`,`actor_kind`)??void 0,summary:Z(t,`summary`,`summary`)??``,sourceApplication:Z(t,`sourceApplication`,`source_application`),sourceSessionId:Z(t,`sourceSessionId`,`source_session_id`),actualExecution:i,actualModelProvider:Z(t,`actualModelProvider`,`actual_model_provider`),actualModel:Z(t,`actualModel`,`actual_model`),workerId:Z(t,`workerId`,`worker_id`),workerLabel:Z(t,`workerLabel`,`worker_label`),workerOccupationEmoji:Z(t,`workerOccupationEmoji`,`worker_occupation_emoji`),workerStatus:Z(t,`workerStatus`,`worker_status`),createdAt:Z(t,`createdAt`,`created_at`)??``}}function mt(e){if(!e||typeof e!=`object`)return null;let t=Y(e);return{decisionId:Z(t,`decisionId`,`decision_id`)??void 0,taskId:Z(t,`taskId`,`task_id`)??void 0,coordinatorAgentId:Z(t,`coordinatorAgentId`,`coordinator_agent_id`),complexity:(()=>{let e=X(t,`complexity`,`complexity`);return typeof e==`string`||typeof e==`number`?e:null})(),complexityBasis:Q(X(t,`complexityBasis`,`complexity_basis`)).filter(e=>typeof e==`string`),outcome:Z(t,`outcome`,`outcome`)??Z(t,`routingOutcome`,`routing_outcome`),reason:Z(t,`reason`,`reason`)??Z(t,`routingReason`,`routing_reason`),matchBasis:Q(X(t,`matchBasis`,`match_basis`)).filter(e=>typeof e==`string`),candidateAgentIds:Q(X(t,`candidateAgentIds`,`candidate_agent_ids`)).filter(e=>typeof e==`string`),optimizationPriority:Q(X(t,`optimizationPriority`,`optimization_priority`)).filter(e=>typeof e==`string`),parallelPlan:st(X(t,`parallelPlan`,`parallel_plan`)),selectedModelStrategy:ot(X(t,`selectedModelStrategy`,`selected_model_strategy`)),modelStrategySource:Z(t,`modelStrategySource`,`model_strategy_source`)??void 0,ruleId:Z(t,`ruleId`,`rule_id`)??Z(t,`matchedExecutorRuleId`,`matched_executor_rule_id`)??Z(t,`executorRuleId`,`executor_rule_id`),fallback:Z(t,`fallback`,`fallback`)??Z(t,`fallbackReason`,`fallback_reason`)??Z(t,`executorFallbackReason`,`executor_fallback_reason`)}}function ht(e){return e!=null&&(typeof e!=`string`||e.length>0)&&(!Array.isArray(e)||e.length>0)}function gt(e){return[`staffingIntent`,`staffing_intent`,`routingOutcome`,`routing_outcome`,`routingReason`,`routing_reason`,`routingExplanation`,`routing_explanation`,`coordinatorAgentId`,`coordinator_agent_id`,`complexity`,`complexityBasis`,`complexity_basis`,`matchBasis`,`match_basis`,`candidateAgentIds`,`candidate_agent_ids`].some(t=>ht(e[t]))?mt({outcome:X(e,`routingOutcome`,`routing_outcome`),reason:X(e,`routingReason`,`routing_reason`),matchBasis:X(e,`matchBasis`,`match_basis`),coordinatorAgentId:X(e,`coordinatorAgentId`,`coordinator_agent_id`),complexity:X(e,`complexity`,`complexity`),complexityBasis:X(e,`complexityBasis`,`complexity_basis`),candidateAgentIds:X(e,`candidateAgentIds`,`candidate_agent_ids`)}):null}function _t(e){let t=Y(e),n=Z(t,`taskId`,`task_id`);if(!n)return null;let r=lt(X(t,`actualExecution`,`actual_execution`))??lt({executor:Z(t,`actualExecutor`,`actual_executor`),provider:Z(t,`actualModelProvider`,`actual_model_provider`),model:Z(t,`actualModel`,`actual_model`),client:Z(t,`sourceApplication`,`source_application`),rule:Z(t,`routingRuleId`,`routing_rule_id`)??Z(t,`matchedExecutorRuleId`,`matched_executor_rule_id`),fallback:Z(t,`fallbackReason`,`fallback_reason`)??Z(t,`executorFallbackReason`,`executor_fallback_reason`)}),i=mt(X(t,`routingDecision`,`routing_decision`))??gt(t);return{taskId:n,personalSpaceId:Z(t,`personalSpaceId`,`personal_space_id`)??void 0,personalProjectId:Z(t,`personalProjectId`,`personal_project_id`),title:Z(t,`title`,`title`)??n,objective:Z(t,`objective`,`objective`),workKind:Z(t,`workKind`,`work_kind`),status:Z(t,`status`,`status`),runId:Z(t,`runId`,`run_id`),executionId:Z(t,`executionId`,`execution_id`),ownerAgentId:Z(t,`ownerAgentId`,`owner_agent_id`),leadAgentId:Z(t,`leadAgentId`,`lead_agent_id`),coordinatorAgentId:Z(t,`coordinatorAgentId`,`coordinator_agent_id`),hrAgentId:Z(t,`hrAgentId`,`hr_agent_id`),recruitmentId:Z(t,`recruitmentId`,`recruitment_id`),participants:Q(t.participants).map(dt),sourceApplication:Z(t,`sourceApplication`,`source_application`),sourceSessionId:Z(t,`sourceSessionId`,`source_session_id`),resultSummary:Z(t,`resultSummary`,`result_summary`),failureReason:Z(t,`failureReason`,`failure_reason`),createdAt:Z(t,`createdAt`,`created_at`),updatedAt:Z(t,`updatedAt`,`updated_at`),completedAt:Z(t,`completedAt`,`completed_at`),effectiveModelStrategy:ot(X(t,`effectiveModelStrategy`,`effective_model_strategy`)),effectiveExecutorPolicy:ct(X(t,`effectiveExecutorPolicy`,`effective_executor_policy`)??X(t,`executorPolicy`,`executor_policy`)),staffingIntent:Z(t,`staffingIntent`,`staffing_intent`),routingOutcome:Z(t,`routingOutcome`,`routing_outcome`),routingReason:Z(t,`routingReason`,`routing_reason`),routingExplanation:Z(t,`routingExplanation`,`routing_explanation`),matchBasis:Q(X(t,`matchBasis`,`match_basis`)).filter(e=>typeof e==`string`),complexity:(()=>{let e=X(t,`complexity`,`complexity`);return typeof e==`string`||typeof e==`number`?e:null})(),complexityBasis:Q(X(t,`complexityBasis`,`complexity_basis`)).filter(e=>typeof e==`string`),modelStrategySource:Z(t,`modelStrategySource`,`model_strategy_source`)??void 0,actualExecution:r,executionSummary:ft(X(t,`executionSummary`,`execution_summary`)),routingDecision:i,events:Q(t.events).map(pt).filter(Boolean)}}function vt(e){return e.executionSummary===void 0?(e.events??[]).filter(e=>!!(e.workerId||e.workerLabel||e.workerOccupationEmoji||e.workerStatus)):[]}function yt(e){return!!(e&&(e.enabled||e.independentVerification||e.conflictFreeScopes||e.reason||e.workstreamBoundaries?.length))}function bt(e){return e.actualExecution??{provider:e.actualModelProvider??null,model:e.actualModel??null,client:e.sourceApplication??null,reportedAt:e.createdAt}}var xt={class:`project-agent-dialog-header`},St={id:`project-agent-dialog-title`},Ct=[`disabled`],wt={class:`project-agent-dialog-fields`},$=[`disabled`],Tt={value:`active`},Et={value:`inactive`},Dt={value:`archived`},Ot=[`disabled`],kt={value:`durable`},At={value:`hr`},jt={key:0,value:`temporary`,disabled:``},Mt={key:1,value:`coordinator`,disabled:``},Nt=[`disabled`,`placeholder`],Pt=[`disabled`,`placeholder`],Ft=[`disabled`,`placeholder`],It={key:0,class:`project-agent-id-note`},Lt={class:`project-agent-wide-field`},Rt=[`disabled`,`placeholder`],zt={class:`project-agent-wide-field`},Bt=[`disabled`,`placeholder`],Vt={class:`project-agent-wide-field`},Ht=[`disabled`,`placeholder`],Ut={class:`project-agent-wide-field project-agent-strategy-fields`},Wt=[`disabled`],Gt={value:`flexible`},Kt={value:`locked`},qt=[`disabled`],Jt={class:`project-agent-wide-field`},Yt=[`disabled`,`placeholder`],Xt={key:0,class:`project-agent-dialog-error`,role:`alert`},Zt={class:`project-agent-dialog-actions`},Qt=[`disabled`],$t=[`disabled`],en=P(n({__name:`ProjectAgentDialog`,props:{open:{type:Boolean},agent:{},projects:{},defaultProjectId:{},personalSpaceId:{}},emits:[`close`,`saved`],setup(e,{emit:n}){let r=e,a=n,o=l(``),s=l(``),u=l(``),f=l(``),_=l(``),y=l(``),b=l(``),C=l(`active`),w=l(`durable`),D=l(`adaptive`),k=l(`flexible`),j=l(``),M=l(!1),N=l(``),{dialogRef:te,initialFocusRef:P,onCancel:F,onKeydown:I}=re(()=>r.open,()=>a(`close`)),L=h(()=>!!r.agent),ie=h(()=>r.projects.map(e=>({value:e.project_id,label:e.profile.name,meta:e.project_id})));i(()=>[r.open,r.agent,r.defaultProjectId],([e,t,n])=>{if(!e)return;o.value=t?.personalProjectId??n??r.projects[0]?.project_id??``,s.value=t?.agentId??``,u.value=t?.profile.name??``,f.value=t?.profile.occupationEmoji??``,_.value=t?.profile.responsibility??``,y.value=(t?.profile.capabilities??[]).join(`
|
|
8
|
+
`),b.value=(t?.profile.initialPreferences??[]).join(`
|
|
9
|
+
`),C.value=t?.profile.status??`active`,w.value=t?.profile.agentType??`durable`,D.value=t?.profile.defaultModelStrategy?.mode??`adaptive`,k.value=t?.profile.executorPolicy?.mode??`flexible`;let i=t?.profile.executorPolicy,a=i?.mode===`locked`?i.lockedExecutorIds:i?.preferredExecutorIds;j.value=(a?.length?a:i?.allowList?.map(({executorId:e})=>e)??[]).join(`
|
|
10
|
+
`),N.value=``},{immediate:!0});function R(e){let t=e.split(`
|
|
11
|
+
`).map(e=>e.trim()).filter(Boolean),n=t.map(e=>e.toLocaleLowerCase());return new Set(n).size===n.length?t:null}async function z(){if(M.value)return;let e=o.value.trim(),t=s.value.trim(),n=u.value.trim(),i=f.value.trim(),c=_.value.trim();if(!t||!n||!c){N.value=d(`projectAgents.dialog.required`);return}let l=r.projects.find(({project_id:t})=>t===e);if(e&&!l){N.value=d(`projectAgents.dialog.projectUnavailable`);return}if(i&&!B(i)){N.value=d(`projectAgents.dialog.occupationEmojiInvalid`);return}let p=l?.personal_space_id??r.personalSpaceId??r.agent?.personalSpaceId;if(!p){N.value=d(`projectAgents.dialog.spaceUnavailable`);return}let m=R(y.value),h=R(b.value);if(!m||!h){N.value=d(`projectAgents.dialog.duplicate`);return}let g=R(j.value);if(!g||k.value===`locked`&&!g.length){N.value=d(`projectAgents.dialog.duplicate`);return}M.value=!0,N.value=``;try{let r={name:n,responsibility:c,capabilities:m,initialPreferences:h,status:C.value};i&&(r.occupationEmoji=i),w.value!==`durable`&&(r.agentType=w.value),D.value!==`adaptive`&&(r.defaultModelStrategy={mode:D.value}),(k.value!==`flexible`||g.length)&&(r.executorPolicy={mode:k.value,lockedExecutorIds:k.value===`locked`?g:[],preferredExecutorIds:k.value===`flexible`?g:[]});let o=await ee(`/api/project-agents`,{personalSpaceId:p,personalProjectId:null,agentId:t,profile:r}),s=o;if(e){let n=await A(`/api/project-agent-assignments`,{personalSpaceId:p,personalProjectId:e,agentId:t,idempotencyKey:`directory:${t}:${Date.now()}`,responsibility:c,capabilities:m,reason:d(`projectAgents.dialog.initialAssignmentReason`)});s={...o,personalProjectId:e,assignments:[n]}}a(`saved`,s),a(`close`)}catch(e){N.value=e instanceof Error?e.message:d(`projectAgents.dialog.saveFailed`)}finally{M.value=!1}}function B(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(n,r)=>e.open?(g(),O(`dialog`,{key:0,ref_key:`dialogRef`,ref:te,class:`project-agent-dialog vue-dialog`,"aria-modal":`true`,"aria-labelledby":`project-agent-dialog-title`,onCancel:r[14]||=(...e)=>p(F)&&p(F)(...e),onKeydown:r[15]||=(...e)=>p(I)&&p(I)(...e)},[m(`form`,{class:`project-agent-dialog-shell`,onSubmit:x(z,[`prevent`])},[m(`header`,xt,[m(`h3`,St,S(L.value?p(d)(`projectAgents.dialog.editTitle`):p(d)(`projectAgents.dialog.createTitle`)),1),m(`button`,{ref_key:`initialFocusRef`,ref:P,"data-dialog-initial-focus":``,class:`quiet-button`,type:`button`,disabled:M.value,onClick:r[0]||=e=>a(`close`)},S(p(d)(`common.actions.close`)),9,Ct)]),m(`div`,wt,[m(`label`,null,[m(`span`,null,S(p(d)(`projectAgents.fields.project`)),1),c(ne,{modelValue:o.value,"onUpdate:modelValue":r[1]||=e=>o.value=e,"control-id":`project-agent-project`,options:ie.value,label:p(d)(`projectAgents.fields.project`),placeholder:p(d)(`projectAgents.dialog.projectPlaceholder`),disabled:L.value||M.value},null,8,[`modelValue`,`options`,`label`,`placeholder`,`disabled`])]),m(`label`,null,[m(`span`,null,S(p(d)(`projectAgents.fields.status`)),1),t(m(`select`,{"onUpdate:modelValue":r[2]||=e=>C.value=e,name:`project-agent-status`,disabled:M.value},[m(`option`,Tt,S(p(d)(`projectAgents.status.active`)),1),m(`option`,Et,S(p(d)(`projectAgents.status.inactive`)),1),m(`option`,Dt,S(p(d)(`projectAgents.status.archived`)),1)],8,$),[[v,C.value]])]),m(`label`,null,[m(`span`,null,S(p(d)(`projectAgents.fields.agentType`)),1),t(m(`select`,{"onUpdate:modelValue":r[3]||=e=>w.value=e,name:`project-agent-type`,disabled:M.value},[m(`option`,kt,S(p(d)(`projectAgents.agentType.durable`)),1),m(`option`,At,S(p(d)(`projectAgents.agentType.hr`)),1),L.value&&w.value===`temporary`?(g(),O(`option`,jt,S(p(d)(`projectAgents.agentType.temporary`)),1)):E(``,!0),L.value&&w.value===`coordinator`?(g(),O(`option`,Mt,S(p(d)(`projectAgents.agentType.coordinator`)),1)):E(``,!0)],8,Ot),[[v,w.value]])]),m(`label`,null,[m(`span`,null,S(p(d)(`projectAgents.fields.agentId`)),1),t(m(`input`,{"onUpdate:modelValue":r[4]||=e=>s.value=e,name:`project-agent-id`,maxlength:`128`,required:``,disabled:L.value||M.value,placeholder:p(d)(`projectAgents.dialog.agentIdPlaceholder`)},null,8,Nt),[[T,s.value]])]),m(`label`,null,[m(`span`,null,S(p(d)(`projectAgents.fields.name`)),1),t(m(`input`,{"onUpdate:modelValue":r[5]||=e=>u.value=e,name:`project-agent-name`,maxlength:`160`,required:``,disabled:M.value,placeholder:p(d)(`projectAgents.dialog.namePlaceholder`)},null,8,Pt),[[T,u.value]])]),m(`label`,null,[m(`span`,null,S(p(d)(`projectAgents.fields.occupationEmoji`)),1),t(m(`input`,{"onUpdate:modelValue":r[6]||=e=>f.value=e,name:`project-agent-occupation-emoji`,maxlength:`64`,autocomplete:`off`,disabled:M.value,placeholder:p(d)(`projectAgents.dialog.occupationEmojiPlaceholder`)},null,8,Ft),[[T,f.value]])]),L.value?(g(),O(`small`,It,S(p(d)(`projectAgents.dialog.idLocked`)),1)):E(``,!0),m(`label`,Lt,[m(`span`,null,S(p(d)(`projectAgents.fields.responsibility`)),1),t(m(`textarea`,{"onUpdate:modelValue":r[7]||=e=>_.value=e,name:`project-agent-responsibility`,maxlength:`4096`,rows:`4`,required:``,disabled:M.value,placeholder:p(d)(`projectAgents.dialog.responsibilityPlaceholder`)},null,8,Rt),[[T,_.value]])]),m(`label`,zt,[m(`span`,null,S(p(d)(`projectAgents.fields.capabilities`)),1),t(m(`textarea`,{"onUpdate:modelValue":r[8]||=e=>y.value=e,name:`project-agent-capabilities`,maxlength:`8192`,rows:`4`,disabled:M.value,placeholder:p(d)(`projectAgents.dialog.capabilitiesPlaceholder`)},null,8,Bt),[[T,y.value]])]),m(`label`,Vt,[m(`span`,null,S(p(d)(`projectAgents.fields.initialPreferences`)),1),t(m(`textarea`,{"onUpdate:modelValue":r[9]||=e=>b.value=e,name:`project-agent-preferences`,maxlength:`8192`,rows:`4`,disabled:M.value,placeholder:p(d)(`projectAgents.dialog.preferencesPlaceholder`)},null,8,Ht),[[T,b.value]])]),m(`fieldset`,Ut,[m(`legend`,null,S(p(d)(`projectAgents.fields.defaultModelStrategy`)),1),m(`label`,null,[m(`span`,null,S(p(d)(`projectAgents.fields.executorPolicy`)),1),t(m(`select`,{"onUpdate:modelValue":r[10]||=e=>k.value=e,name:`project-agent-selection-mode`,disabled:M.value},[m(`option`,Gt,S(p(d)(`projectAgents.strategy.flexible`)),1),m(`option`,Kt,S(p(d)(`projectAgents.strategy.locked`)),1)],8,Wt),[[v,k.value]])]),m(`label`,null,[m(`span`,null,S(p(d)(`projectAgents.fields.modelIntent`)),1),t(m(`select`,{"onUpdate:modelValue":r[11]||=e=>D.value=e,name:`project-agent-model-mode`,disabled:M.value},[...r[16]||=[m(`option`,{value:`adaptive`},`adaptive`,-1),m(`option`,{value:`fast`},`fast`,-1),m(`option`,{value:`balanced`},`balanced`,-1),m(`option`,{value:`deep`},`deep`,-1)]],8,qt),[[v,D.value]])]),m(`label`,Jt,[m(`span`,null,S(p(d)(`projectAgents.fields.allowList`)),1),t(m(`textarea`,{"onUpdate:modelValue":r[12]||=e=>j.value=e,name:`project-agent-allow-list`,rows:`3`,disabled:M.value,placeholder:p(d)(`projectAgents.dialog.allowListPlaceholder`)},null,8,Yt),[[T,j.value]])]),m(`small`,null,S(k.value===`locked`?p(d)(`projectAgents.strategy.lockedUnavailable`):p(d)(`projectAgents.strategy.providerNeutral`)),1)])]),N.value?(g(),O(`p`,Xt,S(N.value),1)):E(``,!0),m(`footer`,Zt,[m(`button`,{class:`quiet-button`,type:`button`,disabled:M.value,onClick:r[13]||=e=>a(`close`)},S(p(d)(`common.actions.cancel`)),9,Qt),m(`button`,{class:`project-agent-primary-action`,type:`submit`,disabled:M.value},S(L.value?p(d)(`projectAgents.dialog.saveEdit`):p(d)(`projectAgents.dialog.saveCreate`)),9,$t)])],32)],544)):E(``,!0)}}),[[`__scopeId`,`data-v-83825f22`]]),tn=[`aria-label`],nn={class:`project-agents-header`},rn={class:`project-agents-header-meta`},an=[`disabled`],on={class:`project-agents-summary`,"aria-live":`polite`},sn={class:`project-agents-toolbar`},cn={class:`project-agents-search`},ln={class:`sr-only`},un=[`placeholder`],dn=[`aria-label`],fn=[`aria-pressed`,`onClick`],pn={key:1,class:`project-agents-state`},mn={key:2,class:`project-agents-state is-error`,role:`alert`},hn={key:3,class:`project-agents-state`},gn=[`disabled`],_n={key:4,class:`project-agents-state`},vn={key:5,class:`project-agents-directory`},yn=[`aria-label`],bn=[`aria-current`,`onClick`],xn={class:`project-agent-row-heading`},Sn=[`aria-label`],Cn={class:`project-agent-kind`},wn={class:`project-agent-row-id`},Tn={class:`project-agent-row-projects`},En={key:0},Dn={class:`project-agent-row-responsibility`},On={class:`project-agent-row-work`},kn={class:`project-agent-row-capabilities`},An=[`aria-label`],jn={class:`project-agent-detail-heading`},Mn=[`aria-label`],Nn={key:0},Pn={key:0},Fn={class:`project-agent-detail-actions`},In=[`disabled`],Ln=[`disabled`],Rn={key:0,class:`project-agent-detail-notice`,role:`status`},zn={class:`project-agent-detail-meta`},Bn={key:0},Vn={class:`project-agent-detail-source`,"data-detail-section":`recruitment`},Hn={class:`project-agent-detail-section`,"aria-labelledby":`project-agent-recruitment-heading`},Un={class:`project-agent-section-heading`},Wn={id:`project-agent-recruitment-heading`},Gn={key:0,class:`project-agent-recruitment-list`},Kn={class:`project-agent-card-actions`},qn=[`disabled`,`onClick`],Jn=[`disabled`,`onClick`],Yn={class:`project-agent-compact-meta`},Xn={key:1,class:`project-agent-muted`},Zn={class:`project-agent-detail-section is-responsibility`},Qn={key:0,class:`project-agent-tags`},$n={class:`project-agent-detail-source`,"data-detail-section":`assignments`},er={class:`project-agent-detail-section`},tr={class:`project-agent-section-heading`},nr={class:`project-agent-section-tools`},rr={key:0,class:`project-agent-assignment-list`},ir={class:`project-agent-card-actions`},ar=[`onClick`],or=[`onClick`],sr={key:0},cr={key:1,class:`project-agent-inline-list`},lr={class:`project-agent-strategy-note`},ur={key:0},dr={key:2,class:`project-agent-tags`},fr={key:3},pr={key:1,class:`project-agent-muted`},mr={class:`project-agent-detail-source`,"data-detail-section":`executors`},hr={class:`project-agent-detail-section`},gr={class:`project-agent-section-heading`},_r={class:`project-agent-muted`},vr={key:0,class:`project-agent-tags`},yr={key:1,class:`project-agent-blocked`},br={key:2,class:`project-agent-muted`},xr={class:`project-agent-section-tools`},Sr={key:3,class:`project-agent-executor-list`},Cr=[`onClick`],wr=[`disabled`,`onClick`],Tr=[`disabled`,`onClick`],Er={class:`project-agent-detail-source`,"data-detail-section":`tasks`},Dr={class:`project-agent-detail-section`},Or={class:`project-agent-section-heading`},kr={key:0,class:`project-agent-task-list`},Ar={key:0},jr={key:1,class:`project-agent-inline-list`},Mr=[`aria-label`],Nr={class:`project-agent-section-heading`},Pr={key:0,class:`project-agent-execution-summary-list`},Fr=[`aria-label`],Ir={key:1},Lr={class:`project-agent-execution-summary-meta`},Rr={key:0},zr={key:0},Br={key:0},Vr={key:1},Hr={key:2},Ur={key:1,class:`project-agent-muted`},Wr=[`aria-label`],Gr={class:`project-agent-section-heading`},Kr={class:`project-agent-execution-summary-list`},qr=[`aria-label`],Jr={key:1},Yr={class:`project-agent-execution-summary-meta`},Xr={key:0},Zr={key:0},Qr={key:1},$r={key:2},ei={key:4},ti={key:5,class:`project-agent-routing-decision`},ni={class:`project-agent-section-heading`},ri={key:0},ii={key:1},ai={key:2},oi={key:0},si={key:3},ci={key:0},li={key:4},ui={class:`project-agent-execution-line`},di={key:0},fi={key:1},pi={key:2},mi={key:6},hi={key:7},gi={key:1,class:`project-agent-muted`},_i={class:`project-agent-detail-source`,"data-detail-section":`activity`},vi={class:`project-agent-detail-section`},yi={class:`project-agent-section-heading`},bi={key:0},xi={key:0,class:`project-agent-heatmap-wrap project-agent-heatmap-viewport`},Si=[`aria-label`],Ci=[`aria-label`,`aria-pressed`,`onClick`],wi={class:`sr-only`},Ti={key:0,class:`project-agent-day-detail`},Ei={key:0,class:`project-agent-muted`},Di={key:1},Oi={key:1,class:`project-agent-muted`},ki={class:`project-agent-detail-source`,"data-detail-section":`clients`},Ai={class:`project-agent-detail-section`},ji={class:`project-agent-section-heading`},Mi={key:0,class:`project-agent-client-list`},Ni={key:0},Pi={key:1},Fi={key:2},Ii={key:1,class:`project-agent-muted`},Li={class:`project-agent-detail-source`,"data-detail-section":`routing`},Ri={class:`project-agent-detail-section`},zi={class:`project-agent-section-heading`},Bi={class:`project-agent-section-tools`},Vi={key:0,class:`project-agent-rule-list`},Hi=[`disabled`,`onClick`],Ui={key:1,class:`project-agent-muted`},Wi={class:`project-agent-note`},Gi={class:`project-agent-detail-source`,"data-detail-section":`learning`},Ki={class:`project-agent-detail-section`},qi={class:`project-agent-section-heading`},Ji={key:0,class:`project-agent-learning-list`},Yi={key:0},Xi={key:1,class:`project-agent-inline-list`},Zi={key:0},Qi={key:2,class:`project-agent-evidence-list`},$i=[`disabled`,`onClick`],ea={key:3,class:`project-agent-learning-actions`},ta=[`disabled`,`onClick`],na={key:1,class:`project-agent-muted`},ra={class:`project-agent-note`},ia={class:`project-agent-detail-section`},aa={key:1,class:`project-agent-detail-placeholder`},oa=P(n({__name:`ProjectAgentsPage`,setup(n){let o=[`assignments`,`tasks`,`activity`,`recruitments`,`executors`,`routingRules`,`learning`],s=te(),_=l([]),v=l(!1),x=l(``),C=l(`all`),ee=l(`all`),P=l(``),F=l(``),re=l(!1),I=l(null),L=l(!1),ie=l(`assign`),R=l(null),z=l(!1),B=l({}),V=l(``),H=l(``),ae=l(``),U=l(``),oe=l(``),se=l(!1),ce=l(`executor`),le=l(null),ue=l(null),de=0,fe=0,pe=new Set([`awaiting_recruitment`,`queued`,`running`,`paused`,`awaiting_review`,`blocked`]);function me(e){return`${e}:${typeof crypto<`u`&&`randomUUID`in crypto?crypto.randomUUID():`${Date.now()}-${Math.random().toString(16).slice(2)}`}`}let he=h(()=>s.state?.personalProjects??[]),W=h(()=>s.activePersonalSpace?.id??``),_e=h(()=>new Map(he.value.map(e=>[e.project_id,e]))),ve=h(()=>[{value:`all`,label:d(`projectAgents.allProjects`)},...he.value.map(e=>({value:e.project_id,label:e.profile.name,meta:e.project_id}))]),ye=h(()=>[{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`)}]),be=h(()=>{let e=P.value.trim().toLocaleLowerCase(b());return _.value.filter(e=>C.value===`all`||J(e).some(({personalProjectId:e})=>e===C.value)).filter(e=>ee.value===`all`||e.profile.status===ee.value).filter(t=>!e||Qe(t).toLocaleLowerCase(b()).includes(e)).sort(Ye)}),G=h(()=>be.value.find(e=>e.agentId===F.value)??null),xe=h(()=>_.value.filter(({profile:e})=>e.status===`active`).length),Se=h(()=>_.value.reduce((e,t)=>e+J(t).length,0)),Ce=h(()=>new Set(_.value.flatMap(e=>J(e).map(({personalProjectId:e})=>e))).size),we=h(()=>C.value===`all`?G.value?.assignments?.find(({status:e})=>e===`active`)?.personalProjectId??G.value?.personalProjectId??he.value[0]?.project_id??null:C.value),Te=h(()=>G.value?.activity??null),Ee=h(()=>Te.value?.days.find(({date:e})=>e===H.value)??null),De=h(()=>Object.entries(G.value?.learningEvidence??{})),Oe=h(()=>G.value?.recruitments??[]);e(()=>{s.runtimeStatus===`idle`&&s.refresh()}),i(W,e=>{++fe,B.value={},F.value=``,_.value=[],e?ke(e):s.runtimeStatus!==`loading`&&(v.value=!1)},{immediate:!0}),i(be,e=>{e.some(e=>e.agentId===F.value)||(F.value=e[0]?.agentId??``),e.some(e=>e.activity?.days.some(({date:e})=>e===H.value))||(H.value=``)},{immediate:!0}),i([F,W],([e,t])=>{H.value=``,e&&t&&K(e,t)},{immediate:!0});async function ke(e=W.value){if(!e)return;let t=++de;v.value=!0,x.value=``;try{let n=new URLSearchParams({personalSpaceId:e}),[r,i]=await Promise.allSettled([N(`/api/project-agents?${n}`),N(`/api/project-agent-tasks?${n}`)]);if(r.status===`rejected`)throw r.reason;if(t===de){let e=_a(at(r.value)),t=i.status===`fulfilled`?ua(i.value).filter(e=>pe.has(e.status)):[];_.value=Gt(e,t)}}catch(e){t===de&&(x.value=e instanceof Error?e.message:d(`projectAgents.loadError`))}finally{t===de&&(v.value=!1)}}async function K(e=F.value,t=W.value){let n=_.value.find(t=>t.agentId===e);if(!n||!t)return;let r=++fe;z.value=!0,V.value=``,je(e,`loading`);let i=new URLSearchParams({personalSpaceId:t,agentId:e}),a=Kt(),s=new URLSearchParams({personalSpaceId:t,agentId:e,fromDate:a.fromDate,toDate:a.toDate}),c={assignments:N(`/api/project-agent-assignments?${i}`),tasks:N(`/api/project-agent-tasks?${i}`),activity:N(`/api/project-agent-activity?${s}`),recruitments:N(`/api/project-agent-recruitments?personalSpaceId=${encodeURIComponent(t)}`),executors:N(`/api/executors?personalSpaceId=${encodeURIComponent(t)}`),routingRules:N(`/api/executor-routing-rules?personalSpaceId=${encodeURIComponent(t)}`),learning:N(`/api/project-agent-routing-learning?${i}`)};await Promise.all(o.map(async i=>{try{let a=await c[i];if(!Ne(r,e,t))return;Pe(n,i,a),Me(e,i,{status:`ready`,error:``})}catch(n){if(!Ne(r,e,t))return;Me(e,i,{status:`error`,error:n instanceof Error?n.message:d(`projectAgents.detail.sectionUnavailable`)})}})),Ne(r,e,t)&&(z.value=!1)}function Ae(e=`idle`){return Object.fromEntries(o.map(t=>[t,{status:e,error:``}]))}function je(e,t){B.value={...B.value,[e]:Ae(t)}}function Me(e,t,n){B.value={...B.value,[e]:{...B.value[e]??Ae(),[t]:n}}}function q(e){let t=(Array.isArray(e)?e:[e]).map(e=>B.value[F.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 Ne(e,t,n){return e===fe&&t===F.value&&n===W.value}function Pe(e,t,n){let r;switch(t){case`assignments`:Fe(n,[`assignments`,`items`]),r={assignments:$t(n,e)};break;case`tasks`:Fe(n,[`tasks`,`items`]),r={tasks:ua(n)};break;case`activity`:{let e=Jt(n);if(!e)throw Error(d(`projectAgents.detail.sectionUnavailable`));r={activity:e};break}case`recruitments`:Fe(n,[`recruitments`,`items`]),r={recruitments:fa(n).filter(t=>pa(t,e))};break;case`executors`:Fe(n,[`executors`,`items`]),r={executorDirectory:sa(n),clientEvidence:ma(n)};break;case`routingRules`:Fe(n,[`rules`,`items`]),r={routingRules:ha(n)};break;case`learning`:Fe(n,[`learningEvidence`,`learning_evidence`,`items`],!0),r={learningEvidence:ga(n)};break}_.value=_.value.map(t=>t.agentId===e.agentId?{...t,...r}:t)}function Fe(e,t,n=!1){if(Array.isArray(e))return;let r=Y(e);if(!t.some(e=>Array.isArray(r[e])||n&&Ie(r[e])))throw Error(d(`projectAgents.detail.sectionUnavailable`))}function Ie(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}async function Le(e,t,n){let r=t===`ignore`?n:e.learningKey??e.modelStrategyKey,i=G.value;if(!(!r||!i||!W.value||ae.value)){if(t===`reset`&&(!e.personalProjectId||!e.workKind||!e.executor)){V.value=d(`projectAgents.learning.resetUnavailable`);return}ae.value=r;try{await j(`/api/project-agent-learning/${encodeURIComponent(r)}`,{action:t,personalSpaceId:W.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`:me(`console-learning:${r}:reset`),reason:`Console requested ${t} for explicit evidence`}),await K()}catch(e){V.value=e instanceof Error?e.message:d(`projectAgents.learning.updateFailed`)}finally{ae.value=``}}}async function Re(e,t){if(!(!W.value||U.value)){U.value=e.recruitmentId;try{await A(`/api/project-agent-recruitments/decision`,{personalSpaceId:W.value,personalProjectId:e.personalProjectId,recruitmentId:e.recruitmentId,expectedRevision:e.revision??0,decision:t,reason:d(`projectAgents.recruitment.${t}Reason`)}),await K()}catch(e){V.value=e instanceof Error?e.message:d(`projectAgents.recruitment.decisionFailed`)}finally{U.value=``}}}async function ze(e,t){if(!(!W.value||oe.value)){oe.value=e.executorId;try{await A(`/api/executors/authorization`,{personalSpaceId:W.value,executorId:e.executorId,status:t,expectedRevision:e.permissionRevision??0,idempotencyKey:me(`console-executor:${e.executorId}:${t}`),reason:d(`projectAgents.routing.${t===`authorized`?`authorizeReason`:`revokeReason`}`)}),await K()}catch(e){V.value=e instanceof Error?e.message:d(`projectAgents.routing.authorizationFailed`)}finally{oe.value=``}}}function Be(e=null){ce.value=`executor`,le.value=e,ue.value=null,se.value=!0}function Ve(e=null){ce.value=`rule`,ue.value=e,le.value=null,se.value=!0}function He(){se.value=!1,le.value=null,ue.value=null}function Ue(e){G.value&&(_.value=_.value.map(t=>t.agentId===G.value?.agentId?{...t,executorDirectory:va([...t.executorDirectory??[],e],({executorId:e})=>e)}:t),He())}function Ge(e){G.value&&(_.value=_.value.map(t=>t.agentId===G.value?.agentId?{...t,routingRules:va([...t.routingRules??[],e],({ruleId:e})=>e)}:t),He())}function Ke(e){ce.value===`executor`?Ue(e):Ge(e)}async function qe(e){if(!(!W.value||!e.ruleId||U.value)){U.value=`rule:${e.ruleId}`;try{await j(`/api/executor-routing-rules/${encodeURIComponent(e.ruleId)}`,{personalSpaceId:W.value,ruleId:e.ruleId,expectedRevision:e.revision??0,status:`disabled`,idempotencyKey:`console-rule:${e.ruleId}:disable`,reason:`Console disabled explicit routing rule`}),await K()}catch(e){V.value=e instanceof Error?e.message:d(`projectAgents.routing.updateFailed`)}finally{U.value=``}}}async function Je(e){if(e.profile.cleanupEligible){z.value=!0;try{await M(`/api/project-agents/${encodeURIComponent(e.agentId)}?personalSpaceId=${encodeURIComponent(e.personalSpaceId)}&reason=archived%20test%20role`),await ke()}catch(e){V.value=e instanceof Error?e.message:d(`projectAgents.source.cleanupFailed`)}finally{z.value=!1}}}function Ye(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 Xe(e){return e?_e.value.get(e)?.profile.name??e:d(`projectAgents.notReported`)}function J(e){return e.assignments?.length?e.assignments:e.personalProjectId?[Ze(e)]:[]}function Ze(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 Qe(e){return[e.agentId,e.profile.name,e.profile.occupationEmoji??``,e.profile.responsibility,...e.profile.capabilities??[],...e.profile.workKinds??[],...J(e).flatMap(e=>[e.personalProjectId,e.responsibility,e.scope??``,...e.workKinds??[]]),...(e.tasks??[]).flatMap(e=>[e.taskId,e.title,e.workKind??``])].join(` `)}function $e(){I.value=null,re.value=!0}function tt(e){I.value=e,re.value=!0}function nt(){re.value=!1,I.value=null}function rt(e,t=null,n=`assign`){I.value=e,R.value=t,ie.value=n,L.value=!0}function st(){L.value=!1,R.value=null,ie.value=`assign`}function ft(e){I.value&&(_.value=_.value.map(t=>t.agentId===I.value?.agentId?{...t,assignments:va([...t.assignments??[],e],({assignmentId:e})=>e)}:t),F.value=I.value.agentId,st())}function pt(){st(),K()}function mt(e){let t=Zt(e),n=_.value.filter(e=>!(e.agentId===t.agentId&&t.personalProjectId&&e.personalProjectId===t.personalProjectId));_.value=_a([...n,t]),t.personalProjectId&&(C.value=t.personalProjectId),ee.value=`all`,P.value=``,F.value=t.agentId,s.notify(d(`projectAgents.saved`))}function ht(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 gt(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 xt(e){return e?.mode??`adaptive`}function St(e){return e?.mode??`flexible`}function Ct(e){return e?.mode===`locked`}function wt(e){return e?e.allowList?.length?e.allowList:((e.mode===`locked`?e.lockedExecutorIds:e.preferredExecutorIds)??[]).map(e=>({executorId:e})):[]}function $(e){if(e.actualExecution)return e.actualExecution;let t=[...e.events??[]].reverse().find(e=>e.actualExecution);return t?bt(t):null}function Tt(e){return e.workerLabel&&e.workerId&&e.workerLabel!==e.workerId?`${e.workerLabel} · ${e.workerId}`:e.workerLabel||e.workerId||d(`projectAgents.notReported`)}function Et(e){return e.workerOccupationEmoji||``}function Dt(e){return At(e.workerStatus||e.status)}function Ot(e){return e.workerLabel||e.agentName||e.workerId||e.agentId||d(`projectAgents.notReported`)}function kt(e){return e.workerOccupationEmoji||e.occupationEmoji||``}function At(e){return e?Mt(e):d(`projectAgents.notReported`)}function jt(e){return(e.tasks??[]).find(e=>pe.has(e.status))??null}function Mt(e){let t=`projectAgents.taskStatus.${e}`,n=d(t);return n===t?e:n}function Nt(e){return d(`projectAgents.agentType.${e??`durable`}`)}function Pt(e){return d(e?`projectAgents.clients.${e}`:`projectAgents.notReported`)}function Ft(e){return ya([...e.profile.allowedClients??[],...e.observedClients??[],...(e.clientEvidence??[]).map(({client:e})=>e)])}function It(e,t){return e.clientEvidence?.find(e=>e.client===t)}function Lt(e,t){return It(e,t)?.actualUse?.count??0}function Rt(e){return e.neutral!==!1||e.sampleCount<=0}function zt(e){return Rt(e)?d(`projectAgents.learning.neutral`):d(`projectAgents.learning.recorded`)}function Bt(e){return e.recentWeightedSamples??d(`projectAgents.notReported`)}function Vt(e){return e.score??``}function Ht(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 Ut(e){H.value=e.date}function Wt(e,t){return t.ownerAgentId===e.agentId||t.leadAgentId===e.agentId||t.coordinatorAgentId===e.agentId||t.participants.some(t=>t.agentId===e.agentId)}function Gt(e,t){return e.map(e=>{let n=t.filter(t=>Wt(e,t));return n.length?{...e,tasks:va([...e.tasks??[],...n],({taskId:e})=>e)}:e})}function Kt(){let e=new Date,t=new Date(e);return t.setUTCFullYear(t.getUTCFullYear()-1),{fromDate:qt(t),toDate:qt(e)}}function qt(e){return e.toISOString().slice(0,10)}function Jt(e){let t=Y(e),n=Q(t.days);if(!n.length&&!(`days`in t))return null;let r=n.map(e=>{let t=Y(e);return{date:Z(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:Q(t.tasks).map(Xt).filter(e=>!!e)}}).filter(({date:e})=>e),i=Z(t,`fromDate`,`from_date`),a=Z(t,`toDate`,`to_date`),o=r.some(({total:e,tasks:t})=>e>0||!!t?.length),s=i??(r.length?r.map(({date:e})=>e).sort()[0]:void 0),c=a??(r.length?r.map(({date:e})=>e).sort().at(-1):void 0),l=o&&s&&c?Yt(r,s,c):[];return{agentId:Z(t,`agentId`,`agent_id`)??F.value,personalSpaceId:Z(t,`personalSpaceId`,`personal_space_id`)??W.value,fromDate:s,toDate:c,days:l}}function Yt(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=qt(e);o.push(r.get(t)??{date:t,completed:0,failed:0,cancelled:0,total:0,tasks:[]})}return o.reverse()}function Xt(e){let t=Y(e),n=Z(t,`taskId`,`task_id`);if(!n)return null;let r=lt(X(t,`actualExecution`,`actual_execution`))??lt({executor:Z(t,`actualExecutor`,`actual_executor`),provider:Z(t,`actualModelProvider`,`actual_model_provider`),model:Z(t,`actualModel`,`actual_model`),client:Z(t,`sourceApplication`,`source_application`)});return{taskId:n,title:Z(t,`title`,`title`)??n,status:Z(t,`status`,`status`),summary:Z(t,`summary`,`summary`)??``,occurredAt:Z(t,`occurredAt`,`occurred_at`)??``,personalProjectId:Z(t,`personalProjectId`,`personal_project_id`),assignmentId:Z(t,`assignmentId`,`assignment_id`),collaborators:Q(t.collaborators).map(dt),sourceApplication:Z(t,`sourceApplication`,`source_application`),actualExecution:r,actualModelProvider:Z(t,`actualModelProvider`,`actual_model_provider`),actualModel:Z(t,`actualModel`,`actual_model`)}}function Zt(e){let t=Y(e),n=Y(t.profile),r=Z(t,`agentId`,`agent_id`)??``,i=Z(t,`createdAt`,`created_at`)??``,a=Z(t,`updatedAt`,`updated_at`)??i,o={name:Z(n,`name`,`name`)??r,responsibility:Z(n,`responsibility`,`responsibility`)??``,capabilities:Q(n.capabilities).filter(e=>typeof e==`string`),initialPreferences:Q(X(n,`initialPreferences`,`initial_preferences`)).filter(e=>typeof e==`string`),status:Z(n,`status`,`status`)??`active`,occupationEmoji:Z(n,`occupationEmoji`,`occupation_emoji`),agentType:Z(n,`agentType`,`agent_type`),workKinds:Q(X(n,`workKinds`,`work_kinds`)).filter(e=>typeof e==`string`),defaultModelStrategy:ot(X(n,`defaultModelStrategy`,`default_model_strategy`)),executorPolicy:ct(X(n,`executorPolicy`,`executor_policy`)),allowedClients:Q(X(n,`allowedClients`,`allowed_clients`)).filter(e=>typeof e==`string`),testSource:Z(n,`testSource`,`test_source`),cleanupEligible:X(n,`cleanupEligible`,`cleanup_eligible`)===!0},s={agentId:r,personalSpaceId:Z(t,`personalSpaceId`,`personal_space_id`)??W.value,personalProjectId:Z(t,`personalProjectId`,`personal_project_id`),profile:o,createdAt:i,updatedAt:a};return{...s,memoryScope:Z(t,`memoryScope`,`memory_scope`)??void 0,assignments:Q(t.assignments).map(e=>ut(e,s)).filter(Boolean),recruitments:fa(t.recruitments??t.recruitmentHistory).filter(e=>pa(e,s)),recruitmentId:Z(t,`recruitmentId`,`recruitment_id`),temporaryTaskId:Z(t,`temporaryTaskId`,`temporary_task_id`),workStatus:Z(t,`workStatus`,`work_status`),openTaskCount:typeof t.openTaskCount==`number`?t.openTaskCount:typeof t.open_task_count==`number`?t.open_task_count:void 0,currentTaskId:Z(t,`currentTaskId`,`current_task_id`),observedClients:Q(t.observedClients??t.observed_clients).filter(e=>typeof e==`string`),recruitedAt:Z(t,`recruitedAt`,`recruited_at`),recruitmentReason:Z(t,`recruitmentReason`,`recruitment_reason`),recruitmentSourceApplication:Z(t,`recruitmentSourceApplication`,`recruitment_source_application`),isTestRole:!!o.testSource||o.cleanupEligible||t.isTestRole===!0||t.is_test_role===!0,tasks:Q(t.tasks??t.taskHistory).map(_t).filter(Boolean),activity:Jt(t.activity),clientEvidence:ma(t.clientEvidence??t.client_evidence),routingRules:ha(t.routingRules??t.routing_rules),learningEvidence:la(t.learningEvidence??t.learning_evidence)}}function Qt(e){let t=Y(e),n=Z(t,`client`,`client`);if(!n)return null;let r=Y(X(t,`actualUse`,`actual_use`));return{client:n,allowed:t.allowed===!0,integrationStatus:Z(t,`integrationStatus`,`integration_status`)??void 0,actualUse:Object.keys(r).length?{count:typeof r.count==`number`?r.count:0,lastUsedAt:Z(r,`lastUsedAt`,`last_used_at`)}:null}}function $t(e,t){let n=Y(e);return Q(Array.isArray(e)?e:n.assignments??n.items).map(e=>ut(e,t)).filter(e=>!!e)}function oa(e){let t=Y(e),n=Z(t,`provider`,`provider`),r=Z(t,`model`,`model`);return!n||!r?null:{provider:n,model:r,capabilities:Q(t.capabilities).filter(e=>typeof e==`string`),available:typeof t.available==`boolean`?t.available:void 0,strategyModes:Q(X(t,`strategyModes`,`strategy_modes`)).filter(e=>typeof e==`string`),reasoningEfforts:Q(X(t,`reasoningEfforts`,`reasoning_efforts`)).filter(e=>typeof e==`string`),observedAt:Z(t,`observedAt`,`observed_at`),unavailableReason:Z(t,`unavailableReason`,`unavailable_reason`)}}function sa(e){let t=Y(e);return Q(Array.isArray(e)?e:t.executors??t.items).map(e=>{let t=Y(e),n=Z(t,`executorId`,`executor_id`);if(!n)return null;let r=Y(X(t,`actualUse`,`actual_use`));return{executorId:n,label:Z(t,`label`,`label`),provider:Z(t,`provider`,`provider`),model:Z(t,`model`,`model`),client:Z(t,`client`,`client`),availabilityStatus:Z(t,`availabilityStatus`,`availability_status`),personalSpaceId:Z(t,`personalSpaceId`,`personal_space_id`),displayName:Z(t,`displayName`,`display_name`),executorKind:Z(t,`executorKind`,`executor_kind`),capabilities:Q(X(t,`capabilities`,`capabilities`)).filter(e=>typeof e==`string`),globalPriority:typeof X(t,`globalPriority`,`global_priority`)==`number`?X(t,`globalPriority`,`global_priority`):null,healthRequired:X(t,`healthRequired`,`health_required`)===!0,registrationStatus:Z(t,`registrationStatus`,`registration_status`),permissionStatus:Z(t,`permissionStatus`,`permission_status`),preflightStatus:Z(t,`preflightStatus`,`preflight_status`),healthStatus:Z(t,`healthStatus`,`health_status`),workspacePermission:typeof X(t,`workspacePermission`,`workspace_permission`)==`boolean`?X(t,`workspacePermission`,`workspace_permission`):null,revision:typeof t.revision==`number`?t.revision:void 0,permissionRevision:typeof X(t,`permissionRevision`,`permission_revision`)==`number`?X(t,`permissionRevision`,`permission_revision`):void 0,registeredAt:Z(t,`registeredAt`,`registered_at`),updatedAt:Z(t,`updatedAt`,`updated_at`),testSource:Z(t,`testSource`,`test_source`),cleanupEligible:X(t,`cleanupEligible`,`cleanup_eligible`)===!0,advertisedModels:Q(X(t,`advertisedModels`,`advertised_models`)).map(oa).filter(e=>e!==null),availableModels:Q(X(t,`availableModels`,`available_models`)).map(oa).filter(e=>e!==null),actualUse:Object.keys(r).length?{count:typeof r.count==`number`?r.count:0,lastUsedAt:Z(r,`lastUsedAt`,`last_used_at`)}:null}}).filter(e=>e!==null)}function ca(e){let t=Y(e),n=Z(t,`ruleId`,`rule_id`);if(!n)return null;let r=Z(t,`status`,`status`);return{ruleId:n,scope:Z(t,`scope`,`scope`)??`global`,priority:typeof t.priority==`number`?t.priority:0,personalProjectId:Z(t,`personalProjectId`,`personal_project_id`),taskId:Z(t,`taskId`,`task_id`),workKind:Z(t,`workKind`,`work_kind`),agentId:Z(t,`agentId`,`agent_id`),enabled:t.enabled!==!1&&(!r||r===`active`),executorIds:Q(X(t,`executorIds`,`executor_ids`)).filter(e=>typeof e==`string`),requiredCapabilities:Q(X(t,`requiredCapabilities`,`required_capabilities`)).filter(e=>typeof e==`string`),modelStrategy:ot(X(t,`modelStrategy`,`model_strategy`)),reason:Z(t,`reason`,`reason`),revision:typeof t.revision==`number`?t.revision:void 0,status:r??void 0,createdAt:Z(t,`createdAt`,`created_at`),updatedAt:Z(t,`updatedAt`,`updated_at`)}}function la(e){let t=Y(e),n=Array.isArray(e)?e:t.learningEvidence??t.learning_evidence??t.items,r=(Array.isArray(n)?n:Object.values(Y(n))).map((e,t)=>{let n=Y(e),r=Z(n,`personalProjectId`,`personal_project_id`),i=Z(n,`workKind`,`work_kind`),a=Z(n,`executorId`,`executor_id`)??Z(n,`executor`,`executor`),o=ot(X(n,`modelStrategy`,`model_strategy`)),s=Z(n,`modelStrategyKey`,`model_strategy_key`),c=s??[r,i,a,String(t)].filter(Boolean).join(`:`),l=Q(X(n,`evidenceContributions`,`evidence_contributions`)).map(e=>{let t=Y(e),n=Z(t,`signal`,`signal`),r=Z(t,`evidenceKind`,`evidence_kind`)??`evidence`,i=typeof X(t,`decayWeight`,`decay_weight`)==`number`?X(t,`decayWeight`,`decay_weight`):null;return{evidenceId:Z(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:Z(t,`occurredAt`,`occurred_at`)}}),u=typeof X(n,`weightedSuccess`,`weighted_success`)==`number`?X(n,`weightedSuccess`,`weighted_success`):0,d=typeof X(n,`weightedFailure`,`weighted_failure`)==`number`?X(n,`weightedFailure`,`weighted_failure`):0,f=X(n,`halfLife`,`decay_half_life_days`);return[c,{learningKey:c,personalProjectId:r,workKind:i,executor:a,modelStrategy:o,modelStrategyKey:s,sampleCount:typeof X(n,`sampleCount`,`sample_count`)==`number`?X(n,`sampleCount`,`sample_count`):0,recentWeightedSamples:typeof X(n,`recentCount`,`recent_count`)==`number`?X(n,`recentCount`,`recent_count`):null,decayBasis:typeof f==`number`?`half-life ${f}d`:null,updatedAt:Z(n,`asOf`,`as_of`)??Z(n,`updatedAt`,`updated_at`),outcomes:{success:typeof X(n,`successCount`,`success_count`)==`number`?X(n,`successCount`,`success_count`):void 0,rework:typeof X(n,`reworkCount`,`rework_count`)==`number`?X(n,`reworkCount`,`rework_count`):void 0,failure:typeof X(n,`failureCount`,`failure_count`)==`number`?X(n,`failureCount`,`failure_count`):void 0,scoreCount:typeof X(n,`ratingCount`,`rating_count`)==`number`?X(n,`ratingCount`,`rating_count`):void 0},evidence:l,score:u-d,neutral:X(n,`neutralDueToInsufficientEvidence`,`neutral_due_to_insufficient_evidence`)===!0}]});return Object.fromEntries(r)}function ua(e){let t=Y(e);return Q(Array.isArray(e)?e:t.tasks??t.items).map(_t).filter(Boolean)}function da(e){let t=Y(e),n=Z(t,`recruitmentId`,`recruitment_id`);return n?{recruitmentId:n,personalSpaceId:Z(t,`personalSpaceId`,`personal_space_id`)??W.value,personalProjectId:Z(t,`personalProjectId`,`personal_project_id`)??``,taskId:Z(t,`taskId`,`task_id`)??``,coordinatorAgentId:Z(t,`coordinatorAgentId`,`coordinator_agent_id`)??``,hrAgentId:Z(t,`hrAgentId`,`hr_agent_id`),positionKind:Z(t,`positionKind`,`position_kind`)??`durable`,workKind:Z(t,`workKind`,`work_kind`)??``,requiredCapabilities:Q(X(t,`requiredCapabilities`,`required_capabilities`)).filter(e=>typeof e==`string`),reasonCode:Z(t,`reasonCode`,`reason_code`)??``,reason:Z(t,`reason`,`reason`)??``,status:Z(t,`status`,`status`)??`unknown`,confirmationMode:Z(t,`confirmationMode`,`confirmation_mode`),proposedAgentId:Z(t,`proposedAgentId`,`proposed_agent_id`)??``,revision:typeof t.revision==`number`?t.revision:void 0,recruitedAgentId:Z(t,`recruitedAgentId`,`recruited_agent_id`),triggerSourceApplication:Z(t,`triggerSourceApplication`,`trigger_source_application`),triggerSourceSessionId:Z(t,`triggerSourceSessionId`,`trigger_source_session_id`),testSource:Z(t,`testSource`,`test_source`),cleanupEligible:X(t,`cleanupEligible`,`cleanup_eligible`)===!0,createdAt:Z(t,`createdAt`,`created_at`)??``,updatedAt:Z(t,`updatedAt`,`updated_at`)??``,fulfilledAt:Z(t,`fulfilledAt`,`fulfilled_at`)}:null}function fa(e){let t=Y(e);return Q(Array.isArray(e)?e:t.recruitments??t.items).map(da).filter(e=>!!e)}function pa(e,t){return e.recruitedAgentId===t.agentId||e.proposedAgentId===t.agentId||e.recruitmentId===t.recruitmentId}function ma(e){let t=Y(e);return Q(Array.isArray(e)?e:t.clients??t.executors??t.items).map(Qt).filter(Boolean)}function ha(e){let t=Y(e);return Q(Array.isArray(e)?e:t.rules??t.items).map(ca).filter(Boolean)}function ga(e){let t=Y(e);return la(t.learningEvidence??t.learning_evidence??e)}function _a(e){let t=new Map;return e.map(Zt).forEach(e=>{let n=t.get(e.agentId);if(!n){t.set(e.agentId,e);return}let r=[...J(n),...J(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:ya([...n.profile.capabilities,...e.profile.capabilities]),workKinds:ya([...n.profile.workKinds??[],...e.profile.workKinds??[]]),defaultModelStrategy:n.profile.defaultModelStrategy??e.profile.defaultModelStrategy,executorPolicy:n.profile.executorPolicy??e.profile.executorPolicy,allowedClients:ya([...n.profile.allowedClients??[],...e.profile.allowedClients??[]])},assignments:va(r,({assignmentId:e})=>e),recruitments:va([...n.recruitments??[],...e.recruitments??[]],({recruitmentId:e})=>e),tasks:va(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:ya([...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 va(e,t){return[...new Map(e.map(e=>[t(e),e])).values()]}function ya(e){return[...new Set(e)]}return(e,n)=>(g(),O(`section`,{class:`view project-agents-view`,"aria-label":p(d)(`projectAgents.aria`)},[m(`header`,nn,[m(`div`,null,[m(`h2`,null,S(p(d)(`projectAgents.title`)),1),m(`p`,rn,S(p(d)(`projectAgents.stats.total`,{count:_.value.length}))+` · `+S(p(d)(`projectAgents.stats.assignments`,{count:Se.value}))+` · `+S(p(d)(`projectAgents.stats.projects`,{count:Ce.value})),1)]),m(`button`,{class:`project-agent-add`,type:`button`,disabled:!W.value,onClick:$e},S(p(d)(`projectAgents.add`)),9,an)]),m(`div`,on,[m(`span`,null,S(p(d)(`projectAgents.stats.active`,{count:xe.value})),1),m(`span`,null,S(p(d)(`projectAgents.stats.noOnlineClaim`)),1)]),m(`div`,sn,[c(ne,{modelValue:C.value,"onUpdate:modelValue":n[0]||=e=>C.value=e,class:`project-agents-project-filter`,"control-id":`project-agent-filter`,options:ve.value,label:p(d)(`projectAgents.projectFilter`)},null,8,[`modelValue`,`options`,`label`]),m(`label`,cn,[m(`span`,ln,S(p(d)(`projectAgents.searchLabel`)),1),t(m(`input`,{"onUpdate:modelValue":n[1]||=e=>P.value=e,type:`search`,placeholder:p(d)(`projectAgents.searchPlaceholder`)},null,8,un),[[T,P.value]])]),m(`div`,{class:`project-agents-status-filter`,"aria-label":p(d)(`projectAgents.fields.status`)},[(g(!0),O(y,null,a(ye.value,e=>(g(),O(`button`,{key:e.value,type:`button`,"aria-pressed":ee.value===e.value,onClick:t=>ee.value=e.value},S(e.label),9,fn))),128))],8,dn)]),C.value===`all`?E(``,!0):(g(),u(et,{key:C.value,"personal-space-id":W.value,"personal-project-id":C.value,"project-name":Xe(C.value)},null,8,[`personal-space-id`,`personal-project-id`,`project-name`])),v.value?(g(),O(`div`,pn,S(p(d)(`projectAgents.loading`)),1)):x.value?(g(),O(`div`,mn,[m(`p`,null,S(x.value),1),m(`button`,{class:`quiet-button`,type:`button`,onClick:n[2]||=e=>ke()},S(p(d)(`projectAgents.retry`)),1)])):_.value.length?be.value.length?(g(),O(`div`,vn,[m(`div`,{class:`project-agent-list`,role:`list`,"aria-label":p(d)(`projectAgents.listLabel`)},[(g(!0),O(y,null,a(be.value,e=>(g(),O(`button`,{key:e.agentId,type:`button`,class:w([`project-agent-row`,{selected:F.value===e.agentId}]),"aria-current":F.value===e.agentId?`true`:void 0,onClick:t=>F.value=e.agentId},[m(`span`,xn,[e.profile.occupationEmoji?(g(),O(`span`,{key:0,class:`project-agent-occupation-emoji`,role:`img`,"aria-label":`${p(d)(`projectAgents.fields.occupationEmoji`)}: ${e.profile.occupationEmoji}`},S(e.profile.occupationEmoji),9,Sn)):E(``,!0),m(`strong`,null,S(e.profile.name),1),m(`i`,Cn,S(Nt(e.profile.agentType)),1),m(`i`,{class:w(`is-${e.profile.status}`)},S(p(d)(`projectAgents.status.${e.profile.status}`)),3)]),m(`span`,wn,S(e.agentId),1),m(`span`,Tn,[(g(!0),O(y,null,a(J(e),e=>(g(),O(`b`,{key:e.assignmentId},S(Xe(e.personalProjectId)),1))),128)),J(e).length?E(``,!0):(g(),O(`em`,En,S(p(d)(`projectAgents.notReported`)),1))]),m(`span`,Dn,S(e.profile.responsibility||p(d)(`projectAgents.notReported`)),1),m(`span`,On,[jt(e)?(g(),O(y,{key:0},[m(`i`,{class:w([`project-agent-work-dot`,{"is-live":jt(e).status===`running`}]),"aria-hidden":`true`},null,2),D(S(Mt(jt(e).status))+` · `+S(jt(e).title),1)],64)):e.workStatus===`blocked`||e.workStatus===`queued`?(g(),O(y,{key:1},[D(S(Mt(e.workStatus))+` · `+S(p(d)(`projectAgents.detail.stateReported`)),1)],64)):(g(),O(y,{key:2},[D(S(p(d)(`projectAgents.detail.noRun`)),1)],64))]),m(`span`,kn,[(g(!0),O(y,null,a(e.profile.capabilities.slice(0,3),e=>(g(),O(`b`,{key:e},S(e),1))),128))])],10,bn))),128))],8,yn),G.value?(g(),O(`aside`,{key:0,class:`project-agent-detail`,"aria-label":G.value.profile.name},[m(`header`,null,[m(`div`,jn,[m(`h3`,null,[G.value.profile.occupationEmoji?(g(),O(`span`,{key:0,class:`project-agent-occupation-emoji`,role:`img`,"aria-label":`${p(d)(`projectAgents.fields.occupationEmoji`)}: ${G.value.profile.occupationEmoji}`},S(G.value.profile.occupationEmoji),9,Mn)):E(``,!0),D(S(G.value.profile.name),1)]),m(`p`,null,[D(S(G.value.agentId)+` · `+S(Nt(G.value.profile.agentType)),1),G.value.isTestRole?(g(),O(`span`,Nn,[D(` · `+S(p(d)(`projectAgents.source.testRole`)),1),G.value.profile.testSource?(g(),O(`span`,Pn,` · `+S(G.value.profile.testSource),1)):E(``,!0)])):E(``,!0)])]),m(`div`,Fn,[m(`button`,{class:`quiet-button`,type:`button`,disabled:z.value,onClick:n[3]||=e=>K()},S(z.value?p(d)(`projectAgents.detail.refreshing`):p(d)(`projectAgents.detail.refresh`)),9,In),m(`button`,{class:`quiet-button`,type:`button`,onClick:n[4]||=e=>tt(G.value)},S(p(d)(`projectAgents.edit`)),1),G.value.profile.cleanupEligible?(g(),O(`button`,{key:0,class:`quiet-button`,type:`button`,disabled:z.value,onClick:n[5]||=e=>Je(G.value)},S(p(d)(`projectAgents.source.cleanup`)),9,Ln)):E(``,!0)])]),V.value?(g(),O(`p`,Rn,S(V.value),1)):E(``,!0),m(`dl`,zn,[m(`div`,null,[m(`dt`,null,S(p(d)(`projectAgents.fields.assignments`)),1),m(`dd`,null,S(J(G.value).length),1)]),m(`div`,null,[m(`dt`,null,S(p(d)(`projectAgents.fields.memoryScope`)),1),m(`dd`,null,S(G.value.memoryScope??p(d)(`projectAgents.notReported`)),1)]),m(`div`,null,[m(`dt`,null,S(p(d)(`projectAgents.fields.status`)),1),m(`dd`,null,S(p(d)(`projectAgents.status.${G.value.profile.status}`)),1)]),m(`div`,null,[m(`dt`,null,S(p(d)(`projectAgents.fields.recruitment`)),1),m(`dd`,null,[D(S(Pt(G.value.recruitmentSourceApplication)),1),G.value.recruitmentReason?(g(),O(`small`,Bn,S(G.value.recruitmentReason),1)):E(``,!0)])]),m(`div`,null,[m(`dt`,null,S(p(d)(`projectAgents.fields.updatedAt`)),1),m(`dd`,null,S(ht(G.value.updatedAt)),1)])]),m(`div`,Vn,[c(it,r(q(`recruitments`),{onRetry:K}),{default:k(()=>[m(`section`,Hn,[m(`div`,Un,[m(`h4`,Wn,S(p(d)(`projectAgents.sections.recruitment`)),1),m(`span`,null,S(Oe.value.length),1)]),Oe.value.length?(g(),O(`div`,Gn,[(g(!0),O(y,null,a(Oe.value,e=>(g(),O(`article`,{key:e.recruitmentId,class:`project-agent-recruitment-card`},[m(`header`,null,[m(`strong`,null,S(e.positionKind)+` · `+S(e.workKind||p(d)(`projectAgents.notReported`)),1),m(`div`,Kn,[m(`i`,null,S(e.status),1),e.status===`awaiting_confirmation`?(g(),O(`button`,{key:0,class:`quiet-button`,type:`button`,disabled:!!U.value,onClick:t=>Re(e,`approve`)},S(p(d)(`projectAgents.recruitment.approve`)),9,qn)):E(``,!0),e.status===`awaiting_confirmation`?(g(),O(`button`,{key:1,class:`quiet-button`,type:`button`,disabled:!!U.value,onClick:t=>Re(e,`cancel`)},S(p(d)(`projectAgents.recruitment.cancel`)),9,Jn)):E(``,!0)])]),m(`dl`,Yn,[m(`div`,null,[m(`dt`,null,S(p(d)(`projectAgents.recruitment.hr`)),1),m(`dd`,null,S(e.hrAgentId||p(d)(`projectAgents.notReported`)),1)]),m(`div`,null,[m(`dt`,null,S(p(d)(`projectAgents.recruitment.trigger`)),1),m(`dd`,null,S(Pt(e.triggerSourceApplication)),1)]),m(`div`,null,[m(`dt`,null,S(p(d)(`projectAgents.recruitment.reason`)),1),m(`dd`,null,S(e.reason||e.reasonCode||p(d)(`projectAgents.notReported`)),1)]),m(`div`,null,[m(`dt`,null,S(p(d)(`projectAgents.recruitment.time`)),1),m(`dd`,null,S(ht(e.fulfilledAt||e.createdAt)),1)])]),m(`small`,null,S(p(d)(`projectAgents.recruitment.testSource`))+` · `+S(e.testSource||p(d)(`projectAgents.notReported`)),1)]))),128))])):(g(),O(`p`,Xn,S(p(d)(`projectAgents.recruitment.empty`)),1))])]),_:1},16)]),m(`section`,Zn,[m(`h4`,null,S(p(d)(`projectAgents.fields.responsibility`)),1),m(`p`,null,S(G.value.profile.responsibility||p(d)(`projectAgents.notReported`)),1),G.value.profile.capabilities.length?(g(),O(`div`,Qn,[(g(!0),O(y,null,a(G.value.profile.capabilities,e=>(g(),O(`span`,{key:e},S(e),1))),128))])):E(``,!0)]),m(`div`,$n,[c(it,r(q(`assignments`),{onRetry:K}),{default:k(()=>[m(`section`,er,[m(`div`,tr,[m(`h4`,null,S(p(d)(`projectAgents.sections.assignments`)),1),m(`div`,nr,[m(`span`,null,S(J(G.value).length),1),m(`button`,{class:`quiet-button`,type:`button`,onClick:n[6]||=e=>rt(G.value)},S(p(d)(`projectAgents.assignmentDialog.assign`)),1)])]),J(G.value).length?(g(),O(`div`,rr,[(g(!0),O(y,null,a(J(G.value),e=>(g(),O(`article`,{key:e.assignmentId,class:`project-agent-assignment-card`},[m(`header`,null,[m(`strong`,null,S(Xe(e.personalProjectId)),1),m(`div`,ir,[m(`i`,{class:w(`is-${e.status}`)},S(p(d)(`projectAgents.assignmentStatus.${e.status}`)),3),e.status===`active`?(g(),O(`button`,{key:0,class:`quiet-button`,type:`button`,onClick:t=>rt(G.value,e,`end`)},S(p(d)(`projectAgents.assignmentDialog.end`)),9,ar)):E(``,!0),e.status===`active`?(g(),O(`button`,{key:1,class:`quiet-button`,type:`button`,onClick:t=>rt(G.value,e,`replace`)},S(p(d)(`projectAgents.assignmentDialog.replace`)),9,or)):E(``,!0)])]),m(`p`,null,S(e.responsibility||p(d)(`projectAgents.notReported`)),1),e.scope?(g(),O(`small`,sr,S(p(d)(`projectAgents.fields.scope`))+` · `+S(e.scope),1)):E(``,!0),m(`small`,null,S(ht(e.assignedAt))+` → `+S(e.endedAt?ht(e.endedAt):p(d)(`projectAgents.assignmentStatus.active`)),1),e.workKinds?.length?(g(),O(`div`,cr,[(g(!0),O(y,null,a(e.workKinds,e=>(g(),O(`span`,{key:e},S(e),1))),128))])):E(``,!0),m(`div`,lr,[m(`span`,null,S(p(d)(`projectAgents.fields.assignmentModel`)),1),m(`strong`,null,S(xt(e.modelStrategyOverride))+` · `+S(St(e.executorPolicyOverride)),1),Ct(e.executorPolicyOverride)&&!wt(e.executorPolicyOverride).length?(g(),O(`small`,ur,S(p(d)(`projectAgents.strategy.lockedUnavailable`)),1)):E(``,!0)]),wt(e.executorPolicyOverride).length?(g(),O(`div`,dr,[(g(!0),O(y,null,a(wt(e.executorPolicyOverride),e=>(g(),O(`span`,{key:e.executorId},S(e.label||e.executorId),1))),128))])):E(``,!0),e.reason?(g(),O(`small`,fr,S(p(d)(`projectAgents.fields.reason`))+` · `+S(e.reason),1)):E(``,!0)]))),128))])):(g(),O(`p`,pr,S(p(d)(`projectAgents.detail.noAssignments`)),1))])]),_:1},16)]),m(`div`,mr,[c(it,r(q(`executors`),{onRetry:K}),{default:k(()=>[m(`section`,hr,[m(`div`,gr,[m(`h4`,null,S(p(d)(`projectAgents.sections.strategy`)),1),m(`span`,null,S(xt(G.value.profile.defaultModelStrategy))+` · `+S(St(G.value.profile.executorPolicy)),1)]),m(`p`,_r,S(p(d)(`projectAgents.strategy.providerNeutral`)),1),wt(G.value.profile.executorPolicy).length?(g(),O(`div`,vr,[(g(!0),O(y,null,a(wt(G.value.profile.executorPolicy),e=>(g(),O(`span`,{key:e.executorId},S(e.label||e.executorId),1))),128))])):Ct(G.value.profile.executorPolicy)?(g(),O(`p`,yr,S(p(d)(`projectAgents.strategy.lockedUnavailable`)),1)):(g(),O(`p`,br,S(p(d)(`projectAgents.strategy.noAllowList`)),1)),m(`div`,xr,[m(`button`,{class:`quiet-button`,type:`button`,onClick:n[7]||=e=>Be()},S(p(d)(`projectAgents.routing.addExecutor`)),1)]),G.value.executorDirectory?.length?(g(),O(`div`,Sr,[(g(!0),O(y,null,a(G.value.executorDirectory,e=>(g(),O(`div`,{key:e.executorId,class:`project-agent-executor-row`},[m(`strong`,null,S(e.displayName||e.label||e.executorId),1),m(`span`,null,S(e.provider||p(d)(`projectAgents.notReported`))+` / `+S(e.model||p(d)(`projectAgents.notReported`)),1),m(`span`,null,S(e.globalPriority??p(d)(`projectAgents.notReported`)),1),m(`small`,null,S(e.registrationStatus||p(d)(`projectAgents.notReported`))+` · `+S(e.permissionStatus||p(d)(`projectAgents.notReported`))+` · `+S(e.preflightStatus||p(d)(`projectAgents.strategy.availabilityUnreported`))+` · `+S(e.healthStatus||p(d)(`projectAgents.notReported`)),1),m(`button`,{class:`quiet-button`,type:`button`,onClick:t=>Be(e)},S(p(d)(`projectAgents.routing.editExecutor`)),9,Cr),e.permissionStatus===`authorized`?(g(),O(`button`,{key:1,class:`quiet-button`,type:`button`,disabled:!!oe.value,onClick:t=>ze(e,`revoked`)},S(p(d)(`projectAgents.routing.revoke`)),9,Tr)):(g(),O(`button`,{key:0,class:`quiet-button`,type:`button`,disabled:!!oe.value,onClick:t=>ze(e,`authorized`)},S(p(d)(`projectAgents.routing.authorize`)),9,wr))]))),128))])):E(``,!0)])]),_:1},16)]),m(`div`,Er,[c(it,r(q(`tasks`),{onRetry:K}),{default:k(()=>[m(`section`,Dr,[m(`div`,Or,[m(`h4`,null,S(p(d)(`projectAgents.sections.tasks`)),1),m(`span`,null,S(G.value.tasks?.length??0),1)]),G.value.tasks?.length?(g(),O(`div`,kr,[(g(!0),O(y,null,a(G.value.tasks,e=>(g(),O(`article`,{key:e.taskId,class:`project-agent-task-card`},[m(`header`,null,[m(`div`,null,[m(`strong`,null,S(e.title),1),m(`small`,null,S(e.taskId)+` · `+S(Xe(e.personalProjectId)),1)]),m(`i`,{class:w(`is-${e.status}`)},S(Mt(e.status)),3)]),e.resultSummary||e.failureReason?(g(),O(`p`,Ar,S(e.resultSummary||e.failureReason),1)):E(``,!0),m(`small`,null,S(p(d)(`projectAgents.fields.collaborators`))+` · `+S(e.participants.length),1),e.participants.length?(g(),O(`div`,jr,[(g(!0),O(y,null,a(e.participants,t=>(g(),O(`span`,{key:`${e.taskId}:${t.agentId}`},S(t.agentId)+` · `+S(t.role),1))),128))])):E(``,!0),e.executionSummary===void 0?E(``,!0):(g(),O(`section`,{key:2,class:`project-agent-execution-summary`,"aria-label":p(d)(`projectAgents.fields.executionSummary`)},[m(`div`,Nr,[m(`h5`,null,S(p(d)(`projectAgents.fields.executionSummary`)),1),m(`span`,null,S(e.executionSummary.length),1)]),e.executionSummary.length?(g(),O(`ul`,Pr,[(g(!0),O(y,null,a(e.executionSummary,(t,n)=>(g(),O(`li`,{key:`${e.taskId}:execution:${t.workerId||t.agentId||n}`,class:`project-agent-execution-summary-row`},[m(`header`,null,[m(`strong`,null,[kt(t)?(g(),O(`span`,{key:0,class:`project-agent-occupation-emoji`,role:`img`,"aria-label":`${p(d)(`projectAgents.fields.occupationEmoji`)}: ${kt(t)}`},S(kt(t)),9,Fr)):E(``,!0),D(S(Ot(t)),1),t.agentId||t.workerId?(g(),O(`small`,Ir,S(t.workerId||t.agentId),1)):E(``,!0)]),t.status?(g(),O(`i`,{key:0,class:w(`is-${t.status}`)},S(At(t.status)),3)):E(``,!0)]),m(`dl`,Lr,[m(`div`,null,[m(`dt`,null,S(p(d)(`projectAgents.fields.executionEnvironment`)),1),m(`dd`,null,[D(S(t.executor||p(d)(`projectAgents.notReported`)),1),t.executorId&&t.executorId!==t.executor?(g(),O(`small`,Rr,S(p(d)(`projectAgents.fields.executorId`))+` · `+S(t.executorId),1)):E(``,!0)])]),m(`div`,null,[m(`dt`,null,S(p(d)(`projectAgents.fields.participantRole`)),1),m(`dd`,null,S(t.participantRole||p(d)(`projectAgents.notReported`)),1)]),m(`div`,null,[m(`dt`,null,S(p(d)(`projectAgents.fields.sourceApplication`)),1),m(`dd`,null,S(Pt(t.sourceApplication)),1)]),t.actualModelProvider||t.actualModel?(g(),O(`div`,zr,[m(`dt`,null,S(p(d)(`projectAgents.fields.actualModel`)),1),m(`dd`,null,[t.actualModelProvider?(g(),O(`span`,Br,S(t.actualModelProvider),1)):E(``,!0),t.actualModelProvider&&t.actualModel?(g(),O(`span`,Vr,` · `)):E(``,!0),t.actualModel?(g(),O(`span`,Hr,S(t.actualModel),1)):E(``,!0)])])):E(``,!0),m(`div`,null,[m(`dt`,null,S(p(d)(`projectAgents.fields.workSummary`)),1),m(`dd`,null,S(t.workSummary||p(d)(`projectAgents.notReported`)),1)]),m(`div`,null,[m(`dt`,null,S(p(d)(`projectAgents.fields.terminalStatus`)),1),m(`dd`,null,S(At(t.status)),1)])])]))),128))])):(g(),O(`p`,Ur,S(p(d)(`projectAgents.detail.noExecutionSummary`)),1))],8,Mr)),p(vt)(e).length?(g(),O(`section`,{key:3,class:`project-agent-worker-event-evidence`,"aria-label":p(d)(`projectAgents.fields.workerEventEvidence`)},[m(`div`,Gr,[m(`h5`,null,S(p(d)(`projectAgents.fields.workerEventEvidence`)),1),m(`span`,null,S(p(vt)(e).length),1)]),m(`ul`,Kr,[(g(!0),O(y,null,a(p(vt)(e),t=>(g(),O(`li`,{key:`${e.taskId}:worker-event:${t.eventId}`,class:`project-agent-execution-summary-row`},[m(`header`,null,[m(`strong`,null,[Et(t)?(g(),O(`span`,{key:0,class:`project-agent-occupation-emoji`,role:`img`,"aria-label":`${p(d)(`projectAgents.fields.occupationEmoji`)}: ${Et(t)}`},S(Et(t)),9,qr)):E(``,!0),D(S(Tt(t)),1),t.agentId?(g(),O(`small`,Jr,S(p(d)(`projectAgents.fields.agentId`))+` · `+S(t.agentId),1)):E(``,!0)]),m(`i`,{class:w(`is-${t.workerStatus||t.status}`)},S(Dt(t)),3)]),m(`dl`,Yr,[m(`div`,null,[m(`dt`,null,S(p(d)(`projectAgents.fields.workSummary`)),1),m(`dd`,null,S(t.summary||p(d)(`projectAgents.notReported`)),1)]),m(`div`,null,[m(`dt`,null,S(p(d)(`projectAgents.fields.sourceApplication`)),1),m(`dd`,null,S(Pt(t.sourceApplication)),1)]),t.actualModelProvider||t.actualModel?(g(),O(`div`,Xr,[m(`dt`,null,S(p(d)(`projectAgents.fields.actualModel`)),1),m(`dd`,null,[t.actualModelProvider?(g(),O(`span`,Zr,S(t.actualModelProvider),1)):E(``,!0),t.actualModelProvider&&t.actualModel?(g(),O(`span`,Qr,` · `)):E(``,!0),t.actualModel?(g(),O(`span`,$r,S(t.actualModel),1)):E(``,!0)])])):E(``,!0),m(`div`,null,[m(`dt`,null,S(p(d)(`projectAgents.fields.reportedAt`)),1),m(`dd`,null,S(ht(t.createdAt)),1)])])]))),128))])],8,Wr)):E(``,!0),e.effectiveModelStrategy?(g(),O(`small`,ei,S(p(d)(`projectAgents.fields.strategySource`))+` · `+S(e.modelStrategySource||p(d)(`projectAgents.notReported`))+` · `+S(xt(e.effectiveModelStrategy))+` · `+S(St(e.effectiveExecutorPolicy)),1)):E(``,!0),e.routingDecision?(g(),O(`div`,ti,[m(`div`,ni,[m(`span`,null,S(p(d)(`projectAgents.fields.reportedStaffingDecision`)),1),m(`strong`,null,S(e.routingDecision.outcome||p(d)(`projectAgents.notReported`)),1)]),e.routingDecision.coordinatorAgentId||e.coordinatorAgentId?(g(),O(`small`,ri,S(p(d)(`projectAgents.fields.coordinator`))+` · `+S(e.routingDecision.coordinatorAgentId||e.coordinatorAgentId),1)):E(``,!0),m(`small`,null,S(p(d)(`projectAgents.fields.matchBasis`))+` · `+S(e.routingDecision.matchBasis?.join(` · `)||p(d)(`projectAgents.notReported`))+` · `+S(e.routingDecision.reason||p(d)(`projectAgents.notReported`)),1),e.routingDecision.candidateAgentIds?.length?(g(),O(`small`,ii,S(p(d)(`projectAgents.fields.candidateAgents`))+` · `+S(e.routingDecision.candidateAgentIds.join(` · `)),1)):E(``,!0),e.routingDecision.complexity!==null&&e.routingDecision.complexity!==void 0?(g(),O(`small`,ai,[D(S(p(d)(`projectAgents.fields.complexity`))+` · `+S(e.routingDecision.complexity),1),e.routingDecision.complexityBasis?.length?(g(),O(`span`,oi,` · `+S(e.routingDecision.complexityBasis.join(` · `)),1)):E(``,!0)])):E(``,!0),p(yt)(e.routingDecision.parallelPlan)?(g(),O(`small`,si,[D(S(p(d)(`projectAgents.fields.parallelPlan`))+` · `+S(e.routingDecision.parallelPlan?.reason||p(d)(`projectAgents.notReported`)),1),e.routingDecision.parallelPlan?.workstreamBoundaries?.length?(g(),O(`span`,ci,` · `+S(e.routingDecision.parallelPlan.workstreamBoundaries.join(` · `)),1)):E(``,!0)])):E(``,!0),e.routingDecision.ruleId||e.routingDecision.fallback?(g(),O(`small`,li,S(e.routingDecision.ruleId||p(d)(`projectAgents.notReported`))+` · `+S(e.routingDecision.fallback||p(d)(`projectAgents.notReported`)),1)):E(``,!0)])):E(``,!0),m(`div`,ui,[m(`span`,null,S(p(d)(`projectAgents.fields.actualExecution`)),1),$(e)?(g(),O(`strong`,di,S($(e)?.executor||$(e)?.provider||p(d)(`projectAgents.notReported`))+` / `+S($(e)?.model||p(d)(`projectAgents.notReported`))+` / `+S(Pt($(e)?.client)),1)):(g(),O(`span`,fi,S(p(d)(`projectAgents.detail.notReportedActualExecution`)),1)),$(e)?.rule||$(e)?.fallback?(g(),O(`small`,pi,S($(e)?.rule||p(d)(`projectAgents.notReported`))+` · `+S($(e)?.fallback||p(d)(`projectAgents.notReported`)),1)):E(``,!0)]),e.runId?(g(),O(`small`,mi,S(p(d)(`projectAgents.fields.run`))+` · `+S(e.runId),1)):(g(),O(`small`,hi,S(p(d)(`projectAgents.detail.noRun`)),1))]))),128))])):(g(),O(`p`,gi,S(p(d)(`projectAgents.detail.noTasks`)),1))])]),_:1},16)]),m(`div`,_i,[c(it,r(q(`activity`),{onRetry:K}),{default:k(()=>[m(`section`,vi,[m(`div`,yi,[m(`h4`,null,S(p(d)(`projectAgents.sections.activity`)),1),Te.value?(g(),O(`span`,bi,S(Te.value.days.length),1)):E(``,!0)]),Te.value?.days.length?(g(),O(`div`,xi,[m(`div`,{class:`project-agent-heatmap`,role:`list`,"aria-label":p(d)(`projectAgents.activity.aria`)},[(g(!0),O(y,null,a(Te.value.days,e=>(g(),O(`button`,{key:e.date,type:`button`,role:`listitem`,class:w([`project-agent-heat-cell`,`intensity-${Ht(e,Te.value)}`,{selected:H.value===e.date}]),"aria-label":`${gt(e.date)} · ${e.total}`,"aria-pressed":H.value===e.date,onClick:t=>Ut(e)},[m(`span`,wi,S(gt(e.date))+` · `+S(e.total),1)],10,Ci))),128))],8,Si),Ee.value?(g(),O(`article`,Ti,[m(`header`,null,[m(`strong`,null,S(gt(Ee.value.date)),1),m(`span`,null,S(Ee.value.total),1)]),Ee.value.tasks?.length?(g(),O(`ul`,Di,[(g(!0),O(y,null,a(Ee.value.tasks,e=>(g(),O(`li`,{key:e.taskId},[m(`strong`,null,S(e.title),1),m(`span`,null,S(Mt(e.status))+` · `+S(Xe(e.personalProjectId)),1),m(`small`,null,S(e.summary||p(d)(`projectAgents.notReported`)),1)]))),128))])):(g(),O(`p`,Ei,S(p(d)(`projectAgents.activity.noTasks`)),1))])):E(``,!0)])):(g(),O(`p`,Oi,S(p(d)(`projectAgents.activity.empty`)),1))])]),_:1},16)]),m(`div`,ki,[c(it,r(q(`executors`),{onRetry:K}),{default:k(()=>[m(`section`,Ai,[m(`div`,ji,[m(`h4`,null,S(p(d)(`projectAgents.sections.clients`)),1),m(`span`,null,S(Ft(G.value).length),1)]),Ft(G.value).length?(g(),O(`div`,Mi,[(g(!0),O(y,null,a(Ft(G.value),e=>(g(),O(`div`,{key:e,class:`project-agent-client-row`},[m(`strong`,null,S(Pt(e)),1),m(`span`,null,S(It(G.value,e)?.allowed||G.value.profile.allowedClients?.includes(e)?p(d)(`projectAgents.clients.allowed`):p(d)(`projectAgents.clients.notAllowed`)),1),Lt(G.value,e)?(g(),O(`span`,Ni,S(p(d)(`projectAgents.clients.observed`,{count:Lt(G.value,e)})),1)):G.value.observedClients?.includes(e)?(g(),O(`span`,Pi,S(p(d)(`projectAgents.clients.observedAny`)),1)):(g(),O(`span`,Fi,S(p(d)(`projectAgents.clients.unreported`)),1)),m(`small`,null,S(It(G.value,e)?.integrationStatus||p(d)(`projectAgents.clients.integrationUnreported`)),1)]))),128))])):(g(),O(`p`,Ii,S(p(d)(`projectAgents.clients.empty`)),1))])]),_:1},16)]),m(`div`,Li,[c(it,r(q(`routingRules`),{onRetry:K}),{default:k(()=>[m(`section`,Ri,[m(`div`,zi,[m(`h4`,null,S(p(d)(`projectAgents.sections.routing`)),1),m(`div`,Bi,[m(`span`,null,S(G.value.routingRules?.length??0),1),m(`button`,{class:`quiet-button`,type:`button`,onClick:n[8]||=e=>Ve()},S(p(d)(`projectAgents.routing.addRule`)),1)])]),G.value.routingRules?.length?(g(),O(`div`,Vi,[(g(!0),O(y,null,a(G.value.routingRules,e=>(g(),O(`div`,{key:e.ruleId,class:`project-agent-rule-row`},[m(`strong`,null,S(e.scope)+` · `+S(e.priority),1),m(`span`,null,S(e.workKind||e.reason||p(d)(`projectAgents.notReported`))+` · `+S(e.executorIds?.join(`, `)||p(d)(`projectAgents.notReported`)),1),e.enabled?(g(),O(`button`,{key:0,class:`quiet-button`,type:`button`,disabled:!!U.value,onClick:t=>qe(e)},S(p(d)(`projectAgents.routing.disable`)),9,Hi)):E(``,!0)]))),128))])):(g(),O(`p`,Ui,S(p(d)(`projectAgents.routing.empty`)),1)),m(`small`,Wi,S(p(d)(`projectAgents.routing.priorityNote`)),1)])]),_:1},16)]),m(`div`,Gi,[c(it,r(q(`learning`),{onRetry:K}),{default:k(()=>[m(`section`,Ki,[m(`div`,qi,[m(`h4`,null,S(p(d)(`projectAgents.sections.learning`)),1),m(`span`,null,S(De.value.length),1)]),De.value.length?(g(),O(`div`,Ji,[(g(!0),O(y,null,a(De.value,([e,n])=>(g(),O(`article`,{key:e,class:`project-agent-learning-card`},[m(`header`,null,[m(`strong`,null,S(e),1),m(`i`,null,S(zt(n)),1)]),n.personalProjectId||n.workKind||n.executor||n.modelStrategy?(g(),O(`small`,Yi,S(Xe(n.personalProjectId))+` · `+S(n.workKind||p(d)(`projectAgents.notReported`))+` · `+S(n.executor||p(d)(`projectAgents.notReported`))+` / `+S(n.modelStrategy?xt(n.modelStrategy):p(d)(`projectAgents.notReported`)),1)):E(``,!0),m(`p`,null,S(p(d)(`projectAgents.learning.samples`,{count:n.sampleCount}))+` · `+S(p(d)(`projectAgents.learning.recent`,{count:Bt(n)})),1),m(`small`,null,S(n.decayBasis||p(d)(`projectAgents.learning.decayUnreported`))+` · `+S(ht(n.updatedAt)),1),n.outcomes?(g(),O(`div`,Xi,[(g(!0),O(y,null,a(n.outcomes,(e,n)=>t((g(),O(`span`,{key:n},S(n)+` · `+S(e??p(d)(`projectAgents.notReported`)),1)),[[f,e!==void 0]])),128)),n.score!==null&&n.score!==void 0?(g(),O(`span`,Zi,S(p(d)(`projectAgents.learning.score`,{score:Vt(n)})),1)):E(``,!0)])):E(``,!0),n.evidence?.length?(g(),O(`ul`,Qi,[(g(!0),O(y,null,a(n.evidence,e=>(g(),O(`li`,{key:`${e.evidenceId}:${e.kind}:${e.occurredAt}`},[m(`span`,null,S(e.kind)+` · `+S(e.count??0)+` · `+S(e.summary||p(d)(`projectAgents.notReported`)),1),e.evidenceId?(g(),O(`button`,{key:0,class:`quiet-button`,type:`button`,disabled:ae.value===e.evidenceId,onClick:t=>Le(n,`ignore`,e.evidenceId)},S(p(d)(`projectAgents.learning.ignore`)),9,$i)):E(``,!0)]))),128))])):E(``,!0),n.learningKey?(g(),O(`div`,ea,[m(`button`,{class:`quiet-button`,type:`button`,disabled:ae.value===n.learningKey||!n.personalProjectId||!n.workKind||!n.executor,onClick:e=>Le(n,`reset`)},S(p(d)(`projectAgents.learning.reset`)),9,ta)])):E(``,!0)]))),128))])):(g(),O(`p`,na,S(p(d)(`projectAgents.learning.empty`)),1)),m(`small`,ra,S(p(d)(`projectAgents.learning.note`)),1)])]),_:1},16)]),m(`section`,ia,[m(`h4`,null,S(p(d)(`projectAgents.sections.memory`)),1),m(`p`,null,S(G.value.memoryScope??p(d)(`projectAgents.notReported`)),1),m(`small`,null,S(p(d)(`projectAgents.detail.memoryNote`)),1)])],8,An)):(g(),O(`div`,aa,S(p(d)(`projectAgents.detail.choose`)),1))])):(g(),O(`div`,_n,[m(`strong`,null,S(p(d)(`projectAgents.noMatchTitle`)),1),m(`p`,null,S(p(d)(`projectAgents.noMatchCopy`)),1)])):(g(),O(`div`,hn,[m(`strong`,null,S(p(d)(`projectAgents.emptyTitle`)),1),m(`p`,null,S(p(d)(`projectAgents.emptyCopy`)),1),m(`button`,{class:`project-agent-add`,type:`button`,disabled:!W.value,onClick:$e},S(p(d)(`projectAgents.add`)),9,gn)])),c(en,{open:re.value,agent:I.value,projects:he.value,"default-project-id":we.value,"personal-space-id":W.value,onClose:nt,onSaved:mt},null,8,[`open`,`agent`,`projects`,`default-project-id`,`personal-space-id`]),c(ge,{open:L.value,agent:I.value,assignment:R.value,action:ie.value,projects:he.value,"available-agents":_.value,"default-project-id":we.value,onClose:st,onSaved:ft,onChanged:pt},null,8,[`open`,`agent`,`assignment`,`action`,`projects`,`available-agents`,`default-project-id`]),c(We,{open:se.value,mode:ce.value,"personal-space-id":W.value,executor:le.value,rule:ue.value,projects:he.value,"available-executors":G.value?.executorDirectory??[],onClose:He,onSaved:Ke},null,8,[`open`,`mode`,`personal-space-id`,`executor`,`rule`,`projects`,`available-executors`])],8,tn))}}),[[`__scopeId`,`data-v-5eac051f`]]);export{oa as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{B as e,C as t,N as n,S as r,Y as i,a,et as o,g as s,h as c,j as l,m as u,n as ee,p as te,rt as d,tt as ne,u as re,v as f,x as p,y as m}from"./i18n-js6gfc7j.js";import{a as h,n as g,r as _,t as ie}from"./console-BT1P2Db4.js";import{h as ae}from"./useApi-CROJJdhE-BdSti7Y2.js";import{t as oe}from"./paths-CDREouhi.js";import{t as v}from"./SearchableSelect-D3HM8YF8.js";import{r as y,t as b}from"./identity-CfDfanpa.js";var se={class:`view`},ce={class:`space-heading public-space-heading`},le=[`aria-label`],ue={class:`project-grid`},de={class:`project-card-heading`},fe={class:`project-card-heading-actions`},pe=[`onClick`],me={class:`completion-badge`},he={class:`project-purpose`},ge={class:`evidence-row`},_e={key:0,class:`muted`},ve={class:`project-access`},ye={class:`muted`},be={key:0,class:`project-release-meta`},xe={class:`project-card-footer`},Se=[`onClick`],x=[`onClick`],S={key:0,class:`empty-state project-empty`},C={class:`project-section`},w={class:`section-toolbar compact-toolbar relation-section-toolbar`},T=[`disabled`],E={class:`compact-relation-preview`,"aria-live":`polite`},D={key:0},O={key:1},k={class:`primary-action`,type:`submit`},A=[`open`],j={key:0,class:`project-dialog-shell`},Ce={class:`project-dialog-header`},we={class:`project-latest-release`},Te={key:0},Ee={key:1,class:`muted`},De={class:`project-detail-columns`},Oe={key:0,class:`muted`},ke={key:1,class:`muted`},Ae={key:0,class:`muted`},je={class:`project-dialog-actions`},Me=[`open`],Ne={key:0,class:`project-dialog-shell`},Pe={class:`project-dialog-header`},Fe=[`disabled`],Ie={class:`project-delete-confirmation`},Le=[`disabled`],Re={key:0,class:`publish-dialog-error`,role:`alert`},ze={class:`project-dialog-actions`},Be=[`disabled`],M=t({__name:`PublicProjectsPage`,setup(t){let M=ie(),Ve=ae(),N=i(null),P=i([]),F=i([]),I=i(!1),L=i(!1),R=i(``),z=i(``),B=i(`RELATED_TO`),V=i(null),H=i(``),U=i(!1),W=i(``),G=c(()=>M.state?.projects??[]),K=c(()=>new Set((M.state?.subscriptions??[]).map(({provider_url:e,project_id:t})=>`${e}::${t}`))),q=c(()=>G.value.filter(({role:e,isOwner:t})=>e===`maintainer`||t)),He=c(()=>q.value.map(e=>({value:e.id,label:e.name,meta:`#${b(e.id,26)}`,search:y(e.id)}))),Ue=c(()=>{let e=G.value.find(({id:e})=>e===R.value);return G.value.filter(({id:t,providerUrl:n})=>t!==e?.id&&n===e?.providerUrl)}),We=c(()=>Ue.value.map(e=>({value:e.id,label:e.name,meta:`#${b(e.id,26)}`,search:y(e.id)}))),Ge=c(()=>G.value.find(({id:e})=>e===R.value)??null),Ke=c(()=>G.value.find(({id:e})=>e===z.value)??null),J=c(()=>X.value.find(({value:e})=>e===B.value)?.label??a(`pages.publicProjects.relationLabels.relatedTo`)),Y=c(()=>!!(V.value&&H.value===V.value.name)),X=c(()=>[{value:`PART_OF`,label:a(`pages.publicProjects.relationLabels.partOf`)},{value:`USES_KNOWLEDGE_FROM`,label:a(`pages.publicProjects.relationLabels.usesKnowledgeFrom`)},{value:`DEPENDS_ON`,label:a(`pages.publicProjects.relationLabels.dependsOn`)},{value:`PROVIDES_TO`,label:a(`pages.publicProjects.relationLabels.providesTo`)},{value:`SHARES_CAPABILITY_WITH`,label:a(`pages.publicProjects.relationLabels.sharesCapabilityWith`)},{value:`SUCCESSOR_OF`,label:a(`pages.publicProjects.relationLabels.successorOf`)},{value:`RELATED_TO`,label:a(`pages.publicProjects.relationLabels.relatedTo`)}]);function Z(e){return`${e.providerUrl}::${e.id}`}function Q(e){return e.profile?.purpose||e.profile?.scope||e.profile?.technical_summary||e.description||a(`pages.publicProjects.fallbackDescription`)}async function qe(e){try{if(K.value.has(Z(e))){let t=new URLSearchParams({personalSpaceId:M.activePersonalSpace?.id??``,providerUrl:e.providerUrl});await g(`/api/subscriptions/${encodeURIComponent(e.id)}?${t}`),M.notify(a(`pages.publicProjects.unsubscribed`,{name:e.name}))}else await h(`/api/subscriptions`,{personalSpaceId:M.activePersonalSpace?.id,projectId:e.id,providerUrl:e.providerUrl,projectName:e.name}),M.notify(a(`pages.publicProjects.subscribed`,{name:e.name}));await M.refresh()}catch(e){M.reportError(e)}}async function Je(e){N.value=e,P.value=[],F.value=[],I.value=!0;try{let t=new URLSearchParams({providerUrl:e.providerUrl}),[n,r]=await Promise.all([_(`/api/projects/${encodeURIComponent(e.id)}/releases?${t}`),_(`/api/project-relations?${new URLSearchParams({projectId:e.id,providerUrl:e.providerUrl})}`)]);P.value=n.releases??[],F.value=r.relations??[]}catch(e){M.reportError(e)}finally{I.value=!1}}async function Ye(e){N.value=null,await Ve.push(oe(`public`,e.id,`graph`))}function Xe(e){V.value=e,H.value=``,W.value=``}function Ze(){U.value||(V.value=null,H.value=``,W.value=``)}async function Qe(){let e=V.value;if(!e||!Y.value){W.value=a(`pages.publicProjects.deleteNameRequired`);return}U.value=!0,W.value=``;try{let t=new URLSearchParams({providerUrl:e.providerUrl});await g(`/api/projects/${encodeURIComponent(e.id)}?${t}`),N.value=null,V.value=null,M.notify(a(`pages.publicProjects.deleted`,{name:e.name})),await M.refresh()}catch(e){W.value=e instanceof Error?e.message:a(`pages.publicProjects.deleteFailed`),M.reportError(e)}finally{U.value=!1}}async function $e(){let e=G.value.find(({id:e})=>e===R.value),t=G.value.find(({id:e})=>e===z.value);if(!e||!t){M.reportError(Error(a(`pages.publicProjects.chooseRelationProjects`)));return}try{await h(`/api/project-relations`,{sourceProjectId:e.id,targetProjectId:t.id,providerUrl:e.providerUrl,relationType:B.value,note:null}),L.value=!1,R.value=``,z.value=``,M.notify(B.value===`PART_OF`?a(`pages.publicProjects.parentRelationSubmitted`):a(`pages.publicProjects.relationCreated`))}catch(e){M.reportError(e)}}function $(e){return e?new Date(e).toLocaleString(ee()):a(`pages.publicProjects.timeNotRecorded`)}return(t,i)=>(l(),m(`section`,se,[s(`div`,ce,[i[8]||=s(`span`,{class:`space-heading-icon`,"aria-hidden":`true`},[s(`span`,{class:`nav-icon nav-icon-public-project`})],-1),s(`div`,null,[s(`p`,null,d(o(a)(`pages.publicProjects.intro`)),1)]),s(`div`,{class:`public-space-stats`,"aria-label":o(a)(`pages.publicProjects.overviewAria`)},[s(`span`,null,[s(`strong`,null,d(G.value.length),1),p(d(o(a)(`pages.publicProjects.discoverable`)),1)]),s(`span`,null,[s(`strong`,null,d(o(M).state?.subscriptions.length??0),1),p(d(o(a)(`pages.publicProjects.subscribedCount`)),1)])],8,le)]),s(`div`,ue,[(l(!0),m(u,null,n(G.value,e=>(l(),m(`article`,{key:Z(e),class:`project-card`},[s(`div`,de,[s(`div`,null,[i[9]||=s(`p`,{class:`eyebrow`},`PUBLIC PROJECT`,-1),s(`h4`,null,d(e.name),1)]),s(`div`,fe,[e.can_manage?(l(),m(`button`,{key:0,class:`management-action`,type:`button`,onClick:t=>Xe(e)},d(o(a)(`pages.publicProjects.manage`)),9,pe)):f(``,!0),s(`div`,me,[s(`strong`,null,d(e.profile?.assessment?.score??`—`),1),s(`span`,null,d(e.profile?.assessment?o(a)(`pages.publicProjects.coverage`):o(a)(`pages.publicProjects.noSummary`)),1)])])]),s(`p`,he,d(Q(e)),1),s(`div`,ge,[(l(!0),m(u,null,n(e.profile?.sources??[],(e,t)=>(l(),m(`span`,{key:t,class:`status-chip`},d(e.kind??o(a)(`pages.publicProjects.material`)),1))),128)),e.profile?.sources?.length?f(``,!0):(l(),m(`span`,_e,d(o(a)(`pages.publicProjects.noSources`)),1))]),s(`div`,ve,[s(`span`,{class:ne([`status-chip`,{owner:e.isOwner}])},d(e.isOwner?`Owner`:e.role??`Reader`),3),s(`span`,ye,d(e.isOwner?o(a)(`pages.publicProjects.publishedByYou`):o(a)(`pages.publicProjects.publiclyDiscoverable`)),1),e.current_release?(l(),m(`span`,be,[s(`strong`,null,d(e.current_release.version),1),s(`span`,null,d($(e.current_release.published_at)),1)])):f(``,!0)]),s(`footer`,xe,[s(`button`,{class:`secondary-action`,type:`button`,onClick:t=>qe(e)},d(K.value.has(Z(e))?o(a)(`pages.publicProjects.unsubscribe`):o(a)(`pages.publicProjects.subscribe`)),9,Se),s(`button`,{class:`primary-action`,type:`button`,onClick:t=>Je(e)},d(o(a)(`common.actions.viewDetails`)),9,x)])]))),128)),G.value.length?f(``,!0):(l(),m(`div`,S,d(o(a)(`pages.publicProjects.noProjects`)),1))]),s(`section`,C,[s(`div`,w,[s(`div`,null,[i[10]||=s(`p`,{class:`eyebrow`},`PROJECT RELATIONS`,-1),s(`h3`,null,d(o(a)(`pages.publicProjects.relationsTitle`)),1),s(`p`,null,d(o(a)(`pages.publicProjects.relationsCopy`)),1)]),s(`button`,{class:`primary-action`,type:`button`,disabled:!q.value.length,onClick:i[0]||=e=>L.value=!L.value},d(o(a)(`pages.publicProjects.addRelation`)),9,T)]),L.value?(l(),m(`form`,{key:0,class:`relation-composer relation-composer-form compact-relation-form`,onSubmit:te($e,[`prevent`])},[s(`label`,null,[p(d(o(a)(`pages.publicProjects.sourceProject`))+` `,1),r(v,{modelValue:R.value,"onUpdate:modelValue":i[1]||=e=>R.value=e,options:He.value,label:o(a)(`pages.publicProjects.sourceProjectLabel`),placeholder:o(a)(`pages.publicProjects.chooseProject`),searchable:``,required:``,onChange:i[2]||=e=>z.value=``},null,8,[`modelValue`,`options`,`label`,`placeholder`])]),s(`label`,null,[p(d(o(a)(`pages.publicProjects.relation`))+` `,1),r(v,{modelValue:B.value,"onUpdate:modelValue":i[3]||=e=>B.value=e,options:X.value,label:o(a)(`pages.publicProjects.relationTypeLabel`)},null,8,[`modelValue`,`options`,`label`])]),s(`label`,null,[p(d(o(a)(`pages.publicProjects.targetProject`))+` `,1),r(v,{modelValue:z.value,"onUpdate:modelValue":i[4]||=e=>z.value=e,options:We.value,label:o(a)(`pages.publicProjects.targetProjectLabel`),placeholder:o(a)(`pages.publicProjects.chooseProject`),searchable:``,required:``},null,8,[`modelValue`,`options`,`label`,`placeholder`])]),s(`div`,E,[s(`span`,null,d(o(a)(`pages.publicProjects.preview`)),1),s(`strong`,null,d(Ge.value?.name||o(a)(`pages.publicProjects.sourceProject`))+` `+d(J.value)+` `+d(Ke.value?.name||o(a)(`pages.publicProjects.targetProject`)),1),B.value===`PART_OF`?(l(),m(`p`,D,d(o(a)(`pages.publicProjects.parentConfirmation`)),1)):(l(),m(`p`,O,d(o(a)(`pages.publicProjects.relationBoundary`)),1))]),s(`button`,k,d(o(a)(`pages.publicProjects.addRelation`)),1)],32)):f(``,!0)]),s(`dialog`,{open:!!N.value,class:`project-dialog vue-dialog`},[N.value?(l(),m(`div`,j,[s(`header`,Ce,[s(`div`,null,[i[11]||=s(`p`,{class:`eyebrow`},`PUBLIC PROJECT`,-1),s(`h3`,null,d(N.value.name),1),s(`p`,null,d(Q(N.value)),1)]),s(`button`,{class:`secondary-action`,type:`button`,onClick:i[5]||=e=>N.value=null},d(o(a)(`common.actions.close`)),1)]),s(`section`,we,[i[12]||=s(`p`,{class:`eyebrow`},`LATEST RELEASE`,-1),s(`h4`,null,d(o(a)(`pages.publicProjects.latestRelease`)),1),N.value.current_release?(l(),m(`p`,Te,[s(`strong`,null,d(N.value.current_release.version),1),p(` · `+d($(N.value.current_release.published_at)),1)])):(l(),m(`p`,Ee,d(o(a)(`pages.publicProjects.noRelease`)),1))]),s(`div`,De,[s(`section`,null,[s(`h4`,null,d(o(a)(`pages.publicProjects.releaseHistory`)),1),I.value?(l(),m(`p`,Oe,d(o(a)(`pages.publicProjects.loading`)),1)):f(``,!0),(l(!0),m(u,null,n(P.value,e=>(l(),m(`article`,{key:e.version,class:`project-release-item`},[s(`strong`,null,d(e.version),1),s(`p`,null,d(e.update_summary),1),s(`small`,null,d($(e.published_at)),1)]))),128)),!I.value&&!P.value.length?(l(),m(`p`,ke,d(o(a)(`pages.publicProjects.noReleaseHistory`)),1)):f(``,!0)]),s(`section`,null,[s(`h4`,null,d(o(a)(`pages.publicProjects.relationsTitle`)),1),(l(!0),m(u,null,n(F.value,e=>(l(),m(`article`,{key:e.id,class:`project-detail-relation`},[s(`strong`,null,d(e.relation_type),1),s(`small`,null,d(e.status??`active`),1)]))),128)),!I.value&&!F.value.length?(l(),m(`p`,Ae,d(o(a)(`pages.publicProjects.noRelations`)),1)):f(``,!0)])]),s(`footer`,je,[s(`span`,null,d(o(a)(`pages.publicProjects.contentManagementSeparated`)),1),s(`button`,{class:`primary-action`,type:`button`,onClick:i[6]||=e=>Ye(N.value)},d(o(a)(`pages.publicProjects.viewGraph`)),1)])])):f(``,!0)],8,A),s(`dialog`,{open:!!V.value,class:`project-dialog vue-dialog`},[V.value?(l(),m(`div`,Ne,[s(`header`,Pe,[s(`div`,null,[i[13]||=s(`p`,{class:`eyebrow`},`DESTRUCTIVE ACTION`,-1),s(`h3`,null,d(o(a)(`pages.publicProjects.deleteTitle`)),1),s(`p`,null,d(o(a)(`pages.publicProjects.deleteCopy`)),1)]),s(`button`,{class:`secondary-action`,type:`button`,disabled:U.value,onClick:Ze},d(o(a)(`common.actions.close`)),9,Fe)]),s(`label`,Ie,[p(d(o(a)(`pages.publicProjects.enterFullName`))+` `,1),s(`strong`,null,d(V.value.name),1),e(s(`input`,{"onUpdate:modelValue":i[7]||=e=>H.value=e,autocomplete:`off`,disabled:U.value},null,8,Le),[[re,H.value]])]),W.value?(l(),m(`p`,Re,d(W.value),1)):f(``,!0),s(`footer`,ze,[s(`span`,null,d(o(a)(`pages.publicProjects.deleteWarning`)),1),s(`button`,{class:`reject`,type:`button`,disabled:!Y.value||U.value,onClick:Qe},d(U.value?o(a)(`pages.publicProjects.deleting`):o(a)(`pages.publicProjects.deletePermanently`)),9,Be)])])):f(``,!0)],8,Me)]))}});export{M as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{C as e,L as t,N as n,S as r,Y as i,a,et as o,g as s,h as c,j as l,m as u,rt as d,v as f,y as p}from"./i18n-js6gfc7j.js";import{a as m,r as h,t as g}from"./console-BT1P2Db4.js";import{t as _}from"./SearchableSelect-D3HM8YF8.js";import{r as v,t as y}from"./identity-CfDfanpa.js";import{u as b}from"./model-DJkLAJsg.js";var x={class:`view`},S={class:`section-title`},C={class:`review-list`},w={class:`review-stage`},T={class:`review-meta`},E={class:`review-actions stacked-actions`},D=[`onClick`],O=[`onClick`],k=[`onClick`],A={key:0,class:`empty-state`},j={key:0,class:`project-section`},M={class:`section-toolbar`},N={class:`review-list`},P={class:`review-stage`},F={class:`review-meta`},I={class:`review-actions`},L=[`onClick`],R=[`onClick`],z={key:0,class:`empty-state`},B=e({__name:`ReviewPage`,setup(e){let B=g(),V=i([]),H=i([]),U=i(``),W=i(!1),G=c(()=>(B.state?.projects??[]).filter(({role:e})=>e===`maintainer`)),K=c(()=>G.value.map(e=>({value:e.id,label:e.name,meta:`#${y(e.id,26)}`,search:v(e.id)}))),q=c(()=>G.value.find(({id:e})=>e===U.value)??null);t(()=>B.state,e=>{e&&(U.value||=G.value[0]?.id??``,J())},{immediate:!0}),t(U,()=>void X());async function J(){W.value=!0,await Promise.all([Y(),X()]),W.value=!1}async function Y(){let e=B.activePersonalSpace?.id;if(e)try{let t=await h(`/api/personal-review?${new URLSearchParams({personalSpaceId:e,status:`pending`})}`);V.value=t.drafts??[]}catch(e){B.reportError(e)}}async function X(){let e=q.value;if(!e){H.value=[];return}try{let t=await h(`/api/review?${new URLSearchParams({projectId:e.id,providerUrl:e.providerUrl,status:`pending`})}`);H.value=t.proposals??[]}catch(e){H.value=[],B.reportError(e)}}async function Z(e,t){try{await m(`/api/personal-review/${encodeURIComponent(e.id)}/decision`,{decision:t}),await Promise.all([Y(),B.refresh()])}catch(e){B.reportError(e)}}async function Q(e,t){let n=q.value;if(n)try{await m(`/api/review/${encodeURIComponent(e.id)}/decision`,{projectId:n.id,providerUrl:n.providerUrl,decision:t,note:null}),await X()}catch(e){B.reportError(e)}}return(e,t)=>(l(),p(`section`,x,[s(`div`,S,[s(`h3`,null,d(o(a)(`pages.review.personalTitle`)),1),s(`p`,null,d(o(a)(`pages.review.personalCopy`)),1)]),s(`div`,C,[(l(!0),p(u,null,n(V.value,e=>(l(),p(`article`,{key:e.id,class:`review-item review-item-detailed`},[s(`div`,null,[s(`div`,w,d(o(a)(`pages.review.beforePublic`)),1),s(`h4`,null,d(e.episode.name),1),s(`p`,null,d(e.episode.summary||e.episode.source_description),1),s(`div`,T,[s(`span`,null,d(o(a)(`common.counts.entities`,{count:e.episode.entities?.length??0})),1),s(`span`,null,d(o(a)(`common.counts.relationships`,{count:e.episode.relationships?.length??0})),1),s(`span`,null,d(o(b)(e.created_at)),1)])]),s(`div`,E,[s(`button`,{class:`secondary-action`,type:`button`,onClick:t=>Z(e,`keep_personal`)},d(o(a)(`pages.review.keepPersonal`)),9,D),s(`button`,{class:`reject`,type:`button`,onClick:t=>Z(e,`ignore`)},d(o(a)(`pages.review.ignore`)),9,O),o(B).state?.capabilities?.submitKnowledge?(l(),p(`button`,{key:0,class:`approve`,type:`button`,onClick:t=>Z(e,`submit_public`)},d(o(a)(`pages.review.submitPublic`)),9,k)):f(``,!0)])]))),128)),!W.value&&!V.value.length?(l(),p(`div`,A,d(o(a)(`pages.review.noPersonalDrafts`)),1)):f(``,!0)]),o(B).state?.capabilities?.reviewProposals?(l(),p(`section`,j,[s(`div`,M,[s(`div`,null,[s(`h3`,null,d(o(a)(`pages.review.publicTitle`)),1),s(`p`,null,d(o(a)(`pages.review.publicCopy`)),1)]),r(_,{modelValue:U.value,"onUpdate:modelValue":t[0]||=e=>U.value=e,options:K.value,label:o(a)(`pages.review.projectLabel`),"control-id":`review-project`,searchable:``},null,8,[`modelValue`,`options`,`label`])]),s(`div`,N,[(l(!0),p(u,null,n(H.value,e=>(l(),p(`article`,{key:e.id,class:`review-item`},[s(`div`,null,[s(`div`,P,d(o(a)(`pages.review.maintainerReview`)),1),s(`h4`,null,d(e.episode.name),1),s(`p`,null,d(e.episode.summary||e.episode.source_description),1),s(`div`,F,[s(`span`,null,d(o(b)(e.created_at)),1)])]),s(`div`,I,[s(`button`,{class:`reject`,type:`button`,onClick:t=>Q(e,`reject`)},d(o(a)(`pages.review.reject`)),9,L),s(`button`,{class:`approve`,type:`button`,onClick:t=>Q(e,`approve`)},d(o(a)(`pages.review.approve`)),9,R)])]))),128)),!W.value&&!H.value.length?(l(),p(`div`,z,d(o(a)(`pages.review.noProposals`)),1)):f(``,!0)])])):f(``,!0)]))}});export{B as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{A as e,B as t,C as n,I as r,L as ee,N as i,O as a,Y as o,a as s,et as c,g as l,h as u,j as d,k as f,m as p,n as m,p as h,rt as g,tt as _,u as v,v as y,y as b}from"./i18n-js6gfc7j.js";var x=[`data-select-id`],S=[`value`,`name`,`required`,`disabled`],C=[`value`,`disabled`],w=[`aria-expanded`,`aria-controls`,`aria-label`,`disabled`],T={class:`searchable-select-current`},E={class:`searchable-select-current-label`},D={key:0,class:`searchable-select-current-meta`},O=[`hidden`],k={key:0,class:`searchable-select-search`},te=[`placeholder`,`aria-label`],ne=[`id`],re=[`aria-selected`,`disabled`,`onClick`],ie={class:`searchable-select-option-copy`},ae={key:0},oe={key:1,class:`searchable-select-empty`},A=n({__name:`SearchableSelect`,props:{modelValue:{},options:{},label:{},controlId:{default:void 0},placeholder:{default:void 0},searchPlaceholder:{default:void 0},searchable:{type:Boolean,default:void 0},disabled:{type:Boolean,default:!1},required:{type:Boolean,default:!1},name:{default:void 0}},emits:[`update:modelValue`,`change`],setup(n,{emit:A}){let j=n,M=A,N=o(null),P=o(null),F=o(null),I=o(null),L=o(!1),R=o(!1),z=o(``),B=r().replace(/[^A-Za-z0-9_-]/g,``),V=u(()=>j.label),H=u(()=>j.placeholder??s(`common.searchableSelect.placeholder`)),U=u(()=>j.searchPlaceholder??s(`common.searchableSelect.searchPlaceholder`)),W=u(()=>`${j.controlId||`searchable-select-${B}`}-options`),G=u(()=>j.options.find(({value:e})=>e===j.modelValue)??null),K=u(()=>j.searchable??j.options.length>5),q=u(()=>{let e=m(),t=z.value.trim().toLocaleLowerCase(e);return t?j.options.filter(n=>[n.label,n.value,n.meta,n.search].filter(Boolean).join(` `).toLocaleLowerCase(e).includes(t)):j.options});ee(()=>j.disabled,e=>{e&&Y()}),e(()=>{document.addEventListener(`pointerdown`,X)}),f(()=>{document.removeEventListener(`pointerdown`,X)});async function se(){L.value?Y():await J()}async function J(){j.disabled||(z.value=``,pe(),L.value=!0,await a(),K.value?F.value?.focus():fe()?.focus())}function Y({restoreFocus:e=!1}={}){L.value=!1,R.value=!1,z.value=``,e&&a(()=>P.value?.focus())}function ce(e){j.disabled||e.disabled||(M(`update:modelValue`,e.value),M(`change`,e.value),Y({restoreFocus:!0}))}function le(e){[`ArrowDown`,`Enter`,` `].includes(e.key)&&(e.preventDefault(),J())}function ue(e){if(e.key===`Escape`){e.preventDefault(),Y({restoreFocus:!0});return}if(e.key===`ArrowDown`){e.preventDefault(),$()?.focus();return}e.key===`Enter`&&(e.preventDefault(),$()?.click())}function de(e){if(e.key===`Escape`){e.preventDefault(),Y({restoreFocus:!0});return}if(![`ArrowDown`,`ArrowUp`,`Home`,`End`].includes(e.key))return;e.preventDefault();let t=Q(),n=t.indexOf(e.currentTarget);t[e.key===`Home`?0:e.key===`End`?t.length-1:e.key===`ArrowDown`?Math.min(t.length-1,n+1):Math.max(0,n-1)]?.focus()}function X(e){L.value&&!N.value?.contains(e.target)&&Y()}function Z(e){let t=e.relatedTarget;t&&N.value?.contains(t)||queueMicrotask(()=>{L.value&&!N.value?.contains(document.activeElement)&&Y()})}function Q(){return[...I.value?.querySelectorAll(`.searchable-select-option:not(:disabled)`)??[]]}function $(){return Q()[0]??null}function fe(){return Q().find(e=>e.getAttribute(`aria-selected`)===`true`)??$()}function pe(){let e=P.value?.getBoundingClientRect();R.value=!!(e&&window.innerHeight-e.bottom<270&&e.top>270)}return(e,r)=>(d(),b(`div`,{ref_key:`root`,ref:N,class:_([`searchable-select`,{open:L.value,"open-up":R.value,disabled:n.disabled}]),"data-select-id":n.controlId,onFocusout:Z},[l(`select`,{class:`searchable-select-native`,value:n.modelValue,name:n.name,required:n.required,disabled:n.disabled,tabindex:`-1`,"aria-hidden":`true`},[(d(!0),b(p,null,i(n.options,e=>(d(),b(`option`,{key:e.value,value:e.value,disabled:e.disabled},g(e.label),9,C))),128))],8,S),l(`button`,{ref_key:`trigger`,ref:P,type:`button`,class:`searchable-select-trigger`,role:`combobox`,"aria-haspopup":`listbox`,"aria-expanded":L.value,"aria-controls":W.value,"aria-label":V.value,disabled:n.disabled,onPointerdown:r[0]||=h(()=>{},[`stop`]),onClick:h(se,[`stop`]),onKeydown:le},[l(`span`,T,[l(`span`,E,g(G.value?.label||H.value),1),G.value?.meta?(d(),b(`small`,D,g(G.value.meta),1)):y(``,!0)]),r[3]||=l(`i`,{class:`searchable-select-arrow`,"aria-hidden":`true`},null,-1)],40,w),l(`div`,{class:`searchable-select-panel`,hidden:!L.value},[K.value?(d(),b(`div`,k,[t(l(`input`,{ref_key:`searchInput`,ref:F,"onUpdate:modelValue":r[1]||=e=>z.value=e,type:`search`,autocomplete:`off`,placeholder:U.value,"aria-label":c(s)(`common.searchableSelect.searchAria`,{label:V.value}),onKeydown:ue},null,40,te),[[v,z.value]])])):y(``,!0),l(`div`,{id:W.value,ref_key:`optionsList`,ref:I,class:`searchable-select-options`,role:`listbox`},[(d(!0),b(p,null,i(q.value,e=>(d(),b(`button`,{key:e.value,type:`button`,class:`searchable-select-option`,role:`option`,"aria-selected":e.value===n.modelValue,disabled:e.disabled,onMousedown:r[2]||=h(()=>{},[`prevent`]),onClick:t=>ce(e),onKeydown:de},[l(`span`,ie,[l(`strong`,null,g(e.label),1),e.meta?(d(),b(`small`,ae,g(e.meta),1)):y(``,!0)]),r[4]||=l(`i`,{class:`searchable-select-check`,"aria-hidden":`true`},null,-1)],40,re))),128))],8,ne),q.value.length===0?(d(),b(`p`,oe,g(c(s)(`common.searchableSelect.noMatches`)),1)):y(``,!0)],8,O)],42,x))}});export{A as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{A as e,B as t,C as n,L as r,N as i,S as a,Y as o,a as s,et as c,g as l,h as u,i as d,j as f,k as ee,m as p,n as te,nt as m,p as ne,rt as h,s as g,u as _,v,x as re,y}from"./i18n-js6gfc7j.js";import{o as ie,r as b,t as ae}from"./console-BT1P2Db4.js";import{t as x}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{t as S}from"./SearchableSelect-D3HM8YF8.js";import{o as oe,r as se,t as C}from"./conversation-launcher-settings-DrJEotdf.js";var ce=[`aria-label`],le={class:`settings-content`},ue={key:0,class:`settings-top-status`,role:`status`},de={key:0},fe={key:1},pe={class:`settings-card resource-card`},me={class:`section-heading`},he={key:0},ge=[`disabled`],_e={key:0,class:`settings-error`,role:`alert`},ve={class:`resource-totals`},ye={class:`resource-breakdowns`},w={class:`resource-group`},T={class:`resource-group`},E={class:`resource-notes`},D={key:0},O={key:1},k={key:2,class:`settings-skeleton`,"aria-hidden":`true`},A={class:`settings-card ports-card`},j={class:`section-heading`},M={key:0,class:`restart-chip`},N={class:`port-section`},P={class:`port-grid`},be=[`onUpdate:modelValue`],xe={class:`port-section development-section`},Se={id:`conversation-launchers`,class:`settings-card conversation-launcher-card`},Ce={class:`conversation-launcher-list`},we={class:`conversation-launcher-heading`},Te={class:`conversation-launcher-switch`},Ee=[`onUpdate:modelValue`],De={key:0,class:`conversation-launcher-note`},Oe={key:1,class:`conversation-launcher-fields`},ke=[`onUpdate:modelValue`],Ae={class:`conversation-launcher-template`},je=[`onUpdate:modelValue`],Me={class:`settings-card behavior-card`},Ne={class:`setting-list`},Pe={class:`setting-row`},Fe=[`checked`],Ie={class:`setting-row`},Le=[`checked`],Re={class:`setting-row`},ze={class:`setting-row select-row`},Be={class:`setting-row select-row`},Ve={class:`setting-row select-row`},He={key:0,class:`settings-error`,role:`alert`},Ue={key:2,class:`settings-error`,role:`alert`},F=x(n({__name:`SettingsPage`,setup(n){let x=ae(),F=o(null),I=o(null),L=o(null),R=o(!0),z=o(!1),B=o(!1),V=o(``),H=o(``),U=o(!1),W=null,We=[`console`,`personalProvider`,`personalNeo4jHttp`,`personalNeo4jBolt`],G=u({get:()=>te(),set:e=>d(e)}),K=[5,10,30,60],Ge=se,Ke=u(()=>[{value:`zh-CN`,label:s(`settings.behavior.zh`)},{value:`en-US`,label:s(`settings.behavior.en`)}]),qe=u(()=>K.map(e=>({value:String(e),label:s(`settings.resources.refreshUnit`,{seconds:e})}))),Je=u(()=>[{value:`native`,label:s(`settings.behavior.runtimeModes.native`)},{value:`container`,label:s(`settings.behavior.runtimeModes.container`)}]),Ye=u(()=>[{value:`any`,label:s(`settings.conversationLaunchers.idFormats.any`)},{value:`uuid`,label:s(`settings.conversationLaunchers.idFormats.uuid`)}]),Xe=u(()=>x.state?.capturePolicy?.enabled!==!1),Ze=u(()=>x.state?.agentAccessPolicy?.enabled!==!1),Qe=u(()=>Math.max(1,...L.value?.memory.components.map(({bytes:e})=>e)??[1])),$e=u(()=>Math.max(1,...L.value?.disk.components.map(({bytes:e})=>e)??[1])),et=u(()=>I.value?.graphRuntimeMode===`container`&&Number.isFinite(L.value?.memory.hostTotalBytes)&&Number(L.value?.memory.hostTotalBytes)<=16*1024**3);e(async()=>{x.runtimeStatus===`idle`&&x.refresh(),await Promise.all([q(),J()]),R.value=!1}),ee(Y),r(()=>I.value?.resourceRefreshSeconds,()=>nt());async function q(){try{let e=await b(`/api/system/settings`);F.value=e,I.value=structuredClone(e.configured),C(e.configured.conversationLaunchers),V.value=``}catch(e){V.value=e instanceof Error?e.message:s(`settings.loadError`)}}async function J(){if(!(B.value||document.visibilityState===`hidden`)){B.value=!0;try{L.value=await b(`/api/system/resources`),H.value=``}catch(e){H.value=e instanceof Error?e.message:s(`settings.resources.unavailable`)}finally{B.value=!1}}}async function tt(){if(!(!I.value||z.value)){z.value=!0,U.value=!1;try{let e=await ie(`/api/system/settings`,I.value);F.value=e,I.value=structuredClone(e.configured),C(e.configured.conversationLaunchers),U.value=!0,V.value=``,window.setTimeout(()=>{U.value=!1},2400)}catch(e){V.value=e instanceof Error?e.message:s(`settings.saveError`)}finally{z.value=!1}}}function nt(){Y();let e=I.value?.resourceRefreshSeconds;e&&(W=setInterval(()=>void J(),e*1e3))}function Y(){W&&clearInterval(W),W=null}function rt(e){x.updateCapturePolicy(e.currentTarget.checked)}function it(e){x.updateAgentAccessPolicy(e.currentTarget.checked)}function at(e){(e===`zh-CN`||e===`en-US`)&&d(e)}function ot(e){let t=K.find(t=>String(t)===e);t===void 0||!I.value||(I.value.resourceRefreshSeconds=t)}function st(e){!I.value||e!==`native`&&e!==`container`||(I.value.graphRuntimeMode=e)}function ct(e){let t=s(`settings.conversationLaunchers.applications.${e}`);return t===`settings.conversationLaunchers.applications.${e}`?oe(e):t}function lt(e){return F.value?.active.ports[e]??`—`}function X(e){let t=`settings.resources.components.${e.id}`,n=s(t);return n===t?e.label:n}function Z(e){if(!Number.isFinite(e))return`—`;let t=Number(e),n=[`B`,`KiB`,`MiB`,`GiB`,`TiB`],r=t,i=0;for(;r>=1024&&i<n.length-1;)r/=1024,i+=1;let a=i===0||r>=100?0:r>=10?1:2;return`${r.toFixed(a)} ${n[i]}`}function Q(e,t){return`${Math.max(3,Math.round(e/t*100))}%`}function $(e){return e?new Intl.DateTimeFormat(G.value,{hour:`2-digit`,minute:`2-digit`,second:`2-digit`}).format(new Date(e)):`—`}return(e,n)=>(f(),y(`section`,{class:`view settings-view`,"aria-label":c(s)(`settings.aria`)},[l(`div`,le,[U.value||F.value?.restartRequired?(f(),y(`div`,ue,[U.value?(f(),y(`strong`,de,h(c(s)(`settings.saved`)),1)):v(``,!0),F.value?.restartRequired?(f(),y(`span`,fe,h(c(s)(`settings.restartCopy`)),1)):v(``,!0)])):v(``,!0),l(`section`,pe,[l(`header`,me,[l(`div`,null,[l(`h3`,null,h(c(s)(`settings.resources.title`)),1),L.value?(f(),y(`p`,he,h(c(s)(`settings.resources.measuredAt`,{time:$(L.value.sampledAt)})),1)):v(``,!0)]),l(`button`,{class:`quiet-button`,type:`button`,disabled:B.value,onClick:J},h(c(s)(`common.actions.refresh`)),9,ge)]),H.value?(f(),y(`p`,_e,h(H.value),1)):L.value?(f(),y(p,{key:1},[l(`div`,ve,[l(`article`,null,[l(`span`,null,h(c(s)(`settings.resources.memory`)),1),l(`strong`,null,h(Z(L.value.memory.usedBytes)),1),l(`small`,null,h(c(s)(`settings.resources.available`,{value:Z(L.value.memory.hostFreeBytes)})),1)]),l(`article`,null,[l(`span`,null,h(c(s)(`settings.resources.disk`)),1),l(`strong`,null,h(Z(L.value.disk.usedBytes)),1),l(`small`,null,h(c(s)(`settings.resources.available`,{value:Z(L.value.disk.hostFreeBytes)})),1)])]),l(`div`,ye,[l(`div`,w,[l(`h4`,null,h(c(s)(`settings.resources.memory`)),1),(f(!0),y(p,null,i(L.value.memory.components,e=>(f(),y(`div`,{key:e.id,class:`resource-row`},[l(`div`,null,[l(`span`,null,h(X(e)),1),l(`strong`,null,h(Z(e.bytes)),1)]),l(`i`,null,[l(`b`,{style:m({width:Q(e.bytes,Qe.value)})},null,4)])]))),128))]),l(`div`,T,[l(`h4`,null,h(c(s)(`settings.resources.disk`)),1),(f(!0),y(p,null,i(L.value.disk.components,e=>(f(),y(`div`,{key:e.id,class:`resource-row`},[l(`div`,null,[l(`span`,null,h(X(e)),1),l(`strong`,null,h(Z(e.bytes)),1)]),l(`i`,null,[l(`b`,{style:m({width:Q(e.bytes,$e.value)})},null,4)])]))),128))])]),l(`div`,E,[l(`span`,null,h(c(s)(`settings.resources.diskMeasuredAt`,{time:$(L.value.disk.measuredAt)})),1),L.value.status===`partial`?(f(),y(`span`,D,h(c(s)(`settings.resources.partial`)),1)):v(``,!0),L.value.disk.temporaryBytes?(f(),y(`span`,O,h(c(s)(`settings.resources.temporary`,{value:Z(L.value.disk.temporaryBytes)})),1)):v(``,!0),l(`span`,null,h(c(s)(L.value.exclusions.includes(`shared-container-vm-overhead`)?`settings.resources.exclusionsContainer`:`settings.resources.exclusionsNative`)),1)])],64)):(f(),y(`div`,k))]),I.value?(f(),y(`form`,{key:1,id:`settings-form`,class:`settings-form`,onSubmit:ne(tt,[`prevent`])},[l(`section`,A,[l(`header`,j,[l(`h3`,null,h(c(s)(`settings.ports.title`)),1),F.value?.restartRequired?(f(),y(`span`,M,h(c(s)(`settings.restartRequired`)),1)):v(``,!0)]),l(`div`,N,[l(`h4`,null,h(c(s)(`settings.ports.personal`)),1),l(`div`,P,[(f(),y(p,null,i(We,e=>l(`label`,{key:e},[l(`span`,null,h(c(s)(`settings.ports.${e}`)),1),t(l(`input`,{"onUpdate:modelValue":t=>I.value.ports[e]=t,type:`number`,min:`1`,max:`65535`,required:``},null,8,be),[[_,I.value.ports[e],void 0,{number:!0}]]),l(`small`,null,h(c(s)(`settings.ports.active`,{port:lt(e)})),1)])),64))])]),l(`div`,xe,[l(`div`,null,[l(`h4`,null,h(c(s)(`settings.ports.development`)),1),l(`span`,null,h(c(s)(`settings.ports.developing`)),1)]),l(`p`,null,h(c(s)(`settings.ports.developmentMeta`)),1)])]),l(`section`,Se,[l(`h3`,null,h(c(s)(`settings.conversationLaunchers.title`)),1),l(`div`,Ce,[(f(!0),y(p,null,i(c(Ge),e=>(f(),y(`article`,{key:e,class:`conversation-launcher-row`},[l(`div`,we,[l(`span`,null,[l(`strong`,null,h(ct(e)),1),l(`small`,null,h(c(s)(`settings.conversationLaunchers.sourceId`,{id:e})),1)]),l(`label`,Te,[l(`span`,null,h(c(s)(`settings.conversationLaunchers.enabled`)),1),t(l(`input`,{"onUpdate:modelValue":t=>I.value.conversationLaunchers[e].enabled=t,type:`checkbox`,role:`switch`},null,8,Ee),[[g,I.value.conversationLaunchers[e].enabled]])])]),I.value.conversationLaunchers[e].enabled&&e===`codex`?(f(),y(`small`,De,h(c(s)(`settings.conversationLaunchers.idFormatMeta`)),1)):v(``,!0),I.value.conversationLaunchers[e].enabled?(f(),y(`div`,Oe,[l(`label`,null,[l(`span`,null,h(c(s)(`settings.conversationLaunchers.idFormat`)),1),a(S,{modelValue:I.value.conversationLaunchers[e].idFormat,"onUpdate:modelValue":t=>I.value.conversationLaunchers[e].idFormat=t,class:`launcher-select`,"control-id":`settings-conversation-${e}-id-format`,options:Ye.value,label:c(s)(`settings.conversationLaunchers.idFormat`)},null,8,[`modelValue`,`onUpdate:modelValue`,`control-id`,`options`,`label`])]),l(`label`,null,[l(`span`,null,h(c(s)(`settings.conversationLaunchers.appName`)),1),t(l(`input`,{"onUpdate:modelValue":t=>I.value.conversationLaunchers[e].appName=t,type:`text`,maxlength:`64`,required:``},null,8,ke),[[_,I.value.conversationLaunchers[e].appName,void 0,{trim:!0}]])]),l(`label`,Ae,[l(`span`,null,[re(h(c(s)(`settings.conversationLaunchers.urlTemplate`))+` `,1),n[1]||=l(`small`,null,[l(`code`,null,`{id}`)],-1)]),t(l(`input`,{"onUpdate:modelValue":t=>I.value.conversationLaunchers[e].urlTemplate=t,type:`text`,maxlength:`1024`,spellcheck:`false`,required:``},null,8,je),[[_,I.value.conversationLaunchers[e].urlTemplate,void 0,{trim:!0}]])])])):v(``,!0)]))),128))])]),l(`section`,Me,[l(`h3`,null,h(c(s)(`settings.behavior.title`)),1),l(`div`,Ne,[l(`label`,Pe,[l(`span`,null,[l(`strong`,null,h(c(s)(`settings.behavior.capture`)),1),l(`small`,null,h(c(s)(`settings.behavior.captureMeta`)),1)]),l(`input`,{type:`checkbox`,role:`switch`,checked:Xe.value,onChange:rt},null,40,Fe)]),l(`label`,Ie,[l(`span`,null,[l(`strong`,null,h(c(s)(`settings.behavior.agentAccess`)),1),l(`small`,null,h(c(s)(`settings.behavior.agentAccessMeta`)),1)]),l(`input`,{type:`checkbox`,role:`switch`,checked:Ze.value,onChange:it},null,40,Le)]),l(`label`,Re,[l(`span`,null,[l(`strong`,null,h(c(s)(`settings.behavior.lanAccess`)),1),l(`small`,null,h(c(s)(`settings.behavior.lanAccessMeta`)),1)]),t(l(`input`,{"onUpdate:modelValue":n[0]||=e=>I.value.lanAccess=e,type:`checkbox`,role:`switch`},null,512),[[g,I.value.lanAccess]])]),l(`div`,ze,[l(`span`,null,[l(`strong`,null,h(c(s)(`settings.behavior.runtimeMode`)),1),l(`small`,null,h(et.value?c(s)(`settings.behavior.runtimeRecommendation`):c(s)(`settings.behavior.runtimeModeMeta`,{mode:c(s)(`settings.behavior.runtimeModes.${F.value?.active.graphRuntimeMode??I.value.graphRuntimeMode}`)})),1)]),a(S,{class:`settings-select`,"control-id":`settings-runtime-mode`,"model-value":I.value.graphRuntimeMode,options:Je.value,label:c(s)(`settings.behavior.runtimeMode`),"onUpdate:modelValue":st},null,8,[`model-value`,`options`,`label`])]),l(`div`,Be,[l(`span`,null,[l(`strong`,null,h(c(s)(`settings.behavior.language`)),1)]),a(S,{class:`settings-select`,"control-id":`settings-language`,"model-value":G.value,options:Ke.value,label:c(s)(`settings.behavior.language`),"onUpdate:modelValue":at},null,8,[`model-value`,`options`,`label`])]),l(`div`,Ve,[l(`span`,null,[l(`strong`,null,h(c(s)(`settings.resources.refresh`)),1)]),a(S,{class:`settings-select`,"control-id":`settings-refresh-interval`,"model-value":String(I.value.resourceRefreshSeconds),options:qe.value,label:c(s)(`settings.resources.refresh`),"onUpdate:modelValue":ot},null,8,[`model-value`,`options`,`label`])])])]),V.value?(f(),y(`p`,He,h(V.value),1)):v(``,!0)],32)):R.value?v(``,!0):(f(),y(`p`,Ue,h(V.value||c(s)(`settings.loadError`)),1))])],8,ce))}}),[[`__scopeId`,`data-v-63730e70`]]);export{F as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.settings-view[data-v-63730e70]{background:#f7f8f6;padding-top:24px}.settings-content[data-v-63730e70]{gap:18px;width:min(1120px,100%);margin:0 auto;display:grid}.settings-form[data-v-63730e70]{gap:18px;display:grid}.settings-card[data-v-63730e70]{background:#fff;border:1px solid #d7ddd8;border-radius:12px;padding:26px;box-shadow:0 8px 30px #2b3b320a}.section-heading[data-v-63730e70]{justify-content:space-between;align-items:center;gap:18px;margin-bottom:22px;display:flex}.settings-card h3[data-v-63730e70]{color:#2e3c34;font-size:19px}.section-heading p[data-v-63730e70]{color:#879089;margin-top:5px;font-size:11px}.resource-totals[data-v-63730e70]{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.resource-totals article[data-v-63730e70]{background:#f7f9f7;border:1px solid #dce2dd;border-radius:10px;align-content:center;gap:7px;min-height:126px;padding:20px 22px;display:grid}.resource-totals span[data-v-63730e70]{color:#667169;font-size:12px}.resource-totals strong[data-v-63730e70]{color:#24332a;letter-spacing:-.04em;font-size:clamp(25px,3vw,34px)}.resource-totals small[data-v-63730e70]{color:#8a938d;font-size:11px}.resource-breakdowns[data-v-63730e70]{grid-template-columns:repeat(2,minmax(0,1fr));gap:28px;margin-top:26px;display:grid}.resource-group[data-v-63730e70]{gap:13px;display:grid}.resource-group h4[data-v-63730e70],.port-section h4[data-v-63730e70]{color:#536058;font-size:12px}.resource-row[data-v-63730e70]{gap:6px;display:grid}.resource-row>div[data-v-63730e70]{color:#67736b;justify-content:space-between;gap:12px;font-size:11px;display:flex}.resource-row strong[data-v-63730e70]{color:#36443b;font-weight:650}.resource-row i[data-v-63730e70]{background:#eef1ee;border-radius:999px;height:5px;overflow:hidden}.resource-row b[data-v-63730e70]{border-radius:inherit;background:#6f8f79;height:100%;display:block}.resource-group:last-child .resource-row b[data-v-63730e70]{background:#82958a}.resource-notes[data-v-63730e70]{color:#8a938d;flex-wrap:wrap;gap:8px 18px;margin-top:22px;font-size:10px;display:flex}.settings-skeleton[data-v-63730e70]{background:#f2f4f2;border-radius:9px;height:260px}.restart-chip[data-v-63730e70]{color:#8d5a18;background:#fff8ec;border:1px solid #d7aa68;border-radius:999px;padding:5px 9px;font-size:10px;font-weight:700}.port-section[data-v-63730e70]{gap:13px;display:grid}.port-section+.port-section[data-v-63730e70]{border-top:1px solid #edf0ed;margin-top:25px;padding-top:22px}.development-section>div[data-v-63730e70]{align-items:center;gap:9px;display:flex}.development-section>div>span[data-v-63730e70]{color:#78633a;background:#f6f0e4;border-radius:999px;padding:4px 8px;font-size:9px;font-weight:700}.development-section>p[data-v-63730e70]{color:#8b948e;font-size:10px}.port-grid[data-v-63730e70]{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;display:grid}.port-grid label[data-v-63730e70]{color:#59655e;gap:7px;font-size:11px;display:grid}.port-grid input[data-v-63730e70],.select-row[data-v-63730e70] .settings-select .searchable-select-trigger{color:#2f3d34;width:100%;min-height:40px;font:inherit;background:#fbfcfb;border:1px solid #ccd4ce;border-radius:8px;outline:none;padding:0 11px}.port-grid input[data-v-63730e70]:focus,.select-row[data-v-63730e70] .settings-select .searchable-select-trigger:focus-visible{border-color:#6f8f79;box-shadow:0 0 0 3px #6f8f791f}.port-grid small[data-v-63730e70]{color:#9aa29d;font-size:9px}.behavior-card>h3[data-v-63730e70],.conversation-launcher-card>h3[data-v-63730e70]{margin-bottom:14px}.conversation-launcher-list[data-v-63730e70]{display:grid}.conversation-launcher-row[data-v-63730e70]{border-top:1px solid #edf0ed;padding:16px 0}.conversation-launcher-row[data-v-63730e70]:first-child{border-top:0}.conversation-launcher-heading[data-v-63730e70]{justify-content:space-between;align-items:center;gap:20px;min-height:34px;display:flex}.conversation-launcher-heading>span[data-v-63730e70]{gap:4px;display:grid}.conversation-launcher-heading strong[data-v-63730e70]{color:#354239;font-size:12px}.conversation-launcher-heading small[data-v-63730e70]{color:#8b948e;font-size:9px}.conversation-launcher-switch[data-v-63730e70]{color:#667169;align-items:center;gap:9px;font-size:10px;display:flex}.conversation-launcher-switch input[role=switch][data-v-63730e70]{margin:0}.conversation-launcher-note[data-v-63730e70]{color:#8b948e;max-width:760px;margin-top:9px;font-size:9px;line-height:1.45;display:block}.conversation-launcher-fields[data-v-63730e70]{grid-template-columns:minmax(150px,.7fr) minmax(160px,.8fr) minmax(280px,1.5fr);align-items:start;gap:12px;margin-top:14px;display:grid}.conversation-launcher-fields>label[data-v-63730e70]{color:#59655e;grid-template-rows:18px 40px;align-content:start;gap:7px;min-width:0;font-size:10px;display:grid}.conversation-launcher-fields>label>span[data-v-63730e70]{text-overflow:ellipsis;white-space:nowrap;min-width:0;line-height:18px;display:block;overflow:hidden}.conversation-launcher-fields code[data-v-63730e70]{color:#7b857e;font-size:9px}.conversation-launcher-fields[data-v-63730e70] .launcher-select{width:100%;min-width:0;height:40px}.conversation-launcher-fields input[data-v-63730e70],.conversation-launcher-fields[data-v-63730e70] .launcher-select .searchable-select-trigger{box-sizing:border-box;color:#2f3d34;width:100%;height:40px;min-height:40px;font:inherit;background:#fbfcfb;border:1px solid #ccd4ce;border-radius:8px;outline:none;padding:0 11px;line-height:1.2}.conversation-launcher-fields input[data-v-63730e70]:focus,.conversation-launcher-fields[data-v-63730e70] .launcher-select .searchable-select-trigger:focus-visible{border-color:#6f8f79;box-shadow:0 0 0 3px #6f8f791f}.conversation-launcher-fields[data-v-63730e70] .launcher-select .searchable-select-current{align-items:center}.conversation-launcher-fields[data-v-63730e70] .launcher-select .searchable-select-current-label{font-weight:500}.conversation-launcher-fields[data-v-63730e70] .launcher-select .searchable-select-panel{width:100%;min-width:0}.setting-list[data-v-63730e70]{display:grid}.setting-row[data-v-63730e70]{cursor:pointer;border-top:1px solid #edf0ed;justify-content:space-between;align-items:center;gap:24px;min-height:64px;display:flex}.setting-row[data-v-63730e70]:first-child{border-top:0}.setting-row>span[data-v-63730e70]{gap:4px;display:grid}.setting-row strong[data-v-63730e70]{color:#354239;font-size:12px}.setting-row small[data-v-63730e70]{color:#8b948e;font-size:10px}.setting-row input[role=switch][data-v-63730e70],.conversation-launcher-switch input[role=switch][data-v-63730e70]{appearance:none;cursor:pointer;background:#cbd2cd;border-radius:999px;width:38px;height:21px;transition:background .18s;position:relative}.setting-row input[role=switch][data-v-63730e70]:after,.conversation-launcher-switch input[role=switch][data-v-63730e70]:after{content:"";background:#fff;border-radius:50%;width:17px;height:17px;transition:transform .18s;position:absolute;top:50%;left:2px;transform:translateY(-50%);box-shadow:0 0 4px #0000002e}.setting-row input[role=switch][data-v-63730e70]:checked,.conversation-launcher-switch input[role=switch][data-v-63730e70]:checked{background:#688b73}.setting-row input[role=switch][data-v-63730e70]:checked:after,.conversation-launcher-switch input[role=switch][data-v-63730e70]:checked:after{transform:translate(17px,-50%)}.select-row .settings-select[data-v-63730e70]{width:180px;min-width:0}.select-row[data-v-63730e70] .settings-select .searchable-select-trigger{background:#fbfcfb;border-radius:8px;padding:0 14px 0 11px}.select-row[data-v-63730e70] .settings-select .searchable-select-current{align-items:center}.select-row[data-v-63730e70] .settings-select .searchable-select-current-label{font-weight:500}.select-row[data-v-63730e70] .settings-select .searchable-select-arrow{border-width:1.5px;width:8px;height:8px;margin-right:1px}.select-row[data-v-63730e70] .settings-select .searchable-select-panel{width:100%;min-width:0}.settings-top-status[data-v-63730e70]{color:#7d8780;flex-wrap:wrap;align-items:center;gap:6px 16px;padding:0 4px 2px;font-size:10px;display:flex}.settings-top-status strong[data-v-63730e70]{color:#477356;font-weight:700}.settings-error[data-v-63730e70]{color:#8c3934;background:#fff2f0;border-radius:8px;padding:11px 13px;font-size:11px}@media (width<=900px){.port-grid[data-v-63730e70],.conversation-launcher-fields[data-v-63730e70]{grid-template-columns:repeat(2,minmax(0,1fr))}.conversation-launcher-template[data-v-63730e70]{grid-column:1/-1}}@media (width<=680px){.settings-card[data-v-63730e70]{padding:20px}.resource-totals[data-v-63730e70],.resource-breakdowns[data-v-63730e70],.port-grid[data-v-63730e70],.conversation-launcher-fields[data-v-63730e70]{grid-template-columns:1fr}.conversation-launcher-template[data-v-63730e70]{grid-column:auto}.select-row[data-v-63730e70]{flex-direction:column;align-items:flex-start;padding:14px 0}.select-row .settings-select[data-v-63730e70]{width:100%}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{C as e,L as t,N as n,S as r,Y as i,_ as a,a as o,et as s,g as c,h as l,j as u,m as d,rt as f,tt as p,v as m,x as h,y as g,z as _}from"./i18n-js6gfc7j.js";import{r as v,t as y}from"./console-BT1P2Db4.js";import{t as b}from"./vue-router-Kk67EaCP.js";import{t as x}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{a as S,i as C,n as w,t as ee}from"./KnowledgeEditDialog-CZ5ziPrD.js";import{u as te,x as ne}from"./model-DJkLAJsg.js";var re={class:`view writing-taste-view`},ie={key:1,class:`writing-taste-unavailable`},ae={class:`writing-taste-hero__copy`},T={class:`writing-taste-status`},E={class:`writing-taste-hero__score`,"aria-hidden":`true`},D=[`aria-label`],O={"aria-hidden":`true`},k={class:`writing-taste-rules`},A={key:0,class:`writing-taste-rule-list`},j={class:`writing-taste-rule__status`},M={key:0,class:`conflict`},N={class:`writing-taste-rule__body`},P={key:0},F={key:1},I={key:0},L={key:0,class:`writing-taste-rule__actions`},R=[`onClick`],z=[`onClick`],B={key:1,class:`writing-taste-empty`},oe={key:0,class:`writing-taste-agent-preview`},V={key:0},H=x(e({__name:`WritingTastePage`,setup(e){let x=y(),H=i(null),U=i(null),W=i(!1),G=i(null),K=i(null),q=i(!1),J=0,se=C(l(()=>W.value&&!H.value)),Y=l(()=>ne(U.value)),X=l(()=>new Map(Y.value.map(e=>[`${e.itemKind}:${e.id}`,e]))),ce=l(()=>H.value?.status===`active`?o(`writingTaste.page.activeTitle`):H.value?.status===`preview_ready`?o(`writingTaste.page.previewTitle`):o(`writingTaste.page.collectingTitle`)),Z=l(()=>H.value?.status===`active`?o(`writingTaste.page.activeCopy`):H.value?.status===`preview_ready`?o(`writingTaste.page.previewCopy`):o(`writingTaste.page.collectingCopy`));t(()=>x.activePersonalSpace?.id,e=>{e&&Q(e)},{immediate:!0});async function Q(e=x.activePersonalSpace?.id){if(!e)return;let t=++J;W.value=!0;try{let n=new URLSearchParams({personalSpaceId:e,limit:`500`}),r=new URLSearchParams({spaceId:e,limit:`500`}),[i,a]=await Promise.all([v(`/api/writing-taste-profile?${n}`),v(`/api/graph?${r}`)]);if(t!==J)return;H.value=me(i)?i:null,U.value=he(a)?a:null,pe()}catch(e){if(t!==J)return;H.value=null,U.value=null,x.reportError(e)}finally{t===J&&(W.value=!1)}}function $(e){return X.value.get(`${e.item_kind}:${e.item_id}`)??null}function le(e){G.value=$(e)}function ue(e){K.value=$(e)}function de(e){if(e.preference_scope!==`project`||!e.preference_project_id)return o(`writingTaste.page.globalScope`);let t=x.state?.personalProjects?.find(({project_id:t})=>t===e.preference_project_id);return o(`writingTaste.page.projectScope`,{project:t?.profile.name??e.preference_project_id})}function fe(e){return e.key===`conflicts`?o(`writingTaste.criteria.conflictsProgress`,{current:e.current}):o(`writingTaste.criteria.progress`,{current:e.current,target:e.target})}function pe(){G.value&&=X.value.get(`${G.value.itemKind}:${G.value.id}`)??null,K.value&&=X.value.get(`${K.value.itemKind}:${K.value.id}`)??null}function me(e){if(!e||typeof e!=`object`)return!1;let t=e;return[`collecting`,`preview_ready`,`active`].includes(t.status??``)&&!!t.readiness&&Array.isArray(t.rules)}function he(e){if(!e||typeof e!=`object`)return!1;let t=e;return Array.isArray(t.nodes)&&Array.isArray(t.edges)}return(e,t)=>(u(),g(`section`,re,[r(s(b),{class:`writing-taste-back`,to:`/preferences`},{default:_(()=>[t[5]||=c(`span`,{"aria-hidden":`true`},`←`,-1),h(` `+f(s(o)(`writingTaste.page.back`)),1)]),_:1}),s(se)?(u(),a(S,{key:0,label:s(o)(`writingTaste.page.loading`)},null,8,[`label`])):H.value?(u(),g(d,{key:2},[c(`header`,{class:p([`writing-taste-hero`,`status-${H.value.status}`])},[c(`div`,ae,[c(`span`,T,[t[6]||=c(`i`,{"aria-hidden":`true`},null,-1),h(` `+f(s(o)(`writingTaste.status.${H.value.status}`)),1)]),c(`h2`,null,f(ce.value),1),c(`p`,null,f(Z.value),1)]),c(`div`,E,[c(`strong`,null,f(H.value.readiness.rule_count),1),c(`span`,null,`/ `+f(H.value.readiness.thresholds.rule_count),1),c(`small`,null,f(s(o)(`writingTaste.criteria.rules`)),1)])],2),c(`section`,{class:`writing-taste-readiness`,"aria-label":s(o)(`writingTaste.page.readinessAria`)},[(u(!0),g(d,null,n(H.value.readiness.criteria,e=>(u(),g(`article`,{key:e.key,class:p({met:e.met})},[c(`span`,O,f(e.met?`✓`:`·`),1),c(`div`,null,[c(`strong`,null,f(s(o)(`writingTaste.criteria.${e.key}`)),1),c(`small`,null,f(fe(e)),1)])],2))),128))],8,D),c(`section`,k,[c(`header`,null,[c(`h2`,null,f(s(o)(`writingTaste.page.rulesTitle`)),1),c(`span`,null,f(H.value.rules.length),1)]),H.value.rules.length?(u(),g(`div`,A,[(u(!0),g(d,null,n(H.value.rules,e=>(u(),g(`article`,{key:`${e.item_kind}:${e.item_id}`,class:p([`writing-taste-rule`,{"has-conflict":e.has_conflict,"is-hypothesis":e.evidence_status===`Working hypothesis`}])},[c(`div`,j,[c(`span`,{class:p(e.evidence_status.replaceAll(` `,`-`).toLowerCase())},f(s(o)(`writingTaste.evidenceStatus.${e.evidence_status}`)),3),c(`span`,null,f(de(e)),1),e.has_conflict?(u(),g(`span`,M,f(s(o)(`writingTaste.page.conflict`)),1)):m(``,!0)]),c(`div`,N,[c(`h3`,null,f(e.title),1),c(`p`,null,f(e.instruction),1),e.reason?(u(),g(`small`,P,f(e.reason),1)):m(``,!0),e.contexts.length?(u(),g(`small`,F,f(s(o)(`writingTaste.page.contexts`,{contexts:e.contexts.join(`、`)})),1)):m(``,!0)]),c(`footer`,null,[c(`div`,null,[c(`span`,null,f(s(o)(`writingTaste.page.evidence`,{evidence:e.evidence_count})),1),c(`span`,null,f(s(o)(`writingTaste.page.sessions`,{sessions:e.session_count})),1),e.updated_at?(u(),g(`span`,I,f(s(o)(`writingTaste.page.updated`,{time:s(te)(e.updated_at)})),1)):m(``,!0)]),$(e)?(u(),g(`div`,L,[c(`button`,{class:`secondary-action`,type:`button`,onClick:t=>ue(e)},f(s(o)(`writingTaste.page.edit`)),9,R),e.evidence_status===`Confirmed`?m(``,!0):(u(),g(`button`,{key:0,class:`primary-action`,type:`button`,onClick:t=>le(e)},f(s(o)(`writingTaste.page.confirm`)),9,z))])):m(``,!0)])],2))),128))])):(u(),g(`div`,B,f(s(o)(`writingTaste.page.rulesEmpty`)),1))]),H.value.ready&&H.value.agent_markdown?(u(),g(`section`,oe,[c(`div`,null,[c(`h2`,null,f(s(o)(`writingTaste.page.agentPreviewTitle`)),1),c(`p`,null,f(s(o)(`writingTaste.page.agentPreviewCopy`)),1)]),c(`button`,{class:`secondary-action`,type:`button`,onClick:t[0]||=e=>q.value=!q.value},f(q.value?s(o)(`writingTaste.page.hideAgentPreview`):s(o)(`writingTaste.page.showAgentPreview`)),1),q.value?(u(),g(`pre`,V,f(H.value.agent_markdown),1)):m(``,!0)])):m(``,!0)],64)):(u(),g(`div`,ie,f(s(o)(`writingTaste.page.profileUnavailable`)),1)),r(ee,{item:K.value,"personal-space-id":s(x).activePersonalSpace?.id??``,"personal-project-id":null,projects:s(x).state?.personalProjects??[],"replacement-items":Y.value,onClose:t[1]||=e=>K.value=null,onSaved:t[2]||=e=>Q()},null,8,[`item`,`personal-space-id`,`projects`,`replacement-items`]),r(w,{item:G.value,"personal-space-id":s(x).activePersonalSpace?.id??``,"personal-project-id":null,onClose:t[3]||=e=>G.value=null,onSaved:t[4]||=e=>Q()},null,8,[`item`,`personal-space-id`])]))}}),[[`__scopeId`,`data-v-c14a3671`]]);export{H as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{$ as e,E as t,G as n,H as r,K as i,L as a,O as o,Q as s,T as c,U as l,V as u,W as d,Y as f,Z as p,a as m,h,q as g}from"./i18n-js6gfc7j.js";var _=typeof window<`u`,v,y=e=>v=e,b=Symbol();function x(e){return e&&typeof e==`object`&&Object.prototype.toString.call(e)===`[object Object]`&&typeof e.toJSON!=`function`}var S=typeof window==`object`&&window.window===window?window:typeof self==`object`&&self.self===self?self:typeof global==`object`&&global.global===global?global:typeof globalThis==`object`?globalThis:{HTMLElement:null};function C(e,{autoBom:t=!1}={}){return t&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob([``,e],{type:e.type}):e}function w(e,t,n){let r=new XMLHttpRequest;r.open(`GET`,e),r.responseType=`blob`,r.onload=function(){k(r.response,t,n)},r.onerror=function(){console.error(`could not download file`)},r.send()}function T(e){let t=new XMLHttpRequest;t.open(`HEAD`,e,!1);try{t.send()}catch{}return t.status>=200&&t.status<=299}function E(e){try{e.dispatchEvent(new MouseEvent(`click`))}catch{let t=new MouseEvent(`click`,{bubbles:!0,cancelable:!0,view:window,detail:0,screenX:80,screenY:20,clientX:80,clientY:20,ctrlKey:!1,altKey:!1,shiftKey:!1,metaKey:!1,button:0,relatedTarget:null});e.dispatchEvent(t)}}var D=typeof navigator==`object`?navigator:{userAgent:``},O=/Macintosh/.test(D.userAgent)&&/AppleWebKit/.test(D.userAgent)&&!/Safari/.test(D.userAgent),k=_?typeof HTMLAnchorElement<`u`&&`download`in HTMLAnchorElement.prototype&&!O?A:`msSaveOrOpenBlob`in D?j:M:()=>{};function A(e,t=`download`,n){let r=document.createElement(`a`);r.download=t,r.rel=`noopener`,typeof e==`string`?(r.href=e,r.origin===location.origin?E(r):T(r.href)?w(e,t,n):(r.target=`_blank`,E(r))):(r.href=URL.createObjectURL(e),setTimeout(function(){URL.revokeObjectURL(r.href)},4e4),setTimeout(function(){E(r)},0))}function j(e,t=`download`,n){if(typeof e==`string`)if(T(e))w(e,t,n);else{let t=document.createElement(`a`);t.href=e,t.target=`_blank`,setTimeout(function(){E(t)})}else navigator.msSaveOrOpenBlob(C(e,n),t)}function M(e,t,n,r){if(r||=open(``,`_blank`),r&&(r.document.title=r.document.body.innerText=`downloading...`),typeof e==`string`)return w(e,t,n);let i=e.type===`application/octet-stream`,a=/constructor/i.test(String(S.HTMLElement))||`safari`in S,o=/CriOS\/[\d]+/.test(navigator.userAgent);if((o||i&&a||O)&&typeof FileReader<`u`){let t=new FileReader;t.onloadend=function(){let e=t.result;if(typeof e!=`string`)throw r=null,Error(`Wrong reader.result type`);e=o?e:e.replace(/^data:[^;]*;/,`data:attachment/file;`),r?r.location.href=e:location.assign(e),r=null},t.readAsDataURL(e)}else{let t=URL.createObjectURL(e);r?r.location.assign(t):location.href=t,r=null,setTimeout(function(){URL.revokeObjectURL(t)},4e4)}}var{assign:ee}=Object;function N(){let e=u(!0),t=e.run(()=>f({})),r=[],i=[],a=n({install(e){y(a),a._a=e,e.provide(b,a),e.config.globalProperties.$pinia=a,i.forEach(e=>r.push(e)),i=[]},use(e){return this._a?r.push(e):i.push(e),this},_p:r,_a:null,_e:e,_s:new Map,state:t});return a}var P=()=>{};function F(e,t,n,a=P){e.add(t);let o=()=>{e.delete(t)&&a()};return!n&&r()&&i(o),o}function I(e,...t){e.forEach(e=>{e(...t)})}var L=e=>e(),R=Symbol(),z=Symbol();function B(e,t){e instanceof Map&&t instanceof Map?t.forEach((t,n)=>e.set(n,t)):e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(let n in t){if(!Object.hasOwn(t,n))continue;let r=t[n],i=e[n];x(i)&&x(r)&&Object.hasOwn(e,n)&&!d(r)&&!l(r)?e[n]=B(i,r):e[n]=r}return e}var V=Symbol();function H(e){return!e||typeof e!=`object`||!Object.hasOwn(e,V)}var{assign:U}=Object;function W(e){return!!(d(e)&&e.effect)}function G(t,r,i,a){let{state:o,actions:s,getters:c}=r,l=i.state.value[t],u;function d(){return l||(i.state.value[t]=o?o():{}),U(e(i.state.value[t]),s,Object.keys(c||{}).reduce((e,r)=>(e[r]=n(h(()=>{y(i);let e=i._s.get(t);return c[r].call(e,e)})),e),{}))}return u=K(t,d,r,i,a,!0),u}function K(e,t,n={},r,i,c){let f,p=U({actions:{}},n),m={deep:!0},h,_,v=new Set,b=new Set,x=r.state.value[e];!c&&!x&&(r.state.value[e]={});let S;function C(t){let n;h=_=!1,typeof t==`function`?(t(r.state.value[e]),n={type:`patch function`,storeId:e,events:void 0}):(B(r.state.value[e],t),n={type:`patch object`,payload:t,storeId:e,events:void 0});let i=S=Symbol();o().then(()=>{S===i&&(h=!0)}),_=!0,I(v,n,r.state.value[e])}let w=c?function(){let{state:e}=n,t=e?e():{};this.$patch(e=>{U(e,t)})}:P;function T(){f.stop(),v.clear(),b.clear(),r._s.delete(e)}let E=(t,n=``)=>{if(R in t)return t[z]=n,t;let i=function(){y(r);let n=Array.from(arguments),a=new Set,o=new Set;function s(e){a.add(e)}function c(e){o.add(e)}I(b,{args:n,name:i[z],store:D,after:s,onError:c});let l;try{l=t.apply(this&&this.$id===e?this:D,n)}catch(e){throw I(o,e),e}return l instanceof Promise?l.then(e=>(I(a,e),e)).catch(e=>(I(o,e),Promise.reject(e))):(I(a,l),l)};return i[R]=!0,i[z]=n,i},D=g({_p:r,$id:e,$onAction:F.bind(null,b),$patch:C,$reset:w,$subscribe(t,n={}){if(v.has(t))return P;let i=F(v,t,n.detached,()=>o()),o=f.run(()=>a(()=>r.state.value[e],r=>{(n.flush===`sync`?_:h)&&t({storeId:e,type:`direct`,events:void 0},r)},U({},m,n)));return i},$dispose:T});r._s.set(e,D);let O=(r._a&&r._a.runWithContext||L)(()=>r._e.run(()=>(f=u()).run(()=>t({action:E}))));for(let t in O){let n=O[t];d(n)&&!W(n)||l(n)?c||(x&&H(n)&&(d(n)?n.value=x[t]:B(n,x[t])),r.state.value[e][t]=n):typeof n==`function`&&(O[t]=E(n,t),p.actions[t]=n)}return U(D,O),U(s(D),O),Object.defineProperty(D,"$state",{get:()=>r.state.value[e],set:e=>{C(t=>{U(t,e)})}}),r._p.forEach(e=>{let t=f.run(()=>e({store:D,app:r._a,pinia:r,options:p}));U(D,t)}),x&&c&&n.hydrate&&n.hydrate(D.$state,x),h=!0,_=!0,D}function q(e,n,r){let i,a=typeof n==`function`;i=a?r:n;function o(r,o){let s=c();return r||=s?t(b,null):null,r&&y(r),r=v,r._s.has(e)||(a?K(e,n,i,r):G(e,i,r)),r._s.get(e)}return o.$id=e,o}var J=class extends Error{status;constructor(e,t){super(e),this.name=`ApiError`,this.status=t}};async function Y(e,t){let n=await fetch(e,t);if(!n.ok)throw new J((await n.text()).trim()||m(`common.errors.requestFailed`,{status:n.status}),n.status);return n.json()}function X(e,t){return Y(e,t)}function Z(e,t){return Y(e,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(t)})}function Q(e,t){return Y(e,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify(t)})}function $(e,t){return Y(e,{method:`PATCH`,headers:{"content-type":`application/json`},body:JSON.stringify(t)})}function te(e){return Y(e,{method:`DELETE`})}var ne=q(`console`,()=>{let e=p(null),t=f(`idle`),n=f(null),r=h(()=>{let t=e.value;return t?t.personalSpaces.find(({id:e})=>e===t.activePersonalSpaceId)??t.personalSpaces[0]??null:null}),i=h(()=>e.value?.mode===`connected`?`ready`:e.value?.mode===`degraded`?`error`:`disconnected`);async function a(){t.value=`loading`;try{e.value=await X(`/api/state`),t.value=`ready`}catch(e){t.value=`error`,u(e)}}async function o(t){try{let n=await $(`/api/capture-policy`,{enabled:t});e.value&&={...e.value,capturePolicy:n},l(m(t?`console.captureNotices.enabled`:`console.captureNotices.disabled`))}catch(e){u(e)}}async function s(t){try{let n=await $(`/api/agent-access-policy`,{enabled:t});e.value&&={...e.value,agentAccessPolicy:n},l(m(t?`console.agentAccess.enabledNotice`:`console.agentAccess.disabledNotice`))}catch(e){u(e)}}function c(t){return e.value?.capabilities?.[t]===!0}function l(e){n.value={message:e,tone:`success`}}function u(e){n.value={message:e instanceof Error?e.message:m(`common.errors.operationFailed`),tone:`error`}}function d(){n.value=null}return{state:e,runtimeStatus:t,feedback:n,activePersonalSpace:r,publicRuntimeStatus:i,refresh:a,updateCapturePolicy:o,updateAgentAccessPolicy:s,hasCapability:c,notify:l,reportError:u,clearFeedback:d}});export{Z as a,$ as i,te as n,Q as o,X as r,N as s,ne as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{J as e,Z as t,a as n}from"./i18n-js6gfc7j.js";import{r}from"./console-BT1P2Db4.js";var i=[`codex`,`claude_code`,`cursor`,`gemini_cli`,`kiro`,`other`],a={codex:`Codex`,claude_code:`Claude Code`,cursor:`Cursor`,gemini_cli:`Gemini CLI`,kiro:`Kiro`,other:`Other Agent`},o=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,s=/^[^\u0000-\u001f\u007f]{1,512}$/,c=new Set([`about`,`blob`,`data`,`file`,`javascript`]),l={codex:{enabled:!0,idFormat:`uuid`,appName:`Codex`,urlTemplate:`codex://threads/{id}`},claude_code:{enabled:!1,idFormat:`any`,appName:`Claude Code`,urlTemplate:``},cursor:{enabled:!1,idFormat:`any`,appName:`Cursor`,urlTemplate:``},gemini_cli:{enabled:!1,idFormat:`any`,appName:`Gemini CLI`,urlTemplate:``},kiro:{enabled:!1,idFormat:`any`,appName:`Kiro`,urlTemplate:``},other:{enabled:!1,idFormat:`any`,appName:`Other Agent`,urlTemplate:``}};function u(e={}){let t=e.source_application?.trim().toLocaleLowerCase().replaceAll(`-`,`_`).replaceAll(` `,`_`);if(t&&a[t])return t;let n=`${e.source_kind??``} ${e.source_description??``}`.toLocaleLowerCase();return n.includes(`claude`)?`claude_code`:n.includes(`cursor`)?`cursor`:n.includes(`gemini`)?`gemini_cli`:n.includes(`kiro`)?`kiro`:n.includes(`codex`)?`codex`:`other`}function d(e){let t=u(e);return t===`other`?n(`knowledge.domain.actors.otherAgent`):a[t]}function f(e){return a[e]}function p(e={},t=l){if(m(e,t)!==`available`)return null;let n=t[u(e)],r=e.session_id.trim();return n.urlTemplate.replace(`{id}`,encodeURIComponent(r))}function m(e={},t=l){let n=t[u(e)];return n?.enabled?_(e.session_id?.trim()??``,n.idFormat)?v(n.urlTemplate)?`available`:`invalid_template`:`invalid_id`:`disabled`}function h(e={},t=l){let n=t[u(e)];return n?.enabled&&n.appName.trim()?n.appName.trim():null}async function g(e={},t=globalThis.navigator?.clipboard){return!e.session_id||!t?.writeText?!1:(await t.writeText(e.session_id),!0)}function _(e,t){return s.test(e)?t===`any`||o.test(e):!1}function v(e){if(e.split(`{id}`).length!==2||/\s/.test(e))return!1;let t=/^([a-z][a-z0-9+.-]*):/i.exec(e)?.[1]?.toLocaleLowerCase();return!!t&&!c.has(t)}var y=t(w(l)),b=null;function x(){return C(),e(y)}function S(e){y.value=w(e)}function C({force:e=!1}={}){return!e&&b||(b=r(`/api/system/settings`).then(e=>{S(e.configured.conversationLaunchers)}).catch(()=>void 0)),b}function w(e){return Object.fromEntries(i.map(t=>[t,{...l[t],...e?.[t]??{}}]))}export{d as a,p as c,g as i,x as n,f as o,i as r,h as s,S as t};
|