fuli-context 0.11.0 → 0.11.1
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/dist/web/assets/{AboutPage-CKq4IRHd.js → AboutPage-cW9hDghN.js} +1 -1
- package/dist/web/assets/{AgentConversations-DfXiFvBN.js → AgentConversations-CGznTWuV.js} +1 -1
- package/dist/web/assets/{AgentHand-BBM-sKh2.js → AgentHand-DkyF4vgk.js} +1 -1
- package/dist/web/assets/{AgentName-C_6R80nP.js → AgentName-C1mAVr-v.js} +1 -1
- package/dist/web/assets/AgentProfilePage-pKUR0rfj.js +1 -0
- package/dist/web/assets/AgentsDirectoryPage-CUlbT2hD.js +1 -0
- package/dist/web/assets/{ConnectionsPage-BoC6kXgs.js → ConnectionsPage-CuDHIJXu.js} +1 -1
- package/dist/web/assets/{EmployeeRecruitDialog-BVyclQAJ.js → EmployeeRecruitDialog-D9QfGipd.js} +1 -1
- package/dist/web/assets/{EmployeeWorkbenchPage-D2GvYraI.js → EmployeeWorkbenchPage-DAtvGney.js} +1 -1
- package/dist/web/assets/{KnowledgeEditDialog-a0AKWics.js → KnowledgeEditDialog-a-5rasG0.js} +1 -1
- package/dist/web/assets/{KnowledgeInspector-DMg9yJZ2.js → KnowledgeInspector-BGsqjNY2.js} +1 -1
- package/dist/web/assets/{KnowledgeOrganizerPage-BgsHM3Qw.js → KnowledgeOrganizerPage-BndgUsHS.js} +1 -1
- package/dist/web/assets/KnowledgePage-CQweO0YJ.js +1 -0
- package/dist/web/assets/{KnowledgeWorkspace-BtRq9fvC.js → KnowledgeWorkspace-BtUjKTLb.js} +1 -1
- package/dist/web/assets/{NotFoundPage-D-7jLz3o.js → NotFoundPage-BmQTTqQn.js} +1 -1
- package/dist/web/assets/{OverviewPage-BHPc-XxY.js → OverviewPage-C73HyTsM.js} +1 -1
- package/dist/web/assets/{PersonalProfilePage-C00iV0Kx.js → PersonalProfilePage-BMuOrppx.js} +1 -1
- package/dist/web/assets/PersonalProjectsPage-Cq9_kFvs.js +1 -0
- package/dist/web/assets/{ProjectAgentFirstTask-CrCWEYgn.js → ProjectAgentFirstTask-CaHvOjkp.js} +1 -1
- package/dist/web/assets/{ProjectAgentsPage-DNLNjYp-.css → ProjectAgentsPage-DWGkgIsr.css} +1 -1
- package/dist/web/assets/{ProjectAgentsPage-BzztLMH-.js → ProjectAgentsPage-WVcNdzVi.js} +2 -2
- package/dist/web/assets/{ProjectScopePicker-CMxn3txv.js → ProjectScopePicker-zAgiaZKL.js} +1 -1
- package/dist/web/assets/{PublicProjectsPage-DQVtvhOS.js → PublicProjectsPage-DL093f65.js} +1 -1
- package/dist/web/assets/{ReviewPage-BZhvyDWc.js → ReviewPage-D_NIhPx8.js} +1 -1
- package/dist/web/assets/{RoundtablesPage-CVebTXQa.js → RoundtablesPage-CdVVyZE-.js} +1 -1
- package/dist/web/assets/{SettingsPage-1knvfOW6.js → SettingsPage-CbLaau8Q.js} +1 -1
- package/dist/web/assets/{SharedJefaReportPage-BCVq8u0P.js → SharedJefaReportPage-aygd6wvb.js} +1 -1
- package/dist/web/assets/{UiDialog-Da1P10f4.js → UiDialog-Q7fsJUoO.js} +1 -1
- package/dist/web/assets/{UiDisclosure-8wE8YuE4.js → UiDisclosure-BS-muK5j.js} +1 -1
- package/dist/web/assets/{UiSegmented-BKZXc8QF.js → UiSegmented-CT28bxqw.js} +1 -1
- package/dist/web/assets/{UiSelect-D5Xj5Ec4.js → UiSelect-DcGpPQQo.js} +1 -1
- package/dist/web/assets/{WritingTastePage-B8-etOBn.js → WritingTastePage-CYlwAFqV.js} +1 -1
- package/dist/web/assets/{attention-store-BfxtL9EV.js → attention-store-D-qIFRIb.js} +1 -1
- package/dist/web/assets/{catalog-6SN9i3WR.js → catalog-UDv854JN.js} +1 -1
- package/dist/web/assets/{client-CUTkF3t4.js → client-DLS5FZBI.js} +1 -1
- package/dist/web/assets/{console-CG8tdtSs.js → console-CqzwSo7a.js} +1 -1
- package/dist/web/assets/{conversation-launcher-settings-CyZkLJg7.js → conversation-launcher-settings-DRoIz42V.js} +1 -1
- package/dist/web/assets/{i18n-CCMR4gDS.js → i18n-b14l2pQA.js} +2 -2
- package/dist/web/assets/{identity-C1eN-FSB.js → identity-BWbPmZZf.js} +1 -1
- package/dist/web/assets/{index-sLDKI6R-.js → index-D1OHIz4c.js} +3 -3
- package/dist/web/assets/{model-l-sAqtW_.js → model-DupZy8Qb.js} +1 -1
- package/dist/web/assets/{personal-profile-graph-BD1Y6TDS.js → personal-profile-graph-BPTtMJTZ.js} +1 -1
- package/dist/web/assets/{shared-report-B46dxlCR.js → shared-report-BYnLhmCZ.js} +1 -1
- package/dist/web/assets/{useAgentRoster-DdxoKDEE.js → useAgentRoster-ep7SpKv1.js} +1 -1
- package/dist/web/assets/{useApi-CROJJdhE-DlOiu8lP.js → useApi-CROJJdhE-CEQAEuug.js} +1 -1
- package/dist/web/assets/{vue-router-DjqEU4W2.js → vue-router-B6ZjK-Br.js} +1 -1
- package/dist/web/index.html +11 -11
- package/docs/agent-roundtable.md +17 -1
- package/graph-provider/fuli_graph/project_agent_context_models.py +5 -1
- package/graph-provider/fuli_graph/project_agent_delegations.py +118 -0
- package/graph-provider/fuli_graph/project_agent_employee_numbers.py +41 -0
- package/graph-provider/fuli_graph/project_agent_memory_routes.py +13 -0
- package/graph-provider/fuli_graph/project_agent_models.py +1 -0
- package/graph-provider/fuli_graph/project_agent_team_growth.py +2 -2
- package/graph-provider/fuli_graph/runtime.py +7 -0
- package/graph-provider/fuli_graph/store_project_agent_context.py +52 -4
- package/graph-provider/fuli_graph/store_project_agent_coordination_policy.py +16 -1
- package/graph-provider/fuli_graph/store_project_agent_task_staffing.py +3 -2
- package/graph-provider/fuli_graph/store_project_agents.py +31 -5
- package/graph-provider/fuli_graph/system_agents.py +3 -1
- package/graph-provider/pyproject.toml +1 -1
- package/npm-shrinkwrap.json +2 -2
- package/package.json +1 -1
- package/src/agent-roundtable/service.js +34 -5
- package/src/agent-roundtable/wake.js +2 -1
- package/src/agents/identity-receipt.js +20 -2
- package/src/graphiti/federated-application.js +5 -1
- package/src/graphiti/project-agent-mapping.js +2 -0
- package/src/graphiti/project-agent-task-entry.js +21 -3
- package/src/graphiti/project-agent-team-context.js +4 -1
- package/src/graphiti/provider-client.js +9 -0
- package/src/graphiti/task-entry-preferences.js +12 -4
- package/src/graphiti/task-entry-project-scope.js +67 -0
- package/dist/web/assets/AgentProfilePage-Cz-i1fRD.js +0 -1
- package/dist/web/assets/AgentsDirectoryPage-BI0EFz6y.js +0 -1
- package/dist/web/assets/KnowledgePage-kn8MqUCO.js +0 -1
- package/dist/web/assets/PersonalProjectsPage-CFNkdHSo.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{A as e,B as t,C as n,M as r,P as i,R as a,S as o,V as s,X as c,_ as l,a as u,b as d,g as f,it as p,m,n as ee,nt as h,rt as g,tt as _,u as v,v as y,w as b,y as x}from"./i18n-CCMR4gDS.js";import{t as te}from"./console-CG8tdtSs.js";import{i as ne,n as S,o as C,r as w}from"./client-CUTkF3t4.js";import{t as T}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{n as E,t as D}from"./UiDialog-Da1P10f4.js";import{t as O}from"./vue-router-DjqEU4W2.js";import{t as re}from"./UiSelect-D5Xj5Ec4.js";import{t as k}from"./UiSegmented-BKZXc8QF.js";import{n as A,t as j}from"./KnowledgeInspector-DMg9yJZ2.js";import{i as M,n as ie,t as N}from"./KnowledgeEditDialog-a0AKWics.js";import{C as P,D as F,_ as I,u as ae,v as L,x as oe}from"./model-l-sAqtW_.js";import{t as se}from"./personal-profile-graph-BD1Y6TDS.js";function ce(e,t=[]){let n=[],r=e.filter(e=>!e.invalidAt);for(let e=0;e<r.length;e+=1)for(let i=e+1;i<r.length;i+=1){let a=r[e],o=r[i];if(!q(a,o)||!J(a,o)||Y(a,o))continue;let[s,c]=X(a,o),l=W(V(s),V(c)),d=K(l)?`complementary`:`review`,f=t.find(e=>e.status===`ai_pending`&&z(e,s,c))??null;n.push({id:ue(s,c),preferenceKey:B(s),scopeKey:H(s),scopeLabel:U(s),left:s,right:c,difference:l,relation:d,recommendedAction:d===`complementary`?`merge`:null,reason:u(`preferences.shared.conflictReason`,{key:B(s)}),aiRecord:f})}return n.sort((e,t)=>{let n=ee();return e.scopeKey.localeCompare(t.scopeKey,n)||e.preferenceKey.localeCompare(t.preferenceKey,n)})}function R(e){return[e.left_item_id,e.right_item_id]}function z(e,t,n){let r=new Set([`${e.left_item_kind}:${e.left_item_id}`,`${e.right_item_kind}:${e.right_item_id}`]);return r.has(`${t.itemKind}:${t.id}`)&&r.has(`${n.itemKind}:${n.id}`)}function B(e){let t=e.raw.attributes??{};return String(t.preferenceKey??t.preference_key??e.title).trim()}function V(e){return e.body.trim()}function H(e){return e.preferenceScope===`project`&&e.preferenceProjectId?`project:${e.preferenceProjectId}`:`global`}function U(e){return e.preferenceScope===`project`&&e.preferenceProjectId?u(`preferences.shared.projectScope`,{project:e.preferenceProjectId}):u(`preferences.shared.personalGlobal`)}function W(e,t){let n=Z(e),r=Z(t),i=new Set,a=[],o=[];for(let e of n){let t=r.findIndex((t,n)=>!i.has(n)&&de(e,t));if(t<0){o.push(e);continue}i.add(t),a.push(fe(e,r[t]))}return{shared:a,leftOnly:o,rightOnly:r.filter((e,t)=>!i.has(t)),similarity:a.length/Math.max(n.length,r.length,1)}}function G(e,t){let n=[...Z(e)];for(let e of Z(t)){let t=n.findIndex(t=>de(t,e));if(t<0){n.push(e);continue}n[t]=fe(n[t],e)}if(!n.length)return``;let r=n.some(e=>e.length>24)?`;`:`、`;return n.join(r)}function K(e){return e.shared.length>0&&(e.leftOnly.length===0||e.rightOnly.length===0)}function q(e,t){return H(e)===H(t)}function J(e,t){return Q(B(e))===Q(B(t))}function Y(e,t){return Q(V(e))===Q(V(t))}function X(e,t){let n=le(e),r=le(t);return n===r?e.id.localeCompare(t.id)<=0?[e,t]:[t,e]:n<=r?[e,t]:[t,e]}function le(e){let t=L(e);if(!t)return 0;let n=new Date(t).getTime();return Number.isNaN(n)?0:n}function ue(e,t){return[e.itemKind,e.id,t.itemKind,t.id].join(`:`)}function Z(e){return e.split(/[\n\r,,、;;。.!!??]+/u).map(e=>e.trim()).filter(Boolean)}function de(e,t){let n=Q(e),r=Q(t);if(n===r)return!0;let i=n.length<=r.length?n:r,a=i===n?r:n;return i.length>=2&&a.includes(i)}function fe(e,t){return Q(e).length>=Q(t).length?e:t}function Q(e){return String(e??``).trim().toLocaleLowerCase().replace(/[“”‘’"'`]/gu,``).replace(/\s+/gu,` `)}var pe=[`aria-label`],me=[`aria-label`],he={class:`conflict-side-heading`},ge=[`aria-label`],_e={key:0},$={key:1,class:`ui-muted`},ve=[`disabled`],ye=[`aria-label`],be=[`aria-pressed`],xe={key:0},Se=[`aria-pressed`],Ce=[`aria-pressed`],we=[`disabled`,`aria-pressed`],Te={key:0,class:`conflict-resolution-detail`},Ee={class:`conflict-inline-options`},De={class:`ui-field`},Oe={key:1,class:`conflict-resolution-detail`},ke={class:`conflict-inline-options`},Ae={class:`conflict-impact-preview`},je={class:`ui-field conflict-resolution-reason`},Me={class:`conflict-footer-note`},Ne=T(b({__name:`PreferenceConflictDialog`,props:{conflict:{},personalSpaceId:{},projects:{}},emits:[`close`,`resolved`,`edit`],setup(e,{emit:ee}){let g=e,b=ee,S=te(),C=c(null),T=c(`right`),O=c(`right`),A=c(``),j=c(``),M=c(``),ie=c(``),N=c(!1),P=c(``),F=f(()=>{let e=g.conflict;if(!e)return[];let t=O.value===`left`?e.left:e.right;return g.projects.filter(({project_id:e})=>t.preferenceScope!==`project`||e!==t.preferenceProjectId)}),I=f(()=>F.value.length>0),oe=f(()=>F.value.map(e=>({value:e.project_id,label:e.profile.name}))),se=f(()=>{let e=g.conflict?.difference;return e?[{key:`shared`,label:u(`preferences.dialog.shared`),values:e.shared,empty:u(`preferences.dialog.noShared`)},{key:`left`,label:u(`preferences.dialog.onlyA`),values:e.leftOnly,empty:u(`preferences.dialog.noUnique`)},{key:`right`,label:u(`preferences.dialog.onlyB`),values:e.rightOnly,empty:u(`preferences.dialog.noUnique`)}]:[]}),ce=f(()=>{let e=g.conflict;if(!e||!C.value)return u(`preferences.dialog.impact.choose`);if(C.value===`merge`){let t=T.value===`left`?e.left:e.right,n=T.value===`left`?e.right:e.left;return u(`preferences.dialog.impact.merge`,{target:t.title,historical:n.title})}if(C.value===`keep_left`||C.value===`keep_right`){let t=C.value===`keep_left`?e.left:e.right,n=C.value===`keep_left`?e.right:e.left;return u(`preferences.dialog.impact.keep`,{kept:t.title,historical:n.title})}let t=O.value===`left`?e.left:e.right,n=F.value.find(({project_id:e})=>e===A.value);return n?u(`preferences.dialog.impact.split`,{item:t.title,project:n.profile.name}):u(`preferences.dialog.impact.chooseProject`)});a(()=>g.conflict,e=>{e&&(T.value=`right`,O.value=`right`,j.value=G(V(e.right),V(e.left)),C.value=e.recommendedAction,A.value=``,P.value=``,z(e.recommendedAction))},{immediate:!0}),a([O,F],()=>{A.value&&F.value.some(({project_id:e})=>e===A.value)||(A.value=F.value[0]?.project_id??``)},{immediate:!0});function R(e){N.value||(C.value=e,(!M.value.trim()||M.value===ie.value)&&z(e))}function z(e){let t=g.conflict,n=t&&e?q(e,t):``;ie.value=n,M.value=n}async function B(){if(N.value)return;let e=g.conflict;if(!e||!C.value)return J(u(`preferences.dialog.errors.actionRequired`));if(!M.value.trim())return J(u(`preferences.dialog.errors.reasonRequired`));if(C.value===`merge`&&!j.value.trim())return J(u(`preferences.dialog.errors.mergedValueRequired`));if(C.value===`split_scope`&&!A.value)return J(u(`preferences.dialog.errors.projectRequired`));let t=C.value,n=M.value.trim(),r=g.personalSpaceId;N.value=!0,P.value=``;try{t===`merge`?await H(e):t===`split_scope`?await W(e):await U(e,t),e.aiRecord&&await ne(`/api/preference-conflicts/${encodeURIComponent(e.aiRecord.id)}/complete`,{personalSpaceId:r,resolution:t,reason:n}),S.notify(u(`preferences.dialog.resolved`)),b(`resolved`),b(`close`)}catch(e){P.value=e instanceof Error?e.message:u(`preferences.dialog.errors.failed`),S.reportError(e)}finally{N.value=!1}}async function H(e){let t=M.value.trim(),n=g.personalSpaceId,r=T.value===`left`?e.left:e.right,i=T.value===`left`?e.right:e.left,a={personalSpaceId:n,personalProjectId:null,action:`update`,reason:t};r.itemKind===`entity`?(a.name=r.title,a.summary=j.value.trim()):a.fact=j.value.trim(),r.classificationExplicit&&r.originQuadrant!==`unclassified`&&(a.originQuadrant=r.originQuadrant,a.confirmationStatus=`confirmed`,a.confirmationBasis={existenceReason:u(`preferences.dialog.audit.mergedFromConflict`,{reason:e.reason}),quadrantReason:r.confirmationBasis?.quadrant_reason||r.reasoningSummary||u(`preferences.dialog.audit.keepQuadrant`),proposedBy:r.confirmationBasis?.proposed_by?K(r.confirmationBasis.proposed_by):{kind:`import`,label:u(`preferences.dialog.audit.historicalRecord`)},confirmedBy:{kind:`user`,label:u(`preferences.dialog.audit.user`)},confirmedAt:new Date().toISOString()}),await w(`/api/knowledge/${r.itemKind}/${encodeURIComponent(r.id)}`,a),await w(`/api/knowledge/${i.itemKind}/${encodeURIComponent(i.id)}`,{personalSpaceId:n,personalProjectId:null,action:`invalidate`,reason:t,replacementItemId:r.id,replacementItemKind:r.itemKind})}async function U(e,t){let n=t===`keep_left`?e.left:e.right,r=t===`keep_left`?e.right:e.left;await w(`/api/knowledge/${r.itemKind}/${encodeURIComponent(r.id)}`,{personalSpaceId:g.personalSpaceId,personalProjectId:null,action:`invalidate`,reason:M.value.trim(),replacementItemId:n.id,replacementItemKind:n.itemKind})}async function W(e){let t=O.value===`left`?e.left:e.right;await ne(`/api/knowledge/${t.itemKind}/${encodeURIComponent(t.id)}/preference-scope`,{personalSpaceId:g.personalSpaceId,scope:`project`,projectId:A.value,reason:M.value.trim()})}function K(e){return{kind:e.kind,label:e.label??null}}function q(e,t){return e===`merge`?u(`preferences.dialog.defaultReason.merge`):e===`keep_left`?u(`preferences.dialog.defaultReason.keepLeft`,{title:t.left.title}):e===`keep_right`?u(`preferences.dialog.defaultReason.keepRight`,{title:t.right.title}):u(`preferences.dialog.defaultReason.split`)}function J(e){P.value=e}return(a,c)=>e.conflict?(r(),y(D,{key:0,open:``,class:`conflict-resolution-dialog`,size:`xl`,busy:N.value,error:P.value,title:_(u)(`preferences.dialog.title`),description:_(u)(`preferences.dialog.intro`,{reason:e.conflict.reason}),onClose:c[10]||=e=>b(`close`)},{footer:t(()=>[l(`span`,Me,p(_(u)(`preferences.dialog.pendingCopy`)),1),n(E,{variant:`ghost`,disabled:N.value,onClick:c[9]||=e=>b(`close`)},{default:t(()=>[o(p(_(u)(`preferences.dialog.defer`)),1)]),_:1},8,[`disabled`]),n(E,{variant:`primary`,disabled:!C.value,busy:N.value,"busy-label":_(u)(`preferences.dialog.processing`),onClick:B},{default:t(()=>[o(p(_(u)(`preferences.dialog.confirm`)),1)]),_:1},8,[`disabled`,`busy`,`busy-label`])]),default:t(()=>[l(`section`,{class:`conflict-pair-context`,"aria-label":_(u)(`preferences.dialog.basisAria`)},[l(`span`,null,[o(p(_(u)(`preferences.dialog.preferenceKey`)),1),l(`strong`,null,p(e.conflict.preferenceKey),1)]),l(`span`,null,[o(p(_(u)(`preferences.dialog.effectiveScope`)),1),l(`strong`,null,p(e.conflict.scopeLabel),1)]),l(`span`,null,[o(p(_(u)(`preferences.dialog.suggestion`)),1),l(`strong`,null,p(e.conflict.recommendedAction===`merge`?_(u)(`preferences.dialog.mergeSuggestion`):_(u)(`preferences.dialog.reviewSuggestion`)),1)])],8,pe),l(`section`,{class:`conflict-comparison`,"aria-label":_(u)(`preferences.dialog.comparisonAria`)},[(r(),d(m,null,i([`left`,`right`],r=>l(`article`,{key:r,class:h([`conflict-side`,`conflict-side-${r}`])},[l(`div`,he,[l(`span`,null,p(_(u)(r===`left`?`preferences.dialog.older`:`preferences.dialog.newer`)),1),l(`time`,null,p(_(ae)(_(L)(e.conflict[r]))),1)]),l(`h3`,null,p(e.conflict[r].title),1),l(`p`,null,p(_(V)(e.conflict[r])),1),l(`small`,null,p(_(u)(`preferences.dialog.sourceCount`,{count:e.conflict[r].evidence.length}))+` · `+p(e.conflict[r].id),1),n(E,{size:`sm`,variant:`ghost`,onClick:t=>b(`edit`,e.conflict[r])},{default:t(()=>[o(p(_(u)(r===`left`?`preferences.dialog.editA`:`preferences.dialog.editB`)),1)]),_:2},1032,[`onClick`])],2)),64))],8,me),l(`section`,{class:`conflict-difference`,"aria-label":_(u)(`preferences.dialog.differenceAria`)},[(r(!0),d(m,null,i(se.value,e=>(r(),d(`div`,{key:e.key},[l(`span`,null,p(e.label),1),e.values.length?(r(),d(`p`,_e,[(r(!0),d(m,null,i(e.values,e=>(r(),d(`b`,{key:e},p(e),1))),128))])):(r(),d(`p`,$,p(e.empty),1))]))),128))],8,ge),l(`fieldset`,{class:`conflict-inputs`,disabled:N.value},[l(`section`,{class:`conflict-resolution-options`,"aria-label":_(u)(`preferences.dialog.actionsAria`)},[l(`button`,{type:`button`,"aria-pressed":C.value===`merge`,onClick:c[0]||=e=>R(`merge`)},[l(`strong`,null,p(_(u)(`preferences.dialog.actions.merge`)),1),l(`span`,null,p(_(u)(`preferences.dialog.actions.mergeCopy`)),1),e.conflict.recommendedAction===`merge`?(r(),d(`em`,xe,p(_(u)(`preferences.dialog.actions.recommended`)),1)):x(``,!0)],8,be),l(`button`,{type:`button`,"aria-pressed":C.value===`keep_left`,onClick:c[1]||=e=>R(`keep_left`)},[l(`strong`,null,p(_(u)(`preferences.dialog.actions.keepA`)),1),l(`span`,null,p(_(u)(`preferences.dialog.actions.keepACopy`)),1)],8,Se),l(`button`,{type:`button`,"aria-pressed":C.value===`keep_right`,onClick:c[2]||=e=>R(`keep_right`)},[l(`strong`,null,p(_(u)(`preferences.dialog.actions.keepB`)),1),l(`span`,null,p(_(u)(`preferences.dialog.actions.keepBCopy`)),1)],8,Ce),l(`button`,{type:`button`,disabled:!I.value,"aria-pressed":C.value===`split_scope`,onClick:c[3]||=e=>R(`split_scope`)},[l(`strong`,null,p(_(u)(`preferences.dialog.actions.split`)),1),l(`span`,null,p(I.value?_(u)(`preferences.dialog.actions.splitCopy`):_(u)(`preferences.dialog.actions.noProjects`)),1)],8,we)],8,ye),C.value===`merge`?(r(),d(`section`,Te,[l(`div`,Ee,[l(`span`,null,p(_(u)(`preferences.dialog.canonicalIdentity`)),1),n(k,{modelValue:T.value,"onUpdate:modelValue":c[4]||=e=>T.value=e,label:_(u)(`preferences.dialog.mergeIdentityAria`),options:[{value:`left`,label:_(u)(`preferences.dialog.identityA`)},{value:`right`,label:_(u)(`preferences.dialog.identityB`)}]},null,8,[`modelValue`,`label`,`options`])]),l(`label`,De,[o(p(_(u)(`preferences.dialog.mergedContent`)),1),s(l(`textarea`,{"onUpdate:modelValue":c[5]||=e=>j.value=e,rows:`4`,maxlength:`4096`},null,512),[[v,j.value]])])])):x(``,!0),C.value===`split_scope`?(r(),d(`section`,Oe,[l(`div`,ke,[l(`span`,null,p(_(u)(`preferences.dialog.adjustRecord`)),1),n(k,{modelValue:O.value,"onUpdate:modelValue":c[6]||=e=>O.value=e,label:_(u)(`preferences.dialog.splitRecordAria`),options:[{value:`left`,label:`A`},{value:`right`,label:`B`}]},null,8,[`modelValue`,`label`])]),n(re,{modelValue:A.value,"onUpdate:modelValue":c[7]||=e=>A.value=e,field:``,label:_(u)(`preferences.dialog.projectOnly`),placeholder:_(u)(`preferences.dialog.chooseProject`),options:oe.value},null,8,[`modelValue`,`label`,`placeholder`,`options`])])):x(``,!0),l(`section`,Ae,[l(`span`,null,p(_(u)(`preferences.dialog.impactTitle`)),1),l(`p`,null,p(ce.value),1)]),l(`label`,je,[o(p(_(u)(`preferences.dialog.reason`)),1),s(l(`textarea`,{"onUpdate:modelValue":c[8]||=e=>M.value=e,rows:`2`,maxlength:`2000`},null,512),[[v,M.value]])])],8,ve)]),_:1},8,[`busy`,`error`,`title`,`description`])):x(``,!0)}}),[[`__scopeId`,`data-v-57134f7d`]]),Pe={class:`writing-taste-milestone__progress`,"aria-hidden":`true`},Fe={class:`writing-taste-milestone__action`},Ie=T(b({__name:`WritingTasteMilestone`,props:{profile:{}},setup(e){let n=e,i=f(()=>n.profile?.status===`active`?u(`writingTaste.milestone.activeTitle`):n.profile?.status===`preview_ready`?u(`writingTaste.milestone.previewTitle`):u(`writingTaste.milestone.collectingTitle`)),a=f(()=>{let e=n.profile?.readiness;if(!e)return 0;let t=[o(e.rule_count,e.thresholds.rule_count),o(e.evidence_count,e.thresholds.evidence_count),o(e.session_count,e.thresholds.session_count),o(e.observation_day_count,e.thresholds.observation_day_count)];return Math.round(t.reduce((e,t)=>e+t,0)/t.length*100)});function o(e,t){return t<=0?1:Math.min(Math.max(e/t,0),1)}return(n,o)=>e.profile?(r(),y(_(O),{key:0,to:`/preferences/writing`,class:h([`writing-taste-milestone`,`status-${e.profile.status}`]),"aria-label":_(u)(`writingTaste.milestone.aria`)},{default:t(()=>[l(`strong`,null,p(i.value),1),l(`span`,Pe,[l(`i`,{style:g({transform:`scaleX(${a.value/100})`})},null,4)]),l(`small`,null,p(_(u)(`writingTaste.milestone.rules`,{current:e.profile.readiness.rule_count,target:e.profile.readiness.thresholds.rule_count}))+` · `+p(_(u)(`writingTaste.milestone.sessions`,{current:e.profile.readiness.session_count,target:e.profile.readiness.thresholds.session_count})),1),l(`span`,Fe,p(_(u)(`writingTaste.milestone.open`))+` →`,1)]),_:1},8,[`class`,`aria-label`])):x(``,!0)}}),[[`__scopeId`,`data-v-9f3e6330`]]),Le={class:`view vue-personal-profile`},Re=[`aria-label`],ze=[`aria-label`,`aria-pressed`],Be=[`aria-label`,`aria-pressed`],Ve=[`aria-label`,`aria-pressed`],He=[`aria-label`,`aria-pressed`],Ue=[`aria-label`],We={class:`personal-profile-toolbar`},Ge={class:`personal-profile-filter-groups`},Ke=[`aria-label`],qe=[`aria-pressed`,`onClick`],Je={class:`personal-profile-toolbar-actions`},Ye={key:0,class:`muted`},Xe={key:1,class:`muted`},Ze={key:2,class:`muted`},Qe=[`disabled`],$e={key:3,class:`view-loading`,"aria-busy":`true`},et=[`aria-label`],tt={class:`preference-conflict-list`},nt={class:`preference-conflict-card-heading`},rt={class:`preference-conflict-pair`},it={key:0},at={class:`preference-conflict-actions`},ot=[`disabled`,`onClick`],st=[`onClick`],ct={key:1,class:`empty-state`},lt={class:`personal-profile-table-head`,"aria-hidden":`true`},ut=[`onClick`],dt={class:`personal-profile-copy`},ft={class:`personal-profile-origin`},pt={class:`empty-state`},mt=T(b({__name:`PersonalProfilePage`,setup(s){let g=te(),v=c(null),b=c(null),w=c(!1),T=f(()=>w.value&&!v.value),E=M(T),D=c(`all`),O=c(`all`),k=c(`all`),z=c(!1),B=c(null),H=c(null),U=c(null),W=c(null),G=c([]),K=c(``),q=0,J=null,Y=f(()=>oe(v.value)),X=f(()=>ce(Y.value,G.value)),le=f(()=>new Set(X.value.flatMap(({left:e,right:t})=>[e.id,t.id]))),ue=f(()=>new Set(G.value.filter(({status:e,resolved_by:t})=>e===`resolved`&&t===`agent`).flatMap(R))),Z=f(()=>Y.value.filter(e=>Se(e)&&(k.value===`all`||I(e)===k.value))),de=f(()=>JSON.stringify([D.value,O.value,k.value,z.value])),fe=f(()=>B.value?Z.value.findIndex(({id:e,itemKind:t})=>e===B.value?.id&&t===B.value?.itemKind):-1),Q=f(()=>X.value.filter(({left:e,right:t})=>Se(e)||Se(t))),pe=f(()=>[[`all`,u(`preferences.profile.filters.all`)],[`taste`,u(`preferences.profile.filters.taste`)],[`personality`,u(`preferences.profile.filters.personality`)],[`judgment_preference`,u(`preferences.profile.filters.judgment`)]]),me=f(()=>{let e=new Map((g.state?.personalProjects??[]).map(e=>[e.project_id,e.profile.name])),t=[...new Set(Y.value.filter(({preferenceScope:e,preferenceProjectId:t})=>e===`project`&&!!t).map(({preferenceProjectId:e})=>e))].sort((t,n)=>(e.get(t)??t).localeCompare(e.get(n)??n,ee()));return[{value:`all`,label:u(`preferences.profile.scopes.all`),meta:u(`common.counts.items`,{count:Y.value.length})},{value:`global`,label:u(`preferences.profile.scopes.global`),meta:u(`common.counts.items`,{count:Y.value.filter(({preferenceScope:e})=>e!==`project`).length})},...t.map(t=>({value:`project:${t}`,label:e.get(t)??t,meta:u(`preferences.profile.scopes.projectMeta`,{count:Y.value.filter(({preferenceScope:e,preferenceProjectId:n})=>e===`project`&&n===t).length}),search:t}))]}),he=f(()=>Y.value.filter(e=>I(e)===`confirmed`).length),ge=f(()=>Y.value.filter(e=>I(e)===`pending`).length),_e=f(()=>Y.value.filter(e=>I(e)===`agent_confirmed`).length);a(()=>g.activePersonalSpace?.id,(e,t)=>{e!==t&&(v.value=null,b.value=null,G.value=[],B.value=null,H.value=null,U.value=null,W.value=null,O.value=`all`),e?$(e):(q+=1,J?.abort(),J=null,w.value=!1)},{immediate:!0}),e(()=>{q+=1,J?.abort(),J=null}),a([D,O,k,z],()=>{B.value&&!Z.value.some(({id:e})=>e===B.value?.id)&&(B.value=null)}),a(me,e=>{e.some(({value:e})=>e===O.value)||(O.value=`all`)});async function $(e=g.activePersonalSpace?.id){if(!e)return;J?.abort();let t=++q,n=new AbortController;J=n,w.value=!0;try{let r=new URLSearchParams({personalSpaceId:e,limit:`500`}),i=new URLSearchParams({personalSpaceId:e,limit:`500`}),[a,o,s]=await Promise.all([se(e,n.signal),S(`/api/preference-conflicts?${r}`,{signal:n.signal}),S(`/api/writing-taste-profile?${i}`,{signal:n.signal}).catch(()=>null)]);if(t!==q||n.signal.aborted)return;v.value=a,G.value=Array.isArray(o)?o:[],b.value=ve(s)?s:null,B.value&&=Y.value.find(({id:e})=>e===B.value?.id)??null}catch(e){if(t!==q||n.signal.aborted)return;v.value=null,b.value=null,g.reportError(e)}finally{if(t!==q||n.signal.aborted)return;w.value=!1,J===n&&(J=null)}}function ve(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 ye(e){let t=F(e),n=X.value.find(({left:t,right:n})=>t.id===e.id||n.id===e.id);return n?.aiRecord?`${t} · ${u(`preferences.profile.statusSuffix.aiPending`)}`:n?`${t} · ${u(`preferences.profile.statusSuffix.conflict`)}`:ue.value.has(e.id)?`${t} · ${u(`preferences.profile.statusSuffix.aiResolved`)}`:t}function be(e){return`${e.itemKind}:${e.id}`}function xe(e){if(e.preferenceScope!==`project`||!e.preferenceProjectId)return u(`preferences.shared.personalGlobal`);let t=g.state?.personalProjects?.find(({project_id:t})=>t===e.preferenceProjectId);return u(`preferences.shared.projectOnly`,{project:t?.profile.name??e.preferenceProjectId})}function Se(e){if(D.value!==`all`&&e.profileAspect!==D.value||O.value===`global`&&e.preferenceScope===`project`)return!1;if(O.value.startsWith(`project:`)){let t=O.value.slice(8);return e.preferenceScope===`project`&&e.preferenceProjectId===t}return!0}function Ce(e){if(e.scopeKey===`global`)return u(`preferences.shared.personalGlobal`);let t=e.scopeKey.slice(8),n=g.state?.personalProjects?.find(({project_id:e})=>e===t);return u(`preferences.shared.projectOnly`,{project:n?.profile.name??t})}function we(e){D.value=e.profileAspect??`all`,O.value=e.preferenceScope===`project`&&e.preferenceProjectId?`project:${e.preferenceProjectId}`:`global`,z.value=!1,B.value=e}function Te(e){W.value=null,U.value=e}function Ee(e){let t=!z.value&&k.value===e?`all`:e;z.value=!1,k.value=t,t!==`all`&&(B.value=Z.value.at(0)??null)}function De(e=!1){let t=e||!z.value;z.value=t,t&&(k.value=`all`,B.value=null)}async function Oe(e){let t=g.activePersonalSpace?.id;if(!(!t||e.aiRecord)){K.value=e.id;try{let n=await ne(`/api/preference-conflicts/defer`,{personalSpaceId:t,conflictId:e.id,preferenceKey:e.preferenceKey,preferenceScope:e.left.preferenceScope??`global`,preferenceProjectId:e.left.preferenceProjectId,leftItemId:e.left.id,leftItemKind:e.left.itemKind,rightItemId:e.right.id,rightItemKind:e.right.itemKind,reason:u(`preferences.profile.deferReason`)});G.value=[n,...G.value.filter(({id:e})=>e!==n.id)],g.notify(u(`preferences.profile.deferNotice`))}catch(e){g.reportError(e)}finally{K.value=``}}}return(e,a)=>(r(),d(`section`,Le,[l(`div`,{class:`personal-profile-summary`,"aria-label":_(u)(`preferences.profile.summaryAria`)},[l(`button`,{type:`button`,class:`profile-summary-action state-confirmed`,"aria-label":_(u)(`preferences.profile.summary.confirmedAria`,{count:he.value}),"aria-pressed":!z.value&&k.value===`confirmed`,onClick:a[0]||=e=>Ee(`confirmed`)},[o(p(_(u)(`preferences.profile.summary.confirmed`)),1),l(`strong`,null,p(he.value),1)],8,ze),l(`button`,{type:`button`,class:`profile-summary-action state-agent-confirmed`,"aria-label":_(u)(`preferences.profile.summary.agentConfirmedAria`,{count:_e.value}),"aria-pressed":!z.value&&k.value===`agent_confirmed`,onClick:a[1]||=e=>Ee(`agent_confirmed`)},[o(p(_(u)(`preferences.profile.summary.agentConfirmed`)),1),l(`strong`,null,p(_e.value),1)],8,Be),l(`button`,{type:`button`,class:`profile-summary-action state-pending`,"aria-label":_(u)(`preferences.profile.summary.pendingAria`,{count:ge.value}),"aria-pressed":!z.value&&k.value===`pending`,onClick:a[2]||=e=>Ee(`pending`)},[o(p(_(u)(`preferences.profile.summary.pending`)),1),l(`strong`,null,p(ge.value),1)],8,Ve),l(`button`,{type:`button`,class:`profile-summary-action state-conflict`,"aria-label":X.value.length?_(u)(`preferences.profile.summary.conflictAria`,{count:X.value.length}):_(u)(`preferences.profile.summary.noConflictsAria`),"aria-pressed":z.value,onClick:a[3]||=e=>De()},[o(p(_(u)(`preferences.profile.summary.conflicts`)),1),l(`strong`,null,p(X.value.length),1)],8,He)],8,Re),X.value.length&&!z.value&&k.value===`all`?(r(),d(`section`,{key:0,class:`preference-conflict-alert`,"aria-label":_(u)(`preferences.profile.alert.aria`)},[a[15]||=l(`div`,{class:`preference-conflict-alert-icon`,"aria-hidden":`true`},`!`,-1),l(`div`,null,[l(`h2`,null,p(_(u)(`preferences.profile.alert.title`,{count:X.value.length})),1),l(`p`,null,p(_(u)(`preferences.profile.alert.copy`)),1)]),l(`button`,{class:`primary-action`,type:`button`,onClick:a[4]||=e=>De(!0)},p(_(u)(`preferences.profile.alert.action`)),1)],8,Ue)):x(``,!0),n(Ie,{profile:b.value},null,8,[`profile`]),l(`div`,We,[l(`div`,Ge,[l(`div`,{class:`personal-profile-filters ui-segmented`,role:`group`,"aria-label":_(u)(`preferences.profile.filters.aspectAria`)},[(r(!0),d(m,null,i(pe.value,([e,t])=>(r(),d(`button`,{key:e,type:`button`,"aria-pressed":D.value===e,onClick:t=>D.value=e},p(t),9,qe))),128))],8,Ke),n(re,{modelValue:O.value,"onUpdate:modelValue":a[5]||=e=>O.value=e,class:`personal-profile-scope-filter`,"control-id":`personal-profile-scope`,label:_(u)(`preferences.profile.filters.scopeLabel`),options:me.value},null,8,[`modelValue`,`label`,`options`])]),l(`div`,Je,[z.value?(r(),d(`span`,Ye,p(_(u)(`preferences.profile.filters.conflictsCount`,{visible:Q.value.length,total:X.value.length})),1)):k.value===`all`?(r(),d(`span`,Ze,p(Z.value.length===Y.value.length?_(u)(`preferences.profile.filters.personalUnderstanding`,{count:Y.value.length}):_(u)(`preferences.profile.filters.visibleCount`,{visible:Z.value.length,total:Y.value.length})),1)):(r(),d(`span`,Xe,p(_(u)(`preferences.profile.filters.reviewCount`,{count:Z.value.length,status:k.value===`pending`?_(u)(`preferences.profile.summary.pending`):k.value===`agent_confirmed`?_(u)(`preferences.profile.summary.agentConfirmed`):_(u)(`preferences.profile.summary.confirmed`)})),1)),l(`button`,{class:`toolbar-action`,type:`button`,disabled:w.value,onClick:a[6]||=e=>$()},p(_(u)(`common.actions.refresh`)),9,Qe)])]),w.value&&v.value&&!_(E)&&!z.value?(r(),y(C,{key:1,variant:`inline`,label:_(u)(`preferences.profile.directory.loading`)},null,8,[`label`])):x(``,!0),_(E)?(r(),y(C,{key:2,label:_(u)(`preferences.profile.directory.loading`)},null,8,[`label`])):T.value?(r(),d(`div`,$e)):z.value?(r(),d(`section`,{key:4,class:`preference-conflict-workbench`,"aria-label":_(u)(`preferences.profile.workbench.aria`)},[l(`header`,null,[l(`div`,null,[l(`h2`,null,p(_(u)(`preferences.profile.workbench.title`)),1)])]),l(`div`,tt,[(r(!0),d(m,null,i(Q.value,(e,t)=>(r(),d(`article`,{key:e.id,class:`preference-conflict-card`},[l(`div`,nt,[l(`div`,null,[l(`span`,null,p(_(u)(`preferences.profile.workbench.group`,{index:t+1})),1),l(`h3`,null,p(e.preferenceKey),1)]),l(`div`,null,[l(`span`,null,p(Ce(e)),1),l(`strong`,null,p(e.aiRecord?_(u)(`preferences.profile.workbench.aiPending`):e.recommendedAction===`merge`?_(u)(`preferences.profile.workbench.mergeSuggested`):_(u)(`preferences.profile.workbench.humanReview`)),1)])]),l(`div`,rt,[l(`section`,null,[l(`span`,null,p(_(u)(`preferences.profile.workbench.older`)),1),l(`strong`,null,p(e.left.title),1),l(`p`,null,p(_(V)(e.left)),1),l(`small`,null,p(_(ae)(_(L)(e.left))),1)]),a[16]||=l(`i`,{"aria-hidden":`true`},`↔`,-1),l(`section`,null,[l(`span`,null,p(_(u)(`preferences.profile.workbench.newer`)),1),l(`strong`,null,p(e.right.title),1),l(`p`,null,p(_(V)(e.right)),1),l(`small`,null,p(_(ae)(_(L)(e.right))),1)])]),l(`footer`,null,[l(`div`,null,[l(`span`,null,p(_(u)(`preferences.profile.workbench.reason`)),1),l(`p`,null,p(e.reason),1),e.difference.rightOnly.length?(r(),d(`small`,it,p(_(u)(`preferences.profile.workbench.additions`,{values:e.difference.rightOnly.join(`、`)})),1)):x(``,!0)]),l(`div`,at,[l(`button`,{class:`secondary-action`,type:`button`,disabled:!!e.aiRecord||K.value===e.id,onClick:t=>Oe(e)},p(e.aiRecord?_(u)(`preferences.profile.workbench.deferred`):K.value===e.id?_(u)(`preferences.profile.workbench.deferring`):_(u)(`preferences.profile.workbench.defer`)),9,ot),l(`button`,{class:`primary-action`,type:`button`,onClick:t=>W.value=e},p(_(u)(`preferences.profile.workbench.handleNow`)),9,st)])])]))),128))]),w.value?(r(),y(C,{key:0,variant:`compact`,label:_(u)(`preferences.profile.workbench.loading`)},null,8,[`label`])):Q.value.length?x(``,!0):(r(),d(`div`,ct,p(X.value.length?_(u)(`preferences.profile.workbench.noFiltered`):_(u)(`preferences.profile.workbench.empty`)),1))],8,et)):(r(),d(`div`,{key:5,class:h([`personal-profile-layout`,{"has-selection":B.value}])},[n(A,{class:`personal-profile-directory`,items:Z.value,"row-height":76,"active-index":fe.value,"reset-key":de.value,"item-key":be,label:_(u)(`preferences.profile.directory.aria`)},{header:t(()=>[l(`div`,lt,[l(`span`,null,p(_(u)(`preferences.profile.directory.aspect`)),1),l(`span`,null,p(_(u)(`preferences.profile.directory.content`)),1),l(`span`,null,p(_(u)(`preferences.profile.directory.statusScopeSource`)),1),l(`span`,null,p(_(u)(`preferences.profile.directory.updated`)),1)])]),default:t(({item:e})=>[l(`button`,{class:h([`personal-profile-row`,{selected:B.value?.id===e.id,"pending-review":_(I)(e)===`pending`,"ai-resolved-conflict":ue.value.has(e.id)}]),type:`button`,onClick:t=>B.value=e},[l(`span`,{class:h([`profile-aspect-mark`,e.profileAspect])},p(_(P)(e.profileAspect)),3),l(`span`,dt,[l(`strong`,null,p(e.title),1),l(`small`,null,p(e.body),1)]),l(`span`,ft,[l(`strong`,{class:h({"has-conflict":le.value.has(e.id)})},p(ye(e)),3),l(`small`,null,p(xe(e))+` · `+p(_(u)(`preferences.profile.directory.sourceCount`,{count:e.evidence.length})),1)]),l(`time`,null,p(_(ae)(_(L)(e))),1)],10,ut)]),empty:t(()=>[l(`div`,pt,p(Y.value.length?_(u)(`preferences.profile.directory.noFiltered`):_(u)(`preferences.profile.directory.empty`)),1)]),_:1},8,[`items`,`active-index`,`reset-key`,`label`]),n(j,{class:`personal-profile-inspector`,item:B.value,graph:v.value,editable:``,onConfirm:a[7]||=e=>H.value=e,onEdit:a[8]||=e=>U.value=e,onOpenReplacement:we},null,8,[`item`,`graph`])],2)),n(N,{item:U.value,"personal-space-id":_(g).activePersonalSpace?.id??``,"personal-project-id":null,projects:_(g).state?.personalProjects??[],"replacement-items":Y.value,onClose:a[9]||=e=>U.value=null,onSaved:a[10]||=e=>$()},null,8,[`item`,`personal-space-id`,`projects`,`replacement-items`]),n(ie,{item:H.value,"personal-space-id":_(g).activePersonalSpace?.id??``,"personal-project-id":null,onClose:a[11]||=e=>H.value=null,onSaved:a[12]||=e=>$()},null,8,[`item`,`personal-space-id`]),n(Ne,{conflict:W.value,"personal-space-id":_(g).activePersonalSpace?.id??``,projects:_(g).state?.personalProjects??[],onClose:a[13]||=e=>W.value=null,onResolved:a[14]||=e=>$(),onEdit:Te},null,8,[`conflict`,`personal-space-id`,`projects`])]))}}),[[`__scopeId`,`data-v-1a3c54ed`]]);export{mt as default};
|
|
1
|
+
import{A as e,B as t,C as n,M as r,P as i,R as a,S as o,V as s,X as c,_ as l,a as u,b as d,g as f,it as p,m,n as ee,nt as h,rt as g,tt as _,u as v,v as y,w as b,y as x}from"./i18n-b14l2pQA.js";import{t as te}from"./console-CqzwSo7a.js";import{i as ne,n as S,o as C,r as w}from"./client-DLS5FZBI.js";import{t as T}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{n as E,t as D}from"./UiDialog-Q7fsJUoO.js";import{t as O}from"./vue-router-B6ZjK-Br.js";import{t as re}from"./UiSelect-DcGpPQQo.js";import{t as k}from"./UiSegmented-CT28bxqw.js";import{n as A,t as j}from"./KnowledgeInspector-BGsqjNY2.js";import{i as M,n as ie,t as N}from"./KnowledgeEditDialog-a-5rasG0.js";import{C as P,D as F,_ as I,u as ae,v as L,x as oe}from"./model-DupZy8Qb.js";import{t as se}from"./personal-profile-graph-BPTtMJTZ.js";function ce(e,t=[]){let n=[],r=e.filter(e=>!e.invalidAt);for(let e=0;e<r.length;e+=1)for(let i=e+1;i<r.length;i+=1){let a=r[e],o=r[i];if(!q(a,o)||!J(a,o)||Y(a,o))continue;let[s,c]=X(a,o),l=W(V(s),V(c)),d=K(l)?`complementary`:`review`,f=t.find(e=>e.status===`ai_pending`&&z(e,s,c))??null;n.push({id:ue(s,c),preferenceKey:B(s),scopeKey:H(s),scopeLabel:U(s),left:s,right:c,difference:l,relation:d,recommendedAction:d===`complementary`?`merge`:null,reason:u(`preferences.shared.conflictReason`,{key:B(s)}),aiRecord:f})}return n.sort((e,t)=>{let n=ee();return e.scopeKey.localeCompare(t.scopeKey,n)||e.preferenceKey.localeCompare(t.preferenceKey,n)})}function R(e){return[e.left_item_id,e.right_item_id]}function z(e,t,n){let r=new Set([`${e.left_item_kind}:${e.left_item_id}`,`${e.right_item_kind}:${e.right_item_id}`]);return r.has(`${t.itemKind}:${t.id}`)&&r.has(`${n.itemKind}:${n.id}`)}function B(e){let t=e.raw.attributes??{};return String(t.preferenceKey??t.preference_key??e.title).trim()}function V(e){return e.body.trim()}function H(e){return e.preferenceScope===`project`&&e.preferenceProjectId?`project:${e.preferenceProjectId}`:`global`}function U(e){return e.preferenceScope===`project`&&e.preferenceProjectId?u(`preferences.shared.projectScope`,{project:e.preferenceProjectId}):u(`preferences.shared.personalGlobal`)}function W(e,t){let n=Z(e),r=Z(t),i=new Set,a=[],o=[];for(let e of n){let t=r.findIndex((t,n)=>!i.has(n)&&de(e,t));if(t<0){o.push(e);continue}i.add(t),a.push(fe(e,r[t]))}return{shared:a,leftOnly:o,rightOnly:r.filter((e,t)=>!i.has(t)),similarity:a.length/Math.max(n.length,r.length,1)}}function G(e,t){let n=[...Z(e)];for(let e of Z(t)){let t=n.findIndex(t=>de(t,e));if(t<0){n.push(e);continue}n[t]=fe(n[t],e)}if(!n.length)return``;let r=n.some(e=>e.length>24)?`;`:`、`;return n.join(r)}function K(e){return e.shared.length>0&&(e.leftOnly.length===0||e.rightOnly.length===0)}function q(e,t){return H(e)===H(t)}function J(e,t){return Q(B(e))===Q(B(t))}function Y(e,t){return Q(V(e))===Q(V(t))}function X(e,t){let n=le(e),r=le(t);return n===r?e.id.localeCompare(t.id)<=0?[e,t]:[t,e]:n<=r?[e,t]:[t,e]}function le(e){let t=L(e);if(!t)return 0;let n=new Date(t).getTime();return Number.isNaN(n)?0:n}function ue(e,t){return[e.itemKind,e.id,t.itemKind,t.id].join(`:`)}function Z(e){return e.split(/[\n\r,,、;;。.!!??]+/u).map(e=>e.trim()).filter(Boolean)}function de(e,t){let n=Q(e),r=Q(t);if(n===r)return!0;let i=n.length<=r.length?n:r,a=i===n?r:n;return i.length>=2&&a.includes(i)}function fe(e,t){return Q(e).length>=Q(t).length?e:t}function Q(e){return String(e??``).trim().toLocaleLowerCase().replace(/[“”‘’"'`]/gu,``).replace(/\s+/gu,` `)}var pe=[`aria-label`],me=[`aria-label`],he={class:`conflict-side-heading`},ge=[`aria-label`],_e={key:0},$={key:1,class:`ui-muted`},ve=[`disabled`],ye=[`aria-label`],be=[`aria-pressed`],xe={key:0},Se=[`aria-pressed`],Ce=[`aria-pressed`],we=[`disabled`,`aria-pressed`],Te={key:0,class:`conflict-resolution-detail`},Ee={class:`conflict-inline-options`},De={class:`ui-field`},Oe={key:1,class:`conflict-resolution-detail`},ke={class:`conflict-inline-options`},Ae={class:`conflict-impact-preview`},je={class:`ui-field conflict-resolution-reason`},Me={class:`conflict-footer-note`},Ne=T(b({__name:`PreferenceConflictDialog`,props:{conflict:{},personalSpaceId:{},projects:{}},emits:[`close`,`resolved`,`edit`],setup(e,{emit:ee}){let g=e,b=ee,S=te(),C=c(null),T=c(`right`),O=c(`right`),A=c(``),j=c(``),M=c(``),ie=c(``),N=c(!1),P=c(``),F=f(()=>{let e=g.conflict;if(!e)return[];let t=O.value===`left`?e.left:e.right;return g.projects.filter(({project_id:e})=>t.preferenceScope!==`project`||e!==t.preferenceProjectId)}),I=f(()=>F.value.length>0),oe=f(()=>F.value.map(e=>({value:e.project_id,label:e.profile.name}))),se=f(()=>{let e=g.conflict?.difference;return e?[{key:`shared`,label:u(`preferences.dialog.shared`),values:e.shared,empty:u(`preferences.dialog.noShared`)},{key:`left`,label:u(`preferences.dialog.onlyA`),values:e.leftOnly,empty:u(`preferences.dialog.noUnique`)},{key:`right`,label:u(`preferences.dialog.onlyB`),values:e.rightOnly,empty:u(`preferences.dialog.noUnique`)}]:[]}),ce=f(()=>{let e=g.conflict;if(!e||!C.value)return u(`preferences.dialog.impact.choose`);if(C.value===`merge`){let t=T.value===`left`?e.left:e.right,n=T.value===`left`?e.right:e.left;return u(`preferences.dialog.impact.merge`,{target:t.title,historical:n.title})}if(C.value===`keep_left`||C.value===`keep_right`){let t=C.value===`keep_left`?e.left:e.right,n=C.value===`keep_left`?e.right:e.left;return u(`preferences.dialog.impact.keep`,{kept:t.title,historical:n.title})}let t=O.value===`left`?e.left:e.right,n=F.value.find(({project_id:e})=>e===A.value);return n?u(`preferences.dialog.impact.split`,{item:t.title,project:n.profile.name}):u(`preferences.dialog.impact.chooseProject`)});a(()=>g.conflict,e=>{e&&(T.value=`right`,O.value=`right`,j.value=G(V(e.right),V(e.left)),C.value=e.recommendedAction,A.value=``,P.value=``,z(e.recommendedAction))},{immediate:!0}),a([O,F],()=>{A.value&&F.value.some(({project_id:e})=>e===A.value)||(A.value=F.value[0]?.project_id??``)},{immediate:!0});function R(e){N.value||(C.value=e,(!M.value.trim()||M.value===ie.value)&&z(e))}function z(e){let t=g.conflict,n=t&&e?q(e,t):``;ie.value=n,M.value=n}async function B(){if(N.value)return;let e=g.conflict;if(!e||!C.value)return J(u(`preferences.dialog.errors.actionRequired`));if(!M.value.trim())return J(u(`preferences.dialog.errors.reasonRequired`));if(C.value===`merge`&&!j.value.trim())return J(u(`preferences.dialog.errors.mergedValueRequired`));if(C.value===`split_scope`&&!A.value)return J(u(`preferences.dialog.errors.projectRequired`));let t=C.value,n=M.value.trim(),r=g.personalSpaceId;N.value=!0,P.value=``;try{t===`merge`?await H(e):t===`split_scope`?await W(e):await U(e,t),e.aiRecord&&await ne(`/api/preference-conflicts/${encodeURIComponent(e.aiRecord.id)}/complete`,{personalSpaceId:r,resolution:t,reason:n}),S.notify(u(`preferences.dialog.resolved`)),b(`resolved`),b(`close`)}catch(e){P.value=e instanceof Error?e.message:u(`preferences.dialog.errors.failed`),S.reportError(e)}finally{N.value=!1}}async function H(e){let t=M.value.trim(),n=g.personalSpaceId,r=T.value===`left`?e.left:e.right,i=T.value===`left`?e.right:e.left,a={personalSpaceId:n,personalProjectId:null,action:`update`,reason:t};r.itemKind===`entity`?(a.name=r.title,a.summary=j.value.trim()):a.fact=j.value.trim(),r.classificationExplicit&&r.originQuadrant!==`unclassified`&&(a.originQuadrant=r.originQuadrant,a.confirmationStatus=`confirmed`,a.confirmationBasis={existenceReason:u(`preferences.dialog.audit.mergedFromConflict`,{reason:e.reason}),quadrantReason:r.confirmationBasis?.quadrant_reason||r.reasoningSummary||u(`preferences.dialog.audit.keepQuadrant`),proposedBy:r.confirmationBasis?.proposed_by?K(r.confirmationBasis.proposed_by):{kind:`import`,label:u(`preferences.dialog.audit.historicalRecord`)},confirmedBy:{kind:`user`,label:u(`preferences.dialog.audit.user`)},confirmedAt:new Date().toISOString()}),await w(`/api/knowledge/${r.itemKind}/${encodeURIComponent(r.id)}`,a),await w(`/api/knowledge/${i.itemKind}/${encodeURIComponent(i.id)}`,{personalSpaceId:n,personalProjectId:null,action:`invalidate`,reason:t,replacementItemId:r.id,replacementItemKind:r.itemKind})}async function U(e,t){let n=t===`keep_left`?e.left:e.right,r=t===`keep_left`?e.right:e.left;await w(`/api/knowledge/${r.itemKind}/${encodeURIComponent(r.id)}`,{personalSpaceId:g.personalSpaceId,personalProjectId:null,action:`invalidate`,reason:M.value.trim(),replacementItemId:n.id,replacementItemKind:n.itemKind})}async function W(e){let t=O.value===`left`?e.left:e.right;await ne(`/api/knowledge/${t.itemKind}/${encodeURIComponent(t.id)}/preference-scope`,{personalSpaceId:g.personalSpaceId,scope:`project`,projectId:A.value,reason:M.value.trim()})}function K(e){return{kind:e.kind,label:e.label??null}}function q(e,t){return e===`merge`?u(`preferences.dialog.defaultReason.merge`):e===`keep_left`?u(`preferences.dialog.defaultReason.keepLeft`,{title:t.left.title}):e===`keep_right`?u(`preferences.dialog.defaultReason.keepRight`,{title:t.right.title}):u(`preferences.dialog.defaultReason.split`)}function J(e){P.value=e}return(a,c)=>e.conflict?(r(),y(D,{key:0,open:``,class:`conflict-resolution-dialog`,size:`xl`,busy:N.value,error:P.value,title:_(u)(`preferences.dialog.title`),description:_(u)(`preferences.dialog.intro`,{reason:e.conflict.reason}),onClose:c[10]||=e=>b(`close`)},{footer:t(()=>[l(`span`,Me,p(_(u)(`preferences.dialog.pendingCopy`)),1),n(E,{variant:`ghost`,disabled:N.value,onClick:c[9]||=e=>b(`close`)},{default:t(()=>[o(p(_(u)(`preferences.dialog.defer`)),1)]),_:1},8,[`disabled`]),n(E,{variant:`primary`,disabled:!C.value,busy:N.value,"busy-label":_(u)(`preferences.dialog.processing`),onClick:B},{default:t(()=>[o(p(_(u)(`preferences.dialog.confirm`)),1)]),_:1},8,[`disabled`,`busy`,`busy-label`])]),default:t(()=>[l(`section`,{class:`conflict-pair-context`,"aria-label":_(u)(`preferences.dialog.basisAria`)},[l(`span`,null,[o(p(_(u)(`preferences.dialog.preferenceKey`)),1),l(`strong`,null,p(e.conflict.preferenceKey),1)]),l(`span`,null,[o(p(_(u)(`preferences.dialog.effectiveScope`)),1),l(`strong`,null,p(e.conflict.scopeLabel),1)]),l(`span`,null,[o(p(_(u)(`preferences.dialog.suggestion`)),1),l(`strong`,null,p(e.conflict.recommendedAction===`merge`?_(u)(`preferences.dialog.mergeSuggestion`):_(u)(`preferences.dialog.reviewSuggestion`)),1)])],8,pe),l(`section`,{class:`conflict-comparison`,"aria-label":_(u)(`preferences.dialog.comparisonAria`)},[(r(),d(m,null,i([`left`,`right`],r=>l(`article`,{key:r,class:h([`conflict-side`,`conflict-side-${r}`])},[l(`div`,he,[l(`span`,null,p(_(u)(r===`left`?`preferences.dialog.older`:`preferences.dialog.newer`)),1),l(`time`,null,p(_(ae)(_(L)(e.conflict[r]))),1)]),l(`h3`,null,p(e.conflict[r].title),1),l(`p`,null,p(_(V)(e.conflict[r])),1),l(`small`,null,p(_(u)(`preferences.dialog.sourceCount`,{count:e.conflict[r].evidence.length}))+` · `+p(e.conflict[r].id),1),n(E,{size:`sm`,variant:`ghost`,onClick:t=>b(`edit`,e.conflict[r])},{default:t(()=>[o(p(_(u)(r===`left`?`preferences.dialog.editA`:`preferences.dialog.editB`)),1)]),_:2},1032,[`onClick`])],2)),64))],8,me),l(`section`,{class:`conflict-difference`,"aria-label":_(u)(`preferences.dialog.differenceAria`)},[(r(!0),d(m,null,i(se.value,e=>(r(),d(`div`,{key:e.key},[l(`span`,null,p(e.label),1),e.values.length?(r(),d(`p`,_e,[(r(!0),d(m,null,i(e.values,e=>(r(),d(`b`,{key:e},p(e),1))),128))])):(r(),d(`p`,$,p(e.empty),1))]))),128))],8,ge),l(`fieldset`,{class:`conflict-inputs`,disabled:N.value},[l(`section`,{class:`conflict-resolution-options`,"aria-label":_(u)(`preferences.dialog.actionsAria`)},[l(`button`,{type:`button`,"aria-pressed":C.value===`merge`,onClick:c[0]||=e=>R(`merge`)},[l(`strong`,null,p(_(u)(`preferences.dialog.actions.merge`)),1),l(`span`,null,p(_(u)(`preferences.dialog.actions.mergeCopy`)),1),e.conflict.recommendedAction===`merge`?(r(),d(`em`,xe,p(_(u)(`preferences.dialog.actions.recommended`)),1)):x(``,!0)],8,be),l(`button`,{type:`button`,"aria-pressed":C.value===`keep_left`,onClick:c[1]||=e=>R(`keep_left`)},[l(`strong`,null,p(_(u)(`preferences.dialog.actions.keepA`)),1),l(`span`,null,p(_(u)(`preferences.dialog.actions.keepACopy`)),1)],8,Se),l(`button`,{type:`button`,"aria-pressed":C.value===`keep_right`,onClick:c[2]||=e=>R(`keep_right`)},[l(`strong`,null,p(_(u)(`preferences.dialog.actions.keepB`)),1),l(`span`,null,p(_(u)(`preferences.dialog.actions.keepBCopy`)),1)],8,Ce),l(`button`,{type:`button`,disabled:!I.value,"aria-pressed":C.value===`split_scope`,onClick:c[3]||=e=>R(`split_scope`)},[l(`strong`,null,p(_(u)(`preferences.dialog.actions.split`)),1),l(`span`,null,p(I.value?_(u)(`preferences.dialog.actions.splitCopy`):_(u)(`preferences.dialog.actions.noProjects`)),1)],8,we)],8,ye),C.value===`merge`?(r(),d(`section`,Te,[l(`div`,Ee,[l(`span`,null,p(_(u)(`preferences.dialog.canonicalIdentity`)),1),n(k,{modelValue:T.value,"onUpdate:modelValue":c[4]||=e=>T.value=e,label:_(u)(`preferences.dialog.mergeIdentityAria`),options:[{value:`left`,label:_(u)(`preferences.dialog.identityA`)},{value:`right`,label:_(u)(`preferences.dialog.identityB`)}]},null,8,[`modelValue`,`label`,`options`])]),l(`label`,De,[o(p(_(u)(`preferences.dialog.mergedContent`)),1),s(l(`textarea`,{"onUpdate:modelValue":c[5]||=e=>j.value=e,rows:`4`,maxlength:`4096`},null,512),[[v,j.value]])])])):x(``,!0),C.value===`split_scope`?(r(),d(`section`,Oe,[l(`div`,ke,[l(`span`,null,p(_(u)(`preferences.dialog.adjustRecord`)),1),n(k,{modelValue:O.value,"onUpdate:modelValue":c[6]||=e=>O.value=e,label:_(u)(`preferences.dialog.splitRecordAria`),options:[{value:`left`,label:`A`},{value:`right`,label:`B`}]},null,8,[`modelValue`,`label`])]),n(re,{modelValue:A.value,"onUpdate:modelValue":c[7]||=e=>A.value=e,field:``,label:_(u)(`preferences.dialog.projectOnly`),placeholder:_(u)(`preferences.dialog.chooseProject`),options:oe.value},null,8,[`modelValue`,`label`,`placeholder`,`options`])])):x(``,!0),l(`section`,Ae,[l(`span`,null,p(_(u)(`preferences.dialog.impactTitle`)),1),l(`p`,null,p(ce.value),1)]),l(`label`,je,[o(p(_(u)(`preferences.dialog.reason`)),1),s(l(`textarea`,{"onUpdate:modelValue":c[8]||=e=>M.value=e,rows:`2`,maxlength:`2000`},null,512),[[v,M.value]])])],8,ve)]),_:1},8,[`busy`,`error`,`title`,`description`])):x(``,!0)}}),[[`__scopeId`,`data-v-57134f7d`]]),Pe={class:`writing-taste-milestone__progress`,"aria-hidden":`true`},Fe={class:`writing-taste-milestone__action`},Ie=T(b({__name:`WritingTasteMilestone`,props:{profile:{}},setup(e){let n=e,i=f(()=>n.profile?.status===`active`?u(`writingTaste.milestone.activeTitle`):n.profile?.status===`preview_ready`?u(`writingTaste.milestone.previewTitle`):u(`writingTaste.milestone.collectingTitle`)),a=f(()=>{let e=n.profile?.readiness;if(!e)return 0;let t=[o(e.rule_count,e.thresholds.rule_count),o(e.evidence_count,e.thresholds.evidence_count),o(e.session_count,e.thresholds.session_count),o(e.observation_day_count,e.thresholds.observation_day_count)];return Math.round(t.reduce((e,t)=>e+t,0)/t.length*100)});function o(e,t){return t<=0?1:Math.min(Math.max(e/t,0),1)}return(n,o)=>e.profile?(r(),y(_(O),{key:0,to:`/preferences/writing`,class:h([`writing-taste-milestone`,`status-${e.profile.status}`]),"aria-label":_(u)(`writingTaste.milestone.aria`)},{default:t(()=>[l(`strong`,null,p(i.value),1),l(`span`,Pe,[l(`i`,{style:g({transform:`scaleX(${a.value/100})`})},null,4)]),l(`small`,null,p(_(u)(`writingTaste.milestone.rules`,{current:e.profile.readiness.rule_count,target:e.profile.readiness.thresholds.rule_count}))+` · `+p(_(u)(`writingTaste.milestone.sessions`,{current:e.profile.readiness.session_count,target:e.profile.readiness.thresholds.session_count})),1),l(`span`,Fe,p(_(u)(`writingTaste.milestone.open`))+` →`,1)]),_:1},8,[`class`,`aria-label`])):x(``,!0)}}),[[`__scopeId`,`data-v-9f3e6330`]]),Le={class:`view vue-personal-profile`},Re=[`aria-label`],ze=[`aria-label`,`aria-pressed`],Be=[`aria-label`,`aria-pressed`],Ve=[`aria-label`,`aria-pressed`],He=[`aria-label`,`aria-pressed`],Ue=[`aria-label`],We={class:`personal-profile-toolbar`},Ge={class:`personal-profile-filter-groups`},Ke=[`aria-label`],qe=[`aria-pressed`,`onClick`],Je={class:`personal-profile-toolbar-actions`},Ye={key:0,class:`muted`},Xe={key:1,class:`muted`},Ze={key:2,class:`muted`},Qe=[`disabled`],$e={key:3,class:`view-loading`,"aria-busy":`true`},et=[`aria-label`],tt={class:`preference-conflict-list`},nt={class:`preference-conflict-card-heading`},rt={class:`preference-conflict-pair`},it={key:0},at={class:`preference-conflict-actions`},ot=[`disabled`,`onClick`],st=[`onClick`],ct={key:1,class:`empty-state`},lt={class:`personal-profile-table-head`,"aria-hidden":`true`},ut=[`onClick`],dt={class:`personal-profile-copy`},ft={class:`personal-profile-origin`},pt={class:`empty-state`},mt=T(b({__name:`PersonalProfilePage`,setup(s){let g=te(),v=c(null),b=c(null),w=c(!1),T=f(()=>w.value&&!v.value),E=M(T),D=c(`all`),O=c(`all`),k=c(`all`),z=c(!1),B=c(null),H=c(null),U=c(null),W=c(null),G=c([]),K=c(``),q=0,J=null,Y=f(()=>oe(v.value)),X=f(()=>ce(Y.value,G.value)),le=f(()=>new Set(X.value.flatMap(({left:e,right:t})=>[e.id,t.id]))),ue=f(()=>new Set(G.value.filter(({status:e,resolved_by:t})=>e===`resolved`&&t===`agent`).flatMap(R))),Z=f(()=>Y.value.filter(e=>Se(e)&&(k.value===`all`||I(e)===k.value))),de=f(()=>JSON.stringify([D.value,O.value,k.value,z.value])),fe=f(()=>B.value?Z.value.findIndex(({id:e,itemKind:t})=>e===B.value?.id&&t===B.value?.itemKind):-1),Q=f(()=>X.value.filter(({left:e,right:t})=>Se(e)||Se(t))),pe=f(()=>[[`all`,u(`preferences.profile.filters.all`)],[`taste`,u(`preferences.profile.filters.taste`)],[`personality`,u(`preferences.profile.filters.personality`)],[`judgment_preference`,u(`preferences.profile.filters.judgment`)]]),me=f(()=>{let e=new Map((g.state?.personalProjects??[]).map(e=>[e.project_id,e.profile.name])),t=[...new Set(Y.value.filter(({preferenceScope:e,preferenceProjectId:t})=>e===`project`&&!!t).map(({preferenceProjectId:e})=>e))].sort((t,n)=>(e.get(t)??t).localeCompare(e.get(n)??n,ee()));return[{value:`all`,label:u(`preferences.profile.scopes.all`),meta:u(`common.counts.items`,{count:Y.value.length})},{value:`global`,label:u(`preferences.profile.scopes.global`),meta:u(`common.counts.items`,{count:Y.value.filter(({preferenceScope:e})=>e!==`project`).length})},...t.map(t=>({value:`project:${t}`,label:e.get(t)??t,meta:u(`preferences.profile.scopes.projectMeta`,{count:Y.value.filter(({preferenceScope:e,preferenceProjectId:n})=>e===`project`&&n===t).length}),search:t}))]}),he=f(()=>Y.value.filter(e=>I(e)===`confirmed`).length),ge=f(()=>Y.value.filter(e=>I(e)===`pending`).length),_e=f(()=>Y.value.filter(e=>I(e)===`agent_confirmed`).length);a(()=>g.activePersonalSpace?.id,(e,t)=>{e!==t&&(v.value=null,b.value=null,G.value=[],B.value=null,H.value=null,U.value=null,W.value=null,O.value=`all`),e?$(e):(q+=1,J?.abort(),J=null,w.value=!1)},{immediate:!0}),e(()=>{q+=1,J?.abort(),J=null}),a([D,O,k,z],()=>{B.value&&!Z.value.some(({id:e})=>e===B.value?.id)&&(B.value=null)}),a(me,e=>{e.some(({value:e})=>e===O.value)||(O.value=`all`)});async function $(e=g.activePersonalSpace?.id){if(!e)return;J?.abort();let t=++q,n=new AbortController;J=n,w.value=!0;try{let r=new URLSearchParams({personalSpaceId:e,limit:`500`}),i=new URLSearchParams({personalSpaceId:e,limit:`500`}),[a,o,s]=await Promise.all([se(e,n.signal),S(`/api/preference-conflicts?${r}`,{signal:n.signal}),S(`/api/writing-taste-profile?${i}`,{signal:n.signal}).catch(()=>null)]);if(t!==q||n.signal.aborted)return;v.value=a,G.value=Array.isArray(o)?o:[],b.value=ve(s)?s:null,B.value&&=Y.value.find(({id:e})=>e===B.value?.id)??null}catch(e){if(t!==q||n.signal.aborted)return;v.value=null,b.value=null,g.reportError(e)}finally{if(t!==q||n.signal.aborted)return;w.value=!1,J===n&&(J=null)}}function ve(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 ye(e){let t=F(e),n=X.value.find(({left:t,right:n})=>t.id===e.id||n.id===e.id);return n?.aiRecord?`${t} · ${u(`preferences.profile.statusSuffix.aiPending`)}`:n?`${t} · ${u(`preferences.profile.statusSuffix.conflict`)}`:ue.value.has(e.id)?`${t} · ${u(`preferences.profile.statusSuffix.aiResolved`)}`:t}function be(e){return`${e.itemKind}:${e.id}`}function xe(e){if(e.preferenceScope!==`project`||!e.preferenceProjectId)return u(`preferences.shared.personalGlobal`);let t=g.state?.personalProjects?.find(({project_id:t})=>t===e.preferenceProjectId);return u(`preferences.shared.projectOnly`,{project:t?.profile.name??e.preferenceProjectId})}function Se(e){if(D.value!==`all`&&e.profileAspect!==D.value||O.value===`global`&&e.preferenceScope===`project`)return!1;if(O.value.startsWith(`project:`)){let t=O.value.slice(8);return e.preferenceScope===`project`&&e.preferenceProjectId===t}return!0}function Ce(e){if(e.scopeKey===`global`)return u(`preferences.shared.personalGlobal`);let t=e.scopeKey.slice(8),n=g.state?.personalProjects?.find(({project_id:e})=>e===t);return u(`preferences.shared.projectOnly`,{project:n?.profile.name??t})}function we(e){D.value=e.profileAspect??`all`,O.value=e.preferenceScope===`project`&&e.preferenceProjectId?`project:${e.preferenceProjectId}`:`global`,z.value=!1,B.value=e}function Te(e){W.value=null,U.value=e}function Ee(e){let t=!z.value&&k.value===e?`all`:e;z.value=!1,k.value=t,t!==`all`&&(B.value=Z.value.at(0)??null)}function De(e=!1){let t=e||!z.value;z.value=t,t&&(k.value=`all`,B.value=null)}async function Oe(e){let t=g.activePersonalSpace?.id;if(!(!t||e.aiRecord)){K.value=e.id;try{let n=await ne(`/api/preference-conflicts/defer`,{personalSpaceId:t,conflictId:e.id,preferenceKey:e.preferenceKey,preferenceScope:e.left.preferenceScope??`global`,preferenceProjectId:e.left.preferenceProjectId,leftItemId:e.left.id,leftItemKind:e.left.itemKind,rightItemId:e.right.id,rightItemKind:e.right.itemKind,reason:u(`preferences.profile.deferReason`)});G.value=[n,...G.value.filter(({id:e})=>e!==n.id)],g.notify(u(`preferences.profile.deferNotice`))}catch(e){g.reportError(e)}finally{K.value=``}}}return(e,a)=>(r(),d(`section`,Le,[l(`div`,{class:`personal-profile-summary`,"aria-label":_(u)(`preferences.profile.summaryAria`)},[l(`button`,{type:`button`,class:`profile-summary-action state-confirmed`,"aria-label":_(u)(`preferences.profile.summary.confirmedAria`,{count:he.value}),"aria-pressed":!z.value&&k.value===`confirmed`,onClick:a[0]||=e=>Ee(`confirmed`)},[o(p(_(u)(`preferences.profile.summary.confirmed`)),1),l(`strong`,null,p(he.value),1)],8,ze),l(`button`,{type:`button`,class:`profile-summary-action state-agent-confirmed`,"aria-label":_(u)(`preferences.profile.summary.agentConfirmedAria`,{count:_e.value}),"aria-pressed":!z.value&&k.value===`agent_confirmed`,onClick:a[1]||=e=>Ee(`agent_confirmed`)},[o(p(_(u)(`preferences.profile.summary.agentConfirmed`)),1),l(`strong`,null,p(_e.value),1)],8,Be),l(`button`,{type:`button`,class:`profile-summary-action state-pending`,"aria-label":_(u)(`preferences.profile.summary.pendingAria`,{count:ge.value}),"aria-pressed":!z.value&&k.value===`pending`,onClick:a[2]||=e=>Ee(`pending`)},[o(p(_(u)(`preferences.profile.summary.pending`)),1),l(`strong`,null,p(ge.value),1)],8,Ve),l(`button`,{type:`button`,class:`profile-summary-action state-conflict`,"aria-label":X.value.length?_(u)(`preferences.profile.summary.conflictAria`,{count:X.value.length}):_(u)(`preferences.profile.summary.noConflictsAria`),"aria-pressed":z.value,onClick:a[3]||=e=>De()},[o(p(_(u)(`preferences.profile.summary.conflicts`)),1),l(`strong`,null,p(X.value.length),1)],8,He)],8,Re),X.value.length&&!z.value&&k.value===`all`?(r(),d(`section`,{key:0,class:`preference-conflict-alert`,"aria-label":_(u)(`preferences.profile.alert.aria`)},[a[15]||=l(`div`,{class:`preference-conflict-alert-icon`,"aria-hidden":`true`},`!`,-1),l(`div`,null,[l(`h2`,null,p(_(u)(`preferences.profile.alert.title`,{count:X.value.length})),1),l(`p`,null,p(_(u)(`preferences.profile.alert.copy`)),1)]),l(`button`,{class:`primary-action`,type:`button`,onClick:a[4]||=e=>De(!0)},p(_(u)(`preferences.profile.alert.action`)),1)],8,Ue)):x(``,!0),n(Ie,{profile:b.value},null,8,[`profile`]),l(`div`,We,[l(`div`,Ge,[l(`div`,{class:`personal-profile-filters ui-segmented`,role:`group`,"aria-label":_(u)(`preferences.profile.filters.aspectAria`)},[(r(!0),d(m,null,i(pe.value,([e,t])=>(r(),d(`button`,{key:e,type:`button`,"aria-pressed":D.value===e,onClick:t=>D.value=e},p(t),9,qe))),128))],8,Ke),n(re,{modelValue:O.value,"onUpdate:modelValue":a[5]||=e=>O.value=e,class:`personal-profile-scope-filter`,"control-id":`personal-profile-scope`,label:_(u)(`preferences.profile.filters.scopeLabel`),options:me.value},null,8,[`modelValue`,`label`,`options`])]),l(`div`,Je,[z.value?(r(),d(`span`,Ye,p(_(u)(`preferences.profile.filters.conflictsCount`,{visible:Q.value.length,total:X.value.length})),1)):k.value===`all`?(r(),d(`span`,Ze,p(Z.value.length===Y.value.length?_(u)(`preferences.profile.filters.personalUnderstanding`,{count:Y.value.length}):_(u)(`preferences.profile.filters.visibleCount`,{visible:Z.value.length,total:Y.value.length})),1)):(r(),d(`span`,Xe,p(_(u)(`preferences.profile.filters.reviewCount`,{count:Z.value.length,status:k.value===`pending`?_(u)(`preferences.profile.summary.pending`):k.value===`agent_confirmed`?_(u)(`preferences.profile.summary.agentConfirmed`):_(u)(`preferences.profile.summary.confirmed`)})),1)),l(`button`,{class:`toolbar-action`,type:`button`,disabled:w.value,onClick:a[6]||=e=>$()},p(_(u)(`common.actions.refresh`)),9,Qe)])]),w.value&&v.value&&!_(E)&&!z.value?(r(),y(C,{key:1,variant:`inline`,label:_(u)(`preferences.profile.directory.loading`)},null,8,[`label`])):x(``,!0),_(E)?(r(),y(C,{key:2,label:_(u)(`preferences.profile.directory.loading`)},null,8,[`label`])):T.value?(r(),d(`div`,$e)):z.value?(r(),d(`section`,{key:4,class:`preference-conflict-workbench`,"aria-label":_(u)(`preferences.profile.workbench.aria`)},[l(`header`,null,[l(`div`,null,[l(`h2`,null,p(_(u)(`preferences.profile.workbench.title`)),1)])]),l(`div`,tt,[(r(!0),d(m,null,i(Q.value,(e,t)=>(r(),d(`article`,{key:e.id,class:`preference-conflict-card`},[l(`div`,nt,[l(`div`,null,[l(`span`,null,p(_(u)(`preferences.profile.workbench.group`,{index:t+1})),1),l(`h3`,null,p(e.preferenceKey),1)]),l(`div`,null,[l(`span`,null,p(Ce(e)),1),l(`strong`,null,p(e.aiRecord?_(u)(`preferences.profile.workbench.aiPending`):e.recommendedAction===`merge`?_(u)(`preferences.profile.workbench.mergeSuggested`):_(u)(`preferences.profile.workbench.humanReview`)),1)])]),l(`div`,rt,[l(`section`,null,[l(`span`,null,p(_(u)(`preferences.profile.workbench.older`)),1),l(`strong`,null,p(e.left.title),1),l(`p`,null,p(_(V)(e.left)),1),l(`small`,null,p(_(ae)(_(L)(e.left))),1)]),a[16]||=l(`i`,{"aria-hidden":`true`},`↔`,-1),l(`section`,null,[l(`span`,null,p(_(u)(`preferences.profile.workbench.newer`)),1),l(`strong`,null,p(e.right.title),1),l(`p`,null,p(_(V)(e.right)),1),l(`small`,null,p(_(ae)(_(L)(e.right))),1)])]),l(`footer`,null,[l(`div`,null,[l(`span`,null,p(_(u)(`preferences.profile.workbench.reason`)),1),l(`p`,null,p(e.reason),1),e.difference.rightOnly.length?(r(),d(`small`,it,p(_(u)(`preferences.profile.workbench.additions`,{values:e.difference.rightOnly.join(`、`)})),1)):x(``,!0)]),l(`div`,at,[l(`button`,{class:`secondary-action`,type:`button`,disabled:!!e.aiRecord||K.value===e.id,onClick:t=>Oe(e)},p(e.aiRecord?_(u)(`preferences.profile.workbench.deferred`):K.value===e.id?_(u)(`preferences.profile.workbench.deferring`):_(u)(`preferences.profile.workbench.defer`)),9,ot),l(`button`,{class:`primary-action`,type:`button`,onClick:t=>W.value=e},p(_(u)(`preferences.profile.workbench.handleNow`)),9,st)])])]))),128))]),w.value?(r(),y(C,{key:0,variant:`compact`,label:_(u)(`preferences.profile.workbench.loading`)},null,8,[`label`])):Q.value.length?x(``,!0):(r(),d(`div`,ct,p(X.value.length?_(u)(`preferences.profile.workbench.noFiltered`):_(u)(`preferences.profile.workbench.empty`)),1))],8,et)):(r(),d(`div`,{key:5,class:h([`personal-profile-layout`,{"has-selection":B.value}])},[n(A,{class:`personal-profile-directory`,items:Z.value,"row-height":76,"active-index":fe.value,"reset-key":de.value,"item-key":be,label:_(u)(`preferences.profile.directory.aria`)},{header:t(()=>[l(`div`,lt,[l(`span`,null,p(_(u)(`preferences.profile.directory.aspect`)),1),l(`span`,null,p(_(u)(`preferences.profile.directory.content`)),1),l(`span`,null,p(_(u)(`preferences.profile.directory.statusScopeSource`)),1),l(`span`,null,p(_(u)(`preferences.profile.directory.updated`)),1)])]),default:t(({item:e})=>[l(`button`,{class:h([`personal-profile-row`,{selected:B.value?.id===e.id,"pending-review":_(I)(e)===`pending`,"ai-resolved-conflict":ue.value.has(e.id)}]),type:`button`,onClick:t=>B.value=e},[l(`span`,{class:h([`profile-aspect-mark`,e.profileAspect])},p(_(P)(e.profileAspect)),3),l(`span`,dt,[l(`strong`,null,p(e.title),1),l(`small`,null,p(e.body),1)]),l(`span`,ft,[l(`strong`,{class:h({"has-conflict":le.value.has(e.id)})},p(ye(e)),3),l(`small`,null,p(xe(e))+` · `+p(_(u)(`preferences.profile.directory.sourceCount`,{count:e.evidence.length})),1)]),l(`time`,null,p(_(ae)(_(L)(e))),1)],10,ut)]),empty:t(()=>[l(`div`,pt,p(Y.value.length?_(u)(`preferences.profile.directory.noFiltered`):_(u)(`preferences.profile.directory.empty`)),1)]),_:1},8,[`items`,`active-index`,`reset-key`,`label`]),n(j,{class:`personal-profile-inspector`,item:B.value,graph:v.value,editable:``,onConfirm:a[7]||=e=>H.value=e,onEdit:a[8]||=e=>U.value=e,onOpenReplacement:we},null,8,[`item`,`graph`])],2)),n(N,{item:U.value,"personal-space-id":_(g).activePersonalSpace?.id??``,"personal-project-id":null,projects:_(g).state?.personalProjects??[],"replacement-items":Y.value,onClose:a[9]||=e=>U.value=null,onSaved:a[10]||=e=>$()},null,8,[`item`,`personal-space-id`,`projects`,`replacement-items`]),n(ie,{item:H.value,"personal-space-id":_(g).activePersonalSpace?.id??``,"personal-project-id":null,onClose:a[11]||=e=>H.value=null,onSaved:a[12]||=e=>$()},null,8,[`item`,`personal-space-id`]),n(Ne,{conflict:W.value,"personal-space-id":_(g).activePersonalSpace?.id??``,projects:_(g).state?.personalProjects??[],onClose:a[13]||=e=>W.value=null,onResolved:a[14]||=e=>$(),onEdit:Te},null,8,[`conflict`,`personal-space-id`,`projects`])]))}}),[[`__scopeId`,`data-v-1a3c54ed`]]);export{mt as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{M as e,v as t,w as n}from"./i18n-b14l2pQA.js";import{t as r}from"./KnowledgeWorkspace-BtUjKTLb.js";var i=n({__name:`PersonalProjectsPage`,setup(n){return(n,i)=>(e(),t(r,{"personal-projects-only":``}))}});export{i as default};
|
package/dist/web/assets/{ProjectAgentFirstTask-CrCWEYgn.js → ProjectAgentFirstTask-CaHvOjkp.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{M as e,_ as t,a as n,b as r,it as i,tt as a,w as o}from"./i18n-
|
|
1
|
+
import{M as e,_ as t,a as n,b as r,it as i,tt as a,w as o}from"./i18n-b14l2pQA.js";import{t as s}from"./_plugin-vue_export-helper-BDNMzG2s.js";var c=[`aria-label`],l=s(o({__name:`ProjectAgentFirstTask`,props:{personalSpaceId:{}},setup(o){return(o,s)=>(e(),r(`aside`,{class:`project-agent-first-task`,"aria-label":a(n)(`projectAgents.firstTask.title`)},[t(`strong`,null,i(a(n)(`projectAgents.firstTask.title`)),1),t(`p`,null,i(a(n)(`projectAgents.firstTask.hint`)),1)],8,c))}}),[[`__scopeId`,`data-v-f08512ca`]]);export{l as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.project-agent-assignment-fields[data-v-0c51a000]{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.project-agent-assignment-wide[data-v-0c51a000]{grid-column:1/-1}@media (width<=620px){.project-agent-assignment-fields[data-v-0c51a000]{grid-template-columns:1fr}.project-agent-assignment-wide[data-v-0c51a000]{grid-column:auto}}.executor-routing-fields[data-v-7120b758]{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.executor-routing-wide[data-v-7120b758]{grid-column:1/-1}.executor-routing-fields p[data-v-7120b758]{margin:0}@media (width<=620px){.executor-routing-fields[data-v-7120b758]{grid-template-columns:1fr}.executor-routing-wide[data-v-7120b758]{grid-column:auto}}.project-team[data-v-ade1eb42]{border-top:1px solid var(--color-border);grid-column:1/-1;min-width:0;padding-block:12px}.project-team-peers[data-v-ade1eb42]{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.project-team-peers[data-v-ade1eb42]>*{background:var(--color-surface-subtle);border:1px solid var(--color-border-strong);color:var(--color-ink);border-radius:6px;padding:7px 10px;font-size:12px}.project-team-summary[data-v-ade1eb42]{color:var(--color-muted);margin:9px 0;font-size:12px}.project-team-members[data-v-ade1eb42]{gap:9px;margin:10px 0 16px 18px;padding:0;list-style:none;display:grid}.project-team-members button[data-v-ade1eb42]{text-align:start;max-width:100%;color:var(--color-ink);background:0 0;border:0;gap:3px;display:grid}.project-team-members span[data-v-ade1eb42]{color:var(--color-muted);overflow-wrap:anywhere;font-size:12px;line-height:1.5}.project-team summary[data-v-ade1eb42]{cursor:pointer;font-size:12px}.team-lead-field[data-v-ade1eb42]{max-width:360px;margin-block:14px}.project-team fieldset[data-v-ade1eb42]{border:0;flex-wrap:wrap;gap:12px;margin-bottom:14px;padding:0;display:flex}.project-team fieldset label[data-v-ade1eb42]{align-items:center;gap:5px;font-size:12px;display:flex}.project-team legend[data-v-ade1eb42]{margin-bottom:8px;font-size:12px}.project-agent-automation-policy[data-v-ade1eb42]{border-block:1px solid var(--color-border);grid-template-columns:minmax(110px,150px) minmax(0,1fr);align-items:center;gap:14px;padding:11px 0;display:grid}.project-agent-automation-policy>header[data-v-ade1eb42]{min-width:0}.project-agent-automation-policy h3[data-v-ade1eb42]{color:var(--color-ink);font-size:12px;line-height:1.35}.project-agent-automation-policy header span[data-v-ade1eb42]{color:var(--color-muted);text-overflow:ellipsis;white-space:nowrap;margin-top:3px;font-size:12px;display:block;overflow:hidden}.project-agent-policy-options[data-v-ade1eb42]{grid-template-columns:repeat(2,minmax(0,1fr));min-width:0;display:grid}.project-agent-policy-options label[data-v-ade1eb42]{cursor:pointer;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;min-width:0;padding:2px 16px;display:grid}.project-agent-policy-options label+label[data-v-ade1eb42]{border-inline-start:1px solid var(--color-border)}.project-agent-policy-options label>span[data-v-ade1eb42]{gap:3px;min-width:0;display:grid}.project-agent-policy-options strong[data-v-ade1eb42]{color:var(--color-ink);font-size:12px;line-height:1.4}.project-agent-policy-options small[data-v-ade1eb42]{max-width:54ch;color:var(--color-muted);overflow-wrap:anywhere;font-size:12px;line-height:1.45}.project-agent-policy-options input[data-v-ade1eb42]{appearance:none;border:1px solid var(--color-border-strong);background:var(--color-surface-subtle);cursor:pointer;border-radius:999px;width:34px;height:19px;margin:0;transition:background-color .14s ease-out,border-color .14s ease-out;position:relative}.project-agent-policy-options input[data-v-ade1eb42]:after{background:var(--color-surface);content:"";border-radius:50%;width:13px;height:13px;transition:transform .14s ease-out;position:absolute;top:2px;left:2px;box-shadow:0 1px 2px #24372c38}.project-agent-policy-options input[data-v-ade1eb42]:checked{border-color:var(--color-ink);background:var(--color-muted)}.project-agent-policy-options input[data-v-ade1eb42]:checked:after{transform:translate(15px)}.project-agent-policy-options input[data-v-ade1eb42]:focus-visible{outline:2px solid var(--color-accent);outline-offset:3px}.project-agent-policy-options input[data-v-ade1eb42]:disabled{cursor:wait;opacity:.62}.project-agent-policy-feedback[data-v-ade1eb42]{grid-column:2;min-height:14px;padding-inline:16px}.project-agent-policy-state[data-v-ade1eb42],.project-agent-policy-feedback p[data-v-ade1eb42]{color:var(--color-muted);font-size:12px;line-height:1.45}.project-agent-policy-feedback p[role=alert][data-v-ade1eb42]{color:var(--color-danger)}.project-agent-policy-feedback button[data-v-ade1eb42]{color:var(--color-ink);font:inherit;cursor:pointer;background:0 0;border:0;margin-inline-start:6px;padding:0;font-weight:700}@media (width<=760px){.project-agent-automation-policy[data-v-ade1eb42],.project-agent-policy-options[data-v-ade1eb42]{grid-template-columns:minmax(0,1fr)}.project-agent-policy-options label[data-v-ade1eb42]{padding:8px 0}.project-agent-policy-options label+label[data-v-ade1eb42]{border-inline-start:0;border-block-start:1px solid var(--color-border)}.project-agent-policy-feedback[data-v-ade1eb42]{grid-column:1;padding-inline:0}}.project-agent-source-state[data-v-4f121023]{border:1px solid var(--color-border);border-radius:var(--radius-control);background:var(--color-surface);color:var(--color-muted);justify-content:space-between;align-items:center;gap:10px;margin-top:22px;padding:10px 12px;font-size:12px;display:flex}.project-agent-source-state.is-error[data-v-4f121023]{border-color:var(--color-danger-soft);background:var(--color-danger-soft);color:var(--color-danger)}.project-agent-task-diagnostics[data-v-f960dcef]{color:#334b3c;background:#f1f5f2;border-radius:8px;margin:12px 0;padding:12px}.project-agent-task-diagnostics dl[data-v-f960dcef]{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:0;display:grid}.project-agent-task-diagnostics dt[data-v-f960dcef]{color:#65766b;margin-bottom:4px;font-size:11px}.project-agent-task-diagnostics dd[data-v-f960dcef]{overflow-wrap:anywhere;margin:0;font-size:12px;line-height:1.5}.project-agent-task-diagnostics small[data-v-f960dcef]{color:#65766b;overflow-wrap:anywhere;margin-top:4px;font-size:11px;display:block}.project-agent-task-diagnostics p[data-v-f960dcef]{color:#52665a;margin:10px 0 0;font-size:12px;line-height:1.6}@media (width<=540px){.project-agent-task-diagnostics dl[data-v-f960dcef]{grid-template-columns:1fr;gap:10px}}.employee-work-history[data-v-d4d00831]{margin-block:24px;font-size:14px}summary[data-v-d4d00831]{cursor:pointer;padding-block:12px;font-weight:650}label[data-v-d4d00831]{flex-wrap:wrap;align-items:center;gap:12px;display:flex}select[data-v-d4d00831]{max-width:100%;font:inherit;padding:8px}ol[data-v-d4d00831]{margin:12px 0;padding:0;list-style:none}li[data-v-d4d00831]{border-top:1px solid var(--color-border);padding-block:14px}.work-record-meta[data-v-d4d00831]{flex-wrap:wrap;align-items:baseline;gap:12px;display:flex}p[data-v-d4d00831]{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.65}@media (width<=640px){.employee-work-history[data-v-d4d00831]{font-size:16px}}.project-agent-fields[data-v-86bea342]{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.project-agent-wide[data-v-86bea342]{grid-column:1/-1}.project-agent-strategy[data-v-86bea342]{border:1px solid var(--color-border);border-radius:var(--radius-control);grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;min-width:0;margin:0;padding:14px;display:grid}.project-agent-strategy legend[data-v-86bea342]{padding:0 6px;font-size:12px;font-weight:600}@media (width<=620px){.project-agent-fields[data-v-86bea342],.project-agent-strategy[data-v-86bea342]{grid-template-columns:1fr}.project-agent-wide[data-v-86bea342]{grid-column:auto}}.project-agent-row-shell[data-v-394b82e3]{align-items:flex-start;gap:6px;min-width:0;display:flex}.project-agent-row-shell>.project-agent-row[data-v-394b82e3]{flex:1;min-width:0}.project-agent-row-shell>.agent-hand[data-v-394b82e3]{margin-top:14px}.project-agent-header-actions[data-v-394b82e3]{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.project-agents-view[data-v-394b82e3]{flex-direction:column;gap:16px;min-height:0;padding:20px 32px 24px;display:flex;overflow:hidden}.project-agents-header[data-v-394b82e3],.project-agent-section-heading[data-v-394b82e3],.project-agent-section-tools[data-v-394b82e3],.project-agent-detail-actions[data-v-394b82e3],.project-agent-assignment-card header[data-v-394b82e3],.project-agent-task-card header[data-v-394b82e3],.project-agent-learning-card header[data-v-394b82e3],.project-agent-day-detail header[data-v-394b82e3]{justify-content:space-between;align-items:center;gap:12px;display:flex}.project-agents-header h2[data-v-394b82e3]{color:var(--color-ink);font-size:20px}.project-agents-header-meta[data-v-394b82e3]{color:var(--color-muted);font-size:12px}.project-agents-summary[data-v-394b82e3]{color:var(--color-muted);gap:18px;padding:2px 0 4px;font-size:12px;line-height:1.5;display:flex}.project-agents-summary span[data-v-394b82e3]:first-child{color:var(--color-ink);font-weight:700}.project-agents-toolbar[data-v-394b82e3]{grid-template-columns:minmax(240px,320px) minmax(200px,1fr) auto;align-items:center;gap:12px;display:grid}.project-agents-search input[data-v-394b82e3]{border:1px solid var(--color-border-strong);border-radius:var(--radius-control);background:var(--color-surface);width:100%;min-height:44px;color:var(--color-ink);padding:10px 12px;font-size:13px}.project-agents-search input[data-v-394b82e3]:focus-visible{outline:2px solid var(--color-accent);outline-offset:1px}.project-agents-status-filter[data-v-394b82e3]{border:1px solid var(--color-border);border-radius:var(--radius-control);background:var(--color-surface-subtle);gap:3px;padding:3px;display:flex}.project-agents-status-filter button[data-v-394b82e3]{min-height:34px;color:var(--color-muted);cursor:pointer;background:0 0;border:0;border-radius:6px;padding:7px 10px;font-size:12px}.project-agents-status-filter button[aria-pressed=true][data-v-394b82e3]{background:var(--color-surface);color:var(--color-ink);font-weight:700;box-shadow:0 1px 3px #27392f1f}.project-agents-directory[data-v-394b82e3]{flex:1;grid-template-columns:minmax(360px,.94fr) minmax(390px,1.06fr);min-height:0;display:grid;overflow:hidden}.project-agent-list[data-v-394b82e3]{border-right:1px solid var(--color-border);min-width:0;min-height:0;overflow:auto}.project-agent-row[data-v-394b82e3]{border:0;border-bottom:1px solid var(--color-border);background:var(--color-surface);width:100%;color:inherit;text-align:left;grid-template-columns:minmax(0,1fr) auto;gap:5px 14px;padding:14px 16px;display:grid}.project-agent-row[data-v-394b82e3]:hover{background:var(--color-surface)}.project-agent-row.selected[data-v-394b82e3]{background:var(--color-surface-subtle)}.project-agent-row[data-v-394b82e3]:focus-visible{z-index:1;outline:2px solid var(--color-accent);outline-offset:-3px;position:relative}.project-agent-row-heading[data-v-394b82e3]{align-items:center;gap:7px;min-width:0;display:flex}.project-agent-occupation-emoji[data-v-394b82e3]{flex:none;justify-content:center;align-items:center;min-width:1.2em;font-size:15px;line-height:1;display:inline-flex}.project-agent-row-heading strong[data-v-394b82e3]{color:var(--color-ink);text-overflow:ellipsis;white-space:nowrap;font-size:14px;overflow:hidden}.project-agent-row-heading .ui-badge[data-v-394b82e3]{flex:none;font-style:normal;font-weight:650}.project-agent-row-heading .ui-badge.is-active[data-v-394b82e3]{color:var(--color-accent)}.project-agent-row-heading .ui-badge.is-archived[data-v-394b82e3],.project-agent-kind[data-v-394b82e3]{color:var(--color-muted)}.project-agent-row-projects[data-v-394b82e3]{flex-wrap:wrap;grid-column:1/-1;gap:4px;display:flex}.project-agent-row-projects b[data-v-394b82e3],.project-agent-tags span[data-v-394b82e3],.project-agent-inline-list span[data-v-394b82e3]{background:var(--color-surface-subtle);color:var(--color-muted);border-radius:999px;padding:3px 7px;font-size:12px;font-weight:650}.project-agent-row-projects em[data-v-394b82e3]{color:var(--color-muted);font-size:12px;font-style:normal}.project-agent-row-responsibility[data-v-394b82e3]{color:var(--color-muted);text-overflow:ellipsis;white-space:nowrap;grid-column:1/-1;font-size:12px;line-height:1.5;overflow:hidden}.project-agent-row-work[data-v-394b82e3]{color:var(--color-muted);grid-column:1/-1;font-size:12px;line-height:1.5}.project-agent-work-dot[data-v-394b82e3]{background:var(--color-muted);border-radius:50%;width:6px;height:6px;margin-right:4px;display:inline-block}.project-agent-detail[data-v-394b82e3]{min-width:0;min-height:0;padding:24px;overflow:auto;container-type:inline-size}.employee-project-overview[data-v-394b82e3]{border-bottom:1px solid var(--color-border);margin:22px 0;padding-bottom:18px}.employee-project-overview-heading[data-v-394b82e3]{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.employee-project-overview-heading h4[data-v-394b82e3]{color:var(--color-ink);margin:0;font-size:14px}.employee-project-overview-heading p[data-v-394b82e3],.employee-project-overview-hint[data-v-394b82e3]{color:var(--color-muted);margin:5px 0 0;font-size:12px;line-height:1.6}.employee-project-overview-hint[data-v-394b82e3]{margin-top:12px}.employee-assigned-projects[data-v-394b82e3]{grid-template-columns:repeat(2,minmax(0,1fr));gap:2px 20px;margin-top:12px;display:grid}.employee-assigned-projects a[data-v-394b82e3]{color:var(--color-ink);justify-content:space-between;align-items:center;gap:10px;padding:8px 0;font-size:13px;line-height:1.5;text-decoration:none;display:flex}.employee-assigned-projects a[data-v-394b82e3]:hover{text-underline-offset:3px;text-decoration:underline}.employee-assigned-projects a[data-v-394b82e3]:focus-visible{outline:2px solid var(--color-accent);outline-offset:3px}.employee-assigned-projects a span[data-v-394b82e3]{overflow-wrap:anywhere}.employee-assigned-projects svg[data-v-394b82e3]{flex-shrink:0}@container (width<=480px){.employee-assigned-projects[data-v-394b82e3]{grid-template-columns:minmax(0,1fr)}}.project-agent-detail>header[data-v-394b82e3]{border-bottom:1px solid var(--color-border);grid-template-columns:minmax(0,1fr) max-content;align-items:flex-start;gap:16px;padding-bottom:16px;display:grid}.project-agent-detail-heading[data-v-394b82e3]{min-width:0}.project-agent-detail h3[data-v-394b82e3]{color:var(--color-ink);text-wrap:balance;font-size:18px;line-height:1.32}.project-agent-detail header p[data-v-394b82e3]{max-width:72ch;color:var(--color-muted);overflow-wrap:anywhere;margin-top:5px;font-size:13px;line-height:1.5}.project-agent-detail-actions[data-v-394b82e3]{grid-auto-columns:minmax(78px,max-content);grid-auto-flow:column;justify-content:end;gap:8px;display:grid}.project-agent-detail-actions .quiet-button[data-v-394b82e3]{white-space:nowrap;min-width:78px}.project-agent-detail-meta[data-v-394b82e3],.project-agent-compact-meta[data-v-394b82e3]{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:16px 0 0;display:grid}.project-agent-detail-meta div[data-v-394b82e3],.project-agent-compact-meta div[data-v-394b82e3]{min-width:0}.project-agent-detail-meta dt[data-v-394b82e3],.project-agent-compact-meta dt[data-v-394b82e3],.project-agent-detail-section h4[data-v-394b82e3]{color:var(--color-muted);letter-spacing:.06em;text-transform:uppercase;font-size:12px;font-weight:700}.project-agent-detail-meta dd[data-v-394b82e3],.project-agent-compact-meta dd[data-v-394b82e3]{overflow-wrap:anywhere;color:var(--color-ink);margin:4px 0 0;font-size:12px}.project-agent-detail-meta dd small[data-v-394b82e3]{color:var(--color-muted);margin-top:3px;font-size:12px;line-height:1.4;display:block}.project-agent-detail-section[data-v-394b82e3]{margin-top:24px}.project-agent-detail-section.is-responsibility[data-v-394b82e3]{border-radius:var(--radius-card);background:var(--color-surface-subtle);padding:16px}.project-agent-detail-section p[data-v-394b82e3],.project-agent-detail-section li[data-v-394b82e3]{color:var(--color-ink);font-size:14px;line-height:1.6}.project-agent-tags[data-v-394b82e3],.project-agent-inline-list[data-v-394b82e3]{flex-wrap:wrap;gap:6px;margin-top:9px;display:flex}.project-agent-muted[data-v-394b82e3]{color:var(--color-muted)!important}.project-agent-detail-notice[data-v-394b82e3]{border-radius:var(--radius-control);background:var(--color-surface-subtle);margin:12px 0 0;padding:8px 10px;color:var(--color-muted)!important}.project-agent-detail-placeholder[data-v-394b82e3],.project-agents-state[data-v-394b82e3]{min-height:240px;color:var(--color-muted);text-align:center;place-content:center;justify-items:center;gap:8px;font-size:14px;display:grid}.project-agents-state[data-v-394b82e3]{flex:1}.project-agents-state strong[data-v-394b82e3]{color:var(--color-ink);font-size:14px}.project-agents-state p[data-v-394b82e3]{max-width:52ch;line-height:1.6}.project-agents-state.is-error[data-v-394b82e3]{color:var(--color-danger)}.project-agent-assignment-list[data-v-394b82e3],.project-agent-task-list[data-v-394b82e3],.project-agent-learning-list[data-v-394b82e3],.project-agent-recruitment-list[data-v-394b82e3]{gap:12px;margin-top:12px;display:grid}.project-agent-task-list[data-v-394b82e3]{grid-template-columns:minmax(0,1fr);min-width:0}.project-agent-execution-summary[data-v-394b82e3]{border-top:1px solid var(--color-border);min-width:0;margin-top:13px;padding-top:12px}.project-agent-worker-event-evidence[data-v-394b82e3]{border:1px dashed var(--color-border);border-radius:var(--radius-control);background:var(--color-surface);margin-top:13px;padding:10px 10px 0}.project-agent-execution-summary .project-agent-section-heading[data-v-394b82e3]{gap:8px}.project-agent-execution-summary h5[data-v-394b82e3]{color:var(--color-muted);letter-spacing:.06em;text-transform:uppercase;margin:0;font-size:12px;font-weight:700}.project-agent-execution-summary-table-wrap[data-v-394b82e3]{box-sizing:border-box;overscroll-behavior-inline:contain;border:1px solid var(--color-border);border-radius:var(--radius-control);background:var(--color-surface);width:100%;max-width:100%;margin-top:7px;overflow-x:auto}.project-agent-execution-summary-table-wrap[data-v-394b82e3]:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.project-agent-execution-summary-table[data-v-394b82e3]{border-collapse:collapse;table-layout:fixed;width:100%;min-width:1040px;color:var(--color-ink);font-size:12px;line-height:1.5}.project-agent-execution-summary-table th[data-v-394b82e3],.project-agent-execution-summary-table td[data-v-394b82e3]{border-right:1px solid var(--color-border);border-bottom:1px solid var(--color-border);overflow-wrap:anywhere;text-align:left;vertical-align:top;min-width:0;padding:8px 9px}.project-agent-execution-summary-table tr[data-v-394b82e3]>:last-child{border-right:0}.project-agent-execution-summary-table tbody tr[data-v-394b82e3]:last-child>*{border-bottom:0}.project-agent-execution-summary-table thead th[data-v-394b82e3]{background:var(--color-surface-subtle);color:var(--color-muted);letter-spacing:.04em;text-transform:uppercase;font-size:12px;font-weight:750}.project-agent-execution-summary-table thead th[data-v-394b82e3]:first-child{width:14%}.project-agent-execution-summary-table thead th[data-v-394b82e3]:nth-child(2){width:20%}.project-agent-execution-summary-table thead th[data-v-394b82e3]:nth-child(3){width:13%}.project-agent-execution-summary-table thead th[data-v-394b82e3]:nth-child(4),.project-agent-execution-summary-table thead th[data-v-394b82e3]:nth-child(5){width:15%}.project-agent-execution-summary-table thead th[data-v-394b82e3]:nth-child(6){width:12%}.project-agent-execution-summary-table tbody tr[data-v-394b82e3]:hover{background:var(--color-surface)}.project-agent-execution-summary-table tbody th[data-v-394b82e3]{color:var(--color-ink);font-weight:700}.project-agent-execution-summary-table tbody strong[data-v-394b82e3],.project-agent-execution-summary-table tbody span[data-v-394b82e3],.project-agent-execution-summary-table tbody small[data-v-394b82e3],.project-agent-execution-summary-table tbody a[data-v-394b82e3]{display:block}.project-agent-execution-summary-table tbody small[data-v-394b82e3]{color:var(--color-muted);margin-top:3px;font-size:12px;font-weight:500}.project-agent-execution-summary-table tbody .project-agent-reporter-label[data-v-394b82e3]{margin-top:8px}.project-agent-execution-summary-table tbody a[data-v-394b82e3]{color:var(--color-ink);text-underline-offset:2px;margin-top:3px;text-decoration-thickness:1px}.project-agent-execution-summary-table tbody a[data-v-394b82e3]:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px;border-radius:2px}.project-agent-execution-worker[data-v-394b82e3]{align-items:center;gap:4px;display:flex!important}.project-agent-execution-summary-row i[data-v-394b82e3]{background:var(--color-surface-subtle);color:var(--color-muted);border-radius:999px;padding:2px 6px;font-size:12px;font-style:normal;font-weight:700;display:inline-flex}.project-agent-execution-summary-row i.is-completed[data-v-394b82e3]{background:var(--color-surface-subtle);color:var(--color-ink)}.project-agent-execution-summary-row i.is-failed[data-v-394b82e3]{background:var(--color-danger-soft);color:var(--color-danger)}.project-agent-execution-summary-row i.is-cancelled[data-v-394b82e3]{background:var(--color-surface-subtle);color:var(--color-muted)}.project-agent-execution-summary-list[data-v-394b82e3]{margin:7px 0 0;padding:0;list-style:none;display:grid}.project-agent-worker-event-row[data-v-394b82e3]{border-top:1px solid var(--color-border);min-width:0;padding:10px 0}.project-agent-worker-event-row[data-v-394b82e3]:first-child{border-top:0}.project-agent-worker-event-row header[data-v-394b82e3]{align-items:flex-start}.project-agent-worker-event-row header strong[data-v-394b82e3]{overflow-wrap:anywhere;min-width:0;color:var(--color-ink);align-items:center;gap:5px;font-size:12px;display:flex}.project-agent-worker-event-row header strong small[data-v-394b82e3]{color:var(--color-muted);margin:0;font-size:12px;font-weight:500;display:inline}.project-agent-worker-event-row header i[data-v-394b82e3]{background:var(--color-surface-subtle);color:var(--color-muted);border-radius:999px;flex:none;padding:2px 6px;font-size:12px;font-style:normal;font-weight:700}.project-agent-worker-event-row header i.is-completed[data-v-394b82e3]{background:var(--color-surface-subtle);color:var(--color-ink)}.project-agent-worker-event-row header i.is-failed[data-v-394b82e3]{background:var(--color-danger-soft);color:var(--color-danger)}.project-agent-worker-event-row header i.is-cancelled[data-v-394b82e3]{background:var(--color-surface-subtle);color:var(--color-muted)}.project-agent-execution-summary-meta[data-v-394b82e3]{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px 10px;margin:8px 0 0;display:grid}.project-agent-execution-summary-meta div[data-v-394b82e3]{min-width:0}.project-agent-execution-summary-meta dt[data-v-394b82e3]{color:var(--color-muted);letter-spacing:.04em;text-transform:uppercase;font-size:12px;font-weight:700}.project-agent-execution-summary-meta dd[data-v-394b82e3]{overflow-wrap:anywhere;color:var(--color-ink);margin:2px 0 0;font-size:12px;line-height:1.45}.project-agent-execution-summary-meta dd small[data-v-394b82e3]{color:var(--color-muted);margin-top:2px;font-size:12px;display:block}.project-agent-assignment-card[data-v-394b82e3],.project-agent-task-card[data-v-394b82e3],.project-agent-learning-card[data-v-394b82e3],.project-agent-recruitment-card[data-v-394b82e3]{min-width:0;padding:16px}.project-agent-assignment-card header strong[data-v-394b82e3],.project-agent-task-card header strong[data-v-394b82e3],.project-agent-learning-card header strong[data-v-394b82e3],.project-agent-recruitment-card header strong[data-v-394b82e3]{color:var(--color-ink);font-size:14px}.project-agent-card-actions[data-v-394b82e3]{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:4px;display:flex}.project-agent-assignment-card p[data-v-394b82e3],.project-agent-task-card p[data-v-394b82e3],.project-agent-learning-card p[data-v-394b82e3]{margin:8px 0 0;font-size:14px;line-height:1.55}.project-agent-assignment-card small[data-v-394b82e3],.project-agent-task-card small[data-v-394b82e3],.project-agent-learning-card small[data-v-394b82e3]{color:var(--color-muted);margin-top:8px;font-size:12px;line-height:1.5;display:block}.project-agent-assignment-card header .ui-badge.is-ended[data-v-394b82e3],.project-agent-assignment-card header .ui-badge.is-replaced[data-v-394b82e3]{color:var(--color-muted)}.project-agent-strategy-note[data-v-394b82e3],.project-agent-execution-line[data-v-394b82e3]{color:var(--color-muted);flex-wrap:wrap;align-items:baseline;gap:6px;margin-top:8px;font-size:12px;display:flex}.project-agent-strategy-note strong[data-v-394b82e3],.project-agent-execution-line strong[data-v-394b82e3]{color:var(--color-muted);font-size:12px}.project-agent-strategy-note small[data-v-394b82e3]{color:var(--color-danger);flex-basis:100%}.project-agent-routing-decision[data-v-394b82e3]{border:1px solid var(--color-border);border-radius:var(--radius-control);background:var(--color-surface-subtle);color:var(--color-muted);gap:5px;margin-top:10px;padding:9px 10px;font-size:12px;display:grid}.project-agent-routing-decision .project-agent-section-heading[data-v-394b82e3]{align-items:baseline;gap:8px}.project-agent-routing-decision .project-agent-section-heading strong[data-v-394b82e3]{color:var(--color-ink);font-size:12px}.project-agent-routing-decision small[data-v-394b82e3]{color:var(--color-muted);line-height:1.45}.project-agent-blocked[data-v-394b82e3]{color:var(--color-danger)!important}.project-agent-task-card[data-v-394b82e3]{scroll-margin:16px}.project-agent-task-card.is-linked[data-v-394b82e3]{box-shadow:inset 0 0 0 2px var(--color-accent)}.project-agent-task-card header[data-v-394b82e3]{align-items:flex-start}.project-agent-task-card header small[data-v-394b82e3]{margin-top:3px}.project-agent-task-card header .ui-badge[data-v-394b82e3]{color:var(--color-muted);font-style:normal}.project-agent-task-card header .ui-badge.is-completed[data-v-394b82e3]{color:var(--color-ink)}.project-agent-task-card header .ui-badge.is-failed[data-v-394b82e3]{background:var(--color-danger-soft);color:var(--color-danger)}.project-agent-task-card header .ui-badge.is-cancelled[data-v-394b82e3]{color:var(--color-muted)}.project-agent-heatmap-viewport[data-v-394b82e3]{contain:layout inline-size paint;min-width:0;max-width:100%;overflow-x:clip}.project-agent-heatmap[data-v-394b82e3]{grid-template-rows:repeat(7,minmax(10px,1fr));grid-auto-columns:minmax(10px,1fr);grid-auto-flow:column;gap:3px;width:100%;max-width:100%;margin-top:9px;padding:0;display:grid;overflow-x:auto}.project-agent-heat-cell[data-v-394b82e3]{appearance:none;box-sizing:border-box;aspect-ratio:1;border:1px solid var(--color-border);background:var(--color-surface-subtle);border-radius:3px;min-width:9px;margin:0;padding:0}.project-agent-heat-cell.intensity-1[data-v-394b82e3]{background:var(--color-surface-subtle)}.project-agent-heat-cell.intensity-2[data-v-394b82e3],.project-agent-heat-cell.intensity-3[data-v-394b82e3],.project-agent-heat-cell.intensity-4[data-v-394b82e3]{background:var(--color-muted)}.project-agent-heat-cell[data-v-394b82e3]:focus-visible,.project-agent-heat-cell.selected[data-v-394b82e3]{border:2px solid var(--color-accent);box-shadow:none;outline:none}.project-agent-day-detail[data-v-394b82e3]{border-radius:var(--radius-control);background:var(--color-surface-subtle);margin-top:10px;padding:10px}.project-agent-day-detail ul[data-v-394b82e3]{margin:8px 0 0;padding-left:17px}.project-agent-day-detail li[data-v-394b82e3]{margin-top:6px}.project-agent-day-detail li strong[data-v-394b82e3],.project-agent-day-detail li span[data-v-394b82e3],.project-agent-day-detail li small[data-v-394b82e3]{display:block}.project-agent-day-detail li span[data-v-394b82e3],.project-agent-day-detail li small[data-v-394b82e3]{color:var(--color-muted);font-size:12px}.project-agent-client-list[data-v-394b82e3],.project-agent-rule-list[data-v-394b82e3]{gap:5px;margin-top:9px;display:grid}.project-agent-client-row[data-v-394b82e3],.project-agent-rule-row[data-v-394b82e3]{border-radius:var(--radius-control);background:var(--color-surface);color:var(--color-muted);grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:7px;padding:8px 10px;font-size:12px;display:grid}.project-agent-client-row strong[data-v-394b82e3],.project-agent-rule-row strong[data-v-394b82e3]{color:var(--color-ink);font-size:12px}.project-agent-client-row small[data-v-394b82e3]{color:var(--color-muted);grid-column:1/-1}.project-agent-executor-list[data-v-394b82e3]{gap:5px;margin-top:9px;display:grid}.project-agent-executor-row[data-v-394b82e3]{border-radius:var(--radius-control);background:var(--color-surface);color:var(--color-muted);grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:7px;padding:8px 10px;font-size:12px;display:grid}.project-agent-executor-row strong[data-v-394b82e3]{color:var(--color-ink);font-size:12px}.project-agent-executor-row small[data-v-394b82e3]{color:var(--color-muted);grid-column:1/-1}.project-agent-learning-card header .ui-badge[data-v-394b82e3]{color:var(--color-muted);font-style:normal}.project-agent-evidence-list[data-v-394b82e3]{margin:8px 0 0;padding-left:17px}.project-agent-evidence-list li[data-v-394b82e3]{color:var(--color-muted);font-size:12px}.project-agent-learning-actions[data-v-394b82e3]{gap:6px;margin-top:8px;display:flex}.project-agent-note[data-v-394b82e3]{color:var(--color-muted);margin-top:9px;font-size:12px;line-height:1.5;display:block}.project-agent-detail .ui-badge[data-v-394b82e3]{font-style:normal}.sr-only[data-v-394b82e3]{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (width<=1180px){.project-agents-toolbar[data-v-394b82e3]{grid-template-columns:minmax(220px,280px) 1fr}.project-agents-status-filter[data-v-394b82e3]{grid-column:1/-1;justify-self:start}.project-agents-directory[data-v-394b82e3]{grid-template-columns:minmax(320px,.9fr) minmax(330px,1fr)}.project-agent-detail-meta[data-v-394b82e3],.project-agent-compact-meta[data-v-394b82e3]{grid-template-columns:repeat(2,minmax(0,1fr))}}@container (width<=420px){.project-agent-detail>header[data-v-394b82e3]{grid-template-columns:minmax(0,1fr)}.project-agent-detail-actions[data-v-394b82e3]{justify-content:start}}@media (width<=760px){.project-agents-view[data-v-394b82e3]{padding:14px 16px 18px;overflow:auto}.project-agents-header[data-v-394b82e3],.project-agents-summary[data-v-394b82e3],.project-agent-section-heading[data-v-394b82e3],.project-agent-assignment-card header[data-v-394b82e3]{flex-wrap:wrap;align-items:flex-start}.project-agents-toolbar[data-v-394b82e3]{grid-template-columns:minmax(0,1fr)}.project-agents-project-filter[data-v-394b82e3],.project-agents-search[data-v-394b82e3],.project-agents-status-filter[data-v-394b82e3]{grid-column:1}.project-agents-status-filter[data-v-394b82e3]{flex-wrap:wrap;justify-self:stretch;width:100%}.project-agents-directory[data-v-394b82e3]{flex:none;grid-template-columns:minmax(0,1fr);overflow:visible}.project-agent-list[data-v-394b82e3]{border-right:0;border-bottom:1px solid var(--color-border);max-height:340px}.project-agent-detail[data-v-394b82e3]{min-height:520px;padding:16px}.project-agent-client-row[data-v-394b82e3],.project-agent-rule-row[data-v-394b82e3],.project-agent-executor-row[data-v-394b82e3]{grid-template-columns:minmax(0,1fr);align-items:start}.project-agent-client-row small[data-v-394b82e3],.project-agent-executor-row small[data-v-394b82e3]{grid-column:1}.project-agent-execution-summary-meta[data-v-394b82e3]{grid-template-columns:minmax(0,1fr)}.project-agent-worker-event-row header[data-v-394b82e3]{gap:8px}}.project-agent-disclosure[data-v-394b82e3]{margin-top:16px}.project-agent-disclosure .project-agent-detail-section[data-v-394b82e3]:first-child{margin-top:0}
|
|
1
|
+
.project-agent-assignment-fields[data-v-0c51a000]{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.project-agent-assignment-wide[data-v-0c51a000]{grid-column:1/-1}@media (width<=620px){.project-agent-assignment-fields[data-v-0c51a000]{grid-template-columns:1fr}.project-agent-assignment-wide[data-v-0c51a000]{grid-column:auto}}.executor-routing-fields[data-v-7120b758]{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.executor-routing-wide[data-v-7120b758]{grid-column:1/-1}.executor-routing-fields p[data-v-7120b758]{margin:0}@media (width<=620px){.executor-routing-fields[data-v-7120b758]{grid-template-columns:1fr}.executor-routing-wide[data-v-7120b758]{grid-column:auto}}.project-team[data-v-881ab823]{border-top:1px solid var(--color-border);grid-column:1/-1;min-width:0;padding-block:12px}.project-team-peers[data-v-881ab823]{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.project-team-peers[data-v-881ab823]>*{background:var(--color-surface-subtle);border:1px solid var(--color-border-strong);color:var(--color-ink);border-radius:6px;padding:7px 10px;font-size:12px}.project-team-summary[data-v-881ab823]{color:var(--color-muted);margin:9px 0;font-size:12px}.project-team-members[data-v-881ab823]{gap:9px;margin:10px 0 16px 18px;padding:0;list-style:none;display:grid}.project-team-members button[data-v-881ab823]{text-align:start;max-width:100%;color:var(--color-ink);background:0 0;border:0;gap:3px;display:grid}.project-team-members span[data-v-881ab823]{color:var(--color-muted);overflow-wrap:anywhere;font-size:12px;line-height:1.5}.project-team summary[data-v-881ab823]{cursor:pointer;font-size:12px}.team-lead-field[data-v-881ab823]{max-width:360px;margin-block:14px}.project-team fieldset[data-v-881ab823]{border:0;flex-wrap:wrap;gap:12px;margin-bottom:14px;padding:0;display:flex}.project-team fieldset label[data-v-881ab823]{align-items:center;gap:5px;font-size:12px;display:flex}.project-team legend[data-v-881ab823]{margin-bottom:8px;font-size:12px}.project-agent-automation-policy[data-v-881ab823]{border-block:1px solid var(--color-border);grid-template-columns:minmax(110px,150px) minmax(0,1fr);align-items:center;gap:14px;padding:11px 0;display:grid}.project-agent-automation-policy>header[data-v-881ab823]{min-width:0}.project-agent-automation-policy h3[data-v-881ab823]{color:var(--color-ink);font-size:12px;line-height:1.35}.project-agent-automation-policy header span[data-v-881ab823]{color:var(--color-muted);text-overflow:ellipsis;white-space:nowrap;margin-top:3px;font-size:12px;display:block;overflow:hidden}.project-agent-policy-options[data-v-881ab823]{grid-template-columns:repeat(2,minmax(0,1fr));min-width:0;display:grid}.project-agent-policy-options label[data-v-881ab823]{cursor:pointer;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;min-width:0;padding:2px 16px;display:grid}.project-agent-policy-options label+label[data-v-881ab823]{border-inline-start:1px solid var(--color-border)}.project-agent-policy-options label>span[data-v-881ab823]{gap:3px;min-width:0;display:grid}.project-agent-policy-options strong[data-v-881ab823]{color:var(--color-ink);font-size:12px;line-height:1.4}.project-agent-policy-options small[data-v-881ab823]{max-width:54ch;color:var(--color-muted);overflow-wrap:anywhere;font-size:12px;line-height:1.45}.project-agent-policy-options input[data-v-881ab823]{appearance:none;border:1px solid var(--color-border-strong);background:var(--color-surface-subtle);cursor:pointer;border-radius:999px;width:34px;height:19px;margin:0;transition:background-color .14s ease-out,border-color .14s ease-out;position:relative}.project-agent-policy-options input[data-v-881ab823]:after{background:var(--color-surface);content:"";border-radius:50%;width:13px;height:13px;transition:transform .14s ease-out;position:absolute;top:2px;left:2px;box-shadow:0 1px 2px #24372c38}.project-agent-policy-options input[data-v-881ab823]:checked{border-color:var(--color-ink);background:var(--color-muted)}.project-agent-policy-options input[data-v-881ab823]:checked:after{transform:translate(15px)}.project-agent-policy-options input[data-v-881ab823]:focus-visible{outline:2px solid var(--color-accent);outline-offset:3px}.project-agent-policy-options input[data-v-881ab823]:disabled{cursor:wait;opacity:.62}.project-agent-policy-feedback[data-v-881ab823]{grid-column:2;min-height:14px;padding-inline:16px}.project-agent-policy-state[data-v-881ab823],.project-agent-policy-feedback p[data-v-881ab823]{color:var(--color-muted);font-size:12px;line-height:1.45}.project-agent-policy-feedback p[role=alert][data-v-881ab823]{color:var(--color-danger)}.project-agent-policy-feedback button[data-v-881ab823]{color:var(--color-ink);font:inherit;cursor:pointer;background:0 0;border:0;margin-inline-start:6px;padding:0;font-weight:700}@media (width<=760px){.project-agent-automation-policy[data-v-881ab823],.project-agent-policy-options[data-v-881ab823]{grid-template-columns:minmax(0,1fr)}.project-agent-policy-options label[data-v-881ab823]{padding:8px 0}.project-agent-policy-options label+label[data-v-881ab823]{border-inline-start:0;border-block-start:1px solid var(--color-border)}.project-agent-policy-feedback[data-v-881ab823]{grid-column:1;padding-inline:0}}.project-agent-source-state[data-v-4f121023]{border:1px solid var(--color-border);border-radius:var(--radius-control);background:var(--color-surface);color:var(--color-muted);justify-content:space-between;align-items:center;gap:10px;margin-top:22px;padding:10px 12px;font-size:12px;display:flex}.project-agent-source-state.is-error[data-v-4f121023]{border-color:var(--color-danger-soft);background:var(--color-danger-soft);color:var(--color-danger)}.project-agent-task-diagnostics[data-v-f960dcef]{color:#334b3c;background:#f1f5f2;border-radius:8px;margin:12px 0;padding:12px}.project-agent-task-diagnostics dl[data-v-f960dcef]{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:0;display:grid}.project-agent-task-diagnostics dt[data-v-f960dcef]{color:#65766b;margin-bottom:4px;font-size:11px}.project-agent-task-diagnostics dd[data-v-f960dcef]{overflow-wrap:anywhere;margin:0;font-size:12px;line-height:1.5}.project-agent-task-diagnostics small[data-v-f960dcef]{color:#65766b;overflow-wrap:anywhere;margin-top:4px;font-size:11px;display:block}.project-agent-task-diagnostics p[data-v-f960dcef]{color:#52665a;margin:10px 0 0;font-size:12px;line-height:1.6}@media (width<=540px){.project-agent-task-diagnostics dl[data-v-f960dcef]{grid-template-columns:1fr;gap:10px}}.employee-work-history[data-v-d4d00831]{margin-block:24px;font-size:14px}summary[data-v-d4d00831]{cursor:pointer;padding-block:12px;font-weight:650}label[data-v-d4d00831]{flex-wrap:wrap;align-items:center;gap:12px;display:flex}select[data-v-d4d00831]{max-width:100%;font:inherit;padding:8px}ol[data-v-d4d00831]{margin:12px 0;padding:0;list-style:none}li[data-v-d4d00831]{border-top:1px solid var(--color-border);padding-block:14px}.work-record-meta[data-v-d4d00831]{flex-wrap:wrap;align-items:baseline;gap:12px;display:flex}p[data-v-d4d00831]{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.65}@media (width<=640px){.employee-work-history[data-v-d4d00831]{font-size:16px}}.project-agent-fields[data-v-86bea342]{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.project-agent-wide[data-v-86bea342]{grid-column:1/-1}.project-agent-strategy[data-v-86bea342]{border:1px solid var(--color-border);border-radius:var(--radius-control);grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;min-width:0;margin:0;padding:14px;display:grid}.project-agent-strategy legend[data-v-86bea342]{padding:0 6px;font-size:12px;font-weight:600}@media (width<=620px){.project-agent-fields[data-v-86bea342],.project-agent-strategy[data-v-86bea342]{grid-template-columns:1fr}.project-agent-wide[data-v-86bea342]{grid-column:auto}}.project-agent-row-shell[data-v-394b82e3]{align-items:flex-start;gap:6px;min-width:0;display:flex}.project-agent-row-shell>.project-agent-row[data-v-394b82e3]{flex:1;min-width:0}.project-agent-row-shell>.agent-hand[data-v-394b82e3]{margin-top:14px}.project-agent-header-actions[data-v-394b82e3]{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.project-agents-view[data-v-394b82e3]{flex-direction:column;gap:16px;min-height:0;padding:20px 32px 24px;display:flex;overflow:hidden}.project-agents-header[data-v-394b82e3],.project-agent-section-heading[data-v-394b82e3],.project-agent-section-tools[data-v-394b82e3],.project-agent-detail-actions[data-v-394b82e3],.project-agent-assignment-card header[data-v-394b82e3],.project-agent-task-card header[data-v-394b82e3],.project-agent-learning-card header[data-v-394b82e3],.project-agent-day-detail header[data-v-394b82e3]{justify-content:space-between;align-items:center;gap:12px;display:flex}.project-agents-header h2[data-v-394b82e3]{color:var(--color-ink);font-size:20px}.project-agents-header-meta[data-v-394b82e3]{color:var(--color-muted);font-size:12px}.project-agents-summary[data-v-394b82e3]{color:var(--color-muted);gap:18px;padding:2px 0 4px;font-size:12px;line-height:1.5;display:flex}.project-agents-summary span[data-v-394b82e3]:first-child{color:var(--color-ink);font-weight:700}.project-agents-toolbar[data-v-394b82e3]{grid-template-columns:minmax(240px,320px) minmax(200px,1fr) auto;align-items:center;gap:12px;display:grid}.project-agents-search input[data-v-394b82e3]{border:1px solid var(--color-border-strong);border-radius:var(--radius-control);background:var(--color-surface);width:100%;min-height:44px;color:var(--color-ink);padding:10px 12px;font-size:13px}.project-agents-search input[data-v-394b82e3]:focus-visible{outline:2px solid var(--color-accent);outline-offset:1px}.project-agents-status-filter[data-v-394b82e3]{border:1px solid var(--color-border);border-radius:var(--radius-control);background:var(--color-surface-subtle);gap:3px;padding:3px;display:flex}.project-agents-status-filter button[data-v-394b82e3]{min-height:34px;color:var(--color-muted);cursor:pointer;background:0 0;border:0;border-radius:6px;padding:7px 10px;font-size:12px}.project-agents-status-filter button[aria-pressed=true][data-v-394b82e3]{background:var(--color-surface);color:var(--color-ink);font-weight:700;box-shadow:0 1px 3px #27392f1f}.project-agents-directory[data-v-394b82e3]{flex:1;grid-template-columns:minmax(360px,.94fr) minmax(390px,1.06fr);min-height:0;display:grid;overflow:hidden}.project-agent-list[data-v-394b82e3]{border-right:1px solid var(--color-border);min-width:0;min-height:0;overflow:auto}.project-agent-row[data-v-394b82e3]{border:0;border-bottom:1px solid var(--color-border);background:var(--color-surface);width:100%;color:inherit;text-align:left;grid-template-columns:minmax(0,1fr) auto;gap:5px 14px;padding:14px 16px;display:grid}.project-agent-row[data-v-394b82e3]:hover{background:var(--color-surface)}.project-agent-row.selected[data-v-394b82e3]{background:var(--color-surface-subtle)}.project-agent-row[data-v-394b82e3]:focus-visible{z-index:1;outline:2px solid var(--color-accent);outline-offset:-3px;position:relative}.project-agent-row-heading[data-v-394b82e3]{align-items:center;gap:7px;min-width:0;display:flex}.project-agent-occupation-emoji[data-v-394b82e3]{flex:none;justify-content:center;align-items:center;min-width:1.2em;font-size:15px;line-height:1;display:inline-flex}.project-agent-row-heading strong[data-v-394b82e3]{color:var(--color-ink);text-overflow:ellipsis;white-space:nowrap;font-size:14px;overflow:hidden}.project-agent-row-heading .ui-badge[data-v-394b82e3]{flex:none;font-style:normal;font-weight:650}.project-agent-row-heading .ui-badge.is-active[data-v-394b82e3]{color:var(--color-accent)}.project-agent-row-heading .ui-badge.is-archived[data-v-394b82e3],.project-agent-kind[data-v-394b82e3]{color:var(--color-muted)}.project-agent-row-projects[data-v-394b82e3]{flex-wrap:wrap;grid-column:1/-1;gap:4px;display:flex}.project-agent-row-projects b[data-v-394b82e3],.project-agent-tags span[data-v-394b82e3],.project-agent-inline-list span[data-v-394b82e3]{background:var(--color-surface-subtle);color:var(--color-muted);border-radius:999px;padding:3px 7px;font-size:12px;font-weight:650}.project-agent-row-projects em[data-v-394b82e3]{color:var(--color-muted);font-size:12px;font-style:normal}.project-agent-row-responsibility[data-v-394b82e3]{color:var(--color-muted);text-overflow:ellipsis;white-space:nowrap;grid-column:1/-1;font-size:12px;line-height:1.5;overflow:hidden}.project-agent-row-work[data-v-394b82e3]{color:var(--color-muted);grid-column:1/-1;font-size:12px;line-height:1.5}.project-agent-work-dot[data-v-394b82e3]{background:var(--color-muted);border-radius:50%;width:6px;height:6px;margin-right:4px;display:inline-block}.project-agent-detail[data-v-394b82e3]{min-width:0;min-height:0;padding:24px;overflow:auto;container-type:inline-size}.employee-project-overview[data-v-394b82e3]{border-bottom:1px solid var(--color-border);margin:22px 0;padding-bottom:18px}.employee-project-overview-heading[data-v-394b82e3]{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.employee-project-overview-heading h4[data-v-394b82e3]{color:var(--color-ink);margin:0;font-size:14px}.employee-project-overview-heading p[data-v-394b82e3],.employee-project-overview-hint[data-v-394b82e3]{color:var(--color-muted);margin:5px 0 0;font-size:12px;line-height:1.6}.employee-project-overview-hint[data-v-394b82e3]{margin-top:12px}.employee-assigned-projects[data-v-394b82e3]{grid-template-columns:repeat(2,minmax(0,1fr));gap:2px 20px;margin-top:12px;display:grid}.employee-assigned-projects a[data-v-394b82e3]{color:var(--color-ink);justify-content:space-between;align-items:center;gap:10px;padding:8px 0;font-size:13px;line-height:1.5;text-decoration:none;display:flex}.employee-assigned-projects a[data-v-394b82e3]:hover{text-underline-offset:3px;text-decoration:underline}.employee-assigned-projects a[data-v-394b82e3]:focus-visible{outline:2px solid var(--color-accent);outline-offset:3px}.employee-assigned-projects a span[data-v-394b82e3]{overflow-wrap:anywhere}.employee-assigned-projects svg[data-v-394b82e3]{flex-shrink:0}@container (width<=480px){.employee-assigned-projects[data-v-394b82e3]{grid-template-columns:minmax(0,1fr)}}.project-agent-detail>header[data-v-394b82e3]{border-bottom:1px solid var(--color-border);grid-template-columns:minmax(0,1fr) max-content;align-items:flex-start;gap:16px;padding-bottom:16px;display:grid}.project-agent-detail-heading[data-v-394b82e3]{min-width:0}.project-agent-detail h3[data-v-394b82e3]{color:var(--color-ink);text-wrap:balance;font-size:18px;line-height:1.32}.project-agent-detail header p[data-v-394b82e3]{max-width:72ch;color:var(--color-muted);overflow-wrap:anywhere;margin-top:5px;font-size:13px;line-height:1.5}.project-agent-detail-actions[data-v-394b82e3]{grid-auto-columns:minmax(78px,max-content);grid-auto-flow:column;justify-content:end;gap:8px;display:grid}.project-agent-detail-actions .quiet-button[data-v-394b82e3]{white-space:nowrap;min-width:78px}.project-agent-detail-meta[data-v-394b82e3],.project-agent-compact-meta[data-v-394b82e3]{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:16px 0 0;display:grid}.project-agent-detail-meta div[data-v-394b82e3],.project-agent-compact-meta div[data-v-394b82e3]{min-width:0}.project-agent-detail-meta dt[data-v-394b82e3],.project-agent-compact-meta dt[data-v-394b82e3],.project-agent-detail-section h4[data-v-394b82e3]{color:var(--color-muted);letter-spacing:.06em;text-transform:uppercase;font-size:12px;font-weight:700}.project-agent-detail-meta dd[data-v-394b82e3],.project-agent-compact-meta dd[data-v-394b82e3]{overflow-wrap:anywhere;color:var(--color-ink);margin:4px 0 0;font-size:12px}.project-agent-detail-meta dd small[data-v-394b82e3]{color:var(--color-muted);margin-top:3px;font-size:12px;line-height:1.4;display:block}.project-agent-detail-section[data-v-394b82e3]{margin-top:24px}.project-agent-detail-section.is-responsibility[data-v-394b82e3]{border-radius:var(--radius-card);background:var(--color-surface-subtle);padding:16px}.project-agent-detail-section p[data-v-394b82e3],.project-agent-detail-section li[data-v-394b82e3]{color:var(--color-ink);font-size:14px;line-height:1.6}.project-agent-tags[data-v-394b82e3],.project-agent-inline-list[data-v-394b82e3]{flex-wrap:wrap;gap:6px;margin-top:9px;display:flex}.project-agent-muted[data-v-394b82e3]{color:var(--color-muted)!important}.project-agent-detail-notice[data-v-394b82e3]{border-radius:var(--radius-control);background:var(--color-surface-subtle);margin:12px 0 0;padding:8px 10px;color:var(--color-muted)!important}.project-agent-detail-placeholder[data-v-394b82e3],.project-agents-state[data-v-394b82e3]{min-height:240px;color:var(--color-muted);text-align:center;place-content:center;justify-items:center;gap:8px;font-size:14px;display:grid}.project-agents-state[data-v-394b82e3]{flex:1}.project-agents-state strong[data-v-394b82e3]{color:var(--color-ink);font-size:14px}.project-agents-state p[data-v-394b82e3]{max-width:52ch;line-height:1.6}.project-agents-state.is-error[data-v-394b82e3]{color:var(--color-danger)}.project-agent-assignment-list[data-v-394b82e3],.project-agent-task-list[data-v-394b82e3],.project-agent-learning-list[data-v-394b82e3],.project-agent-recruitment-list[data-v-394b82e3]{gap:12px;margin-top:12px;display:grid}.project-agent-task-list[data-v-394b82e3]{grid-template-columns:minmax(0,1fr);min-width:0}.project-agent-execution-summary[data-v-394b82e3]{border-top:1px solid var(--color-border);min-width:0;margin-top:13px;padding-top:12px}.project-agent-worker-event-evidence[data-v-394b82e3]{border:1px dashed var(--color-border);border-radius:var(--radius-control);background:var(--color-surface);margin-top:13px;padding:10px 10px 0}.project-agent-execution-summary .project-agent-section-heading[data-v-394b82e3]{gap:8px}.project-agent-execution-summary h5[data-v-394b82e3]{color:var(--color-muted);letter-spacing:.06em;text-transform:uppercase;margin:0;font-size:12px;font-weight:700}.project-agent-execution-summary-table-wrap[data-v-394b82e3]{box-sizing:border-box;overscroll-behavior-inline:contain;border:1px solid var(--color-border);border-radius:var(--radius-control);background:var(--color-surface);width:100%;max-width:100%;margin-top:7px;overflow-x:auto}.project-agent-execution-summary-table-wrap[data-v-394b82e3]:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.project-agent-execution-summary-table[data-v-394b82e3]{border-collapse:collapse;table-layout:fixed;width:100%;min-width:1040px;color:var(--color-ink);font-size:12px;line-height:1.5}.project-agent-execution-summary-table th[data-v-394b82e3],.project-agent-execution-summary-table td[data-v-394b82e3]{border-right:1px solid var(--color-border);border-bottom:1px solid var(--color-border);overflow-wrap:anywhere;text-align:left;vertical-align:top;min-width:0;padding:8px 9px}.project-agent-execution-summary-table tr[data-v-394b82e3]>:last-child{border-right:0}.project-agent-execution-summary-table tbody tr[data-v-394b82e3]:last-child>*{border-bottom:0}.project-agent-execution-summary-table thead th[data-v-394b82e3]{background:var(--color-surface-subtle);color:var(--color-muted);letter-spacing:.04em;text-transform:uppercase;font-size:12px;font-weight:750}.project-agent-execution-summary-table thead th[data-v-394b82e3]:first-child{width:14%}.project-agent-execution-summary-table thead th[data-v-394b82e3]:nth-child(2){width:20%}.project-agent-execution-summary-table thead th[data-v-394b82e3]:nth-child(3){width:13%}.project-agent-execution-summary-table thead th[data-v-394b82e3]:nth-child(4),.project-agent-execution-summary-table thead th[data-v-394b82e3]:nth-child(5){width:15%}.project-agent-execution-summary-table thead th[data-v-394b82e3]:nth-child(6){width:12%}.project-agent-execution-summary-table tbody tr[data-v-394b82e3]:hover{background:var(--color-surface)}.project-agent-execution-summary-table tbody th[data-v-394b82e3]{color:var(--color-ink);font-weight:700}.project-agent-execution-summary-table tbody strong[data-v-394b82e3],.project-agent-execution-summary-table tbody span[data-v-394b82e3],.project-agent-execution-summary-table tbody small[data-v-394b82e3],.project-agent-execution-summary-table tbody a[data-v-394b82e3]{display:block}.project-agent-execution-summary-table tbody small[data-v-394b82e3]{color:var(--color-muted);margin-top:3px;font-size:12px;font-weight:500}.project-agent-execution-summary-table tbody .project-agent-reporter-label[data-v-394b82e3]{margin-top:8px}.project-agent-execution-summary-table tbody a[data-v-394b82e3]{color:var(--color-ink);text-underline-offset:2px;margin-top:3px;text-decoration-thickness:1px}.project-agent-execution-summary-table tbody a[data-v-394b82e3]:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px;border-radius:2px}.project-agent-execution-worker[data-v-394b82e3]{align-items:center;gap:4px;display:flex!important}.project-agent-execution-summary-row i[data-v-394b82e3]{background:var(--color-surface-subtle);color:var(--color-muted);border-radius:999px;padding:2px 6px;font-size:12px;font-style:normal;font-weight:700;display:inline-flex}.project-agent-execution-summary-row i.is-completed[data-v-394b82e3]{background:var(--color-surface-subtle);color:var(--color-ink)}.project-agent-execution-summary-row i.is-failed[data-v-394b82e3]{background:var(--color-danger-soft);color:var(--color-danger)}.project-agent-execution-summary-row i.is-cancelled[data-v-394b82e3]{background:var(--color-surface-subtle);color:var(--color-muted)}.project-agent-execution-summary-list[data-v-394b82e3]{margin:7px 0 0;padding:0;list-style:none;display:grid}.project-agent-worker-event-row[data-v-394b82e3]{border-top:1px solid var(--color-border);min-width:0;padding:10px 0}.project-agent-worker-event-row[data-v-394b82e3]:first-child{border-top:0}.project-agent-worker-event-row header[data-v-394b82e3]{align-items:flex-start}.project-agent-worker-event-row header strong[data-v-394b82e3]{overflow-wrap:anywhere;min-width:0;color:var(--color-ink);align-items:center;gap:5px;font-size:12px;display:flex}.project-agent-worker-event-row header strong small[data-v-394b82e3]{color:var(--color-muted);margin:0;font-size:12px;font-weight:500;display:inline}.project-agent-worker-event-row header i[data-v-394b82e3]{background:var(--color-surface-subtle);color:var(--color-muted);border-radius:999px;flex:none;padding:2px 6px;font-size:12px;font-style:normal;font-weight:700}.project-agent-worker-event-row header i.is-completed[data-v-394b82e3]{background:var(--color-surface-subtle);color:var(--color-ink)}.project-agent-worker-event-row header i.is-failed[data-v-394b82e3]{background:var(--color-danger-soft);color:var(--color-danger)}.project-agent-worker-event-row header i.is-cancelled[data-v-394b82e3]{background:var(--color-surface-subtle);color:var(--color-muted)}.project-agent-execution-summary-meta[data-v-394b82e3]{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px 10px;margin:8px 0 0;display:grid}.project-agent-execution-summary-meta div[data-v-394b82e3]{min-width:0}.project-agent-execution-summary-meta dt[data-v-394b82e3]{color:var(--color-muted);letter-spacing:.04em;text-transform:uppercase;font-size:12px;font-weight:700}.project-agent-execution-summary-meta dd[data-v-394b82e3]{overflow-wrap:anywhere;color:var(--color-ink);margin:2px 0 0;font-size:12px;line-height:1.45}.project-agent-execution-summary-meta dd small[data-v-394b82e3]{color:var(--color-muted);margin-top:2px;font-size:12px;display:block}.project-agent-assignment-card[data-v-394b82e3],.project-agent-task-card[data-v-394b82e3],.project-agent-learning-card[data-v-394b82e3],.project-agent-recruitment-card[data-v-394b82e3]{min-width:0;padding:16px}.project-agent-assignment-card header strong[data-v-394b82e3],.project-agent-task-card header strong[data-v-394b82e3],.project-agent-learning-card header strong[data-v-394b82e3],.project-agent-recruitment-card header strong[data-v-394b82e3]{color:var(--color-ink);font-size:14px}.project-agent-card-actions[data-v-394b82e3]{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:4px;display:flex}.project-agent-assignment-card p[data-v-394b82e3],.project-agent-task-card p[data-v-394b82e3],.project-agent-learning-card p[data-v-394b82e3]{margin:8px 0 0;font-size:14px;line-height:1.55}.project-agent-assignment-card small[data-v-394b82e3],.project-agent-task-card small[data-v-394b82e3],.project-agent-learning-card small[data-v-394b82e3]{color:var(--color-muted);margin-top:8px;font-size:12px;line-height:1.5;display:block}.project-agent-assignment-card header .ui-badge.is-ended[data-v-394b82e3],.project-agent-assignment-card header .ui-badge.is-replaced[data-v-394b82e3]{color:var(--color-muted)}.project-agent-strategy-note[data-v-394b82e3],.project-agent-execution-line[data-v-394b82e3]{color:var(--color-muted);flex-wrap:wrap;align-items:baseline;gap:6px;margin-top:8px;font-size:12px;display:flex}.project-agent-strategy-note strong[data-v-394b82e3],.project-agent-execution-line strong[data-v-394b82e3]{color:var(--color-muted);font-size:12px}.project-agent-strategy-note small[data-v-394b82e3]{color:var(--color-danger);flex-basis:100%}.project-agent-routing-decision[data-v-394b82e3]{border:1px solid var(--color-border);border-radius:var(--radius-control);background:var(--color-surface-subtle);color:var(--color-muted);gap:5px;margin-top:10px;padding:9px 10px;font-size:12px;display:grid}.project-agent-routing-decision .project-agent-section-heading[data-v-394b82e3]{align-items:baseline;gap:8px}.project-agent-routing-decision .project-agent-section-heading strong[data-v-394b82e3]{color:var(--color-ink);font-size:12px}.project-agent-routing-decision small[data-v-394b82e3]{color:var(--color-muted);line-height:1.45}.project-agent-blocked[data-v-394b82e3]{color:var(--color-danger)!important}.project-agent-task-card[data-v-394b82e3]{scroll-margin:16px}.project-agent-task-card.is-linked[data-v-394b82e3]{box-shadow:inset 0 0 0 2px var(--color-accent)}.project-agent-task-card header[data-v-394b82e3]{align-items:flex-start}.project-agent-task-card header small[data-v-394b82e3]{margin-top:3px}.project-agent-task-card header .ui-badge[data-v-394b82e3]{color:var(--color-muted);font-style:normal}.project-agent-task-card header .ui-badge.is-completed[data-v-394b82e3]{color:var(--color-ink)}.project-agent-task-card header .ui-badge.is-failed[data-v-394b82e3]{background:var(--color-danger-soft);color:var(--color-danger)}.project-agent-task-card header .ui-badge.is-cancelled[data-v-394b82e3]{color:var(--color-muted)}.project-agent-heatmap-viewport[data-v-394b82e3]{contain:layout inline-size paint;min-width:0;max-width:100%;overflow-x:clip}.project-agent-heatmap[data-v-394b82e3]{grid-template-rows:repeat(7,minmax(10px,1fr));grid-auto-columns:minmax(10px,1fr);grid-auto-flow:column;gap:3px;width:100%;max-width:100%;margin-top:9px;padding:0;display:grid;overflow-x:auto}.project-agent-heat-cell[data-v-394b82e3]{appearance:none;box-sizing:border-box;aspect-ratio:1;border:1px solid var(--color-border);background:var(--color-surface-subtle);border-radius:3px;min-width:9px;margin:0;padding:0}.project-agent-heat-cell.intensity-1[data-v-394b82e3]{background:var(--color-surface-subtle)}.project-agent-heat-cell.intensity-2[data-v-394b82e3],.project-agent-heat-cell.intensity-3[data-v-394b82e3],.project-agent-heat-cell.intensity-4[data-v-394b82e3]{background:var(--color-muted)}.project-agent-heat-cell[data-v-394b82e3]:focus-visible,.project-agent-heat-cell.selected[data-v-394b82e3]{border:2px solid var(--color-accent);box-shadow:none;outline:none}.project-agent-day-detail[data-v-394b82e3]{border-radius:var(--radius-control);background:var(--color-surface-subtle);margin-top:10px;padding:10px}.project-agent-day-detail ul[data-v-394b82e3]{margin:8px 0 0;padding-left:17px}.project-agent-day-detail li[data-v-394b82e3]{margin-top:6px}.project-agent-day-detail li strong[data-v-394b82e3],.project-agent-day-detail li span[data-v-394b82e3],.project-agent-day-detail li small[data-v-394b82e3]{display:block}.project-agent-day-detail li span[data-v-394b82e3],.project-agent-day-detail li small[data-v-394b82e3]{color:var(--color-muted);font-size:12px}.project-agent-client-list[data-v-394b82e3],.project-agent-rule-list[data-v-394b82e3]{gap:5px;margin-top:9px;display:grid}.project-agent-client-row[data-v-394b82e3],.project-agent-rule-row[data-v-394b82e3]{border-radius:var(--radius-control);background:var(--color-surface);color:var(--color-muted);grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:7px;padding:8px 10px;font-size:12px;display:grid}.project-agent-client-row strong[data-v-394b82e3],.project-agent-rule-row strong[data-v-394b82e3]{color:var(--color-ink);font-size:12px}.project-agent-client-row small[data-v-394b82e3]{color:var(--color-muted);grid-column:1/-1}.project-agent-executor-list[data-v-394b82e3]{gap:5px;margin-top:9px;display:grid}.project-agent-executor-row[data-v-394b82e3]{border-radius:var(--radius-control);background:var(--color-surface);color:var(--color-muted);grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:7px;padding:8px 10px;font-size:12px;display:grid}.project-agent-executor-row strong[data-v-394b82e3]{color:var(--color-ink);font-size:12px}.project-agent-executor-row small[data-v-394b82e3]{color:var(--color-muted);grid-column:1/-1}.project-agent-learning-card header .ui-badge[data-v-394b82e3]{color:var(--color-muted);font-style:normal}.project-agent-evidence-list[data-v-394b82e3]{margin:8px 0 0;padding-left:17px}.project-agent-evidence-list li[data-v-394b82e3]{color:var(--color-muted);font-size:12px}.project-agent-learning-actions[data-v-394b82e3]{gap:6px;margin-top:8px;display:flex}.project-agent-note[data-v-394b82e3]{color:var(--color-muted);margin-top:9px;font-size:12px;line-height:1.5;display:block}.project-agent-detail .ui-badge[data-v-394b82e3]{font-style:normal}.sr-only[data-v-394b82e3]{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (width<=1180px){.project-agents-toolbar[data-v-394b82e3]{grid-template-columns:minmax(220px,280px) 1fr}.project-agents-status-filter[data-v-394b82e3]{grid-column:1/-1;justify-self:start}.project-agents-directory[data-v-394b82e3]{grid-template-columns:minmax(320px,.9fr) minmax(330px,1fr)}.project-agent-detail-meta[data-v-394b82e3],.project-agent-compact-meta[data-v-394b82e3]{grid-template-columns:repeat(2,minmax(0,1fr))}}@container (width<=420px){.project-agent-detail>header[data-v-394b82e3]{grid-template-columns:minmax(0,1fr)}.project-agent-detail-actions[data-v-394b82e3]{justify-content:start}}@media (width<=760px){.project-agents-view[data-v-394b82e3]{padding:14px 16px 18px;overflow:auto}.project-agents-header[data-v-394b82e3],.project-agents-summary[data-v-394b82e3],.project-agent-section-heading[data-v-394b82e3],.project-agent-assignment-card header[data-v-394b82e3]{flex-wrap:wrap;align-items:flex-start}.project-agents-toolbar[data-v-394b82e3]{grid-template-columns:minmax(0,1fr)}.project-agents-project-filter[data-v-394b82e3],.project-agents-search[data-v-394b82e3],.project-agents-status-filter[data-v-394b82e3]{grid-column:1}.project-agents-status-filter[data-v-394b82e3]{flex-wrap:wrap;justify-self:stretch;width:100%}.project-agents-directory[data-v-394b82e3]{flex:none;grid-template-columns:minmax(0,1fr);overflow:visible}.project-agent-list[data-v-394b82e3]{border-right:0;border-bottom:1px solid var(--color-border);max-height:340px}.project-agent-detail[data-v-394b82e3]{min-height:520px;padding:16px}.project-agent-client-row[data-v-394b82e3],.project-agent-rule-row[data-v-394b82e3],.project-agent-executor-row[data-v-394b82e3]{grid-template-columns:minmax(0,1fr);align-items:start}.project-agent-client-row small[data-v-394b82e3],.project-agent-executor-row small[data-v-394b82e3]{grid-column:1}.project-agent-execution-summary-meta[data-v-394b82e3]{grid-template-columns:minmax(0,1fr)}.project-agent-worker-event-row header[data-v-394b82e3]{gap:8px}}.project-agent-disclosure[data-v-394b82e3]{margin-top:16px}.project-agent-disclosure .project-agent-detail-section[data-v-394b82e3]:first-child{margin-top:0}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import{B as e,C as t,F as n,M as r,O as i,P as a,R as o,S as s,V as c,X as l,_ as u,a as d,b as f,c as p,d as m,g as h,it as g,j as _,k as v,m as y,n as b,nt as x,tt as S,u as C,v as w,w as T,y as E}from"./i18n-
|
|
1
|
+
import{B as e,C as t,F as n,M as r,O as i,P as a,R as o,S as s,V as c,X as l,_ as u,a as d,b as f,c as p,d as m,g as h,it as g,j as _,k as v,m as y,n as b,nt as x,tt as S,u as C,v as w,w as T,y as E}from"./i18n-b14l2pQA.js";import{t as D}from"./console-CqzwSo7a.js";import{a as O,i as k,n as A,o as j,r as M,t as N}from"./client-DLS5FZBI.js";import{t as P}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{n as F,t as ee}from"./UiDialog-Q7fsJUoO.js";import{m as I}from"./useApi-CROJJdhE-CEQAEuug.js";import{t as L}from"./vue-router-B6ZjK-Br.js";import{t as R}from"./UiSelect-DcGpPQQo.js";import{t as z}from"./AgentHand-DkyF4vgk.js";import{t as te}from"./AgentConversations-CGznTWuV.js";import{C as B,E as ne,S as V,T as H,_ as U,b as W,d as G,f as re,g as ie,h as ae,m as oe,p as K,r as se,t as ce,u as le,v as ue,w as q,x as de,y as fe}from"./agent-work-summary-LeW-Al_S.js";import{a as pe,i as me,s as he}from"./catalog-UDv854JN.js";import{t as ge}from"./ProjectAgentFirstTask-CaHvOjkp.js";import{t as _e}from"./ProjectScopePicker-zAgiaZKL.js";import{t as ve}from"./EmployeeRecruitDialog-D9QfGipd.js";function ye(){let e=new Date,t=new Date(e);return t.setUTCFullYear(t.getUTCFullYear()-1),{fromDate:be(t),toDate:be(e)}}function be(e){return e.toISOString().slice(0,10)}function xe(e,t){let n=q(e),r=G(n.days);if(!r.length&&!(`days`in n))return null;let i=r.map(e=>{let t=q(e);return{date:B(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:G(t.tasks).map(J).filter(e=>!!e)}}).filter(({date:e})=>e),a=B(n,`fromDate`,`from_date`),o=B(n,`toDate`,`to_date`),s=i.some(({total:e,tasks:t})=>e>0||!!t?.length),c=a??(i.length?i.map(({date:e})=>e).sort()[0]:void 0),l=o??(i.length?i.map(({date:e})=>e).sort().at(-1):void 0),u=s&&c&&l?Se(i,c,l):[];return{agentId:B(n,`agentId`,`agent_id`)??t.agentId,personalSpaceId:B(n,`personalSpaceId`,`personal_space_id`)??t.personalSpaceId,fromDate:c,toDate:l,days:u}}function Se(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=be(e);o.push(r.get(t)??{date:t,completed:0,failed:0,cancelled:0,total:0,tasks:[]})}return o.reverse()}function J(e){let t=q(e),n=B(t,`taskId`,`task_id`);if(!n)return null;let r=K(H(t,`actualExecution`,`actual_execution`))??K({executor:B(t,`actualExecutor`,`actual_executor`),provider:B(t,`actualModelProvider`,`actual_model_provider`),model:B(t,`actualModel`,`actual_model`),client:B(t,`sourceApplication`,`source_application`)});return{taskId:n,title:B(t,`title`,`title`)??n,status:B(t,`status`,`status`),summary:B(t,`summary`,`summary`)??``,occurredAt:B(t,`occurredAt`,`occurred_at`)??``,personalProjectId:B(t,`personalProjectId`,`personal_project_id`),assignmentId:B(t,`assignmentId`,`assignment_id`),collaborators:G(t.collaborators).map(ae),sourceApplication:B(t,`sourceApplication`,`source_application`),sourceSessionId:B(t,`sourceSessionId`,`source_session_id`),sourceSessionUrl:B(t,`sourceSessionUrl`,`source_session_url`),workerRuntime:W(H(t,`workerRuntime`,`worker_runtime`)),toolsUsed:V(t,`toolsUsed`,`tools_used`),tokenUsage:fe(H(t,`tokenUsage`,`token_usage`)),actualExecution:r,actualModelProvider:B(t,`actualModelProvider`,`actual_model_provider`),actualModel:B(t,`actualModel`,`actual_model`)}}var Ce={class:`project-agent-assignment-fields`},we={key:1,class:`ui-field`},Te=[`value`],Ee={key:3,class:`ui-field project-agent-assignment-wide`},De=[`disabled`],Oe={key:4,class:`ui-field`},Y=[`disabled`],ke={key:5,class:`ui-field`},Ae=[`disabled`,`placeholder`],je={class:`ui-field project-agent-assignment-wide`},Me=[`disabled`,`placeholder`],Ne=P(T({__name:`AgentAssignmentDialog`,props:{open:{type:Boolean},agent:{},assignment:{default:null},action:{default:`assign`},projects:{},availableAgents:{default:()=>[]},defaultProjectId:{default:null}},emits:[`close`,`saved`,`changed`],setup(n,{emit:i}){let a=n,p=i,m=l(``),_=l(``),v=l(``),y=l(``),b=l(``),x=l(``),T=l(!1),D=l(``),O=h(()=>a.action!==`assign`),A=h(()=>a.projects.map(e=>({value:e.project_id,label:e.profile.name,meta:e.project_id}))),j=h(()=>a.availableAgents.filter(e=>e.agentId!==a.agent?.agentId&&e.profile.status===`active`).map(e=>({value:e.agentId,label:e.profile.displayName||e.profile.name,meta:e.profile.name})));o(()=>[a.open,a.agent,a.assignment,a.action,a.defaultProjectId],()=>{a.open&&(m.value=a.assignment?.personalProjectId??a.defaultProjectId??a.projects[0]?.project_id??``,_.value=``,v.value=a.assignment?.responsibility??a.agent?.profile.responsibility??``,y.value=a.assignment?.scope??``,b.value=a.assignment?.workKinds?.join(`
|
|
2
2
|
`)??``,x.value=``,D.value=``)},{immediate:!0});async function M(){if(!a.agent)return;D.value=``;let e=x.value.trim(),t=v.value.trim();if(!e||a.action===`assign`&&!t){D.value=d(`projectAgents.assignmentDialog.required`);return}if(a.action===`replace`&&!_.value){D.value=d(`projectAgents.assignmentDialog.replacementRequired`);return}T.value=!0;try{if(a.action===`assign`){let n=await k(`/api/project-agent-assignments`,{personalSpaceId:a.agent.personalSpaceId,personalProjectId:m.value,agentId:a.agent.agentId,idempotencyKey:P(),responsibility:t,workKinds:N(b.value),capabilities:[],reason:e});p(`saved`,n)}else{if(!a.assignment)return;await k(`/api/project-agent-assignments/${encodeURIComponent(a.assignment.assignmentId)}/${a.action}`,a.action===`replace`?{personalSpaceId:a.agent.personalSpaceId,personalProjectId:a.assignment.personalProjectId,assignmentId:a.assignment.assignmentId,expectedRevision:a.assignment.revision??0,replacementAgentId:_.value,idempotencyKey:P(),responsibility:t||a.assignment.responsibility,workKinds:N(b.value),capabilities:a.assignment.capabilities??[],reason:e}:{personalSpaceId:a.agent.personalSpaceId,personalProjectId:a.assignment.personalProjectId,assignmentId:a.assignment.assignmentId,expectedRevision:a.assignment.revision??0,reason:e}),p(`changed`)}p(`close`)}catch(e){D.value=e instanceof Error?e.message:d(`projectAgents.assignmentDialog.saveFailed`)}finally{T.value=!1}}function N(e){return[...new Set(e.split(`
|
|
3
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(i,o)=>(r(),w(ee,{open:n.open,class:`project-agent-assignment-dialog`,form:``,busy:T.value,error:D.value,title:S(d)(`projectAgents.assignmentDialog.${O.value?n.action:`assign`}Title`),onClose:o[7]||=e=>p(`close`),onSubmit:M},{footer:e(()=>[t(F,{variant:`ghost`,disabled:T.value,onClick:o[6]||=e=>p(`close`)},{default:e(()=>[s(g(S(d)(`common.actions.cancel`)),1)]),_:1},8,[`disabled`]),t(F,{variant:`primary`,type:`submit`,busy:T.value,"busy-label":S(d)(`projectAgents.assignmentDialog.saving`)},{default:e(()=>[s(g(S(d)(`projectAgents.assignmentDialog.${O.value?`saveChange`:`saveAssign`}`)),1)]),_:1},8,[`busy`,`busy-label`])]),default:e(()=>[u(`div`,Ce,[O.value?(r(),f(`label`,we,[s(g(S(d)(`projectAgents.fields.project`))+` `,1),u(`input`,{value:a.assignment?a.assignment.personalProjectId:``,disabled:``},null,8,Te)])):(r(),w(R,{key:0,modelValue:m.value,"onUpdate:modelValue":o[0]||=e=>m.value=e,field:``,"control-id":`project-agent-assignment-project`,options:A.value,label:S(d)(`projectAgents.fields.project`),placeholder:S(d)(`projectAgents.dialog.projectPlaceholder`),disabled:T.value,required:``},null,8,[`modelValue`,`options`,`label`,`placeholder`,`disabled`])),O.value&&n.action===`replace`?(r(),w(R,{key:2,modelValue:_.value,"onUpdate:modelValue":o[1]||=e=>_.value=e,field:``,"control-id":`project-agent-assignment-replacement`,options:j.value,label:S(d)(`projectAgents.assignmentDialog.replacement`),placeholder:S(d)(`projectAgents.assignmentDialog.replacementPlaceholder`),disabled:T.value,required:``},null,8,[`modelValue`,`options`,`label`,`placeholder`,`disabled`])):E(``,!0),O.value?E(``,!0):(r(),f(`label`,Ee,[s(g(S(d)(`projectAgents.fields.responsibility`))+` `,1),c(u(`textarea`,{"onUpdate:modelValue":o[2]||=e=>v.value=e,rows:`3`,maxlength:`4096`,disabled:T.value,required:``},null,8,De),[[C,v.value]])])),O.value?E(``,!0):(r(),f(`label`,Oe,[s(g(S(d)(`projectAgents.fields.scope`))+` `,1),c(u(`input`,{"onUpdate:modelValue":o[3]||=e=>y.value=e,maxlength:`4096`,disabled:T.value},null,8,Y),[[C,y.value]])])),O.value?E(``,!0):(r(),f(`label`,ke,[s(g(S(d)(`projectAgents.assignmentDialog.workKinds`))+` `,1),c(u(`textarea`,{"onUpdate:modelValue":o[4]||=e=>b.value=e,rows:`3`,disabled:T.value,placeholder:S(d)(`projectAgents.assignmentDialog.workKindsPlaceholder`)},null,8,Ae),[[C,b.value]])])),u(`label`,je,[s(g(S(d)(`projectAgents.fields.reason`))+` `,1),c(u(`textarea`,{"onUpdate:modelValue":o[5]||=e=>x.value=e,rows:`3`,maxlength:`2048`,disabled:T.value,placeholder:S(d)(`projectAgents.assignmentDialog.reasonPlaceholder`),required:``},null,8,Me),[[C,x.value]])])])]),_:1},8,[`open`,`busy`,`error`,`title`]))}}),[[`__scopeId`,`data-v-0c51a000`]]),X={class:`executor-routing-fields`},Pe={class:`ui-field`},Fe=[`disabled`],Ie={class:`ui-field`},Le=[`disabled`],Re={class:`ui-field`},ze=[`disabled`],Be={class:`ui-field`},Ve=[`disabled`],He={class:`ui-field executor-routing-wide`},Ue=[`disabled`],We={class:`ui-check executor-routing-wide`},Ge=[`disabled`],Ke={class:`ui-meta executor-routing-wide`},Z={class:`ui-field`},qe=[`disabled`],Je={key:1,class:`ui-field`},Ye=[`disabled`],Xe={class:`ui-field`},Ze=[`disabled`],Qe={class:`ui-field executor-routing-wide`},$e=[`placeholder`,`disabled`],et={class:`ui-field executor-routing-wide`},tt=[`disabled`],nt={class:`ui-field executor-routing-wide`},rt=[`disabled`],Q={class:`ui-meta executor-routing-wide`},it=P(T({__name:`ExecutorRoutingDialog`,props:{open:{type:Boolean},mode:{},personalSpaceId:{},executor:{default:null},rule:{default:null},projects:{default:()=>[]},availableExecutors:{default:()=>[]}},emits:[`close`,`saved`],setup(n,{emit:i}){let a=n,m=i,_=l(``),v=l(``),b=l(`external`),x=l(``),T=l(100),D=l(!1),k=l(`space`),A=l(``),j=l(``),M=l(``),N=l(``),P=l(``),I=l(``),L=l(!1),z=l(``),te=h(()=>!!a.executor),B=h(()=>a.mode===`executor`?te.value?`executorEditTitle`:`executorCreateTitle`:`ruleCreateTitle`),ne=h(()=>a.mode===`executor`?d(`projectAgents.routing.editor.savingExecutor`):d(`projectAgents.routing.editor.savingRule`)),V=[`space`,`project`,`task`].map(e=>({value:e,label:e})),H=h(()=>a.projects.map(e=>({value:e.project_id,label:e.profile.name,meta:e.project_id})));o(()=>[a.open,a.mode,a.executor,a.rule],([e])=>{if(!e)return;let t=a.executor,n=a.rule;_.value=t?.executorId??``,v.value=t?.displayName??t?.label??``,b.value=t?.executorKind??`external`,x.value=t?.capabilities?.join(`
|
|
4
4
|
`)??``,T.value=t?.globalPriority??n?.priority??100,D.value=t?.healthRequired===!0,k.value=n?.scope??`space`,A.value=n?.personalProjectId??``,j.value=n?.taskId??``,M.value=n?.workKind??``,N.value=n?.requiredCapabilities?.join(`
|
|
5
5
|
`)??``,P.value=n?.executorIds?.join(`
|
|
6
6
|
`)??``,I.value=``,z.value=``},{immediate:!0});function U(e){return[...new Set(e.split(`
|
|
7
|
-
`).map(e=>e.trim()).filter(Boolean))]}function W(e){return`${e}-${typeof crypto<`u`&&`randomUUID`in crypto?crypto.randomUUID():`${Date.now()}-${Math.random().toString(16).slice(2)}`}`}async function G(){if(L.value)return;let e=U(x.value),t=I.value.trim();if(a.mode===`executor`){if(!_.value.trim()||!v.value.trim()||T.value<1){z.value=d(`projectAgents.routing.editor.executorRequired`);return}}else if(!M.value.trim()||!U(P.value).length||!t){z.value=d(`projectAgents.routing.editor.ruleRequired`);return}L.value=!0,z.value=``;try{if(a.mode===`executor`){let t=await O(`/api/executors`,{personalSpaceId:a.personalSpaceId,executorId:_.value.trim(),displayName:v.value.trim(),executorKind:b.value.trim()||`external`,capabilities:e,advertisedModels:a.executor?.advertisedModels??a.executor?.availableModels??[],globalPriority:T.value,healthRequired:D.value,expectedRevision:a.executor?.revision,idempotencyKey:W(`executor-directory`)});m(`saved`,t)}else{let e=await O(`/api/executor-routing-rules`,{personalSpaceId:k.value===`global`?void 0:a.personalSpaceId,scope:k.value,personalProjectId:(k.value===`project`||k.value===`task`)&&A.value||void 0,taskId:k.value===`task`&&j.value||void 0,workKind:M.value.trim(),requiredCapabilities:U(N.value),executorIds:U(P.value),priority:T.value,reason:t,idempotencyKey:W(`executor-rule`)});m(`saved`,e)}m(`close`)}catch(e){z.value=e instanceof Error?e.message:d(`projectAgents.routing.editor.saveFailed`)}finally{L.value=!1}}return(i,a)=>(r(),w(ee,{open:n.open,class:`executor-routing-dialog`,size:`lg`,form:``,busy:L.value,error:z.value,title:S(d)(`projectAgents.routing.editor.${B.value}`),onClose:a[15]||=e=>m(`close`),onSubmit:G},{footer:e(()=>[t(F,{variant:`ghost`,disabled:L.value,onClick:a[14]||=e=>m(`close`)},{default:e(()=>[s(g(S(d)(`common.actions.cancel`)),1)]),_:1},8,[`disabled`]),t(F,{variant:`primary`,type:`submit`,busy:L.value,"busy-label":ne.value},{default:e(()=>[s(g(S(d)(`projectAgents.routing.editor.save`)),1)]),_:1},8,[`busy`,`busy-label`])]),default:e(()=>[u(`div`,X,[n.mode===`executor`?(r(),f(y,{key:0},[u(`label`,Pe,[s(g(S(d)(`projectAgents.routing.editor.executorId`)),1),c(u(`input`,{"onUpdate:modelValue":a[0]||=e=>_.value=e,maxlength:`128`,disabled:te.value||L.value,required:``},null,8,Fe),[[C,_.value]])]),u(`label`,Ie,[s(g(S(d)(`projectAgents.routing.editor.displayName`)),1),c(u(`input`,{"onUpdate:modelValue":a[1]||=e=>v.value=e,maxlength:`160`,disabled:L.value,required:``},null,8,Le),[[C,v.value]])]),u(`label`,Re,[s(g(S(d)(`projectAgents.routing.editor.executorKind`)),1),c(u(`input`,{"onUpdate:modelValue":a[2]||=e=>b.value=e,maxlength:`128`,disabled:L.value},null,8,ze),[[C,b.value]])]),u(`label`,Be,[s(g(S(d)(`projectAgents.routing.editor.priority`)),1),c(u(`input`,{"onUpdate:modelValue":a[3]||=e=>T.value=e,type:`number`,min:`1`,max:`1000000`,disabled:L.value,required:``},null,8,Ve),[[C,T.value,void 0,{number:!0}]])]),u(`label`,He,[s(g(S(d)(`projectAgents.routing.editor.capabilities`)),1),c(u(`textarea`,{"onUpdate:modelValue":a[4]||=e=>x.value=e,rows:`3`,disabled:L.value},null,8,Ue),[[C,x.value]])]),u(`label`,We,[c(u(`input`,{"onUpdate:modelValue":a[5]||=e=>D.value=e,type:`checkbox`,disabled:L.value},null,8,Ge),[[p,D.value]]),u(`span`,null,g(S(d)(`projectAgents.routing.editor.healthRequired`)),1)]),u(`p`,Ke,g(S(d)(`projectAgents.routing.editor.evidenceNote`)),1)],64)):(r(),f(y,{key:1},[t(R,{modelValue:k.value,"onUpdate:modelValue":a[6]||=e=>k.value=e,field:``,label:S(d)(`projectAgents.routing.editor.scope`),options:S(V),disabled:L.value},null,8,[`modelValue`,`label`,`options`,`disabled`]),u(`label`,Z,[s(g(S(d)(`projectAgents.routing.editor.priority`)),1),c(u(`input`,{"onUpdate:modelValue":a[7]||=e=>T.value=e,type:`number`,min:`1`,max:`1000000`,disabled:L.value,required:``},null,8,qe),[[C,T.value,void 0,{number:!0}]])]),k.value===`project`||k.value===`task`?(r(),w(R,{key:0,modelValue:A.value,"onUpdate:modelValue":a[8]||=e=>A.value=e,field:``,"control-id":`executor-rule-project`,options:H.value,label:S(d)(`projectAgents.fields.project`),disabled:L.value},null,8,[`modelValue`,`options`,`label`,`disabled`])):E(``,!0),k.value===`task`?(r(),f(`label`,Je,[s(g(S(d)(`projectAgents.routing.editor.taskId`)),1),c(u(`input`,{"onUpdate:modelValue":a[9]||=e=>j.value=e,maxlength:`128`,disabled:L.value},null,8,Ye),[[C,j.value]])])):E(``,!0),u(`label`,Xe,[s(g(S(d)(`projectAgents.routing.editor.workKind`)),1),c(u(`input`,{"onUpdate:modelValue":a[10]||=e=>M.value=e,maxlength:`128`,disabled:L.value,required:``},null,8,Ze),[[C,M.value]])]),u(`label`,Qe,[s(g(S(d)(`projectAgents.routing.editor.executorIds`)),1),c(u(`textarea`,{"onUpdate:modelValue":a[11]||=e=>P.value=e,rows:`3`,placeholder:S(d)(`projectAgents.routing.editor.executorIdsPlaceholder`),disabled:L.value,required:``},null,8,$e),[[C,P.value]])]),u(`label`,et,[s(g(S(d)(`projectAgents.routing.editor.requiredCapabilities`)),1),c(u(`textarea`,{"onUpdate:modelValue":a[12]||=e=>N.value=e,rows:`3`,disabled:L.value},null,8,tt),[[C,N.value]])]),u(`label`,nt,[s(g(S(d)(`projectAgents.fields.reason`)),1),c(u(`textarea`,{"onUpdate:modelValue":a[13]||=e=>I.value=e,rows:`3`,disabled:L.value,required:``},null,8,rt),[[C,I.value]])]),u(`p`,Q,g(S(d)(`projectAgents.routing.editor.ruleNote`)),1)],64))])]),_:1},8,[`open`,`busy`,`error`,`title`]))}}),[[`__scopeId`,`data-v-7120b758`]]),at=[`aria-label`,`aria-busy`],ot={key:1,class:`project-agent-policy-options`},st=[`checked`,`disabled`],ct=[`checked`,`disabled`],lt=[`checked`,`disabled`],ut={key:2,class:`project-team`},dt={class:`project-team-peers`},ft={key:1},pt={key:2},mt={class:`project-team-summary`},ht={key:0,class:`project-team-members`},gt=[`onClick`],$=[`disabled`],_t=[`onChange`],vt=[`value`],yt=[`disabled`],bt={class:`project-agent-policy-feedback`,"aria-live":`polite`},xt={key:0,role:`alert`},St=[`disabled`],Ct={key:2,role:`status`},wt=P(T({__name:`ProjectAgentAutomationPolicyPanel`,props:{personalSpaceId:{},personalProjectId:{},projectName:{},agents:{}},emits:[`select`],setup(e,{emit:n}){let i=e,m=n,_=l(re()),v=l(!1),b=l(!1),x=l(``),C=l(``),T=l(!1),D=l(``),O=l([]),k=0,N=h(()=>v.value||b.value),P=h(()=>(i.agents??[]).filter(e=>e.profile.status===`active`&&(e.profile.agentType??`durable`)===`durable`&&!e.agentId.startsWith(`employee.`)&&!e.profile.capabilities.some(e=>e.startsWith(`fuli.employee:`))&&e.assignments?.some(e=>e.status===`active`&&e.personalProjectId===i.personalProjectId))),F=P,ee=h(()=>[{value:``,label:d(`projectAgents.team.noLead`)},...F.value.map(e=>({value:e.agentId,label:ne(e)}))]),I=h(()=>P.value.filter(e=>e.agentId!==D.value)),L=h(()=>O.value.filter(e=>!I.value.some(t=>t.agentId===e)).map(e=>({id:e,name:(i.agents??[]).find(t=>t.agentId===e)?.profile.displayName||(i.agents??[]).find(t=>t.agentId===e)?.profile.name||d(`projectAgents.team.unavailableMember`)}))),z=h(()=>P.value.find(e=>e.agentId===_.value.teamLeadAgentId)),te=h(()=>P.value.filter(e=>_.value.teamMemberAgentIds?.includes(e.agentId))),B=h(()=>D.value!==(_.value.teamLeadAgentId??``)||JSON.stringify([...O.value].sort())!==JSON.stringify([..._.value.teamMemberAgentIds??[]].sort()));o(D,e=>{O.value=e?O.value.filter(t=>t!==e):[]});function ne(e){return e.profile.displayName||e.profile.name}function V(){D.value=_.value.teamLeadAgentId??``,O.value=[..._.value.teamMemberAgentIds??[]]}o(()=>[i.personalSpaceId,i.personalProjectId],()=>void H(),{immediate:!0});async function H(){let e=++k;if(_.value=re(),V(),b.value=!1,v.value=!1,T.value=!1,C.value=``,!(!i.personalSpaceId||!i.personalProjectId)){v.value=!0,x.value=``;try{let t=await A(`/api/project-agent-coordination-policy?${new URLSearchParams({personalSpaceId:i.personalSpaceId,personalProjectId:i.personalProjectId})}`);e===k&&(_.value=ie(t),V())}catch(t){e===k&&(x.value=t instanceof Error?t.message:d(`projectAgents.coordination.loadFailed`))}finally{e===k&&(v.value=!1)}}}async function U(e,t){if(N.value||x.value)return;let n={..._.value},r=t.currentTarget.checked;_.value={..._.value,[e]:r},await G(n)}async function W(){N.value||x.value||!B.value||await G({..._.value},{teamLeadAgentId:D.value||null,teamMemberAgentIds:[...O.value]})}async function G(e,t){let n=k;b.value=!0,T.value=!1,C.value=``;try{let r=await M(`/api/project-agent-coordination-policy`,{personalSpaceId:i.personalSpaceId,personalProjectId:i.personalProjectId,askBeforeRecruitment:_.value.askBeforeRecruitment,autoReusePreviousAgent:_.value.autoReusePreviousAgent,autoGrowTeam:_.value.autoGrowTeam??!0,expectedUpdatedAt:e.updatedAt,...t});if(n!==k)return;_.value=ie(r),t&&V(),T.value=!0}catch(t){if(n!==k)return;_.value=e,C.value=t instanceof Error?t.message:d(`projectAgents.coordination.saveFailed`)}finally{n===k&&(b.value=!1)}}function re(){return{personalSpaceId:i.personalSpaceId,personalProjectId:i.personalProjectId,askBeforeRecruitment:!0,autoReusePreviousAgent:!0,autoGrowTeam:!0,updatedAt:null,teamLeadAgentId:null,teamMemberAgentIds:[]}}function ie(e){let t=e&&typeof e==`object`?e:{};return{personalSpaceId:oe(t.personalSpaceId??t.personal_space_id)||i.personalSpaceId,personalProjectId:oe(t.personalProjectId??t.personal_project_id)||i.personalProjectId,askBeforeRecruitment:ae(t.askBeforeRecruitment??t.ask_before_recruitment,!0),autoReusePreviousAgent:ae(t.autoReusePreviousAgent??t.auto_reuse_previous_agent,!0),updatedAt:oe(t.updatedAt??t.updated_at),autoGrowTeam:ae(t.autoGrowTeam??t.auto_grow_team,!0),teamLeadAgentId:oe(t.teamLeadAgentId??t.team_lead_agent_id),teamMemberAgentIds:Array.isArray(t.teamMemberAgentIds??t.team_member_agent_ids)?t.teamMemberAgentIds??t.team_member_agent_ids:[]}}function ae(e,t){return typeof e==`boolean`?e:t}function oe(e){return typeof e==`string`&&e?e:null}return(n,i)=>(r(),f(`section`,{class:`project-agent-automation-policy`,"aria-label":S(d)(`projectAgents.coordination.aria`,{project:e.projectName}),"aria-busy":N.value},[u(`header`,null,[u(`h3`,null,g(S(d)(`projectAgents.coordination.title`)),1),u(`span`,null,g(e.projectName),1)]),v.value?(r(),w(j,{key:0,variant:`compact`,label:S(d)(`projectAgents.coordination.loading`)},null,8,[`label`])):(r(),f(`div`,ot,[u(`label`,null,[u(`span`,null,[u(`strong`,null,g(S(d)(`projectAgents.coordination.autoReuse`)),1),u(`small`,null,g(S(d)(`projectAgents.coordination.autoReuseMeta`)),1)]),u(`input`,{checked:_.value.autoReusePreviousAgent,disabled:N.value||!!x.value,type:`checkbox`,role:`switch`,onChange:i[0]||=e=>U(`autoReusePreviousAgent`,e)},null,40,st)]),u(`label`,null,[u(`span`,null,[u(`strong`,null,g(S(d)(`projectAgents.coordination.askBeforeRecruitment`)),1),u(`small`,null,g(S(d)(`projectAgents.coordination.askBeforeRecruitmentMeta`)),1)]),u(`input`,{checked:_.value.askBeforeRecruitment,disabled:N.value||!!x.value,type:`checkbox`,role:`switch`,onChange:i[1]||=e=>U(`askBeforeRecruitment`,e)},null,40,ct)]),u(`label`,null,[u(`span`,null,[u(`strong`,null,g(S(d)(`projectAgents.team.autoGrow`)),1),u(`small`,null,g(S(d)(`projectAgents.team.autoGrowMeta`)),1)]),u(`input`,{checked:_.value.autoGrowTeam,disabled:N.value||!!x.value,type:`checkbox`,role:`switch`,onChange:i[2]||=e=>U(`autoGrowTeam`,e)},null,40,lt)])])),e.agents&&!v.value&&!x.value?(r(),f(`div`,ut,[u(`div`,dt,[u(`span`,null,g(S(d)(`projectAgents.team.hr`)),1),u(`span`,null,g(S(d)(`projectAgents.team.manager`)),1),z.value?(r(),f(`button`,{key:0,type:`button`,onClick:i[3]||=e=>m(`select`,z.value.agentId)},g(S(d)(`projectAgents.team.lead`))+` · `+g(ne(z.value)),1)):_.value.teamLeadAgentId?(r(),f(`span`,ft,g(S(d)(`projectAgents.team.unavailable`)),1)):(r(),f(`span`,pt,g(S(d)(`projectAgents.team.noLead`)),1))]),u(`p`,mt,g(S(d)(`projectAgents.team.summary`)),1),te.value.length?(r(),f(`ul`,ht,[(r(!0),f(y,null,a(te.value,e=>(r(),f(`li`,{key:e.agentId},[u(`button`,{type:`button`,onClick:t=>m(`select`,e.agentId)},[u(`strong`,null,g(ne(e)),1),u(`span`,null,g(e.profile.responsibility),1)],8,gt)]))),128))])):E(``,!0),u(`details`,null,[u(`summary`,null,g(S(d)(`projectAgents.team.edit`)),1),t(R,{modelValue:D.value,"onUpdate:modelValue":i[4]||=e=>D.value=e,class:`team-lead-field`,field:``,label:S(d)(`projectAgents.team.lead`),options:ee.value,disabled:N.value},null,8,[`modelValue`,`label`,`options`,`disabled`]),u(`fieldset`,{disabled:N.value||!D.value},[u(`legend`,null,g(S(d)(`projectAgents.team.members`)),1),(r(!0),f(y,null,a(L.value,e=>(r(),f(`label`,{key:e.id,class:`unavailable-team-member`},[u(`input`,{type:`checkbox`,checked:``,onChange:t=>O.value=O.value.filter(t=>t!==e.id)},null,40,_t),s(` `+g(e.name)+` · `+g(S(d)(`projectAgents.team.removeUnavailable`)),1)]))),128)),(r(!0),f(y,null,a(I.value,e=>(r(),f(`label`,{key:e.agentId},[c(u(`input`,{"onUpdate:modelValue":i[5]||=e=>O.value=e,type:`checkbox`,value:e.agentId},null,8,vt),[[p,O.value]]),s(g(ne(e)),1)]))),128))],8,$),u(`button`,{type:`button`,disabled:N.value||!B.value,onClick:W},g(S(d)(`projectAgents.team.save`)),9,yt)])])):E(``,!0),u(`div`,bt,[x.value||C.value?(r(),f(`p`,xt,[s(g(x.value||C.value)+` `,1),x.value?(r(),f(`button`,{key:0,type:`button`,disabled:N.value,onClick:H},g(S(d)(`projectAgents.retry`)),9,St)):E(``,!0)])):b.value?(r(),w(j,{key:1,variant:`compact`,label:S(d)(`projectAgents.coordination.saving`)},null,8,[`label`])):T.value?(r(),f(`p`,Ct,g(S(d)(`projectAgents.coordination.saved`)),1)):E(``,!0)])],8,at))}}),[[`__scopeId`,`data-v-ade1eb42`]]),Tt={key:0,class:`project-agent-source-state`,role:`status`},Et={key:1,class:`project-agent-source-state`},Dt={key:2,class:`project-agent-source-state is-error`,role:`alert`},Ot=P(T({__name:`ProjectAgentDetailState`,props:{status:{},error:{},label:{}},emits:[`retry`],setup(e){return(i,a)=>e.status===`idle`?(r(),f(`div`,Tt,g(S(d)(`projectAgents.detail.notLoaded`)),1)):e.status===`loading`?(r(),f(`div`,Et,[t(j,{variant:`inline`,label:e.label},null,8,[`label`])])):e.status===`error`?(r(),f(`div`,Dt,[u(`span`,null,g(e.error||S(d)(`projectAgents.detail.sectionUnavailable`)),1),u(`button`,{class:`quiet-button`,type:`button`,onClick:a[0]||=e=>i.$emit(`retry`)},g(S(d)(`projectAgents.retry`)),1)])):n(i.$slots,`default`,{},void 0,!0,3)}}),[[`__scopeId`,`data-v-4f121023`]]),kt=[`aria-label`],At={"data-task-project-state":``},jt={key:0},Mt={"data-task-assignment-state":``},Nt={"data-task-execution-state":``},Pt={key:0,class:`project-agent-task-scope-hint`},Ft={key:1,"data-task-summary-reason":``},It=P(T({__name:`ProjectAgentTaskDiagnostics`,props:{task:{},projectName:{}},setup(e){let t=e,n=h(()=>!!(t.task.ownerAgentId||t.task.leadAgentId||t.task.participants.some(e=>e.agentId))),i=h(()=>t.task.projectScope?.type===`temporary`?`temporary`:t.task.personalProjectId?`identified`:`unresolved`),a=h(()=>{if(t.task.executionSummary!==void 0)return t.task.executionSummary;let e=new Map;for(let n of ne(t.task)){let t=n.workerId||n.agentId||n.workerLabel||n.eventId,r=e.get(t);(!r||n.createdAt>=r.createdAt)&&e.set(t,{status:n.workerStatus,createdAt:n.createdAt})}return[...e.values()]}),o=h(()=>{let e=a.value;return e.length?e.some(e=>e.status===`running`)?`running`:e.every(e=>e.status===`queued`)?`queued`:e.every(e=>[`completed`,`failed`,`cancelled`].includes(e.status??``))?`ended`:`reported`:`unreported`}),s=h(()=>t.task.executionSummary?.length?``:a.value.length?`eventsOnly`:n.value?`assignedOnly`:`unassigned`);return(t,a)=>(r(),f(`section`,{class:`project-agent-task-diagnostics`,"aria-label":S(d)(`projectAgents.diagnostics.title`)},[u(`dl`,null,[u(`div`,At,[u(`dt`,null,g(S(d)(`projectAgents.diagnostics.project`)),1),u(`dd`,null,g(S(d)(`projectAgents.diagnostics.projectState.${i.value}`)),1),e.task.personalProjectId?(r(),f(`small`,jt,g(e.projectName),1)):E(``,!0)]),u(`div`,Mt,[u(`dt`,null,g(S(d)(`projectAgents.diagnostics.assignment`)),1),u(`dd`,null,g(S(d)(`projectAgents.diagnostics.assignmentState.${n.value?`assigned`:`unreported`}`)),1)]),u(`div`,Nt,[u(`dt`,null,g(S(d)(`projectAgents.diagnostics.execution`)),1),u(`dd`,null,g(S(d)(`projectAgents.diagnostics.executionState.${o.value}`)),1)])]),i.value===`temporary`?(r(),f(`p`,Pt,g(S(d)(`projectAgents.diagnostics.temporaryHint`)),1)):E(``,!0),s.value?(r(),f(`p`,Ft,g(S(d)(`projectAgents.diagnostics.summaryReason.${s.value}`)),1)):E(``,!0)],8,kt))}}),[[`__scopeId`,`data-v-f960dcef`]]),Lt={key:2,role:`alert`},Rt={key:3},zt={class:`work-record-meta`},Bt=[`datetime`],Vt={key:4},Ht=P(T({__name:`EmployeeWorkHistory`,props:{personalSpaceId:{},agentId:{},projects:{}},setup(e){let t=e,n=l(``),i=l(!1),s=l(!1),c=l(``),p=l([]),m=0;o(()=>[t.agentId,t.personalSpaceId,t.projects.map(e=>e.id).join(`
|
|
7
|
+
`).map(e=>e.trim()).filter(Boolean))]}function W(e){return`${e}-${typeof crypto<`u`&&`randomUUID`in crypto?crypto.randomUUID():`${Date.now()}-${Math.random().toString(16).slice(2)}`}`}async function G(){if(L.value)return;let e=U(x.value),t=I.value.trim();if(a.mode===`executor`){if(!_.value.trim()||!v.value.trim()||T.value<1){z.value=d(`projectAgents.routing.editor.executorRequired`);return}}else if(!M.value.trim()||!U(P.value).length||!t){z.value=d(`projectAgents.routing.editor.ruleRequired`);return}L.value=!0,z.value=``;try{if(a.mode===`executor`){let t=await O(`/api/executors`,{personalSpaceId:a.personalSpaceId,executorId:_.value.trim(),displayName:v.value.trim(),executorKind:b.value.trim()||`external`,capabilities:e,advertisedModels:a.executor?.advertisedModels??a.executor?.availableModels??[],globalPriority:T.value,healthRequired:D.value,expectedRevision:a.executor?.revision,idempotencyKey:W(`executor-directory`)});m(`saved`,t)}else{let e=await O(`/api/executor-routing-rules`,{personalSpaceId:k.value===`global`?void 0:a.personalSpaceId,scope:k.value,personalProjectId:(k.value===`project`||k.value===`task`)&&A.value||void 0,taskId:k.value===`task`&&j.value||void 0,workKind:M.value.trim(),requiredCapabilities:U(N.value),executorIds:U(P.value),priority:T.value,reason:t,idempotencyKey:W(`executor-rule`)});m(`saved`,e)}m(`close`)}catch(e){z.value=e instanceof Error?e.message:d(`projectAgents.routing.editor.saveFailed`)}finally{L.value=!1}}return(i,a)=>(r(),w(ee,{open:n.open,class:`executor-routing-dialog`,size:`lg`,form:``,busy:L.value,error:z.value,title:S(d)(`projectAgents.routing.editor.${B.value}`),onClose:a[15]||=e=>m(`close`),onSubmit:G},{footer:e(()=>[t(F,{variant:`ghost`,disabled:L.value,onClick:a[14]||=e=>m(`close`)},{default:e(()=>[s(g(S(d)(`common.actions.cancel`)),1)]),_:1},8,[`disabled`]),t(F,{variant:`primary`,type:`submit`,busy:L.value,"busy-label":ne.value},{default:e(()=>[s(g(S(d)(`projectAgents.routing.editor.save`)),1)]),_:1},8,[`busy`,`busy-label`])]),default:e(()=>[u(`div`,X,[n.mode===`executor`?(r(),f(y,{key:0},[u(`label`,Pe,[s(g(S(d)(`projectAgents.routing.editor.executorId`)),1),c(u(`input`,{"onUpdate:modelValue":a[0]||=e=>_.value=e,maxlength:`128`,disabled:te.value||L.value,required:``},null,8,Fe),[[C,_.value]])]),u(`label`,Ie,[s(g(S(d)(`projectAgents.routing.editor.displayName`)),1),c(u(`input`,{"onUpdate:modelValue":a[1]||=e=>v.value=e,maxlength:`160`,disabled:L.value,required:``},null,8,Le),[[C,v.value]])]),u(`label`,Re,[s(g(S(d)(`projectAgents.routing.editor.executorKind`)),1),c(u(`input`,{"onUpdate:modelValue":a[2]||=e=>b.value=e,maxlength:`128`,disabled:L.value},null,8,ze),[[C,b.value]])]),u(`label`,Be,[s(g(S(d)(`projectAgents.routing.editor.priority`)),1),c(u(`input`,{"onUpdate:modelValue":a[3]||=e=>T.value=e,type:`number`,min:`1`,max:`1000000`,disabled:L.value,required:``},null,8,Ve),[[C,T.value,void 0,{number:!0}]])]),u(`label`,He,[s(g(S(d)(`projectAgents.routing.editor.capabilities`)),1),c(u(`textarea`,{"onUpdate:modelValue":a[4]||=e=>x.value=e,rows:`3`,disabled:L.value},null,8,Ue),[[C,x.value]])]),u(`label`,We,[c(u(`input`,{"onUpdate:modelValue":a[5]||=e=>D.value=e,type:`checkbox`,disabled:L.value},null,8,Ge),[[p,D.value]]),u(`span`,null,g(S(d)(`projectAgents.routing.editor.healthRequired`)),1)]),u(`p`,Ke,g(S(d)(`projectAgents.routing.editor.evidenceNote`)),1)],64)):(r(),f(y,{key:1},[t(R,{modelValue:k.value,"onUpdate:modelValue":a[6]||=e=>k.value=e,field:``,label:S(d)(`projectAgents.routing.editor.scope`),options:S(V),disabled:L.value},null,8,[`modelValue`,`label`,`options`,`disabled`]),u(`label`,Z,[s(g(S(d)(`projectAgents.routing.editor.priority`)),1),c(u(`input`,{"onUpdate:modelValue":a[7]||=e=>T.value=e,type:`number`,min:`1`,max:`1000000`,disabled:L.value,required:``},null,8,qe),[[C,T.value,void 0,{number:!0}]])]),k.value===`project`||k.value===`task`?(r(),w(R,{key:0,modelValue:A.value,"onUpdate:modelValue":a[8]||=e=>A.value=e,field:``,"control-id":`executor-rule-project`,options:H.value,label:S(d)(`projectAgents.fields.project`),disabled:L.value},null,8,[`modelValue`,`options`,`label`,`disabled`])):E(``,!0),k.value===`task`?(r(),f(`label`,Je,[s(g(S(d)(`projectAgents.routing.editor.taskId`)),1),c(u(`input`,{"onUpdate:modelValue":a[9]||=e=>j.value=e,maxlength:`128`,disabled:L.value},null,8,Ye),[[C,j.value]])])):E(``,!0),u(`label`,Xe,[s(g(S(d)(`projectAgents.routing.editor.workKind`)),1),c(u(`input`,{"onUpdate:modelValue":a[10]||=e=>M.value=e,maxlength:`128`,disabled:L.value,required:``},null,8,Ze),[[C,M.value]])]),u(`label`,Qe,[s(g(S(d)(`projectAgents.routing.editor.executorIds`)),1),c(u(`textarea`,{"onUpdate:modelValue":a[11]||=e=>P.value=e,rows:`3`,placeholder:S(d)(`projectAgents.routing.editor.executorIdsPlaceholder`),disabled:L.value,required:``},null,8,$e),[[C,P.value]])]),u(`label`,et,[s(g(S(d)(`projectAgents.routing.editor.requiredCapabilities`)),1),c(u(`textarea`,{"onUpdate:modelValue":a[12]||=e=>N.value=e,rows:`3`,disabled:L.value},null,8,tt),[[C,N.value]])]),u(`label`,nt,[s(g(S(d)(`projectAgents.fields.reason`)),1),c(u(`textarea`,{"onUpdate:modelValue":a[13]||=e=>I.value=e,rows:`3`,disabled:L.value,required:``},null,8,rt),[[C,I.value]])]),u(`p`,Q,g(S(d)(`projectAgents.routing.editor.ruleNote`)),1)],64))])]),_:1},8,[`open`,`busy`,`error`,`title`]))}}),[[`__scopeId`,`data-v-7120b758`]]),at=[`aria-label`,`aria-busy`],ot={key:1,class:`project-agent-policy-options`},st=[`checked`,`disabled`],ct=[`checked`,`disabled`],lt=[`checked`,`disabled`],ut={key:2,class:`project-team`},dt={class:`project-team-peers`},ft={key:1},pt={key:2},mt={class:`project-team-summary`},ht={key:0,class:`project-team-members`},gt=[`onClick`],$=[`disabled`],_t=[`onChange`],vt=[`value`],yt=[`disabled`],bt={class:`project-agent-policy-feedback`,"aria-live":`polite`},xt={key:0,role:`alert`},St=[`disabled`],Ct={key:2,role:`status`},wt=P(T({__name:`ProjectAgentAutomationPolicyPanel`,props:{personalSpaceId:{},personalProjectId:{},projectName:{},agents:{}},emits:[`select`],setup(e,{emit:n}){let i=e,m=n,_=l(re()),v=l(!1),b=l(!1),x=l(``),C=l(``),T=l(!1),D=l(``),O=l([]),k=0,N=h(()=>v.value||b.value),P=h(()=>(i.agents??[]).filter(e=>e.profile.status===`active`&&(e.profile.agentType??`durable`)===`durable`&&!e.agentId.startsWith(`employee.`)&&!e.profile.capabilities.some(e=>e.startsWith(`fuli.employee:`))&&e.assignments?.some(e=>e.status===`active`&&e.personalProjectId===i.personalProjectId))),F=P,ee=h(()=>[..._.value.teamLeadAgentId?[]:[{value:``,label:d(`projectAgents.team.noLead`)}],...F.value.map(e=>({value:e.agentId,label:ne(e)}))]),I=h(()=>P.value.filter(e=>e.agentId!==D.value)),L=h(()=>O.value.filter(e=>!I.value.some(t=>t.agentId===e)).map(e=>({id:e,name:(i.agents??[]).find(t=>t.agentId===e)?.profile.displayName||(i.agents??[]).find(t=>t.agentId===e)?.profile.name||d(`projectAgents.team.unavailableMember`)}))),z=h(()=>P.value.find(e=>e.agentId===_.value.teamLeadAgentId)),te=h(()=>P.value.filter(e=>_.value.teamMemberAgentIds?.includes(e.agentId))),B=h(()=>D.value!==(_.value.teamLeadAgentId??``)||JSON.stringify([...O.value].sort())!==JSON.stringify([..._.value.teamMemberAgentIds??[]].sort()));o(D,e=>{O.value=e?O.value.filter(t=>t!==e):[]});function ne(e){return e.profile.displayName||e.profile.name}function V(){D.value=_.value.teamLeadAgentId??``,O.value=[..._.value.teamMemberAgentIds??[]]}o(()=>[i.personalSpaceId,i.personalProjectId],()=>void H(),{immediate:!0});async function H(){let e=++k;if(_.value=re(),V(),b.value=!1,v.value=!1,T.value=!1,C.value=``,!(!i.personalSpaceId||!i.personalProjectId)){v.value=!0,x.value=``;try{let t=await A(`/api/project-agent-coordination-policy?${new URLSearchParams({personalSpaceId:i.personalSpaceId,personalProjectId:i.personalProjectId})}`);e===k&&(_.value=ie(t),V())}catch(t){e===k&&(x.value=t instanceof Error?t.message:d(`projectAgents.coordination.loadFailed`))}finally{e===k&&(v.value=!1)}}}async function U(e,t){if(N.value||x.value)return;let n={..._.value},r=t.currentTarget.checked;_.value={..._.value,[e]:r},await G(n)}async function W(){N.value||x.value||!B.value||!D.value||await G({..._.value},{teamLeadAgentId:D.value||null,teamMemberAgentIds:[...O.value]})}async function G(e,t){let n=k;b.value=!0,T.value=!1,C.value=``;try{let r=await M(`/api/project-agent-coordination-policy`,{personalSpaceId:i.personalSpaceId,personalProjectId:i.personalProjectId,askBeforeRecruitment:_.value.askBeforeRecruitment,autoReusePreviousAgent:_.value.autoReusePreviousAgent,autoGrowTeam:_.value.autoGrowTeam??!0,expectedUpdatedAt:e.updatedAt,...t});if(n!==k)return;_.value=ie(r),t&&V(),T.value=!0}catch(t){if(n!==k)return;_.value=e,C.value=t instanceof Error?t.message:d(`projectAgents.coordination.saveFailed`)}finally{n===k&&(b.value=!1)}}function re(){return{personalSpaceId:i.personalSpaceId,personalProjectId:i.personalProjectId,askBeforeRecruitment:!0,autoReusePreviousAgent:!0,autoGrowTeam:!0,updatedAt:null,teamLeadAgentId:null,teamMemberAgentIds:[]}}function ie(e){let t=e&&typeof e==`object`?e:{};return{personalSpaceId:oe(t.personalSpaceId??t.personal_space_id)||i.personalSpaceId,personalProjectId:oe(t.personalProjectId??t.personal_project_id)||i.personalProjectId,askBeforeRecruitment:ae(t.askBeforeRecruitment??t.ask_before_recruitment,!0),autoReusePreviousAgent:ae(t.autoReusePreviousAgent??t.auto_reuse_previous_agent,!0),updatedAt:oe(t.updatedAt??t.updated_at),autoGrowTeam:ae(t.autoGrowTeam??t.auto_grow_team,!0),teamLeadAgentId:oe(t.teamLeadAgentId??t.team_lead_agent_id),teamMemberAgentIds:Array.isArray(t.teamMemberAgentIds??t.team_member_agent_ids)?t.teamMemberAgentIds??t.team_member_agent_ids:[]}}function ae(e,t){return typeof e==`boolean`?e:t}function oe(e){return typeof e==`string`&&e?e:null}return(n,i)=>(r(),f(`section`,{class:`project-agent-automation-policy`,"aria-label":S(d)(`projectAgents.coordination.aria`,{project:e.projectName}),"aria-busy":N.value},[u(`header`,null,[u(`h3`,null,g(S(d)(`projectAgents.coordination.title`)),1),u(`span`,null,g(e.projectName),1)]),v.value?(r(),w(j,{key:0,variant:`compact`,label:S(d)(`projectAgents.coordination.loading`)},null,8,[`label`])):(r(),f(`div`,ot,[u(`label`,null,[u(`span`,null,[u(`strong`,null,g(S(d)(`projectAgents.coordination.autoReuse`)),1),u(`small`,null,g(S(d)(`projectAgents.coordination.autoReuseMeta`)),1)]),u(`input`,{checked:_.value.autoReusePreviousAgent,disabled:N.value||!!x.value,type:`checkbox`,role:`switch`,onChange:i[0]||=e=>U(`autoReusePreviousAgent`,e)},null,40,st)]),u(`label`,null,[u(`span`,null,[u(`strong`,null,g(S(d)(`projectAgents.coordination.askBeforeRecruitment`)),1),u(`small`,null,g(S(d)(`projectAgents.coordination.askBeforeRecruitmentMeta`)),1)]),u(`input`,{checked:_.value.askBeforeRecruitment,disabled:N.value||!!x.value,type:`checkbox`,role:`switch`,onChange:i[1]||=e=>U(`askBeforeRecruitment`,e)},null,40,ct)]),u(`label`,null,[u(`span`,null,[u(`strong`,null,g(S(d)(`projectAgents.team.autoGrow`)),1),u(`small`,null,g(S(d)(`projectAgents.team.autoGrowMeta`)),1)]),u(`input`,{checked:_.value.autoGrowTeam,disabled:N.value||!!x.value,type:`checkbox`,role:`switch`,onChange:i[2]||=e=>U(`autoGrowTeam`,e)},null,40,lt)])])),e.agents&&!v.value&&!x.value?(r(),f(`div`,ut,[u(`div`,dt,[u(`span`,null,g(S(d)(`projectAgents.team.hr`)),1),u(`span`,null,g(S(d)(`projectAgents.team.manager`)),1),z.value?(r(),f(`button`,{key:0,type:`button`,onClick:i[3]||=e=>m(`select`,z.value.agentId)},g(S(d)(`projectAgents.team.lead`))+` · `+g(ne(z.value)),1)):_.value.teamLeadAgentId?(r(),f(`span`,ft,g(S(d)(`projectAgents.team.unavailable`)),1)):(r(),f(`span`,pt,g(S(d)(`projectAgents.team.noLead`)),1))]),u(`p`,mt,g(S(d)(`projectAgents.team.summary`)),1),te.value.length?(r(),f(`ul`,ht,[(r(!0),f(y,null,a(te.value,e=>(r(),f(`li`,{key:e.agentId},[u(`button`,{type:`button`,onClick:t=>m(`select`,e.agentId)},[u(`strong`,null,g(ne(e)),1),u(`span`,null,g(e.profile.responsibility),1)],8,gt)]))),128))])):E(``,!0),u(`details`,null,[u(`summary`,null,g(S(d)(`projectAgents.team.edit`)),1),t(R,{modelValue:D.value,"onUpdate:modelValue":i[4]||=e=>D.value=e,class:`team-lead-field`,field:``,label:S(d)(`projectAgents.team.lead`),options:ee.value,disabled:N.value},null,8,[`modelValue`,`label`,`options`,`disabled`]),u(`fieldset`,{disabled:N.value||!D.value},[u(`legend`,null,g(S(d)(`projectAgents.team.members`)),1),(r(!0),f(y,null,a(L.value,e=>(r(),f(`label`,{key:e.id,class:`unavailable-team-member`},[u(`input`,{type:`checkbox`,checked:``,onChange:t=>O.value=O.value.filter(t=>t!==e.id)},null,40,_t),s(` `+g(e.name)+` · `+g(S(d)(`projectAgents.team.removeUnavailable`)),1)]))),128)),(r(!0),f(y,null,a(I.value,e=>(r(),f(`label`,{key:e.agentId},[c(u(`input`,{"onUpdate:modelValue":i[5]||=e=>O.value=e,type:`checkbox`,value:e.agentId},null,8,vt),[[p,O.value]]),s(g(ne(e)),1)]))),128))],8,$),u(`button`,{type:`button`,disabled:N.value||!B.value||!D.value,onClick:W},g(S(d)(`projectAgents.team.save`)),9,yt)])])):E(``,!0),u(`div`,bt,[x.value||C.value?(r(),f(`p`,xt,[s(g(x.value||C.value)+` `,1),x.value?(r(),f(`button`,{key:0,type:`button`,disabled:N.value,onClick:H},g(S(d)(`projectAgents.retry`)),9,St)):E(``,!0)])):b.value?(r(),w(j,{key:1,variant:`compact`,label:S(d)(`projectAgents.coordination.saving`)},null,8,[`label`])):T.value?(r(),f(`p`,Ct,g(S(d)(`projectAgents.coordination.saved`)),1)):E(``,!0)])],8,at))}}),[[`__scopeId`,`data-v-881ab823`]]),Tt={key:0,class:`project-agent-source-state`,role:`status`},Et={key:1,class:`project-agent-source-state`},Dt={key:2,class:`project-agent-source-state is-error`,role:`alert`},Ot=P(T({__name:`ProjectAgentDetailState`,props:{status:{},error:{},label:{}},emits:[`retry`],setup(e){return(i,a)=>e.status===`idle`?(r(),f(`div`,Tt,g(S(d)(`projectAgents.detail.notLoaded`)),1)):e.status===`loading`?(r(),f(`div`,Et,[t(j,{variant:`inline`,label:e.label},null,8,[`label`])])):e.status===`error`?(r(),f(`div`,Dt,[u(`span`,null,g(e.error||S(d)(`projectAgents.detail.sectionUnavailable`)),1),u(`button`,{class:`quiet-button`,type:`button`,onClick:a[0]||=e=>i.$emit(`retry`)},g(S(d)(`projectAgents.retry`)),1)])):n(i.$slots,`default`,{},void 0,!0,3)}}),[[`__scopeId`,`data-v-4f121023`]]),kt=[`aria-label`],At={"data-task-project-state":``},jt={key:0},Mt={"data-task-assignment-state":``},Nt={"data-task-execution-state":``},Pt={key:0,class:`project-agent-task-scope-hint`},Ft={key:1,"data-task-summary-reason":``},It=P(T({__name:`ProjectAgentTaskDiagnostics`,props:{task:{},projectName:{}},setup(e){let t=e,n=h(()=>!!(t.task.ownerAgentId||t.task.leadAgentId||t.task.participants.some(e=>e.agentId))),i=h(()=>t.task.projectScope?.type===`temporary`?`temporary`:t.task.personalProjectId?`identified`:`unresolved`),a=h(()=>{if(t.task.executionSummary!==void 0)return t.task.executionSummary;let e=new Map;for(let n of ne(t.task)){let t=n.workerId||n.agentId||n.workerLabel||n.eventId,r=e.get(t);(!r||n.createdAt>=r.createdAt)&&e.set(t,{status:n.workerStatus,createdAt:n.createdAt})}return[...e.values()]}),o=h(()=>{let e=a.value;return e.length?e.some(e=>e.status===`running`)?`running`:e.every(e=>e.status===`queued`)?`queued`:e.every(e=>[`completed`,`failed`,`cancelled`].includes(e.status??``))?`ended`:`reported`:`unreported`}),s=h(()=>t.task.executionSummary?.length?``:a.value.length?`eventsOnly`:n.value?`assignedOnly`:`unassigned`);return(t,a)=>(r(),f(`section`,{class:`project-agent-task-diagnostics`,"aria-label":S(d)(`projectAgents.diagnostics.title`)},[u(`dl`,null,[u(`div`,At,[u(`dt`,null,g(S(d)(`projectAgents.diagnostics.project`)),1),u(`dd`,null,g(S(d)(`projectAgents.diagnostics.projectState.${i.value}`)),1),e.task.personalProjectId?(r(),f(`small`,jt,g(e.projectName),1)):E(``,!0)]),u(`div`,Mt,[u(`dt`,null,g(S(d)(`projectAgents.diagnostics.assignment`)),1),u(`dd`,null,g(S(d)(`projectAgents.diagnostics.assignmentState.${n.value?`assigned`:`unreported`}`)),1)]),u(`div`,Nt,[u(`dt`,null,g(S(d)(`projectAgents.diagnostics.execution`)),1),u(`dd`,null,g(S(d)(`projectAgents.diagnostics.executionState.${o.value}`)),1)])]),i.value===`temporary`?(r(),f(`p`,Pt,g(S(d)(`projectAgents.diagnostics.temporaryHint`)),1)):E(``,!0),s.value?(r(),f(`p`,Ft,g(S(d)(`projectAgents.diagnostics.summaryReason.${s.value}`)),1)):E(``,!0)],8,kt))}}),[[`__scopeId`,`data-v-f960dcef`]]),Lt={key:2,role:`alert`},Rt={key:3},zt={class:`work-record-meta`},Bt=[`datetime`],Vt={key:4},Ht=P(T({__name:`EmployeeWorkHistory`,props:{personalSpaceId:{},agentId:{},projects:{}},setup(e){let t=e,n=l(``),i=l(!1),s=l(!1),c=l(``),p=l([]),m=0;o(()=>[t.agentId,t.personalSpaceId,t.projects.map(e=>e.id).join(`
|
|
8
8
|
`)],()=>{let e=t.projects.some(e=>e.id===n.value)?n.value:t.projects[0]?.id??``;e===n.value?h():n.value=e},{immediate:!0}),o(n,()=>void h());async function h(){let e=++m;if(p.value=[],c.value=``,s.value=!1,!(!i.value||!n.value)){s.value=!0;try{let r=new URLSearchParams({personalSpaceId:t.personalSpaceId,personalProjectId:n.value}),i=await A(`/api/project-agents/${encodeURIComponent(t.agentId)}/memory?${r}`);e===m&&(p.value=i.workLog??[])}catch(t){e===m&&(c.value=t instanceof Error?t.message:d(`projectAgents.workHistory.loadFailed`))}finally{e===m&&(s.value=!1)}}}function _(e){let t=e.target.open;t!==i.value&&(i.value=t,i.value?h():++m)}function v(e){let t=new Date(e);return Number.isNaN(t.getTime())?d(`projectAgents.notReported`):new Intl.DateTimeFormat(b(),{dateStyle:`short`,timeStyle:`short`}).format(t)}function x(e){return d(`projectAgents.workHistory.${[`reported`,`completed`,`incomplete`,`failed`,`no_change`,`unreported`,`running`].includes(e)?e:`unreported`}`)}return(t,i)=>(r(),f(`details`,{class:`employee-work-history`,onToggle:_},[u(`summary`,null,g(S(d)(`projectAgents.workHistory.title`)),1),e.projects.length?(r(),w(R,{key:0,modelValue:n.value,"onUpdate:modelValue":i[0]||=e=>n.value=e,field:``,label:S(d)(`projectAgents.fields.project`),options:e.projects.map(e=>({value:e.id,label:e.name}))},null,8,[`modelValue`,`label`,`options`])):E(``,!0),s.value?(r(),w(j,{key:1,variant:`compact`,label:S(d)(`projectAgents.workHistory.loading`)},null,8,[`label`])):c.value?(r(),f(`div`,Lt,[u(`p`,null,g(c.value),1),u(`button`,{type:`button`,class:`quiet-button`,onClick:h},g(S(d)(`projectAgents.retry`)),1)])):p.value.length?(r(),f(`ol`,Rt,[(r(!0),f(y,null,a(p.value,e=>(r(),f(`li`,{key:e.taskContextToken},[u(`div`,zt,[u(`strong`,null,g(x(e.status)),1),u(`span`,null,g(e.sourceApplication),1),u(`time`,{datetime:e.createdAt},g(v(e.createdAt)),9,Bt)]),u(`p`,null,g(e.summary),1)]))),128))])):(r(),f(`p`,Vt,g(S(d)(`projectAgents.workHistory.empty`)),1))],32))}}),[[`__scopeId`,`data-v-d4d00831`]]),Ut={class:`project-agent-fields`},Wt={class:`ui-field`},Gt=[`disabled`,`placeholder`],Kt={key:0,class:`ui-field-hint`},qt={class:`ui-field`},Jt=[`disabled`,`placeholder`],Yt={class:`ui-field`},Xt=[`disabled`],Zt={class:`ui-field`},Qt=[`disabled`,`placeholder`],$t={class:`ui-field project-agent-wide`},en=[`disabled`,`placeholder`],tn={class:`ui-field project-agent-wide`},nn=[`disabled`,`placeholder`],rn={class:`ui-field project-agent-wide`},an=[`disabled`,`placeholder`],on={class:`project-agent-wide project-agent-strategy`},sn={class:`ui-field project-agent-wide`},cn=[`disabled`,`placeholder`],ln={class:`ui-field-hint project-agent-wide`},un=P(T({__name:`ProjectAgentDialog`,props:{open:{type:Boolean},agent:{},projects:{},defaultProjectId:{},personalSpaceId:{}},emits:[`close`,`saved`],setup(n,{emit:i}){let a=n,p=i,m=l(``),_=l(``),v=l(``),y=l(``),b=l(``),x=l(``),T=l(``),D=l(``),A=l(`active`),j=l(`durable`),M=l(`adaptive`),N=l(`flexible`),P=l(``),I=l(!1),L=l(``),z=h(()=>!!a.agent),te=h(()=>a.projects.map(e=>({value:e.project_id,label:e.profile.name,meta:e.project_id}))),B=h(()=>[`active`,`inactive`,`archived`].map(e=>({value:e,label:d(`projectAgents.status.${e}`)}))),ne=h(()=>[...[`durable`,`hr`].map(e=>({value:e,label:d(`projectAgents.agentType.${e}`)})),...z.value&&(j.value===`temporary`||j.value===`coordinator`)?[{value:j.value,label:d(`projectAgents.agentType.${j.value}`),disabled:!0}]:[]]),V=h(()=>[`flexible`,`locked`].map(e=>({value:e,label:d(`projectAgents.strategy.${e}`)}))),H=[`adaptive`,`fast`,`balanced`,`deep`].map(e=>({value:e,label:e}));o(()=>[a.open,a.agent,a.defaultProjectId],([e,t,n])=>{if(!e)return;m.value=t?.personalProjectId??n??a.projects[0]?.project_id??``,_.value=t?.agentId??``,v.value=t?.profile.name??``,y.value=t?.profile.displayName??``,b.value=t?.profile.occupationEmoji??``,x.value=t?.profile.responsibility??``,T.value=(t?.profile.capabilities??[]).join(`
|
|
9
9
|
`),D.value=(t?.profile.initialPreferences??[]).join(`
|
|
10
10
|
`),A.value=t?.profile.status??`active`,j.value=t?.profile.agentType??`durable`,M.value=t?.profile.defaultModelStrategy?.mode??`adaptive`,N.value=t?.profile.executorPolicy?.mode??`flexible`;let r=t?.profile.executorPolicy,i=r?.mode===`locked`?r.lockedExecutorIds:r?.preferredExecutorIds;P.value=(i?.length?i:r?.allowList?.map(({executorId:e})=>e)??[]).join(`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{A as e,L as t,M as n,P as r,R as i,S as a,V as o,X as s,_ as c,a as l,b as u,f as d,g as f,it as p,j as m,k as h,m as ee,nt as g,p as te,tt as _,u as ne,w as v,y}from"./i18n-
|
|
1
|
+
import{A as e,L as t,M as n,P as r,R as i,S as a,V as o,X as s,_ as c,a as l,b as u,f as d,g as f,it as p,j as m,k as h,m as ee,nt as g,p as te,tt as _,u as ne,w as v,y}from"./i18n-b14l2pQA.js";import{t as b}from"./_plugin-vue_export-helper-BDNMzG2s.js";var x={class:`project-scope-heading`},S=[`id`],re={key:0,class:`project-scope-count`,role:`status`},C=[`disabled`,`aria-expanded`,`aria-controls`,`aria-labelledby`],w={key:0,viewBox:`0 0 20 20`,width:`18`,height:`18`,"aria-hidden":`true`},ie=[`id`],ae={key:1,class:`project-scope-multiple`},oe=[`id`,`aria-labelledby`],se=[`placeholder`,`aria-label`,`disabled`],ce={class:`project-scope-bulk`},T={class:`project-scope-option project-scope-all`},E=[`checked`,`indeterminate`,`disabled`],D=[`disabled`],O=[`disabled`],k={class:`project-scope-list`},A=[`value`,`checked`,`disabled`,`onChange`],j={key:0,class:`project-scope-project-id`},M={key:0,class:`project-scope-empty`},N={key:0,class:`project-scope-footer`},P={role:`status`},F={key:1,class:`project-scope-hint`},I={key:2,class:`project-scope-hint`},L=b(v({__name:`ProjectScopePicker`,props:{modelValue:{},projects:{},disabled:{type:Boolean},inline:{type:Boolean},label:{},hint:{},emptyLabel:{},compact:{type:Boolean},allLabel:{},showCount:{type:Boolean},resettable:{type:Boolean}},emits:[`update:modelValue`,`reset`],setup(v,{emit:b}){let L=v,R=b,z=s(null),B=s(null),V=s(null),H=s(!1),U=s(``),W=`employee-projects-${t().replace(/[^a-zA-Z0-9_-]/g,``)}`,G=f(()=>new Set(L.modelValue)),K=f(()=>L.projects.filter(e=>G.value.has(e.id)).length),q=f(()=>L.projects.length>0&&K.value===L.projects.length),le=f(()=>L.label??l(`employees.scope.label`)),J=f(()=>{let e=new Map;for(let t of L.projects)e.set(t.name,(e.get(t.name)??0)+1);return new Set([...e].filter(([,e])=>e>1).map(([e])=>e))}),ue=f(()=>{let e=L.projects.find(e=>G.value.has(e.id));return e?`${e.name}${J.value.has(e.name)?` · ${e.id}`:``}`:``}),de=f(()=>L.showCount?l(`employees.scope.count`,{selected:K.value,total:L.projects.length}):q.value?L.allLabel??l(`employees.scope.allSummary`,{count:K.value}):K.value===1?ue.value:K.value?l(`employees.scope.selected`,{count:K.value}):L.emptyLabel??l(`employees.unassigned`)),Y=f(()=>{let e=U.value.trim().toLocaleLowerCase();return L.projects.filter(t=>`${t.name} ${t.id}`.toLocaleLowerCase().includes(e))});i(()=>L.disabled,e=>{e&&X()}),m(()=>document.addEventListener(`pointerdown`,Z)),e(()=>document.removeEventListener(`pointerdown`,Z));async function fe(){if(!L.disabled){if(H.value){X();return}U.value=``,H.value=!0,await h(),V.value?.focus()}}function X(e=!1){H.value=!1,e&&h(()=>B.value?.focus())}function Z(e){H.value&&!z.value?.contains(e.target)&&X()}function Q(e){e.relatedTarget&&!z.value?.contains(e.relatedTarget)&&X()}function pe(e){H.value&&e.key===`Escape`&&(e.preventDefault(),e.stopPropagation(),X(!0))}function $(e){L.disabled||R(`update:modelValue`,e)}function me(){$(q.value?[]:L.projects.map(e=>e.id))}function he(){$(L.projects.filter(e=>!G.value.has(e.id)).map(e=>e.id))}function ge(e){let t=new Set(L.modelValue);t.has(e)?t.delete(e):t.add(e),$(L.projects.filter(e=>t.has(e.id)).map(e=>e.id))}return(e,t)=>(n(),u(`div`,{ref_key:`root`,ref:z,class:g([`project-scope-picker`,{"is-inline":v.inline,"is-compact":v.compact,"has-count":v.showCount}]),onFocusout:Q,onKeydown:pe},[c(`div`,x,[c(`span`,{id:`${W}-label`,class:`project-scope-label`},p(le.value),9,S),v.inline?(n(),u(`span`,re,p(_(l)(`employees.scope.count`,{selected:K.value,total:v.projects.length})),1)):y(``,!0)]),v.inline?y(``,!0):(n(),u(`button`,{key:0,ref_key:`trigger`,ref:B,type:`button`,class:`project-scope-trigger`,disabled:v.disabled,"aria-expanded":H.value,"aria-controls":`${W}-panel`,"aria-labelledby":`${W}-label ${W}-value`,onClick:fe},[v.compact?(n(),u(`svg`,w,[...t[4]||=[c(`path`,{d:`M3 5h14M5.5 10h9M8 15h4`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.6`,"stroke-linecap":`round`},null,-1)]])):y(``,!0),c(`span`,{id:`${W}-value`,class:`project-scope-value`},p(de.value),9,ie),v.compact&&!v.showCount?(n(),u(`small`,ae,p(_(l)(`employees.scope.multiple`)),1)):y(``,!0),t[5]||=c(`svg`,{viewBox:`0 0 20 20`,width:`18`,height:`18`,"aria-hidden":`true`},[c(`path`,{d:`m5 7.5 5 5 5-5`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.6`,"stroke-linecap":`round`,"stroke-linejoin":`round`})],-1)],8,C)),v.inline||H.value?(n(),u(`div`,{key:1,id:`${W}-panel`,class:`project-scope-panel`,role:`group`,"aria-labelledby":`${W}-label`},[o(c(`input`,{ref_key:`search`,ref:V,"onUpdate:modelValue":t[0]||=e=>U.value=e,type:`search`,class:`project-scope-search`,placeholder:_(l)(`employees.scope.search`),"aria-label":_(l)(`employees.scope.search`),disabled:v.disabled,onKeydown:t[1]||=d(te(()=>{},[`prevent`]),[`enter`])},null,40,se),[[ne,U.value]]),c(`div`,ce,[c(`label`,T,[c(`input`,{type:`checkbox`,checked:q.value,indeterminate:K.value>0&&!q.value,disabled:v.disabled||!v.projects.length,onChange:me},null,40,E),c(`span`,null,[a(p(v.allLabel??_(l)(`employees.scope.all`))+` `,1),c(`small`,null,p(v.projects.length),1)])]),c(`button`,{type:`button`,disabled:v.disabled||!v.projects.length,onClick:he},p(_(l)(`employees.scope.invert`)),9,D),v.resettable?(n(),u(`button`,{key:0,class:`project-scope-reset`,type:`button`,disabled:v.disabled,onClick:t[2]||=e=>R(`reset`)},p(_(l)(`employees.scope.reset`)),9,O)):y(``,!0)]),c(`div`,k,[(n(!0),u(ee,null,r(Y.value,e=>(n(),u(`label`,{key:e.id,class:g([`project-scope-option`,{"is-selected":G.value.has(e.id)}])},[c(`input`,{type:`checkbox`,value:e.id,checked:G.value.has(e.id),disabled:v.disabled,onChange:t=>ge(e.id)},null,40,A),c(`span`,null,[a(p(e.name),1),J.value.has(e.name)?(n(),u(`small`,j,p(e.id),1)):y(``,!0)])],2))),128)),Y.value.length?y(``,!0):(n(),u(`p`,M,p(_(l)(v.projects.length?`employees.scope.noMatch`:`employees.scope.empty`)),1))]),v.inline?y(``,!0):(n(),u(`div`,N,[c(`span`,P,p(_(l)(`employees.scope.count`,{selected:K.value,total:v.projects.length})),1),c(`button`,{type:`button`,onClick:t[3]||=e=>X(!0)},p(_(l)(`employees.scope.done`)),1)])),v.compact&&v.hint?(n(),u(`p`,F,p(v.hint),1)):y(``,!0)],8,oe)):y(``,!0),!v.compact&&v.hint!==``?(n(),u(`p`,I,p(v.hint??_(l)(`employees.scope.snapshotHint`)),1)):y(``,!0)],34))}}),[[`__scopeId`,`data-v-ba5341fd`]]);export{L as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{A as e,B as t,C as n,M as r,P as i,S as a,V as ee,X as o,_ as s,a as c,b as l,g as u,it as d,m as f,n as te,nt as ne,p as re,tt as p,u as ie,v as m,w as ae,y as h}from"./i18n-CCMR4gDS.js";import{t as oe}from"./console-CG8tdtSs.js";import{i as g,n as _,o as se,t as v}from"./client-CUTkF3t4.js";import{t as y}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{n as b,t as x}from"./UiDialog-Da1P10f4.js";import{h as ce}from"./useApi-CROJJdhE-DlOiu8lP.js";import{t as S}from"./UiSelect-D5Xj5Ec4.js";import{t as le}from"./paths-CDREouhi.js";import{r as C,t as w}from"./identity-C1eN-FSB.js";var ue={class:`view`},de={class:`space-heading public-space-heading`},fe=[`aria-label`],pe={class:`project-grid`},me={class:`project-card-heading`},he={class:`project-card-heading-actions`},ge=[`onClick`],_e={class:`completion-badge`},ve={class:`project-purpose`},ye={class:`evidence-row`},be={key:0,class:`muted`},xe={class:`project-access`},Se={class:`muted`},Ce={key:0,class:`project-release-meta`},we={class:`project-card-footer`},Te=[`onClick`],Ee=[`onClick`],De={key:0,class:`empty-state project-empty`},Oe={class:`project-section`},T={class:`section-toolbar compact-toolbar relation-section-toolbar`},ke=[`disabled`],Ae={key:0,class:`muted`},je={class:`compact-relation-preview`,"aria-live":`polite`},Me={key:0},Ne={key:1},Pe={class:`primary-action`,type:`submit`},Fe={class:`project-latest-release`},Ie={key:0},Le={key:1,class:`ui-muted`},Re={class:`project-detail-columns`},ze={key:1,class:`ui-muted`},Be={key:0,class:`ui-muted`},Ve={key:1,class:`ui-muted`},He={class:`public-project-dialog-note`},Ue={class:`ui-field`},We=[`disabled`],Ge={class:`public-project-dialog-note`},Ke=`fuli-workspace-v1`,E=y(ae({__name:`PublicProjectsPage`,setup(ae){let y=oe(),E=ce(),D=o(null),O=o([]),k=o([]),A=o(!1),j=o(!1),M=o(``),N=o(``),P=o(`RELATED_TO`),F=o(null),I=o(``),L=o(!1),R=o(``),z=0,B=null,V=u(()=>y.state?.projects??[]),qe=u(()=>y.state?.providers?.workspaces??[]),H=u(()=>new Set((y.state?.subscriptions??[]).map(({provider_url:e,project_id:t})=>`${e}::${t}`))),U=u(()=>V.value.filter(({role:e,isOwner:t})=>e===`maintainer`||t)),W=u(()=>U.value.filter(({providerUrl:e})=>J(e))),Je=u(()=>W.value.map(e=>({value:e.id,label:e.name,meta:`#${w(e.id,26)}`,search:C(e.id)}))),Ye=u(()=>{let e=V.value.find(({id:e})=>e===M.value);return!e||!J(e.providerUrl)?[]:V.value.filter(({id:t,providerUrl:n})=>t!==e.id&&n===e.providerUrl&&J(n))}),Xe=u(()=>Ye.value.map(e=>({value:e.id,label:e.name,meta:`#${w(e.id,26)}`,search:C(e.id)}))),Ze=u(()=>V.value.find(({id:e})=>e===M.value)??null),Qe=u(()=>V.value.find(({id:e})=>e===N.value)??null),$e=u(()=>K.value.find(({value:e})=>e===P.value)?.label??c(`pages.publicProjects.relationLabels.relatedTo`)),et=u(()=>D.value?J(D.value.providerUrl):!1),G=u(()=>!!(F.value&&I.value===F.value.name)),K=u(()=>[{value:`PART_OF`,label:c(`pages.publicProjects.relationLabels.partOf`)},{value:`USES_KNOWLEDGE_FROM`,label:c(`pages.publicProjects.relationLabels.usesKnowledgeFrom`)},{value:`DEPENDS_ON`,label:c(`pages.publicProjects.relationLabels.dependsOn`)},{value:`PROVIDES_TO`,label:c(`pages.publicProjects.relationLabels.providesTo`)},{value:`SHARES_CAPABILITY_WITH`,label:c(`pages.publicProjects.relationLabels.sharesCapabilityWith`)},{value:`SUCCESSOR_OF`,label:c(`pages.publicProjects.relationLabels.successorOf`)},{value:`RELATED_TO`,label:c(`pages.publicProjects.relationLabels.relatedTo`)}]);function q(e){return`${e.providerUrl}::${e.id}`}function J(e){return qe.value.find(({providerUrl:t})=>t===e)?.protocol!==Ke}function Y(e){return e.profile?.purpose||e.profile?.scope||e.profile?.technical_summary||e.description||c(`pages.publicProjects.fallbackDescription`)}async function X(e){try{if(H.value.has(q(e))){let t=new URLSearchParams({personalSpaceId:y.activePersonalSpace?.id??``,providerUrl:e.providerUrl});await v(`/api/subscriptions/${encodeURIComponent(e.id)}?${t}`),y.notify(c(`pages.publicProjects.unsubscribed`,{name:e.name}))}else await g(`/api/subscriptions`,{personalSpaceId:y.activePersonalSpace?.id,projectId:e.id,providerUrl:e.providerUrl,projectName:e.name}),y.notify(c(`pages.publicProjects.subscribed`,{name:e.name}));await y.refresh()}catch(e){y.reportError(e)}}async function tt(e){if(Q(),D.value=e,O.value=[],k.value=[],!J(e.providerUrl))return;let t=++z,n=new AbortController;B=n,A.value=!0;try{let r=new URLSearchParams({providerUrl:e.providerUrl}),[i,a]=await Promise.all([_(`/api/projects/${encodeURIComponent(e.id)}/releases?${r}`,{signal:n.signal}),_(`/api/project-relations?${new URLSearchParams({projectId:e.id,providerUrl:e.providerUrl})}`,{signal:n.signal})]);if(t!==z||n.signal.aborted)return;O.value=i.releases??[],k.value=a.relations??[]}catch(e){if(t!==z||n.signal.aborted)return;y.reportError(e)}finally{if(t!==z||n.signal.aborted)return;A.value=!1,B===n&&(B=null)}}async function nt(e){Q(),await E.push(le(`public`,e.id,`graph`))}function Z(){z+=1,B?.abort(),B=null,A.value=!1}function Q(){Z(),D.value=null,O.value=[],k.value=[]}function rt(e){J(e.providerUrl)&&(F.value=e,I.value=``,R.value=``)}function it(){L.value||(F.value=null,I.value=``,R.value=``)}async function at(){let e=F.value;if(!e||!G.value){R.value=c(`pages.publicProjects.deleteNameRequired`);return}if(!J(e.providerUrl)){R.value=c(`pages.publicProjects.providerOperationsUnavailable`);return}L.value=!0,R.value=``;try{let t=new URLSearchParams({providerUrl:e.providerUrl});await v(`/api/projects/${encodeURIComponent(e.id)}?${t}`),D.value=null,F.value=null,y.notify(c(`pages.publicProjects.deleted`,{name:e.name})),await y.refresh()}catch(e){R.value=e instanceof Error?e.message:c(`pages.publicProjects.deleteFailed`),y.reportError(e)}finally{L.value=!1}}async function ot(){let e=V.value.find(({id:e})=>e===M.value),t=V.value.find(({id:e})=>e===N.value);if(!e||!t){y.reportError(Error(c(`pages.publicProjects.chooseRelationProjects`)));return}if(!J(e.providerUrl)){y.reportError(Error(c(`pages.publicProjects.providerOperationsUnavailable`)));return}try{await g(`/api/project-relations`,{sourceProjectId:e.id,targetProjectId:t.id,providerUrl:e.providerUrl,relationType:P.value,note:null}),j.value=!1,M.value=``,N.value=``,y.notify(P.value===`PART_OF`?c(`pages.publicProjects.parentRelationSubmitted`):c(`pages.publicProjects.relationCreated`))}catch(e){y.reportError(e)}}e(Z);function $(e){return e?new Date(e).toLocaleString(te()):c(`pages.publicProjects.timeNotRecorded`)}return(e,o)=>(r(),l(`section`,ue,[s(`div`,de,[o[7]||=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(p(c)(`pages.publicProjects.intro`)),1)]),s(`div`,{class:`public-space-stats`,"aria-label":p(c)(`pages.publicProjects.overviewAria`)},[s(`span`,null,[s(`strong`,null,d(V.value.length),1),a(d(p(c)(`pages.publicProjects.discoverable`)),1)]),s(`span`,null,[s(`strong`,null,d(p(y).state?.subscriptions.length??0),1),a(d(p(c)(`pages.publicProjects.subscribedCount`)),1)])],8,fe)]),s(`div`,pe,[(r(!0),l(f,null,i(V.value,e=>(r(),l(`article`,{key:q(e),class:`project-card`},[s(`div`,me,[s(`div`,null,[s(`h4`,null,d(e.name),1)]),s(`div`,he,[e.can_manage&&J(e.providerUrl)?(r(),l(`button`,{key:0,class:`management-action`,type:`button`,onClick:t=>rt(e)},d(p(c)(`pages.publicProjects.manage`)),9,ge)):h(``,!0),s(`div`,_e,[s(`strong`,null,d(e.profile?.assessment?.score??`—`),1),s(`span`,null,d(e.profile?.assessment?p(c)(`pages.publicProjects.coverage`):p(c)(`pages.publicProjects.noSummary`)),1)])])]),s(`p`,ve,d(Y(e)),1),s(`div`,ye,[(r(!0),l(f,null,i(e.profile?.sources??[],(e,t)=>(r(),l(`span`,{key:t,class:`status-chip`},d(e.kind??p(c)(`pages.publicProjects.material`)),1))),128)),e.profile?.sources?.length?h(``,!0):(r(),l(`span`,be,d(p(c)(`pages.publicProjects.noSources`)),1))]),s(`div`,xe,[s(`span`,{class:ne([`status-chip`,{owner:e.isOwner}])},d(e.isOwner?`Owner`:e.role??`Reader`),3),s(`span`,Se,d(e.isOwner?p(c)(`pages.publicProjects.publishedByYou`):p(c)(`pages.publicProjects.publiclyDiscoverable`)),1),e.current_release&&J(e.providerUrl)?(r(),l(`span`,Ce,[s(`strong`,null,d(e.current_release.version),1),s(`span`,null,d($(e.current_release.published_at)),1)])):h(``,!0)]),s(`footer`,we,[s(`button`,{class:`secondary-action`,type:`button`,onClick:t=>X(e)},d(H.value.has(q(e))?p(c)(`pages.publicProjects.unsubscribe`):p(c)(`pages.publicProjects.subscribe`)),9,Te),s(`button`,{class:`primary-action`,type:`button`,onClick:t=>tt(e)},d(p(c)(`common.actions.viewDetails`)),9,Ee)])]))),128)),V.value.length?h(``,!0):(r(),l(`div`,De,d(p(c)(`pages.publicProjects.noProjects`)),1))]),s(`section`,Oe,[s(`div`,T,[s(`div`,null,[s(`h3`,null,d(p(c)(`pages.publicProjects.relationsTitle`)),1)]),s(`button`,{class:`primary-action`,type:`button`,disabled:!W.value.length,onClick:o[0]||=e=>j.value=!j.value},d(p(c)(`pages.publicProjects.addRelation`)),9,ke)]),U.value.length&&!W.value.length?(r(),l(`p`,Ae,d(p(c)(`pages.publicProjects.providerOperationsUnavailable`)),1)):h(``,!0),j.value?(r(),l(`form`,{key:1,class:`relation-composer relation-composer-form compact-relation-form`,onSubmit:re(ot,[`prevent`])},[s(`label`,null,[a(d(p(c)(`pages.publicProjects.sourceProject`))+` `,1),n(S,{modelValue:M.value,"onUpdate:modelValue":o[1]||=e=>M.value=e,options:Je.value,label:p(c)(`pages.publicProjects.sourceProjectLabel`),placeholder:p(c)(`pages.publicProjects.chooseProject`),searchable:``,required:``,onChange:o[2]||=e=>N.value=``},null,8,[`modelValue`,`options`,`label`,`placeholder`])]),s(`label`,null,[a(d(p(c)(`pages.publicProjects.relation`))+` `,1),n(S,{modelValue:P.value,"onUpdate:modelValue":o[3]||=e=>P.value=e,options:K.value,label:p(c)(`pages.publicProjects.relationTypeLabel`)},null,8,[`modelValue`,`options`,`label`])]),s(`label`,null,[a(d(p(c)(`pages.publicProjects.targetProject`))+` `,1),n(S,{modelValue:N.value,"onUpdate:modelValue":o[4]||=e=>N.value=e,options:Xe.value,label:p(c)(`pages.publicProjects.targetProjectLabel`),placeholder:p(c)(`pages.publicProjects.chooseProject`),searchable:``,required:``},null,8,[`modelValue`,`options`,`label`,`placeholder`])]),s(`div`,je,[s(`span`,null,d(p(c)(`pages.publicProjects.preview`)),1),s(`strong`,null,d(Ze.value?.name||p(c)(`pages.publicProjects.sourceProject`))+` `+d($e.value)+` `+d(Qe.value?.name||p(c)(`pages.publicProjects.targetProject`)),1),P.value===`PART_OF`?(r(),l(`p`,Me,d(p(c)(`pages.publicProjects.parentConfirmation`)),1)):(r(),l(`p`,Ne,d(p(c)(`pages.publicProjects.relationBoundary`)),1))]),s(`button`,Pe,d(p(c)(`pages.publicProjects.addRelation`)),1)],32)):h(``,!0)]),D.value?(r(),m(x,{key:0,open:``,class:`public-project-details`,size:`lg`,title:D.value.name,description:Y(D.value),onClose:Q},{footer:t(()=>[s(`span`,He,d(p(c)(`pages.publicProjects.contentManagementSeparated`)),1),n(b,{variant:`primary`,onClick:o[5]||=e=>nt(D.value)},{default:t(()=>[a(d(p(c)(`pages.publicProjects.viewGraph`)),1)]),_:1})]),default:t(()=>[et.value?(r(),l(f,{key:0},[s(`section`,Fe,[s(`h3`,null,d(p(c)(`pages.publicProjects.latestRelease`)),1),D.value.current_release?(r(),l(`p`,Ie,[s(`strong`,null,d(D.value.current_release.version),1),a(` · `+d($(D.value.current_release.published_at)),1)])):(r(),l(`p`,Le,d(p(c)(`pages.publicProjects.noRelease`)),1))]),s(`div`,Re,[s(`section`,null,[s(`h3`,null,d(p(c)(`pages.publicProjects.releaseHistory`)),1),A.value?(r(),m(se,{key:0,variant:`compact`,label:p(c)(`pages.publicProjects.loading`)},null,8,[`label`])):h(``,!0),(r(!0),l(f,null,i(O.value,e=>(r(),l(`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)),!A.value&&!O.value.length?(r(),l(`p`,ze,d(p(c)(`pages.publicProjects.noReleaseHistory`)),1)):h(``,!0)]),s(`section`,null,[s(`h3`,null,d(p(c)(`pages.publicProjects.relationsTitle`)),1),(r(!0),l(f,null,i(k.value,e=>(r(),l(`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)),!A.value&&!k.value.length?(r(),l(`p`,Be,d(p(c)(`pages.publicProjects.noRelations`)),1)):h(``,!0)])])],64)):(r(),l(`p`,Ve,d(p(c)(`pages.publicProjects.providerOperationsUnavailableTitle`)),1))]),_:1},8,[`title`,`description`])):h(``,!0),F.value?(r(),m(x,{key:1,open:``,class:`public-project-deletion`,size:`sm`,busy:L.value,error:R.value,title:p(c)(`pages.publicProjects.deleteTitle`),description:p(c)(`pages.publicProjects.deleteCopy`),onClose:it},{footer:t(()=>[s(`span`,Ge,d(p(c)(`pages.publicProjects.deleteWarning`)),1),n(b,{variant:`danger`,disabled:!G.value,busy:L.value,"busy-label":p(c)(`pages.publicProjects.deleting`),onClick:at},{default:t(()=>[a(d(p(c)(`pages.publicProjects.deletePermanently`)),1)]),_:1},8,[`disabled`,`busy`,`busy-label`])]),default:t(()=>[s(`label`,Ue,[s(`span`,null,[a(d(p(c)(`pages.publicProjects.enterFullName`))+` `,1),s(`strong`,null,d(F.value.name),1)]),ee(s(`input`,{"onUpdate:modelValue":o[6]||=e=>I.value=e,autocomplete:`off`,disabled:L.value},null,8,We),[[ie,I.value]])])]),_:1},8,[`busy`,`error`,`title`,`description`])):h(``,!0)]))}}),[[`__scopeId`,`data-v-df9baf3c`]]);export{E as default};
|
|
1
|
+
import{A as e,B as t,C as n,M as r,P as i,S as a,V as ee,X as o,_ as s,a as c,b as l,g as u,it as d,m as f,n as te,nt as ne,p as re,tt as p,u as ie,v as m,w as ae,y as h}from"./i18n-b14l2pQA.js";import{t as oe}from"./console-CqzwSo7a.js";import{i as g,n as _,o as se,t as v}from"./client-DLS5FZBI.js";import{t as y}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{n as b,t as x}from"./UiDialog-Q7fsJUoO.js";import{h as ce}from"./useApi-CROJJdhE-CEQAEuug.js";import{t as S}from"./UiSelect-DcGpPQQo.js";import{t as le}from"./paths-CDREouhi.js";import{r as C,t as w}from"./identity-BWbPmZZf.js";var ue={class:`view`},de={class:`space-heading public-space-heading`},fe=[`aria-label`],pe={class:`project-grid`},me={class:`project-card-heading`},he={class:`project-card-heading-actions`},ge=[`onClick`],_e={class:`completion-badge`},ve={class:`project-purpose`},ye={class:`evidence-row`},be={key:0,class:`muted`},xe={class:`project-access`},Se={class:`muted`},Ce={key:0,class:`project-release-meta`},we={class:`project-card-footer`},Te=[`onClick`],Ee=[`onClick`],De={key:0,class:`empty-state project-empty`},Oe={class:`project-section`},T={class:`section-toolbar compact-toolbar relation-section-toolbar`},ke=[`disabled`],Ae={key:0,class:`muted`},je={class:`compact-relation-preview`,"aria-live":`polite`},Me={key:0},Ne={key:1},Pe={class:`primary-action`,type:`submit`},Fe={class:`project-latest-release`},Ie={key:0},Le={key:1,class:`ui-muted`},Re={class:`project-detail-columns`},ze={key:1,class:`ui-muted`},Be={key:0,class:`ui-muted`},Ve={key:1,class:`ui-muted`},He={class:`public-project-dialog-note`},Ue={class:`ui-field`},We=[`disabled`],Ge={class:`public-project-dialog-note`},Ke=`fuli-workspace-v1`,E=y(ae({__name:`PublicProjectsPage`,setup(ae){let y=oe(),E=ce(),D=o(null),O=o([]),k=o([]),A=o(!1),j=o(!1),M=o(``),N=o(``),P=o(`RELATED_TO`),F=o(null),I=o(``),L=o(!1),R=o(``),z=0,B=null,V=u(()=>y.state?.projects??[]),qe=u(()=>y.state?.providers?.workspaces??[]),H=u(()=>new Set((y.state?.subscriptions??[]).map(({provider_url:e,project_id:t})=>`${e}::${t}`))),U=u(()=>V.value.filter(({role:e,isOwner:t})=>e===`maintainer`||t)),W=u(()=>U.value.filter(({providerUrl:e})=>J(e))),Je=u(()=>W.value.map(e=>({value:e.id,label:e.name,meta:`#${w(e.id,26)}`,search:C(e.id)}))),Ye=u(()=>{let e=V.value.find(({id:e})=>e===M.value);return!e||!J(e.providerUrl)?[]:V.value.filter(({id:t,providerUrl:n})=>t!==e.id&&n===e.providerUrl&&J(n))}),Xe=u(()=>Ye.value.map(e=>({value:e.id,label:e.name,meta:`#${w(e.id,26)}`,search:C(e.id)}))),Ze=u(()=>V.value.find(({id:e})=>e===M.value)??null),Qe=u(()=>V.value.find(({id:e})=>e===N.value)??null),$e=u(()=>K.value.find(({value:e})=>e===P.value)?.label??c(`pages.publicProjects.relationLabels.relatedTo`)),et=u(()=>D.value?J(D.value.providerUrl):!1),G=u(()=>!!(F.value&&I.value===F.value.name)),K=u(()=>[{value:`PART_OF`,label:c(`pages.publicProjects.relationLabels.partOf`)},{value:`USES_KNOWLEDGE_FROM`,label:c(`pages.publicProjects.relationLabels.usesKnowledgeFrom`)},{value:`DEPENDS_ON`,label:c(`pages.publicProjects.relationLabels.dependsOn`)},{value:`PROVIDES_TO`,label:c(`pages.publicProjects.relationLabels.providesTo`)},{value:`SHARES_CAPABILITY_WITH`,label:c(`pages.publicProjects.relationLabels.sharesCapabilityWith`)},{value:`SUCCESSOR_OF`,label:c(`pages.publicProjects.relationLabels.successorOf`)},{value:`RELATED_TO`,label:c(`pages.publicProjects.relationLabels.relatedTo`)}]);function q(e){return`${e.providerUrl}::${e.id}`}function J(e){return qe.value.find(({providerUrl:t})=>t===e)?.protocol!==Ke}function Y(e){return e.profile?.purpose||e.profile?.scope||e.profile?.technical_summary||e.description||c(`pages.publicProjects.fallbackDescription`)}async function X(e){try{if(H.value.has(q(e))){let t=new URLSearchParams({personalSpaceId:y.activePersonalSpace?.id??``,providerUrl:e.providerUrl});await v(`/api/subscriptions/${encodeURIComponent(e.id)}?${t}`),y.notify(c(`pages.publicProjects.unsubscribed`,{name:e.name}))}else await g(`/api/subscriptions`,{personalSpaceId:y.activePersonalSpace?.id,projectId:e.id,providerUrl:e.providerUrl,projectName:e.name}),y.notify(c(`pages.publicProjects.subscribed`,{name:e.name}));await y.refresh()}catch(e){y.reportError(e)}}async function tt(e){if(Q(),D.value=e,O.value=[],k.value=[],!J(e.providerUrl))return;let t=++z,n=new AbortController;B=n,A.value=!0;try{let r=new URLSearchParams({providerUrl:e.providerUrl}),[i,a]=await Promise.all([_(`/api/projects/${encodeURIComponent(e.id)}/releases?${r}`,{signal:n.signal}),_(`/api/project-relations?${new URLSearchParams({projectId:e.id,providerUrl:e.providerUrl})}`,{signal:n.signal})]);if(t!==z||n.signal.aborted)return;O.value=i.releases??[],k.value=a.relations??[]}catch(e){if(t!==z||n.signal.aborted)return;y.reportError(e)}finally{if(t!==z||n.signal.aborted)return;A.value=!1,B===n&&(B=null)}}async function nt(e){Q(),await E.push(le(`public`,e.id,`graph`))}function Z(){z+=1,B?.abort(),B=null,A.value=!1}function Q(){Z(),D.value=null,O.value=[],k.value=[]}function rt(e){J(e.providerUrl)&&(F.value=e,I.value=``,R.value=``)}function it(){L.value||(F.value=null,I.value=``,R.value=``)}async function at(){let e=F.value;if(!e||!G.value){R.value=c(`pages.publicProjects.deleteNameRequired`);return}if(!J(e.providerUrl)){R.value=c(`pages.publicProjects.providerOperationsUnavailable`);return}L.value=!0,R.value=``;try{let t=new URLSearchParams({providerUrl:e.providerUrl});await v(`/api/projects/${encodeURIComponent(e.id)}?${t}`),D.value=null,F.value=null,y.notify(c(`pages.publicProjects.deleted`,{name:e.name})),await y.refresh()}catch(e){R.value=e instanceof Error?e.message:c(`pages.publicProjects.deleteFailed`),y.reportError(e)}finally{L.value=!1}}async function ot(){let e=V.value.find(({id:e})=>e===M.value),t=V.value.find(({id:e})=>e===N.value);if(!e||!t){y.reportError(Error(c(`pages.publicProjects.chooseRelationProjects`)));return}if(!J(e.providerUrl)){y.reportError(Error(c(`pages.publicProjects.providerOperationsUnavailable`)));return}try{await g(`/api/project-relations`,{sourceProjectId:e.id,targetProjectId:t.id,providerUrl:e.providerUrl,relationType:P.value,note:null}),j.value=!1,M.value=``,N.value=``,y.notify(P.value===`PART_OF`?c(`pages.publicProjects.parentRelationSubmitted`):c(`pages.publicProjects.relationCreated`))}catch(e){y.reportError(e)}}e(Z);function $(e){return e?new Date(e).toLocaleString(te()):c(`pages.publicProjects.timeNotRecorded`)}return(e,o)=>(r(),l(`section`,ue,[s(`div`,de,[o[7]||=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(p(c)(`pages.publicProjects.intro`)),1)]),s(`div`,{class:`public-space-stats`,"aria-label":p(c)(`pages.publicProjects.overviewAria`)},[s(`span`,null,[s(`strong`,null,d(V.value.length),1),a(d(p(c)(`pages.publicProjects.discoverable`)),1)]),s(`span`,null,[s(`strong`,null,d(p(y).state?.subscriptions.length??0),1),a(d(p(c)(`pages.publicProjects.subscribedCount`)),1)])],8,fe)]),s(`div`,pe,[(r(!0),l(f,null,i(V.value,e=>(r(),l(`article`,{key:q(e),class:`project-card`},[s(`div`,me,[s(`div`,null,[s(`h4`,null,d(e.name),1)]),s(`div`,he,[e.can_manage&&J(e.providerUrl)?(r(),l(`button`,{key:0,class:`management-action`,type:`button`,onClick:t=>rt(e)},d(p(c)(`pages.publicProjects.manage`)),9,ge)):h(``,!0),s(`div`,_e,[s(`strong`,null,d(e.profile?.assessment?.score??`—`),1),s(`span`,null,d(e.profile?.assessment?p(c)(`pages.publicProjects.coverage`):p(c)(`pages.publicProjects.noSummary`)),1)])])]),s(`p`,ve,d(Y(e)),1),s(`div`,ye,[(r(!0),l(f,null,i(e.profile?.sources??[],(e,t)=>(r(),l(`span`,{key:t,class:`status-chip`},d(e.kind??p(c)(`pages.publicProjects.material`)),1))),128)),e.profile?.sources?.length?h(``,!0):(r(),l(`span`,be,d(p(c)(`pages.publicProjects.noSources`)),1))]),s(`div`,xe,[s(`span`,{class:ne([`status-chip`,{owner:e.isOwner}])},d(e.isOwner?`Owner`:e.role??`Reader`),3),s(`span`,Se,d(e.isOwner?p(c)(`pages.publicProjects.publishedByYou`):p(c)(`pages.publicProjects.publiclyDiscoverable`)),1),e.current_release&&J(e.providerUrl)?(r(),l(`span`,Ce,[s(`strong`,null,d(e.current_release.version),1),s(`span`,null,d($(e.current_release.published_at)),1)])):h(``,!0)]),s(`footer`,we,[s(`button`,{class:`secondary-action`,type:`button`,onClick:t=>X(e)},d(H.value.has(q(e))?p(c)(`pages.publicProjects.unsubscribe`):p(c)(`pages.publicProjects.subscribe`)),9,Te),s(`button`,{class:`primary-action`,type:`button`,onClick:t=>tt(e)},d(p(c)(`common.actions.viewDetails`)),9,Ee)])]))),128)),V.value.length?h(``,!0):(r(),l(`div`,De,d(p(c)(`pages.publicProjects.noProjects`)),1))]),s(`section`,Oe,[s(`div`,T,[s(`div`,null,[s(`h3`,null,d(p(c)(`pages.publicProjects.relationsTitle`)),1)]),s(`button`,{class:`primary-action`,type:`button`,disabled:!W.value.length,onClick:o[0]||=e=>j.value=!j.value},d(p(c)(`pages.publicProjects.addRelation`)),9,ke)]),U.value.length&&!W.value.length?(r(),l(`p`,Ae,d(p(c)(`pages.publicProjects.providerOperationsUnavailable`)),1)):h(``,!0),j.value?(r(),l(`form`,{key:1,class:`relation-composer relation-composer-form compact-relation-form`,onSubmit:re(ot,[`prevent`])},[s(`label`,null,[a(d(p(c)(`pages.publicProjects.sourceProject`))+` `,1),n(S,{modelValue:M.value,"onUpdate:modelValue":o[1]||=e=>M.value=e,options:Je.value,label:p(c)(`pages.publicProjects.sourceProjectLabel`),placeholder:p(c)(`pages.publicProjects.chooseProject`),searchable:``,required:``,onChange:o[2]||=e=>N.value=``},null,8,[`modelValue`,`options`,`label`,`placeholder`])]),s(`label`,null,[a(d(p(c)(`pages.publicProjects.relation`))+` `,1),n(S,{modelValue:P.value,"onUpdate:modelValue":o[3]||=e=>P.value=e,options:K.value,label:p(c)(`pages.publicProjects.relationTypeLabel`)},null,8,[`modelValue`,`options`,`label`])]),s(`label`,null,[a(d(p(c)(`pages.publicProjects.targetProject`))+` `,1),n(S,{modelValue:N.value,"onUpdate:modelValue":o[4]||=e=>N.value=e,options:Xe.value,label:p(c)(`pages.publicProjects.targetProjectLabel`),placeholder:p(c)(`pages.publicProjects.chooseProject`),searchable:``,required:``},null,8,[`modelValue`,`options`,`label`,`placeholder`])]),s(`div`,je,[s(`span`,null,d(p(c)(`pages.publicProjects.preview`)),1),s(`strong`,null,d(Ze.value?.name||p(c)(`pages.publicProjects.sourceProject`))+` `+d($e.value)+` `+d(Qe.value?.name||p(c)(`pages.publicProjects.targetProject`)),1),P.value===`PART_OF`?(r(),l(`p`,Me,d(p(c)(`pages.publicProjects.parentConfirmation`)),1)):(r(),l(`p`,Ne,d(p(c)(`pages.publicProjects.relationBoundary`)),1))]),s(`button`,Pe,d(p(c)(`pages.publicProjects.addRelation`)),1)],32)):h(``,!0)]),D.value?(r(),m(x,{key:0,open:``,class:`public-project-details`,size:`lg`,title:D.value.name,description:Y(D.value),onClose:Q},{footer:t(()=>[s(`span`,He,d(p(c)(`pages.publicProjects.contentManagementSeparated`)),1),n(b,{variant:`primary`,onClick:o[5]||=e=>nt(D.value)},{default:t(()=>[a(d(p(c)(`pages.publicProjects.viewGraph`)),1)]),_:1})]),default:t(()=>[et.value?(r(),l(f,{key:0},[s(`section`,Fe,[s(`h3`,null,d(p(c)(`pages.publicProjects.latestRelease`)),1),D.value.current_release?(r(),l(`p`,Ie,[s(`strong`,null,d(D.value.current_release.version),1),a(` · `+d($(D.value.current_release.published_at)),1)])):(r(),l(`p`,Le,d(p(c)(`pages.publicProjects.noRelease`)),1))]),s(`div`,Re,[s(`section`,null,[s(`h3`,null,d(p(c)(`pages.publicProjects.releaseHistory`)),1),A.value?(r(),m(se,{key:0,variant:`compact`,label:p(c)(`pages.publicProjects.loading`)},null,8,[`label`])):h(``,!0),(r(!0),l(f,null,i(O.value,e=>(r(),l(`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)),!A.value&&!O.value.length?(r(),l(`p`,ze,d(p(c)(`pages.publicProjects.noReleaseHistory`)),1)):h(``,!0)]),s(`section`,null,[s(`h3`,null,d(p(c)(`pages.publicProjects.relationsTitle`)),1),(r(!0),l(f,null,i(k.value,e=>(r(),l(`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)),!A.value&&!k.value.length?(r(),l(`p`,Be,d(p(c)(`pages.publicProjects.noRelations`)),1)):h(``,!0)])])],64)):(r(),l(`p`,Ve,d(p(c)(`pages.publicProjects.providerOperationsUnavailableTitle`)),1))]),_:1},8,[`title`,`description`])):h(``,!0),F.value?(r(),m(x,{key:1,open:``,class:`public-project-deletion`,size:`sm`,busy:L.value,error:R.value,title:p(c)(`pages.publicProjects.deleteTitle`),description:p(c)(`pages.publicProjects.deleteCopy`),onClose:it},{footer:t(()=>[s(`span`,Ge,d(p(c)(`pages.publicProjects.deleteWarning`)),1),n(b,{variant:`danger`,disabled:!G.value,busy:L.value,"busy-label":p(c)(`pages.publicProjects.deleting`),onClick:at},{default:t(()=>[a(d(p(c)(`pages.publicProjects.deletePermanently`)),1)]),_:1},8,[`disabled`,`busy`,`busy-label`])]),default:t(()=>[s(`label`,Ue,[s(`span`,null,[a(d(p(c)(`pages.publicProjects.enterFullName`))+` `,1),s(`strong`,null,d(F.value.name),1)]),ee(s(`input`,{"onUpdate:modelValue":o[6]||=e=>I.value=e,autocomplete:`off`,disabled:L.value},null,8,We),[[ie,I.value]])])]),_:1},8,[`busy`,`error`,`title`,`description`])):h(``,!0)]))}}),[[`__scopeId`,`data-v-df9baf3c`]]);export{E as default};
|