fuli-context 0.7.10-beta.7 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. package/README.md +4 -0
  2. package/README.zh-CN.md +4 -1
  3. package/dist/web/assets/{AboutPage-EtWPOSpz.js → AboutPage-fBq5VFoQ.js} +1 -1
  4. package/dist/web/assets/AgentHand-CMZk5GjY.js +1 -0
  5. package/dist/web/assets/AgentHand-D9sQu2vc.css +1 -0
  6. package/dist/web/assets/AgentName-Cydd0UI4.css +1 -0
  7. package/dist/web/assets/AgentName-DRZHAIB2.js +1 -0
  8. package/dist/web/assets/AgentProfilePage-BPQEfMhB.js +1 -0
  9. package/dist/web/assets/AgentsDirectoryPage-CKZfrcuD.js +1 -0
  10. package/dist/web/assets/{ConnectionsPage-DXkvMuyK.js → ConnectionsPage-COb56qnk.js} +1 -1
  11. package/dist/web/assets/EmployeeRecruitDialog-BLTpjCcK.js +1 -0
  12. package/dist/web/assets/EmployeeWorkbenchPage-CQwZnTA0.css +1 -0
  13. package/dist/web/assets/EmployeeWorkbenchPage-HUd-gne2.js +3 -0
  14. package/dist/web/assets/{GrowthLoading-CCYPgE2f.js → GrowthLoading-Bu_kH-I8.js} +1 -1
  15. package/dist/web/assets/{KnowledgeEditDialog-BUqMfa0a.js → KnowledgeEditDialog-BTwXXRCD.js} +1 -1
  16. package/dist/web/assets/{KnowledgeInspector-DlVPDGP3.js → KnowledgeInspector-Ct5hl2--.js} +1 -1
  17. package/dist/web/assets/{KnowledgeOrganizerPage-DhthZGKZ.js → KnowledgeOrganizerPage-DMC8Hh43.js} +1 -1
  18. package/dist/web/assets/KnowledgePage-uXW1Eovz.js +1 -0
  19. package/dist/web/assets/{KnowledgeWorkspace-mVFHQcxr.js → KnowledgeWorkspace-DmHIc0jb.js} +1 -1
  20. package/dist/web/assets/{NotFoundPage-CCeEdBy9.js → NotFoundPage-C0yOR9T9.js} +1 -1
  21. package/dist/web/assets/{OverviewPage-CnYWoZ3r.js → OverviewPage-BreX_kb4.js} +1 -1
  22. package/dist/web/assets/PersonalProfilePage-CX1a6_E3.js +1 -0
  23. package/dist/web/assets/{PersonalProfilePage-yQRCBude.css → PersonalProfilePage-L8T5xMEC.css} +1 -1
  24. package/dist/web/assets/PersonalProjectsPage-Br1S8ETM.js +1 -0
  25. package/dist/web/assets/ProjectAgentsPage-CA04h1Uf.js +13 -0
  26. package/dist/web/assets/ProjectAgentsPage-CZWWV4Kw.css +1 -0
  27. package/dist/web/assets/{ProjectScopePicker-BcPtIcv8.js → ProjectScopePicker-DVHfXX1f.js} +1 -1
  28. package/dist/web/assets/{PublicProjectsPage-BmBHfnud.js → PublicProjectsPage-CtctKml1.js} +1 -1
  29. package/dist/web/assets/{ReviewPage-tvt2eqhw.js → ReviewPage-DUqaK-do.js} +1 -1
  30. package/dist/web/assets/{SearchableSelect-BjBDBVuZ.js → SearchableSelect-BZtyYmZN.js} +1 -1
  31. package/dist/web/assets/{SettingsPage-D9mNzBg-.js → SettingsPage-CB4ymLr8.js} +1 -1
  32. package/dist/web/assets/{SharedJefaReportPage-Dn_HBgaa.js → SharedJefaReportPage-CbFtrDCY.js} +1 -1
  33. package/dist/web/assets/WritingTastePage-B7lSzs2z.js +1 -0
  34. package/dist/web/assets/WritingTastePage-Bzg6AvnB.css +1 -0
  35. package/dist/web/assets/agent-profile-CdKOh5xw.css +1 -0
  36. package/dist/web/assets/agent-profile.css_vue_type_style_index_0_src_true_lang-C22UdfU0.js +1 -0
  37. package/dist/web/assets/catalog-DU4Kfd-N.js +1 -0
  38. package/dist/web/assets/{client-v8XKgQji.js → client-CEHkJJ-5.js} +1 -1
  39. package/dist/web/assets/{console-C9HS-zbd.js → console--CZxc3PW.js} +1 -1
  40. package/dist/web/assets/{conversation-launcher-settings-DMDCpf_N.js → conversation-launcher-settings-Co1RlTFH.js} +1 -1
  41. package/dist/web/assets/{i18n-BkJjUsz_.js → i18n-BtOOoyJd.js} +3 -3
  42. package/dist/web/assets/{identity-74yGiMzO.js → identity-CsowvtIm.js} +1 -1
  43. package/dist/web/assets/index-CWMqDq8g.css +1 -0
  44. package/dist/web/assets/index-MKmHNBtc.js +2 -0
  45. package/dist/web/assets/{model-86tZgY0r.js → model-CGpllrds.js} +1 -1
  46. package/dist/web/assets/personal-profile-graph-BNTG4PSY.js +1 -0
  47. package/dist/web/assets/profile-model-BQO4zNs9.js +1 -0
  48. package/dist/web/assets/{shared-report-CLg82y4D.js → shared-report-BFUJqqQe.js} +1 -1
  49. package/dist/web/assets/task-evidence-BUu7yYIn.js +1 -0
  50. package/dist/web/assets/{useApi-CROJJdhE-BBUO_YEu.js → useApi-CROJJdhE-raNlHRDl.js} +1 -1
  51. package/dist/web/assets/{useModalDialog-DrLhqtjR.js → useModalDialog-CroGk2Cs.js} +1 -1
  52. package/dist/web/assets/{vue-router-Cw4QZxM1.js → vue-router-JFYBLXB1.js} +1 -1
  53. package/dist/web/index.html +13 -11
  54. package/docs/agent-conversations-and-collaboration.md +115 -0
  55. package/docs/project-agent-memory.md +91 -443
  56. package/graph-provider/fuli_graph/agent_conversation_models.py +72 -0
  57. package/graph-provider/fuli_graph/agent_conversation_routes.py +47 -0
  58. package/graph-provider/fuli_graph/agent_loan_models.py +28 -0
  59. package/graph-provider/fuli_graph/agent_quality_policy.py +151 -0
  60. package/graph-provider/fuli_graph/agent_verification_models.py +22 -0
  61. package/graph-provider/fuli_graph/app.py +2 -0
  62. package/graph-provider/fuli_graph/conversation_context.py +30 -0
  63. package/graph-provider/fuli_graph/preference_conflicts.py +4 -1
  64. package/graph-provider/fuli_graph/project_agent_coordination_models.py +23 -1
  65. package/graph-provider/fuli_graph/project_agent_executor_models.py +3 -0
  66. package/graph-provider/fuli_graph/project_agent_memory_models.py +11 -0
  67. package/graph-provider/fuli_graph/project_agent_memory_routes.py +2 -0
  68. package/graph-provider/fuli_graph/project_agent_models.py +10 -0
  69. package/graph-provider/fuli_graph/project_agent_task_models.py +4 -0
  70. package/graph-provider/fuli_graph/project_agent_team_growth.py +56 -0
  71. package/graph-provider/fuli_graph/project_agent_work_log.py +34 -0
  72. package/graph-provider/fuli_graph/runtime.py +14 -0
  73. package/graph-provider/fuli_graph/store.py +6 -0
  74. package/graph-provider/fuli_graph/store_agent_conversations.py +206 -0
  75. package/graph-provider/fuli_graph/store_agent_loans.py +146 -0
  76. package/graph-provider/fuli_graph/store_agent_verification.py +111 -0
  77. package/graph-provider/fuli_graph/store_project_agent_coordination_policy.py +56 -2
  78. package/graph-provider/fuli_graph/store_project_agent_executors.py +2 -0
  79. package/graph-provider/fuli_graph/store_project_agent_memory.py +3 -0
  80. package/graph-provider/fuli_graph/store_project_agent_task_activity.py +7 -1
  81. package/graph-provider/fuli_graph/store_project_agent_task_recruitment.py +2 -0
  82. package/graph-provider/fuli_graph/store_project_agent_task_staffing.py +17 -2
  83. package/graph-provider/fuli_graph/store_project_agent_tasks.py +21 -8
  84. package/graph-provider/fuli_graph/store_task_contexts.py +20 -1
  85. package/graph-provider/fuli_graph/task_context_adoption.py +65 -0
  86. package/graph-provider/fuli_graph/task_context_models.py +23 -1
  87. package/graph-provider/fuli_graph/task_context_routes.py +12 -1
  88. package/graph-provider/pyproject.toml +1 -1
  89. package/npm-shrinkwrap.json +2 -2
  90. package/package.json +2 -1
  91. package/skills/operating-fuli/SKILL.md +4 -0
  92. package/src/agent-tools/agent-collaboration-definitions.js +30 -0
  93. package/src/agent-tools/agent-conversation-definitions.js +21 -0
  94. package/src/agent-tools/graph-definitions.js +30 -37
  95. package/src/agent-tools/graph-handlers.js +17 -1
  96. package/src/agent-tools/interface-catalog.js +2 -0
  97. package/src/agent-tools/project-agent-definitions.js +22 -0
  98. package/src/agent-tools/project-relation-definitions.js +36 -0
  99. package/src/agents/claude-code/conversation-transcript.js +20 -0
  100. package/src/agents/claude-code/lifecycle-hook.js +154 -0
  101. package/src/agents/claude-code/lifecycle-hooks.js +20 -0
  102. package/src/agents/codex/conversation-transcript.js +22 -0
  103. package/src/agents/codex/lifecycle-hook.js +48 -8
  104. package/src/agents/codex/lifecycle-hooks.js +6 -6
  105. package/src/agents/cursor/lifecycle-hook.js +5 -4
  106. package/src/app/agent-request-context.js +6 -1
  107. package/src/app/test-tools.js +26 -0
  108. package/src/cli/setup-command.js +1 -1
  109. package/src/conversations/sync-transcript.js +144 -0
  110. package/src/conversations/task-context-view.js +28 -0
  111. package/src/conversations/transcript-guard.js +54 -0
  112. package/src/conversations/transcript-reader.js +113 -0
  113. package/src/graphiti/agent-collaboration.js +62 -0
  114. package/src/graphiti/agent-conversations.js +75 -0
  115. package/src/graphiti/agent-knowledge-workflows.js +20 -5
  116. package/src/graphiti/project-agent-control-plane.js +31 -2
  117. package/src/graphiti/project-agent-mapping.js +31 -2
  118. package/src/graphiti/project-agent-memory.js +10 -2
  119. package/src/graphiti/project-agent-task-entry.js +15 -2
  120. package/src/graphiti/project-agent-team-context.js +21 -0
  121. package/src/graphiti/project-agent-workflows.js +19 -0
  122. package/src/graphiti/provider-client.js +24 -1
  123. package/src/graphiti/verification-preference.js +24 -0
  124. package/src/graphiti/writing-taste-profile-workflow.js +62 -9
  125. package/src/graphiti/writing-taste-profile.js +43 -16
  126. package/src/http/graph-api-router.js +26 -0
  127. package/src/mcp/create-mcp-server.js +19 -8
  128. package/src/mcp/instructions.js +3 -3
  129. package/src/mcp/provider-task-context-registry.js +11 -1
  130. package/src/mcp/session-id.js +4 -0
  131. package/src/mcp/task-context-registry.js +2 -1
  132. package/src/mcp/tool-annotations.js +8 -1
  133. package/src/mcp/tool-result.js +7 -3
  134. package/src/setup/agent-installation-status.js +1 -0
  135. package/src/setup/claude-code-config.js +13 -19
  136. package/dist/web/assets/AgentHand-D5pOgVjJ.js +0 -1
  137. package/dist/web/assets/AgentHand-DvdNtJ3_.css +0 -1
  138. package/dist/web/assets/EmployeeRecruitDialog-DONxXnd2.js +0 -1
  139. package/dist/web/assets/EmployeeWorkbenchPage-Cd4hd4bf.js +0 -3
  140. package/dist/web/assets/EmployeeWorkbenchPage-Cz7y-IFD.css +0 -1
  141. package/dist/web/assets/KnowledgePage-B6RDVxq-.js +0 -1
  142. package/dist/web/assets/PersonalProfilePage-Bz4zpTPC.js +0 -1
  143. package/dist/web/assets/PersonalProjectsPage-2u1o6dvA.js +0 -1
  144. package/dist/web/assets/ProjectAgentsPage-8tci631q.js +0 -11
  145. package/dist/web/assets/ProjectAgentsPage-BN4k3ubu.css +0 -1
  146. package/dist/web/assets/WritingTastePage-BCwimXC-.js +0 -1
  147. package/dist/web/assets/WritingTastePage-tb_pgude.css +0 -1
  148. package/dist/web/assets/index-CwjxeHGk.css +0 -1
  149. package/dist/web/assets/index-Dioqmmvf.js +0 -2
