fuli-context 0.8.1 → 0.8.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -7
- package/README.zh-CN.md +8 -7
- package/dist/web/assets/{AboutPage-fBq5VFoQ.js → AboutPage-HLhChD_Q.js} +1 -1
- package/dist/web/assets/{AgentHand-CMZk5GjY.js → AgentHand-BaLSbn08.js} +1 -1
- package/dist/web/assets/{AgentName-DRZHAIB2.js → AgentName-0PIU7MOX.js} +1 -1
- package/dist/web/assets/{AgentProfilePage-BPQEfMhB.js → AgentProfilePage-9cSsZHnk.js} +1 -1
- package/dist/web/assets/{AgentsDirectoryPage-CKZfrcuD.js → AgentsDirectoryPage-7G02Xm6C.js} +1 -1
- package/dist/web/assets/{ConnectionsPage-COb56qnk.js → ConnectionsPage-D0wPYbwd.js} +1 -1
- package/dist/web/assets/{EmployeeRecruitDialog-BLTpjCcK.js → EmployeeRecruitDialog-BrPH3e50.js} +1 -1
- package/dist/web/assets/{EmployeeWorkbenchPage-HUd-gne2.js → EmployeeWorkbenchPage-u-jw38PW.js} +1 -1
- package/dist/web/assets/{GrowthLoading-Bu_kH-I8.js → GrowthLoading-DFOy-mEl.js} +1 -1
- package/dist/web/assets/{KnowledgeEditDialog-BTwXXRCD.js → KnowledgeEditDialog-DBsjlkDr.js} +1 -1
- package/dist/web/assets/{KnowledgeInspector-Ct5hl2--.js → KnowledgeInspector-C79hbuOo.js} +1 -1
- package/dist/web/assets/{KnowledgeOrganizerPage-DMC8Hh43.js → KnowledgeOrganizerPage-Cz1BnAtz.js} +1 -1
- package/dist/web/assets/KnowledgePage-JyfFFUrg.js +1 -0
- package/dist/web/assets/{KnowledgeWorkspace-DmHIc0jb.js → KnowledgeWorkspace-B2vj12QG.js} +1 -1
- package/dist/web/assets/{NotFoundPage-C0yOR9T9.js → NotFoundPage-D340EQJP.js} +1 -1
- package/dist/web/assets/{OverviewPage-BreX_kb4.js → OverviewPage-BKiYudrC.js} +1 -1
- package/dist/web/assets/{PersonalProfilePage-CX1a6_E3.js → PersonalProfilePage-BIGTcem2.js} +1 -1
- package/dist/web/assets/PersonalProjectsPage-CzjDCIi0.js +1 -0
- package/dist/web/assets/{ProjectAgentsPage-CA04h1Uf.js → ProjectAgentsPage-C5F2WgwJ.js} +4 -4
- package/dist/web/assets/ProjectAgentsPage-C89ZEDgi.css +1 -0
- package/dist/web/assets/{ProjectScopePicker-DVHfXX1f.js → ProjectScopePicker-8hrgvmg-.js} +1 -1
- package/dist/web/assets/{PublicProjectsPage-CtctKml1.js → PublicProjectsPage-b5zx0dFS.js} +1 -1
- package/dist/web/assets/{ReviewPage-DUqaK-do.js → ReviewPage-BLdWYDmj.js} +1 -1
- package/dist/web/assets/{SearchableSelect-BZtyYmZN.js → SearchableSelect-vaoSDq1g.js} +1 -1
- package/dist/web/assets/{SettingsPage-CB4ymLr8.js → SettingsPage-Dxjrkq1g.js} +1 -1
- package/dist/web/assets/{SharedJefaReportPage-CbFtrDCY.js → SharedJefaReportPage-YG2xwQQy.js} +1 -1
- package/dist/web/assets/{WritingTastePage-B7lSzs2z.js → WritingTastePage-CPPduPb1.js} +1 -1
- package/dist/web/assets/{agent-profile.css_vue_type_style_index_0_src_true_lang-C22UdfU0.js → agent-profile.css_vue_type_style_index_0_src_true_lang-LTJ1ptv9.js} +1 -1
- package/dist/web/assets/{catalog-DU4Kfd-N.js → catalog-B9tlJAp9.js} +1 -1
- package/dist/web/assets/{client-CEHkJJ-5.js → client-InXscj8J.js} +1 -1
- package/dist/web/assets/{console--CZxc3PW.js → console-hUns2aD-.js} +1 -1
- package/dist/web/assets/{conversation-launcher-settings-Co1RlTFH.js → conversation-launcher-settings-DEtJ6pZg.js} +1 -1
- package/dist/web/assets/{i18n-BtOOoyJd.js → i18n-75woNt31.js} +2 -2
- package/dist/web/assets/{identity-CsowvtIm.js → identity-Wt2Xio_B.js} +1 -1
- package/dist/web/assets/index-pleRuLpw.js +2 -0
- package/dist/web/assets/{model-CGpllrds.js → model-C1GwBvd9.js} +1 -1
- package/dist/web/assets/{personal-profile-graph-BNTG4PSY.js → personal-profile-graph-BdV_3I1u.js} +1 -1
- package/dist/web/assets/{shared-report-BFUJqqQe.js → shared-report-tRQV1iJl.js} +1 -1
- package/dist/web/assets/{useApi-CROJJdhE-raNlHRDl.js → useApi-CROJJdhE-QfNm4ADP.js} +1 -1
- package/dist/web/assets/{useModalDialog-CroGk2Cs.js → useModalDialog-BopF-KHN.js} +1 -1
- package/dist/web/assets/{vue-router-JFYBLXB1.js → vue-router-COCNAJJn.js} +1 -1
- package/dist/web/index.html +10 -10
- package/docs/agent-conversations-and-collaboration.md +18 -1
- package/docs/agent-interface-architecture.md +17 -0
- package/docs/employee-agents.md +14 -1
- package/docs/project-agent-memory.md +6 -1
- package/graph-provider/fuli_graph/knowledge_search.py +8 -16
- package/graph-provider/fuli_graph/project_agent_routes.py +5 -1
- package/graph-provider/fuli_graph/store_project_agent_context.py +18 -1
- package/graph-provider/fuli_graph/store_project_agent_task_staffing.py +86 -11
- package/graph-provider/pyproject.toml +1 -1
- package/npm-shrinkwrap.json +15 -15
- package/package.json +4 -4
- package/skills/capturing-session-knowledge/SKILL.md +20 -2
- package/skills/operating-fuli/SKILL.md +8 -0
- package/src/agent-tools/employee-definitions.js +6 -5
- package/src/agent-tools/graph-definitions.js +2 -2
- package/src/agents/identity-receipt.js +29 -0
- package/src/conversations/task-context-view.js +3 -1
- package/src/employees/service.js +17 -3
- package/src/employees/task-entry.js +5 -1
- package/src/graphiti/agent-conversations.js +15 -1
- package/src/graphiti/agent-knowledge-workflows.js +1 -1
- package/src/graphiti/federated-application.js +6 -40
- package/src/graphiti/project-agent-mention.js +35 -0
- package/src/graphiti/project-agent-task-entry.js +22 -3
- package/src/graphiti/project-agent-workflows.js +13 -2
- package/src/graphiti/project-path-context.js +17 -10
- package/src/graphiti/task-entry-preferences.js +50 -0
- package/src/mcp/create-mcp-server.js +6 -1
- package/src/mcp/employee-tool-catalog.js +22 -0
- package/src/mcp/tool-result.js +3 -1
- package/dist/web/assets/KnowledgePage-uXW1Eovz.js +0 -1
- package/dist/web/assets/PersonalProjectsPage-Br1S8ETM.js +0 -1
- package/dist/web/assets/ProjectAgentsPage-CZWWV4Kw.css +0 -1
- package/dist/web/assets/index-MKmHNBtc.js +0 -2
- package/src/mcp/task-context-registry.js +0 -165
|
@@ -1 +1 @@
|
|
|
1
|
-
import{C as e,F as t,H as n,N as r,R as i,T as a,V as o,Z as s,_ as c,a as l,at as u,b as d,d as f,h as p,it as m,j as h,n as ee,nt as g,rt as _,u as te,v,w as y,x as b,y as x,z as S}from"./i18n-BtOOoyJd.js";import{t as ne}from"./console--CZxc3PW.js";import{t as re}from"./GrowthLoading-Bu_kH-I8.js";import{t as C}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{t as w}from"./vue-router-JFYBLXB1.js";import{i as ie,n as T,r as E}from"./client-CEHkJJ-5.js";import{t as D}from"./useModalDialog-CroGk2Cs.js";import{t as O}from"./SearchableSelect-BZtyYmZN.js";import{n as ae,t as k}from"./KnowledgeInspector-Ct5hl2--.js";import{i as oe,n as se,t as ce}from"./KnowledgeEditDialog-BTwXXRCD.js";import{C as le,D as A,E as j,_ as M,u as N,v as P,x as ue}from"./model-CGpllrds.js";import{t as F}from"./personal-profile-graph-BNTG4PSY.js";function de(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(!W(a,o)||!G(a,o)||K(a,o))continue;let[s,c]=pe(a,o),u=V(R(s),R(c)),d=U(u)?`complementary`:`review`,f=t.find(e=>e.status===`ai_pending`&&I(e,s,c))??null;n.push({id:J(s,c),preferenceKey:L(s),scopeKey:z(s),scopeLabel:B(s),left:s,right:c,difference:u,relation:d,recommendedAction:d===`complementary`?`merge`:null,reason:l(`preferences.shared.conflictReason`,{key:L(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 fe(e){return[e.left_item_id,e.right_item_id]}function I(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 L(e){let t=e.raw.attributes??{};return String(t.preferenceKey??t.preference_key??e.title).trim()}function R(e){return e.body.trim()}function z(e){return e.preferenceScope===`project`&&e.preferenceProjectId?`project:${e.preferenceProjectId}`:`global`}function B(e){return e.preferenceScope===`project`&&e.preferenceProjectId?l(`preferences.shared.projectScope`,{project:e.preferenceProjectId}):l(`preferences.shared.personalGlobal`)}function V(e,t){let n=Y(e),r=Y(t),i=new Set,a=[],o=[];for(let e of n){let t=r.findIndex((t,n)=>!i.has(n)&&me(e,t));if(t<0){o.push(e);continue}i.add(t),a.push(X(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 H(e,t){let n=[...Y(e)];for(let e of Y(t)){let t=n.findIndex(t=>me(t,e));if(t<0){n.push(e);continue}n[t]=X(n[t],e)}if(!n.length)return``;let r=n.some(e=>e.length>24)?`;`:`、`;return n.join(r)}function U(e){return e.shared.length>0&&(e.leftOnly.length===0||e.rightOnly.length===0)}function W(e,t){return z(e)===z(t)}function G(e,t){return Z(L(e))===Z(L(t))}function K(e,t){return Z(R(e))===Z(R(t))}function pe(e,t){let n=q(e),r=q(t);return n===r?e.id.localeCompare(t.id)<=0?[e,t]:[t,e]:n<=r?[e,t]:[t,e]}function q(e){let t=P(e);if(!t)return 0;let n=new Date(t).getTime();return Number.isNaN(n)?0:n}function J(e,t){return[e.itemKind,e.id,t.itemKind,t.id].join(`:`)}function Y(e){return e.split(/[\n\r,,、;;。.!!??]+/u).map(e=>e.trim()).filter(Boolean)}function me(e,t){let n=Z(e),r=Z(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 X(e,t){return Z(e).length>=Z(t).length?e:t}function Z(e){return String(e??``).trim().toLocaleLowerCase().replace(/[“”‘’"'`]/gu,``).replace(/\s+/gu,` `)}var he=[`aria-labelledby`],ge={class:`project-dialog-shell conflict-resolution-shell`},Q={class:`project-dialog-header`},_e=[`id`],ve=[`disabled`],$=[`aria-label`],ye=[`aria-label`],be={class:`conflict-side conflict-side-left`},xe={class:`conflict-side-heading`},Se={class:`conflict-side conflict-side-right`},Ce={class:`conflict-side-heading`},we=[`aria-label`],Te={key:0},Ee={key:1,class:`muted`},De={key:0},Oe={key:1,class:`muted`},ke={key:0},Ae={key:1,class:`muted`},je=[`disabled`],Me=[`aria-label`],Ne=[`aria-pressed`],Pe={key:0},Fe=[`aria-pressed`],Ie=[`aria-pressed`],Le=[`disabled`,`aria-pressed`],Re={key:0,class:`conflict-resolution-detail`},ze=[`aria-label`],Be=[`aria-pressed`],Ve=[`aria-pressed`],He={key:1,class:`conflict-resolution-detail`},Ue=[`aria-label`],We=[`aria-pressed`],Ge=[`aria-pressed`],Ke={value:``,disabled:``},qe=[`value`],Je={class:`conflict-impact-preview`},Ye={class:`conflict-resolution-reason`},Xe={key:0,class:`dialog-error`},Ze={class:`project-dialog-actions conflict-resolution-actions`},Qe=[`disabled`],$e=[`disabled`],et=C(a({__name:`PreferenceConflictDialog`,props:{conflict:{},personalSpaceId:{},projects:{}},emits:[`close`,`resolved`,`edit`],setup(a,{emit:o}){let m=a,h=o,ee=ne(),_=s(null),y=s(`right`),C=s(`right`),w=s(``),T=s(``),O=s(``),ae=s(``),k=s(!1),oe=i(),{dialogRef:se,onCancel:ce,onKeydown:le}=D(()=>!!m.conflict,()=>{k.value||h(`close`)}),A=s(``),j=c(()=>{let e=m.conflict;if(!e)return[];let t=C.value===`left`?e.left:e.right;return m.projects.filter(({project_id:e})=>t.preferenceScope!==`project`||e!==t.preferenceProjectId)}),M=c(()=>j.value.length>0),ue=c(()=>{let e=m.conflict;if(!e||!_.value)return l(`preferences.dialog.impact.choose`);if(_.value===`merge`){let t=y.value===`left`?e.left:e.right,n=y.value===`left`?e.right:e.left;return l(`preferences.dialog.impact.merge`,{target:t.title,historical:n.title})}if(_.value===`keep_left`||_.value===`keep_right`){let t=_.value===`keep_left`?e.left:e.right,n=_.value===`keep_left`?e.right:e.left;return l(`preferences.dialog.impact.keep`,{kept:t.title,historical:n.title})}let t=C.value===`left`?e.left:e.right,n=j.value.find(({project_id:e})=>e===w.value);return n?l(`preferences.dialog.impact.split`,{item:t.title,project:n.profile.name}):l(`preferences.dialog.impact.chooseProject`)});S(()=>m.conflict,e=>{e&&(y.value=`right`,C.value=`right`,T.value=H(R(e.right),R(e.left)),_.value=e.recommendedAction,w.value=``,A.value=``,de(e.recommendedAction))},{immediate:!0}),S([C,j],()=>{w.value&&j.value.some(({project_id:e})=>e===w.value)||(w.value=j.value[0]?.project_id??``)},{immediate:!0});function F(e){k.value||(_.value=e,(!O.value.trim()||O.value===ae.value)&&de(e))}function de(e){let t=m.conflict,n=t&&e?V(e,t):``;ae.value=n,O.value=n}async function fe(){if(k.value)return;let e=m.conflict;if(!e||!_.value)return U(l(`preferences.dialog.errors.actionRequired`));if(!O.value.trim())return U(l(`preferences.dialog.errors.reasonRequired`));if(_.value===`merge`&&!T.value.trim())return U(l(`preferences.dialog.errors.mergedValueRequired`));if(_.value===`split_scope`&&!w.value)return U(l(`preferences.dialog.errors.projectRequired`));let t=_.value,n=O.value.trim(),r=m.personalSpaceId;k.value=!0,A.value=``;try{t===`merge`?await I(e):t===`split_scope`?await z(e):await L(e,t),e.aiRecord&&await ie(`/api/preference-conflicts/${encodeURIComponent(e.aiRecord.id)}/complete`,{personalSpaceId:r,resolution:t,reason:n}),ee.notify(l(`preferences.dialog.resolved`)),h(`resolved`),h(`close`)}catch(e){A.value=e instanceof Error?e.message:l(`preferences.dialog.errors.failed`),ee.reportError(e)}finally{k.value=!1}}async function I(e){let t=O.value.trim(),n=m.personalSpaceId,r=y.value===`left`?e.left:e.right,i=y.value===`left`?e.right:e.left,a={personalSpaceId:n,personalProjectId:null,action:`update`,reason:t};r.itemKind===`entity`?(a.name=r.title,a.summary=T.value.trim()):a.fact=T.value.trim(),r.classificationExplicit&&r.originQuadrant!==`unclassified`&&(a.originQuadrant=r.originQuadrant,a.confirmationStatus=`confirmed`,a.confirmationBasis={existenceReason:l(`preferences.dialog.audit.mergedFromConflict`,{reason:e.reason}),quadrantReason:r.confirmationBasis?.quadrant_reason||r.reasoningSummary||l(`preferences.dialog.audit.keepQuadrant`),proposedBy:r.confirmationBasis?.proposed_by?B(r.confirmationBasis.proposed_by):{kind:`import`,label:l(`preferences.dialog.audit.historicalRecord`)},confirmedBy:{kind:`user`,label:l(`preferences.dialog.audit.user`)},confirmedAt:new Date().toISOString()}),await E(`/api/knowledge/${r.itemKind}/${encodeURIComponent(r.id)}`,a),await E(`/api/knowledge/${i.itemKind}/${encodeURIComponent(i.id)}`,{personalSpaceId:n,personalProjectId:null,action:`invalidate`,reason:t,replacementItemId:r.id,replacementItemKind:r.itemKind})}async function L(e,t){let n=t===`keep_left`?e.left:e.right,r=t===`keep_left`?e.right:e.left;await E(`/api/knowledge/${r.itemKind}/${encodeURIComponent(r.id)}`,{personalSpaceId:m.personalSpaceId,personalProjectId:null,action:`invalidate`,reason:O.value.trim(),replacementItemId:n.id,replacementItemKind:n.itemKind})}async function z(e){let t=C.value===`left`?e.left:e.right;await ie(`/api/knowledge/${t.itemKind}/${encodeURIComponent(t.id)}/preference-scope`,{personalSpaceId:m.personalSpaceId,scope:`project`,projectId:w.value,reason:O.value.trim()})}function B(e){return{kind:e.kind,label:e.label??null}}function V(e,t){return e===`merge`?l(`preferences.dialog.defaultReason.merge`):e===`keep_left`?l(`preferences.dialog.defaultReason.keepLeft`,{title:t.left.title}):e===`keep_right`?l(`preferences.dialog.defaultReason.keepRight`,{title:t.right.title}):l(`preferences.dialog.defaultReason.split`)}function U(e){A.value=e}return(i,o)=>a.conflict?(r(),b(`dialog`,{key:0,ref_key:`dialogRef`,ref:se,"aria-modal":`true`,"aria-labelledby":g(oe),onCancel:o[15]||=(...e)=>g(ce)&&g(ce)(...e),onKeydown:o[16]||=(...e)=>g(le)&&g(le)(...e),class:`project-dialog conflict-resolution-dialog vue-dialog`},[v(`div`,ge,[v(`header`,Q,[v(`div`,null,[v(`h3`,{id:g(oe)},u(g(l)(`preferences.dialog.title`)),9,_e),v(`p`,null,u(g(l)(`preferences.dialog.intro`,{reason:a.conflict.reason})),1)]),v(`button`,{class:`secondary-action`,type:`button`,disabled:k.value,onClick:o[0]||=e=>h(`close`)},u(g(l)(`common.actions.close`)),9,ve)]),v(`section`,{class:`conflict-pair-context`,"aria-label":g(l)(`preferences.dialog.basisAria`)},[v(`span`,null,[e(u(g(l)(`preferences.dialog.preferenceKey`))+` `,1),v(`strong`,null,u(a.conflict.preferenceKey),1)]),v(`span`,null,[e(u(g(l)(`preferences.dialog.effectiveScope`))+` `,1),v(`strong`,null,u(a.conflict.scopeLabel),1)]),v(`span`,null,[e(u(g(l)(`preferences.dialog.suggestion`))+` `,1),v(`strong`,null,u(a.conflict.recommendedAction===`merge`?g(l)(`preferences.dialog.mergeSuggestion`):g(l)(`preferences.dialog.reviewSuggestion`)),1)])],8,$),v(`section`,{class:`conflict-comparison`,"aria-label":g(l)(`preferences.dialog.comparisonAria`)},[v(`article`,be,[v(`div`,xe,[v(`span`,null,u(g(l)(`preferences.dialog.older`)),1),v(`time`,null,u(g(N)(g(P)(a.conflict.left))),1)]),v(`h4`,null,u(a.conflict.left.title),1),v(`p`,null,u(g(R)(a.conflict.left)),1),v(`small`,null,u(g(l)(`preferences.dialog.sourceCount`,{count:a.conflict.left.evidence.length}))+` · `+u(a.conflict.left.id),1),v(`button`,{class:`text-action`,type:`button`,onClick:o[1]||=e=>h(`edit`,a.conflict.left)},u(g(l)(`preferences.dialog.editA`)),1)]),v(`article`,Se,[v(`div`,Ce,[v(`span`,null,u(g(l)(`preferences.dialog.newer`)),1),v(`time`,null,u(g(N)(g(P)(a.conflict.right))),1)]),v(`h4`,null,u(a.conflict.right.title),1),v(`p`,null,u(g(R)(a.conflict.right)),1),v(`small`,null,u(g(l)(`preferences.dialog.sourceCount`,{count:a.conflict.right.evidence.length}))+` · `+u(a.conflict.right.id),1),v(`button`,{class:`text-action`,type:`button`,onClick:o[2]||=e=>h(`edit`,a.conflict.right)},u(g(l)(`preferences.dialog.editB`)),1)])],8,ye),v(`section`,{class:`conflict-difference`,"aria-label":g(l)(`preferences.dialog.differenceAria`)},[v(`div`,null,[v(`span`,null,u(g(l)(`preferences.dialog.shared`)),1),a.conflict.difference.shared.length?(r(),b(`p`,Te,[(r(!0),b(p,null,t(a.conflict.difference.shared,e=>(r(),b(`b`,{key:e},u(e),1))),128))])):(r(),b(`p`,Ee,u(g(l)(`preferences.dialog.noShared`)),1))]),v(`div`,null,[v(`span`,null,u(g(l)(`preferences.dialog.onlyA`)),1),a.conflict.difference.leftOnly.length?(r(),b(`p`,De,[(r(!0),b(p,null,t(a.conflict.difference.leftOnly,e=>(r(),b(`b`,{key:e},u(e),1))),128))])):(r(),b(`p`,Oe,u(g(l)(`preferences.dialog.noUnique`)),1))]),v(`div`,null,[v(`span`,null,u(g(l)(`preferences.dialog.onlyB`)),1),a.conflict.difference.rightOnly.length?(r(),b(`p`,ke,[(r(!0),b(p,null,t(a.conflict.difference.rightOnly,e=>(r(),b(`b`,{key:e},u(e),1))),128))])):(r(),b(`p`,Ae,u(g(l)(`preferences.dialog.noUnique`)),1))])],8,we),v(`fieldset`,{class:`conflict-inputs`,disabled:k.value},[v(`section`,{class:`conflict-resolution-options`,"aria-label":g(l)(`preferences.dialog.actionsAria`)},[v(`button`,{type:`button`,"aria-pressed":_.value===`merge`,onClick:o[3]||=e=>F(`merge`)},[v(`strong`,null,u(g(l)(`preferences.dialog.actions.merge`)),1),v(`span`,null,u(g(l)(`preferences.dialog.actions.mergeCopy`)),1),a.conflict.recommendedAction===`merge`?(r(),b(`em`,Pe,u(g(l)(`preferences.dialog.actions.recommended`)),1)):d(``,!0)],8,Ne),v(`button`,{type:`button`,"aria-pressed":_.value===`keep_left`,onClick:o[4]||=e=>F(`keep_left`)},[v(`strong`,null,u(g(l)(`preferences.dialog.actions.keepA`)),1),v(`span`,null,u(g(l)(`preferences.dialog.actions.keepACopy`)),1)],8,Fe),v(`button`,{type:`button`,"aria-pressed":_.value===`keep_right`,onClick:o[5]||=e=>F(`keep_right`)},[v(`strong`,null,u(g(l)(`preferences.dialog.actions.keepB`)),1),v(`span`,null,u(g(l)(`preferences.dialog.actions.keepBCopy`)),1)],8,Ie),v(`button`,{type:`button`,disabled:!M.value,"aria-pressed":_.value===`split_scope`,onClick:o[6]||=e=>F(`split_scope`)},[v(`strong`,null,u(g(l)(`preferences.dialog.actions.split`)),1),v(`span`,null,u(M.value?g(l)(`preferences.dialog.actions.splitCopy`):g(l)(`preferences.dialog.actions.noProjects`)),1)],8,Le)],8,Me),_.value===`merge`?(r(),b(`section`,Re,[v(`div`,{class:`conflict-inline-options`,role:`group`,"aria-label":g(l)(`preferences.dialog.mergeIdentityAria`)},[v(`span`,null,u(g(l)(`preferences.dialog.canonicalIdentity`)),1),v(`button`,{type:`button`,"aria-pressed":y.value===`left`,onClick:o[7]||=e=>y.value=`left`},u(g(l)(`preferences.dialog.identityA`)),9,Be),v(`button`,{type:`button`,"aria-pressed":y.value===`right`,onClick:o[8]||=e=>y.value=`right`},u(g(l)(`preferences.dialog.identityB`)),9,Ve)],8,ze),v(`label`,null,[e(u(g(l)(`preferences.dialog.mergedContent`))+` `,1),n(v(`textarea`,{"onUpdate:modelValue":o[9]||=e=>T.value=e,rows:`4`,maxlength:`4096`},null,512),[[f,T.value]])])])):d(``,!0),_.value===`split_scope`?(r(),b(`section`,He,[v(`div`,{class:`conflict-inline-options`,role:`group`,"aria-label":g(l)(`preferences.dialog.splitRecordAria`)},[v(`span`,null,u(g(l)(`preferences.dialog.adjustRecord`)),1),v(`button`,{type:`button`,"aria-pressed":C.value===`left`,onClick:o[10]||=e=>C.value=`left`},` A `,8,We),v(`button`,{type:`button`,"aria-pressed":C.value===`right`,onClick:o[11]||=e=>C.value=`right`},` B `,8,Ge)],8,Ue),v(`label`,null,[e(u(g(l)(`preferences.dialog.projectOnly`))+` `,1),n(v(`select`,{"onUpdate:modelValue":o[12]||=e=>w.value=e},[v(`option`,Ke,u(g(l)(`preferences.dialog.chooseProject`)),1),(r(!0),b(p,null,t(j.value,e=>(r(),b(`option`,{key:e.project_id,value:e.project_id},u(e.profile.name),9,qe))),128))],512),[[te,w.value]])])])):d(``,!0),v(`section`,Je,[v(`span`,null,u(g(l)(`preferences.dialog.impactTitle`)),1),v(`p`,null,u(ue.value),1)]),v(`label`,Ye,[e(u(g(l)(`preferences.dialog.reason`))+` `,1),n(v(`textarea`,{"onUpdate:modelValue":o[13]||=e=>O.value=e,rows:`2`,maxlength:`2000`},null,512),[[f,O.value]])])],8,je),A.value?(r(),b(`p`,Xe,u(A.value),1)):d(``,!0),v(`footer`,Ze,[v(`span`,null,u(g(l)(`preferences.dialog.pendingCopy`)),1),v(`div`,null,[v(`button`,{class:`secondary-action`,type:`button`,disabled:k.value,onClick:o[14]||=e=>h(`close`)},u(g(l)(`preferences.dialog.defer`)),9,Qe),v(`button`,{class:`primary-action`,type:`button`,disabled:k.value||!_.value,onClick:fe},[k.value?(r(),x(re,{key:0,variant:`inline`,label:g(l)(`preferences.dialog.processing`)},null,8,[`label`])):(r(),b(p,{key:1},[e(u(g(l)(`preferences.dialog.confirm`)),1)],64))],8,$e)])])])],40,he)):d(``,!0)}}),[[`__scopeId`,`data-v-7f6ac91a`]]),tt=[`aria-label`],nt={class:`writing-taste-milestone__copy`},rt={class:`writing-taste-milestone__heading`},it={class:`writing-taste-milestone__progress`,"aria-hidden":`true`},at={class:`writing-taste-milestone__metrics`},ot=C(a({__name:`WritingTasteMilestone`,props:{profile:{}},setup(t){let n=t,i=c(()=>n.profile?.ready===!0),a=c(()=>n.profile?.status===`active`?l(`writingTaste.milestone.activeTitle`):n.profile?.status===`preview_ready`?l(`writingTaste.milestone.previewTitle`):l(`writingTaste.milestone.collectingTitle`)),s=c(()=>i.value?l(`writingTaste.milestone.readyCopy`):l(`writingTaste.milestone.collectingCopy`)),f=c(()=>{let e=n.profile?.readiness;if(!e)return 0;let t=[p(e.rule_count,e.thresholds.rule_count),p(e.evidence_count,e.thresholds.evidence_count),p(e.session_count,e.thresholds.session_count),p(e.observation_day_count,e.thresholds.observation_day_count)];return Math.round(t.reduce((e,t)=>e+t,0)/t.length*100)});function p(e,t){return t<=0?1:Math.min(Math.max(e/t,0),1)}return(n,i)=>t.profile?(r(),b(`section`,{key:0,class:_([`writing-taste-milestone`,`status-${t.profile.status}`]),"aria-label":g(l)(`writingTaste.milestone.aria`)},[i[1]||=v(`div`,{class:`writing-taste-milestone__mark`,"aria-hidden":`true`},[v(`span`),v(`span`),v(`span`)],-1),v(`div`,nt,[v(`div`,rt,[v(`h2`,null,u(a.value),1),v(`span`,null,u(g(l)(`writingTaste.status.${t.profile.status}`)),1)]),v(`p`,null,u(s.value),1),v(`div`,it,[v(`i`,{style:m({transform:`scaleX(${f.value/100})`})},null,4)]),v(`div`,at,[v(`small`,null,u(g(l)(`writingTaste.milestone.rules`,{current:t.profile.readiness.rule_count,target:t.profile.readiness.thresholds.rule_count})),1),v(`small`,null,u(g(l)(`writingTaste.milestone.sessions`,{current:t.profile.readiness.session_count,target:t.profile.readiness.thresholds.session_count})),1)])]),y(g(w),{class:`writing-taste-milestone__action`,to:`/preferences/writing`},{default:o(()=>[e(u(g(l)(`writingTaste.milestone.open`))+` `,1),i[0]||=v(`span`,{"aria-hidden":`true`},`→`,-1)]),_:1})],10,tt)):d(``,!0)}}),[[`__scopeId`,`data-v-fdae5c34`]]),st={class:`view vue-personal-profile`},ct=[`aria-label`],lt=[`aria-label`,`aria-pressed`],ut=[`aria-label`,`aria-pressed`],dt=[`aria-label`,`aria-pressed`],ft={key:0},pt={key:1},mt=[`aria-label`,`aria-pressed`],ht=[`aria-label`],gt={class:`personal-profile-toolbar`},_t={class:`personal-profile-filter-groups`},vt=[`aria-label`],yt=[`aria-pressed`,`onClick`],bt={class:`personal-profile-toolbar-actions`},xt={key:0,class:`muted`},St={key:1,class:`muted`},Ct={key:2,class:`muted`},wt=[`disabled`],Tt=[`aria-label`],Et={class:`preference-conflict-list`},Dt={class:`preference-conflict-card-heading`},Ot={class:`preference-conflict-pair`},kt={key:0},At={class:`preference-conflict-actions`},jt=[`disabled`,`onClick`],Mt=[`onClick`],Nt={key:1,class:`empty-state`},Pt={class:`personal-profile-table-head`,"aria-hidden":`true`},Ft=[`onClick`],It={class:`personal-profile-copy`},Lt={class:`personal-profile-origin`},Rt={class:`empty-state`},zt=C(a({__name:`PersonalProfilePage`,setup(n){let i=ne(),a=s(null),f=s(null),m=s(!1),te=oe(c(()=>m.value&&!a.value)),C=s(`all`),w=s(`all`),E=s(`all`),D=s(!1),I=s(null),L=s(null),z=s(null),B=s(null),V=s([]),H=s(``),U=0,W=null,G=c(()=>ue(a.value)),K=c(()=>de(G.value,V.value)),pe=c(()=>new Set(K.value.flatMap(({left:e,right:t})=>[e.id,t.id]))),q=c(()=>new Set(V.value.filter(({status:e,resolved_by:t})=>e===`resolved`&&t===`agent`).flatMap(fe))),J=c(()=>G.value.filter(e=>Ce(e)&&(E.value===`all`||M(e)===E.value))),Y=c(()=>JSON.stringify([C.value,w.value,E.value,D.value])),me=c(()=>I.value?J.value.findIndex(({id:e,itemKind:t})=>e===I.value?.id&&t===I.value?.itemKind):-1),X=c(()=>K.value.filter(({left:e,right:t})=>Ce(e)||Ce(t))),Z=c(()=>[[`all`,l(`preferences.profile.filters.all`)],[`taste`,l(`preferences.profile.filters.taste`)],[`personality`,l(`preferences.profile.filters.personality`)],[`judgment_preference`,l(`preferences.profile.filters.judgment`)]]),he=c(()=>{let e=new Map((i.state?.personalProjects??[]).map(e=>[e.project_id,e.profile.name])),t=[...new Set(G.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:l(`preferences.profile.scopes.all`),meta:l(`common.counts.items`,{count:G.value.length})},{value:`global`,label:l(`preferences.profile.scopes.global`),meta:l(`common.counts.items`,{count:G.value.filter(({preferenceScope:e})=>e!==`project`).length})},...t.map(t=>({value:`project:${t}`,label:e.get(t)??t,meta:l(`preferences.profile.scopes.projectMeta`,{count:G.value.filter(({preferenceScope:e,preferenceProjectId:n})=>e===`project`&&n===t).length}),search:t}))]}),ge=c(()=>G.value.filter(e=>M(e)===`confirmed`).length),Q=c(()=>G.value.filter(e=>M(e)===`pending`).length),_e=c(()=>G.value.filter(e=>M(e)===`agent_confirmed`).length),ve=c(()=>D.value?l(`preferences.profile.summaryGuidance.conflicts`):E.value===`pending`?l(`preferences.profile.summaryGuidance.pending`):E.value===`confirmed`?l(`preferences.profile.summaryGuidance.confirmed`):E.value===`agent_confirmed`?l(`preferences.profile.summaryGuidance.agentConfirmed`):l(`preferences.profile.summaryGuidance.default`));S(()=>i.activePersonalSpace?.id,(e,t)=>{e!==t&&(a.value=null,f.value=null,V.value=[],I.value=null,L.value=null,z.value=null,B.value=null,w.value=`all`),e?$(e):(U+=1,W?.abort(),W=null,m.value=!1)},{immediate:!0}),h(()=>{U+=1,W?.abort(),W=null}),S([C,w,E,D],()=>{I.value&&!J.value.some(({id:e})=>e===I.value?.id)&&(I.value=null)}),S(he,e=>{e.some(({value:e})=>e===w.value)||(w.value=`all`)});async function $(e=i.activePersonalSpace?.id){if(!e)return;W?.abort();let t=++U,n=new AbortController;W=n,m.value=!0;try{let r=new URLSearchParams({personalSpaceId:e,limit:`500`}),i=new URLSearchParams({personalSpaceId:e,limit:`500`}),[o,s,c]=await Promise.all([F(e,n.signal),T(`/api/preference-conflicts?${r}`,{signal:n.signal}),T(`/api/writing-taste-profile?${i}`,{signal:n.signal}).catch(()=>null)]);if(t!==U||n.signal.aborted)return;a.value=o,V.value=Array.isArray(s)?s:[],f.value=ye(c)?c:null,I.value&&=G.value.find(({id:e})=>e===I.value?.id)??null}catch(e){if(t!==U||n.signal.aborted)return;a.value=null,f.value=null,i.reportError(e)}finally{if(t!==U||n.signal.aborted)return;m.value=!1,W===n&&(W=null)}}function ye(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 be(e){let t=A(e),n=K.value.find(({left:t,right:n})=>t.id===e.id||n.id===e.id);return n?.aiRecord?`${t} · ${l(`preferences.profile.statusSuffix.aiPending`)}`:n?`${t} · ${l(`preferences.profile.statusSuffix.conflict`)}`:q.value.has(e.id)?`${t} · ${l(`preferences.profile.statusSuffix.aiResolved`)}`:t}function xe(e){return`${e.itemKind}:${e.id}`}function Se(e){if(e.preferenceScope!==`project`||!e.preferenceProjectId)return l(`preferences.shared.personalGlobal`);let t=i.state?.personalProjects?.find(({project_id:t})=>t===e.preferenceProjectId);return l(`preferences.shared.projectOnly`,{project:t?.profile.name??e.preferenceProjectId})}function Ce(e){if(C.value!==`all`&&e.profileAspect!==C.value||w.value===`global`&&e.preferenceScope===`project`)return!1;if(w.value.startsWith(`project:`)){let t=w.value.slice(8);return e.preferenceScope===`project`&&e.preferenceProjectId===t}return!0}function we(e){if(e.scopeKey===`global`)return l(`preferences.shared.personalGlobal`);let t=e.scopeKey.slice(8),n=i.state?.personalProjects?.find(({project_id:e})=>e===t);return l(`preferences.shared.projectOnly`,{project:n?.profile.name??t})}function Te(e){C.value=e.profileAspect??`all`,w.value=e.preferenceScope===`project`&&e.preferenceProjectId?`project:${e.preferenceProjectId}`:`global`,D.value=!1,I.value=e}function Ee(e){B.value=null,z.value=e}function De(e){let t=!D.value&&E.value===e?`all`:e;D.value=!1,E.value=t,t!==`all`&&(I.value=J.value.at(0)??null)}function Oe(e=!1){let t=e||!D.value;D.value=t,t&&(E.value=`all`,I.value=null)}async function ke(e){let t=i.activePersonalSpace?.id;if(!(!t||e.aiRecord)){H.value=e.id;try{let n=await ie(`/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:l(`preferences.profile.deferReason`)});V.value=[n,...V.value.filter(({id:e})=>e!==n.id)],i.notify(l(`preferences.profile.deferNotice`))}catch(e){i.reportError(e)}finally{H.value=``}}}return(n,s)=>(r(),b(`section`,st,[v(`div`,{class:`personal-profile-summary`,"aria-label":g(l)(`preferences.profile.summaryAria`)},[v(`button`,{type:`button`,class:`profile-summary-action state-confirmed`,"aria-label":g(l)(`preferences.profile.summary.confirmedAria`,{count:ge.value}),"aria-pressed":!D.value&&E.value===`confirmed`,onClick:s[0]||=e=>De(`confirmed`)},[v(`strong`,null,u(ge.value),1),e(u(g(l)(`preferences.profile.summary.confirmed`))+` `,1),v(`small`,null,u(g(l)(`preferences.profile.summary.viewRecords`)),1)],8,lt),v(`button`,{type:`button`,class:`profile-summary-action state-agent-confirmed`,"aria-label":g(l)(`preferences.profile.summary.agentConfirmedAria`,{count:_e.value}),"aria-pressed":!D.value&&E.value===`agent_confirmed`,onClick:s[1]||=e=>De(`agent_confirmed`)},[v(`strong`,null,u(_e.value),1),e(u(g(l)(`preferences.profile.summary.agentConfirmed`))+` `,1),v(`small`,null,u(g(l)(`preferences.profile.summary.belowHuman`)),1)],8,ut),v(`button`,{type:`button`,class:`profile-summary-action state-pending`,"aria-label":g(l)(`preferences.profile.summary.pendingAria`,{count:Q.value}),"aria-pressed":!D.value&&E.value===`pending`,onClick:s[2]||=e=>De(`pending`)},[v(`strong`,null,u(Q.value),1),e(u(g(l)(`preferences.profile.summary.pending`))+` `,1),Q.value?(r(),b(`small`,ft,u(g(l)(`preferences.profile.summary.reviewAndConfirm`)),1)):(r(),b(`small`,pt,u(g(l)(`preferences.profile.summary.viewRecords`)),1))],8,dt),v(`button`,{type:`button`,class:`profile-summary-action state-conflict`,"aria-label":K.value.length?g(l)(`preferences.profile.summary.conflictAria`,{count:K.value.length}):g(l)(`preferences.profile.summary.noConflictsAria`),"aria-pressed":D.value,onClick:s[3]||=e=>Oe()},[v(`strong`,null,u(K.value.length),1),e(u(g(l)(`preferences.profile.summary.conflicts`))+` `,1),v(`small`,null,u(K.value.length?g(l)(`preferences.profile.summary.reviewAndHandle`):g(l)(`preferences.profile.summary.viewRecords`)),1)],8,mt),v(`p`,null,u(ve.value),1)],8,ct),K.value.length&&!D.value&&E.value===`all`?(r(),b(`section`,{key:0,class:`preference-conflict-alert`,"aria-label":g(l)(`preferences.profile.alert.aria`)},[s[15]||=v(`div`,{class:`preference-conflict-alert-icon`,"aria-hidden":`true`},`!`,-1),v(`div`,null,[v(`span`,null,u(g(l)(`preferences.profile.alert.kicker`)),1),v(`h2`,null,u(g(l)(`preferences.profile.alert.title`,{count:K.value.length})),1),v(`p`,null,u(g(l)(`preferences.profile.alert.copy`)),1)]),v(`button`,{class:`primary-action`,type:`button`,onClick:s[4]||=e=>Oe(!0)},u(g(l)(`preferences.profile.alert.action`)),1)],8,ht)):d(``,!0),y(ot,{profile:f.value},null,8,[`profile`]),v(`div`,gt,[v(`div`,_t,[v(`div`,{class:`personal-profile-filters`,role:`group`,"aria-label":g(l)(`preferences.profile.filters.aspectAria`)},[(r(!0),b(p,null,t(Z.value,([e,t])=>(r(),b(`button`,{key:e,type:`button`,"aria-pressed":C.value===e,onClick:t=>C.value=e},u(t),9,yt))),128))],8,vt),y(O,{modelValue:w.value,"onUpdate:modelValue":s[5]||=e=>w.value=e,class:`personal-profile-scope-filter`,"control-id":`personal-profile-scope`,label:g(l)(`preferences.profile.filters.scopeLabel`),options:he.value,"search-placeholder":g(l)(`preferences.profile.filters.scopeSearch`)},null,8,[`modelValue`,`label`,`options`,`search-placeholder`])]),v(`div`,bt,[D.value?(r(),b(`span`,xt,u(g(l)(`preferences.profile.filters.conflictsCount`,{visible:X.value.length,total:K.value.length})),1)):E.value===`all`?(r(),b(`span`,Ct,u(J.value.length===G.value.length?g(l)(`preferences.profile.filters.personalUnderstanding`,{count:G.value.length}):g(l)(`preferences.profile.filters.visibleCount`,{visible:J.value.length,total:G.value.length})),1)):(r(),b(`span`,St,u(g(l)(`preferences.profile.filters.reviewCount`,{count:J.value.length,status:E.value===`pending`?g(l)(`preferences.profile.summary.pending`):E.value===`agent_confirmed`?g(l)(`preferences.profile.summary.agentConfirmed`):g(l)(`preferences.profile.summary.confirmed`)})),1)),v(`button`,{class:`toolbar-action`,type:`button`,disabled:m.value,onClick:s[6]||=e=>$()},u(g(l)(`common.actions.refresh`)),9,wt)])]),m.value&&!g(te)&&!D.value?(r(),x(re,{key:1,variant:`inline`,label:g(l)(`preferences.profile.directory.loading`)},null,8,[`label`])):d(``,!0),g(te)?(r(),x(re,{key:2,label:g(l)(`preferences.profile.directory.loading`)},null,8,[`label`])):D.value?(r(),b(`section`,{key:3,class:`preference-conflict-workbench`,"aria-label":g(l)(`preferences.profile.workbench.aria`)},[v(`header`,null,[v(`div`,null,[s[16]||=v(`p`,{class:`eyebrow`},`CONFLICT WORKBENCH`,-1),v(`h2`,null,u(g(l)(`preferences.profile.workbench.title`)),1)]),v(`p`,null,u(g(l)(`preferences.profile.workbench.copy`)),1)]),v(`div`,Et,[(r(!0),b(p,null,t(X.value,(e,t)=>(r(),b(`article`,{key:e.id,class:`preference-conflict-card`},[v(`div`,Dt,[v(`div`,null,[v(`span`,null,u(g(l)(`preferences.profile.workbench.group`,{index:t+1})),1),v(`h3`,null,u(e.preferenceKey),1)]),v(`div`,null,[v(`span`,null,u(we(e)),1),v(`strong`,null,u(e.aiRecord?g(l)(`preferences.profile.workbench.aiPending`):e.recommendedAction===`merge`?g(l)(`preferences.profile.workbench.mergeSuggested`):g(l)(`preferences.profile.workbench.humanReview`)),1)])]),v(`div`,Ot,[v(`section`,null,[v(`span`,null,u(g(l)(`preferences.profile.workbench.older`)),1),v(`strong`,null,u(e.left.title),1),v(`p`,null,u(g(R)(e.left)),1),v(`small`,null,u(g(N)(g(P)(e.left))),1)]),s[17]||=v(`i`,{"aria-hidden":`true`},`↔`,-1),v(`section`,null,[v(`span`,null,u(g(l)(`preferences.profile.workbench.newer`)),1),v(`strong`,null,u(e.right.title),1),v(`p`,null,u(g(R)(e.right)),1),v(`small`,null,u(g(N)(g(P)(e.right))),1)])]),v(`footer`,null,[v(`div`,null,[v(`span`,null,u(g(l)(`preferences.profile.workbench.reason`)),1),v(`p`,null,u(e.reason),1),e.difference.rightOnly.length?(r(),b(`small`,kt,u(g(l)(`preferences.profile.workbench.additions`,{values:e.difference.rightOnly.join(`、`)})),1)):d(``,!0)]),v(`div`,At,[v(`button`,{class:`secondary-action`,type:`button`,disabled:!!e.aiRecord||H.value===e.id,onClick:t=>ke(e)},u(e.aiRecord?g(l)(`preferences.profile.workbench.deferred`):H.value===e.id?g(l)(`preferences.profile.workbench.deferring`):g(l)(`preferences.profile.workbench.defer`)),9,jt),v(`button`,{class:`primary-action`,type:`button`,onClick:t=>B.value=e},u(g(l)(`preferences.profile.workbench.handleNow`)),9,Mt)])])]))),128))]),m.value?(r(),x(re,{key:0,variant:`compact`,label:g(l)(`preferences.profile.workbench.loading`)},null,8,[`label`])):X.value.length?d(``,!0):(r(),b(`div`,Nt,u(K.value.length?g(l)(`preferences.profile.workbench.noFiltered`):g(l)(`preferences.profile.workbench.empty`)),1))],8,Tt)):(r(),b(`div`,{key:4,class:_([`personal-profile-layout`,{"has-selection":I.value}])},[y(ae,{class:`personal-profile-directory`,items:J.value,"row-height":76,"active-index":me.value,"reset-key":Y.value,"item-key":xe,label:g(l)(`preferences.profile.directory.aria`)},{header:o(()=>[v(`div`,Pt,[v(`span`,null,u(g(l)(`preferences.profile.directory.aspect`)),1),v(`span`,null,u(g(l)(`preferences.profile.directory.content`)),1),v(`span`,null,u(g(l)(`preferences.profile.directory.statusScopeSource`)),1),v(`span`,null,u(g(l)(`preferences.profile.directory.updated`)),1)])]),default:o(({item:e})=>[v(`button`,{class:_([`personal-profile-row`,{selected:I.value?.id===e.id,"pending-review":g(M)(e)===`pending`,"ai-resolved-conflict":q.value.has(e.id)}]),type:`button`,onClick:t=>I.value=e},[v(`span`,{class:_([`profile-aspect-mark`,e.profileAspect])},u(g(le)(e.profileAspect)),3),v(`span`,It,[v(`strong`,null,u(e.title),1),v(`small`,null,u(e.body),1)]),v(`span`,Lt,[v(`strong`,{class:_({"has-conflict":pe.value.has(e.id)})},u(be(e)),3),v(`small`,null,u(g(j)(e.originQuadrant))+` · `+u(Se(e))+` · `+u(g(l)(`preferences.profile.directory.sourceCount`,{count:e.evidence.length})),1)]),v(`time`,null,u(g(N)(g(P)(e))),1)],10,Ft)]),empty:o(()=>[v(`div`,Rt,u(G.value.length?g(l)(`preferences.profile.directory.noFiltered`):g(l)(`preferences.profile.directory.empty`)),1)]),_:1},8,[`items`,`active-index`,`reset-key`,`label`]),y(k,{class:`personal-profile-inspector`,item:I.value,graph:a.value,editable:``,onConfirm:s[7]||=e=>L.value=e,onEdit:s[8]||=e=>z.value=e,onOpenReplacement:Te},null,8,[`item`,`graph`])],2)),y(ce,{item:z.value,"personal-space-id":g(i).activePersonalSpace?.id??``,"personal-project-id":null,projects:g(i).state?.personalProjects??[],"replacement-items":G.value,onClose:s[9]||=e=>z.value=null,onSaved:s[10]||=e=>$()},null,8,[`item`,`personal-space-id`,`projects`,`replacement-items`]),y(se,{item:L.value,"personal-space-id":g(i).activePersonalSpace?.id??``,"personal-project-id":null,onClose:s[11]||=e=>L.value=null,onSaved:s[12]||=e=>$()},null,8,[`item`,`personal-space-id`]),y(et,{conflict:B.value,"personal-space-id":g(i).activePersonalSpace?.id??``,projects:g(i).state?.personalProjects??[],onClose:s[13]||=e=>B.value=null,onResolved:s[14]||=e=>$(),onEdit:Ee},null,8,[`conflict`,`personal-space-id`,`projects`])]))}}),[[`__scopeId`,`data-v-7ff17558`]]);export{zt as default};
|
|
1
|
+
import{C as e,F as t,H as n,N as r,R as i,T as a,V as o,Z as s,_ as c,a as l,at as u,b as d,d as f,h as p,it as m,j as h,n as ee,nt as g,rt as _,u as te,v,w as y,x as b,y as x,z as S}from"./i18n-75woNt31.js";import{t as ne}from"./console-hUns2aD-.js";import{t as re}from"./GrowthLoading-DFOy-mEl.js";import{t as C}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{t as w}from"./vue-router-COCNAJJn.js";import{i as ie,n as T,r as E}from"./client-InXscj8J.js";import{t as D}from"./useModalDialog-BopF-KHN.js";import{t as O}from"./SearchableSelect-vaoSDq1g.js";import{n as ae,t as k}from"./KnowledgeInspector-C79hbuOo.js";import{i as oe,n as se,t as ce}from"./KnowledgeEditDialog-DBsjlkDr.js";import{C as le,D as A,E as j,_ as M,u as N,v as P,x as ue}from"./model-C1GwBvd9.js";import{t as F}from"./personal-profile-graph-BdV_3I1u.js";function de(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(!W(a,o)||!G(a,o)||K(a,o))continue;let[s,c]=pe(a,o),u=V(R(s),R(c)),d=U(u)?`complementary`:`review`,f=t.find(e=>e.status===`ai_pending`&&I(e,s,c))??null;n.push({id:J(s,c),preferenceKey:L(s),scopeKey:z(s),scopeLabel:B(s),left:s,right:c,difference:u,relation:d,recommendedAction:d===`complementary`?`merge`:null,reason:l(`preferences.shared.conflictReason`,{key:L(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 fe(e){return[e.left_item_id,e.right_item_id]}function I(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 L(e){let t=e.raw.attributes??{};return String(t.preferenceKey??t.preference_key??e.title).trim()}function R(e){return e.body.trim()}function z(e){return e.preferenceScope===`project`&&e.preferenceProjectId?`project:${e.preferenceProjectId}`:`global`}function B(e){return e.preferenceScope===`project`&&e.preferenceProjectId?l(`preferences.shared.projectScope`,{project:e.preferenceProjectId}):l(`preferences.shared.personalGlobal`)}function V(e,t){let n=Y(e),r=Y(t),i=new Set,a=[],o=[];for(let e of n){let t=r.findIndex((t,n)=>!i.has(n)&&me(e,t));if(t<0){o.push(e);continue}i.add(t),a.push(X(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 H(e,t){let n=[...Y(e)];for(let e of Y(t)){let t=n.findIndex(t=>me(t,e));if(t<0){n.push(e);continue}n[t]=X(n[t],e)}if(!n.length)return``;let r=n.some(e=>e.length>24)?`;`:`、`;return n.join(r)}function U(e){return e.shared.length>0&&(e.leftOnly.length===0||e.rightOnly.length===0)}function W(e,t){return z(e)===z(t)}function G(e,t){return Z(L(e))===Z(L(t))}function K(e,t){return Z(R(e))===Z(R(t))}function pe(e,t){let n=q(e),r=q(t);return n===r?e.id.localeCompare(t.id)<=0?[e,t]:[t,e]:n<=r?[e,t]:[t,e]}function q(e){let t=P(e);if(!t)return 0;let n=new Date(t).getTime();return Number.isNaN(n)?0:n}function J(e,t){return[e.itemKind,e.id,t.itemKind,t.id].join(`:`)}function Y(e){return e.split(/[\n\r,,、;;。.!!??]+/u).map(e=>e.trim()).filter(Boolean)}function me(e,t){let n=Z(e),r=Z(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 X(e,t){return Z(e).length>=Z(t).length?e:t}function Z(e){return String(e??``).trim().toLocaleLowerCase().replace(/[“”‘’"'`]/gu,``).replace(/\s+/gu,` `)}var he=[`aria-labelledby`],ge={class:`project-dialog-shell conflict-resolution-shell`},Q={class:`project-dialog-header`},_e=[`id`],ve=[`disabled`],$=[`aria-label`],ye=[`aria-label`],be={class:`conflict-side conflict-side-left`},xe={class:`conflict-side-heading`},Se={class:`conflict-side conflict-side-right`},Ce={class:`conflict-side-heading`},we=[`aria-label`],Te={key:0},Ee={key:1,class:`muted`},De={key:0},Oe={key:1,class:`muted`},ke={key:0},Ae={key:1,class:`muted`},je=[`disabled`],Me=[`aria-label`],Ne=[`aria-pressed`],Pe={key:0},Fe=[`aria-pressed`],Ie=[`aria-pressed`],Le=[`disabled`,`aria-pressed`],Re={key:0,class:`conflict-resolution-detail`},ze=[`aria-label`],Be=[`aria-pressed`],Ve=[`aria-pressed`],He={key:1,class:`conflict-resolution-detail`},Ue=[`aria-label`],We=[`aria-pressed`],Ge=[`aria-pressed`],Ke={value:``,disabled:``},qe=[`value`],Je={class:`conflict-impact-preview`},Ye={class:`conflict-resolution-reason`},Xe={key:0,class:`dialog-error`},Ze={class:`project-dialog-actions conflict-resolution-actions`},Qe=[`disabled`],$e=[`disabled`],et=C(a({__name:`PreferenceConflictDialog`,props:{conflict:{},personalSpaceId:{},projects:{}},emits:[`close`,`resolved`,`edit`],setup(a,{emit:o}){let m=a,h=o,ee=ne(),_=s(null),y=s(`right`),C=s(`right`),w=s(``),T=s(``),O=s(``),ae=s(``),k=s(!1),oe=i(),{dialogRef:se,onCancel:ce,onKeydown:le}=D(()=>!!m.conflict,()=>{k.value||h(`close`)}),A=s(``),j=c(()=>{let e=m.conflict;if(!e)return[];let t=C.value===`left`?e.left:e.right;return m.projects.filter(({project_id:e})=>t.preferenceScope!==`project`||e!==t.preferenceProjectId)}),M=c(()=>j.value.length>0),ue=c(()=>{let e=m.conflict;if(!e||!_.value)return l(`preferences.dialog.impact.choose`);if(_.value===`merge`){let t=y.value===`left`?e.left:e.right,n=y.value===`left`?e.right:e.left;return l(`preferences.dialog.impact.merge`,{target:t.title,historical:n.title})}if(_.value===`keep_left`||_.value===`keep_right`){let t=_.value===`keep_left`?e.left:e.right,n=_.value===`keep_left`?e.right:e.left;return l(`preferences.dialog.impact.keep`,{kept:t.title,historical:n.title})}let t=C.value===`left`?e.left:e.right,n=j.value.find(({project_id:e})=>e===w.value);return n?l(`preferences.dialog.impact.split`,{item:t.title,project:n.profile.name}):l(`preferences.dialog.impact.chooseProject`)});S(()=>m.conflict,e=>{e&&(y.value=`right`,C.value=`right`,T.value=H(R(e.right),R(e.left)),_.value=e.recommendedAction,w.value=``,A.value=``,de(e.recommendedAction))},{immediate:!0}),S([C,j],()=>{w.value&&j.value.some(({project_id:e})=>e===w.value)||(w.value=j.value[0]?.project_id??``)},{immediate:!0});function F(e){k.value||(_.value=e,(!O.value.trim()||O.value===ae.value)&&de(e))}function de(e){let t=m.conflict,n=t&&e?V(e,t):``;ae.value=n,O.value=n}async function fe(){if(k.value)return;let e=m.conflict;if(!e||!_.value)return U(l(`preferences.dialog.errors.actionRequired`));if(!O.value.trim())return U(l(`preferences.dialog.errors.reasonRequired`));if(_.value===`merge`&&!T.value.trim())return U(l(`preferences.dialog.errors.mergedValueRequired`));if(_.value===`split_scope`&&!w.value)return U(l(`preferences.dialog.errors.projectRequired`));let t=_.value,n=O.value.trim(),r=m.personalSpaceId;k.value=!0,A.value=``;try{t===`merge`?await I(e):t===`split_scope`?await z(e):await L(e,t),e.aiRecord&&await ie(`/api/preference-conflicts/${encodeURIComponent(e.aiRecord.id)}/complete`,{personalSpaceId:r,resolution:t,reason:n}),ee.notify(l(`preferences.dialog.resolved`)),h(`resolved`),h(`close`)}catch(e){A.value=e instanceof Error?e.message:l(`preferences.dialog.errors.failed`),ee.reportError(e)}finally{k.value=!1}}async function I(e){let t=O.value.trim(),n=m.personalSpaceId,r=y.value===`left`?e.left:e.right,i=y.value===`left`?e.right:e.left,a={personalSpaceId:n,personalProjectId:null,action:`update`,reason:t};r.itemKind===`entity`?(a.name=r.title,a.summary=T.value.trim()):a.fact=T.value.trim(),r.classificationExplicit&&r.originQuadrant!==`unclassified`&&(a.originQuadrant=r.originQuadrant,a.confirmationStatus=`confirmed`,a.confirmationBasis={existenceReason:l(`preferences.dialog.audit.mergedFromConflict`,{reason:e.reason}),quadrantReason:r.confirmationBasis?.quadrant_reason||r.reasoningSummary||l(`preferences.dialog.audit.keepQuadrant`),proposedBy:r.confirmationBasis?.proposed_by?B(r.confirmationBasis.proposed_by):{kind:`import`,label:l(`preferences.dialog.audit.historicalRecord`)},confirmedBy:{kind:`user`,label:l(`preferences.dialog.audit.user`)},confirmedAt:new Date().toISOString()}),await E(`/api/knowledge/${r.itemKind}/${encodeURIComponent(r.id)}`,a),await E(`/api/knowledge/${i.itemKind}/${encodeURIComponent(i.id)}`,{personalSpaceId:n,personalProjectId:null,action:`invalidate`,reason:t,replacementItemId:r.id,replacementItemKind:r.itemKind})}async function L(e,t){let n=t===`keep_left`?e.left:e.right,r=t===`keep_left`?e.right:e.left;await E(`/api/knowledge/${r.itemKind}/${encodeURIComponent(r.id)}`,{personalSpaceId:m.personalSpaceId,personalProjectId:null,action:`invalidate`,reason:O.value.trim(),replacementItemId:n.id,replacementItemKind:n.itemKind})}async function z(e){let t=C.value===`left`?e.left:e.right;await ie(`/api/knowledge/${t.itemKind}/${encodeURIComponent(t.id)}/preference-scope`,{personalSpaceId:m.personalSpaceId,scope:`project`,projectId:w.value,reason:O.value.trim()})}function B(e){return{kind:e.kind,label:e.label??null}}function V(e,t){return e===`merge`?l(`preferences.dialog.defaultReason.merge`):e===`keep_left`?l(`preferences.dialog.defaultReason.keepLeft`,{title:t.left.title}):e===`keep_right`?l(`preferences.dialog.defaultReason.keepRight`,{title:t.right.title}):l(`preferences.dialog.defaultReason.split`)}function U(e){A.value=e}return(i,o)=>a.conflict?(r(),b(`dialog`,{key:0,ref_key:`dialogRef`,ref:se,"aria-modal":`true`,"aria-labelledby":g(oe),onCancel:o[15]||=(...e)=>g(ce)&&g(ce)(...e),onKeydown:o[16]||=(...e)=>g(le)&&g(le)(...e),class:`project-dialog conflict-resolution-dialog vue-dialog`},[v(`div`,ge,[v(`header`,Q,[v(`div`,null,[v(`h3`,{id:g(oe)},u(g(l)(`preferences.dialog.title`)),9,_e),v(`p`,null,u(g(l)(`preferences.dialog.intro`,{reason:a.conflict.reason})),1)]),v(`button`,{class:`secondary-action`,type:`button`,disabled:k.value,onClick:o[0]||=e=>h(`close`)},u(g(l)(`common.actions.close`)),9,ve)]),v(`section`,{class:`conflict-pair-context`,"aria-label":g(l)(`preferences.dialog.basisAria`)},[v(`span`,null,[e(u(g(l)(`preferences.dialog.preferenceKey`))+` `,1),v(`strong`,null,u(a.conflict.preferenceKey),1)]),v(`span`,null,[e(u(g(l)(`preferences.dialog.effectiveScope`))+` `,1),v(`strong`,null,u(a.conflict.scopeLabel),1)]),v(`span`,null,[e(u(g(l)(`preferences.dialog.suggestion`))+` `,1),v(`strong`,null,u(a.conflict.recommendedAction===`merge`?g(l)(`preferences.dialog.mergeSuggestion`):g(l)(`preferences.dialog.reviewSuggestion`)),1)])],8,$),v(`section`,{class:`conflict-comparison`,"aria-label":g(l)(`preferences.dialog.comparisonAria`)},[v(`article`,be,[v(`div`,xe,[v(`span`,null,u(g(l)(`preferences.dialog.older`)),1),v(`time`,null,u(g(N)(g(P)(a.conflict.left))),1)]),v(`h4`,null,u(a.conflict.left.title),1),v(`p`,null,u(g(R)(a.conflict.left)),1),v(`small`,null,u(g(l)(`preferences.dialog.sourceCount`,{count:a.conflict.left.evidence.length}))+` · `+u(a.conflict.left.id),1),v(`button`,{class:`text-action`,type:`button`,onClick:o[1]||=e=>h(`edit`,a.conflict.left)},u(g(l)(`preferences.dialog.editA`)),1)]),v(`article`,Se,[v(`div`,Ce,[v(`span`,null,u(g(l)(`preferences.dialog.newer`)),1),v(`time`,null,u(g(N)(g(P)(a.conflict.right))),1)]),v(`h4`,null,u(a.conflict.right.title),1),v(`p`,null,u(g(R)(a.conflict.right)),1),v(`small`,null,u(g(l)(`preferences.dialog.sourceCount`,{count:a.conflict.right.evidence.length}))+` · `+u(a.conflict.right.id),1),v(`button`,{class:`text-action`,type:`button`,onClick:o[2]||=e=>h(`edit`,a.conflict.right)},u(g(l)(`preferences.dialog.editB`)),1)])],8,ye),v(`section`,{class:`conflict-difference`,"aria-label":g(l)(`preferences.dialog.differenceAria`)},[v(`div`,null,[v(`span`,null,u(g(l)(`preferences.dialog.shared`)),1),a.conflict.difference.shared.length?(r(),b(`p`,Te,[(r(!0),b(p,null,t(a.conflict.difference.shared,e=>(r(),b(`b`,{key:e},u(e),1))),128))])):(r(),b(`p`,Ee,u(g(l)(`preferences.dialog.noShared`)),1))]),v(`div`,null,[v(`span`,null,u(g(l)(`preferences.dialog.onlyA`)),1),a.conflict.difference.leftOnly.length?(r(),b(`p`,De,[(r(!0),b(p,null,t(a.conflict.difference.leftOnly,e=>(r(),b(`b`,{key:e},u(e),1))),128))])):(r(),b(`p`,Oe,u(g(l)(`preferences.dialog.noUnique`)),1))]),v(`div`,null,[v(`span`,null,u(g(l)(`preferences.dialog.onlyB`)),1),a.conflict.difference.rightOnly.length?(r(),b(`p`,ke,[(r(!0),b(p,null,t(a.conflict.difference.rightOnly,e=>(r(),b(`b`,{key:e},u(e),1))),128))])):(r(),b(`p`,Ae,u(g(l)(`preferences.dialog.noUnique`)),1))])],8,we),v(`fieldset`,{class:`conflict-inputs`,disabled:k.value},[v(`section`,{class:`conflict-resolution-options`,"aria-label":g(l)(`preferences.dialog.actionsAria`)},[v(`button`,{type:`button`,"aria-pressed":_.value===`merge`,onClick:o[3]||=e=>F(`merge`)},[v(`strong`,null,u(g(l)(`preferences.dialog.actions.merge`)),1),v(`span`,null,u(g(l)(`preferences.dialog.actions.mergeCopy`)),1),a.conflict.recommendedAction===`merge`?(r(),b(`em`,Pe,u(g(l)(`preferences.dialog.actions.recommended`)),1)):d(``,!0)],8,Ne),v(`button`,{type:`button`,"aria-pressed":_.value===`keep_left`,onClick:o[4]||=e=>F(`keep_left`)},[v(`strong`,null,u(g(l)(`preferences.dialog.actions.keepA`)),1),v(`span`,null,u(g(l)(`preferences.dialog.actions.keepACopy`)),1)],8,Fe),v(`button`,{type:`button`,"aria-pressed":_.value===`keep_right`,onClick:o[5]||=e=>F(`keep_right`)},[v(`strong`,null,u(g(l)(`preferences.dialog.actions.keepB`)),1),v(`span`,null,u(g(l)(`preferences.dialog.actions.keepBCopy`)),1)],8,Ie),v(`button`,{type:`button`,disabled:!M.value,"aria-pressed":_.value===`split_scope`,onClick:o[6]||=e=>F(`split_scope`)},[v(`strong`,null,u(g(l)(`preferences.dialog.actions.split`)),1),v(`span`,null,u(M.value?g(l)(`preferences.dialog.actions.splitCopy`):g(l)(`preferences.dialog.actions.noProjects`)),1)],8,Le)],8,Me),_.value===`merge`?(r(),b(`section`,Re,[v(`div`,{class:`conflict-inline-options`,role:`group`,"aria-label":g(l)(`preferences.dialog.mergeIdentityAria`)},[v(`span`,null,u(g(l)(`preferences.dialog.canonicalIdentity`)),1),v(`button`,{type:`button`,"aria-pressed":y.value===`left`,onClick:o[7]||=e=>y.value=`left`},u(g(l)(`preferences.dialog.identityA`)),9,Be),v(`button`,{type:`button`,"aria-pressed":y.value===`right`,onClick:o[8]||=e=>y.value=`right`},u(g(l)(`preferences.dialog.identityB`)),9,Ve)],8,ze),v(`label`,null,[e(u(g(l)(`preferences.dialog.mergedContent`))+` `,1),n(v(`textarea`,{"onUpdate:modelValue":o[9]||=e=>T.value=e,rows:`4`,maxlength:`4096`},null,512),[[f,T.value]])])])):d(``,!0),_.value===`split_scope`?(r(),b(`section`,He,[v(`div`,{class:`conflict-inline-options`,role:`group`,"aria-label":g(l)(`preferences.dialog.splitRecordAria`)},[v(`span`,null,u(g(l)(`preferences.dialog.adjustRecord`)),1),v(`button`,{type:`button`,"aria-pressed":C.value===`left`,onClick:o[10]||=e=>C.value=`left`},` A `,8,We),v(`button`,{type:`button`,"aria-pressed":C.value===`right`,onClick:o[11]||=e=>C.value=`right`},` B `,8,Ge)],8,Ue),v(`label`,null,[e(u(g(l)(`preferences.dialog.projectOnly`))+` `,1),n(v(`select`,{"onUpdate:modelValue":o[12]||=e=>w.value=e},[v(`option`,Ke,u(g(l)(`preferences.dialog.chooseProject`)),1),(r(!0),b(p,null,t(j.value,e=>(r(),b(`option`,{key:e.project_id,value:e.project_id},u(e.profile.name),9,qe))),128))],512),[[te,w.value]])])])):d(``,!0),v(`section`,Je,[v(`span`,null,u(g(l)(`preferences.dialog.impactTitle`)),1),v(`p`,null,u(ue.value),1)]),v(`label`,Ye,[e(u(g(l)(`preferences.dialog.reason`))+` `,1),n(v(`textarea`,{"onUpdate:modelValue":o[13]||=e=>O.value=e,rows:`2`,maxlength:`2000`},null,512),[[f,O.value]])])],8,je),A.value?(r(),b(`p`,Xe,u(A.value),1)):d(``,!0),v(`footer`,Ze,[v(`span`,null,u(g(l)(`preferences.dialog.pendingCopy`)),1),v(`div`,null,[v(`button`,{class:`secondary-action`,type:`button`,disabled:k.value,onClick:o[14]||=e=>h(`close`)},u(g(l)(`preferences.dialog.defer`)),9,Qe),v(`button`,{class:`primary-action`,type:`button`,disabled:k.value||!_.value,onClick:fe},[k.value?(r(),x(re,{key:0,variant:`inline`,label:g(l)(`preferences.dialog.processing`)},null,8,[`label`])):(r(),b(p,{key:1},[e(u(g(l)(`preferences.dialog.confirm`)),1)],64))],8,$e)])])])],40,he)):d(``,!0)}}),[[`__scopeId`,`data-v-7f6ac91a`]]),tt=[`aria-label`],nt={class:`writing-taste-milestone__copy`},rt={class:`writing-taste-milestone__heading`},it={class:`writing-taste-milestone__progress`,"aria-hidden":`true`},at={class:`writing-taste-milestone__metrics`},ot=C(a({__name:`WritingTasteMilestone`,props:{profile:{}},setup(t){let n=t,i=c(()=>n.profile?.ready===!0),a=c(()=>n.profile?.status===`active`?l(`writingTaste.milestone.activeTitle`):n.profile?.status===`preview_ready`?l(`writingTaste.milestone.previewTitle`):l(`writingTaste.milestone.collectingTitle`)),s=c(()=>i.value?l(`writingTaste.milestone.readyCopy`):l(`writingTaste.milestone.collectingCopy`)),f=c(()=>{let e=n.profile?.readiness;if(!e)return 0;let t=[p(e.rule_count,e.thresholds.rule_count),p(e.evidence_count,e.thresholds.evidence_count),p(e.session_count,e.thresholds.session_count),p(e.observation_day_count,e.thresholds.observation_day_count)];return Math.round(t.reduce((e,t)=>e+t,0)/t.length*100)});function p(e,t){return t<=0?1:Math.min(Math.max(e/t,0),1)}return(n,i)=>t.profile?(r(),b(`section`,{key:0,class:_([`writing-taste-milestone`,`status-${t.profile.status}`]),"aria-label":g(l)(`writingTaste.milestone.aria`)},[i[1]||=v(`div`,{class:`writing-taste-milestone__mark`,"aria-hidden":`true`},[v(`span`),v(`span`),v(`span`)],-1),v(`div`,nt,[v(`div`,rt,[v(`h2`,null,u(a.value),1),v(`span`,null,u(g(l)(`writingTaste.status.${t.profile.status}`)),1)]),v(`p`,null,u(s.value),1),v(`div`,it,[v(`i`,{style:m({transform:`scaleX(${f.value/100})`})},null,4)]),v(`div`,at,[v(`small`,null,u(g(l)(`writingTaste.milestone.rules`,{current:t.profile.readiness.rule_count,target:t.profile.readiness.thresholds.rule_count})),1),v(`small`,null,u(g(l)(`writingTaste.milestone.sessions`,{current:t.profile.readiness.session_count,target:t.profile.readiness.thresholds.session_count})),1)])]),y(g(w),{class:`writing-taste-milestone__action`,to:`/preferences/writing`},{default:o(()=>[e(u(g(l)(`writingTaste.milestone.open`))+` `,1),i[0]||=v(`span`,{"aria-hidden":`true`},`→`,-1)]),_:1})],10,tt)):d(``,!0)}}),[[`__scopeId`,`data-v-fdae5c34`]]),st={class:`view vue-personal-profile`},ct=[`aria-label`],lt=[`aria-label`,`aria-pressed`],ut=[`aria-label`,`aria-pressed`],dt=[`aria-label`,`aria-pressed`],ft={key:0},pt={key:1},mt=[`aria-label`,`aria-pressed`],ht=[`aria-label`],gt={class:`personal-profile-toolbar`},_t={class:`personal-profile-filter-groups`},vt=[`aria-label`],yt=[`aria-pressed`,`onClick`],bt={class:`personal-profile-toolbar-actions`},xt={key:0,class:`muted`},St={key:1,class:`muted`},Ct={key:2,class:`muted`},wt=[`disabled`],Tt=[`aria-label`],Et={class:`preference-conflict-list`},Dt={class:`preference-conflict-card-heading`},Ot={class:`preference-conflict-pair`},kt={key:0},At={class:`preference-conflict-actions`},jt=[`disabled`,`onClick`],Mt=[`onClick`],Nt={key:1,class:`empty-state`},Pt={class:`personal-profile-table-head`,"aria-hidden":`true`},Ft=[`onClick`],It={class:`personal-profile-copy`},Lt={class:`personal-profile-origin`},Rt={class:`empty-state`},zt=C(a({__name:`PersonalProfilePage`,setup(n){let i=ne(),a=s(null),f=s(null),m=s(!1),te=oe(c(()=>m.value&&!a.value)),C=s(`all`),w=s(`all`),E=s(`all`),D=s(!1),I=s(null),L=s(null),z=s(null),B=s(null),V=s([]),H=s(``),U=0,W=null,G=c(()=>ue(a.value)),K=c(()=>de(G.value,V.value)),pe=c(()=>new Set(K.value.flatMap(({left:e,right:t})=>[e.id,t.id]))),q=c(()=>new Set(V.value.filter(({status:e,resolved_by:t})=>e===`resolved`&&t===`agent`).flatMap(fe))),J=c(()=>G.value.filter(e=>Ce(e)&&(E.value===`all`||M(e)===E.value))),Y=c(()=>JSON.stringify([C.value,w.value,E.value,D.value])),me=c(()=>I.value?J.value.findIndex(({id:e,itemKind:t})=>e===I.value?.id&&t===I.value?.itemKind):-1),X=c(()=>K.value.filter(({left:e,right:t})=>Ce(e)||Ce(t))),Z=c(()=>[[`all`,l(`preferences.profile.filters.all`)],[`taste`,l(`preferences.profile.filters.taste`)],[`personality`,l(`preferences.profile.filters.personality`)],[`judgment_preference`,l(`preferences.profile.filters.judgment`)]]),he=c(()=>{let e=new Map((i.state?.personalProjects??[]).map(e=>[e.project_id,e.profile.name])),t=[...new Set(G.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:l(`preferences.profile.scopes.all`),meta:l(`common.counts.items`,{count:G.value.length})},{value:`global`,label:l(`preferences.profile.scopes.global`),meta:l(`common.counts.items`,{count:G.value.filter(({preferenceScope:e})=>e!==`project`).length})},...t.map(t=>({value:`project:${t}`,label:e.get(t)??t,meta:l(`preferences.profile.scopes.projectMeta`,{count:G.value.filter(({preferenceScope:e,preferenceProjectId:n})=>e===`project`&&n===t).length}),search:t}))]}),ge=c(()=>G.value.filter(e=>M(e)===`confirmed`).length),Q=c(()=>G.value.filter(e=>M(e)===`pending`).length),_e=c(()=>G.value.filter(e=>M(e)===`agent_confirmed`).length),ve=c(()=>D.value?l(`preferences.profile.summaryGuidance.conflicts`):E.value===`pending`?l(`preferences.profile.summaryGuidance.pending`):E.value===`confirmed`?l(`preferences.profile.summaryGuidance.confirmed`):E.value===`agent_confirmed`?l(`preferences.profile.summaryGuidance.agentConfirmed`):l(`preferences.profile.summaryGuidance.default`));S(()=>i.activePersonalSpace?.id,(e,t)=>{e!==t&&(a.value=null,f.value=null,V.value=[],I.value=null,L.value=null,z.value=null,B.value=null,w.value=`all`),e?$(e):(U+=1,W?.abort(),W=null,m.value=!1)},{immediate:!0}),h(()=>{U+=1,W?.abort(),W=null}),S([C,w,E,D],()=>{I.value&&!J.value.some(({id:e})=>e===I.value?.id)&&(I.value=null)}),S(he,e=>{e.some(({value:e})=>e===w.value)||(w.value=`all`)});async function $(e=i.activePersonalSpace?.id){if(!e)return;W?.abort();let t=++U,n=new AbortController;W=n,m.value=!0;try{let r=new URLSearchParams({personalSpaceId:e,limit:`500`}),i=new URLSearchParams({personalSpaceId:e,limit:`500`}),[o,s,c]=await Promise.all([F(e,n.signal),T(`/api/preference-conflicts?${r}`,{signal:n.signal}),T(`/api/writing-taste-profile?${i}`,{signal:n.signal}).catch(()=>null)]);if(t!==U||n.signal.aborted)return;a.value=o,V.value=Array.isArray(s)?s:[],f.value=ye(c)?c:null,I.value&&=G.value.find(({id:e})=>e===I.value?.id)??null}catch(e){if(t!==U||n.signal.aborted)return;a.value=null,f.value=null,i.reportError(e)}finally{if(t!==U||n.signal.aborted)return;m.value=!1,W===n&&(W=null)}}function ye(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 be(e){let t=A(e),n=K.value.find(({left:t,right:n})=>t.id===e.id||n.id===e.id);return n?.aiRecord?`${t} · ${l(`preferences.profile.statusSuffix.aiPending`)}`:n?`${t} · ${l(`preferences.profile.statusSuffix.conflict`)}`:q.value.has(e.id)?`${t} · ${l(`preferences.profile.statusSuffix.aiResolved`)}`:t}function xe(e){return`${e.itemKind}:${e.id}`}function Se(e){if(e.preferenceScope!==`project`||!e.preferenceProjectId)return l(`preferences.shared.personalGlobal`);let t=i.state?.personalProjects?.find(({project_id:t})=>t===e.preferenceProjectId);return l(`preferences.shared.projectOnly`,{project:t?.profile.name??e.preferenceProjectId})}function Ce(e){if(C.value!==`all`&&e.profileAspect!==C.value||w.value===`global`&&e.preferenceScope===`project`)return!1;if(w.value.startsWith(`project:`)){let t=w.value.slice(8);return e.preferenceScope===`project`&&e.preferenceProjectId===t}return!0}function we(e){if(e.scopeKey===`global`)return l(`preferences.shared.personalGlobal`);let t=e.scopeKey.slice(8),n=i.state?.personalProjects?.find(({project_id:e})=>e===t);return l(`preferences.shared.projectOnly`,{project:n?.profile.name??t})}function Te(e){C.value=e.profileAspect??`all`,w.value=e.preferenceScope===`project`&&e.preferenceProjectId?`project:${e.preferenceProjectId}`:`global`,D.value=!1,I.value=e}function Ee(e){B.value=null,z.value=e}function De(e){let t=!D.value&&E.value===e?`all`:e;D.value=!1,E.value=t,t!==`all`&&(I.value=J.value.at(0)??null)}function Oe(e=!1){let t=e||!D.value;D.value=t,t&&(E.value=`all`,I.value=null)}async function ke(e){let t=i.activePersonalSpace?.id;if(!(!t||e.aiRecord)){H.value=e.id;try{let n=await ie(`/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:l(`preferences.profile.deferReason`)});V.value=[n,...V.value.filter(({id:e})=>e!==n.id)],i.notify(l(`preferences.profile.deferNotice`))}catch(e){i.reportError(e)}finally{H.value=``}}}return(n,s)=>(r(),b(`section`,st,[v(`div`,{class:`personal-profile-summary`,"aria-label":g(l)(`preferences.profile.summaryAria`)},[v(`button`,{type:`button`,class:`profile-summary-action state-confirmed`,"aria-label":g(l)(`preferences.profile.summary.confirmedAria`,{count:ge.value}),"aria-pressed":!D.value&&E.value===`confirmed`,onClick:s[0]||=e=>De(`confirmed`)},[v(`strong`,null,u(ge.value),1),e(u(g(l)(`preferences.profile.summary.confirmed`))+` `,1),v(`small`,null,u(g(l)(`preferences.profile.summary.viewRecords`)),1)],8,lt),v(`button`,{type:`button`,class:`profile-summary-action state-agent-confirmed`,"aria-label":g(l)(`preferences.profile.summary.agentConfirmedAria`,{count:_e.value}),"aria-pressed":!D.value&&E.value===`agent_confirmed`,onClick:s[1]||=e=>De(`agent_confirmed`)},[v(`strong`,null,u(_e.value),1),e(u(g(l)(`preferences.profile.summary.agentConfirmed`))+` `,1),v(`small`,null,u(g(l)(`preferences.profile.summary.belowHuman`)),1)],8,ut),v(`button`,{type:`button`,class:`profile-summary-action state-pending`,"aria-label":g(l)(`preferences.profile.summary.pendingAria`,{count:Q.value}),"aria-pressed":!D.value&&E.value===`pending`,onClick:s[2]||=e=>De(`pending`)},[v(`strong`,null,u(Q.value),1),e(u(g(l)(`preferences.profile.summary.pending`))+` `,1),Q.value?(r(),b(`small`,ft,u(g(l)(`preferences.profile.summary.reviewAndConfirm`)),1)):(r(),b(`small`,pt,u(g(l)(`preferences.profile.summary.viewRecords`)),1))],8,dt),v(`button`,{type:`button`,class:`profile-summary-action state-conflict`,"aria-label":K.value.length?g(l)(`preferences.profile.summary.conflictAria`,{count:K.value.length}):g(l)(`preferences.profile.summary.noConflictsAria`),"aria-pressed":D.value,onClick:s[3]||=e=>Oe()},[v(`strong`,null,u(K.value.length),1),e(u(g(l)(`preferences.profile.summary.conflicts`))+` `,1),v(`small`,null,u(K.value.length?g(l)(`preferences.profile.summary.reviewAndHandle`):g(l)(`preferences.profile.summary.viewRecords`)),1)],8,mt),v(`p`,null,u(ve.value),1)],8,ct),K.value.length&&!D.value&&E.value===`all`?(r(),b(`section`,{key:0,class:`preference-conflict-alert`,"aria-label":g(l)(`preferences.profile.alert.aria`)},[s[15]||=v(`div`,{class:`preference-conflict-alert-icon`,"aria-hidden":`true`},`!`,-1),v(`div`,null,[v(`span`,null,u(g(l)(`preferences.profile.alert.kicker`)),1),v(`h2`,null,u(g(l)(`preferences.profile.alert.title`,{count:K.value.length})),1),v(`p`,null,u(g(l)(`preferences.profile.alert.copy`)),1)]),v(`button`,{class:`primary-action`,type:`button`,onClick:s[4]||=e=>Oe(!0)},u(g(l)(`preferences.profile.alert.action`)),1)],8,ht)):d(``,!0),y(ot,{profile:f.value},null,8,[`profile`]),v(`div`,gt,[v(`div`,_t,[v(`div`,{class:`personal-profile-filters`,role:`group`,"aria-label":g(l)(`preferences.profile.filters.aspectAria`)},[(r(!0),b(p,null,t(Z.value,([e,t])=>(r(),b(`button`,{key:e,type:`button`,"aria-pressed":C.value===e,onClick:t=>C.value=e},u(t),9,yt))),128))],8,vt),y(O,{modelValue:w.value,"onUpdate:modelValue":s[5]||=e=>w.value=e,class:`personal-profile-scope-filter`,"control-id":`personal-profile-scope`,label:g(l)(`preferences.profile.filters.scopeLabel`),options:he.value,"search-placeholder":g(l)(`preferences.profile.filters.scopeSearch`)},null,8,[`modelValue`,`label`,`options`,`search-placeholder`])]),v(`div`,bt,[D.value?(r(),b(`span`,xt,u(g(l)(`preferences.profile.filters.conflictsCount`,{visible:X.value.length,total:K.value.length})),1)):E.value===`all`?(r(),b(`span`,Ct,u(J.value.length===G.value.length?g(l)(`preferences.profile.filters.personalUnderstanding`,{count:G.value.length}):g(l)(`preferences.profile.filters.visibleCount`,{visible:J.value.length,total:G.value.length})),1)):(r(),b(`span`,St,u(g(l)(`preferences.profile.filters.reviewCount`,{count:J.value.length,status:E.value===`pending`?g(l)(`preferences.profile.summary.pending`):E.value===`agent_confirmed`?g(l)(`preferences.profile.summary.agentConfirmed`):g(l)(`preferences.profile.summary.confirmed`)})),1)),v(`button`,{class:`toolbar-action`,type:`button`,disabled:m.value,onClick:s[6]||=e=>$()},u(g(l)(`common.actions.refresh`)),9,wt)])]),m.value&&!g(te)&&!D.value?(r(),x(re,{key:1,variant:`inline`,label:g(l)(`preferences.profile.directory.loading`)},null,8,[`label`])):d(``,!0),g(te)?(r(),x(re,{key:2,label:g(l)(`preferences.profile.directory.loading`)},null,8,[`label`])):D.value?(r(),b(`section`,{key:3,class:`preference-conflict-workbench`,"aria-label":g(l)(`preferences.profile.workbench.aria`)},[v(`header`,null,[v(`div`,null,[s[16]||=v(`p`,{class:`eyebrow`},`CONFLICT WORKBENCH`,-1),v(`h2`,null,u(g(l)(`preferences.profile.workbench.title`)),1)]),v(`p`,null,u(g(l)(`preferences.profile.workbench.copy`)),1)]),v(`div`,Et,[(r(!0),b(p,null,t(X.value,(e,t)=>(r(),b(`article`,{key:e.id,class:`preference-conflict-card`},[v(`div`,Dt,[v(`div`,null,[v(`span`,null,u(g(l)(`preferences.profile.workbench.group`,{index:t+1})),1),v(`h3`,null,u(e.preferenceKey),1)]),v(`div`,null,[v(`span`,null,u(we(e)),1),v(`strong`,null,u(e.aiRecord?g(l)(`preferences.profile.workbench.aiPending`):e.recommendedAction===`merge`?g(l)(`preferences.profile.workbench.mergeSuggested`):g(l)(`preferences.profile.workbench.humanReview`)),1)])]),v(`div`,Ot,[v(`section`,null,[v(`span`,null,u(g(l)(`preferences.profile.workbench.older`)),1),v(`strong`,null,u(e.left.title),1),v(`p`,null,u(g(R)(e.left)),1),v(`small`,null,u(g(N)(g(P)(e.left))),1)]),s[17]||=v(`i`,{"aria-hidden":`true`},`↔`,-1),v(`section`,null,[v(`span`,null,u(g(l)(`preferences.profile.workbench.newer`)),1),v(`strong`,null,u(e.right.title),1),v(`p`,null,u(g(R)(e.right)),1),v(`small`,null,u(g(N)(g(P)(e.right))),1)])]),v(`footer`,null,[v(`div`,null,[v(`span`,null,u(g(l)(`preferences.profile.workbench.reason`)),1),v(`p`,null,u(e.reason),1),e.difference.rightOnly.length?(r(),b(`small`,kt,u(g(l)(`preferences.profile.workbench.additions`,{values:e.difference.rightOnly.join(`、`)})),1)):d(``,!0)]),v(`div`,At,[v(`button`,{class:`secondary-action`,type:`button`,disabled:!!e.aiRecord||H.value===e.id,onClick:t=>ke(e)},u(e.aiRecord?g(l)(`preferences.profile.workbench.deferred`):H.value===e.id?g(l)(`preferences.profile.workbench.deferring`):g(l)(`preferences.profile.workbench.defer`)),9,jt),v(`button`,{class:`primary-action`,type:`button`,onClick:t=>B.value=e},u(g(l)(`preferences.profile.workbench.handleNow`)),9,Mt)])])]))),128))]),m.value?(r(),x(re,{key:0,variant:`compact`,label:g(l)(`preferences.profile.workbench.loading`)},null,8,[`label`])):X.value.length?d(``,!0):(r(),b(`div`,Nt,u(K.value.length?g(l)(`preferences.profile.workbench.noFiltered`):g(l)(`preferences.profile.workbench.empty`)),1))],8,Tt)):(r(),b(`div`,{key:4,class:_([`personal-profile-layout`,{"has-selection":I.value}])},[y(ae,{class:`personal-profile-directory`,items:J.value,"row-height":76,"active-index":me.value,"reset-key":Y.value,"item-key":xe,label:g(l)(`preferences.profile.directory.aria`)},{header:o(()=>[v(`div`,Pt,[v(`span`,null,u(g(l)(`preferences.profile.directory.aspect`)),1),v(`span`,null,u(g(l)(`preferences.profile.directory.content`)),1),v(`span`,null,u(g(l)(`preferences.profile.directory.statusScopeSource`)),1),v(`span`,null,u(g(l)(`preferences.profile.directory.updated`)),1)])]),default:o(({item:e})=>[v(`button`,{class:_([`personal-profile-row`,{selected:I.value?.id===e.id,"pending-review":g(M)(e)===`pending`,"ai-resolved-conflict":q.value.has(e.id)}]),type:`button`,onClick:t=>I.value=e},[v(`span`,{class:_([`profile-aspect-mark`,e.profileAspect])},u(g(le)(e.profileAspect)),3),v(`span`,It,[v(`strong`,null,u(e.title),1),v(`small`,null,u(e.body),1)]),v(`span`,Lt,[v(`strong`,{class:_({"has-conflict":pe.value.has(e.id)})},u(be(e)),3),v(`small`,null,u(g(j)(e.originQuadrant))+` · `+u(Se(e))+` · `+u(g(l)(`preferences.profile.directory.sourceCount`,{count:e.evidence.length})),1)]),v(`time`,null,u(g(N)(g(P)(e))),1)],10,Ft)]),empty:o(()=>[v(`div`,Rt,u(G.value.length?g(l)(`preferences.profile.directory.noFiltered`):g(l)(`preferences.profile.directory.empty`)),1)]),_:1},8,[`items`,`active-index`,`reset-key`,`label`]),y(k,{class:`personal-profile-inspector`,item:I.value,graph:a.value,editable:``,onConfirm:s[7]||=e=>L.value=e,onEdit:s[8]||=e=>z.value=e,onOpenReplacement:Te},null,8,[`item`,`graph`])],2)),y(ce,{item:z.value,"personal-space-id":g(i).activePersonalSpace?.id??``,"personal-project-id":null,projects:g(i).state?.personalProjects??[],"replacement-items":G.value,onClose:s[9]||=e=>z.value=null,onSaved:s[10]||=e=>$()},null,8,[`item`,`personal-space-id`,`projects`,`replacement-items`]),y(se,{item:L.value,"personal-space-id":g(i).activePersonalSpace?.id??``,"personal-project-id":null,onClose:s[11]||=e=>L.value=null,onSaved:s[12]||=e=>$()},null,8,[`item`,`personal-space-id`]),y(et,{conflict:B.value,"personal-space-id":g(i).activePersonalSpace?.id??``,projects:g(i).state?.personalProjects??[],onClose:s[13]||=e=>B.value=null,onResolved:s[14]||=e=>$(),onEdit:Ee},null,8,[`conflict`,`personal-space-id`,`projects`])]))}}),[[`__scopeId`,`data-v-7ff17558`]]);export{zt as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{N as e,T as t,y as n}from"./i18n-75woNt31.js";import{t as r}from"./KnowledgeWorkspace-B2vj12QG.js";var i=t({__name:`PersonalProjectsPage`,setup(t){return(t,i)=>(e(),n(r,{"personal-projects-only":``}))}});export{i as default};
|