fuli-context 0.3.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/README.en.md +336 -0
  2. package/README.md +220 -174
  3. package/dist/web/assets/ConnectionsPage-CCKWm-6p.js +1 -0
  4. package/dist/web/assets/KnowledgeInspector-BZkB2wJn.js +1 -0
  5. package/dist/web/assets/KnowledgeInspector-CrGYxEob.css +1 -0
  6. package/dist/web/assets/KnowledgeOrganizerPage-CZAF_OlN.css +1 -0
  7. package/dist/web/assets/KnowledgeOrganizerPage-DlvcLwlL.js +1 -0
  8. package/dist/web/assets/KnowledgePage-CNQXd15y.js +1 -0
  9. package/dist/web/assets/KnowledgeWorkspace-CXPE4GCD.js +4 -0
  10. package/dist/web/assets/OverviewPage-ul7g7HXh.js +1 -0
  11. package/dist/web/assets/PersonalProfilePage-CC40Pw2L.js +1 -0
  12. package/dist/web/assets/PersonalProfilePage-S8ZcG2LU.css +1 -0
  13. package/dist/web/assets/PersonalProjectsPage-CPIEcShD.js +1 -0
  14. package/dist/web/assets/PublicProjectsPage-C700sR7z.js +1 -0
  15. package/dist/web/assets/ReviewPage-7MDDUDgA.js +1 -0
  16. package/dist/web/assets/console-B_Ena2DS.js +5 -0
  17. package/dist/web/assets/identity-CjBwYSMX.js +1 -0
  18. package/dist/web/assets/{index-Devf7glZ.css → index-CpLDx3of.css} +1 -1
  19. package/dist/web/assets/index-DAzeFJSc.js +2 -0
  20. package/dist/web/assets/model-C-5RVIJ2.js +1 -0
  21. package/dist/web/assets/{paths-B790iniO.js → paths-BkULqmGI.js} +1 -1
  22. package/dist/web/assets/{vue-router-BYTAoWT3.js → vue-router-DnD3hUm7.js} +1 -1
  23. package/dist/web/index.html +5 -6
  24. package/graph-provider/fuli_graph/app.py +48 -0
  25. package/graph-provider/fuli_graph/common_knowledge.py +443 -0
  26. package/graph-provider/fuli_graph/common_knowledge_models.py +54 -0
  27. package/graph-provider/fuli_graph/graph_models.py +9 -0
  28. package/graph-provider/fuli_graph/graph_query.py +25 -0
  29. package/graph-provider/fuli_graph/knowledge_audit.py +211 -0
  30. package/graph-provider/fuli_graph/knowledge_feedback_models.py +69 -0
  31. package/graph-provider/fuli_graph/knowledge_management.py +37 -0
  32. package/graph-provider/fuli_graph/knowledge_search.py +24 -2
  33. package/graph-provider/fuli_graph/models.py +69 -0
  34. package/graph-provider/fuli_graph/search_projection.py +59 -0
  35. package/graph-provider/fuli_graph/store_knowledge.py +2 -0
  36. package/graph-provider/pyproject.toml +1 -1
  37. package/npm-shrinkwrap.json +97 -2
  38. package/package.json +3 -1
  39. package/skills/capturing-session-knowledge/SKILL.md +83 -13
  40. package/src/agent-tools/graph-definitions.js +181 -13
  41. package/src/agent-tools/graph-handlers.js +19 -0
  42. package/src/cli/command-registry.js +3 -58
  43. package/src/cli/local-runtime-command.js +16 -2
  44. package/src/cli/local-runtime-options.js +6 -2
  45. package/src/cli.js +2 -37
  46. package/src/graphiti/agent-knowledge-workflows.js +543 -0
  47. package/src/graphiti/federated-application.js +85 -104
  48. package/src/graphiti/knowledge-provider-mapping.js +91 -0
  49. package/src/graphiti/provider-client.js +15 -0
  50. package/src/graphiti/source-uri.js +29 -0
  51. package/src/http/request-policy.js +37 -2
  52. package/src/local-runtime/lifecycle.js +11 -1
  53. package/src/mcp/common-knowledge-preview-tokens.js +67 -0
  54. package/src/mcp/create-mcp-server.js +43 -7
  55. package/src/mcp/instructions.js +6 -7
  56. package/src/mcp/lifecycle-audit.js +27 -0
  57. package/src/mcp/task-context-registry.js +93 -0
  58. package/src/mcp/tool-annotations.js +16 -1
  59. package/src/mcp/tool-result.js +24 -0
  60. package/src/runtime-options.js +7 -8
  61. package/src/server/lan-access.js +52 -0
  62. package/src/server.js +67 -8
  63. package/src/setup/agent-installation-status.js +14 -2
  64. package/src/setup/agents.js +12 -1
  65. package/src/setup/claude-code-config.js +194 -0
  66. package/src/setup/config-backup.js +20 -5
  67. package/src/setup/graph-runtime.js +78 -9
  68. package/dist/web/assets/ConnectionsPage-CY6H_mJJ.js +0 -1
  69. package/dist/web/assets/KnowledgeInspector-BSpz5Sfm.js +0 -1
  70. package/dist/web/assets/KnowledgeInspector-CHbB_0rC.css +0 -1
  71. package/dist/web/assets/KnowledgeOrganizerPage-BlEvhPrv.css +0 -1
  72. package/dist/web/assets/KnowledgeOrganizerPage-CvjGPlUc.js +0 -1
  73. package/dist/web/assets/KnowledgePage-Khuo3cNs.js +0 -1
  74. package/dist/web/assets/KnowledgeWorkspace-DVZusvem.js +0 -4
  75. package/dist/web/assets/OverviewPage-DC4C4Fhn.js +0 -1
  76. package/dist/web/assets/PersonalProfilePage-CSV9Mtgz.js +0 -1
  77. package/dist/web/assets/PersonalProfilePage-CVJ3TcRi.css +0 -1
  78. package/dist/web/assets/PersonalProjectsPage-A50EaseQ.js +0 -1
  79. package/dist/web/assets/PublicProjectsPage-BAdO_bae.js +0 -1
  80. package/dist/web/assets/ReviewPage-Dztk2jDG.js +0 -1
  81. package/dist/web/assets/console-tbvTUi6p.js +0 -1
  82. package/dist/web/assets/identity-B3s5CXhv.js +0 -1
  83. package/dist/web/assets/index-DwUDhQKc.js +0 -6
  84. package/dist/web/assets/model-DVT8sjy9.js +0 -1
  85. package/dist/web/assets/runtime-dom.esm-bundler-DttsK21F.js +0 -1
  86. package/src/cli/commands/candidates.js +0 -17
  87. package/src/cli/commands/ingestion.js +0 -32
  88. package/src/cli/commands/reads.js +0 -50
  89. package/src/cli/commands/spaces.js +0 -20
  90. package/src/cli/invocation.js +0 -47
  91. package/src/cli/migrate-command.js +0 -71
  92. package/src/cli/migration-destination.js +0 -117
  93. package/src/storage/import-json.js +0 -70
  94. package/src/storage/legacy-record-validation.js +0 -152
  95. package/src/storage/legacy-snapshot-validation.js +0 -32