@@ -1 +1 @@
1
- import{$ as e,A as t,E as n,O as r,P as i,Q as a,T as o,Y as s,Z as c,_ as l,nt as u,z as d}from"./i18n-BkJjUsz_.js";import{a as f,c as p,d as m,f as h,g,i as _,l as v,n as y,o as b,p as ee,r as x,s as S,t as C,u as w}from"./useApi-CROJJdhE-BBUO_YEu.js";var T=typeof document<`u`,E=/#/g,te=/&/g,ne=/\//g,re=/=/g,D=/\?/g,O=/\+/g,ie=/%5B/g,k=/%5D/g,ae=/%5E/g,oe=/%60/g,A=/%7B/g,se=/%7C/g,j=/%7D/g,M=/%20/g;function N(e){return e==null?``:encodeURI(``+e).replace(se,`|`).replace(ie,`[`).replace(k,`]`)}function ce(e){return N(e).replace(A,`{`).replace(j,`}`).replace(ae,`^`)}function P(e){return N(e).replace(O,`%2B`).replace(M,`+`).replace(E,`%23`).replace(te,`%26`).replace(oe,"`").replace(A,`{`).replace(j,`}`).replace(ae,`^`)}function F(e){return P(e).replace(re,`%3D`)}function le(e){return N(e).replace(E,`%23`).replace(D,`%3F`)}function ue(e){return le(e).replace(ne,`%2F`)}function I(e){if(e==null)return null;try{return decodeURIComponent(``+e)}catch{}return``+e}var L=/\/$/,R=e=>e.replace(L,``);function z(e,t,n=`/`){let r,i={},a=``,o=``,s=t.indexOf(`#`),c=t.indexOf(`?`);return c=s>=0&&c>s?-1:c,c>=0&&(r=t.slice(0,c),a=t.slice(c,s>0?s:t.length),i=e(a.slice(1))),s>=0&&(r||=t.slice(0,s),o=t.slice(s,t.length)),r=G(r??t,n),{fullPath:r+a+o,path:r,query:i,hash:I(o)}}function de(e,t){let n=t.query?e(t.query):``;return t.path+(n&&`?`)+n+(t.hash||``)}function B(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||`/`}function fe(e,t,n){let r=t.matched.length-1,i=n.matched.length-1;return r>-1&&r===i&&V(t.matched[r],n.matched[i])&&H(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function V(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function H(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var n in e)if(!U(e[n],t[n]))return!1;return!0}function U(e,t){return _(e)?W(e,t):_(t)?W(t,e):(e&&e.valueOf())===(t&&t.valueOf())}function W(e,t){return _(t)?e.length===t.length&&e.every((e,n)=>e===t[n]):e.length===1&&e[0]===t}function G(e,t){if(e.startsWith(`/`))return e;if(!e)return t;let n=t.split(`/`),r=e.split(`/`),i=r[r.length-1];(i===`..`||i===`.`)&&r.push(``);let a=n.length-1,o,s;for(o=0;o<r.length;o++)if(s=r[o],s!==`.`)if(s===`..`)a>1&&a--;else break;return n.slice(0,a).join(`/`)+`/`+r.slice(o).join(`/`)}var K={path:`/`,name:void 0,params:{},query:{},hash:``,fullPath:`/`,matched:[],meta:{},redirectedFrom:void 0};function q(e){if(!e)if(T){let t=document.querySelector(`base`);e=t&&t.getAttribute(`href`)||`/`,e=e.replace(/^\w+:\/\/[^/]+/,``)}else e=`/`;return e[0]!==`/`&&e[0]!==`#`&&(e=`/`+e),R(e)}var J=/^[^#]+#/;function Y(e,t){return e.replace(J,`#`)+t}function X(e,t){let n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}var Z=()=>({left:window.scrollX,top:window.scrollY});function pe(e){let t;if(`el`in e){let n=e.el,r=typeof n==`string`&&n.startsWith(`#`),i=typeof n==`string`?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!i)return;t=X(i,e)}else t=e;`scrollBehavior`in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left==null?window.scrollX:t.left,t.top==null?window.scrollY:t.top)}function me(e,t){return(history.state?history.state.position-t:-1)+e}var he=new Map;function ge(e,t){he.set(e,t)}function _e(e){let t=he.get(e);return he.delete(e),t}function ve(e){return typeof e==`string`||e&&typeof e==`object`}function ye(e){return typeof e==`string`||typeof e==`symbol`}function be(e){let t={};if(e===``||e===`?`)return t;let n=(e[0]===`?`?e.slice(1):e).split(`&`);for(let e=0;e<n.length;++e){let r=n[e].replace(O,` `),i=r.indexOf(`=`),a=I(i<0?r:r.slice(0,i)),o=i<0?null:I(r.slice(i+1));if(a in t){let e=t[a];_(e)||(e=t[a]=[e]),e.push(o)}else t[a]=o}return t}function xe(e){let t=``;for(let n in e){let r=e[n];if(n=F(n),r==null){r!==void 0&&(t+=(t.length?`&`:``)+n);continue}(_(r)?r.map(e=>e&&P(e)):[r&&P(r)]).forEach(e=>{e!==void 0&&(t+=(t.length?`&`:``)+n,e!=null&&(t+=`=`+e))})}return t}function Se(e){let t={};for(let n in e){let r=e[n];r!==void 0&&(t[n]=_(r)?r.map(e=>e==null?null:``+e):r==null?r:``+r)}return t}function Q(){let e=[];function t(t){return e.push(t),()=>{let n=e.indexOf(t);n>-1&&e.splice(n,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function $(e,t,n,r,i,a=e=>e()){let o=r&&(r.enterCallbacks[i]=r.enterCallbacks[i]||[]);return()=>new Promise((s,c)=>{let l=e=>{e===!1?c(x(4,{from:n,to:t})):e instanceof Error?c(e):ve(e)?c(x(2,{from:t,to:e})):(o&&r.enterCallbacks[i]===o&&typeof e==`function`&&o.push(e),s())},u=a(()=>e.call(r&&r.instances[i],t,n,l)),d=Promise.resolve(u);e.length<3&&(d=d.then(l)),d.catch(e=>c(e))})}function Ce(e,t,n,r,i=e=>e()){let a=[];for(let o of e)for(let e in o.components){let s=o.components[e];if(!(t!==`beforeRouteEnter`&&!o.instances[e]))if(S(s)){let c=(s.__vccOpts||s)[t];c&&a.push($(c,n,r,o,e,i))}else{let c=s();a.push(()=>c.then(a=>{if(!a)throw Error(`Couldn't resolve component "${e}" at "${o.path}"`);let s=f(a)?a.default:a;o.mods[e]=a,o.components[e]=s;let c=(s.__vccOpts||s)[t];return c&&$(c,n,r,o,e,i)()}))}}return a}function we(e,t){let n=[],r=[],i=[],a=Math.max(t.matched.length,e.matched.length);for(let o=0;o<a;o++){let a=t.matched[o];a&&(e.matched.find(e=>V(e,a))?r.push(a):n.push(a));let s=e.matched[o];s&&(t.matched.find(e=>V(e,s))||i.push(s))}return[n,r,i]}var Te=()=>location.protocol+`//`+location.host;function Ee(e,t){let{pathname:n,search:r,hash:i}=t,a=e.indexOf(`#`);if(a>-1){let t=i.includes(e.slice(a))?e.slice(a).length:1,n=i.slice(t);return n[0]!==`/`&&(n=`/`+n),B(n,``)}return B(n,e)+r+i}function De(e,t,n,r){let i=[],a=[],o=null,s=({state:a})=>{let s=Ee(e,location),c=n.value,l=t.value,u=0;if(a){if(n.value=s,t.value=a,o&&o===c){o=null;return}u=l?a.position-l.position:0}else r(s);i.forEach(e=>{e(n.value,c,{delta:u,type:`pop`,direction:u?u>0?`forward`:`back`:``})})};function c(){o=n.value}function l(e){i.push(e);let t=()=>{let t=i.indexOf(e);t>-1&&i.splice(t,1)};return a.push(t),t}function u(){if(document.visibilityState===`hidden`){let{history:e}=window;if(!e.state)return;e.replaceState(y({},e.state,{scroll:Z()}),``)}}function d(){for(let e of a)e();a=[],window.removeEventListener(`popstate`,s),window.removeEventListener(`pagehide`,u),document.removeEventListener(`visibilitychange`,u)}return window.addEventListener(`popstate`,s),window.addEventListener(`pagehide`,u),document.addEventListener(`visibilitychange`,u),{pauseListeners:c,listen:l,destroy:d}}function Oe(e,t,n,r=!1,i=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:i?Z():null}}function ke(e){let{history:t,location:n}=window,r={value:Ee(e,n)},i={value:t.state};i.value||a(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function a(r,a,o){let s=e.indexOf(`#`),c=s>-1?(n.host&&document.querySelector(`base`)?e:e.slice(s))+r:Te()+e+r;try{t[o?`replaceState`:`pushState`](a,``,c),i.value=a}catch(e){console.error(e),n[o?`replace`:`assign`](c)}}function o(e,n){a(e,y({},t.state,Oe(i.value.back,e,i.value.forward,!0),n,{position:i.value.position}),!0),r.value=e}function s(e,n){let o=y({},i.value,t.state,{forward:e,scroll:Z()});a(o.current,o,!0),a(e,y({},Oe(r.value,e,null),{position:o.position+1},n),!1),r.value=e}return{location:r,state:i,push:s,replace:o}}function Ae(e){e=q(e);let t=ke(e),n=De(e,t.state,t.location,t.replace);function r(e,t=!0){t||n.pauseListeners(),history.go(e)}let i=y({location:``,base:e,go:r,createHref:Y.bind(null,e)},t,n);return Object.defineProperty(i,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(i,"state",{enumerable:!0,get:()=>t.state.value}),i}var je={type:0,value:``},Me=/[a-zA-Z0-9_]/;function Ne(e){if(!e)return[[]];if(e===`/`)return[[je]];if(!e.startsWith(`/`))throw Error(`Invalid path "${e}"`);function t(e){throw Error(`ERR (${n})/"${l}": ${e}`)}let n=0,r=n,i=[],a;function o(){a&&i.push(a),a=[]}let s=0,c,l=``,u=``;function d(){l&&=(n===0?a.push({type:0,value:l}):n===1||n===2||n===3?(a.length>1&&(c===`*`||c===`+`)&&t(`A repeatable param (${l}) must be alone in its segment. eg: '/:ids+.`),a.push({type:1,value:l,regexp:u,repeatable:c===`*`||c===`+`,optional:c===`*`||c===`?`})):t(`Invalid state to consume buffer`),``)}function f(){l+=c}for(;s<e.length;)switch(c=e[s++],n){case 0:c===`\\`?(r=n,n=4):c===`/`?(l&&d(),o()):c===`:`?(d(),n=1):f();break;case 4:f(),n=r;break;case 1:c===`(`?n=2:Me.test(c)?f():(d(),n=0,c!==`*`&&c!==`?`&&c!==`+`&&s--);break;case 2:c===`)`?u[u.length-1]==`\\`?u=u.slice(0,-1)+c:n=3:u+=c;break;case 3:d(),n=0,c!==`*`&&c!==`?`&&c!==`+`&&s--,u=``;break;default:t(`Unknown state`);break}return n===2&&t(`Unfinished custom RegExp for param "${l}"`),d(),o(),i}var Pe=`[^/]+?`,Fe={sensitive:!1,strict:!1,start:!0,end:!0},Ie=/[.+*?^${}()[\]/\\]/g;function Le(e,t){let n=y({},Fe,t),r=[],i=n.start?`^`:``,a=[];for(let t of e){let e=t.length?[]:[90];n.strict&&!t.length&&(i+=`/`);for(let r=0;r<t.length;r++){let o=t[r],s=40+(n.sensitive?.25:0);if(o.type===0)r||(i+=`/`),i+=o.value.replace(Ie,`\\$&`),s+=40;else if(o.type===1){let{value:e,repeatable:n,optional:c,regexp:l}=o;a.push({name:e,repeatable:n,optional:c});let u=l||Pe;if(u!==Pe){s+=10;try{RegExp(`(${u})`)}catch(t){throw Error(`Invalid custom RegExp for param "${e}" (${u}): `+t.message)}}let d=n?`((?:${u})(?:/(?:${u}))*)`:`(${u})`;r||(d=c&&t.length<2?`(?:/${d})`:`/`+d),c&&(d+=`?`),i+=d,s+=20,c&&(s+=-8),n&&(s+=-20),u===`.*`&&(s+=-50)}e.push(s)}r.push(e)}if(n.strict&&n.end){let e=r.length-1;r[e][r[e].length-1]+=.7000000000000001}n.strict||(i+=`/?`),n.end?i+=`$`:n.strict&&!i.endsWith(`/`)&&(i+=`(?:/|$)`);let o=new RegExp(i,n.sensitive?``:`i`);function s(e){let t=e.match(o),n={};if(!t)return null;for(let e=1;e<t.length;e++){let r=t[e]||``,i=a[e-1];n[i.name]=r&&i.repeatable?r.split(`/`):r}return n}function c(t){let n=``,r=!1;for(let i of e){(!r||!n.endsWith(`/`))&&(n+=`/`),r=!1;for(let e of i)if(e.type===0)n+=e.value;else if(e.type===1){let{value:a,repeatable:o,optional:s}=e,c=a in t?t[a]:``;if(_(c)&&!o)throw Error(`Provided param "${a}" is an array but it is not repeatable (* or + modifiers)`);let l=_(c)?c.join(`/`):c;if(!l)if(s)i.length<2&&(n.endsWith(`/`)?n=n.slice(0,-1):r=!0);else throw Error(`Missing required param "${a}"`);n+=l}}return n||`/`}return{re:o,score:r,keys:a,parse:s,stringify:c}}function Re(e,t){let n=0;for(;n<e.length&&n<t.length;){let r=t[n]-e[n];if(r)return r;n++}return e.length<t.length?e.length===1&&e[0]===80?-1:1:e.length>t.length?t.length===1&&t[0]===80?1:-1:0}function ze(e,t){let n=0,r=e.score,i=t.score;for(;n<r.length&&n<i.length;){let e=Re(r[n],i[n]);if(e)return e;n++}if(Math.abs(i.length-r.length)===1){if(Be(r))return 1;if(Be(i))return-1}return i.length-r.length}function Be(e){let t=e[e.length-1];return e.length>0&&t[t.length-1]<0}var Ve={strict:!1,end:!0,sensitive:!1};function He(e,t,n){let r=y(Le(Ne(e.path),n),{record:e,parent:t,children:[],alias:[]});return t&&!r.record.aliasOf==!t.record.aliasOf&&t.children.push(r),r}function Ue(e,t){let n=[],r=new Map;t=v(Ve,t);function i(e){return r.get(e)}function a(e,n,r){let i=!r,s=Ge(e);s.aliasOf=r&&r.record;let l=v(t,e),u=[s];if(`alias`in e){let t=typeof e.alias==`string`?[e.alias]:e.alias;for(let e of t)u.push(Ge(y({},s,{components:r?r.record.components:s.components,path:e,aliasOf:r?r.record:s})))}let d,f;for(let t of u){let{path:u}=t;if(n&&u[0]!==`/`){let e=n.record.path,r=e[e.length-1]===`/`?``:`/`;t.path=n.record.path+(u&&r+u)}if(d=He(t,n,l),r?r.alias.push(d):(f||=d,f!==d&&f.alias.push(d),i&&e.name&&!qe(d)&&o(e.name)),Ze(d)&&c(d),s.children){let e=s.children;for(let t=0;t<e.length;t++)a(e[t],d,r&&r.children[t])}r||=d}return f?()=>{o(f)}:w}function o(e){if(ye(e)){let t=r.get(e);t&&(r.delete(e),n.splice(n.indexOf(t),1),t.children.forEach(o),t.alias.forEach(o))}else{let t=n.indexOf(e);t>-1&&(n.splice(t,1),e.record.name&&r.delete(e.record.name),e.children.forEach(o),e.alias.forEach(o))}}function s(){return n}function c(e){let t=Ye(e,n);n.splice(t,0,e),e.record.name&&!qe(e)&&r.set(e.record.name,e)}function l(e,t){let i,a={},o,s;if(`name`in e&&e.name){if(i=r.get(e.name),!i)throw x(1,{location:e});s=i.record.name,a=y(We(t.params,i.keys.filter(e=>!e.optional).concat(i.parent?i.parent.keys.filter(e=>e.optional):[]).map(e=>e.name)),e.params&&We(e.params,i.keys.map(e=>e.name))),o=i.stringify(a)}else if(e.path!=null)o=e.path,i=n.find(e=>e.re.test(o)),i&&(a=i.parse(o),s=i.record.name,i.keys.forEach(e=>{e.optional&&!a[e.name]&&delete a[e.name]}));else{if(i=t.name?r.get(t.name):n.find(e=>e.re.test(t.path)),!i)throw x(1,{location:e,currentLocation:t});s=i.record.name,a=y({},t.params,e.params),o=i.stringify(a)}let c=[],l=i;for(;l;)c.unshift(l.record),l=l.parent;return{name:s,path:o,params:a,matched:c,meta:Je(c)}}e.forEach(e=>a(e));function u(){n.length=0,r.clear()}return{addRoute:a,resolve:l,removeRoute:o,clearRoutes:u,getRoutes:s,getRecordMatcher:i}}function We(e,t){let n={};for(let r of t)r in e&&(n[r]=e[r]);return n}function Ge(e){let t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:Ke(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:`components`in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function Ke(e){let t={},n=e.props||!1;if(`component`in e)t.default=n;else for(let r in e.components)t[r]=typeof n==`object`?n[r]:n;return t}function qe(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function Je(e){return e.reduce((e,t)=>y(e,t.meta),{})}function Ye(e,t){let n=0,r=t.length;for(;n!==r;){let i=n+r>>1;ze(e,t[i])<0?r=i:n=i+1}let i=Xe(e);return i&&(r=t.lastIndexOf(i,r-1)),r}function Xe(e){let t=e;for(;t=t.parent;)if(Ze(t)&&ze(e,t)===0)return t}function Ze({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function Qe(e){let t=r(h),n=r(m),i=l(()=>{let n=u(e.to);return t.resolve(n)}),a=l(()=>{let{matched:e}=i.value,{length:t}=e,r=e[t-1],a=n.matched;if(!r||!a.length)return-1;let o=a.findIndex(V.bind(null,r));if(o>-1)return o;let s=rt(e[t-2]);return t>1&&rt(r)===s&&a[a.length-1].path!==s?a.findIndex(V.bind(null,e[t-2])):o}),o=l(()=>a.value>-1&&nt(n.params,i.value.params)),s=l(()=>a.value>-1&&a.value===n.matched.length-1&&H(n.params,i.value.params));function c(n={}){if(tt(n)){let n=t[u(e.replace)?`replace`:`push`](u(e.to)).catch(w);return e.viewTransition&&typeof document<`u`&&`startViewTransition`in document&&document.startViewTransition(()=>n),n}return Promise.resolve()}return{route:i,href:l(()=>i.value.href),isActive:o,isExactActive:s,navigate:c}}function $e(e){return e.length===1?e[0]:e}var et=o({name:`RouterLink`,compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:`page`},viewTransition:Boolean},useLink:Qe,setup(e,{slots:t}){let i=s(Qe(e)),{options:a}=r(h),o=l(()=>({[it(e.activeClass,a.linkActiveClass,`router-link-active`)]:i.isActive,[it(e.exactActiveClass,a.linkExactActiveClass,`router-link-exact-active`)]:i.isExactActive}));return()=>{let r=t.default&&$e(t.default(i));return e.custom?r:n(`a`,{"aria-current":i.isExactActive?e.ariaCurrentValue:null,href:i.href,onClick:i.navigate,class:o.value},r)}}});function tt(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){let t=e.currentTarget.getAttribute(`target`);if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function nt(e,t){for(let n in t){let r=t[n],i=e[n];if(typeof r==`string`){if(r!==i)return!1}else if(!_(i)||i.length!==r.length||r.some((e,t)=>e.valueOf()!==i[t].valueOf()))return!1}return!0}function rt(e){return e?e.aliasOf?e.aliasOf.path:e.path:``}var it=(e,t,n)=>e??t??n,at=o({name:`RouterView`,inheritAttrs:!1,props:{name:{type:String,default:`default`},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:a}){let o=r(ee),s=l(()=>e.route||o.value),f=r(g,0),m=l(()=>{let e=u(f),{matched:t}=s.value,n;for(;(n=t[e])&&!n.components;)e++;return e}),h=l(()=>s.value.matched[m.value]);i(g,l(()=>m.value+1)),i(p,h),i(ee,s);let _=c();return d(()=>[_.value,h.value,e.name],([e,t,n],[r,i,a])=>{t&&(t.instances[n]=e,i&&i!==t&&e&&e===r&&(t.leaveGuards.size||(t.leaveGuards=i.leaveGuards),t.updateGuards.size||(t.updateGuards=i.updateGuards))),e&&t&&(!i||!V(t,i)||!r)&&(t.enterCallbacks[n]||[]).forEach(t=>t(e))},{flush:`post`}),()=>{let r=s.value,i=e.name,o=h.value,c=o&&o.components[i];if(!c)return ot(a.default,{Component:c,route:r});let l=o.props[i],u=n(c,y({},l?l===!0?r.params:typeof l==`function`?l(r):l:null,t,{onVnodeUnmounted:e=>{e.component.isUnmounted&&(o.instances[i]=null)},ref:_}));return ot(a.default,{Component:u,route:r})||u}}});function ot(e,t){if(!e)return null;let n=e(t);return n.length===1?n[0]:n}var st=at;function ct(n){let r=Ue(n.routes,n),i=n.parseQuery||be,o=n.stringifyQuery||xe,s=n.history,c=Q(),l=Q(),d=Q(),f=e(K),p=K;T&&n.scrollBehavior&&`scrollRestoration`in history&&(history.scrollRestoration=`manual`);let g=C.bind(null,e=>``+e),v=C.bind(null,ue),S=C.bind(null,I);function E(e,t){let n,i;return ye(e)?(n=r.getRecordMatcher(e),i=t):i=e,r.addRoute(i,n)}function te(e){let t=r.getRecordMatcher(e);t&&r.removeRoute(t)}function ne(){return r.getRoutes().map(e=>e.record)}function re(e){return!!r.getRecordMatcher(e)}function D(e,t){if(t=y({},t||f.value),typeof e==`string`){let n=z(i,e,t.path),a=r.resolve({path:n.path},t),o=s.createHref(n.fullPath);return y(n,a,{params:S(a.params),redirectedFrom:void 0,href:o})}let n;if(e.path!=null)n=y({},e,{path:z(i,e.path,t.path).path});else{let r=y({},e.params);for(let e in r)r[e]??delete r[e];n=y({},e,{params:v(r)}),t.params=v(t.params)}let a=r.resolve(n,t),c=e.hash||``;a.params=g(S(a.params));let l=de(o,y({},e,{hash:ce(c),path:a.path})),u=s.createHref(l);return y({fullPath:l,hash:c,query:o===xe?Se(e.query):e.query||{}},a,{redirectedFrom:void 0,href:u})}function O(e){return typeof e==`string`?z(i,e,f.value.path):y({},e)}function ie(e,t){if(p!==e)return x(8,{from:t,to:e})}function k(e){return A(e)}function ae(e){return k(y(O(e),{replace:!0}))}function oe(e,t){let n=e.matched[e.matched.length-1];if(n&&n.redirect){let{redirect:r}=n,i=typeof r==`function`?r(e,t):r;return typeof i==`string`&&(i=i.includes(`?`)||i.includes(`#`)?i=O(i):{path:i},i.params={}),y({query:e.query,hash:e.hash,params:i.path==null?e.params:{}},i)}}function A(e,t){let n=p=D(e),r=f.value,i=e.state,a=e.force,s=e.replace===!0,c=oe(n,r);if(c)return A(y(O(c),{state:typeof c==`object`?y({},i,c.state):i,force:a,replace:s}),t||n);let l=n;l.redirectedFrom=t;let u;return!a&&fe(o,r,n)&&(u=x(16,{to:l,from:r}),W(r,r,!0,!1)),(u?Promise.resolve(u):M(l,r)).catch(e=>b(e)?b(e,2)?e:U(e):V(e,l,r)).then(e=>{if(e){if(b(e,2))return A(y({replace:s},O(e.to),{state:typeof e.to==`object`?y({},i,e.to.state):i,force:a}),t||l)}else e=P(l,r,!0,s,i);return N(l,r,e),e})}function se(e,t){let n=ie(e,t);return n?Promise.reject(n):Promise.resolve()}function j(e){let t=J.values().next().value;return t&&typeof t.runWithContext==`function`?t.runWithContext(e):e()}function M(e,t){let n,[r,i,a]=we(e,t);n=Ce(r.reverse(),`beforeRouteLeave`,e,t);for(let i of r)i.leaveGuards.forEach(r=>{n.push($(r,e,t))});let o=se.bind(null,e,t);return n.push(o),X(n).then(()=>{n=[];for(let r of c.list())n.push($(r,e,t));return n.push(o),X(n)}).then(()=>{n=Ce(i,`beforeRouteUpdate`,e,t);for(let r of i)r.updateGuards.forEach(r=>{n.push($(r,e,t))});return n.push(o),X(n)}).then(()=>{n=[];for(let r of a)if(r.beforeEnter)if(_(r.beforeEnter))for(let i of r.beforeEnter)n.push($(i,e,t));else n.push($(r.beforeEnter,e,t));return n.push(o),X(n)}).then(()=>(e.matched.forEach(e=>e.enterCallbacks={}),n=Ce(a,`beforeRouteEnter`,e,t,j),n.push(o),X(n))).then(()=>{n=[];for(let r of l.list())n.push($(r,e,t));return n.push(o),X(n)}).catch(e=>b(e,8)?e:Promise.reject(e))}function N(e,t,n){d.list().forEach(r=>j(()=>r(e,t,n)))}function P(e,t,n,r,i){let a=ie(e,t);if(a)return a;let o=t===K,c=T?history.state:{};n&&(r||o?s.replace(e.fullPath,y({scroll:o&&c&&c.scroll},i)):s.push(e.fullPath,i)),f.value=e,W(e,t,n,o),U()}let F;function le(){F||=s.listen((e,t,n)=>{if(!Y.listening)return;let r=D(e),i=oe(r,Y.currentRoute.value);if(i){A(y(i,{replace:!0,force:!0}),r).catch(w);return}p=r;let a=f.value;T&&ge(me(a.fullPath,n.delta),Z()),M(r,a).catch(e=>b(e,12)?e:b(e,2)?(A(y(O(e.to),{force:!0}),r).then(e=>{b(e,20)&&!n.delta&&n.type===`pop`&&s.go(-1,!1)}).catch(w),Promise.reject()):(n.delta&&s.go(-n.delta,!1),V(e,r,a))).then(e=>{e||=P(r,a,!1),e&&(n.delta&&!b(e,8)?s.go(-n.delta,!1):n.type===`pop`&&b(e,20)&&s.go(-1,!1)),N(r,a,e)}).catch(w)})}let L=Q(),R=Q(),B;function V(e,t,n){U(e);let r=R.list();return r.length?r.forEach(r=>r(e,t,n)):console.error(e),Promise.reject(e)}function H(){return B&&f.value!==K?Promise.resolve():new Promise((e,t)=>{L.add([e,t])})}function U(e){return B||(B=!e,le(),L.list().forEach(([t,n])=>e?n(e):t()),L.reset()),e}function W(e,r,i,a){let{scrollBehavior:o}=n;if(!T||!o)return Promise.resolve();let s=!i&&_e(me(e.fullPath,0))||(a||!i)&&history.state&&history.state.scroll||null;return t().then(()=>o(e,r,s)).then(t=>e===f.value&&t&&pe(t)).catch(t=>e===f.value&&V(t,e,r))}let G=e=>s.go(e),q,J=new Set,Y={currentRoute:f,listening:!0,addRoute:E,removeRoute:te,clearRoutes:r.clearRoutes,hasRoute:re,getRoutes:ne,resolve:D,options:n,push:k,replace:ae,go:G,back:()=>G(-1),forward:()=>G(1),beforeEach:c.add,beforeResolve:l.add,afterEach:d.add,onError:R.add,isReady:H,install(e){e.component(`RouterLink`,et),e.component(`RouterView`,st),e.config.globalProperties.$router=Y,Object.defineProperty(e.config.globalProperties,"$route",{enumerable:!0,get:()=>u(f)}),T&&!q&&f.value===K&&(q=!0,k(s.location).catch(e=>{}));let t={};for(let e in K)Object.defineProperty(t,e,{get:()=>f.value[e],enumerable:!0});e.provide(h,Y),e.provide(m,a(t)),e.provide(ee,f);let n=e.unmount;J.add(e),e.unmount=function(){J.delete(e),J.size<1&&(p=K,F&&F(),F=null,f.value=K,q=!1,B=!1),n()}}};function X(e){return e.reduce((e,t)=>e.then(()=>j(t)),Promise.resolve())}return Y}export{Ae as i,st as n,ct as r,et as t};
1
+ import{$ as e,A as t,E as n,O as r,P as i,Q as a,T as o,Y as s,Z as c,_ as l,nt as u,z as d}from"./i18n-BtOOoyJd.js";import{a as f,c as p,d as m,f as h,g,i as _,l as v,n as y,o as b,p as ee,r as x,s as S,t as C,u as w}from"./useApi-CROJJdhE-raNlHRDl.js";var T=typeof document<`u`,E=/#/g,te=/&/g,ne=/\//g,re=/=/g,D=/\?/g,O=/\+/g,ie=/%5B/g,k=/%5D/g,ae=/%5E/g,oe=/%60/g,A=/%7B/g,se=/%7C/g,j=/%7D/g,M=/%20/g;function N(e){return e==null?``:encodeURI(``+e).replace(se,`|`).replace(ie,`[`).replace(k,`]`)}function ce(e){return N(e).replace(A,`{`).replace(j,`}`).replace(ae,`^`)}function P(e){return N(e).replace(O,`%2B`).replace(M,`+`).replace(E,`%23`).replace(te,`%26`).replace(oe,"`").replace(A,`{`).replace(j,`}`).replace(ae,`^`)}function F(e){return P(e).replace(re,`%3D`)}function le(e){return N(e).replace(E,`%23`).replace(D,`%3F`)}function ue(e){return le(e).replace(ne,`%2F`)}function I(e){if(e==null)return null;try{return decodeURIComponent(``+e)}catch{}return``+e}var L=/\/$/,R=e=>e.replace(L,``);function z(e,t,n=`/`){let r,i={},a=``,o=``,s=t.indexOf(`#`),c=t.indexOf(`?`);return c=s>=0&&c>s?-1:c,c>=0&&(r=t.slice(0,c),a=t.slice(c,s>0?s:t.length),i=e(a.slice(1))),s>=0&&(r||=t.slice(0,s),o=t.slice(s,t.length)),r=G(r??t,n),{fullPath:r+a+o,path:r,query:i,hash:I(o)}}function de(e,t){let n=t.query?e(t.query):``;return t.path+(n&&`?`)+n+(t.hash||``)}function B(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||`/`}function fe(e,t,n){let r=t.matched.length-1,i=n.matched.length-1;return r>-1&&r===i&&V(t.matched[r],n.matched[i])&&H(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function V(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function H(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var n in e)if(!U(e[n],t[n]))return!1;return!0}function U(e,t){return _(e)?W(e,t):_(t)?W(t,e):(e&&e.valueOf())===(t&&t.valueOf())}function W(e,t){return _(t)?e.length===t.length&&e.every((e,n)=>e===t[n]):e.length===1&&e[0]===t}function G(e,t){if(e.startsWith(`/`))return e;if(!e)return t;let n=t.split(`/`),r=e.split(`/`),i=r[r.length-1];(i===`..`||i===`.`)&&r.push(``);let a=n.length-1,o,s;for(o=0;o<r.length;o++)if(s=r[o],s!==`.`)if(s===`..`)a>1&&a--;else break;return n.slice(0,a).join(`/`)+`/`+r.slice(o).join(`/`)}var K={path:`/`,name:void 0,params:{},query:{},hash:``,fullPath:`/`,matched:[],meta:{},redirectedFrom:void 0};function q(e){if(!e)if(T){let t=document.querySelector(`base`);e=t&&t.getAttribute(`href`)||`/`,e=e.replace(/^\w+:\/\/[^/]+/,``)}else e=`/`;return e[0]!==`/`&&e[0]!==`#`&&(e=`/`+e),R(e)}var J=/^[^#]+#/;function Y(e,t){return e.replace(J,`#`)+t}function X(e,t){let n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}var Z=()=>({left:window.scrollX,top:window.scrollY});function pe(e){let t;if(`el`in e){let n=e.el,r=typeof n==`string`&&n.startsWith(`#`),i=typeof n==`string`?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!i)return;t=X(i,e)}else t=e;`scrollBehavior`in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left==null?window.scrollX:t.left,t.top==null?window.scrollY:t.top)}function me(e,t){return(history.state?history.state.position-t:-1)+e}var he=new Map;function ge(e,t){he.set(e,t)}function _e(e){let t=he.get(e);return he.delete(e),t}function ve(e){return typeof e==`string`||e&&typeof e==`object`}function ye(e){return typeof e==`string`||typeof e==`symbol`}function be(e){let t={};if(e===``||e===`?`)return t;let n=(e[0]===`?`?e.slice(1):e).split(`&`);for(let e=0;e<n.length;++e){let r=n[e].replace(O,` `),i=r.indexOf(`=`),a=I(i<0?r:r.slice(0,i)),o=i<0?null:I(r.slice(i+1));if(a in t){let e=t[a];_(e)||(e=t[a]=[e]),e.push(o)}else t[a]=o}return t}function xe(e){let t=``;for(let n in e){let r=e[n];if(n=F(n),r==null){r!==void 0&&(t+=(t.length?`&`:``)+n);continue}(_(r)?r.map(e=>e&&P(e)):[r&&P(r)]).forEach(e=>{e!==void 0&&(t+=(t.length?`&`:``)+n,e!=null&&(t+=`=`+e))})}return t}function Se(e){let t={};for(let n in e){let r=e[n];r!==void 0&&(t[n]=_(r)?r.map(e=>e==null?null:``+e):r==null?r:``+r)}return t}function Q(){let e=[];function t(t){return e.push(t),()=>{let n=e.indexOf(t);n>-1&&e.splice(n,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function $(e,t,n,r,i,a=e=>e()){let o=r&&(r.enterCallbacks[i]=r.enterCallbacks[i]||[]);return()=>new Promise((s,c)=>{let l=e=>{e===!1?c(x(4,{from:n,to:t})):e instanceof Error?c(e):ve(e)?c(x(2,{from:t,to:e})):(o&&r.enterCallbacks[i]===o&&typeof e==`function`&&o.push(e),s())},u=a(()=>e.call(r&&r.instances[i],t,n,l)),d=Promise.resolve(u);e.length<3&&(d=d.then(l)),d.catch(e=>c(e))})}function Ce(e,t,n,r,i=e=>e()){let a=[];for(let o of e)for(let e in o.components){let s=o.components[e];if(!(t!==`beforeRouteEnter`&&!o.instances[e]))if(S(s)){let c=(s.__vccOpts||s)[t];c&&a.push($(c,n,r,o,e,i))}else{let c=s();a.push(()=>c.then(a=>{if(!a)throw Error(`Couldn't resolve component "${e}" at "${o.path}"`);let s=f(a)?a.default:a;o.mods[e]=a,o.components[e]=s;let c=(s.__vccOpts||s)[t];return c&&$(c,n,r,o,e,i)()}))}}return a}function we(e,t){let n=[],r=[],i=[],a=Math.max(t.matched.length,e.matched.length);for(let o=0;o<a;o++){let a=t.matched[o];a&&(e.matched.find(e=>V(e,a))?r.push(a):n.push(a));let s=e.matched[o];s&&(t.matched.find(e=>V(e,s))||i.push(s))}return[n,r,i]}var Te=()=>location.protocol+`//`+location.host;function Ee(e,t){let{pathname:n,search:r,hash:i}=t,a=e.indexOf(`#`);if(a>-1){let t=i.includes(e.slice(a))?e.slice(a).length:1,n=i.slice(t);return n[0]!==`/`&&(n=`/`+n),B(n,``)}return B(n,e)+r+i}function De(e,t,n,r){let i=[],a=[],o=null,s=({state:a})=>{let s=Ee(e,location),c=n.value,l=t.value,u=0;if(a){if(n.value=s,t.value=a,o&&o===c){o=null;return}u=l?a.position-l.position:0}else r(s);i.forEach(e=>{e(n.value,c,{delta:u,type:`pop`,direction:u?u>0?`forward`:`back`:``})})};function c(){o=n.value}function l(e){i.push(e);let t=()=>{let t=i.indexOf(e);t>-1&&i.splice(t,1)};return a.push(t),t}function u(){if(document.visibilityState===`hidden`){let{history:e}=window;if(!e.state)return;e.replaceState(y({},e.state,{scroll:Z()}),``)}}function d(){for(let e of a)e();a=[],window.removeEventListener(`popstate`,s),window.removeEventListener(`pagehide`,u),document.removeEventListener(`visibilitychange`,u)}return window.addEventListener(`popstate`,s),window.addEventListener(`pagehide`,u),document.addEventListener(`visibilitychange`,u),{pauseListeners:c,listen:l,destroy:d}}function Oe(e,t,n,r=!1,i=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:i?Z():null}}function ke(e){let{history:t,location:n}=window,r={value:Ee(e,n)},i={value:t.state};i.value||a(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function a(r,a,o){let s=e.indexOf(`#`),c=s>-1?(n.host&&document.querySelector(`base`)?e:e.slice(s))+r:Te()+e+r;try{t[o?`replaceState`:`pushState`](a,``,c),i.value=a}catch(e){console.error(e),n[o?`replace`:`assign`](c)}}function o(e,n){a(e,y({},t.state,Oe(i.value.back,e,i.value.forward,!0),n,{position:i.value.position}),!0),r.value=e}function s(e,n){let o=y({},i.value,t.state,{forward:e,scroll:Z()});a(o.current,o,!0),a(e,y({},Oe(r.value,e,null),{position:o.position+1},n),!1),r.value=e}return{location:r,state:i,push:s,replace:o}}function Ae(e){e=q(e);let t=ke(e),n=De(e,t.state,t.location,t.replace);function r(e,t=!0){t||n.pauseListeners(),history.go(e)}let i=y({location:``,base:e,go:r,createHref:Y.bind(null,e)},t,n);return Object.defineProperty(i,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(i,"state",{enumerable:!0,get:()=>t.state.value}),i}var je={type:0,value:``},Me=/[a-zA-Z0-9_]/;function Ne(e){if(!e)return[[]];if(e===`/`)return[[je]];if(!e.startsWith(`/`))throw Error(`Invalid path "${e}"`);function t(e){throw Error(`ERR (${n})/"${l}": ${e}`)}let n=0,r=n,i=[],a;function o(){a&&i.push(a),a=[]}let s=0,c,l=``,u=``;function d(){l&&=(n===0?a.push({type:0,value:l}):n===1||n===2||n===3?(a.length>1&&(c===`*`||c===`+`)&&t(`A repeatable param (${l}) must be alone in its segment. eg: '/:ids+.`),a.push({type:1,value:l,regexp:u,repeatable:c===`*`||c===`+`,optional:c===`*`||c===`?`})):t(`Invalid state to consume buffer`),``)}function f(){l+=c}for(;s<e.length;)switch(c=e[s++],n){case 0:c===`\\`?(r=n,n=4):c===`/`?(l&&d(),o()):c===`:`?(d(),n=1):f();break;case 4:f(),n=r;break;case 1:c===`(`?n=2:Me.test(c)?f():(d(),n=0,c!==`*`&&c!==`?`&&c!==`+`&&s--);break;case 2:c===`)`?u[u.length-1]==`\\`?u=u.slice(0,-1)+c:n=3:u+=c;break;case 3:d(),n=0,c!==`*`&&c!==`?`&&c!==`+`&&s--,u=``;break;default:t(`Unknown state`);break}return n===2&&t(`Unfinished custom RegExp for param "${l}"`),d(),o(),i}var Pe=`[^/]+?`,Fe={sensitive:!1,strict:!1,start:!0,end:!0},Ie=/[.+*?^${}()[\]/\\]/g;function Le(e,t){let n=y({},Fe,t),r=[],i=n.start?`^`:``,a=[];for(let t of e){let e=t.length?[]:[90];n.strict&&!t.length&&(i+=`/`);for(let r=0;r<t.length;r++){let o=t[r],s=40+(n.sensitive?.25:0);if(o.type===0)r||(i+=`/`),i+=o.value.replace(Ie,`\\$&`),s+=40;else if(o.type===1){let{value:e,repeatable:n,optional:c,regexp:l}=o;a.push({name:e,repeatable:n,optional:c});let u=l||Pe;if(u!==Pe){s+=10;try{RegExp(`(${u})`)}catch(t){throw Error(`Invalid custom RegExp for param "${e}" (${u}): `+t.message)}}let d=n?`((?:${u})(?:/(?:${u}))*)`:`(${u})`;r||(d=c&&t.length<2?`(?:/${d})`:`/`+d),c&&(d+=`?`),i+=d,s+=20,c&&(s+=-8),n&&(s+=-20),u===`.*`&&(s+=-50)}e.push(s)}r.push(e)}if(n.strict&&n.end){let e=r.length-1;r[e][r[e].length-1]+=.7000000000000001}n.strict||(i+=`/?`),n.end?i+=`$`:n.strict&&!i.endsWith(`/`)&&(i+=`(?:/|$)`);let o=new RegExp(i,n.sensitive?``:`i`);function s(e){let t=e.match(o),n={};if(!t)return null;for(let e=1;e<t.length;e++){let r=t[e]||``,i=a[e-1];n[i.name]=r&&i.repeatable?r.split(`/`):r}return n}function c(t){let n=``,r=!1;for(let i of e){(!r||!n.endsWith(`/`))&&(n+=`/`),r=!1;for(let e of i)if(e.type===0)n+=e.value;else if(e.type===1){let{value:a,repeatable:o,optional:s}=e,c=a in t?t[a]:``;if(_(c)&&!o)throw Error(`Provided param "${a}" is an array but it is not repeatable (* or + modifiers)`);let l=_(c)?c.join(`/`):c;if(!l)if(s)i.length<2&&(n.endsWith(`/`)?n=n.slice(0,-1):r=!0);else throw Error(`Missing required param "${a}"`);n+=l}}return n||`/`}return{re:o,score:r,keys:a,parse:s,stringify:c}}function Re(e,t){let n=0;for(;n<e.length&&n<t.length;){let r=t[n]-e[n];if(r)return r;n++}return e.length<t.length?e.length===1&&e[0]===80?-1:1:e.length>t.length?t.length===1&&t[0]===80?1:-1:0}function ze(e,t){let n=0,r=e.score,i=t.score;for(;n<r.length&&n<i.length;){let e=Re(r[n],i[n]);if(e)return e;n++}if(Math.abs(i.length-r.length)===1){if(Be(r))return 1;if(Be(i))return-1}return i.length-r.length}function Be(e){let t=e[e.length-1];return e.length>0&&t[t.length-1]<0}var Ve={strict:!1,end:!0,sensitive:!1};function He(e,t,n){let r=y(Le(Ne(e.path),n),{record:e,parent:t,children:[],alias:[]});return t&&!r.record.aliasOf==!t.record.aliasOf&&t.children.push(r),r}function Ue(e,t){let n=[],r=new Map;t=v(Ve,t);function i(e){return r.get(e)}function a(e,n,r){let i=!r,s=Ge(e);s.aliasOf=r&&r.record;let l=v(t,e),u=[s];if(`alias`in e){let t=typeof e.alias==`string`?[e.alias]:e.alias;for(let e of t)u.push(Ge(y({},s,{components:r?r.record.components:s.components,path:e,aliasOf:r?r.record:s})))}let d,f;for(let t of u){let{path:u}=t;if(n&&u[0]!==`/`){let e=n.record.path,r=e[e.length-1]===`/`?``:`/`;t.path=n.record.path+(u&&r+u)}if(d=He(t,n,l),r?r.alias.push(d):(f||=d,f!==d&&f.alias.push(d),i&&e.name&&!qe(d)&&o(e.name)),Ze(d)&&c(d),s.children){let e=s.children;for(let t=0;t<e.length;t++)a(e[t],d,r&&r.children[t])}r||=d}return f?()=>{o(f)}:w}function o(e){if(ye(e)){let t=r.get(e);t&&(r.delete(e),n.splice(n.indexOf(t),1),t.children.forEach(o),t.alias.forEach(o))}else{let t=n.indexOf(e);t>-1&&(n.splice(t,1),e.record.name&&r.delete(e.record.name),e.children.forEach(o),e.alias.forEach(o))}}function s(){return n}function c(e){let t=Ye(e,n);n.splice(t,0,e),e.record.name&&!qe(e)&&r.set(e.record.name,e)}function l(e,t){let i,a={},o,s;if(`name`in e&&e.name){if(i=r.get(e.name),!i)throw x(1,{location:e});s=i.record.name,a=y(We(t.params,i.keys.filter(e=>!e.optional).concat(i.parent?i.parent.keys.filter(e=>e.optional):[]).map(e=>e.name)),e.params&&We(e.params,i.keys.map(e=>e.name))),o=i.stringify(a)}else if(e.path!=null)o=e.path,i=n.find(e=>e.re.test(o)),i&&(a=i.parse(o),s=i.record.name,i.keys.forEach(e=>{e.optional&&!a[e.name]&&delete a[e.name]}));else{if(i=t.name?r.get(t.name):n.find(e=>e.re.test(t.path)),!i)throw x(1,{location:e,currentLocation:t});s=i.record.name,a=y({},t.params,e.params),o=i.stringify(a)}let c=[],l=i;for(;l;)c.unshift(l.record),l=l.parent;return{name:s,path:o,params:a,matched:c,meta:Je(c)}}e.forEach(e=>a(e));function u(){n.length=0,r.clear()}return{addRoute:a,resolve:l,removeRoute:o,clearRoutes:u,getRoutes:s,getRecordMatcher:i}}function We(e,t){let n={};for(let r of t)r in e&&(n[r]=e[r]);return n}function Ge(e){let t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:Ke(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:`components`in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function Ke(e){let t={},n=e.props||!1;if(`component`in e)t.default=n;else for(let r in e.components)t[r]=typeof n==`object`?n[r]:n;return t}function qe(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function Je(e){return e.reduce((e,t)=>y(e,t.meta),{})}function Ye(e,t){let n=0,r=t.length;for(;n!==r;){let i=n+r>>1;ze(e,t[i])<0?r=i:n=i+1}let i=Xe(e);return i&&(r=t.lastIndexOf(i,r-1)),r}function Xe(e){let t=e;for(;t=t.parent;)if(Ze(t)&&ze(e,t)===0)return t}function Ze({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function Qe(e){let t=r(h),n=r(m),i=l(()=>{let n=u(e.to);return t.resolve(n)}),a=l(()=>{let{matched:e}=i.value,{length:t}=e,r=e[t-1],a=n.matched;if(!r||!a.length)return-1;let o=a.findIndex(V.bind(null,r));if(o>-1)return o;let s=rt(e[t-2]);return t>1&&rt(r)===s&&a[a.length-1].path!==s?a.findIndex(V.bind(null,e[t-2])):o}),o=l(()=>a.value>-1&&nt(n.params,i.value.params)),s=l(()=>a.value>-1&&a.value===n.matched.length-1&&H(n.params,i.value.params));function c(n={}){if(tt(n)){let n=t[u(e.replace)?`replace`:`push`](u(e.to)).catch(w);return e.viewTransition&&typeof document<`u`&&`startViewTransition`in document&&document.startViewTransition(()=>n),n}return Promise.resolve()}return{route:i,href:l(()=>i.value.href),isActive:o,isExactActive:s,navigate:c}}function $e(e){return e.length===1?e[0]:e}var et=o({name:`RouterLink`,compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:`page`},viewTransition:Boolean},useLink:Qe,setup(e,{slots:t}){let i=s(Qe(e)),{options:a}=r(h),o=l(()=>({[it(e.activeClass,a.linkActiveClass,`router-link-active`)]:i.isActive,[it(e.exactActiveClass,a.linkExactActiveClass,`router-link-exact-active`)]:i.isExactActive}));return()=>{let r=t.default&&$e(t.default(i));return e.custom?r:n(`a`,{"aria-current":i.isExactActive?e.ariaCurrentValue:null,href:i.href,onClick:i.navigate,class:o.value},r)}}});function tt(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){let t=e.currentTarget.getAttribute(`target`);if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function nt(e,t){for(let n in t){let r=t[n],i=e[n];if(typeof r==`string`){if(r!==i)return!1}else if(!_(i)||i.length!==r.length||r.some((e,t)=>e.valueOf()!==i[t].valueOf()))return!1}return!0}function rt(e){return e?e.aliasOf?e.aliasOf.path:e.path:``}var it=(e,t,n)=>e??t??n,at=o({name:`RouterView`,inheritAttrs:!1,props:{name:{type:String,default:`default`},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:a}){let o=r(ee),s=l(()=>e.route||o.value),f=r(g,0),m=l(()=>{let e=u(f),{matched:t}=s.value,n;for(;(n=t[e])&&!n.components;)e++;return e}),h=l(()=>s.value.matched[m.value]);i(g,l(()=>m.value+1)),i(p,h),i(ee,s);let _=c();return d(()=>[_.value,h.value,e.name],([e,t,n],[r,i,a])=>{t&&(t.instances[n]=e,i&&i!==t&&e&&e===r&&(t.leaveGuards.size||(t.leaveGuards=i.leaveGuards),t.updateGuards.size||(t.updateGuards=i.updateGuards))),e&&t&&(!i||!V(t,i)||!r)&&(t.enterCallbacks[n]||[]).forEach(t=>t(e))},{flush:`post`}),()=>{let r=s.value,i=e.name,o=h.value,c=o&&o.components[i];if(!c)return ot(a.default,{Component:c,route:r});let l=o.props[i],u=n(c,y({},l?l===!0?r.params:typeof l==`function`?l(r):l:null,t,{onVnodeUnmounted:e=>{e.component.isUnmounted&&(o.instances[i]=null)},ref:_}));return ot(a.default,{Component:u,route:r})||u}}});function ot(e,t){if(!e)return null;let n=e(t);return n.length===1?n[0]:n}var st=at;function ct(n){let r=Ue(n.routes,n),i=n.parseQuery||be,o=n.stringifyQuery||xe,s=n.history,c=Q(),l=Q(),d=Q(),f=e(K),p=K;T&&n.scrollBehavior&&`scrollRestoration`in history&&(history.scrollRestoration=`manual`);let g=C.bind(null,e=>``+e),v=C.bind(null,ue),S=C.bind(null,I);function E(e,t){let n,i;return ye(e)?(n=r.getRecordMatcher(e),i=t):i=e,r.addRoute(i,n)}function te(e){let t=r.getRecordMatcher(e);t&&r.removeRoute(t)}function ne(){return r.getRoutes().map(e=>e.record)}function re(e){return!!r.getRecordMatcher(e)}function D(e,t){if(t=y({},t||f.value),typeof e==`string`){let n=z(i,e,t.path),a=r.resolve({path:n.path},t),o=s.createHref(n.fullPath);return y(n,a,{params:S(a.params),redirectedFrom:void 0,href:o})}let n;if(e.path!=null)n=y({},e,{path:z(i,e.path,t.path).path});else{let r=y({},e.params);for(let e in r)r[e]??delete r[e];n=y({},e,{params:v(r)}),t.params=v(t.params)}let a=r.resolve(n,t),c=e.hash||``;a.params=g(S(a.params));let l=de(o,y({},e,{hash:ce(c),path:a.path})),u=s.createHref(l);return y({fullPath:l,hash:c,query:o===xe?Se(e.query):e.query||{}},a,{redirectedFrom:void 0,href:u})}function O(e){return typeof e==`string`?z(i,e,f.value.path):y({},e)}function ie(e,t){if(p!==e)return x(8,{from:t,to:e})}function k(e){return A(e)}function ae(e){return k(y(O(e),{replace:!0}))}function oe(e,t){let n=e.matched[e.matched.length-1];if(n&&n.redirect){let{redirect:r}=n,i=typeof r==`function`?r(e,t):r;return typeof i==`string`&&(i=i.includes(`?`)||i.includes(`#`)?i=O(i):{path:i},i.params={}),y({query:e.query,hash:e.hash,params:i.path==null?e.params:{}},i)}}function A(e,t){let n=p=D(e),r=f.value,i=e.state,a=e.force,s=e.replace===!0,c=oe(n,r);if(c)return A(y(O(c),{state:typeof c==`object`?y({},i,c.state):i,force:a,replace:s}),t||n);let l=n;l.redirectedFrom=t;let u;return!a&&fe(o,r,n)&&(u=x(16,{to:l,from:r}),W(r,r,!0,!1)),(u?Promise.resolve(u):M(l,r)).catch(e=>b(e)?b(e,2)?e:U(e):V(e,l,r)).then(e=>{if(e){if(b(e,2))return A(y({replace:s},O(e.to),{state:typeof e.to==`object`?y({},i,e.to.state):i,force:a}),t||l)}else e=P(l,r,!0,s,i);return N(l,r,e),e})}function se(e,t){let n=ie(e,t);return n?Promise.reject(n):Promise.resolve()}function j(e){let t=J.values().next().value;return t&&typeof t.runWithContext==`function`?t.runWithContext(e):e()}function M(e,t){let n,[r,i,a]=we(e,t);n=Ce(r.reverse(),`beforeRouteLeave`,e,t);for(let i of r)i.leaveGuards.forEach(r=>{n.push($(r,e,t))});let o=se.bind(null,e,t);return n.push(o),X(n).then(()=>{n=[];for(let r of c.list())n.push($(r,e,t));return n.push(o),X(n)}).then(()=>{n=Ce(i,`beforeRouteUpdate`,e,t);for(let r of i)r.updateGuards.forEach(r=>{n.push($(r,e,t))});return n.push(o),X(n)}).then(()=>{n=[];for(let r of a)if(r.beforeEnter)if(_(r.beforeEnter))for(let i of r.beforeEnter)n.push($(i,e,t));else n.push($(r.beforeEnter,e,t));return n.push(o),X(n)}).then(()=>(e.matched.forEach(e=>e.enterCallbacks={}),n=Ce(a,`beforeRouteEnter`,e,t,j),n.push(o),X(n))).then(()=>{n=[];for(let r of l.list())n.push($(r,e,t));return n.push(o),X(n)}).catch(e=>b(e,8)?e:Promise.reject(e))}function N(e,t,n){d.list().forEach(r=>j(()=>r(e,t,n)))}function P(e,t,n,r,i){let a=ie(e,t);if(a)return a;let o=t===K,c=T?history.state:{};n&&(r||o?s.replace(e.fullPath,y({scroll:o&&c&&c.scroll},i)):s.push(e.fullPath,i)),f.value=e,W(e,t,n,o),U()}let F;function le(){F||=s.listen((e,t,n)=>{if(!Y.listening)return;let r=D(e),i=oe(r,Y.currentRoute.value);if(i){A(y(i,{replace:!0,force:!0}),r).catch(w);return}p=r;let a=f.value;T&&ge(me(a.fullPath,n.delta),Z()),M(r,a).catch(e=>b(e,12)?e:b(e,2)?(A(y(O(e.to),{force:!0}),r).then(e=>{b(e,20)&&!n.delta&&n.type===`pop`&&s.go(-1,!1)}).catch(w),Promise.reject()):(n.delta&&s.go(-n.delta,!1),V(e,r,a))).then(e=>{e||=P(r,a,!1),e&&(n.delta&&!b(e,8)?s.go(-n.delta,!1):n.type===`pop`&&b(e,20)&&s.go(-1,!1)),N(r,a,e)}).catch(w)})}let L=Q(),R=Q(),B;function V(e,t,n){U(e);let r=R.list();return r.length?r.forEach(r=>r(e,t,n)):console.error(e),Promise.reject(e)}function H(){return B&&f.value!==K?Promise.resolve():new Promise((e,t)=>{L.add([e,t])})}function U(e){return B||(B=!e,le(),L.list().forEach(([t,n])=>e?n(e):t()),L.reset()),e}function W(e,r,i,a){let{scrollBehavior:o}=n;if(!T||!o)return Promise.resolve();let s=!i&&_e(me(e.fullPath,0))||(a||!i)&&history.state&&history.state.scroll||null;return t().then(()=>o(e,r,s)).then(t=>e===f.value&&t&&pe(t)).catch(t=>e===f.value&&V(t,e,r))}let G=e=>s.go(e),q,J=new Set,Y={currentRoute:f,listening:!0,addRoute:E,removeRoute:te,clearRoutes:r.clearRoutes,hasRoute:re,getRoutes:ne,resolve:D,options:n,push:k,replace:ae,go:G,back:()=>G(-1),forward:()=>G(1),beforeEach:c.add,beforeResolve:l.add,afterEach:d.add,onError:R.add,isReady:H,install(e){e.component(`RouterLink`,et),e.component(`RouterView`,st),e.config.globalProperties.$router=Y,Object.defineProperty(e.config.globalProperties,"$route",{enumerable:!0,get:()=>u(f)}),T&&!q&&f.value===K&&(q=!0,k(s.location).catch(e=>{}));let t={};for(let e in K)Object.defineProperty(t,e,{get:()=>f.value[e],enumerable:!0});e.provide(h,Y),e.provide(m,a(t)),e.provide(ee,f);let n=e.unmount;J.add(e),e.unmount=function(){J.delete(e),J.size<1&&(p=K,F&&F(),F=null,f.value=K,q=!1,B=!1),n()}}};function X(e){return e.reduce((e,t)=>e.then(()=>j(t)),Promise.resolve())}return Y}export{Ae as i,st as n,ct as r,et as t};
@@ -9,21 +9,23 @@
9
9
  />
10
10
  <link rel="icon" type="image/png" href="/assets/fuli-logo-ER1wQ8Kk.png" />
11
11
  <title>复利 · Context Graph</title>
12
- <script type="module" crossorigin src="/assets/index-Dioqmmvf.js"></script>
13
- <link rel="modulepreload" crossorigin href="/assets/i18n-BkJjUsz_.js">
14
- <link rel="modulepreload" crossorigin href="/assets/client-v8XKgQji.js">
15
- <link rel="modulepreload" crossorigin href="/assets/console-C9HS-zbd.js">
12
+ <script type="module" crossorigin src="/assets/index-MKmHNBtc.js"></script>
13
+ <link rel="modulepreload" crossorigin href="/assets/i18n-BtOOoyJd.js">
14
+ <link rel="modulepreload" crossorigin href="/assets/client-CEHkJJ-5.js">
15
+ <link rel="modulepreload" crossorigin href="/assets/console--CZxc3PW.js">
16
16
  <link rel="modulepreload" crossorigin href="/assets/_plugin-vue_export-helper-BDNMzG2s.js">
17
- <link rel="modulepreload" crossorigin href="/assets/GrowthLoading-CCYPgE2f.js">
18
- <link rel="modulepreload" crossorigin href="/assets/useApi-CROJJdhE-BBUO_YEu.js">
19
- <link rel="modulepreload" crossorigin href="/assets/vue-router-Cw4QZxM1.js">
17
+ <link rel="modulepreload" crossorigin href="/assets/GrowthLoading-Bu_kH-I8.js">
18
+ <link rel="modulepreload" crossorigin href="/assets/useApi-CROJJdhE-raNlHRDl.js">
19
+ <link rel="modulepreload" crossorigin href="/assets/vue-router-JFYBLXB1.js">
20
20
  <link rel="modulepreload" crossorigin href="/assets/fuli-logo-Bu9WBuQe.js">