@@ -1,4 +0,0 @@
1
- import{A as e,C as t,D as n,L as r,M as i,P as a,S as o,T as s,_ as c,a as l,c as u,d,f,g as p,j as m,m as h,nt as g,o as _,p as v,r as y,t as b,tt as x,u as S,v as C,w,y as T}from"./console-tbvTUi6p.js";import{a as E,i as D,n as O,o as ee,r as k}from"./runtime-dom.esm-bundler-DttsK21F.js";import{_ as A,n as j,t as M,v as te}from"./paths-B790iniO.js";import{t as N}from"./vue-router-BYTAoWT3.js";import{n as ne,r as P,t as re}from"./identity-B3s5CXhv.js";import{C as F,E as I,S as ie,T as ae,_ as oe,c as se,d as ce,g as le,h as ue,l as de,m as fe,o as pe,p as me,u as he,v as ge,x as _e,y as ve}from"./model-DVT8sjy9.js";import{n as ye,r as be,t as xe}from"./KnowledgeInspector-BSpz5Sfm.js";function Se(e,t){let n=null;function r(){n=null,e()}return{schedule(){n!==null&&clearTimeout(n),n=setTimeout(r,t)},flush(){n!==null&&(clearTimeout(n),r())},cancel(){n!==null&&(clearTimeout(n),n=null)}}}var L=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function Ce(e,t=18){let n=String(e??``).trim();if(!n)return`未记录`;if(n.length<=t)return n;if(L.test(n))return n.slice(0,8);let r=Math.max(7,Math.ceil((t-1)*.58)),i=Math.max(4,t-r-1);return`${n.slice(0,r)}…${n.slice(-i)}`}function we(e){let t=e?.attributes?.projectId;return Ce(t||e?.id,t?26:18)}var Te=[`#537966`,`#867550`,`#65758a`,`#8a655f`,`#6f6a88`,`#598080`,`#8a765f`],Ee=.18,De=5,Oe=1.5;function ke(e,t,n={}){let r=globalThis.d3;if(!r)throw Error(`D3 graph runtime is unavailable`);let i=typeof n==`function`?{onNodeSelect:n}:n,a=Math.max(e.clientWidth||0,760),o=Math.max(e.clientHeight||0,520),s=t.nodes.map(e=>({...e})),c=new Set(s.map(({id:e})=>e)),l=t.edges.map((e,t)=>R(e,t)).filter(({sourceId:e,targetId:t})=>c.has(e)&&c.has(t)),u=r.select(e);u.selectAll(`*`).remove(),u.attr(`viewBox`,`0 0 ${a} ${o}`).attr(`preserveAspectRatio`,`xMidYMid meet`);let d=`graph-arrow-${Math.random().toString(36).slice(2)}`;u.append(`defs`).append(`marker`).attr(`id`,d).attr(`viewBox`,`0 -5 10 10`).attr(`refX`,28).attr(`refY`,0).attr(`markerWidth`,5).attr(`markerHeight`,5).attr(`orient`,`auto`).append(`path`).attr(`d`,`M0,-5L10,0L0,5`).attr(`class`,`graph-arrow`);let f=u.append(`g`).attr(`class`,`graph-viewport`),p=f.append(`g`).attr(`class`,`graph-edges`),m=f.append(`g`).attr(`class`,`graph-edge-labels`),h=f.append(`g`).attr(`class`,`graph-nodes`),g=p.selectAll(`line.graph-edge`).data(l,({id:e})=>e).join(`line`).attr(`class`,e=>[`graph-edge`,e.invalid_at?`historical`:null,B(e)?`human-change-pending`:null,e.human_change_status===`viewed`?`human-change-viewed`:null].filter(Boolean).join(` `)).attr(`marker-end`,`url(#${d})`),_=p.selectAll(`line.graph-edge-hit`).data(l,({id:e})=>e).join(`line`).attr(`class`,`graph-edge-hit`).attr(`role`,`button`).attr(`tabindex`,0).attr(`aria-label`,e=>`${e.type}: ${e.fact||`关系`}`);_.append(`title`).text(e=>e.fact||e.type);let v=l.length<=90?m.selectAll(`text`).data(l,({id:e})=>e).join(`text`).attr(`class`,`graph-edge-label`).text(e=>e.type):m.selectAll(`text`),y=h.selectAll(`g.graph-node`).data(s,({id:e})=>e).join(`g`).attr(`class`,e=>[`graph-node`,z(e)?`project-node`:null,B(e)?`human-change-pending`:null,e.human_change_status===`viewed`?`human-change-viewed`:null].filter(Boolean).join(` `)).attr(`tabindex`,0).attr(`role`,`button`).attr(`aria-label`,e=>`${e.name},ID ${we(e)}`);y.filter(e=>!z(e)).append(`circle`).attr(`class`,`graph-node-shape`).attr(`r`,e=>10+Math.min(7,V(e.id,l))).attr(`fill`,e=>je(e.type)),y.filter(z).append(`circle`).attr(`class`,`graph-project-ring`).attr(`r`,24),y.filter(z).append(`circle`).attr(`class`,`graph-node-shape`).attr(`r`,19),y.filter(z).append(`path`).attr(`class`,`graph-project-icon`).attr(`d`,`M-9,-7H-3L0,-4H9V7H-9Z`),y.filter(B).append(`circle`).attr(`class`,`graph-node-human-marker`).attr(`cx`,e=>z(e)?20:12).attr(`cy`,e=>z(e)?-20:-12).attr(`r`,4),y.append(`text`).attr(`class`,`graph-node-label`).attr(`y`,e=>z(e)?39:26+Math.min(7,V(e.id,l))).text(e=>H(e.name,22)),y.append(`text`).attr(`class`,`graph-node-id`).attr(`y`,e=>z(e)?51:38+Math.min(7,V(e.id,l))).text(e=>`#${we(e)}`);let b=y.append(`g`).attr(`class`,`graph-search-badge`).attr(`transform`,e=>`translate(0,${z(e)?-36:-28})`);b.append(`rect`).attr(`x`,-15).attr(`y`,-8).attr(`width`,30).attr(`height`,15).attr(`rx`,4),b.append(`text`).attr(`y`,3).text(`命中`),y.append(`title`).text(e=>[e.name,e.type,`ID: ${e.id}`,z(e)?`已标记为项目`:null,B(e)?e.human_change_status===`unseen`?`人工修改后,Agent 尚未查看`:`Agent 已查看,等待完成审核`:null].filter(Boolean).join(`
2
- `));let x=r.zoom().scaleExtent([Ee,De]).on(`zoom`,e=>f.attr(`transform`,e.transform));u.call(x).on(`dblclick.zoom`,null);let S=r.forceSimulation(s).force(`link`,r.forceLink(l).id(({id:e})=>e).distance(118).strength(.42)).force(`charge`,r.forceManyBody().strength(-390).distanceMax(620)).force(`collide`,r.forceCollide().radius(e=>z(e)?58:38+Math.min(10,V(e.id,l)))).force(`project-focus`,r.forceRadial(e=>z(e)?70:210,a/2,o/2).strength(e=>z(e)?.55:.008)).force(`center`,r.forceCenter(a/2,o/2)).force(`x`,r.forceX(a/2).strength(.025)).force(`y`,r.forceY(o/2).strength(.025)).stop();for(let e=0;e<220;e+=1)S.tick();w();let C=r.drag().on(`start`,function(e,t){e.sourceEvent?.stopPropagation(),t.dragMoved=!1,t.fx=t.x,t.fy=t.y}).on(`drag`,function(e,t){t.dragMoved=!0,t.fx=e.x,t.fy=e.y,t.x=e.x,t.y=e.y,r.select(this).classed(`pinned`,!0),w()}).on(`end`,function(e,t){t.dragMoved?(t.fx=t.x,t.fy=t.y):(t.fx=null,t.fy=null,r.select(this).classed(`pinned`,!1)),delete t.dragMoved});return y.call(C),y.on(`click`,(e,t)=>{e.stopPropagation(),T(t)}).on(`keydown`,(e,t)=>{e.key!==`Enter`&&e.key!==` `||(e.preventDefault(),T(t))}).on(`dblclick`,(e,t)=>{e.stopPropagation(),t.fx=null,t.fy=null,r.select(e.currentTarget).classed(`pinned`,!1),S.alpha(.35).restart(),window.setTimeout(()=>S.stop(),700)}),_.on(`click`,(e,t)=>{e.stopPropagation(),D(t)}).on(`keydown`,(e,t)=>{e.key!==`Enter`&&e.key!==` `||(e.preventDefault(),D(t))}),u.on(`click.selection`,t=>{t.target===e&&k()}),j(s,0),{zoomIn:()=>A(1.32),zoomOut:()=>A(.76),fit:()=>j(s),reset:()=>{k(),u.transition().duration(220).call(x.transform,r.zoomIdentity)},selectItem(e,t){if(e===`entity`){let e=s.find(e=>e.id===t);return e?(E(e),j([e]),!0):!1}let n=l.find(e=>e.id===t);return n?(O(n),j([n.source,n.target]),!0):!1},focusByNames(e,{projectOnly:t=!1,searchMatch:n=!1}={}){let r=s.filter(n=>e.has(n.name)&&(!t||z(n)));if(!r.length)return n?ee({nodeIds:new Set,edgeIds:new Set,selectedNodeId:null,selectedEdgeId:null,searchMatch:n}):k(),0;let i=new Set(r.map(({id:e})=>e));return ee({nodeIds:i,edgeIds:new Set(l.filter(({sourceId:e,targetId:t})=>i.has(e)&&i.has(t)).map(({id:e})=>e)),selectedNodeId:null,selectedEdgeId:null,searchMatch:n}),j(r),r.length},clearSelection:k,destroy(){S.stop(),u.on(`.zoom`,null).on(`.selection`,null),u.selectAll(`*`).remove()}};function w(){g.attr(`x1`,e=>e.source.x).attr(`y1`,e=>e.source.y).attr(`x2`,e=>e.target.x).attr(`y2`,e=>e.target.y),_.attr(`x1`,e=>e.source.x).attr(`y1`,e=>e.source.y).attr(`x2`,e=>e.target.x).attr(`y2`,e=>e.target.y),v.attr(`x`,e=>(e.source.x+e.target.x)/2).attr(`y`,e=>(e.source.y+e.target.y)/2-5),y.attr(`transform`,e=>`translate(${e.x},${e.y})`)}function T(e){E(e),i.onNodeSelect?.(e)}function E(e){let t=new Set([e.id]),n=new Set;for(let r of l)r.sourceId!==e.id&&r.targetId!==e.id||(n.add(r.id),t.add(r.sourceId),t.add(r.targetId));ee({nodeIds:t,edgeIds:n,selectedNodeId:e.id,selectedEdgeId:null})}function D(e){O(e),i.onEdgeSelect?.(e)}function O(e){ee({nodeIds:new Set([e.sourceId,e.targetId]),edgeIds:new Set([e.id]),selectedNodeId:null,selectedEdgeId:e.id})}function ee({nodeIds:e,edgeIds:t,selectedNodeId:n,selectedEdgeId:r,searchMatch:i=!1}){y.classed(`selected`,({id:e})=>e===n).classed(`related`,({id:t})=>e.has(t)&&t!==n).classed(`dimmed`,({id:t})=>!e.has(t)).classed(`search-match`,({id:t})=>i&&e.has(t)),g.classed(`selected`,({id:e})=>e===r).classed(`related`,({id:e})=>t.has(e)).classed(`dimmed`,({id:e})=>t.size>0?!t.has(e):!0).classed(`search-match`,({id:e})=>i&&t.has(e)),v.classed(`selected`,({id:e})=>e===r).classed(`related`,({id:e})=>t.has(e)).classed(`dimmed`,({id:e})=>t.size>0?!t.has(e):!0).classed(`search-match`,({id:e})=>i&&t.has(e))}function k(){y.classed(`selected related dimmed search-match`,!1),g.classed(`selected related dimmed search-match`,!1),v.classed(`selected related dimmed search-match`,!1)}function A(e){u.transition().duration(180).call(x.scaleBy,e)}function j(e,t=220){if(!e.length)return;let n=e.map(({x:e})=>e),i=e.map(({y:e})=>e),s=Math.min(...n),c=Math.max(...n),l=Math.min(...i),d=Math.max(...i),f=Math.max(c-s,90),p=Math.max(d-l,90),m=Math.max(Ee,Math.min(Oe,.82/Math.max(f/a,p/o))),h=(s+c)/2,g=(l+d)/2,_=r.zoomIdentity.translate(a/2-m*h,o/2-m*g).scale(m);(t?u.transition().duration(t):u).call(x.transform,_)}}function R(e,t){let n=Ae(e.source),r=Ae(e.target);return{...e,id:e.id??`edge-${t}-${n}-${r}`,sourceId:n,targetId:r,source:n,target:r}}function Ae(e){return typeof e==`object`&&e?e.id:e}function je(e){return Te[Math.floor(U(e)*Te.length)%Te.length]}function z(e){return e?.type===`PersonalProject`||e?.type===`RelatedPersonalProject`}function B(e){return e?.human_change_status===`unseen`||e?.human_change_status===`viewed`}function V(e,t){return t.reduce((t,n)=>t+Number(n.sourceId===e||n.targetId===e),0)}function H(e,t){return e.length>t?`${e.slice(0,t-1)}…`:e}function U(e=``){let t=2166136261;for(let n of e)t=Math.imul(t^n.charCodeAt(0),16777619);return(t>>>0)%1e4/1e4}var W=ke,Me=T({__name:`GraphCanvas`,props:{graph:{},selectedItem:{}},emits:[`selectNode`,`selectEdge`],setup(n,{expose:r,emit:i}){let c=n,l=i,u=a(null),d=null;w(f),e(()=>c.graph,f,{deep:!1}),e([()=>c.selectedItem?.itemKind,()=>c.selectedItem?.id],p),t(()=>d?.destroy()),r({zoomIn:()=>d?.zoomIn(),zoomOut:()=>d?.zoomOut(),fit:()=>d?.fit(),reset:()=>d?.reset(),clearSelection:()=>d?.clearSelection(),selectItem:(e,t)=>d?.selectItem(e,t)??!1,focusByNames:(e,t)=>d?.focusByNames(e,t)??0});async function f(){await o(),u.value&&(d?.destroy(),d=W(u.value,c.graph,{onNodeSelect:e=>l(`selectNode`,e),onEdgeSelect:e=>l(`selectEdge`,e)}),p())}function p(){let e=c.selectedItem;e&&d?.selectItem(e.itemKind,e.id)}return(e,t)=>(s(),h(`svg`,{ref_key:`svg`,ref:u,viewBox:`0 0 1000 620`,role:`img`,"aria-label":`知识关系图`},null,512))}}),G={key:0,open:``,class:`project-dialog knowledge-project-dialog vue-dialog`},K={class:`project-dialog-shell`},Ne={class:`project-dialog-header`},q={class:`knowledge-project-source`},J={class:`knowledge-project-mode`},Pe=[`disabled`],Fe={key:0,class:`knowledge-project-fields`},Y={class:`full-width`},Ie={key:1,class:`knowledge-project-fields`},Le={class:`full-width`},Re={key:2,class:`knowledge-project-relation`},ze={class:`toggle-row`},Be={class:`knowledge-project-preview`},X={key:0,class:`knowledge-project-compare`},Ve={key:1,class:`knowledge-project-conflict-options`},He={class:`knowledge-project-reason`},Ue={key:3,class:`publish-dialog-error`,role:`alert`},We={class:`knowledge-project-actions`},Ge=[`disabled`],Ke=T({__name:`KnowledgeProjectDialog`,props:{item:{},personalSpaceId:{},personalProjectId:{},projects:{}},emits:[`close`,`saved`],setup(t,{emit:n}){let r=t,o=n,u=b(),f=a(`create`),p=a(``),m=a(``),_=a(``),y=a(``),w=a(!0),T=a(`RELATED_TO`),D=a(`defer`),A=a(``),j=a(null),M=a(!1),te=a(!1),N=a(``),F=a(!1),I=0,ie=S(()=>r.item?.itemKind===`entity`?r.item.raw:null),ae=S(()=>r.item?.assignments.at(0)?.project_id??r.item?.evidence.find(({personal_project_id:e})=>e)?.personal_project_id??r.personalProjectId??null),oe=S(()=>r.projects.filter(({project_id:e})=>e!==ae.value)),se=S(()=>oe.value.map(e=>({value:e.project_id,label:e.profile.name,meta:`#${re(e.project_id,26)}`,search:ne(e.project_id)}))),ce=S(()=>oe.value.find(({project_id:e})=>e===p.value)??null),le=S(()=>{if(f.value===`create`)return{label:`创建预览`,title:`将创建一个新的个人项目`,copy:ae.value?`当前节点继续由来源项目主要维护,新项目会引用它。`:`当前节点会成为新项目的主要归属知识。`};if(M.value)return{label:`正在检查`,title:`正在检查重复与冲突…`,copy:`只比较目标项目和当前节点。`};if(!j.value)return{label:`等待检查`,title:`请选择目标项目`,copy:`选择后会先检查重复与冲突。`};let e={none:[`可以加入`,`未检测到重复或已确认的同名冲突`],already_linked:[`已经加入`,`目标项目已经在使用这条知识`],exact_duplicate:[`发现重复`,`将复用目标项目已有内容,不再创建副本`],conflict:[`发现冲突`,`两条已确认知识同名,但内容不同`]},[t,n]=e[j.value.match.kind]??e.none;return{label:t,title:n,copy:j.value.match.reason}}),ue=S(()=>{let e=f.value===`existing`?`来源项目`:`新项目`,t=f.value===`existing`?`目标项目`:`来源项目`;return{RELATED_TO:`与${t}相关`,PART_OF:`${e}属于${t}`,USES_KNOWLEDGE_FROM:`${e}从${t}继承共享知识`,DEPENDS_ON:`${e}依赖${t}`,PROVIDES_TO:`${e}向${t}提供能力`,SHARES_CAPABILITY_WITH:`与${t}共享能力`,SUCCESSOR_OF:`${e}是${t}的后继`}}),de=S(()=>Object.entries(ue.value).map(([e,t])=>({value:e,label:t}))),fe=S(()=>te.value?`正在处理…`:f.value===`create`?`创建项目`:j.value?.match.kind===`exact_duplicate`?`复用现有内容`:`加入项目`),pe=S(()=>te.value||f.value===`existing`&&(M.value||!j.value));e(()=>r.item,e=>{I+=1,j.value=null,M.value=!1,N.value=``,f.value=`create`,F.value=!1;let t=e?.itemKind===`entity`?e.raw:null;m.value=t?.name??``,_.value=ge(t?.name??``),y.value=t?.summary??``,A.value=t?`基于图谱节点“${t.name}”建立项目知识范围`:``,w.value=!0,T.value=`RELATED_TO`,D.value=`defer`,p.value=oe.value[0]?.project_id??``},{immediate:!0}),e(m,e=>{F.value||(_.value=ge(e))}),e([f,p,()=>r.item],()=>{f.value===`existing`?me():(I+=1,j.value=null,M.value=!1,N.value=``)});async function me(){let e=r.item;if(!e||e.itemKind!==`entity`||!p.value)return;let t=++I;M.value=!0,j.value=null,N.value=``;try{let n=await l(`/api/knowledge/entity/${encodeURIComponent(e.id)}/project-action/preview`,{personalSpaceId:r.personalSpaceId,targetProjectId:p.value});if(t!==I||r.item?.id!==e.id)return;j.value=n,n.match.kind===`conflict`&&(D.value=`defer`)}catch(e){if(t!==I)return;ve(_e(e)),u.reportError(e)}finally{t===I&&(M.value=!1)}}async function he(){let e=r.item;if(!(!e||e.itemKind!==`entity`)){if(f.value===`create`&&(!m.value.trim()||!_.value.trim()))return ve(`请填写项目名称和项目标识`);if(f.value===`existing`&&!p.value)return ve(`请选择目标项目`);if(f.value===`existing`&&!j.value)return ve(`请等待重复与冲突检查完成`);if(!A.value.trim())return ve(`请填写操作说明`);te.value=!0,N.value=``;try{let t=await l(`/api/knowledge/entity/${encodeURIComponent(e.id)}/project-action`,{personalSpaceId:r.personalSpaceId,mode:f.value,targetProjectId:f.value===`existing`?p.value:null,newProjectId:f.value===`create`?_.value.trim():null,newProjectName:f.value===`create`?m.value.trim():null,newProjectPurpose:f.value===`create`?y.value.trim():null,keepSourceRelation:!!(ae.value&&w.value),relationType:T.value,conflictResolution:D.value,reason:A.value.trim()}),n=f.value===`create`?m.value.trim():ce.value?.profile.name??`目标项目`;o(`close`),o(`saved`,t,n)}catch(e){ve(_e(e)),u.reportError(e)}finally{te.value=!1}}}function ge(e){return e.normalize(`NFKC`).toLocaleLowerCase().replace(/[^\p{L}\p{N}]+/gu,`-`).replace(/^-+|-+$/g,``).slice(0,128)||`new-project`}function _e(e){let t=e instanceof Error?e.message:String(e);try{let e=JSON.parse(t);return e.message??e.detail??t}catch{return t}}function ve(e){N.value=e}return(e,n)=>t.item?(s(),h(`dialog`,G,[d(`div`,K,[d(`header`,Ne,[n[16]||=d(`div`,null,[d(`p`,{class:`eyebrow`},`PERSONAL PROJECT`),d(`h3`,null,`建立项目知识范围`),d(`p`,null,`从当前节点创建个人项目,或让已有项目引用这条知识。`)],-1),d(`button`,{class:`secondary-action`,type:`button`,onClick:n[0]||=e=>o(`close`)},`关闭`)]),d(`form`,{class:`knowledge-project-form`,onSubmit:ee(he,[`prevent`])},[d(`div`,q,[n[17]||=d(`span`,null,`来源节点`,-1),d(`strong`,null,g(ie.value?.name),1),d(`p`,null,g(ie.value?.summary||`没有补充说明`),1)]),d(`fieldset`,J,[n[20]||=d(`legend`,null,`选择操作`,-1),d(`label`,null,[i(d(`input`,{"onUpdate:modelValue":n[1]||=e=>f.value=e,type:`radio`,value:`create`},null,512),[[k,f.value]]),n[18]||=d(`span`,null,[d(`strong`,null,`创建新项目`),d(`small`,null,`以当前知识为起点建立独立范围`)],-1)]),d(`label`,{class:x({disabled:oe.value.length===0})},[i(d(`input`,{"onUpdate:modelValue":n[2]||=e=>f.value=e,type:`radio`,value:`existing`,disabled:oe.value.length===0},null,8,Pe),[[k,f.value]]),n[19]||=d(`span`,null,[d(`strong`,null,`加入已有项目`),d(`small`,null,`先检查重复和已确认冲突`)],-1)],2)]),f.value===`create`?(s(),h(`section`,Fe,[d(`label`,null,[n[21]||=c(`项目名称 `,-1),i(d(`input`,{"onUpdate:modelValue":n[3]||=e=>m.value=e,maxlength:`512`,required:``},null,512),[[E,m.value]])]),d(`label`,null,[n[22]||=c(`项目标识 `,-1),i(d(`input`,{"onUpdate:modelValue":n[4]||=e=>_.value=e,maxlength:`128`,required:``,onInput:n[5]||=e=>F.value=!0},null,544),[[E,_.value]])]),d(`label`,Y,[n[23]||=c(`项目用途 `,-1),i(d(`textarea`,{"onUpdate:modelValue":n[6]||=e=>y.value=e,maxlength:`4096`,rows:`3`},null,512),[[E,y.value]])])])):(s(),h(`section`,Ie,[d(`label`,Le,[n[24]||=c(`目标个人项目 `,-1),C(P,{modelValue:p.value,"onUpdate:modelValue":n[7]||=e=>p.value=e,options:se.value,label:`目标个人项目`,searchable:``,required:``},null,8,[`modelValue`,`options`])])])),ae.value?(s(),h(`section`,Re,[d(`label`,ze,[i(d(`input`,{"onUpdate:modelValue":n[8]||=e=>w.value=e,type:`checkbox`},null,512),[[O,w.value]]),n[25]||=d(`span`,null,[d(`strong`,null,`保留与来源项目的关系`),d(`small`,null,`当前知识的主要归属不会被覆盖`)],-1)]),d(`label`,null,[n[26]||=c(`项目关系 `,-1),C(P,{modelValue:T.value,"onUpdate:modelValue":n[9]||=e=>T.value=e,options:de.value,label:`项目关系`,disabled:!w.value},null,8,[`modelValue`,`options`,`disabled`])])])):v(``,!0),d(`section`,Be,[d(`div`,null,[d(`span`,null,g(le.value.label),1),d(`strong`,null,g(le.value.title),1),d(`p`,null,g(le.value.copy),1)]),j.value&&[`exact_duplicate`,`conflict`].includes(j.value.match.kind)?(s(),h(`div`,X,[d(`article`,null,[n[27]||=d(`span`,null,`当前节点`,-1),d(`strong`,null,g(j.value.item_name),1),d(`p`,null,g(j.value.item_summary||`没有补充说明`),1)]),d(`article`,null,[n[28]||=d(`span`,null,`目标项目已有内容`,-1),d(`strong`,null,g(j.value.match.item_name||`目标项目内容`),1),d(`p`,null,g(j.value.match.item_summary||`没有补充说明`),1)])])):v(``,!0),j.value?.match.kind===`conflict`?(s(),h(`fieldset`,Ve,[n[33]||=d(`legend`,null,`冲突处理`,-1),d(`label`,null,[i(d(`input`,{"onUpdate:modelValue":n[10]||=e=>D.value=e,type:`radio`,value:`defer`},null,512),[[k,D.value]]),n[29]||=c(` 暂不采用,保留待处理记录`,-1)]),d(`label`,null,[i(d(`input`,{"onUpdate:modelValue":n[11]||=e=>D.value=e,type:`radio`,value:`keep_target`},null,512),[[k,D.value]]),n[30]||=c(` 保留目标项目现有内容`,-1)]),d(`label`,null,[i(d(`input`,{"onUpdate:modelValue":n[12]||=e=>D.value=e,type:`radio`,value:`use_source`},null,512),[[k,D.value]]),n[31]||=c(` 使用当前来源内容`,-1)]),d(`label`,null,[i(d(`input`,{"onUpdate:modelValue":n[13]||=e=>D.value=e,type:`radio`,value:`coexist`},null,512),[[k,D.value]]),n[32]||=c(` 允许两条内容并存`,-1)])])):v(``,!0)]),d(`label`,He,[n[34]||=c(`操作说明 `,-1),i(d(`textarea`,{"onUpdate:modelValue":n[14]||=e=>A.value=e,maxlength:`2048`,rows:`3`,required:``},null,512),[[E,A.value]])]),N.value?(s(),h(`p`,Ue,g(N.value),1)):v(``,!0),d(`div`,We,[d(`button`,{class:`secondary-action`,type:`button`,onClick:n[15]||=e=>o(`close`)},`取消`),d(`button`,{class:`primary-action`,type:`submit`,disabled:pe.value},g(fe.value),9,Ge)])],32)])])):v(``,!0)}}),qe={key:0,open:``,class:`project-profile-dialog vue-dialog`},Je={class:`project-profile-dialog-header`},Ye=[`disabled`],Xe={class:`project-profile-fields`},Ze={class:`project-profile-wide-field`},Qe={class:`project-profile-wide-field`},$e={class:`project-profile-wide-field`},et={class:`project-profile-wide-field`},tt={class:`project-source-editor`},nt={key:0,class:`project-source-list`},rt=[`onUpdate:modelValue`],it=[`onUpdate:modelValue`],at=[`value`],ot={class:`project-source-wide-field`},st=[`onUpdate:modelValue`],ct={class:`project-source-wide-field`},Z=[`onUpdate:modelValue`],lt=[`onUpdate:modelValue`],ut=[`onClick`],dt={key:1,class:`project-source-empty`},ft={key:0,class:`project-profile-error`,role:`alert`},pt={class:`project-profile-dialog-actions`},mt=[`disabled`],Q=[`disabled`],ht=T({__name:`PersonalProjectProfileDialog`,props:{project:{},materialType:{}},emits:[`close`,`saved`],setup(t,{emit:r}){let c=t,l=r,f=a(``),p=a(``),m=a(``),y=a(``),b=a(`planned`),x=a(``),C=a([]),w=a(``),T=a(!1),O=a(null),k=a(null),A=a(null),j=a(null),M=S(()=>({ProjectPurpose:`项目目标`,ProjectScope:`项目范围`,ProjectSource:`资料来源`,ProjectBoundary:`项目边界`,ProjectAssessment:`档案评估`,AssessmentDimension:`评估维度`,PersonalProject:`项目档案`,RelatedPersonalProject:`关联项目`})[c.materialType??``]??`项目档案`),te=[[`prd`,`PRD`],[`product_document`,`产品文档`],[`technical_document`,`技术文档`],[`frontend_repository`,`前端仓库`],[`backend_repository`,`后端仓库`],[`repository`,`代码仓库`],[`design`,`设计稿`],[`runbook`,`运行手册`],[`monitoring`,`监控`],[`issue_tracker`,`事项追踪`],[`other`,`其他`]],N=new Set(te.map(([e])=>e)),ne=new Set([`normal`,`private`,`restricted`]);e(()=>[c.project,c.materialType],async([e])=>{if(!e)return;let t=e.profile;f.value=t.name,p.value=t.purpose??``,m.value=t.scope??``,y.value=t.technical_summary??``,b.value=t.lifecycle??`planned`,x.value=(t.boundaries??[]).map(e=>String(e)).join(`
3
- `),C.value=(t.sources??[]).map(P),w.value=``,await o(),se()},{immediate:!0});function P(e,t){let n=typeof e.kind==`string`&&N.has(e.kind)?e.kind:`other`,r=typeof e.sensitivity==`string`&&ne.has(e.sensitivity)?e.sensitivity:`normal`;return{key:re(e.key)||`source-${t+1}`,kind:n,title:re(e.title)||re(e.name),uri:re(e.uri),summary:re(e.summary),sensitivity:r}}function re(e){return typeof e==`string`?e:``}function F(e){return e.trim()||null}function I(){return[...new Set(x.value.split(`
4
- `).map(e=>e.trim()).filter(Boolean))].slice(0,64)}function ie(){C.value.push({key:`source-${Date.now().toString(36)}-${C.value.length+1}`,kind:`other`,title:``,uri:``,summary:``,sensitivity:`normal`})}function ae(e){C.value.splice(e,1)}async function oe(){if(!c.project||T.value)return;let e=f.value.trim();if(!e){w.value=`请填写项目名称`;return}if(C.value.some(e=>!e.title.trim())){w.value=`每条资料来源都需要名称`;return}T.value=!0,w.value=``;try{let t=await _(`/api/personal-projects`,{personalSpaceId:c.project.personal_space_id,projectId:c.project.project_id,profile:{name:e,purpose:F(p.value),scope:F(m.value),technicalSummary:F(y.value),lifecycle:b.value,sources:C.value.map(e=>({key:e.key,kind:e.kind,title:e.title.trim(),uri:F(e.uri),summary:F(e.summary),sensitivity:e.sensitivity})),boundaries:I(),assessment:c.project.profile.assessment??null}});l(`saved`,t),l(`close`)}catch(e){w.value=e instanceof Error?e.message:`项目资料保存失败`}finally{T.value=!1}}function se(){c.materialType===`ProjectPurpose`?O.value?.focus():c.materialType===`ProjectScope`?k.value?.focus():c.materialType===`ProjectBoundary`?A.value?.focus():c.materialType===`ProjectSource`&&j.value?.focus()}return(e,r)=>t.project?(s(),h(`dialog`,qe,[d(`form`,{class:`project-profile-dialog-shell`,onSubmit:ee(oe,[`prevent`])},[d(`header`,Je,[d(`div`,null,[r[8]||=d(`p`,{class:`eyebrow`},`PROJECT MATERIAL`,-1),d(`h3`,null,`编辑`+g(M.value),1),r[9]||=d(`p`,null,` 这些字段属于项目档案;保存后会重新生成关系图中的项目资料节点。 `,-1)]),d(`button`,{class:`secondary-action`,type:`button`,disabled:T.value,onClick:r[0]||=e=>l(`close`)},` 关闭 `,8,Ye)]),d(`div`,Xe,[d(`label`,null,[r[10]||=d(`span`,null,`项目名称`,-1),i(d(`input`,{"onUpdate:modelValue":r[1]||=e=>f.value=e,name:`project-name`,maxlength:`160`,required:``},null,512),[[E,f.value]])]),d(`label`,null,[r[12]||=d(`span`,null,`生命周期`,-1),i(d(`select`,{"onUpdate:modelValue":r[2]||=e=>b.value=e,name:`project-lifecycle`},[...r[11]||=[d(`option`,{value:`planned`},`计划中`,-1),d(`option`,{value:`active`},`进行中`,-1),d(`option`,{value:`maintenance`},`维护中`,-1),d(`option`,{value:`archived`},`已归档`,-1)]],512),[[D,b.value]])]),d(`label`,Ze,[r[13]||=d(`span`,null,`项目目标`,-1),i(d(`textarea`,{ref_key:`purposeField`,ref:O,"onUpdate:modelValue":r[3]||=e=>p.value=e,name:`project-purpose`,maxlength:`4096`,rows:`4`,placeholder:`说明项目为什么存在、希望达成什么结果`},null,512),[[E,p.value]])]),d(`label`,Qe,[r[14]||=d(`span`,null,`项目范围`,-1),i(d(`textarea`,{ref_key:`scopeField`,ref:k,"onUpdate:modelValue":r[4]||=e=>m.value=e,name:`project-scope`,maxlength:`4096`,rows:`4`,placeholder:`说明项目包含的对象、流程或交付物`},null,512),[[E,m.value]])]),d(`label`,$e,[r[15]||=d(`span`,null,`技术摘要`,-1),i(d(`textarea`,{"onUpdate:modelValue":r[5]||=e=>y.value=e,name:`project-technical-summary`,maxlength:`4096`,rows:`4`,placeholder:`记录关键技术结构和运行方式`},null,512),[[E,y.value]])]),d(`label`,et,[r[16]||=d(`span`,null,`项目边界`,-1),i(d(`textarea`,{ref_key:`boundariesField`,ref:A,"onUpdate:modelValue":r[6]||=e=>x.value=e,name:`project-boundaries`,maxlength:`8192`,rows:`5`,placeholder:`每行一条明确不在本项目范围内的边界`},null,512),[[E,x.value]]),r[17]||=d(`small`,null,`每行一条;重复内容会在保存时合并。`,-1)])]),d(`section`,tt,[d(`div`,{ref_key:`sourcesHeading`,ref:j,class:`project-source-editor-heading`,tabindex:`-1`},[r[18]||=d(`div`,null,[d(`h4`,null,`资料来源`),d(`p`,null,`保留资料类型、地址和敏感级别;这些内容会投影为图中的资料来源节点。`)],-1),d(`button`,{class:`secondary-action`,type:`button`,onClick:ie},`添加来源`)],512),C.value.length?(s(),h(`div`,nt,[(s(!0),h(u,null,n(C.value,(e,t)=>(s(),h(`article`,{key:e.key,class:`project-source-row`},[d(`label`,null,[r[19]||=d(`span`,null,`名称`,-1),i(d(`input`,{"onUpdate:modelValue":t=>e.title=t,maxlength:`512`,required:``},null,8,rt),[[E,e.title]])]),d(`label`,null,[r[20]||=d(`span`,null,`类型`,-1),i(d(`select`,{"onUpdate:modelValue":t=>e.kind=t},[(s(),h(u,null,n(te,([e,t])=>d(`option`,{key:e,value:e},g(t),9,at)),64))],8,it),[[D,e.kind]])]),d(`label`,ot,[r[21]||=d(`span`,null,`地址`,-1),i(d(`input`,{"onUpdate:modelValue":t=>e.uri=t,maxlength:`2048`,placeholder:`可选,例如仓库或文档地址`},null,8,st),[[E,e.uri]])]),d(`label`,ct,[r[22]||=d(`span`,null,`摘要`,-1),i(d(`textarea`,{"onUpdate:modelValue":t=>e.summary=t,maxlength:`4096`,rows:`2`},null,8,Z),[[E,e.summary]])]),d(`label`,null,[r[24]||=d(`span`,null,`敏感级别`,-1),i(d(`select`,{"onUpdate:modelValue":t=>e.sensitivity=t},[...r[23]||=[d(`option`,{value:`normal`},`普通`,-1),d(`option`,{value:`private`},`私有`,-1),d(`option`,{value:`restricted`},`受限`,-1)]],8,lt),[[D,e.sensitivity]])]),d(`button`,{class:`text-action project-source-remove`,type:`button`,onClick:e=>ae(t)},` 移除 `,8,ut)]))),128))])):(s(),h(`p`,dt,`还没有登记资料来源。`))]),r[25]||=d(`p`,{class:`project-profile-state-note`},` 项目资料不使用普通知识的“确认 / 失效 / 恢复”状态;要改变内容,请直接编辑档案。 `,-1),w.value?(s(),h(`p`,ft,g(w.value),1)):v(``,!0),d(`footer`,pt,[d(`button`,{class:`secondary-action`,type:`button`,disabled:T.value,onClick:r[7]||=e=>l(`close`)},` 取消 `,8,mt),d(`button`,{class:`primary-action`,type:`submit`,disabled:T.value},g(T.value?`正在保存…`:`保存项目资料`),9,Q)])],32)])):v(``,!0)}}),gt={key:0,open:``,class:`publish-dialog vue-dialog`},_t={class:`publish-dialog-shell`},vt={class:`publish-dialog-intro`},yt={class:`publish-release-fields`},bt={key:0,class:`publish-dialog-error`,role:`alert`},xt={class:`publish-dialog-actions`},St=[`disabled`],Ct=[`disabled`],wt=T({__name:`PublishProjectDialog`,props:{project:{}},emits:[`close`,`published`],setup(t,{emit:n}){let r=t,o=n,c=b(),u=a(``),f=a(``),p=a(``),m=a(!1),_=S(()=>c.state?.projects.find(({publication_key:e})=>e&&e===r.project?.publication_key)??null),y=S(()=>_.value?.current_release?.version??null),x=S(()=>c.state?.providers?.workspaces?.find(({status:e})=>e===`ready`)?.providerUrl??null);e(()=>r.project,e=>{e&&(u.value=w(y.value),f.value=``,p.value=``)});async function C(){if(r.project){if(!x.value){p.value=`公共 Provider 当前不可用`;return}if(!u.value.trim()){p.value=`请填写发布版本`;return}if(!f.value.trim()){p.value=`请填写本次更新内容`;return}m.value=!0,p.value=``;try{await l(`/api/projects/publish`,{personalSpaceId:c.activePersonalSpace?.id,localProjectId:r.project.project_id,providerUrl:x.value,releaseVersion:u.value.trim(),updateSummary:f.value.trim()}),c.notify(`“${r.project.profile.name}” ${u.value.trim()} 已发布并记录版本信息。`),await c.refresh(),o(`close`),o(`published`)}catch(e){p.value=e instanceof Error?e.message:`发布失败`,c.reportError(e)}finally{m.value=!1}}}function w(e){if(!e||e===`legacy`)return`v1.0.0`;let t=e.match(/^(v?)(\d+)\.(\d+)\.(\d+)$/);return t?`${t[1]}${t[2]}.${t[3]}.${Number(t[4])+1}`:``}return(e,n)=>t.project?(s(),h(`dialog`,gt,[d(`div`,_t,[n[6]||=d(`p`,{class:`eyebrow`},`PUBLICATION`,-1),n[7]||=d(`h3`,null,`发布到公共空间?`,-1),d(`p`,vt,[d(`strong`,null,g(t.project.profile.name),1),n[3]||=d(`span`,null,`发布后会进入共享 Provider,不再只是本机可见。`,-1)]),d(`div`,yt,[d(`label`,null,[n[4]||=d(`span`,null,`发布版本`,-1),i(d(`input`,{"onUpdate:modelValue":n[0]||=e=>u.value=e,maxlength:`64`,placeholder:`例如 v1.0.0`},null,512),[[E,u.value]]),d(`small`,null,g(y.value?`当前版本 ${y.value}`:`首次发布`),1)]),d(`label`,null,[n[5]||=d(`span`,null,`更新内容`,-1),i(d(`textarea`,{"onUpdate:modelValue":n[1]||=e=>f.value=e,maxlength:`4096`,rows:`4`,placeholder:`说明本次新增、调整或修复了什么`},null,512),[[E,f.value]])])]),n[8]||=d(`div`,{class:`publish-impact`,"aria-label":`发布影响`},[d(`div`,null,[d(`strong`,null,`公开可发现`),d(`span`,null,`连接这个公共服务的用户可以看到该项目。`)]),d(`div`,null,[d(`strong`,null,`你成为 Owner`),d(`span`,null,`系统会自动订阅项目,你可以继续维护项目资料。`)]),d(`div`,null,[d(`strong`,null,`同步项目档案`),d(`span`,null,`项目说明、资料摘要和已登记资料会复制到公共项目。`)])],-1),p.value?(s(),h(`p`,bt,g(p.value),1)):v(``,!0),d(`div`,xt,[d(`button`,{class:`secondary-action`,type:`button`,disabled:m.value,onClick:n[2]||=e=>o(`close`)},`取消`,8,St),d(`button`,{class:`primary-action`,type:`button`,disabled:m.value,onClick:C},g(m.value?`正在发布…`:`确认发布`),9,Ct)])])])):v(``,!0)}}),Tt=15,Et=4;async function Dt({personalSpaceId:e,projects:t,query:n,baseline:r,signal:i,limit:a=Tt,request:o=y}){let s=kt(r),c=t.slice(0,a),l=[];for(let t=0;t<c.length;t+=Et){i?.throwIfAborted();let r=c.slice(t,t+Et);l.push(...await Promise.all(r.map(async t=>{try{let r=At(await o(`/api/search?${new URLSearchParams({personalSpaceId:e,personalProjectId:t.project_id,q:n,limit:`30`})}`,{signal:i})).filter(({key:e})=>!s.has(e));return r.length?{status:`matched`,project:t,count:r.length,score:Math.max(...r.map(({score:e})=>e??0))}:{status:`empty`,project:t}}catch(e){if(i?.aborted)throw e;return{status:`failed`,project:t}}})))}return{matches:l.filter(e=>e.status===`matched`).sort((e,t)=>t.score-e.score||t.count-e.count||e.project.profile.name.localeCompare(t.project.profile.name)),checked:l.length,total:t.length,failed:l.filter(({status:e})=>e===`failed`).length}}function Ot(e){let t=e.failed?`;${e.failed} 个项目暂时无法检查`:``;return e.matches.length?`其他个人项目中有候选内容。当前结果不会混入其他项目,可进入项目查看完整命中${t}。`:e.total?e.failed===e.checked?`其他个人项目暂时无法检查,请稍后重试。`:e.checked<e.total?`已检查前 ${e.checked} / ${e.total} 个其他个人项目,也没有发现候选内容${t}。`:`已检查其他个人项目,也没有发现候选内容${t}。`:`当前没有其他个人项目可继续检查。`}function kt(e){return new Set(At(e).map(({key:e})=>e))}function At(e){return[...(e.entities??[]).map(e=>({key:`entity:${e.id}`,score:e.score})),...(e.facts??[]).map(e=>({key:`fact:${e.id}`,score:e.score}))]}var jt={class:`view graph-view vue-knowledge-view`},Mt={class:`knowledge-view-heading`},Nt={class:`knowledge-mode-switch`,role:`tablist`,"aria-label":`知识查看方式`},Pt=[`aria-selected`],Ft=[`aria-selected`],It={class:`muted`},Lt={class:`graph-toolbar`},Rt={key:0,class:`personal-context-picker`},zt={class:`personal-context-panel`},Bt={class:`personal-context-list`},Vt=[`value`,`checked`],Ht=[`placeholder`,`aria-label`,`value`],Ut={class:`graph-view-actions`},Wt={key:1,class:`graph-controls`,role:`group`,"aria-label":`图谱视图控制`},Gt={key:0,class:`view-loading`},Kt={key:1,class:`knowledge-layout`},qt=[`aria-label`],Jt={key:0,class:`directory-kind-tabs`,role:`tablist`,"aria-label":`目录内容类型`},Yt=[`aria-selected`],Xt=[`aria-selected`],Zt={key:1,id:`directory-panel-knowledge`,class:`directory-tab-panel`,role:`tabpanel`,"aria-labelledby":`directory-tab-knowledge`},Qt={class:`directory-section-heading`},$t={class:`knowledge-status-filter`,role:`group`,"aria-label":`知识内容状态`},en=[`aria-pressed`],tn=[`aria-pressed`],nn=[`aria-pressed`],rn={class:`directory-section-count`},an={class:`knowledge-directory-list`},on=[`data-item-key`,`onClick`],sn={class:`knowledge-row-content`},cn={class:`knowledge-row-title`},ln={class:`knowledge-row-type`},un={class:`knowledge-row-source`},dn={class:`knowledge-row-time`},fn={key:0,class:`empty-state`},pn={key:2,id:`directory-panel-materials`,class:`directory-tab-panel`,role:`tabpanel`,"aria-labelledby":`directory-tab-materials`},mn={class:`directory-section-heading`},hn={class:`directory-section-count`},gn={class:`project-material-list`},_n=[`data-item-key`,`onClick`],vn={class:`project-material-copy`},yn={class:`project-material-type`},bn={key:0,class:`empty-state`},xn={key:1,class:`graph-stage`},Sn={key:0,class:`graph-search-status`,"aria-live":`polite`},Cn={class:`graph-search-status-title`},wn={class:`graph-search-status-copy`},Tn={key:0,class:`graph-search-suggestions`},En={key:2,class:`graph-empty`},Dn={key:2,class:`graph-hint`},On=T({__name:`KnowledgeWorkspace`,props:{personalProjectsOnly:{type:Boolean,default:!1}},setup(i){let l=i,_=b(),w=A(),T=te(),E=a(!1),D=a(null),O=a(null),k=a(null),L=a($(w.query.q)),Ce=a(``),we=a(null),Te=a(null),Ee=a(null),De=a(null),Oe=a(null),ke=a(null),R=a(null),Ae=new Set,je=0,z=0,B=null,V=null,H=S(()=>w.params.mode===`graph`?`graph`:`directory`),U=S(()=>l.personalProjectsOnly?`personal`:w.params.scope===`public`?`public`:`personal`),W=S(()=>String(w.params.spaceId??_.activePersonalSpace?.id??``)),G=S(()=>{let e=w.params.projectId;return typeof e==`string`&&e?e:null}),K=S(()=>Bn(w.query.context)),Ne=S(()=>JSON.stringify([l.personalProjectsOnly,U.value,W.value,G.value,K.value])),q=S(()=>ue(D.value)),J=S(()=>l.personalProjectsOnly?ge(D.value):[]),Pe=S(()=>{let e=L.value.trim().toLocaleLowerCase();return e?J.value.filter(t=>[t.title,t.body,t.type,F(t)].some(t=>t.toLocaleLowerCase().includes(e))):J.value}),Fe=S(()=>[...J.value,...q.value]),Y=S(()=>l.personalProjectsOnly?H.value===`directory`&&O.value?ce(O.value)?`materials`:`knowledge`:$(w.query.section)===`materials`?`materials`:`knowledge`:`knowledge`),Ie=S(()=>[...new Set(q.value.map(({type:e})=>e))].sort()),Le=S(()=>[{value:`all`,label:`全部类型`},...Ie.value.map(e=>({value:e,label:e}))]),Re=[{value:`all`,label:`全部象限`},{value:`known_known`,label:`已知的已知`},{value:`known_unknown`,label:`已知的未知`},{value:`unknown_known`,label:`未知的已知`},{value:`unknown_unknown`,label:`未知的未知`}],ze=[{value:`all`,label:`全部知识`},{value:`profile`,label:`协作偏好`},{value:`regular`,label:`项目与通用知识`}],Be=[{value:`all`,label:`全部人工状态`},{value:`human_changed`,label:`人工改过(全部)`},{value:`unseen`,label:`Agent 未查看`},{value:`viewed`,label:`已查看待审核`},{value:`reviewed`,label:`Agent 已审核`}],X=S(()=>{let e=$(w.query.status);return e===`historical`||e===`all`?e:`current`}),Ve=S(()=>({query:L.value,type:$(w.query.type)||`all`,quadrant:$(w.query.quadrant)||`all`,profile:$(w.query.profile)||`all`,status:X.value,humanChange:$(w.query.human)||`all`})),He=S(()=>se(q.value,Ve.value)),Ue=S(()=>q.value.filter(({invalidAt:e})=>!e).length),We=S(()=>q.value.length-Ue.value),Ge=S(()=>X.value===`current`?Ue.value:X.value===`historical`?We.value:q.value.length),qe=S(()=>X.value===`current`?`当前有效`:X.value===`historical`?`已失效`:`全部状态`),Je=S(()=>D.value?pe(D.value):null),Ye=S(()=>{if(!D.value)return E.value?`正在读取知识…`:`尚未读取图谱`;if(H.value===`graph`){let e=Je.value;return Ce.value||`${e?.nodes.length??0} 个节点 · ${e?.edges.length??0} 条当前关系`}return Y.value===`materials`?Pe.value.length===J.value.length?`${J.value.length} 条项目资料`:`显示 ${Pe.value.length} / ${J.value.length} 条项目资料`:He.value.length===Ge.value?`${qe.value} ${Ge.value} 条知识内容`:`${qe.value}:显示 ${He.value.length} / ${Ge.value} 条知识内容`}),Xe=S(()=>String(q.value.length)),Ze=S(()=>String(J.value.length)),Qe=S(()=>(_.state?.personalProjects??[]).filter(({personal_space_id:e})=>e===W.value)),$e=S(()=>Qe.value.filter(({project_id:e})=>e!==G.value)),et=S(()=>{let e=_.state;if(!e)return[];let t=e.personalSpaces.flatMap(t=>[{key:zn(`personal`,t.id,null),scope:`personal`,spaceId:t.id,projectId:null,providerUrl:null,label:`全部个人项目 · ${t.name}`},...(e.personalProjects??[]).filter(({personal_space_id:e})=>e===t.id).map(e=>({key:zn(`personal`,t.id,e.project_id),scope:`personal`,spaceId:t.id,projectId:e.project_id,providerUrl:null,label:`个人项目 · ${e.profile.name}`}))]);if(l.personalProjectsOnly)return t;let n=e.projects.map(e=>({key:zn(`public`,e.id,null),scope:`public`,spaceId:e.id,projectId:null,providerUrl:e.providerUrl,label:`公共项目 · ${e.name}`}));return[...t,...n]}),tt=S(()=>zn(U.value,W.value,G.value)),nt=S(()=>et.value.map(e=>{let t=e.projectId??e.spaceId;return{value:e.key,label:e.label,meta:`#${re(t,26)}`,search:ne(t)}})),rt=S(()=>U.value===`personal`),it=S(()=>_.state?.personalProjects?.find(({project_id:e})=>e===G.value)??null),at=S(()=>Nn(O.value)),ot=S(()=>R.value?R.value.checking?`当前范围没有命中,正在检查其他个人项目…`:R.value.result?Ot(R.value.result):`当前范围没有找到可定位的内容,可以调整关键词后重试。`:``),st=Se(()=>{vt()},300);e([()=>_.state,()=>w.name,()=>w.params.mode,()=>w.params.spaceId],async([e])=>{e&&await ct()},{immediate:!0}),e([()=>_.state,Ne],async([e])=>{e&&await Z()},{immediate:!0}),e(()=>$(w.query.q),e=>{e===L.value||Ae.has(e)||(st.cancel(),bt(),L.value=e,xt(),H.value===`graph`&&e.trim()&&D.value&&!E.value&&V===Ne.value&&St(e.trim()))},{flush:`sync`}),e(H,async()=>{st.cancel(),bt(),xt(),await o(),kt(),vt()}),e([()=>w.params.itemKind,()=>w.params.itemId],()=>kt()),t(()=>{st.cancel(),bt()});async function ct(){let e=_.activePersonalSpace;if(e){if(w.name===`knowledge-default`){await T.replace(M(`personal`,e.id,`directory`));return}if(W.value===`current`){let t=l.personalProjectsOnly?j(e.id,H.value,G.value):M(U.value,e.id,H.value,{projectId:G.value});await T.replace({path:t,query:w.query});return}w.params.mode!==`directory`&&w.params.mode!==`graph`&&await ft(l.personalProjectsOnly?`graph`:`directory`,!0)}}async function Z(){if(!W.value||W.value===`current`)return;let e=Ne.value,t=++je;bt(),E.value=!0,O.value=null,xt();try{let n=G.value&&U.value===`personal`?await lt():await ut(G.value);if(t!==je)return;D.value=n,V=e,kt(),H.value===`graph`&&L.value.trim()&&(await o(),St(L.value.trim()))}catch(e){if(t!==je)return;D.value=null,V=null,_.reportError(e)}finally{t===je&&(E.value=!1)}}async function lt(){let[e,...t]=await Promise.all([ut(G.value),...K.value.map(e=>ut(e))]);return ve([e,...t])}function ut(e){let t=new URLSearchParams({spaceId:W.value,limit:`360`});if(U.value===`public`){let e=dt();e?.providerUrl&&t.set(`providerUrl`,e.providerUrl)}return e&&t.set(`personalProjectId`,e),y(`/api/graph?${t}`)}function dt(){return _.state?.projects.find(({id:e})=>e===W.value)??null}async function ft(e,t=!1){let n=O.value,r=l.personalProjectsOnly?j(W.value,e,G.value,{itemKind:n?.itemKind,itemId:n?.id}):M(U.value,W.value,e,{projectId:G.value,itemKind:n?.itemKind,itemId:n?.id}),i={...w.query};e===`graph`?delete i.section:l.personalProjectsOnly&&n&&(ce(n)?i.section=`materials`:delete i.section),await T[t?`replace`:`push`]({path:r,query:i})}async function pt(e){if(!l.personalProjectsOnly||e===Y.value)return;O.value=null;let t={...w.query};e===`materials`?t.section=`materials`:delete t.section,await T.push({path:j(W.value,`directory`,G.value),query:t})}async function mt(e){let t=et.value.find(({key:t})=>t===e);if(!t)return;let n=l.personalProjectsOnly?j(t.spaceId,H.value,t.projectId):M(t.scope,t.spaceId,H.value,{projectId:t.projectId});await T.push({path:n})}async function Q(e,t){let n={...w.query};!t||t===`all`&&e!==`status`||e===`status`&&t===`current`?delete n[e]:n[e]=t,await T.replace({query:n})}function gt(e){L.value=e,bt(),xt(),st.schedule()}function _t(){st.cancel(),vt()}async function vt(){let e=L.value,t=e.trim();if(await yt(e),!(L.value!==e||H.value===`directory`)){if(!t){bt(),xt();return}E.value||!D.value||V!==Ne.value||await St(t)}}async function yt(e){if($(w.query.q)!==e){Ae.add(e);try{await Q(`q`,e)}catch(e){_.reportError(e)}finally{await o(),Ae.delete(e)}}}function bt(){z+=1,B?.abort(),B=null}function xt(){Ce.value=``,R.value=null,k.value?.clearSelection();let e=O.value;H.value===`graph`&&e&&k.value?.selectItem(e.itemKind,e.id)}async function St(e){let t=_.activePersonalSpace?.id;if(!t)return;bt();let n=z,r=new AbortController;B=r,R.value=null,Ce.value=`正在搜索…`;let i=new URLSearchParams({personalSpaceId:t,q:e,limit:`30`});G.value&&i.set(`personalProjectId`,G.value);for(let e of K.value)i.append(`contextPersonalProjectId`,e);U.value===`public`&&i.append(`projectId`,W.value);try{let a=await y(`/api/search?${i}`,{signal:r.signal});if(n!==z)return;let o=a.facts??[],s=new Set([...(a.entities??[]).map(({name:e})=>e),...o.flatMap(({source_entity:e,target_entity:t})=>[e,t])]),c=k.value?.focusByNames(s,{searchMatch:!0})??0;if(c){Ce.value=`找到 ${a.entities?.length??0} 个实体 · ${o.length} 条关系 · 图中高亮 ${c} 个节点`;return}Ce.value=`当前范围未检索到匹配结果`;let l=U.value===`personal`&&!G.value;if(R.value={query:e,checking:l,result:null},!l)return;let u=await Dt({personalSpaceId:t,projects:Qe.value,query:e,baseline:a,signal:r.signal});if(n!==z)return;R.value={query:e,checking:!1,result:u}}catch(e){if(r.signal.aborted||n!==z)return;Ce.value=`搜索失败`,_.reportError(e)}finally{B===r&&(B=null)}}async function Ct(e){O.value=e;let t=l.personalProjectsOnly?j(W.value,H.value,G.value,{itemKind:e.itemKind,itemId:e.id}):M(U.value,W.value,H.value,{projectId:G.value,itemKind:e.itemKind,itemId:e.id}),n={...w.query};H.value===`directory`&&l.personalProjectsOnly&&(ce(e)?n.section=`materials`:delete n.section),await T.replace({path:t,query:n})}function Tt(e){Ct(Fe.value.find(({itemKind:t,id:n})=>t===`entity`&&n===e.id)??fe(e))}function Et(e){Ct(Fe.value.find(({itemKind:t,id:n})=>t===`relationship`&&n===e.id)??me(e,new Map(D.value?.nodes.map(e=>[e.id,e.name])??[])))}function kt(){let e=w.params.itemKind,t=w.params.itemId;if(typeof e!=`string`||typeof t!=`string`){O.value=null;return}let n=Fe.value.find(n=>n.itemKind===e&&n.id===t),r=e===`entity`?D.value?.nodes.find(({id:e})=>e===t):D.value?.edges.find(({id:e})=>e===t);if(O.value=n??(e===`entity`&&r?fe(r):e===`relationship`&&r?me(r,new Map(D.value?.nodes.map(e=>[e.id,e.name])??[])):null),O.value&&H.value===`directory`){let e=Rn(O.value);o(()=>{let t=[...document.querySelectorAll(`[data-item-key]`)].find(t=>t.dataset.itemKey===e);t?.scrollIntoView?.({block:`center`}),t?.focus({preventScroll:!0})})}}function At(e){let t=e.currentTarget,n=new Set(K.value);t.checked?n.add(t.value):n.delete(t.value),Q(`context`,[...n])}async function On(e){await T.push(j(W.value,H.value,e))}async function kn(e,t){let n=l.personalProjectsOnly?j(W.value,t,G.value,{itemKind:e.itemKind,itemId:e.id}):M(U.value,W.value,t,{projectId:G.value,itemKind:e.itemKind,itemId:e.id}),r={...w.query};if(t===`directory`&&l.personalProjectsOnly&&ce(e)?r.section=`materials`:delete r.section,t===`directory`&&!ce(e)&&!se([e],Ve.value).length)for(let e of[`q`,`type`,`quadrant`,`profile`,`status`,`human`])delete r[e];await T.push({path:n,query:r})}async function An(e){let t=l.personalProjectsOnly?j(W.value,`directory`,G.value,{itemKind:e.itemKind,itemId:e.id}):M(U.value,W.value,`directory`,{projectId:G.value,itemKind:e.itemKind,itemId:e.id}),n={...w.query};for(let e of[`q`,`type`,`quadrant`,`profile`,`human`,`section`])delete n[e];e.invalidAt?n.status=`historical`:delete n.status,await T.push({path:t,query:n})}function jn(e){let t=Nn(e);if(!t){_.reportError(Error(`无法确定这条项目资料所属的个人项目`));return}ke.value=e.itemKind===`entity`?e.type:`PersonalProject`,Oe.value=t}function Mn(e){return e?.profileAspect?null:G.value}function Nn(e){if(!e||!ce(e))return null;let t=_e(e),n=G.value,r=new Set;if(e.itemKind===`entity`)r.add(e.id);else{let t=e.raw;r.add(typeof t.source==`string`?t.source:t.source.id),r.add(typeof t.target==`string`?t.target:t.target.id)}for(let e of D.value?.nodes??[]){if(!r.has(e.id))continue;let t=e.attributes?.projectId;typeof t==`string`&&t&&r.add(t)}if(!t&&!n)for(let e of D.value?.edges??[]){if(!String(e.id).startsWith(`project-profile-edge:`))continue;let t=typeof e.source==`string`?e.source:e.source.id,n=typeof e.target==`string`?e.target:e.target.id;if(!r.has(t)&&!r.has(n))continue;let i=r.has(t)?n:t,a=(D.value?.nodes.find(({id:e})=>e===i))?.attributes?.projectId;typeof a==`string`&&a&&r.add(a)}let i=t??n??[...r].find(e=>_.state?.personalProjects?.some(({project_id:t})=>t===e));return _.state?.personalProjects?.find(({project_id:e})=>e===i)??null}async function Pn(e){await _.refresh(),await Z(),_.notify(`“${e.profile.name}”的项目资料已更新。`)}function Fn(e){let t=_.state?.personalProjects?.find(({project_id:t})=>t===e);t&&(De.value=t)}async function In(e,t){let n={created:`个人项目“${t}”已创建。`,linked:`这条知识已加入“${t}”,主要归属保持不变。`,already_linked:`“${t}”已经在使用这条知识。`,duplicate_reused:`“${t}”已有相同内容,已复用现有节点。`,conflict_pending:`已保留项目操作;冲突内容暂不在“${t}”生效。`,conflict_resolved:`冲突已按当前选择处理,并保留处理记录。`};await _.refresh(),await Z(),_.notify(n[e.status]??`项目知识范围已更新。`)}function Ln(e){if(e.profileAspect)return`${e.preferenceScope===`project`?`项目偏好`:`个人全局`} · ${e.evidence.length?`${e.evidence.length} 个来源`:`无来源记录`}`;let t=e.assignments.at(0),n=e.evidence.find(({personal_project_id:e})=>e)?.personal_project_id,r=t?.project_id??n,i=_.state?.personalProjects?.find(({project_id:e})=>e===r)?.profile.name;return`${i?`主要 ${i}`:`个人全局`} · ${e.evidence.length} 个来源`}function Rn(e){return`${e.itemKind}:${e.id}`}function zn(e,t,n){return JSON.stringify([e,t,n])}function $(e){return typeof e==`string`?e:``}function Bn(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`):typeof e==`string`?[e]:[]}return(e,t)=>(s(),h(`section`,jt,[d(`div`,Mt,[d(`div`,Nt,[d(`button`,{type:`button`,role:`tab`,"aria-selected":H.value===`directory`,onClick:t[0]||=e=>ft(`directory`)},`内容目录`,8,Pt),d(`button`,{type:`button`,role:`tab`,"aria-selected":H.value===`graph`,onClick:t[1]||=e=>ft(`graph`)},`关系图谱`,8,Ft)]),d(`span`,It,g(Ye.value),1)]),d(`div`,Lt,[C(P,{"model-value":tt.value,options:nt.value,label:`图谱空间`,"control-id":`graph-space`,searchable:``,"onUpdate:modelValue":mt},null,8,[`model-value`,`options`]),G.value&&$e.value.length?(s(),h(`details`,Rt,[d(`summary`,null,[t[27]||=c(` 借鉴其他项目 `,-1),d(`span`,null,g(K.value.length?`已选 ${K.value.length}`:`未选择`),1),t[28]||=d(`i`,{class:`searchable-select-arrow`,"aria-hidden":`true`},null,-1)]),d(`div`,zt,[t[30]||=d(`strong`,null,`本次上下文`,-1),t[31]||=d(`p`,null,`只加入当前查看和查询,不改变知识归属。`,-1),d(`div`,Bt,[(s(!0),h(u,null,n($e.value,e=>(s(),h(`label`,{key:e.project_id,class:`personal-context-option`},[d(`input`,{type:`checkbox`,value:e.project_id,checked:K.value.includes(e.project_id),onChange:At},null,40,Vt),d(`span`,null,[d(`strong`,null,g(e.profile.name),1),t[29]||=d(`small`,null,`仅加入当前范围`,-1)])]))),128))])])])):v(``,!0),d(`form`,{class:`search-form`,role:`search`,"aria-label":`知识搜索`,onSubmit:ee(_t,[`prevent`])},[d(`input`,{type:`search`,placeholder:H.value===`directory`&&Y.value===`materials`?`搜索项目资料`:`搜索内容、来源或关系`,"aria-label":H.value===`directory`&&Y.value===`materials`?`搜索项目资料`:`搜索知识内容`,autocomplete:`off`,enterkeyhint:`search`,value:L.value,onInput:t[2]||=e=>gt(e.currentTarget.value)},null,40,Ht)],32),H.value===`directory`&&Y.value===`knowledge`?(s(),h(u,{key:1},[C(P,{"model-value":Ve.value.type,options:Le.value,label:`内容类型`,"control-id":`knowledge-type-filter`,"onUpdate:modelValue":t[3]||=e=>Q(`type`,e)},null,8,[`model-value`,`options`]),C(P,{"model-value":Ve.value.quadrant,options:Re,label:`发现时象限`,"control-id":`knowledge-quadrant-filter`,"onUpdate:modelValue":t[4]||=e=>Q(`quadrant`,e)},null,8,[`model-value`]),C(P,{"model-value":Ve.value.profile,options:ze,label:`知识归类`,"control-id":`knowledge-profile-filter`,"onUpdate:modelValue":t[5]||=e=>Q(`profile`,e)},null,8,[`model-value`]),C(P,{"model-value":Ve.value.humanChange,options:Be,label:`人工变更状态`,"control-id":`knowledge-human-change-filter`,"onUpdate:modelValue":t[6]||=e=>Q(`human`,e)},null,8,[`model-value`])],64)):v(``,!0),d(`div`,Ut,[i.personalProjectsOnly&&it.value&&r(_).state?.capabilities?.publishProject?(s(),h(`button`,{key:0,class:`toolbar-action`,type:`button`,onClick:t[7]||=e=>De.value=it.value},` 发布当前项目 `)):v(``,!0),H.value===`graph`?(s(),h(`div`,Wt,[d(`button`,{class:`toolbar-action`,type:`button`,"aria-label":`缩小图谱`,onClick:t[8]||=e=>k.value?.zoomOut()},`−`),d(`button`,{class:`toolbar-action`,type:`button`,"aria-label":`放大图谱`,onClick:t[9]||=e=>k.value?.zoomIn()},`+`),d(`button`,{class:`toolbar-action`,type:`button`,onClick:t[10]||=e=>k.value?.fit()},`适应`),d(`button`,{class:`toolbar-action`,type:`button`,onClick:t[11]||=e=>k.value?.reset()},`重置`)])):v(``,!0),d(`button`,{class:`toolbar-action`,type:`button`,onClick:Z},`刷新`)])]),E.value&&!D.value?(s(),h(`div`,Gt,`正在读取知识…`)):(s(),h(`div`,Kt,[H.value===`directory`?(s(),h(`section`,{key:0,class:x([`knowledge-directory-panel`,{"has-directory-tabs":i.personalProjectsOnly}]),"aria-label":Y.value===`materials`?`项目资料目录`:`知识内容目录`},[i.personalProjectsOnly?(s(),h(`div`,Jt,[d(`button`,{id:`directory-tab-knowledge`,class:`directory-kind-tab`,type:`button`,role:`tab`,"aria-controls":`directory-panel-knowledge`,"aria-selected":Y.value===`knowledge`,onClick:t[12]||=e=>pt(`knowledge`)},[t[32]||=d(`span`,null,`知识内容`,-1),d(`small`,null,g(Xe.value),1)],8,Yt),d(`button`,{id:`directory-tab-materials`,class:`directory-kind-tab`,type:`button`,role:`tab`,"aria-controls":`directory-panel-materials`,"aria-selected":Y.value===`materials`,onClick:t[13]||=e=>pt(`materials`)},[t[33]||=d(`span`,null,`项目资料`,-1),d(`small`,null,g(Ze.value),1)],8,Xt)])):v(``,!0),Y.value===`knowledge`?(s(),h(`div`,Zt,[d(`header`,Qt,[t[37]||=d(`div`,{class:`directory-section-copy`},[d(`strong`,null,`知识内容`),d(`span`,null,`可确认、纠正、失效或恢复的知识记录。`)],-1),d(`div`,$t,[d(`button`,{class:`knowledge-status-option`,"data-status":`current`,type:`button`,"aria-pressed":X.value===`current`,onClick:t[14]||=e=>Q(`status`,`current`)},[t[34]||=c(` 当前有效 `,-1),d(`span`,null,g(Ue.value),1)],8,en),d(`button`,{class:`knowledge-status-option`,"data-status":`historical`,type:`button`,"aria-pressed":X.value===`historical`,onClick:t[15]||=e=>Q(`status`,`historical`)},[t[35]||=c(` 已失效 `,-1),d(`span`,null,g(We.value),1)],8,tn),d(`button`,{class:`knowledge-status-option`,"data-status":`all`,type:`button`,"aria-pressed":X.value===`all`,onClick:t[16]||=e=>Q(`status`,`all`)},[t[36]||=c(` 全部 `,-1),d(`span`,null,g(q.value.length),1)],8,nn)]),d(`small`,rn,g(He.value.length)+` 条`,1)]),t[38]||=p(`<div class="knowledge-table-head" aria-hidden="true"><span class="knowledge-column-content">内容</span><span class="knowledge-column-quadrant">发现时象限</span><span class="knowledge-column-review">确认状态</span><span class="knowledge-column-type">类型</span><span class="knowledge-column-source">来源</span><span class="knowledge-column-time">更新时间</span><span class="knowledge-column-validity">有效性</span></div>`,1),d(`div`,an,[(s(!0),h(u,null,n(He.value,e=>(s(),h(`button`,{key:`${e.itemKind}:${e.id}`,class:x([`knowledge-row`,{selected:O.value?.itemKind===e.itemKind&&O.value?.id===e.id}]),type:`button`,"data-item-key":Rn(e),onClick:t=>Ct(e)},[d(`span`,sn,[d(`span`,cn,[d(`strong`,null,g(e.title),1),e.humanChangeStatus===`unseen`||e.humanChangeStatus===`viewed`?(s(),h(`em`,{key:0,class:x([`human-change-badge`,`state-${e.humanChangeStatus}`])},g(r(he)(e.humanChangeStatus)),3)):v(``,!0)]),d(`small`,null,g(e.profileAspect?`${r(ie)(e.profileAspect)} · ${e.body}`:e.body),1)]),d(`span`,{class:x([`knowledge-row-quadrant`,e.originQuadrant])},g(r(ae)(e.originQuadrant)),3),d(`span`,{class:x([`knowledge-review-state`,`state-${r(le)(e)}`])},g(r(I)(e)),3),d(`span`,ln,g(e.type),1),d(`span`,un,g(Ln(e)),1),d(`span`,dn,g(r(de)(r(oe)(e))),1),d(`span`,{class:x([`knowledge-status`,e.invalidAt?`historical`:`current`])},g(e.invalidAt?`已失效`:`有效`),3)],10,on))),128))]),He.value.length?v(``,!0):(s(),h(`div`,fn,g(q.value.length?`当前筛选条件下没有知识内容`:`这个项目还没有可确认或翻转状态的知识内容`),1))])):(s(),h(`div`,pn,[d(`header`,mn,[t[39]||=d(`div`,{class:`directory-section-copy`},[d(`strong`,null,`项目资料`),d(`span`,null,`项目目标、范围和结构关系;通过“编辑项目资料”修改。`)],-1),d(`small`,hn,g(Pe.value.length)+` 条`,1)]),d(`div`,gn,[(s(!0),h(u,null,n(Pe.value,e=>(s(),h(`button`,{key:Rn(e),class:x([`project-material-row`,{selected:O.value?.itemKind===e.itemKind&&O.value?.id===e.id}]),type:`button`,"data-item-key":Rn(e),onClick:t=>Ct(e)},[d(`span`,vn,[d(`strong`,null,g(e.itemKind===`entity`?e.title:e.type),1),d(`small`,null,g(e.body),1)]),d(`span`,yn,g(r(F)(e)),1),t[40]||=d(`span`,{class:`project-material-link`},`查看详情 →`,-1)],10,_n))),128))]),Pe.value.length?v(``,!0):(s(),h(`div`,bn,g(J.value.length?`当前搜索条件下没有项目资料`:`这个项目还没有项目资料`),1))]))],10,qt)):(s(),h(`div`,xn,[R.value?(s(),h(`aside`,Sn,[t[42]||=d(`span`,{class:`graph-search-status-kicker`},`当前范围未命中`,-1),d(`strong`,Cn,`没有检索到“`+g(R.value.query)+`”`,1),d(`p`,wn,g(ot.value),1),R.value.result?.matches.length?(s(),h(`div`,Tn,[(s(!0),h(u,null,n(R.value.result.matches.slice(0,5),e=>(s(),f(r(N),{key:e.project.project_id,class:`graph-search-suggestion`,to:{path:r(j)(W.value,`graph`,e.project.project_id),query:{q:R.value.query}}},{default:m(()=>[d(`span`,null,[d(`strong`,null,g(e.project.profile.name),1),d(`small`,null,g(e.count)+` 条候选内容`,1)]),t[41]||=d(`b`,null,`进入项目搜索 →`,-1)]),_:2},1032,[`to`]))),128))])):v(``,!0)])):v(``,!0),Je.value?.nodes.length?(s(),f(Me,{key:1,ref_key:`graphCanvas`,ref:k,graph:Je.value,"selected-item":O.value,onSelectNode:Tt,onSelectEdge:Et},null,8,[`graph`,`selected-item`])):(s(),h(`div`,En,g(E.value?`正在读取知识…`:`这个空间还没有可展示的关系图`),1))])),C(xe,{item:O.value,graph:D.value,editable:rt.value,"current-project-id":G.value,"can-publish-project":r(_).state?.capabilities?.publishProject,"can-manage-project":!!at.value,mode:H.value,onConfirm:t[17]||=e=>we.value=e,onEdit:t[18]||=e=>Te.value=e,onCreateProject:t[19]||=e=>Ee.value=e,onOpenProject:On,onPublishProject:Fn,onOpenDirectory:t[20]||=e=>kn(e,`directory`),onOpenGraph:t[21]||=e=>kn(e,`graph`),onOpenReplacement:An,onManageProject:jn},null,8,[`item`,`graph`,`editable`,`current-project-id`,`can-publish-project`,`can-manage-project`,`mode`])])),H.value===`graph`?(s(),h(`p`,Dn,`滚轮缩放 · 拖动画布 · 点击查看详情 · 悬停显示节点短 ID`)):v(``,!0),C(ye,{item:Te.value,"personal-space-id":r(_).activePersonalSpace?.id??W.value,"personal-project-id":Mn(Te.value),projects:r(_).state?.personalProjects??[],"replacement-items":q.value,onClose:t[22]||=e=>Te.value=null,onSaved:Z},null,8,[`item`,`personal-space-id`,`personal-project-id`,`projects`,`replacement-items`]),C(be,{item:we.value,"personal-space-id":r(_).activePersonalSpace?.id??W.value,"personal-project-id":Mn(we.value),onClose:t[23]||=e=>we.value=null,onSaved:Z},null,8,[`item`,`personal-space-id`,`personal-project-id`]),C(Ke,{item:Ee.value,"personal-space-id":r(_).activePersonalSpace?.id??W.value,"personal-project-id":G.value,projects:r(_).state?.personalProjects??[],onClose:t[24]||=e=>Ee.value=null,onSaved:In},null,8,[`item`,`personal-space-id`,`personal-project-id`,`projects`]),C(wt,{project:De.value,onClose:t[25]||=e=>De.value=null,onPublished:Z},null,8,[`project`]),C(ht,{project:Oe.value,"material-type":ke.value,onClose:t[26]||=e=>Oe.value=null,onSaved:Pn},null,8,[`project`,`material-type`])]))}});export{On as t};
@@ -1 +0,0 @@
1
- import{L as e,T as t,d as n,g as r,m as i,nt as a,t as o,tt as s,u as c,y as l}from"./console-tbvTUi6p.js";var u={class:`view`},d={class:`metrics`,"aria-label":`运行概览`},f={class:`two-column`},p={class:`section-block`},m={class:`provider-list`},h={class:`provider-row`},g={class:`provider-state`},_={class:`provider-row`},v={class:`provider-state`},y=l({__name:`OverviewPage`,setup(l){let y=o(),b=c(()=>y.state),x=c(()=>b.value?.providers?.workspaces??[]),S=c(()=>x.value.filter(({status:e})=>e===`ready`).length);return(o,c)=>(t(),i(`section`,u,[c[8]||=n(`div`,{class:`intro-row`},[n(`div`,null,[n(`h3`,null,`知识在会话中静默生长`),n(`p`,null,`个人知识直接进入本机图谱;只有主动提交公共项目时才会进入发布审核。`)]),n(`span`,{class:`mode-chip`},`Agent structured`)],-1),n(`div`,d,[n(`article`,null,[n(`strong`,null,a(b.value?.personalSpaces.length??0),1),c[0]||=n(`span`,null,`个人图谱`,-1)]),n(`article`,null,[n(`strong`,null,a(b.value?.projects.length??0),1),c[1]||=n(`span`,null,`可访问项目`,-1)]),n(`article`,null,[n(`strong`,null,a(b.value?.subscriptions.length??0),1),c[2]||=n(`span`,null,`项目订阅`,-1)]),n(`article`,null,[n(`strong`,null,a(b.value?.personalProjects?.length??0),1),c[3]||=n(`span`,null,`个人项目`,-1)])]),n(`div`,f,[c[7]||=r(`<section class="section-block"><div class="section-title"><h3>数据流</h3></div><ol class="flow-list"><li><span>1</span><div><strong>Agent 识别稳定知识</strong><p>不保存整段会话和临时输出。</p></div></li><li><span>2</span><div><strong>生成结构化实体与关系</strong><p>带来源、发现时象限、确认依据和幂等键。</p></div></li><li><span>3</span><div><strong>按归属路由</strong><p>个人知识直接生效;主动提交公共时才经过审核。</p></div></li></ol></section>`,1),n(`section`,p,[c[6]||=n(`div`,{class:`section-title`},[n(`h3`,null,`Provider`)],-1),n(`div`,m,[n(`div`,h,[n(`i`,{class:s({error:b.value?.providers?.personal?.status!==`ready`})},null,2),c[4]||=n(`div`,null,[n(`strong`,null,`本地知识库`),n(`span`,null,`Graphiti / Neo4j`)],-1),n(`span`,g,a(b.value?.providers?.personal?.status===`ready`?`已连接`:`连接异常`),1)]),n(`div`,_,[n(`i`,{class:s(e(y).publicRuntimeStatus)},null,2),n(`div`,null,[c[5]||=n(`strong`,null,`公共服务`,-1),n(`span`,null,a(e(y).publicRuntimeStatus===`ready`?`${S.value||x.value.length} 个共享服务可用`:e(y).publicRuntimeStatus===`error`?`已配置但暂时不可用`:`未连接 · 不影响本机`),1)]),n(`span`,v,a(e(y).publicRuntimeStatus===`ready`?`已连接`:e(y).publicRuntimeStatus===`error`?`连接异常`:`未连接`),1)])])])])]))}});export{y as default};
@@ -1 +0,0 @@
1
- import{A as e,D as t,L as n,M as r,P as i,T as a,_ as o,a as s,c,d as l,i as u,m as d,nt as f,p,r as m,t as ee,tt as h,u as g,v as _,y as v}from"./console-tbvTUi6p.js";import{a as y,i as b}from"./runtime-dom.esm-bundler-DttsK21F.js";import{r as te}from"./identity-B3s5CXhv.js";import{E as x,S,T as C,_ as w,b as T,g as E,l as D}from"./model-DVT8sjy9.js";import{i as O,n as ne,r as k,t as A}from"./KnowledgeInspector-BSpz5Sfm.js";function j(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(!V(a,o)||!H(a,o)||U(a,o))continue;let[s,c]=W(a,o),l=R(F(s),F(c)),u=B(l)?`complementary`:`review`,d=t.find(e=>e.status===`ai_pending`&&N(e,s,c))??null;n.push({id:K(s,c),preferenceKey:P(s),scopeKey:I(s),scopeLabel:L(s),left:s,right:c,difference:l,relation:u,recommendedAction:u===`complementary`?`merge`:null,reason:`偏好键“${P(s)}”和生效范围相同,但当前内容不一致。`,aiRecord:d})}return n.sort((e,t)=>e.scopeKey.localeCompare(t.scopeKey,`zh-CN`)||e.preferenceKey.localeCompare(t.preferenceKey,`zh-CN`))}function M(e){return[e.left_item_id,e.right_item_id]}function N(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 P(e){let t=e.raw.attributes??{};return String(t.preferenceKey??t.preference_key??e.title).trim()}function F(e){return e.body.trim()}function I(e){return e.preferenceScope===`project`&&e.preferenceProjectId?`project:${e.preferenceProjectId}`:`global`}function L(e){return e.preferenceScope===`project`&&e.preferenceProjectId?`项目范围 · ${e.preferenceProjectId}`:`个人全局`}function R(e,t){let n=q(e),r=q(t),i=new Set,a=[],o=[];for(let e of n){let t=r.findIndex((t,n)=>!i.has(n)&&J(e,t));if(t<0){o.push(e);continue}i.add(t),a.push(Y(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 z(e,t){let n=[...q(e)];for(let e of q(t)){let t=n.findIndex(t=>J(t,e));if(t<0){n.push(e);continue}n[t]=Y(n[t],e)}if(!n.length)return``;let r=n.some(e=>e.length>24)?`;`:`、`;return n.join(r)}function B(e){return e.shared.length>0&&(e.leftOnly.length===0||e.rightOnly.length===0)}function V(e,t){return I(e)===I(t)}function H(e,t){return X(P(e))===X(P(t))}function U(e,t){return X(F(e))===X(F(t))}function W(e,t){let n=G(e),r=G(t);return n===r?e.id.localeCompare(t.id)<=0?[e,t]:[t,e]:n<=r?[e,t]:[t,e]}function G(e){let t=w(e);if(!t)return 0;let n=new Date(t).getTime();return Number.isNaN(n)?0:n}function K(e,t){return[e.itemKind,e.id,t.itemKind,t.id].join(`:`)}function q(e){return e.split(/[\n\r,,、;;。.!!??]+/u).map(e=>e.trim()).filter(Boolean)}function J(e,t){let n=X(e),r=X(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 Y(e,t){return X(e).length>=X(t).length?e:t}function X(e){return String(e??``).trim().toLocaleLowerCase().replace(/[“”‘’"'`]/gu,``).replace(/\s+/gu,` `)}var re={key:0,open:``,class:`project-dialog conflict-resolution-dialog vue-dialog`},ie={class:`project-dialog-shell conflict-resolution-shell`},Z={class:`project-dialog-header`},ae=[`disabled`],oe={class:`conflict-pair-context`,"aria-label":`冲突判断依据`},Q={class:`conflict-comparison`,"aria-label":`冲突双方`},se={class:`conflict-side conflict-side-left`},ce={class:`conflict-side-heading`},le={class:`conflict-side conflict-side-right`},$={class:`conflict-side-heading`},ue={class:`conflict-difference`,"aria-label":`差异摘要`},de={key:0},fe={key:1,class:`muted`},pe={key:0},me={key:1,class:`muted`},he={key:0},ge={key:1,class:`muted`},_e={class:`conflict-resolution-options`,"aria-label":`处理方式`},ve=[`aria-pressed`],ye={key:0},be=[`aria-pressed`],xe=[`aria-pressed`],Se=[`disabled`,`aria-pressed`],Ce={key:0,class:`conflict-resolution-detail`},we={class:`conflict-inline-options`,role:`group`,"aria-label":`合并后保留哪条记录`},Te=[`aria-pressed`],Ee=[`aria-pressed`],De={key:1,class:`conflict-resolution-detail`},Oe={class:`conflict-inline-options`,role:`group`,"aria-label":`调整哪条记录`},ke=[`aria-pressed`],Ae=[`aria-pressed`],je=[`value`],Me={class:`conflict-impact-preview`},Ne={class:`conflict-resolution-reason`},Pe={key:2,class:`dialog-error`},Fe={class:`project-dialog-actions conflict-resolution-actions`},Ie=[`disabled`],Le=[`disabled`],Re=O(v({__name:`PreferenceConflictDialog`,props:{conflict:{},personalSpaceId:{},projects:{}},emits:[`close`,`resolved`,`edit`],setup(m,{emit:h}){let _=m,v=h,te=ee(),x=i(null),S=i(`right`),C=i(`right`),T=i(``),E=i(``),O=i(``),ne=i(``),k=i(!1),A=i(``),j=g(()=>{let e=_.conflict;if(!e)return[];let t=C.value===`left`?e.left:e.right;return _.projects.filter(({project_id:e})=>t.preferenceScope!==`project`||e!==t.preferenceProjectId)}),M=g(()=>j.value.length>0),N=g(()=>{let e=_.conflict;if(!e||!x.value)return`先选择处理方式;确认前不会写入任何更改。`;if(x.value===`merge`){let t=S.value===`left`?e.left:e.right,n=S.value===`left`?e.right:e.left;return`“${t.title}”将更新为合并后的规范内容并由你确认;“${n.title}”转为历史记录,并链接到保留项。两条记录的修订与来源仍可追溯。`}if(x.value===`keep_left`||x.value===`keep_right`){let t=x.value===`keep_left`?e.left:e.right,n=x.value===`keep_left`?e.right:e.left;return`“${t.title}”继续生效;“${n.title}”转为历史记录,并明确指向保留项。`}let t=C.value===`left`?e.left:e.right,n=j.value.find(({project_id:e})=>e===T.value);return n?`“${t.title}”将改为仅在“${n.profile.name}”生效;另一条保留原范围,两条内容不再争夺同一个生效位置。`:`请选择一个不同的项目范围,系统才会执行拆分。`});e(()=>_.conflict,e=>{e&&(S.value=`right`,C.value=`right`,E.value=z(F(e.right),F(e.left)),x.value=e.recommendedAction,T.value=``,A.value=``,I(e.recommendedAction))},{immediate:!0}),e([C,j],()=>{T.value&&j.value.some(({project_id:e})=>e===T.value)||(T.value=j.value[0]?.project_id??``)},{immediate:!0});function P(e){x.value=e,(!O.value.trim()||O.value===ne.value)&&I(e)}function I(e){let t=_.conflict,n=t&&e?U(e,t):``;ne.value=n,O.value=n}async function L(){let e=_.conflict;if(!e||!x.value)return W(`请选择一种处理方式`);if(!O.value.trim())return W(`请说明本次判断依据`);if(x.value===`merge`&&!E.value.trim())return W(`合并后的规范内容不能为空`);if(x.value===`split_scope`&&!T.value)return W(`请选择拆分后的项目范围`);k.value=!0,A.value=``;try{x.value===`merge`?await R(e):x.value===`split_scope`?await V(e):await B(e,x.value),e.aiRecord&&await s(`/api/preference-conflicts/${encodeURIComponent(e.aiRecord.id)}/complete`,{personalSpaceId:_.personalSpaceId,resolution:x.value,reason:O.value.trim()}),te.notify(`疑似冲突已处理,生效结果与历史记录均已更新。`),v(`resolved`),v(`close`)}catch(e){A.value=e instanceof Error?e.message:`冲突处理失败`,te.reportError(e)}finally{k.value=!1}}async function R(e){let t=S.value===`left`?e.left:e.right,n=S.value===`left`?e.right:e.left,r={personalSpaceId:_.personalSpaceId,personalProjectId:null,action:`update`,reason:O.value.trim()};t.itemKind===`entity`?(r.name=t.title,r.summary=E.value.trim()):r.fact=E.value.trim(),t.classificationExplicit&&t.originQuadrant!==`unclassified`&&(r.originQuadrant=t.originQuadrant,r.confirmationStatus=`confirmed`,r.confirmationBasis={existenceReason:`由两条疑似冲突偏好合并:${e.reason}`,quadrantReason:t.confirmationBasis?.quadrant_reason||t.reasoningSummary||`沿用保留记录的发现时分类。`,proposedBy:t.confirmationBasis?.proposed_by?H(t.confirmationBasis.proposed_by):{kind:`import`,label:`历史记录`},confirmedBy:{kind:`user`,label:`用户`},confirmedAt:new Date().toISOString()}),await u(`/api/knowledge/${t.itemKind}/${encodeURIComponent(t.id)}`,r),await u(`/api/knowledge/${n.itemKind}/${encodeURIComponent(n.id)}`,{personalSpaceId:_.personalSpaceId,personalProjectId:null,action:`invalidate`,reason:O.value.trim(),replacementItemId:t.id,replacementItemKind:t.itemKind})}async function B(e,t){let n=t===`keep_left`?e.left:e.right,r=t===`keep_left`?e.right:e.left;await u(`/api/knowledge/${r.itemKind}/${encodeURIComponent(r.id)}`,{personalSpaceId:_.personalSpaceId,personalProjectId:null,action:`invalidate`,reason:O.value.trim(),replacementItemId:n.id,replacementItemKind:n.itemKind})}async function V(e){let t=C.value===`left`?e.left:e.right;await s(`/api/knowledge/${t.itemKind}/${encodeURIComponent(t.id)}/preference-scope`,{personalSpaceId:_.personalSpaceId,scope:`project`,projectId:T.value,reason:O.value.trim()})}function H(e){return{kind:e.kind,label:e.label??null}}function U(e,t){return e===`merge`?`两条偏好描述同一规则且内容互补,合并为一条规范版本。`:e===`keep_left`?`较早记录“${t.left.title}”仍是当前准确口径,另一条转为历史。`:e===`keep_right`?`较新记录“${t.right.title}”是当前准确口径,另一条转为历史。`:`两条偏好适用于不同项目,拆分生效范围并同时保留。`}function W(e){A.value=e}return(e,i)=>m.conflict?(a(),d(`dialog`,re,[l(`div`,ie,[l(`header`,Z,[l(`div`,null,[i[15]||=l(`p`,{class:`eyebrow`},`CONFLICT RESOLUTION`,-1),i[16]||=l(`h3`,null,`比较并处理疑似冲突`,-1),l(`p`,null,f(m.conflict.reason)+` 系统只提供证据和影响预览,最终决定由你确认。`,1)]),l(`button`,{class:`secondary-action`,type:`button`,disabled:k.value,onClick:i[0]||=e=>v(`close`)},` 关闭 `,8,ae)]),l(`section`,oe,[l(`span`,null,[i[17]||=o(`偏好键 `,-1),l(`strong`,null,f(m.conflict.preferenceKey),1)]),l(`span`,null,[i[18]||=o(`生效范围 `,-1),l(`strong`,null,f(m.conflict.scopeLabel),1)]),l(`span`,null,[i[19]||=o(` 建议 `,-1),l(`strong`,null,f(m.conflict.recommendedAction===`merge`?`内容互补,优先合并`:`差异较大,先人工判断`),1)])]),l(`section`,Q,[l(`article`,se,[l(`div`,ce,[i[20]||=l(`span`,null,`A · 较早记录`,-1),l(`time`,null,f(n(D)(n(w)(m.conflict.left))),1)]),l(`h4`,null,f(m.conflict.left.title),1),l(`p`,null,f(n(F)(m.conflict.left)),1),l(`small`,null,f(m.conflict.left.evidence.length)+` 个来源 · `+f(m.conflict.left.id),1),l(`button`,{class:`text-action`,type:`button`,onClick:i[1]||=e=>v(`edit`,m.conflict.left)},` 单独纠正 A `)]),l(`article`,le,[l(`div`,$,[i[21]||=l(`span`,null,`B · 较新记录`,-1),l(`time`,null,f(n(D)(n(w)(m.conflict.right))),1)]),l(`h4`,null,f(m.conflict.right.title),1),l(`p`,null,f(n(F)(m.conflict.right)),1),l(`small`,null,f(m.conflict.right.evidence.length)+` 个来源 · `+f(m.conflict.right.id),1),l(`button`,{class:`text-action`,type:`button`,onClick:i[2]||=e=>v(`edit`,m.conflict.right)},` 单独纠正 B `)])]),l(`section`,ue,[l(`div`,null,[i[22]||=l(`span`,null,`双方共有`,-1),m.conflict.difference.shared.length?(a(),d(`p`,de,[(a(!0),d(c,null,t(m.conflict.difference.shared,e=>(a(),d(`b`,{key:e},f(e),1))),128))])):(a(),d(`p`,fe,`没有检测到可以直接对齐的共同片段`))]),l(`div`,null,[i[23]||=l(`span`,null,`仅 A 有`,-1),m.conflict.difference.leftOnly.length?(a(),d(`p`,pe,[(a(!0),d(c,null,t(m.conflict.difference.leftOnly,e=>(a(),d(`b`,{key:e},f(e),1))),128))])):(a(),d(`p`,me,`没有独有片段`))]),l(`div`,null,[i[24]||=l(`span`,null,`仅 B 有`,-1),m.conflict.difference.rightOnly.length?(a(),d(`p`,he,[(a(!0),d(c,null,t(m.conflict.difference.rightOnly,e=>(a(),d(`b`,{key:e},f(e),1))),128))])):(a(),d(`p`,ge,`没有独有片段`))])]),l(`section`,_e,[l(`button`,{type:`button`,"aria-pressed":x.value===`merge`,onClick:i[3]||=e=>P(`merge`)},[i[25]||=l(`strong`,null,`合并为规范版本`,-1),i[26]||=l(`span`,null,`保留双方独有信息;一条更新,一条转为历史。`,-1),m.conflict.recommendedAction===`merge`?(a(),d(`em`,ye,`推荐`)):p(``,!0)],8,ve),l(`button`,{type:`button`,"aria-pressed":x.value===`keep_left`,onClick:i[4]||=e=>P(`keep_left`)},[...i[27]||=[l(`strong`,null,`保留 A`,-1),l(`span`,null,`B 转为历史,并链接到 A。`,-1)]],8,be),l(`button`,{type:`button`,"aria-pressed":x.value===`keep_right`,onClick:i[5]||=e=>P(`keep_right`)},[...i[28]||=[l(`strong`,null,`保留 B`,-1),l(`span`,null,`A 转为历史,并链接到 B。`,-1)]],8,xe),l(`button`,{type:`button`,disabled:!M.value,"aria-pressed":x.value===`split_scope`,onClick:i[6]||=e=>P(`split_scope`)},[i[29]||=l(`strong`,null,`拆分生效范围`,-1),l(`span`,null,f(M.value?`两条都保留,但不再作用于同一范围。`:`没有其他个人项目可选。`),1)],8,Se)]),x.value===`merge`?(a(),d(`section`,Ce,[l(`div`,we,[i[30]||=l(`span`,null,`规范版本沿用`,-1),l(`button`,{type:`button`,"aria-pressed":S.value===`left`,onClick:i[7]||=e=>S.value=`left`},` A 的记录身份 `,8,Te),l(`button`,{type:`button`,"aria-pressed":S.value===`right`,onClick:i[8]||=e=>S.value=`right`},` B 的记录身份 `,8,Ee)]),l(`label`,null,[i[31]||=o(` 合并后的规范内容 `,-1),r(l(`textarea`,{"onUpdate:modelValue":i[9]||=e=>E.value=e,rows:`4`,maxlength:`4096`},null,512),[[y,E.value]])])])):p(``,!0),x.value===`split_scope`?(a(),d(`section`,De,[l(`div`,Oe,[i[32]||=l(`span`,null,`调整记录`,-1),l(`button`,{type:`button`,"aria-pressed":C.value===`left`,onClick:i[10]||=e=>C.value=`left`},` A `,8,ke),l(`button`,{type:`button`,"aria-pressed":C.value===`right`,onClick:i[11]||=e=>C.value=`right`},` B `,8,Ae)]),l(`label`,null,[i[34]||=o(` 改为仅在以下项目生效 `,-1),r(l(`select`,{"onUpdate:modelValue":i[12]||=e=>T.value=e},[i[33]||=l(`option`,{value:``,disabled:``},`请选择个人项目`,-1),(a(!0),d(c,null,t(j.value,e=>(a(),d(`option`,{key:e.project_id,value:e.project_id},f(e.profile.name),9,je))),128))],512),[[b,T.value]])])])):p(``,!0),l(`section`,Me,[i[35]||=l(`span`,null,`确认后会发生什么`,-1),l(`p`,null,f(N.value),1)]),l(`label`,Ne,[i[36]||=o(` 本次判断依据 `,-1),r(l(`textarea`,{"onUpdate:modelValue":i[13]||=e=>O.value=e,rows:`2`,maxlength:`2000`},null,512),[[y,O.value]])]),A.value?(a(),d(`p`,Pe,f(A.value),1)):p(``,!0),l(`footer`,Fe,[i[37]||=l(`span`,null,`暂不处理不会更改数据,这组记录会继续显示为疑似冲突。`,-1),l(`div`,null,[l(`button`,{class:`secondary-action`,type:`button`,disabled:k.value,onClick:i[14]||=e=>v(`close`)},` 暂不处理 `,8,Ie),l(`button`,{class:`primary-action`,type:`button`,disabled:k.value||!x.value,onClick:L},f(k.value?`正在处理…`:`确认并执行`),9,Le)])])])])):p(``,!0)}}),[[`__scopeId`,`data-v-18d4346c`]]),ze={class:`view vue-personal-profile`},Be={class:`personal-profile-summary`,"aria-label":`协作偏好状态`},Ve=[`aria-label`,`aria-pressed`],He=[`aria-label`,`aria-pressed`],Ue=[`aria-label`,`aria-pressed`],We={key:0},Ge={key:1},Ke=[`aria-label`,`aria-pressed`],qe={key:0,class:`preference-conflict-alert`,"aria-label":`待处理的疑似冲突`},Je={class:`personal-profile-toolbar`},Ye={class:`personal-profile-filter-groups`},Xe={class:`personal-profile-filters`,role:`group`,"aria-label":`协作偏好维度`},Ze=[`aria-pressed`,`onClick`],Qe={class:`personal-profile-toolbar-actions`},$e={key:0,class:`muted`},et={key:1,class:`muted`},tt={key:2,class:`muted`},nt={key:1,class:`preference-conflict-workbench`,"aria-label":`疑似冲突待判断组`},rt={class:`preference-conflict-list`},it={class:`preference-conflict-card-heading`},at={class:`preference-conflict-pair`},ot={key:0},st={class:`preference-conflict-actions`},ct=[`disabled`,`onClick`],lt=[`onClick`],ut={key:0,class:`empty-state`},dt={key:2,class:`personal-profile-layout`},ft={class:`personal-profile-directory`,"aria-label":`协作偏好内容`},pt={class:`personal-profile-list`},mt=[`onClick`],ht={class:`personal-profile-copy`},gt={class:`personal-profile-origin`},_t={key:0,class:`empty-state`},vt=O(v({__name:`PersonalProfilePage`,setup(r){let u=ee(),v=i(null),y=i(!1),b=i(`all`),O=i(`all`),N=i(`all`),P=i(!1),I=i(null),L=i(null),R=i(null),z=i(null),B=i([]),V=i(``),H=g(()=>T(v.value)),U=g(()=>j(H.value,B.value)),W=g(()=>new Set(U.value.flatMap(({left:e,right:t})=>[e.id,t.id]))),G=g(()=>new Set(B.value.filter(({status:e,resolved_by:t})=>e===`resolved`&&t===`agent`).flatMap(M))),K=g(()=>H.value.filter(e=>Q(e)&&(N.value===`all`||E(e)===N.value))),q=g(()=>U.value.filter(({left:e,right:t})=>Q(e)||Q(t))),J=g(()=>{let e=new Map((u.state?.personalProjects??[]).map(e=>[e.project_id,e.profile.name])),t=[...new Set(H.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,`zh-CN`));return[{value:`all`,label:`全部范围`,meta:`${H.value.length} 条`},{value:`global`,label:`个人全局`,meta:`${H.value.filter(({preferenceScope:e})=>e!==`project`).length} 条`},...t.map(t=>({value:`project:${t}`,label:e.get(t)??t,meta:`${H.value.filter(({preferenceScope:e,preferenceProjectId:n})=>e===`project`&&n===t).length} 条项目偏好`,search:t}))]}),Y=g(()=>H.value.filter(e=>E(e)===`confirmed`).length),X=g(()=>H.value.filter(e=>E(e)===`pending`).length),re=g(()=>H.value.filter(e=>E(e)===`agent_confirmed`).length),ie=g(()=>P.value?`正在成对查看疑似冲突;再次点击可返回全部偏好。`:N.value===`pending`?`已筛出待确认偏好。点击条目核对依据,再选择确认、纠正或标记失效。`:N.value===`confirmed`?`已筛出确认人和确认时间完整的偏好;再次点击可返回全部偏好。`:N.value===`agent_confirmed`?`已筛出由实际使用证据形成的 Agent 已确认偏好;它们仍低于人工确认。`:`点击状态数字可筛选内容;疑似冲突会进入成对处理工作台。`);e(()=>u.activePersonalSpace?.id,e=>{e&&Z(e)},{immediate:!0}),e([b,O,N,P],()=>{I.value&&!K.value.some(({id:e})=>e===I.value?.id)&&(I.value=null)}),e(J,e=>{e.some(({value:e})=>e===O.value)||(O.value=`all`)});async function Z(e=u.activePersonalSpace?.id){if(e){y.value=!0;try{let t=new URLSearchParams({spaceId:e,limit:`500`}),n=new URLSearchParams({personalSpaceId:e,limit:`500`}),[r,i]=await Promise.all([m(`/api/graph?${t}`),m(`/api/preference-conflicts?${n}`)]);v.value=r,B.value=Array.isArray(i)?i:[],I.value&&=H.value.find(({id:e})=>e===I.value?.id)??null}catch(e){v.value=null,u.reportError(e)}finally{y.value=!1}}}function ae(e){let t=x(e),n=U.value.find(({left:t,right:n})=>t.id===e.id||n.id===e.id);return n?.aiRecord?`${t} · 待 AI 使用时判断`:n?`${t} · 疑似冲突`:G.value.has(e.id)?`${t} · 曾冲突 / AI 已处理`:t}function oe(e){return e.preferenceScope!==`project`||!e.preferenceProjectId?`个人全局`:`仅 ${(u.state?.personalProjects?.find(({project_id:t})=>t===e.preferenceProjectId))?.profile.name??e.preferenceProjectId}`}function Q(e){if(b.value!==`all`&&e.profileAspect!==b.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 se(e){if(e.scopeKey===`global`)return`个人全局`;let t=e.scopeKey.slice(8);return`仅 ${(u.state?.personalProjects?.find(({project_id:e})=>e===t))?.profile.name??t}`}function ce(e){b.value=e.profileAspect??`all`,O.value=e.preferenceScope===`project`&&e.preferenceProjectId?`project:${e.preferenceProjectId}`:`global`,P.value=!1,I.value=e}function le(e){z.value=null,R.value=e}function $(e){let t=!P.value&&N.value===e?`all`:e;P.value=!1,N.value=t,t!==`all`&&(I.value=K.value.at(0)??null)}function ue(e=!1){let t=e||!P.value;P.value=t,t&&(N.value=`all`,I.value=null)}async function de(e){let t=u.activePersonalSpace?.id;if(!(!t||e.aiRecord)){V.value=e.id;try{let n=await s(`/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:`用户选择交给 AI,在首次相关使用前判断并处理。`});B.value=[n,...B.value.filter(({id:e})=>e!==n.id)],u.notify(`已交给 AI:只有后续任务实际用到这组内容时,Agent 才会先判断并处理。`)}catch(e){u.reportError(e)}finally{V.value=``}}}return(e,r)=>(a(),d(`section`,ze,[l(`div`,Be,[l(`button`,{type:`button`,class:`profile-summary-action state-confirmed`,"aria-label":`查看 ${Y.value} 条已确认偏好`,"aria-pressed":!P.value&&N.value===`confirmed`,onClick:r[0]||=e=>$(`confirmed`)},[l(`strong`,null,f(Y.value),1),r[15]||=o(`已确认 `,-1),r[16]||=l(`small`,null,`查看记录`,-1)],8,Ve),l(`button`,{type:`button`,class:`profile-summary-action state-agent-confirmed`,"aria-label":`查看 ${re.value} 条 Agent 已确认偏好`,"aria-pressed":!P.value&&N.value===`agent_confirmed`,onClick:r[1]||=e=>$(`agent_confirmed`)},[l(`strong`,null,f(re.value),1),r[17]||=o(`Agent 已确认 `,-1),r[18]||=l(`small`,null,`低于人工确认`,-1)],8,He),l(`button`,{type:`button`,class:`profile-summary-action state-pending`,"aria-label":`查看并处理 ${X.value} 条待确认偏好`,"aria-pressed":!P.value&&N.value===`pending`,onClick:r[2]||=e=>$(`pending`)},[l(`strong`,null,f(X.value),1),r[19]||=o(`待确认 `,-1),X.value?(a(),d(`small`,We,`查看并确认`)):(a(),d(`small`,Ge,`查看记录`))],8,Ue),l(`button`,{type:`button`,class:`profile-summary-action state-conflict`,"aria-label":U.value.length?`查看并处理 ${U.value.length} 组疑似冲突`:`当前没有疑似冲突`,"aria-pressed":P.value,onClick:r[3]||=e=>ue()},[l(`strong`,null,f(U.value.length),1),r[20]||=o(`疑似冲突 `,-1),l(`small`,null,f(U.value.length?`查看并处理`:`查看记录`),1)],8,Ke),l(`p`,null,f(ie.value),1)]),U.value.length&&!P.value&&N.value===`all`?(a(),d(`section`,qe,[r[23]||=l(`div`,{class:`preference-conflict-alert-icon`,"aria-hidden":`true`},`!`,-1),l(`div`,null,[r[21]||=l(`span`,null,`需要你判断`,-1),l(`h2`,null,`发现 `+f(U.value.length)+` 组疑似冲突`,1),r[22]||=l(`p`,null,`你可以现在人工处理,也可以交给 AI,等后续任务真正用到相关内容时再先判断、处理并留下审计标记。`,-1)]),l(`button`,{class:`primary-action`,type:`button`,onClick:r[4]||=e=>ue(!0)},` 查看冲突双方并处理 `)])):p(``,!0),l(`div`,Je,[l(`div`,Ye,[l(`div`,Xe,[(a(),d(c,null,t([[`all`,`全部`],[`taste`,`品味`],[`personality`,`个性`],[`judgment_preference`,`判断偏好`]],([e,t])=>l(`button`,{key:e,type:`button`,"aria-pressed":b.value===e,onClick:t=>b.value=e},f(t),9,Ze)),64))]),_(te,{modelValue:O.value,"onUpdate:modelValue":r[5]||=e=>O.value=e,class:`personal-profile-scope-filter`,"control-id":`personal-profile-scope`,label:`协作偏好生效范围`,options:J.value,"search-placeholder":`搜索项目名称或 ID`},null,8,[`modelValue`,`options`])]),l(`div`,Qe,[P.value?(a(),d(`span`,$e,` 显示 `+f(q.value.length)+` / `+f(U.value.length)+` 组待判断 `,1)):N.value===`all`?(a(),d(`span`,tt,f(K.value.length===H.value.length?`${H.value.length} 条个人理解`:`显示 ${K.value.length} / ${H.value.length}`),1)):(a(),d(`span`,et,` 显示 `+f(K.value.length)+` 条`+f(N.value===`pending`?`待确认`:`已确认`)+`偏好 `,1)),l(`button`,{class:`toolbar-action`,type:`button`,onClick:r[6]||=e=>Z()},`刷新`)])]),P.value?(a(),d(`section`,nt,[r[28]||=l(`header`,null,[l(`div`,null,[l(`p`,{class:`eyebrow`},`CONFLICT WORKBENCH`),l(`h2`,null,`逐组成对比较,再决定如何生效`)]),l(`p`,null,`系统只根据“同一偏好键、同一生效范围、内容不同”提出疑似冲突,不会自动覆盖任何记录。`)],-1),l(`div`,rt,[(a(!0),d(c,null,t(q.value,(e,t)=>(a(),d(`article`,{key:e.id,class:`preference-conflict-card`},[l(`div`,it,[l(`div`,null,[l(`span`,null,`待判断组 `+f(t+1),1),l(`h3`,null,f(e.preferenceKey),1)]),l(`div`,null,[l(`span`,null,f(se(e)),1),l(`strong`,null,f(e.aiRecord?`待 AI 使用时判断`:e.recommendedAction===`merge`?`建议合并`:`需要人工判断`),1)])]),l(`div`,at,[l(`section`,null,[r[24]||=l(`span`,null,`A · 较早记录`,-1),l(`strong`,null,f(e.left.title),1),l(`p`,null,f(n(F)(e.left)),1),l(`small`,null,f(n(D)(n(w)(e.left))),1)]),r[26]||=l(`i`,{"aria-hidden":`true`},`↔`,-1),l(`section`,null,[r[25]||=l(`span`,null,`B · 较新记录`,-1),l(`strong`,null,f(e.right.title),1),l(`p`,null,f(n(F)(e.right)),1),l(`small`,null,f(n(D)(n(w)(e.right))),1)])]),l(`footer`,null,[l(`div`,null,[r[27]||=l(`span`,null,`判断原因`,-1),l(`p`,null,f(e.reason),1),e.difference.rightOnly.length?(a(),d(`small`,ot,` B 新增:`+f(e.difference.rightOnly.join(`、`)),1)):p(``,!0)]),l(`div`,st,[l(`button`,{class:`secondary-action`,type:`button`,disabled:!!e.aiRecord||V.value===e.id,onClick:t=>de(e)},f(e.aiRecord?`已交给 AI`:V.value===e.id?`正在交给 AI…`:`交给 AI,使用时处理`),9,ct),l(`button`,{class:`primary-action`,type:`button`,onClick:t=>z.value=e},` 现在人工处理 `,8,lt)])])]))),128))]),y.value||!q.value.length?(a(),d(`div`,ut,f(y.value?`正在检查疑似冲突…`:U.value.length?`当前筛选范围没有疑似冲突`:`当前没有需要处理的疑似冲突`),1)):p(``,!0)])):(a(),d(`div`,dt,[l(`section`,ft,[r[29]||=l(`div`,{class:`personal-profile-table-head`,"aria-hidden":`true`},[l(`span`,null,`维度`),l(`span`,null,`内容`),l(`span`,null,`状态、范围与来源`),l(`span`,null,`更新时间`)],-1),l(`div`,pt,[(a(!0),d(c,null,t(K.value,e=>(a(),d(`button`,{key:`${e.itemKind}:${e.id}`,class:h([`personal-profile-row`,{selected:I.value?.id===e.id,"pending-review":n(E)(e)===`pending`,"ai-resolved-conflict":G.value.has(e.id)}]),type:`button`,onClick:t=>I.value=e},[l(`span`,{class:h([`profile-aspect-mark`,e.profileAspect])},f(n(S)(e.profileAspect)),3),l(`span`,ht,[l(`strong`,null,f(e.title),1),l(`small`,null,f(e.body),1)]),l(`span`,gt,[l(`strong`,{class:h({"has-conflict":W.value.has(e.id)})},f(ae(e)),3),l(`small`,null,f(n(C)(e.originQuadrant))+` · `+f(oe(e))+` · `+f(e.evidence.length)+` 个来源`,1)]),l(`time`,null,f(n(D)(n(w)(e))),1)],10,mt))),128))]),y.value||!K.value.length?(a(),d(`div`,_t,f(y.value?`正在读取协作偏好…`:H.value.length?`当前维度和范围还没有内容`:`会话中出现稳定偏好后,会在这里形成可纠正的协作偏好。`),1)):p(``,!0)]),_(A,{class:`personal-profile-inspector`,item:I.value,graph:v.value,editable:``,onConfirm:r[7]||=e=>L.value=e,onEdit:r[8]||=e=>R.value=e,onOpenReplacement:ce},null,8,[`item`,`graph`])])),_(ne,{item:R.value,"personal-space-id":n(u).activePersonalSpace?.id??``,"personal-project-id":null,projects:n(u).state?.personalProjects??[],"replacement-items":H.value,onClose:r[9]||=e=>R.value=null,onSaved:r[10]||=e=>Z()},null,8,[`item`,`personal-space-id`,`projects`,`replacement-items`]),_(k,{item:L.value,"personal-space-id":n(u).activePersonalSpace?.id??``,"personal-project-id":null,onClose:r[11]||=e=>L.value=null,onSaved:r[12]||=e=>Z()},null,8,[`item`,`personal-space-id`]),_(Re,{conflict:z.value,"personal-space-id":n(u).activePersonalSpace?.id??``,projects:n(u).state?.personalProjects??[],onClose:r[13]||=e=>z.value=null,onResolved:r[14]||=e=>Z(),onEdit:le},null,8,[`conflict`,`personal-space-id`,`projects`])]))}}),[[`__scopeId`,`data-v-8c91a202`]]);export{vt as default};
@@ -1 +0,0 @@
1
- .conflict-resolution-dialog.vue-dialog[data-v-18d4346c]{width:min(1180px,100vw - 48px)}.conflict-resolution-shell[data-v-18d4346c]{overflow:auto}.conflict-pair-context[data-v-18d4346c]{flex-wrap:wrap;gap:8px;padding:14px 0;display:flex}.conflict-pair-context span[data-v-18d4346c]{color:#747d77;border:1px solid #e1e5e2;border-radius:999px;padding:6px 9px;font-size:10px}.conflict-pair-context strong[data-v-18d4346c]{color:#3c4941;margin-left:4px}.conflict-comparison[data-v-18d4346c]{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.conflict-side[data-v-18d4346c]{background:#f9fbfa;border:1px solid #dfe5e1;border-radius:10px;align-content:start;gap:8px;min-width:0;padding:16px;display:grid}.conflict-side-left[data-v-18d4346c]{background:#f1f8fd;border-color:#b8d8ef}.conflict-side-right[data-v-18d4346c]{background:#f7f4fd;border-color:#d2c6ef}.conflict-side-heading[data-v-18d4346c]{color:#69736c;justify-content:space-between;gap:12px;font-size:10px;display:flex}.conflict-side h4[data-v-18d4346c],.conflict-side p[data-v-18d4346c]{margin:0}.conflict-side h4[data-v-18d4346c]{color:#2f3d35;font-size:14px}.conflict-side p[data-v-18d4346c]{color:#45524a;white-space:pre-wrap;min-height:48px;font-size:12px;line-height:1.6}.conflict-side small[data-v-18d4346c]{color:#7c857f;text-overflow:ellipsis;white-space:nowrap;font-size:9px;overflow:hidden}.text-action[data-v-18d4346c]{color:#52705f;background:0 0;border:0;justify-self:start;padding:0;font-size:10px}.conflict-difference[data-v-18d4346c]{background:#fbfcfb;border:1px solid #e5e7e5;border-radius:9px;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:12px;padding:12px;display:grid}.conflict-difference>div[data-v-18d4346c]{align-content:start;gap:7px;min-width:0;display:grid}.conflict-difference span[data-v-18d4346c]{color:#7a837d;font-size:9px;font-weight:700}.conflict-difference p[data-v-18d4346c]{flex-wrap:wrap;gap:5px;margin:0;display:flex}.conflict-difference b[data-v-18d4346c]{color:#46534b;background:#e9efeb;border-radius:5px;padding:4px 7px;font-size:10px;font-weight:600}.conflict-difference .muted[data-v-18d4346c]{color:#929993;font-size:10px;display:block}.conflict-resolution-options[data-v-18d4346c]{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-top:14px;display:grid}.conflict-resolution-options>button[data-v-18d4346c]{color:#3d4942;text-align:left;background:#fff;border:1px solid #dfe4e0;border-radius:9px;align-content:start;gap:6px;min-height:86px;padding:12px;display:grid;position:relative}.conflict-resolution-options>button[aria-pressed=true][data-v-18d4346c]{background:#f1f7f3;border-color:#7ba08a;box-shadow:inset 0 0 0 1px #7ba08a}.conflict-resolution-options strong[data-v-18d4346c]{font-size:11px}.conflict-resolution-options span[data-v-18d4346c]{color:#7a837d;font-size:9px;line-height:1.45}.conflict-resolution-options em[data-v-18d4346c]{color:#376047;background:#dcecdf;border-radius:999px;padding:2px 5px;font-size:8px;font-style:normal;position:absolute;top:8px;right:8px}.conflict-resolution-detail[data-v-18d4346c],.conflict-impact-preview[data-v-18d4346c]{background:#fafcfb;border:1px solid #dfe5e1;border-radius:9px;gap:10px;margin-top:12px;padding:13px;display:grid}.conflict-resolution-detail label[data-v-18d4346c],.conflict-resolution-reason[data-v-18d4346c]{color:#5f6962;gap:6px;font-size:10px;font-weight:600;display:grid}.conflict-resolution-detail textarea[data-v-18d4346c],.conflict-resolution-reason textarea[data-v-18d4346c],.conflict-resolution-detail select[data-v-18d4346c]{width:100%}.conflict-inline-options[data-v-18d4346c]{align-items:center;gap:6px;display:flex}.conflict-inline-options span[data-v-18d4346c]{color:#667169;margin-right:4px;font-size:10px}.conflict-inline-options button[data-v-18d4346c]{color:#58645c;background:#fff;border:1px solid #d9dfdb;border-radius:6px;padding:5px 8px;font-size:10px}.conflict-inline-options button[aria-pressed=true][data-v-18d4346c]{color:#315141;background:#eaf2ed;border-color:#789986}.conflict-impact-preview[data-v-18d4346c]{background:#fffaf0;border-color:#f0d99d}.conflict-impact-preview span[data-v-18d4346c]{color:#826b37;text-transform:uppercase;font-size:9px;font-weight:700}.conflict-impact-preview p[data-v-18d4346c]{color:#554d3c;margin:0;font-size:11px;line-height:1.55}.conflict-resolution-reason[data-v-18d4346c]{margin-top:12px}.conflict-resolution-actions>div[data-v-18d4346c]{gap:8px;display:flex}@media (width<=900px){.conflict-comparison[data-v-18d4346c],.conflict-difference[data-v-18d4346c]{grid-template-columns:1fr}.conflict-resolution-options[data-v-18d4346c]{grid-template-columns:repeat(2,minmax(0,1fr))}}.preference-conflict-alert[data-v-8c91a202]{background:#f7f9f7;border:1px solid #d6ddd8;border-radius:11px;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:13px;margin-top:12px;padding:12px 14px;display:grid;box-shadow:0 7px 20px #3142380d}.preference-conflict-alert-icon[data-v-8c91a202]{color:#fff;background:#52685b;border-radius:50%;place-items:center;width:30px;height:30px;font-size:16px;font-weight:800;display:grid}.preference-conflict-alert>div[data-v-8c91a202]:nth-child(2){gap:2px;display:grid}.preference-conflict-alert span[data-v-8c91a202]{color:#65736b;letter-spacing:.08em;text-transform:uppercase;font-size:9px;font-weight:800}.preference-conflict-alert h2[data-v-8c91a202],.preference-conflict-alert p[data-v-8c91a202]{margin:0}.preference-conflict-alert h2[data-v-8c91a202]{color:#344239;font-size:14px}.preference-conflict-alert p[data-v-8c91a202]{color:#6f7972;font-size:10px;line-height:1.5}.preference-conflict-workbench[data-v-8c91a202]{flex:1;min-height:0;padding:18px 0 4px;overflow:auto}.preference-conflict-workbench>header[data-v-8c91a202]{justify-content:space-between;align-items:flex-end;gap:24px;padding:0 2px 14px;display:flex}.preference-conflict-workbench h2[data-v-8c91a202],.preference-conflict-workbench p[data-v-8c91a202]{margin:0}.preference-conflict-workbench h2[data-v-8c91a202]{color:#2e3d35;font-size:17px}.preference-conflict-workbench>header>p[data-v-8c91a202]{color:#778079;text-align:right;max-width:520px;font-size:10px;line-height:1.55}.preference-conflict-list[data-v-8c91a202]{gap:12px;display:grid}.preference-conflict-card[data-v-8c91a202]{background:#fff;border:1px solid #d9dfdb;border-radius:11px;gap:12px;padding:15px;display:grid;box-shadow:0 7px 20px #2d3d340a}.preference-conflict-card-heading[data-v-8c91a202],.preference-conflict-card footer[data-v-8c91a202]{justify-content:space-between;align-items:flex-start;gap:20px;display:flex}.preference-conflict-card-heading>div[data-v-8c91a202]{gap:3px;display:grid}.preference-conflict-card-heading>div[data-v-8c91a202]:last-child{justify-items:end}.preference-conflict-card-heading span[data-v-8c91a202],.preference-conflict-card footer span[data-v-8c91a202]{color:#7d8780;text-transform:uppercase;font-size:9px;font-weight:700}.preference-conflict-card-heading h3[data-v-8c91a202]{color:#344239;margin:0;font-size:14px}.preference-conflict-card-heading strong[data-v-8c91a202]{color:#53685b;font-size:10px}.preference-conflict-pair[data-v-8c91a202]{grid-template-columns:minmax(0,1fr) 26px minmax(0,1fr);align-items:stretch;gap:8px;display:grid}.preference-conflict-pair>section[data-v-8c91a202]{background:#fff;border:1px solid #e0e5e1;border-radius:8px;align-content:start;gap:6px;min-width:0;padding:12px;display:grid}.preference-conflict-pair>section[data-v-8c91a202]:first-child{background:#f5fafe;border-color:#c7ddec}.preference-conflict-pair>section[data-v-8c91a202]:last-child{background:#faf8fd;border-color:#d8ceeb}.preference-conflict-pair span[data-v-8c91a202],.preference-conflict-pair small[data-v-8c91a202]{color:#7d8780;font-size:9px}.preference-conflict-pair strong[data-v-8c91a202]{color:#35423a;font-size:11px}.preference-conflict-pair p[data-v-8c91a202]{color:#566159;font-size:10px;line-height:1.55}.preference-conflict-pair>i[data-v-8c91a202]{color:#9b9486;text-align:center;align-self:center;font-size:14px;font-style:normal}.preference-conflict-card footer[data-v-8c91a202]{border-top:1px solid #e5e9e6;padding-top:11px}.preference-conflict-card footer>div[data-v-8c91a202]{gap:4px;display:grid}.preference-conflict-card footer p[data-v-8c91a202]{color:#5d625d;font-size:10px}.preference-conflict-card footer small[data-v-8c91a202]{color:#758079;font-size:9px}.preference-conflict-card footer button[data-v-8c91a202]{flex:none}.preference-conflict-card footer .preference-conflict-actions[data-v-8c91a202]{justify-content:flex-end;align-items:center;gap:8px;display:flex}.preference-conflict-card footer .preference-conflict-actions .secondary-action[data-v-8c91a202]{color:#5e665f;background:#f5f7f5}.personal-profile-row.ai-resolved-conflict[data-v-8c91a202]{background:#f6fbf8;border-color:#b8d5c3}.personal-profile-row.ai-resolved-conflict .personal-profile-origin strong[data-v-8c91a202]{color:#39724f}.personal-profile-inspector[data-v-8c91a202] .inspector-classification.state-pending,.personal-profile-inspector[data-v-8c91a202] .inspector-classification.state-needs_review{background:#f5f7f5;border-color:#d8dfda}.personal-profile-inspector[data-v-8c91a202] .inspector-classification.state-pending strong,.personal-profile-inspector[data-v-8c91a202] .inspector-classification.state-needs_review strong{color:#53645a}@media (width<=860px){.preference-conflict-alert[data-v-8c91a202]{grid-template-columns:auto minmax(0,1fr)}.preference-conflict-alert>button[data-v-8c91a202]{grid-column:1/-1}.preference-conflict-workbench>header[data-v-8c91a202],.preference-conflict-card-heading[data-v-8c91a202],.preference-conflict-card footer[data-v-8c91a202]{flex-direction:column;align-items:stretch}.preference-conflict-workbench>header>p[data-v-8c91a202]{text-align:left}.preference-conflict-card-heading>div[data-v-8c91a202]:last-child{justify-items:start}.preference-conflict-pair[data-v-8c91a202]{grid-template-columns:1fr}.preference-conflict-card footer .preference-conflict-actions[data-v-8c91a202]{flex-wrap:wrap;justify-content:flex-start}}
@@ -1 +0,0 @@
1
- import{T as e,f as t,y as n}from"./console-tbvTUi6p.js";import{t as r}from"./KnowledgeWorkspace-DVZusvem.js";var i=n({__name:`PersonalProjectsPage`,setup(n){return(n,i)=>(e(),t(r,{"personal-projects-only":``}))}});export{i as default};
@@ -1 +0,0 @@
1
- import{D as e,L as t,P as n,T as r,_ as i,a,c as o,d as s,m as c,n as l,nt as u,p as d,r as f,t as ee,tt as te,u as p,v as m,y as ne}from"./console-tbvTUi6p.js";import{o as re}from"./runtime-dom.esm-bundler-DttsK21F.js";import{t as ie,v as ae}from"./paths-B790iniO.js";import{n as h,r as g,t as _}from"./identity-B3s5CXhv.js";var oe={class:`view`},se={class:`space-heading public-space-heading`},ce={class:`public-space-stats`,"aria-label":`公共项目概览`},le={class:`project-grid`},ue={class:`project-card-heading`},de={class:`project-card-heading-actions`},fe=[`onClick`],pe={class:`completion-badge`},me={class:`project-purpose`},he={class:`evidence-row`},v={key:0,class:`muted`},y={class:`project-access`},b={class:`muted`},x={key:0,class:`project-release-meta`},S={class:`project-card-footer`},C=[`onClick`],w=[`onClick`],T={key:0,class:`empty-state project-empty`},E={class:`project-section`},D={class:`section-toolbar compact-toolbar relation-section-toolbar`},O=[`disabled`],k=[`open`],A={key:0,class:`project-dialog-shell`},j={class:`project-dialog-header`},M={class:`project-latest-release`},N={key:0},P={key:1,class:`muted`},F={class:`project-detail-columns`},I={key:0,class:`muted`},L={key:1,class:`muted`},ge={key:0,class:`muted`},_e={class:`project-dialog-actions`},R=ne({__name:`PublicProjectsPage`,setup(ne){let R=ee(),ve=ae(),z=n(null),B=n([]),V=n([]),H=n(!1),U=n(!1),W=n(``),G=n(``),K=n(`RELATED_TO`),q=p(()=>R.state?.projects??[]),J=p(()=>new Set((R.state?.subscriptions??[]).map(({provider_url:e,project_id:t})=>`${e}::${t}`))),Y=p(()=>q.value.filter(({role:e,isOwner:t})=>e===`maintainer`||t)),ye=p(()=>Y.value.map(e=>({value:e.id,label:e.name,meta:`#${_(e.id,26)}`,search:h(e.id)}))),be=p(()=>{let e=q.value.find(({id:e})=>e===W.value);return q.value.filter(({id:t,providerUrl:n})=>t!==e?.id&&n===e?.providerUrl)}),xe=p(()=>be.value.map(e=>({value:e.id,label:e.name,meta:`#${_(e.id,26)}`,search:h(e.id)}))),Se=[{value:`PART_OF`,label:`属于`},{value:`USES_KNOWLEDGE_FROM`,label:`使用其共享知识`},{value:`DEPENDS_ON`,label:`依赖`},{value:`PROVIDES_TO`,label:`提供能力`},{value:`SHARES_CAPABILITY_WITH`,label:`共享能力`},{value:`SUCCESSOR_OF`,label:`后继于`},{value:`RELATED_TO`,label:`相关`}];function X(e){return`${e.providerUrl}::${e.id}`}function Z(e){return e.profile?.purpose||e.profile?.scope||e.profile?.technical_summary||e.description||`公共项目`}async function Ce(e){try{if(J.value.has(X(e))){let t=new URLSearchParams({personalSpaceId:R.activePersonalSpace?.id??``,providerUrl:e.providerUrl});await l(`/api/subscriptions/${encodeURIComponent(e.id)}?${t}`),R.notify(`已取消订阅“${e.name}”;公共项目内容没有被删除。`)}else await a(`/api/subscriptions`,{personalSpaceId:R.activePersonalSpace?.id,projectId:e.id,providerUrl:e.providerUrl,projectName:e.name}),R.notify(`已订阅“${e.name}”。`);await R.refresh()}catch(e){R.reportError(e)}}async function we(e){z.value=e,B.value=[],V.value=[],H.value=!0;try{let t=new URLSearchParams({providerUrl:e.providerUrl}),[n,r]=await Promise.all([f(`/api/projects/${encodeURIComponent(e.id)}/releases?${t}`),f(`/api/project-relations?${new URLSearchParams({projectId:e.id,providerUrl:e.providerUrl})}`)]);B.value=n.releases??[],V.value=r.relations??[]}catch(e){R.reportError(e)}finally{H.value=!1}}async function Q(e){z.value=null,await ve.push(ie(`public`,e.id,`graph`))}async function Te(e){if(window.confirm(`确认永久删除公共项目“${e.name}”?个人项目不会被删除。`))try{let t=new URLSearchParams({providerUrl:e.providerUrl});await l(`/api/projects/${encodeURIComponent(e.id)}?${t}`),z.value=null,R.notify(`公共项目“${e.name}”已删除;本机个人项目仍保留。`),await R.refresh()}catch(e){R.reportError(e)}}async function Ee(){let e=q.value.find(({id:e})=>e===W.value),t=q.value.find(({id:e})=>e===G.value);if(!e||!t){R.reportError(Error(`请选择来源项目和关联项目`));return}try{await a(`/api/project-relations`,{sourceProjectId:e.id,targetProjectId:t.id,providerUrl:e.providerUrl,relationType:K.value,note:null}),U.value=!1,W.value=``,G.value=``,R.notify(K.value===`PART_OF`?`关系已提交,等待父项目确认。`:`项目关系已建立。`)}catch(e){R.reportError(e)}}function $(e){return e?new Date(e).toLocaleString(`zh-CN`):`时间未记录`}return(n,a)=>(r(),c(`section`,oe,[s(`div`,se,[a[9]||=s(`span`,{class:`space-heading-icon`,"aria-hidden":`true`},[s(`span`,{class:`nav-icon nav-icon-public-project`})],-1),a[10]||=s(`div`,null,[s(`p`,null,`浏览共享 Provider 上的项目,按需订阅。项目关系不会自动授予权限,也不会替你订阅。`)],-1),s(`div`,ce,[s(`span`,null,[s(`strong`,null,u(q.value.length),1),a[7]||=i(`可发现`,-1)]),s(`span`,null,[s(`strong`,null,u(t(R).state?.subscriptions.length??0),1),a[8]||=i(`已订阅`,-1)])])]),s(`div`,le,[(r(!0),c(o,null,e(q.value,t=>(r(),c(`article`,{key:X(t),class:`project-card`},[s(`div`,ue,[s(`div`,null,[a[11]||=s(`p`,{class:`eyebrow`},`PUBLIC PROJECT`,-1),s(`h4`,null,u(t.name),1)]),s(`div`,de,[t.can_manage?(r(),c(`button`,{key:0,class:`management-action`,type:`button`,onClick:e=>Te(t)},`管理项目`,8,fe)):d(``,!0),s(`div`,pe,[s(`strong`,null,u(t.profile?.assessment?.score??`—`),1),s(`span`,null,u(t.profile?.assessment?`资料覆盖`:`暂无摘要`),1)])])]),s(`p`,me,u(Z(t)),1),s(`div`,he,[(r(!0),c(o,null,e(t.profile?.sources??[],(e,t)=>(r(),c(`span`,{key:t,class:`status-chip`},u(e.kind??`资料`),1))),128)),t.profile?.sources?.length?d(``,!0):(r(),c(`span`,v,`暂无已登记资料`))]),s(`div`,y,[s(`span`,{class:te([`status-chip`,{owner:t.isOwner}])},u(t.isOwner?`Owner`:t.role??`Reader`),3),s(`span`,b,u(t.isOwner?`你发布的项目`:`公共可发现`),1),t.current_release?(r(),c(`span`,x,[s(`strong`,null,u(t.current_release.version),1),s(`span`,null,u($(t.current_release.published_at)),1)])):d(``,!0)]),s(`footer`,S,[s(`button`,{class:`secondary-action`,type:`button`,onClick:e=>Ce(t)},u(J.value.has(X(t))?`取消订阅`:`订阅项目`),9,C),s(`button`,{class:`primary-action`,type:`button`,onClick:e=>we(t)},`查看详情`,8,w)])]))),128)),q.value.length?d(``,!0):(r(),c(`div`,T,`暂无公共项目`))]),s(`section`,E,[s(`div`,D,[a[12]||=s(`div`,null,[s(`p`,{class:`eyebrow`},`PROJECT RELATIONS`),s(`h3`,null,`项目关系`),s(`p`,null,`只在同一个公共 Provider 内建立显式关系。`)],-1),s(`button`,{class:`primary-action`,type:`button`,disabled:!Y.value.length,onClick:a[0]||=e=>U.value=!U.value},` 添加项目关系 `,8,O)]),U.value?(r(),c(`form`,{key:0,class:`relation-composer relation-composer-form compact-relation-form`,onSubmit:re(Ee,[`prevent`])},[s(`label`,null,[a[13]||=i(`来源项目 `,-1),m(g,{modelValue:W.value,"onUpdate:modelValue":a[1]||=e=>W.value=e,options:ye.value,label:`关系来源项目`,placeholder:`选择项目`,searchable:``,required:``,onChange:a[2]||=e=>G.value=``},null,8,[`modelValue`,`options`])]),s(`label`,null,[a[14]||=i(`关系 `,-1),m(g,{modelValue:K.value,"onUpdate:modelValue":a[3]||=e=>K.value=e,options:Se,label:`项目关系类型`},null,8,[`modelValue`])]),s(`label`,null,[a[15]||=i(`关联项目 `,-1),m(g,{modelValue:G.value,"onUpdate:modelValue":a[4]||=e=>G.value=e,options:xe.value,label:`关系目标项目`,placeholder:`选择项目`,searchable:``,required:``},null,8,[`modelValue`,`options`])]),a[16]||=s(`button`,{class:`primary-action`,type:`submit`},`添加关系`,-1)],32)):d(``,!0)]),s(`dialog`,{open:!!z.value,class:`project-dialog vue-dialog`},[z.value?(r(),c(`div`,A,[s(`header`,j,[s(`div`,null,[a[17]||=s(`p`,{class:`eyebrow`},`PUBLIC PROJECT`,-1),s(`h3`,null,u(z.value.name),1),s(`p`,null,u(Z(z.value)),1)]),s(`button`,{class:`secondary-action`,type:`button`,onClick:a[5]||=e=>z.value=null},`关闭`)]),s(`section`,M,[a[18]||=s(`p`,{class:`eyebrow`},`LATEST RELEASE`,-1),a[19]||=s(`h4`,null,`最新发布`,-1),z.value.current_release?(r(),c(`p`,N,[s(`strong`,null,u(z.value.current_release.version),1),i(` · `+u($(z.value.current_release.published_at)),1)])):(r(),c(`p`,P,`这个项目还没有版本记录`))]),s(`div`,F,[s(`section`,null,[a[20]||=s(`h4`,null,`版本记录`,-1),H.value?(r(),c(`p`,I,`正在读取…`)):d(``,!0),(r(!0),c(o,null,e(B.value,e=>(r(),c(`article`,{key:e.version,class:`project-release-item`},[s(`strong`,null,u(e.version),1),s(`p`,null,u(e.update_summary),1),s(`small`,null,u($(e.published_at)),1)]))),128)),!H.value&&!B.value.length?(r(),c(`p`,L,`暂无版本记录`)):d(``,!0)]),s(`section`,null,[a[21]||=s(`h4`,null,`项目关系`,-1),(r(!0),c(o,null,e(V.value,e=>(r(),c(`article`,{key:e.id,class:`project-detail-relation`},[s(`strong`,null,u(e.relation_type),1),s(`small`,null,u(e.status??`active`),1)]))),128)),!H.value&&!V.value.length?(r(),c(`p`,ge,`暂无项目关系`)):d(``,!0)])]),s(`footer`,_e,[a[22]||=s(`span`,null,`项目内容与管理操作已分开。`,-1),s(`button`,{class:`primary-action`,type:`button`,onClick:a[6]||=e=>Q(z.value)},`查看知识图谱`)])])):d(``,!0)],8,k)]))}});export{R as default};
@@ -1 +0,0 @@
1
- import{A as e,D as t,L as n,P as r,T as i,a,c as o,d as s,m as c,nt as l,p as u,r as d,t as f,u as p,v as m,y as h}from"./console-tbvTUi6p.js";import{n as g,r as _,t as v}from"./identity-B3s5CXhv.js";import{l as y}from"./model-DVT8sjy9.js";var b={class:`view`},x={class:`review-list`},S={class:`review-meta`},C={class:`review-actions stacked-actions`},w=[`onClick`],T=[`onClick`],E=[`onClick`],D={key:0,class:`empty-state`},O={key:0,class:`project-section`},k={class:`section-toolbar`},A={class:`review-list`},j={class:`review-meta`},M={class:`review-actions`},N=[`onClick`],P=[`onClick`],F={key:0,class:`empty-state`},I=h({__name:`ReviewPage`,setup(h){let I=f(),L=r([]),R=r([]),z=r(``),B=r(!1),V=p(()=>(I.state?.projects??[]).filter(({role:e})=>e===`maintainer`)),H=p(()=>V.value.map(e=>({value:e.id,label:e.name,meta:`#${v(e.id,26)}`,search:g(e.id)}))),U=p(()=>V.value.find(({id:e})=>e===z.value)??null);e(()=>I.state,e=>{e&&(z.value||=V.value[0]?.id??``,W())},{immediate:!0}),e(z,()=>void K());async function W(){B.value=!0,await Promise.all([G(),K()]),B.value=!1}async function G(){let e=I.activePersonalSpace?.id;if(e)try{let t=await d(`/api/personal-review?${new URLSearchParams({personalSpaceId:e,status:`pending`})}`);L.value=t.drafts??[]}catch(e){I.reportError(e)}}async function K(){let e=U.value;if(!e){R.value=[];return}try{let t=await d(`/api/review?${new URLSearchParams({projectId:e.id,providerUrl:e.providerUrl,status:`pending`})}`);R.value=t.proposals??[]}catch(e){R.value=[],I.reportError(e)}}async function q(e,t){try{await a(`/api/personal-review/${encodeURIComponent(e.id)}/decision`,{decision:t}),await Promise.all([G(),I.refresh()])}catch(e){I.reportError(e)}}async function J(e,t){let n=U.value;if(n)try{await a(`/api/review/${encodeURIComponent(e.id)}/decision`,{projectId:n.id,providerUrl:n.providerUrl,decision:t,note:null}),await K()}catch(e){I.reportError(e)}}return(e,r)=>(i(),c(`section`,b,[r[4]||=s(`div`,{class:`section-title`},[s(`h3`,null,`个人发布确认`),s(`p`,null,`从会话提取的知识先由你决定保留在个人空间、忽略,或提交公共项目。`)],-1),s(`div`,x,[(i(!0),c(o,null,t(L.value,e=>(i(),c(`article`,{key:e.id,class:`review-item review-item-detailed`},[s(`div`,null,[r[1]||=s(`div`,{class:`review-stage`},`提交公共前确认`,-1),s(`h4`,null,l(e.episode.name),1),s(`p`,null,l(e.episode.summary||e.episode.source_description),1),s(`div`,S,[s(`span`,null,l(e.episode.entities?.length??0)+` 个实体`,1),s(`span`,null,l(e.episode.relationships?.length??0)+` 条关系`,1),s(`span`,null,l(n(y)(e.created_at)),1)])]),s(`div`,C,[s(`button`,{class:`secondary-action`,type:`button`,onClick:t=>q(e,`keep_personal`)},`仅保留个人`,8,w),s(`button`,{class:`reject`,type:`button`,onClick:t=>q(e,`ignore`)},`忽略`,8,T),n(I).state?.capabilities?.submitKnowledge?(i(),c(`button`,{key:0,class:`approve`,type:`button`,onClick:t=>q(e,`submit_public`)},`提交公共`,8,E)):u(``,!0)])]))),128)),!B.value&&!L.value.length?(i(),c(`div`,D,`当前没有待个人确认的内容`)):u(``,!0)]),n(I).state?.capabilities?.reviewProposals?(i(),c(`section`,O,[s(`div`,k,[r[2]||=s(`div`,null,[s(`h3`,null,`公共项目维护审核`),s(`p`,null,`Maintainer 只审核明确提交到项目的 Proposal。`)],-1),m(_,{modelValue:z.value,"onUpdate:modelValue":r[0]||=e=>z.value=e,options:H.value,label:`审核项目`,"control-id":`review-project`,searchable:``},null,8,[`modelValue`,`options`])]),s(`div`,A,[(i(!0),c(o,null,t(R.value,e=>(i(),c(`article`,{key:e.id,class:`review-item`},[s(`div`,null,[r[3]||=s(`div`,{class:`review-stage`},`共享 Maintainer 审核`,-1),s(`h4`,null,l(e.episode.name),1),s(`p`,null,l(e.episode.summary||e.episode.source_description),1),s(`div`,j,[s(`span`,null,l(n(y)(e.created_at)),1)])]),s(`div`,M,[s(`button`,{class:`reject`,type:`button`,onClick:t=>J(e,`reject`)},`拒绝`,8,N),s(`button`,{class:`approve`,type:`button`,onClick:t=>J(e,`approve`)},`通过`,8,P)])]))),128)),!B.value&&!R.value.length?(i(),c(`div`,F,`当前没有待审核 Proposal`)):u(``,!0)])])):u(``,!0)]))}});export{I as default};
@@ -1 +0,0 @@
1
- function e(e){let t=Object.create(null);for(let n of e.split(`,`))t[n]=1;return e=>e in t}var t={},n=[],r=()=>{},i=()=>!1,a=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),o=e=>e.startsWith(`onUpdate:`),s=Object.assign,c=(e,t)=>{let n=e.indexOf(t);n>-1&&e.splice(n,1)},l=Object.prototype.hasOwnProperty,u=(e,t)=>l.call(e,t),d=Array.isArray,f=e=>x(e)===`[object Map]`,p=e=>x(e)===`[object Set]`,m=e=>x(e)===`[object Date]`,h=e=>typeof e==`function`,g=e=>typeof e==`string`,_=e=>typeof e==`symbol`,v=e=>typeof e==`object`&&!!e,y=e=>(v(e)||h(e))&&h(e.then)&&h(e.catch),b=Object.prototype.toString,x=e=>b.call(e),S=e=>x(e).slice(8,-1),C=e=>x(e)===`[object Object]`,w=e=>g(e)&&e!==`NaN`&&e[0]!==`-`&&``+parseInt(e,10)===e,ee=e(`,key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted`),te=e=>{let t=Object.create(null);return(n=>t[n]||(t[n]=e(n)))},ne=/-\w/g,T=te(e=>e.replace(ne,e=>e.slice(1).toUpperCase())),re=/\B([A-Z])/g,E=te(e=>e.replace(re,`-$1`).toLowerCase()),ie=te(e=>e.charAt(0).toUpperCase()+e.slice(1)),ae=te(e=>e?`on${ie(e)}`:``),D=(e,t)=>!Object.is(e,t),oe=(e,...t)=>{for(let n=0;n<e.length;n++)e[n](...t)},O=(e,t,n,r=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})},se=e=>{let t=parseFloat(e);return isNaN(t)?e:t},ce,le=()=>ce||=typeof globalThis<`u`?globalThis:typeof self<`u`?self:typeof window<`u`?window:typeof global<`u`?global:{};function ue(e){if(d(e)){let t={};for(let n=0;n<e.length;n++){let r=e[n],i=g(r)?me(r):ue(r);if(i)for(let e in i)t[e]=i[e]}return t}else if(g(e)||v(e))return e}var de=/;(?![^(]*\))/g,fe=/:([^]+)/,pe=/\/\*[^]*?\*\//g;function me(e){let t={};return e.replace(pe,``).split(de).forEach(e=>{if(e){let n=e.split(fe);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}function k(e){let t=``;if(g(e))t=e;else if(d(e))for(let n=0;n<e.length;n++){let r=k(e[n]);r&&(t+=r+` `)}else if(v(e))for(let n in e)e[n]&&(t+=n+` `);return t.trim()}var he=`itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`,ge=e(he);he+``;function _e(e){return!!e||e===``}function ve(e,t){if(e.length!==t.length)return!1;let n=!0;for(let r=0;n&&r<e.length;r++)n=ye(e[r],t[r]);return n}function ye(e,t){if(e===t)return!0;let n=m(e),r=m(t);if(n||r)return n&&r?e.getTime()===t.getTime():!1;if(n=_(e),r=_(t),n||r)return e===t;if(n=d(e),r=d(t),n||r)return n&&r?ve(e,t):!1;if(n=v(e),r=v(t),n||r){if(!n||!r||Object.keys(e).length!==Object.keys(t).length)return!1;for(let n in e){let r=e.hasOwnProperty(n),i=t.hasOwnProperty(n);if(r&&!i||!r&&i||!ye(e[n],t[n]))return!1}}return String(e)===String(t)}function be(e,t){return e.findIndex(e=>ye(e,t))}var xe=e=>!!(e&&e.__v_isRef===!0),Se=e=>g(e)?e:e==null?``:d(e)||v(e)&&(e.toString===b||!h(e.toString))?xe(e)?Se(e.value):JSON.stringify(e,Ce,2):String(e),Ce=(e,t)=>xe(t)?Ce(e,t.value):f(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((e,[t,n],r)=>(e[we(t,r)+` =>`]=n,e),{})}:p(t)?{[`Set(${t.size})`]:[...t.values()].map(e=>we(e))}:_(t)?we(t):v(t)&&!d(t)&&!C(t)?String(t):t,we=(e,t=``)=>_(e)?`Symbol(${e.description??t})`:e,A,Te=class{constructor(e=!1){this.detached=e,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!e&&A&&(A.active?(this.parent=A,this.index=(A.scopes||=[]).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let e,t;if(this.scopes){let n=this.scopes.slice();for(e=0,t=n.length;e<t;e++)n[e].pause()}for(e=0,t=this.effects.length;e<t;e++)this.effects[e].pause()}}resume(){if(this._active&&this._isPaused){this._isPaused=!1;let e,t;if(this.scopes){let n=this.scopes.slice();for(e=0,t=n.length;e<t;e++)n[e].resume()}let n=this.effects.slice();for(e=0,t=n.length;e<t;e++)n[e].resume()}}run(e){if(this._active){let t=A;try{return A=this,e()}finally{A=t}}}on(){++this._on===1&&(this.prevScope=A,A=this)}off(){if(this._on>0&&--this._on===0){if(A===this)A=this.prevScope;else{let e=A;for(;e;){if(e.prevScope===this){e.prevScope=this.prevScope;break}e=e.prevScope}}this.prevScope=void 0}}stop(e){if(this._active){this._active=!1;let t,n;for(t=0,n=this.effects.length;t<n;t++)this.effects[t].stop();for(this.effects.length=0,t=0,n=this.cleanups.length;t<n;t++)this.cleanups[t]();if(this.cleanups.length=0,this.scopes){let e=this.scopes.slice();for(t=0,n=e.length;t<n;t++)e[t].stop(!0);this.scopes.length=0}if(!this.detached&&this.parent&&!e){let e=this.parent.scopes.pop();e&&e!==this&&(this.parent.scopes[this.index]=e,e.index=this.index)}this.parent=void 0}}};function Ee(e){return new Te(e)}function De(){return A}function Oe(e,t=!1){A&&A.cleanups.push(e)}var j,ke=new WeakSet,Ae=class{constructor(e){this.fn=e,this.deps=void 0,this.depsTail=void 0,this.flags=5,this.next=void 0,this.cleanup=void 0,this.scheduler=void 0,A&&(A.active?A.effects.push(this):this.flags&=-2)}pause(){this.flags|=64}resume(){this.flags&64&&(this.flags&=-65,ke.has(this)&&(ke.delete(this),this.trigger()))}notify(){this.flags&2&&!(this.flags&32)||this.flags&8||Pe(this)}run(){if(!(this.flags&1))return this.fn();this.flags|=2,Ke(this),Le(this);let e=j,t=M;j=this,M=!0;try{return this.fn()}finally{Re(this),j=e,M=t,this.flags&=-3}}stop(){if(this.flags&1){for(let e=this.deps;e;e=e.nextDep)Ve(e);this.deps=this.depsTail=void 0,Ke(this),this.onStop&&this.onStop(),this.flags&=-2}}trigger(){this.flags&64?ke.add(this):this.scheduler?this.scheduler():this.runIfDirty()}runIfDirty(){ze(this)&&this.run()}get dirty(){return ze(this)}},je=0,Me,Ne;function Pe(e,t=!1){if(e.flags|=8,t){e.next=Ne,Ne=e;return}e.next=Me,Me=e}function Fe(){je++}function Ie(){if(--je>0)return;if(Ne){let e=Ne;for(Ne=void 0;e;){let t=e.next;e.next=void 0,e.flags&=-9,e=t}}let e;for(;Me;){let t=Me;for(Me=void 0;t;){let n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(t){e||=t}t=n}}if(e)throw e}function Le(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Re(e){let t,n=e.depsTail,r=n;for(;r;){let e=r.prevDep;r.version===-1?(r===n&&(n=e),Ve(r),He(r)):t=r,r.dep.activeLink=r.prevActiveLink,r.prevActiveLink=void 0,r=e}e.deps=t,e.depsTail=n}function ze(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Be(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Be(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===qe)||(e.globalVersion=qe,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!ze(e))))return;e.flags|=2;let t=e.dep,n=j,r=M;j=e,M=!0;try{Le(e);let n=e.fn(e._value);(t.version===0||D(n,e._value))&&(e.flags|=128,e._value=n,t.version++)}catch(e){throw t.version++,e}finally{j=n,M=r,Re(e),e.flags&=-3}}function Ve(e,t=!1){let{dep:n,prevSub:r,nextSub:i}=e;if(r&&(r.nextSub=i,e.prevSub=void 0),i&&(i.prevSub=r,e.nextSub=void 0),n.subs===e&&(n.subs=r,!r&&n.computed)){n.computed.flags&=-5;for(let e=n.computed.deps;e;e=e.nextDep)Ve(e,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function He(e){let{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}var M=!0,Ue=[];function We(){Ue.push(M),M=!1}function Ge(){let e=Ue.pop();M=e===void 0||e}function Ke(e){let{cleanup:t}=e;if(e.cleanup=void 0,t){let e=j;j=void 0;try{t()}finally{j=e}}}var qe=0,Je=class{constructor(e,t){this.sub=e,this.dep=t,this.version=t.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}},Ye=class{constructor(e){this.computed=e,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(e){if(!j||!M||j===this.computed)return;let t=this.activeLink;if(t===void 0||t.sub!==j)t=this.activeLink=new Je(j,this),j.deps?(t.prevDep=j.depsTail,j.depsTail.nextDep=t,j.depsTail=t):j.deps=j.depsTail=t,Xe(t);else if(t.version===-1&&(t.version=this.version,t.nextDep)){let e=t.nextDep;e.prevDep=t.prevDep,t.prevDep&&(t.prevDep.nextDep=e),t.prevDep=j.depsTail,t.nextDep=void 0,j.depsTail.nextDep=t,j.depsTail=t,j.deps===t&&(j.deps=e)}return t}trigger(e){this.version++,qe++,this.notify(e)}notify(e){Fe();try{for(let e=this.subs;e;e=e.prevSub)e.sub.notify()&&e.sub.dep.notify()}finally{Ie()}}};function Xe(e){if(e.dep.sc++,e.sub.flags&4){let t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let e=t.deps;e;e=e.nextDep)Xe(e)}let n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}var Ze=new WeakMap,Qe=Symbol(``),$e=Symbol(``),et=Symbol(``);function N(e,t,n){if(M&&j){let t=Ze.get(e);t||Ze.set(e,t=new Map);let r=t.get(n);r||(t.set(n,r=new Ye),r.map=t,r.key=n),r.track()}}function P(e,t,n,r,i,a){let o=Ze.get(e);if(!o){qe++;return}let s=e=>{e&&e.trigger()};if(Fe(),t===`clear`)o.forEach(s);else{let i=d(e),a=i&&w(n);if(i&&n===`length`){let e=Number(r);o.forEach((t,n)=>{(n===`length`||n===et||!_(n)&&n>=e)&&s(t)})}else switch((n!==void 0||o.has(void 0))&&s(o.get(n)),a&&s(o.get(et)),t){case`add`:i?a&&s(o.get(`length`)):(s(o.get(Qe)),f(e)&&s(o.get($e)));break;case`delete`:i||(s(o.get(Qe)),f(e)&&s(o.get($e)));break;case`set`:f(e)&&s(o.get(Qe));break}}Ie()}function tt(e,t){let n=Ze.get(e);return n&&n.get(t)}function nt(e){let t=z(e);return t===e?t:(N(t,`iterate`,et),R(e)?t:t.map(B))}function rt(e){return N(e=z(e),`iterate`,et),e}function F(e,t){return Lt(e)?Bt(L(e)?B(t):t):B(t)}var it={__proto__:null,[Symbol.iterator](){return at(this,Symbol.iterator,e=>F(this,e))},concat(...e){return nt(this).concat(...e.map(e=>d(e)?nt(e):e))},entries(){return at(this,`entries`,e=>(e[1]=F(this,e[1]),e))},every(e,t){return I(this,`every`,e,t,void 0,arguments)},filter(e,t){return I(this,`filter`,e,t,e=>e.map(e=>F(this,e)),arguments)},find(e,t){return I(this,`find`,e,t,e=>F(this,e),arguments)},findIndex(e,t){return I(this,`findIndex`,e,t,void 0,arguments)},findLast(e,t){return I(this,`findLast`,e,t,e=>F(this,e),arguments)},findLastIndex(e,t){return I(this,`findLastIndex`,e,t,void 0,arguments)},forEach(e,t){return I(this,`forEach`,e,t,void 0,arguments)},includes(...e){return ct(this,`includes`,e)},indexOf(...e){return ct(this,`indexOf`,e)},join(e){return nt(this).join(e)},lastIndexOf(...e){return ct(this,`lastIndexOf`,e)},map(e,t){return I(this,`map`,e,t,void 0,arguments)},pop(){return lt(this,`pop`)},push(...e){return lt(this,`push`,e)},reduce(e,...t){return st(this,`reduce`,e,t)},reduceRight(e,...t){return st(this,`reduceRight`,e,t)},shift(){return lt(this,`shift`)},some(e,t){return I(this,`some`,e,t,void 0,arguments)},splice(...e){return lt(this,`splice`,e)},toReversed(){return nt(this).toReversed()},toSorted(e){return nt(this).toSorted(e)},toSpliced(...e){return nt(this).toSpliced(...e)},unshift(...e){return lt(this,`unshift`,e)},values(){return at(this,`values`,e=>F(this,e))}};function at(e,t,n){let r=rt(e),i=r[t]();return r!==e&&!R(e)&&(i._next=i.next,i.next=()=>{let e=i._next();return e.done||(e.value=n(e.value)),e}),i}var ot=Array.prototype;function I(e,t,n,r,i,a){let o=rt(e),s=o!==e&&!R(e),c=o[t];if(c!==ot[t]){let t=c.apply(e,a);return s?B(t):t}let l=n;o!==e&&(s?l=function(t,r){return n.call(this,F(e,t),r,e)}:n.length>2&&(l=function(t,r){return n.call(this,t,r,e)}));let u=c.call(o,l,r);return s&&i?i(u):u}function st(e,t,n,r){let i=rt(e),a=i!==e&&!R(e),o=n,s=!1;i!==e&&(a?(s=r.length===0,o=function(t,r,i){return s&&(s=!1,t=F(e,t)),n.call(this,t,F(e,r),i,e)}):n.length>3&&(o=function(t,r,i){return n.call(this,t,r,i,e)}));let c=i[t](o,...r);return s?F(e,c):c}function ct(e,t,n){let r=z(e);N(r,`iterate`,et);let i=r[t](...n);return(i===-1||i===!1)&&Rt(n[0])?(n[0]=z(n[0]),r[t](...n)):i}function lt(e,t,n=[]){We(),Fe();let r=z(e)[t].apply(e,n);return Ie(),Ge(),r}var ut=e(`__proto__,__v_isRef,__isVue`),dt=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!==`arguments`&&e!==`caller`).map(e=>Symbol[e]).filter(_));function ft(e){_(e)||(e=String(e));let t=z(this);return N(t,`has`,e),t.hasOwnProperty(e)}var pt=class{constructor(e=!1,t=!1){this._isReadonly=e,this._isShallow=t}get(e,t,n){if(t===`__v_skip`)return e.__v_skip;let r=this._isReadonly,i=this._isShallow;if(t===`__v_isReactive`)return!r;if(t===`__v_isReadonly`)return r;if(t===`__v_isShallow`)return i;if(t===`__v_raw`)return n===(r?i?jt:At:i?kt:Ot).get(e)||Object.getPrototypeOf(e)===Object.getPrototypeOf(n)?e:void 0;let a=d(e);if(!r){let e;if(a&&(e=it[t]))return e;if(t===`hasOwnProperty`)return ft}let o=Reflect.get(e,t,V(e)?e:n);if((_(t)?dt.has(t):ut(t))||(r||N(e,`get`,t),i))return o;if(V(o)){let e=a&&w(t)?o:o.value;return r&&v(e)?Ft(e):e}return v(o)?r?Ft(o):Nt(o):o}},mt=class extends pt{constructor(e=!1){super(!1,e)}set(e,t,n,r){let i=e[t],a=d(e)&&w(t);if(!this._isShallow){let e=Lt(i);if(!R(n)&&!Lt(n)&&(i=z(i),n=z(n)),!a&&V(i)&&!V(n))return e||(i.value=n),!0}let o=a?Number(t)<e.length:u(e,t),s=Reflect.set(e,t,n,V(e)?e:r);return e===z(r)&&s&&(o?D(n,i)&&P(e,`set`,t,n,i):P(e,`add`,t,n)),s}deleteProperty(e,t){let n=u(e,t),r=e[t],i=Reflect.deleteProperty(e,t);return i&&n&&P(e,`delete`,t,void 0,r),i}has(e,t){let n=Reflect.has(e,t);return(!_(t)||!dt.has(t))&&N(e,`has`,t),n}ownKeys(e){return N(e,`iterate`,d(e)?`length`:Qe),Reflect.ownKeys(e)}},ht=class extends pt{constructor(e=!1){super(!0,e)}set(e,t){return!0}deleteProperty(e,t){return!0}},gt=new mt,_t=new ht,vt=new mt(!0),yt=e=>e,bt=e=>Reflect.getPrototypeOf(e);function xt(e,t,n){return function(...r){let i=this.__v_raw,a=z(i),o=f(a),c=e===`entries`||e===Symbol.iterator&&o,l=e===`keys`&&o,u=i[e](...r),d=n?yt:t?Bt:B;return!t&&N(a,`iterate`,l?$e:Qe),s(Object.create(u),{next(){let{value:e,done:t}=u.next();return t?{value:e,done:t}:{value:c?[d(e[0]),d(e[1])]:d(e),done:t}}})}}function St(e){return function(...t){return e===`delete`?!1:e===`clear`?void 0:this}}function Ct(e,t){let n={get(n){let r=this.__v_raw,i=z(r),a=z(n);e||(D(n,a)&&N(i,`get`,n),N(i,`get`,a));let{has:o}=bt(i),s=t?yt:e?Bt:B;if(o.call(i,n))return s(r.get(n));if(o.call(i,a))return s(r.get(a));r!==i&&r.get(n)},get size(){let t=this.__v_raw;return!e&&N(z(t),`iterate`,Qe),t.size},has(t){let n=this.__v_raw,r=z(n),i=z(t);return e||(D(t,i)&&N(r,`has`,t),N(r,`has`,i)),t===i?n.has(t):n.has(t)||n.has(i)},forEach(n,r){let i=this,a=i.__v_raw,o=z(a),s=t?yt:e?Bt:B;return!e&&N(o,`iterate`,Qe),a.forEach((e,t)=>n.call(r,s(e),s(t),i))}};return s(n,e?{add:St(`add`),set:St(`set`),delete:St(`delete`),clear:St(`clear`)}:{add(e){let n=z(this),r=bt(n),i=z(e),a=!t&&!R(e)&&!Lt(e)?i:e;return r.has.call(n,a)||D(e,a)&&r.has.call(n,e)||D(i,a)&&r.has.call(n,i)||(n.add(a),P(n,`add`,a,a)),this},set(e,n){!t&&!R(n)&&!Lt(n)&&(n=z(n));let r=z(this),{has:i,get:a}=bt(r),o=i.call(r,e);o||=(e=z(e),i.call(r,e));let s=a.call(r,e);return r.set(e,n),o?D(n,s)&&P(r,`set`,e,n,s):P(r,`add`,e,n),this},delete(e){let t=z(this),{has:n,get:r}=bt(t),i=n.call(t,e);i||=(e=z(e),n.call(t,e));let a=r?r.call(t,e):void 0,o=t.delete(e);return i&&P(t,`delete`,e,void 0,a),o},clear(){let e=z(this),t=e.size!==0,n=e.clear();return t&&P(e,`clear`,void 0,void 0,void 0),n}}),[`keys`,`values`,`entries`,Symbol.iterator].forEach(r=>{n[r]=xt(r,e,t)}),n}function wt(e,t){let n=Ct(e,t);return(t,r,i)=>r===`__v_isReactive`?!e:r===`__v_isReadonly`?e:r===`__v_raw`?t:Reflect.get(u(n,r)&&r in t?n:t,r,i)}var Tt={get:wt(!1,!1)},Et={get:wt(!1,!0)},Dt={get:wt(!0,!1)},Ot=new WeakMap,kt=new WeakMap,At=new WeakMap,jt=new WeakMap;function Mt(e){switch(e){case`Object`:case`Array`:return 1;case`Map`:case`Set`:case`WeakMap`:case`WeakSet`:return 2;default:return 0}}function Nt(e){return Lt(e)?e:It(e,!1,gt,Tt,Ot)}function Pt(e){return It(e,!1,vt,Et,kt)}function Ft(e){return It(e,!0,_t,Dt,At)}function It(e,t,n,r,i){if(!v(e)||e.__v_raw&&!(t&&e.__v_isReactive)||e.__v_skip||!Object.isExtensible(e))return e;let a=i.get(e);if(a)return a;let o=Mt(S(e));if(o===0)return e;let s=new Proxy(e,o===2?r:n);return i.set(e,s),s}function L(e){return Lt(e)?L(e.__v_raw):!!(e&&e.__v_isReactive)}function Lt(e){return!!(e&&e.__v_isReadonly)}function R(e){return!!(e&&e.__v_isShallow)}function Rt(e){return e?!!e.__v_raw:!1}function z(e){let t=e&&e.__v_raw;return t?z(t):e}function zt(e){return!u(e,`__v_skip`)&&Object.isExtensible(e)&&O(e,`__v_skip`,!0),e}var B=e=>v(e)?Nt(e):e,Bt=e=>v(e)?Ft(e):e;function V(e){return e?e.__v_isRef===!0:!1}function Vt(e){return Ut(e,!1)}function Ht(e){return Ut(e,!0)}function Ut(e,t){return V(e)?e:new Wt(e,t)}var Wt=class{constructor(e,t){this.dep=new Ye,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=t?e:z(e),this._value=t?e:B(e),this.__v_isShallow=t}get value(){return this.dep.track(),this._value}set value(e){let t=this._rawValue,n=this.__v_isShallow||R(e)||Lt(e);e=n?e:z(e),D(e,t)&&(this._rawValue=e,this._value=n?e:B(e),this.dep.trigger())}};function Gt(e){return V(e)?e.value:e}var Kt={get:(e,t,n)=>t===`__v_raw`?e:Gt(Reflect.get(e,t,n)),set:(e,t,n,r)=>{let i=e[t];return V(i)&&!V(n)?(i.value=n,!0):Reflect.set(e,t,n,r)}};function qt(e){return L(e)?e:new Proxy(e,Kt)}function Jt(e){let t=d(e)?Array(e.length):{};for(let n in e)t[n]=Xt(e,n);return t}var Yt=class{constructor(e,t,n){this._object=e,this._defaultValue=n,this.__v_isRef=!0,this._value=void 0,this._key=_(t)?t:String(t),this._raw=z(e);let r=!0,i=e;if(!d(e)||_(this._key)||!w(this._key))do r=!Rt(i)||R(i);while(r&&(i=i.__v_raw));this._shallow=r}get value(){let e=this._object[this._key];return this._shallow&&(e=Gt(e)),this._value=e===void 0?this._defaultValue:e}set value(e){if(this._shallow&&V(this._raw[this._key])){let t=this._object[this._key];if(V(t)){t.value=e;return}}this._object[this._key]=e}get dep(){return tt(this._raw,this._key)}};function Xt(e,t,n){return new Yt(e,t,n)}var Zt=class{constructor(e,t,n){this.fn=e,this.setter=t,this._value=void 0,this.dep=new Ye(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=qe-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!t,this.isSSR=n}notify(){if(this.flags|=16,!(this.flags&8)&&j!==this)return Pe(this,!0),!0}get value(){let e=this.dep.track();return Be(this),e&&(e.version=this.dep.version),this._value}set value(e){this.setter&&this.setter(e)}};function Qt(e,t,n=!1){let r,i;return h(e)?r=e:(r=e.get,i=e.set),new Zt(r,i,n)}var $t={},en=new WeakMap,tn=void 0;function nn(e,t=!1,n=tn){if(n){let t=en.get(n);t||en.set(n,t=[]),t.push(e)}}function rn(e,n,i=t){let{immediate:a,deep:o,once:s,scheduler:l,augmentJob:u,call:f}=i,p=e=>o?e:R(e)||o===!1||o===0?an(e,1):an(e),m,g,_,v,y=!1,b=!1;if(V(e)?(g=()=>e.value,y=R(e)):L(e)?(g=()=>p(e),y=!0):d(e)?(b=!0,y=e.some(e=>L(e)||R(e)),g=()=>e.map(e=>{if(V(e))return e.value;if(L(e))return p(e);if(h(e))return f?f(e,2):e()})):g=h(e)?n?f?()=>f(e,2):e:()=>{if(_){We();try{_()}finally{Ge()}}let t=tn;tn=m;try{return f?f(e,3,[v]):e(v)}finally{tn=t}}:r,n&&o){let e=g,t=o===!0?1/0:o;g=()=>an(e(),t)}let x=De(),S=()=>{m.stop(),x&&x.active&&c(x.effects,m)};if(s&&n){let e=n;n=(...t)=>{let n=e(...t);return S(),n}}let C=b?Array(e.length).fill($t):$t,w=e=>{if(!(!(m.flags&1)||!m.dirty&&!e))if(n){let t=m.run();if(e||o||y||(b?t.some((e,t)=>D(e,C[t])):D(t,C))){_&&_();let e=tn;tn=m;try{let e=[t,C===$t?void 0:b&&C[0]===$t?[]:C,v];C=t,f?f(n,3,e):n(...e)}finally{tn=e}}}else m.run()};return u&&u(w),m=new Ae(g),m.scheduler=l?()=>l(w,!1):w,v=e=>nn(e,!1,m),_=m.onStop=()=>{let e=en.get(m);if(e){if(f)f(e,4);else for(let t of e)t();en.delete(m)}},n?a?w(!0):C=m.run():l?l(w.bind(null,!0),!0):m.run(),S.pause=m.pause.bind(m),S.resume=m.resume.bind(m),S.stop=S,S}function an(e,t=1/0,n){if(t<=0||!v(e)||e.__v_skip||(n||=new Map,(n.get(e)||0)>=t))return e;if(n.set(e,t),t--,V(e))an(e.value,t,n);else if(d(e))for(let r=0;r<e.length;r++)an(e[r],t,n);else if(p(e)||f(e))e.forEach(e=>{an(e,t,n)});else if(C(e)){for(let r in e)an(e[r],t,n);for(let r of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,r)&&an(e[r],t,n)}return e}function on(e,t,n,r){try{return r?e(...r):e()}catch(e){sn(e,t,n)}}function H(e,t,n,r){if(h(e)){let i=on(e,t,n,r);return i&&y(i)&&i.catch(e=>{sn(e,t,n)}),i}if(d(e)){let i=[];for(let a=0;a<e.length;a++)i.push(H(e[a],t,n,r));return i}}function sn(e,n,r,i=!0){let a=n?n.vnode:null,{errorHandler:o,throwUnhandledErrorInProduction:s}=n&&n.appContext.config||t;if(n){let t=n.parent,i=n.proxy,a=`https://vuejs.org/error-reference/#runtime-${r}`;for(;t;){let n=t.ec;if(n){for(let t=0;t<n.length;t++)if(n[t](e,i,a)===!1)return}t=t.parent}if(o){We(),on(o,null,10,[e,i,a]),Ge();return}}cn(e,r,a,i,s)}function cn(e,t,n,r=!0,i=!1){if(i)throw e;console.error(e)}var U=[],W=-1,ln=[],un=null,dn=0,fn=Promise.resolve(),pn=null;function mn(e){let t=pn||fn;return e?t.then(this?e.bind(this):e):t}function hn(e){let t=W+1,n=U.length;for(;t<n;){let r=t+n>>>1,i=U[r],a=xn(i);a<e||a===e&&i.flags&2?t=r+1:n=r}return t}function gn(e){if(!(e.flags&1)){let t=xn(e),n=U[U.length-1];!n||!(e.flags&2)&&t>=xn(n)?U.push(e):U.splice(hn(t),0,e),e.flags|=1,_n()}}function _n(){pn||=fn.then(Sn)}function vn(e){d(e)?ln.push(...e):un&&e.id===-1?un.splice(dn+1,0,e):e.flags&1||(ln.push(e),e.flags|=1),_n()}function yn(e,t,n=W+1){for(;n<U.length;n++){let t=U[n];if(t&&t.flags&2){if(e&&t.id!==e.uid)continue;U.splice(n,1),n--,t.flags&4&&(t.flags&=-2),t(),t.flags&4||(t.flags&=-2)}}}function bn(e){if(ln.length){let e=[...new Set(ln)].sort((e,t)=>xn(e)-xn(t));if(ln.length=0,un){un.push(...e);return}for(un=e,dn=0;dn<un.length;dn++){let e=un[dn];e.flags&4&&(e.flags&=-2),e.flags&8||e(),e.flags&=-2}un=null,dn=0}}var xn=e=>e.id==null?e.flags&2?-1:1/0:e.id;function Sn(e){try{for(W=0;W<U.length;W++){let e=U[W];e&&!(e.flags&8)&&(e.flags&4&&(e.flags&=-2),on(e,e.i,e.i?15:14),e.flags&4||(e.flags&=-2))}}finally{for(;W<U.length;W++){let e=U[W];e&&(e.flags&=-2)}W=-1,U.length=0,bn(e),pn=null,(U.length||ln.length)&&Sn(e)}}var G=null,Cn=null;function wn(e){let t=G;return G=e,Cn=e&&e.type.__scopeId||null,t}function Tn(e,t=G,n){if(!t||e._n)return e;let r=(...n)=>{r._d&&Ii(-1);let i=wn(t),a=Mi.length,o;try{o=e(...n)}finally{for(let e=Mi.length;e>a;e--)Pi();wn(i),r._d&&Ii(1)}return o};return r._n=!0,r._c=!0,r._d=!0,r}function En(e,n){if(G===null)return e;let r=va(G),i=e.dirs||=[];for(let e=0;e<n.length;e++){let[a,o,s,c=t]=n[e];a&&(h(a)&&(a={mounted:a,updated:a}),a.deep&&an(o),i.push({dir:a,instance:r,value:o,oldValue:void 0,arg:s,modifiers:c}))}return e}function Dn(e,t,n,r){let i=e.dirs,a=t&&t.dirs;for(let o=0;o<i.length;o++){let s=i[o];a&&(s.oldValue=a[o].value);let c=s.dir[r];c&&(We(),H(c,n,8,[e.el,s,e,t]),Ge())}}function On(e,t){if($){let n=$.provides,r=$.parent&&$.parent.provides;r===n&&(n=$.provides=Object.create(r)),n[e]=t}}function kn(e,t,n=!1){let r=ra();if(r||Br){let i=Br?Br._context.provides:r?r.parent==null||r.ce?r.vnode.appContext&&r.vnode.appContext.provides:r.parent.provides:void 0;if(i&&e in i)return i[e];if(arguments.length>1)return n&&h(t)?t.call(r&&r.proxy):t}}function An(){return!!(ra()||Br)}var jn=Symbol.for(`v-scx`),Mn=()=>kn(jn);function Nn(e,t,n){return Pn(e,t,n)}function Pn(e,n,i=t){let{immediate:a,deep:o,flush:c,once:l}=i,u=s({},i),d=n&&a||!n&&c!==`post`,f;if(la){if(c===`sync`){let e=Mn();f=e.__watcherHandles||=[]}else if(!d){let e=()=>{};return e.stop=r,e.resume=r,e.pause=r,e}}let p=$;u.call=(e,t,n)=>H(e,p,t,n);let m=!1;c===`post`?u.scheduler=e=>{q(e,p&&p.suspense)}:c!==`sync`&&(m=!0,u.scheduler=(e,t)=>{t?e():gn(e)}),u.augmentJob=e=>{n&&(e.flags|=4),m&&(e.flags|=2,p&&(e.id=p.uid,e.i=p))};let h=rn(e,n,u);return la&&(f?f.push(h):d&&h()),h}function Fn(e,t,n){let r=this.proxy,i=g(e)?e.includes(`.`)?In(r,e):()=>r[e]:e.bind(r,r),a;h(t)?a=t:(a=t.handler,n=t);let o=oa(this),s=Pn(i,a.bind(r),n);return o(),s}function In(e,t){let n=t.split(`.`);return()=>{let t=e;for(let e=0;e<n.length&&t;e++)t=t[n[e]];return t}}var Ln=Symbol(`_vte`),Rn=e=>e.__isTeleport,zn=Symbol(`_leaveCb`);function Bn(e,t){e.shapeFlag&6&&e.component?(e.transition=t,Bn(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Vn(e,t){return h(e)?s({name:e.name},t,{setup:e}):e}function Hn(){let e=ra();return e?(e.appContext.config.idPrefix||`v`)+`-`+e.ids[0]+e.ids[1]++:``}function Un(e){e.ids=[e.ids[0]+e.ids[2]+++`-`,0,0]}function Wn(e,t){let n;return!!((n=Object.getOwnPropertyDescriptor(e,t))&&!n.configurable)}var Gn=new WeakMap;function Kn(e,n,r,a,o=!1){if(d(e)){e.forEach((e,t)=>Kn(e,n&&(d(n)?n[t]:n),r,a,o));return}if(Jn(a)&&!o){a.shapeFlag&512&&a.type.__asyncResolved&&a.component.subTree.component&&Kn(e,n,r,a.component.subTree);return}let s=a.shapeFlag&4?va(a.component):a.el,l=o?null:s,{i:f,r:p}=e,m=n&&n.r,_=f.refs===t?f.refs={}:f.refs,v=f.setupState,y=z(v),b=v===t?i:e=>!Wn(_,e)&&u(y,e),x=(e,t)=>!(t&&Wn(_,t));if(m!=null&&m!==p){if(qn(n),g(m))_[m]=null,b(m)&&(v[m]=null);else if(V(m)){let e=n;x(m,e.k)&&(m.value=null),e.k&&(_[e.k]=null)}}if(h(p))on(p,f,12,[l,_]);else{let t=g(p),n=V(p);if(t||n){let i=()=>{if(e.f){let n=t?b(p)?v[p]:_[p]:x(p)||!e.k?p.value:_[e.k];if(o)d(n)&&c(n,s);else if(d(n))n.includes(s)||n.push(s);else if(t)_[p]=[s],b(p)&&(v[p]=_[p]);else{let t=[s];x(p,e.k)&&(p.value=t),e.k&&(_[e.k]=t)}}else t?(_[p]=l,b(p)&&(v[p]=l)):n&&(x(p,e.k)&&(p.value=l),e.k&&(_[e.k]=l))};if(l){let t=()=>{i(),Gn.delete(e)};t.id=-1,Gn.set(e,t),q(t,r)}else qn(e),i()}}}function qn(e){let t=Gn.get(e);t&&(t.flags|=8,Gn.delete(e))}le().requestIdleCallback,le().cancelIdleCallback;var Jn=e=>!!e.type.__asyncLoader,Yn=e=>e.type.__isKeepAlive;function Xn(e,t){Qn(e,`a`,t)}function Zn(e,t){Qn(e,`da`,t)}function Qn(e,t,n=$){let r=e.__wdc||=()=>{let t=n;for(;t;){if(t.isDeactivated)return;t=t.parent}return e()};if(er(t,r,n),n){let e=n.parent;for(;e&&e.parent;)Yn(e.parent.vnode)&&$n(r,t,n,e),e=e.parent}}function $n(e,t,n,r){let i=er(t,e,r,!0);sr(()=>{c(r[t],i)},n)}function er(e,t,n=$,r=!1){if(n){let i=n[e]||(n[e]=[]),a=t.__weh||=(...r)=>{We();let i=oa(n),a=H(t,n,e,r);return i(),Ge(),a};return r?i.unshift(a):i.push(a),a}}var tr=e=>(t,n=$)=>{(!la||e===`sp`)&&er(e,(...e)=>t(...e),n)},nr=tr(`bm`),rr=tr(`m`),ir=tr(`bu`),ar=tr(`u`),or=tr(`bum`),sr=tr(`um`),cr=tr(`sp`),lr=tr(`rtg`),ur=tr(`rtc`);function dr(e,t=$){er(`ec`,e,t)}var fr=`components`,pr=Symbol.for(`v-ndc`);function mr(e){return g(e)?hr(fr,e,!1)||e:e||pr}function hr(e,t,n=!0,r=!1){let i=G||$;if(i){let n=i.type;if(e===fr){let e=ya(n,!1);if(e&&(e===t||e===T(t)||e===ie(T(t))))return n}let a=gr(i[e]||n[e],t)||gr(i.appContext[e],t);return!a&&r?n:a}}function gr(e,t){return e&&(e[t]||e[T(t)]||e[ie(T(t))])}function _r(e,t,n,r){let i,a=n&&n[r],o=d(e);if(o||g(e)){let n=o&&L(e),r=!1,s=!1;n&&(r=!R(e),s=Lt(e),e=rt(e)),i=Array(e.length);for(let n=0,o=e.length;n<o;n++)i[n]=t(r?s?Bt(B(e[n])):B(e[n]):e[n],n,void 0,a&&a[n])}else if(typeof e==`number`){i=Array(e);for(let n=0;n<e;n++)i[n]=t(n+1,n,void 0,a&&a[n])}else if(v(e))if(e[Symbol.iterator])i=Array.from(e,(e,n)=>t(e,n,void 0,a&&a[n]));else{let n=Object.keys(e);i=Array(n.length);for(let r=0,o=n.length;r<o;r++){let o=n[r];i[r]=t(e[o],o,r,a&&a[r])}}else i=[];return n&&(n[r]=i),i}var vr=e=>e?ca(e)?va(e):vr(e.parent):null,yr=s(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>vr(e.parent),$root:e=>vr(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Or(e),$forceUpdate:e=>e.f||=()=>{gn(e.update)},$nextTick:e=>e.n||=mn.bind(e.proxy),$watch:e=>Fn.bind(e)}),br=(e,n)=>e!==t&&!e.__isScriptSetup&&u(e,n),xr={get({_:e},n){if(n===`__v_skip`)return!0;let{ctx:r,setupState:i,data:a,props:o,accessCache:s,type:c,appContext:l}=e;if(n[0]!==`$`){let e=s[n];if(e!==void 0)switch(e){case 1:return i[n];case 2:return a[n];case 4:return r[n];case 3:return o[n]}else if(br(i,n))return s[n]=1,i[n];else if(a!==t&&u(a,n))return s[n]=2,a[n];else if(u(o,n))return s[n]=3,o[n];else if(r!==t&&u(r,n))return s[n]=4,r[n];else Cr&&(s[n]=0)}let d=yr[n],f,p;if(d)return n===`$attrs`&&N(e.attrs,`get`,``),d(e);if((f=c.__cssModules)&&(f=f[n]))return f;if(r!==t&&u(r,n))return s[n]=4,r[n];if(p=l.config.globalProperties,u(p,n))return p[n]},set({_:e},n,r){let{data:i,setupState:a,ctx:o}=e;return br(a,n)?(a[n]=r,!0):i!==t&&u(i,n)?(i[n]=r,!0):u(e.props,n)||n[0]===`$`&&n.slice(1)in e?!1:(o[n]=r,!0)},has({_:{data:e,setupState:n,accessCache:r,ctx:i,appContext:a,props:o,type:s}},c){let l;return!!(r[c]||e!==t&&c[0]!==`$`&&u(e,c)||br(n,c)||u(o,c)||u(i,c)||u(yr,c)||u(a.config.globalProperties,c)||(l=s.__cssModules)&&l[c])},defineProperty(e,t,n){return n.get==null?u(n,`value`)&&this.set(e,t,n.value,null):e._.accessCache[t]=0,Reflect.defineProperty(e,t,n)}};function Sr(e){return d(e)?e.reduce((e,t)=>(e[t]=null,e),{}):e}var Cr=!0;function wr(e){let t=Or(e),n=e.proxy,i=e.ctx;Cr=!1,t.beforeCreate&&Er(t.beforeCreate,e,`bc`);let{data:a,computed:o,methods:s,watch:c,provide:l,inject:u,created:f,beforeMount:p,mounted:m,beforeUpdate:g,updated:_,activated:y,deactivated:b,beforeDestroy:x,beforeUnmount:S,destroyed:C,unmounted:w,render:ee,renderTracked:te,renderTriggered:ne,errorCaptured:T,serverPrefetch:re,expose:E,inheritAttrs:ie,components:ae,directives:D,filters:oe}=t;if(u&&Tr(u,i,null),s)for(let e in s){let t=s[e];h(t)&&(i[e]=t.bind(n))}if(a){let t=a.call(n,n);v(t)&&(e.data=Nt(t))}if(Cr=!0,o)for(let e in o){let t=o[e],a=xa({get:h(t)?t.bind(n,n):h(t.get)?t.get.bind(n,n):r,set:!h(t)&&h(t.set)?t.set.bind(n):r});Object.defineProperty(i,e,{enumerable:!0,configurable:!0,get:()=>a.value,set:e=>a.value=e})}if(c)for(let e in c)Dr(c[e],i,n,e);if(l){let e=h(l)?l.call(n):l;Reflect.ownKeys(e).forEach(t=>{On(t,e[t])})}f&&Er(f,e,`c`);function O(e,t){d(t)?t.forEach(t=>e(t.bind(n))):t&&e(t.bind(n))}if(O(nr,p),O(rr,m),O(ir,g),O(ar,_),O(Xn,y),O(Zn,b),O(dr,T),O(ur,te),O(lr,ne),O(or,S),O(sr,w),O(cr,re),d(E))if(E.length){let t=e.exposed||={};E.forEach(e=>{Object.defineProperty(t,e,{get:()=>n[e],set:t=>n[e]=t,enumerable:!0})})}else e.exposed||={};ee&&e.render===r&&(e.render=ee),ie!=null&&(e.inheritAttrs=ie),ae&&(e.components=ae),D&&(e.directives=D),re&&Un(e)}function Tr(e,t,n=r){d(e)&&(e=Nr(e));for(let n in e){let r=e[n],i;i=v(r)?`default`in r?kn(r.from||n,r.default,!0):kn(r.from||n):kn(r),V(i)?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>i.value,set:e=>i.value=e}):t[n]=i}}function Er(e,t,n){H(d(e)?e.map(e=>e.bind(t.proxy)):e.bind(t.proxy),t,n)}function Dr(e,t,n,r){let i=r.includes(`.`)?In(n,r):()=>n[r];if(g(e)){let n=t[e];h(n)&&Nn(i,n)}else if(h(e))Nn(i,e.bind(n));else if(v(e))if(d(e))e.forEach(e=>Dr(e,t,n,r));else{let r=h(e.handler)?e.handler.bind(n):t[e.handler];h(r)&&Nn(i,r,e)}}function Or(e){let t=e.type,{mixins:n,extends:r}=t,{mixins:i,optionsCache:a,config:{optionMergeStrategies:o}}=e.appContext,s=a.get(t),c;return s?c=s:!i.length&&!n&&!r?c=t:(c={},i.length&&i.forEach(e=>kr(c,e,o,!0)),kr(c,t,o)),v(t)&&a.set(t,c),c}function kr(e,t,n,r=!1){let{mixins:i,extends:a}=t;a&&kr(e,a,n,!0),i&&i.forEach(t=>kr(e,t,n,!0));for(let i in t)if(!(r&&i===`expose`)){let r=Ar[i]||n&&n[i];e[i]=r?r(e[i],t[i]):t[i]}return e}var Ar={data:jr,props:Fr,emits:Fr,methods:Pr,computed:Pr,beforeCreate:K,created:K,beforeMount:K,mounted:K,beforeUpdate:K,updated:K,beforeDestroy:K,beforeUnmount:K,destroyed:K,unmounted:K,activated:K,deactivated:K,errorCaptured:K,serverPrefetch:K,components:Pr,directives:Pr,watch:Ir,provide:jr,inject:Mr};function jr(e,t){return t?e?function(){return s(h(e)?e.call(this,this):e,h(t)?t.call(this,this):t)}:t:e}function Mr(e,t){return Pr(Nr(e),Nr(t))}function Nr(e){if(d(e)){let t={};for(let n=0;n<e.length;n++)t[e[n]]=e[n];return t}return e}function K(e,t){return e?[...new Set([].concat(e,t))]:t}function Pr(e,t){return e?s(Object.create(null),e,t):t}function Fr(e,t){return e?d(e)&&d(t)?[...new Set([...e,...t])]:s(Object.create(null),Sr(e),Sr(t??{})):t}function Ir(e,t){if(!e)return t;if(!t)return e;let n=s(Object.create(null),e);for(let r in t)n[r]=K(e[r],t[r]);return n}function Lr(){return{app:null,config:{isNativeTag:i,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}var Rr=0;function zr(e,t){return function(n,r=null){h(n)||(n=s({},n)),r!=null&&!v(r)&&(r=null);let i=Lr(),a=new WeakSet,o=[],c=!1,l=i.app={_uid:Rr++,_component:n,_props:r,_container:null,_context:i,_instance:null,version:Ca,get config(){return i.config},set config(e){},use(e,...t){return a.has(e)||(e&&h(e.install)?(a.add(e),e.install(l,...t)):h(e)&&(a.add(e),e(l,...t))),l},mixin(e){return i.mixins.includes(e)||i.mixins.push(e),l},component(e,t){return t?(i.components[e]=t,l):i.components[e]},directive(e,t){return t?(i.directives[e]=t,l):i.directives[e]},mount(a,o,s){if(!c){let u=l._ceVNode||X(n,r);return u.appContext=i,s===!0?s=`svg`:s===!1&&(s=void 0),o&&t?t(u,a):e(u,a,s),c=!0,l._container=a,a.__vue_app__=l,va(u.component)}},onUnmount(e){o.push(e)},unmount(){c&&(H(o,l._instance,16),e(null,l._container),delete l._container.__vue_app__)},provide(e,t){return i.provides[e]=t,l},runWithContext(e){let t=Br;Br=l;try{return e()}finally{Br=t}}};return l}}var Br=null,Vr=(e,t)=>t===`modelValue`||t===`model-value`?e.modelModifiers:e[`${t}Modifiers`]||e[`${T(t)}Modifiers`]||e[`${E(t)}Modifiers`];function Hr(e,n,...r){if(e.isUnmounted)return;let i=e.vnode.props||t,a=r,o=n.startsWith(`update:`),s=o&&Vr(i,n.slice(7));s&&(s.trim&&(a=r.map(e=>g(e)?e.trim():e)),s.number&&(a=r.map(se)));let c,l=i[c=ae(n)]||i[c=ae(T(n))];!l&&o&&(l=i[c=ae(E(n))]),l&&H(l,e,6,a);let u=i[c+`Once`];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[c])return;e.emitted[c]=!0,H(u,e,6,a)}}var Ur=new WeakMap;function Wr(e,t,n=!1){let r=n?Ur:t.emitsCache,i=r.get(e);if(i!==void 0)return i;let a=e.emits,o={},c=!1;if(!h(e)){let r=e=>{let n=Wr(e,t,!0);n&&(c=!0,s(o,n))};!n&&t.mixins.length&&t.mixins.forEach(r),e.extends&&r(e.extends),e.mixins&&e.mixins.forEach(r)}return!a&&!c?(v(e)&&r.set(e,null),null):(d(a)?a.forEach(e=>o[e]=null):s(o,a),v(e)&&r.set(e,o),o)}function Gr(e,t){return!e||!a(t)?!1:(t=t.slice(2),t=t===`Once`?t:t.replace(/Once$/,``),u(e,t[0].toLowerCase()+t.slice(1))||u(e,E(t))||u(e,t))}function Kr(e){let{type:t,vnode:n,proxy:r,withProxy:i,propsOptions:[a],slots:s,attrs:c,emit:l,render:u,renderCache:d,props:f,data:p,setupState:m,ctx:h,inheritAttrs:g}=e,_=wn(e),v,y;try{if(n.shapeFlag&4){let e=i||r,t=e;v=Z(u.call(t,e,d,f,m,p,h)),y=c}else{let e=t;v=Z(e.length>1?e(f,{attrs:c,slots:s,emit:l}):e(f,null)),y=t.props?c:qr(c)}}catch(t){Mi.length=0,sn(t,e,1),v=X(Ai)}let b=v;if(y&&g!==!1){let e=Object.keys(y),{shapeFlag:t}=b;e.length&&t&7&&(a&&e.some(o)&&(y=Jr(y,a)),b=qi(b,y,!1,!0))}return n.dirs&&(b=qi(b,null,!1,!0),b.dirs=b.dirs?b.dirs.concat(n.dirs):n.dirs),n.transition&&Bn(b,n.transition),v=b,wn(_),v}var qr=e=>{let t;for(let n in e)(n===`class`||n===`style`||a(n))&&((t||={})[n]=e[n]);return t},Jr=(e,t)=>{let n={};for(let r in e)(!o(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function Yr(e,t,n){let{props:r,children:i,component:a}=e,{props:o,children:s,patchFlag:c}=t,l=a.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return r?Xr(r,o,l):!!o;if(c&8){let e=t.dynamicProps;for(let t=0;t<e.length;t++){let n=e[t];if(Zr(o,r,n)&&!Gr(l,n))return!0}}}else return(i||s)&&(!s||!s.$stable)?!0:r===o?!1:r?!o||Xr(r,o,l):!!o;return!1}function Xr(e,t,n){let r=Object.keys(t);if(r.length!==Object.keys(e).length)return!0;for(let i=0;i<r.length;i++){let a=r[i];if(Zr(t,e,a)&&!Gr(n,a))return!0}return!1}function Zr(e,t,n){let r=e[n],i=t[n];return n===`style`&&v(r)&&v(i)?!ye(r,i):r!==i}function Qr({vnode:e,parent:t,suspense:n},r){for(;t;){let n=t.subTree;if(n.suspense&&n.suspense.activeBranch===e&&(n.suspense.vnode.el=n.el=r,e=n),n===e)(e=t.vnode).el=r,t=t.parent;else break}n&&n.activeBranch===e&&(n.vnode.el=r)}var $r={},ei=()=>Object.create($r),ti=e=>Object.getPrototypeOf(e)===$r;function ni(e,t,n,r=!1){let i={},a=ei();e.propsDefaults=Object.create(null),ii(e,t,i,a);for(let t in e.propsOptions[0])t in i||(i[t]=void 0);n?e.props=r?i:Pt(i):e.type.props?e.props=i:e.props=a,e.attrs=a}function ri(e,t,n,r){let{props:i,attrs:a,vnode:{patchFlag:o}}=e,s=z(i),[c]=e.propsOptions,l=!1;if((r||o>0)&&!(o&16)){if(o&8){let n=e.vnode.dynamicProps;for(let r=0;r<n.length;r++){let o=n[r];if(Gr(e.emitsOptions,o))continue;let d=t[o];if(c)if(u(a,o))d!==a[o]&&(a[o]=d,l=!0);else{let t=T(o);i[t]=ai(c,s,t,d,e,!1)}else d!==a[o]&&(a[o]=d,l=!0)}}}else{ii(e,t,i,a)&&(l=!0);let r;for(let a in s)(!t||!u(t,a)&&((r=E(a))===a||!u(t,r)))&&(c?n&&(n[a]!==void 0||n[r]!==void 0)&&(i[a]=ai(c,s,a,void 0,e,!0)):delete i[a]);if(a!==s)for(let e in a)(!t||!u(t,e))&&(delete a[e],l=!0)}l&&P(e.attrs,`set`,``)}function ii(e,n,r,i){let[a,o]=e.propsOptions,s=!1,c;if(n)for(let t in n){if(ee(t))continue;let l=n[t],d;a&&u(a,d=T(t))?!o||!o.includes(d)?r[d]=l:(c||={})[d]=l:Gr(e.emitsOptions,t)||(!(t in i)||l!==i[t])&&(i[t]=l,s=!0)}if(o){let n=z(r),i=c||t;for(let t=0;t<o.length;t++){let s=o[t];r[s]=ai(a,n,s,i[s],e,!u(i,s))}}return s}function ai(e,t,n,r,i,a){let o=e[n];if(o!=null){let e=u(o,`default`);if(e&&r===void 0){let e=o.default;if(o.type!==Function&&!o.skipFactory&&h(e)){let{propsDefaults:a}=i;if(n in a)r=a[n];else{let o=oa(i);r=a[n]=e.call(null,t),o()}}else r=e;i.ce&&i.ce._setProp(n,r)}o[0]&&(a&&!e?r=!1:o[1]&&(r===``||r===E(n))&&(r=!0))}return r}var oi=new WeakMap;function si(e,r,i=!1){let a=i?oi:r.propsCache,o=a.get(e);if(o)return o;let c=e.props,l={},f=[],p=!1;if(!h(e)){let t=e=>{p=!0;let[t,n]=si(e,r,!0);s(l,t),n&&f.push(...n)};!i&&r.mixins.length&&r.mixins.forEach(t),e.extends&&t(e.extends),e.mixins&&e.mixins.forEach(t)}if(!c&&!p)return v(e)&&a.set(e,n),n;if(d(c))for(let e=0;e<c.length;e++){let n=T(c[e]);ci(n)&&(l[n]=t)}else if(c)for(let e in c){let t=T(e);if(ci(t)){let n=c[e],r=l[t]=d(n)||h(n)?{type:n}:s({},n),i=r.type,a=!1,o=!0;if(d(i))for(let e=0;e<i.length;++e){let t=i[e],n=h(t)&&t.name;if(n===`Boolean`){a=!0;break}else n===`String`&&(o=!1)}else a=h(i)&&i.name===`Boolean`;r[0]=a,r[1]=o,(a||u(r,`default`))&&f.push(t)}}let m=[l,f];return v(e)&&a.set(e,m),m}function ci(e){return e[0]!==`$`&&!ee(e)}var li=e=>e===`_`||e===`_ctx`||e===`$stable`,ui=e=>d(e)?e.map(Z):[Z(e)],di=(e,t,n)=>{if(t._n)return t;let r=Tn((...e)=>ui(t(...e)),n);return r._c=!1,r},fi=(e,t,n)=>{let r=e._ctx;for(let n in e){if(li(n))continue;let i=e[n];if(h(i))t[n]=di(n,i,r);else if(i!=null){let e=ui(i);t[n]=()=>e}}},pi=(e,t)=>{let n=ui(t);e.slots.default=()=>n},mi=(e,t,n)=>{for(let r in t)(n||!li(r))&&(e[r]=t[r])},hi=(e,t,n)=>{let r=e.slots=ei();if(e.vnode.shapeFlag&32){let e=t._;e?(mi(r,t,n),n&&O(r,`_`,e,!0)):fi(t,r)}else t&&pi(e,t)},gi=(e,n,r)=>{let{vnode:i,slots:a}=e,o=!0,s=t;if(i.shapeFlag&32){let e=n._;e?r&&e===1?o=!1:mi(a,n,r):(o=!n.$stable,fi(n,a)),s=n}else n&&(pi(e,n),s={default:1});if(o)for(let e in a)!li(e)&&s[e]==null&&delete a[e]},q=Oi;function _i(e){return vi(e)}function vi(e,i){let a=le();a.__VUE__=!0;let{insert:o,remove:s,patchProp:c,createElement:l,createText:u,createComment:d,setText:f,setElementText:p,parentNode:m,nextSibling:h,setScopeId:g=r,insertStaticContent:_}=e,v=(e,t,n,r=null,i=null,a=null,o=void 0,s=null,c=!!t.dynamicChildren)=>{if(e===t)return;e&&!Vi(e,t)&&(r=ye(e),k(e,i,a,!0),e=null),t.patchFlag===-2&&(c=!1,t.dynamicChildren=null);let{type:l,ref:u,shapeFlag:d}=t;switch(l){case ki:y(e,t,n,r);break;case Ai:b(e,t,n,r);break;case ji:e??x(t,n,r,o);break;case J:ae(e,t,n,r,i,a,o,s,c);break;default:d&1?w(e,t,n,r,i,a,o,s,c):d&6?D(e,t,n,r,i,a,o,s,c):(d&64||d&128)&&l.process(e,t,n,r,i,a,o,s,c,Se)}u!=null&&i?Kn(u,e&&e.ref,a,t||e,!t):u==null&&e&&e.ref!=null&&Kn(e.ref,null,a,e,!0)},y=(e,t,n,r)=>{if(e==null)o(t.el=u(t.children),n,r);else{let n=t.el=e.el;t.children!==e.children&&f(n,t.children)}},b=(e,t,n,r)=>{e==null?o(t.el=d(t.children||``),n,r):t.el=e.el},x=(e,t,n,r)=>{[e.el,e.anchor]=_(e.children,t,n,r,e.el,e.anchor)},S=({el:e,anchor:t},n,r)=>{let i;for(;e&&e!==t;)i=h(e),o(e,n,r),e=i;o(t,n,r)},C=({el:e,anchor:t})=>{let n;for(;e&&e!==t;)n=h(e),s(e),e=n;s(t)},w=(e,t,n,r,i,a,o,s,c)=>{if(t.type===`svg`?o=`svg`:t.type===`math`&&(o=`mathml`),e==null)te(t,n,r,i,a,o,s,c);else{let n=e.el&&e.el._isVueCE?e.el:null;try{n&&n._beginPatch(),re(e,t,i,a,o,s,c)}finally{n&&n._endPatch()}}},te=(e,t,n,r,i,a,s,u)=>{let d,f,{props:m,shapeFlag:h,transition:g,dirs:_}=e;if(d=e.el=l(e.type,a,m&&m.is,m),h&8?p(d,e.children):h&16&&T(e.children,d,null,r,i,yi(e,a),s,u),_&&Dn(e,null,r,`created`),ne(d,e,e.scopeId,s,r),m){for(let e in m)e!==`value`&&!ee(e)&&c(d,e,null,m[e],a,r);`value`in m&&c(d,`value`,null,m.value,a),(f=m.onVnodeBeforeMount)&&Q(f,r,e)}_&&Dn(e,null,r,`beforeMount`);let v=xi(i,g);v&&g.beforeEnter(d),o(d,t,n),((f=m&&m.onVnodeMounted)||v||_)&&q(()=>{try{f&&Q(f,r,e),v&&g.enter(d),_&&Dn(e,null,r,`mounted`)}finally{}},i)},ne=(e,t,n,r,i)=>{if(n&&g(e,n),r)for(let t=0;t<r.length;t++)g(e,r[t]);if(i){let n=i.subTree;if(t===n||Di(n.type)&&(n.ssContent===t||n.ssFallback===t)){let t=i.vnode;ne(e,t,t.scopeId,t.slotScopeIds,i.parent)}}},T=(e,t,n,r,i,a,o,s,c=0)=>{for(let l=c;l<e.length;l++){let c=e[l]=s?Zi(e[l]):Z(e[l]);v(null,c,t,n,r,i,a,o,s)}},re=(e,n,r,i,a,o,s)=>{let l=n.el=e.el,{patchFlag:u,dynamicChildren:d,dirs:f}=n;u|=e.patchFlag&16;let m=e.props||t,h=n.props||t,g;if(r&&bi(r,!1),(g=h.onVnodeBeforeUpdate)&&Q(g,r,n,e),f&&Dn(n,e,r,`beforeUpdate`),r&&bi(r,!0),d&&(!e.dynamicChildren||e.dynamicChildren.length!==d.length)&&(u=0,s=!1,d=null),(m.innerHTML&&h.innerHTML==null||m.textContent&&h.textContent==null)&&p(l,``),d?E(e.dynamicChildren,d,l,r,i,yi(n,a),o):s||de(e,n,l,null,r,i,yi(n,a),o,!1),u>0){if(u&16)ie(l,m,h,r,a);else if(u&2&&m.class!==h.class&&c(l,`class`,null,h.class,a),u&4&&c(l,`style`,m.style,h.style,a),u&8){let e=n.dynamicProps;for(let t=0;t<e.length;t++){let n=e[t],i=m[n],o=h[n];(o!==i||n===`value`)&&c(l,n,i,o,a,r)}}u&1&&e.children!==n.children&&p(l,n.children)}else!s&&d==null&&ie(l,m,h,r,a);((g=h.onVnodeUpdated)||f)&&q(()=>{g&&Q(g,r,n,e),f&&Dn(n,e,r,`updated`)},i)},E=(e,t,n,r,i,a,o)=>{for(let s=0;s<t.length;s++){let c=e[s],l=t[s],u=c.el&&(c.type===J||!Vi(c,l)||c.shapeFlag&198)?m(c.el):n;v(c,l,u,null,r,i,a,o,!0)}},ie=(e,n,r,i,a)=>{if(n!==r){if(n!==t)for(let t in n)!ee(t)&&!(t in r)&&c(e,t,n[t],null,a,i);for(let t in r){if(ee(t))continue;let o=r[t],s=n[t];o!==s&&t!==`value`&&c(e,t,s,o,a,i)}`value`in r&&c(e,`value`,n.value,r.value,a)}},ae=(e,t,n,r,i,a,s,c,l)=>{let d=t.el=e?e.el:u(``),f=t.anchor=e?e.anchor:u(``),{patchFlag:p,dynamicChildren:m,slotScopeIds:h}=t;h&&(c=c?c.concat(h):h),e==null?(o(d,n,r),o(f,n,r),T(t.children||[],n,f,i,a,s,c,l)):p>0&&p&64&&m&&e.dynamicChildren&&e.dynamicChildren.length===m.length?(E(e.dynamicChildren,m,n,i,a,s,c),(t.key!=null||i&&t===i.subTree)&&Si(e,t,!0)):de(e,t,n,f,i,a,s,c,l)},D=(e,t,n,r,i,a,o,s,c)=>{t.slotScopeIds=s,e==null?t.shapeFlag&512?i.ctx.activate(t,n,r,o,c):O(t,n,r,i,a,o,c):se(e,t,c)},O=(e,t,n,r,i,a,o)=>{let s=e.component=na(e,r,i);if(Yn(e)&&(s.ctx.renderer=Se),ua(s,!1,o),s.asyncDep){if(i&&i.registerDep(s,ce,o),!e.el){let r=s.subTree=X(Ai);b(null,r,t,n),e.placeholder=r.el}}else ce(s,e,t,n,i,a,o)},se=(e,t,n)=>{let r=t.component=e.component;if(Yr(e,t,n))if(r.asyncDep&&!r.asyncResolved){ue(r,t,n);return}else r.next=t,r.update();else t.el=e.el,r.vnode=t},ce=(e,t,n,r,i,a,o)=>{let s=()=>{if(e.isMounted){let{next:t,bu:n,u:r,parent:s,vnode:c}=e;{let n=wi(e);if(n){t&&(t.el=c.el,ue(e,t,o)),n.asyncDep.then(()=>{q(()=>{e.isUnmounted||l()},i)});return}}let u=t,d;bi(e,!1),t?(t.el=c.el,ue(e,t,o)):t=c,n&&oe(n),(d=t.props&&t.props.onVnodeBeforeUpdate)&&Q(d,s,t,c),bi(e,!0);let f=Kr(e),p=e.subTree;e.subTree=f,v(p,f,m(p.el),ye(p),e,i,a),t.el=f.el,u===null&&Qr(e,f.el),r&&q(r,i),(d=t.props&&t.props.onVnodeUpdated)&&q(()=>Q(d,s,t,c),i)}else{let o,{el:s,props:c}=t,{bm:l,m:u,parent:d,root:f,type:p}=e,m=Jn(t);if(bi(e,!1),l&&oe(l),!m&&(o=c&&c.onVnodeBeforeMount)&&Q(o,d,t),bi(e,!0),s&&we){let t=()=>{e.subTree=Kr(e),we(s,e.subTree,e,i,null)};m&&p.__asyncHydrate?p.__asyncHydrate(s,e,t):t()}else{f.ce&&f.ce._hasShadowRoot()&&f.ce._injectChildStyle(p,e.parent?e.parent.type:void 0);let o=e.subTree=Kr(e);v(null,o,n,r,e,i,a),t.el=o.el}if(u&&q(u,i),!m&&(o=c&&c.onVnodeMounted)){let e=t;q(()=>Q(o,d,e),i)}(t.shapeFlag&256||d&&Jn(d.vnode)&&d.vnode.shapeFlag&256)&&e.a&&q(e.a,i),e.isMounted=!0,t=n=r=null}};e.scope.on();let c=e.effect=new Ae(s);e.scope.off();let l=e.update=c.run.bind(c),u=e.job=c.runIfDirty.bind(c);u.i=e,u.id=e.uid,c.scheduler=()=>gn(u),bi(e,!0),l()},ue=(e,t,n)=>{t.component=e;let r=e.vnode.props;e.vnode=t,e.next=null,ri(e,t.props,r,n),gi(e,t.children,n),We(),yn(e),Ge()},de=(e,t,n,r,i,a,o,s,c=!1)=>{let l=e&&e.children,u=e?e.shapeFlag:0,d=t.children,{patchFlag:f,shapeFlag:m}=t;if(f>0){if(f&128){pe(l,d,n,r,i,a,o,s,c);return}else if(f&256){fe(l,d,n,r,i,a,o,s,c);return}}m&8?(u&16&&ve(l,i,a),d!==l&&p(n,d)):u&16?m&16?pe(l,d,n,r,i,a,o,s,c):ve(l,i,a,!0):(u&8&&p(n,``),m&16&&T(d,n,r,i,a,o,s,c))},fe=(e,t,r,i,a,o,s,c,l)=>{e||=n,t||=n;let u=e.length,d=t.length,f=Math.min(u,d),p;for(p=0;p<f;p++){let n=t[p]=l?Zi(t[p]):Z(t[p]);v(e[p],n,r,null,a,o,s,c,l)}u>d?ve(e,a,o,!0,!1,f):T(t,r,i,a,o,s,c,l,f)},pe=(e,t,r,i,a,o,s,c,l)=>{let u=0,d=t.length,f=e.length-1,p=d-1;for(;u<=f&&u<=p;){let n=e[u],i=t[u]=l?Zi(t[u]):Z(t[u]);if(Vi(n,i))v(n,i,r,null,a,o,s,c,l);else break;u++}for(;u<=f&&u<=p;){let n=e[f],i=t[p]=l?Zi(t[p]):Z(t[p]);if(Vi(n,i))v(n,i,r,null,a,o,s,c,l);else break;f--,p--}if(u>f){if(u<=p){let e=p+1,n=e<d?t[e].el:i;for(;u<=p;)v(null,t[u]=l?Zi(t[u]):Z(t[u]),r,n,a,o,s,c,l),u++}}else if(u>p)for(;u<=f;)k(e[u],a,o,!0),u++;else{let m=u,h=u,g=new Map;for(u=h;u<=p;u++){let e=t[u]=l?Zi(t[u]):Z(t[u]);e.key!=null&&g.set(e.key,u)}let _,y=0,b=p-h+1,x=!1,S=0,C=Array(b);for(u=0;u<b;u++)C[u]=0;for(u=m;u<=f;u++){let n=e[u];if(y>=b){k(n,a,o,!0);continue}let i;if(n.key!=null)i=g.get(n.key);else for(_=h;_<=p;_++)if(C[_-h]===0&&Vi(n,t[_])){i=_;break}i===void 0?k(n,a,o,!0):(C[i-h]=u+1,i>=S?S=i:x=!0,v(n,t[i],r,null,a,o,s,c,l),y++)}let w=x?Ci(C):n;for(_=w.length-1,u=b-1;u>=0;u--){let e=h+u,n=t[e],f=t[e+1],p=e+1<d?f.el||Ei(f):i;C[u]===0?v(null,n,r,p,a,o,s,c,l):x&&(_<0||u!==w[_]?me(n,r,p,2):_--)}}},me=(e,t,n,r,i=null)=>{let{el:a,type:c,transition:l,children:u,shapeFlag:d}=e;if(d&6){me(e.component.subTree,t,n,r);return}if(d&128){e.suspense.move(t,n,r);return}if(d&64){c.move(e,t,n,Se);return}if(c===J){o(a,t,n);for(let e=0;e<u.length;e++)me(u[e],t,n,r);o(e.anchor,t,n);return}if(c===ji){S(e,t,n);return}if(r!==2&&d&1&&l)if(r===0)l.persisted&&!a[zn]?o(a,t,n):(l.beforeEnter(a),o(a,t,n),q(()=>l.enter(a),i));else{let{leave:r,delayLeave:i,afterLeave:c}=l,u=()=>{e.ctx.isUnmounted?s(a):o(a,t,n)},d=()=>{let e=a._isLeaving||!!a[zn];a._isLeaving&&a[zn](!0),l.persisted&&!e?u():r(a,()=>{u(),c&&c()})};i?i(a,u,d):d()}else o(a,t,n)},k=(e,t,n,r=!1,i=!1)=>{let{type:a,props:o,ref:s,children:c,dynamicChildren:l,shapeFlag:u,patchFlag:d,dirs:f,cacheIndex:p,memo:m}=e;if(d===-2&&(i=!1),s!=null&&(We(),Kn(s,null,n,e,!0),Ge()),p!=null&&(t.renderCache[p]=void 0),u&256){t.ctx.deactivate(e);return}let h=u&1&&f,g=!Jn(e),_;if(g&&(_=o&&o.onVnodeBeforeUnmount)&&Q(_,t,e),u&6)_e(e.component,n,r);else{if(u&128){e.suspense.unmount(n,r);return}h&&Dn(e,null,t,`beforeUnmount`),u&64?e.type.remove(e,t,n,Se,r):l&&!l.hasOnce&&(a!==J||d>0&&d&64)?ve(l,t,n,!1,!0):(a===J&&d&384||!i&&u&16)&&ve(c,t,n),r&&he(e)}let v=m!=null&&p==null;(g&&(_=o&&o.onVnodeUnmounted)||h||v)&&q(()=>{_&&Q(_,t,e),h&&Dn(e,null,t,`unmounted`),v&&(e.el=null)},n)},he=e=>{let{type:t,el:n,anchor:r,transition:i}=e;if(t===J){ge(n,r);return}if(t===ji){C(e);return}let a=()=>{s(n),i&&!i.persisted&&i.afterLeave&&i.afterLeave()};if(e.shapeFlag&1&&i&&!i.persisted){let{leave:t,delayLeave:r}=i,o=()=>t(n,a);r?r(e.el,a,o):o()}else a()},ge=(e,t)=>{let n;for(;e!==t;)n=h(e),s(e),e=n;s(t)},_e=(e,t,n)=>{let{bum:r,scope:i,job:a,subTree:o,um:s,m:c,a:l}=e;Ti(c),Ti(l),r&&oe(r),i.stop(),a&&(a.flags|=8,k(o,e,t,n)),s&&q(s,t),q(()=>{e.isUnmounted=!0},t)},ve=(e,t,n,r=!1,i=!1,a=0)=>{for(let o=a;o<e.length;o++)k(e[o],t,n,r,i)},ye=e=>{if(e.shapeFlag&6)return ye(e.component.subTree);if(e.shapeFlag&128)return e.suspense.next();let t=h(e.anchor||e.el),n=t&&t[Ln];return n?h(n):t},be=!1,xe=(e,t,n)=>{let r;e==null?t._vnode&&(k(t._vnode,null,null,!0),r=t._vnode.component):v(t._vnode||null,e,t,null,null,null,n),t._vnode=e,be||=(be=!0,yn(r),bn(),!1)},Se={p:v,um:k,m:me,r:he,mt:O,mc:T,pc:de,pbc:E,n:ye,o:e},Ce,we;return i&&([Ce,we]=i(Se)),{render:xe,hydrate:Ce,createApp:zr(xe,Ce)}}function yi({type:e,props:t},n){return n===`svg`&&e===`foreignObject`||n===`mathml`&&e===`annotation-xml`&&t&&t.encoding&&t.encoding.includes(`html`)?void 0:n}function bi({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function xi(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Si(e,t,n=!1){let r=e.children,i=t.children;if(d(r)&&d(i))for(let e=0;e<r.length;e++){let t=r[e],a=i[e];a.shapeFlag&1&&!a.dynamicChildren&&((a.patchFlag<=0||a.patchFlag===32)&&(a=i[e]=Zi(i[e]),a.el=t.el),!n&&a.patchFlag!==-2&&Si(t,a)),a.type===ki&&(a.patchFlag===-1&&(a=i[e]=Zi(a)),a.el=t.el),a.type===Ai&&!a.el&&(a.el=t.el)}}function Ci(e){let t=e.slice(),n=[0],r,i,a,o,s,c=e.length;for(r=0;r<c;r++){let c=e[r];if(c!==0){if(i=n[n.length-1],e[i]<c){t[r]=i,n.push(r);continue}for(a=0,o=n.length-1;a<o;)s=a+o>>1,e[n[s]]<c?a=s+1:o=s;c<e[n[a]]&&(a>0&&(t[r]=n[a-1]),n[a]=r)}}for(a=n.length,o=n[a-1];a-->0;)n[a]=o,o=t[o];return n}function wi(e){let t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:wi(t)}function Ti(e){if(e)for(let t=0;t<e.length;t++)e[t].flags|=8}function Ei(e){if(e.placeholder)return e.placeholder;let t=e.component;return t?Ei(t.subTree):null}var Di=e=>e.__isSuspense;function Oi(e,t){t&&t.pendingBranch?d(e)?t.effects.push(...e):t.effects.push(e):vn(e)}var J=Symbol.for(`v-fgt`),ki=Symbol.for(`v-txt`),Ai=Symbol.for(`v-cmt`),ji=Symbol.for(`v-stc`),Mi=[],Y=null;function Ni(e=!1){Mi.push(Y=e?null:[])}function Pi(){Mi.pop(),Y=Mi[Mi.length-1]||null}var Fi=1;function Ii(e,t=!1){Fi+=e,e<0&&Y&&t&&(Y.hasOnce=!0)}function Li(e){return e.dynamicChildren=Fi>0?Y||n:null,Pi(),Fi>0&&Y&&Y.push(e),e}function Ri(e,t,n,r,i,a){return Li(Wi(e,t,n,r,i,a,!0))}function zi(e,t,n,r,i){return Li(X(e,t,n,r,i,!0))}function Bi(e){return e?e.__v_isVNode===!0:!1}function Vi(e,t){return e.type===t.type&&e.key===t.key}var Hi=({key:e})=>e??null,Ui=({ref:e,ref_key:t,ref_for:n})=>(typeof e==`number`&&(e=``+e),e==null?null:g(e)||V(e)||h(e)?{i:G,r:e,k:t,f:!!n}:e);function Wi(e,t=null,n=null,r=0,i=null,a=e===J?0:1,o=!1,s=!1){let c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Hi(t),ref:t&&Ui(t),scopeId:Cn,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:a,patchFlag:r,dynamicProps:i,dynamicChildren:null,appContext:null,ctx:G};return s?(Qi(c,n),a&128&&e.normalize(c)):n&&(c.shapeFlag|=g(n)?8:16),Fi>0&&!o&&Y&&(c.patchFlag>0||a&6)&&c.patchFlag!==32&&Y.push(c),c}var X=Gi;function Gi(e,t=null,n=null,r=0,i=null,a=!1){if((!e||e===pr)&&(e=Ai),Bi(e)){let r=qi(e,t,!0);return n&&Qi(r,n),Fi>0&&!a&&Y&&(r.shapeFlag&6?Y[Y.indexOf(e)]=r:Y.push(r)),r.patchFlag=-2,r}if(ba(e)&&(e=e.__vccOpts),t){t=Ki(t);let{class:e,style:n}=t;e&&!g(e)&&(t.class=k(e)),v(n)&&(Rt(n)&&!d(n)&&(n=s({},n)),t.style=ue(n))}let o=g(e)?1:Di(e)?128:Rn(e)?64:v(e)?4:h(e)?2:0;return Wi(e,t,n,r,i,o,a,!0)}function Ki(e){return e?Rt(e)||ti(e)?s({},e):e:null}function qi(e,t,n=!1,r=!1){let{props:i,ref:a,patchFlag:o,children:s,transition:c}=e,l=t?$i(i||{},t):i,u={__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&Hi(l),ref:t&&t.ref?n&&a?d(a)?a.concat(Ui(t)):[a,Ui(t)]:Ui(t):a,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:s,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==J?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&qi(e.ssContent),ssFallback:e.ssFallback&&qi(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&r&&Bn(u,c.clone(u)),u}function Ji(e=` `,t=0){return X(ki,null,e,t)}function Yi(e,t){let n=X(ji,null,e);return n.staticCount=t,n}function Xi(e=``,t=!1){return t?(Ni(),zi(Ai,null,e)):X(Ai,null,e)}function Z(e){return e==null||typeof e==`boolean`?X(Ai):d(e)?X(J,null,e.slice()):Bi(e)?Zi(e):X(ki,null,String(e))}function Zi(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:qi(e)}function Qi(e,t){let n=0,{shapeFlag:r}=e;if(t==null)t=null;else if(d(t))n=16;else if(typeof t==`object`)if(r&65){let n=t.default;n&&(n._c&&(n._d=!1),Qi(e,n()),n._c&&(n._d=!0));return}else{n=32;let r=t._;!r&&!ti(t)?t._ctx=G:r===3&&G&&(G.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else if(h(t)){if(r&65){Qi(e,{default:t});return}t={default:t,_ctx:G},n=32}else t=String(t),r&64?(n=16,t=[Ji(t)]):n=8;e.children=t,e.shapeFlag|=n}function $i(...e){let t={};for(let n=0;n<e.length;n++){let r=e[n];for(let e in r)if(e===`class`)t.class!==r.class&&(t.class=k([t.class,r.class]));else if(e===`style`)t.style=ue([t.style,r.style]);else if(a(e)){let n=t[e],i=r[e];i&&n!==i&&!(d(n)&&n.includes(i))?t[e]=n?[].concat(n,i):i:i==null&&n==null&&!o(e)&&(t[e]=i)}else e!==``&&(t[e]=r[e])}return t}function Q(e,t,n,r=null){H(e,t,7,[n,r])}var ea=Lr(),ta=0;function na(e,n,r){let i=e.type,a=(n?n.appContext:e.appContext)||ea,o={uid:ta++,vnode:e,type:i,parent:n,appContext:a,root:null,next:null,subTree:null,effect:null,update:null,job:null,scope:new Te(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:n?n.provides:Object.create(a.provides),ids:n?n.ids:[``,0,0],accessCache:null,renderCache:[],components:null,directives:null,propsOptions:si(i,a),emitsOptions:Wr(i,a),emit:null,emitted:null,propsDefaults:t,inheritAttrs:i.inheritAttrs,ctx:t,data:t,props:t,attrs:t,slots:t,refs:t,setupState:t,setupContext:null,suspense:r,suspenseId:r?r.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return o.ctx={_:o},o.root=n?n.root:o,o.emit=Hr.bind(null,o),e.ce&&e.ce(o),o}var $=null,ra=()=>$||G,ia,aa;{let e=le(),t=(t,n)=>{let r;return(r=e[t])||(r=e[t]=[]),r.push(n),e=>{r.length>1?r.forEach(t=>t(e)):r[0](e)}};ia=t(`__VUE_INSTANCE_SETTERS__`,e=>$=e),aa=t(`__VUE_SSR_SETTERS__`,e=>la=e)}var oa=e=>{let t=$;return ia(e),e.scope.on(),()=>{e.scope.off(),ia(t)}},sa=()=>{$&&$.scope.off(),ia(null)};function ca(e){return e.vnode.shapeFlag&4}var la=!1;function ua(e,t=!1,n=!1){t&&aa(t);let{props:r,children:i}=e.vnode,a=ca(e);ni(e,r,a,t),hi(e,i,n||t);let o=a?da(e,t):void 0;return t&&aa(!1),o}function da(e,t){let n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,xr);let{setup:r}=n;if(r){We();let n=e.setupContext=r.length>1?_a(e):null,i=oa(e),a=on(r,e,0,[e.props,n]),o=y(a);if(Ge(),i(),(o||e.sp)&&!Jn(e)&&Un(e),o){if(a.then(sa,sa),t)return a.then(n=>{fa(e,n,t)}).catch(t=>{sn(t,e,0)});e.asyncDep=a}else fa(e,a,t)}else ha(e,t)}function fa(e,t,n){h(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:v(t)&&(e.setupState=qt(t)),ha(e,n)}var pa,ma;function ha(e,t,n){let i=e.type;if(!e.render){if(!t&&pa&&!i.render){let t=i.template||Or(e).template;if(t){let{isCustomElement:n,compilerOptions:r}=e.appContext.config,{delimiters:a,compilerOptions:o}=i;i.render=pa(t,s(s({isCustomElement:n,delimiters:a},r),o))}}e.render=i.render||r,ma&&ma(e)}{let t=oa(e);We();try{wr(e)}finally{Ge(),t()}}}var ga={get(e,t){return N(e,`get`,``),e[t]}};function _a(e){return{attrs:new Proxy(e.attrs,ga),slots:e.slots,emit:e.emit,expose:t=>{e.exposed=t||{}}}}function va(e){return e.exposed?e.exposeProxy||=new Proxy(qt(zt(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in yr)return yr[n](e)},has(e,t){return t in e||t in yr}}):e.proxy}function ya(e,t=!0){return h(e)?e.displayName||e.name:e.name||t&&e.__name}function ba(e){return h(e)&&`__vccOpts`in e}var xa=(e,t)=>Qt(e,t,la);function Sa(e,t,n){try{Ii(-1);let r=arguments.length;return r===2?v(t)&&!d(t)?Bi(t)?X(e,null,[t]):X(e,t):X(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&Bi(n)&&(n=[n]),X(e,t,n))}finally{Ii(1)}}var Ca=`3.5.40`,wa=typeof window<`u`,Ta,Ea=e=>Ta=e,Da=Symbol();function Oa(e){return e&&typeof e==`object`&&Object.prototype.toString.call(e)===`[object Object]`&&typeof e.toJSON!=`function`}var ka=typeof window==`object`&&window.window===window?window:typeof self==`object`&&self.self===self?self:typeof global==`object`&&global.global===global?global:typeof globalThis==`object`?globalThis:{HTMLElement:null};function Aa(e,{autoBom:t=!1}={}){return t&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob([``,e],{type:e.type}):e}function ja(e,t,n){let r=new XMLHttpRequest;r.open(`GET`,e),r.responseType=`blob`,r.onload=function(){Ia(r.response,t,n)},r.onerror=function(){console.error(`could not download file`)},r.send()}function Ma(e){let t=new XMLHttpRequest;t.open(`HEAD`,e,!1);try{t.send()}catch{}return t.status>=200&&t.status<=299}function Na(e){try{e.dispatchEvent(new MouseEvent(`click`))}catch{let t=new MouseEvent(`click`,{bubbles:!0,cancelable:!0,view:window,detail:0,screenX:80,screenY:20,clientX:80,clientY:20,ctrlKey:!1,altKey:!1,shiftKey:!1,metaKey:!1,button:0,relatedTarget:null});e.dispatchEvent(t)}}var Pa=typeof navigator==`object`?navigator:{userAgent:``},Fa=/Macintosh/.test(Pa.userAgent)&&/AppleWebKit/.test(Pa.userAgent)&&!/Safari/.test(Pa.userAgent),Ia=wa?typeof HTMLAnchorElement<`u`&&`download`in HTMLAnchorElement.prototype&&!Fa?La:`msSaveOrOpenBlob`in Pa?Ra:za:()=>{};function La(e,t=`download`,n){let r=document.createElement(`a`);r.download=t,r.rel=`noopener`,typeof e==`string`?(r.href=e,r.origin===location.origin?Na(r):Ma(r.href)?ja(e,t,n):(r.target=`_blank`,Na(r))):(r.href=URL.createObjectURL(e),setTimeout(function(){URL.revokeObjectURL(r.href)},4e4),setTimeout(function(){Na(r)},0))}function Ra(e,t=`download`,n){if(typeof e==`string`)if(Ma(e))ja(e,t,n);else{let t=document.createElement(`a`);t.href=e,t.target=`_blank`,setTimeout(function(){Na(t)})}else navigator.msSaveOrOpenBlob(Aa(e,n),t)}function za(e,t,n,r){if(r||=open(``,`_blank`),r&&(r.document.title=r.document.body.innerText=`downloading...`),typeof e==`string`)return ja(e,t,n);let i=e.type===`application/octet-stream`,a=/constructor/i.test(String(ka.HTMLElement))||`safari`in ka,o=/CriOS\/[\d]+/.test(navigator.userAgent);if((o||i&&a||Fa)&&typeof FileReader<`u`){let t=new FileReader;t.onloadend=function(){let e=t.result;if(typeof e!=`string`)throw r=null,Error(`Wrong reader.result type`);e=o?e:e.replace(/^data:[^;]*;/,`data:attachment/file;`),r?r.location.href=e:location.assign(e),r=null},t.readAsDataURL(e)}else{let t=URL.createObjectURL(e);r?r.location.assign(t):location.href=t,r=null,setTimeout(function(){URL.revokeObjectURL(t)},4e4)}}var{assign:Ba}=Object;function Va(){let e=Ee(!0),t=e.run(()=>Vt({})),n=[],r=[],i=zt({install(e){Ea(i),i._a=e,e.provide(Da,i),e.config.globalProperties.$pinia=i,r.forEach(e=>n.push(e)),r=[]},use(e){return this._a?n.push(e):r.push(e),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return i}var Ha=()=>{};function Ua(e,t,n,r=Ha){e.add(t);let i=()=>{e.delete(t)&&r()};return!n&&De()&&Oe(i),i}function Wa(e,...t){e.forEach(e=>{e(...t)})}var Ga=e=>e(),Ka=Symbol(),qa=Symbol();function Ja(e,t){e instanceof Map&&t instanceof Map?t.forEach((t,n)=>e.set(n,t)):e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(let n in t){if(!Object.hasOwn(t,n))continue;let r=t[n],i=e[n];Oa(i)&&Oa(r)&&Object.hasOwn(e,n)&&!V(r)&&!L(r)?e[n]=Ja(i,r):e[n]=r}return e}var Ya=Symbol();function Xa(e){return!e||typeof e!=`object`||!Object.hasOwn(e,Ya)}var{assign:Za}=Object;function Qa(e){return!!(V(e)&&e.effect)}function $a(e,t,n,r){let{state:i,actions:a,getters:o}=t,s=n.state.value[e],c;function l(){return s||(n.state.value[e]=i?i():{}),Za(Jt(n.state.value[e]),a,Object.keys(o||{}).reduce((t,r)=>(t[r]=zt(xa(()=>{Ea(n);let t=n._s.get(e);return o[r].call(t,t)})),t),{}))}return c=eo(e,l,t,n,r,!0),c}function eo(e,t,n={},r,i,a){let o,s=Za({actions:{}},n),c={deep:!0},l,u,d=new Set,f=new Set,p=r.state.value[e];!a&&!p&&(r.state.value[e]={});let m;function h(t){let n;l=u=!1,typeof t==`function`?(t(r.state.value[e]),n={type:`patch function`,storeId:e,events:void 0}):(Ja(r.state.value[e],t),n={type:`patch object`,payload:t,storeId:e,events:void 0});let i=m=Symbol();mn().then(()=>{m===i&&(l=!0)}),u=!0,Wa(d,n,r.state.value[e])}let g=a?function(){let{state:e}=n,t=e?e():{};this.$patch(e=>{Za(e,t)})}:Ha;function _(){o.stop(),d.clear(),f.clear(),r._s.delete(e)}let v=(t,n=``)=>{if(Ka in t)return t[qa]=n,t;let i=function(){Ea(r);let n=Array.from(arguments),a=new Set,o=new Set;function s(e){a.add(e)}function c(e){o.add(e)}Wa(f,{args:n,name:i[qa],store:y,after:s,onError:c});let l;try{l=t.apply(this&&this.$id===e?this:y,n)}catch(e){throw Wa(o,e),e}return l instanceof Promise?l.then(e=>(Wa(a,e),e)).catch(e=>(Wa(o,e),Promise.reject(e))):(Wa(a,l),l)};return i[Ka]=!0,i[qa]=n,i},y=Nt({_p:r,$id:e,$onAction:Ua.bind(null,f),$patch:h,$reset:g,$subscribe(t,n={}){if(d.has(t))return Ha;let i=Ua(d,t,n.detached,()=>a()),a=o.run(()=>Nn(()=>r.state.value[e],r=>{(n.flush===`sync`?u:l)&&t({storeId:e,type:`direct`,events:void 0},r)},Za({},c,n)));return i},$dispose:_});r._s.set(e,y);let b=(r._a&&r._a.runWithContext||Ga)(()=>r._e.run(()=>(o=Ee()).run(()=>t({action:v}))));for(let t in b){let n=b[t];V(n)&&!Qa(n)||L(n)?a||(p&&Xa(n)&&(V(n)?n.value=p[t]:Ja(n,p[t])),r.state.value[e][t]=n):typeof n==`function`&&(b[t]=v(n,t),s.actions[t]=n)}return Za(y,b),Za(z(y),b),Object.defineProperty(y,"$state",{get:()=>r.state.value[e],set:e=>{h(t=>{Za(t,e)})}}),r._p.forEach(e=>{let t=o.run(()=>e({store:y,app:r._a,pinia:r,options:s}));Za(y,t)}),p&&a&&n.hydrate&&n.hydrate(y.$state,p),l=!0,u=!0,y}function to(e,t,n){let r,i=typeof t==`function`;r=i?n:t;function a(n,a){let o=An();return n||=o?kn(Da,null):null,n&&Ea(n),n=Ta,n._s.has(e)||(i?eo(e,t,r,n):$a(e,r,n)),n._s.get(e)}return a.$id=e,a}var no=class extends Error{status;constructor(e,t){super(e),this.name=`ApiError`,this.status=t}};async function ro(e,t){let n=await fetch(e,t);if(!n.ok)throw new no((await n.text()).trim()||`请求失败 (${n.status})`,n.status);return n.json()}function io(e,t){return ro(e,t)}function ao(e,t){return ro(e,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(t)})}function oo(e,t){return ro(e,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify(t)})}function so(e,t){return ro(e,{method:`PATCH`,headers:{"content-type":`application/json`},body:JSON.stringify(t)})}function co(e){return ro(e,{method:`DELETE`})}var lo=to(`console`,()=>{let e=Ht(null),t=Vt(`idle`),n=Vt(null),r=xa(()=>{let t=e.value;return t?t.personalSpaces.find(({id:e})=>e===t.activePersonalSpaceId)??t.personalSpaces[0]??null:null}),i=xa(()=>e.value?.mode===`connected`?`ready`:e.value?.mode===`degraded`?`error`:`disconnected`);async function a(){t.value=`loading`;try{e.value=await io(`/api/state`),t.value=`ready`}catch(e){t.value=`error`,u(e)}}async function o(t){try{let n=await so(`/api/capture-policy`,{enabled:t});e.value&&={...e.value,capturePolicy:n},l(t?`自动沉淀已开启;Agent 会继续把新的稳定会话知识写入本机。`:`自动沉淀已关闭;已有知识仍可读取,但不会写入新的会话内容。`)}catch(e){u(e)}}async function s(t){try{let n=await so(`/api/agent-access-policy`,{enabled:t});e.value&&={...e.value,agentAccessPolicy:n},l(t?`Agent 使用已开启;已连接的 Agent 可以调用 FULI。`:`Agent 使用已关闭;管理界面仍可使用,但所有 Agent 调用都会被拦截。`)}catch(e){u(e)}}function c(t){return e.value?.capabilities?.[t]===!0}function l(e){n.value={message:e,tone:`success`}}function u(e){n.value={message:e instanceof Error?e.message:`操作失败`,tone:`error`}}function d(){n.value=null}return{state:e,runtimeStatus:t,feedback:n,activePersonalSpace:r,publicRuntimeStatus:i,refresh:a,updateCapturePolicy:o,updateAgentAccessPolicy:s,hasCapability:c,notify:l,reportError:u,clearFeedback:d}});export{be as $,Nn as A,s as B,or as C,_r as D,On as E,Pt as F,h as G,_e as H,Ht as I,p as J,o as K,Gt as L,En as M,Nt as N,mr as O,Vt as P,ye as Q,T as R,mn as S,Ni as T,oe as U,E as V,d as W,g as X,ge as Y,_ as Z,Ji as _,ao as a,Sa as b,J as c,Wi as d,se as et,zi as f,Yi as g,_i as h,so as i,Tn as j,Hn as k,H as l,Ri as m,co as n,Se as nt,oo as o,Xi as p,a as q,io as r,Va as s,lo as t,k as tt,xa as u,X as v,rr as w,kn as x,Vn as y,ie as z};
@@ -1 +0,0 @@
1
- import{A as e,C as t,D as n,M as r,P as i,S as a,T as o,c as s,d as c,k as ee,m as l,nt as u,p as d,tt as f,u as p,w as m,y as h}from"./console-tbvTUi6p.js";import{a as g,o as _}from"./runtime-dom.esm-bundler-DttsK21F.js";var v=[`data-select-id`],y=[`value`,`name`,`required`,`disabled`],b=[`value`,`disabled`],te=[`aria-expanded`,`aria-controls`,`aria-label`,`disabled`],ne={class:`searchable-select-current`},x={class:`searchable-select-current-label`},S={key:0,class:`searchable-select-current-meta`},C=[`hidden`],w={key:0,class:`searchable-select-search`},T=[`placeholder`,`aria-label`],E=[`id`],D=[`aria-selected`,`disabled`,`onClick`],O={class:`searchable-select-option-copy`},k={key:0},A={key:1,class:`searchable-select-empty`},j=h({__name:`SearchableSelect`,props:{modelValue:{},options:{},label:{},controlId:{default:void 0},placeholder:{default:`请选择`},searchPlaceholder:{default:`搜索名称或 ID`},searchable:{type:Boolean,default:void 0},disabled:{type:Boolean,default:!1},required:{type:Boolean,default:!1},name:{default:void 0}},emits:[`update:modelValue`,`change`],setup(h,{emit:j}){let M=h,N=j,P=i(null),F=i(null),I=i(null),L=i(null),R=i(!1),z=i(!1),B=i(``),V=ee().replace(/[^A-Za-z0-9_-]/g,``),H=p(()=>M.label),U=p(()=>`${M.controlId||`searchable-select-${V}`}-options`),W=p(()=>M.options.find(({value:e})=>e===M.modelValue)??null),G=p(()=>M.searchable??M.options.length>5),K=p(()=>{let e=B.value.trim().toLocaleLowerCase(`zh-CN`);return e?M.options.filter(t=>[t.label,t.value,t.meta,t.search].filter(Boolean).join(` `).toLocaleLowerCase(`zh-CN`).includes(e)):M.options});e(()=>M.disabled,e=>{e&&Y()}),m(()=>{document.addEventListener(`pointerdown`,Z)}),t(()=>{document.removeEventListener(`pointerdown`,Z)});async function q(){R.value?Y():await J()}async function J(){M.disabled||(B.value=``,ce(),R.value=!0,await a(),G.value?I.value?.focus():se()?.focus())}function Y({restoreFocus:e=!1}={}){R.value=!1,z.value=!1,B.value=``,e&&a(()=>F.value?.focus())}function X(e){M.disabled||e.disabled||(N(`update:modelValue`,e.value),N(`change`,e.value),Y({restoreFocus:!0}))}function re(e){[`ArrowDown`,`Enter`,` `].includes(e.key)&&(e.preventDefault(),J())}function ie(e){if(e.key===`Escape`){e.preventDefault(),Y({restoreFocus:!0});return}if(e.key===`ArrowDown`){e.preventDefault(),$()?.focus();return}e.key===`Enter`&&(e.preventDefault(),$()?.click())}function ae(e){if(e.key===`Escape`){e.preventDefault(),Y({restoreFocus:!0});return}if(![`ArrowDown`,`ArrowUp`,`Home`,`End`].includes(e.key))return;e.preventDefault();let t=Q(),n=t.indexOf(e.currentTarget);t[e.key===`Home`?0:e.key===`End`?t.length-1:e.key===`ArrowDown`?Math.min(t.length-1,n+1):Math.max(0,n-1)]?.focus()}function Z(e){R.value&&!P.value?.contains(e.target)&&Y()}function oe(){queueMicrotask(()=>{R.value&&!P.value?.contains(document.activeElement)&&Y()})}function Q(){return[...L.value?.querySelectorAll(`.searchable-select-option:not(:disabled)`)??[]]}function $(){return Q()[0]??null}function se(){return Q().find(e=>e.getAttribute(`aria-selected`)===`true`)??$()}function ce(){let e=F.value?.getBoundingClientRect();z.value=!!(e&&window.innerHeight-e.bottom<270&&e.top>270)}return(e,t)=>(o(),l(`div`,{ref_key:`root`,ref:P,class:f([`searchable-select`,{open:R.value,"open-up":z.value,disabled:h.disabled}]),"data-select-id":h.controlId,onFocusout:oe},[c(`select`,{class:`searchable-select-native`,value:h.modelValue,name:h.name,required:h.required,disabled:h.disabled,tabindex:`-1`,"aria-hidden":`true`},[(o(!0),l(s,null,n(h.options,e=>(o(),l(`option`,{key:e.value,value:e.value,disabled:e.disabled},u(e.label),9,b))),128))],8,y),c(`button`,{ref_key:`trigger`,ref:F,type:`button`,class:`searchable-select-trigger`,role:`combobox`,"aria-haspopup":`listbox`,"aria-expanded":R.value,"aria-controls":U.value,"aria-label":H.value,disabled:h.disabled,onClick:q,onKeydown:re},[c(`span`,ne,[c(`span`,x,u(W.value?.label||h.placeholder),1),W.value?.meta?(o(),l(`small`,S,u(W.value.meta),1)):d(``,!0)]),t[2]||=c(`i`,{class:`searchable-select-arrow`,"aria-hidden":`true`},null,-1)],40,te),c(`div`,{class:`searchable-select-panel`,hidden:!R.value},[G.value?(o(),l(`div`,w,[r(c(`input`,{ref_key:`searchInput`,ref:I,"onUpdate:modelValue":t[0]||=e=>B.value=e,type:`search`,autocomplete:`off`,placeholder:h.searchPlaceholder,"aria-label":`搜索${H.value}`,onKeydown:ie},null,40,T),[[g,B.value]])])):d(``,!0),c(`div`,{id:U.value,ref_key:`optionsList`,ref:L,class:`searchable-select-options`,role:`listbox`},[(o(!0),l(s,null,n(K.value,e=>(o(),l(`button`,{key:e.value,type:`button`,class:`searchable-select-option`,role:`option`,"aria-selected":e.value===h.modelValue,disabled:e.disabled,onMousedown:t[1]||=_(()=>{},[`prevent`]),onClick:t=>X(e),onKeydown:ae},[c(`span`,O,[c(`strong`,null,u(e.label),1),e.meta?(o(),l(`small`,k,u(e.meta),1)):d(``,!0)]),t[3]||=c(`i`,{class:`searchable-select-check`,"aria-hidden":`true`},null,-1)],40,D))),128))],8,E),K.value.length===0?(o(),l(`p`,A,` 没有匹配项 `)):d(``,!0)],8,C)],42,v))}}),M=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function N(e,t=18){let n=String(e??``).trim();if(!n)return`未记录`;if(n.length<=t)return n;if(M.test(n))return n.slice(0,8);let r=Math.max(7,Math.ceil((t-1)*.58)),i=Math.max(4,t-r-1);return`${n.slice(0,r)}…${n.slice(-i)}`}function P(e){let t=String(e??``).trim();return`${t} ${N(t)}`}export{P as n,j as r,N as t};