21
- <link rel="modulepreload" crossorigin href="/assets/AgentHand-D5pOgVjJ.js">
22
- <link rel="modulepreload" crossorigin href="/assets/useModalDialog-DrLhqtjR.js">
21
+ <link rel="modulepreload" crossorigin href="/assets/catalog-DU4Kfd-N.js">
22
+ <link rel="modulepreload" crossorigin href="/assets/AgentHand-CMZk5GjY.js">
23
+ <link rel="modulepreload" crossorigin href="/assets/profile-model-BQO4zNs9.js">
24
+ <link rel="modulepreload" crossorigin href="/assets/useModalDialog-CroGk2Cs.js">
23
25
  <link rel="modulepreload" crossorigin href="/assets/paths-CDREouhi.js">
24
26
  <link rel="stylesheet" crossorigin href="/assets/GrowthLoading-B_Hh0CRS.css">
25
- <link rel="stylesheet" crossorigin href="/assets/AgentHand-DvdNtJ3_.css">
26
- <link rel="stylesheet" crossorigin href="/assets/index-CwjxeHGk.css">
27
+ <link rel="stylesheet" crossorigin href="/assets/AgentHand-D9sQu2vc.css">
28
+ <link rel="stylesheet" crossorigin href="/assets/index-CWMqDq8g.css">
27
29
  <link rel="stylesheet" crossorigin href="/assets/employee-dialog-Bh5ccIbK.css">
28
30
  </head>
29
31
  <body>
@@ -0,0 +1,115 @@
1
+ # 对话与协作
2
+
3
+ Agent ID 是持久身份,Codex、Claude Code 等客户端是工作入口。对话保存在现有
4
+ Neo4j Provider 的独立日志中;工作记忆继续保存经过整理的决策和待办。
5
+
6
+ ## 默认行为
7
+
8
+ | 设置 | 默认 | 含义 |
9
+ | --- | --- | --- |
10
+ | 不活跃归档 | 7 天 | 按最后一条新事件计算;重试不延长活跃期 |
11
+ | 自动恢复预算 | 2000 UTF-8 字节 | 保守内容上限,不是计费 token;可配 512–16000 |
12
+ | 自动恢复 | 摘要 + 最近消息 | 新 chat 恢复同一 Agent、同一项目的最近上下文 |
13
+ | 归档恢复 | 摘要 | 原始记录仍在数据库,可分页补读 |
14
+ | 原始记录保存 | gzip 压缩 | 归档不删除原文,也不调用模型生成摘要 |
15
+
16
+ 7 天内已成功采集的记录保持可读,不把 7 天的原文全部塞进每次提示词。摘要复用任务结束时
17
+ 已经生成的工作结果;工具输出不自动注入恢复上下文。没有提交摘要的历史明确保留
18
+ 空摘要,需要时补读,不生成虚构摘要。当前任务提示及宿主可见消息各有来源记录。
19
+ 敏感凭据命中检测时整条内容替换为省略标记,因此“原始记录”是已过滤的可见记录。
20
+
21
+ 入口中的偏好保留完整指令,去掉重复证据包装。长期记忆只返回预览;更新前必须
22
+ 调用 `get_project_agent_memory` 读取完整版本并按 revision 合并。
23
+
24
+ ## 从一个客户端继续到另一个
25
+
26
+ 1. 任务结束返回 Agent、真实完成状态、`conversation_id` 及保存结果。
27
+ 2. 在另一个客户端选择同一项目、同一 Agent,取得当前 `taskContextToken`。
28
+ 3. 调用 `resume_agent_conversation`,传入该 token 和 `conversationId`。
29
+ 4. 从有预算的上下文继续;需要细节再调用 `read_agent_conversation`。
30
+
31
+ 接续不会搬运客户端工具状态或文件系统。项目任职、客户端允许列表和个人空间授权
32
+ 始终生效。来自另一项目的员工仅获得目标项目的任务简报,不自动获得来源项目私有记忆。
33
+ 历史内容是上下文数据,不能覆盖当前用户指令。
34
+
35
+ ## 采集与失败恢复
36
+
37
+ Codex 和 Claude Code 的 `UserPromptSubmit`、`Stop` 命令适配器读取宿主提供的当前
38
+ JSONL transcript。只支持各适配器明确识别的可见文本、工具调用和结果;不采集隐藏
39
+ 推理、系统提示,附件二进制及未识别宿主事件不在当前覆盖范围。其他客户端暂保留
40
+ 任务关联与工作摘要,不宣称已自动同步完整原文。入口只恢复上下文、关联会话,
41
+ 可见消息统一由转录采集写入,避免同一句提示词被入口和 Hook 重复保存。
42
+
43
+ 首次采集从当前任务起点开始,不导入安装前历史。记录使用稳定事件 ID 去重;游标
44
+ 与事件在同一事务提交。普通未完成行等待下一次 Hook;数据库失败不推进游标。
45
+ 超过单条记录限制的内容保存明确省略标记,超长原生行按有界片段推进,后续记录仍可
46
+ 继续采集。敏感内容、超限记录、附件和未支持的事件不属于“全部原文已保存”。
47
+
48
+ 切换 Agent/项目先验证提示词边界,再把此前记录提交给旧 Agent;每个阶段每次最多
49
+ 8 页,每页最多 50 条、512 KiB。超过批次会明确阻断本次入口,要求重试,并从已保存
50
+ 进度继续。完整 EOF 只有在待同步片段未出现未验证用户消息或省略内容时,才可作为
51
+ 宿主尚未写入新提示词的前置边界;不能仅凭到达 EOF 就认定已找到当前提示词。
52
+ 若到达 EOF 仍有归属不明的消息,保留宿主原文件;之后找到确定边界时,对这段内容
53
+ 写省略标记,不把它猜测归入旧 Agent。若宿主始终不写入被阻断的提示词或改变了
54
+ 其文本,入口会提示新建宿主会话并显式恢复目标 Agent,不能无限重试后猜测放行。
55
+
56
+ 本地仅保留权限为 0600 的原子 guard 文件,包含会话/任务/提示词的不可逆 hash 和
57
+ 扫描游标,不保存原始提示词、转录路径或另一份对话日志。同会话 Hook 由短生命周期
58
+ 的 loopback 互斥监听串行保护,不提供任何数据;进程退出后锁自动释放,端口冲突时
59
+ 安全阻断并提示重试;若持续被其他本地进程占用,可新建宿主会话并恢复目标 Agent。`Stop` 遇到待切换 guard 只续扫或提交已验证边界之前的旧尾部,
60
+ 不会将当前新提示词写入旧 Agent,也不替用户开启新任务。
61
+
62
+ 正常中断可在同一入口重试继续;`begin_task_context` 成功但边界绑定失败时,只有
63
+ 保存的新任务 hash 与当前任务一致才能重试绑定。极小窗口内若进程死于任务创建成功、
64
+ 新 hash 尚未保存之间,将明确要求新建宿主会话:重新选择目标项目和 Agent,使用已
65
+ 保存的 `conversation_id` 调用 `resume_agent_conversation`,再继续工作。原会话不确定
66
+ 尾部保留在宿主,不自动导入;不要删除 guard 后强制把旧转录绑定到新 Agent。这些
67
+ 降级情况需要重试或显式恢复,不宣称无缝接续。
68
+
69
+ 客户端版本必须提供受支持的 Hook 与 transcript 格式;重新接入后需进行真实会话
70
+ 验收。数据库和解析器测试不等于已验证所有客户端版本。
71
+
72
+ ## 小组长与借调
73
+
74
+ `plan_agent_collaboration` 用职责、能力、任务类型和工作负载推荐成员,优先本项目。
75
+ 目标组长通过 `request_agent_loan` 发起借调,来源组长在自己的项目上下文中通过
76
+ `decide_agent_loan` 确认。数据库创建目标项目中的独立任职;任务完成、失败或取消
77
+ 自动归还,也支持组长提前结束。固定小组不因临时借调而扩大。
78
+
79
+ 借调成功后仍需 `coordinate_project_agent_task` 明确参与者,再由已授权客户端实际
80
+ 启动 worker。控制面只提供计划、权限和记录,模型推荐、借调批准都不代表已执行。
81
+
82
+ ## 模型和验证
83
+
84
+ 自适应策略按简单、普通、复杂任务映射到 fast、balanced、deep。显式用户策略、
85
+ 模型与执行器锁保留。注册执行器的预检模型可提供 `capabilityTier`(1–3)和
86
+ `costRank`(非负相对成本);等级是本系统的配置约定,不冒充模型厂商能力评测。
87
+ 选择通过授权、预检、工作区权限和健康检查的模型,在满足能力要求后选择成本较低者。
88
+ 缺少能力证据时质量门禁阻塞,不凭模型名称猜测。
89
+
90
+ 验证先报告实际 executor run,绑定 `artifactRevision`,再调用
91
+ `record_agent_verification`,提供相同 run、模型、版本和测试证据引用。同一 run
92
+ 不能重复计次。连续两次同档验证失败提高能力下限;最高档连续失败需人工处理。
93
+ 旧版本验证不能放行新版本。新协调任务只有当前产物验证通过后才能标为完成;
94
+ 历史任务保持兼容。验证证据由宿主报告,Provider 不伪装成自己执行了测试。
95
+ 后来提交的产物验证失败会关闭任务完成门禁;旧版本的通过证据仍可查询,但不能
96
+ 静默用旧结果放行当前任务。修复后的目标版本需重新验证通过。
97
+
98
+ 验证客户端优先应用用户已有项目/全局规则。没有规则且有多个已授权候选时,规划
99
+ 返回一次可选选择及 15 秒期限,宿主可询问用户:仅本项目还是全部项目。未回答时
100
+ 只使用当前任务默认项,不写入永久偏好、不扩大权限。这里返回的是宿主交互协议,
101
+ 不是服务器后台弹窗或自动倒计时执行器。未注册软件不能因被检测到就自动获得权限。
102
+
103
+ ## 界面
104
+
105
+ 默认突出负责人、状态和当前工作;对话按需展开。执行器、路由、学习和技术明细
106
+ 收在高级区域。记忆设置提供归档天数、恢复预算及采集开关,读取失败可重试。
107
+
108
+ ## 设计参考与验证
109
+
110
+ - [LangGraph stores](https://github.com/langchain-ai/docs/blob/main/src/oss/langgraph/stores.mdx):区分会话状态与长期记忆。
111
+ - [Letta Agent File](https://github.com/letta-ai/agent-file):分开历史记录与送入模型的上下文。
112
+ - [OpenHands event store](https://github.com/OpenHands/software-agent-sdk/blob/main/openhands-sdk/openhands/sdk/conversation/event_store.py):事件日志与恢复。
113
+
114
+ 当前实现的 7 天、字节预算、能力档位、两次失败和 15 秒期限是产品配置选择,
115
+ 不是以上项目的默认配置。数据库集成测试只使用一次性本机数据库和合成数据。