fuli-context 0.12.4 → 0.20.0-beta.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/dist/web/assets/{AboutPage-DKsgqteA.js → AboutPage-DC3Eu95G.js} +1 -1
  2. package/dist/web/assets/{AgentHand-B5lezlek.js → AgentHand-Bex3jrOr.js} +1 -1
  3. package/dist/web/assets/{AgentName-C-V41xs0.js → AgentName-E3TrVNIR.js} +1 -1
  4. package/dist/web/assets/AgentProfilePage-pHzDx457.js +1 -0
  5. package/dist/web/assets/{AgentsDirectoryPage-IgN5QEdW.js → AgentsDirectoryPage-itsP9chX.js} +1 -1
  6. package/dist/web/assets/{ConnectionsPage-CXtNiTEF.js → ConnectionsPage-D0L5VcbN.js} +1 -1
  7. package/dist/web/assets/{EmployeeRecruitDialog-o6eyMw2g.js → EmployeeRecruitDialog-DcYqq75q.js} +1 -1
  8. package/dist/web/assets/{EmployeeWorkbenchPage-4EnGLauW.js → EmployeeWorkbenchPage-BDN6whBV.js} +1 -1
  9. package/dist/web/assets/{KnowledgeEditDialog-BlBd6Xql.js → KnowledgeEditDialog-BnFbCSK7.js} +1 -1
  10. package/dist/web/assets/{KnowledgeInspector-Dl7SAgaY.js → KnowledgeInspector-u0HypEW7.js} +1 -1
  11. package/dist/web/assets/{KnowledgeOrganizerPage-CpH4x6UA.js → KnowledgeOrganizerPage-B3GoSV-E.js} +1 -1
  12. package/dist/web/assets/KnowledgePage-DrRnvfrO.js +1 -0
  13. package/dist/web/assets/{KnowledgeWorkspace-4q_HfXas.js → KnowledgeWorkspace-_wWZQw_h.js} +1 -1
  14. package/dist/web/assets/{NotFoundPage-DtmfJSGx.js → NotFoundPage-BcPx7tfG.js} +1 -1
  15. package/dist/web/assets/{OverviewPage-C1zw_8_6.js → OverviewPage-C2jrJWDc.js} +1 -1
  16. package/dist/web/assets/{PersonalProfilePage-tQyS7qsa.js → PersonalProfilePage-DkOcops6.js} +1 -1
  17. package/dist/web/assets/PersonalProjectsPage-uJXnueKw.js +1 -0
  18. package/dist/web/assets/{ProjectAgentFirstTask-Caf7c6F_.js → ProjectAgentFirstTask-Cwto-bOU.js} +1 -1
  19. package/dist/web/assets/ProjectAgentsPage-DDuhJnAH.js +12 -0
  20. package/dist/web/assets/{ProjectAgentsPage-DWGkgIsr.css → ProjectAgentsPage-VYiEOpFJ.css} +1 -1
  21. package/dist/web/assets/{ProjectScopePicker-NyqcG6Iz.js → ProjectScopePicker-Bc7A6Rdj.js} +1 -1
  22. package/dist/web/assets/{PublicProjectsPage-CYwQLZmy.js → PublicProjectsPage-KvmU4tDo.js} +1 -1
  23. package/dist/web/assets/{ReviewPage-EyuAtIOq.js → ReviewPage-BfKG8Hgw.js} +1 -1
  24. package/dist/web/assets/{RoundtablesPage-JVBXsJrs.js → RoundtablesPage-IXKQq62P.js} +1 -1
  25. package/dist/web/assets/SettingsPage-6FZ7_3-X.css +1 -0
  26. package/dist/web/assets/SettingsPage-Clhe1bei.js +1 -0
  27. package/dist/web/assets/{SharedJefaReportPage-DFy5Ty7o.js → SharedJefaReportPage-B55966fF.js} +1 -1
  28. package/dist/web/assets/TaskExecutionPlan-BuEIInIV.css +1 -0
  29. package/dist/web/assets/TaskExecutionPlan-ZoOE8Ltc.js +2 -0
  30. package/dist/web/assets/{UiButton-neeym_gA.js → UiButton-DYcQLYXP.js} +1 -1
  31. package/dist/web/assets/{UiDialog-BFVoqFnc.js → UiDialog-D70VuNpZ.js} +1 -1
  32. package/dist/web/assets/{UiDisclosure-B-T7BmB5.js → UiDisclosure-CaeBp1mn.js} +1 -1
  33. package/dist/web/assets/{UiSegmented-D_kyRKDw.js → UiSegmented-DpXRULl-.js} +1 -1
  34. package/dist/web/assets/{UiSelect-DDyct4mf.js → UiSelect-Alpe2iY3.js} +1 -1
  35. package/dist/web/assets/{WritingTastePage-BPRq6kJ6.js → WritingTastePage-BwNCyys9.js} +1 -1
  36. package/dist/web/assets/{agent-pins-6LRHTMF6.js → agent-pins-DbcPCnxU.js} +1 -1
  37. package/dist/web/assets/{agent-profile-UgNiXgpU.css → agent-profile-DTn-2VAG.css} +1 -1
  38. package/dist/web/assets/{agent-work-summary-C-yW7x7A.js → agent-work-summary-DRJy9v48.js} +1 -1
  39. package/dist/web/assets/{attention-store-BGHyzWfv.js → attention-store-AfhjzTC5.js} +1 -1
  40. package/dist/web/assets/{catalog-kb-cA8t6.js → catalog-ykylXINx.js} +1 -1
  41. package/dist/web/assets/{client-DodUFQDp.js → client-mT6kHxUd.js} +1 -1
  42. package/dist/web/assets/{console-C2Lfifq-.js → console-CDOkjZU8.js} +1 -1
  43. package/dist/web/assets/{conversation-launcher-settings-CowfVz7l.js → conversation-launcher-settings-CJfHOqqX.js} +1 -1
  44. package/dist/web/assets/{i18n-B4Fp9Oa5.js → i18n-DUTWmrzf.js} +3 -3
  45. package/dist/web/assets/{identity-DG_za-J7.js → identity-CAQk8V-Q.js} +1 -1
  46. package/dist/web/assets/{index-RxlM8aQV.js → index-DSUd-aqC.js} +3 -3
  47. package/dist/web/assets/{judgment-types-DRqrjStd.js → judgment-types-aERVgHxJ.js} +1 -1
  48. package/dist/web/assets/{model-C0eHDNsF.js → model-DiN6uWZA.js} +1 -1
  49. package/dist/web/assets/{personal-profile-graph-CHY3WYhi.js → personal-profile-graph-C6IZoTJK.js} +1 -1
  50. package/dist/web/assets/project-team-api-B3dwwoUU.js +1 -0
  51. package/dist/web/assets/{shared-report-8JFvD9TZ.js → shared-report-n864kqhr.js} +1 -1
  52. package/dist/web/assets/task-evidence-i9SDhd3E.js +1 -0
  53. package/dist/web/assets/{useAgentRoster-QDbOwtLj.js → useAgentRoster-BF8eZGbq.js} +1 -1
  54. package/dist/web/assets/{useApi-CROJJdhE-IuC5qwny.js → useApi-CROJJdhE-sOV3uq1T.js} +1 -1
  55. package/dist/web/assets/{vue-router-nZMhR3dI.js → vue-router-CBdnor1K.js} +1 -1
  56. package/dist/web/index.html +15 -15
  57. package/docs/agent-conversations-and-collaboration.md +91 -127
  58. package/docs/agent-interface-architecture.md +11 -0
  59. package/docs/client-connections.md +42 -6
  60. package/docs/project-agent-memory.md +86 -138
  61. package/graph-provider/fuli_graph/agent_conversation_models.py +1 -1
  62. package/graph-provider/fuli_graph/app.py +6 -0
  63. package/graph-provider/fuli_graph/collaboration_context.py +38 -7
  64. package/graph-provider/fuli_graph/conversation_context.py +183 -20
  65. package/graph-provider/fuli_graph/default_project_lead.py +3 -2
  66. package/graph-provider/fuli_graph/models.py +3 -0
  67. package/graph-provider/fuli_graph/project_agent_access.py +6 -4
  68. package/graph-provider/fuli_graph/project_agent_context_models.py +4 -0
  69. package/graph-provider/fuli_graph/project_agent_memory_models.py +4 -4
  70. package/graph-provider/fuli_graph/project_agent_memory_routes.py +1 -1
  71. package/graph-provider/fuli_graph/project_agent_routes.py +6 -1
  72. package/graph-provider/fuli_graph/project_agent_task_models.py +41 -1
  73. package/graph-provider/fuli_graph/project_agent_work_log.py +3 -1
  74. package/graph-provider/fuli_graph/store_agent_conversations.py +20 -7
  75. package/graph-provider/fuli_graph/store_knowledge.py +6 -0
  76. package/graph-provider/fuli_graph/store_project_agent_context.py +28 -2
  77. package/graph-provider/fuli_graph/store_project_agent_memory.py +17 -7
  78. package/graph-provider/fuli_graph/store_project_agent_task_activity.py +2 -0
  79. package/graph-provider/fuli_graph/store_project_agent_task_reads.py +3 -0
  80. package/graph-provider/fuli_graph/store_project_agent_task_staffing.py +115 -31
  81. package/graph-provider/fuli_graph/store_project_agent_tasks.py +34 -8
  82. package/graph-provider/fuli_graph/store_task_contexts.py +3 -3
  83. package/graph-provider/fuli_graph/task_context_models.py +0 -6
  84. package/graph-provider/fuli_graph/task_notifications.py +54 -0
  85. package/npm-shrinkwrap.json +13 -0
  86. package/package.json +2 -1
  87. package/skills/capturing-session-knowledge/SKILL.md +8 -0
  88. package/src/agent-tools/agent-collaboration-definitions.js +8 -2
  89. package/src/agent-tools/agent-conversation-definitions.js +5 -5
  90. package/src/agent-tools/graph-definitions.js +3 -1
  91. package/src/agent-tools/graph-handlers.js +1 -0
  92. package/src/agent-tools/interface-catalog.js +1 -0
  93. package/src/agent-tools/interface-definitions.js +2 -2
  94. package/src/agent-tools/project-agent-definitions.js +13 -0
  95. package/src/agent-tools/project-agent-memory-definitions.js +13 -5
  96. package/src/agents/claude-code/lifecycle-hook.js +17 -11
  97. package/src/agents/codex/conversation-transcript.js +2 -0
  98. package/src/agents/directory-snapshots.js +303 -0
  99. package/src/agents/identity-receipt.js +4 -2
  100. package/src/cli/mcp-command.js +1 -2
  101. package/src/conversations/current-task-lookup.js +2 -1
  102. package/src/conversations/task-context-view.js +70 -15
  103. package/src/conversations/transcript-reader.js +9 -1
  104. package/src/graphiti/agent-collaboration.js +125 -22
  105. package/src/graphiti/agent-conversations.js +7 -5
  106. package/src/graphiti/agent-knowledge-workflows.js +16 -3
  107. package/src/graphiti/collaboration-preference-projection.js +1 -0
  108. package/src/graphiti/collaboration-preference-workflow.js +15 -4
  109. package/src/graphiti/federated-application.js +14 -6
  110. package/src/graphiti/preference-task-scope.js +26 -0
  111. package/src/graphiti/project-agent-control-plane.js +21 -3
  112. package/src/graphiti/project-agent-mapping.js +2 -0
  113. package/src/graphiti/project-agent-memory.js +127 -7
  114. package/src/graphiti/project-agent-mention.js +2 -2
  115. package/src/graphiti/project-agent-task-entry.js +55 -19
  116. package/src/graphiti/project-agent-workflows.js +1 -0
  117. package/src/graphiti/provider-client.js +22 -7
  118. package/src/graphiti/task-entry-preferences.js +21 -2
  119. package/src/graphiti/task-entry-project-scope.js +10 -1
  120. package/src/graphiti/task-knowledge-recall.js +15 -2
  121. package/src/http/api-router.js +6 -0
  122. package/src/http/graph-api-router.js +11 -0
  123. package/src/http/task-events-api-router.js +34 -0
  124. package/src/judgment/routing.js +1 -1
  125. package/src/mcp/agent-tool-catalog.js +14 -0
  126. package/src/mcp/create-mcp-server.js +41 -7
  127. package/src/mcp/runtime.js +2 -1
  128. package/src/mcp/session-id.js +2 -0
  129. package/src/mcp/tool-annotations.js +1 -0
  130. package/src/mcp/tool-profiles.js +1 -0
  131. package/src/mcp/tool-result.js +4 -0
  132. package/src/server.js +2 -0
  133. package/src/setup/agent-installation-status.js +3 -0
  134. package/src/setup/claude-code-config.js +5 -1
  135. package/src/setup/client-connection.js +1 -1
  136. package/src/setup/installed-tool-profile.js +11 -0
  137. package/src/setup/paths.js +1 -0
  138. package/src/system/client-connection-status.js +163 -0
  139. package/src/system/system-service.js +19 -0
  140. package/dist/web/assets/AgentConversations-BnFsfRj3.js +0 -2
  141. package/dist/web/assets/AgentConversations-XqNEBY_2.css +0 -1
  142. package/dist/web/assets/AgentProfilePage-DjgqtOdz.js +0 -1
  143. package/dist/web/assets/KnowledgePage-C-gFr7ln.js +0 -1
  144. package/dist/web/assets/PersonalProjectsPage-Cgd_bjeK.js +0 -1
  145. package/dist/web/assets/ProjectAgentsPage-BOGkN5ZN.js +0 -12
  146. package/dist/web/assets/SettingsPage-BARo0Ds0.css +0 -1
  147. package/dist/web/assets/SettingsPage-Dfi7kl9c.js +0 -1
  148. package/dist/web/assets/project-team-api-Dfm8C4B8.js +0 -1
  149. package/dist/web/assets/task-evidence-DTiPCs7r.js +0 -1
@@ -3,8 +3,8 @@ var e=Object.defineProperty,t=(t,n)=>{let r={};for(var i in t)e(r,i,{get:t[i],en
3
3
  `)&&(xi(e,0)||di(),e.textContent=t.children)}if(d){if(_||b||!o||f&48){let t=e.tagName.includes(`-`),i=e.namespaceURI.includes(`svg`)?`svg`:e.namespaceURI.includes(`MathML`)?`mathml`:void 0;for(let a in d)if(_&&(a.endsWith(`value`)||a===`indeterminate`)||s(a)&&!O(a)||a[0]===`.`||t&&!O(a)||u&&u.includes(a)){if(vi(e,a,d[a]))continue;r(e,a,null,d[a],i,n)}}else if(d.onClick)r(e,`onClick`,null,d.onClick,void 0,n);else if(f&4&&Zt(d.style))for(let e in d.style)d.style[e]}let x;(x=d&&d.onVnodeBeforeMount)&&Ms(x,n,t),h&&mr(t,null,n,`beforeMount`),((x=d&&d.onVnodeMounted)||h||l)&&ns(()=>{x&&Ms(x,n,t),l&&g.enter(e),h&&mr(t,null,n,`mounted`)},i)}return e.nextSibling},m=(e,t,r,o,s,c,u)=>{u||=!!t.dynamicChildren;let d=t.children,p=d.length,m=!1;for(let t=0;t<p;t++){let h=u?d[t]:d[t]=Os(d[t]),g=h.type===as;e?(g&&!u&&t+1<p&&Os(d[t+1]).type===as&&(l(i(e.data.slice(h.children.length)),r,a(e)),e.data=h.children),e=f(e,h,o,s,c,u)):g&&!h.children?l(h.el=i(``),r):(m||(m=!0,xi(r,1)||di()),n(null,h,r,null,o,s,mi(r),c))}return e},h=(e,t,n,r,i,s)=>{let{slotScopeIds:c}=t;c&&(i=i?i.concat(c):c);let d=o(e),f=m(a(e),t,d,n,r,i,s);return f&&hi(f)&&f.data===`]`?a(t.anchor=f):(di(),l(t.anchor=u(`]`),d,f),f)},g=(e,t,r,i,s,l)=>{if(Ci(e,t)||di(),t.el=null,l){let t=_(e);for(;;){let n=a(e);if(n&&n!==t)c(n);else break}}let u=a(e),d=o(e);return c(e),n(null,t,d,u,r,i,mi(d),s),r&&(r.vnode.el=t.el,go(r,t.el)),u},_=(e,t=`[`,n=`]`)=>{let r=0;for(;e;)if(e=a(e),e&&hi(e)&&(e.data===t&&r++,e.data===n)){if(r===0)return a(e);r--}return e},v=(e,t,n)=>{let r=t.parentNode;r&&r.replaceChild(e,t);let i=n;for(;i;)i.vnode.el===t&&(i.vnode.el=i.subTree.el=e),i=i.parent},y=e=>e.nodeType===1&&e.tagName===`TEMPLATE`;return[d,f]}var _i=new Set([`src`,`srcset`,`href`,`poster`]);function vi(e,t,n){return _i.has(t)?e.getAttribute(t)===(n==null?null:`${n}`):!1}var yi=`data-allow-mismatch`,bi={0:`text`,1:`children`,2:`class`,3:`style`,4:`attribute`};function xi(e,t){if(t===0||t===1)for(;e&&!e.hasAttribute(yi);)e=e.parentElement;return Si(e&&e.getAttribute(yi),t)}function Si(e,t){if(e==null)return!1;if(e===``)return!0;{let n=e.split(`,`);return t===0&&n.includes(`children`)?!0:n.includes(bi[t])}}function Ci(e,t){return xi(e.parentElement,1)||wi(e)||Ti(t)}function wi(e){return e.nodeType===1&&Si(e.getAttribute(yi),1)}function Ti({props:e}){let t=e&&e[yi];return typeof t==`string`&&Si(t,1)}var Ei=le().requestIdleCallback||(e=>setTimeout(e,1)),Di=le().cancelIdleCallback||(e=>clearTimeout(e)),Oi=(e=1e4)=>t=>{let n=Ei(t,{timeout:e});return()=>Di(n)};function ki(e){let{top:t,left:n,bottom:r,right:i}=e.getBoundingClientRect(),{innerHeight:a,innerWidth:o}=window;return(t>0&&t<a||r>0&&r<a)&&(n>0&&n<o||i>0&&i<o)}var Ai=e=>(t,n)=>{let r=new IntersectionObserver(e=>{for(let n of e)if(n.isIntersecting){r.disconnect(),t();break}},e);return n(e=>{if(e instanceof Element){if(ki(e))return t(),r.disconnect(),!1;r.observe(e)}}),()=>r.disconnect()},ji=e=>t=>{if(e){let n=matchMedia(e);if(n.matches)t();else return n.addEventListener(`change`,t,{once:!0}),()=>n.removeEventListener(`change`,t)}},Mi=(e=[])=>(t,n)=>{y(e)&&(e=[e]);let r=!1,i=e=>{r||(r=!0,a(),t(),e.target.dispatchEvent(new e.constructor(e.type,e)))},a=()=>{n(t=>{for(let n of e)t.removeEventListener(n,i)})};return n(t=>{for(let n of e)t.addEventListener(n,i,{once:!0})}),a};function Ni(e,t){if(hi(e)&&e.data===`[`){let n=1,r=e.nextSibling;for(;r;){if(r.nodeType===1){if(t(r)===!1)break}else if(hi(r))if(r.data===`]`){if(--n===0)break}else r.data===`[`&&n++;r=r.nextSibling}}else t(e)}var Pi=e=>!!e.type.__asyncLoader;function Fi(e){v(e)&&(e={loader:e});let{loader:t,loadingComponent:n,errorComponent:r,delay:i=200,hydrate:a,timeout:o,suspensible:s=!0,onError:c}=e,l=null,u,d=0,f=()=>(d++,l=null,p()),p=()=>{let e;return l||(e=l=t().catch(e=>{if(e=e instanceof Error?e:Error(String(e)),c)return new Promise((t,n)=>{c(e,()=>t(f()),()=>n(e),d+1)});throw e}).then(t=>e!==l&&l?l:(t&&(t.__esModule||t[Symbol.toStringTag]===`Module`)&&(t=t.default),u=t,t)))};return ni({name:`AsyncComponentWrapper`,__asyncLoader:p,__asyncHydrate(e,t,n){let r=e.isConnected,i=!1;(t.bu||=[]).push(()=>i=!0);let o=()=>{i||!e.parentNode||r&&!e.isConnected||n()},s=a?()=>{let n=a(o,t=>Ni(e,t));n&&(t.bum||=[]).push(n)}:o;u?s():p().then(()=>!t.isUnmounted&&s())},get __asyncResolved(){return u},setup(){let e=Is;if(ii(e),u)return()=>Ii(u,e);let t=t=>{l=null,Bn(t,e,13,!r)};if(s&&e.suspense||Us)return p().then(t=>()=>Ii(t,e)).catch(e=>(t(e),()=>r?H(r,{error:e}):null));let a=an(!1),c=an(),d=an(!!i),f,m;return $i(()=>{f!=null&&clearTimeout(f),m!=null&&clearTimeout(m)}),i&&(m=setTimeout(()=>{e.isUnmounted||(d.value=!1)},i)),o!=null&&(f=setTimeout(()=>{if(!e.isUnmounted&&!a.value&&!c.value){let e=Error(`Async component timed out after ${o}ms.`);t(e),c.value=e}},o)),p().then(()=>{e.isUnmounted||(a.value=!0,e.parent&&Li(e.parent.vnode)&&e.parent.update())}).catch(n=>{if(e.isUnmounted){l=null;return}t(n),c.value=n}),()=>{if(a.value&&u)return Ii(u,e);if(c.value&&r)return H(r,{error:c.value});if(n&&!d.value)return Ii(n,e)}}})}function Ii(e,t){let{ref:n,props:r,children:i,ce:a}=t.vnode,o=H(e,r,i);return o.ref=n,o.ce=a,delete t.vnode.ce,o}var Li=e=>e.type.__isKeepAlive,Ri={name:`KeepAlive`,__isKeepAlive:!0,props:{include:[String,RegExp,Array],exclude:[String,RegExp,Array],max:[String,Number]},setup(e,{slots:t}){let n=Ls(),r=n.ctx;if(!r.renderer)return()=>{let e=t.default&&t.default();return e&&e.length===1?e[0]:e};let i=new Map,a=new Set,o=null,s=n.suspense,{renderer:{p:c,m:l,um:u,o:{createElement:d}}}=r,f=d(`div`);r.activate=(e,t,n,r,i)=>{let a=e.component;l(e,t,n,0,s),c(a.vnode,e,t,n,a,s,r,e.slotScopeIds,i),z(()=>{a.isDeactivated=!1,a.a&&ie(a.a);let t=e.props&&e.props.onVnodeMounted;t&&Ms(t,a.parent,e)},s)},r.deactivate=e=>{let t=e.component;Wo(t.m),Wo(t.a),l(e,f,null,1,s),z(()=>{t.da&&ie(t.da);let n=e.props&&e.props.onVnodeUnmounted;n&&Ms(n,t.parent,e),t.isDeactivated=!0},s)};function p(e){Wi(e),u(e,n,s,!0)}function m(e){i.forEach((t,n)=>{let r=tc(Pi(t)?t.type.__asyncResolved||{}:t.type);r&&!e(r)&&h(n)})}function h(e){let t=i.get(e);t&&(!o||!_s(t,o))?p(t):o&&Wi(o),i.delete(e),a.delete(e)}Cr(()=>[e.include,e.exclude],([e,t])=>{e&&m(t=>zi(e,t)),t&&m(e=>!zi(t,e))},{flush:`post`,deep:!0});let g=null,_=()=>{g!=null&&(Ko(n.subTree.type)?z(()=>{let e=Gi(n.subTree);e.component&&i.set(g,e)},n.subTree.suspense):i.set(g,Gi(n.subTree)))};return Yi(_),Zi(_),Qi(()=>{i.forEach(e=>{let{subTree:t,suspense:r}=n,i=Gi(t);if(e.type===i.type&&e.key===i.key){Wi(i);let e=i.component.da;e&&z(e,r);return}p(e)})}),()=>{if(g=null,!t.default)return o=null;let n=t.default(),r=n[0];if(n.length>1)return o=null,n;if(!gs(r)||!(r.shapeFlag&4)&&!(r.shapeFlag&128))return o=null,r;let s=Gi(r);if(s.type===V)return o=null,s;let c=s.type,l=tc(Pi(s)?s.type.__asyncResolved||{}:c),{include:u,exclude:d,max:f}=e;if(u&&(!l||!zi(u,l))||d&&l&&zi(d,l))return s.shapeFlag&=-257,o=s,r;let p=s.key==null?c:s.key,m=i.get(p);return s.el&&(s=ws(s),r.shapeFlag&128&&(r.ssContent=s)),g=p,m?(s.el=m.el,s.component=m.component,s.transition&&ei(s,s.transition),s.shapeFlag|=512,a.delete(p),a.add(p)):(a.add(p),f&&a.size>parseInt(f,10)&&h(a.values().next().value)),s.shapeFlag|=256,o=s,Ko(r.type)?r:s}}};function zi(e,t){return p(e)?e.some(e=>zi(e,t)):y(e)?e.split(`,`).includes(t):_(e)?(e.lastIndex=0,e.test(t)):!1}function Bi(e,t){Hi(e,`a`,t)}function Vi(e,t){Hi(e,`da`,t)}function Hi(e,t,n=Is){let r=e.__wdc||=()=>{let t=n;for(;t;){if(t.isDeactivated)return;t=t.parent}return e()};if(Ki(t,r,n),n){let e=n.parent;for(;e&&e.parent;)Li(e.parent.vnode)&&Ui(r,t,n,e),e=e.parent}}function Ui(e,t,n,r){let i=Ki(t,e,r,!0);$i(()=>{u(r[t],i)},n)}function Wi(e){e.shapeFlag&=-257,e.shapeFlag&=-513}function Gi(e){return e.shapeFlag&128?e.ssContent:e}function Ki(e,t,n=Is,r=!1){if(n){let i=n[e]||(n[e]=[]),a=t.__weh||=(...r)=>{Ze();let i=Bs(n),a=zn(t,n,e,r);return i(),Qe(),a};return r?i.unshift(a):i.push(a),a}}var qi=e=>(t,n=Is)=>{(!Us||e===`sp`)&&Ki(e,(...e)=>t(...e),n)},Ji=qi(`bm`),Yi=qi(`m`),Xi=qi(`bu`),Zi=qi(`u`),Qi=qi(`bum`),$i=qi(`um`),ea=qi(`sp`),ta=qi(`rtg`),na=qi(`rtc`);function ra(e,t=Is){Ki(`ec`,e,t)}var ia=`components`,aa=`directives`;function oa(e,t){return ua(ia,e,!0,t)||e}var sa=Symbol.for(`v-ndc`);function ca(e){return y(e)?ua(ia,e,!1)||e:e||sa}function la(e){return ua(aa,e)}function ua(e,t,n=!0,r=!1){let i=R||Is;if(i){let n=i.type;if(e===ia){let e=tc(n,!1);if(e&&(e===t||e===k(t)||e===re(k(t))))return n}let a=da(i[e]||n[e],t)||da(i.appContext[e],t);return!a&&r?n:a}}function da(e,t){return e&&(e[t]||e[k(t)]||e[re(k(t))])}function fa(e,t,n,r){let i,a=n&&n[r],o=p(e);if(o||y(e)){let n=o&&Zt(e),r=!1,s=!1;n&&(r=!$t(e),s=Qt(e),e=ft(e)),i=Array(e.length);for(let n=0,o=e.length;n<o;n++)i[n]=t(r?s?rn(nn(e[n])):nn(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(x(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}function pa(e,t){for(let n=0;n<t.length;n++){let r=t[n];if(p(r))for(let t=0;t<r.length;t++)e[r[t].name]=r[t].fn;else r&&(e[r.name]=r.key?(...e)=>{let t=r.fn(...e);return t&&(t.key=r.key),t}:r.fn)}return e}function ma(e,t,n,r,i,a){if(n??={},R.ce||R.parent&&Pi(R.parent)&&R.parent.ce){let e=a!=null&&n.key==null?l({},n,{key:a}):n,i=Object.keys(e).length>0;return t!=="default"&&(e.name=t),ls(),hs(B,null,[H(`slot`,e,r&&r())],i?-2:64)}let o=e[t];o&&o._c&&(o._d=!1);let s=ss.length;ls();let c;try{let i=o&&ha(o(n)),s=n.key||a||i&&i.key;c=hs(B,{key:(s&&!b(s)?s:`_${t}`)+(!i&&r?`_fb`:``)},i||(r?r():[]),i&&e._===1?64:-2)}catch(e){for(let e=ss.length;e>s;e--)us();throw e}finally{o&&o._c&&(o._d=!0)}return!i&&c.scopeId&&(c.slotScopeIds=[c.scopeId+`-s`]),c}function ha(e){return e.some(e=>!gs(e)||!(e.type===V||e.type===B&&!ha(e.children)))?e:null}function ga(e,t){let n={};for(let r in e)n[t&&/[A-Z]/.test(r)?`on:${r}`:j(r)]=e[r];return n}var _a=e=>e?Hs(e)?ec(e):_a(e.parent):null,va=l(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=>_a(e.parent),$root:e=>_a(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Ha(e),$forceUpdate:e=>e.f||=()=>{Zn(e.update)},$nextTick:e=>e.n||=Yn.bind(e.proxy),$watch:e=>Tr.bind(e)}),ya=(e,t)=>e!==r&&!e.__isScriptSetup&&f(e,t),ba={get({_:e},t){if(t===`__v_skip`)return!0;let{ctx:n,setupState:i,data:a,props:o,accessCache:s,type:c,appContext:l}=e;if(t[0]!==`$`){let e=s[t];if(e!==void 0)switch(e){case 1:return i[t];case 2:return a[t];case 4:return n[t];case 3:return o[t]}else if(ya(i,t))return s[t]=1,i[t];else if(a!==r&&f(a,t))return s[t]=2,a[t];else if(f(o,t))return s[t]=3,o[t];else if(n!==r&&f(n,t))return s[t]=4,n[t];else La&&(s[t]=0)}let u=va[t],d,p;if(u)return t===`$attrs`&&ct(e.attrs,`get`,``),u(e);if((d=c.__cssModules)&&(d=d[t]))return d;if(n!==r&&f(n,t))return s[t]=4,n[t];if(p=l.config.globalProperties,f(p,t))return p[t]},set({_:e},t,n){let{data:i,setupState:a,ctx:o}=e;return ya(a,t)?(a[t]=n,!0):i!==r&&f(i,t)?(i[t]=n,!0):f(e.props,t)||t[0]===`$`&&t.slice(1)in e?!1:(o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:i,appContext:a,props:o,type:s}},c){let l;return!!(n[c]||e!==r&&c[0]!==`$`&&f(e,c)||ya(t,c)||f(o,c)||f(i,c)||f(va,c)||f(a.config.globalProperties,c)||(l=s.__cssModules)&&l[c])},defineProperty(e,t,n){return n.get==null?f(n,`value`)&&this.set(e,t,n.value,null):e._.accessCache[t]=0,Reflect.defineProperty(e,t,n)}},xa=l({},ba,{get(e,t){if(t!==Symbol.unscopables)return ba.get(e,t,e)},has(e,t){return t[0]!==`_`&&!ue(t)}});function Sa(){return null}function Ca(){return null}function wa(e){}function Ta(e){}function Ea(){return null}function Da(){}function Oa(e,t){return null}function ka(){return ja(`useSlots`).slots}function Aa(){return ja(`useAttrs`).attrs}function ja(e){let t=Ls();return t.setupContext||=$s(t)}function Ma(e){return p(e)?e.reduce((e,t)=>(e[t]=null,e),{}):e}function Na(e,t){let n=Ma(e);for(let e in t){if(e.startsWith(`__skip`))continue;let r=n[e];r?p(r)||v(r)?r=n[e]={type:r,default:t[e]}:r.default=t[e]:r===null&&(r=n[e]={default:t[e]}),r&&t[`__skip_${e}`]&&(r.skipFactory=!0)}return n}function Pa(e,t){return!e||!t?e||t:p(e)&&p(t)?e.concat(t):l({},Ma(e),Ma(t))}function Fa(e,t){let n={};for(let r in e)t.includes(r)||Object.defineProperty(n,r,{enumerable:!0,get:()=>e[r]});return n}function Ia(e){let t=Ls(),n=Us,r=e();Vs(),n&&zs(!1);let i=()=>{Bs(t),n&&zs(!0)},a=()=>{Ls()!==t&&t.scope.off(),Vs(),n&&zs(!1)};return S(r)&&(r=r.catch(e=>{throw i(),Promise.resolve().then(()=>Promise.resolve().then(a)),e})),[r,()=>{i(),Promise.resolve().then(a)}]}var La=!0;function Ra(e){let t=Ha(e),n=e.proxy,r=e.ctx;La=!1,t.beforeCreate&&Ba(t.beforeCreate,e,`bc`);let{data:i,computed:o,methods:s,watch:c,provide:l,inject:u,created:d,beforeMount:f,mounted:m,beforeUpdate:h,updated:g,activated:_,deactivated:y,beforeDestroy:b,beforeUnmount:S,destroyed:C,unmounted:w,render:T,renderTracked:E,renderTriggered:D,errorCaptured:O,serverPrefetch:ee,expose:te,inheritAttrs:k,components:ne,directives:A,filters:re}=t;if(u&&za(u,r,null),s)for(let e in s){let t=s[e];v(t)&&(r[e]=t.bind(n))}if(i){let t=i.call(n,n);x(t)&&(e.data=Kt(t))}if(La=!0,o)for(let e in o){let t=o[e],i=rc({get:v(t)?t.bind(n,n):v(t.get)?t.get.bind(n,n):a,set:!v(t)&&v(t.set)?t.set.bind(n):a});Object.defineProperty(r,e,{enumerable:!0,configurable:!0,get:()=>i.value,set:e=>i.value=e})}if(c)for(let e in c)Va(c[e],r,n,e);if(l){let e=v(l)?l.call(n):l;Reflect.ownKeys(e).forEach(t=>{hr(t,e[t])})}d&&Ba(d,e,`c`);function j(e,t){p(t)?t.forEach(t=>e(t.bind(n))):t&&e(t.bind(n))}if(j(Ji,f),j(Yi,m),j(Xi,h),j(Zi,g),j(Bi,_),j(Vi,y),j(ra,O),j(na,E),j(ta,D),j(Qi,S),j($i,w),j(ea,ee),p(te))if(te.length){let t=e.exposed||={};te.forEach(e=>{Object.defineProperty(t,e,{get:()=>n[e],set:t=>n[e]=t,enumerable:!0})})}else e.exposed||={};T&&e.render===a&&(e.render=T),k!=null&&(e.inheritAttrs=k),ne&&(e.components=ne),A&&(e.directives=A),ee&&ii(e)}function za(e,t,n=a){p(e)&&(e=qa(e));for(let n in e){let r=e[n],i;i=x(r)?`default`in r?gr(r.from||n,r.default,!0):gr(r.from||n):gr(r),L(i)?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>i.value,set:e=>i.value=e}):t[n]=i}}function Ba(e,t,n){zn(p(e)?e.map(e=>e.bind(t.proxy)):e.bind(t.proxy),t,n)}function Va(e,t,n,r){let i=r.includes(`.`)?Er(n,r):()=>n[r];if(y(e)){let n=t[e];v(n)&&Cr(i,n)}else if(v(e))Cr(i,e.bind(n));else if(x(e))if(p(e))e.forEach(e=>Va(e,t,n,r));else{let r=v(e.handler)?e.handler.bind(n):t[e.handler];v(r)&&Cr(i,r,e)}}function Ha(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=>Ua(c,e,o,!0)),Ua(c,t,o)),x(t)&&a.set(t,c),c}function Ua(e,t,n,r=!1){let{mixins:i,extends:a}=t;a&&Ua(e,a,n,!0),i&&i.forEach(t=>Ua(e,t,n,!0));for(let i in t)if(!(r&&i===`expose`)){let r=Wa[i]||n&&n[i];e[i]=r?r(e[i],t[i]):t[i]}return e}var Wa={data:Ga,props:Xa,emits:Xa,methods:Ya,computed:Ya,beforeCreate:Ja,created:Ja,beforeMount:Ja,mounted:Ja,beforeUpdate:Ja,updated:Ja,beforeDestroy:Ja,beforeUnmount:Ja,destroyed:Ja,unmounted:Ja,activated:Ja,deactivated:Ja,errorCaptured:Ja,serverPrefetch:Ja,components:Ya,directives:Ya,watch:Za,provide:Ga,inject:Ka};function Ga(e,t){return t?e?function(){return l(v(e)?e.call(this,this):e,v(t)?t.call(this,this):t)}:t:e}function Ka(e,t){return Ya(qa(e),qa(t))}function qa(e){if(p(e)){let t={};for(let n=0;n<e.length;n++)t[e[n]]=e[n];return t}return e}function Ja(e,t){return e?[...new Set([].concat(e,t))]:t}function Ya(e,t){return e?l(Object.create(null),e,t):t}function Xa(e,t){return e?p(e)&&p(t)?[...new Set([...e,...t])]:l(Object.create(null),Ma(e),Ma(t??{})):t}function Za(e,t){if(!e)return t;if(!t)return e;let n=l(Object.create(null),e);for(let r in t)n[r]=Ja(e[r],t[r]);return n}function Qa(){return{app:null,config:{isNativeTag:o,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 $a=0;function eo(e,t){return function(n,r=null){v(n)||(n=l({},n)),r!=null&&!x(r)&&(r=null);let i=Qa(),a=new WeakSet,o=[],s=!1,c=i.app={_uid:$a++,_component:n,_props:r,_container:null,_context:i,_instance:null,version:cc,get config(){return i.config},set config(e){},use(e,...t){return a.has(e)||(e&&v(e.install)?(a.add(e),e.install(c,...t)):v(e)&&(a.add(e),e(c,...t))),c},mixin(e){return i.mixins.includes(e)||i.mixins.push(e),c},component(e,t){return t?(i.components[e]=t,c):i.components[e]},directive(e,t){return t?(i.directives[e]=t,c):i.directives[e]},mount(a,o,l){if(!s){let u=c._ceVNode||H(n,r);return u.appContext=i,l===!0?l=`svg`:l===!1&&(l=void 0),o&&t?t(u,a):e(u,a,l),s=!0,c._container=a,a.__vue_app__=c,ec(u.component)}},onUnmount(e){o.push(e)},unmount(){s&&(zn(o,c._instance,16),e(null,c._container),delete c._container.__vue_app__)},provide(e,t){return i.provides[e]=t,c},runWithContext(e){let t=to;to=c;try{return e()}finally{to=t}}};return c}}var to=null;function no(e,t,n=r){let i=Ls(),a=k(t),o=A(t),s=ro(e,a),c=hn((s,c)=>{let l,u=r,d;return Sr(()=>{let t=e[a];M(l,t)&&(l=t,c())}),{get(){return s(),n.get?n.get(l):l},set(e){let s=n.set?n.set(e):e;if(!M(s,l)&&!(u!==r&&M(e,u)))return;let f=i.vnode.props,p=!!(f&&(t in f||a in f||o in f)&&(`onUpdate:${t}`in f||`onUpdate:${a}`in f||`onUpdate:${o}`in f));p||(l=e,c()),i.emit(`update:${t}`,s),M(e,u)&&(M(e,s)&&!M(s,d)||p&&u!==r&&!M(s,l))&&c(),u=e,d=s}}});return c[Symbol.iterator]=()=>{let e=0;return{next(){return e<2?{value:e++?s||r:c,done:!1}:{done:!0}}}},c}var ro=(e,t)=>t===`modelValue`||t===`model-value`?e.modelModifiers:e[`${t}Modifiers`]||e[`${k(t)}Modifiers`]||e[`${A(t)}Modifiers`];function io(e,t,...n){if(e.isUnmounted)return;let i=e.vnode.props||r,a=n,o=t.startsWith(`update:`),s=o&&ro(i,t.slice(7));s&&(s.trim&&(a=n.map(e=>y(e)?e.trim():e)),s.number&&(a=a.map(oe)));let c,l=i[c=j(t)]||i[c=j(k(t))];!l&&o&&(l=i[c=j(A(t))]),l&&zn(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,zn(u,e,6,a)}}var ao=new WeakMap;function oo(e,t,n=!1){let r=n?ao:t.emitsCache,i=r.get(e);if(i!==void 0)return i;let a=e.emits,o={},s=!1;if(!v(e)){let r=e=>{let n=oo(e,t,!0);n&&(s=!0,l(o,n))};!n&&t.mixins.length&&t.mixins.forEach(r),e.extends&&r(e.extends),e.mixins&&e.mixins.forEach(r)}return!a&&!s?(x(e)&&r.set(e,null),null):(p(a)?a.forEach(e=>o[e]=null):l(o,a),x(e)&&r.set(e,o),o)}function so(e,t){return!e||!s(t)?!1:(t=t.slice(2),t=t===`Once`?t:t.replace(/Once$/,``),f(e,t[0].toLowerCase()+t.slice(1))||f(e,A(t))||f(e,t))}function co(e){let{type:t,vnode:n,proxy:r,withProxy:i,propsOptions:[a],slots:o,attrs:s,emit:l,render:u,renderCache:d,props:f,data:p,setupState:m,ctx:h,inheritAttrs:g}=e,_=cr(e),v,y;try{if(n.shapeFlag&4){let e=i||r,t=e;v=Os(u.call(t,e,d,f,m,p,h)),y=s}else{let e=t;v=Os(e.length>1?e(f,{attrs:s,slots:o,emit:l}):e(f,null)),y=t.props?s:uo(s)}}catch(t){ss.length=0,Bn(t,e,1),v=H(V)}let b=v;if(y&&g!==!1){let e=Object.keys(y),{shapeFlag:t}=b;e.length&&t&7&&(a&&e.some(c)&&(y=fo(y,a)),b=ws(b,y,!1,!0))}return n.dirs&&(b=ws(b,null,!1,!0),b.dirs=b.dirs?b.dirs.concat(n.dirs):n.dirs),n.transition&&ei(kr(b.type)&&$r(b)||b,n.transition),v=b,cr(_),v}function lo(e,t=!0){let n;for(let t=0;t<e.length;t++){let r=e[t];if(gs(r)){if(r.type!==V||r.children===`v-if`){if(n)return;n=r}}else return}return n}var uo=e=>{let t;for(let n in e)(n===`class`||n===`style`||s(n))&&((t||={})[n]=e[n]);return t},fo=(e,t)=>{let n={};for(let r in e)(!c(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function po(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?mo(r,o,l):!!o;if(c&8){let e=t.dynamicProps;for(let t=0;t<e.length;t++){let n=e[t];if(ho(o,r,n)&&!so(l,n))return!0}}}else return(i||s)&&(!s||!s.$stable)?!0:r===o?!1:r?!o||mo(r,o,l):!!o;return!1}function mo(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(ho(t,e,a)&&!so(n,a))return!0}return!1}function ho(e,t,n){let r=e[n],i=t[n];return n===`style`&&x(r)&&x(i)?!Ce(r,i):r!==i}function go({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 _o={},vo=()=>Object.create(_o),yo=e=>Object.getPrototypeOf(e)===_o;function bo(e,t,n,r=!1){let i={},a=vo();e.propsDefaults=Object.create(null),So(e,t,i,a);for(let t in e.propsOptions[0])t in i||(i[t]=void 0);n?e.props=r?i:qt(i):e.type.props?e.props=i:e.props=a,e.attrs=a}function xo(e,t,n,r){let{props:i,attrs:a,vnode:{patchFlag:o}}=e,s=I(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(so(e.emitsOptions,o))continue;let u=t[o];if(c)if(f(a,o))u!==a[o]&&(a[o]=u,l=!0);else{let t=k(o);i[t]=Co(c,s,t,u,e,!1)}else u!==a[o]&&(a[o]=u,l=!0)}}}else{So(e,t,i,a)&&(l=!0);let r;for(let a in s)(!t||!f(t,a)&&((r=A(a))===a||!f(t,r)))&&(c?n&&(n[a]!==void 0||n[r]!==void 0)&&(i[a]=Co(c,s,a,void 0,e,!0)):delete i[a]);if(a!==s)for(let e in a)(!t||!f(t,e))&&(delete a[e],l=!0)}l&&lt(e.attrs,`set`,``)}function So(e,t,n,i){let[a,o]=e.propsOptions,s=!1,c;if(t)for(let r in t){if(O(r))continue;let l=t[r],u;a&&f(a,u=k(r))?!o||!o.includes(u)?n[u]=l:(c||={})[u]=l:so(e.emitsOptions,r)||(!(r in i)||l!==i[r])&&(i[r]=l,s=!0)}if(o){let t=I(n),i=c||r;for(let r=0;r<o.length;r++){let s=o[r];n[s]=Co(a,t,s,i[s],e,!f(i,s))}}return s}function Co(e,t,n,r,i,a){let o=e[n];if(o!=null){let e=f(o,`default`);if(e&&r===void 0){let e=o.default;if(o.type!==Function&&!o.skipFactory&&v(e)){let{propsDefaults:a}=i;if(n in a)r=a[n];else{let o=Bs(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===A(n))&&(r=!0))}return r}var wo=new WeakMap;function To(e,t,n=!1){let a=n?wo:t.propsCache,o=a.get(e);if(o)return o;let s=e.props,c={},u=[],d=!1;if(!v(e)){let r=e=>{d=!0;let[n,r]=To(e,t,!0);l(c,n),r&&u.push(...r)};!n&&t.mixins.length&&t.mixins.forEach(r),e.extends&&r(e.extends),e.mixins&&e.mixins.forEach(r)}if(!s&&!d)return x(e)&&a.set(e,i),i;if(p(s))for(let e=0;e<s.length;e++){let t=k(s[e]);Eo(t)&&(c[t]=r)}else if(s)for(let e in s){let t=k(e);if(Eo(t)){let n=s[e],r=c[t]=p(n)||v(n)?{type:n}:l({},n),i=r.type,a=!1,o=!0;if(p(i))for(let e=0;e<i.length;++e){let t=i[e],n=v(t)&&t.name;if(n===`Boolean`){a=!0;break}else n===`String`&&(o=!1)}else a=v(i)&&i.name===`Boolean`;r[0]=a,r[1]=o,(a||f(r,`default`))&&u.push(t)}}let m=[c,u];return x(e)&&a.set(e,m),m}function Eo(e){return e[0]!==`$`&&!O(e)}var Do=e=>e===`_`||e===`_ctx`||e===`$stable`,Oo=e=>p(e)?e.map(Os):[Os(e)],ko=(e,t,n)=>{if(t._n)return t;let r=fr((...e)=>Oo(t(...e)),n);return r._c=!1,r},Ao=(e,t,n)=>{let r=e._ctx;for(let n in e){if(Do(n))continue;let i=e[n];if(v(i))t[n]=ko(n,i,r);else if(i!=null){let e=Oo(i);t[n]=()=>e}}},jo=(e,t)=>{let n=Oo(t);e.slots.default=()=>n},Mo=(e,t,n)=>{for(let r in t)(n||!Do(r))&&(e[r]=t[r])},No=(e,t,n)=>{let r=e.slots=vo();if(e.vnode.shapeFlag&32){let e=t._;e?(Mo(r,t,n),n&&ae(r,`_`,e,!0)):Ao(t,r)}else t&&jo(e,t)},Po=(e,t,n)=>{let{vnode:i,slots:a}=e,o=!0,s=r;if(i.shapeFlag&32){let e=t._;e?n&&e===1?o=!1:Mo(a,t,n):(o=!t.$stable,Ao(t,a)),s=t}else t&&(jo(e,t),s={default:1});if(o)for(let e in a)!Do(e)&&s[e]==null&&delete a[e]},z=ns;function Fo(e){return Lo(e)}function Io(e){return Lo(e,gi)}function Lo(e,t){let n=le();n.__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=a,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&&!_s(e,t)&&(r=ge(e),de(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 as:y(e,t,n,r);break;case V:b(e,t,n,r);break;case os:e??x(t,n,r,o);break;case B:ne(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?A(e,t,n,r,i,a,o,s,c):(d&64||d&128)&&l.process(e,t,n,r,i,a,o,s,c,ye)}u!=null&&i?ci(u,e&&e.ref,a,t||e,!t):u==null&&e&&e.ref!=null&&ci(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)T(t,n,r,i,a,o,s,c);else{let n=e.el&&e.el._isVueCE?e.el:null;try{n&&n._beginPatch(),ee(e,t,i,a,o,s,c)}finally{n&&n._endPatch()}}},T=(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&&D(e.children,d,null,r,i,Ro(e,a),s,u),_&&mr(e,null,r,`created`),E(d,e,e.scopeId,s,r),m){for(let e in m)e!==`value`&&!O(e)&&c(d,e,null,m[e],a,r);`value`in m&&c(d,`value`,null,m.value,a),(f=m.onVnodeBeforeMount)&&Ms(f,r,e)}_&&mr(e,null,r,`beforeMount`);let v=Bo(i,g);v&&g.beforeEnter(d),o(d,t,n),((f=m&&m.onVnodeMounted)||v||_)&&z(()=>{try{f&&Ms(f,r,e),v&&g.enter(d),_&&mr(e,null,r,`mounted`)}finally{}},i)},E=(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||Ko(n.type)&&(n.ssContent===t||n.ssFallback===t)){let t=i.vnode;E(e,t,t.scopeId,t.slotScopeIds,i.parent)}}},D=(e,t,n,r,i,a,o,s,c=0)=>{for(let l=c;l<e.length;l++){let c=e[l]=s?ks(e[l]):Os(e[l]);v(null,c,t,n,r,i,a,o,s)}},ee=(e,t,n,i,a,o,s)=>{let l=t.el=e.el,{patchFlag:u,dynamicChildren:d,dirs:f}=t;u|=e.patchFlag&16;let m=e.props||r,h=t.props||r,g;if(n&&zo(n,!1),(g=h.onVnodeBeforeUpdate)&&Ms(g,n,t,e),f&&mr(t,e,n,`beforeUpdate`),n&&zo(n,!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?te(e.dynamicChildren,d,l,n,i,Ro(t,a),o):s||oe(e,t,l,null,n,i,Ro(t,a),o,!1),u>0){if(u&16)k(l,m,h,n,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=t.dynamicProps;for(let t=0;t<e.length;t++){let r=e[t],i=m[r],o=h[r];(o!==i||r===`value`)&&c(l,r,i,o,a,n)}}u&1&&e.children!==t.children&&p(l,t.children)}else!s&&d==null&&k(l,m,h,n,a);((g=h.onVnodeUpdated)||f)&&z(()=>{g&&Ms(g,n,t,e),f&&mr(t,e,n,`updated`)},i)},te=(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===B||!_s(c,l)||c.shapeFlag&198)?m(c.el):n;v(c,l,u,null,r,i,a,o,!0)}},k=(e,t,n,i,a)=>{if(t!==n){if(t!==r)for(let r in t)!O(r)&&!(r in n)&&c(e,r,t[r],null,a,i);for(let r in n){if(O(r))continue;let o=n[r],s=t[r];o!==s&&r!==`value`&&c(e,r,s,o,a,i)}`value`in n&&c(e,`value`,t.value,n.value,a)}},ne=(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),D(t.children||[],n,f,i,a,s,c,l)):p>0&&p&64&&m&&e.dynamicChildren&&e.dynamicChildren.length===m.length?(te(e.dynamicChildren,m,n,i,a,s,c),(t.key!=null||i&&t===i.subTree)&&Vo(e,t,!0)):oe(e,t,n,f,i,a,s,c,l)},A=(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):re(t,n,r,i,a,o,c):j(e,t,c)},re=(e,t,n,r,i,a,o)=>{let s=e.component=Fs(e,r,i);if(Li(e)&&(s.ctx.renderer=ye),Ws(s,!1,o),s.asyncDep){if(i&&i.registerDep(s,M,o),!e.el){let r=s.subTree=H(V);b(null,r,t,n),e.placeholder=r.el}}else M(s,e,t,n,i,a,o)},j=(e,t,n)=>{let r=t.component=e.component;if(po(e,t,n))if(r.asyncDep&&!r.asyncResolved){ae(r,t,n);return}else r.next=t,r.update();else t.el=e.el,r.vnode=t},M=(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=Uo(e);if(n){t&&(t.el=c.el,ae(e,t,o)),n.asyncDep.then(()=>{z(()=>{e.isUnmounted||l()},i)});return}}let u=t,d;zo(e,!1),t?(t.el=c.el,ae(e,t,o)):t=c,n&&ie(n),(d=t.props&&t.props.onVnodeBeforeUpdate)&&Ms(d,s,t,c),zo(e,!0);let f=co(e),p=e.subTree;e.subTree=f,v(p,f,m(p.el),ge(p),e,i,a),t.el=f.el,u===null&&go(e,f.el),r&&z(r,i),(d=t.props&&t.props.onVnodeUpdated)&&z(()=>Ms(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=Pi(t);if(zo(e,!1),l&&ie(l),!m&&(o=c&&c.onVnodeBeforeMount)&&Ms(o,d,t),zo(e,!0),s&&xe){let t=()=>{e.subTree=co(e),xe(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=co(e);v(null,o,n,r,e,i,a),t.el=o.el}if(u&&z(u,i),!m&&(o=c&&c.onVnodeMounted)){let e=t;z(()=>Ms(o,d,e),i)}(t.shapeFlag&256||d&&Pi(d.vnode)&&d.vnode.shapeFlag&256)&&e.a&&z(e.a,i),e.isMounted=!0,t=n=r=null}};e.scope.on();let c=e.effect=new Pe(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=()=>Zn(u),zo(e,!0),l()},ae=(e,t,n)=>{t.component=e;let r=e.vnode.props;e.vnode=t,e.next=null,xo(e,t.props,r,n),Po(e,t.children,n),Ze(),er(e),Qe()},oe=(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){ce(l,d,n,r,i,a,o,s,c);return}else if(f&256){se(l,d,n,r,i,a,o,s,c);return}}m&8?(u&16&&he(l,i,a),d!==l&&p(n,d)):u&16?m&16?ce(l,d,n,r,i,a,o,s,c):he(l,i,a,!0):(u&8&&p(n,``),m&16&&D(d,n,r,i,a,o,s,c))},se=(e,t,n,r,a,o,s,c,l)=>{e||=i,t||=i;let u=e.length,d=t.length,f=Math.min(u,d),p;for(p=0;p<f;p++){let r=t[p]=l?ks(t[p]):Os(t[p]);v(e[p],r,n,null,a,o,s,c,l)}u>d?he(e,a,o,!0,!1,f):D(t,n,r,a,o,s,c,l,f)},ce=(e,t,n,r,a,o,s,c,l)=>{let u=0,d=t.length,f=e.length-1,p=d-1;for(;u<=f&&u<=p;){let r=e[u],i=t[u]=l?ks(t[u]):Os(t[u]);if(_s(r,i))v(r,i,n,null,a,o,s,c,l);else break;u++}for(;u<=f&&u<=p;){let r=e[f],i=t[p]=l?ks(t[p]):Os(t[p]);if(_s(r,i))v(r,i,n,null,a,o,s,c,l);else break;f--,p--}if(u>f){if(u<=p){let e=p+1,i=e<d?t[e].el:r;for(;u<=p;)v(null,t[u]=l?ks(t[u]):Os(t[u]),n,i,a,o,s,c,l),u++}}else if(u>p)for(;u<=f;)de(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?ks(t[u]):Os(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 r=e[u];if(y>=b){de(r,a,o,!0);continue}let i;if(r.key!=null)i=g.get(r.key);else for(_=h;_<=p;_++)if(C[_-h]===0&&_s(r,t[_])){i=_;break}i===void 0?de(r,a,o,!0):(C[i-h]=u+1,i>=S?S=i:x=!0,v(r,t[i],n,null,a,o,s,c,l),y++)}let w=x?Ho(C):i;for(_=w.length-1,u=b-1;u>=0;u--){let e=h+u,i=t[e],f=t[e+1],p=e+1<d?f.el||Go(f):r;C[u]===0?v(null,i,n,p,a,o,s,c,l):x&&(_<0||u!==w[_]?ue(i,n,p,2):_--)}}},ue=(e,t,n,r,i=null)=>{let{el:a,type:c,transition:l,children:u,shapeFlag:d}=e;if(d&6){ue(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,ye);return}if(c===B){o(a,t,n);for(let e=0;e<u.length;e++)ue(u[e],t,n,r);o(e.anchor,t,n);return}if(c===os){S(e,t,n);return}if(r!==2&&d&1&&l)if(r===0)l.persisted&&!a[Vr]?o(a,t,n):(l.beforeEnter(a),o(a,t,n),z(()=>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[Vr];a._isLeaving&&a[Vr](!0),l.persisted&&!e?u():r(a,()=>{u(),c&&c()})};i?i(a,u,d):d()}else o(a,t,n)},de=(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&&(Ze(),ci(s,null,n,e,!0),Qe()),p!=null&&(t.renderCache[p]=void 0),u&256){t.ctx.deactivate(e);return}let h=u&1&&f,g=!Pi(e),_;if(g&&(_=o&&o.onVnodeBeforeUnmount)&&Ms(_,t,e),u&6)me(e.component,n,r);else{if(u&128){e.suspense.unmount(n,r);return}h&&mr(e,null,t,`beforeUnmount`),u&64?e.type.remove(e,t,n,ye,r):l&&!l.hasOnce&&(a!==B||d>0&&d&64)?he(l,t,n,!1,!0):(a===B&&d&384||!i&&u&16)&&he(c,t,n),r&&fe(e)}let v=m!=null&&p==null;(g&&(_=o&&o.onVnodeUnmounted)||h||v)&&z(()=>{_&&Ms(_,t,e),h&&mr(e,null,t,`unmounted`),v&&(e.el=null)},n)},fe=e=>{let{type:t,el:n,anchor:r,transition:i}=e;if(t===B){pe(n,r);return}if(t===os){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()},pe=(e,t)=>{let n;for(;e!==t;)n=h(e),s(e),e=n;s(t)},me=(e,t,n)=>{let{bum:r,scope:i,job:a,subTree:o,um:s,m:c,a:l}=e;Wo(c),Wo(l),r&&ie(r),i.stop(),a&&(a.flags|=8,de(o,e,t,n)),s&&z(s,t),z(()=>{e.isUnmounted=!0},t)},he=(e,t,n,r=!1,i=!1,a=0)=>{for(let o=a;o<e.length;o++)de(e[o],t,n,r,i)},ge=e=>{if(e.shapeFlag&6)return ge(e.component.subTree);if(e.shapeFlag&128)return e.suspense.next();let t=h(e.anchor||e.el),n=t&&t[Or];return n?h(n):t},_e=!1,ve=(e,t,n)=>{let r;e==null?t._vnode&&(de(t._vnode,null,null,!0),r=t._vnode.component):v(t._vnode||null,e,t,null,null,null,n),t._vnode=e,_e||=(_e=!0,er(r),tr(),!1)},ye={p:v,um:de,m:ue,r:fe,mt:re,mc:D,pc:oe,pbc:te,n:ge,o:e},be,xe;return t&&([be,xe]=t(ye)),{render:ve,hydrate:be,createApp:eo(ve,be)}}function Ro({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 zo({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function Bo(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Vo(e,t,n=!1){let r=e.children,i=t.children;if(p(r)&&p(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]=ks(i[e]),a.el=t.el),!n&&a.patchFlag!==-2&&Vo(t,a)),a.type===as&&(a.patchFlag===-1&&(a=i[e]=ks(a)),a.el=t.el),a.type===V&&!a.el&&(a.el=t.el)}}function Ho(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 Uo(e){let t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Uo(t)}function Wo(e){if(e)for(let t=0;t<e.length;t++)e[t].flags|=8}function Go(e){if(e.placeholder)return e.placeholder;let t=e.component;return t?Go(t.subTree):null}var Ko=e=>e.__isSuspense,qo=0,Jo={name:`Suspense`,__isSuspense:!0,process(e,t,n,r,i,a,o,s,c,l){if(e==null)Xo(t,n,r,i,a,o,s,c,l);else{if(a&&a.deps>0&&!e.suspense.isInFallback){t.suspense=e.suspense,t.suspense.vnode=t,t.el=e.el;return}Zo(e,t,n,r,i,o,s,c,l)}},hydrate:$o,normalize:es};function Yo(e,t){let n=e.props&&e.props[t];v(n)&&n()}function Xo(e,t,n,r,i,a,o,s,c){let{p:l,o:{createElement:u}}=c,d=u(`div`),f=e.suspense=Qo(e,i,r,t,d,n,a,o,s,c);l(null,f.pendingBranch=e.ssContent,d,null,r,f,a,o),f.deps>0?(Yo(e,`onPending`),Yo(e,`onFallback`),l(null,e.ssFallback,t,n,r,null,a,o),rs(f,e.ssFallback)):f.resolve(!1,!0)}function Zo(e,t,n,r,i,a,o,s,{p:c,um:l,o:{createElement:u}}){let d=t.suspense=e.suspense;d.vnode=t,t.el=e.el;let f=t.ssContent,p=t.ssFallback,{activeBranch:m,pendingBranch:h,isInFallback:g,isHydrating:_}=d;if(h)d.pendingBranch=f,_s(h,f)?(c(h,f,d.hiddenContainer,null,i,d,a,o,s),d.deps<=0?d.resolve():g&&!_&&!d.isFallbackMountPending&&(c(m,p,n,r,i,null,a,o,s),rs(d,p))):(d.pendingId=qo++,_?(d.isHydrating=!1,d.activeBranch=h):l(h,i,d),d.deps=0,d.effects.length=0,d.hiddenContainer=u(`div`),g?(c(null,f,d.hiddenContainer,null,i,d,a,o,s),d.deps<=0?d.resolve():d.isFallbackMountPending||(c(m,p,n,r,i,null,a,o,s),rs(d,p))):m&&_s(m,f)?(c(m,f,n,r,i,d,a,o,s),d.resolve(!0)):(c(null,f,d.hiddenContainer,null,i,d,a,o,s),d.deps<=0&&d.resolve()));else if(m&&_s(m,f))c(m,f,n,r,i,d,a,o,s),rs(d,f);else if(Yo(t,`onPending`),d.pendingBranch=f,f.shapeFlag&512?d.pendingId=f.component.suspenseId:d.pendingId=qo++,c(null,f,d.hiddenContainer,null,i,d,a,o,s),d.deps<=0)d.resolve();else{let{timeout:e,pendingId:t}=d;e>0?setTimeout(()=>{d.pendingId===t&&d.fallback(p)},e):e===0&&d.fallback(p)}}function Qo(e,t,n,r,i,a,o,s,c,l,u=!1){let{p:d,m:f,um:p,n:m,o:{parentNode:h,remove:g}}=l,_,v=is(e);v&&t&&t.pendingBranch&&(_=t.pendingId,t.deps++);let y=e.props?se(e.props.timeout):void 0,b=a,x={vnode:e,parent:t,parentComponent:n,namespace:o,container:r,hiddenContainer:i,deps:0,pendingId:qo++,timeout:typeof y==`number`?y:-1,activeBranch:null,isFallbackMountPending:!1,pendingBranch:null,isInFallback:!u,isHydrating:u,isUnmounted:!1,effects:[],resolve(e=!1,n=!1){let{vnode:r,activeBranch:i,pendingBranch:o,pendingId:s,effects:c,parentComponent:l,container:u,isInFallback:d}=x,g=!1;if(x.isHydrating)x.isHydrating=!1;else if(!e){g=i&&o.transition&&o.transition.mode===`out-in`;let e=!1;g&&(i.transition.afterLeave=()=>{s===x.pendingId&&(f(o,u,a===b&&!e?m(i):a,0),$n(c),d&&r.ssFallback&&(r.ssFallback.el=null))}),i&&!x.isFallbackMountPending&&(h(i.el)===u&&(a=m(i),e=!0),p(i,l,x,!0),!g&&d&&r.ssFallback&&z(()=>r.ssFallback.el=null,x)),g||f(o,u,a,0)}x.isFallbackMountPending=!1,rs(x,o),x.pendingBranch=null,x.isInFallback=!1;let y=x.parent,S=!1;for(;y;){if(y.pendingBranch){for(let e=0;e<c.length;e++)y.effects.push(c[e]);S=!0;break}y=y.parent}!S&&!g&&$n(c),x.effects=[],v&&t&&t.pendingBranch&&_===t.pendingId&&(t.deps--,t.deps===0&&!n&&t.resolve()),Yo(r,`onResolve`)},fallback(e){if(!x.pendingBranch)return;let{vnode:t,activeBranch:n,parentComponent:r,container:i,namespace:a}=x;Yo(t,`onFallback`);let o=m(n),l=()=>{if(x.isFallbackMountPending=!1,!x.isInFallback)return;let e=x.vnode.ssFallback;d(null,e,i,o,r,null,a,s,c),rs(x,e)},u=e.transition&&e.transition.mode===`out-in`;u&&(x.isFallbackMountPending=!0,n.transition.afterLeave=l),x.isInFallback=!0,p(n,r,null,!0),u||l()},move(e,t,n){x.activeBranch&&f(x.activeBranch,e,t,n),x.container=e},next(){return x.activeBranch&&m(x.activeBranch)},registerDep(e,t,n){let r=!!x.pendingBranch;r&&x.deps++;let i=e.vnode.el;e.asyncDep.catch(t=>{Bn(t,e,0)}).then(a=>{if(e.isUnmounted||x.isUnmounted||x.pendingId!==e.suspenseId)return;Vs(),e.asyncResolved=!0;let{vnode:s}=e;Ks(e,a,!1),i&&(s.el=i);let c=!i&&e.subTree.el;t(e,s,h(i||e.subTree.el),i?null:m(e.subTree),x,o,n),c&&(s.placeholder=null,g(c)),go(e,s.el),r&&--x.deps===0&&x.resolve()})},unmount(e,t){x.isUnmounted=!0,x.activeBranch&&p(x.activeBranch,n,e,t),x.pendingBranch&&p(x.pendingBranch,n,e,t)}};return x}function $o(e,t,n,r,i,a,o,s,c){let l=t.suspense=Qo(t,r,n,e.parentNode,document.createElement(`div`),null,i,a,o,s,!0),u=c(e,l.pendingBranch=t.ssContent,n,l,a,o);return l.deps===0&&l.resolve(!1,!0),u}function es(e){let{shapeFlag:t,children:n}=e,r=t&32;e.ssContent=ts(r?n.default:n),e.ssFallback=r?ts(n.fallback):H(V)}function ts(e){let t;if(v(e)){let n=ds&&e._c;n&&(e._d=!1,ls()),e=e(),n&&(e._d=!0,t=cs,us())}return p(e)&&(e=lo(e)),e=Os(e),t&&!e.dynamicChildren&&(e.dynamicChildren=t.filter(t=>t!==e)),e}function ns(e,t){t&&t.pendingBranch?p(e)?t.effects.push(...e):t.effects.push(e):$n(e)}function rs(e,t){e.activeBranch=t;let{vnode:n,parentComponent:r}=e,i=t.el;for(;!i&&t.component;)t=t.component.subTree,i=t.el;n.el=i,r&&r.subTree===n&&(r.vnode.el=i,go(r,i))}function is(e){let t=e.props&&e.props.suspensible;return t!=null&&t!==!1}var B=Symbol.for(`v-fgt`),as=Symbol.for(`v-txt`),V=Symbol.for(`v-cmt`),os=Symbol.for(`v-stc`),ss=[],cs=null;function ls(e=!1){ss.push(cs=e?null:[])}function us(){ss.pop(),cs=ss[ss.length-1]||null}var ds=1;function fs(e,t=!1){ds+=e,e<0&&cs&&t&&(cs.hasOnce=!0)}function ps(e){return e.dynamicChildren=ds>0?cs||i:null,us(),ds>0&&cs&&cs.push(e),e}function ms(e,t,n,r,i,a){return ps(xs(e,t,n,r,i,a,!0))}function hs(e,t,n,r,i){return ps(H(e,t,n,r,i,!0))}function gs(e){return e?e.__v_isVNode===!0:!1}function _s(e,t){return e.type===t.type&&e.key===t.key}function vs(e){}var ys=({key:e})=>e??null,bs=({ref:e,ref_key:t,ref_for:n})=>(typeof e==`number`&&(e=``+e),e==null?null:y(e)||L(e)||v(e)?{i:R,r:e,k:t,f:!!n}:e);function xs(e,t=null,n=null,r=0,i=null,a=e===B?0:1,o=!1,s=!1){let c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&ys(t),ref:t&&bs(t),scopeId:sr,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:R};return s?(As(c,n),a&128&&e.normalize(c)):n&&(c.shapeFlag|=y(n)?8:16),ds>0&&!o&&cs&&(c.patchFlag>0||a&6)&&c.patchFlag!==32&&cs.push(c),c}var H=Ss;function Ss(e,t=null,n=null,r=0,i=null,a=!1){if((!e||e===sa)&&(e=V),gs(e)){let r=ws(e,t,!0);return n&&As(r,n),ds>0&&!a&&cs&&(r.shapeFlag&6?cs[cs.indexOf(e)]=r:cs.push(r)),r.patchFlag=-2,r}if(nc(e)&&(e=e.__vccOpts),t){t=Cs(t);let{class:e,style:n}=t;e&&!y(e)&&(t.class=ge(e)),x(n)&&(en(n)&&!p(n)&&(n=l({},n)),t.style=de(n))}let o=y(e)?1:Ko(e)?128:kr(e)?64:x(e)?4:v(e)?2:0;return xs(e,t,n,r,i,o,a,!0)}function Cs(e){return e?en(e)||yo(e)?l({},e):e:null}function ws(e,t,n=!1,r=!1){let{props:i,ref:a,patchFlag:o,children:s,transition:c}=e,l=t?js(i||{},t):i,u={__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&ys(l),ref:t&&t.ref?n&&a?p(a)?a.concat(bs(t)):[a,bs(t)]:bs(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!==B?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&&ws(e.ssContent),ssFallback:e.ssFallback&&ws(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&r&&ei(u,c.clone(u)),u}function Ts(e=` `,t=0){return H(as,null,e,t)}function Es(e,t){let n=H(os,null,e);return n.staticCount=t,n}function Ds(e=``,t=!1){return t?(ls(),hs(V,null,e)):H(V,null,e)}function Os(e){return e==null||typeof e==`boolean`?H(V):p(e)?H(B,null,e.slice()):gs(e)?ks(e):H(as,null,String(e))}function ks(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:ws(e)}function As(e,t){let n=0,{shapeFlag:r}=e;if(t==null)t=null;else if(p(t))n=16;else if(typeof t==`object`)if(r&65){let n=t.default;n&&(n._c&&(n._d=!1),As(e,n()),n._c&&(n._d=!0));return}else{n=32;let r=t._;!r&&!yo(t)?t._ctx=R:r===3&&R&&(R.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else if(v(t)){if(r&65){As(e,{default:t});return}t={default:t,_ctx:R},n=32}else t=String(t),r&64?(n=16,t=[Ts(t)]):n=8;e.children=t,e.shapeFlag|=n}function js(...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=ge([t.class,r.class]));else if(e===`style`)t.style=de([t.style,r.style]);else if(s(e)){let n=t[e],i=r[e];i&&n!==i&&!(p(n)&&n.includes(i))?t[e]=n?[].concat(n,i):i:i==null&&n==null&&!c(e)&&(t[e]=i)}else e!==``&&(t[e]=r[e])}return t}function Ms(e,t,n,r=null){zn(e,t,7,[n,r])}var Ns=Qa(),Ps=0;function Fs(e,t,n){let i=e.type,a=(t?t.appContext:e.appContext)||Ns,o={uid:Ps++,vnode:e,type:i,parent:t,appContext:a,root:null,next:null,subTree:null,effect:null,update:null,job:null,scope:new ke(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(a.provides),ids:t?t.ids:[``,0,0],accessCache:null,renderCache:[],components:null,directives:null,propsOptions:To(i,a),emitsOptions:oo(i,a),emit:null,emitted:null,propsDefaults:r,inheritAttrs:i.inheritAttrs,ctx:r,data:r,props:r,attrs:r,slots:r,refs:r,setupState:r,setupContext:null,suspense:n,suspenseId:n?n.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=t?t.root:o,o.emit=io.bind(null,o),e.ce&&e.ce(o),o}var Is=null,Ls=()=>Is||R,Rs,zs;{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)}};Rs=t(`__VUE_INSTANCE_SETTERS__`,e=>Is=e),zs=t(`__VUE_SSR_SETTERS__`,e=>Us=e)}var Bs=e=>{let t=Is;return Rs(e),e.scope.on(),()=>{e.scope.off(),Rs(t)}},Vs=()=>{Is&&Is.scope.off(),Rs(null)};function Hs(e){return e.vnode.shapeFlag&4}var Us=!1;function Ws(e,t=!1,n=!1){t&&zs(t);let{props:r,children:i}=e.vnode,a=Hs(e);bo(e,r,a,t),No(e,i,n||t);let o=a?Gs(e,t):void 0;return t&&zs(!1),o}function Gs(e,t){let n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,ba);let{setup:r}=n;if(r){Ze();let n=e.setupContext=r.length>1?$s(e):null,i=Bs(e),a=Rn(r,e,0,[e.props,n]),o=S(a);if(Qe(),i(),(o||e.sp)&&!Pi(e)&&ii(e),o){if(a.then(Vs,Vs),t)return a.then(n=>{zs(!0);try{Ks(e,n,t)}finally{zs(!1)}}).catch(t=>{Bn(t,e,0)});e.asyncDep=a}else Ks(e,a,t)}else Zs(e,t)}function Ks(e,t,n){v(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:x(t)&&(e.setupState=pn(t)),Zs(e,n)}var qs,Js;function Ys(e){qs=e,Js=e=>{e.render._rc&&(e.withProxy=new Proxy(e.ctx,xa))}}var Xs=()=>!qs;function Zs(e,t,n){let r=e.type;if(!e.render){if(!t&&qs&&!r.render){let t=r.template||Ha(e).template;if(t){let{isCustomElement:n,compilerOptions:i}=e.appContext.config,{delimiters:a,compilerOptions:o}=r,s=l(l({isCustomElement:n,delimiters:a},i),o);r.render=qs(t,s)}}e.render=r.render||a,Js&&Js(e)}{let t=Bs(e);Ze();try{Ra(e)}finally{Qe(),t()}}}var Qs={get(e,t){return ct(e,`get`,``),e[t]}};function $s(e){return{attrs:new Proxy(e.attrs,Qs),slots:e.slots,emit:e.emit,expose:t=>{e.exposed=t||{}}}}function ec(e){return e.exposed?e.exposeProxy||=new Proxy(pn(tn(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in va)return va[n](e)},has(e,t){return t in e||t in va}}):e.proxy}function tc(e,t=!0){return v(e)?e.displayName||e.name:e.name||t&&e.__name}function nc(e){return v(e)&&`__vccOpts`in e}var rc=(e,t)=>Sn(e,t,Us);function ic(e,t,n){try{fs(-1);let r=arguments.length;return r===2?x(t)&&!p(t)?gs(t)?H(e,null,[t]):H(e,t):H(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&gs(n)&&(n=[n]),H(e,t,n))}finally{fs(1)}}function ac(){return;function e(t,n,r){let i=t[r];if(p(i)&&i.includes(n)||x(i)&&n in i||t.extends&&e(t.extends,n,r)||t.mixins&&t.mixins.some(t=>e(t,n,r)))return!0}}function oc(e,t,n,r){let i=n[r];if(i&&sc(i,e))return i;let a=t();return a.memo=e.slice(),a.cacheIndex=r,n[r]=a}function sc(e,t){let n=e.memo;if(n.length!=t.length)return!1;for(let e=0;e<n.length;e++)if(M(n[e],t[e]))return!1;return ds>0&&cs&&cs.push(e),!0}var cc=`3.5.42`,lc=a,uc=Ln,dc=ir,fc=or,pc={createComponentInstance:Fs,setupComponent:Ws,renderComponentRoot:co,setCurrentRenderingInstance:cr,isVNode:gs,normalizeVNode:Os,getComponentPublicInstance:ec,ensureValidVNode:ha,pushWarningContext:Nn,popWarningContext:Pn},mc=void 0,hc=typeof window<`u`&&window.trustedTypes;if(hc)try{mc=hc.createPolicy(`vue`,{createHTML:e=>e})}catch{}var gc=mc?e=>mc.createHTML(e):e=>e,_c=`http://www.w3.org/2000/svg`,vc=`http://www.w3.org/1998/Math/MathML`,yc=typeof document<`u`?document:null,bc=yc&&yc.createElement(`template`),xc={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{let t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{let i=t===`svg`?yc.createElementNS(_c,e):t===`mathml`?yc.createElementNS(vc,e):n?yc.createElement(e,{is:n}):yc.createElement(e);return e===`select`&&r&&r.multiple!=null&&i.setAttribute(`multiple`,r.multiple),i},createText:e=>yc.createTextNode(e),createComment:e=>yc.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>yc.querySelector(e),setScopeId(e,t){e.setAttribute(t,``)},insertStaticContent(e,t,n,r,i,a){let o=n?n.previousSibling:t.lastChild;if(i&&(i===a||i.nextSibling))for(;t.insertBefore(i.cloneNode(!0),n),!(i===a||!(i=i.nextSibling)););else{bc.innerHTML=gc(r===`svg`?`<svg>${e}</svg>`:r===`mathml`?`<math>${e}</math>`:e);let i=bc.content;if(r===`svg`||r===`mathml`){let e=i.firstChild;for(;e.firstChild;)i.appendChild(e.firstChild);i.removeChild(e)}t.insertBefore(i,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Sc=`transition`,Cc=`animation`,wc=Symbol(`_vtc`),Tc={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},Ec=l({},Gr,Tc),Dc=(e=>(e.displayName=`Transition`,e.props=Ec,e))((e,{slots:t})=>ic(Yr,Ac(e),t)),Oc=(e,t=[])=>{p(e)?e.forEach(e=>e(...t)):e&&e(...t)},kc=e=>e?p(e)?e.some(e=>e.length>1):e.length>1:!1;function Ac(e){let t={};for(let n in e)n in Tc||(t[n]=e[n]);if(e.css===!1)return t;let{name:n=`v`,type:r,duration:i,enterFromClass:a=`${n}-enter-from`,enterActiveClass:o=`${n}-enter-active`,enterToClass:s=`${n}-enter-to`,appearFromClass:c=a,appearActiveClass:u=o,appearToClass:d=s,leaveFromClass:f=`${n}-leave-from`,leaveActiveClass:p=`${n}-leave-active`,leaveToClass:m=`${n}-leave-to`}=e,h=jc(i),g=h&&h[0],_=h&&h[1],{onBeforeEnter:v,onEnter:y,onEnterCancelled:b,onLeave:x,onLeaveCancelled:S,onBeforeAppear:C=v,onAppear:w=y,onAppearCancelled:T=b}=t,E=(e,t,n,r)=>{e._enterCancelled=r,Pc(e,t?d:s),Pc(e,t?u:o),n&&n()},D=(e,t)=>{e._isLeaving=!1,Pc(e,f),Pc(e,m),Pc(e,p),t&&t()},O=e=>(t,n)=>{let i=e?w:y,o=()=>E(t,e,n);Oc(i,[t,o]),Fc(()=>{Pc(t,e?c:a),Nc(t,e?d:s),kc(i)||Lc(t,r,g,o)})};return l(t,{onBeforeEnter(e){Oc(v,[e]),Nc(e,a),Nc(e,o)},onBeforeAppear(e){Oc(C,[e]),Nc(e,c),Nc(e,u)},onEnter:O(!1),onAppear:O(!0),onLeave(e,t){e._isLeaving=!0;let n=()=>D(e,t);Nc(e,f),e._enterCancelled?(Nc(e,p),Vc(e)):(Vc(e),Nc(e,p)),Fc(()=>{e._isLeaving&&(Pc(e,f),Nc(e,m),kc(x)||Lc(e,r,_,n))}),Oc(x,[e,n])},onEnterCancelled(e){E(e,!1,void 0,!0),Oc(b,[e])},onAppearCancelled(e){E(e,!0,void 0,!0),Oc(T,[e])},onLeaveCancelled(e){D(e),Oc(S,[e])}})}function jc(e){if(e==null)return null;if(x(e))return[Mc(e.enter),Mc(e.leave)];{let t=Mc(e);return[t,t]}}function Mc(e){return se(e)}function Nc(e,t){t.split(/\s+/).forEach(t=>t&&e.classList.add(t)),(e[wc]||(e[wc]=new Set)).add(t)}function Pc(e,t){t.split(/\s+/).forEach(t=>t&&e.classList.remove(t));let n=e[wc];n&&(n.delete(t),n.size||(e[wc]=void 0))}function Fc(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}var Ic=0;function Lc(e,t,n,r){let i=e._endId=++Ic,a=()=>{i===e._endId&&r()};if(n!=null)return setTimeout(a,n);let{type:o,timeout:s,propCount:c}=Rc(e,t);if(!o)return r();let l=o+`end`,u=0,d=()=>{e.removeEventListener(l,f),a()},f=t=>{t.target===e&&++u>=c&&d()};setTimeout(()=>{u<c&&d()},s+1),e.addEventListener(l,f)}function Rc(e,t){let n=window.getComputedStyle(e),r=e=>(n[e]||``).split(`, `),i=r(`${Sc}Delay`),a=r(`${Sc}Duration`),o=zc(i,a),s=r(`${Cc}Delay`),c=r(`${Cc}Duration`),l=zc(s,c),u=null,d=0,f=0;t===Sc?o>0&&(u=Sc,d=o,f=a.length):t===Cc?l>0&&(u=Cc,d=l,f=c.length):(d=Math.max(o,l),u=d>0?o>l?Sc:Cc:null,f=u?u===Sc?a.length:c.length:0);let p=u===Sc&&/\b(?:transform|all)(?:,|$)/.test(r(`${Sc}Property`).toString());return{type:u,timeout:d,propCount:f,hasTransform:p}}function zc(e,t){for(;e.length<t.length;)e=e.concat(e);return Math.max(...t.map((t,n)=>Bc(t)+Bc(e[n])))}function Bc(e){return e===`auto`?0:Number(e.slice(0,-1).replace(`,`,`.`))*1e3}function Vc(e){return(e?e.ownerDocument:document).body.offsetHeight}function Hc(e,t,n){let r=e[wc];r&&(t=(t?[t,...r]:[...r]).join(` `)),t==null?e.removeAttribute(`class`):n?e.setAttribute(`class`,t):e.className=t}var Uc=Symbol(`_vod`),Wc=Symbol(`_vsh`),Gc={name:`show`,beforeMount(e,{value:t},{transition:n}){e[Uc]=e.style.display===`none`?``:e.style.display,n&&t?n.beforeEnter(e):Kc(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:r}){!t!=!n&&(r?t?(r.beforeEnter(e),Kc(e,!0),r.enter(e)):r.leave(e,()=>{Kc(e,!1)}):Kc(e,t))},beforeUnmount(e,{value:t}){Kc(e,t)}};function Kc(e,t){e.style.display=t?e[Uc]:`none`,e[Wc]=!t}function qc(){Gc.getSSRProps=({value:e})=>{if(!e)return{style:{display:`none`}}}}var Jc=Symbol(``);function Yc(e){let t=Ls();if(!t)return;let n=t.ut=(n=e(t.proxy))=>{Array.from(document.querySelectorAll(`[data-v-owner="${t.uid}"]`)).forEach(e=>Zc(e,n))},r=()=>{let r=e(t.proxy);t.ce?Zc(t.ce,r):Xc(t.subTree,r),n(r)};Xi(()=>{$n(r)}),Yi(()=>{Cr(r,a,{flush:`post`});let e=new MutationObserver(r);e.observe(t.subTree.el.parentNode,{childList:!0}),$i(()=>e.disconnect())})}function Xc(e,t){if(e.shapeFlag&128){let n=e.suspense;e=n.activeBranch,n.pendingBranch&&!n.isHydrating&&n.effects.push(()=>{Xc(n.activeBranch,t)})}for(;e.component;)e=e.component.subTree;if(e.shapeFlag&1&&e.el)Zc(e.el,t);else if(e.type===B)e.children.forEach(e=>Xc(e,t));else if(e.type===os){let{el:n,anchor:r}=e;for(;n&&(Zc(n,t),n!==r);)n=n.nextSibling}}function Zc(e,t){if(e.nodeType===1){let n=e.style,r=``;for(let e in t){let i=Oe(t[e]);n.setProperty(`--${e}`,i),r+=`--${e}: ${i};`}n[Jc]=r}}var Qc=/(?:^|;)\s*display\s*:/;function $c(e,t,n){let r=e.style,i=y(n),a=!1;if(n&&!i){if(t)if(y(t))for(let e of t.split(`;`)){let t=e.slice(0,e.indexOf(`:`)).trim();n[t]??tl(r,t,``)}else for(let e in t)n[e]??tl(r,e,``);for(let i in n){i===`display`&&(a=!0);let o=n[i];o==null?tl(r,i,``):al(e,i,!y(t)&&t?t[i]:void 0,o)||tl(r,i,o)}}else if(i){if(t!==n){let e=r[Jc];e&&(n+=`;`+e),r.cssText=n,a=Qc.test(n)}}else t&&e.removeAttribute(`style`);Uc in e&&(e[Uc]=a?r.display:``,e[Wc]&&(r.display=`none`))}var el=/\s*!important$/;function tl(e,t,n){if(p(n))n.forEach(n=>tl(e,t,n));else if(n??=``,t.startsWith(`--`))el.test(n)?e.setProperty(t,n.replace(el,``),`important`):e.setProperty(t,n);else{let r=il(e,t);el.test(n)?e.setProperty(A(r),n.replace(el,``),`important`):e[r]=n}}var nl=[`Webkit`,`Moz`,`ms`],rl={};function il(e,t){let n=rl[t];if(n)return n;let r=k(t);if(r!==`filter`&&r in e)return rl[t]=r;r=re(r);for(let n=0;n<nl.length;n++){let i=nl[n]+r;if(i in e)return rl[t]=i}return t}function al(e,t,n,r){return e.tagName===`TEXTAREA`&&(t===`width`||t===`height`)&&y(r)&&n===r}var ol=`http://www.w3.org/1999/xlink`;function sl(e,t,n,r,i,a=ye(t)){r&&t.startsWith(`xlink:`)?n==null?e.removeAttributeNS(ol,t.slice(6,t.length)):e.setAttributeNS(ol,t,n):n==null||a&&!be(n)?e.removeAttribute(t):e.setAttribute(t,a?``:b(n)?String(n):n)}function cl(e,t,n,r,i){if(t===`innerHTML`||t===`textContent`){n!=null&&(e[t]=t===`innerHTML`?gc(n):n);return}let a=e.tagName;if(t===`value`&&a!==`PROGRESS`&&!a.includes(`-`)){let r=a===`OPTION`?e.getAttribute(`value`)||``:e.value,i=n==null?e.type===`checkbox`?`on`:``:String(n);(r!==i||!(`_value`in e))&&(e.value=i),n??e.removeAttribute(t),e._value=n;return}let o=!1;if(n===``||n==null){let r=typeof e[t];r===`boolean`?n=be(n):n==null&&r===`string`?(n=``,o=!0):r===`number`&&(n=0,o=!0)}try{e[t]=n}catch{}o&&e.removeAttribute(i||t)}function ll(e,t,n,r){e.addEventListener(t,n,r)}function ul(e,t,n,r){e.removeEventListener(t,n,r)}var dl=Symbol(`_vei`);function fl(e,t,n,r,i=null){let a=e[dl]||(e[dl]={}),o=a[t];if(r&&o)o.value=r;else{let[n,s]=hl(t);r?ll(e,n,a[t]=yl(r,i),s):o&&(ul(e,n,o,s),a[t]=void 0)}}var pl=/(Once|Passive|Capture)$/,ml=/^on:?(?:Once|Passive|Capture)$/;function hl(e){let t,n;for(;(n=e.match(pl))&&!ml.test(e);)t||={},e=e.slice(0,e.length-n[1].length),t[n[1].toLowerCase()]=!0;return[e[2]===`:`?e.slice(3):A(e.slice(2)),t]}var gl=0,_l=Promise.resolve(),vl=()=>gl||=(_l.then(()=>gl=0),Date.now());function yl(e,t){let n=e=>{if(!e._vts)e._vts=Date.now();else if(e._vts<=n.attached)return;let r=n.value;if(p(r)){let n=e.stopImmediatePropagation;e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0};let i=r.slice(),a=[e];for(let n=0;n<i.length&&!e._stopped;n++){let e=i[n];e&&zn(e,t,5,a)}}else zn(r,t,5,[e])};return n.value=e,n.attached=vl(),n}var bl=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,xl=(e,t,n,r,i,a)=>{let o=i===`svg`;t===`class`?Hc(e,r,o):t===`style`?$c(e,n,r):s(t)?c(t)||fl(e,t,n,r,a):(t[0]===`.`?(t=t.slice(1),!0):t[0]===`^`?(t=t.slice(1),!1):Sl(e,t,r,o))?(cl(e,t,r),!e.tagName.includes(`-`)&&(t===`value`||t===`checked`||t===`selected`)&&sl(e,t,r,o,a,t!==`value`)):e._isVueCE&&(Cl(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!y(r)))?cl(e,k(t),r,a,t):(t===`true-value`?e._trueValue=r:t===`false-value`&&(e._falseValue=r),sl(e,t,r,o))};function Sl(e,t,n,r){if(r)return!!(t===`innerHTML`||t===`textContent`||t in e&&bl(t)&&v(n));if(t===`spellcheck`||t===`draggable`||t===`translate`||t===`autocorrect`||t===`sandbox`&&e.tagName===`IFRAME`||t===`form`||t===`list`&&e.tagName===`INPUT`||t===`type`&&e.tagName===`TEXTAREA`)return!1;if(t===`width`||t===`height`){let t=e.tagName;if(t===`IMG`||t===`VIDEO`||t===`CANVAS`||t===`SOURCE`)return!1}return bl(t)&&y(n)?!1:t in e}function Cl(e,t){let n=e._def.props;if(!n)return!1;let r=k(t);return Array.isArray(n)?n.some(e=>k(e)===r):Object.keys(n).some(e=>k(e)===r)}var wl={};function Tl(e,t,n){let r=ni(e,t);E(r)&&(r=l({},r,t));class i extends Ol{constructor(e){super(r,e,n)}}return i.def=r,i}var El=((e,t)=>Tl(e,t,bu)),Dl=typeof HTMLElement<`u`?HTMLElement:class{},Ol=class e extends Dl{constructor(e,t={},n=yu){super(),this._def=e,this._props=t,this._createApp=n,this._isVueCE=!0,this._instance=null,this._app=null,this._nonce=this._def.nonce,this._connected=!1,this._resolved=!1,this._patching=!1,this._dirty=!1,this._numberProps=null,this._styleChildren=new WeakSet,this._styleAnchors=new WeakMap,this._ob=null,this.shadowRoot&&n!==yu?this._root=this.shadowRoot:e.shadowRoot===!1?this._root=this:(this.attachShadow(l({},e.shadowRootOptions,{mode:`open`})),this._root=this.shadowRoot)}connectedCallback(){if(!this.isConnected)return;!this.shadowRoot&&!this._resolved&&this._parseSlots(),this._connected=!0;let t=this;for(;t&&=t.assignedSlot||t.parentNode||t.host;)if(t instanceof e){this._parent=t;break}this._instance||(this._resolved?this._mount(this._def):t&&t._pendingResolve?this._pendingResolve=t._pendingResolve.then(()=>{if(this._pendingResolve=void 0,this.isConnected)return this._resolveDef()}):this._resolveDef())}_setParent(e=this._parent){e&&(this._instance.parent=e._instance,this._inheritParentContext(e))}_inheritParentContext(e=this._parent){e&&this._app&&Object.setPrototypeOf(this._app._context.provides,e._instance.provides)}disconnectedCallback(){this._connected=!1,Yn(()=>{this._connected||(this._ob&&=(this._ob.disconnect(),null),this._app&&this._app.unmount(),this._instance&&(this._instance.ce=void 0),this._app=this._instance=null,this._teleportTargets&&=(this._teleportTargets.clear(),void 0))})}_processMutations(e){for(let t of e)this._setAttr(t.attributeName)}_resolveDef(){if(this._pendingResolve)return this._pendingResolve;for(let e=0;e<this.attributes.length;e++)this._setAttr(this.attributes[e].name);this._ob=new MutationObserver(this._processMutations.bind(this)),this._ob.observe(this,{attributes:!0});let e=(e,t=!1)=>{this._resolved=!0,this._pendingResolve=void 0;let{props:n,styles:r}=e,i;if(n&&!p(n))for(let e in n){let t=n[e];(t===Number||t&&t.type===Number)&&(e in this._props&&(this._props[e]=se(this._props[e])),(i||=Object.create(null))[k(e)]=!0)}this._numberProps=i,this._resolveProps(e),this.shadowRoot&&this._applyStyles(r),this._mount(e)},t=this._def.__asyncLoader;if(t)return this._pendingResolve=t().then(t=>{t.configureApp=this._def.configureApp,e(this._def=t,!0)}),this._pendingResolve;e(this._def)}_mount(e){this._app=this._createApp(e),this._inheritParentContext(),e.configureApp&&e.configureApp(this._app),this._app._ceVNode=this._createVNode(),this._app.mount(this._root);let t=this._instance&&this._instance.exposed;if(t)for(let e in t)f(this,e)||Object.defineProperty(this,e,{get:()=>un(t[e])})}_resolveProps(e){let{props:t}=e,n=p(t)?t:Object.keys(t||{});for(let e of Object.keys(this))e[0]!==`_`&&n.includes(e)&&this._setProp(e,this[e]);for(let e of n.map(k))Object.defineProperty(this,e,{get(){return this._getProp(e)},set(t){this._setProp(e,t,!0,!this._patching)}})}_setAttr(e){if(e.startsWith(`data-v-`))return;let t=this.hasAttribute(e),n=t?this.getAttribute(e):wl,r=k(e);t&&this._numberProps&&this._numberProps[r]&&(n=se(n)),this._setProp(r,n,!1,!0)}_getProp(e){return this._props[e]}_setProp(e,t,n=!0,r=!1){if(t!==this._props[e]&&(this._dirty=!0,t===wl?delete this._props[e]:(this._props[e]=t,e===`key`&&this._app&&(this._app._ceVNode.key=t)),r&&this._instance&&this._update(),n)){let n=this._ob;n&&(this._processMutations(n.takeRecords()),n.disconnect()),t===!0?this.setAttribute(A(e),``):typeof t==`string`||typeof t==`number`?this.setAttribute(A(e),t+``):t||this.removeAttribute(A(e)),n&&n.observe(this,{attributes:!0})}}_update(){let e=this._createVNode();this._app&&(e.appContext=this._app._context),_u(e,this._root)}_createVNode(){let e={};this.shadowRoot||(e.onVnodeMounted=e.onVnodeUpdated=this._renderSlots.bind(this));let t=H(this._def,l(e,this._props));return this._instance||(t.ce=e=>{this._instance=e,e.ce=this,e.isCE=!0;let t=(e,t)=>{this.dispatchEvent(new CustomEvent(e,E(t[0])?l({detail:t},t[0]):{detail:t}))};e.emit=(e,...n)=>{t(e,n),A(e)!==e&&t(A(e),n)},this._setParent()}),t}_applyStyles(e,t,n){if(!e)return;if(t){if(t===this._def||this._styleChildren.has(t))return;this._styleChildren.add(t)}let r=this._nonce,i=this.shadowRoot,a=n?this._getStyleAnchor(n)||this._getStyleAnchor(this._def):this._getRootStyleInsertionAnchor(i),o=null;for(let s=e.length-1;s>=0;s--){let c=document.createElement(`style`);r&&c.setAttribute(`nonce`,r),c.textContent=e[s],i.insertBefore(c,o||a),o=c,s===0&&(n||this._styleAnchors.set(this._def,c),t&&this._styleAnchors.set(t,c))}}_getStyleAnchor(e){if(!e)return null;let t=this._styleAnchors.get(e);return t&&t.parentNode===this.shadowRoot?t:(t&&this._styleAnchors.delete(e),null)}_getRootStyleInsertionAnchor(e){for(let t=0;t<e.childNodes.length;t++){let n=e.childNodes[t];if(!(n instanceof HTMLStyleElement))return n}return null}_parseSlots(){let e=this._slots={},t;for(;t=this.firstChild;){let n=t.nodeType===1&&t.getAttribute(`slot`)||`default`;(e[n]||(e[n]=[])).push(t),this.removeChild(t)}}_renderSlots(){let e=this._getSlots(),t=this._instance.type.__scopeId;for(let n=0;n<e.length;n++){let r=e[n],i=r.getAttribute(`name`)||`default`,a=this._slots[i],o=r.parentNode;if(a)for(let e of a){if(t&&e.nodeType===1){let n=t+`-s`,r=document.createTreeWalker(e,1);e.setAttribute(n,``);let i;for(;i=r.nextNode();)i.setAttribute(n,``)}o.insertBefore(e,r)}else for(;r.firstChild;)o.insertBefore(r.firstChild,r);o.removeChild(r)}}_getSlots(){let e=[this];this._teleportTargets&&e.push(...this._teleportTargets);let t=new Set;for(let n of e){let e=n.querySelectorAll(`slot`);for(let n=0;n<e.length;n++)t.add(e[n])}return Array.from(t)}_injectChildStyle(e,t){this._applyStyles(e.styles,e,t)}_beginPatch(){this._patching=!0,this._dirty=!1}_endPatch(){this._patching=!1,this._dirty&&this._instance&&this._update()}_hasShadowRoot(){return this._def.shadowRoot!==!1}_removeChildStyle(e){}};function kl(e){let t=Ls();return t&&t.ce||null}function Al(){let e=kl();return e&&e.shadowRoot}function jl(e=`$style`){{let t=Ls();if(!t)return r;let n=t.type.__cssModules;return n&&n[e]||r}}var Ml=new WeakMap,Nl=new WeakMap,Pl=Symbol(`_moveCb`),Fl=Symbol(`_enterCb`),Il=(e=>(delete e.props.mode,e))({name:`TransitionGroup`,props:l({},Ec,{tag:String,moveClass:String}),setup(e,{slots:t}){let n=Ls(),r=Ur(),i,a;return Zi(()=>{if(!i.length)return;let t=e.moveClass||`${e.name||`v`}-move`;if(!Vl(i[0].el,n.vnode.el,t)){i=[];return}i.forEach(Ll),i.forEach(Rl);let r=i.filter(zl);Vc(n.vnode.el),r.forEach(e=>{let n=e.el,r=n.style;Nc(n,t),r.transform=r.webkitTransform=r.transitionDuration=``;let i=n[Pl]=e=>{e&&e.target!==n||(!e||e.propertyName.endsWith(`transform`))&&(n.removeEventListener(`transitionend`,i),n[Pl]=null,Pc(n,t))};n.addEventListener(`transitionend`,i)}),i=[]}),()=>{let o=I(e),s=Ac(o),c=o.tag||B;if(i=[],a)for(let e=0;e<a.length;e++){let t=a[e];t.el&&t.el instanceof Element&&!t.el[Wc]&&(i.push(t),ei(t,Zr(t,s,r,n)),Ml.set(t,Bl(t.el)))}a=t.default?ti(t.default()):[];for(let e=0;e<a.length;e++){let t=a[e];t.key!=null&&ei(t,Zr(t,s,r,n))}return H(c,null,a)}}});function Ll(e){let t=e.el;t[Pl]&&t[Pl](),t[Fl]&&t[Fl]()}function Rl(e){Nl.set(e,Bl(e.el))}function zl(e){let t=Ml.get(e),n=Nl.get(e),r=t.left-n.left,i=t.top-n.top;if(r||i){let t=e.el,n=t.style,a=t.getBoundingClientRect(),o=1,s=1;return t.offsetWidth&&(o=a.width/t.offsetWidth),t.offsetHeight&&(s=a.height/t.offsetHeight),(!Number.isFinite(o)||o===0)&&(o=1),(!Number.isFinite(s)||s===0)&&(s=1),Math.abs(o-1)<.01&&(o=1),Math.abs(s-1)<.01&&(s=1),n.transform=n.webkitTransform=`translate(${r/o}px,${i/s}px)`,n.transitionDuration=`0s`,e}}function Bl(e){let t=e.getBoundingClientRect();return{left:t.left,top:t.top}}function Vl(e,t,n){let r=e.cloneNode(),i=e[wc];i&&i.forEach(e=>{e.split(/\s+/).forEach(e=>e&&r.classList.remove(e))}),n.split(/\s+/).forEach(e=>e&&r.classList.add(e)),r.style.display=`none`;let a=t.nodeType===1?t:t.parentNode;a.appendChild(r);let{hasTransform:o}=Rc(r);return a.removeChild(r),o}var Hl=e=>{let t=e.props[`onUpdate:modelValue`]||!1;return p(t)?e=>ie(t,e):t};function Ul(e){e.target.composing=!0}function Wl(e){let t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event(`input`)))}var Gl=Symbol(`_assign`),Kl=Symbol(`_initialValue`);function ql(e,t,n){return t&&(e=e.trim()),n&&(e=oe(e)),e}var Jl={created(e,{modifiers:{lazy:t,trim:n,number:r}},i){e.parentNode&&(e.type===`text`?e[Kl]=e.defaultValue.replace(/[\r\n]/g,``):e.type===`textarea`&&(e[Kl]=e.defaultValue.replace(/\r\n?/g,`
4
4
  `))),e[Gl]=Hl(i);let a=r||i.props&&i.props.type===`number`;ll(e,t?`change`:`input`,t=>{t.target.composing||e[Gl](ql(e.value,n,a))}),(n||a)&&ll(e,`change`,()=>{e.value=ql(e.value,n,a)}),t||(ll(e,`compositionstart`,Ul),ll(e,`compositionend`,Wl),ll(e,`change`,Wl))},mounted(e,{value:t,modifiers:{trim:n,number:r}}){let i=t??``,a=e[Kl];delete e[Kl],a!==void 0&&(e.type===`text`||e.type===`textarea`)&&e.value!==a?e[Gl](ql(e.value,n,r)):e.value=i},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:r,trim:i,number:a}},o){if(e[Gl]=Hl(o),e.composing)return;let s=(a||e.type===`number`)&&!/^0\d/.test(e.value)?oe(e.value):e.value,c=t??``;if(s===c)return;let l=e.getRootNode();(l instanceof Document||l instanceof ShadowRoot)&&l.activeElement===e&&e.type!==`range`&&(r&&t===n||i&&e.value.trim()===c)||(e.value=c)}},Yl={deep:!0,created(e,t,n){e[Gl]=Hl(n),ll(e,`change`,()=>{let t=e._modelValue,n=tu(e),r=e.checked,i=e[Gl];if(p(t)){let e=N(t,n),a=e!==-1;if(r&&!a)i(t.concat(n));else if(!r&&a){let n=[...t];n.splice(e,1),i(n)}}else if(h(t)){let e=new Set(t);r?e.add(n):e.delete(n),i(e)}else i(nu(e,r))})},mounted:Xl,beforeUpdate(e,t,n){e[Gl]=Hl(n),Xl(e,t,n)}};function Xl(e,{value:t,oldValue:n},r){e._modelValue=t;let i;if(p(t))i=N(t,r.props.value)>-1;else if(h(t))i=t.has(r.props.value);else{if(t===n)return;i=Ce(t,nu(e,!0))}e.checked!==i&&(e.checked=i)}var Zl={created(e,{value:t},n){e.checked=Ce(t,n.props.value),e[Gl]=Hl(n),ll(e,`change`,()=>{e[Gl](tu(e))})},beforeUpdate(e,{value:t,oldValue:n},r){e[Gl]=Hl(r),t!==n&&(e.checked=Ce(t,r.props.value))}},Ql={deep:!0,created(e,{value:t,modifiers:{number:n}},r){e._modelValue=t,ll(e,`change`,()=>{let t=Array.prototype.filter.call(e.options,e=>e.selected).map(e=>n?oe(tu(e)):tu(e)),r=e.multiple,i=r?h(e._modelValue)?new Set(t):t:t[0],a=e._pendingValue=[r,r?p(i)?t.slice():t:i];try{e[Gl](i)}finally{Yn(()=>{e._pendingValue===a&&(e._pendingValue=void 0)})}}),e[Gl]=Hl(r)},mounted(e,{value:t}){eu(e,t)},beforeUpdate(e,{value:t},n){e._modelValue=t,e[Gl]=Hl(n)},updated(e,{value:t}){let n=e._pendingValue;e._pendingValue=void 0,(!n||n[0]!==e.multiple||!$l(t,n[1],n[0]))&&eu(e,t)}};function $l(e,t,n){if(!n||p(e))return Ce(e,t);if(h(e)){if(e.size!==t.length)return!1;for(let n of t)if(!e.has(n))return!1;return!0}return!1}function eu(e,t){let n=e.multiple,r=p(t);if(!(n&&!r&&!h(t))){for(let i=0,a=e.options.length;i<a;i++){let a=e.options[i],o=tu(a);if(n)if(r){let e=typeof o;e===`string`||e===`number`?a.selected=t.some(e=>String(e)===String(o)):a.selected=N(t,o)>-1}else a.selected=t.has(o);else if(Ce(tu(a),t)){e.selectedIndex!==i&&(e.selectedIndex=i);return}}!n&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function tu(e){return`_value`in e?e._value:e.value}function nu(e,t){let n=t?`_trueValue`:`_falseValue`;return n in e?e[n]:t}var ru={created(e,t,n){au(e,t,n,null,`created`)},mounted(e,t,n){au(e,t,n,null,`mounted`)},beforeUpdate(e,t,n,r){au(e,t,n,r,`beforeUpdate`)},updated(e,t,n,r){au(e,t,n,r,`updated`)}};function iu(e,t){switch(e){case`SELECT`:return Ql;case`TEXTAREA`:return Jl;default:switch(t){case`checkbox`:return Yl;case`radio`:return Zl;default:return Jl}}}function au(e,t,n,r,i){let a=iu(e.tagName,n.props&&n.props.type)[i];a&&a(e,t,n,r)}function ou(){Jl.getSSRProps=({value:e})=>({value:e}),Zl.getSSRProps=({value:e},t)=>{if(t.props&&Ce(t.props.value,e))return{checked:!0}},Yl.getSSRProps=({value:e},t)=>{if(p(e)){if(t.props&&N(e,t.props.value)>-1)return{checked:!0}}else if(h(e)){if(t.props&&e.has(t.props.value))return{checked:!0}}else if(e)return{checked:!0}},ru.getSSRProps=(e,t)=>{if(typeof t.type!=`string`)return;let n=iu(t.type.toUpperCase(),t.props&&t.props.type);if(n.getSSRProps)return n.getSSRProps(e,t)}}var su=[`ctrl`,`shift`,`alt`,`meta`],cu={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>`button`in e&&e.button!==0,middle:e=>`button`in e&&e.button!==1,right:e=>`button`in e&&e.button!==2,exact:(e,t)=>su.some(n=>e[`${n}Key`]&&!t.includes(n))},lu=(e,t)=>{if(!e)return e;let n=e._withMods||={},r=t.join(`.`);return n[r]||(n[r]=((n,...r)=>{for(let e=0;e<t.length;e++){let r=cu[t[e]];if(r&&r(n,t))return}return e(n,...r)}))},uu={esc:`escape`,space:` `,up:`arrow-up`,left:`arrow-left`,right:`arrow-right`,down:`arrow-down`,delete:`backspace`},du=(e,t)=>{let n=e._withKeys||={},r=t.join(`.`);return n[r]||(n[r]=(n=>{if(!(`key`in n))return;let r=A(n.key);if(t.some(e=>e===r||uu[e]===r))return e(n)}))},fu=l({patchProp:xl},xc),pu,mu=!1;function hu(){return pu||=Fo(fu)}function gu(){return pu=mu?pu:Io(fu),mu=!0,pu}var _u=((...e)=>{hu().render(...e)}),vu=((...e)=>{gu().hydrate(...e)}),yu=((...e)=>{let t=hu().createApp(...e),{mount:n}=t;return t.mount=e=>{let r=Su(e);if(!r)return;let i=t._component;!v(i)&&!i.render&&!i.template&&(i.template=r.innerHTML),r.nodeType===1&&(r.textContent=``);let a=n(r,!1,xu(r));return r instanceof Element&&(r.removeAttribute(`v-cloak`),r.setAttribute(`data-v-app`,``)),a},t}),bu=((...e)=>{let t=gu().createApp(...e),{mount:n}=t;return t.mount=e=>{let t=Su(e);if(t)return n(t,!0,xu(t))},t});function xu(e){if(e instanceof SVGElement)return`svg`;if(typeof MathMLElement==`function`&&e instanceof MathMLElement)return`mathml`}function Su(e){return y(e)?document.querySelector(e):e}var Cu=!1,wu=()=>{Cu||(Cu=!0,ou(),qc())},Tu=t({BaseTransition:()=>Yr,BaseTransitionPropsValidators:()=>Gr,Comment:()=>V,DeprecationTypes:()=>null,EffectScope:()=>ke,ErrorCodes:()=>In,ErrorTypeStrings:()=>uc,Fragment:()=>B,KeepAlive:()=>Ri,ReactiveEffect:()=>Pe,Static:()=>os,Suspense:()=>Jo,Teleport:()=>Rr,Text:()=>as,TrackOpTypes:()=>Cn,Transition:()=>Dc,TransitionGroup:()=>Il,TriggerOpTypes:()=>wn,VueElement:()=>Ol,assertNumber:()=>Fn,callWithAsyncErrorHandling:()=>zn,callWithErrorHandling:()=>Rn,camelize:()=>k,capitalize:()=>re,cloneVNode:()=>ws,compatUtils:()=>null,compile:()=>Eu,computed:()=>rc,createApp:()=>yu,createBlock:()=>hs,createCommentVNode:()=>Ds,createElementBlock:()=>ms,createElementVNode:()=>xs,createHydrationRenderer:()=>Io,createPropsRestProxy:()=>Fa,createRenderer:()=>Fo,createSSRApp:()=>bu,createSlots:()=>pa,createStaticVNode:()=>Es,createTextVNode:()=>Ts,createVNode:()=>H,customRef:()=>hn,defineAsyncComponent:()=>Fi,defineComponent:()=>ni,defineCustomElement:()=>Tl,defineEmits:()=>Ca,defineExpose:()=>wa,defineModel:()=>Da,defineOptions:()=>Ta,defineProps:()=>Sa,defineSSRCustomElement:()=>El,defineSlots:()=>Ea,devtools:()=>dc,effect:()=>qe,effectScope:()=>Ae,getCurrentInstance:()=>Ls,getCurrentScope:()=>je,getCurrentWatcher:()=>On,getTransitionRawChildren:()=>ti,guardReactiveProps:()=>Cs,h:()=>ic,handleError:()=>Bn,hasInjectionContext:()=>_r,hydrate:()=>vu,hydrateOnIdle:()=>Oi,hydrateOnInteraction:()=>Mi,hydrateOnMediaQuery:()=>ji,hydrateOnVisible:()=>Ai,initCustomFormatter:()=>ac,initDirectivesForSSR:()=>wu,inject:()=>gr,isMemoSame:()=>sc,isProxy:()=>en,isReactive:()=>Zt,isReadonly:()=>Qt,isRef:()=>L,isRuntimeOnly:()=>Xs,isShallow:()=>$t,isVNode:()=>gs,markRaw:()=>tn,mergeDefaults:()=>Na,mergeModels:()=>Pa,mergeProps:()=>js,nextTick:()=>Yn,nodeOps:()=>xc,normalizeClass:()=>ge,normalizeProps:()=>_e,normalizeStyle:()=>de,onActivated:()=>Bi,onBeforeMount:()=>Ji,onBeforeUnmount:()=>Qi,onBeforeUpdate:()=>Xi,onDeactivated:()=>Vi,onErrorCaptured:()=>ra,onMounted:()=>Yi,onRenderTracked:()=>na,onRenderTriggered:()=>ta,onScopeDispose:()=>Me,onServerPrefetch:()=>ea,onUnmounted:()=>$i,onUpdated:()=>Zi,onWatcherCleanup:()=>kn,openBlock:()=>ls,patchProp:()=>xl,popScopeId:()=>ur,provide:()=>hr,proxyRefs:()=>pn,pushScopeId:()=>lr,queuePostFlushCb:()=>$n,reactive:()=>Kt,readonly:()=>Jt,ref:()=>an,registerRuntimeCompiler:()=>Ys,render:()=>_u,renderList:()=>fa,renderSlot:()=>ma,resolveComponent:()=>oa,resolveDirective:()=>la,resolveDynamicComponent:()=>ca,resolveFilter:()=>null,resolveTransitionHooks:()=>Zr,setBlockTracking:()=>fs,setDevtoolsHook:()=>fc,setTransitionHooks:()=>ei,shallowReactive:()=>qt,shallowReadonly:()=>Yt,shallowRef:()=>on,ssrContextKey:()=>vr,ssrUtils:()=>pc,stop:()=>Je,toDisplayString:()=>Te,toHandlerKey:()=>j,toHandlers:()=>ga,toRaw:()=>I,toRef:()=>yn,toRefs:()=>gn,toValue:()=>dn,transformVNodeArgs:()=>vs,triggerRef:()=>ln,unref:()=>un,useAttrs:()=>Aa,useCssModule:()=>jl,useCssVars:()=>Yc,useHost:()=>kl,useId:()=>ri,useModel:()=>no,useSSRContext:()=>yr,useShadowRoot:()=>Al,useSlots:()=>ka,useTemplateRef:()=>ai,useTransitionState:()=>Ur,vModelCheckbox:()=>Yl,vModelDynamic:()=>ru,vModelRadio:()=>Zl,vModelSelect:()=>Ql,vModelText:()=>Jl,vShow:()=>Gc,version:()=>cc,warn:()=>lc,watch:()=>Cr,watchEffect:()=>br,watchPostEffect:()=>xr,watchSyncEffect:()=>Sr,withAsyncContext:()=>Ia,withCtx:()=>fr,withDefaults:()=>Oa,withDirectives:()=>pr,withKeys:()=>du,withMemo:()=>oc,withModifiers:()=>lu,withScopeId:()=>dr}),Eu=()=>{},Du=typeof window<`u`,Ou=(e,t=!1)=>t?Symbol.for(e):Symbol(e),ku=(e,t,n)=>Au({l:e,k:t,s:n}),Au=e=>JSON.stringify(e).replace(/\u2028/g,`\\u2028`).replace(/\u2029/g,`\\u2029`).replace(/\u0027/g,`\\u0027`),U=e=>typeof e==`number`&&isFinite(e),ju=e=>Vu(e)===`[object Date]`,Mu=e=>Vu(e)===`[object RegExp]`,Nu=e=>Z(e)&&Object.keys(e).length===0,W=Object.assign,Pu=Object.create,G=(e=null)=>Pu(e),Fu,Iu=()=>Fu||=typeof globalThis<`u`?globalThis:typeof self<`u`?self:typeof window<`u`?window:typeof global<`u`?global:G(),Lu=Object.prototype.hasOwnProperty;function Ru(e,t){return Lu.call(e,t)}var K=Array.isArray,q=e=>typeof e==`function`,J=e=>typeof e==`string`,Y=e=>typeof e==`boolean`,X=e=>typeof e==`object`&&!!e,zu=e=>X(e)&&q(e.then)&&q(e.catch),Bu=Object.prototype.toString,Vu=e=>Bu.call(e),Z=e=>Vu(e)===`[object Object]`,Hu=e=>e==null?``:K(e)||Z(e)&&e.toString===Bu?JSON.stringify(e,null,2):String(e);function Uu(e,t=``){return e.reduce((e,n,r)=>r===0?e+n:e+t+n,``)}function Wu(e,t){typeof console<`u`&&(console.warn(`[intlify] `+e),t&&console.warn(t.stack))}function Gu(e){return e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`).replace(/'/g,`&apos;`).replace(/\//g,`&#x2F;`).replace(/=/g,`&#x3D;`)}function Ku(e){return e.replace(/&(?![a-z0-9#]{2,6};)/gi,`&amp;`).replace(/"/g,`&quot;`).replace(/'/g,`&apos;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`)}var qu=/^javascript:/i,Ju=/^(?:href|src|action|formaction)$/i,Yu=/&#(?:x([0-9a-f]+)|(\d+));?/gi,Xu=/&(?:Tab|NewLine);/g,Zu=/&colon;?/gi,Qu=/[\u0000-\u0020\u007f-\u009f]/g,$u=/(?:^|[\s"'<>/])on\w+\s*=\s*["']?[^"'>]+["']?/i,ed=/(^|[\s"'<>/])on(\w+\s*=)/gi,td=/(^|[\s"'<>/])((?:href|src|action|formaction)\s*=\s*)([^\s"'=<>`]+)/gi;function nd(e,t,n){let r=t||n;if(!r)return e;let i=Number.parseInt(r,t?16:10);return i<=127?String.fromCharCode(i):e}function rd(e){let t=e.replace(Yu,nd).replace(Xu,``).replace(Zu,`:`).replace(Qu,``);return qu.test(t)}function id(e){let t=/url\s*\(/gi,n=``,r=0,i;for(;(i=t.exec(e))!==null;){let a=i.index,o=t.lastIndex-1,s=o+1,c=1,l=null;for(;s<e.length;s++){let t=e[s];if(l){t===l&&(l=null);continue}if(t===`"`||t===`'`)l=t;else if(t===`(`)c++;else if(t===`)`&&(c--,c===0))break}if(c!==0)break;let u=e.slice(o+1,s).trim(),d=u.startsWith(`"`)&&u.endsWith(`"`)||u.startsWith(`'`)&&u.endsWith(`'`)?u.slice(1,-1).trim():u;n+=e.slice(r,a),n+=rd(d)?`url(about:blank)`:e.slice(a,s+1),r=s+1}return n+e.slice(r)}function ad(e,t){return Ju.test(e)&&rd(t)?`about:blank`:Ku(e.toLowerCase()===`style`?id(t):t)}function od(e){return e=e.replace(/([\w:-]+)\s*=\s*"([^"]*)"/g,(e,t,n)=>`${t}="${ad(t,n)}"`),e=e.replace(/([\w:-]+)\s*=\s*'([^']*)'/g,(e,t,n)=>`${t}='${ad(t,n)}'`),$u.test(e)&&(e=e.replace(ed,`$1&#111;n$2`)),e=e.replace(td,(e,t,n,r)=>rd(r)?`${t}${n}about:blank`:e),e}var sd=e=>!X(e)||K(e);function cd(e,t){if(sd(e)||sd(t))throw Error(`Invalid value`);let n=[{src:e,des:t}];for(;n.length;){let{src:e,des:t}=n.pop();Object.keys(e).forEach(r=>{r!==`__proto__`&&(X(e[r])&&!X(t[r])&&(t[r]=Array.isArray(e[r])?[]:G()),sd(t[r])||sd(e[r])?t[r]=e[r]:n.push({src:e[r],des:t[r]}))})}}function ld(e,t,n){return{line:e,column:t,offset:n}}function ud(e,t,n){let r={start:e,end:t};return n!=null&&(r.source=n),r}var Q={EXPECTED_TOKEN:1,INVALID_TOKEN_IN_PLACEHOLDER:2,UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER:3,UNKNOWN_ESCAPE_SEQUENCE:4,INVALID_UNICODE_ESCAPE_SEQUENCE:5,UNBALANCED_CLOSING_BRACE:6,UNTERMINATED_CLOSING_BRACE:7,EMPTY_PLACEHOLDER:8,NOT_ALLOW_NEST_PLACEHOLDER:9,INVALID_LINKED_FORMAT:10,MUST_HAVE_MESSAGES_IN_PLURAL:11,UNEXPECTED_EMPTY_LINKED_MODIFIER:12,UNEXPECTED_EMPTY_LINKED_KEY:13,UNEXPECTED_LEXICAL_ANALYSIS:14,UNHANDLED_CODEGEN_NODE_TYPE:15,UNHANDLED_MINIFIER_NODE_TYPE:16};Q.EXPECTED_TOKEN,Q.INVALID_TOKEN_IN_PLACEHOLDER,Q.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER,Q.UNKNOWN_ESCAPE_SEQUENCE,Q.INVALID_UNICODE_ESCAPE_SEQUENCE,Q.UNBALANCED_CLOSING_BRACE,Q.UNTERMINATED_CLOSING_BRACE,Q.EMPTY_PLACEHOLDER,Q.NOT_ALLOW_NEST_PLACEHOLDER,Q.INVALID_LINKED_FORMAT,Q.MUST_HAVE_MESSAGES_IN_PLURAL,Q.UNEXPECTED_EMPTY_LINKED_MODIFIER,Q.UNEXPECTED_EMPTY_LINKED_KEY,Q.UNEXPECTED_LEXICAL_ANALYSIS,Q.UNHANDLED_CODEGEN_NODE_TYPE,Q.UNHANDLED_MINIFIER_NODE_TYPE;function dd(e,t,n={}){let{domain:r,messages:i,args:a}=n,o=SyntaxError(String(e));return o.code=e,t&&(o.location=t),o.domain=r,o}function fd(e){throw e}var pd=` `,md=`\r`,hd=`
5
5
  `,gd=`\u2028`,_d=`\u2029`;function vd(e){let t=e,n=0,r=1,i=1,a=0,o=e=>t[e]===md&&t[e+1]===hd,s=e=>t[e]===hd,c=e=>t[e]===_d,l=e=>t[e]===gd,u=e=>o(e)||s(e)||c(e)||l(e),d=()=>n,f=()=>r,p=()=>i,m=()=>a,h=e=>o(e)||c(e)||l(e)?hd:t[e],g=()=>h(n),_=()=>h(n+a);function v(){return a=0,u(n)&&(r++,i=0),o(n)&&n++,n++,i++,t[n]}function y(){return o(n+a)&&a++,a++,t[n+a]}function b(){n=0,r=1,i=1,a=0}function x(e=0){a=e}function S(){let e=n+a;for(;e!==n;)v();a=0}return{index:d,line:f,column:p,peekOffset:m,charAt:h,currentChar:g,currentPeek:_,next:v,peek:y,reset:b,resetPeek:x,skipToPeek:S}}var yd=void 0,bd=`'`,xd=`tokenizer`;function Sd(e,t={}){let n=t.location!==!1,r=vd(e),i=()=>r.index(),a=()=>ld(r.line(),r.column(),r.index()),o=a(),s=i(),c={currentType:13,offset:s,startLoc:o,endLoc:o,lastType:13,lastOffset:s,lastStartLoc:o,lastEndLoc:o,braceNest:0,inLinked:!1,text:``},l=()=>c,{onError:u}=t;function d(e,t,r,...i){let a=l();if(t.column+=r,t.offset+=r,u){let r=dd(e,n?ud(a.startLoc,t):null,{domain:xd,args:i});u(r)}}function f(e,t,r){e.endLoc=a(),e.currentType=t;let i={type:t};return n&&(i.loc=ud(e.startLoc,e.endLoc)),r!=null&&(i.value=r),i}let p=e=>f(e,13);function m(e,t){return e.currentChar()===t?(e.next(),t):(d(Q.EXPECTED_TOKEN,a(),0,t),``)}function h(e){let t=``;for(;e.currentPeek()===pd||e.currentPeek()===hd;)t+=e.currentPeek(),e.peek();return t}function g(e){let t=h(e);return e.skipToPeek(),t}function _(e){if(e===yd)return!1;let t=e.charCodeAt(0);return t>=97&&t<=122||t>=65&&t<=90||t===95}function v(e){if(e===yd)return!1;let t=e.charCodeAt(0);return t>=48&&t<=57}function y(e,t){let{currentType:n}=t;if(n!==2)return!1;h(e);let r=_(e.currentPeek());return e.resetPeek(),r}function b(e,t){let{currentType:n}=t;if(n!==2)return!1;h(e);let r=v(e.currentPeek()===`-`?e.peek():e.currentPeek());return e.resetPeek(),r}function x(e,t){let{currentType:n}=t;if(n!==2)return!1;h(e);let r=e.currentPeek()===bd;return e.resetPeek(),r}function S(e,t){let{currentType:n}=t;if(n!==7)return!1;h(e);let r=e.currentPeek()===`.`;return e.resetPeek(),r}function C(e,t){let{currentType:n}=t;if(n!==8)return!1;h(e);let r=_(e.currentPeek());return e.resetPeek(),r}function w(e,t){let{currentType:n}=t;if(!(n===7||n===11))return!1;h(e);let r=e.currentPeek()===`:`;return e.resetPeek(),r}function T(e,t){let{currentType:n}=t;if(n!==9)return!1;let r=()=>{let t=e.currentPeek();return t===`{`?_(e.peek()):t===`@`||t===`|`||t===`:`||t===`.`||t===pd||!t?!1:t===hd?(e.peek(),r()):D(e,!1)},i=r();return e.resetPeek(),i}function E(e){h(e);let t=e.currentPeek()===`|`;return e.resetPeek(),t}function D(e,t=!0){let n=(t=!1,r=``)=>{let i=e.currentPeek();return i===`{`||i===`@`||!i?t:i===`|`?!(r===pd||r===hd):i===pd?(e.peek(),n(!0,pd)):i===hd?(e.peek(),n(!0,hd)):!0},r=n();return t&&e.resetPeek(),r}function O(e,t){let n=e.currentChar();if(n!==yd)return t(n)?(e.next(),n):null}function ee(e){let t=e.charCodeAt(0);return t>=97&&t<=122||t>=65&&t<=90||t>=48&&t<=57||t===95||t===36}function te(e){return O(e,ee)}function k(e){let t=e.charCodeAt(0);return t>=97&&t<=122||t>=65&&t<=90||t>=48&&t<=57||t===95||t===36||t===45}function ne(e){return O(e,k)}function A(e){let t=e.charCodeAt(0);return t>=48&&t<=57}function re(e){return O(e,A)}function j(e){let t=e.charCodeAt(0);return t>=48&&t<=57||t>=65&&t<=70||t>=97&&t<=102}function M(e){return O(e,j)}function ie(e){let t=``,n=``;for(;t=re(e);)n+=t;return n}function ae(e){let t=``;for(;;){let n=e.currentChar();if(n===`\\`){let r=e.peek();r===`{`||r===`}`||r===`@`||r===`|`||r===`\\`?(t+=n+r,e.next(),e.next()):(e.resetPeek(),t+=n,e.next())}else if(n===`{`||n===`}`||n===`@`||n===`|`||!n)break;else if(n===pd||n===hd)if(D(e))t+=n,e.next();else if(E(e))break;else t+=n,e.next();else t+=n,e.next()}return t}function oe(e){g(e);let t=``,n=``;for(;t=ne(e);)n+=t;let r=e.currentChar();if(r&&r!==`}`&&r!==yd&&r!==pd&&r!==hd&&r!==` `){let t=pe(e);return d(Q.INVALID_TOKEN_IN_PLACEHOLDER,a(),0,n+t),n+t}return e.currentChar()===yd&&d(Q.UNTERMINATED_CLOSING_BRACE,a(),0),n}function se(e){g(e);let t=``;return e.currentChar()===`-`?(e.next(),t+=`-${ie(e)}`):t+=ie(e),e.currentChar()===yd&&d(Q.UNTERMINATED_CLOSING_BRACE,a(),0),t}function ce(e){return e!==bd&&e!==hd}function le(e){g(e),m(e,`'`);let t=``,n=``;for(;t=O(e,ce);)t===`\\`?n+=ue(e):n+=t;let r=e.currentChar();return r===hd||r===yd?(d(Q.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER,a(),0),r===hd&&(e.next(),m(e,`'`)),n):(m(e,`'`),n)}function ue(e){let t=e.currentChar();switch(t){case`\\`:case`'`:return e.next(),`\\${t}`;case`u`:return de(e,t,4);case`U`:return de(e,t,6);default:return d(Q.UNKNOWN_ESCAPE_SEQUENCE,a(),0,t),``}}function de(e,t,n){m(e,t);let r=``;for(let i=0;i<n;i++){let n=M(e);if(!n){d(Q.INVALID_UNICODE_ESCAPE_SEQUENCE,a(),0,`\\${t}${r}${e.currentChar()}`);break}r+=n}return`\\${t}${r}`}function fe(e){return e!==`{`&&e!==`}`&&e!==pd&&e!==hd}function pe(e){g(e);let t=``,n=``;for(;t=O(e,fe);)n+=t;return n}function me(e){let t=``,n=``;for(;t=te(e);)n+=t;return n}function he(e){let t=n=>{let r=e.currentChar();return r===`{`||r===`@`||r===`|`||r===`(`||r===`)`||!r||r===pd?n:(n+=r,e.next(),t(n))};return t(``)}function ge(e){g(e);let t=m(e,`|`);return g(e),t}function _e(e,t){let n=null;switch(e.currentChar()){case`{`:return t.braceNest>=1&&d(Q.NOT_ALLOW_NEST_PLACEHOLDER,a(),0),e.next(),n=f(t,2,`{`),g(e),t.braceNest++,n;case`}`:return t.braceNest>0&&t.currentType===2&&d(Q.EMPTY_PLACEHOLDER,a(),0),e.next(),n=f(t,3,`}`),t.braceNest--,t.braceNest>0&&g(e),t.inLinked&&t.braceNest===0&&(t.inLinked=!1),n;case`@`:return t.braceNest>0&&d(Q.UNTERMINATED_CLOSING_BRACE,a(),0),n=ve(e,t)||p(t),t.braceNest=0,n;default:{let r=!0,i=!0,o=!0;if(E(e))return t.braceNest>0&&d(Q.UNTERMINATED_CLOSING_BRACE,a(),0),n=f(t,1,ge(e)),t.braceNest=0,t.inLinked=!1,n;if(t.braceNest>0&&(t.currentType===4||t.currentType===5||t.currentType===6))return d(Q.UNTERMINATED_CLOSING_BRACE,a(),0),t.braceNest=0,ye(e,t);if(r=y(e,t))return n=f(t,4,oe(e)),g(e),n;if(i=b(e,t))return n=f(t,5,se(e)),g(e),n;if(o=x(e,t))return n=f(t,6,le(e)),g(e),n;if(!r&&!i&&!o)return n=f(t,12,pe(e)),d(Q.INVALID_TOKEN_IN_PLACEHOLDER,a(),0,n.value),g(e),n;break}}return n}function ve(e,t){let{currentType:n}=t,r=null,i=e.currentChar();switch((n===7||n===8||n===11||n===9)&&(i===hd||i===pd)&&d(Q.INVALID_LINKED_FORMAT,a(),0),i){case`@`:return e.next(),r=f(t,7,`@`),t.inLinked=!0,r;case`.`:return g(e),e.next(),f(t,8,`.`);case`:`:return g(e),e.next(),f(t,9,`:`);default:return E(e)?(r=f(t,1,ge(e)),t.braceNest=0,t.inLinked=!1,r):S(e,t)||w(e,t)?(g(e),ve(e,t)):C(e,t)?(g(e),f(t,11,me(e))):T(e,t)?(g(e),i===`{`?_e(e,t)||r:f(t,10,he(e))):(n===7&&d(Q.INVALID_LINKED_FORMAT,a(),0),t.braceNest=0,t.inLinked=!1,ye(e,t))}}function ye(e,t){let n={type:13};if(t.braceNest>0)return _e(e,t)||p(t);if(t.inLinked)return ve(e,t)||p(t);switch(e.currentChar()){case`{`:return _e(e,t)||p(t);case`}`:return d(Q.UNBALANCED_CLOSING_BRACE,a(),0),e.next(),f(t,3,`}`);case`@`:return ve(e,t)||p(t);default:if(E(e))return n=f(t,1,ge(e)),t.braceNest=0,t.inLinked=!1,n;if(D(e))return f(t,0,ae(e));break}return n}function be(){let{currentType:e,offset:t,startLoc:n,endLoc:o}=c;return c.lastType=e,c.lastOffset=t,c.lastStartLoc=n,c.lastEndLoc=o,c.offset=i(),c.startLoc=a(),r.currentChar()===yd?f(c,13):ye(r,c)}return{nextToken:be,currentOffset:i,currentPosition:a,context:l}}var Cd=`parser`,wd=/(?:\\\\|\\'|\\u([0-9a-fA-F]{4})|\\U([0-9a-fA-F]{6}))/g,Td=/\\([\\@{}|])/g;function Ed(e,t){return t}function Dd(e,t,n){switch(e){case`\\\\`:return`\\`;case`\\'`:return`'`;default:{let e=parseInt(t||n,16);return e<=55295||e>=57344?String.fromCodePoint(e):`�`}}}function Od(e={}){let t=e.location!==!1,{onError:n}=e;function r(e,r,i,a,...o){let s=e.currentPosition();if(s.offset+=a,s.column+=a,n){let e=dd(r,t?ud(i,s):null,{domain:Cd,args:o});n(e)}}function i(e,n,r){let i={type:e};return t&&(i.start=n,i.end=n,i.loc={start:r,end:r}),i}function a(e,n,r,i){t&&(e.end=n,e.loc&&(e.loc.end=r))}function o(e,t){let n=e.context(),r=i(3,n.offset,n.startLoc);return r.value=t.replace(Td,Ed),a(r,e.currentOffset(),e.currentPosition()),r}function s(e,t){let{lastOffset:n,lastStartLoc:r}=e.context(),o=i(5,n,r);return o.index=parseInt(t,10),e.nextToken(),a(o,e.currentOffset(),e.currentPosition()),o}function c(e,t){let{lastOffset:n,lastStartLoc:r}=e.context(),o=i(4,n,r);return o.key=t,e.nextToken(),a(o,e.currentOffset(),e.currentPosition()),o}function l(e,t){let{lastOffset:n,lastStartLoc:r}=e.context(),o=i(9,n,r);return o.value=t.replace(wd,Dd),e.nextToken(),a(o,e.currentOffset(),e.currentPosition()),o}function u(e){let t=e.nextToken(),n=e.context(),{lastOffset:o,lastStartLoc:s}=n,c=i(8,o,s);return t.type===11?(t.value??r(e,Q.UNEXPECTED_LEXICAL_ANALYSIS,n.lastStartLoc,0,kd(t)),c.value=t.value||``,a(c,e.currentOffset(),e.currentPosition()),{node:c}):(r(e,Q.UNEXPECTED_EMPTY_LINKED_MODIFIER,n.lastStartLoc,0),c.value=``,a(c,o,s),{nextConsumeToken:t,node:c})}function d(e,t){let n=e.context(),r=i(7,n.offset,n.startLoc);return r.value=t,a(r,e.currentOffset(),e.currentPosition()),r}function f(e){let t=e.context(),n=i(6,t.offset,t.startLoc),o=e.nextToken();if(o.type===8){let t=u(e);n.modifier=t.node,o=t.nextConsumeToken||e.nextToken()}switch(o.type!==9&&r(e,Q.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,0,kd(o)),o=e.nextToken(),o.type===2&&(o=e.nextToken()),o.type){case 10:o.value??r(e,Q.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,0,kd(o)),n.key=d(e,o.value||``);break;case 4:o.value??r(e,Q.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,0,kd(o)),n.key=c(e,o.value||``);break;case 5:o.value??r(e,Q.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,0,kd(o)),n.key=s(e,o.value||``);break;case 6:o.value??r(e,Q.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,0,kd(o)),n.key=l(e,o.value||``);break;default:{r(e,Q.UNEXPECTED_EMPTY_LINKED_KEY,t.lastStartLoc,0);let s=e.context(),c=i(7,s.offset,s.startLoc);return c.value=``,a(c,s.offset,s.startLoc),n.key=c,a(n,s.offset,s.startLoc),{nextConsumeToken:o,node:n}}}return a(n,e.currentOffset(),e.currentPosition()),{node:n}}function p(e){let t=e.context(),n=i(2,t.currentType===1?e.currentOffset():t.offset,t.currentType===1?t.endLoc:t.startLoc);n.items=[];let u=null;do{let i=u||e.nextToken();switch(u=null,i.type){case 0:i.value??r(e,Q.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,0,kd(i)),n.items.push(o(e,i.value||``));break;case 5:i.value??r(e,Q.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,0,kd(i)),n.items.push(s(e,i.value||``));break;case 4:i.value??r(e,Q.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,0,kd(i)),n.items.push(c(e,i.value||``));break;case 6:i.value??r(e,Q.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,0,kd(i)),n.items.push(l(e,i.value||``));break;case 7:{let t=f(e);n.items.push(t.node),u=t.nextConsumeToken||null;break}}}while(t.currentType!==13&&t.currentType!==1);return a(n,t.currentType===1?t.lastOffset:e.currentOffset(),t.currentType===1?t.lastEndLoc:e.currentPosition()),n}function m(e,t,n,o){let s=e.context(),c=o.items.length===0,l=i(1,t,n);l.cases=[],l.cases.push(o);do{let t=p(e);c||=t.items.length===0,l.cases.push(t)}while(s.currentType!==13);return c&&r(e,Q.MUST_HAVE_MESSAGES_IN_PLURAL,n,0),a(l,e.currentOffset(),e.currentPosition()),l}function h(e){let t=e.context(),{offset:n,startLoc:r}=t,i=p(e);return t.currentType===13?i:m(e,n,r,i)}function g(n){let o=Sd(n,W({},e)),s=o.context(),c=i(0,s.offset,s.startLoc);return t&&c.loc&&(c.loc.source=n),c.body=h(o),e.onCacheKey&&(c.cacheKey=e.onCacheKey(n)),s.currentType!==13&&r(o,Q.UNEXPECTED_LEXICAL_ANALYSIS,s.lastStartLoc,0,n[s.offset]||``),a(c,o.currentOffset(),o.currentPosition()),c}return{parse:g}}function kd(e){if(e.type===13)return`EOF`;let t=(e.value||``).replace(/\r?\n/gu,`\\n`);return t.length>10?t.slice(0,9)+`…`:t}function Ad(e,t={}){let n={ast:e,helpers:new Set};return{context:()=>n,helper:e=>(n.helpers.add(e),e)}}function jd(e,t){for(let n=0;n<e.length;n++)Md(e[n],t)}function Md(e,t){switch(e.type){case 1:jd(e.cases,t),t.helper(`plural`);break;case 2:jd(e.items,t);break;case 6:Md(e.key,t),t.helper(`linked`),t.helper(`type`);break;case 5:t.helper(`interpolate`),t.helper(`list`);break;case 4:t.helper(`interpolate`),t.helper(`named`);break}}function Nd(e,t={}){let n=Ad(e);n.helper(`normalize`),e.body&&Md(e.body,n);let r=n.context();e.helpers=Array.from(r.helpers)}function Pd(e){let t=e.body;return t.type===2?Fd(t):t.cases.forEach(e=>Fd(e)),e}function Fd(e){if(e.items.length===1){let t=e.items[0];(t.type===3||t.type===9)&&(e.static=t.value,delete t.value)}else{let t=[];for(let n=0;n<e.items.length;n++){let r=e.items[n];if(!(r.type===3||r.type===9)||r.value==null)break;t.push(r.value)}if(t.length===e.items.length){e.static=Uu(t);for(let t=0;t<e.items.length;t++){let n=e.items[t];(n.type===3||n.type===9)&&delete n.value}}}}function Id(e){switch(e.t=e.type,e.type){case 0:{let t=e;Id(t.body),t.b=t.body,delete t.body;break}case 1:{let t=e,n=t.cases;for(let e=0;e<n.length;e++)Id(n[e]);t.c=n,delete t.cases;break}case 2:{let t=e,n=t.items;for(let e=0;e<n.length;e++)Id(n[e]);t.i=n,delete t.items,t.static&&(t.s=t.static,delete t.static);break}case 3:case 9:case 8:case 7:{let t=e;t.value&&(t.v=t.value,delete t.value);break}case 6:{let t=e;Id(t.key),t.k=t.key,delete t.key,t.modifier&&(Id(t.modifier),t.m=t.modifier,delete t.modifier);break}case 5:{let t=e;t.i=t.index,delete t.index;break}case 4:{let t=e;t.k=t.key,delete t.key;break}default:}delete e.type}function Ld(e,t){let{filename:n,breakLineCode:r,needIndent:i}=t,a=t.location!==!1,o={filename:n,code:``,column:1,line:1,offset:0,map:void 0,breakLineCode:r,needIndent:i,indentLevel:0};a&&e.loc&&(o.source=e.loc.source);let s=()=>o;function c(e,t){o.code+=e}function l(e,t=!0){let n=t?r:``;c(i?n+` `.repeat(e):n)}function u(e=!0){let t=++o.indentLevel;e&&l(t)}function d(e=!0){let t=--o.indentLevel;e&&l(t)}function f(){l(o.indentLevel)}return{context:s,push:c,indent:u,deindent:d,newline:f,helper:e=>`_${e}`,needIndent:()=>o.needIndent}}function Rd(e,t){let{helper:n}=e;e.push(`${n(`linked`)}(`),Hd(e,t.key),t.modifier?(e.push(`, `),Hd(e,t.modifier),e.push(`, _type`)):e.push(`, undefined, _type`),e.push(`)`)}function zd(e,t){let{helper:n,needIndent:r}=e;e.push(`${n(`normalize`)}([`),e.indent(r());let i=t.items.length;for(let n=0;n<i&&(Hd(e,t.items[n]),n!==i-1);n++)e.push(`, `);e.deindent(r()),e.push(`])`)}function Bd(e,t){let{helper:n,needIndent:r}=e;if(t.cases.length>1){e.push(`${n(`plural`)}([`),e.indent(r());let i=t.cases.length;for(let n=0;n<i&&(Hd(e,t.cases[n]),n!==i-1);n++)e.push(`, `);e.deindent(r()),e.push(`])`)}}function Vd(e,t){t.body?Hd(e,t.body):e.push(`null`)}function Hd(e,t){let{helper:n}=e;switch(t.type){case 0:Vd(e,t);break;case 1:Bd(e,t);break;case 2:zd(e,t);break;case 6:Rd(e,t);break;case 8:e.push(JSON.stringify(t.value),t);break;case 7:e.push(JSON.stringify(t.value),t);break;case 5:e.push(`${n(`interpolate`)}(${n(`list`)}(${t.index}))`,t);break;case 4:e.push(`${n(`interpolate`)}(${n(`named`)}(${JSON.stringify(t.key)}))`,t);break;case 9:e.push(JSON.stringify(t.value),t);break;case 3:e.push(JSON.stringify(t.value),t);break;default:}}var Ud=(e,t={})=>{let n=J(t.mode)?t.mode:`normal`,r=J(t.filename)?t.filename:`message.intl`;t.sourceMap;let i=t.breakLineCode==null?n===`arrow`?`;`:`
6
- `:t.breakLineCode,a=t.needIndent?t.needIndent:n!==`arrow`,o=e.helpers||[],s=Ld(e,{filename:r,breakLineCode:i,needIndent:a});s.push(n===`normal`?`function __msg__ (ctx) {`:`(ctx) => {`),s.indent(a),o.length>0&&(s.push(`const { ${Uu(o.map(e=>`${e}: _${e}`),`, `)} } = ctx`),s.newline()),s.push(`return `),Hd(s,e),s.deindent(a),s.push(`}`),delete e.helpers;let{code:c,map:l}=s.context();return{ast:e,code:c,map:l?l.toJSON():void 0}};function Wd(e,t={}){let n=W({},t),r=!!n.jit,i=!!n.minify,a=n.optimize==null||n.optimize,o=Od(n).parse(e);return r?(a&&Pd(o),i&&Id(o),{ast:o,code:``}):(Nd(o,n),Ud(o,n))}function Gd(){typeof __INTLIFY_PROD_DEVTOOLS__!=`boolean`&&(Iu().__INTLIFY_PROD_DEVTOOLS__=!1),typeof __INTLIFY_DROP_MESSAGE_COMPILER__!=`boolean`&&(Iu().__INTLIFY_DROP_MESSAGE_COMPILER__=!1)}function Kd(e){return X(e)&&nf(e)===0&&(Ru(e,`b`)||Ru(e,`body`))}var qd=[`b`,`body`];function Jd(e){return uf(e,qd)}var Yd=[`c`,`cases`];function Xd(e){return uf(e,Yd,[])}var Zd=[`s`,`static`];function Qd(e){return uf(e,Zd)}var $d=[`i`,`items`];function ef(e){return uf(e,$d,[])}var tf=[`t`,`type`];function nf(e){return uf(e,tf)}var rf=[`v`,`value`];function af(e,t){let n=uf(e,rf);if(n!=null)return n;throw ff(t)}var of=[`m`,`modifier`];function sf(e){return uf(e,of)}var cf=[`k`,`key`];function lf(e){let t=uf(e,cf);if(t)return t;throw ff(6)}function uf(e,t,n){for(let n=0;n<t.length;n++){let r=t[n];if(Ru(e,r)&&e[r]!=null)return e[r]}return n}var df=[...qd,...Yd,...Zd,...$d,...cf,...of,...rf,...tf];function ff(e){return Error(`unhandled node type: ${e}`)}function pf(e){return t=>mf(t,e)}function mf(e,t){let n=Jd(t);if(n==null)throw ff(0);if(nf(n)===1){let t=Xd(n);return e.plural(t.reduce((t,n)=>[...t,hf(e,n)],[]))}else return hf(e,n)}function hf(e,t){let n=Qd(t);if(n!=null)return e.type===`text`?n:e.normalize([n]);{let n=ef(t).reduce((t,n)=>[...t,gf(e,n)],[]);return e.normalize(n)}}function gf(e,t){let n=nf(t);switch(n){case 3:return af(t,n);case 9:return af(t,n);case 4:{let r=t;if(Ru(r,`k`)&&r.k)return e.interpolate(e.named(r.k));if(Ru(r,`key`)&&r.key)return e.interpolate(e.named(r.key));throw ff(n)}case 5:{let r=t;if(Ru(r,`i`)&&U(r.i))return e.interpolate(e.list(r.i));if(Ru(r,`index`)&&U(r.index))return e.interpolate(e.list(r.index));throw ff(n)}case 6:{let n=t,r=sf(n),i=lf(n);return e.linked(gf(e,i),r?gf(e,r):void 0,e.type)}case 7:return af(t,n);case 8:return af(t,n);default:throw Error(`unhandled node on format message part: ${n}`)}}var _f=e=>e,vf=G();function yf(e,t={}){let n=!1,r=t.onError||fd;return t.onError=e=>{n=!0,r(e)},{...Wd(e,t),detectError:n}}function bf(e,t){if(!__INTLIFY_DROP_MESSAGE_COMPILER__&&J(e)){Y(t.warnHtmlMessage)&&t.warnHtmlMessage;let n=(t.onCacheKey||_f)(e),r=vf[n];if(r)return r;let{ast:i,detectError:a}=yf(e,{...t,location:!1,jit:!0}),o=pf(i);return a?o:vf[n]=o}else{let t=e.cacheKey;return t?vf[t]||(vf[t]=pf(e)):pf(e)}}var xf=null;function Sf(e){xf=e}function Cf(e,t,n){xf&&xf.emit(`i18n:init`,{timestamp:Date.now(),i18n:e,version:t,meta:n})}var wf=Tf(`function:translate`);function Tf(e){return t=>xf&&xf.emit(e,t)}var Ef={INVALID_ARGUMENT:17,INVALID_DATE_ARGUMENT:18,INVALID_ISO_DATE_ARGUMENT:19,NOT_SUPPORT_NON_STRING_MESSAGE:20,NOT_SUPPORT_LOCALE_PROMISE_VALUE:21,NOT_SUPPORT_LOCALE_ASYNC_FUNCTION:22,NOT_SUPPORT_LOCALE_TYPE:23};function Df(e){return dd(e,null,void 0)}Ef.INVALID_ARGUMENT,Ef.INVALID_DATE_ARGUMENT,Ef.INVALID_ISO_DATE_ARGUMENT,Ef.NOT_SUPPORT_NON_STRING_MESSAGE,Ef.NOT_SUPPORT_LOCALE_PROMISE_VALUE,Ef.NOT_SUPPORT_LOCALE_ASYNC_FUNCTION,Ef.NOT_SUPPORT_LOCALE_TYPE;function Of(e,t){return t.locale==null?Af(e.locale):Af(t.locale)}var kf;function Af(e){if(J(e))return e;if(q(e)){if(e.resolvedOnce&&kf!=null)return kf;if(e.constructor.name===`Function`){let t=e();if(zu(t))throw Df(Ef.NOT_SUPPORT_LOCALE_PROMISE_VALUE);return kf=t}else throw Df(Ef.NOT_SUPPORT_LOCALE_ASYNC_FUNCTION)}else throw Df(Ef.NOT_SUPPORT_LOCALE_TYPE)}function jf(e,t,n){return[...new Set([n,...K(t)?t:X(t)?Object.keys(t):J(t)?[t]:[n]])]}function Mf(e,t,n){let r=J(n)?n:Jf,i=e;i.__localeChainCache||=new Map;let a=i.__localeChainCache.get(r);if(!a){a=[];let e=[n];for(;K(e);)e=Nf(a,e,t);let o=K(t)||!Z(t)?t:t.default?t.default:null;e=J(o)?[o]:o,K(e)&&Nf(a,e,!1),i.__localeChainCache.set(r,a)}return a}function Nf(e,t,n){let r=!0;for(let i=0;i<t.length&&Y(r);i++){let a=t[i];J(a)&&(r=Pf(e,t[i],n))}return r}function Pf(e,t,n){let r,i=t.split(`-`);do r=Ff(e,i.join(`-`),n),i.splice(-1,1);while(i.length&&r===!0);return r}function Ff(e,t,n){let r=!1;if(!e.includes(t)&&(r=!0,t)){r=t[t.length-1]!==`!`;let i=t.replace(/!/g,``);e.push(i),(K(n)||Z(n))&&n[i]&&(r=n[i])}return r}var If=[];If[0]={w:[0],i:[3,0],"[":[4],o:[7]},If[1]={w:[1],".":[2],"[":[4],o:[7]},If[2]={w:[2],i:[3,0],0:[3,0]},If[3]={i:[3,0],0:[3,0],w:[1,1],".":[2,1],"[":[4,1],o:[7,1]},If[4]={"'":[5,0],'"':[6,0],"[":[4,2],"]":[1,3],o:8,l:[4,0]},If[5]={"'":[4,0],o:8,l:[5,0]},If[6]={'"':[4,0],o:8,l:[6,0]};var Lf=/^\s?(?:true|false|-?[\d.]+|'[^']*'|"[^"]*")\s?$/;function Rf(e){return Lf.test(e)}function zf(e){let t=e.charCodeAt(0);return t===e.charCodeAt(e.length-1)&&(t===34||t===39)?e.slice(1,-1):e}function Bf(e){if(e==null)return`o`;switch(e.charCodeAt(0)){case 91:case 93:case 46:case 34:case 39:return e;case 95:case 36:case 45:return`i`;case 9:case 10:case 13:case 160:case 65279:case 8232:case 8233:return`w`}return`i`}function Vf(e){let t=e.trim();return e.charAt(0)===`0`&&isNaN(parseInt(e))?!1:Rf(t)?zf(t):`*`+t}function Hf(e){let t=[],n=-1,r=0,i=0,a,o,s,c,l,u,d,f=[];f[0]=()=>{o===void 0?o=s:o+=s},f[1]=()=>{o!==void 0&&(t.push(o),o=void 0)},f[2]=()=>{f[0](),i++},f[3]=()=>{if(i>0)i--,r=4,f[0]();else{if(i=0,o===void 0||(o=Vf(o),o===!1))return!1;f[1]()}};function p(){let t=e[n+1];if(r===5&&t===`'`||r===6&&t===`"`)return n++,s=`\\`+t,f[0](),!0}for(;r!==null;)if(n++,a=e[n],!(a===`\\`&&p())){if(c=Bf(a),d=If[r],l=d[c]||d.l||8,l===8||(r=l[0],l[1]!==void 0&&(u=f[l[1]],u&&(s=a,u()===!1))))return;if(r===7)return t}}var Uf=new Map;function Wf(e,t){return X(e)?e[t]:null}function Gf(e,t){if(!X(e))return null;let n=Uf.get(t);if(n||(n=Hf(t),n&&Uf.set(t,n)),!n)return null;let r=n.length,i=e,a=0;for(;a<r;){let e=n[a];if(df.includes(e)&&Kd(i)||!X(i)||!Ru(i,e))return null;let t=i[e];if(t===void 0||q(i))return null;i=t,a++}return i}var Kf={NOT_FOUND_KEY:1,FALLBACK_TO_TRANSLATE:2,CANNOT_FORMAT_NUMBER:3,FALLBACK_TO_NUMBER_FORMAT:4,CANNOT_FORMAT_DATE:5,FALLBACK_TO_DATE_FORMAT:6,EXPERIMENTAL_CUSTOM_MESSAGE_COMPILER:7,INVALID_NUMBER_ARGUMENT:8,INVALID_DATE_ARGUMENT:9};Kf.NOT_FOUND_KEY,Kf.FALLBACK_TO_TRANSLATE,Kf.CANNOT_FORMAT_NUMBER,Kf.FALLBACK_TO_NUMBER_FORMAT,Kf.CANNOT_FORMAT_DATE,Kf.FALLBACK_TO_DATE_FORMAT,Kf.EXPERIMENTAL_CUSTOM_MESSAGE_COMPILER,Kf.INVALID_NUMBER_ARGUMENT,Kf.INVALID_DATE_ARGUMENT;var qf=`11.4.8`,Jf=`en-US`,Yf=e=>`${e.charAt(0).toLocaleUpperCase()}${e.substr(1)}`;function Xf(){return{upper:(e,t)=>t===`text`&&J(e)?e.toUpperCase():t===`vnode`&&X(e)&&`__v_isVNode`in e?e.children.toUpperCase():e,lower:(e,t)=>t===`text`&&J(e)?e.toLowerCase():t===`vnode`&&X(e)&&`__v_isVNode`in e?e.children.toLowerCase():e,capitalize:(e,t)=>t===`text`&&J(e)?Yf(e):t===`vnode`&&X(e)&&`__v_isVNode`in e?Yf(e.children):e}}var Zf;function Qf(e){Zf=e}var $f;function ep(e){$f=e}var tp;function np(e){tp=e}var rp=null,ip=()=>rp,ap=null,op=e=>{ap=e},sp=()=>ap,cp=0;function lp(e={}){let t=q(e.onWarn)?e.onWarn:Wu,n=J(e.version)?e.version:qf,r=J(e.locale)||q(e.locale)?e.locale:Jf,i=q(r)?Jf:r,a=K(e.fallbackLocale)||Z(e.fallbackLocale)||J(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:i,o=Z(e.messages)?e.messages:up(i),s=Z(e.datetimeFormats)?e.datetimeFormats:up(i),c=Z(e.numberFormats)?e.numberFormats:up(i),l=W(G(),e.modifiers,Xf()),u=e.pluralRules||G(),d=q(e.missing)?e.missing:null,f=Y(e.missingWarn)||Mu(e.missingWarn)?e.missingWarn:!0,p=Y(e.fallbackWarn)||Mu(e.fallbackWarn)?e.fallbackWarn:!0,m=!!e.fallbackFormat,h=!!e.unresolving,g=q(e.postTranslation)?e.postTranslation:null,_=Z(e.processor)?e.processor:null,v=!Y(e.warnHtmlMessage)||e.warnHtmlMessage,y=!!e.escapeParameter,b=q(e.messageCompiler)?e.messageCompiler:Zf,x=q(e.messageResolver)?e.messageResolver:$f||Wf,S=q(e.localeFallbacker)?e.localeFallbacker:tp||jf,C=X(e.fallbackContext)?e.fallbackContext:void 0,w=e,T=X(w.__datetimeFormatters)?w.__datetimeFormatters:new Map,E=X(w.__numberFormatters)?w.__numberFormatters:new Map,D=X(w.__meta)?w.__meta:{};cp++;let O={version:n,cid:cp,locale:r,fallbackLocale:a,messages:o,modifiers:l,pluralRules:u,missing:d,missingWarn:f,fallbackWarn:p,fallbackFormat:m,unresolving:h,postTranslation:g,processor:_,warnHtmlMessage:v,escapeParameter:y,messageCompiler:b,messageResolver:x,localeFallbacker:S,fallbackContext:C,onWarn:t,__meta:D};return O.datetimeFormats=s,O.numberFormats=c,O.__datetimeFormatters=T,O.__numberFormatters=E,__INTLIFY_PROD_DEVTOOLS__&&Cf(O,n,D),O}var up=e=>({[e]:G()});function dp(e,t,n,r,i){let{missing:a,onWarn:o}=e;if(a!==null){let r=a(e,n,t,i);return J(r)?r:t}else return t}function fp(e,t,n){let r=e;r.__localeChainCache=new Map,e.localeFallbacker(e,n,t)}function pp(e,t){return e!==t&&e.split(`-`)[0]===t.split(`-`)[0]}function mp(e,t){let n=t.indexOf(e);if(n===-1)return!1;for(let r=n+1;r<t.length;r++)if(pp(e,t[r]))return!0;return!1}function hp(e,t,n,r,i,a,o){let{fallbackLocale:s,localeFallbacker:c,onWarn:l}=e,u=c(e,s,n);for(let n=0;n<u.length;n++){let a=u[n],s=(r[a]||{})[t];if(Z(s)&&J(a))return a;dp(e,t,a,i,o)}return null}function gp(e,t,n){let r=`${e}__${t}`;return Z(n)&&!Nu(n)&&(r=`${r}__${JSON.stringify(n)}`),r}function _p(e,t,n){for(let r in n){let n=`${t}__${r}`;for(let t of e.keys())(t===n||t.startsWith(`${n}__`))&&e.delete(t)}}function vp(e,t,n,r){let[,i,a,o]=e,s=n;return J(i)?t.key=i:Z(i)&&Object.keys(i).forEach(e=>{r.includes(e)?s[e]=i[e]:t[e]=i[e]}),J(a)?t.locale=a:Z(a)&&(s=a),Z(o)&&(s=o),s}var yp=typeof Intl<`u`;yp&&Intl.DateTimeFormat,yp&&Intl.NumberFormat;function bp(e,...t){let{datetimeFormats:n,unresolving:r,onWarn:i}=e,{__datetimeFormatters:a}=e;if(!J(t[0])&&!ju(t[0])&&!U(t[0]))return``;let[o,s,c,l]=Sp(...t),u=Y(c.missingWarn)?c.missingWarn:e.missingWarn,d=Y(c.fallbackWarn)?c.fallbackWarn:e.fallbackWarn,f=!!c.part,p=Of(e,c);if(!J(o)||o===``){let e=new Intl.DateTimeFormat(p.replace(/!/g,``),l);return f?e.formatToParts(s):e.format(s)}let m=hp(e,o,p,n,u,d,`datetime format`);if(!J(m))return r?-1:o;let h=n[m][o],g=gp(m,o,l),_=a.get(g);return _||(_=new Intl.DateTimeFormat(m,W({},h,l)),a.set(g,_)),f?_.formatToParts(s):_.format(s)}var xp=[`localeMatcher`,`weekday`,`era`,`year`,`month`,`day`,`hour`,`minute`,`second`,`timeZoneName`,`formatMatcher`,`hour12`,`timeZone`,`dateStyle`,`timeStyle`,`calendar`,`dayPeriod`,`numberingSystem`,`hourCycle`,`fractionalSecondDigits`];function Sp(...e){let[t]=e,n=G(),r=G(),i;if(J(t)){let e=t.match(/(\d{4}-\d{2}-\d{2})(T|\s)?(.*)/);if(!e)throw Df(Ef.INVALID_ISO_DATE_ARGUMENT);let n=e[3]?e[3].trim().startsWith(`T`)?`${e[1].trim()}${e[3].trim()}`:`${e[1].trim()}T${e[3].trim()}`:e[1].trim();i=new Date(n);try{i.toISOString()}catch{throw Df(Ef.INVALID_ISO_DATE_ARGUMENT)}}else if(ju(t)){if(isNaN(t.getTime()))throw Df(Ef.INVALID_DATE_ARGUMENT);i=t}else if(U(t))i=t;else throw Df(Ef.INVALID_ARGUMENT);let a=vp(e,n,r,xp);return[n.key||``,i,n,a]}function Cp(e,t,n){_p(e.__datetimeFormatters,t,n)}function wp(e,...t){let{numberFormats:n,unresolving:r,onWarn:i}=e,{__numberFormatters:a}=e;if(!U(t[0]))return``;let[o,s,c,l]=Ep(...t),u=Y(c.missingWarn)?c.missingWarn:e.missingWarn,d=Y(c.fallbackWarn)?c.fallbackWarn:e.fallbackWarn,f=!!c.part,p=Of(e,c);if(!J(o)||o===``){let e=new Intl.NumberFormat(p.replace(/!/g,``),l);return f?e.formatToParts(s):e.format(s)}let m=hp(e,o,p,n,u,d,`number format`);if(!J(m))return r?-1:o;let h=n[m][o],g=gp(m,o,l),_=a.get(g);return _||(_=new Intl.NumberFormat(m,W({},h,l)),a.set(g,_)),f?_.formatToParts(s):_.format(s)}var Tp=[`localeMatcher`,`style`,`currency`,`currencyDisplay`,`currencySign`,`useGrouping`,`minimumIntegerDigits`,`minimumFractionDigits`,`maximumFractionDigits`,`minimumSignificantDigits`,`maximumSignificantDigits`,`compactDisplay`,`notation`,`signDisplay`,`unit`,`unitDisplay`,`roundingMode`,`roundingPriority`,`roundingIncrement`,`trailingZeroDisplay`];function Ep(...e){let[t]=e,n=G(),r=G();if(!U(t))throw Df(Ef.INVALID_ARGUMENT);let i=t,a=vp(e,n,r,Tp);return[n.key||``,i,n,a]}function Dp(e,t,n){_p(e.__numberFormatters,t,n)}var Op=e=>e,kp=e=>``,Ap=`text`,jp=e=>e.length===0?``:Uu(e),Mp=Hu;function Np(e,t){return e=Math.abs(e),t===2?e===1?0:1:Math.min(e,2)}function Pp(e){let t=U(e.pluralIndex)?e.pluralIndex:-1;return U(e.named?.count)?e.named.count:U(e.named?.n)?e.named.n:t}function Fp(e={}){let t=e.locale,n=Pp(e),r=J(t)&&q(e.pluralRules?.[t])?e.pluralRules[t]:Np,i=r===Np?void 0:Np,a=e=>e[r(n,e.length,i)],o=e.list||[],s=e=>o[e],c=e.named||G();U(e.pluralIndex)&&(c.count||=e.pluralIndex,c.n||=e.pluralIndex);let l=e=>c[e];function u(t,n){return(q(e.messages)?e.messages(t,!!n):X(e.messages)?e.messages[t]:!1)||(e.parent?e.parent.message(t):kp)}let d=t=>e.modifiers?e.modifiers[t]:Op,f=q(e.processor?.normalize)?e.processor.normalize:jp,p=q(e.processor?.interpolate)?e.processor.interpolate:Mp,m={list:s,named:l,plural:a,linked:(e,...t)=>{let[n,r]=t,i=`text`,a=``;t.length===1?X(n)?(a=n.modifier||a,i=n.type||i):J(n)&&(a=n||a):t.length===2&&(J(n)&&(a=n||a),J(r)&&(i=r||i));let o=u(e,!0)(m),s=o===``||o===void 0?e:o,c=i===`vnode`&&K(s)&&a?s[0]:s;return a?d(a)(c,i):c},message:u,type:J(e.processor?.type)?e.processor.type:Ap,interpolate:p,normalize:f,values:W(G(),o,c)};return m}var Ip=()=>``,Lp=e=>q(e);function Rp(e,...t){let{fallbackFormat:n,postTranslation:r,unresolving:i,messageCompiler:a,fallbackLocale:o,messages:s}=e,[c,l]=Up(...t),u=Y(l.missingWarn)?l.missingWarn:e.missingWarn,d=Y(l.fallbackWarn)?l.fallbackWarn:e.fallbackWarn,f=Y(l.escapeParameter)?l.escapeParameter:e.escapeParameter,p=!!l.resolvedMessage,m=J(l.default)||Y(l.default)?Y(l.default)?a?c:()=>c:l.default:n?a?c:()=>c:null,h=n||m!=null&&(J(m)||q(m)),g=Of(e,l);f&&zp(l);let[_,v,y]=p?[c,g,s[g]||G()]:Bp(e,c,g,o,d,u),b=_,x=c;if(!p&&!(J(b)||Kd(b)||Lp(b))&&h&&(b=m,x=b),!p&&(!(J(b)||Kd(b)||Lp(b))||!J(v)))return i?-1:c;let S=!1,C=Lp(b)?b:Vp(e,c,v,b,x,()=>{S=!0});if(S)return b;let w=Hp(e,C,Fp(Gp(e,v,y,l))),T=r?r(w,c):w;if(f&&J(T)&&(T=od(T)),__INTLIFY_PROD_DEVTOOLS__){let t={timestamp:Date.now(),key:J(c)?c:Lp(b)?b.key:``,locale:v||(Lp(b)?b.locale:``),format:J(b)?b:Lp(b)?b.source:``,message:T};t.meta=W({},e.__meta,ip()||{}),wf(t)}return T}function zp(e){K(e.list)?e.list=e.list.map(e=>J(e)?Gu(e):e):X(e.named)&&Object.keys(e.named).forEach(t=>{J(e.named[t])&&(e.named[t]=Gu(e.named[t]))})}function Bp(e,t,n,r,i,a){let{messages:o,onWarn:s,messageResolver:c,localeFallbacker:l}=e,u=l(e,r,n),d=G(),f,p=null;for(let n=0;n<u.length&&(f=u[n],d=o[f]||G(),(p=c(d,t))===null&&(p=d[t]),!(J(p)||Kd(p)||Lp(p)));n++)if(!mp(f,u)){let n=dp(e,t,f,a,`translate`);n!==t&&(p=n)}return[p,f,d]}function Vp(e,t,n,r,i,a){let{messageCompiler:o,warnHtmlMessage:s}=e;if(Lp(r)){let e=r;return e.locale=e.locale||n,e.key=e.key||t,e}if(o==null){let e=(()=>r);return e.locale=n,e.key=t,e}let c=o(r,Wp(e,n,i,r,s,a));return c.locale=n,c.key=t,c.source=r,c}function Hp(e,t,n){return t(n)}function Up(...e){let[t,n,r]=e,i=G();if(!J(t)&&!U(t)&&!Lp(t)&&!Kd(t))throw Df(Ef.INVALID_ARGUMENT);let a=U(t)?String(t):(Lp(t),t);return U(n)?i.plural=n:J(n)?i.default=n:Z(n)&&!Nu(n)?i.named=n:K(n)&&(i.list=n),U(r)?i.plural=r:J(r)?i.default=r:Z(r)&&W(i,r),[a,i]}function Wp(e,t,n,r,i,a){return{locale:t,key:n,warnHtmlMessage:i,onError:e=>{throw a&&a(e),e},onCacheKey:e=>ku(t,n,e)}}function Gp(e,t,n,r){let{modifiers:i,pluralRules:a,messageResolver:o,fallbackLocale:s,fallbackWarn:c,missingWarn:l,fallbackContext:u}=e,d={locale:t,modifiers:i,pluralRules:a,messages:(r,i)=>{let a=o(n,r);if(a==null&&(u||i)){let[n,,i]=Bp(u||e,r,t,s,c,l);a=n??o(i,r)}if(J(a)||Kd(a)){let n=!1,i=Vp(e,r,t,a,r,()=>{n=!0});return n?Ip:i}else if(Lp(a))return a;else return Ip}};return e.processor&&(d.processor=e.processor),r.list&&(d.list=r.list),r.named&&(d.named=r.named),U(r.plural)&&(d.pluralIndex=r.plural),d}Gd();var Kp=`11.4.8`;function qp(){typeof __VUE_I18N_FULL_INSTALL__!=`boolean`&&(Iu().__VUE_I18N_FULL_INSTALL__=!0),typeof __VUE_I18N_LEGACY_API__!=`boolean`&&(Iu().__VUE_I18N_LEGACY_API__=!0),typeof __INTLIFY_DROP_MESSAGE_COMPILER__!=`boolean`&&(Iu().__INTLIFY_DROP_MESSAGE_COMPILER__=!1),typeof __INTLIFY_PROD_DEVTOOLS__!=`boolean`&&(Iu().__INTLIFY_PROD_DEVTOOLS__=!1)}var $={UNEXPECTED_RETURN_TYPE:24,INVALID_ARGUMENT:25,MUST_BE_CALL_SETUP_TOP:26,NOT_INSTALLED:27,REQUIRED_VALUE:28,INVALID_VALUE:29,CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN:30,NOT_INSTALLED_WITH_PROVIDE:31,UNEXPECTED_ERROR:32,NOT_COMPATIBLE_LEGACY_VUE_I18N:33,NOT_AVAILABLE_COMPOSITION_IN_LEGACY:34};function Jp(e,...t){return dd(e,null,void 0)}$.UNEXPECTED_RETURN_TYPE,$.INVALID_ARGUMENT,$.MUST_BE_CALL_SETUP_TOP,$.NOT_INSTALLED,$.UNEXPECTED_ERROR,$.REQUIRED_VALUE,$.INVALID_VALUE,$.CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN,$.NOT_INSTALLED_WITH_PROVIDE,$.NOT_COMPATIBLE_LEGACY_VUE_I18N,$.NOT_AVAILABLE_COMPOSITION_IN_LEGACY;var Yp=Ou(`__translateVNode`),Xp=Ou(`__datetimeParts`),Zp=Ou(`__numberParts`),Qp=Ou(`__setPluralRules`);Ou(`__intlifyMeta`);var $p=Ou(`__injectWithOption`),em=Ou(`__dispose`),tm={FALLBACK_TO_ROOT:10,NOT_FOUND_PARENT_SCOPE:11,IGNORE_OBJ_FLATTEN:12,DEPRECATE_LEGACY_MODE:13,DEPRECATE_TRANSLATE_CUSTOME_DIRECTIVE:14,DUPLICATE_USE_I18N_CALLING:15};tm.FALLBACK_TO_ROOT,tm.NOT_FOUND_PARENT_SCOPE,tm.IGNORE_OBJ_FLATTEN,tm.DEPRECATE_LEGACY_MODE,tm.DEPRECATE_TRANSLATE_CUSTOME_DIRECTIVE,tm.DUPLICATE_USE_I18N_CALLING;function nm(e){if(!X(e)||Kd(e))return e;for(let t in e)if(Ru(e,t))if(!t.includes(`.`))X(e[t])&&nm(e[t]);else{let n=t.split(`.`),r=n.length-1,i=e,a=!1;for(let e=0;e<r;e++){if(n[e]===`__proto__`)throw Error(`unsafe key: ${n[e]}`);if(n[e]in i||(i[n[e]]=G()),!X(i[n[e]])){a=!0;break}i=i[n[e]]}if(a||(Kd(i)?df.includes(n[r])||delete e[t]:(i[n[r]]=e[t],delete e[t])),!Kd(i)){let e=i[n[r]];X(e)&&nm(e)}}return e}function rm(e,t){let{messages:n,__i18n:r,messageResolver:i,flatJson:a}=t,o=Z(n)?n:K(r)?G():{[e]:G()};if(K(r)&&r.forEach(e=>{if(`locale`in e&&`resource`in e){let{locale:t,resource:n}=e;t?(o[t]=o[t]||G(),cd(n,o[t])):cd(n,o)}else J(e)&&cd(JSON.parse(e),o)}),i==null&&a)for(let e in o)Ru(o,e)&&nm(o[e]);return o}function im(e){return e.type}function am(e,t,n){let r=X(t.messages)?t.messages:G();`__i18nGlobal`in n&&(r=rm(e.locale.value,{messages:r,__i18n:n.__i18nGlobal}));let i=Object.keys(r);if(i.length&&i.forEach(t=>{e.mergeLocaleMessage(t,r[t])}),X(t.datetimeFormats)){let n=Object.keys(t.datetimeFormats);n.length&&n.forEach(n=>{e.mergeDateTimeFormat(n,t.datetimeFormats[n])})}if(X(t.numberFormats)){let n=Object.keys(t.numberFormats);n.length&&n.forEach(n=>{e.mergeNumberFormat(n,t.numberFormats[n])})}}function om(e){return H(as,null,e,0)}function sm(){let e=`currentInstance`;return e in Tu?Tu[e]:Ls()}var cm=()=>[],lm=()=>!1,um=0;function dm(e){return((t,n,r,i)=>e(n,r,sm()||void 0,i))}function fm(e={}){let{__root:t,__injectWithOption:n}=e,r=t===void 0,i=e.flatJson,a=Du?an:on,o=!Y(e.inheritLocale)||e.inheritLocale,s=a(t&&o?t.locale.value:J(e.locale)?e.locale:Jf),c=a(t&&o?t.fallbackLocale.value:J(e.fallbackLocale)||K(e.fallbackLocale)||Z(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:s.value),l=a(rm(s.value,e)),u=a(Z(e.datetimeFormats)?e.datetimeFormats:{[s.value]:{}}),d=a(Z(e.numberFormats)?e.numberFormats:{[s.value]:{}}),f=t?t.missingWarn:Y(e.missingWarn)||Mu(e.missingWarn)?e.missingWarn:!0,p=t?t.fallbackWarn:Y(e.fallbackWarn)||Mu(e.fallbackWarn)?e.fallbackWarn:!0,m=t?t.fallbackRoot:!Y(e.fallbackRoot)||e.fallbackRoot,h=!!e.fallbackFormat,g=q(e.missing)?e.missing:null,_=q(e.missing)?dm(e.missing):null,v=q(e.postTranslation)?e.postTranslation:null,y=t?t.warnHtmlMessage:!Y(e.warnHtmlMessage)||e.warnHtmlMessage,b=!!e.escapeParameter,x=t?t.modifiers:Z(e.modifiers)?e.modifiers:{},S=e.pluralRules||t&&t.pluralRules,C;C=(()=>{r&&op(null);let t={version:Kp,locale:s.value,fallbackLocale:c.value,messages:l.value,modifiers:x,pluralRules:S,missing:_===null?void 0:_,missingWarn:f,fallbackWarn:p,fallbackFormat:h,unresolving:!0,postTranslation:v===null?void 0:v,warnHtmlMessage:y,escapeParameter:b,messageResolver:e.messageResolver,messageCompiler:e.messageCompiler,__meta:{framework:`vue`}};t.datetimeFormats=u.value,t.numberFormats=d.value,t.__datetimeFormatters=Z(C)?C.__datetimeFormatters:void 0,t.__numberFormatters=Z(C)?C.__numberFormatters:void 0;let n=lp(t);return r&&op(n),n})(),fp(C,s.value,c.value);function w(){return[s.value,c.value,l.value,u.value,d.value]}let T=rc({get:()=>s.value,set:e=>{C.locale=e,s.value=e}}),E=rc({get:()=>c.value,set:e=>{C.fallbackLocale=e,c.value=e,fp(C,s.value,e)}}),D=rc(()=>l.value),O=rc(()=>u.value),ee=rc(()=>d.value);function te(){return q(v)?v:null}function k(e){v=e,C.postTranslation=e}function ne(){return g}function A(e){e!==null&&(_=dm(e)),g=e,C.missing=_}let re=(e,n,i,a,o,s)=>{w();let c;try{__INTLIFY_PROD_DEVTOOLS__,r||(C.fallbackContext=t?sp():void 0),c=e(C)}finally{__INTLIFY_PROD_DEVTOOLS__,r||(C.fallbackContext=void 0)}if(i!==`translate exists`&&U(c)&&c===-1||i===`translate exists`&&!c){let[e,r]=n();return t&&m?a(t):o(e)}else if(s(c))return c;else throw Jp($.UNEXPECTED_RETURN_TYPE)};function j(...e){return re(t=>Reflect.apply(Rp,null,[t,...e]),()=>Up(...e),`translate`,t=>Reflect.apply(t.t,t,[...e]),e=>e,e=>J(e))}function M(...e){let[t,n,r]=e;if(r&&!X(r))throw Jp($.INVALID_ARGUMENT);return j(t,n,W({resolvedMessage:!0},r||{}))}function ie(...e){return re(t=>Reflect.apply(bp,null,[t,...e]),()=>Sp(...e),`datetime format`,t=>Reflect.apply(t.d,t,[...e]),()=>``,e=>J(e)||K(e))}function ae(...e){return re(t=>Reflect.apply(wp,null,[t,...e]),()=>Ep(...e),`number format`,t=>Reflect.apply(t.n,t,[...e]),()=>``,e=>J(e)||K(e))}function oe(e){return e.map(e=>J(e)||U(e)||Y(e)?om(String(e)):e)}let se={normalize:oe,interpolate:e=>e,type:`vnode`};function ce(...e){return re(t=>{let n,r=t;try{r.processor=se,n=Reflect.apply(Rp,null,[r,...e])}finally{r.processor=null}return n},()=>Up(...e),`translate`,t=>t[Yp](...e),e=>[om(e)],e=>K(e))}function le(...e){return re(t=>Reflect.apply(wp,null,[t,...e]),()=>Ep(...e),`number format`,t=>t[Zp](...e),cm,e=>J(e)||K(e))}function ue(...e){return re(t=>Reflect.apply(bp,null,[t,...e]),()=>Sp(...e),`datetime format`,t=>t[Xp](...e),cm,e=>J(e)||K(e))}function de(e){S=e,C.pluralRules=S}function fe(e,t){return re(()=>{if(!e)return!1;let n=J(t)?t:s.value,r=J(t)?[n]:Mf(C,c.value,n);for(let t=0;t<r.length;t++){let n=he(r[t]),i=C.messageResolver(n,e);if(i===null&&(i=n[e]),Kd(i)||Lp(i)||J(i))return!0}return!1},()=>[e],`translate exists`,n=>Reflect.apply(n.te,n,[e,t]),lm,e=>Y(e))}function pe(e){let t=null,n=Mf(C,c.value,s.value);for(let r=0;r<n.length;r++){let i=l.value[n[r]]||{},a=C.messageResolver(i,e);if(a!=null){t=a;break}}return t}function me(e){return pe(e)??(t&&t.tm(e)||{})}function he(e){return l.value[e]||{}}function ge(e,t){if(i){let n={[e]:t};for(let e in n)Ru(n,e)&&nm(n[e]);t=n[e]}l.value[e]=t,C.messages=l.value}function _e(e,t){l.value[e]=l.value[e]||{};let n={[e]:t};if(i)for(let e in n)Ru(n,e)&&nm(n[e]);t=n[e],cd(t,l.value[e]),C.messages=l.value}function ve(e){return u.value[e]||{}}function ye(e,t){u.value[e]=t,C.datetimeFormats=u.value,Cp(C,e,t)}function be(e,t){u.value[e]=W(u.value[e]||{},t),C.datetimeFormats=u.value,Cp(C,e,t)}function xe(e){return d.value[e]||{}}function Se(e,t){d.value[e]=t,C.numberFormats=d.value,Dp(C,e,t)}function Ce(e,t){d.value[e]=W(d.value[e]||{},t),C.numberFormats=d.value,Dp(C,e,t)}um++,t&&Du&&(Cr(t.locale,e=>{o&&(s.value=e,C.locale=e,fp(C,s.value,c.value))}),Cr(t.fallbackLocale,e=>{o&&(c.value=e,C.fallbackLocale=e,fp(C,s.value,c.value))}));let N={id:um,locale:T,fallbackLocale:E,get inheritLocale(){return o},set inheritLocale(e){o=e,e&&t&&(s.value=t.locale.value,c.value=t.fallbackLocale.value,fp(C,s.value,c.value))},get availableLocales(){return Object.keys(l.value).sort()},messages:D,get modifiers(){return x},get pluralRules(){return S||{}},get isGlobal(){return r},get missingWarn(){return f},set missingWarn(e){f=e,C.missingWarn=f},get fallbackWarn(){return p},set fallbackWarn(e){p=e,C.fallbackWarn=p},get fallbackRoot(){return m},set fallbackRoot(e){m=e},get fallbackFormat(){return h},set fallbackFormat(e){h=e,C.fallbackFormat=h},get warnHtmlMessage(){return y},set warnHtmlMessage(e){y=e,C.warnHtmlMessage=e},get escapeParameter(){return b},set escapeParameter(e){b=e,C.escapeParameter=e},t:j,getLocaleMessage:he,setLocaleMessage:ge,mergeLocaleMessage:_e,getPostTranslationHandler:te,setPostTranslationHandler:k,getMissingHandler:ne,setMissingHandler:A,[Qp]:de};return N.datetimeFormats=O,N.numberFormats=ee,N.rt=M,N.te=fe,N.tm=me,N.d=ie,N.n=ae,N.getDateTimeFormat=ve,N.setDateTimeFormat=ye,N.mergeDateTimeFormat=be,N.getNumberFormat=xe,N.setNumberFormat=Se,N.mergeNumberFormat=Ce,N[$p]=n,N[Yp]=ce,N[Xp]=ue,N[Zp]=le,N}function pm(e){let t=J(e.locale)?e.locale:Jf,n=J(e.fallbackLocale)||K(e.fallbackLocale)||Z(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:t,r=q(e.missing)?e.missing:void 0,i=Y(e.silentTranslationWarn)||Mu(e.silentTranslationWarn)?!e.silentTranslationWarn:!0,a=Y(e.silentFallbackWarn)||Mu(e.silentFallbackWarn)?!e.silentFallbackWarn:!0,o=!Y(e.fallbackRoot)||e.fallbackRoot,s=!!e.formatFallbackMessages,c=Z(e.modifiers)?e.modifiers:{},l=e.pluralizationRules,u=q(e.postTranslation)?e.postTranslation:void 0,d=!J(e.warnHtmlInMessage)||e.warnHtmlInMessage!==`off`,f=!!e.escapeParameterHtml,p=!Y(e.sync)||e.sync,m=e.messages;if(Z(e.sharedMessages)){let t=e.sharedMessages;m=Object.keys(t).reduce((e,n)=>(W(e[n]||(e[n]={}),t[n]),e),m||{})}let{__i18n:h,__root:g,__injectWithOption:_}=e,v=e.datetimeFormats,y=e.numberFormats,b=e.flatJson;return{locale:t,fallbackLocale:n,messages:m,flatJson:b,datetimeFormats:v,numberFormats:y,missing:r,missingWarn:i,fallbackWarn:a,fallbackRoot:o,fallbackFormat:s,modifiers:c,pluralRules:l,postTranslation:u,warnHtmlMessage:d,escapeParameter:f,messageResolver:e.messageResolver,inheritLocale:p,__i18n:h,__root:g,__injectWithOption:_}}function mm(e={}){let t=fm(pm(e)),{__extender:n}=e,r={id:t.id,get locale(){return t.locale.value},set locale(e){t.locale.value=e},get fallbackLocale(){return t.fallbackLocale.value},set fallbackLocale(e){t.fallbackLocale.value=e},get messages(){return t.messages.value},get datetimeFormats(){return t.datetimeFormats.value},get numberFormats(){return t.numberFormats.value},get availableLocales(){return t.availableLocales},get missing(){return t.getMissingHandler()},set missing(e){t.setMissingHandler(e)},get silentTranslationWarn(){return Y(t.missingWarn)?!t.missingWarn:t.missingWarn},set silentTranslationWarn(e){t.missingWarn=Y(e)?!e:e},get silentFallbackWarn(){return Y(t.fallbackWarn)?!t.fallbackWarn:t.fallbackWarn},set silentFallbackWarn(e){t.fallbackWarn=Y(e)?!e:e},get modifiers(){return t.modifiers},get formatFallbackMessages(){return t.fallbackFormat},set formatFallbackMessages(e){t.fallbackFormat=e},get postTranslation(){return t.getPostTranslationHandler()},set postTranslation(e){t.setPostTranslationHandler(e)},get sync(){return t.inheritLocale},set sync(e){t.inheritLocale=e},get warnHtmlInMessage(){return t.warnHtmlMessage?`warn`:`off`},set warnHtmlInMessage(e){t.warnHtmlMessage=e!==`off`},get escapeParameterHtml(){return t.escapeParameter},set escapeParameterHtml(e){t.escapeParameter=e},get pluralizationRules(){return t.pluralRules||{}},__composer:t,t(...e){return Reflect.apply(t.t,t,[...e])},rt(...e){return Reflect.apply(t.rt,t,[...e])},te(e,n){return t.te(e,n)},tm(e){return t.tm(e)},getLocaleMessage(e){return t.getLocaleMessage(e)},setLocaleMessage(e,n){t.setLocaleMessage(e,n)},mergeLocaleMessage(e,n){t.mergeLocaleMessage(e,n)},d(...e){return Reflect.apply(t.d,t,[...e])},getDateTimeFormat(e){return t.getDateTimeFormat(e)},setDateTimeFormat(e,n){t.setDateTimeFormat(e,n)},mergeDateTimeFormat(e,n){t.mergeDateTimeFormat(e,n)},n(...e){return Reflect.apply(t.n,t,[...e])},getNumberFormat(e){return t.getNumberFormat(e)},setNumberFormat(e,n){t.setNumberFormat(e,n)},mergeNumberFormat(e,n){t.mergeNumberFormat(e,n)}};return r.__extender=n,r}function hm(e,t,n){return{beforeCreate(){let r=sm();if(!r)throw Jp($.UNEXPECTED_ERROR);let i=this.$options;if(i.i18n){let r=i.i18n;if(i.__i18n&&(r.__i18n=i.__i18n),r.__root=t,this===this.$root)this.$i18n=gm(e,r);else{r.__injectWithOption=!0,r.__extender=n.__vueI18nExtend,this.$i18n=mm(r);let e=this.$i18n;e.__extender&&(e.__disposer=e.__extender(this.$i18n))}}else if(i.__i18n)if(this===this.$root)this.$i18n=gm(e,i);else{this.$i18n=mm({__i18n:i.__i18n,__injectWithOption:!0,__extender:n.__vueI18nExtend,__root:t});let e=this.$i18n;e.__extender&&(e.__disposer=e.__extender(this.$i18n))}else this.$i18n=e;i.__i18nGlobal&&am(t,i,i),this.$t=(...e)=>this.$i18n.t(...e),this.$rt=(...e)=>this.$i18n.rt(...e),this.$te=(e,t)=>this.$i18n.te(e,t),this.$d=(...e)=>this.$i18n.d(...e),this.$n=(...e)=>this.$i18n.n(...e),this.$tm=e=>this.$i18n.tm(e),n.__setInstance(r,this.$i18n)},mounted(){},unmounted(){let e=sm();if(!e)throw Jp($.UNEXPECTED_ERROR);let t=this.$i18n;t&&(delete this.$t,delete this.$rt,delete this.$te,delete this.$d,delete this.$n,delete this.$tm,t?.__disposer&&(t.__disposer(),delete t.__disposer,delete t.__extender),n.__deleteInstance(e),delete this.$i18n)}}}function gm(e,t){e.locale=t.locale||e.locale,e.fallbackLocale=t.fallbackLocale||e.fallbackLocale,e.missing=t.missing||e.missing,e.silentTranslationWarn=t.silentTranslationWarn||e.silentFallbackWarn,e.silentFallbackWarn=t.silentFallbackWarn||e.silentFallbackWarn,e.formatFallbackMessages=t.formatFallbackMessages||e.formatFallbackMessages,e.postTranslation=t.postTranslation||e.postTranslation,e.warnHtmlInMessage=t.warnHtmlInMessage||e.warnHtmlInMessage,e.escapeParameterHtml=t.escapeParameterHtml||e.escapeParameterHtml,e.sync=t.sync||e.sync,e.__composer[Qp](t.pluralizationRules||e.pluralizationRules);let n=rm(e.locale,{messages:t.messages,__i18n:t.__i18n});return Object.keys(n).forEach(t=>e.mergeLocaleMessage(t,n[t])),t.datetimeFormats&&Object.keys(t.datetimeFormats).forEach(n=>e.mergeDateTimeFormat(n,t.datetimeFormats[n])),t.numberFormats&&Object.keys(t.numberFormats).forEach(n=>e.mergeNumberFormat(n,t.numberFormats[n])),e}var _m={tag:{type:[String,Object]},locale:{type:String},scope:{type:String,validator:e=>e===`parent`||e===`global`,default:`parent`},i18n:{type:Object}};function vm({slots:e},t){return t.length===1&&t[0]==="default"?(e.default?e.default():[]).reduce((e,t)=>[...e,...t.type===B?t.children:[t]],[]):t.reduce((t,n)=>{let r=e[n];return r&&(t[n]=r()),t},G())}function ym(){return B}var bm=ni({name:`i18n-t`,props:W({keypath:{type:String,required:!0},plural:{type:[Number,String],validator:e=>U(e)||!isNaN(e)}},_m),setup(e,t){let{slots:n,attrs:r}=t,i=e.i18n||jm({useScope:e.scope,__useComponent:!0});return()=>{let a=()=>{let r=Object.keys(n).filter(e=>e[0]!==`_`),a=G();e.locale&&(a.locale=e.locale),e.plural!==void 0&&(a.plural=J(e.plural)?+e.plural:e.plural);let o=vm(t,r);return i[Yp](e.keypath,o,a)},o=W(G(),r),s=J(e.tag)||X(e.tag)?e.tag:ym();return X(s)?ic(s,o,{default:a}):ic(s,o,a())}}});function xm(e){return K(e)&&!J(e[0])}function Sm(e,t,n,r){let{slots:i,attrs:a}=t;return()=>{let t=()=>{let t={part:!0},a=G();e.locale&&(t.locale=e.locale),J(e.format)?t.key=e.format:X(e.format)&&(J(e.format.key)&&(t.key=e.format.key),a=Object.keys(e.format).reduce((t,r)=>n.includes(r)?W(G(),t,{[r]:e.format[r]}):t,G()));let o=r(e.value,t,a),s=[t.key];return K(o)?s=o.map((e,t)=>{let n=i[e.type],r=n?n({[e.type]:e.value,index:t,parts:o}):[e.value];return xm(r)&&(r[0].key=`${e.type}-${t}`),r}):J(o)&&(s=[o]),s},o=W(G(),a),s=J(e.tag)||X(e.tag)?e.tag:ym();return X(s)?ic(s,o,{default:t}):ic(s,o,t())}}var Cm=ni({name:`i18n-n`,props:W({value:{type:Number,required:!0},format:{type:[String,Object]}},_m),setup(e,t){let n=e.i18n||jm({useScope:e.scope,__useComponent:!0});return Sm(e,t,Tp,(...e)=>n[Zp](...e))}});function wm(e,t){let n=e;if(e.mode===`composition`)return n.__getInstance(t)||e.global;{let r=n.__getInstance(t);return r==null?e.global.__composer:r.__composer}}function Tm(e){let t=t=>{let{instance:n,value:r}=t;if(!n||!n.$)throw Jp($.UNEXPECTED_ERROR);let i=wm(e,n.$),a=Em(r);return[Reflect.apply(i.t,i,[...Dm(a)]),i]};return{created:(e,n)=>{let[r,i]=t(n);Du&&(e.__i18nWatcher=Cr(i.locale,()=>{n.instance&&n.instance.$forceUpdate()})),e.__composer=i,e.textContent=r},unmounted:e=>{Du&&e.__i18nWatcher&&(e.__i18nWatcher(),e.__i18nWatcher=void 0,delete e.__i18nWatcher),e.__composer&&(e.__composer=void 0,delete e.__composer)},beforeUpdate:(e,{value:t})=>{if(e.__composer){let n=e.__composer,r=Em(t);e.textContent=Reflect.apply(n.t,n,[...Dm(r)])}},getSSRProps:e=>{let[n]=t(e);return{textContent:n}}}}function Em(e){if(J(e))return{path:e};if(Z(e)){if(!(`path`in e))throw Jp($.REQUIRED_VALUE,`path`);return e}else throw Jp($.INVALID_VALUE)}function Dm(e){let{path:t,locale:n,args:r,choice:i,plural:a}=e,o={},s=r||{};return J(n)&&(o.locale=n),U(i)&&(o.plural=i),U(a)&&(o.plural=a),[t,s,o]}function Om(e,t,...n){let r=Z(n[0])?n[0]:{};(!Y(r.globalInstall)||r.globalInstall)&&([bm.name,`I18nT`].forEach(t=>e.component(t,bm)),[Cm.name,`I18nN`].forEach(t=>e.component(t,Cm)),[Hm.name,`I18nD`].forEach(t=>e.component(t,Hm))),e.directive(`t`,Tm(t))}var km=Ou(`global-vue-i18n`);function Am(e={}){let t=__VUE_I18N_LEGACY_API__&&Y(e.legacy)?e.legacy:__VUE_I18N_LEGACY_API__,n=!Y(e.globalInjection)||e.globalInjection,r=new Map,[i,a]=Mm(e,t),o=Ou(``);function s(e){return r.get(e)||null}function c(e,t){r.set(e,t)}function l(e){r.delete(e)}let u={get mode(){return __VUE_I18N_LEGACY_API__&&t?`legacy`:`composition`},async install(e,...r){if(e.__VUE_I18N_SYMBOL__=o,e.provide(e.__VUE_I18N_SYMBOL__,u),Z(r[0])){let e=r[0];u.__composerExtend=e.__composerExtend,u.__vueI18nExtend=e.__vueI18nExtend}let i=null;!t&&n&&(i=Vm(e,u.global)),__VUE_I18N_FULL_INSTALL__&&Om(e,u,...r),__VUE_I18N_LEGACY_API__&&t&&e.mixin(hm(a,a.__composer,u));let s=e.unmount;e.unmount=()=>{i&&i(),u.dispose(),s()}},get global(){return a},dispose(){i.stop()},__instances:r,__getInstance:s,__setInstance:c,__deleteInstance:l};return u}function jm(e={}){let t=sm();if(t==null)throw Jp($.MUST_BE_CALL_SETUP_TOP);if(!t.isCE&&t.appContext.app!=null&&!t.appContext.app.__VUE_I18N_SYMBOL__)throw Jp($.NOT_INSTALLED);let n=Nm(t),r=Fm(n),i=im(t),a=Pm(e,i);if(a===`global`)return am(r,e,i),r;if(a===`parent`){let i=Im(n,t,e.__useComponent);return i??=r,i}if(a===`isolated`){if(n.mode!==`composition`)throw Jp($.NOT_AVAILABLE_COMPOSITION_IN_LEGACY);let i=n,a=W({},e);a.__root=Im(n,t)||r;let o=fm(a);return i.__composerExtend&&(o[em]=i.__composerExtend(o)),je()&&Me(()=>{let e=o[em];e&&(e(),delete o[em])}),o}let o=n,s=o.__getInstance(t);if(s==null){let n=W({},e);`__i18n`in i&&(n.__i18n=i.__i18n),r&&(n.__root=r),s=fm(n),o.__composerExtend&&(s[em]=o.__composerExtend(s)),Rm(o,t,s),o.__setInstance(t,s)}return s}function Mm(e,t){let n=Ae(),r=__VUE_I18N_LEGACY_API__&&t?n.run(()=>mm(e)):n.run(()=>fm(e));if(r==null)throw Jp($.UNEXPECTED_ERROR);return[n,r]}function Nm(e){let t=gr(e.isCE?km:e.appContext.app.__VUE_I18N_SYMBOL__);if(!t)throw Jp(e.isCE?$.NOT_INSTALLED_WITH_PROVIDE:$.UNEXPECTED_ERROR);return t}function Pm(e,t){return Nu(e)?`__i18n`in t?`local`:`global`:e.useScope?e.useScope:`local`}function Fm(e){return e.mode===`composition`?e.global:e.global.__composer}function Im(e,t,n=!1){let r=null,i=t.root,a=Lm(t,n);for(;a!=null;){let t=e;if(e.mode===`composition`)r=t.__getInstance(a);else if(__VUE_I18N_LEGACY_API__){let e=t.__getInstance(a);e!=null&&(r=e.__composer,n&&r&&!r[$p]&&(r=null))}if(r!=null||i===a)break;a=a.parent}return r}function Lm(e,t=!1){return e==null?null:t&&e.vnode.ctx||e.parent}function Rm(e,t,n){Yi(()=>{},t),$i(()=>{let r=n;e.__deleteInstance(t);let i=r[em];i&&(i(),delete r[em])},t)}var zm=[`locale`,`fallbackLocale`,`availableLocales`],Bm=[`t`,`rt`,`d`,`n`,`tm`,`te`];function Vm(e,t){let n=Object.create(null);return zm.forEach(e=>{let r=Object.getOwnPropertyDescriptor(t,e);if(!r)throw Jp($.UNEXPECTED_ERROR);let i=L(r.value)?{get(){return r.value.value},set(e){r.value.value=e}}:{get(){return r.get&&r.get()}};Object.defineProperty(n,e,i)}),e.config.globalProperties.$i18n=n,Bm.forEach(n=>{let r=Object.getOwnPropertyDescriptor(t,n);if(!r||!r.value)throw Jp($.UNEXPECTED_ERROR);Object.defineProperty(e.config.globalProperties,`$${n}`,r)}),()=>{delete e.config.globalProperties.$i18n,Bm.forEach(t=>{delete e.config.globalProperties[`$${t}`]})}}var Hm=ni({name:`i18n-d`,props:W({value:{type:[Number,Date],required:!0},format:{type:[String,Object]}},_m),setup(e,t){let n=e.i18n||jm({useScope:e.scope,__useComponent:!0});return Sm(e,t,xp,(...e)=>n[Xp](...e))}});if(qp(),Qf(bf),ep(Gf),np(Mf),__INTLIFY_PROD_DEVTOOLS__){let e=Iu();e.__INTLIFY__=!0,Sf(e.__INTLIFY_DEVTOOLS_GLOBAL_HOOK__)}var Um={"zh-CN":{details:`查看详情`,filters:`筛选`,usageDetails:`用量明细`,connectionDetails:`连接详情`,all:`查看全部`},"en-US":{details:`Details`,filters:`Filters`,usageDetails:`Usage details`,connectionDetails:`Connection details`,all:`View all`}},Wm={"zh-CN":{sections:{attention:`待处理`,currentWork:`当前工作`,recentProjects:`最近项目`,services:`服务状态`},attention:{loading:`正在读取待处理请求…`,empty:`暂无待处理请求。`,loadFailed:`待处理请求暂时无法读取。`,retry:`重试`,refresh:`刷新`,open:`查看请求`,openTask:`打开任务`,agent:`Agent {id}`,count:`{count} 个请求`},work:{loading:`正在读取当前任务…`,empty:`暂无进行中的任务。`,loadFailed:`当前任务暂时无法读取。`,retry:`重试`,refresh:`刷新`,updated:`更新于 {date}`},projects:{empty:`暂无项目。`,updated:`最近更新 {date}`,noActivity:`尚无任务活动`},services:{local:`本地知识库`,public:`共享服务`,ready:`已连接`,loading:`连接中`,error:`暂时不可用`,disconnected:`未连接`,localDetail:`Graphiti / Neo4j`,publicReadyDetail:`{count} 个共享服务可用`,publicOfflineDetail:`不影响本机工作`,publicErrorDetail:`本机工作仍可继续`},taskStatus:{awaiting_recruitment:`等待招聘`,queued:`排队中`,running:`进行中`,paused:`已暂停`,awaiting_review:`待审核`,blocked:`已阻塞`},notReported:`未上报`},"en-US":{sections:{attention:`Needs attention`,currentWork:`Current work`,recentProjects:`Recent projects`,services:`Services`},attention:{loading:`Loading pending requests…`,empty:`Nothing needs your attention.`,loadFailed:`Pending requests are temporarily unavailable.`,retry:`Retry`,refresh:`Refresh`,open:`View request`,openTask:`Open task`,agent:`Agent {id}`,count:`{count} requests`},work:{loading:`Loading current tasks…`,empty:`No active tasks.`,loadFailed:`Current tasks are temporarily unavailable.`,retry:`Retry`,refresh:`Refresh`,updated:`Updated {date}`},projects:{empty:`No projects yet.`,updated:`Updated {date}`,noActivity:`No task activity yet`},services:{local:`Local knowledge base`,public:`Shared services`,ready:`Connected`,loading:`Connecting`,error:`Temporarily unavailable`,disconnected:`Not connected`,localDetail:`Graphiti / Neo4j`,publicReadyDetail:`{count} shared services available`,publicOfflineDetail:`Local work is unaffected`,publicErrorDetail:`Local work can continue`},taskStatus:{awaiting_recruitment:`Awaiting recruitment`,queued:`Queued`,running:`In progress`,paused:`Paused`,awaiting_review:`Awaiting review`,blocked:`Blocked`},notReported:`Not reported`}},Gm={"zh-CN":{refreshing:`正在更新 Agent 名录`,membershipStatus:`成员 · {status}`,projects:{more:`全部项目 · {count}`},workStatus:{label:`工作状态`,awaiting_recruitment:`等待招聘`,queued:`排队中`,running:`运行中`,paused:`已暂停`,awaiting_review:`待审核`,blocked:`阻塞`,none:`空闲`,loading:`正在读取工作状态`,unreported:`状态不完整`,unavailable:`读取失败`,refreshError:`工作状态更新失败`}},"en-US":{refreshing:`Updating the Agent directory`,membershipStatus:`Member · {status}`,projects:{more:`All projects · {count}`},workStatus:{label:`Work status`,awaiting_recruitment:`Awaiting recruitment`,queued:`Queued`,running:`Running`,paused:`Paused`,awaiting_review:`Awaiting review`,blocked:`Blocked`,none:`Idle`,loading:`Loading work status`,unreported:`Partial status`,unavailable:`Unavailable`,refreshError:`Work status could not be refreshed`}}},Km={"zh-CN":{title:`Agents`,profile:`主页`,roles:{projectManager:`项目经理`,hr:`AR`},back:`全部 Agent`,search:`搜索名字、擅长领域或项目`,members:`{count} 位成员`,noMatch:`没有找到匹配的成员`,noAgents:`还没有 Agent,先招募一位伙伴。`,noProject:`未分配项目`,allProjects:`全部项目`,loading:`正在读取成员档案`,loadError:`成员档案读取失败`,retry:`重试`,unavailable:`这个 Agent 不在当前个人空间中。`,about:`我怎样工作`,judgment:`判断`,taste:`品味`,personality:`个性`,characterEmpty:`工作风格待完善`,characterHint:`由 AR 在招聘时设定,也可随工作经历更新。`,strengths:`擅长`,noSkills:`擅长领域待完善`,projects:`负责的项目`,experience:`工作经历`,noExperience:`还没有可展示的工作记录。`,recent:`最近的工作记录`,collaborators:`合作伙伴`,noCollaborators:`还没有已开展的合作记录。`,sharedTasks:`共同参与 {count} 个任务`,joined:`加入时间`,created:`建立档案`,timeUnknown:`尚未记录`,recruitment:`为什么加入`,organization:`组织关系`,lead:`项目总负责人`,teammates:`直属成员`,reporting:`成员 → 项目总负责人 → 你`,teamUnset:`待配置项目总负责人`,leadUnavailable:`项目总负责人 {name} 当前不可用`,leadUnavailableUnnamed:`已设置的项目总负责人当前不可用`,projectMember:`项目成员`,teamUnavailable:`组织关系暂时无法读取。`,askHR:`问 AR`,hr:`AR 人员目录`,settings:`设置`,platform:`常用 Agent 平台`,automatic:`自动选择`,platformHint:`从已接入的平台中选择;不会因此增加权限。`,platformUnavailable:`当前平台暂不可用`,locked:`平台范围已锁定,可在高级管理中查看。`,expectations:`对它的期望`,expectationsPlaceholder:`例如:先给结论,遇到不确定的地方主动验证。`,editCharacter:`更新工作风格`,save:`保存`,saved:`已保存`,saving:`正在保存 Agent 设置`,saveError:`设置保存失败,请重试。`,advanced:`高级管理`,workbench:`工作台`,working:`当前工作`,idle:`空闲`,allStatus:`全部状态`,partial:`部分工作记录暂时无法读取。`,projectHistory:`曾负责`,detailLoading:`正在读取工作经历和组织关系`,settingsLoading:`正在读取可用平台`,hrSearchHint:`支持姓名片段、职责、技能、项目和近似拼写。`},"en-US":{title:`Agents`,profile:`Profile`,roles:{projectManager:`Project manager`,hr:`AR`},back:`All agents`,search:`Search names, skills or projects`,members:`{count} members`,noMatch:`No matching members`,noAgents:`Recruit your first agent to get started.`,noProject:`No project assigned`,allProjects:`All projects`,loading:`Loading member profiles`,loadError:`Could not load member profiles`,retry:`Retry`,unavailable:`This agent is not in the current personal space.`,about:`How I work`,judgment:`Judgment`,taste:`Taste`,personality:`Personality`,characterEmpty:`Working style is not defined yet`,characterHint:`Set by AR during recruitment and updated through work.`,strengths:`Strengths`,noSkills:`Strengths are not defined yet`,projects:`Projects`,experience:`Work history`,noExperience:`No work history to show yet.`,recent:`Recent work records`,collaborators:`Collaborators`,noCollaborators:`No started collaborations yet.`,sharedTasks:`Shared {count} tasks`,joined:`Joined`,created:`Profile created`,timeUnknown:`Not recorded`,recruitment:`Why I joined`,organization:`Organization`,lead:`Project lead`,teammates:`Direct reports`,reporting:`Members → Project lead → You`,teamUnset:`Project lead required`,leadUnavailable:`Project lead {name} is currently unavailable`,leadUnavailableUnnamed:`The configured project lead is currently unavailable`,projectMember:`Project member`,teamUnavailable:`Organization details are temporarily unavailable.`,askHR:`Ask AR`,hr:`AR directory`,settings:`Settings`,platform:`Preferred agent platform`,automatic:`Choose automatically`,platformHint:`Choose an existing platform. This does not grant additional permissions.`,platformUnavailable:`Current platform is unavailable`,locked:`Platform scope is locked. View it in advanced management.`,expectations:`Your expectations`,expectationsPlaceholder:`For example: lead with the conclusion and verify uncertainties.`,editCharacter:`Update working style`,save:`Save`,saved:`Saved`,saving:`Saving agent settings`,saveError:`Could not save settings. Try again.`,advanced:`Advanced management`,workbench:`Workbench`,working:`Current work`,idle:`Idle`,allStatus:`All statuses`,partial:`Some work records are temporarily unavailable.`,projectHistory:`Previously responsible for`,detailLoading:`Loading work history and organization`,settingsLoading:`Loading available platforms`,hrSearchHint:`Search partial names, responsibilities, skills, projects or approximate spellings.`}},qm={"zh-CN":{brand:`复利`,language:{label:`界面语言`,chinese:`中文`,english:`English`},actions:{retry:`重试`,backHome:`返回首页`,refresh:`刷新`,close:`关闭`,cancel:`取消`,remove:`移除`,viewDetails:`查看详情`},searchableSelect:{placeholder:`请选择`,searchPlaceholder:`搜索`,searchAria:`搜索{label}`,noMatches:`没有匹配项`,selectedCount:`已选 {count} 项`,invert:`反选`,clear:`清空`},errors:{loadFailed:`读取失败,请重试。`,serviceUnavailable:`服务暂时无法响应,请稍后重试。({status})`,pageNotFound:`找不到这个页面`,pageNotFoundCopy:`链接可能已失效。`,requestFailed:`请求失败 ({status})`,operationFailed:`操作失败`},status:{loadingConsole:`正在读取空间与服务状态…`,connected:`已连接`,connectionError:`连接异常`,notConnected:`未连接`,notRecorded:`未记录`,noDescription:`没有补充说明`,current:`当前有效`,invalid:`已失效`,all:`全部`,loadingKnowledge:`正在读取知识…`},counts:{items:`{count} 条`,listPosition:`第 {current} 条,共 {total} 条`,entities:`{count} 个实体`,relationships:`{count} 条关系`,sources:`{count} 个来源`,projects:`{count} 个项目`}},"en-US":{brand:`FULI`,language:{label:`Interface language`,chinese:`中文`,english:`English`},actions:{retry:`Retry`,backHome:`Back to home`,refresh:`Refresh`,close:`Close`,cancel:`Cancel`,remove:`Remove`,viewDetails:`View details`},searchableSelect:{placeholder:`Select an option`,searchPlaceholder:`Search`,searchAria:`Search {label}`,noMatches:`No matching options`,selectedCount:`{count} selected`,invert:`Invert`,clear:`Clear`},errors:{loadFailed:`Could not load. Please retry.`,serviceUnavailable:`The service is temporarily unavailable. Try again shortly. ({status})`,pageNotFound:`Page not found`,pageNotFoundCopy:`This link may be outdated.`,requestFailed:`Request failed ({status})`,operationFailed:`Operation failed`},status:{loadingConsole:`Loading spaces and service status…`,connected:`Connected`,connectionError:`Connection error`,notConnected:`Not connected`,notRecorded:`Not recorded`,noDescription:`No additional description`,current:`Active`,invalid:`Inactive`,all:`All`,loadingKnowledge:`Loading knowledge…`},counts:{items:`{count} item | {count} items`,listPosition:`Item {current} of {total}`,entities:`{count} entity | {count} entities`,relationships:`{count} relationship | {count} relationships`,sources:`{count} source | {count} sources`,projects:`{count} project | {count} projects`}}},Jm={"zh-CN":{navigation:{aria:`主导航`,openMenu:`打开导航`,closeMenu:`关闭导航`,overview:`工作台`,preferences:`偏好`,roundtables:`圆桌`,more:`更多`,organizer:`知识整理`,personalProjects:`项目`,projectAgents:`Agents`,publicProjects:`公共项目`,knowledge:`知识`,review:`审核`,connections:`连接`,settings:`设置`,about:`关于`},brandEffect:{aria:`复利,触发品牌光效`},update:{aria:`发现新版本 {version},查看更新方法`,title:`新版本 v{version} 可用`,copy:`在终端运行:`,npmLink:`在 npm 查看版本详情`},services:{aria:`知识服务状态`,localReady:`本地已连接`,localError:`本地知识库连接失败`,localConnecting:`正在连接本地知识库`,publicReady:`公共服务已连接`,publicError:`共享服务异常`,publicOffline:`共享服务未连接`,publicAvailable:`公共项目与协作可用`,publicBrowseSubscribe:`公共项目发现与订阅可用`,localUnaffected:`本地知识库不受影响`,localOnly:`当前仅使用本机`},agentAccess:{enabledNotice:`Agent 使用已开启;已连接的 Agent 可以调用 FULI。`,disabledNotice:`Agent 使用已关闭,所有 Agent 调用会被拦截。`},captureNotices:{enabled:`自动沉淀已开启。`,disabled:`自动沉淀已关闭,已有知识仍可读取。`}},"en-US":{navigation:{aria:`Primary navigation`,openMenu:`Open navigation`,closeMenu:`Close navigation`,overview:`Workspace`,preferences:`Preferences`,roundtables:`Roundtable`,more:`More`,organizer:`Organize`,personalProjects:`Projects`,projectAgents:`Agents`,publicProjects:`Public projects`,knowledge:`Knowledge`,review:`Review`,connections:`Connections`,settings:`Settings`,about:`About`},brandEffect:{aria:`FULI, play the brand light effect`},update:{aria:`Version {version} is available. View update instructions`,title:`Version v{version} is available`,copy:`Run in a terminal:`,npmLink:`View version details on npm`},services:{aria:`Knowledge service status`,localReady:`Local knowledge base connected`,localError:`Local knowledge base connection failed`,localConnecting:`Connecting to local knowledge base`,publicReady:`Public service connected`,publicError:`Public service connection error`,publicOffline:`Public service not connected`,publicAvailable:`Public projects and collaboration available`,publicBrowseSubscribe:`Public project discovery and subscriptions available`,localUnaffected:`Local knowledge base is unaffected`,localOnly:`Using this device only`},agentAccess:{enabledNotice:`Agent access is on. Connected Agents can use FULI.`,disabledNotice:`Agent access is off; all Agent calls are blocked.`},captureNotices:{enabled:`Automatic capture is on.`,disabled:`Automatic capture is off; existing knowledge stays readable.`}}},Ym={"zh-CN":{materialTypes:{ProjectSpace:`项目空间`,PersonalSpace:`个人空间`,PersonalProject:`项目档案`,ProjectPurpose:`项目目标`,ProjectScope:`项目范围`,TechnicalSummary:`技术说明`,ProjectSource:`资料来源`,ProjectBoundary:`项目边界`,ProjectAssessment:`档案评估`,AssessmentDimension:`评估维度`,RelatedPersonalProject:`关联项目`,ExternalKnowledgeSource:`外部知识源`,relationship:`项目资料关系`},quadrants:{known_known:`已知的已知`,known_unknown:`已知的未知`,unknown_known:`未知的已知`,unknown_unknown:`未知的未知`,unclassified:`待分类`,customDescription:`自定义认知阶段。`,descriptions:{known_known:`被明确表达出来的知识或结论。`,known_unknown:`被明确提出、但仍在等待答案的问题。`,unknown_known:`从行为、案例、反馈或反应中提炼出的隐性知识。`,unknown_unknown:`在探索过程中发现、仍需判断的潜在盲点。`,unclassified:`旧内容还没有明确记录发现时所属象限。`}},reviewStates:{confirmed:`已确认`,agent_confirmed:`Agent 已确认`,ai_reviewed:`Tonborg 已审`,pending:`待确认`},actors:{user:`用户`,agent:`Agent`,authoritative_source:`权威来源`,import:`导入记录`,notRecorded:`尚未记录`,currentUser:`当前用户`,historicalRecord:`历史记录`,otherAgent:`其他 Agent`},profiles:{taste:`品味`,personality:`个性`,judgment_preference:`判断偏好`},revisions:{confirm:`确认`,update:`内容纠正`,invalidate:`标记失效`,link_replacement:`补充替代关联`,restore:`恢复有效`,scope_change:`调整生效范围`,batch_confirm:`批量确认`,fallback:`修订`},humanChanges:{none:`没有人工变更`,unseen:`人工改动 · Agent 未查看`,viewed:`Agent 已查看 · 待审核`,reviewed:`Agent 已审核`},auditActions:{human_change:`人工修改`,agent_view:`Agent 查看`,agent_review:`Agent 审核`,knowledge_used:`Agent 实际使用`,fallback:`审计记录`},items:{unknownEntity:`未知实体`,noRelationDescription:`没有关系说明`,relationshipType:`关系 · {type}`,notRecorded:`未记录`},confirmation:{sameSource:`同一条来源记录`,sameSession:`同一次来源会话`,sourceSupports:`该内容由来源“{label}”支持。`,quadrantReason:`该内容在发现时符合“{quadrant}”:{description}`,sourceRecord:`来源记录`,otherSource:`其他来源`,session:`会话`,sourceSession:`来源会话`,legacyUnclassified:`旧内容没有发现来源,保存前需要补充。`,confirmed:`{actor}于 {time} 确认;本次确认同时覆盖知识内容和象限归类。`,agentConfirmed:`多个任务实际用上后,于 {time} 由 Agent 确认;权重仍低于你的确认。`,aiReviewed:`Tonborg 已基于当前版本完成审阅;这不是人工确认。`,pending:`{actor}提出,等待确认。`,legacyPending:`旧数据缺少确认记录,已归入待确认。`,legacyBasisMissing:`旧数据 · 确认人和时间缺失`,agentPolicy:`Agent 使用策略 · {time}`,proposed:`{actor}提出 · {reason}`},relations:{PART_OF:{label:`属于`,description:`子项目属于上级项目`},HAS_SOURCE:{label:`来源`,description:`项目登记的资料来源`},HAS_PURPOSE:{label:`目标`,description:`项目的目标或存在原因`},HAS_SCOPE:{label:`范围`,description:`项目覆盖的工作范围`},GOVERNS:{label:`约束`,description:`项目边界或规则约束`},HAS_TECHNICAL_SUMMARY:{label:`技术说明`,description:`项目登记的技术说明`},ASSESSED_AS:{label:`评估`,description:`项目资料覆盖情况的评估`},MEASURES:{label:`衡量`,description:`用于衡量项目资料的维度`},CONTAINS_PROJECT:{label:`包含项目`,description:`空间中包含的项目`},USES_KNOWLEDGE_FROM:{label:`借鉴`,description:`从另一个项目借鉴知识`},USES_EXTERNAL_KNOWLEDGE:{label:`使用外部知识`,description:`项目绑定的只读外部知识源`},DEPENDS_ON:{label:`依赖`,description:`依赖另一个项目或能力`},PROVIDES_TO:{label:`提供给`,description:`向另一个项目提供能力`},SHARES_CAPABILITY_WITH:{label:`共享能力`,description:`两个项目共享同一种能力`},RELATED_TO:{label:`关联`,description:`两个节点存在一般关联`},HAS_DECISION:{label:`决策`,description:`项目形成的决策`},fallback:{label:`关联`,description:`两个节点之间的关联关系`},quoted:`“{label}”`},graph:{hit:`命中`,projectMarked:`已标记为项目`,humanUnseen:`人工修改后,Agent 尚未查看`,humanViewed:`Agent 已查看,等待完成审核`},discovery:{failedSuffix:`;{count} 个项目暂时无法检查`,matches:`其他项目里也有相关内容,可进入对应项目查看{failure}。`,noOtherProjects:`当前没有其他个人项目可继续检查。`,allFailed:`其他个人项目暂时无法检查,请稍后重试。`,checkedPartial:`已检查前 {checked} / {total} 个其他个人项目,也没有发现候选内容{failure}。`,checkedAll:`已检查其他个人项目,也没有发现候选内容{failure}。`},hierarchy:{parentSummary:`上级项目`}},"en-US":{materialTypes:{ProjectSpace:`Project space`,PersonalSpace:`Personal space`,PersonalProject:`Project profile`,ProjectPurpose:`Project purpose`,ProjectScope:`Project scope`,TechnicalSummary:`Technical summary`,ProjectSource:`Source material`,ProjectBoundary:`Project boundary`,ProjectAssessment:`Profile assessment`,AssessmentDimension:`Assessment dimension`,RelatedPersonalProject:`Related project`,ExternalKnowledgeSource:`External knowledge source`,relationship:`Project material relationship`},quadrants:{known_known:`Known known`,known_unknown:`Known unknown`,unknown_known:`Unknown known`,unknown_unknown:`Unknown unknown`,unclassified:`Unclassified`,customDescription:`Custom cognitive stage.`,descriptions:{known_known:`Knowledge or a conclusion that was explicitly expressed.`,known_unknown:`A question explicitly raised but still awaiting an answer.`,unknown_known:`Tacit knowledge distilled from behavior, examples, feedback, or reactions.`,unknown_unknown:`A potential blind spot surfaced during exploration and still awaiting judgment.`,unclassified:`Legacy content without an explicit discovery quadrant.`}},reviewStates:{confirmed:`Confirmed`,agent_confirmed:`Agent confirmed`,ai_reviewed:`Tonborg reviewed`,pending:`Pending`},actors:{user:`User`,agent:`Agent`,authoritative_source:`Authoritative source`,import:`Imported record`,notRecorded:`Not recorded`,currentUser:`Current user`,historicalRecord:`Historical record`,otherAgent:`Other Agent`},profiles:{taste:`Taste`,personality:`Personality`,judgment_preference:`Judgment preference`},revisions:{confirm:`Confirm`,update:`Correct content`,invalidate:`Mark inactive`,link_replacement:`Add replacement link`,restore:`Restore`,scope_change:`Change effective scope`,batch_confirm:`Batch confirm`,fallback:`Revision`},humanChanges:{none:`No human changes`,unseen:`Human edit · Agent has not viewed`,viewed:`Agent viewed · awaiting review`,reviewed:`Agent reviewed`},auditActions:{human_change:`Human edit`,agent_view:`Agent view`,agent_review:`Agent review`,knowledge_used:`Agent material use`,fallback:`Audit record`},items:{unknownEntity:`Unknown entity`,noRelationDescription:`No relationship description`,relationshipType:`Relationship · {type}`,notRecorded:`Not recorded`},confirmation:{sameSource:`Same source record`,sameSession:`Same source session`,sourceSupports:`This content is supported by source “{label}”.`,quadrantReason:`At discovery, this content matched “{quadrant}”: {description}`,sourceRecord:`Source record`,otherSource:`Other source`,session:`Session`,sourceSession:`Source session`,legacyUnclassified:`Legacy item without a discovery source; add one before saving.`,confirmed:`{actor} confirmed this at {time}. The confirmation covers both the content and its quadrant classification.`,agentConfirmed:`Agent confirmed at {time} after use across tasks; still ranks below your confirmation.`,aiReviewed:`Tonborg reviewed the current version; this is not a human confirmation.`,pending:`Proposed by {actor}; awaiting confirmation.`,legacyPending:`Legacy data without a confirmation record; treated as pending.`,legacyBasisMissing:`Legacy data · confirmer and time missing`,agentPolicy:`Agent usage policy · {time}`,proposed:`Proposed by {actor} · {reason}`},relations:{PART_OF:{label:`Belongs to`,description:`A child project belongs to a parent project`},HAS_SOURCE:{label:`Source`,description:`A source registered for the project`},HAS_PURPOSE:{label:`Purpose`,description:`The project purpose or reason for existing`},HAS_SCOPE:{label:`Scope`,description:`The work covered by the project`},GOVERNS:{label:`Constraint`,description:`A project boundary or governing rule`},HAS_TECHNICAL_SUMMARY:{label:`Technical summary`,description:`The registered technical summary`},ASSESSED_AS:{label:`Assessment`,description:`An assessment of project material coverage`},MEASURES:{label:`Measures`,description:`A dimension used to assess project materials`},CONTAINS_PROJECT:{label:`Contains project`,description:`A project contained in this space`},USES_KNOWLEDGE_FROM:{label:`Borrows from`,description:`Borrows knowledge from another project`},USES_EXTERNAL_KNOWLEDGE:{label:`Uses external knowledge`,description:`A read-only external knowledge source bound to the project`},DEPENDS_ON:{label:`Depends on`,description:`Depends on another project or capability`},PROVIDES_TO:{label:`Provides to`,description:`Provides a capability to another project`},SHARES_CAPABILITY_WITH:{label:`Shares capability`,description:`Two projects share a capability`},RELATED_TO:{label:`Related to`,description:`A general relationship between two nodes`},HAS_DECISION:{label:`Decision`,description:`A decision produced by the project`},fallback:{label:`Related to`,description:`A relationship between two nodes`},quoted:`“{label}”`},graph:{hit:`Match`,projectMarked:`Marked as a project`,humanUnseen:`Agent has not viewed this human edit`,humanViewed:`Agent viewed this edit; review is still pending`},discovery:{failedSuffix:`; {count} project could not be checked |; {count} projects could not be checked`,matches:`Related content exists in other projects; open one to see it{failure}.`,noOtherProjects:`There are no other personal projects to check.`,allFailed:`Other personal projects could not be checked. Try again later.`,checkedPartial:`Checked {checked} / {total} other personal projects and found no candidate content{failure}.`,checkedAll:`Checked the other personal projects and found no candidate content{failure}.`},hierarchy:{parentSummary:`Parent project`}}},Xm={"zh-CN":{edit:{quadrants:{known_known:`已知的已知 · 被明确表达的知识或结论`,known_unknown:`已知的未知 · 被明确提出的未解问题`,unknown_known:`未知的已知 · 从行为或反馈提炼的隐性知识`,unknown_unknown:`未知的未知 · 探索中发现的潜在盲点`},confirmationStates:{pending:`待确认 · 尚未完成内容与象限审核`,confirmed:`已确认 · 内容与象限归类均已确认`},inheritance:{local:`仅当前项目 · 不自动借给其他项目`,descendants:`子项目可继承 · 仅沿明确知识关系`,selected:`仅指定项目可继承`},profiles:{none:`不属于协作偏好`},scopes:{global:`个人全局`,project:`指定个人项目`},replacementNone:`没有明确的替代内容`,errors:{reasonRequired:`请说明纠正原因`,nameRequired:`名称不能为空`,factRequired:`关系事实不能为空`,classificationRequired:`请先明确当前分类与确认状态`,existenceRequired:`请说明为什么会有这条知识`,quadrantRequired:`请说明为什么被分到这个象限`,proposerRequired:`请选择提出者`,confirmerRequired:`已确认状态必须记录确认者`,inheritedProjectsRequired:`请选择可以继承这条知识的项目`,statusReasonRequired:`请说明为什么这条知识已经失效`,restoreReasonRequired:`请说明为什么恢复有效`,replacementRequired:`请选择明确的替代内容`,replacementReasonRequired:`请说明补充替代关联的依据`,projectRequired:`请选择目标个人项目`,assignmentReasonRequired:`请说明调整原因`,alreadyAssigned:`这条知识已经属于该项目`,preferenceProjectRequired:`请选择生效的个人项目`,preferenceReasonRequired:`请说明为什么调整生效范围`,saveFailed:`保存失败`},notices:{corrected:`知识已纠正,原始证据仍然保留。`,invalidatedWithReplacement:`知识已标记为失效,并已关联替代内容。`,invalidated:`知识已标记为失效,历史记录已保留。`,restored:`知识已恢复为有效。`,replacementSaved:`替代关联已保存,现在可以从历史记录直接跳转。`,assignmentChanged:`项目归属已调整,来源会话和历史证据没有改变。`,preferenceGlobal:`这条协作偏好现在对所有个人项目生效。`,preferenceProject:`这条协作偏好现在只对所选个人项目生效。`},titleRestore:`查看和恢复知识`,titleCorrect:`纠正知识`,intro:`修改会生成新的修订记录。`,currentContent:`当前内容`,name:`名称`,description:`说明`,fact:`关系事实`,classification:`当前分类`,confirmationStatus:`确认状态`,preferenceDimension:`协作偏好维度`,originQuadrant:`发现时象限:{quadrant}。这是捕获来源标签,后续编辑不会覆盖。`,missingQuadrant:`这条旧内容没有发现来源,保存前请选择。`,basis:`确认依据`,whyExists:`为什么会有这条知识`,whyQuadrant:`为什么被分到这个象限`,proposer:`提出者`,proposerDescription:`提出者说明`,proposerPlaceholder:`可选,例如 Codex`,confirmer:`确认者`,confirmerDescription:`确认者说明`,confirmerPlaceholder:`可选,例如当前用户`,agentConfirmedBoundary:`“Agent 已确认”只来自实际使用证据;这里可保留待确认,或记录你的确认。`,crossProjectInheritance:`跨项目知识继承`,inheritanceScope:`继承范围`,inheritedProjects:`可继承项目`,inheritanceBoundary:`只有沿 PART_OF 或 USES_KNOWLEDGE_FROM 可达时才会继承;RELATED_TO 不扩展检索范围。`,replacement:`替代内容`,optionalReplacement:`失效时的替代内容(可选)`,historicalReplacement:`这条历史记录被哪条内容取代`,activeReplacement:`选择当前有效的内容`,replacementBoundary:`选择后才会建立替代关联。`,correctionReason:`纠正原因`,invalidate:`标记为失效`,restore:`恢复为有效`,saveReplacement:`保存替代关联`,savingConfirmed:`正在保存并确认知识…`,savingPending:`正在保存待确认知识…`,invalidating:`正在标记知识失效…`,restoring:`正在恢复知识…`,savingReplacement:`正在保存替代关联…`,changingOwnership:`正在调整知识归属…`,savingScope:`正在保存生效范围…`,saveConfirmed:`保存并确认`,savePending:`保存为待确认`,projectOwnership:`项目归属`,ownershipCopy:`只调整项目归属,来源和证据不变。`,targetProject:`目标个人项目`,assignmentReason:`调整原因`,adjustOwnership:`调整归属`,preferenceScope:`偏好生效范围`,preferenceScopeCopy:`个人全局对所有项目生效;项目范围只对所选项目生效。`,effectiveScope:`生效范围`,personalProject:`个人项目`,saveScope:`保存生效范围`},confirm:{preferenceSubject:`这条偏好`,knowledgeSubject:`这条知识`,sourceSupport:`该内容由已保留的来源记录支持。`,quadrantReason:`该内容在发现时符合“{quadrant}”:{description}`,confirmationReason:`已核对内容与发现时象限,确认无误。`,errors:{quadrantRequired:`请先补充发现时象限,再确认这条知识`,existenceRequired:`请说明为什么会有这条知识`,quadrantReasonRequired:`请说明为什么属于当前象限`,confirmationReasonRequired:`请填写确认说明`,acknowledgmentRequired:`请先确认已经核对内容与发现时象限`,failed:`确认失败`},confirmed:`{subject}已确认,并记录了确认人和确认时间。`,title:`确认{subject}`,intro:`确认会记录你和确认时间。`,preference:`协作偏好`,knowledge:`知识内容`,quadrant:`发现时象限 · {quadrant}`,whyExists:`为什么会有这条知识`,whyQuadrant:`为什么属于当前象限`,confirmationCopy:`确认说明`,acknowledgment:`我已核对内容和发现来源。`,confirming:`正在确认{subject}…`,confirmSubject:`确认{subject}`},batch:{sameSource:`同一来源`,sameSession:`同一会话`,groupMeta:`{kind} · {count} 条`,errors:{groupRequired:`请选择一个来源或会话`,itemsRequired:`批量确认至少需要选择两条知识`,reasonRequired:`请说明本次批量确认的依据`,sourceNameRequired:`请填写权威来源名称`,acknowledgmentRequired:`请先确认已经核对内容与发现时象限`,failed:`批量确认失败`},confirmed:`已确认 {count} 条。`,title:`按来源或会话批量确认`,intro:`一次确认所选的全部条目,各自保留修订记录。`,range:`确认范围`,confirmer:`确认者`,confirmerDescription:`确认者说明`,userPlaceholder:`可选,例如当前用户`,sourcePlaceholder:`必填,例如已批准的 PRD`,basis:`批量确认依据`,basisPlaceholder:`例如:已按本次会话逐条核对内容及其发现时象限`,agentBoundary:`Agent 不能代替你确认;之后再修改会回到待确认。`,itemReview:`逐条核对`,selected:`已选择 {selected} / {total} 条`,selectAll:`全部选择`,clearAll:`全部取消`,limit:`单次最多 200 条。`,acknowledgment:`我已核对所选内容和发现来源。`,confirming:`正在确认所选知识…`,confirmItems:`确认 {count} 条知识`}},"en-US":{edit:{quadrants:{known_known:`Known known · explicitly expressed knowledge or conclusion`,known_unknown:`Known unknown · explicitly raised unresolved question`,unknown_known:`Unknown known · tacit insight from behavior or feedback`,unknown_unknown:`Unknown unknown · potential blind spot surfaced through exploration`},confirmationStates:{pending:`Pending · content and quadrant review not complete`,confirmed:`Confirmed · content and quadrant classification both reviewed`},inheritance:{local:`Current project only · not shared automatically`,descendants:`Child projects may inherit · only through explicit knowledge relationships`,selected:`Selected projects only`},profiles:{none:`Not a collaboration preference`},scopes:{global:`Personal global`,project:`Selected personal project`},replacementNone:`No explicit replacement`,errors:{reasonRequired:`Explain why this correction is needed`,nameRequired:`Name is required`,factRequired:`Relationship fact is required`,classificationRequired:`Set the current classification and confirmation status first`,existenceRequired:`Explain why this knowledge exists`,quadrantRequired:`Explain why this knowledge belongs to this quadrant`,proposerRequired:`Choose the proposer`,confirmerRequired:`Confirmed status requires a confirmer`,inheritedProjectsRequired:`Choose the projects that may inherit this knowledge`,statusReasonRequired:`Explain why this knowledge is no longer active`,restoreReasonRequired:`Explain why this knowledge should be restored`,replacementRequired:`Choose an explicit replacement`,replacementReasonRequired:`Explain why this replacement link is being added`,projectRequired:`Choose a target personal project`,assignmentReasonRequired:`Explain why ownership is changing`,alreadyAssigned:`This knowledge already belongs to that project`,preferenceProjectRequired:`Choose the personal project where this preference applies`,preferenceReasonRequired:`Explain why the effective scope is changing`,saveFailed:`Save failed`},notices:{corrected:`Knowledge corrected; original evidence retained.`,invalidatedWithReplacement:`Knowledge marked inactive and linked to its replacement.`,invalidated:`Knowledge marked inactive; history retained.`,restored:`Knowledge restored as active.`,replacementSaved:`Replacement link saved; the historical record now links to it.`,assignmentChanged:`Project ownership changed; source sessions and historical evidence are unchanged.`,preferenceGlobal:`This collaboration preference now applies to all personal projects.`,preferenceProject:`This collaboration preference now applies only to the selected personal project.`},titleRestore:`View and restore knowledge`,titleCorrect:`Correct knowledge`,intro:`Changes create a new revision.`,currentContent:`Current content`,name:`Name`,description:`Description`,fact:`Relationship fact`,classification:`Current classification`,confirmationStatus:`Confirmation status`,preferenceDimension:`Collaboration preference dimension`,originQuadrant:`Discovery quadrant: {quadrant}. This source label is not overwritten by later edits.`,missingQuadrant:`This legacy item has no discovery source. Choose one before saving.`,basis:`Confirmation basis`,whyExists:`Why this knowledge exists`,whyQuadrant:`Why it belongs to this quadrant`,proposer:`Proposer`,proposerDescription:`Proposer description`,proposerPlaceholder:`Optional, for example Codex`,confirmer:`Confirmer`,confirmerDescription:`Confirmer description`,confirmerPlaceholder:`Optional, for example current user`,agentConfirmedBoundary:`“Agent confirmed” only comes from actual use. Here you can keep it pending or confirm it yourself.`,crossProjectInheritance:`Cross-project knowledge inheritance`,inheritanceScope:`Inheritance scope`,inheritedProjects:`Projects allowed to inherit`,inheritanceBoundary:`Inheritance follows only PART_OF or USES_KNOWLEDGE_FROM. RELATED_TO does not expand retrieval.`,replacement:`Replacement content`,optionalReplacement:`Replacement when invalidated (optional)`,historicalReplacement:`Content that replaced this historical record`,activeReplacement:`Choose current active content`,replacementBoundary:`A replacement link is created only when you pick one.`,correctionReason:`Correction reason`,invalidate:`Mark inactive`,restore:`Restore as active`,saveReplacement:`Save replacement link`,savingConfirmed:`Saving and confirming knowledge…`,savingPending:`Saving knowledge as pending…`,invalidating:`Marking knowledge inactive…`,restoring:`Restoring knowledge…`,savingReplacement:`Saving replacement link…`,changingOwnership:`Changing knowledge ownership…`,savingScope:`Saving effective scope…`,saveConfirmed:`Save and confirm`,savePending:`Save as pending`,projectOwnership:`Project ownership`,ownershipCopy:`Only the project changes; sources and evidence stay.`,targetProject:`Target personal project`,assignmentReason:`Reason for change`,adjustOwnership:`Change ownership`,preferenceScope:`Preference effective scope`,preferenceScopeCopy:`Personal-global applies everywhere; project scope applies to the selected project only.`,effectiveScope:`Effective scope`,personalProject:`Personal project`,saveScope:`Save effective scope`},confirm:{preferenceSubject:`this preference`,knowledgeSubject:`this knowledge`,sourceSupport:`This content is supported by a retained source record.`,quadrantReason:`At discovery, this content matched “{quadrant}”: {description}`,confirmationReason:`I reviewed the content and discovery quadrant and confirm they are accurate.`,errors:{quadrantRequired:`Add a discovery quadrant before confirming this knowledge`,existenceRequired:`Explain why this knowledge exists`,quadrantReasonRequired:`Explain why it belongs to the current quadrant`,confirmationReasonRequired:`Add a confirmation note`,acknowledgmentRequired:`Confirm that you reviewed both the content and discovery quadrant`,failed:`Confirmation failed`},confirmed:`{subject} is confirmed, with confirmer and confirmation time recorded.`,title:`Confirm {subject}`,intro:`Confirming records you and the time.`,preference:`Collaboration preference`,knowledge:`Knowledge content`,quadrant:`Discovery quadrant · {quadrant}`,whyExists:`Why this knowledge exists`,whyQuadrant:`Why it belongs to the current quadrant`,confirmationCopy:`Confirmation note`,acknowledgment:`I reviewed the content and discovery source.`,confirming:`Confirming {subject}…`,confirmSubject:`Confirm {subject}`},batch:{sameSource:`Same source`,sameSession:`Same session`,groupMeta:`{kind} · {count} item | {kind} · {count} items`,errors:{groupRequired:`Choose a source or session`,itemsRequired:`Batch confirmation requires at least two knowledge items`,reasonRequired:`Explain the basis for this batch confirmation`,sourceNameRequired:`Enter the authoritative source name`,acknowledgmentRequired:`Confirm that you reviewed the content and discovery quadrants`,failed:`Batch confirmation failed`},confirmed:`Confirmed {count}.| Confirmed {count} knowledge items; each retains its basis and this confirmation time.`,title:`Batch confirm by source or session`,intro:`Confirms every selected item; each keeps its own revision.`,range:`Confirmation range`,confirmer:`Confirmer`,confirmerDescription:`Confirmer description`,userPlaceholder:`Optional, for example current user`,sourcePlaceholder:`Required, for example approved PRD`,basis:`Batch confirmation basis`,basisPlaceholder:`For example: reviewed the content and discovery quadrant of every selected item in this session`,agentBoundary:`An Agent cannot confirm for you; later edits return items to pending.`,itemReview:`Review each item`,selected:`{selected} / {total} selected`,selectAll:`Select all`,clearAll:`Clear all`,limit:`Up to 200 at a time.`,acknowledgment:`I reviewed the selected content and discovery sources.`,confirming:`Confirming selected knowledge…`,confirmItems:`Confirm {count} item | Confirm {count} items`}}},Zm={"zh-CN":{graph:{aria:`知识关系图`,legend:`关系图例`,legendCopy:`图标与中文含义`},hierarchy:{aria:`当前项目的上级项目`,level:`项目层级`,parents:`上级项目`,belongsTo:`{name} 属于以下项目`,listAria:`上级项目列表`,openParent:`打开上级项目“{name}”`,belongsToParent:`{name} 属于此项目`,currentProject:`当前项目`},workspace:{filters:{allTypes:`全部类型`,allQuadrants:`全部象限`,allKnowledge:`全部知识`,preferences:`协作偏好`,projectKnowledge:`项目与通用知识`,allHumanStates:`全部人工状态`,allHumanChanged:`人工改过(全部)`,agentUnseen:`Agent 未查看`,viewedPending:`已查看待审核`,agentReviewed:`Agent 已审核`},status:{all:`全部状态`,graphUnread:`尚未读取图谱`},counts:{graph:`{nodes} 个节点 · {edges} 条当前关系`,materials:`{count} 条项目资料`,visibleMaterials:`显示 {visible} / {total} 条项目资料`,knowledge:`{status} {count} 条知识内容`,visibleKnowledge:`{status}:显示 {visible} / {total} 条知识内容`},spaces:{allPersonalProjects:`全部个人项目 · {name}`,personalProject:`个人项目 · {name}`,publicProject:`公共项目 · {name}`},discovery:{checking:`当前范围没有命中,正在检查其他个人项目…`,retry:`没有找到,换个关键词试试。`,noHitKicker:`当前范围未命中`,noResults:`没有检索到“{query}”`,candidateCount:`{count} 条候选内容`,enterProject:`进入项目搜索 →`},search:{searching:`正在搜索当前范围的知识…`,results:`找到 {entities} 个实体 · {relationships} 条关系 · 图中高亮 {nodes} 个节点`,noResults:`当前范围未检索到匹配结果`,failed:`搜索失败`,aria:`知识搜索`,materialsPlaceholder:`搜索项目资料`,contentPlaceholder:`搜索内容、来源或关系`,knowledgeAria:`搜索知识内容`},errors:{projectUnknown:`无法确定这条项目资料所属的个人项目`},notices:{materialUpdated:`“{name}”的项目资料已更新。`,projectCreated:`个人项目“{name}”已创建。`,linked:`这条知识已加入“{name}”,主要归属保持不变。`,alreadyLinked:`“{name}”已经在使用这条知识。`,duplicateReused:`“{name}”已有相同内容,已复用现有节点。`,conflictPending:`已保留项目操作;冲突内容暂不在“{name}”生效。`,conflictResolved:`冲突已按当前选择处理,并保留处理记录。`,scopeUpdated:`项目知识范围已更新。`},source:{projectPreference:`项目偏好`,personalGlobal:`个人全局`,noSources:`无来源记录`,primaryProject:`主要 {name}`},view:{modeAria:`知识查看方式`,directory:`内容目录`,graph:`关系图谱`,graphSpace:`图谱空间`,borrowProjects:`借鉴其他项目`,selectedContexts:`已选 {count}`,noneSelected:`未选择`,currentContext:`本次上下文`,contextCopy:`只加入当前查看和查询,不改变知识归属。`,currentScopeOnly:`仅加入当前范围`,contentType:`内容类型`,discoveryQuadrant:`发现时象限`,classification:`知识归类`,humanChangeStatus:`人工变更状态`,publishProject:`发布当前项目`,graphControls:`图谱视图控制`,zoomOut:`缩小图谱`,zoomIn:`放大图谱`,fit:`适应`,reset:`重置`,materialDirectory:`项目资料目录`,knowledgeDirectory:`知识内容目录`,directoryTypeAria:`目录内容类型`,knowledgeContent:`知识内容`,projectMaterials:`项目资料`,knowledgeStatusAria:`知识内容状态`,columns:{content:`内容`,quadrant:`发现时象限`,review:`确认状态`,type:`类型`,source:`来源`,updated:`更新时间`,validity:`有效性`},active:`有效`,noFilteredKnowledge:`当前筛选条件下没有知识内容`,noKnowledge:`这个项目还没有可确认或翻转状态的知识内容`,viewDetails:`查看详情 →`,noFilteredMaterials:`当前搜索条件下没有项目资料`,noMaterials:`这个项目还没有项目资料`,noGraph:`这个空间还没有可展示的关系图`,graphHint:`滚轮缩放 · 拖动画布 · 点击查看详情 · 悬停显示节点短 ID`}},organizer:{quadrants:{known_unknown:{short:`明确问题`,coordinate:`已意识 · 未掌握`},known_known:{short:`明确表达`,coordinate:`已意识 · 已掌握`},unknown_unknown:{short:`盲点探索`,coordinate:`未意识 · 未掌握`},unknown_known:{short:`隐性提炼`,coordinate:`未意识 · 已掌握`}},review:{pendingHint:`尚无有效的确认人和确认时间`,agentConfirmedHint:`实际使用达到策略阈值,权重低于人工确认`,confirmedHint:`内容与象限归类均已确认`},filterKnowledge:`筛选知识`,searchPlaceholder:`搜索内容、类型或来源`,quadrantFilterAria:`发现来源筛选`,discoverySource:`发现来源`,reviewFilterAria:`确认状态筛选`,reviewStatus:`确认状态`,showing:`显示 {visible} / {total} 条`,batchConfirm:`批量确认 · {count} 组`,loadingMore:`正在载入更多知识…`,paginationError:`知识分页未返回有效的下一页位置。`,directoryAria:`知识整理目录`,confirmationBasis:`确认依据`,updated:`更新时间`,noFilteredContent:`当前筛选条件下没有内容`,noContent:`个人空间还没有可整理的结构化知识`},inspector:{humanReview:{unseen:`这次人工修改还没有被 Agent 调用查看,提醒会持续保留。`,viewed:`Agent 已查看,还没完成审核。`,reviewed:`Agent 已审核当前修改。`},inheritance:{descendants:`允许子项目继承`,selected:`仅指定项目({count})`,local:`仅当前项目`},ids:{projection:`资料投影 ID`,node:`节点 ID`,relationship:`关系 ID`},ownership:`内容归属`,projectionCopy:`这是项目资料在图中的投影,修改请编辑项目资料。`,currentJudgment:`当前判定`,humanReviewTitle:`人工变更审核`,humanVersion:`人工变更版本 {version}`,replacement:`替代关系`,replacedBy:`已被以下内容取代`,noReplacement:`没有可跳转的替代内容`,viewReplacement:`查看替代内容 →`,replacementOutOfScope:`已记录替代对象,但它不在当前查看范围内。`,missingReplacement:`这条历史只记录了失效原因,没有替代项。`,fields:{type:`类型`,originQuadrant:`发现时象限`,currentQuadrant:`当前分类`,quadrantExplanation:`象限解释`,confirmationStatus:`确认状态`,confidence:`置信分`,utility:`效用分`,materialUse:`有效使用`,recentUse:`最近使用`,inheritance:`知识继承`,preference:`协作偏好`,effectiveScope:`生效范围`,source:`来源`,target:`目标`,status:`状态`},useCount:`{uses} 次 / {tasks} 个任务`,selectedProject:`指定项目 · {project}`,personalGlobal:`个人全局`,historical:`历史 · 已失效`,basisTitle:`确认依据`,basis:{existence:`为什么会有`,quadrant:`为什么属于该象限`,proposer:`提出者`,confirmer:`确认者`,time:`确认时间`,agentPolicy:`Agent 策略`},legacyBasis:`旧数据缺少确认依据,已归入待确认。`,contentDetails:`内容详情`,technicalDetails:`技术信息`,formation:`形成过程`,confirmPreference:`确认这条偏好`,confirmKnowledge:`确认这条知识`,editMaterials:`编辑项目资料`,locateDirectory:`在内容目录中定位`,locateGraph:`在关系图中定位`,enterProject:`进入这个项目`,publish:`发布 / 同步到公共`,createProject:`基于此创建项目`,correctPreference:`纠正这条偏好`,correctOrAssign:`纠正或调整归属`,relations:`关联关系`,relationshipFallback:`关系`,evidence:`证据与来源`,sourceRecord:`来源记录`,source:`来源`,openConversation:`打开原会话`,openConversationWith:`使用 {app} 打开`,copiedSessionId:`已复制会话 ID`,copySessionId:`复制会话 ID`,revisions:`修订历史`,noRevisionCopy:`未填写说明`,audit:`人工与 Agent 记录`,version:`版本 {version}`,conflictNone:`无冲突`,conflictFound:`有冲突`,classificationReasonable:`合理`,classificationAdjust:`需调整`,conflictClassification:`冲突:{conflict} · 分类:{classification}`,placeholderTitle:`选择一个节点或关系`,placeholderCopy:`点击后查看完整说明、来源证据和关联关系。`}},"en-US":{graph:{aria:`Knowledge relationship graph`,legend:`Relationship legend`,legendCopy:`Icons and meanings`},hierarchy:{aria:`Parent projects of the current project`,level:`Project hierarchy`,parents:`Parent projects`,belongsTo:`{name} belongs to the following projects`,listAria:`Parent project list`,openParent:`Open parent project “{name}”`,belongsToParent:`{name} belongs to this project`,currentProject:`Current project`},workspace:{filters:{allTypes:`All types`,allQuadrants:`All quadrants`,allKnowledge:`All knowledge`,preferences:`Collaboration preferences`,projectKnowledge:`Project & general knowledge`,allHumanStates:`All human-change states`,allHumanChanged:`All human edits`,agentUnseen:`Agent has not viewed`,viewedPending:`Viewed, awaiting review`,agentReviewed:`Agent reviewed`},status:{all:`All states`,graphUnread:`Graph not loaded`},counts:{graph:`{nodes} nodes · {edges} active relationships`,materials:`{count} project material | {count} project materials`,visibleMaterials:`Showing {visible} / {total} project materials`,knowledge:`{status}: {count} knowledge item | {status}: {count} knowledge items`,visibleKnowledge:`{status}: showing {visible} / {total} knowledge items`},spaces:{allPersonalProjects:`All personal projects · {name}`,personalProject:`Personal project · {name}`,publicProject:`Public project · {name}`},discovery:{checking:`No match in the current scope. Checking other personal projects…`,retry:`Nothing found. Try other keywords.`,noHitKicker:`No match in current scope`,noResults:`No results for “{query}”`,candidateCount:`{count} candidate item | {count} candidate items`,enterProject:`Search in project →`},search:{searching:`Searching knowledge in the current scope…`,results:`Found {entities} entities · {relationships} relationships · highlighted {nodes} nodes`,noResults:`No matching results in the current scope`,failed:`Search failed`,aria:`Knowledge search`,materialsPlaceholder:`Search project materials`,contentPlaceholder:`Search content, sources, or relationships`,knowledgeAria:`Search knowledge content`},errors:{projectUnknown:`Could not determine which personal project owns this material`},notices:{materialUpdated:`Project materials for “{name}” were updated.`,projectCreated:`Personal project “{name}” was created.`,linked:`This knowledge was added to “{name}”; its primary ownership is unchanged.`,alreadyLinked:`“{name}” already uses this knowledge.`,duplicateReused:`Matching content already exists in “{name}”; the existing node was reused.`,conflictPending:`The project action was kept; conflicting content is not active in “{name}”.`,conflictResolved:`The conflict was handled using the current choice, with an audit record retained.`,scopeUpdated:`Project knowledge scope updated.`},source:{projectPreference:`Project preference`,personalGlobal:`Personal global`,noSources:`No source records`,primaryProject:`Primary {name}`},view:{modeAria:`Knowledge view mode`,directory:`Content directory`,graph:`Relationship graph`,graphSpace:`Graph space`,borrowProjects:`Borrow from other projects`,selectedContexts:`{count} selected`,noneSelected:`None selected`,currentContext:`Current context`,contextCopy:`Adds projects only to this view and query; knowledge ownership is unchanged.`,currentScopeOnly:`Current scope only`,contentType:`Content type`,discoveryQuadrant:`Discovery quadrant`,classification:`Knowledge classification`,humanChangeStatus:`Human-change status`,publishProject:`Publish current project`,graphControls:`Graph view controls`,zoomOut:`Zoom out`,zoomIn:`Zoom in`,fit:`Fit`,reset:`Reset`,materialDirectory:`Project material directory`,knowledgeDirectory:`Knowledge content directory`,directoryTypeAria:`Directory content type`,knowledgeContent:`Knowledge content`,projectMaterials:`Project materials`,knowledgeStatusAria:`Knowledge content status`,columns:{content:`Content`,quadrant:`Discovery quadrant`,review:`Confirmation status`,type:`Type`,source:`Source`,updated:`Updated`,validity:`Validity`},active:`Active`,noFilteredKnowledge:`No knowledge content matches the current filters`,noKnowledge:`This project has no knowledge content available for confirmation or status changes`,viewDetails:`View details →`,noFilteredMaterials:`No project materials match the current search`,noMaterials:`This project has no project materials`,noGraph:`This space has no relationships to display`,graphHint:`Scroll to zoom · drag the canvas · click for details · hover to show the short node ID`}},organizer:{quadrants:{known_unknown:{short:`Explicit question`,coordinate:`Aware · not mastered`},known_known:{short:`Explicit statement`,coordinate:`Aware · mastered`},unknown_unknown:{short:`Blind-spot exploration`,coordinate:`Unaware · not mastered`},unknown_known:{short:`Tacit insight`,coordinate:`Unaware · mastered`}},review:{pendingHint:`No valid confirmer and confirmation time`,agentConfirmedHint:`Material use reached the policy threshold; lower authority than human confirmation`,confirmedHint:`Both content and quadrant classification are confirmed`},filterKnowledge:`Filter knowledge`,searchPlaceholder:`Search content, type, or source`,quadrantFilterAria:`Discovery source filter`,discoverySource:`Discovery source`,reviewFilterAria:`Confirmation status filter`,reviewStatus:`Confirmation status`,showing:`Showing {visible} / {total}`,batchConfirm:`Batch confirm · {count} group | Batch confirm · {count} groups`,loadingMore:`Loading more knowledge…`,paginationError:`Knowledge pagination did not return a valid next offset.`,directoryAria:`Knowledge organizer directory`,confirmationBasis:`Confirmation basis`,updated:`Updated`,noFilteredContent:`No content matches the current filters`,noContent:`The personal space has no structured knowledge to organize`},inspector:{humanReview:{unseen:`An Agent has not viewed this human edit; the reminder remains active.`,viewed:`Viewed by an Agent; review not finished.`,reviewed:`Reviewed by an Agent.`},inheritance:{descendants:`Child projects may inherit`,selected:`Selected projects only ({count})`,local:`Current project only`},ids:{projection:`Material projection ID`,node:`Node ID`,relationship:`Relationship ID`},ownership:`Content ownership`,projectionCopy:`Projected from project materials; edit the materials to change it.`,currentJudgment:`Current judgment`,humanReviewTitle:`Human-change review`,humanVersion:`Human-change version {version}`,replacement:`Replacement relationship`,replacedBy:`Replaced by the following content`,noReplacement:`No linked replacement content`,viewReplacement:`View replacement →`,replacementOutOfScope:`A replacement is recorded but outside the current view scope.`,missingReplacement:`Only an invalidation reason was recorded; no replacement.`,fields:{type:`Type`,originQuadrant:`Discovery quadrant`,currentQuadrant:`Current classification`,quadrantExplanation:`Quadrant explanation`,confirmationStatus:`Confirmation status`,confidence:`Confidence score`,utility:`Utility score`,materialUse:`Material use`,recentUse:`Most recent use`,inheritance:`Knowledge inheritance`,preference:`Collaboration preference`,effectiveScope:`Effective scope`,source:`Source`,target:`Target`,status:`Status`},useCount:`{uses} uses / {tasks} tasks`,selectedProject:`Selected project · {project}`,personalGlobal:`Personal global`,historical:`Historical · inactive`,basisTitle:`Confirmation basis`,basis:{existence:`Why it exists`,quadrant:`Why it belongs to this quadrant`,proposer:`Proposed by`,confirmer:`Confirmed by`,time:`Confirmation time`,agentPolicy:`Agent policy`},legacyBasis:`Legacy data without a confirmation basis; treated as pending.`,contentDetails:`Content details`,technicalDetails:`Technical details`,formation:`How it formed`,confirmPreference:`Confirm this preference`,confirmKnowledge:`Confirm this knowledge`,editMaterials:`Edit project materials`,locateDirectory:`Locate in content directory`,locateGraph:`Locate in relationship graph`,enterProject:`Open this project`,publish:`Publish / sync publicly`,createProject:`Create project from this`,correctPreference:`Correct this preference`,correctOrAssign:`Correct or change ownership`,relations:`Relationships`,relationshipFallback:`Relationship`,evidence:`Evidence & sources`,sourceRecord:`Source record`,source:`Source`,openConversation:`Open source conversation`,openConversationWith:`Open with {app}`,copiedSessionId:`Session ID copied`,copySessionId:`Copy session ID`,revisions:`Revision history`,noRevisionCopy:`No description provided`,audit:`Human & Agent records`,version:`Version {version}`,conflictNone:`No conflict`,conflictFound:`Conflict`,classificationReasonable:`Reasonable`,classificationAdjust:`Needs adjustment`,conflictClassification:`Conflict: {conflict} · classification: {classification}`,placeholderTitle:`Select a node or relationship`,placeholderCopy:`Select an item to view its full description, source evidence, and relationships.`}}},Qm={"zh-CN":{aria:`FULI 说明`,labelsAria:`知识标签说明`,philosophy:{title:`对话会结束,方法应该留下`,intro:`FULI 帮你在与 Agent 的协作中,沉淀自己的工作流、判断方式和品味。`,support:`不保存每一句话,只留下稳定、能再次用上的经验。`,sectionTitle:`方法如何留下`,capture:{index:`01`,title:`从真实协作中沉淀`,description:`偏好、步骤、标准和边界来自真实任务;Agent 提炼,你来确认。`},project:{index:`02`,title:`让个人项目逐渐成形`,description:`项目可以从对话、文档或仓库开始;归属由你决定,随时可以调整。`},review:{index:`03`,title:`周期回顾,而不是无限堆积`,description:`定期回顾:确认内容、处理冲突、清理过期信息,Agent 可以帮你整理。`},reuse:{index:`04`,title:`跨 Agent 复用自己的方法`,description:`重复的流程不必反复交代:可以是全局工作流,也可以只属于某个项目。`},boundariesTitle:`始终保留的边界`,local:{title:`本机优先`,description:`个人项目与对话默认只在本机,明确提交才会公开。`},authority:{title:`用户决定`,description:`Agent 可以建议和整理,最终取舍由你决定。`},scope:{title:`按范围复用`,description:`通用方法跨项目复用;项目知识不会因为相似就进入别的项目。`}},labelsIntro:{title:`标签体系`,description:`一条知识有三个维度:偏好类型、发现来源、确认状态。`},credits:{title:`开源致谢`,description:`FULI 建立在这些开源项目之上。`,sourceNote:`项目名称、链接和许可证归各自社区与权利人所有。`,roles:{vue:`界面框架`,vite:`构建工具`,pinia:`状态管理`,d3:`图谱可视化`,vitest:`前端测试`,hono:`HTTP 运行层`,neo4j:`图数据库`,zod:`结构校验`,fastapi:`Provider 服务`,graphiti:`时序知识图谱`,mcp:`Agent 工具协议`},finale:`让方法与项目,在每一次协作中继续生长。`,website:`访问 FULI 官网`},dimensions:{profile:{title:`偏好类型`,question:`这是什么偏好`,timing:`写入偏好时归类`},origin:{title:`发现来源`,question:`最初怎么发现`,timing:`首次写入后保留`},confirmation:{title:`确认状态`,question:`目前由谁确认`,timing:`随确认与使用证据变化`}},sections:{profile:{index:`01`,title:`偏好类型`,meta:`只用于个人偏好`},origin:{index:`02`,title:`发现来源`,meta:`所有知识都记录`},confirmation:{index:`03`,title:`确认状态`,meta:`所有知识都记录`}},profiles:{taste:{label:`品味`,short:`偏爱的结果或风格`,description:`你明确喜欢或排斥的方向:界面、文案、产品、架构。`},personality:{label:`个性`,short:`稳定的自我描述`,description:`你明确说过的长期协作特点;Agent 推断的先待确认。`},judgment:{label:`判断偏好`,short:`面对取舍时怎么决定`,description:`取舍时的条件、优先级、风险倾向和边界。`}},quadrants:{awareness:`意识程度`,aware:`已意识`,unaware:`未意识`,mastery:`掌握程度`,mastered:`已掌握`,unmastered:`未掌握`,knownUnknown:{label:`明确问题`,coordinate:`已意识 · 未掌握`,description:`已经提出,但仍没有答案的问题或取舍。`},knownKnown:{label:`明确表达`,coordinate:`已意识 · 已掌握`,description:`由你、文档或其他来源直接给出的知识或要求。`},unknownUnknown:{label:`盲点探索`,coordinate:`未意识 · 未掌握`,description:`在开放探索中才暴露出来、仍需判断的潜在盲点。`},unknownKnown:{label:`隐性提炼`,coordinate:`未意识 · 已掌握`,description:`从行为、示例、原型或反馈中提炼出的隐性知识。`},immutable:`发现来源不是可信度。后续确认不会改变它。`,unclassified:`“待分类”只表示旧内容还没补充发现来源。`},statuses:{entryCondition:`进入条件`,descriptionHeader:`说明`,pending:{label:`待确认`,description:`Agent 提出或推断的内容,或缺少确认记录的旧数据。`,rule:`写入时没有有效的用户或权威来源确认`},agentConfirmed:{label:`Agent 已确认`,description:`在多个任务中实际用上了;权重仍低于你的确认。`,rule:`至少 5 次有效使用、覆盖 3 个任务,并且没有未解决冲突`},confirmed:{label:`已确认`,description:`由用户或权威来源明确确认,具有最高确认权重。`,rule:`记录确认人、确认时间和确认依据`},usageBoundary:`检索、查看、进入上下文和自动注入都不算有效使用。`,resetBoundary:`内容或分类变化后回到待确认,除非同时由你重新确认。`},example:{title:`三个维度可以同时存在`,item:`FULI 保留主标题并减少解释性文案`,profile:`品味`,origin:`明确表达`,status:`已确认`,description:`这是你直接表达并确认的界面偏好。三个标签各说一件事。`},allFilter:`“全部”只是筛选条件,不是一种状态或类型。`},"en-US":{aria:`About FULI`,labelsAria:`Knowledge label guide`,philosophy:{title:`Conversations end. Methods should remain.`,intro:`FULI helps you keep your workflows, judgment, and taste as you work with Agents.`,support:`Not every line of a conversation — only stable experience worth reusing.`,sectionTitle:`How methods remain`,capture:{index:`01`,title:`Learn from real collaboration`,description:`Preferences, steps, standards, and boundaries come from real tasks. Agents extract; you confirm.`},project:{index:`02`,title:`Let personal projects take shape`,description:`A project can start from a chat, document, or repository. You choose where knowledge belongs and can move it any time.`},review:{index:`03`,title:`Review periodically, not endlessly accumulate`,description:`Review periodically: confirm, resolve conflicts, and retire stale items. Agents can help.`},reuse:{index:`04`,title:`Reuse your method across Agents`,description:`Stop re-explaining recurring processes: keep them as global workflows or within one project.`},boundariesTitle:`Boundaries that remain`,local:{title:`Local first`,description:`Personal projects and conversations stay on this device unless you explicitly submit them.`},authority:{title:`User decides`,description:`Agents suggest and organize; you make the final call.`},scope:{title:`Reuse by scope`,description:`General methods work across projects; project knowledge never leaks into another just because it looks similar.`}},labelsIntro:{title:`Label system`,description:`Each item has three dimensions: preference type, discovery source, and confirmation status.`},credits:{title:`Open-source credits`,description:`FULI is built on these open-source projects.`,sourceNote:`Project names, links, and licenses belong to their respective communities and rights holders.`,roles:{vue:`Interface framework`,vite:`Build tooling`,pinia:`State management`,d3:`Graph visualization`,vitest:`Frontend testing`,hono:`HTTP runtime`,neo4j:`Graph database`,zod:`Schema validation`,fastapi:`Provider service`,graphiti:`Temporal knowledge graph`,mcp:`Agent tool protocol`},finale:`Let methods and projects keep growing through every collaboration.`,website:`Visit the FULI website`},dimensions:{profile:{title:`Preference type`,question:`What kind of preference is it?`,timing:`Assigned when a preference is captured`},origin:{title:`Discovery source`,question:`How was it first discovered?`,timing:`Preserved after the first capture`},confirmation:{title:`Confirmation status`,question:`Who or what confirms it now?`,timing:`Changes with confirmation and usage evidence`}},sections:{profile:{index:`01`,title:`Preference type`,meta:`Personal preferences only`},origin:{index:`02`,title:`Discovery source`,meta:`Recorded for all knowledge`},confirmation:{index:`03`,title:`Confirmation status`,meta:`Recorded for all knowledge`}},profiles:{taste:{label:`Taste`,short:`Preferred outcomes or styles`,description:`What you explicitly like or reject in UI, writing, product, or architecture.`},personality:{label:`Personality`,short:`Stable self-description`,description:`Collaboration traits you stated; Agent inferences start as pending.`},judgment:{label:`Judgment preference`,short:`How trade-offs are decided`,description:`Decision conditions, priorities, risk posture, and boundaries.`}},quadrants:{awareness:`Awareness`,aware:`Aware`,unaware:`Unaware`,mastery:`Mastery`,mastered:`Mastered`,unmastered:`Not mastered`,knownUnknown:{label:`Explicit question`,coordinate:`Aware · not mastered`,description:`A question or trade-off that has been raised but is still unresolved.`},knownKnown:{label:`Explicit statement`,coordinate:`Aware · mastered`,description:`Stated directly by you, a document, or another source.`},unknownUnknown:{label:`Blind-spot exploration`,coordinate:`Unaware · not mastered`,description:`A potential blind spot surfaced through open exploration and still awaiting judgment.`},unknownKnown:{label:`Tacit extraction`,coordinate:`Unaware · mastered`,description:`Tacit knowledge extracted from behavior, examples, prototypes, or feedback.`},immutable:`Discovery source is not a truth score. Later confirmation does not change it.`,unclassified:`“Unclassified” only marks legacy content without a discovery source.`},statuses:{entryCondition:`Entry condition`,descriptionHeader:`Description`,pending:{label:`Pending`,description:`Proposed or inferred by an Agent, or legacy data without a confirmation record.`,rule:`No valid user or authoritative-source confirmation at capture time`},agentConfirmed:{label:`Agent confirmed`,description:`Actually used across several tasks; still ranks below your confirmation.`,rule:`At least 5 qualified uses across 3 tasks, with no unresolved conflict`},confirmed:{label:`Confirmed`,description:`Explicitly confirmed by the user or an authoritative source, with the highest confirmation weight.`,rule:`A confirmer, confirmation time, and confirmation basis are recorded`},usageBoundary:`Retrieval, viewing, context inclusion, and automatic injection do not count as qualified use.`,resetBoundary:`Edits return an item to pending unless you reconfirm it in the same change.`},example:{title:`All three dimensions can coexist`,item:`FULI keeps concise page titles and removes explanatory copy`,profile:`Taste`,origin:`Explicit statement`,status:`Confirmed`,description:`A UI preference you stated and confirmed. Each label says one thing.`},allFilter:`“All” is just a filter, not a status or type.`}},$m={"zh-CN":{connections:{loadingBindings:`正在读取外部知识源与连接状态…`,subscribing:`正在订阅公共项目…`,unsubscribing:`正在取消项目订阅…`,loadingSubscriptions:`正在读取项目订阅状态…`,creatingBinding:`正在保存外部知识源连接…`,checkingBinding:`正在检查外部知识源连接…`,syncingBinding:`正在同步外部知识到所选项目…`,disconnectingBinding:`正在断开外部知识源连接…`,savingBindingTargets:`正在保存知识源的项目范围…`,subscribed:`已订阅“{name}”。`,unsubscribed:`已取消订阅“{name}”。`,statusAria:`知识服务连接状态`,localGraphiti:`本地 Graphiti`,storage:`存储`,purpose:`用途`,localPurpose:`个人项目与协作偏好`,publicService:`公共服务`,currentStatus:`当前状态`,sharedServicesReady:`{count} 个共享服务可用`,notAvailable:`尚未可用`,publicCapability:{discovery:`发现`,subscription:`订阅`,publishing:`发布`,contribution:`投稿`,review:`审核`},subscriptionsTitle:`公共项目订阅`,sharedProject:`团队共享项目`,unsubscribe:`取消订阅`,noSubscriptions:`尚未订阅团队共享项目`,sharedProjectLabel:`团队共享项目`,choosePublicProject:`选择公共项目`,subscribe:`订阅项目`,externalTitle:`外部知识库`,externalHelp:`查看多个知识库连接方法`,bindingCount:`{count} 个连接`,externalCreated:`已连接“{name}”。`,externalChecked:`“{name}”连接正常。`,externalSynced:`已同步“{name}”。`,externalSyncedWithSkipped:`已同步“{name}”,跳过 {count} 个疑似凭据文档。`,credentialsSkipped:`已跳过 {count} 个疑似凭据文档`,externalDeleted:`已断开“{name}”。`,noExternalBindings:`尚未连接外部知识库`,bindingName:`连接名称`,connector:`连接器`,targetProject:`个人项目`,targetProjects:`绑定项目`,boundTo:`绑定到:`,manageProjects:`绑定项目`,saveProjects:`保存绑定`,projectsUpdated:`已更新“{name}”的项目绑定。`,bindingMode:`检索模式`,mode:{hybrid:`同步 + 实时`,mirror:`仅同步`,live:`仅实时`},transport:`传输`,command:`命令`,arguments:`参数(逗号分隔)`,tokenEnv:`令牌环境变量名`,resourcePrefix:`资源 URI 前缀`,retrievalUrl:`检索 API 地址`,knowledgeIds:`知识库 ID(逗号分隔)`,scoreThreshold:`最低相似度`,scoreThresholdInvalid:`最低相似度必须在 0 到 1 之间`,region:`区域`,module:`模块文件`,environmentNames:`环境变量名(逗号分隔)`,sourceJson:`来源配置 JSON`,trustedCode:`受信任的本地代码`,customSourceObject:`来源配置必须是 JSON 对象`,connect:`添加连接`,check:`检查`,sync:`同步`,disconnect:`断开`,loadingConflictPolicy:`正在读取所选项目的冲突策略…`,savingConflictPolicy:`正在保存所选项目的冲突策略…`,conflictTitle:`冲突策略`,conflictHelp:`查看冲突策略说明`,conflictAction:`知识冲突处理`,askHuman:`在 Agent 对话中询问`,agentDecide:`允许 AI 本次判断`,conflictSaved:`冲突策略已保存。`},review:{loadingPersonal:`正在读取待确认的个人知识…`,loadingPublic:`正在读取公共项目的待审核 Proposal…`,savingDecision:`正在保存审核决定…`,personalTitle:`个人发布确认`,beforePublic:`提交公共前确认`,keepPersonal:`仅保留个人`,ignore:`忽略`,submitPublic:`提交公共`,noPersonalDrafts:`当前没有待个人确认的内容`,publicTitle:`公共项目维护审核`,projectLabel:`审核项目`,maintainerReview:`共享 Maintainer 审核`,reject:`拒绝`,approve:`通过`,noProposals:`当前没有待审核 Proposal`},publicProjects:{relationLabels:{partOf:`属于`,usesKnowledgeFrom:`使用其共享知识`,dependsOn:`依赖`,providesTo:`提供能力`,sharesCapabilityWith:`共享能力`,successorOf:`后继于`,relatedTo:`相关`},fallbackDescription:`公共项目`,unsubscribed:`已取消订阅“{name}”;公共项目内容没有被删除。`,subscribed:`已订阅“{name}”。`,deleteNameRequired:`请输入完整项目名称后再删除`,deleted:`公共项目“{name}”已删除;本机个人项目仍保留。`,deleteFailed:`删除失败`,chooseRelationProjects:`请选择来源项目和关联项目`,parentRelationSubmitted:`关系已提交,等待父项目确认。`,relationCreated:`项目关系已建立。`,timeNotRecorded:`时间未记录`,intro:`浏览共享服务上的项目,按需订阅。`,overviewAria:`公共项目概览`,discoverable:`可发现`,subscribedCount:`已订阅`,manage:`管理项目`,coverage:`资料覆盖`,noSummary:`暂无摘要`,material:`资料`,noSources:`暂无已登记资料`,publishedByYou:`你发布的项目`,publiclyDiscoverable:`公共可发现`,unsubscribe:`取消订阅`,subscribe:`订阅项目`,noProjects:`暂无公共项目`,relationsTitle:`项目关系`,addRelation:`添加项目关系`,providerOperationsUnavailableTitle:`该服务不提供版本记录或项目关系`,providerOperationsUnavailable:`当前服务没有版本记录或项目关系。`,sourceProject:`来源项目`,sourceProjectLabel:`关系来源项目`,chooseProject:`选择项目`,relation:`关系`,relationTypeLabel:`项目关系类型`,targetProject:`关联项目`,targetProjectLabel:`关系目标项目`,preview:`关系预览`,parentConfirmation:`需要目标项目的维护者确认。`,relationBoundary:`项目关系不会自动订阅、授权或扩大当前检索范围。`,latestRelease:`最新发布`,noRelease:`这个项目还没有版本记录`,releaseHistory:`版本记录`,loading:`正在读取项目版本与关联关系…`,noReleaseHistory:`暂无版本记录`,noRelations:`暂无项目关系`,contentManagementSeparated:`项目内容与管理操作已分开。`,viewGraph:`查看知识图谱`,deleteTitle:`永久删除公共项目`,deleteCopy:`这只删除公共项目;本机个人项目仍会保留。`,enterFullName:`输入完整项目名称`,deleteWarning:`删除后无法从 FULI 自动恢复这个公共项目。`,deleting:`正在删除公共项目…`,deletePermanently:`永久删除`}},"en-US":{connections:{loadingBindings:`Loading external knowledge sources and connection status…`,subscribing:`Subscribing to the public project…`,unsubscribing:`Unsubscribing from the project…`,loadingSubscriptions:`Loading project subscription status…`,creatingBinding:`Saving the external knowledge connection…`,checkingBinding:`Checking the external knowledge connection…`,syncingBinding:`Syncing external knowledge to the selected projects…`,disconnectingBinding:`Disconnecting the external knowledge source…`,savingBindingTargets:`Saving the knowledge source’s project scope…`,subscribed:`Subscribed to “{name}”.`,unsubscribed:`Unsubscribed from “{name}”.`,statusAria:`Knowledge service connection status`,localGraphiti:`Local Graphiti`,storage:`Storage`,purpose:`Purpose`,localPurpose:`Personal projects and collaboration preferences`,publicService:`Public service`,currentStatus:`Current status`,sharedServicesReady:`{count} shared service available | {count} shared services available`,notAvailable:`Not available yet`,publicCapability:{discovery:`Discovery`,subscription:`subscriptions`,publishing:`publishing`,contribution:`contributions`,review:`review`},subscriptionsTitle:`Public project subscriptions`,sharedProject:`Shared team project`,unsubscribe:`Unsubscribe`,noSubscriptions:`No shared team projects subscribed`,sharedProjectLabel:`Shared team project`,choosePublicProject:`Choose a public project`,subscribe:`Subscribe`,externalTitle:`External knowledge`,externalHelp:`Learn how to connect multiple knowledge bases`,bindingCount:`{count} connections`,externalCreated:`Connected “{name}”.`,externalChecked:`“{name}” is ready.`,externalSynced:`Synced “{name}”.`,externalSyncedWithSkipped:`Synced “{name}”; skipped {count} possible credential documents.`,credentialsSkipped:`Skipped {count} possible credential documents`,externalDeleted:`Disconnected “{name}”.`,noExternalBindings:`No external knowledge connected`,bindingName:`Connection name`,connector:`Connector`,targetProject:`Personal project`,targetProjects:`Bound projects`,boundTo:`Bound to:`,manageProjects:`Bind projects`,saveProjects:`Save bindings`,projectsUpdated:`Updated project bindings for “{name}”.`,bindingMode:`Retrieval mode`,mode:{hybrid:`Sync + live`,mirror:`Sync only`,live:`Live only`},transport:`Transport`,command:`Command`,arguments:`Arguments (comma-separated)`,tokenEnv:`Token environment variable`,resourcePrefix:`Resource URI prefix`,retrievalUrl:`Retrieval API URL`,knowledgeIds:`Knowledge base IDs (comma-separated)`,scoreThreshold:`Minimum score`,scoreThresholdInvalid:`Minimum score must be between 0 and 1`,region:`Region`,module:`Module file`,environmentNames:`Environment names (comma-separated)`,sourceJson:`Source configuration JSON`,trustedCode:`Trusted local code`,customSourceObject:`Source configuration must be a JSON object`,connect:`Add connection`,check:`Check`,sync:`Sync`,disconnect:`Disconnect`,loadingConflictPolicy:`Loading the selected project’s conflict policy…`,savingConflictPolicy:`Saving the selected project’s conflict policy…`,conflictTitle:`Conflict policy`,conflictHelp:`Read the conflict-policy guide`,conflictAction:`Knowledge conflict handling`,askHuman:`Ask in the Agent conversation`,agentDecide:`Let AI decide for this response`,conflictSaved:`Conflict policy saved.`},review:{loadingPersonal:`Loading personal knowledge awaiting your decision…`,loadingPublic:`Loading public project Proposals awaiting review…`,savingDecision:`Saving the review decision…`,personalTitle:`Personal publishing confirmation`,beforePublic:`Confirm before public submission`,keepPersonal:`Keep personal`,ignore:`Ignore`,submitPublic:`Submit publicly`,noPersonalDrafts:`Nothing is awaiting personal confirmation`,publicTitle:`Public project maintenance review`,projectLabel:`Project to review`,maintainerReview:`Shared Maintainer review`,reject:`Reject`,approve:`Approve`,noProposals:`No Proposals awaiting review`},publicProjects:{relationLabels:{partOf:`belongs to`,usesKnowledgeFrom:`uses shared knowledge from`,dependsOn:`depends on`,providesTo:`provides capability to`,sharesCapabilityWith:`shares capability with`,successorOf:`succeeds`,relatedTo:`related to`},fallbackDescription:`Public project`,unsubscribed:`Unsubscribed from “{name}”. Public project content was not deleted.`,subscribed:`Subscribed to “{name}”.`,deleteNameRequired:`Enter the complete project name before deleting`,deleted:`Public project “{name}” was deleted. The local personal project remains.`,deleteFailed:`Delete failed`,chooseRelationProjects:`Choose both a source project and a related project`,parentRelationSubmitted:`Relationship submitted and awaiting parent project confirmation.`,relationCreated:`Project relationship created.`,timeNotRecorded:`Time not recorded`,intro:`Browse projects on shared services and subscribe as needed.`,overviewAria:`Public projects overview`,discoverable:`Discoverable`,subscribedCount:`Subscribed`,manage:`Manage project`,coverage:`Material coverage`,noSummary:`No summary`,material:`Material`,noSources:`No registered materials`,publishedByYou:`Published by you`,publiclyDiscoverable:`Publicly discoverable`,unsubscribe:`Unsubscribe`,subscribe:`Subscribe`,noProjects:`No public projects`,relationsTitle:`Project relationships`,addRelation:`Add project relationship`,providerOperationsUnavailableTitle:`This service does not provide releases or project relationships`,providerOperationsUnavailable:`This service has no release history or project relationships.`,sourceProject:`Source project`,sourceProjectLabel:`Relationship source project`,chooseProject:`Choose a project`,relation:`Relationship`,relationTypeLabel:`Project relationship type`,targetProject:`Related project`,targetProjectLabel:`Relationship target project`,preview:`Relationship preview`,parentConfirmation:`The target project maintainer must confirm.`,relationBoundary:`Project relationships do not automatically subscribe, authorize, or expand the current search scope.`,latestRelease:`Latest release`,noRelease:`This project has no release history`,releaseHistory:`Release history`,loading:`Loading project releases and relationships…`,noReleaseHistory:`No release history`,noRelations:`No project relationships`,contentManagementSeparated:`Project content and management actions are separated.`,viewGraph:`View knowledge graph`,deleteTitle:`Permanently delete public project`,deleteCopy:`This deletes only the public project. The local personal project remains.`,enterFullName:`Enter the complete project name`,deleteWarning:`FULI cannot automatically restore this public project after deletion.`,deleting:`Deleting the public project…`,deletePermanently:`Delete permanently`}}},eh={"zh-CN":{shared:{personalGlobal:`个人全局`,projectOnly:`仅 {project}`,projectScope:`项目范围 · {project}`,conflictReason:`偏好键“{key}”和生效范围相同,但当前内容不一致。`},profile:{scopes:{all:`全部范围`,global:`个人全局`,projectMeta:`{count} 条项目偏好`},statusSuffix:{aiPending:`待 AI 使用时判断`,conflict:`疑似冲突`,aiResolved:`曾冲突 / AI 已处理`},deferReason:`用户选择交给 AI,在首次相关使用前判断并处理。`,deferNotice:`已交给 AI,任务用到时再处理。`,summaryAria:`协作偏好状态`,summary:{confirmedAria:`查看 {count} 条已确认偏好`,agentConfirmedAria:`查看 {count} 条 Agent 已确认偏好`,pendingAria:`查看并处理 {count} 条待确认偏好`,conflictAria:`查看并处理 {count} 组疑似冲突`,noConflictsAria:`当前没有疑似冲突`,confirmed:`已确认`,agentConfirmed:`Agent 已确认`,pending:`待确认`,conflicts:`疑似冲突`},alert:{aria:`待处理的疑似冲突`,title:`发现 {count} 组疑似冲突`,copy:`可以现在处理,也可以交给 AI 在用到时处理。`,action:`查看冲突双方并处理`},filters:{aspectAria:`协作偏好维度`,all:`全部`,taste:`品味`,personality:`个性`,judgment:`判断偏好`,scopeLabel:`协作偏好生效范围`,conflictsCount:`显示 {visible} / {total} 组待判断`,reviewCount:`显示 {count} 条{status}偏好`,personalUnderstanding:`{count} 条个人理解`,visibleCount:`显示 {visible} / {total}`},workbench:{aria:`疑似冲突待判断组`,title:`逐组成对比较,再决定如何生效`,group:`待判断组 {index}`,aiPending:`待 AI 使用时判断`,mergeSuggested:`建议合并`,humanReview:`需要人工判断`,older:`A · 较早记录`,newer:`B · 较新记录`,reason:`判断原因`,additions:`B 新增:{values}`,deferred:`已交给 AI`,deferring:`正在交给 AI…`,defer:`交给 AI,使用时处理`,handleNow:`现在人工处理`,loading:`正在读取偏好冲突记录…`,noFiltered:`当前筛选范围没有疑似冲突`,empty:`当前没有需要处理的疑似冲突`},directory:{aria:`协作偏好内容`,aspect:`维度`,content:`内容`,statusScopeSource:`状态、范围与来源`,updated:`更新时间`,sourceCount:`{count} 个来源`,loading:`正在读取协作偏好与冲突记录…`,noFiltered:`当前维度和范围还没有内容`,empty:`协作中出现稳定的偏好后,会显示在这里。`}},dialog:{impact:{choose:`先选择处理方式;确认前不会写入任何更改。`,merge:`“{target}”合并为规范内容,“{historical}”转为历史并链接到它。`,keep:`“{kept}”继续生效;“{historical}”转为历史记录,并明确指向保留项。`,split:`“{item}”改为只在“{project}”生效,另一条保持原范围。`,chooseProject:`请选择一个不同的项目范围,系统才会执行拆分。`},errors:{actionRequired:`请选择一种处理方式`,reasonRequired:`请说明本次判断依据`,mergedValueRequired:`合并后的规范内容不能为空`,projectRequired:`请选择拆分后的项目范围`,failed:`冲突处理失败`},resolved:`疑似冲突已处理,生效结果与历史记录均已更新。`,audit:{mergedFromConflict:`由两条疑似冲突偏好合并:{reason}`,keepQuadrant:`沿用保留记录的发现时分类。`,historicalRecord:`历史记录`,user:`用户`},defaultReason:{merge:`两条说的是同一规则,合并为一条。`,keepLeft:`较早记录“{title}”仍是当前准确口径,另一条转为历史。`,keepRight:`较新记录“{title}”是当前准确口径,另一条转为历史。`,split:`两条适用于不同项目,拆开范围。`},title:`比较并处理疑似冲突`,intro:`{reason} 系统只提供证据和影响预览,最终决定由你确认。`,basisAria:`冲突判断依据`,preferenceKey:`偏好键`,effectiveScope:`生效范围`,suggestion:`建议`,mergeSuggestion:`内容互补,优先合并`,reviewSuggestion:`差异较大,先人工判断`,comparisonAria:`冲突双方`,older:`A · 较早记录`,newer:`B · 较新记录`,sourceCount:`{count} 个来源`,editA:`单独纠正 A`,editB:`单独纠正 B`,differenceAria:`差异摘要`,shared:`双方共有`,noShared:`没有检测到可以直接对齐的共同片段`,onlyA:`仅 A 有`,onlyB:`仅 B 有`,noUnique:`没有独有片段`,actionsAria:`处理方式`,actions:{merge:`合并为规范版本`,mergeCopy:`保留双方独有信息;一条更新,一条转为历史。`,recommended:`推荐`,keepA:`保留 A`,keepACopy:`B 转为历史,并链接到 A。`,keepB:`保留 B`,keepBCopy:`A 转为历史,并链接到 B。`,split:`拆分生效范围`,splitCopy:`两条都保留,但不再作用于同一范围。`,noProjects:`没有其他个人项目可选。`},mergeIdentityAria:`合并后保留哪条记录`,canonicalIdentity:`规范版本沿用`,identityA:`A 的记录身份`,identityB:`B 的记录身份`,mergedContent:`合并后的规范内容`,splitRecordAria:`调整哪条记录`,adjustRecord:`调整记录`,projectOnly:`改为仅在以下项目生效`,chooseProject:`请选择个人项目`,impactTitle:`确认后会发生什么`,reason:`本次判断依据`,pendingCopy:`暂不处理,继续显示为疑似冲突。`,defer:`暂不处理`,processing:`正在应用偏好冲突处理…`,confirm:`确认并执行`}},"en-US":{shared:{personalGlobal:`Personal global`,projectOnly:`Only {project}`,projectScope:`Project scope · {project}`,conflictReason:`Preference key “{key}” has different content within the same effective scope.`},profile:{scopes:{all:`All scopes`,global:`Personal global`,projectMeta:`{count} project preference | {count} project preferences`},statusSuffix:{aiPending:`AI will decide when used`,conflict:`Possible conflict`,aiResolved:`Previously conflicted / handled by AI`},deferReason:`The user delegated this to AI for assessment and handling before the first relevant use.`,deferNotice:`Delegated to AI; handled when a task needs it.`,summaryAria:`Collaboration preference status`,summary:{confirmedAria:`View {count} confirmed preference | View {count} confirmed preferences`,agentConfirmedAria:`View {count} Agent-confirmed preference | View {count} Agent-confirmed preferences`,pendingAria:`View and handle {count} pending preference | View and handle {count} pending preferences`,conflictAria:`View and handle {count} possible conflict | View and handle {count} possible conflicts`,noConflictsAria:`No possible conflicts`,confirmed:`Confirmed`,agentConfirmed:`Agent confirmed`,pending:`Pending`,conflicts:`Possible conflicts`},alert:{aria:`Possible conflicts requiring attention`,title:`{count} possible conflict found | {count} possible conflicts found`,copy:`Handle them now, or let AI handle them when a task needs them.`,action:`Compare and handle both sides`},filters:{aspectAria:`Collaboration preference dimension`,all:`All`,taste:`Taste`,personality:`Personality`,judgment:`Judgment preference`,scopeLabel:`Collaboration preference scope`,conflictsCount:`Showing {visible} / {total} groups to review`,reviewCount:`Showing {count} {status} preference | Showing {count} {status} preferences`,personalUnderstanding:`{count} personal insight | {count} personal insights`,visibleCount:`Showing {visible} / {total}`},workbench:{aria:`Possible-conflict review groups`,title:`Compare each pair, then decide how it should apply`,group:`Review group {index}`,aiPending:`AI will decide when used`,mergeSuggested:`Merge suggested`,humanReview:`Human decision needed`,older:`A · Older record`,newer:`B · Newer record`,reason:`Reason`,additions:`Added in B: {values}`,deferred:`Delegated to AI`,deferring:`Delegating to AI…`,defer:`Delegate to AI for use-time handling`,handleNow:`Handle now`,loading:`Loading preference conflict records…`,noFiltered:`No possible conflicts in the current filters`,empty:`No possible conflicts need attention`},directory:{aria:`Collaboration preference content`,aspect:`Dimension`,content:`Content`,statusScopeSource:`Status, scope & source`,updated:`Updated`,sourceCount:`{count} source | {count} sources`,loading:`Loading collaboration preferences and conflict records…`,noFiltered:`No content in the current dimension and scope`,empty:`Stable preferences from your collaboration will appear here.`}},dialog:{impact:{choose:`Choose a resolution. Nothing is written before confirmation.`,merge:`“{target}” becomes the merged version; “{historical}” becomes history linked to it.`,keep:`“{kept}” remains active. “{historical}” becomes a historical record that points to the retained item.`,split:`“{item}” will apply only to “{project}”; the other keeps its scope.`,chooseProject:`Choose a different project scope before splitting.`},errors:{actionRequired:`Choose a resolution`,reasonRequired:`Explain the basis for this decision`,mergedValueRequired:`Canonical merged content cannot be empty`,projectRequired:`Choose the project scope after splitting`,failed:`Could not resolve the conflict`},resolved:`The possible conflict is resolved. Effective results and history are updated.`,audit:{mergedFromConflict:`Merged from two possibly conflicting preferences: {reason}`,keepQuadrant:`Kept the retained record’s discovery classification.`,historicalRecord:`Historical record`,user:`User`},defaultReason:{merge:`Both describe the same rule; merged into one.`,keepLeft:`The older record “{title}” remains the accurate current wording; the other record becomes history.`,keepRight:`The newer record “{title}” is the accurate current wording; the other record becomes history.`,split:`They apply to different projects; scopes split.`},title:`Compare and resolve possible conflict`,intro:`{reason} The system provides evidence and an impact preview; you make the final decision.`,basisAria:`Conflict decision basis`,preferenceKey:`Preference key`,effectiveScope:`Effective scope`,suggestion:`Suggestion`,mergeSuggestion:`Complementary content; merge first`,reviewSuggestion:`Substantial difference; review manually`,comparisonAria:`Conflict sides`,older:`A · Older record`,newer:`B · Newer record`,sourceCount:`{count} source | {count} sources`,editA:`Correct A separately`,editB:`Correct B separately`,differenceAria:`Difference summary`,shared:`Shared`,noShared:`No directly alignable shared segment detected`,onlyA:`Only in A`,onlyB:`Only in B`,noUnique:`No unique segments`,actionsAria:`Resolution options`,actions:{merge:`Merge into canonical version`,mergeCopy:`Keep unique details from both sides; update one record and move the other to history.`,recommended:`Recommended`,keepA:`Keep A`,keepACopy:`Move B to history and link it to A.`,keepB:`Keep B`,keepBCopy:`Move A to history and link it to B.`,split:`Split effective scope`,splitCopy:`Keep both records, but apply them to different scopes.`,noProjects:`No other personal project is available.`},mergeIdentityAria:`Record retained after merge`,canonicalIdentity:`Canonical version uses`,identityA:`A record identity`,identityB:`B record identity`,mergedContent:`Canonical merged content`,splitRecordAria:`Record to adjust`,adjustRecord:`Adjust record`,projectOnly:`Apply only to this project`,chooseProject:`Choose a personal project`,impactTitle:`What happens after confirmation`,reason:`Decision basis`,pendingCopy:`Left as is; still shown as a possible conflict.`,defer:`Not now`,processing:`Applying preference conflict resolution…`,confirm:`Confirm and apply`}}},th={"zh-CN":{knowledgeDialog:{previews:{create:{label:`创建预览`,title:`将创建一个新的个人项目`,linkedCopy:`这个节点仍由来源项目维护,新项目会引用它。`,ownedCopy:`当前节点会成为新项目的主要归属知识。`},checking:{label:`正在检查`,title:`正在检查重复与冲突…`,copy:`只比较目标项目和当前节点。`},waiting:{label:`等待检查`,title:`请选择目标项目`,copy:`选择后会先检查重复与冲突。`},outcomes:{none:{title:`可以加入`,copy:`未检测到重复或已确认的同名冲突`},already_linked:{title:`已经加入`,copy:`目标项目已经在使用这条知识`},exact_duplicate:{title:`发现重复`,copy:`将复用目标项目已有内容,不再创建副本`},conflict:{title:`发现冲突`,copy:`两条已确认知识同名,但内容不同`}}},relationActors:{sourceProject:`来源项目`,newProject:`新项目`,targetProject:`目标项目`},relations:{related:`与{object}相关`,partOf:`{subject}属于{object}`,usesKnowledge:`{subject}从{object}继承共享知识`,dependsOn:`{subject}依赖{object}`,providesTo:`{subject}向{object}提供能力`,sharesCapability:`与{object}共享能力`,successorOf:`{subject}是{object}的后继`},actions:{creating:`正在创建项目…`,reusing:`正在复用现有内容…`,adding:`正在加入项目…`,create:`创建项目`,reuse:`复用现有内容`,add:`加入项目`},defaultReason:`基于图谱节点“{name}”建立项目知识范围`,errors:{projectIdentityRequired:`请填写项目名称和项目标识`,targetRequired:`请选择目标项目`,previewRequired:`请等待重复与冲突检查完成`,reasonRequired:`请填写操作说明`},title:`建立项目知识范围`,intro:`用这个节点新建项目,或让已有项目引用它。`,sourceNode:`来源节点`,chooseAction:`选择操作`,createNew:`创建新项目`,createNewCopy:`以当前知识为起点建立独立范围`,addExisting:`加入已有项目`,addExistingCopy:`先检查重复和已确认冲突`,projectName:`项目名称`,projectId:`项目标识`,purpose:`项目用途`,targetPersonalProject:`目标个人项目`,preserveRelation:`保留与来源项目的关系`,preserveRelationCopy:`当前知识的主要归属不会被覆盖`,projectRelation:`项目关系`,currentNode:`当前节点`,targetContent:`目标项目已有内容`,targetContentFallback:`目标项目内容`,conflictResolution:`冲突处理`,defer:`暂不采用,保留待处理记录`,keepTarget:`保留目标项目现有内容`,useSource:`使用当前来源内容`,coexist:`允许两条内容并存`,operationReason:`操作说明`},profileDialog:{materialTypes:{ProjectPurpose:`项目目标`,ProjectScope:`项目范围`,ProjectSource:`资料来源`,ProjectBoundary:`项目边界`,ProjectAssessment:`档案评估`,AssessmentDimension:`评估维度`,PersonalProject:`项目档案`,RelatedPersonalProject:`关联项目`,fallback:`项目档案`},sourceTypes:{product_document:`产品文档`,technical_document:`技术文档`,frontend_repository:`前端仓库`,backend_repository:`后端仓库`,repository:`代码仓库`,design:`设计稿`,runbook:`运行手册`,monitoring:`监控`,issue_tracker:`事项追踪`,other:`其他`},errors:{nameRequired:`请填写项目名称`,sourceNameRequired:`每条资料来源都需要名称`,saveFailed:`项目资料保存失败`},title:`编辑{material}`,intro:`这些是项目资料,保存后会更新图中的项目节点。`,projectName:`项目名称`,lifecycle:`生命周期`,lifecycles:{planned:`计划中`,active:`进行中`,maintenance:`维护中`,archived:`已归档`},purpose:`项目目标`,purposePlaceholder:`说明项目为什么存在、希望达成什么结果`,scope:`项目范围`,scopePlaceholder:`说明项目包含的对象、流程或交付物`,technicalSummary:`技术摘要`,technicalPlaceholder:`记录关键技术结构和运行方式`,boundary:`项目边界`,boundaryPlaceholder:`每行一条明确不在本项目范围内的边界`,boundaryHint:`每行一条;重复内容会在保存时合并。`,sources:`资料来源`,sourcesCopy:`资料类型、地址和敏感级别会显示为图中的资料节点。`,addSource:`添加来源`,sourceName:`名称`,sourceType:`类型`,sourceUri:`地址`,sourceUriPlaceholder:`可选,例如仓库或文档地址`,sourceSummary:`摘要`,sensitivity:`敏感级别`,sensitivities:{normal:`普通`,private:`私有`,restricted:`受限`},noSources:`还没有登记资料来源。`,stateBoundary:`项目资料不需要确认或失效,直接编辑即可。`,saving:`正在保存项目资料…`,save:`保存项目资料`},publishDialog:{errors:{providerUnavailable:`公共 Provider 当前不可用`,versionRequired:`请填写发布版本`,summaryRequired:`请填写本次更新内容`,failed:`发布失败`},published:`“{name}” {version} 已发布并记录版本信息。`,title:`发布到公共空间?`,warning:`发布后会进入共享 Provider,不再只是本机可见。`,version:`发布版本`,versionPlaceholder:`例如 v1.0.0`,currentVersion:`当前版本 {version}`,firstRelease:`首次发布`,summary:`更新内容`,summaryPlaceholder:`说明本次新增、调整或修复了什么`,impactAria:`发布影响`,discoverable:`公开可发现`,discoverableCopy:`连接这个公共服务的用户可以看到该项目。`,owner:`你成为 Owner`,ownerCopy:`系统会自动订阅项目,你可以继续维护项目资料。`,syncProfile:`同步项目档案`,syncProfileCopy:`项目说明和资料会复制到公共项目。`,publishing:`正在发布项目…`,confirm:`确认发布`},overview:{tab:`概览`,loading:`正在加载项目概览`,noPurpose:`还没有填写项目目标`,editProfile:`编辑项目资料`,team:`项目团队`,loadingTeam:`正在加载项目团队`,refreshingTeam:`正在刷新项目团队`,teamFailed:`项目团队暂时无法读取`,retry:`重试`,refresh:`刷新项目团队`,lead:`组长`,showOrganization:`展开组织`,hideOrganization:`收起组织`,memberCount:`{count} 名成员`,collaboratorCount:`另有 {count} 名其他任职成员`,peerCount:`{count} 个同级角色`,noMembers:`暂无其他任职成员`,refreshFailed:`刷新失败,以下是上次读取的团队`,members:`向组长汇报`,collaborators:`其他任职成员`,peers:`同级角色`,noLead:`这个项目还没有组长`,leadUnavailable:`组长 {name} 已不在本项目`,leadUnavailableUnnamed:`原组长已不在本项目`,unavailableMembers:`团队设置中另有 {count} 名成员当前不可用`,unavailableMembersLink:`查看团队设置`,setLead:`设置组长`,changeLead:`更换组长`,employeeNumber:`FLA {number}`}},"en-US":{knowledgeDialog:{previews:{create:{label:`Creation preview`,title:`A new personal project will be created`,linkedCopy:`The source project still owns this node; the new project references it.`,ownedCopy:`This node becomes knowledge primarily owned by the new project.`},checking:{label:`Checking`,title:`Checking for duplicates and conflicts…`,copy:`Only the target project and current node are compared.`},waiting:{label:`Waiting`,title:`Choose a target project`,copy:`Duplicates and conflicts are checked after selection.`},outcomes:{none:{title:`Ready to add`,copy:`No duplicate or confirmed same-name conflict detected`},already_linked:{title:`Already added`,copy:`The target project already uses this knowledge`},exact_duplicate:{title:`Duplicate found`,copy:`Existing target-project content will be reused instead of copied`},conflict:{title:`Conflict found`,copy:`Two confirmed knowledge items share a name but differ in content`}}},relationActors:{sourceProject:`source project`,newProject:`new project`,targetProject:`target project`},relations:{related:`Related to {object}`,partOf:`{subject} belongs to {object}`,usesKnowledge:`{subject} inherits shared knowledge from {object}`,dependsOn:`{subject} depends on {object}`,providesTo:`{subject} provides a capability to {object}`,sharesCapability:`Shares a capability with {object}`,successorOf:`{subject} succeeds {object}`},actions:{creating:`Creating project…`,reusing:`Reusing existing content…`,adding:`Adding to project…`,create:`Create project`,reuse:`Reuse existing content`,add:`Add to project`},defaultReason:`Create project knowledge scope from graph node “{name}”`,errors:{projectIdentityRequired:`Enter both project name and project ID`,targetRequired:`Choose a target project`,previewRequired:`Wait for duplicate and conflict checks to finish`,reasonRequired:`Enter an operation note`},title:`Establish project knowledge scope`,intro:`Create a project from this node, or reference it from an existing one.`,sourceNode:`Source node`,chooseAction:`Choose action`,createNew:`Create new project`,createNewCopy:`Start an independent scope from the current knowledge`,addExisting:`Add to existing project`,addExistingCopy:`Check duplicates and confirmed conflicts first`,projectName:`Project name`,projectId:`Project ID`,purpose:`Project purpose`,targetPersonalProject:`Target personal project`,preserveRelation:`Keep relationship to source project`,preserveRelationCopy:`Primary ownership of the current knowledge will not be overwritten`,projectRelation:`Project relationship`,currentNode:`Current node`,targetContent:`Existing target-project content`,targetContentFallback:`Target-project content`,conflictResolution:`Conflict handling`,defer:`Do not apply yet; keep a pending conflict record`,keepTarget:`Keep existing target-project content`,useSource:`Use current source content`,coexist:`Allow both items to coexist`,operationReason:`Operation note`},profileDialog:{materialTypes:{ProjectPurpose:`Project purpose`,ProjectScope:`Project scope`,ProjectSource:`Source material`,ProjectBoundary:`Project boundary`,ProjectAssessment:`Profile assessment`,AssessmentDimension:`Assessment dimension`,PersonalProject:`Project profile`,RelatedPersonalProject:`Related project`,fallback:`Project profile`},sourceTypes:{product_document:`Product document`,technical_document:`Technical document`,frontend_repository:`Frontend repository`,backend_repository:`Backend repository`,repository:`Code repository`,design:`Design file`,runbook:`Runbook`,monitoring:`Monitoring`,issue_tracker:`Issue tracker`,other:`Other`},errors:{nameRequired:`Enter a project name`,sourceNameRequired:`Every source material needs a name`,saveFailed:`Could not save project materials`},title:`Edit {material}`,intro:`Project materials; saving updates the project nodes in the graph.`,projectName:`Project name`,lifecycle:`Lifecycle`,lifecycles:{planned:`Planned`,active:`Active`,maintenance:`Maintenance`,archived:`Archived`},purpose:`Project purpose`,purposePlaceholder:`Explain why the project exists and what outcome it should achieve`,scope:`Project scope`,scopePlaceholder:`Describe the objects, workflows, or deliverables included`,technicalSummary:`Technical summary`,technicalPlaceholder:`Record the key technical structure and operating model`,boundary:`Project boundaries`,boundaryPlaceholder:`One explicit out-of-scope boundary per line`,boundaryHint:`One per line; duplicates are merged when saved.`,sources:`Source materials`,sourcesCopy:`Type, address, and sensitivity appear as source nodes in the graph.`,addSource:`Add source`,sourceName:`Name`,sourceType:`Type`,sourceUri:`Address`,sourceUriPlaceholder:`Optional, for example a repository or document URL`,sourceSummary:`Summary`,sensitivity:`Sensitivity`,sensitivities:{normal:`Normal`,private:`Private`,restricted:`Restricted`},noSources:`No source materials registered.`,stateBoundary:`Project materials need no confirmation; just edit them.`,saving:`Saving project materials…`,save:`Save project materials`},publishDialog:{errors:{providerUnavailable:`The public Provider is unavailable`,versionRequired:`Enter a release version`,summaryRequired:`Describe this update`,failed:`Publishing failed`},published:`“{name}” {version} was published with release details.`,title:`Publish to the public space?`,warning:`After publishing, this project enters a shared Provider and is no longer visible only on this device.`,version:`Release version`,versionPlaceholder:`For example v1.0.0`,currentVersion:`Current version {version}`,firstRelease:`First release`,summary:`Update summary`,summaryPlaceholder:`Describe what was added, changed, or fixed`,impactAria:`Publishing impact`,discoverable:`Publicly discoverable`,discoverableCopy:`Users connected to this public service can see the project.`,owner:`You become Owner`,ownerCopy:`The project is subscribed automatically and you can continue maintaining its materials.`,syncProfile:`Sync project profile`,syncProfileCopy:`Description and materials are copied to the public project.`,publishing:`Publishing project…`,confirm:`Confirm publishing`},overview:{tab:`Overview`,loading:`Loading project overview`,noPurpose:`No project goal yet`,editProfile:`Edit project profile`,team:`Project team`,loadingTeam:`Loading project team`,refreshingTeam:`Refreshing project team`,teamFailed:`The project team could not be loaded`,retry:`Retry`,refresh:`Refresh project team`,lead:`Lead`,showOrganization:`Show organization`,hideOrganization:`Hide organization`,memberCount:`{count} members`,collaboratorCount:`{count} other assigned Agents`,peerCount:`{count} peer roles`,noMembers:`No other assigned Agents`,refreshFailed:`Refresh failed. Showing the team from the last successful read`,members:`Report to the lead`,collaborators:`Other assigned Agents`,peers:`Peer roles`,noLead:`This project has no lead yet`,leadUnavailable:`{name} is no longer this project’s lead`,leadUnavailableUnnamed:`The previous lead is no longer on this project`,unavailableMembers:`{count} more team members are currently unavailable`,unavailableMembersLink:`Open team settings`,setLead:`Set lead`,changeLead:`Change lead`,employeeNumber:`FLA {number}`}}},nh={"zh-CN":{firstTask:{title:`开始第一个任务`,hint:`在已接入 Fuli 的 AI 客户端里,于项目目录中直接提需求。Fuli 会登记项目并安排负责的 Agent。`},diagnostics:{title:`任务启动与执行状态`,project:`项目归属`,assignment:`Agent 分配`,execution:`实际执行`,projectState:{temporary:`独立临时项目`,identified:`已关联项目`,unresolved:`项目尚未识别`},assignmentState:{assigned:`已记录任务分配`,unreported:`尚未记录任务分配`},executionState:{unreported:`尚未收到工作进程报告`,queued:`工作进程已排队`,running:`工作进程报告运行中`,ended:`已收到结束状态`,reported:`已收到工作进程报告`},temporaryHint:`这次任务使用独立的临时项目。`,summaryReason:{assignedOnly:`已分配,等待客户端上报执行结果。`,unassigned:`还没有分配或执行记录。`,eventsOnly:`已收到执行事件,等待汇总。`}},advanced:`高级设置与诊断`,taskDetails:`协作与执行详情`,profileDetails:`Agent 资料`,conversations:{title:`对话与记忆`,hint:`跨客户端继续工作时,按需恢复相关上下文。`,loading:`正在读取对话记录…`,loadFailed:`对话记录读取失败,请重试。`,empty:`这个项目还没有保存的对话。`,untitled:`未命名对话`,compacted:`已压缩`,recent:`近期`,rawRetained:`压缩不会删除原文。`,loadingMessages:`正在读取对话原文…`,more:`读取后续消息`,noMessages:`尚无可读取的原始消息。`,settings:`记忆设置`,loadingPolicy:`正在读取记忆设置…`,capture:`保存这个 Agent 在本项目的对话`,compactAfterKb:`累计多少 KB 后压缩`,budget:`恢复上下文预算`,budgetHint:`对话累计超过阈值后,较早的消息折叠成摘要;原文始终保留。`,invalidPolicy:`压缩阈值须为 8–1024 KB,预算须为 512–16000。`,save:`保存记忆设置`,saving:`正在保存记忆设置…`,saved:`记忆设置已保存。`,user:`用户`,assistant:`Agent`,tool:`工具`,copyContinuation:`复制接续指令`,copiedContinuation:`已复制接续指令。`,copyContinuationFailed:`自动复制失败,请手动选择下方指令并复制。`,manualContinuation:`接续指令`},workHistory:{title:`工作记录`,loading:`正在读取员工工作记录…`,loadFailed:`工作记录读取失败,请重试。`,empty:`这个项目还没有工作记录。`,reported:`已报告`,completed:`已完成`,incomplete:`未完成`,failed:`失败`,no_change:`无变更`,unreported:`缺少总结`,running:`进行中`},aria:`项目 Agent 名录`,title:`Agents`,listLabel:`空间 Agent 列表`,notReported:`未上报`,noToolsUsed:`未使用工具`,searchLabel:`搜索 Agent`,searchPlaceholder:`搜索名称、ID、职责或能力`,add:`新增 Agent`,edit:`编辑`,saved:`项目 Agent 已保存。`,retry:`重新加载`,loading:`正在读取项目 Agent 列表…`,loadError:`项目 Agent 暂时无法读取。`,emptyTitle:`还没有项目 Agent`,emptyCopy:`开始项目任务后,AR 会按需安排 Agent。`,noMatchTitle:`没有匹配的 Agent`,noMatchCopy:`调整项目、状态或搜索条件。`,stats:{total:`{count} 个 Agent`,active:`{count} 个可用`,assignments:`{count} 个分配`,projects:`分布在 {count} 个项目`,noOnlineClaim:`配置不等于在线;以实际上报为准`},team:{autoGrow:`新员工自动归组`,unavailableMember:`成员不可用`,removeUnavailable:`取消勾选以移除`,autoGrowMeta:`新招的长期 Agent 自动加入小组,第一位担任组长。`,hr:`AR`,manager:`项目经理`,lead:`项目总负责人`,noLead:`待配置项目总负责人`,unavailable:`项目总负责人不可用,请完成交接`,summary:`日常找组长沟通,成员按职责协作。`,members:`小组成员`,edit:`管理小组`,save:`保存小组`},coordination:{aria:`{project} 项目 Agent 协作策略`,title:`项目协作`,loading:`正在读取项目协作策略…`,autoReuse:`自动沿用 Agent`,autoReuseMeta:`新任务交给组长;没有组长时沿用上一位 Agent。关闭后需手动 {'@'}Agent。`,askBeforeRecruitment:`新 Agent 先询问`,askBeforeRecruitmentMeta:`没有可沿用 Agent 时,先等待确认再新建。`,saving:`正在保存项目协作策略…`,saved:`项目策略已保存。`,loadFailed:`项目策略暂时无法读取。`,saveFailed:`项目策略暂时无法保存。`},agentType:{coordinator:`协调`,durable:`长期`,hr:`AR`,temporary:`临时`},status:{all:`全部状态`,active:`可用`,inactive:`停用`,archived:`已归档`},assignmentStatus:{active:`当前分配`,ended:`已结束`,unassigned:`已解除`,replaced:`已替换`},taskStatus:{awaiting_recruitment:`等待招聘`,queued:`排队`,running:`运行中`,paused:`已暂停`,failed:`失败`,awaiting_review:`待审核`,completed:`已完成`,cancelled:`已取消`,blocked:`阻塞`,idle:`空闲`},fields:{project:`所属项目`,agentId:`Agent ID`,occupationEmoji:`职业 emoji`,responsibility:`负责范围`,capabilities:`能力`,initialPreferences:`启动约定`,status:`状态`,updatedAt:`最近更新`,agentType:`身份类型`,defaultModelStrategy:`默认模型策略`,executorPolicy:`执行器策略`,modelIntent:`provider-neutral 意图`,allowList:`locked allow-list`,assignments:`项目分配`,memoryScope:`记忆边界`,scope:`范围`,assignmentModel:`分配策略`,collaborators:`协作者`,actualExecution:`实际执行`,executionSummary:`执行总结`,workerEventEvidence:`工作进程事件证据`,reportedStaffingDecision:`已报告排班决定`,executionEnvironment:`执行环境`,toolsUsed:`执行工具`,sourceApplication:`来源应用`,sourceSession:`来源会话`,workerSession:`执行器会话`,reporterSession:`上报会话`,tokenUsage:`Token 用量`,reportedAt:`上报时间`,workSummary:`所做工作`,terminalStatus:`终态`,actualModel:`实际模型`,worker:`执行者`,coordinator:`协调 Agent`,candidateAgents:`候选 Agent`,complexity:`复杂度`,parallelPlan:`并行计划`,run:`Run`,recruitment:`招聘来源`,strategySource:`策略来源`,reason:`原因`,matchBasis:`匹配依据`},participantRoles:{lead:`负责人`,collaborator:`协作者`},sections:{assignments:`项目分配与历史`,strategy:`模型策略与执行器`,tasks:`任务与协作`,activity:`贡献活动`,clients:`客户端`,routing:`路由规则`,learning:`候选学习依据`,recruitment:`招聘事件`},detail:{choose:`选择一个 Agent 查看分工`,noRun:`无运行记录`,stateReported:`状态已上报,运行凭据未上报`,refresh:`刷新真实数据`,notLoaded:`尚未读取该分区的真实数据。`,loading:{assignments:`正在读取项目分配与历史…`,tasks:`正在读取任务与协作记录…`,activity:`正在读取贡献活动…`,recruitments:`正在读取招聘事件…`,executors:`正在读取执行器目录…`,routingRules:`正在读取路由规则…`,learning:`正在读取候选学习依据…`},sectionUnavailable:`该分区的真实数据暂时无法读取。`,noAssignments:`尚未上报项目分配。`,noTasks:`尚无任务历史。`,noExecutionSummary:`没有真实参与执行者。`,notReportedActualExecution:`实际执行证据未上报。`},strategy:{flexible:`flexible`,locked:`locked`,providerNeutral:`默认策略只表达 provider-neutral 意图,不猜测 executor、model 或连接状态。`,noAllowList:`未锁定 allow-list;可用 executor 未上报。`,lockedUnavailable:`锁定的执行器都不可用,任务会保持排队。`,availabilityUnreported:`availability 未上报`,actualUnreported:`实际调用未上报`},activity:{aria:`按日贡献活动`,empty:`没有已验证的完成、失败或取消历史。`,noTasks:`当天没有任务摘要。`},clients:{codex:`Codex`,claude:`Claude`,claude_code:`Claude Code`,cursor:`Cursor`,gemini_cli:`Gemini CLI`,kiro:`Kiro`,other:`其他客户端`,allowed:`允许`,notAllowed:`未允许`,observed:`实际调用 {count} 次`,observedAny:`实际调用已上报`,unreported:`实际调用未上报`,integrationUnreported:`接入状态未上报`,empty:`允许客户端、实际调用和接入状态均未上报。`},tokenSources:{executor:`执行器`,host:`宿主`,dingdong:`DingDong`},routing:{empty:`没有已配置的路由规则。`,priorityNote:`只显示实际存在的规则。`,addExecutor:`注册执行器`,editExecutor:`编辑执行器`,addRule:`新增规则`,disable:`停用`,updateFailed:`路由规则更新失败。`,authorize:`授权`,revoke:`撤销授权`,authorizing:`正在保存执行器授权状态…`,revoking:`正在保存执行器撤销状态…`,authorizeReason:`控制台授权执行器`,revokeReason:`控制台撤销执行器授权`,authorizationFailed:`执行器权限更新失败。`,disabling:`正在保存路由规则停用状态…`,editor:{executorCreateTitle:`注册执行器`,executorEditTitle:`编辑执行器`,ruleCreateTitle:`新增路由规则`,executorId:`Executor ID`,displayName:`显示名称`,executorKind:`类型`,priority:`全局优先级`,capabilities:`能力`,healthRequired:`要求健康检查`,scope:`规则范围`,taskId:`Task ID`,workKind:`工作类型`,executorIds:`允许的执行器 ID`,executorIdsPlaceholder:`每行一个真实 executor ID`,requiredCapabilities:`所需能力`,evidenceNote:`授权与健康状态以后端上报为准。`,ruleNote:`规则只影响匹配候选;不会改变 Agent 的 locked 策略。`,executorRequired:`请填写执行器 ID、名称和有效优先级。`,ruleRequired:`请填写工作类型、执行器 ID 和原因。`,save:`保存`,savingExecutor:`正在保存执行器目录记录…`,savingRule:`正在保存路由规则…`,saveFailed:`保存目录或规则失败。`}},learning:{neutral:`中性`,recorded:`已记录依据`,samples:`样本 {count}`,recent:`近期加权 {count}`,score:`实际评分 {score}`,decayUnreported:`衰减基准未上报`,ignore:`忽略`,reset:`重置`,ignoring:`正在保存学习依据忽略状态…`,resetting:`正在保存学习依据重置状态…`,resetUnavailable:`缺少项目、工作类型或执行器依据,无法重置。`,updateFailed:`学习依据更新失败。`,empty:`没有真实学习依据;不显示评分或候选倾向。`,note:`仅用于同级候选的排序。`},source:{testRole:`测试角色`,cleanup:`清理测试角色`,cleanupLoading:`正在清理测试角色…`,cleanupFailed:`测试角色清理失败。`},recruitment:{hr:`AR Agent`,trigger:`触发客户端`,reason:`招聘原因`,time:`时间`,testSource:`测试来源`,empty:`没有匹配的真实招聘记录。`,policy:`招聘确认`,automatic:`自动招聘`,requireConfirmation:`需要确认`,policyUpdateFailed:`招聘确认策略更新失败。`,approve:`批准`,cancel:`取消`,approving:`正在提交招聘批准…`,cancelling:`正在提交招聘取消…`,approveReason:`用户批准招聘事件`,cancelReason:`用户取消招聘事件`,decisionFailed:`招聘事件处理失败。`},dialog:{createTitle:`新增项目 Agent`,editTitle:`编辑项目 Agent`,saveCreate:`创建 Agent`,saveEdit:`保存修改`,saving:`正在保存项目 Agent…`,projectPlaceholder:`选择项目`,agentIdPlaceholder:`例如 design-agent`,namePlaceholder:`例如 设计 Agent`,occupationEmojiPlaceholder:`例如 🎛️`,responsibilityPlaceholder:`说明哪些工作交给这个 Agent。`,capabilitiesPlaceholder:`每行一项,例如:
6
+ `:t.breakLineCode,a=t.needIndent?t.needIndent:n!==`arrow`,o=e.helpers||[],s=Ld(e,{filename:r,breakLineCode:i,needIndent:a});s.push(n===`normal`?`function __msg__ (ctx) {`:`(ctx) => {`),s.indent(a),o.length>0&&(s.push(`const { ${Uu(o.map(e=>`${e}: _${e}`),`, `)} } = ctx`),s.newline()),s.push(`return `),Hd(s,e),s.deindent(a),s.push(`}`),delete e.helpers;let{code:c,map:l}=s.context();return{ast:e,code:c,map:l?l.toJSON():void 0}};function Wd(e,t={}){let n=W({},t),r=!!n.jit,i=!!n.minify,a=n.optimize==null||n.optimize,o=Od(n).parse(e);return r?(a&&Pd(o),i&&Id(o),{ast:o,code:``}):(Nd(o,n),Ud(o,n))}function Gd(){typeof __INTLIFY_PROD_DEVTOOLS__!=`boolean`&&(Iu().__INTLIFY_PROD_DEVTOOLS__=!1),typeof __INTLIFY_DROP_MESSAGE_COMPILER__!=`boolean`&&(Iu().__INTLIFY_DROP_MESSAGE_COMPILER__=!1)}function Kd(e){return X(e)&&nf(e)===0&&(Ru(e,`b`)||Ru(e,`body`))}var qd=[`b`,`body`];function Jd(e){return uf(e,qd)}var Yd=[`c`,`cases`];function Xd(e){return uf(e,Yd,[])}var Zd=[`s`,`static`];function Qd(e){return uf(e,Zd)}var $d=[`i`,`items`];function ef(e){return uf(e,$d,[])}var tf=[`t`,`type`];function nf(e){return uf(e,tf)}var rf=[`v`,`value`];function af(e,t){let n=uf(e,rf);if(n!=null)return n;throw ff(t)}var of=[`m`,`modifier`];function sf(e){return uf(e,of)}var cf=[`k`,`key`];function lf(e){let t=uf(e,cf);if(t)return t;throw ff(6)}function uf(e,t,n){for(let n=0;n<t.length;n++){let r=t[n];if(Ru(e,r)&&e[r]!=null)return e[r]}return n}var df=[...qd,...Yd,...Zd,...$d,...cf,...of,...rf,...tf];function ff(e){return Error(`unhandled node type: ${e}`)}function pf(e){return t=>mf(t,e)}function mf(e,t){let n=Jd(t);if(n==null)throw ff(0);if(nf(n)===1){let t=Xd(n);return e.plural(t.reduce((t,n)=>[...t,hf(e,n)],[]))}else return hf(e,n)}function hf(e,t){let n=Qd(t);if(n!=null)return e.type===`text`?n:e.normalize([n]);{let n=ef(t).reduce((t,n)=>[...t,gf(e,n)],[]);return e.normalize(n)}}function gf(e,t){let n=nf(t);switch(n){case 3:return af(t,n);case 9:return af(t,n);case 4:{let r=t;if(Ru(r,`k`)&&r.k)return e.interpolate(e.named(r.k));if(Ru(r,`key`)&&r.key)return e.interpolate(e.named(r.key));throw ff(n)}case 5:{let r=t;if(Ru(r,`i`)&&U(r.i))return e.interpolate(e.list(r.i));if(Ru(r,`index`)&&U(r.index))return e.interpolate(e.list(r.index));throw ff(n)}case 6:{let n=t,r=sf(n),i=lf(n);return e.linked(gf(e,i),r?gf(e,r):void 0,e.type)}case 7:return af(t,n);case 8:return af(t,n);default:throw Error(`unhandled node on format message part: ${n}`)}}var _f=e=>e,vf=G();function yf(e,t={}){let n=!1,r=t.onError||fd;return t.onError=e=>{n=!0,r(e)},{...Wd(e,t),detectError:n}}function bf(e,t){if(!__INTLIFY_DROP_MESSAGE_COMPILER__&&J(e)){Y(t.warnHtmlMessage)&&t.warnHtmlMessage;let n=(t.onCacheKey||_f)(e),r=vf[n];if(r)return r;let{ast:i,detectError:a}=yf(e,{...t,location:!1,jit:!0}),o=pf(i);return a?o:vf[n]=o}else{let t=e.cacheKey;return t?vf[t]||(vf[t]=pf(e)):pf(e)}}var xf=null;function Sf(e){xf=e}function Cf(e,t,n){xf&&xf.emit(`i18n:init`,{timestamp:Date.now(),i18n:e,version:t,meta:n})}var wf=Tf(`function:translate`);function Tf(e){return t=>xf&&xf.emit(e,t)}var Ef={INVALID_ARGUMENT:17,INVALID_DATE_ARGUMENT:18,INVALID_ISO_DATE_ARGUMENT:19,NOT_SUPPORT_NON_STRING_MESSAGE:20,NOT_SUPPORT_LOCALE_PROMISE_VALUE:21,NOT_SUPPORT_LOCALE_ASYNC_FUNCTION:22,NOT_SUPPORT_LOCALE_TYPE:23};function Df(e){return dd(e,null,void 0)}Ef.INVALID_ARGUMENT,Ef.INVALID_DATE_ARGUMENT,Ef.INVALID_ISO_DATE_ARGUMENT,Ef.NOT_SUPPORT_NON_STRING_MESSAGE,Ef.NOT_SUPPORT_LOCALE_PROMISE_VALUE,Ef.NOT_SUPPORT_LOCALE_ASYNC_FUNCTION,Ef.NOT_SUPPORT_LOCALE_TYPE;function Of(e,t){return t.locale==null?Af(e.locale):Af(t.locale)}var kf;function Af(e){if(J(e))return e;if(q(e)){if(e.resolvedOnce&&kf!=null)return kf;if(e.constructor.name===`Function`){let t=e();if(zu(t))throw Df(Ef.NOT_SUPPORT_LOCALE_PROMISE_VALUE);return kf=t}else throw Df(Ef.NOT_SUPPORT_LOCALE_ASYNC_FUNCTION)}else throw Df(Ef.NOT_SUPPORT_LOCALE_TYPE)}function jf(e,t,n){return[...new Set([n,...K(t)?t:X(t)?Object.keys(t):J(t)?[t]:[n]])]}function Mf(e,t,n){let r=J(n)?n:Jf,i=e;i.__localeChainCache||=new Map;let a=i.__localeChainCache.get(r);if(!a){a=[];let e=[n];for(;K(e);)e=Nf(a,e,t);let o=K(t)||!Z(t)?t:t.default?t.default:null;e=J(o)?[o]:o,K(e)&&Nf(a,e,!1),i.__localeChainCache.set(r,a)}return a}function Nf(e,t,n){let r=!0;for(let i=0;i<t.length&&Y(r);i++){let a=t[i];J(a)&&(r=Pf(e,t[i],n))}return r}function Pf(e,t,n){let r,i=t.split(`-`);do r=Ff(e,i.join(`-`),n),i.splice(-1,1);while(i.length&&r===!0);return r}function Ff(e,t,n){let r=!1;if(!e.includes(t)&&(r=!0,t)){r=t[t.length-1]!==`!`;let i=t.replace(/!/g,``);e.push(i),(K(n)||Z(n))&&n[i]&&(r=n[i])}return r}var If=[];If[0]={w:[0],i:[3,0],"[":[4],o:[7]},If[1]={w:[1],".":[2],"[":[4],o:[7]},If[2]={w:[2],i:[3,0],0:[3,0]},If[3]={i:[3,0],0:[3,0],w:[1,1],".":[2,1],"[":[4,1],o:[7,1]},If[4]={"'":[5,0],'"':[6,0],"[":[4,2],"]":[1,3],o:8,l:[4,0]},If[5]={"'":[4,0],o:8,l:[5,0]},If[6]={'"':[4,0],o:8,l:[6,0]};var Lf=/^\s?(?:true|false|-?[\d.]+|'[^']*'|"[^"]*")\s?$/;function Rf(e){return Lf.test(e)}function zf(e){let t=e.charCodeAt(0);return t===e.charCodeAt(e.length-1)&&(t===34||t===39)?e.slice(1,-1):e}function Bf(e){if(e==null)return`o`;switch(e.charCodeAt(0)){case 91:case 93:case 46:case 34:case 39:return e;case 95:case 36:case 45:return`i`;case 9:case 10:case 13:case 160:case 65279:case 8232:case 8233:return`w`}return`i`}function Vf(e){let t=e.trim();return e.charAt(0)===`0`&&isNaN(parseInt(e))?!1:Rf(t)?zf(t):`*`+t}function Hf(e){let t=[],n=-1,r=0,i=0,a,o,s,c,l,u,d,f=[];f[0]=()=>{o===void 0?o=s:o+=s},f[1]=()=>{o!==void 0&&(t.push(o),o=void 0)},f[2]=()=>{f[0](),i++},f[3]=()=>{if(i>0)i--,r=4,f[0]();else{if(i=0,o===void 0||(o=Vf(o),o===!1))return!1;f[1]()}};function p(){let t=e[n+1];if(r===5&&t===`'`||r===6&&t===`"`)return n++,s=`\\`+t,f[0](),!0}for(;r!==null;)if(n++,a=e[n],!(a===`\\`&&p())){if(c=Bf(a),d=If[r],l=d[c]||d.l||8,l===8||(r=l[0],l[1]!==void 0&&(u=f[l[1]],u&&(s=a,u()===!1))))return;if(r===7)return t}}var Uf=new Map;function Wf(e,t){return X(e)?e[t]:null}function Gf(e,t){if(!X(e))return null;let n=Uf.get(t);if(n||(n=Hf(t),n&&Uf.set(t,n)),!n)return null;let r=n.length,i=e,a=0;for(;a<r;){let e=n[a];if(df.includes(e)&&Kd(i)||!X(i)||!Ru(i,e))return null;let t=i[e];if(t===void 0||q(i))return null;i=t,a++}return i}var Kf={NOT_FOUND_KEY:1,FALLBACK_TO_TRANSLATE:2,CANNOT_FORMAT_NUMBER:3,FALLBACK_TO_NUMBER_FORMAT:4,CANNOT_FORMAT_DATE:5,FALLBACK_TO_DATE_FORMAT:6,EXPERIMENTAL_CUSTOM_MESSAGE_COMPILER:7,INVALID_NUMBER_ARGUMENT:8,INVALID_DATE_ARGUMENT:9};Kf.NOT_FOUND_KEY,Kf.FALLBACK_TO_TRANSLATE,Kf.CANNOT_FORMAT_NUMBER,Kf.FALLBACK_TO_NUMBER_FORMAT,Kf.CANNOT_FORMAT_DATE,Kf.FALLBACK_TO_DATE_FORMAT,Kf.EXPERIMENTAL_CUSTOM_MESSAGE_COMPILER,Kf.INVALID_NUMBER_ARGUMENT,Kf.INVALID_DATE_ARGUMENT;var qf=`11.4.8`,Jf=`en-US`,Yf=e=>`${e.charAt(0).toLocaleUpperCase()}${e.substr(1)}`;function Xf(){return{upper:(e,t)=>t===`text`&&J(e)?e.toUpperCase():t===`vnode`&&X(e)&&`__v_isVNode`in e?e.children.toUpperCase():e,lower:(e,t)=>t===`text`&&J(e)?e.toLowerCase():t===`vnode`&&X(e)&&`__v_isVNode`in e?e.children.toLowerCase():e,capitalize:(e,t)=>t===`text`&&J(e)?Yf(e):t===`vnode`&&X(e)&&`__v_isVNode`in e?Yf(e.children):e}}var Zf;function Qf(e){Zf=e}var $f;function ep(e){$f=e}var tp;function np(e){tp=e}var rp=null,ip=()=>rp,ap=null,op=e=>{ap=e},sp=()=>ap,cp=0;function lp(e={}){let t=q(e.onWarn)?e.onWarn:Wu,n=J(e.version)?e.version:qf,r=J(e.locale)||q(e.locale)?e.locale:Jf,i=q(r)?Jf:r,a=K(e.fallbackLocale)||Z(e.fallbackLocale)||J(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:i,o=Z(e.messages)?e.messages:up(i),s=Z(e.datetimeFormats)?e.datetimeFormats:up(i),c=Z(e.numberFormats)?e.numberFormats:up(i),l=W(G(),e.modifiers,Xf()),u=e.pluralRules||G(),d=q(e.missing)?e.missing:null,f=Y(e.missingWarn)||Mu(e.missingWarn)?e.missingWarn:!0,p=Y(e.fallbackWarn)||Mu(e.fallbackWarn)?e.fallbackWarn:!0,m=!!e.fallbackFormat,h=!!e.unresolving,g=q(e.postTranslation)?e.postTranslation:null,_=Z(e.processor)?e.processor:null,v=!Y(e.warnHtmlMessage)||e.warnHtmlMessage,y=!!e.escapeParameter,b=q(e.messageCompiler)?e.messageCompiler:Zf,x=q(e.messageResolver)?e.messageResolver:$f||Wf,S=q(e.localeFallbacker)?e.localeFallbacker:tp||jf,C=X(e.fallbackContext)?e.fallbackContext:void 0,w=e,T=X(w.__datetimeFormatters)?w.__datetimeFormatters:new Map,E=X(w.__numberFormatters)?w.__numberFormatters:new Map,D=X(w.__meta)?w.__meta:{};cp++;let O={version:n,cid:cp,locale:r,fallbackLocale:a,messages:o,modifiers:l,pluralRules:u,missing:d,missingWarn:f,fallbackWarn:p,fallbackFormat:m,unresolving:h,postTranslation:g,processor:_,warnHtmlMessage:v,escapeParameter:y,messageCompiler:b,messageResolver:x,localeFallbacker:S,fallbackContext:C,onWarn:t,__meta:D};return O.datetimeFormats=s,O.numberFormats=c,O.__datetimeFormatters=T,O.__numberFormatters=E,__INTLIFY_PROD_DEVTOOLS__&&Cf(O,n,D),O}var up=e=>({[e]:G()});function dp(e,t,n,r,i){let{missing:a,onWarn:o}=e;if(a!==null){let r=a(e,n,t,i);return J(r)?r:t}else return t}function fp(e,t,n){let r=e;r.__localeChainCache=new Map,e.localeFallbacker(e,n,t)}function pp(e,t){return e!==t&&e.split(`-`)[0]===t.split(`-`)[0]}function mp(e,t){let n=t.indexOf(e);if(n===-1)return!1;for(let r=n+1;r<t.length;r++)if(pp(e,t[r]))return!0;return!1}function hp(e,t,n,r,i,a,o){let{fallbackLocale:s,localeFallbacker:c,onWarn:l}=e,u=c(e,s,n);for(let n=0;n<u.length;n++){let a=u[n],s=(r[a]||{})[t];if(Z(s)&&J(a))return a;dp(e,t,a,i,o)}return null}function gp(e,t,n){let r=`${e}__${t}`;return Z(n)&&!Nu(n)&&(r=`${r}__${JSON.stringify(n)}`),r}function _p(e,t,n){for(let r in n){let n=`${t}__${r}`;for(let t of e.keys())(t===n||t.startsWith(`${n}__`))&&e.delete(t)}}function vp(e,t,n,r){let[,i,a,o]=e,s=n;return J(i)?t.key=i:Z(i)&&Object.keys(i).forEach(e=>{r.includes(e)?s[e]=i[e]:t[e]=i[e]}),J(a)?t.locale=a:Z(a)&&(s=a),Z(o)&&(s=o),s}var yp=typeof Intl<`u`;yp&&Intl.DateTimeFormat,yp&&Intl.NumberFormat;function bp(e,...t){let{datetimeFormats:n,unresolving:r,onWarn:i}=e,{__datetimeFormatters:a}=e;if(!J(t[0])&&!ju(t[0])&&!U(t[0]))return``;let[o,s,c,l]=Sp(...t),u=Y(c.missingWarn)?c.missingWarn:e.missingWarn,d=Y(c.fallbackWarn)?c.fallbackWarn:e.fallbackWarn,f=!!c.part,p=Of(e,c);if(!J(o)||o===``){let e=new Intl.DateTimeFormat(p.replace(/!/g,``),l);return f?e.formatToParts(s):e.format(s)}let m=hp(e,o,p,n,u,d,`datetime format`);if(!J(m))return r?-1:o;let h=n[m][o],g=gp(m,o,l),_=a.get(g);return _||(_=new Intl.DateTimeFormat(m,W({},h,l)),a.set(g,_)),f?_.formatToParts(s):_.format(s)}var xp=[`localeMatcher`,`weekday`,`era`,`year`,`month`,`day`,`hour`,`minute`,`second`,`timeZoneName`,`formatMatcher`,`hour12`,`timeZone`,`dateStyle`,`timeStyle`,`calendar`,`dayPeriod`,`numberingSystem`,`hourCycle`,`fractionalSecondDigits`];function Sp(...e){let[t]=e,n=G(),r=G(),i;if(J(t)){let e=t.match(/(\d{4}-\d{2}-\d{2})(T|\s)?(.*)/);if(!e)throw Df(Ef.INVALID_ISO_DATE_ARGUMENT);let n=e[3]?e[3].trim().startsWith(`T`)?`${e[1].trim()}${e[3].trim()}`:`${e[1].trim()}T${e[3].trim()}`:e[1].trim();i=new Date(n);try{i.toISOString()}catch{throw Df(Ef.INVALID_ISO_DATE_ARGUMENT)}}else if(ju(t)){if(isNaN(t.getTime()))throw Df(Ef.INVALID_DATE_ARGUMENT);i=t}else if(U(t))i=t;else throw Df(Ef.INVALID_ARGUMENT);let a=vp(e,n,r,xp);return[n.key||``,i,n,a]}function Cp(e,t,n){_p(e.__datetimeFormatters,t,n)}function wp(e,...t){let{numberFormats:n,unresolving:r,onWarn:i}=e,{__numberFormatters:a}=e;if(!U(t[0]))return``;let[o,s,c,l]=Ep(...t),u=Y(c.missingWarn)?c.missingWarn:e.missingWarn,d=Y(c.fallbackWarn)?c.fallbackWarn:e.fallbackWarn,f=!!c.part,p=Of(e,c);if(!J(o)||o===``){let e=new Intl.NumberFormat(p.replace(/!/g,``),l);return f?e.formatToParts(s):e.format(s)}let m=hp(e,o,p,n,u,d,`number format`);if(!J(m))return r?-1:o;let h=n[m][o],g=gp(m,o,l),_=a.get(g);return _||(_=new Intl.NumberFormat(m,W({},h,l)),a.set(g,_)),f?_.formatToParts(s):_.format(s)}var Tp=[`localeMatcher`,`style`,`currency`,`currencyDisplay`,`currencySign`,`useGrouping`,`minimumIntegerDigits`,`minimumFractionDigits`,`maximumFractionDigits`,`minimumSignificantDigits`,`maximumSignificantDigits`,`compactDisplay`,`notation`,`signDisplay`,`unit`,`unitDisplay`,`roundingMode`,`roundingPriority`,`roundingIncrement`,`trailingZeroDisplay`];function Ep(...e){let[t]=e,n=G(),r=G();if(!U(t))throw Df(Ef.INVALID_ARGUMENT);let i=t,a=vp(e,n,r,Tp);return[n.key||``,i,n,a]}function Dp(e,t,n){_p(e.__numberFormatters,t,n)}var Op=e=>e,kp=e=>``,Ap=`text`,jp=e=>e.length===0?``:Uu(e),Mp=Hu;function Np(e,t){return e=Math.abs(e),t===2?e===1?0:1:Math.min(e,2)}function Pp(e){let t=U(e.pluralIndex)?e.pluralIndex:-1;return U(e.named?.count)?e.named.count:U(e.named?.n)?e.named.n:t}function Fp(e={}){let t=e.locale,n=Pp(e),r=J(t)&&q(e.pluralRules?.[t])?e.pluralRules[t]:Np,i=r===Np?void 0:Np,a=e=>e[r(n,e.length,i)],o=e.list||[],s=e=>o[e],c=e.named||G();U(e.pluralIndex)&&(c.count||=e.pluralIndex,c.n||=e.pluralIndex);let l=e=>c[e];function u(t,n){return(q(e.messages)?e.messages(t,!!n):X(e.messages)?e.messages[t]:!1)||(e.parent?e.parent.message(t):kp)}let d=t=>e.modifiers?e.modifiers[t]:Op,f=q(e.processor?.normalize)?e.processor.normalize:jp,p=q(e.processor?.interpolate)?e.processor.interpolate:Mp,m={list:s,named:l,plural:a,linked:(e,...t)=>{let[n,r]=t,i=`text`,a=``;t.length===1?X(n)?(a=n.modifier||a,i=n.type||i):J(n)&&(a=n||a):t.length===2&&(J(n)&&(a=n||a),J(r)&&(i=r||i));let o=u(e,!0)(m),s=o===``||o===void 0?e:o,c=i===`vnode`&&K(s)&&a?s[0]:s;return a?d(a)(c,i):c},message:u,type:J(e.processor?.type)?e.processor.type:Ap,interpolate:p,normalize:f,values:W(G(),o,c)};return m}var Ip=()=>``,Lp=e=>q(e);function Rp(e,...t){let{fallbackFormat:n,postTranslation:r,unresolving:i,messageCompiler:a,fallbackLocale:o,messages:s}=e,[c,l]=Up(...t),u=Y(l.missingWarn)?l.missingWarn:e.missingWarn,d=Y(l.fallbackWarn)?l.fallbackWarn:e.fallbackWarn,f=Y(l.escapeParameter)?l.escapeParameter:e.escapeParameter,p=!!l.resolvedMessage,m=J(l.default)||Y(l.default)?Y(l.default)?a?c:()=>c:l.default:n?a?c:()=>c:null,h=n||m!=null&&(J(m)||q(m)),g=Of(e,l);f&&zp(l);let[_,v,y]=p?[c,g,s[g]||G()]:Bp(e,c,g,o,d,u),b=_,x=c;if(!p&&!(J(b)||Kd(b)||Lp(b))&&h&&(b=m,x=b),!p&&(!(J(b)||Kd(b)||Lp(b))||!J(v)))return i?-1:c;let S=!1,C=Lp(b)?b:Vp(e,c,v,b,x,()=>{S=!0});if(S)return b;let w=Hp(e,C,Fp(Gp(e,v,y,l))),T=r?r(w,c):w;if(f&&J(T)&&(T=od(T)),__INTLIFY_PROD_DEVTOOLS__){let t={timestamp:Date.now(),key:J(c)?c:Lp(b)?b.key:``,locale:v||(Lp(b)?b.locale:``),format:J(b)?b:Lp(b)?b.source:``,message:T};t.meta=W({},e.__meta,ip()||{}),wf(t)}return T}function zp(e){K(e.list)?e.list=e.list.map(e=>J(e)?Gu(e):e):X(e.named)&&Object.keys(e.named).forEach(t=>{J(e.named[t])&&(e.named[t]=Gu(e.named[t]))})}function Bp(e,t,n,r,i,a){let{messages:o,onWarn:s,messageResolver:c,localeFallbacker:l}=e,u=l(e,r,n),d=G(),f,p=null;for(let n=0;n<u.length&&(f=u[n],d=o[f]||G(),(p=c(d,t))===null&&(p=d[t]),!(J(p)||Kd(p)||Lp(p)));n++)if(!mp(f,u)){let n=dp(e,t,f,a,`translate`);n!==t&&(p=n)}return[p,f,d]}function Vp(e,t,n,r,i,a){let{messageCompiler:o,warnHtmlMessage:s}=e;if(Lp(r)){let e=r;return e.locale=e.locale||n,e.key=e.key||t,e}if(o==null){let e=(()=>r);return e.locale=n,e.key=t,e}let c=o(r,Wp(e,n,i,r,s,a));return c.locale=n,c.key=t,c.source=r,c}function Hp(e,t,n){return t(n)}function Up(...e){let[t,n,r]=e,i=G();if(!J(t)&&!U(t)&&!Lp(t)&&!Kd(t))throw Df(Ef.INVALID_ARGUMENT);let a=U(t)?String(t):(Lp(t),t);return U(n)?i.plural=n:J(n)?i.default=n:Z(n)&&!Nu(n)?i.named=n:K(n)&&(i.list=n),U(r)?i.plural=r:J(r)?i.default=r:Z(r)&&W(i,r),[a,i]}function Wp(e,t,n,r,i,a){return{locale:t,key:n,warnHtmlMessage:i,onError:e=>{throw a&&a(e),e},onCacheKey:e=>ku(t,n,e)}}function Gp(e,t,n,r){let{modifiers:i,pluralRules:a,messageResolver:o,fallbackLocale:s,fallbackWarn:c,missingWarn:l,fallbackContext:u}=e,d={locale:t,modifiers:i,pluralRules:a,messages:(r,i)=>{let a=o(n,r);if(a==null&&(u||i)){let[n,,i]=Bp(u||e,r,t,s,c,l);a=n??o(i,r)}if(J(a)||Kd(a)){let n=!1,i=Vp(e,r,t,a,r,()=>{n=!0});return n?Ip:i}else if(Lp(a))return a;else return Ip}};return e.processor&&(d.processor=e.processor),r.list&&(d.list=r.list),r.named&&(d.named=r.named),U(r.plural)&&(d.pluralIndex=r.plural),d}Gd();var Kp=`11.4.8`;function qp(){typeof __VUE_I18N_FULL_INSTALL__!=`boolean`&&(Iu().__VUE_I18N_FULL_INSTALL__=!0),typeof __VUE_I18N_LEGACY_API__!=`boolean`&&(Iu().__VUE_I18N_LEGACY_API__=!0),typeof __INTLIFY_DROP_MESSAGE_COMPILER__!=`boolean`&&(Iu().__INTLIFY_DROP_MESSAGE_COMPILER__=!1),typeof __INTLIFY_PROD_DEVTOOLS__!=`boolean`&&(Iu().__INTLIFY_PROD_DEVTOOLS__=!1)}var $={UNEXPECTED_RETURN_TYPE:24,INVALID_ARGUMENT:25,MUST_BE_CALL_SETUP_TOP:26,NOT_INSTALLED:27,REQUIRED_VALUE:28,INVALID_VALUE:29,CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN:30,NOT_INSTALLED_WITH_PROVIDE:31,UNEXPECTED_ERROR:32,NOT_COMPATIBLE_LEGACY_VUE_I18N:33,NOT_AVAILABLE_COMPOSITION_IN_LEGACY:34};function Jp(e,...t){return dd(e,null,void 0)}$.UNEXPECTED_RETURN_TYPE,$.INVALID_ARGUMENT,$.MUST_BE_CALL_SETUP_TOP,$.NOT_INSTALLED,$.UNEXPECTED_ERROR,$.REQUIRED_VALUE,$.INVALID_VALUE,$.CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN,$.NOT_INSTALLED_WITH_PROVIDE,$.NOT_COMPATIBLE_LEGACY_VUE_I18N,$.NOT_AVAILABLE_COMPOSITION_IN_LEGACY;var Yp=Ou(`__translateVNode`),Xp=Ou(`__datetimeParts`),Zp=Ou(`__numberParts`),Qp=Ou(`__setPluralRules`);Ou(`__intlifyMeta`);var $p=Ou(`__injectWithOption`),em=Ou(`__dispose`),tm={FALLBACK_TO_ROOT:10,NOT_FOUND_PARENT_SCOPE:11,IGNORE_OBJ_FLATTEN:12,DEPRECATE_LEGACY_MODE:13,DEPRECATE_TRANSLATE_CUSTOME_DIRECTIVE:14,DUPLICATE_USE_I18N_CALLING:15};tm.FALLBACK_TO_ROOT,tm.NOT_FOUND_PARENT_SCOPE,tm.IGNORE_OBJ_FLATTEN,tm.DEPRECATE_LEGACY_MODE,tm.DEPRECATE_TRANSLATE_CUSTOME_DIRECTIVE,tm.DUPLICATE_USE_I18N_CALLING;function nm(e){if(!X(e)||Kd(e))return e;for(let t in e)if(Ru(e,t))if(!t.includes(`.`))X(e[t])&&nm(e[t]);else{let n=t.split(`.`),r=n.length-1,i=e,a=!1;for(let e=0;e<r;e++){if(n[e]===`__proto__`)throw Error(`unsafe key: ${n[e]}`);if(n[e]in i||(i[n[e]]=G()),!X(i[n[e]])){a=!0;break}i=i[n[e]]}if(a||(Kd(i)?df.includes(n[r])||delete e[t]:(i[n[r]]=e[t],delete e[t])),!Kd(i)){let e=i[n[r]];X(e)&&nm(e)}}return e}function rm(e,t){let{messages:n,__i18n:r,messageResolver:i,flatJson:a}=t,o=Z(n)?n:K(r)?G():{[e]:G()};if(K(r)&&r.forEach(e=>{if(`locale`in e&&`resource`in e){let{locale:t,resource:n}=e;t?(o[t]=o[t]||G(),cd(n,o[t])):cd(n,o)}else J(e)&&cd(JSON.parse(e),o)}),i==null&&a)for(let e in o)Ru(o,e)&&nm(o[e]);return o}function im(e){return e.type}function am(e,t,n){let r=X(t.messages)?t.messages:G();`__i18nGlobal`in n&&(r=rm(e.locale.value,{messages:r,__i18n:n.__i18nGlobal}));let i=Object.keys(r);if(i.length&&i.forEach(t=>{e.mergeLocaleMessage(t,r[t])}),X(t.datetimeFormats)){let n=Object.keys(t.datetimeFormats);n.length&&n.forEach(n=>{e.mergeDateTimeFormat(n,t.datetimeFormats[n])})}if(X(t.numberFormats)){let n=Object.keys(t.numberFormats);n.length&&n.forEach(n=>{e.mergeNumberFormat(n,t.numberFormats[n])})}}function om(e){return H(as,null,e,0)}function sm(){let e=`currentInstance`;return e in Tu?Tu[e]:Ls()}var cm=()=>[],lm=()=>!1,um=0;function dm(e){return((t,n,r,i)=>e(n,r,sm()||void 0,i))}function fm(e={}){let{__root:t,__injectWithOption:n}=e,r=t===void 0,i=e.flatJson,a=Du?an:on,o=!Y(e.inheritLocale)||e.inheritLocale,s=a(t&&o?t.locale.value:J(e.locale)?e.locale:Jf),c=a(t&&o?t.fallbackLocale.value:J(e.fallbackLocale)||K(e.fallbackLocale)||Z(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:s.value),l=a(rm(s.value,e)),u=a(Z(e.datetimeFormats)?e.datetimeFormats:{[s.value]:{}}),d=a(Z(e.numberFormats)?e.numberFormats:{[s.value]:{}}),f=t?t.missingWarn:Y(e.missingWarn)||Mu(e.missingWarn)?e.missingWarn:!0,p=t?t.fallbackWarn:Y(e.fallbackWarn)||Mu(e.fallbackWarn)?e.fallbackWarn:!0,m=t?t.fallbackRoot:!Y(e.fallbackRoot)||e.fallbackRoot,h=!!e.fallbackFormat,g=q(e.missing)?e.missing:null,_=q(e.missing)?dm(e.missing):null,v=q(e.postTranslation)?e.postTranslation:null,y=t?t.warnHtmlMessage:!Y(e.warnHtmlMessage)||e.warnHtmlMessage,b=!!e.escapeParameter,x=t?t.modifiers:Z(e.modifiers)?e.modifiers:{},S=e.pluralRules||t&&t.pluralRules,C;C=(()=>{r&&op(null);let t={version:Kp,locale:s.value,fallbackLocale:c.value,messages:l.value,modifiers:x,pluralRules:S,missing:_===null?void 0:_,missingWarn:f,fallbackWarn:p,fallbackFormat:h,unresolving:!0,postTranslation:v===null?void 0:v,warnHtmlMessage:y,escapeParameter:b,messageResolver:e.messageResolver,messageCompiler:e.messageCompiler,__meta:{framework:`vue`}};t.datetimeFormats=u.value,t.numberFormats=d.value,t.__datetimeFormatters=Z(C)?C.__datetimeFormatters:void 0,t.__numberFormatters=Z(C)?C.__numberFormatters:void 0;let n=lp(t);return r&&op(n),n})(),fp(C,s.value,c.value);function w(){return[s.value,c.value,l.value,u.value,d.value]}let T=rc({get:()=>s.value,set:e=>{C.locale=e,s.value=e}}),E=rc({get:()=>c.value,set:e=>{C.fallbackLocale=e,c.value=e,fp(C,s.value,e)}}),D=rc(()=>l.value),O=rc(()=>u.value),ee=rc(()=>d.value);function te(){return q(v)?v:null}function k(e){v=e,C.postTranslation=e}function ne(){return g}function A(e){e!==null&&(_=dm(e)),g=e,C.missing=_}let re=(e,n,i,a,o,s)=>{w();let c;try{__INTLIFY_PROD_DEVTOOLS__,r||(C.fallbackContext=t?sp():void 0),c=e(C)}finally{__INTLIFY_PROD_DEVTOOLS__,r||(C.fallbackContext=void 0)}if(i!==`translate exists`&&U(c)&&c===-1||i===`translate exists`&&!c){let[e,r]=n();return t&&m?a(t):o(e)}else if(s(c))return c;else throw Jp($.UNEXPECTED_RETURN_TYPE)};function j(...e){return re(t=>Reflect.apply(Rp,null,[t,...e]),()=>Up(...e),`translate`,t=>Reflect.apply(t.t,t,[...e]),e=>e,e=>J(e))}function M(...e){let[t,n,r]=e;if(r&&!X(r))throw Jp($.INVALID_ARGUMENT);return j(t,n,W({resolvedMessage:!0},r||{}))}function ie(...e){return re(t=>Reflect.apply(bp,null,[t,...e]),()=>Sp(...e),`datetime format`,t=>Reflect.apply(t.d,t,[...e]),()=>``,e=>J(e)||K(e))}function ae(...e){return re(t=>Reflect.apply(wp,null,[t,...e]),()=>Ep(...e),`number format`,t=>Reflect.apply(t.n,t,[...e]),()=>``,e=>J(e)||K(e))}function oe(e){return e.map(e=>J(e)||U(e)||Y(e)?om(String(e)):e)}let se={normalize:oe,interpolate:e=>e,type:`vnode`};function ce(...e){return re(t=>{let n,r=t;try{r.processor=se,n=Reflect.apply(Rp,null,[r,...e])}finally{r.processor=null}return n},()=>Up(...e),`translate`,t=>t[Yp](...e),e=>[om(e)],e=>K(e))}function le(...e){return re(t=>Reflect.apply(wp,null,[t,...e]),()=>Ep(...e),`number format`,t=>t[Zp](...e),cm,e=>J(e)||K(e))}function ue(...e){return re(t=>Reflect.apply(bp,null,[t,...e]),()=>Sp(...e),`datetime format`,t=>t[Xp](...e),cm,e=>J(e)||K(e))}function de(e){S=e,C.pluralRules=S}function fe(e,t){return re(()=>{if(!e)return!1;let n=J(t)?t:s.value,r=J(t)?[n]:Mf(C,c.value,n);for(let t=0;t<r.length;t++){let n=he(r[t]),i=C.messageResolver(n,e);if(i===null&&(i=n[e]),Kd(i)||Lp(i)||J(i))return!0}return!1},()=>[e],`translate exists`,n=>Reflect.apply(n.te,n,[e,t]),lm,e=>Y(e))}function pe(e){let t=null,n=Mf(C,c.value,s.value);for(let r=0;r<n.length;r++){let i=l.value[n[r]]||{},a=C.messageResolver(i,e);if(a!=null){t=a;break}}return t}function me(e){return pe(e)??(t&&t.tm(e)||{})}function he(e){return l.value[e]||{}}function ge(e,t){if(i){let n={[e]:t};for(let e in n)Ru(n,e)&&nm(n[e]);t=n[e]}l.value[e]=t,C.messages=l.value}function _e(e,t){l.value[e]=l.value[e]||{};let n={[e]:t};if(i)for(let e in n)Ru(n,e)&&nm(n[e]);t=n[e],cd(t,l.value[e]),C.messages=l.value}function ve(e){return u.value[e]||{}}function ye(e,t){u.value[e]=t,C.datetimeFormats=u.value,Cp(C,e,t)}function be(e,t){u.value[e]=W(u.value[e]||{},t),C.datetimeFormats=u.value,Cp(C,e,t)}function xe(e){return d.value[e]||{}}function Se(e,t){d.value[e]=t,C.numberFormats=d.value,Dp(C,e,t)}function Ce(e,t){d.value[e]=W(d.value[e]||{},t),C.numberFormats=d.value,Dp(C,e,t)}um++,t&&Du&&(Cr(t.locale,e=>{o&&(s.value=e,C.locale=e,fp(C,s.value,c.value))}),Cr(t.fallbackLocale,e=>{o&&(c.value=e,C.fallbackLocale=e,fp(C,s.value,c.value))}));let N={id:um,locale:T,fallbackLocale:E,get inheritLocale(){return o},set inheritLocale(e){o=e,e&&t&&(s.value=t.locale.value,c.value=t.fallbackLocale.value,fp(C,s.value,c.value))},get availableLocales(){return Object.keys(l.value).sort()},messages:D,get modifiers(){return x},get pluralRules(){return S||{}},get isGlobal(){return r},get missingWarn(){return f},set missingWarn(e){f=e,C.missingWarn=f},get fallbackWarn(){return p},set fallbackWarn(e){p=e,C.fallbackWarn=p},get fallbackRoot(){return m},set fallbackRoot(e){m=e},get fallbackFormat(){return h},set fallbackFormat(e){h=e,C.fallbackFormat=h},get warnHtmlMessage(){return y},set warnHtmlMessage(e){y=e,C.warnHtmlMessage=e},get escapeParameter(){return b},set escapeParameter(e){b=e,C.escapeParameter=e},t:j,getLocaleMessage:he,setLocaleMessage:ge,mergeLocaleMessage:_e,getPostTranslationHandler:te,setPostTranslationHandler:k,getMissingHandler:ne,setMissingHandler:A,[Qp]:de};return N.datetimeFormats=O,N.numberFormats=ee,N.rt=M,N.te=fe,N.tm=me,N.d=ie,N.n=ae,N.getDateTimeFormat=ve,N.setDateTimeFormat=ye,N.mergeDateTimeFormat=be,N.getNumberFormat=xe,N.setNumberFormat=Se,N.mergeNumberFormat=Ce,N[$p]=n,N[Yp]=ce,N[Xp]=ue,N[Zp]=le,N}function pm(e){let t=J(e.locale)?e.locale:Jf,n=J(e.fallbackLocale)||K(e.fallbackLocale)||Z(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:t,r=q(e.missing)?e.missing:void 0,i=Y(e.silentTranslationWarn)||Mu(e.silentTranslationWarn)?!e.silentTranslationWarn:!0,a=Y(e.silentFallbackWarn)||Mu(e.silentFallbackWarn)?!e.silentFallbackWarn:!0,o=!Y(e.fallbackRoot)||e.fallbackRoot,s=!!e.formatFallbackMessages,c=Z(e.modifiers)?e.modifiers:{},l=e.pluralizationRules,u=q(e.postTranslation)?e.postTranslation:void 0,d=!J(e.warnHtmlInMessage)||e.warnHtmlInMessage!==`off`,f=!!e.escapeParameterHtml,p=!Y(e.sync)||e.sync,m=e.messages;if(Z(e.sharedMessages)){let t=e.sharedMessages;m=Object.keys(t).reduce((e,n)=>(W(e[n]||(e[n]={}),t[n]),e),m||{})}let{__i18n:h,__root:g,__injectWithOption:_}=e,v=e.datetimeFormats,y=e.numberFormats,b=e.flatJson;return{locale:t,fallbackLocale:n,messages:m,flatJson:b,datetimeFormats:v,numberFormats:y,missing:r,missingWarn:i,fallbackWarn:a,fallbackRoot:o,fallbackFormat:s,modifiers:c,pluralRules:l,postTranslation:u,warnHtmlMessage:d,escapeParameter:f,messageResolver:e.messageResolver,inheritLocale:p,__i18n:h,__root:g,__injectWithOption:_}}function mm(e={}){let t=fm(pm(e)),{__extender:n}=e,r={id:t.id,get locale(){return t.locale.value},set locale(e){t.locale.value=e},get fallbackLocale(){return t.fallbackLocale.value},set fallbackLocale(e){t.fallbackLocale.value=e},get messages(){return t.messages.value},get datetimeFormats(){return t.datetimeFormats.value},get numberFormats(){return t.numberFormats.value},get availableLocales(){return t.availableLocales},get missing(){return t.getMissingHandler()},set missing(e){t.setMissingHandler(e)},get silentTranslationWarn(){return Y(t.missingWarn)?!t.missingWarn:t.missingWarn},set silentTranslationWarn(e){t.missingWarn=Y(e)?!e:e},get silentFallbackWarn(){return Y(t.fallbackWarn)?!t.fallbackWarn:t.fallbackWarn},set silentFallbackWarn(e){t.fallbackWarn=Y(e)?!e:e},get modifiers(){return t.modifiers},get formatFallbackMessages(){return t.fallbackFormat},set formatFallbackMessages(e){t.fallbackFormat=e},get postTranslation(){return t.getPostTranslationHandler()},set postTranslation(e){t.setPostTranslationHandler(e)},get sync(){return t.inheritLocale},set sync(e){t.inheritLocale=e},get warnHtmlInMessage(){return t.warnHtmlMessage?`warn`:`off`},set warnHtmlInMessage(e){t.warnHtmlMessage=e!==`off`},get escapeParameterHtml(){return t.escapeParameter},set escapeParameterHtml(e){t.escapeParameter=e},get pluralizationRules(){return t.pluralRules||{}},__composer:t,t(...e){return Reflect.apply(t.t,t,[...e])},rt(...e){return Reflect.apply(t.rt,t,[...e])},te(e,n){return t.te(e,n)},tm(e){return t.tm(e)},getLocaleMessage(e){return t.getLocaleMessage(e)},setLocaleMessage(e,n){t.setLocaleMessage(e,n)},mergeLocaleMessage(e,n){t.mergeLocaleMessage(e,n)},d(...e){return Reflect.apply(t.d,t,[...e])},getDateTimeFormat(e){return t.getDateTimeFormat(e)},setDateTimeFormat(e,n){t.setDateTimeFormat(e,n)},mergeDateTimeFormat(e,n){t.mergeDateTimeFormat(e,n)},n(...e){return Reflect.apply(t.n,t,[...e])},getNumberFormat(e){return t.getNumberFormat(e)},setNumberFormat(e,n){t.setNumberFormat(e,n)},mergeNumberFormat(e,n){t.mergeNumberFormat(e,n)}};return r.__extender=n,r}function hm(e,t,n){return{beforeCreate(){let r=sm();if(!r)throw Jp($.UNEXPECTED_ERROR);let i=this.$options;if(i.i18n){let r=i.i18n;if(i.__i18n&&(r.__i18n=i.__i18n),r.__root=t,this===this.$root)this.$i18n=gm(e,r);else{r.__injectWithOption=!0,r.__extender=n.__vueI18nExtend,this.$i18n=mm(r);let e=this.$i18n;e.__extender&&(e.__disposer=e.__extender(this.$i18n))}}else if(i.__i18n)if(this===this.$root)this.$i18n=gm(e,i);else{this.$i18n=mm({__i18n:i.__i18n,__injectWithOption:!0,__extender:n.__vueI18nExtend,__root:t});let e=this.$i18n;e.__extender&&(e.__disposer=e.__extender(this.$i18n))}else this.$i18n=e;i.__i18nGlobal&&am(t,i,i),this.$t=(...e)=>this.$i18n.t(...e),this.$rt=(...e)=>this.$i18n.rt(...e),this.$te=(e,t)=>this.$i18n.te(e,t),this.$d=(...e)=>this.$i18n.d(...e),this.$n=(...e)=>this.$i18n.n(...e),this.$tm=e=>this.$i18n.tm(e),n.__setInstance(r,this.$i18n)},mounted(){},unmounted(){let e=sm();if(!e)throw Jp($.UNEXPECTED_ERROR);let t=this.$i18n;t&&(delete this.$t,delete this.$rt,delete this.$te,delete this.$d,delete this.$n,delete this.$tm,t?.__disposer&&(t.__disposer(),delete t.__disposer,delete t.__extender),n.__deleteInstance(e),delete this.$i18n)}}}function gm(e,t){e.locale=t.locale||e.locale,e.fallbackLocale=t.fallbackLocale||e.fallbackLocale,e.missing=t.missing||e.missing,e.silentTranslationWarn=t.silentTranslationWarn||e.silentFallbackWarn,e.silentFallbackWarn=t.silentFallbackWarn||e.silentFallbackWarn,e.formatFallbackMessages=t.formatFallbackMessages||e.formatFallbackMessages,e.postTranslation=t.postTranslation||e.postTranslation,e.warnHtmlInMessage=t.warnHtmlInMessage||e.warnHtmlInMessage,e.escapeParameterHtml=t.escapeParameterHtml||e.escapeParameterHtml,e.sync=t.sync||e.sync,e.__composer[Qp](t.pluralizationRules||e.pluralizationRules);let n=rm(e.locale,{messages:t.messages,__i18n:t.__i18n});return Object.keys(n).forEach(t=>e.mergeLocaleMessage(t,n[t])),t.datetimeFormats&&Object.keys(t.datetimeFormats).forEach(n=>e.mergeDateTimeFormat(n,t.datetimeFormats[n])),t.numberFormats&&Object.keys(t.numberFormats).forEach(n=>e.mergeNumberFormat(n,t.numberFormats[n])),e}var _m={tag:{type:[String,Object]},locale:{type:String},scope:{type:String,validator:e=>e===`parent`||e===`global`,default:`parent`},i18n:{type:Object}};function vm({slots:e},t){return t.length===1&&t[0]==="default"?(e.default?e.default():[]).reduce((e,t)=>[...e,...t.type===B?t.children:[t]],[]):t.reduce((t,n)=>{let r=e[n];return r&&(t[n]=r()),t},G())}function ym(){return B}var bm=ni({name:`i18n-t`,props:W({keypath:{type:String,required:!0},plural:{type:[Number,String],validator:e=>U(e)||!isNaN(e)}},_m),setup(e,t){let{slots:n,attrs:r}=t,i=e.i18n||jm({useScope:e.scope,__useComponent:!0});return()=>{let a=()=>{let r=Object.keys(n).filter(e=>e[0]!==`_`),a=G();e.locale&&(a.locale=e.locale),e.plural!==void 0&&(a.plural=J(e.plural)?+e.plural:e.plural);let o=vm(t,r);return i[Yp](e.keypath,o,a)},o=W(G(),r),s=J(e.tag)||X(e.tag)?e.tag:ym();return X(s)?ic(s,o,{default:a}):ic(s,o,a())}}});function xm(e){return K(e)&&!J(e[0])}function Sm(e,t,n,r){let{slots:i,attrs:a}=t;return()=>{let t=()=>{let t={part:!0},a=G();e.locale&&(t.locale=e.locale),J(e.format)?t.key=e.format:X(e.format)&&(J(e.format.key)&&(t.key=e.format.key),a=Object.keys(e.format).reduce((t,r)=>n.includes(r)?W(G(),t,{[r]:e.format[r]}):t,G()));let o=r(e.value,t,a),s=[t.key];return K(o)?s=o.map((e,t)=>{let n=i[e.type],r=n?n({[e.type]:e.value,index:t,parts:o}):[e.value];return xm(r)&&(r[0].key=`${e.type}-${t}`),r}):J(o)&&(s=[o]),s},o=W(G(),a),s=J(e.tag)||X(e.tag)?e.tag:ym();return X(s)?ic(s,o,{default:t}):ic(s,o,t())}}var Cm=ni({name:`i18n-n`,props:W({value:{type:Number,required:!0},format:{type:[String,Object]}},_m),setup(e,t){let n=e.i18n||jm({useScope:e.scope,__useComponent:!0});return Sm(e,t,Tp,(...e)=>n[Zp](...e))}});function wm(e,t){let n=e;if(e.mode===`composition`)return n.__getInstance(t)||e.global;{let r=n.__getInstance(t);return r==null?e.global.__composer:r.__composer}}function Tm(e){let t=t=>{let{instance:n,value:r}=t;if(!n||!n.$)throw Jp($.UNEXPECTED_ERROR);let i=wm(e,n.$),a=Em(r);return[Reflect.apply(i.t,i,[...Dm(a)]),i]};return{created:(e,n)=>{let[r,i]=t(n);Du&&(e.__i18nWatcher=Cr(i.locale,()=>{n.instance&&n.instance.$forceUpdate()})),e.__composer=i,e.textContent=r},unmounted:e=>{Du&&e.__i18nWatcher&&(e.__i18nWatcher(),e.__i18nWatcher=void 0,delete e.__i18nWatcher),e.__composer&&(e.__composer=void 0,delete e.__composer)},beforeUpdate:(e,{value:t})=>{if(e.__composer){let n=e.__composer,r=Em(t);e.textContent=Reflect.apply(n.t,n,[...Dm(r)])}},getSSRProps:e=>{let[n]=t(e);return{textContent:n}}}}function Em(e){if(J(e))return{path:e};if(Z(e)){if(!(`path`in e))throw Jp($.REQUIRED_VALUE,`path`);return e}else throw Jp($.INVALID_VALUE)}function Dm(e){let{path:t,locale:n,args:r,choice:i,plural:a}=e,o={},s=r||{};return J(n)&&(o.locale=n),U(i)&&(o.plural=i),U(a)&&(o.plural=a),[t,s,o]}function Om(e,t,...n){let r=Z(n[0])?n[0]:{};(!Y(r.globalInstall)||r.globalInstall)&&([bm.name,`I18nT`].forEach(t=>e.component(t,bm)),[Cm.name,`I18nN`].forEach(t=>e.component(t,Cm)),[Hm.name,`I18nD`].forEach(t=>e.component(t,Hm))),e.directive(`t`,Tm(t))}var km=Ou(`global-vue-i18n`);function Am(e={}){let t=__VUE_I18N_LEGACY_API__&&Y(e.legacy)?e.legacy:__VUE_I18N_LEGACY_API__,n=!Y(e.globalInjection)||e.globalInjection,r=new Map,[i,a]=Mm(e,t),o=Ou(``);function s(e){return r.get(e)||null}function c(e,t){r.set(e,t)}function l(e){r.delete(e)}let u={get mode(){return __VUE_I18N_LEGACY_API__&&t?`legacy`:`composition`},async install(e,...r){if(e.__VUE_I18N_SYMBOL__=o,e.provide(e.__VUE_I18N_SYMBOL__,u),Z(r[0])){let e=r[0];u.__composerExtend=e.__composerExtend,u.__vueI18nExtend=e.__vueI18nExtend}let i=null;!t&&n&&(i=Vm(e,u.global)),__VUE_I18N_FULL_INSTALL__&&Om(e,u,...r),__VUE_I18N_LEGACY_API__&&t&&e.mixin(hm(a,a.__composer,u));let s=e.unmount;e.unmount=()=>{i&&i(),u.dispose(),s()}},get global(){return a},dispose(){i.stop()},__instances:r,__getInstance:s,__setInstance:c,__deleteInstance:l};return u}function jm(e={}){let t=sm();if(t==null)throw Jp($.MUST_BE_CALL_SETUP_TOP);if(!t.isCE&&t.appContext.app!=null&&!t.appContext.app.__VUE_I18N_SYMBOL__)throw Jp($.NOT_INSTALLED);let n=Nm(t),r=Fm(n),i=im(t),a=Pm(e,i);if(a===`global`)return am(r,e,i),r;if(a===`parent`){let i=Im(n,t,e.__useComponent);return i??=r,i}if(a===`isolated`){if(n.mode!==`composition`)throw Jp($.NOT_AVAILABLE_COMPOSITION_IN_LEGACY);let i=n,a=W({},e);a.__root=Im(n,t)||r;let o=fm(a);return i.__composerExtend&&(o[em]=i.__composerExtend(o)),je()&&Me(()=>{let e=o[em];e&&(e(),delete o[em])}),o}let o=n,s=o.__getInstance(t);if(s==null){let n=W({},e);`__i18n`in i&&(n.__i18n=i.__i18n),r&&(n.__root=r),s=fm(n),o.__composerExtend&&(s[em]=o.__composerExtend(s)),Rm(o,t,s),o.__setInstance(t,s)}return s}function Mm(e,t){let n=Ae(),r=__VUE_I18N_LEGACY_API__&&t?n.run(()=>mm(e)):n.run(()=>fm(e));if(r==null)throw Jp($.UNEXPECTED_ERROR);return[n,r]}function Nm(e){let t=gr(e.isCE?km:e.appContext.app.__VUE_I18N_SYMBOL__);if(!t)throw Jp(e.isCE?$.NOT_INSTALLED_WITH_PROVIDE:$.UNEXPECTED_ERROR);return t}function Pm(e,t){return Nu(e)?`__i18n`in t?`local`:`global`:e.useScope?e.useScope:`local`}function Fm(e){return e.mode===`composition`?e.global:e.global.__composer}function Im(e,t,n=!1){let r=null,i=t.root,a=Lm(t,n);for(;a!=null;){let t=e;if(e.mode===`composition`)r=t.__getInstance(a);else if(__VUE_I18N_LEGACY_API__){let e=t.__getInstance(a);e!=null&&(r=e.__composer,n&&r&&!r[$p]&&(r=null))}if(r!=null||i===a)break;a=a.parent}return r}function Lm(e,t=!1){return e==null?null:t&&e.vnode.ctx||e.parent}function Rm(e,t,n){Yi(()=>{},t),$i(()=>{let r=n;e.__deleteInstance(t);let i=r[em];i&&(i(),delete r[em])},t)}var zm=[`locale`,`fallbackLocale`,`availableLocales`],Bm=[`t`,`rt`,`d`,`n`,`tm`,`te`];function Vm(e,t){let n=Object.create(null);return zm.forEach(e=>{let r=Object.getOwnPropertyDescriptor(t,e);if(!r)throw Jp($.UNEXPECTED_ERROR);let i=L(r.value)?{get(){return r.value.value},set(e){r.value.value=e}}:{get(){return r.get&&r.get()}};Object.defineProperty(n,e,i)}),e.config.globalProperties.$i18n=n,Bm.forEach(n=>{let r=Object.getOwnPropertyDescriptor(t,n);if(!r||!r.value)throw Jp($.UNEXPECTED_ERROR);Object.defineProperty(e.config.globalProperties,`$${n}`,r)}),()=>{delete e.config.globalProperties.$i18n,Bm.forEach(t=>{delete e.config.globalProperties[`$${t}`]})}}var Hm=ni({name:`i18n-d`,props:W({value:{type:[Number,Date],required:!0},format:{type:[String,Object]}},_m),setup(e,t){let n=e.i18n||jm({useScope:e.scope,__useComponent:!0});return Sm(e,t,xp,(...e)=>n[Xp](...e))}});if(qp(),Qf(bf),ep(Gf),np(Mf),__INTLIFY_PROD_DEVTOOLS__){let e=Iu();e.__INTLIFY__=!0,Sf(e.__INTLIFY_DEVTOOLS_GLOBAL_HOOK__)}var Um={"zh-CN":{details:`查看详情`,filters:`筛选`,usageDetails:`用量明细`,connectionDetails:`连接详情`,all:`查看全部`},"en-US":{details:`Details`,filters:`Filters`,usageDetails:`Usage details`,connectionDetails:`Connection details`,all:`View all`}},Wm={"zh-CN":{sections:{attention:`待处理`,currentWork:`当前工作`,recentProjects:`最近项目`,services:`服务状态`},attention:{loading:`正在读取待处理请求…`,empty:`暂无待处理请求。`,loadFailed:`待处理请求暂时无法读取。`,retry:`重试`,refresh:`刷新`,open:`查看请求`,openTask:`打开任务`,agent:`Agent {id}`,count:`{count} 个请求`},work:{loading:`正在读取当前任务…`,empty:`暂无进行中的任务。`,loadFailed:`当前任务暂时无法读取。`,retry:`重试`,refresh:`刷新`,updated:`更新于 {date}`},projects:{empty:`暂无项目。`,updated:`最近更新 {date}`,noActivity:`尚无任务活动`},services:{local:`本地知识库`,public:`共享服务`,ready:`已连接`,loading:`连接中`,error:`暂时不可用`,disconnected:`未连接`,localDetail:`Graphiti / Neo4j`,publicReadyDetail:`{count} 个共享服务可用`,publicOfflineDetail:`不影响本机工作`,publicErrorDetail:`本机工作仍可继续`},taskStatus:{awaiting_recruitment:`等待招聘`,queued:`排队中`,running:`进行中`,paused:`已暂停`,awaiting_review:`待审核`,blocked:`已阻塞`},notReported:`未上报`},"en-US":{sections:{attention:`Needs attention`,currentWork:`Current work`,recentProjects:`Recent projects`,services:`Services`},attention:{loading:`Loading pending requests…`,empty:`Nothing needs your attention.`,loadFailed:`Pending requests are temporarily unavailable.`,retry:`Retry`,refresh:`Refresh`,open:`View request`,openTask:`Open task`,agent:`Agent {id}`,count:`{count} requests`},work:{loading:`Loading current tasks…`,empty:`No active tasks.`,loadFailed:`Current tasks are temporarily unavailable.`,retry:`Retry`,refresh:`Refresh`,updated:`Updated {date}`},projects:{empty:`No projects yet.`,updated:`Updated {date}`,noActivity:`No task activity yet`},services:{local:`Local knowledge base`,public:`Shared services`,ready:`Connected`,loading:`Connecting`,error:`Temporarily unavailable`,disconnected:`Not connected`,localDetail:`Graphiti / Neo4j`,publicReadyDetail:`{count} shared services available`,publicOfflineDetail:`Local work is unaffected`,publicErrorDetail:`Local work can continue`},taskStatus:{awaiting_recruitment:`Awaiting recruitment`,queued:`Queued`,running:`In progress`,paused:`Paused`,awaiting_review:`Awaiting review`,blocked:`Blocked`},notReported:`Not reported`}},Gm={"zh-CN":{refreshing:`正在更新 Agent 名录`,membershipStatus:`成员 · {status}`,projects:{more:`全部项目 · {count}`},workStatus:{label:`工作状态`,awaiting_recruitment:`等待招聘`,queued:`排队中`,running:`运行中`,paused:`已暂停`,awaiting_review:`待审核`,blocked:`阻塞`,none:`空闲`,loading:`正在读取工作状态`,unreported:`状态不完整`,unavailable:`读取失败`,refreshError:`工作状态更新失败`}},"en-US":{refreshing:`Updating the Agent directory`,membershipStatus:`Member · {status}`,projects:{more:`All projects · {count}`},workStatus:{label:`Work status`,awaiting_recruitment:`Awaiting recruitment`,queued:`Queued`,running:`Running`,paused:`Paused`,awaiting_review:`Awaiting review`,blocked:`Blocked`,none:`Idle`,loading:`Loading work status`,unreported:`Partial status`,unavailable:`Unavailable`,refreshError:`Work status could not be refreshed`}}},Km={"zh-CN":{title:`Agents`,profile:`主页`,roles:{projectManager:`项目经理`,hr:`AR`},back:`全部 Agent`,search:`搜索名字、擅长领域或项目`,members:`{count} 位成员`,noMatch:`没有找到匹配的成员`,noAgents:`还没有 Agent,先招募一位伙伴。`,noProject:`未分配项目`,allProjects:`全部项目`,loading:`正在读取成员档案`,loadError:`成员档案读取失败`,retry:`重试`,unavailable:`这个 Agent 不在当前个人空间中。`,about:`我怎样工作`,judgment:`判断`,taste:`品味`,personality:`个性`,characterEmpty:`工作风格待完善`,characterHint:`由 AR 在招聘时设定,也可随工作经历更新。`,strengths:`擅长`,noSkills:`擅长领域待完善`,projects:`负责的项目`,experience:`工作经历`,noExperience:`还没有可展示的工作记录。`,recent:`最近的工作记录`,collaborators:`合作伙伴`,noCollaborators:`还没有已开展的合作记录。`,sharedTasks:`共同参与 {count} 个任务`,joined:`加入时间`,created:`建立档案`,timeUnknown:`尚未记录`,recruitment:`为什么加入`,organization:`组织关系`,lead:`项目总负责人`,teammates:`直属成员`,reporting:`成员 → 项目总负责人 → 你`,teamUnset:`待配置项目总负责人`,leadUnavailable:`项目总负责人 {name} 当前不可用`,leadUnavailableUnnamed:`已设置的项目总负责人当前不可用`,projectMember:`项目成员`,teamUnavailable:`组织关系暂时无法读取。`,askHR:`问 AR`,hr:`AR 人员目录`,settings:`设置`,platform:`常用 Agent 平台`,automatic:`自动选择`,platformHint:`从已接入的平台中选择;不会因此增加权限。`,platformUnavailable:`当前平台暂不可用`,locked:`平台范围已锁定,可在高级管理中查看。`,expectations:`对它的期望`,expectationsPlaceholder:`例如:先给结论,遇到不确定的地方主动验证。`,editCharacter:`更新工作风格`,save:`保存`,saved:`已保存`,saving:`正在保存 Agent 设置`,saveError:`设置保存失败,请重试。`,advanced:`高级管理`,workbench:`工作台`,working:`当前工作`,idle:`空闲`,allStatus:`全部状态`,partial:`部分工作记录暂时无法读取。`,projectHistory:`曾负责`,detailLoading:`正在读取工作经历和组织关系`,settingsLoading:`正在读取可用平台`,hrSearchHint:`支持姓名片段、职责、技能、项目和近似拼写。`},"en-US":{title:`Agents`,profile:`Profile`,roles:{projectManager:`Project manager`,hr:`AR`},back:`All agents`,search:`Search names, skills or projects`,members:`{count} members`,noMatch:`No matching members`,noAgents:`Recruit your first agent to get started.`,noProject:`No project assigned`,allProjects:`All projects`,loading:`Loading member profiles`,loadError:`Could not load member profiles`,retry:`Retry`,unavailable:`This agent is not in the current personal space.`,about:`How I work`,judgment:`Judgment`,taste:`Taste`,personality:`Personality`,characterEmpty:`Working style is not defined yet`,characterHint:`Set by AR during recruitment and updated through work.`,strengths:`Strengths`,noSkills:`Strengths are not defined yet`,projects:`Projects`,experience:`Work history`,noExperience:`No work history to show yet.`,recent:`Recent work records`,collaborators:`Collaborators`,noCollaborators:`No started collaborations yet.`,sharedTasks:`Shared {count} tasks`,joined:`Joined`,created:`Profile created`,timeUnknown:`Not recorded`,recruitment:`Why I joined`,organization:`Organization`,lead:`Project lead`,teammates:`Direct reports`,reporting:`Members → Project lead → You`,teamUnset:`Project lead required`,leadUnavailable:`Project lead {name} is currently unavailable`,leadUnavailableUnnamed:`The configured project lead is currently unavailable`,projectMember:`Project member`,teamUnavailable:`Organization details are temporarily unavailable.`,askHR:`Ask AR`,hr:`AR directory`,settings:`Settings`,platform:`Preferred agent platform`,automatic:`Choose automatically`,platformHint:`Choose an existing platform. This does not grant additional permissions.`,platformUnavailable:`Current platform is unavailable`,locked:`Platform scope is locked. View it in advanced management.`,expectations:`Your expectations`,expectationsPlaceholder:`For example: lead with the conclusion and verify uncertainties.`,editCharacter:`Update working style`,save:`Save`,saved:`Saved`,saving:`Saving agent settings`,saveError:`Could not save settings. Try again.`,advanced:`Advanced management`,workbench:`Workbench`,working:`Current work`,idle:`Idle`,allStatus:`All statuses`,partial:`Some work records are temporarily unavailable.`,projectHistory:`Previously responsible for`,detailLoading:`Loading work history and organization`,settingsLoading:`Loading available platforms`,hrSearchHint:`Search partial names, responsibilities, skills, projects or approximate spellings.`}},qm={"zh-CN":{brand:`复利`,language:{label:`界面语言`,chinese:`中文`,english:`English`},actions:{retry:`重试`,backHome:`返回首页`,refresh:`刷新`,close:`关闭`,cancel:`取消`,remove:`移除`,viewDetails:`查看详情`},searchableSelect:{placeholder:`请选择`,searchPlaceholder:`搜索`,searchAria:`搜索{label}`,noMatches:`没有匹配项`,selectedCount:`已选 {count} 项`,invert:`反选`,clear:`清空`},errors:{loadFailed:`读取失败,请重试。`,serviceUnavailable:`服务暂时无法响应,请稍后重试。({status})`,pageNotFound:`找不到这个页面`,pageNotFoundCopy:`链接可能已失效。`,requestFailed:`请求失败 ({status})`,operationFailed:`操作失败`},status:{loadingConsole:`正在读取空间与服务状态…`,connected:`已连接`,connectionError:`连接异常`,notConnected:`未连接`,notRecorded:`未记录`,noDescription:`没有补充说明`,current:`当前有效`,invalid:`已失效`,all:`全部`,loadingKnowledge:`正在读取知识…`},counts:{items:`{count} 条`,listPosition:`第 {current} 条,共 {total} 条`,entities:`{count} 个实体`,relationships:`{count} 条关系`,sources:`{count} 个来源`,projects:`{count} 个项目`}},"en-US":{brand:`FULI`,language:{label:`Interface language`,chinese:`中文`,english:`English`},actions:{retry:`Retry`,backHome:`Back to home`,refresh:`Refresh`,close:`Close`,cancel:`Cancel`,remove:`Remove`,viewDetails:`View details`},searchableSelect:{placeholder:`Select an option`,searchPlaceholder:`Search`,searchAria:`Search {label}`,noMatches:`No matching options`,selectedCount:`{count} selected`,invert:`Invert`,clear:`Clear`},errors:{loadFailed:`Could not load. Please retry.`,serviceUnavailable:`The service is temporarily unavailable. Try again shortly. ({status})`,pageNotFound:`Page not found`,pageNotFoundCopy:`This link may be outdated.`,requestFailed:`Request failed ({status})`,operationFailed:`Operation failed`},status:{loadingConsole:`Loading spaces and service status…`,connected:`Connected`,connectionError:`Connection error`,notConnected:`Not connected`,notRecorded:`Not recorded`,noDescription:`No additional description`,current:`Active`,invalid:`Inactive`,all:`All`,loadingKnowledge:`Loading knowledge…`},counts:{items:`{count} item | {count} items`,listPosition:`Item {current} of {total}`,entities:`{count} entity | {count} entities`,relationships:`{count} relationship | {count} relationships`,sources:`{count} source | {count} sources`,projects:`{count} project | {count} projects`}}},Jm={"zh-CN":{navigation:{aria:`主导航`,openMenu:`打开导航`,closeMenu:`关闭导航`,overview:`工作台`,preferences:`偏好`,roundtables:`圆桌`,more:`更多`,organizer:`知识整理`,personalProjects:`项目`,projectAgents:`Agents`,publicProjects:`公共项目`,knowledge:`知识`,review:`审核`,connections:`连接`,settings:`设置`,about:`关于`},brandEffect:{aria:`复利,触发品牌光效`},update:{aria:`发现新版本 {version},查看更新方法`,title:`新版本 v{version} 可用`,copy:`在终端运行:`,npmLink:`在 npm 查看版本详情`},services:{aria:`知识服务状态`,localReady:`本地已连接`,localError:`本地知识库连接失败`,localConnecting:`正在连接本地知识库`,publicReady:`公共服务已连接`,publicError:`共享服务异常`,publicOffline:`共享服务未连接`,publicAvailable:`公共项目与协作可用`,publicBrowseSubscribe:`公共项目发现与订阅可用`,localUnaffected:`本地知识库不受影响`,localOnly:`当前仅使用本机`},agentAccess:{enabledNotice:`Agent 使用已开启;已连接的 Agent 可以调用 FULI。`,disabledNotice:`Agent 使用已关闭,所有 Agent 调用会被拦截。`},captureNotices:{enabled:`自动沉淀已开启。`,disabled:`自动沉淀已关闭,已有知识仍可读取。`}},"en-US":{navigation:{aria:`Primary navigation`,openMenu:`Open navigation`,closeMenu:`Close navigation`,overview:`Workspace`,preferences:`Preferences`,roundtables:`Roundtable`,more:`More`,organizer:`Organize`,personalProjects:`Projects`,projectAgents:`Agents`,publicProjects:`Public projects`,knowledge:`Knowledge`,review:`Review`,connections:`Connections`,settings:`Settings`,about:`About`},brandEffect:{aria:`FULI, play the brand light effect`},update:{aria:`Version {version} is available. View update instructions`,title:`Version v{version} is available`,copy:`Run in a terminal:`,npmLink:`View version details on npm`},services:{aria:`Knowledge service status`,localReady:`Local knowledge base connected`,localError:`Local knowledge base connection failed`,localConnecting:`Connecting to local knowledge base`,publicReady:`Public service connected`,publicError:`Public service connection error`,publicOffline:`Public service not connected`,publicAvailable:`Public projects and collaboration available`,publicBrowseSubscribe:`Public project discovery and subscriptions available`,localUnaffected:`Local knowledge base is unaffected`,localOnly:`Using this device only`},agentAccess:{enabledNotice:`Agent access is on. Connected Agents can use FULI.`,disabledNotice:`Agent access is off; all Agent calls are blocked.`},captureNotices:{enabled:`Automatic capture is on.`,disabled:`Automatic capture is off; existing knowledge stays readable.`}}},Ym={"zh-CN":{materialTypes:{ProjectSpace:`项目空间`,PersonalSpace:`个人空间`,PersonalProject:`项目档案`,ProjectPurpose:`项目目标`,ProjectScope:`项目范围`,TechnicalSummary:`技术说明`,ProjectSource:`资料来源`,ProjectBoundary:`项目边界`,ProjectAssessment:`档案评估`,AssessmentDimension:`评估维度`,RelatedPersonalProject:`关联项目`,ExternalKnowledgeSource:`外部知识源`,relationship:`项目资料关系`},quadrants:{known_known:`已知的已知`,known_unknown:`已知的未知`,unknown_known:`未知的已知`,unknown_unknown:`未知的未知`,unclassified:`待分类`,customDescription:`自定义认知阶段。`,descriptions:{known_known:`被明确表达出来的知识或结论。`,known_unknown:`被明确提出、但仍在等待答案的问题。`,unknown_known:`从行为、案例、反馈或反应中提炼出的隐性知识。`,unknown_unknown:`在探索过程中发现、仍需判断的潜在盲点。`,unclassified:`旧内容还没有明确记录发现时所属象限。`}},reviewStates:{confirmed:`已确认`,agent_confirmed:`Agent 已确认`,ai_reviewed:`Tonborg 已审`,pending:`待确认`},actors:{user:`用户`,agent:`Agent`,authoritative_source:`权威来源`,import:`导入记录`,notRecorded:`尚未记录`,currentUser:`当前用户`,historicalRecord:`历史记录`,otherAgent:`其他 Agent`},profiles:{taste:`品味`,personality:`个性`,judgment_preference:`判断偏好`},revisions:{confirm:`确认`,update:`内容纠正`,invalidate:`标记失效`,link_replacement:`补充替代关联`,restore:`恢复有效`,scope_change:`调整生效范围`,batch_confirm:`批量确认`,fallback:`修订`},humanChanges:{none:`没有人工变更`,unseen:`人工改动 · Agent 未查看`,viewed:`Agent 已查看 · 待审核`,reviewed:`Agent 已审核`},auditActions:{human_change:`人工修改`,agent_view:`Agent 查看`,agent_review:`Agent 审核`,knowledge_used:`Agent 实际使用`,fallback:`审计记录`},items:{unknownEntity:`未知实体`,noRelationDescription:`没有关系说明`,relationshipType:`关系 · {type}`,notRecorded:`未记录`},confirmation:{sameSource:`同一条来源记录`,sameSession:`同一次来源会话`,sourceSupports:`该内容由来源“{label}”支持。`,quadrantReason:`该内容在发现时符合“{quadrant}”:{description}`,sourceRecord:`来源记录`,otherSource:`其他来源`,session:`会话`,sourceSession:`来源会话`,legacyUnclassified:`旧内容没有发现来源,保存前需要补充。`,confirmed:`{actor}于 {time} 确认;本次确认同时覆盖知识内容和象限归类。`,agentConfirmed:`多个任务实际用上后,于 {time} 由 Agent 确认;权重仍低于你的确认。`,aiReviewed:`Tonborg 已基于当前版本完成审阅;这不是人工确认。`,pending:`{actor}提出,等待确认。`,legacyPending:`旧数据缺少确认记录,已归入待确认。`,legacyBasisMissing:`旧数据 · 确认人和时间缺失`,agentPolicy:`Agent 使用策略 · {time}`,proposed:`{actor}提出 · {reason}`},relations:{PART_OF:{label:`属于`,description:`子项目属于上级项目`},HAS_SOURCE:{label:`来源`,description:`项目登记的资料来源`},HAS_PURPOSE:{label:`目标`,description:`项目的目标或存在原因`},HAS_SCOPE:{label:`范围`,description:`项目覆盖的工作范围`},GOVERNS:{label:`约束`,description:`项目边界或规则约束`},HAS_TECHNICAL_SUMMARY:{label:`技术说明`,description:`项目登记的技术说明`},ASSESSED_AS:{label:`评估`,description:`项目资料覆盖情况的评估`},MEASURES:{label:`衡量`,description:`用于衡量项目资料的维度`},CONTAINS_PROJECT:{label:`包含项目`,description:`空间中包含的项目`},USES_KNOWLEDGE_FROM:{label:`借鉴`,description:`从另一个项目借鉴知识`},USES_EXTERNAL_KNOWLEDGE:{label:`使用外部知识`,description:`项目绑定的只读外部知识源`},DEPENDS_ON:{label:`依赖`,description:`依赖另一个项目或能力`},PROVIDES_TO:{label:`提供给`,description:`向另一个项目提供能力`},SHARES_CAPABILITY_WITH:{label:`共享能力`,description:`两个项目共享同一种能力`},RELATED_TO:{label:`关联`,description:`两个节点存在一般关联`},HAS_DECISION:{label:`决策`,description:`项目形成的决策`},fallback:{label:`关联`,description:`两个节点之间的关联关系`},quoted:`“{label}”`},graph:{hit:`命中`,projectMarked:`已标记为项目`,humanUnseen:`人工修改后,Agent 尚未查看`,humanViewed:`Agent 已查看,等待完成审核`},discovery:{failedSuffix:`;{count} 个项目暂时无法检查`,matches:`其他项目里也有相关内容,可进入对应项目查看{failure}。`,noOtherProjects:`当前没有其他个人项目可继续检查。`,allFailed:`其他个人项目暂时无法检查,请稍后重试。`,checkedPartial:`已检查前 {checked} / {total} 个其他个人项目,也没有发现候选内容{failure}。`,checkedAll:`已检查其他个人项目,也没有发现候选内容{failure}。`},hierarchy:{parentSummary:`上级项目`}},"en-US":{materialTypes:{ProjectSpace:`Project space`,PersonalSpace:`Personal space`,PersonalProject:`Project profile`,ProjectPurpose:`Project purpose`,ProjectScope:`Project scope`,TechnicalSummary:`Technical summary`,ProjectSource:`Source material`,ProjectBoundary:`Project boundary`,ProjectAssessment:`Profile assessment`,AssessmentDimension:`Assessment dimension`,RelatedPersonalProject:`Related project`,ExternalKnowledgeSource:`External knowledge source`,relationship:`Project material relationship`},quadrants:{known_known:`Known known`,known_unknown:`Known unknown`,unknown_known:`Unknown known`,unknown_unknown:`Unknown unknown`,unclassified:`Unclassified`,customDescription:`Custom cognitive stage.`,descriptions:{known_known:`Knowledge or a conclusion that was explicitly expressed.`,known_unknown:`A question explicitly raised but still awaiting an answer.`,unknown_known:`Tacit knowledge distilled from behavior, examples, feedback, or reactions.`,unknown_unknown:`A potential blind spot surfaced during exploration and still awaiting judgment.`,unclassified:`Legacy content without an explicit discovery quadrant.`}},reviewStates:{confirmed:`Confirmed`,agent_confirmed:`Agent confirmed`,ai_reviewed:`Tonborg reviewed`,pending:`Pending`},actors:{user:`User`,agent:`Agent`,authoritative_source:`Authoritative source`,import:`Imported record`,notRecorded:`Not recorded`,currentUser:`Current user`,historicalRecord:`Historical record`,otherAgent:`Other Agent`},profiles:{taste:`Taste`,personality:`Personality`,judgment_preference:`Judgment preference`},revisions:{confirm:`Confirm`,update:`Correct content`,invalidate:`Mark inactive`,link_replacement:`Add replacement link`,restore:`Restore`,scope_change:`Change effective scope`,batch_confirm:`Batch confirm`,fallback:`Revision`},humanChanges:{none:`No human changes`,unseen:`Human edit · Agent has not viewed`,viewed:`Agent viewed · awaiting review`,reviewed:`Agent reviewed`},auditActions:{human_change:`Human edit`,agent_view:`Agent view`,agent_review:`Agent review`,knowledge_used:`Agent material use`,fallback:`Audit record`},items:{unknownEntity:`Unknown entity`,noRelationDescription:`No relationship description`,relationshipType:`Relationship · {type}`,notRecorded:`Not recorded`},confirmation:{sameSource:`Same source record`,sameSession:`Same source session`,sourceSupports:`This content is supported by source “{label}”.`,quadrantReason:`At discovery, this content matched “{quadrant}”: {description}`,sourceRecord:`Source record`,otherSource:`Other source`,session:`Session`,sourceSession:`Source session`,legacyUnclassified:`Legacy item without a discovery source; add one before saving.`,confirmed:`{actor} confirmed this at {time}. The confirmation covers both the content and its quadrant classification.`,agentConfirmed:`Agent confirmed at {time} after use across tasks; still ranks below your confirmation.`,aiReviewed:`Tonborg reviewed the current version; this is not a human confirmation.`,pending:`Proposed by {actor}; awaiting confirmation.`,legacyPending:`Legacy data without a confirmation record; treated as pending.`,legacyBasisMissing:`Legacy data · confirmer and time missing`,agentPolicy:`Agent usage policy · {time}`,proposed:`Proposed by {actor} · {reason}`},relations:{PART_OF:{label:`Belongs to`,description:`A child project belongs to a parent project`},HAS_SOURCE:{label:`Source`,description:`A source registered for the project`},HAS_PURPOSE:{label:`Purpose`,description:`The project purpose or reason for existing`},HAS_SCOPE:{label:`Scope`,description:`The work covered by the project`},GOVERNS:{label:`Constraint`,description:`A project boundary or governing rule`},HAS_TECHNICAL_SUMMARY:{label:`Technical summary`,description:`The registered technical summary`},ASSESSED_AS:{label:`Assessment`,description:`An assessment of project material coverage`},MEASURES:{label:`Measures`,description:`A dimension used to assess project materials`},CONTAINS_PROJECT:{label:`Contains project`,description:`A project contained in this space`},USES_KNOWLEDGE_FROM:{label:`Borrows from`,description:`Borrows knowledge from another project`},USES_EXTERNAL_KNOWLEDGE:{label:`Uses external knowledge`,description:`A read-only external knowledge source bound to the project`},DEPENDS_ON:{label:`Depends on`,description:`Depends on another project or capability`},PROVIDES_TO:{label:`Provides to`,description:`Provides a capability to another project`},SHARES_CAPABILITY_WITH:{label:`Shares capability`,description:`Two projects share a capability`},RELATED_TO:{label:`Related to`,description:`A general relationship between two nodes`},HAS_DECISION:{label:`Decision`,description:`A decision produced by the project`},fallback:{label:`Related to`,description:`A relationship between two nodes`},quoted:`“{label}”`},graph:{hit:`Match`,projectMarked:`Marked as a project`,humanUnseen:`Agent has not viewed this human edit`,humanViewed:`Agent viewed this edit; review is still pending`},discovery:{failedSuffix:`; {count} project could not be checked |; {count} projects could not be checked`,matches:`Related content exists in other projects; open one to see it{failure}.`,noOtherProjects:`There are no other personal projects to check.`,allFailed:`Other personal projects could not be checked. Try again later.`,checkedPartial:`Checked {checked} / {total} other personal projects and found no candidate content{failure}.`,checkedAll:`Checked the other personal projects and found no candidate content{failure}.`},hierarchy:{parentSummary:`Parent project`}}},Xm={"zh-CN":{edit:{quadrants:{known_known:`已知的已知 · 被明确表达的知识或结论`,known_unknown:`已知的未知 · 被明确提出的未解问题`,unknown_known:`未知的已知 · 从行为或反馈提炼的隐性知识`,unknown_unknown:`未知的未知 · 探索中发现的潜在盲点`},confirmationStates:{pending:`待确认 · 尚未完成内容与象限审核`,confirmed:`已确认 · 内容与象限归类均已确认`},inheritance:{local:`仅当前项目 · 不自动借给其他项目`,descendants:`子项目可继承 · 仅沿明确知识关系`,selected:`仅指定项目可继承`},profiles:{none:`不属于协作偏好`},scopes:{global:`个人全局`,project:`指定个人项目`},replacementNone:`没有明确的替代内容`,errors:{reasonRequired:`请说明纠正原因`,nameRequired:`名称不能为空`,factRequired:`关系事实不能为空`,classificationRequired:`请先明确当前分类与确认状态`,existenceRequired:`请说明为什么会有这条知识`,quadrantRequired:`请说明为什么被分到这个象限`,proposerRequired:`请选择提出者`,confirmerRequired:`已确认状态必须记录确认者`,inheritedProjectsRequired:`请选择可以继承这条知识的项目`,statusReasonRequired:`请说明为什么这条知识已经失效`,restoreReasonRequired:`请说明为什么恢复有效`,replacementRequired:`请选择明确的替代内容`,replacementReasonRequired:`请说明补充替代关联的依据`,projectRequired:`请选择目标个人项目`,assignmentReasonRequired:`请说明调整原因`,alreadyAssigned:`这条知识已经属于该项目`,preferenceProjectRequired:`请选择生效的个人项目`,preferenceReasonRequired:`请说明为什么调整生效范围`,saveFailed:`保存失败`},notices:{corrected:`知识已纠正,原始证据仍然保留。`,invalidatedWithReplacement:`知识已标记为失效,并已关联替代内容。`,invalidated:`知识已标记为失效,历史记录已保留。`,restored:`知识已恢复为有效。`,replacementSaved:`替代关联已保存,现在可以从历史记录直接跳转。`,assignmentChanged:`项目归属已调整,来源会话和历史证据没有改变。`,preferenceGlobal:`这条协作偏好现在对所有个人项目生效。`,preferenceProject:`这条协作偏好现在只对所选个人项目生效。`},titleRestore:`查看和恢复知识`,titleCorrect:`纠正知识`,intro:`修改会生成新的修订记录。`,currentContent:`当前内容`,name:`名称`,description:`说明`,fact:`关系事实`,classification:`当前分类`,confirmationStatus:`确认状态`,preferenceDimension:`协作偏好维度`,originQuadrant:`发现时象限:{quadrant}。这是捕获来源标签,后续编辑不会覆盖。`,missingQuadrant:`这条旧内容没有发现来源,保存前请选择。`,basis:`确认依据`,whyExists:`为什么会有这条知识`,whyQuadrant:`为什么被分到这个象限`,proposer:`提出者`,proposerDescription:`提出者说明`,proposerPlaceholder:`可选,例如 Codex`,confirmer:`确认者`,confirmerDescription:`确认者说明`,confirmerPlaceholder:`可选,例如当前用户`,agentConfirmedBoundary:`“Agent 已确认”只来自实际使用证据;这里可保留待确认,或记录你的确认。`,crossProjectInheritance:`跨项目知识继承`,inheritanceScope:`继承范围`,inheritedProjects:`可继承项目`,inheritanceBoundary:`只有沿 PART_OF 或 USES_KNOWLEDGE_FROM 可达时才会继承;RELATED_TO 不扩展检索范围。`,replacement:`替代内容`,optionalReplacement:`失效时的替代内容(可选)`,historicalReplacement:`这条历史记录被哪条内容取代`,activeReplacement:`选择当前有效的内容`,replacementBoundary:`选择后才会建立替代关联。`,correctionReason:`纠正原因`,invalidate:`标记为失效`,restore:`恢复为有效`,saveReplacement:`保存替代关联`,savingConfirmed:`正在保存并确认知识…`,savingPending:`正在保存待确认知识…`,invalidating:`正在标记知识失效…`,restoring:`正在恢复知识…`,savingReplacement:`正在保存替代关联…`,changingOwnership:`正在调整知识归属…`,savingScope:`正在保存生效范围…`,saveConfirmed:`保存并确认`,savePending:`保存为待确认`,projectOwnership:`项目归属`,ownershipCopy:`只调整项目归属,来源和证据不变。`,targetProject:`目标个人项目`,assignmentReason:`调整原因`,adjustOwnership:`调整归属`,preferenceScope:`偏好生效范围`,preferenceScopeCopy:`个人全局对所有项目生效;项目范围只对所选项目生效。`,effectiveScope:`生效范围`,personalProject:`个人项目`,saveScope:`保存生效范围`},confirm:{preferenceSubject:`这条偏好`,knowledgeSubject:`这条知识`,sourceSupport:`该内容由已保留的来源记录支持。`,quadrantReason:`该内容在发现时符合“{quadrant}”:{description}`,confirmationReason:`已核对内容与发现时象限,确认无误。`,errors:{quadrantRequired:`请先补充发现时象限,再确认这条知识`,existenceRequired:`请说明为什么会有这条知识`,quadrantReasonRequired:`请说明为什么属于当前象限`,confirmationReasonRequired:`请填写确认说明`,acknowledgmentRequired:`请先确认已经核对内容与发现时象限`,failed:`确认失败`},confirmed:`{subject}已确认,并记录了确认人和确认时间。`,title:`确认{subject}`,intro:`确认会记录你和确认时间。`,preference:`协作偏好`,knowledge:`知识内容`,quadrant:`发现时象限 · {quadrant}`,whyExists:`为什么会有这条知识`,whyQuadrant:`为什么属于当前象限`,confirmationCopy:`确认说明`,acknowledgment:`我已核对内容和发现来源。`,confirming:`正在确认{subject}…`,confirmSubject:`确认{subject}`},batch:{sameSource:`同一来源`,sameSession:`同一会话`,groupMeta:`{kind} · {count} 条`,errors:{groupRequired:`请选择一个来源或会话`,itemsRequired:`批量确认至少需要选择两条知识`,reasonRequired:`请说明本次批量确认的依据`,sourceNameRequired:`请填写权威来源名称`,acknowledgmentRequired:`请先确认已经核对内容与发现时象限`,failed:`批量确认失败`},confirmed:`已确认 {count} 条。`,title:`按来源或会话批量确认`,intro:`一次确认所选的全部条目,各自保留修订记录。`,range:`确认范围`,confirmer:`确认者`,confirmerDescription:`确认者说明`,userPlaceholder:`可选,例如当前用户`,sourcePlaceholder:`必填,例如已批准的 PRD`,basis:`批量确认依据`,basisPlaceholder:`例如:已按本次会话逐条核对内容及其发现时象限`,agentBoundary:`Agent 不能代替你确认;之后再修改会回到待确认。`,itemReview:`逐条核对`,selected:`已选择 {selected} / {total} 条`,selectAll:`全部选择`,clearAll:`全部取消`,limit:`单次最多 200 条。`,acknowledgment:`我已核对所选内容和发现来源。`,confirming:`正在确认所选知识…`,confirmItems:`确认 {count} 条知识`}},"en-US":{edit:{quadrants:{known_known:`Known known · explicitly expressed knowledge or conclusion`,known_unknown:`Known unknown · explicitly raised unresolved question`,unknown_known:`Unknown known · tacit insight from behavior or feedback`,unknown_unknown:`Unknown unknown · potential blind spot surfaced through exploration`},confirmationStates:{pending:`Pending · content and quadrant review not complete`,confirmed:`Confirmed · content and quadrant classification both reviewed`},inheritance:{local:`Current project only · not shared automatically`,descendants:`Child projects may inherit · only through explicit knowledge relationships`,selected:`Selected projects only`},profiles:{none:`Not a collaboration preference`},scopes:{global:`Personal global`,project:`Selected personal project`},replacementNone:`No explicit replacement`,errors:{reasonRequired:`Explain why this correction is needed`,nameRequired:`Name is required`,factRequired:`Relationship fact is required`,classificationRequired:`Set the current classification and confirmation status first`,existenceRequired:`Explain why this knowledge exists`,quadrantRequired:`Explain why this knowledge belongs to this quadrant`,proposerRequired:`Choose the proposer`,confirmerRequired:`Confirmed status requires a confirmer`,inheritedProjectsRequired:`Choose the projects that may inherit this knowledge`,statusReasonRequired:`Explain why this knowledge is no longer active`,restoreReasonRequired:`Explain why this knowledge should be restored`,replacementRequired:`Choose an explicit replacement`,replacementReasonRequired:`Explain why this replacement link is being added`,projectRequired:`Choose a target personal project`,assignmentReasonRequired:`Explain why ownership is changing`,alreadyAssigned:`This knowledge already belongs to that project`,preferenceProjectRequired:`Choose the personal project where this preference applies`,preferenceReasonRequired:`Explain why the effective scope is changing`,saveFailed:`Save failed`},notices:{corrected:`Knowledge corrected; original evidence retained.`,invalidatedWithReplacement:`Knowledge marked inactive and linked to its replacement.`,invalidated:`Knowledge marked inactive; history retained.`,restored:`Knowledge restored as active.`,replacementSaved:`Replacement link saved; the historical record now links to it.`,assignmentChanged:`Project ownership changed; source sessions and historical evidence are unchanged.`,preferenceGlobal:`This collaboration preference now applies to all personal projects.`,preferenceProject:`This collaboration preference now applies only to the selected personal project.`},titleRestore:`View and restore knowledge`,titleCorrect:`Correct knowledge`,intro:`Changes create a new revision.`,currentContent:`Current content`,name:`Name`,description:`Description`,fact:`Relationship fact`,classification:`Current classification`,confirmationStatus:`Confirmation status`,preferenceDimension:`Collaboration preference dimension`,originQuadrant:`Discovery quadrant: {quadrant}. This source label is not overwritten by later edits.`,missingQuadrant:`This legacy item has no discovery source. Choose one before saving.`,basis:`Confirmation basis`,whyExists:`Why this knowledge exists`,whyQuadrant:`Why it belongs to this quadrant`,proposer:`Proposer`,proposerDescription:`Proposer description`,proposerPlaceholder:`Optional, for example Codex`,confirmer:`Confirmer`,confirmerDescription:`Confirmer description`,confirmerPlaceholder:`Optional, for example current user`,agentConfirmedBoundary:`“Agent confirmed” only comes from actual use. Here you can keep it pending or confirm it yourself.`,crossProjectInheritance:`Cross-project knowledge inheritance`,inheritanceScope:`Inheritance scope`,inheritedProjects:`Projects allowed to inherit`,inheritanceBoundary:`Inheritance follows only PART_OF or USES_KNOWLEDGE_FROM. RELATED_TO does not expand retrieval.`,replacement:`Replacement content`,optionalReplacement:`Replacement when invalidated (optional)`,historicalReplacement:`Content that replaced this historical record`,activeReplacement:`Choose current active content`,replacementBoundary:`A replacement link is created only when you pick one.`,correctionReason:`Correction reason`,invalidate:`Mark inactive`,restore:`Restore as active`,saveReplacement:`Save replacement link`,savingConfirmed:`Saving and confirming knowledge…`,savingPending:`Saving knowledge as pending…`,invalidating:`Marking knowledge inactive…`,restoring:`Restoring knowledge…`,savingReplacement:`Saving replacement link…`,changingOwnership:`Changing knowledge ownership…`,savingScope:`Saving effective scope…`,saveConfirmed:`Save and confirm`,savePending:`Save as pending`,projectOwnership:`Project ownership`,ownershipCopy:`Only the project changes; sources and evidence stay.`,targetProject:`Target personal project`,assignmentReason:`Reason for change`,adjustOwnership:`Change ownership`,preferenceScope:`Preference effective scope`,preferenceScopeCopy:`Personal-global applies everywhere; project scope applies to the selected project only.`,effectiveScope:`Effective scope`,personalProject:`Personal project`,saveScope:`Save effective scope`},confirm:{preferenceSubject:`this preference`,knowledgeSubject:`this knowledge`,sourceSupport:`This content is supported by a retained source record.`,quadrantReason:`At discovery, this content matched “{quadrant}”: {description}`,confirmationReason:`I reviewed the content and discovery quadrant and confirm they are accurate.`,errors:{quadrantRequired:`Add a discovery quadrant before confirming this knowledge`,existenceRequired:`Explain why this knowledge exists`,quadrantReasonRequired:`Explain why it belongs to the current quadrant`,confirmationReasonRequired:`Add a confirmation note`,acknowledgmentRequired:`Confirm that you reviewed both the content and discovery quadrant`,failed:`Confirmation failed`},confirmed:`{subject} is confirmed, with confirmer and confirmation time recorded.`,title:`Confirm {subject}`,intro:`Confirming records you and the time.`,preference:`Collaboration preference`,knowledge:`Knowledge content`,quadrant:`Discovery quadrant · {quadrant}`,whyExists:`Why this knowledge exists`,whyQuadrant:`Why it belongs to the current quadrant`,confirmationCopy:`Confirmation note`,acknowledgment:`I reviewed the content and discovery source.`,confirming:`Confirming {subject}…`,confirmSubject:`Confirm {subject}`},batch:{sameSource:`Same source`,sameSession:`Same session`,groupMeta:`{kind} · {count} item | {kind} · {count} items`,errors:{groupRequired:`Choose a source or session`,itemsRequired:`Batch confirmation requires at least two knowledge items`,reasonRequired:`Explain the basis for this batch confirmation`,sourceNameRequired:`Enter the authoritative source name`,acknowledgmentRequired:`Confirm that you reviewed the content and discovery quadrants`,failed:`Batch confirmation failed`},confirmed:`Confirmed {count}.| Confirmed {count} knowledge items; each retains its basis and this confirmation time.`,title:`Batch confirm by source or session`,intro:`Confirms every selected item; each keeps its own revision.`,range:`Confirmation range`,confirmer:`Confirmer`,confirmerDescription:`Confirmer description`,userPlaceholder:`Optional, for example current user`,sourcePlaceholder:`Required, for example approved PRD`,basis:`Batch confirmation basis`,basisPlaceholder:`For example: reviewed the content and discovery quadrant of every selected item in this session`,agentBoundary:`An Agent cannot confirm for you; later edits return items to pending.`,itemReview:`Review each item`,selected:`{selected} / {total} selected`,selectAll:`Select all`,clearAll:`Clear all`,limit:`Up to 200 at a time.`,acknowledgment:`I reviewed the selected content and discovery sources.`,confirming:`Confirming selected knowledge…`,confirmItems:`Confirm {count} item | Confirm {count} items`}}},Zm={"zh-CN":{graph:{aria:`知识关系图`,legend:`关系图例`,legendCopy:`图标与中文含义`},hierarchy:{aria:`当前项目的上级项目`,level:`项目层级`,parents:`上级项目`,belongsTo:`{name} 属于以下项目`,listAria:`上级项目列表`,openParent:`打开上级项目“{name}”`,belongsToParent:`{name} 属于此项目`,currentProject:`当前项目`},workspace:{filters:{allTypes:`全部类型`,allQuadrants:`全部象限`,allKnowledge:`全部知识`,preferences:`协作偏好`,projectKnowledge:`项目与通用知识`,allHumanStates:`全部人工状态`,allHumanChanged:`人工改过(全部)`,agentUnseen:`Agent 未查看`,viewedPending:`已查看待审核`,agentReviewed:`Agent 已审核`},status:{all:`全部状态`,graphUnread:`尚未读取图谱`},counts:{graph:`{nodes} 个节点 · {edges} 条当前关系`,materials:`{count} 条项目资料`,visibleMaterials:`显示 {visible} / {total} 条项目资料`,knowledge:`{status} {count} 条知识内容`,visibleKnowledge:`{status}:显示 {visible} / {total} 条知识内容`},spaces:{allPersonalProjects:`全部个人项目 · {name}`,personalProject:`个人项目 · {name}`,publicProject:`公共项目 · {name}`},discovery:{checking:`当前范围没有命中,正在检查其他个人项目…`,retry:`没有找到,换个关键词试试。`,noHitKicker:`当前范围未命中`,noResults:`没有检索到“{query}”`,candidateCount:`{count} 条候选内容`,enterProject:`进入项目搜索 →`},search:{searching:`正在搜索当前范围的知识…`,results:`找到 {entities} 个实体 · {relationships} 条关系 · 图中高亮 {nodes} 个节点`,noResults:`当前范围未检索到匹配结果`,failed:`搜索失败`,aria:`知识搜索`,materialsPlaceholder:`搜索项目资料`,contentPlaceholder:`搜索内容、来源或关系`,knowledgeAria:`搜索知识内容`},errors:{projectUnknown:`无法确定这条项目资料所属的个人项目`},notices:{materialUpdated:`“{name}”的项目资料已更新。`,projectCreated:`个人项目“{name}”已创建。`,linked:`这条知识已加入“{name}”,主要归属保持不变。`,alreadyLinked:`“{name}”已经在使用这条知识。`,duplicateReused:`“{name}”已有相同内容,已复用现有节点。`,conflictPending:`已保留项目操作;冲突内容暂不在“{name}”生效。`,conflictResolved:`冲突已按当前选择处理,并保留处理记录。`,scopeUpdated:`项目知识范围已更新。`},source:{projectPreference:`项目偏好`,personalGlobal:`个人全局`,noSources:`无来源记录`,primaryProject:`主要 {name}`},view:{modeAria:`知识查看方式`,directory:`内容目录`,graph:`关系图谱`,graphSpace:`图谱空间`,borrowProjects:`借鉴其他项目`,selectedContexts:`已选 {count}`,noneSelected:`未选择`,currentContext:`本次上下文`,contextCopy:`只加入当前查看和查询,不改变知识归属。`,currentScopeOnly:`仅加入当前范围`,contentType:`内容类型`,discoveryQuadrant:`发现时象限`,classification:`知识归类`,humanChangeStatus:`人工变更状态`,publishProject:`发布当前项目`,graphControls:`图谱视图控制`,zoomOut:`缩小图谱`,zoomIn:`放大图谱`,fit:`适应`,reset:`重置`,materialDirectory:`项目资料目录`,knowledgeDirectory:`知识内容目录`,directoryTypeAria:`目录内容类型`,knowledgeContent:`知识内容`,projectMaterials:`项目资料`,knowledgeStatusAria:`知识内容状态`,columns:{content:`内容`,quadrant:`发现时象限`,review:`确认状态`,type:`类型`,source:`来源`,updated:`更新时间`,validity:`有效性`},active:`有效`,noFilteredKnowledge:`当前筛选条件下没有知识内容`,noKnowledge:`这个项目还没有可确认或翻转状态的知识内容`,viewDetails:`查看详情 →`,noFilteredMaterials:`当前搜索条件下没有项目资料`,noMaterials:`这个项目还没有项目资料`,noGraph:`这个空间还没有可展示的关系图`,graphHint:`滚轮缩放 · 拖动画布 · 点击查看详情 · 悬停显示节点短 ID`}},organizer:{quadrants:{known_unknown:{short:`明确问题`,coordinate:`已意识 · 未掌握`},known_known:{short:`明确表达`,coordinate:`已意识 · 已掌握`},unknown_unknown:{short:`盲点探索`,coordinate:`未意识 · 未掌握`},unknown_known:{short:`隐性提炼`,coordinate:`未意识 · 已掌握`}},review:{pendingHint:`尚无有效的确认人和确认时间`,agentConfirmedHint:`实际使用达到策略阈值,权重低于人工确认`,confirmedHint:`内容与象限归类均已确认`},filterKnowledge:`筛选知识`,searchPlaceholder:`搜索内容、类型或来源`,quadrantFilterAria:`发现来源筛选`,discoverySource:`发现来源`,reviewFilterAria:`确认状态筛选`,reviewStatus:`确认状态`,showing:`显示 {visible} / {total} 条`,batchConfirm:`批量确认 · {count} 组`,loadingMore:`正在载入更多知识…`,paginationError:`知识分页未返回有效的下一页位置。`,directoryAria:`知识整理目录`,confirmationBasis:`确认依据`,updated:`更新时间`,noFilteredContent:`当前筛选条件下没有内容`,noContent:`个人空间还没有可整理的结构化知识`},inspector:{humanReview:{unseen:`这次人工修改还没有被 Agent 调用查看,提醒会持续保留。`,viewed:`Agent 已查看,还没完成审核。`,reviewed:`Agent 已审核当前修改。`},inheritance:{descendants:`允许子项目继承`,selected:`仅指定项目({count})`,local:`仅当前项目`},ids:{projection:`资料投影 ID`,node:`节点 ID`,relationship:`关系 ID`},ownership:`内容归属`,projectionCopy:`这是项目资料在图中的投影,修改请编辑项目资料。`,currentJudgment:`当前判定`,humanReviewTitle:`人工变更审核`,humanVersion:`人工变更版本 {version}`,replacement:`替代关系`,replacedBy:`已被以下内容取代`,noReplacement:`没有可跳转的替代内容`,viewReplacement:`查看替代内容 →`,replacementOutOfScope:`已记录替代对象,但它不在当前查看范围内。`,missingReplacement:`这条历史只记录了失效原因,没有替代项。`,fields:{type:`类型`,originQuadrant:`发现时象限`,currentQuadrant:`当前分类`,quadrantExplanation:`象限解释`,confirmationStatus:`确认状态`,confidence:`置信分`,utility:`效用分`,materialUse:`有效使用`,recentUse:`最近使用`,inheritance:`知识继承`,preference:`协作偏好`,effectiveScope:`生效范围`,source:`来源`,target:`目标`,status:`状态`},useCount:`{uses} 次 / {tasks} 个任务`,selectedProject:`指定项目 · {project}`,personalGlobal:`个人全局`,historical:`历史 · 已失效`,basisTitle:`确认依据`,basis:{existence:`为什么会有`,quadrant:`为什么属于该象限`,proposer:`提出者`,confirmer:`确认者`,time:`确认时间`,agentPolicy:`Agent 策略`},legacyBasis:`旧数据缺少确认依据,已归入待确认。`,contentDetails:`内容详情`,technicalDetails:`技术信息`,formation:`形成过程`,confirmPreference:`确认这条偏好`,confirmKnowledge:`确认这条知识`,editMaterials:`编辑项目资料`,locateDirectory:`在内容目录中定位`,locateGraph:`在关系图中定位`,enterProject:`进入这个项目`,publish:`发布 / 同步到公共`,createProject:`基于此创建项目`,correctPreference:`纠正这条偏好`,correctOrAssign:`纠正或调整归属`,relations:`关联关系`,relationshipFallback:`关系`,evidence:`证据与来源`,sourceRecord:`来源记录`,source:`来源`,openConversation:`打开原会话`,openConversationWith:`使用 {app} 打开`,copiedSessionId:`已复制会话 ID`,copySessionId:`复制会话 ID`,revisions:`修订历史`,noRevisionCopy:`未填写说明`,audit:`人工与 Agent 记录`,version:`版本 {version}`,conflictNone:`无冲突`,conflictFound:`有冲突`,classificationReasonable:`合理`,classificationAdjust:`需调整`,conflictClassification:`冲突:{conflict} · 分类:{classification}`,placeholderTitle:`选择一个节点或关系`,placeholderCopy:`点击后查看完整说明、来源证据和关联关系。`}},"en-US":{graph:{aria:`Knowledge relationship graph`,legend:`Relationship legend`,legendCopy:`Icons and meanings`},hierarchy:{aria:`Parent projects of the current project`,level:`Project hierarchy`,parents:`Parent projects`,belongsTo:`{name} belongs to the following projects`,listAria:`Parent project list`,openParent:`Open parent project “{name}”`,belongsToParent:`{name} belongs to this project`,currentProject:`Current project`},workspace:{filters:{allTypes:`All types`,allQuadrants:`All quadrants`,allKnowledge:`All knowledge`,preferences:`Collaboration preferences`,projectKnowledge:`Project & general knowledge`,allHumanStates:`All human-change states`,allHumanChanged:`All human edits`,agentUnseen:`Agent has not viewed`,viewedPending:`Viewed, awaiting review`,agentReviewed:`Agent reviewed`},status:{all:`All states`,graphUnread:`Graph not loaded`},counts:{graph:`{nodes} nodes · {edges} active relationships`,materials:`{count} project material | {count} project materials`,visibleMaterials:`Showing {visible} / {total} project materials`,knowledge:`{status}: {count} knowledge item | {status}: {count} knowledge items`,visibleKnowledge:`{status}: showing {visible} / {total} knowledge items`},spaces:{allPersonalProjects:`All personal projects · {name}`,personalProject:`Personal project · {name}`,publicProject:`Public project · {name}`},discovery:{checking:`No match in the current scope. Checking other personal projects…`,retry:`Nothing found. Try other keywords.`,noHitKicker:`No match in current scope`,noResults:`No results for “{query}”`,candidateCount:`{count} candidate item | {count} candidate items`,enterProject:`Search in project →`},search:{searching:`Searching knowledge in the current scope…`,results:`Found {entities} entities · {relationships} relationships · highlighted {nodes} nodes`,noResults:`No matching results in the current scope`,failed:`Search failed`,aria:`Knowledge search`,materialsPlaceholder:`Search project materials`,contentPlaceholder:`Search content, sources, or relationships`,knowledgeAria:`Search knowledge content`},errors:{projectUnknown:`Could not determine which personal project owns this material`},notices:{materialUpdated:`Project materials for “{name}” were updated.`,projectCreated:`Personal project “{name}” was created.`,linked:`This knowledge was added to “{name}”; its primary ownership is unchanged.`,alreadyLinked:`“{name}” already uses this knowledge.`,duplicateReused:`Matching content already exists in “{name}”; the existing node was reused.`,conflictPending:`The project action was kept; conflicting content is not active in “{name}”.`,conflictResolved:`The conflict was handled using the current choice, with an audit record retained.`,scopeUpdated:`Project knowledge scope updated.`},source:{projectPreference:`Project preference`,personalGlobal:`Personal global`,noSources:`No source records`,primaryProject:`Primary {name}`},view:{modeAria:`Knowledge view mode`,directory:`Content directory`,graph:`Relationship graph`,graphSpace:`Graph space`,borrowProjects:`Borrow from other projects`,selectedContexts:`{count} selected`,noneSelected:`None selected`,currentContext:`Current context`,contextCopy:`Adds projects only to this view and query; knowledge ownership is unchanged.`,currentScopeOnly:`Current scope only`,contentType:`Content type`,discoveryQuadrant:`Discovery quadrant`,classification:`Knowledge classification`,humanChangeStatus:`Human-change status`,publishProject:`Publish current project`,graphControls:`Graph view controls`,zoomOut:`Zoom out`,zoomIn:`Zoom in`,fit:`Fit`,reset:`Reset`,materialDirectory:`Project material directory`,knowledgeDirectory:`Knowledge content directory`,directoryTypeAria:`Directory content type`,knowledgeContent:`Knowledge content`,projectMaterials:`Project materials`,knowledgeStatusAria:`Knowledge content status`,columns:{content:`Content`,quadrant:`Discovery quadrant`,review:`Confirmation status`,type:`Type`,source:`Source`,updated:`Updated`,validity:`Validity`},active:`Active`,noFilteredKnowledge:`No knowledge content matches the current filters`,noKnowledge:`This project has no knowledge content available for confirmation or status changes`,viewDetails:`View details →`,noFilteredMaterials:`No project materials match the current search`,noMaterials:`This project has no project materials`,noGraph:`This space has no relationships to display`,graphHint:`Scroll to zoom · drag the canvas · click for details · hover to show the short node ID`}},organizer:{quadrants:{known_unknown:{short:`Explicit question`,coordinate:`Aware · not mastered`},known_known:{short:`Explicit statement`,coordinate:`Aware · mastered`},unknown_unknown:{short:`Blind-spot exploration`,coordinate:`Unaware · not mastered`},unknown_known:{short:`Tacit insight`,coordinate:`Unaware · mastered`}},review:{pendingHint:`No valid confirmer and confirmation time`,agentConfirmedHint:`Material use reached the policy threshold; lower authority than human confirmation`,confirmedHint:`Both content and quadrant classification are confirmed`},filterKnowledge:`Filter knowledge`,searchPlaceholder:`Search content, type, or source`,quadrantFilterAria:`Discovery source filter`,discoverySource:`Discovery source`,reviewFilterAria:`Confirmation status filter`,reviewStatus:`Confirmation status`,showing:`Showing {visible} / {total}`,batchConfirm:`Batch confirm · {count} group | Batch confirm · {count} groups`,loadingMore:`Loading more knowledge…`,paginationError:`Knowledge pagination did not return a valid next offset.`,directoryAria:`Knowledge organizer directory`,confirmationBasis:`Confirmation basis`,updated:`Updated`,noFilteredContent:`No content matches the current filters`,noContent:`The personal space has no structured knowledge to organize`},inspector:{humanReview:{unseen:`An Agent has not viewed this human edit; the reminder remains active.`,viewed:`Viewed by an Agent; review not finished.`,reviewed:`Reviewed by an Agent.`},inheritance:{descendants:`Child projects may inherit`,selected:`Selected projects only ({count})`,local:`Current project only`},ids:{projection:`Material projection ID`,node:`Node ID`,relationship:`Relationship ID`},ownership:`Content ownership`,projectionCopy:`Projected from project materials; edit the materials to change it.`,currentJudgment:`Current judgment`,humanReviewTitle:`Human-change review`,humanVersion:`Human-change version {version}`,replacement:`Replacement relationship`,replacedBy:`Replaced by the following content`,noReplacement:`No linked replacement content`,viewReplacement:`View replacement →`,replacementOutOfScope:`A replacement is recorded but outside the current view scope.`,missingReplacement:`Only an invalidation reason was recorded; no replacement.`,fields:{type:`Type`,originQuadrant:`Discovery quadrant`,currentQuadrant:`Current classification`,quadrantExplanation:`Quadrant explanation`,confirmationStatus:`Confirmation status`,confidence:`Confidence score`,utility:`Utility score`,materialUse:`Material use`,recentUse:`Most recent use`,inheritance:`Knowledge inheritance`,preference:`Collaboration preference`,effectiveScope:`Effective scope`,source:`Source`,target:`Target`,status:`Status`},useCount:`{uses} uses / {tasks} tasks`,selectedProject:`Selected project · {project}`,personalGlobal:`Personal global`,historical:`Historical · inactive`,basisTitle:`Confirmation basis`,basis:{existence:`Why it exists`,quadrant:`Why it belongs to this quadrant`,proposer:`Proposed by`,confirmer:`Confirmed by`,time:`Confirmation time`,agentPolicy:`Agent policy`},legacyBasis:`Legacy data without a confirmation basis; treated as pending.`,contentDetails:`Content details`,technicalDetails:`Technical details`,formation:`How it formed`,confirmPreference:`Confirm this preference`,confirmKnowledge:`Confirm this knowledge`,editMaterials:`Edit project materials`,locateDirectory:`Locate in content directory`,locateGraph:`Locate in relationship graph`,enterProject:`Open this project`,publish:`Publish / sync publicly`,createProject:`Create project from this`,correctPreference:`Correct this preference`,correctOrAssign:`Correct or change ownership`,relations:`Relationships`,relationshipFallback:`Relationship`,evidence:`Evidence & sources`,sourceRecord:`Source record`,source:`Source`,openConversation:`Open source conversation`,openConversationWith:`Open with {app}`,copiedSessionId:`Session ID copied`,copySessionId:`Copy session ID`,revisions:`Revision history`,noRevisionCopy:`No description provided`,audit:`Human & Agent records`,version:`Version {version}`,conflictNone:`No conflict`,conflictFound:`Conflict`,classificationReasonable:`Reasonable`,classificationAdjust:`Needs adjustment`,conflictClassification:`Conflict: {conflict} · classification: {classification}`,placeholderTitle:`Select a node or relationship`,placeholderCopy:`Select an item to view its full description, source evidence, and relationships.`}}},Qm={"zh-CN":{aria:`FULI 说明`,labelsAria:`知识标签说明`,philosophy:{title:`对话会结束,方法应该留下`,intro:`FULI 帮你在与 Agent 的协作中,沉淀自己的工作流、判断方式和品味。`,support:`不保存每一句话,只留下稳定、能再次用上的经验。`,sectionTitle:`方法如何留下`,capture:{index:`01`,title:`从真实协作中沉淀`,description:`偏好、步骤、标准和边界来自真实任务;Agent 提炼,你来确认。`},project:{index:`02`,title:`让个人项目逐渐成形`,description:`项目可以从对话、文档或仓库开始;归属由你决定,随时可以调整。`},review:{index:`03`,title:`周期回顾,而不是无限堆积`,description:`定期回顾:确认内容、处理冲突、清理过期信息,Agent 可以帮你整理。`},reuse:{index:`04`,title:`跨 Agent 复用自己的方法`,description:`重复的流程不必反复交代:可以是全局工作流,也可以只属于某个项目。`},boundariesTitle:`始终保留的边界`,local:{title:`本机优先`,description:`个人项目与对话默认只在本机,明确提交才会公开。`},authority:{title:`用户决定`,description:`Agent 可以建议和整理,最终取舍由你决定。`},scope:{title:`按范围复用`,description:`通用方法跨项目复用;项目知识不会因为相似就进入别的项目。`}},labelsIntro:{title:`标签体系`,description:`一条知识有三个维度:偏好类型、发现来源、确认状态。`},credits:{title:`开源致谢`,description:`FULI 建立在这些开源项目之上。`,sourceNote:`项目名称、链接和许可证归各自社区与权利人所有。`,roles:{vue:`界面框架`,vite:`构建工具`,pinia:`状态管理`,d3:`图谱可视化`,vitest:`前端测试`,hono:`HTTP 运行层`,neo4j:`图数据库`,zod:`结构校验`,fastapi:`Provider 服务`,graphiti:`时序知识图谱`,mcp:`Agent 工具协议`},finale:`让方法与项目,在每一次协作中继续生长。`,website:`访问 FULI 官网`},dimensions:{profile:{title:`偏好类型`,question:`这是什么偏好`,timing:`写入偏好时归类`},origin:{title:`发现来源`,question:`最初怎么发现`,timing:`首次写入后保留`},confirmation:{title:`确认状态`,question:`目前由谁确认`,timing:`随确认与使用证据变化`}},sections:{profile:{index:`01`,title:`偏好类型`,meta:`只用于个人偏好`},origin:{index:`02`,title:`发现来源`,meta:`所有知识都记录`},confirmation:{index:`03`,title:`确认状态`,meta:`所有知识都记录`}},profiles:{taste:{label:`品味`,short:`偏爱的结果或风格`,description:`你明确喜欢或排斥的方向:界面、文案、产品、架构。`},personality:{label:`个性`,short:`稳定的自我描述`,description:`你明确说过的长期协作特点;Agent 推断的先待确认。`},judgment:{label:`判断偏好`,short:`面对取舍时怎么决定`,description:`取舍时的条件、优先级、风险倾向和边界。`}},quadrants:{awareness:`意识程度`,aware:`已意识`,unaware:`未意识`,mastery:`掌握程度`,mastered:`已掌握`,unmastered:`未掌握`,knownUnknown:{label:`明确问题`,coordinate:`已意识 · 未掌握`,description:`已经提出,但仍没有答案的问题或取舍。`},knownKnown:{label:`明确表达`,coordinate:`已意识 · 已掌握`,description:`由你、文档或其他来源直接给出的知识或要求。`},unknownUnknown:{label:`盲点探索`,coordinate:`未意识 · 未掌握`,description:`在开放探索中才暴露出来、仍需判断的潜在盲点。`},unknownKnown:{label:`隐性提炼`,coordinate:`未意识 · 已掌握`,description:`从行为、示例、原型或反馈中提炼出的隐性知识。`},immutable:`发现来源不是可信度。后续确认不会改变它。`,unclassified:`“待分类”只表示旧内容还没补充发现来源。`},statuses:{entryCondition:`进入条件`,descriptionHeader:`说明`,pending:{label:`待确认`,description:`Agent 提出或推断的内容,或缺少确认记录的旧数据。`,rule:`写入时没有有效的用户或权威来源确认`},agentConfirmed:{label:`Agent 已确认`,description:`在多个任务中实际用上了;权重仍低于你的确认。`,rule:`至少 5 次有效使用、覆盖 3 个任务,并且没有未解决冲突`},confirmed:{label:`已确认`,description:`由用户或权威来源明确确认,具有最高确认权重。`,rule:`记录确认人、确认时间和确认依据`},usageBoundary:`检索、查看、进入上下文和自动注入都不算有效使用。`,resetBoundary:`内容或分类变化后回到待确认,除非同时由你重新确认。`},example:{title:`三个维度可以同时存在`,item:`FULI 保留主标题并减少解释性文案`,profile:`品味`,origin:`明确表达`,status:`已确认`,description:`这是你直接表达并确认的界面偏好。三个标签各说一件事。`},allFilter:`“全部”只是筛选条件,不是一种状态或类型。`},"en-US":{aria:`About FULI`,labelsAria:`Knowledge label guide`,philosophy:{title:`Conversations end. Methods should remain.`,intro:`FULI helps you keep your workflows, judgment, and taste as you work with Agents.`,support:`Not every line of a conversation — only stable experience worth reusing.`,sectionTitle:`How methods remain`,capture:{index:`01`,title:`Learn from real collaboration`,description:`Preferences, steps, standards, and boundaries come from real tasks. Agents extract; you confirm.`},project:{index:`02`,title:`Let personal projects take shape`,description:`A project can start from a chat, document, or repository. You choose where knowledge belongs and can move it any time.`},review:{index:`03`,title:`Review periodically, not endlessly accumulate`,description:`Review periodically: confirm, resolve conflicts, and retire stale items. Agents can help.`},reuse:{index:`04`,title:`Reuse your method across Agents`,description:`Stop re-explaining recurring processes: keep them as global workflows or within one project.`},boundariesTitle:`Boundaries that remain`,local:{title:`Local first`,description:`Personal projects and conversations stay on this device unless you explicitly submit them.`},authority:{title:`User decides`,description:`Agents suggest and organize; you make the final call.`},scope:{title:`Reuse by scope`,description:`General methods work across projects; project knowledge never leaks into another just because it looks similar.`}},labelsIntro:{title:`Label system`,description:`Each item has three dimensions: preference type, discovery source, and confirmation status.`},credits:{title:`Open-source credits`,description:`FULI is built on these open-source projects.`,sourceNote:`Project names, links, and licenses belong to their respective communities and rights holders.`,roles:{vue:`Interface framework`,vite:`Build tooling`,pinia:`State management`,d3:`Graph visualization`,vitest:`Frontend testing`,hono:`HTTP runtime`,neo4j:`Graph database`,zod:`Schema validation`,fastapi:`Provider service`,graphiti:`Temporal knowledge graph`,mcp:`Agent tool protocol`},finale:`Let methods and projects keep growing through every collaboration.`,website:`Visit the FULI website`},dimensions:{profile:{title:`Preference type`,question:`What kind of preference is it?`,timing:`Assigned when a preference is captured`},origin:{title:`Discovery source`,question:`How was it first discovered?`,timing:`Preserved after the first capture`},confirmation:{title:`Confirmation status`,question:`Who or what confirms it now?`,timing:`Changes with confirmation and usage evidence`}},sections:{profile:{index:`01`,title:`Preference type`,meta:`Personal preferences only`},origin:{index:`02`,title:`Discovery source`,meta:`Recorded for all knowledge`},confirmation:{index:`03`,title:`Confirmation status`,meta:`Recorded for all knowledge`}},profiles:{taste:{label:`Taste`,short:`Preferred outcomes or styles`,description:`What you explicitly like or reject in UI, writing, product, or architecture.`},personality:{label:`Personality`,short:`Stable self-description`,description:`Collaboration traits you stated; Agent inferences start as pending.`},judgment:{label:`Judgment preference`,short:`How trade-offs are decided`,description:`Decision conditions, priorities, risk posture, and boundaries.`}},quadrants:{awareness:`Awareness`,aware:`Aware`,unaware:`Unaware`,mastery:`Mastery`,mastered:`Mastered`,unmastered:`Not mastered`,knownUnknown:{label:`Explicit question`,coordinate:`Aware · not mastered`,description:`A question or trade-off that has been raised but is still unresolved.`},knownKnown:{label:`Explicit statement`,coordinate:`Aware · mastered`,description:`Stated directly by you, a document, or another source.`},unknownUnknown:{label:`Blind-spot exploration`,coordinate:`Unaware · not mastered`,description:`A potential blind spot surfaced through open exploration and still awaiting judgment.`},unknownKnown:{label:`Tacit extraction`,coordinate:`Unaware · mastered`,description:`Tacit knowledge extracted from behavior, examples, prototypes, or feedback.`},immutable:`Discovery source is not a truth score. Later confirmation does not change it.`,unclassified:`“Unclassified” only marks legacy content without a discovery source.`},statuses:{entryCondition:`Entry condition`,descriptionHeader:`Description`,pending:{label:`Pending`,description:`Proposed or inferred by an Agent, or legacy data without a confirmation record.`,rule:`No valid user or authoritative-source confirmation at capture time`},agentConfirmed:{label:`Agent confirmed`,description:`Actually used across several tasks; still ranks below your confirmation.`,rule:`At least 5 qualified uses across 3 tasks, with no unresolved conflict`},confirmed:{label:`Confirmed`,description:`Explicitly confirmed by the user or an authoritative source, with the highest confirmation weight.`,rule:`A confirmer, confirmation time, and confirmation basis are recorded`},usageBoundary:`Retrieval, viewing, context inclusion, and automatic injection do not count as qualified use.`,resetBoundary:`Edits return an item to pending unless you reconfirm it in the same change.`},example:{title:`All three dimensions can coexist`,item:`FULI keeps concise page titles and removes explanatory copy`,profile:`Taste`,origin:`Explicit statement`,status:`Confirmed`,description:`A UI preference you stated and confirmed. Each label says one thing.`},allFilter:`“All” is just a filter, not a status or type.`}},$m={"zh-CN":{connections:{loadingBindings:`正在读取外部知识源与连接状态…`,subscribing:`正在订阅公共项目…`,unsubscribing:`正在取消项目订阅…`,loadingSubscriptions:`正在读取项目订阅状态…`,creatingBinding:`正在保存外部知识源连接…`,checkingBinding:`正在检查外部知识源连接…`,syncingBinding:`正在同步外部知识到所选项目…`,disconnectingBinding:`正在断开外部知识源连接…`,savingBindingTargets:`正在保存知识源的项目范围…`,subscribed:`已订阅“{name}”。`,unsubscribed:`已取消订阅“{name}”。`,statusAria:`知识服务连接状态`,localGraphiti:`本地 Graphiti`,storage:`存储`,purpose:`用途`,localPurpose:`个人项目与协作偏好`,publicService:`公共服务`,currentStatus:`当前状态`,sharedServicesReady:`{count} 个共享服务可用`,notAvailable:`尚未可用`,publicCapability:{discovery:`发现`,subscription:`订阅`,publishing:`发布`,contribution:`投稿`,review:`审核`},subscriptionsTitle:`公共项目订阅`,sharedProject:`团队共享项目`,unsubscribe:`取消订阅`,noSubscriptions:`尚未订阅团队共享项目`,sharedProjectLabel:`团队共享项目`,choosePublicProject:`选择公共项目`,subscribe:`订阅项目`,externalTitle:`外部知识库`,externalHelp:`查看多个知识库连接方法`,bindingCount:`{count} 个连接`,externalCreated:`已连接“{name}”。`,externalChecked:`“{name}”连接正常。`,externalSynced:`已同步“{name}”。`,externalSyncedWithSkipped:`已同步“{name}”,跳过 {count} 个疑似凭据文档。`,credentialsSkipped:`已跳过 {count} 个疑似凭据文档`,externalDeleted:`已断开“{name}”。`,noExternalBindings:`尚未连接外部知识库`,bindingName:`连接名称`,connector:`连接器`,targetProject:`个人项目`,targetProjects:`绑定项目`,boundTo:`绑定到:`,manageProjects:`绑定项目`,saveProjects:`保存绑定`,projectsUpdated:`已更新“{name}”的项目绑定。`,bindingMode:`检索模式`,mode:{hybrid:`同步 + 实时`,mirror:`仅同步`,live:`仅实时`},transport:`传输`,command:`命令`,arguments:`参数(逗号分隔)`,tokenEnv:`令牌环境变量名`,resourcePrefix:`资源 URI 前缀`,retrievalUrl:`检索 API 地址`,knowledgeIds:`知识库 ID(逗号分隔)`,scoreThreshold:`最低相似度`,scoreThresholdInvalid:`最低相似度必须在 0 到 1 之间`,region:`区域`,module:`模块文件`,environmentNames:`环境变量名(逗号分隔)`,sourceJson:`来源配置 JSON`,trustedCode:`受信任的本地代码`,customSourceObject:`来源配置必须是 JSON 对象`,connect:`添加连接`,check:`检查`,sync:`同步`,disconnect:`断开`,loadingConflictPolicy:`正在读取所选项目的冲突策略…`,savingConflictPolicy:`正在保存所选项目的冲突策略…`,conflictTitle:`冲突策略`,conflictHelp:`查看冲突策略说明`,conflictAction:`知识冲突处理`,askHuman:`在 Agent 对话中询问`,agentDecide:`允许 AI 本次判断`,conflictSaved:`冲突策略已保存。`},review:{loadingPersonal:`正在读取待确认的个人知识…`,loadingPublic:`正在读取公共项目的待审核 Proposal…`,savingDecision:`正在保存审核决定…`,personalTitle:`个人发布确认`,beforePublic:`提交公共前确认`,keepPersonal:`仅保留个人`,ignore:`忽略`,submitPublic:`提交公共`,noPersonalDrafts:`当前没有待个人确认的内容`,publicTitle:`公共项目维护审核`,projectLabel:`审核项目`,maintainerReview:`共享 Maintainer 审核`,reject:`拒绝`,approve:`通过`,noProposals:`当前没有待审核 Proposal`},publicProjects:{relationLabels:{partOf:`属于`,usesKnowledgeFrom:`使用其共享知识`,dependsOn:`依赖`,providesTo:`提供能力`,sharesCapabilityWith:`共享能力`,successorOf:`后继于`,relatedTo:`相关`},fallbackDescription:`公共项目`,unsubscribed:`已取消订阅“{name}”;公共项目内容没有被删除。`,subscribed:`已订阅“{name}”。`,deleteNameRequired:`请输入完整项目名称后再删除`,deleted:`公共项目“{name}”已删除;本机个人项目仍保留。`,deleteFailed:`删除失败`,chooseRelationProjects:`请选择来源项目和关联项目`,parentRelationSubmitted:`关系已提交,等待父项目确认。`,relationCreated:`项目关系已建立。`,timeNotRecorded:`时间未记录`,intro:`浏览共享服务上的项目,按需订阅。`,overviewAria:`公共项目概览`,discoverable:`可发现`,subscribedCount:`已订阅`,manage:`管理项目`,coverage:`资料覆盖`,noSummary:`暂无摘要`,material:`资料`,noSources:`暂无已登记资料`,publishedByYou:`你发布的项目`,publiclyDiscoverable:`公共可发现`,unsubscribe:`取消订阅`,subscribe:`订阅项目`,noProjects:`暂无公共项目`,relationsTitle:`项目关系`,addRelation:`添加项目关系`,providerOperationsUnavailableTitle:`该服务不提供版本记录或项目关系`,providerOperationsUnavailable:`当前服务没有版本记录或项目关系。`,sourceProject:`来源项目`,sourceProjectLabel:`关系来源项目`,chooseProject:`选择项目`,relation:`关系`,relationTypeLabel:`项目关系类型`,targetProject:`关联项目`,targetProjectLabel:`关系目标项目`,preview:`关系预览`,parentConfirmation:`需要目标项目的维护者确认。`,relationBoundary:`项目关系不会自动订阅、授权或扩大当前检索范围。`,latestRelease:`最新发布`,noRelease:`这个项目还没有版本记录`,releaseHistory:`版本记录`,loading:`正在读取项目版本与关联关系…`,noReleaseHistory:`暂无版本记录`,noRelations:`暂无项目关系`,contentManagementSeparated:`项目内容与管理操作已分开。`,viewGraph:`查看知识图谱`,deleteTitle:`永久删除公共项目`,deleteCopy:`这只删除公共项目;本机个人项目仍会保留。`,enterFullName:`输入完整项目名称`,deleteWarning:`删除后无法从 FULI 自动恢复这个公共项目。`,deleting:`正在删除公共项目…`,deletePermanently:`永久删除`}},"en-US":{connections:{loadingBindings:`Loading external knowledge sources and connection status…`,subscribing:`Subscribing to the public project…`,unsubscribing:`Unsubscribing from the project…`,loadingSubscriptions:`Loading project subscription status…`,creatingBinding:`Saving the external knowledge connection…`,checkingBinding:`Checking the external knowledge connection…`,syncingBinding:`Syncing external knowledge to the selected projects…`,disconnectingBinding:`Disconnecting the external knowledge source…`,savingBindingTargets:`Saving the knowledge source’s project scope…`,subscribed:`Subscribed to “{name}”.`,unsubscribed:`Unsubscribed from “{name}”.`,statusAria:`Knowledge service connection status`,localGraphiti:`Local Graphiti`,storage:`Storage`,purpose:`Purpose`,localPurpose:`Personal projects and collaboration preferences`,publicService:`Public service`,currentStatus:`Current status`,sharedServicesReady:`{count} shared service available | {count} shared services available`,notAvailable:`Not available yet`,publicCapability:{discovery:`Discovery`,subscription:`subscriptions`,publishing:`publishing`,contribution:`contributions`,review:`review`},subscriptionsTitle:`Public project subscriptions`,sharedProject:`Shared team project`,unsubscribe:`Unsubscribe`,noSubscriptions:`No shared team projects subscribed`,sharedProjectLabel:`Shared team project`,choosePublicProject:`Choose a public project`,subscribe:`Subscribe`,externalTitle:`External knowledge`,externalHelp:`Learn how to connect multiple knowledge bases`,bindingCount:`{count} connections`,externalCreated:`Connected “{name}”.`,externalChecked:`“{name}” is ready.`,externalSynced:`Synced “{name}”.`,externalSyncedWithSkipped:`Synced “{name}”; skipped {count} possible credential documents.`,credentialsSkipped:`Skipped {count} possible credential documents`,externalDeleted:`Disconnected “{name}”.`,noExternalBindings:`No external knowledge connected`,bindingName:`Connection name`,connector:`Connector`,targetProject:`Personal project`,targetProjects:`Bound projects`,boundTo:`Bound to:`,manageProjects:`Bind projects`,saveProjects:`Save bindings`,projectsUpdated:`Updated project bindings for “{name}”.`,bindingMode:`Retrieval mode`,mode:{hybrid:`Sync + live`,mirror:`Sync only`,live:`Live only`},transport:`Transport`,command:`Command`,arguments:`Arguments (comma-separated)`,tokenEnv:`Token environment variable`,resourcePrefix:`Resource URI prefix`,retrievalUrl:`Retrieval API URL`,knowledgeIds:`Knowledge base IDs (comma-separated)`,scoreThreshold:`Minimum score`,scoreThresholdInvalid:`Minimum score must be between 0 and 1`,region:`Region`,module:`Module file`,environmentNames:`Environment names (comma-separated)`,sourceJson:`Source configuration JSON`,trustedCode:`Trusted local code`,customSourceObject:`Source configuration must be a JSON object`,connect:`Add connection`,check:`Check`,sync:`Sync`,disconnect:`Disconnect`,loadingConflictPolicy:`Loading the selected project’s conflict policy…`,savingConflictPolicy:`Saving the selected project’s conflict policy…`,conflictTitle:`Conflict policy`,conflictHelp:`Read the conflict-policy guide`,conflictAction:`Knowledge conflict handling`,askHuman:`Ask in the Agent conversation`,agentDecide:`Let AI decide for this response`,conflictSaved:`Conflict policy saved.`},review:{loadingPersonal:`Loading personal knowledge awaiting your decision…`,loadingPublic:`Loading public project Proposals awaiting review…`,savingDecision:`Saving the review decision…`,personalTitle:`Personal publishing confirmation`,beforePublic:`Confirm before public submission`,keepPersonal:`Keep personal`,ignore:`Ignore`,submitPublic:`Submit publicly`,noPersonalDrafts:`Nothing is awaiting personal confirmation`,publicTitle:`Public project maintenance review`,projectLabel:`Project to review`,maintainerReview:`Shared Maintainer review`,reject:`Reject`,approve:`Approve`,noProposals:`No Proposals awaiting review`},publicProjects:{relationLabels:{partOf:`belongs to`,usesKnowledgeFrom:`uses shared knowledge from`,dependsOn:`depends on`,providesTo:`provides capability to`,sharesCapabilityWith:`shares capability with`,successorOf:`succeeds`,relatedTo:`related to`},fallbackDescription:`Public project`,unsubscribed:`Unsubscribed from “{name}”. Public project content was not deleted.`,subscribed:`Subscribed to “{name}”.`,deleteNameRequired:`Enter the complete project name before deleting`,deleted:`Public project “{name}” was deleted. The local personal project remains.`,deleteFailed:`Delete failed`,chooseRelationProjects:`Choose both a source project and a related project`,parentRelationSubmitted:`Relationship submitted and awaiting parent project confirmation.`,relationCreated:`Project relationship created.`,timeNotRecorded:`Time not recorded`,intro:`Browse projects on shared services and subscribe as needed.`,overviewAria:`Public projects overview`,discoverable:`Discoverable`,subscribedCount:`Subscribed`,manage:`Manage project`,coverage:`Material coverage`,noSummary:`No summary`,material:`Material`,noSources:`No registered materials`,publishedByYou:`Published by you`,publiclyDiscoverable:`Publicly discoverable`,unsubscribe:`Unsubscribe`,subscribe:`Subscribe`,noProjects:`No public projects`,relationsTitle:`Project relationships`,addRelation:`Add project relationship`,providerOperationsUnavailableTitle:`This service does not provide releases or project relationships`,providerOperationsUnavailable:`This service has no release history or project relationships.`,sourceProject:`Source project`,sourceProjectLabel:`Relationship source project`,chooseProject:`Choose a project`,relation:`Relationship`,relationTypeLabel:`Project relationship type`,targetProject:`Related project`,targetProjectLabel:`Relationship target project`,preview:`Relationship preview`,parentConfirmation:`The target project maintainer must confirm.`,relationBoundary:`Project relationships do not automatically subscribe, authorize, or expand the current search scope.`,latestRelease:`Latest release`,noRelease:`This project has no release history`,releaseHistory:`Release history`,loading:`Loading project releases and relationships…`,noReleaseHistory:`No release history`,noRelations:`No project relationships`,contentManagementSeparated:`Project content and management actions are separated.`,viewGraph:`View knowledge graph`,deleteTitle:`Permanently delete public project`,deleteCopy:`This deletes only the public project. The local personal project remains.`,enterFullName:`Enter the complete project name`,deleteWarning:`FULI cannot automatically restore this public project after deletion.`,deleting:`Deleting the public project…`,deletePermanently:`Delete permanently`}}},eh={"zh-CN":{shared:{personalGlobal:`个人全局`,projectOnly:`仅 {project}`,projectScope:`项目范围 · {project}`,conflictReason:`偏好键“{key}”和生效范围相同,但当前内容不一致。`},profile:{scopes:{all:`全部范围`,global:`个人全局`,projectMeta:`{count} 条项目偏好`},statusSuffix:{aiPending:`待 AI 使用时判断`,conflict:`疑似冲突`,aiResolved:`曾冲突 / AI 已处理`},deferReason:`用户选择交给 AI,在首次相关使用前判断并处理。`,deferNotice:`已交给 AI,任务用到时再处理。`,summaryAria:`协作偏好状态`,summary:{confirmedAria:`查看 {count} 条已确认偏好`,agentConfirmedAria:`查看 {count} 条 Agent 已确认偏好`,pendingAria:`查看并处理 {count} 条待确认偏好`,conflictAria:`查看并处理 {count} 组疑似冲突`,noConflictsAria:`当前没有疑似冲突`,confirmed:`已确认`,agentConfirmed:`Agent 已确认`,pending:`待确认`,conflicts:`疑似冲突`},alert:{aria:`待处理的疑似冲突`,title:`发现 {count} 组疑似冲突`,copy:`可以现在处理,也可以交给 AI 在用到时处理。`,action:`查看冲突双方并处理`},filters:{aspectAria:`协作偏好维度`,all:`全部`,taste:`品味`,personality:`个性`,judgment:`判断偏好`,scopeLabel:`协作偏好生效范围`,conflictsCount:`显示 {visible} / {total} 组待判断`,reviewCount:`显示 {count} 条{status}偏好`,personalUnderstanding:`{count} 条个人理解`,visibleCount:`显示 {visible} / {total}`},workbench:{aria:`疑似冲突待判断组`,title:`逐组成对比较,再决定如何生效`,group:`待判断组 {index}`,aiPending:`待 AI 使用时判断`,mergeSuggested:`建议合并`,humanReview:`需要人工判断`,older:`A · 较早记录`,newer:`B · 较新记录`,reason:`判断原因`,additions:`B 新增:{values}`,deferred:`已交给 AI`,deferring:`正在交给 AI…`,defer:`交给 AI,使用时处理`,handleNow:`现在人工处理`,loading:`正在读取偏好冲突记录…`,noFiltered:`当前筛选范围没有疑似冲突`,empty:`当前没有需要处理的疑似冲突`},directory:{aria:`协作偏好内容`,aspect:`维度`,content:`内容`,statusScopeSource:`状态、范围与来源`,updated:`更新时间`,sourceCount:`{count} 个来源`,loading:`正在读取协作偏好与冲突记录…`,noFiltered:`当前维度和范围还没有内容`,empty:`协作中出现稳定的偏好后,会显示在这里。`}},dialog:{impact:{choose:`先选择处理方式;确认前不会写入任何更改。`,merge:`“{target}”合并为规范内容,“{historical}”转为历史并链接到它。`,keep:`“{kept}”继续生效;“{historical}”转为历史记录,并明确指向保留项。`,split:`“{item}”改为只在“{project}”生效,另一条保持原范围。`,chooseProject:`请选择一个不同的项目范围,系统才会执行拆分。`},errors:{actionRequired:`请选择一种处理方式`,reasonRequired:`请说明本次判断依据`,mergedValueRequired:`合并后的规范内容不能为空`,projectRequired:`请选择拆分后的项目范围`,failed:`冲突处理失败`},resolved:`疑似冲突已处理,生效结果与历史记录均已更新。`,audit:{mergedFromConflict:`由两条疑似冲突偏好合并:{reason}`,keepQuadrant:`沿用保留记录的发现时分类。`,historicalRecord:`历史记录`,user:`用户`},defaultReason:{merge:`两条说的是同一规则,合并为一条。`,keepLeft:`较早记录“{title}”仍是当前准确口径,另一条转为历史。`,keepRight:`较新记录“{title}”是当前准确口径,另一条转为历史。`,split:`两条适用于不同项目,拆开范围。`},title:`比较并处理疑似冲突`,intro:`{reason} 系统只提供证据和影响预览,最终决定由你确认。`,basisAria:`冲突判断依据`,preferenceKey:`偏好键`,effectiveScope:`生效范围`,suggestion:`建议`,mergeSuggestion:`内容互补,优先合并`,reviewSuggestion:`差异较大,先人工判断`,comparisonAria:`冲突双方`,older:`A · 较早记录`,newer:`B · 较新记录`,sourceCount:`{count} 个来源`,editA:`单独纠正 A`,editB:`单独纠正 B`,differenceAria:`差异摘要`,shared:`双方共有`,noShared:`没有检测到可以直接对齐的共同片段`,onlyA:`仅 A 有`,onlyB:`仅 B 有`,noUnique:`没有独有片段`,actionsAria:`处理方式`,actions:{merge:`合并为规范版本`,mergeCopy:`保留双方独有信息;一条更新,一条转为历史。`,recommended:`推荐`,keepA:`保留 A`,keepACopy:`B 转为历史,并链接到 A。`,keepB:`保留 B`,keepBCopy:`A 转为历史,并链接到 B。`,split:`拆分生效范围`,splitCopy:`两条都保留,但不再作用于同一范围。`,noProjects:`没有其他个人项目可选。`},mergeIdentityAria:`合并后保留哪条记录`,canonicalIdentity:`规范版本沿用`,identityA:`A 的记录身份`,identityB:`B 的记录身份`,mergedContent:`合并后的规范内容`,splitRecordAria:`调整哪条记录`,adjustRecord:`调整记录`,projectOnly:`改为仅在以下项目生效`,chooseProject:`请选择个人项目`,impactTitle:`确认后会发生什么`,reason:`本次判断依据`,pendingCopy:`暂不处理,继续显示为疑似冲突。`,defer:`暂不处理`,processing:`正在应用偏好冲突处理…`,confirm:`确认并执行`}},"en-US":{shared:{personalGlobal:`Personal global`,projectOnly:`Only {project}`,projectScope:`Project scope · {project}`,conflictReason:`Preference key “{key}” has different content within the same effective scope.`},profile:{scopes:{all:`All scopes`,global:`Personal global`,projectMeta:`{count} project preference | {count} project preferences`},statusSuffix:{aiPending:`AI will decide when used`,conflict:`Possible conflict`,aiResolved:`Previously conflicted / handled by AI`},deferReason:`The user delegated this to AI for assessment and handling before the first relevant use.`,deferNotice:`Delegated to AI; handled when a task needs it.`,summaryAria:`Collaboration preference status`,summary:{confirmedAria:`View {count} confirmed preference | View {count} confirmed preferences`,agentConfirmedAria:`View {count} Agent-confirmed preference | View {count} Agent-confirmed preferences`,pendingAria:`View and handle {count} pending preference | View and handle {count} pending preferences`,conflictAria:`View and handle {count} possible conflict | View and handle {count} possible conflicts`,noConflictsAria:`No possible conflicts`,confirmed:`Confirmed`,agentConfirmed:`Agent confirmed`,pending:`Pending`,conflicts:`Possible conflicts`},alert:{aria:`Possible conflicts requiring attention`,title:`{count} possible conflict found | {count} possible conflicts found`,copy:`Handle them now, or let AI handle them when a task needs them.`,action:`Compare and handle both sides`},filters:{aspectAria:`Collaboration preference dimension`,all:`All`,taste:`Taste`,personality:`Personality`,judgment:`Judgment preference`,scopeLabel:`Collaboration preference scope`,conflictsCount:`Showing {visible} / {total} groups to review`,reviewCount:`Showing {count} {status} preference | Showing {count} {status} preferences`,personalUnderstanding:`{count} personal insight | {count} personal insights`,visibleCount:`Showing {visible} / {total}`},workbench:{aria:`Possible-conflict review groups`,title:`Compare each pair, then decide how it should apply`,group:`Review group {index}`,aiPending:`AI will decide when used`,mergeSuggested:`Merge suggested`,humanReview:`Human decision needed`,older:`A · Older record`,newer:`B · Newer record`,reason:`Reason`,additions:`Added in B: {values}`,deferred:`Delegated to AI`,deferring:`Delegating to AI…`,defer:`Delegate to AI for use-time handling`,handleNow:`Handle now`,loading:`Loading preference conflict records…`,noFiltered:`No possible conflicts in the current filters`,empty:`No possible conflicts need attention`},directory:{aria:`Collaboration preference content`,aspect:`Dimension`,content:`Content`,statusScopeSource:`Status, scope & source`,updated:`Updated`,sourceCount:`{count} source | {count} sources`,loading:`Loading collaboration preferences and conflict records…`,noFiltered:`No content in the current dimension and scope`,empty:`Stable preferences from your collaboration will appear here.`}},dialog:{impact:{choose:`Choose a resolution. Nothing is written before confirmation.`,merge:`“{target}” becomes the merged version; “{historical}” becomes history linked to it.`,keep:`“{kept}” remains active. “{historical}” becomes a historical record that points to the retained item.`,split:`“{item}” will apply only to “{project}”; the other keeps its scope.`,chooseProject:`Choose a different project scope before splitting.`},errors:{actionRequired:`Choose a resolution`,reasonRequired:`Explain the basis for this decision`,mergedValueRequired:`Canonical merged content cannot be empty`,projectRequired:`Choose the project scope after splitting`,failed:`Could not resolve the conflict`},resolved:`The possible conflict is resolved. Effective results and history are updated.`,audit:{mergedFromConflict:`Merged from two possibly conflicting preferences: {reason}`,keepQuadrant:`Kept the retained record’s discovery classification.`,historicalRecord:`Historical record`,user:`User`},defaultReason:{merge:`Both describe the same rule; merged into one.`,keepLeft:`The older record “{title}” remains the accurate current wording; the other record becomes history.`,keepRight:`The newer record “{title}” is the accurate current wording; the other record becomes history.`,split:`They apply to different projects; scopes split.`},title:`Compare and resolve possible conflict`,intro:`{reason} The system provides evidence and an impact preview; you make the final decision.`,basisAria:`Conflict decision basis`,preferenceKey:`Preference key`,effectiveScope:`Effective scope`,suggestion:`Suggestion`,mergeSuggestion:`Complementary content; merge first`,reviewSuggestion:`Substantial difference; review manually`,comparisonAria:`Conflict sides`,older:`A · Older record`,newer:`B · Newer record`,sourceCount:`{count} source | {count} sources`,editA:`Correct A separately`,editB:`Correct B separately`,differenceAria:`Difference summary`,shared:`Shared`,noShared:`No directly alignable shared segment detected`,onlyA:`Only in A`,onlyB:`Only in B`,noUnique:`No unique segments`,actionsAria:`Resolution options`,actions:{merge:`Merge into canonical version`,mergeCopy:`Keep unique details from both sides; update one record and move the other to history.`,recommended:`Recommended`,keepA:`Keep A`,keepACopy:`Move B to history and link it to A.`,keepB:`Keep B`,keepBCopy:`Move A to history and link it to B.`,split:`Split effective scope`,splitCopy:`Keep both records, but apply them to different scopes.`,noProjects:`No other personal project is available.`},mergeIdentityAria:`Record retained after merge`,canonicalIdentity:`Canonical version uses`,identityA:`A record identity`,identityB:`B record identity`,mergedContent:`Canonical merged content`,splitRecordAria:`Record to adjust`,adjustRecord:`Adjust record`,projectOnly:`Apply only to this project`,chooseProject:`Choose a personal project`,impactTitle:`What happens after confirmation`,reason:`Decision basis`,pendingCopy:`Left as is; still shown as a possible conflict.`,defer:`Not now`,processing:`Applying preference conflict resolution…`,confirm:`Confirm and apply`}}},th={"zh-CN":{knowledgeDialog:{previews:{create:{label:`创建预览`,title:`将创建一个新的个人项目`,linkedCopy:`这个节点仍由来源项目维护,新项目会引用它。`,ownedCopy:`当前节点会成为新项目的主要归属知识。`},checking:{label:`正在检查`,title:`正在检查重复与冲突…`,copy:`只比较目标项目和当前节点。`},waiting:{label:`等待检查`,title:`请选择目标项目`,copy:`选择后会先检查重复与冲突。`},outcomes:{none:{title:`可以加入`,copy:`未检测到重复或已确认的同名冲突`},already_linked:{title:`已经加入`,copy:`目标项目已经在使用这条知识`},exact_duplicate:{title:`发现重复`,copy:`将复用目标项目已有内容,不再创建副本`},conflict:{title:`发现冲突`,copy:`两条已确认知识同名,但内容不同`}}},relationActors:{sourceProject:`来源项目`,newProject:`新项目`,targetProject:`目标项目`},relations:{related:`与{object}相关`,partOf:`{subject}属于{object}`,usesKnowledge:`{subject}从{object}继承共享知识`,dependsOn:`{subject}依赖{object}`,providesTo:`{subject}向{object}提供能力`,sharesCapability:`与{object}共享能力`,successorOf:`{subject}是{object}的后继`},actions:{creating:`正在创建项目…`,reusing:`正在复用现有内容…`,adding:`正在加入项目…`,create:`创建项目`,reuse:`复用现有内容`,add:`加入项目`},defaultReason:`基于图谱节点“{name}”建立项目知识范围`,errors:{projectIdentityRequired:`请填写项目名称和项目标识`,targetRequired:`请选择目标项目`,previewRequired:`请等待重复与冲突检查完成`,reasonRequired:`请填写操作说明`},title:`建立项目知识范围`,intro:`用这个节点新建项目,或让已有项目引用它。`,sourceNode:`来源节点`,chooseAction:`选择操作`,createNew:`创建新项目`,createNewCopy:`以当前知识为起点建立独立范围`,addExisting:`加入已有项目`,addExistingCopy:`先检查重复和已确认冲突`,projectName:`项目名称`,projectId:`项目标识`,purpose:`项目用途`,targetPersonalProject:`目标个人项目`,preserveRelation:`保留与来源项目的关系`,preserveRelationCopy:`当前知识的主要归属不会被覆盖`,projectRelation:`项目关系`,currentNode:`当前节点`,targetContent:`目标项目已有内容`,targetContentFallback:`目标项目内容`,conflictResolution:`冲突处理`,defer:`暂不采用,保留待处理记录`,keepTarget:`保留目标项目现有内容`,useSource:`使用当前来源内容`,coexist:`允许两条内容并存`,operationReason:`操作说明`},profileDialog:{materialTypes:{ProjectPurpose:`项目目标`,ProjectScope:`项目范围`,ProjectSource:`资料来源`,ProjectBoundary:`项目边界`,ProjectAssessment:`档案评估`,AssessmentDimension:`评估维度`,PersonalProject:`项目档案`,RelatedPersonalProject:`关联项目`,fallback:`项目档案`},sourceTypes:{product_document:`产品文档`,technical_document:`技术文档`,frontend_repository:`前端仓库`,backend_repository:`后端仓库`,repository:`代码仓库`,design:`设计稿`,runbook:`运行手册`,monitoring:`监控`,issue_tracker:`事项追踪`,other:`其他`},errors:{nameRequired:`请填写项目名称`,sourceNameRequired:`每条资料来源都需要名称`,saveFailed:`项目资料保存失败`},title:`编辑{material}`,intro:`这些是项目资料,保存后会更新图中的项目节点。`,projectName:`项目名称`,lifecycle:`生命周期`,lifecycles:{planned:`计划中`,active:`进行中`,maintenance:`维护中`,archived:`已归档`},purpose:`项目目标`,purposePlaceholder:`说明项目为什么存在、希望达成什么结果`,scope:`项目范围`,scopePlaceholder:`说明项目包含的对象、流程或交付物`,technicalSummary:`技术摘要`,technicalPlaceholder:`记录关键技术结构和运行方式`,boundary:`项目边界`,boundaryPlaceholder:`每行一条明确不在本项目范围内的边界`,boundaryHint:`每行一条;重复内容会在保存时合并。`,sources:`资料来源`,sourcesCopy:`资料类型、地址和敏感级别会显示为图中的资料节点。`,addSource:`添加来源`,sourceName:`名称`,sourceType:`类型`,sourceUri:`地址`,sourceUriPlaceholder:`可选,例如仓库或文档地址`,sourceSummary:`摘要`,sensitivity:`敏感级别`,sensitivities:{normal:`普通`,private:`私有`,restricted:`受限`},noSources:`还没有登记资料来源。`,stateBoundary:`项目资料不需要确认或失效,直接编辑即可。`,saving:`正在保存项目资料…`,save:`保存项目资料`},publishDialog:{errors:{providerUnavailable:`公共 Provider 当前不可用`,versionRequired:`请填写发布版本`,summaryRequired:`请填写本次更新内容`,failed:`发布失败`},published:`“{name}” {version} 已发布并记录版本信息。`,title:`发布到公共空间?`,warning:`发布后会进入共享 Provider,不再只是本机可见。`,version:`发布版本`,versionPlaceholder:`例如 v1.0.0`,currentVersion:`当前版本 {version}`,firstRelease:`首次发布`,summary:`更新内容`,summaryPlaceholder:`说明本次新增、调整或修复了什么`,impactAria:`发布影响`,discoverable:`公开可发现`,discoverableCopy:`连接这个公共服务的用户可以看到该项目。`,owner:`你成为 Owner`,ownerCopy:`系统会自动订阅项目,你可以继续维护项目资料。`,syncProfile:`同步项目档案`,syncProfileCopy:`项目说明和资料会复制到公共项目。`,publishing:`正在发布项目…`,confirm:`确认发布`},overview:{tab:`概览`,loading:`正在加载项目概览`,noPurpose:`还没有填写项目目标`,editProfile:`编辑项目资料`,team:`项目团队`,loadingTeam:`正在加载项目团队`,refreshingTeam:`正在刷新项目团队`,teamFailed:`项目团队暂时无法读取`,retry:`重试`,refresh:`刷新项目团队`,lead:`组长`,showOrganization:`展开组织`,hideOrganization:`收起组织`,memberCount:`{count} 名成员`,collaboratorCount:`另有 {count} 名其他任职成员`,peerCount:`{count} 个同级角色`,noMembers:`暂无其他任职成员`,refreshFailed:`刷新失败,以下是上次读取的团队`,members:`向组长汇报`,collaborators:`其他任职成员`,peers:`同级角色`,noLead:`这个项目还没有组长`,leadUnavailable:`组长 {name} 已不在本项目`,leadUnavailableUnnamed:`原组长已不在本项目`,unavailableMembers:`团队设置中另有 {count} 名成员当前不可用`,unavailableMembersLink:`查看团队设置`,setLead:`设置组长`,changeLead:`更换组长`,employeeNumber:`FLA {number}`}},"en-US":{knowledgeDialog:{previews:{create:{label:`Creation preview`,title:`A new personal project will be created`,linkedCopy:`The source project still owns this node; the new project references it.`,ownedCopy:`This node becomes knowledge primarily owned by the new project.`},checking:{label:`Checking`,title:`Checking for duplicates and conflicts…`,copy:`Only the target project and current node are compared.`},waiting:{label:`Waiting`,title:`Choose a target project`,copy:`Duplicates and conflicts are checked after selection.`},outcomes:{none:{title:`Ready to add`,copy:`No duplicate or confirmed same-name conflict detected`},already_linked:{title:`Already added`,copy:`The target project already uses this knowledge`},exact_duplicate:{title:`Duplicate found`,copy:`Existing target-project content will be reused instead of copied`},conflict:{title:`Conflict found`,copy:`Two confirmed knowledge items share a name but differ in content`}}},relationActors:{sourceProject:`source project`,newProject:`new project`,targetProject:`target project`},relations:{related:`Related to {object}`,partOf:`{subject} belongs to {object}`,usesKnowledge:`{subject} inherits shared knowledge from {object}`,dependsOn:`{subject} depends on {object}`,providesTo:`{subject} provides a capability to {object}`,sharesCapability:`Shares a capability with {object}`,successorOf:`{subject} succeeds {object}`},actions:{creating:`Creating project…`,reusing:`Reusing existing content…`,adding:`Adding to project…`,create:`Create project`,reuse:`Reuse existing content`,add:`Add to project`},defaultReason:`Create project knowledge scope from graph node “{name}”`,errors:{projectIdentityRequired:`Enter both project name and project ID`,targetRequired:`Choose a target project`,previewRequired:`Wait for duplicate and conflict checks to finish`,reasonRequired:`Enter an operation note`},title:`Establish project knowledge scope`,intro:`Create a project from this node, or reference it from an existing one.`,sourceNode:`Source node`,chooseAction:`Choose action`,createNew:`Create new project`,createNewCopy:`Start an independent scope from the current knowledge`,addExisting:`Add to existing project`,addExistingCopy:`Check duplicates and confirmed conflicts first`,projectName:`Project name`,projectId:`Project ID`,purpose:`Project purpose`,targetPersonalProject:`Target personal project`,preserveRelation:`Keep relationship to source project`,preserveRelationCopy:`Primary ownership of the current knowledge will not be overwritten`,projectRelation:`Project relationship`,currentNode:`Current node`,targetContent:`Existing target-project content`,targetContentFallback:`Target-project content`,conflictResolution:`Conflict handling`,defer:`Do not apply yet; keep a pending conflict record`,keepTarget:`Keep existing target-project content`,useSource:`Use current source content`,coexist:`Allow both items to coexist`,operationReason:`Operation note`},profileDialog:{materialTypes:{ProjectPurpose:`Project purpose`,ProjectScope:`Project scope`,ProjectSource:`Source material`,ProjectBoundary:`Project boundary`,ProjectAssessment:`Profile assessment`,AssessmentDimension:`Assessment dimension`,PersonalProject:`Project profile`,RelatedPersonalProject:`Related project`,fallback:`Project profile`},sourceTypes:{product_document:`Product document`,technical_document:`Technical document`,frontend_repository:`Frontend repository`,backend_repository:`Backend repository`,repository:`Code repository`,design:`Design file`,runbook:`Runbook`,monitoring:`Monitoring`,issue_tracker:`Issue tracker`,other:`Other`},errors:{nameRequired:`Enter a project name`,sourceNameRequired:`Every source material needs a name`,saveFailed:`Could not save project materials`},title:`Edit {material}`,intro:`Project materials; saving updates the project nodes in the graph.`,projectName:`Project name`,lifecycle:`Lifecycle`,lifecycles:{planned:`Planned`,active:`Active`,maintenance:`Maintenance`,archived:`Archived`},purpose:`Project purpose`,purposePlaceholder:`Explain why the project exists and what outcome it should achieve`,scope:`Project scope`,scopePlaceholder:`Describe the objects, workflows, or deliverables included`,technicalSummary:`Technical summary`,technicalPlaceholder:`Record the key technical structure and operating model`,boundary:`Project boundaries`,boundaryPlaceholder:`One explicit out-of-scope boundary per line`,boundaryHint:`One per line; duplicates are merged when saved.`,sources:`Source materials`,sourcesCopy:`Type, address, and sensitivity appear as source nodes in the graph.`,addSource:`Add source`,sourceName:`Name`,sourceType:`Type`,sourceUri:`Address`,sourceUriPlaceholder:`Optional, for example a repository or document URL`,sourceSummary:`Summary`,sensitivity:`Sensitivity`,sensitivities:{normal:`Normal`,private:`Private`,restricted:`Restricted`},noSources:`No source materials registered.`,stateBoundary:`Project materials need no confirmation; just edit them.`,saving:`Saving project materials…`,save:`Save project materials`},publishDialog:{errors:{providerUnavailable:`The public Provider is unavailable`,versionRequired:`Enter a release version`,summaryRequired:`Describe this update`,failed:`Publishing failed`},published:`“{name}” {version} was published with release details.`,title:`Publish to the public space?`,warning:`After publishing, this project enters a shared Provider and is no longer visible only on this device.`,version:`Release version`,versionPlaceholder:`For example v1.0.0`,currentVersion:`Current version {version}`,firstRelease:`First release`,summary:`Update summary`,summaryPlaceholder:`Describe what was added, changed, or fixed`,impactAria:`Publishing impact`,discoverable:`Publicly discoverable`,discoverableCopy:`Users connected to this public service can see the project.`,owner:`You become Owner`,ownerCopy:`The project is subscribed automatically and you can continue maintaining its materials.`,syncProfile:`Sync project profile`,syncProfileCopy:`Description and materials are copied to the public project.`,publishing:`Publishing project…`,confirm:`Confirm publishing`},overview:{tab:`Overview`,loading:`Loading project overview`,noPurpose:`No project goal yet`,editProfile:`Edit project profile`,team:`Project team`,loadingTeam:`Loading project team`,refreshingTeam:`Refreshing project team`,teamFailed:`The project team could not be loaded`,retry:`Retry`,refresh:`Refresh project team`,lead:`Lead`,showOrganization:`Show organization`,hideOrganization:`Hide organization`,memberCount:`{count} members`,collaboratorCount:`{count} other assigned Agents`,peerCount:`{count} peer roles`,noMembers:`No other assigned Agents`,refreshFailed:`Refresh failed. Showing the team from the last successful read`,members:`Report to the lead`,collaborators:`Other assigned Agents`,peers:`Peer roles`,noLead:`This project has no lead yet`,leadUnavailable:`{name} is no longer this project’s lead`,leadUnavailableUnnamed:`The previous lead is no longer on this project`,unavailableMembers:`{count} more team members are currently unavailable`,unavailableMembersLink:`Open team settings`,setLead:`Set lead`,changeLead:`Change lead`,employeeNumber:`FLA {number}`}}},nh={"zh-CN":{executionPlan:{title:`执行框架`,reported:`Agent 上报`,updated:`最近更新`,unavailable:`更新暂不可用`,status:{pending:`待开始`,in_progress:`进行中`,awaiting_review:`待检查`,completed:`已完成`,blocked:`受阻`,skipped:`已跳过`}},firstTask:{title:`开始第一个任务`,hint:`在已接入 Fuli 的 AI 客户端里,于项目目录中直接提需求。Fuli 会登记项目并安排负责的 Agent。`},diagnostics:{title:`任务启动与执行状态`,project:`项目归属`,assignment:`Agent 分配`,execution:`实际执行`,projectState:{temporary:`独立临时项目`,identified:`已关联项目`,unresolved:`项目尚未识别`},assignmentState:{assigned:`已记录任务分配`,unreported:`尚未记录任务分配`},executionState:{unreported:`尚未收到工作进程报告`,queued:`工作进程已排队`,running:`工作进程报告运行中`,ended:`已收到结束状态`,reported:`已收到工作进程报告`},temporaryHint:`这次任务使用独立的临时项目。`,summaryReason:{assignedOnly:`已分配,等待客户端上报执行结果。`,unassigned:`还没有分配或执行记录。`,eventsOnly:`已收到执行事件,等待汇总。`}},advanced:`高级设置与诊断`,taskDetails:`协作与执行详情`,profileDetails:`Agent 资料`,conversations:{title:`对话与记忆`,scope:`上下文范围`,global:`全局`,hint:`跨客户端继续工作时,按需恢复相关上下文。`,loading:`正在读取对话记录…`,loadFailed:`对话记录读取失败,请重试。`,empty:`当前范围还没有保存的对话。`,untitled:`未命名对话`,compacted:`已压缩`,recent:`近期`,rawRetained:`压缩不会删除原文。`,loadingMessages:`正在读取对话原文…`,more:`读取后续消息`,noMessages:`尚无可读取的原始消息。`,settings:`记忆设置`,loadingPolicy:`正在读取记忆设置…`,capture:`保存这个 Agent 在当前范围的对话`,compactAfterKb:`累计多少 KB 后压缩`,budget:`恢复上下文预算`,budgetHint:`对话累计超过阈值后,较早的消息折叠成摘要;原文始终保留。`,invalidPolicy:`压缩阈值须为 8–1024 KB,预算须为 512–16000。`,save:`保存记忆设置`,saving:`正在保存记忆设置…`,saved:`记忆设置已保存。`,user:`用户`,assistant:`Agent`,tool:`工具`,copyContinuation:`复制接续指令`,copiedContinuation:`已复制接续指令。`,copyContinuationFailed:`自动复制失败,请手动选择下方指令并复制。`,manualContinuation:`接续指令`,memoryTitle:`工作记忆`,loadingMemory:`正在读取工作记忆…`,memoryFailed:`工作记忆读取失败,请重试。`,memoryEmpty:`当前范围还没有经过检查点保存的工作记忆。`,memoryMeta:`版本 {revision} · {source} · {time}`,memoryAuthority:`工作记忆是任务检查点保存的工作上下文,不等于经人工确认的知识。`,exportMemory:`将当前范围的工作记忆导出为 Markdown`,exportingMemory:`正在导出工作记忆…`,exportedMemory:`已从数据库读取最新内容并开始下载。FULI 仍是权威来源,对文件的修改不会被导入。`,exportMemoryFailed:`工作记忆导出失败,请重试。`,memory:{decisions:`决定`,openThreads:`未完成事项`,nextActions:`下一步`},digestTitle:`压缩摘录`,digestHint:`自动摘录,未经核实:按固定规则从较早消息中摘取的原句,不是工作记忆,可能遗漏或误分类;以下方原文为准。`,kinds:{request:`请求`,decision:`决定`,correction:`更正`,open:`未完成`,method:`方法`},truncated:`已截断`,omitted:`另有 {count} 行未摘录或因容量被移除,可在原文中查看。`},workHistory:{title:`工作记录`,loading:`正在读取员工工作记录…`,loadFailed:`工作记录读取失败,请重试。`,empty:`这个项目还没有工作记录。`,reported:`已报告`,completed:`已完成`,incomplete:`未完成`,failed:`失败`,no_change:`无变更`,unreported:`缺少总结`,running:`进行中`},aria:`项目 Agent 名录`,title:`Agents`,listLabel:`空间 Agent 列表`,notReported:`未上报`,noToolsUsed:`未使用工具`,searchLabel:`搜索 Agent`,searchPlaceholder:`搜索名称、ID、职责或能力`,add:`新增 Agent`,edit:`编辑`,saved:`项目 Agent 已保存。`,retry:`重新加载`,loading:`正在读取项目 Agent 列表…`,loadError:`项目 Agent 暂时无法读取。`,emptyTitle:`还没有项目 Agent`,emptyCopy:`开始项目任务后,AR 会按需安排 Agent。`,noMatchTitle:`没有匹配的 Agent`,noMatchCopy:`调整项目、状态或搜索条件。`,stats:{total:`{count} 个 Agent`,active:`{count} 个可用`,assignments:`{count} 个分配`,projects:`分布在 {count} 个项目`,noOnlineClaim:`配置不等于在线;以实际上报为准`},team:{autoGrow:`新员工自动归组`,unavailableMember:`成员不可用`,removeUnavailable:`取消勾选以移除`,autoGrowMeta:`新招的长期 Agent 自动加入小组,第一位担任组长。`,hr:`AR`,manager:`项目经理`,lead:`项目总负责人`,noLead:`待配置项目总负责人`,unavailable:`项目总负责人不可用,请完成交接`,summary:`日常找组长沟通,成员按职责协作。`,members:`小组成员`,edit:`管理小组`,save:`保存小组`},coordination:{aria:`{project} 项目 Agent 协作策略`,title:`项目协作`,loading:`正在读取项目协作策略…`,autoReuse:`自动沿用 Agent`,autoReuseMeta:`新任务交给组长;没有组长时沿用上一位 Agent。关闭后需手动 {'@'}Agent。`,askBeforeRecruitment:`新 Agent 先询问`,askBeforeRecruitmentMeta:`没有可沿用 Agent 时,先等待确认再新建。`,saving:`正在保存项目协作策略…`,saved:`项目策略已保存。`,loadFailed:`项目策略暂时无法读取。`,saveFailed:`项目策略暂时无法保存。`},agentType:{coordinator:`协调`,durable:`长期`,hr:`AR`,temporary:`临时`},status:{all:`全部状态`,active:`可用`,inactive:`停用`,archived:`已归档`},assignmentStatus:{active:`当前分配`,ended:`已结束`,unassigned:`已解除`,replaced:`已替换`},taskStatus:{awaiting_recruitment:`等待招聘`,queued:`排队`,running:`运行中`,paused:`已暂停`,failed:`失败`,awaiting_review:`待审核`,completed:`已完成`,cancelled:`已取消`,blocked:`阻塞`,idle:`空闲`},fields:{project:`所属项目`,agentId:`Agent ID`,occupationEmoji:`职业 emoji`,responsibility:`负责范围`,capabilities:`能力`,initialPreferences:`启动约定`,status:`状态`,updatedAt:`最近更新`,agentType:`身份类型`,defaultModelStrategy:`默认模型策略`,executorPolicy:`执行器策略`,modelIntent:`provider-neutral 意图`,allowList:`locked allow-list`,assignments:`项目分配`,memoryScope:`记忆边界`,scope:`范围`,assignmentModel:`分配策略`,collaborators:`协作者`,actualExecution:`实际执行`,executionSummary:`执行总结`,workerEventEvidence:`工作进程事件证据`,reportedStaffingDecision:`已报告排班决定`,executionEnvironment:`执行环境`,toolsUsed:`执行工具`,sourceApplication:`来源应用`,sourceSession:`来源会话`,workerSession:`执行器会话`,reporterSession:`上报会话`,tokenUsage:`Token 用量`,reportedAt:`上报时间`,workSummary:`所做工作`,terminalStatus:`终态`,actualModel:`实际模型`,worker:`执行者`,coordinator:`协调 Agent`,candidateAgents:`候选 Agent`,complexity:`复杂度`,parallelPlan:`并行计划`,run:`Run`,recruitment:`招聘来源`,strategySource:`策略来源`,reason:`原因`,matchBasis:`匹配依据`},participantRoles:{lead:`负责人`,collaborator:`协作者`},sections:{assignments:`项目分配与历史`,strategy:`模型策略与执行器`,tasks:`任务与协作`,activity:`贡献活动`,clients:`客户端`,routing:`路由规则`,learning:`候选学习依据`,recruitment:`招聘事件`},detail:{choose:`选择一个 Agent 查看分工`,noRun:`无运行记录`,stateReported:`状态已上报,运行凭据未上报`,refresh:`刷新真实数据`,notLoaded:`尚未读取该分区的真实数据。`,loading:{assignments:`正在读取项目分配与历史…`,tasks:`正在读取任务与协作记录…`,activity:`正在读取贡献活动…`,recruitments:`正在读取招聘事件…`,executors:`正在读取执行器目录…`,routingRules:`正在读取路由规则…`,learning:`正在读取候选学习依据…`},sectionUnavailable:`该分区的真实数据暂时无法读取。`,noAssignments:`尚未上报项目分配。`,noTasks:`尚无任务历史。`,noExecutionSummary:`没有真实参与执行者。`,notReportedActualExecution:`实际执行证据未上报。`},strategy:{flexible:`flexible`,locked:`locked`,providerNeutral:`默认策略只表达 provider-neutral 意图,不猜测 executor、model 或连接状态。`,noAllowList:`未锁定 allow-list;可用 executor 未上报。`,lockedUnavailable:`锁定的执行器都不可用,任务会保持排队。`,availabilityUnreported:`availability 未上报`,actualUnreported:`实际调用未上报`},activity:{aria:`按日贡献活动`,empty:`没有已验证的完成、失败或取消历史。`,noTasks:`当天没有任务摘要。`},clients:{codex:`Codex`,claude:`Claude`,claude_code:`Claude Code`,cursor:`Cursor`,gemini_cli:`Gemini CLI`,kiro:`Kiro`,other:`其他客户端`,allowed:`允许`,notAllowed:`未允许`,observed:`实际调用 {count} 次`,observedAny:`实际调用已上报`,unreported:`实际调用未上报`,integrationUnreported:`接入状态未上报`,empty:`允许客户端、实际调用和接入状态均未上报。`},tokenSources:{executor:`执行器`,host:`宿主`,dingdong:`DingDong`},routing:{empty:`没有已配置的路由规则。`,priorityNote:`只显示实际存在的规则。`,addExecutor:`注册执行器`,editExecutor:`编辑执行器`,addRule:`新增规则`,disable:`停用`,updateFailed:`路由规则更新失败。`,authorize:`授权`,revoke:`撤销授权`,authorizing:`正在保存执行器授权状态…`,revoking:`正在保存执行器撤销状态…`,authorizeReason:`控制台授权执行器`,revokeReason:`控制台撤销执行器授权`,authorizationFailed:`执行器权限更新失败。`,disabling:`正在保存路由规则停用状态…`,editor:{executorCreateTitle:`注册执行器`,executorEditTitle:`编辑执行器`,ruleCreateTitle:`新增路由规则`,executorId:`Executor ID`,displayName:`显示名称`,executorKind:`类型`,priority:`全局优先级`,capabilities:`能力`,healthRequired:`要求健康检查`,scope:`规则范围`,taskId:`Task ID`,workKind:`工作类型`,executorIds:`允许的执行器 ID`,executorIdsPlaceholder:`每行一个真实 executor ID`,requiredCapabilities:`所需能力`,evidenceNote:`授权与健康状态以后端上报为准。`,ruleNote:`规则只影响匹配候选;不会改变 Agent 的 locked 策略。`,executorRequired:`请填写执行器 ID、名称和有效优先级。`,ruleRequired:`请填写工作类型、执行器 ID 和原因。`,save:`保存`,savingExecutor:`正在保存执行器目录记录…`,savingRule:`正在保存路由规则…`,saveFailed:`保存目录或规则失败。`}},learning:{neutral:`中性`,recorded:`已记录依据`,samples:`样本 {count}`,recent:`近期加权 {count}`,score:`实际评分 {score}`,decayUnreported:`衰减基准未上报`,ignore:`忽略`,reset:`重置`,ignoring:`正在保存学习依据忽略状态…`,resetting:`正在保存学习依据重置状态…`,resetUnavailable:`缺少项目、工作类型或执行器依据,无法重置。`,updateFailed:`学习依据更新失败。`,empty:`没有真实学习依据;不显示评分或候选倾向。`,note:`仅用于同级候选的排序。`},source:{testRole:`测试角色`,cleanup:`清理测试角色`,cleanupLoading:`正在清理测试角色…`,cleanupFailed:`测试角色清理失败。`},recruitment:{hr:`AR Agent`,trigger:`触发客户端`,reason:`招聘原因`,time:`时间`,testSource:`测试来源`,empty:`没有匹配的真实招聘记录。`,policy:`招聘确认`,automatic:`自动招聘`,requireConfirmation:`需要确认`,policyUpdateFailed:`招聘确认策略更新失败。`,approve:`批准`,cancel:`取消`,approving:`正在提交招聘批准…`,cancelling:`正在提交招聘取消…`,approveReason:`用户批准招聘事件`,cancelReason:`用户取消招聘事件`,decisionFailed:`招聘事件处理失败。`},dialog:{createTitle:`新增项目 Agent`,editTitle:`编辑项目 Agent`,saveCreate:`创建 Agent`,saveEdit:`保存修改`,saving:`正在保存项目 Agent…`,projectPlaceholder:`选择项目`,agentIdPlaceholder:`例如 design-agent`,namePlaceholder:`例如 设计 Agent`,occupationEmojiPlaceholder:`例如 🎛️`,responsibilityPlaceholder:`说明哪些工作交给这个 Agent。`,capabilitiesPlaceholder:`每行一项,例如:
7
7
  交互设计
8
- 可用性审查`,preferencesPlaceholder:`每行一项,仅用于初始协作方式。`,idLocked:`创建后 Agent ID 不可修改;项目通过独立分配管理。`,allowListPlaceholder:`每行一个真实 executor ID;不填写不会猜测可用项。`,required:`请填写 Agent ID、名称和负责范围。`,occupationEmojiInvalid:`职业 emoji 只能填写一个 emoji。`,spaceUnavailable:`当前空间不可用,无法保存 Agent。`,initialAssignmentReason:`从 Agent 名录创建首条项目分配`,projectUnavailable:`所选项目已不可用,请重新选择。`,duplicate:`能力与启动约定不能包含重复项。`,saveFailed:`项目 Agent 保存失败。`},assignmentDialog:{assign:`分配项目`,end:`解除`,replace:`替换`,assignTitle:`分配项目职责`,endTitle:`解除项目分配`,replaceTitle:`替换项目 Agent`,replacement:`替换为`,replacementPlaceholder:`选择已有 Agent`,workKinds:`工作类型`,workKindsPlaceholder:`每行一项`,reasonPlaceholder:`记录分配、解除或替换原因。`,required:`请填写职责和原因。`,replacementRequired:`请选择替换 Agent。`,saveAssign:`保存分配`,saveChange:`保存变更`,saving:`正在保存 Agent 项目分配…`,saveFailed:`项目分配保存失败。`}},"en-US":{firstTask:{title:`Start your first task`,hint:`In an AI client connected to Fuli, ask for the work from your project folder. Fuli registers the project and assigns a responsible Agent.`},diagnostics:{title:`Task start and execution status`,project:`Project scope`,assignment:`Agent assignment`,execution:`Actual execution`,projectState:{temporary:`Isolated temporary project`,identified:`Project linked`,unresolved:`Project not identified`},assignmentState:{assigned:`Task assignment recorded`,unreported:`No task assignment reported`},executionState:{unreported:`No worker report received`,queued:`Worker queued`,running:`Worker reported running`,ended:`Terminal status received`,reported:`Worker report received`},temporaryHint:`This task uses an isolated temporary project.`,summaryReason:{assignedOnly:`Assigned; waiting for the client to report results.`,unassigned:`No assignment or execution recorded yet.`,eventsOnly:`Execution events received; waiting for a summary.`}},advanced:`Advanced settings and diagnostics`,taskDetails:`Collaboration and execution details`,profileDetails:`Agent profile`,conversations:{title:`Conversations and memory`,hint:`Resume across clients with relevant context loaded on demand.`,loading:`Loading conversations…`,loadFailed:`Could not load conversations. Try again.`,empty:`No saved conversations for this project yet.`,untitled:`Untitled conversation`,compacted:`Compacted`,recent:`Recent`,rawRetained:`Compaction never deletes originals.`,loadingMessages:`Loading original messages…`,more:`Load next messages`,noMessages:`No original messages available yet.`,settings:`Memory settings`,loadingPolicy:`Loading memory settings…`,capture:`Save this Agent’s conversations in this project`,compactAfterKb:`Compact after (KB)`,budget:`Context recovery budget`,budgetHint:`Past the threshold, earlier messages fold into a digest; originals are always kept.`,invalidPolicy:`Use 8–1024 KB for compaction and 512–16000 for the budget.`,save:`Save memory settings`,saving:`Saving memory settings…`,saved:`Memory settings saved.`,user:`User`,assistant:`Agent`,tool:`Tool`,copyContinuation:`Copy continuation`,copiedContinuation:`Continuation copied.`,copyContinuationFailed:`Could not copy automatically. Select and copy the instruction below.`,manualContinuation:`Continuation instruction`},workHistory:{title:`Work history`,loading:`Loading employee work records…`,loadFailed:`Could not load work records. Try again.`,empty:`No work records for this project yet.`,reported:`Reported`,completed:`Completed`,incomplete:`Incomplete`,failed:`Failed`,no_change:`No changes`,unreported:`Summary missing`,running:`In progress`},team:{hr:`AR`,manager:`Project manager`,lead:`Project lead`,noLead:`Project lead required`,autoGrow:`Add new employees to the team`,unavailableMember:`Unavailable member`,removeUnavailable:`Uncheck to remove`,autoGrowMeta:`New long-term Agents join the team; the first becomes lead.`,unavailable:`Project lead unavailable; complete the handoff`,summary:`Talk to the lead; members work by specialty.`,members:`Team members`,edit:`Manage team`,save:`Save team`},aria:`Project Agent directory`,title:`Agents`,listLabel:`Space Agent list`,notReported:`Not reported`,noToolsUsed:`No tools used`,searchLabel:`Search Agents`,searchPlaceholder:`Search name, ID, responsibility, or capability`,add:`Add Agent`,edit:`Edit`,saved:`Project Agent saved.`,retry:`Reload`,loading:`Loading the project Agent directory…`,loadError:`Project Agents are temporarily unavailable.`,emptyTitle:`No project Agents yet`,emptyCopy:`Start a project task and AR will staff an Agent.`,noMatchTitle:`No matching Agents`,noMatchCopy:`Change the project, status, or search filters.`,stats:{total:`{count} Agents`,active:`{count} available`,assignments:`{count} assignments`,projects:`Across {count} projects`,noOnlineClaim:`Configured is not online; only reports count`},coordination:{aria:`Agent collaboration policy for {project}`,title:`Project collaboration`,loading:`Loading the project collaboration policy…`,autoReuse:`Reuse the previous Agent`,autoReuseMeta:`New tasks go to the lead, or the last Agent if none. Off: {'@'} an Agent manually.`,askBeforeRecruitment:`Ask before adding an Agent`,askBeforeRecruitmentMeta:`When no Agent can be reused, wait for confirmation before creating one.`,saving:`Saving the project collaboration policy…`,saved:`Project policy saved.`,loadFailed:`Project policy is temporarily unavailable.`,saveFailed:`Project policy could not be saved.`},agentType:{coordinator:`Coordinator`,durable:`Durable`,hr:`AR`,temporary:`Temporary`},status:{all:`All statuses`,active:`Available`,inactive:`Inactive`,archived:`Archived`},assignmentStatus:{active:`Assigned`,ended:`Ended`,unassigned:`Unassigned`,replaced:`Replaced`},taskStatus:{awaiting_recruitment:`Awaiting recruitment`,queued:`Queued`,running:`Running`,paused:`Paused`,failed:`Failed`,awaiting_review:`Awaiting review`,completed:`Completed`,cancelled:`Cancelled`,blocked:`Blocked`,idle:`Idle`},fields:{project:`Project`,agentId:`Agent ID`,occupationEmoji:`Occupation emoji`,responsibility:`Responsibility`,capabilities:`Capabilities`,initialPreferences:`Startup conventions`,status:`Status`,updatedAt:`Last updated`,agentType:`Identity type`,defaultModelStrategy:`Default model strategy`,executorPolicy:`Executor policy`,modelIntent:`Provider-neutral intent`,allowList:`Locked allow-list`,assignments:`Assignments`,memoryScope:`Memory boundary`,scope:`Scope`,assignmentModel:`Assignment strategy`,collaborators:`Collaborators`,actualExecution:`Actual execution`,executionSummary:`Execution summary`,workerEventEvidence:`Worker event evidence`,reportedStaffingDecision:`Reported staffing decision`,executionEnvironment:`Execution environment`,toolsUsed:`Tools used`,sourceApplication:`Source application`,sourceSession:`Source session`,workerSession:`Worker session`,reporterSession:`Reporting session`,tokenUsage:`Token usage`,reportedAt:`Reported at`,workSummary:`Work summary`,terminalStatus:`Terminal status`,actualModel:`Actual model`,worker:`Worker`,coordinator:`Coordinator Agent`,candidateAgents:`Candidate Agents`,complexity:`Complexity`,parallelPlan:`Parallel plan`,run:`Run`,recruitment:`Recruitment source`,strategySource:`Strategy source`,reason:`Reason`,matchBasis:`Match basis`},participantRoles:{lead:`Lead`,collaborator:`Collaborator`},sections:{assignments:`Project assignments & history`,strategy:`Model strategy & executors`,tasks:`Tasks & collaboration`,activity:`Contribution activity`,clients:`Clients`,routing:`Routing rules`,learning:`Candidate evidence`,recruitment:`Recruitment events`},detail:{choose:`Select an Agent to inspect its responsibilities`,noRun:`No run recorded`,stateReported:`State reported; run evidence is not reported`,refresh:`Refresh verified data`,notLoaded:`Verified data for this section has not been loaded.`,loading:{assignments:`Loading project assignments and history…`,tasks:`Loading tasks and collaboration records…`,activity:`Loading contribution activity…`,recruitments:`Loading recruitment events…`,executors:`Loading the executor directory…`,routingRules:`Loading routing rules…`,learning:`Loading candidate learning evidence…`},sectionUnavailable:`Verified data for this section is temporarily unavailable.`,noAssignments:`No project assignments reported.`,noTasks:`No task history.`,noExecutionSummary:`No real participating executor was reported.`,notReportedActualExecution:`Actual execution evidence was not reported.`},strategy:{flexible:`flexible`,locked:`locked`,providerNeutral:`The default strategy is provider-neutral; executor, model, and connection state are never inferred.`,noAllowList:`No locked allow-list; executor availability is not reported.`,lockedUnavailable:`No locked executor is available; tasks stay queued.`,availabilityUnreported:`Availability not reported`,actualUnreported:`Actual use not reported`},activity:{aria:`Daily contribution activity`,empty:`No verified completed, failed, or cancelled history.`,noTasks:`No task summary for this day.`},clients:{codex:`Codex`,claude:`Claude`,claude_code:`Claude Code`,cursor:`Cursor`,gemini_cli:`Gemini CLI`,kiro:`Kiro`,other:`Other client`,allowed:`Allowed`,notAllowed:`Not allowed`,observed:`{count} observed calls`,observedAny:`Observed use reported`,unreported:`Actual use not reported`,integrationUnreported:`Integration status not reported`,empty:`Allowed clients, observed use, and integration status are not reported.`},tokenSources:{executor:`Executor`,host:`Host`,dingdong:`DingDong`},routing:{empty:`No routing rules configured.`,priorityNote:`Only existing rules are shown.`,addExecutor:`Register executor`,editExecutor:`Edit executor`,addRule:`Add rule`,disable:`Disable`,updateFailed:`Could not update the routing rule.`,authorize:`Authorize`,revoke:`Revoke authorization`,authorizing:`Saving executor authorization status…`,revoking:`Saving executor revocation status…`,authorizeReason:`Console authorized executor`,revokeReason:`Console revoked executor authorization`,authorizationFailed:`Could not update executor authorization.`,disabling:`Saving the routing rule disabled status…`,editor:{executorCreateTitle:`Register executor`,executorEditTitle:`Edit executor`,ruleCreateTitle:`Add routing rule`,executorId:`Executor ID`,displayName:`Display name`,executorKind:`Kind`,priority:`Global priority`,capabilities:`Capabilities`,healthRequired:`Require health check`,scope:`Rule scope`,taskId:`Task ID`,workKind:`Work kind`,executorIds:`Allowed executor IDs`,executorIdsPlaceholder:`One real executor ID per line`,requiredCapabilities:`Required capabilities`,evidenceNote:`Authorization and health come from backend reports.`,ruleNote:`Rules only affect candidate matching; they do not change an Agent locked policy.`,executorRequired:`Enter an executor ID, name, and valid priority.`,ruleRequired:`Enter a work kind, executor ID, and reason.`,save:`Save`,savingExecutor:`Saving the executor directory record…`,savingRule:`Saving the routing rule…`,saveFailed:`Could not save the directory entry or rule.`}},learning:{neutral:`Neutral`,recorded:`Evidence recorded`,samples:`{count} samples`,recent:`{count} recent weighted`,score:`Reported score {score}`,decayUnreported:`Decay basis not reported`,ignore:`Ignore`,reset:`Reset`,ignoring:`Saving the learning evidence ignore status…`,resetting:`Saving the learning evidence reset status…`,resetUnavailable:`Project, work-kind, or executor evidence is missing; reset is unavailable.`,updateFailed:`Could not update learning evidence.`,empty:`No real learning evidence; no score or candidate preference is shown.`,note:`Only used to rank peer candidates.`},source:{testRole:`Test role`,cleanup:`Clean up test role`,cleanupLoading:`Cleaning up the test role…`,cleanupFailed:`Could not clean up the test role.`},recruitment:{hr:`AR Agent`,trigger:`Trigger client`,reason:`Recruitment reason`,time:`Time`,testSource:`Test source`,empty:`No matching real recruitment record.`,policy:`Recruitment confirmation`,automatic:`Automatic recruitment`,requireConfirmation:`Require confirmation`,policyUpdateFailed:`Could not update recruitment confirmation policy.`,approve:`Approve`,cancel:`Cancel`,approving:`Submitting the recruitment approval…`,cancelling:`Submitting the recruitment cancellation…`,approveReason:`User approved recruitment event`,cancelReason:`User cancelled recruitment event`,decisionFailed:`Could not process the recruitment event.`},dialog:{createTitle:`Add project Agent`,editTitle:`Edit project Agent`,saveCreate:`Create Agent`,saveEdit:`Save changes`,saving:`Saving the project Agent…`,projectPlaceholder:`Select a project`,agentIdPlaceholder:`For example, design-agent`,namePlaceholder:`For example, Design Agent`,occupationEmojiPlaceholder:`For example, 🎛️`,responsibilityPlaceholder:`Describe the work assigned to this Agent.`,capabilitiesPlaceholder:`One per line, for example:
8
+ 可用性审查`,preferencesPlaceholder:`每行一项,仅用于初始协作方式。`,idLocked:`创建后 Agent ID 不可修改;项目通过独立分配管理。`,allowListPlaceholder:`每行一个真实 executor ID;不填写不会猜测可用项。`,required:`请填写 Agent ID、名称和负责范围。`,occupationEmojiInvalid:`职业 emoji 只能填写一个 emoji。`,spaceUnavailable:`当前空间不可用,无法保存 Agent。`,initialAssignmentReason:`从 Agent 名录创建首条项目分配`,projectUnavailable:`所选项目已不可用,请重新选择。`,duplicate:`能力与启动约定不能包含重复项。`,saveFailed:`项目 Agent 保存失败。`},assignmentDialog:{assign:`分配项目`,end:`解除`,replace:`替换`,assignTitle:`分配项目职责`,endTitle:`解除项目分配`,replaceTitle:`替换项目 Agent`,replacement:`替换为`,replacementPlaceholder:`选择已有 Agent`,workKinds:`工作类型`,workKindsPlaceholder:`每行一项`,reasonPlaceholder:`记录分配、解除或替换原因。`,required:`请填写职责和原因。`,replacementRequired:`请选择替换 Agent。`,saveAssign:`保存分配`,saveChange:`保存变更`,saving:`正在保存 Agent 项目分配…`,saveFailed:`项目分配保存失败。`}},"en-US":{executionPlan:{title:`Execution plan`,reported:`Reported by Agent`,updated:`Last update`,unavailable:`Updates temporarily unavailable`,status:{pending:`Pending`,in_progress:`In progress`,awaiting_review:`Awaiting review`,completed:`Completed`,blocked:`Blocked`,skipped:`Skipped`}},firstTask:{title:`Start your first task`,hint:`In an AI client connected to Fuli, ask for the work from your project folder. Fuli registers the project and assigns a responsible Agent.`},diagnostics:{title:`Task start and execution status`,project:`Project scope`,assignment:`Agent assignment`,execution:`Actual execution`,projectState:{temporary:`Isolated temporary project`,identified:`Project linked`,unresolved:`Project not identified`},assignmentState:{assigned:`Task assignment recorded`,unreported:`No task assignment reported`},executionState:{unreported:`No worker report received`,queued:`Worker queued`,running:`Worker reported running`,ended:`Terminal status received`,reported:`Worker report received`},temporaryHint:`This task uses an isolated temporary project.`,summaryReason:{assignedOnly:`Assigned; waiting for the client to report results.`,unassigned:`No assignment or execution recorded yet.`,eventsOnly:`Execution events received; waiting for a summary.`}},advanced:`Advanced settings and diagnostics`,taskDetails:`Collaboration and execution details`,profileDetails:`Agent profile`,conversations:{title:`Conversations and memory`,scope:`Context scope`,global:`Global`,hint:`Resume across clients with relevant context loaded on demand.`,loading:`Loading conversations…`,loadFailed:`Could not load conversations. Try again.`,empty:`No saved conversations in this scope yet.`,untitled:`Untitled conversation`,compacted:`Compacted`,recent:`Recent`,rawRetained:`Compaction never deletes originals.`,loadingMessages:`Loading original messages…`,more:`Load next messages`,noMessages:`No original messages available yet.`,settings:`Memory settings`,loadingPolicy:`Loading memory settings…`,capture:`Save this Agent’s conversations in this scope`,compactAfterKb:`Compact after (KB)`,budget:`Context recovery budget`,budgetHint:`Past the threshold, earlier messages fold into a digest; originals are always kept.`,invalidPolicy:`Use 8–1024 KB for compaction and 512–16000 for the budget.`,save:`Save memory settings`,saving:`Saving memory settings…`,saved:`Memory settings saved.`,user:`User`,assistant:`Agent`,tool:`Tool`,copyContinuation:`Copy continuation`,copiedContinuation:`Continuation copied.`,copyContinuationFailed:`Could not copy automatically. Select and copy the instruction below.`,manualContinuation:`Continuation instruction`,memoryTitle:`Working memory`,loadingMemory:`Loading working memory…`,memoryFailed:`Could not load working memory. Try again.`,memoryEmpty:`No checkpointed working memory in this scope yet.`,memoryMeta:`Revision {revision} · {source} · {time}`,memoryAuthority:`Working memory is task-checkpointed working context, not human-confirmed knowledge.`,exportMemory:`Export this scope’s working memory as Markdown`,exportingMemory:`Exporting working memory…`,exportedMemory:`Download started from a fresh database read. FULI stays the source of truth; edits to the file are not imported.`,exportMemoryFailed:`Could not export working memory. Try again.`,memory:{decisions:`Decisions`,openThreads:`Open work`,nextActions:`Next actions`},digestTitle:`Compacted extract`,digestHint:`Automatic extract, not verified: original lines picked from earlier messages by fixed rules. It is not working memory and may miss or mislabel content; the originals below are authoritative.`,kinds:{request:`Request`,decision:`Decision`,correction:`Correction`,open:`Open`,method:`Method`},truncated:`truncated`,omitted:`{count} more lines were not extracted or were dropped for space; see the originals.`},workHistory:{title:`Work history`,loading:`Loading employee work records…`,loadFailed:`Could not load work records. Try again.`,empty:`No work records for this project yet.`,reported:`Reported`,completed:`Completed`,incomplete:`Incomplete`,failed:`Failed`,no_change:`No changes`,unreported:`Summary missing`,running:`In progress`},team:{hr:`AR`,manager:`Project manager`,lead:`Project lead`,noLead:`Project lead required`,autoGrow:`Add new employees to the team`,unavailableMember:`Unavailable member`,removeUnavailable:`Uncheck to remove`,autoGrowMeta:`New long-term Agents join the team; the first becomes lead.`,unavailable:`Project lead unavailable; complete the handoff`,summary:`Talk to the lead; members work by specialty.`,members:`Team members`,edit:`Manage team`,save:`Save team`},aria:`Project Agent directory`,title:`Agents`,listLabel:`Space Agent list`,notReported:`Not reported`,noToolsUsed:`No tools used`,searchLabel:`Search Agents`,searchPlaceholder:`Search name, ID, responsibility, or capability`,add:`Add Agent`,edit:`Edit`,saved:`Project Agent saved.`,retry:`Reload`,loading:`Loading the project Agent directory…`,loadError:`Project Agents are temporarily unavailable.`,emptyTitle:`No project Agents yet`,emptyCopy:`Start a project task and AR will staff an Agent.`,noMatchTitle:`No matching Agents`,noMatchCopy:`Change the project, status, or search filters.`,stats:{total:`{count} Agents`,active:`{count} available`,assignments:`{count} assignments`,projects:`Across {count} projects`,noOnlineClaim:`Configured is not online; only reports count`},coordination:{aria:`Agent collaboration policy for {project}`,title:`Project collaboration`,loading:`Loading the project collaboration policy…`,autoReuse:`Reuse the previous Agent`,autoReuseMeta:`New tasks go to the lead, or the last Agent if none. Off: {'@'} an Agent manually.`,askBeforeRecruitment:`Ask before adding an Agent`,askBeforeRecruitmentMeta:`When no Agent can be reused, wait for confirmation before creating one.`,saving:`Saving the project collaboration policy…`,saved:`Project policy saved.`,loadFailed:`Project policy is temporarily unavailable.`,saveFailed:`Project policy could not be saved.`},agentType:{coordinator:`Coordinator`,durable:`Durable`,hr:`AR`,temporary:`Temporary`},status:{all:`All statuses`,active:`Available`,inactive:`Inactive`,archived:`Archived`},assignmentStatus:{active:`Assigned`,ended:`Ended`,unassigned:`Unassigned`,replaced:`Replaced`},taskStatus:{awaiting_recruitment:`Awaiting recruitment`,queued:`Queued`,running:`Running`,paused:`Paused`,failed:`Failed`,awaiting_review:`Awaiting review`,completed:`Completed`,cancelled:`Cancelled`,blocked:`Blocked`,idle:`Idle`},fields:{project:`Project`,agentId:`Agent ID`,occupationEmoji:`Occupation emoji`,responsibility:`Responsibility`,capabilities:`Capabilities`,initialPreferences:`Startup conventions`,status:`Status`,updatedAt:`Last updated`,agentType:`Identity type`,defaultModelStrategy:`Default model strategy`,executorPolicy:`Executor policy`,modelIntent:`Provider-neutral intent`,allowList:`Locked allow-list`,assignments:`Assignments`,memoryScope:`Memory boundary`,scope:`Scope`,assignmentModel:`Assignment strategy`,collaborators:`Collaborators`,actualExecution:`Actual execution`,executionSummary:`Execution summary`,workerEventEvidence:`Worker event evidence`,reportedStaffingDecision:`Reported staffing decision`,executionEnvironment:`Execution environment`,toolsUsed:`Tools used`,sourceApplication:`Source application`,sourceSession:`Source session`,workerSession:`Worker session`,reporterSession:`Reporting session`,tokenUsage:`Token usage`,reportedAt:`Reported at`,workSummary:`Work summary`,terminalStatus:`Terminal status`,actualModel:`Actual model`,worker:`Worker`,coordinator:`Coordinator Agent`,candidateAgents:`Candidate Agents`,complexity:`Complexity`,parallelPlan:`Parallel plan`,run:`Run`,recruitment:`Recruitment source`,strategySource:`Strategy source`,reason:`Reason`,matchBasis:`Match basis`},participantRoles:{lead:`Lead`,collaborator:`Collaborator`},sections:{assignments:`Project assignments & history`,strategy:`Model strategy & executors`,tasks:`Tasks & collaboration`,activity:`Contribution activity`,clients:`Clients`,routing:`Routing rules`,learning:`Candidate evidence`,recruitment:`Recruitment events`},detail:{choose:`Select an Agent to inspect its responsibilities`,noRun:`No run recorded`,stateReported:`State reported; run evidence is not reported`,refresh:`Refresh verified data`,notLoaded:`Verified data for this section has not been loaded.`,loading:{assignments:`Loading project assignments and history…`,tasks:`Loading tasks and collaboration records…`,activity:`Loading contribution activity…`,recruitments:`Loading recruitment events…`,executors:`Loading the executor directory…`,routingRules:`Loading routing rules…`,learning:`Loading candidate learning evidence…`},sectionUnavailable:`Verified data for this section is temporarily unavailable.`,noAssignments:`No project assignments reported.`,noTasks:`No task history.`,noExecutionSummary:`No real participating executor was reported.`,notReportedActualExecution:`Actual execution evidence was not reported.`},strategy:{flexible:`flexible`,locked:`locked`,providerNeutral:`The default strategy is provider-neutral; executor, model, and connection state are never inferred.`,noAllowList:`No locked allow-list; executor availability is not reported.`,lockedUnavailable:`No locked executor is available; tasks stay queued.`,availabilityUnreported:`Availability not reported`,actualUnreported:`Actual use not reported`},activity:{aria:`Daily contribution activity`,empty:`No verified completed, failed, or cancelled history.`,noTasks:`No task summary for this day.`},clients:{codex:`Codex`,claude:`Claude`,claude_code:`Claude Code`,cursor:`Cursor`,gemini_cli:`Gemini CLI`,kiro:`Kiro`,other:`Other client`,allowed:`Allowed`,notAllowed:`Not allowed`,observed:`{count} observed calls`,observedAny:`Observed use reported`,unreported:`Actual use not reported`,integrationUnreported:`Integration status not reported`,empty:`Allowed clients, observed use, and integration status are not reported.`},tokenSources:{executor:`Executor`,host:`Host`,dingdong:`DingDong`},routing:{empty:`No routing rules configured.`,priorityNote:`Only existing rules are shown.`,addExecutor:`Register executor`,editExecutor:`Edit executor`,addRule:`Add rule`,disable:`Disable`,updateFailed:`Could not update the routing rule.`,authorize:`Authorize`,revoke:`Revoke authorization`,authorizing:`Saving executor authorization status…`,revoking:`Saving executor revocation status…`,authorizeReason:`Console authorized executor`,revokeReason:`Console revoked executor authorization`,authorizationFailed:`Could not update executor authorization.`,disabling:`Saving the routing rule disabled status…`,editor:{executorCreateTitle:`Register executor`,executorEditTitle:`Edit executor`,ruleCreateTitle:`Add routing rule`,executorId:`Executor ID`,displayName:`Display name`,executorKind:`Kind`,priority:`Global priority`,capabilities:`Capabilities`,healthRequired:`Require health check`,scope:`Rule scope`,taskId:`Task ID`,workKind:`Work kind`,executorIds:`Allowed executor IDs`,executorIdsPlaceholder:`One real executor ID per line`,requiredCapabilities:`Required capabilities`,evidenceNote:`Authorization and health come from backend reports.`,ruleNote:`Rules only affect candidate matching; they do not change an Agent locked policy.`,executorRequired:`Enter an executor ID, name, and valid priority.`,ruleRequired:`Enter a work kind, executor ID, and reason.`,save:`Save`,savingExecutor:`Saving the executor directory record…`,savingRule:`Saving the routing rule…`,saveFailed:`Could not save the directory entry or rule.`}},learning:{neutral:`Neutral`,recorded:`Evidence recorded`,samples:`{count} samples`,recent:`{count} recent weighted`,score:`Reported score {score}`,decayUnreported:`Decay basis not reported`,ignore:`Ignore`,reset:`Reset`,ignoring:`Saving the learning evidence ignore status…`,resetting:`Saving the learning evidence reset status…`,resetUnavailable:`Project, work-kind, or executor evidence is missing; reset is unavailable.`,updateFailed:`Could not update learning evidence.`,empty:`No real learning evidence; no score or candidate preference is shown.`,note:`Only used to rank peer candidates.`},source:{testRole:`Test role`,cleanup:`Clean up test role`,cleanupLoading:`Cleaning up the test role…`,cleanupFailed:`Could not clean up the test role.`},recruitment:{hr:`AR Agent`,trigger:`Trigger client`,reason:`Recruitment reason`,time:`Time`,testSource:`Test source`,empty:`No matching real recruitment record.`,policy:`Recruitment confirmation`,automatic:`Automatic recruitment`,requireConfirmation:`Require confirmation`,policyUpdateFailed:`Could not update recruitment confirmation policy.`,approve:`Approve`,cancel:`Cancel`,approving:`Submitting the recruitment approval…`,cancelling:`Submitting the recruitment cancellation…`,approveReason:`User approved recruitment event`,cancelReason:`User cancelled recruitment event`,decisionFailed:`Could not process the recruitment event.`},dialog:{createTitle:`Add project Agent`,editTitle:`Edit project Agent`,saveCreate:`Create Agent`,saveEdit:`Save changes`,saving:`Saving the project Agent…`,projectPlaceholder:`Select a project`,agentIdPlaceholder:`For example, design-agent`,namePlaceholder:`For example, Design Agent`,occupationEmojiPlaceholder:`For example, 🎛️`,responsibilityPlaceholder:`Describe the work assigned to this Agent.`,capabilitiesPlaceholder:`One per line, for example:
9
9
  Interaction design
10
- Usability review`,preferencesPlaceholder:`One per line, used only to initialize collaboration.`,idLocked:`The Agent ID is stable after creation; projects are managed as separate assignments.`,allowListPlaceholder:`One real executor ID per line; availability is never inferred.`,required:`Agent ID, name, and responsibility are required.`,occupationEmojiInvalid:`Occupation emoji must contain only emoji characters.`,spaceUnavailable:`The current space is unavailable; the Agent cannot be saved.`,initialAssignmentReason:`Initial project assignment from the Agent directory`,projectUnavailable:`The selected project is no longer available. Choose another project.`,duplicate:`Capabilities and startup conventions cannot contain duplicates.`,saveFailed:`Could not save the project Agent.`},assignmentDialog:{assign:`Assign project`,end:`Unassign`,replace:`Replace`,assignTitle:`Assign project responsibility`,endTitle:`Unassign project`,replaceTitle:`Replace project Agent`,replacement:`Replace with`,replacementPlaceholder:`Select an existing Agent`,workKinds:`Work kinds`,workKindsPlaceholder:`One per line`,reasonPlaceholder:`Record why this assignment changed.`,required:`Responsibility and reason are required.`,replacementRequired:`Choose a replacement Agent.`,saveAssign:`Save assignment`,saveChange:`Save change`,saving:`Saving the Agent project assignment…`,saveFailed:`Could not save the project assignment.`}}},rh={"zh-CN":{overview:{title:`工作台`},preferences:{title:`偏好`,description:`全局与项目级的品味、个性和判断偏好。`},writingTaste:{title:`文风画像`},personalProjects:{title:`项目`,description:`本机私有项目、项目知识与按任务生效的协作偏好。`},projectAgents:{title:`Agents`},roundtable:{title:`圆桌`},employeeWorkbench:{title:`专属 Agent`},loadFailure:{title:`暂时无法打开页面`,resources:`页面文件加载失败,可能是界面刚更新。`,message:`页面没能加载。`,reload:`重新载入并打开`,dismiss:`留在当前页`},organizer:{title:`知识整理`},publicProjects:{title:`公共项目`,description:`发现、订阅和维护公共 Provider 上的项目。`},knowledge:{title:`知识`},about:{title:`关于`},settings:{title:`设置`},review:{title:`审核`,description:`个人发布确认与公共项目 Maintainer 审核。`},connections:{title:`连接`,description:`本地知识库状态、公共 Provider 与项目订阅。`}},"en-US":{overview:{title:`Workspace`},preferences:{title:`Preferences`,description:`Global and project taste, personality, and judgment preferences.`},writingTaste:{title:`Writing taste`},personalProjects:{title:`Projects`,description:`Private local projects, project knowledge, and task-scoped collaboration preferences.`},projectAgents:{title:`Agents`},roundtable:{title:`Roundtable`},employeeWorkbench:{title:`Specialist Agents`},loadFailure:{title:`This page could not open`,resources:`Page files could not load; the app may have just updated.`,message:`The page could not load.`,reload:`Reload and open`,dismiss:`Stay here`},organizer:{title:`Organize`},publicProjects:{title:`Public projects`,description:`Discover, subscribe to, and maintain projects on a public Provider.`},knowledge:{title:`Knowledge`},about:{title:`About`},settings:{title:`Settings`},review:{title:`Review`,description:`Personal publishing confirmation and public project Maintainer review.`},connections:{title:`Connections`,description:`Local knowledge status, public Providers, and project subscriptions.`}}},ih={"zh-CN":{aria:`设置`,connection:{title:`客户端接入`,description:`支持 MCP 工具调用的客户端均可尝试接入,无需指定模型。`,loading:`正在读取 MCP 接入配置…`,loadError:`暂时无法读取接入配置`,retry:`重试`,format:`配置格式`,formats:{standard:`通用 MCP`,vscode:`VS Code`,server:`仅服务配置`},copy:`复制 MCP 配置`,configuration:`MCP 接入配置`,copied:`已复制`,manual:`请选中下方配置手动复制。`,merge:`将 fuli 这一项合并到客户端的 MCP 设置中,保留已有服务。配置用于运行 FULI 的这台电脑。`,boundary:`通用接入提供工具与记忆;自动采集对话和唤醒会话需要客户端适配。`,guide:`接入说明`},peer:{title:`局域网圆桌(Beta)`,description:`在同一局域网的两台电脑之间,只向对方共享当前项目组长。配对、共享和撤销只能在本机完成。`,loading:`正在读取局域网圆桌…`,loadError:`暂时无法读取局域网圆桌`,retry:`重试`,off:`尚未配对。可以在这台电脑上主持,或粘贴另一台电脑的邀请。`,noAddress:`这台电脑没有可用的局域网地址。`,host:`在这台电脑上主持`,hostAddress:`本机地址`,hostName:`这台电脑的名称`,hostAction:`开始主持`,hosting:`正在开启局域网圆桌…`,join:`加入另一台电脑`,invitation:`邀请`,invitationPlaceholder:`粘贴 fuli-peer-invite:1:…`,joinName:`这台电脑的名称`,joinAction:`指纹一致,加入`,previewAction:`查看邀请`,previewing:`正在读取邀请…`,removalPending:`本机已停止共享。对方离线,恢复连接后会自动撤回配对。`,joining:`正在配对…`,fingerprint:`本机指纹`,coordinatorFingerprint:`对方指纹`,compare:`配对前请双方核对指纹。`,invite:`生成一次性邀请`,inviting:`正在生成邀请…`,inviteHint:`邀请十分钟内一次性有效。把邀请交给对方前,先核对指纹。`,copyInvite:`复制邀请`,copied:`已复制`,copyManual:`请选中下方邀请手动复制。`,shares:`共享项目组长`,sharesHint:`每个项目只共享当前组长;对方只能向该组长提问。成员任务仍由本机组长分派。交接组长后需重新共享,不会悄悄换成新人。`,noProjects:`没有可共享的项目。`,lead:`当前组长 {name}`,noLead:`这个项目还没有可用的组长`,clients:`可被唤醒的客户端`,folder:`本机项目文件夹(可选)`,folderHint:`只用于本机唤醒新会话,不会发给对方。`,leadChanged:`这个项目的组长已更换,取消勾选或重新保存后才会共享新的组长。`,leadUnavailable:`当前组长不可用,暂不向对方提供。`,saveShares:`保存共享`,savingShares:`正在保存共享项目组长…`,devices:`已配对设备`,online:`在线`,offline:`离线`,revoke:`撤销`,revoking:`正在撤销配对…`,disable:`关闭局域网圆桌`,disabling:`正在关闭局域网圆桌…`,disableHint:`关闭后停止监听、共享和信任已配对设备。`,clientsCodex:`Codex`,clientsClaude:`Claude Code`},loading:`正在读取运行设置…`,resources:{title:`资源占用`,loading:`正在读取内存与硬盘占用…`,memory:`内存`,disk:`硬盘`,available:`电脑可用 {value}`,partial:`部分组件暂时无法读取`,measuredAt:`内存更新于 {time}`,diskMeasuredAt:`硬盘更新于 {time}`,refresh:`刷新频率`,refreshUnit:`{seconds} 秒`,temporary:`其中 Neo4j 临时文件 {value}`,exclusionsContainer:`不含浏览器标签页及 Docker 共享虚拟机开销。`,exclusionsNative:`不含浏览器标签页内存。原生进程已计入。`,unavailable:`暂时无法获取资源数据`,components:{console:`管理服务`,personalProvider:`个人 Provider`,personalNeo4j:`个人 Neo4j`,workspaceProvider:`开发公共 Provider`,workspaceNeo4j:`开发公共 Neo4j`,application:`程序文件`,localData:`本地运行数据`,containerImages:`容器镜像`,containerWritable:`容器运行数据`,neo4jData:`Neo4j 数据`,neo4jLogs:`Neo4j 日志`}},ports:{title:`服务端口`,personal:`个人服务`,development:`公共服务`,developing:`开发中`,developmentMeta:`fuli-server 发布后,可配置已部署服务的域名。`,console:`管理界面`,personalProvider:`个人 Provider`,personalNeo4jHttp:`个人 Neo4j Browser`,personalNeo4jBolt:`个人 Neo4j Bolt`,workspaceProvider:`公共 Provider`,workspaceNeo4jHttp:`公共 Neo4j Browser`,workspaceNeo4jBolt:`公共 Neo4j Bolt`,active:`当前 {port}`},behavior:{title:`运行设置`,capture:`自动沉淀`,captureMeta:`把新的稳定会话知识写入本机`,agentAccess:`Agent 使用`,agentAccessMeta:`允许已连接的 Agent 调用 FULI`,lanAccess:`局域网访问`,lanAccessMeta:`允许同一可信网络中的设备访问管理界面`,runtimeMode:`图数据库运行方式`,runtimeModeMeta:`当前运行:{mode}`,runtimeRecommendation:`本机内存较小,推荐原生模式,避免虚拟机常驻内存`,runtimeModes:{native:`原生(低内存)`,container:`容器(兼容)`},language:`界面语言`,zh:`简体中文`,en:`English`},conversationLaunchers:{title:`会话打开方式`,enabled:`启用`,sourceId:`来源 ID · {id}`,idFormat:`可打开的 ID`,appName:`打开 App`,urlTemplate:`链接模板`,idFormats:{any:`任意非空 ID`,uuid:`仅 UUID`},idFormatMeta:`Codex 需要原生会话 UUID。`,applications:{codex:`Codex`,claude:`Claude`,claude_code:`Claude Code`,cursor:`Cursor`,gemini_cli:`Gemini CLI`,kiro:`Kiro`,other:`其他 Agent`}},save:`保存设置`,saving:`正在保存运行设置…`,saved:`设置已保存并生效`,savedShort:`已保存`,applying:`正在应用设置…`,applyRestored:`应用失败,已恢复原设置。`,applyFailed:`设置未能生效,请重试。`,applyTimeout:`暂时无法确认设置是否生效,请稍后刷新查看。`,applyUnavailable:`当前服务无法自动应用设置,请更新本地服务。`,loadError:`无法读取设置`,saveError:`无法保存设置`},"en-US":{connection:{title:`Client connection`,description:`Connect clients that support MCP tool calls. No specific model is required.`,loading:`Loading MCP connection configuration…`,loadError:`Connection configuration is unavailable`,retry:`Retry`,format:`Configuration format`,formats:{standard:`Standard MCP`,vscode:`VS Code`,server:`Server only`},copy:`Copy MCP configuration`,configuration:`MCP connection configuration`,copied:`Copied`,manual:`Select and copy the configuration manually.`,merge:`Merge the fuli entry into your client’s MCP settings and keep existing servers. This configuration is for the computer running FULI.`,boundary:`MCP provides tools and memory. Automatic conversation capture and wake/resume need a client adapter.`,guide:`Connection guide`},peer:{title:`LAN roundtable (Beta)`,description:`On the same LAN, share only each project’s current lead with another computer. Pairing, sharing and revoking stay on this device.`,loading:`Loading the LAN roundtable…`,loadError:`The LAN roundtable is unavailable`,retry:`Retry`,off:`Not paired yet. Host on this computer, or paste an invitation from another one.`,noAddress:`This computer has no usable LAN address.`,host:`Host on this computer`,hostAddress:`This computer’s address`,hostName:`Name of this computer`,hostAction:`Start hosting`,hosting:`Opening the LAN roundtable…`,join:`Join another computer`,invitation:`Invitation`,invitationPlaceholder:`Paste fuli-peer-invite:1:…`,joinName:`Name of this computer`,joinAction:`Fingerprints match · Join`,previewAction:`Review invitation`,previewing:`Reading invitation…`,removalPending:`Sharing has stopped on this device. Pairing will be removed when the coordinator is available.`,joining:`Pairing…`,fingerprint:`This device`,coordinatorFingerprint:`The other device`,compare:`Compare fingerprints before you share an invitation.`,invite:`Create a one-use invitation`,inviting:`Creating an invitation…`,inviteHint:`The invitation is valid once for ten minutes. Compare fingerprints before you send it.`,copyInvite:`Copy invitation`,copied:`Copied`,copyManual:`Select and copy the invitation manually.`,shares:`Shared project leads`,sharesHint:`Each project shares only its current lead. The other device can ask that lead, not members. Member work is still dispatched here. After a handoff, share again; the new lead is never substituted silently.`,noProjects:`No projects can be shared.`,lead:`Current lead {name}`,noLead:`This project has no available lead`,clients:`Clients that may be woken`,folder:`Local project folder (optional)`,folderHint:`Used only to start a new session on this computer. It is never sent to the other device.`,leadChanged:`This project’s lead changed. Uncheck or save again to share the new lead.`,leadUnavailable:`The current lead is unavailable and is not offered to the other device.`,saveShares:`Save sharing`,savingShares:`Saving shared project leads…`,devices:`Paired devices`,online:`Online`,offline:`Offline`,revoke:`Revoke`,revoking:`Revoking the device…`,disable:`Turn off the LAN roundtable`,disabling:`Turning off the LAN roundtable…`,disableHint:`This stops listening, sharing and trusting paired devices.`,clientsCodex:`Codex`,clientsClaude:`Claude Code`},aria:`Settings`,loading:`Loading runtime settings…`,resources:{title:`Resource usage`,loading:`Reading memory and disk usage…`,memory:`Memory`,disk:`Disk`,available:`{value} available on this device`,partial:`Some components are temporarily unavailable`,measuredAt:`Memory updated {time}`,diskMeasuredAt:`Disk updated {time}`,refresh:`Refresh interval`,refreshUnit:`{seconds} seconds`,temporary:`{value} is Neo4j temporary data`,exclusionsContainer:`Browser tabs and shared Docker VM overhead are excluded.`,exclusionsNative:`Browser-tab memory is excluded. Native processes are included.`,unavailable:`Resource data is temporarily unavailable`,components:{console:`Management service`,personalProvider:`Personal Provider`,personalNeo4j:`Personal Neo4j`,workspaceProvider:`Development public Provider`,workspaceNeo4j:`Development public Neo4j`,application:`Application files`,localData:`Local runtime data`,containerImages:`Container images`,containerWritable:`Container runtime data`,neo4jData:`Neo4j data`,neo4jLogs:`Neo4j logs`}},ports:{title:`Service ports`,personal:`Personal services`,development:`Public service`,developing:`In development`,developmentMeta:`Configure the deployed server domain after fuli-server is published.`,console:`Management UI`,personalProvider:`Personal Provider`,personalNeo4jHttp:`Personal Neo4j Browser`,personalNeo4jBolt:`Personal Neo4j Bolt`,workspaceProvider:`Public Provider`,workspaceNeo4jHttp:`Public Neo4j Browser`,workspaceNeo4jBolt:`Public Neo4j Bolt`,active:`Active: {port}`},behavior:{title:`Runtime settings`,capture:`Automatic capture`,captureMeta:`Write new, stable conversation knowledge to this device`,agentAccess:`Agent access`,agentAccessMeta:`Allow connected Agents to use FULI`,lanAccess:`LAN access`,lanAccessMeta:`Allow devices on the same trusted network to open the console`,runtimeMode:`Graph database runtime`,runtimeModeMeta:`Active: {mode}`,runtimeRecommendation:`Native mode is recommended on this low-memory device to avoid VM overhead`,runtimeModes:{native:`Native (low memory)`,container:`Container (compatible)`},language:`Interface language`,zh:`简体中文`,en:`English`},conversationLaunchers:{title:`Conversation openers`,enabled:`Enabled`,sourceId:`Source ID · {id}`,idFormat:`Allowed IDs`,appName:`Open with app`,urlTemplate:`URL template`,idFormats:{any:`Any non-empty ID`,uuid:`UUID only`},idFormatMeta:`Codex needs the native conversation UUID.`,applications:{codex:`Codex`,claude:`Claude`,claude_code:`Claude Code`,cursor:`Cursor`,gemini_cli:`Gemini CLI`,kiro:`Kiro`,other:`Other Agent`}},save:`Save settings`,saving:`Saving runtime settings…`,saved:`Settings saved and applied`,savedShort:`Saved`,applying:`Applying settings…`,applyRestored:`Could not apply settings. Previous settings were restored.`,applyFailed:`Settings could not be applied. Please retry.`,applyTimeout:`Could not confirm whether settings were applied. Refresh to check again.`,applyUnavailable:`This service cannot apply settings automatically. Update the local service.`,loadError:`Could not load settings`,saveError:`Could not save settings`}},ah={"zh-CN":{status:{collecting:`收集中`,preview_ready:`初稿已形成`,active:`已启用`},milestone:{aria:`文风画像成熟度`,collectingTitle:`文风画像`,previewTitle:`文风画像 · 初稿`,activeTitle:`文风画像 · 已形成`,rules:`{current}/{target} 条规则`,sessions:`{current}/{target} 次会话`,open:`查看`},page:{loading:`正在读取文风画像…`,back:`返回偏好`,collectingTitle:`文风画像收集中`,collectingCopy:`跨多个会话积累到足够证据,或你确认足够多的规则后生成。`,previewTitle:`文风画像初稿`,previewCopy:`已有重复证据,等你确认。`,activeTitle:`你的文风`,activeCopy:`Agent 写作时会遵循这些规则;当前请求优先。`,readinessAria:`文风画像生成条件`,rulesTitle:`当前规则`,rulesEmpty:`还没有识别到文风规则。`,profileUnavailable:`暂时无法读取文风画像。`,edit:`修改`,confirm:`确认`,conflict:`存在冲突`,evidence:`{evidence} 条证据`,sessions:`{sessions} 次会话`,globalScope:`个人全局`,projectScope:`仅 {project}`,updated:`更新于 {time}`,contexts:`适用:{contexts}`,agentPreviewTitle:`Agent 使用的规则`,showAgentPreview:`查看 Agent 规则`,hideAgentPreview:`收起 Agent 规则`},evidenceStatus:{Confirmed:`已确认`,Observed:`已观察`,"Working hypothesis":`工作假设`},criteria:{rules:`稳定规则`,evidence:`支持证据`,sessions:`独立会话`,days:`观察日期`,confirmed:`用户确认`,conflicts:`未解决冲突`,progress:`{current} / {target}`,conflictsProgress:`{current} 个`}},"en-US":{status:{collecting:`Collecting`,preview_ready:`Draft ready`,active:`Active`},milestone:{aria:`Writing taste readiness`,collectingTitle:`Writing taste`,previewTitle:`Writing taste · draft`,activeTitle:`Writing taste · ready`,rules:`{current}/{target} rules`,sessions:`{current}/{target} sessions`,open:`View`},page:{loading:`Loading writing preferences and rule evidence…`,back:`Back to preferences`,collectingTitle:`Still collecting writing preferences`,collectingCopy:`The profile appears after evidence spans multiple sessions and days, or after you directly confirm enough rules.`,previewTitle:`Writing-taste draft`,previewCopy:`These patterns have repeated evidence but still need your confirmation.`,activeTitle:`Your writing taste`,activeCopy:`Agents use confirmed and observed rules; the current request always wins.`,readinessAria:`Writing taste generation criteria`,rulesTitle:`Current rules`,rulesEmpty:`No writing-related preference has been identified yet.`,profileUnavailable:`Writing taste is temporarily unavailable.`,edit:`Edit`,confirm:`Confirm`,conflict:`Conflict`,evidence:`{evidence} evidence records`,sessions:`{sessions} sessions`,globalScope:`Personal global`,projectScope:`{project} only`,updated:`Updated {time}`,contexts:`Applies to: {contexts}`,agentPreviewTitle:`Rules used by Agents`,showAgentPreview:`View Agent rules`,hideAgentPreview:`Hide Agent rules`},evidenceStatus:{Confirmed:`Confirmed`,Observed:`Observed`,"Working hypothesis":`Working hypothesis`},criteria:{rules:`Stable rules`,evidence:`Supporting evidence`,sessions:`Independent sessions`,days:`Observation days`,confirmed:`User-confirmed`,conflicts:`Unresolved conflicts`,progress:`{current} / {target}`,conflictsProgress:`{current}`}}},oh={"zh-CN":{recruit:`聘请 Agent`,workbench:`Agent 工作台`,directory:`专属 Agent`,project:`分配到项目`,unassigned:`暂不分配`,choose:`选择专属 Agent`,capabilities:`擅长`,permissions:`项目权限`,boardRead:`读取所选项目的看板`,boardWrite:`创建、修改任务与状态`,noExecutor:`聘请不会启动模型或外部执行器。`,hostReady:`工作台已就绪 · 随 FULI 运行`,installRequired:`工作台尚未安装;聘请只创建 Agent 身份。`,installHelp:`构建 Agent 包后运行 fl employee install <目录>。`,recruitName:`聘请 {name}`,rehire:`恢复 {name}`,assign:`保存负责范围`,recruited:`已聘请`,recruiting:`正在保存负责范围…`,open:`打开工作台`,close:`关闭`,cancel:`取消`,retry:`重试`,loading:`正在读取 Agent 目录…`,manageProjects:`管理负责项目`,manageProjectsTitle:`管理 {name} 的项目`,loadingScope:`正在读取项目负责范围…`,loadingBoard:`正在读取任务看板…`,loadingTask:`正在读取任务详情…`,loadingShare:`正在读取项目分享状态…`,loadingReport:`正在读取公开报告…`,invalidScope:`所选项目不在 Jefa 的负责范围内,请检查项目链接。`,task:{create:`新建任务`,detail:`任务详情`,project:`所属项目`,chooseProject:`选择项目`,title:`任务名称`,summary:`任务说明`,priority:`优先级`,criteria:`验收条件(每行一条)`,tags:`标签(逗号分隔)`,save:`保存任务`,saving:`正在保存任务…`,reload:`重新读取`,priorities:{critical:`紧急`,high:`高`,medium:`中`,low:`低`}},share:{title:`对外报告`,projects:`分享项目`,scopeHint:`选择全部或部分项目,生成一个汇总报告链接。`,generate:`生成分享链接`,generating:`正在生成分享链接…`,revoking:`正在关闭分享…`,link:`分享链接`,copy:`复制链接`,copied:`已复制`,preview:`预览报告`,active:`已开放分享`,revoke:`关闭分享`,local:`当前地址只有本机能访问。`,loadFailed:`部分项目的分享状态读取失败,请重试。`,partial:`部分项目没能开启分享,请重试。`,copyFailed:`自动复制失败,请选中链接手动复制。`,unavailable:`报告链接无效、分享已关闭,或项目已不可访问。`,unavailableCount:`{count} 个项目已关闭分享或暂不可访问。`,readOnly:`只读报告`,disclosure:`只公开任务名称、优先级和状态。`},shareContent:{emptyTitle:`暂无可公开的任务`,emptyReport:`这 {count} 个项目还没有公开的任务。`,emptySelection:`所选项目暂无公开任务。`,publicCount:`报告将展示 {count} 条公开任务`,verifyContent:`生成时会校验公开内容,不会自动公开私有任务。`},allProjects:{option:`全部项目`,optionMeta:`{count} 个项目`,title:`任务看板`,projectFilter:`项目范围`,projectFilterHint:`只影响当前看板。`,search:`搜索任务`,searchPlaceholder:`搜索任务、项目或标签`,boardLabel:`任务看板`,partial:`已显示 {loaded}/{total} 个项目,{failed} 个项目读取失败。`,truncated:`有 {count} 个项目超过当前读取上限,暂未展示全部任务。`,empty:`所有项目都很清爽`,emptyHint:`当前负责的项目还没有任务。`,noProjectsVisible:`没有显示任何项目`,noProjectsVisibleHint:`重新勾选项目后,就能继续查看对应任务。`,showAllProjects:`显示全部项目`,noMatch:`没有匹配的任务`,noMatchHint:`换个关键词,或清空搜索后查看全部任务。`,columnEmpty:`暂无任务`,taskCount:`{count} 个任务`,openTask:`在 {project} 中查看任务:{task}`,dragHint:`拖动卡片更新状态;键盘:空格拿起,方向键移动,空格放下。`,dragTask:`移动任务:{task}`,saving:`正在保存任务状态…`,dragLifted:`已拿起“{task}”,当前位置:{status}。`,dragMoved:`已移动到:{status}。`,dragDropped:`已将“{task}”移动到:{status}。`,dragCancelled:`已取消移动。`,moveFailed:`任务移动失败,已恢复原状态:{error}`,refreshRequired:`任务版本信息缺失,请刷新看板后重试。`,status:{planned:`待办`,active:`进行中`,blocked:`阻塞`,review:`待确认`,done:`已完成`}},assignedCount:`负责 {count} 个项目`,noAssignedProjects:`尚未分配项目`,manageHint:`可同时负责多个项目。`,filterLabel:`筛选项目`,filterHint:`仅筛选 Agent 列表,不改变任何负责范围。`,filterEmpty:`未选择项目`,allProjectsFilter:`全部项目`,success:`{name} 已加入`,successUnassigned:`可以稍后为 Agent 分配项目。`,successMultiple:`现在负责 {count} 个项目。`,scopeSaved:`负责范围已保存`,scopeRemoved:`将移出 {count} 个项目,项目和任务数据会保留。`,reloadScope:`重新读取负责范围`,scope:{rule:`管理范围规则`,continuousAll:`全部项目 · 自动纳入`,onlySelected:`只管理所选项目`,allHint:`现在和以后的项目都由 {name} 管理;取消勾选即排除。`,selectedHint:`只管理下方勾选的项目,不自动纳入新项目。`,excludeHint:`取消勾选的项目不再经过这位 Agent。`,excludedCount:`已排除 {count} 个项目。`,successAll:`当前负责 {count} 个项目,以后新建的项目也会自动纳入。`,label:`负责项目`,all:`全部项目`,allSummary:`全部项目 · {count} 个`,selected:`已选 {count} 个项目`,search:`搜索项目`,invert:`反选`,multiple:`多选`,count:`已选 {selected} / 共 {total} 个项目`,done:`完成选择`,reset:`重置`,storageUnavailable:`浏览器无法保存筛选,重新打开后会丢失。`,noMatch:`没有匹配的项目`,empty:`暂无可选项目`,snapshotHint:`支持多选、全选后排除;新建项目需另行选择。`},titles:{heading:`会话标题`,mode:`整理方式`,style:`标题风格`,auto:`自动整理(客户端支持时)`,suggest:`只生成建议`,off:`不整理标题`,emoji:`Emoji + 类型`,text:`纯文字`,example:`格式示例`,exampleTask:`修复登录异常`,boundary:`参考任务优先级与类型;手动改过的标题不再覆盖。`},bole:{title:`团队`,allProjects:`全部项目与未归属`,viewLabel:`团队视图`,search:`搜索 Agent、任务或招募原因`,workFilter:`工作状态`,allWork:`全部状态`,withoutTask:`暂无任务`,allRoles:`全部角色`,clearFilters:`清空筛选`,resultCount:`{count} 条记录`,taskColumn:`当前任务`,projectsColumn:`所属项目`,moreProjects:`另 {count} 个项目`,noMatch:`没有匹配的记录,请调整筛选条件。`,overview:`人员概览`,loading:`正在读取团队成员、任务和招募记录…`,workingNow:`正在工作`,coveredProjects:`覆盖项目`,distribution:`人员分布`,currentWork:`团队成员`,recruitmentHistory:`Bole 工作记录`,noAgents:`还没有可展示的 Agent。`,noRecruitments:`还没有招募记录。`,idle:`暂无进行中的任务记录`,noProject:`未归属项目`,unknownTime:`时间未知`,taskLimit:`只统计最近 200 条任务。`,partialError:`部分人员信息暂时不可用,已保留能够读取的内容。`,types:{coordinator:`统筹 Agent`,durable:`固定 Agent`,hr:`AR Agent`,temporary:`临时 Agent`,other:`其他 Agent`},status:{awaiting_recruitment:`等待招募`,queued:`等待开始`,running:`进行中`,paused:`已暂停`,failed:`需要处理`,awaiting_review:`等待确认`,blocked:`已阻塞`}},createProject:`创建项目`,noProjects:`还没有项目,先聘请 Agent 或创建一个项目。`,noTemplates:`暂无可聘请的 Agent`,emptyWorkbench:`先选择要负责的项目`,unavailable:`这位专属 Agent 暂不可用。`,backToAgents:`返回项目 Agent`,loadError:`Agent 服务暂时不可用,请重试。`,errors:{runtime_unavailable:`工作台未安装或无法加载,请检查 Agent 包后重试。`,assignment_required:`这位 Agent 尚未获准管理此项目,请检查负责范围。`,project_not_found:`项目不可用,请选择有效项目。`,identity_conflict:`标识已被其他 Agent 使用,原有 Agent 未修改。`,reactivation_required:`这位 Agent 已停用,请明确恢复后再分配。`,assignment_scope_conflict:`负责范围已在别处改变。请重新读取,确认后再保存。`,assignment_update_incomplete:`负责范围没能全部保存,请刷新后核对。`}},"en-US":{recruit:`Hire an Agent`,workbench:`Agent workspace`,directory:`Specialist Agents`,project:`Assign to project`,unassigned:`Assign later`,choose:`Choose a specialist Agent`,capabilities:`Specialties`,permissions:`Project permissions`,boardRead:`Read the selected project board`,boardWrite:`Create and update tasks and status`,noExecutor:`Hiring does not start a model or external executor.`,hostReady:`Workbench ready · hosted by FULI`,installRequired:`Workspace not installed; hiring creates the Agent identity only.`,installHelp:`Build the Agent package, then run fl employee install <directory>.`,recruitName:`Hire {name}`,rehire:`Reactivate {name}`,assign:`Save project selection`,recruited:`Hired`,recruiting:`Saving project scope…`,open:`Open workspace`,close:`Close`,cancel:`Cancel`,retry:`Retry`,loading:`Reading Agent directory…`,manageProjects:`Manage assigned projects`,manageProjectsTitle:`Manage {name}’s projects`,loadingScope:`Reading assigned project scope…`,loadingBoard:`Reading the task board…`,loadingTask:`Reading task details…`,loadingShare:`Reading project sharing states…`,loadingReport:`Reading the public report…`,invalidScope:`The selected project is outside Jefa’s assigned scope. Check the project link.`,task:{create:`New task`,detail:`Task details`,project:`Project`,chooseProject:`Choose a project`,title:`Task name`,summary:`Description`,priority:`Priority`,criteria:`Acceptance criteria (one per line)`,tags:`Tags (comma-separated)`,save:`Save task`,saving:`Saving task…`,reload:`Reload`,priorities:{critical:`Critical`,high:`High`,medium:`Medium`,low:`Low`}},share:{title:`External report`,projects:`Projects to share`,scopeHint:`Choose all or selected projects for one report link.`,generate:`Create share link`,generating:`Creating share link…`,revoking:`Stopping sharing…`,link:`Share link`,copy:`Copy link`,copied:`Copied`,preview:`Preview report`,active:`Sharing enabled`,revoke:`Stop sharing`,local:`This address only works on this computer.`,loadFailed:`Some sharing states could not be loaded. Try again.`,partial:`Some projects could not be shared. Try again.`,copyFailed:`Could not copy automatically. Select and copy the link manually.`,unavailable:`The report link is invalid, sharing is disabled, or the projects are unavailable.`,unavailableCount:`{count} projects are unavailable or no longer shared.`,readOnly:`Read-only report`,disclosure:`Only task names, priorities, and status are public.`},shareContent:{emptyTitle:`No public tasks yet`,emptyReport:`These {count} projects have no public tasks yet.`,emptySelection:`The selected projects have no public tasks.`,publicCount:`The report will show {count} public tasks`,verifyContent:`Public content will be verified when generating. Private tasks will not be published automatically.`},allProjects:{option:`All projects`,optionMeta:`{count} projects`,title:`Task board`,projectFilter:`Project scope`,projectFilterHint:`Filters this board only.`,search:`Search tasks`,searchPlaceholder:`Search tasks, projects, or tags`,boardLabel:`Task board`,partial:`Showing {loaded}/{total} projects. {failed} failed to load.`,truncated:`{count} projects exceed the current loading limit; some tasks are not shown.`,empty:`All projects are clear`,emptyHint:`The assigned projects have no tasks yet.`,noProjectsVisible:`No projects shown`,noProjectsVisibleHint:`Select projects again to see their tasks.`,showAllProjects:`Show all projects`,noMatch:`No matching tasks`,noMatchHint:`Try another term, or clear search to see every task.`,columnEmpty:`No tasks`,taskCount:`{count} tasks`,openTask:`View task in {project}: {task}`,dragHint:`Drag cards to update status. Keyboard: Space to lift, arrows to move, Space to drop.`,dragTask:`Move task: {task}`,saving:`Saving task status…`,dragLifted:`Lifted “{task}” from {status}.`,dragMoved:`Moved to {status}.`,dragDropped:`Moved “{task}” to {status}.`,dragCancelled:`Move cancelled.`,moveFailed:`The task could not be moved and was restored: {error}`,refreshRequired:`The task version is missing. Refresh the board and try again.`,status:{planned:`Planned`,active:`In progress`,blocked:`Blocked`,review:`Review`,done:`Done`}},assignedCount:`Assigned to {count} projects`,noAssignedProjects:`No projects assigned`,manageHint:`Can manage several projects.`,filterLabel:`Filter projects`,filterHint:`Filters the Agent list only. Assignments stay unchanged.`,filterEmpty:`No projects selected`,allProjectsFilter:`All projects`,success:`{name} has joined`,successUnassigned:`You can assign this Agent to a project later.`,successMultiple:`Now assigned to {count} projects.`,scopeSaved:`Project selection saved`,scopeRemoved:`Will leave {count} projects. Their projects and tasks will be kept.`,reloadScope:`Reload project selection`,scope:{rule:`Management rule`,continuousAll:`All projects · automatic`,onlySelected:`Selected projects only`,allHint:`{name} manages current and future projects; uncheck one to exclude it.`,selectedHint:`Manage only checked projects. New projects are not included automatically.`,excludeHint:`Unchecked projects no longer go through this Agent.`,excludedCount:`{count} projects excluded.`,successAll:`Managing {count} current projects; future projects will be included automatically.`,label:`Assigned projects`,all:`All projects`,allSummary:`All projects · {count}`,selected:`{count} projects selected`,search:`Search projects`,invert:`Invert selection`,multiple:`Multiple`,count:`{selected} / {total} projects selected`,done:`Done`,reset:`Reset`,storageUnavailable:`This browser cannot save the filter; it resets on reopen.`,noMatch:`No matching projects`,empty:`No projects available`,snapshotHint:`Select multiple, or select all and exclude. New projects must be selected separately.`},titles:{heading:`Session titles`,mode:`Behavior`,style:`Title style`,auto:`Automatic when supported`,suggest:`Suggestions only`,off:`Leave titles unchanged`,emoji:`Emoji + type`,text:`Text only`,example:`Format example`,exampleTask:`Fix sign-in failure`,boundary:`Based on task priority and type; manually edited titles are left alone.`},bole:{title:`Team`,allProjects:`All projects & unassigned`,viewLabel:`Team views`,search:`Search Agents, tasks, or recruitment reasons`,workFilter:`Work status`,allWork:`All statuses`,withoutTask:`No current task`,allRoles:`All roles`,clearFilters:`Clear filters`,resultCount:`{count} records`,taskColumn:`Current task`,projectsColumn:`Projects`,moreProjects:`{count} more projects`,noMatch:`No matching records. Try adjusting the filters.`,overview:`People overview`,loading:`Reading team members, tasks, and recruitment records…`,workingNow:`Working now`,coveredProjects:`Projects covered`,distribution:`People distribution`,currentWork:`Team members`,recruitmentHistory:`Bole’s activity`,noAgents:`No Agents to show yet.`,noRecruitments:`No recruitment records yet.`,idle:`No ongoing task recorded`,noProject:`No project`,unknownTime:`Unknown time`,taskLimit:`Counts the latest 200 tasks only.`,partialError:`Some people data is temporarily unavailable. Available information is still shown.`,types:{coordinator:`Coordinator`,durable:`Durable Agent`,hr:`AR Agent`,temporary:`Temporary Agent`,other:`Other Agent`},status:{awaiting_recruitment:`Awaiting recruitment`,queued:`Queued`,running:`In progress`,paused:`Paused`,failed:`Needs attention`,awaiting_review:`Awaiting review`,blocked:`Blocked`}},createProject:`Create project`,noProjects:`No projects yet. Hire an Agent first or create a project.`,noTemplates:`No specialist Agents available`,emptyWorkbench:`Choose projects to manage`,unavailable:`This specialist Agent is unavailable.`,backToAgents:`Back to project Agents`,loadError:`Agent service is unavailable. Please retry.`,errors:{runtime_unavailable:`Workbench is not installed or could not load. Check its package and retry.`,assignment_required:`This Agent cannot manage this project yet. Check its assigned projects.`,project_not_found:`Project unavailable. Select an active project.`,identity_conflict:`Another Agent uses this identifier. The existing Agent was not modified.`,reactivation_required:`This Agent is inactive. Explicitly reactivate it before assigning.`,assignment_scope_conflict:`Project assignments changed elsewhere. Reload, review, and save again.`,assignment_update_incomplete:`Not everything was saved. Reload and check.`}}},sh={"zh-CN":{title:`待你处理`,count:`{count} 件事待你处理`,all:`全部 Agent`,refresh:`刷新`,close:`关闭`,loading:`正在读取待处理的 Agent 请求…`,loadError:`待办读取失败,请重试`,empty:`暂时没有需要你处理的事情`,response:`你的回复`,send:`提交回复`,sending:`正在提交 Agent 请求答复…`,more:`加载更多`,task:`查看 Agent 任务`,context:`背景与详情`,chooseReply:`选择回复`,other:`其他回复`,note:`补充说明(选填)`,placeholder:`写下你的想法…`,replyHint:`回复只记录你的决定,不会直接执行或授权。`,tooLong:`回复过长,请精简至 4096 字以内。`,queue:`待处理请求`,selectRequest:`选择请求`,agentFallback:`Agent`,projectFallback:`项目`,updated:`请求已更新,请重新确认回复。`,wrongSpace:`请求属于其他空间,请重新打开后回复。`,replies:{agree:`同意此方案`,decline:`暂不同意`,accept:`审核通过`,revise:`需要修改`,resolved:`已处理,可以继续`,clarify:`请补充信息`},displayName:`名字`,roleName:`岗位名称`,kinds:{question:`需要答复`,approval:`需要决定`,review:`需要验收`,permission:`需要权限`,blocked:`需要协助`}},"en-US":{title:`Needs you`,count:`{count} requests need you`,all:`All Agents`,refresh:`Refresh`,close:`Close`,loading:`Loading pending Agent requests…`,loadError:`Could not load requests. Try again`,empty:`Nothing needs your attention`,response:`Your reply`,send:`Reply and resolve`,sending:`Submitting the Agent request response…`,more:`Load more`,task:`View Agent tasks`,context:`Background & details`,chooseReply:`Choose a reply`,other:`Something else`,note:`Add a note (optional)`,placeholder:`Share your thoughts…`,replyHint:`Records your decision only; nothing is executed or granted.`,tooLong:`Shorten your reply to 4096 characters.`,queue:`Pending requests`,selectRequest:`Select a request`,agentFallback:`Agent`,projectFallback:`Project`,updated:`This request changed. Please review your reply.`,wrongSpace:`This request belongs to a different space. Reopen it before replying.`,replies:{agree:`Agree with this proposal`,decline:`Do not agree at this time`,accept:`Review passed`,revise:`Changes needed`,resolved:`Resolved, ready to continue`,clarify:`More information needed`},displayName:`Name`,roleName:`Role name`,kinds:{question:`Question`,approval:`Decision`,review:`Review`,permission:`Permission`,blocked:`Help needed`}}},ch={"zh-CN":{threads:`Agent 之间的对话`,empty:`还没有 Agent 之间的对话`,emptyHint:`Agent 在任意已接入的客户端里调用 message_agent,就会出现在这里。`,select:`选择一段对话查看`,loading:`正在读取 Agent 之间的对话…`,loadFailed:`对话读取失败`,retry:`重试`,messages:`{count} 条消息`,waiting:`等待回复`,to:`发给`,via:{resume:`唤醒原会话回答`,new:`新会话回答`,inbox:`在任务中回复`},status:{queued:`排队中,等对方下次开始任务时回复`,delivering:`正在唤醒对方…`,answered:`已回答`,sent:`已送达`,remoteQueued:`等待对方设备回复`,claimed:`对方正在接收`,running:`对方正在处理`,failed:`未送达`,cancelled:`已取消`,expired:`已过期`,unknown:`结果不明,可能已运行也可能没有`}},"en-US":{threads:`Agent conversations`,empty:`No Agent conversations yet`,emptyHint:`They appear here when an Agent calls message_agent in any connected client.`,select:`Select a conversation`,loading:`Loading Agent conversations…`,loadFailed:`Could not load conversations`,retry:`Retry`,messages:`{count} messages`,waiting:`Waiting for a reply`,to:`to`,via:{resume:`answered by waking its conversation`,new:`answered in a new session`,inbox:`replied during a task`},status:{queued:`Queued until the recipient starts its next task`,delivering:`Waking the recipient…`,answered:`Answered`,sent:`Delivered`,remoteQueued:`Waiting for the other device`,claimed:`Being received`,running:`In progress on the other device`,failed:`Not delivered`,cancelled:`Cancelled`,expired:`Expired`,unknown:`Unknown: it may or may not have run`}}},lh={"zh-CN":{navigation:{title:`pin`},pin:`pin`,unpin:`取消 pin`,loading:`正在读取 pin…`,saving:`正在保存 pin…`,loadError:`暂时无法读取 pin。`,saveError:`暂时无法保存 pin。`,conflictError:`pin 列表已更新,请重试。`,retry:`重试`},"en-US":{navigation:{title:`pin`},pin:`pin`,unpin:`unpin`,loading:`Reading pin…`,saving:`Saving pin…`,loadError:`pin is temporarily unavailable.`,saveError:`The pin could not be saved.`,conflictError:`The pin list changed. Try again.`,retry:`Retry`}},uh={"zh-CN":{settings:{title:`自主程度`,hint:`控制 Tonborg 如何分析请求,以及哪些结果需要你确认。`,project:`项目范围`,global:`所有项目`,inherited:`沿用全局策略`,override:`项目覆盖策略`,reset:`恢复全局策略`,resetTitle:`删除该项目的覆盖策略`,save:`保存策略`,undo:`撤销`,saved:`策略已保存。`,loading:`正在读取判断策略…`,saving:`正在保存判断策略…`,loadError:`暂时无法读取判断策略。`,saveError:`暂时无法保存判断策略。`,conflictError:`判断策略已更新,请重新检查后再保存。`,retry:`重试`},mode:{title:`自主程度`,manual:`我来确认`,manualHint:`只分析,不执行。`,shared:`共同决策`,sharedHint:`按已有确认处理常规事项,拿不准时问我。`,autonomous:`自主处理`,autonomousHint:`把常规审核和执行选择交给 Tonborg,必要时再找我。`},quality:{title:`质量偏好`,quality:`质量优先`,balanced:`平衡`,economy:`经济`},client:{title:`判断客户端`,codex:`Codex`,claude_code:`Claude Code`},workbench:{aria:`Tonborg 决策工作台`,title:`判断工作台`,subtitle:`查看近期判断并决定下一步。`,all:`全部`,human:`需要人工`,review:`运行一次判断`,reviewing:`正在分析待处理事项…`,loading:`正在读取近期判断…`,refresh:`刷新`,empty:`暂时没有判断记录。`,emptyHuman:`没有需要人工处理的判断。`,loadError:`暂时无法读取判断记录。`,reviewError:`判断请求暂时无法完成。`,retry:`重试`,target:`目标`,evidence:`依据`,execution:`执行状态`,policy:`策略`,session:`会话`,source:`来源`,selection:`推荐方案`,executor:`执行器`,model:`模型`,disposition:`建议动作`,actions:{continue_current:`继续当前会话`,reuse_conversation:`复用历史会话`,new_session:`新开会话`,delegate:`委派子 Agent`,ask_user:`请你决定`},details:`查看执行详情`,receipt:`执行回执`,recordError:`记录错误`,feedbackHistory:`反馈历史`,executionHistory:`执行历史`,detailsUnavailable:`详情暂不可用。`,kind:{review:`审阅`,routing:`执行选择`,acceptance:`任务验收`},outcome:{approve:`通过`,escalate:`需要确认`,recommend:`建议`,failed:`失败`},executionStatus:{not_applied:`尚未执行`,applied:`已执行`,stale:`已过期`,failed:`执行失败`},feedback:`反馈`,feedbackReason:`反馈原因(可选)`,feedbackReasonAdd:`添加反馈原因`,feedbackReasonSaved:`已保存反馈原因`,saveReason:`保存原因`,feedbackUp:`有帮助`,feedbackDown:`需要改进`,feedbackSaving:`正在保存反馈…`,feedbackConflict:`记录已更新,请重新查看后再反馈。`,timeUnknown:`时间未知`},links:{profile:`查看 Agent 资料`,memory:`查看记忆`}},"en-US":{settings:{title:`Judgment and autonomy`,hint:`Choose how Tonborg analyzes requests and which results need your confirmation.`,project:`Project scope`,global:`All projects`,inherited:`Using the global policy`,override:`Project override`,reset:`Use global policy`,resetTitle:`Remove this project override`,save:`Save policy`,undo:`Undo`,saved:`Policy saved.`,loading:`Reading judgment policy…`,saving:`Saving judgment policy…`,loadError:`The judgment policy is temporarily unavailable.`,saveError:`The judgment policy could not be saved.`,conflictError:`The judgment policy changed. Review it before saving again.`,retry:`Retry`},mode:{title:`Autonomy scope`,manual:`Manual`,manualHint:`Analyze only; do not apply changes.`,shared:`Shared`,sharedHint:`Apply safe and reversible items.`,autonomous:`Autonomous`,autonomousHint:`Handle additional routine items; risky actions always need you.`},quality:{title:`Quality preference`,quality:`Quality priority`,balanced:`Balanced`,economy:`Economy`},client:{title:`Judgment client`,codex:`Codex`,claude_code:`Claude Code`},workbench:{aria:`Tonborg decision workbench`,title:`Judgment workbench`,subtitle:`Review recent decisions and choose what happens next.`,all:`All`,human:`Human needed`,review:`Run a judgment review`,reviewing:`Analyzing pending items…`,loading:`Reading recent judgments…`,refresh:`Refresh`,empty:`There are no judgment records yet.`,emptyHuman:`No judgments need human attention.`,loadError:`Judgment records are temporarily unavailable.`,reviewError:`The judgment request could not be completed.`,retry:`Retry`,target:`Target`,evidence:`Evidence`,execution:`Execution`,policy:`Policy`,session:`Session`,source:`Source`,selection:`Recommended option`,executor:`Executor`,model:`Model`,disposition:`Suggested action`,actions:{continue_current:`Continue here`,reuse_conversation:`Reuse conversation`,new_session:`Start session`,delegate:`Delegate work`,ask_user:`Ask you`},details:`View execution details`,receipt:`Execution receipt`,recordError:`Record error`,feedbackHistory:`Feedback history`,executionHistory:`Execution history`,detailsUnavailable:`Details are temporarily unavailable.`,kind:{review:`Review`,routing:`Execution choice`,acceptance:`Task acceptance`},outcome:{approve:`Approved`,escalate:`Needs confirmation`,recommend:`Recommended`,failed:`Failed`},executionStatus:{not_applied:`Not applied`,applied:`Applied`,stale:`Stale`,failed:`Execution failed`},feedback:`Feedback`,feedbackReason:`Feedback reason (optional)`,feedbackReasonAdd:`Add feedback reason`,feedbackReasonSaved:`Feedback reason saved`,saveReason:`Save reason`,feedbackUp:`Helpful`,feedbackDown:`Needs improvement`,feedbackSaving:`Saving feedback…`,feedbackConflict:`The record changed. Review it before sending feedback again.`,timeUnknown:`Unknown time`},links:{profile:`View Agent profile`,memory:`View memory`}}},dh=[`zh-CN`,`en-US`],fh=`fuli.locale`;function ph(e){return typeof e==`string`&&dh.includes(e)}function mh(e,t=[]){if(ph(e))return e;for(let e of t){let t=_h(e);if(t)return t}return`en-US`}function hh(){if(typeof window>`u`)return null;try{return window.localStorage.getItem(fh)}catch{return null}}function gh(){return typeof navigator>`u`?[]:navigator.languages.length>0?navigator.languages:navigator.language?[navigator.language]:[]}function _h(e){let t=e.trim().toLowerCase().split(/[-_]/,1)[0];return t===`zh`?`zh-CN`:t===`en`?`en-US`:null}var vh={"zh-CN":{judgment:uh[`zh-CN`],agentPins:lh[`zh-CN`],ui:Um[`zh-CN`],overview:Wm[`zh-CN`],agentRedesign:Gm[`zh-CN`],agentProfiles:Km[`zh-CN`],attention:sh[`zh-CN`],roundtable:ch[`zh-CN`],employees:oh[`zh-CN`],about:Qm[`zh-CN`],common:qm[`zh-CN`],console:Jm[`zh-CN`],knowledge:{dialogs:Xm[`zh-CN`],domain:Ym[`zh-CN`],workspace:Zm[`zh-CN`]},pages:$m[`zh-CN`],preferences:eh[`zh-CN`],projects:th[`zh-CN`],projectAgents:nh[`zh-CN`],routes:rh[`zh-CN`],settings:ih[`zh-CN`],writingTaste:ah[`zh-CN`]},"en-US":{judgment:uh[`en-US`],agentPins:lh[`en-US`],ui:Um[`en-US`],overview:Wm[`en-US`],agentRedesign:Gm[`en-US`],agentProfiles:Km[`en-US`],attention:sh[`en-US`],roundtable:ch[`en-US`],employees:oh[`en-US`],about:Qm[`en-US`],common:qm[`en-US`],console:Jm[`en-US`],knowledge:{dialogs:Xm[`en-US`],domain:Ym[`en-US`],workspace:Zm[`en-US`]},pages:$m[`en-US`],preferences:eh[`en-US`],projects:th[`en-US`],projectAgents:nh[`en-US`],routes:rh[`en-US`],settings:ih[`en-US`],writingTaste:ah[`en-US`]}},yh=Am({legacy:!1,globalInjection:!0,locale:mh(hh(),gh()),fallbackLocale:`zh-CN`,messages:vh});function bh(){return mh(yh.global.locale.value)}function xh(e,t={}){if(yh.global.locale.value=e,typeof document<`u`&&(document.documentElement.lang=e),!(t.persist===!1||typeof window>`u`))try{window.localStorage.setItem(fh,e)}catch{}}function Sh(e,t){return t?yh.global.t(e,t):yh.global.t(e)}xh(bh(),{persist:!1});export{qt as $,js as A,Cr as B,pa as C,ic as D,ni as E,hr as F,je as G,fr as H,fa as I,tn as J,Zt as K,ma as L,Qi as M,Yi as N,_r as O,ls as P,an as Q,ca as R,ms as S,H as T,pr as U,br as V,Ae as W,Kt as X,Me as Y,Jt as Z,Rr as _,Sh as a,de as at,hs as b,yu as c,Ql as d,on as et,Jl as f,B as g,lu as h,xh as i,ge as it,Yn as j,gr as k,Yl as l,du as m,bh as n,gn as nt,uh as o,Te as ot,Gc as p,L as q,yh as r,un as rt,Il as s,dh as t,I as tt,Zl as u,rc as v,Ts as w,Ds as x,xs as y,ri as z};
10
+ Usability review`,preferencesPlaceholder:`One per line, used only to initialize collaboration.`,idLocked:`The Agent ID is stable after creation; projects are managed as separate assignments.`,allowListPlaceholder:`One real executor ID per line; availability is never inferred.`,required:`Agent ID, name, and responsibility are required.`,occupationEmojiInvalid:`Occupation emoji must contain only emoji characters.`,spaceUnavailable:`The current space is unavailable; the Agent cannot be saved.`,initialAssignmentReason:`Initial project assignment from the Agent directory`,projectUnavailable:`The selected project is no longer available. Choose another project.`,duplicate:`Capabilities and startup conventions cannot contain duplicates.`,saveFailed:`Could not save the project Agent.`},assignmentDialog:{assign:`Assign project`,end:`Unassign`,replace:`Replace`,assignTitle:`Assign project responsibility`,endTitle:`Unassign project`,replaceTitle:`Replace project Agent`,replacement:`Replace with`,replacementPlaceholder:`Select an existing Agent`,workKinds:`Work kinds`,workKindsPlaceholder:`One per line`,reasonPlaceholder:`Record why this assignment changed.`,required:`Responsibility and reason are required.`,replacementRequired:`Choose a replacement Agent.`,saveAssign:`Save assignment`,saveChange:`Save change`,saving:`Saving the Agent project assignment…`,saveFailed:`Could not save the project assignment.`}}},rh={"zh-CN":{overview:{title:`工作台`},preferences:{title:`偏好`,description:`全局与项目级的品味、个性和判断偏好。`},writingTaste:{title:`文风画像`},personalProjects:{title:`项目`,description:`本机私有项目、项目知识与按任务生效的协作偏好。`},projectAgents:{title:`Agents`},roundtable:{title:`圆桌`},employeeWorkbench:{title:`专属 Agent`},loadFailure:{title:`暂时无法打开页面`,resources:`页面文件加载失败,可能是界面刚更新。`,message:`页面没能加载。`,reload:`重新载入并打开`,dismiss:`留在当前页`},organizer:{title:`知识整理`},publicProjects:{title:`公共项目`,description:`发现、订阅和维护公共 Provider 上的项目。`},knowledge:{title:`知识`},about:{title:`关于`},settings:{title:`设置`},review:{title:`审核`,description:`个人发布确认与公共项目 Maintainer 审核。`},connections:{title:`连接`,description:`本地知识库状态、公共 Provider 与项目订阅。`}},"en-US":{overview:{title:`Workspace`},preferences:{title:`Preferences`,description:`Global and project taste, personality, and judgment preferences.`},writingTaste:{title:`Writing taste`},personalProjects:{title:`Projects`,description:`Private local projects, project knowledge, and task-scoped collaboration preferences.`},projectAgents:{title:`Agents`},roundtable:{title:`Roundtable`},employeeWorkbench:{title:`Specialist Agents`},loadFailure:{title:`This page could not open`,resources:`Page files could not load; the app may have just updated.`,message:`The page could not load.`,reload:`Reload and open`,dismiss:`Stay here`},organizer:{title:`Organize`},publicProjects:{title:`Public projects`,description:`Discover, subscribe to, and maintain projects on a public Provider.`},knowledge:{title:`Knowledge`},about:{title:`About`},settings:{title:`Settings`},review:{title:`Review`,description:`Personal publishing confirmation and public project Maintainer review.`},connections:{title:`Connections`,description:`Local knowledge status, public Providers, and project subscriptions.`}}},ih={"zh-CN":{aria:`设置`,connection:{title:`客户端接入`,description:`支持 MCP 工具调用的客户端均可尝试接入,无需指定模型。`,loading:`正在读取 MCP 接入配置…`,loadError:`暂时无法读取接入配置`,retry:`重试`,format:`配置格式`,formats:{standard:`通用 MCP`,vscode:`VS Code`,server:`仅服务配置`},copy:`复制 MCP 配置`,configuration:`MCP 接入配置`,copied:`已复制`,manual:`请选中下方配置手动复制。`,merge:`将 fuli 这一项合并到客户端的 MCP 设置中,保留已有服务。配置用于运行 FULI 的这台电脑。`,boundary:`通用接入提供工具与记忆;自动采集对话和唤醒会话需要客户端适配。`,guide:`接入说明`,clients:{title:`本机客户端`,refresh:`重新检查`,checking:`正在检查本机客户端的 FULI 接入配置…`,checkError:`暂时无法检查客户端接入,下方保留上次结果。`,none:`没有发现支持自动接入的客户端。`,observedAt:`检查于 {time}。`,boundary:`这里只看配置是否还在,不代表客户端正在运行或已连上。`,historyUnsaved:`本次变化未能保存,重启后可能看不到。`,lastChange:`最近变化:{from} → {to}({time})`,unknownWithLast:`配置文件无法读取,暂不判断;上次看到的是“{status}”。`,status:{connected:`已接入`,changed:`配置有变化`,skills_left:`只剩技能文件`,removed:`已移除`,not_connected:`未接入`,not_detected:`未发现`,unknown:`无法确认`},explain:{connected:`配置中有当前版本的 FULI。`,changed:`配置中仍有 FULI,但与当前版本不一致,可运行 fuli setup 更新。`,skills_left:`已没有 FULI 工具配置,只残留技能文件;需要时运行 fuli setup 重新接入。`,removed:`之前接入过,现在配置里已没有 FULI。不会自动重新安装,需要时运行 fuli setup。`,not_connected:`已安装该客户端,但还没有接入 FULI。`,not_detected:`没有在本机发现该客户端。`,unknown:`配置文件无法读取或格式有误,暂不判断是否已移除。`}}},peer:{title:`局域网圆桌(Beta)`,description:`在同一局域网的两台电脑之间,只向对方共享当前项目组长。配对、共享和撤销只能在本机完成。`,loading:`正在读取局域网圆桌…`,loadError:`暂时无法读取局域网圆桌`,retry:`重试`,off:`尚未配对。可以在这台电脑上主持,或粘贴另一台电脑的邀请。`,noAddress:`这台电脑没有可用的局域网地址。`,host:`在这台电脑上主持`,hostAddress:`本机地址`,hostName:`这台电脑的名称`,hostAction:`开始主持`,hosting:`正在开启局域网圆桌…`,join:`加入另一台电脑`,invitation:`邀请`,invitationPlaceholder:`粘贴 fuli-peer-invite:1:…`,joinName:`这台电脑的名称`,joinAction:`指纹一致,加入`,previewAction:`查看邀请`,previewing:`正在读取邀请…`,removalPending:`本机已停止共享。对方离线,恢复连接后会自动撤回配对。`,joining:`正在配对…`,fingerprint:`本机指纹`,coordinatorFingerprint:`对方指纹`,compare:`配对前请双方核对指纹。`,invite:`生成一次性邀请`,inviting:`正在生成邀请…`,inviteHint:`邀请十分钟内一次性有效。把邀请交给对方前,先核对指纹。`,copyInvite:`复制邀请`,copied:`已复制`,copyManual:`请选中下方邀请手动复制。`,shares:`共享项目组长`,sharesHint:`每个项目只共享当前组长;对方只能向该组长提问。成员任务仍由本机组长分派。交接组长后需重新共享,不会悄悄换成新人。`,noProjects:`没有可共享的项目。`,lead:`当前组长 {name}`,noLead:`这个项目还没有可用的组长`,clients:`可被唤醒的客户端`,folder:`本机项目文件夹(可选)`,folderHint:`只用于本机唤醒新会话,不会发给对方。`,leadChanged:`这个项目的组长已更换,取消勾选或重新保存后才会共享新的组长。`,leadUnavailable:`当前组长不可用,暂不向对方提供。`,saveShares:`保存共享`,savingShares:`正在保存共享项目组长…`,devices:`已配对设备`,online:`在线`,offline:`离线`,revoke:`撤销`,revoking:`正在撤销配对…`,disable:`关闭局域网圆桌`,disabling:`正在关闭局域网圆桌…`,disableHint:`关闭后停止监听、共享和信任已配对设备。`,clientsCodex:`Codex`,clientsClaude:`Claude Code`},loading:`正在读取运行设置…`,resources:{title:`资源占用`,loading:`正在读取内存与硬盘占用…`,memory:`内存`,disk:`硬盘`,available:`电脑可用 {value}`,partial:`部分组件暂时无法读取`,measuredAt:`内存更新于 {time}`,diskMeasuredAt:`硬盘更新于 {time}`,refresh:`刷新频率`,refreshUnit:`{seconds} 秒`,temporary:`其中 Neo4j 临时文件 {value}`,exclusionsContainer:`不含浏览器标签页及 Docker 共享虚拟机开销。`,exclusionsNative:`不含浏览器标签页内存。原生进程已计入。`,unavailable:`暂时无法获取资源数据`,components:{console:`管理服务`,personalProvider:`个人 Provider`,personalNeo4j:`个人 Neo4j`,workspaceProvider:`开发公共 Provider`,workspaceNeo4j:`开发公共 Neo4j`,application:`程序文件`,localData:`本地运行数据`,containerImages:`容器镜像`,containerWritable:`容器运行数据`,neo4jData:`Neo4j 数据`,neo4jLogs:`Neo4j 日志`}},ports:{title:`服务端口`,personal:`个人服务`,development:`公共服务`,developing:`开发中`,developmentMeta:`fuli-server 发布后,可配置已部署服务的域名。`,console:`管理界面`,personalProvider:`个人 Provider`,personalNeo4jHttp:`个人 Neo4j Browser`,personalNeo4jBolt:`个人 Neo4j Bolt`,workspaceProvider:`公共 Provider`,workspaceNeo4jHttp:`公共 Neo4j Browser`,workspaceNeo4jBolt:`公共 Neo4j Bolt`,active:`当前 {port}`},behavior:{title:`运行设置`,capture:`自动沉淀`,captureMeta:`把新的稳定会话知识写入本机`,agentAccess:`Agent 使用`,agentAccessMeta:`允许已连接的 Agent 调用 FULI`,lanAccess:`局域网访问`,lanAccessMeta:`允许同一可信网络中的设备访问管理界面`,runtimeMode:`图数据库运行方式`,runtimeModeMeta:`当前运行:{mode}`,runtimeRecommendation:`本机内存较小,推荐原生模式,避免虚拟机常驻内存`,runtimeModes:{native:`原生(低内存)`,container:`容器(兼容)`},language:`界面语言`,zh:`简体中文`,en:`English`},conversationLaunchers:{title:`会话打开方式`,enabled:`启用`,sourceId:`来源 ID · {id}`,idFormat:`可打开的 ID`,appName:`打开 App`,urlTemplate:`链接模板`,idFormats:{any:`任意非空 ID`,uuid:`仅 UUID`},idFormatMeta:`Codex 需要原生会话 UUID。`,applications:{codex:`Codex`,claude:`Claude`,claude_code:`Claude Code`,cursor:`Cursor`,gemini_cli:`Gemini CLI`,kiro:`Kiro`,other:`其他 Agent`}},save:`保存设置`,saving:`正在保存运行设置…`,saved:`设置已保存并生效`,savedShort:`已保存`,applying:`正在应用设置…`,applyRestored:`应用失败,已恢复原设置。`,applyFailed:`设置未能生效,请重试。`,applyTimeout:`暂时无法确认设置是否生效,请稍后刷新查看。`,applyUnavailable:`当前服务无法自动应用设置,请更新本地服务。`,loadError:`无法读取设置`,saveError:`无法保存设置`},"en-US":{connection:{title:`Client connection`,description:`Connect clients that support MCP tool calls. No specific model is required.`,loading:`Loading MCP connection configuration…`,loadError:`Connection configuration is unavailable`,retry:`Retry`,format:`Configuration format`,formats:{standard:`Standard MCP`,vscode:`VS Code`,server:`Server only`},copy:`Copy MCP configuration`,configuration:`MCP connection configuration`,copied:`Copied`,manual:`Select and copy the configuration manually.`,merge:`Merge the fuli entry into your client’s MCP settings and keep existing servers. This configuration is for the computer running FULI.`,boundary:`MCP provides tools and memory. Automatic conversation capture and wake/resume need a client adapter.`,guide:`Connection guide`,clients:{title:`Clients on this computer`,refresh:`Check again`,checking:`Checking FULI connection settings of local clients…`,checkError:`Client connections cannot be checked right now. The last result is kept below.`,none:`No client with automatic setup was found.`,observedAt:`Checked at {time}.`,boundary:`This only checks whether the configuration is present. It does not mean the client is running or connected.`,historyUnsaved:`This change could not be saved and may be lost after a restart.`,lastChange:`Last change: {from} → {to} ({time})`,unknownWithLast:`The configuration cannot be read, so nothing is concluded. Last seen as “{status}”.`,status:{connected:`Connected`,changed:`Configuration changed`,skills_left:`Skills only`,removed:`Removed`,not_connected:`Not connected`,not_detected:`Not found`,unknown:`Cannot confirm`},explain:{connected:`The configuration has the current FULI entry.`,changed:`FULI is still configured but differs from this version. Run fuli setup to update it.`,skills_left:`The FULI tool entry is gone and only skill files remain. Run fuli setup to reconnect if needed.`,removed:`Connected before, but FULI is no longer in its configuration. It will not be reinstalled automatically; run fuli setup if needed.`,not_connected:`The client is installed but not connected to FULI.`,not_detected:`This client was not found on this computer.`,unknown:`The configuration cannot be read or is malformed, so removal is not concluded.`}}},peer:{title:`LAN roundtable (Beta)`,description:`On the same LAN, share only each project’s current lead with another computer. Pairing, sharing and revoking stay on this device.`,loading:`Loading the LAN roundtable…`,loadError:`The LAN roundtable is unavailable`,retry:`Retry`,off:`Not paired yet. Host on this computer, or paste an invitation from another one.`,noAddress:`This computer has no usable LAN address.`,host:`Host on this computer`,hostAddress:`This computer’s address`,hostName:`Name of this computer`,hostAction:`Start hosting`,hosting:`Opening the LAN roundtable…`,join:`Join another computer`,invitation:`Invitation`,invitationPlaceholder:`Paste fuli-peer-invite:1:…`,joinName:`Name of this computer`,joinAction:`Fingerprints match · Join`,previewAction:`Review invitation`,previewing:`Reading invitation…`,removalPending:`Sharing has stopped on this device. Pairing will be removed when the coordinator is available.`,joining:`Pairing…`,fingerprint:`This device`,coordinatorFingerprint:`The other device`,compare:`Compare fingerprints before you share an invitation.`,invite:`Create a one-use invitation`,inviting:`Creating an invitation…`,inviteHint:`The invitation is valid once for ten minutes. Compare fingerprints before you send it.`,copyInvite:`Copy invitation`,copied:`Copied`,copyManual:`Select and copy the invitation manually.`,shares:`Shared project leads`,sharesHint:`Each project shares only its current lead. The other device can ask that lead, not members. Member work is still dispatched here. After a handoff, share again; the new lead is never substituted silently.`,noProjects:`No projects can be shared.`,lead:`Current lead {name}`,noLead:`This project has no available lead`,clients:`Clients that may be woken`,folder:`Local project folder (optional)`,folderHint:`Used only to start a new session on this computer. It is never sent to the other device.`,leadChanged:`This project’s lead changed. Uncheck or save again to share the new lead.`,leadUnavailable:`The current lead is unavailable and is not offered to the other device.`,saveShares:`Save sharing`,savingShares:`Saving shared project leads…`,devices:`Paired devices`,online:`Online`,offline:`Offline`,revoke:`Revoke`,revoking:`Revoking the device…`,disable:`Turn off the LAN roundtable`,disabling:`Turning off the LAN roundtable…`,disableHint:`This stops listening, sharing and trusting paired devices.`,clientsCodex:`Codex`,clientsClaude:`Claude Code`},aria:`Settings`,loading:`Loading runtime settings…`,resources:{title:`Resource usage`,loading:`Reading memory and disk usage…`,memory:`Memory`,disk:`Disk`,available:`{value} available on this device`,partial:`Some components are temporarily unavailable`,measuredAt:`Memory updated {time}`,diskMeasuredAt:`Disk updated {time}`,refresh:`Refresh interval`,refreshUnit:`{seconds} seconds`,temporary:`{value} is Neo4j temporary data`,exclusionsContainer:`Browser tabs and shared Docker VM overhead are excluded.`,exclusionsNative:`Browser-tab memory is excluded. Native processes are included.`,unavailable:`Resource data is temporarily unavailable`,components:{console:`Management service`,personalProvider:`Personal Provider`,personalNeo4j:`Personal Neo4j`,workspaceProvider:`Development public Provider`,workspaceNeo4j:`Development public Neo4j`,application:`Application files`,localData:`Local runtime data`,containerImages:`Container images`,containerWritable:`Container runtime data`,neo4jData:`Neo4j data`,neo4jLogs:`Neo4j logs`}},ports:{title:`Service ports`,personal:`Personal services`,development:`Public service`,developing:`In development`,developmentMeta:`Configure the deployed server domain after fuli-server is published.`,console:`Management UI`,personalProvider:`Personal Provider`,personalNeo4jHttp:`Personal Neo4j Browser`,personalNeo4jBolt:`Personal Neo4j Bolt`,workspaceProvider:`Public Provider`,workspaceNeo4jHttp:`Public Neo4j Browser`,workspaceNeo4jBolt:`Public Neo4j Bolt`,active:`Active: {port}`},behavior:{title:`Runtime settings`,capture:`Automatic capture`,captureMeta:`Write new, stable conversation knowledge to this device`,agentAccess:`Agent access`,agentAccessMeta:`Allow connected Agents to use FULI`,lanAccess:`LAN access`,lanAccessMeta:`Allow devices on the same trusted network to open the console`,runtimeMode:`Graph database runtime`,runtimeModeMeta:`Active: {mode}`,runtimeRecommendation:`Native mode is recommended on this low-memory device to avoid VM overhead`,runtimeModes:{native:`Native (low memory)`,container:`Container (compatible)`},language:`Interface language`,zh:`简体中文`,en:`English`},conversationLaunchers:{title:`Conversation openers`,enabled:`Enabled`,sourceId:`Source ID · {id}`,idFormat:`Allowed IDs`,appName:`Open with app`,urlTemplate:`URL template`,idFormats:{any:`Any non-empty ID`,uuid:`UUID only`},idFormatMeta:`Codex needs the native conversation UUID.`,applications:{codex:`Codex`,claude:`Claude`,claude_code:`Claude Code`,cursor:`Cursor`,gemini_cli:`Gemini CLI`,kiro:`Kiro`,other:`Other Agent`}},save:`Save settings`,saving:`Saving runtime settings…`,saved:`Settings saved and applied`,savedShort:`Saved`,applying:`Applying settings…`,applyRestored:`Could not apply settings. Previous settings were restored.`,applyFailed:`Settings could not be applied. Please retry.`,applyTimeout:`Could not confirm whether settings were applied. Refresh to check again.`,applyUnavailable:`This service cannot apply settings automatically. Update the local service.`,loadError:`Could not load settings`,saveError:`Could not save settings`}},ah={"zh-CN":{status:{collecting:`收集中`,preview_ready:`初稿已形成`,active:`已启用`},milestone:{aria:`文风画像成熟度`,collectingTitle:`文风画像`,previewTitle:`文风画像 · 初稿`,activeTitle:`文风画像 · 已形成`,rules:`{current}/{target} 条规则`,sessions:`{current}/{target} 次会话`,open:`查看`},page:{loading:`正在读取文风画像…`,back:`返回偏好`,collectingTitle:`文风画像收集中`,collectingCopy:`跨多个会话积累到足够证据,或你确认足够多的规则后生成。`,previewTitle:`文风画像初稿`,previewCopy:`已有重复证据,等你确认。`,activeTitle:`你的文风`,activeCopy:`Agent 写作时会遵循这些规则;当前请求优先。`,readinessAria:`文风画像生成条件`,rulesTitle:`当前规则`,rulesEmpty:`还没有识别到文风规则。`,profileUnavailable:`暂时无法读取文风画像。`,edit:`修改`,confirm:`确认`,conflict:`存在冲突`,evidence:`{evidence} 条证据`,sessions:`{sessions} 次会话`,globalScope:`个人全局`,projectScope:`仅 {project}`,updated:`更新于 {time}`,contexts:`适用:{contexts}`,agentPreviewTitle:`Agent 使用的规则`,showAgentPreview:`查看 Agent 规则`,hideAgentPreview:`收起 Agent 规则`},evidenceStatus:{Confirmed:`已确认`,Observed:`已观察`,"Working hypothesis":`工作假设`},criteria:{rules:`稳定规则`,evidence:`支持证据`,sessions:`独立会话`,days:`观察日期`,confirmed:`用户确认`,conflicts:`未解决冲突`,progress:`{current} / {target}`,conflictsProgress:`{current} 个`}},"en-US":{status:{collecting:`Collecting`,preview_ready:`Draft ready`,active:`Active`},milestone:{aria:`Writing taste readiness`,collectingTitle:`Writing taste`,previewTitle:`Writing taste · draft`,activeTitle:`Writing taste · ready`,rules:`{current}/{target} rules`,sessions:`{current}/{target} sessions`,open:`View`},page:{loading:`Loading writing preferences and rule evidence…`,back:`Back to preferences`,collectingTitle:`Still collecting writing preferences`,collectingCopy:`The profile appears after evidence spans multiple sessions and days, or after you directly confirm enough rules.`,previewTitle:`Writing-taste draft`,previewCopy:`These patterns have repeated evidence but still need your confirmation.`,activeTitle:`Your writing taste`,activeCopy:`Agents use confirmed and observed rules; the current request always wins.`,readinessAria:`Writing taste generation criteria`,rulesTitle:`Current rules`,rulesEmpty:`No writing-related preference has been identified yet.`,profileUnavailable:`Writing taste is temporarily unavailable.`,edit:`Edit`,confirm:`Confirm`,conflict:`Conflict`,evidence:`{evidence} evidence records`,sessions:`{sessions} sessions`,globalScope:`Personal global`,projectScope:`{project} only`,updated:`Updated {time}`,contexts:`Applies to: {contexts}`,agentPreviewTitle:`Rules used by Agents`,showAgentPreview:`View Agent rules`,hideAgentPreview:`Hide Agent rules`},evidenceStatus:{Confirmed:`Confirmed`,Observed:`Observed`,"Working hypothesis":`Working hypothesis`},criteria:{rules:`Stable rules`,evidence:`Supporting evidence`,sessions:`Independent sessions`,days:`Observation days`,confirmed:`User-confirmed`,conflicts:`Unresolved conflicts`,progress:`{current} / {target}`,conflictsProgress:`{current}`}}},oh={"zh-CN":{recruit:`聘请 Agent`,workbench:`Agent 工作台`,directory:`专属 Agent`,project:`分配到项目`,unassigned:`暂不分配`,choose:`选择专属 Agent`,capabilities:`擅长`,permissions:`项目权限`,boardRead:`读取所选项目的看板`,boardWrite:`创建、修改任务与状态`,noExecutor:`聘请不会启动模型或外部执行器。`,hostReady:`工作台已就绪 · 随 FULI 运行`,installRequired:`工作台尚未安装;聘请只创建 Agent 身份。`,installHelp:`构建 Agent 包后运行 fl employee install <目录>。`,recruitName:`聘请 {name}`,rehire:`恢复 {name}`,assign:`保存负责范围`,recruited:`已聘请`,recruiting:`正在保存负责范围…`,open:`打开工作台`,close:`关闭`,cancel:`取消`,retry:`重试`,loading:`正在读取 Agent 目录…`,manageProjects:`管理负责项目`,manageProjectsTitle:`管理 {name} 的项目`,loadingScope:`正在读取项目负责范围…`,loadingBoard:`正在读取任务看板…`,loadingTask:`正在读取任务详情…`,loadingShare:`正在读取项目分享状态…`,loadingReport:`正在读取公开报告…`,invalidScope:`所选项目不在 Jefa 的负责范围内,请检查项目链接。`,task:{create:`新建任务`,detail:`任务详情`,project:`所属项目`,chooseProject:`选择项目`,title:`任务名称`,summary:`任务说明`,priority:`优先级`,criteria:`验收条件(每行一条)`,tags:`标签(逗号分隔)`,save:`保存任务`,saving:`正在保存任务…`,reload:`重新读取`,priorities:{critical:`紧急`,high:`高`,medium:`中`,low:`低`}},share:{title:`对外报告`,projects:`分享项目`,scopeHint:`选择全部或部分项目,生成一个汇总报告链接。`,generate:`生成分享链接`,generating:`正在生成分享链接…`,revoking:`正在关闭分享…`,link:`分享链接`,copy:`复制链接`,copied:`已复制`,preview:`预览报告`,active:`已开放分享`,revoke:`关闭分享`,local:`当前地址只有本机能访问。`,loadFailed:`部分项目的分享状态读取失败,请重试。`,partial:`部分项目没能开启分享,请重试。`,copyFailed:`自动复制失败,请选中链接手动复制。`,unavailable:`报告链接无效、分享已关闭,或项目已不可访问。`,unavailableCount:`{count} 个项目已关闭分享或暂不可访问。`,readOnly:`只读报告`,disclosure:`只公开任务名称、优先级和状态。`},shareContent:{emptyTitle:`暂无可公开的任务`,emptyReport:`这 {count} 个项目还没有公开的任务。`,emptySelection:`所选项目暂无公开任务。`,publicCount:`报告将展示 {count} 条公开任务`,verifyContent:`生成时会校验公开内容,不会自动公开私有任务。`},allProjects:{option:`全部项目`,optionMeta:`{count} 个项目`,title:`任务看板`,projectFilter:`项目范围`,projectFilterHint:`只影响当前看板。`,search:`搜索任务`,searchPlaceholder:`搜索任务、项目或标签`,boardLabel:`任务看板`,partial:`已显示 {loaded}/{total} 个项目,{failed} 个项目读取失败。`,truncated:`有 {count} 个项目超过当前读取上限,暂未展示全部任务。`,empty:`所有项目都很清爽`,emptyHint:`当前负责的项目还没有任务。`,noProjectsVisible:`没有显示任何项目`,noProjectsVisibleHint:`重新勾选项目后,就能继续查看对应任务。`,showAllProjects:`显示全部项目`,noMatch:`没有匹配的任务`,noMatchHint:`换个关键词,或清空搜索后查看全部任务。`,columnEmpty:`暂无任务`,taskCount:`{count} 个任务`,openTask:`在 {project} 中查看任务:{task}`,dragHint:`拖动卡片更新状态;键盘:空格拿起,方向键移动,空格放下。`,dragTask:`移动任务:{task}`,saving:`正在保存任务状态…`,dragLifted:`已拿起“{task}”,当前位置:{status}。`,dragMoved:`已移动到:{status}。`,dragDropped:`已将“{task}”移动到:{status}。`,dragCancelled:`已取消移动。`,moveFailed:`任务移动失败,已恢复原状态:{error}`,refreshRequired:`任务版本信息缺失,请刷新看板后重试。`,status:{planned:`待办`,active:`进行中`,blocked:`阻塞`,review:`待确认`,done:`已完成`}},assignedCount:`负责 {count} 个项目`,noAssignedProjects:`尚未分配项目`,manageHint:`可同时负责多个项目。`,filterLabel:`筛选项目`,filterHint:`仅筛选 Agent 列表,不改变任何负责范围。`,filterEmpty:`未选择项目`,allProjectsFilter:`全部项目`,success:`{name} 已加入`,successUnassigned:`可以稍后为 Agent 分配项目。`,successMultiple:`现在负责 {count} 个项目。`,scopeSaved:`负责范围已保存`,scopeRemoved:`将移出 {count} 个项目,项目和任务数据会保留。`,reloadScope:`重新读取负责范围`,scope:{rule:`管理范围规则`,continuousAll:`全部项目 · 自动纳入`,onlySelected:`只管理所选项目`,allHint:`现在和以后的项目都由 {name} 管理;取消勾选即排除。`,selectedHint:`只管理下方勾选的项目,不自动纳入新项目。`,excludeHint:`取消勾选的项目不再经过这位 Agent。`,excludedCount:`已排除 {count} 个项目。`,successAll:`当前负责 {count} 个项目,以后新建的项目也会自动纳入。`,label:`负责项目`,all:`全部项目`,allSummary:`全部项目 · {count} 个`,selected:`已选 {count} 个项目`,search:`搜索项目`,invert:`反选`,multiple:`多选`,count:`已选 {selected} / 共 {total} 个项目`,done:`完成选择`,reset:`重置`,storageUnavailable:`浏览器无法保存筛选,重新打开后会丢失。`,noMatch:`没有匹配的项目`,empty:`暂无可选项目`,snapshotHint:`支持多选、全选后排除;新建项目需另行选择。`},titles:{heading:`会话标题`,mode:`整理方式`,style:`标题风格`,auto:`自动整理(客户端支持时)`,suggest:`只生成建议`,off:`不整理标题`,emoji:`Emoji + 类型`,text:`纯文字`,example:`格式示例`,exampleTask:`修复登录异常`,boundary:`参考任务优先级与类型;手动改过的标题不再覆盖。`},bole:{title:`团队`,allProjects:`全部项目与未归属`,viewLabel:`团队视图`,search:`搜索 Agent、任务或招募原因`,workFilter:`工作状态`,allWork:`全部状态`,withoutTask:`暂无任务`,allRoles:`全部角色`,clearFilters:`清空筛选`,resultCount:`{count} 条记录`,taskColumn:`当前任务`,projectsColumn:`所属项目`,moreProjects:`另 {count} 个项目`,noMatch:`没有匹配的记录,请调整筛选条件。`,overview:`人员概览`,loading:`正在读取团队成员、任务和招募记录…`,workingNow:`正在工作`,coveredProjects:`覆盖项目`,distribution:`人员分布`,currentWork:`团队成员`,recruitmentHistory:`Bole 工作记录`,noAgents:`还没有可展示的 Agent。`,noRecruitments:`还没有招募记录。`,idle:`暂无进行中的任务记录`,noProject:`未归属项目`,unknownTime:`时间未知`,taskLimit:`只统计最近 200 条任务。`,partialError:`部分人员信息暂时不可用,已保留能够读取的内容。`,types:{coordinator:`统筹 Agent`,durable:`固定 Agent`,hr:`AR Agent`,temporary:`临时 Agent`,other:`其他 Agent`},status:{awaiting_recruitment:`等待招募`,queued:`等待开始`,running:`进行中`,paused:`已暂停`,failed:`需要处理`,awaiting_review:`等待确认`,blocked:`已阻塞`}},createProject:`创建项目`,noProjects:`还没有项目,先聘请 Agent 或创建一个项目。`,noTemplates:`暂无可聘请的 Agent`,emptyWorkbench:`先选择要负责的项目`,unavailable:`这位专属 Agent 暂不可用。`,backToAgents:`返回项目 Agent`,loadError:`Agent 服务暂时不可用,请重试。`,errors:{runtime_unavailable:`工作台未安装或无法加载,请检查 Agent 包后重试。`,assignment_required:`这位 Agent 尚未获准管理此项目,请检查负责范围。`,project_not_found:`项目不可用,请选择有效项目。`,identity_conflict:`标识已被其他 Agent 使用,原有 Agent 未修改。`,reactivation_required:`这位 Agent 已停用,请明确恢复后再分配。`,assignment_scope_conflict:`负责范围已在别处改变。请重新读取,确认后再保存。`,assignment_update_incomplete:`负责范围没能全部保存,请刷新后核对。`}},"en-US":{recruit:`Hire an Agent`,workbench:`Agent workspace`,directory:`Specialist Agents`,project:`Assign to project`,unassigned:`Assign later`,choose:`Choose a specialist Agent`,capabilities:`Specialties`,permissions:`Project permissions`,boardRead:`Read the selected project board`,boardWrite:`Create and update tasks and status`,noExecutor:`Hiring does not start a model or external executor.`,hostReady:`Workbench ready · hosted by FULI`,installRequired:`Workspace not installed; hiring creates the Agent identity only.`,installHelp:`Build the Agent package, then run fl employee install <directory>.`,recruitName:`Hire {name}`,rehire:`Reactivate {name}`,assign:`Save project selection`,recruited:`Hired`,recruiting:`Saving project scope…`,open:`Open workspace`,close:`Close`,cancel:`Cancel`,retry:`Retry`,loading:`Reading Agent directory…`,manageProjects:`Manage assigned projects`,manageProjectsTitle:`Manage {name}’s projects`,loadingScope:`Reading assigned project scope…`,loadingBoard:`Reading the task board…`,loadingTask:`Reading task details…`,loadingShare:`Reading project sharing states…`,loadingReport:`Reading the public report…`,invalidScope:`The selected project is outside Jefa’s assigned scope. Check the project link.`,task:{create:`New task`,detail:`Task details`,project:`Project`,chooseProject:`Choose a project`,title:`Task name`,summary:`Description`,priority:`Priority`,criteria:`Acceptance criteria (one per line)`,tags:`Tags (comma-separated)`,save:`Save task`,saving:`Saving task…`,reload:`Reload`,priorities:{critical:`Critical`,high:`High`,medium:`Medium`,low:`Low`}},share:{title:`External report`,projects:`Projects to share`,scopeHint:`Choose all or selected projects for one report link.`,generate:`Create share link`,generating:`Creating share link…`,revoking:`Stopping sharing…`,link:`Share link`,copy:`Copy link`,copied:`Copied`,preview:`Preview report`,active:`Sharing enabled`,revoke:`Stop sharing`,local:`This address only works on this computer.`,loadFailed:`Some sharing states could not be loaded. Try again.`,partial:`Some projects could not be shared. Try again.`,copyFailed:`Could not copy automatically. Select and copy the link manually.`,unavailable:`The report link is invalid, sharing is disabled, or the projects are unavailable.`,unavailableCount:`{count} projects are unavailable or no longer shared.`,readOnly:`Read-only report`,disclosure:`Only task names, priorities, and status are public.`},shareContent:{emptyTitle:`No public tasks yet`,emptyReport:`These {count} projects have no public tasks yet.`,emptySelection:`The selected projects have no public tasks.`,publicCount:`The report will show {count} public tasks`,verifyContent:`Public content will be verified when generating. Private tasks will not be published automatically.`},allProjects:{option:`All projects`,optionMeta:`{count} projects`,title:`Task board`,projectFilter:`Project scope`,projectFilterHint:`Filters this board only.`,search:`Search tasks`,searchPlaceholder:`Search tasks, projects, or tags`,boardLabel:`Task board`,partial:`Showing {loaded}/{total} projects. {failed} failed to load.`,truncated:`{count} projects exceed the current loading limit; some tasks are not shown.`,empty:`All projects are clear`,emptyHint:`The assigned projects have no tasks yet.`,noProjectsVisible:`No projects shown`,noProjectsVisibleHint:`Select projects again to see their tasks.`,showAllProjects:`Show all projects`,noMatch:`No matching tasks`,noMatchHint:`Try another term, or clear search to see every task.`,columnEmpty:`No tasks`,taskCount:`{count} tasks`,openTask:`View task in {project}: {task}`,dragHint:`Drag cards to update status. Keyboard: Space to lift, arrows to move, Space to drop.`,dragTask:`Move task: {task}`,saving:`Saving task status…`,dragLifted:`Lifted “{task}” from {status}.`,dragMoved:`Moved to {status}.`,dragDropped:`Moved “{task}” to {status}.`,dragCancelled:`Move cancelled.`,moveFailed:`The task could not be moved and was restored: {error}`,refreshRequired:`The task version is missing. Refresh the board and try again.`,status:{planned:`Planned`,active:`In progress`,blocked:`Blocked`,review:`Review`,done:`Done`}},assignedCount:`Assigned to {count} projects`,noAssignedProjects:`No projects assigned`,manageHint:`Can manage several projects.`,filterLabel:`Filter projects`,filterHint:`Filters the Agent list only. Assignments stay unchanged.`,filterEmpty:`No projects selected`,allProjectsFilter:`All projects`,success:`{name} has joined`,successUnassigned:`You can assign this Agent to a project later.`,successMultiple:`Now assigned to {count} projects.`,scopeSaved:`Project selection saved`,scopeRemoved:`Will leave {count} projects. Their projects and tasks will be kept.`,reloadScope:`Reload project selection`,scope:{rule:`Management rule`,continuousAll:`All projects · automatic`,onlySelected:`Selected projects only`,allHint:`{name} manages current and future projects; uncheck one to exclude it.`,selectedHint:`Manage only checked projects. New projects are not included automatically.`,excludeHint:`Unchecked projects no longer go through this Agent.`,excludedCount:`{count} projects excluded.`,successAll:`Managing {count} current projects; future projects will be included automatically.`,label:`Assigned projects`,all:`All projects`,allSummary:`All projects · {count}`,selected:`{count} projects selected`,search:`Search projects`,invert:`Invert selection`,multiple:`Multiple`,count:`{selected} / {total} projects selected`,done:`Done`,reset:`Reset`,storageUnavailable:`This browser cannot save the filter; it resets on reopen.`,noMatch:`No matching projects`,empty:`No projects available`,snapshotHint:`Select multiple, or select all and exclude. New projects must be selected separately.`},titles:{heading:`Session titles`,mode:`Behavior`,style:`Title style`,auto:`Automatic when supported`,suggest:`Suggestions only`,off:`Leave titles unchanged`,emoji:`Emoji + type`,text:`Text only`,example:`Format example`,exampleTask:`Fix sign-in failure`,boundary:`Based on task priority and type; manually edited titles are left alone.`},bole:{title:`Team`,allProjects:`All projects & unassigned`,viewLabel:`Team views`,search:`Search Agents, tasks, or recruitment reasons`,workFilter:`Work status`,allWork:`All statuses`,withoutTask:`No current task`,allRoles:`All roles`,clearFilters:`Clear filters`,resultCount:`{count} records`,taskColumn:`Current task`,projectsColumn:`Projects`,moreProjects:`{count} more projects`,noMatch:`No matching records. Try adjusting the filters.`,overview:`People overview`,loading:`Reading team members, tasks, and recruitment records…`,workingNow:`Working now`,coveredProjects:`Projects covered`,distribution:`People distribution`,currentWork:`Team members`,recruitmentHistory:`Bole’s activity`,noAgents:`No Agents to show yet.`,noRecruitments:`No recruitment records yet.`,idle:`No ongoing task recorded`,noProject:`No project`,unknownTime:`Unknown time`,taskLimit:`Counts the latest 200 tasks only.`,partialError:`Some people data is temporarily unavailable. Available information is still shown.`,types:{coordinator:`Coordinator`,durable:`Durable Agent`,hr:`AR Agent`,temporary:`Temporary Agent`,other:`Other Agent`},status:{awaiting_recruitment:`Awaiting recruitment`,queued:`Queued`,running:`In progress`,paused:`Paused`,failed:`Needs attention`,awaiting_review:`Awaiting review`,blocked:`Blocked`}},createProject:`Create project`,noProjects:`No projects yet. Hire an Agent first or create a project.`,noTemplates:`No specialist Agents available`,emptyWorkbench:`Choose projects to manage`,unavailable:`This specialist Agent is unavailable.`,backToAgents:`Back to project Agents`,loadError:`Agent service is unavailable. Please retry.`,errors:{runtime_unavailable:`Workbench is not installed or could not load. Check its package and retry.`,assignment_required:`This Agent cannot manage this project yet. Check its assigned projects.`,project_not_found:`Project unavailable. Select an active project.`,identity_conflict:`Another Agent uses this identifier. The existing Agent was not modified.`,reactivation_required:`This Agent is inactive. Explicitly reactivate it before assigning.`,assignment_scope_conflict:`Project assignments changed elsewhere. Reload, review, and save again.`,assignment_update_incomplete:`Not everything was saved. Reload and check.`}}},sh={"zh-CN":{title:`待你处理`,count:`{count} 件事待你处理`,all:`全部 Agent`,refresh:`刷新`,close:`关闭`,loading:`正在读取待处理的 Agent 请求…`,loadError:`待办读取失败,请重试`,empty:`暂时没有需要你处理的事情`,response:`你的回复`,send:`提交回复`,sending:`正在提交 Agent 请求答复…`,more:`加载更多`,task:`查看 Agent 任务`,context:`背景与详情`,chooseReply:`选择回复`,other:`其他回复`,note:`补充说明(选填)`,placeholder:`写下你的想法…`,replyHint:`回复只记录你的决定,不会直接执行或授权。`,tooLong:`回复过长,请精简至 4096 字以内。`,queue:`待处理请求`,selectRequest:`选择请求`,agentFallback:`Agent`,projectFallback:`项目`,updated:`请求已更新,请重新确认回复。`,wrongSpace:`请求属于其他空间,请重新打开后回复。`,replies:{agree:`同意此方案`,decline:`暂不同意`,accept:`审核通过`,revise:`需要修改`,resolved:`已处理,可以继续`,clarify:`请补充信息`},displayName:`名字`,roleName:`岗位名称`,kinds:{question:`需要答复`,approval:`需要决定`,review:`需要验收`,permission:`需要权限`,blocked:`需要协助`}},"en-US":{title:`Needs you`,count:`{count} requests need you`,all:`All Agents`,refresh:`Refresh`,close:`Close`,loading:`Loading pending Agent requests…`,loadError:`Could not load requests. Try again`,empty:`Nothing needs your attention`,response:`Your reply`,send:`Reply and resolve`,sending:`Submitting the Agent request response…`,more:`Load more`,task:`View Agent tasks`,context:`Background & details`,chooseReply:`Choose a reply`,other:`Something else`,note:`Add a note (optional)`,placeholder:`Share your thoughts…`,replyHint:`Records your decision only; nothing is executed or granted.`,tooLong:`Shorten your reply to 4096 characters.`,queue:`Pending requests`,selectRequest:`Select a request`,agentFallback:`Agent`,projectFallback:`Project`,updated:`This request changed. Please review your reply.`,wrongSpace:`This request belongs to a different space. Reopen it before replying.`,replies:{agree:`Agree with this proposal`,decline:`Do not agree at this time`,accept:`Review passed`,revise:`Changes needed`,resolved:`Resolved, ready to continue`,clarify:`More information needed`},displayName:`Name`,roleName:`Role name`,kinds:{question:`Question`,approval:`Decision`,review:`Review`,permission:`Permission`,blocked:`Help needed`}}},ch={"zh-CN":{threads:`Agent 之间的对话`,empty:`还没有 Agent 之间的对话`,emptyHint:`Agent 在任意已接入的客户端里调用 message_agent,就会出现在这里。`,select:`选择一段对话查看`,loading:`正在读取 Agent 之间的对话…`,loadFailed:`对话读取失败`,retry:`重试`,messages:`{count} 条消息`,waiting:`等待回复`,to:`发给`,via:{resume:`唤醒原会话回答`,new:`新会话回答`,inbox:`在任务中回复`},status:{queued:`排队中,等对方下次开始任务时回复`,delivering:`正在唤醒对方…`,answered:`已回答`,sent:`已送达`,remoteQueued:`等待对方设备回复`,claimed:`对方正在接收`,running:`对方正在处理`,failed:`未送达`,cancelled:`已取消`,expired:`已过期`,unknown:`结果不明,可能已运行也可能没有`}},"en-US":{threads:`Agent conversations`,empty:`No Agent conversations yet`,emptyHint:`They appear here when an Agent calls message_agent in any connected client.`,select:`Select a conversation`,loading:`Loading Agent conversations…`,loadFailed:`Could not load conversations`,retry:`Retry`,messages:`{count} messages`,waiting:`Waiting for a reply`,to:`to`,via:{resume:`answered by waking its conversation`,new:`answered in a new session`,inbox:`replied during a task`},status:{queued:`Queued until the recipient starts its next task`,delivering:`Waking the recipient…`,answered:`Answered`,sent:`Delivered`,remoteQueued:`Waiting for the other device`,claimed:`Being received`,running:`In progress on the other device`,failed:`Not delivered`,cancelled:`Cancelled`,expired:`Expired`,unknown:`Unknown: it may or may not have run`}}},lh={"zh-CN":{navigation:{title:`pin`},pin:`pin`,unpin:`取消 pin`,loading:`正在读取 pin…`,saving:`正在保存 pin…`,loadError:`暂时无法读取 pin。`,saveError:`暂时无法保存 pin。`,conflictError:`pin 列表已更新,请重试。`,retry:`重试`},"en-US":{navigation:{title:`pin`},pin:`pin`,unpin:`unpin`,loading:`Reading pin…`,saving:`Saving pin…`,loadError:`pin is temporarily unavailable.`,saveError:`The pin could not be saved.`,conflictError:`The pin list changed. Try again.`,retry:`Retry`}},uh={"zh-CN":{settings:{title:`自主程度`,hint:`控制 Tonborg 如何分析请求,以及哪些结果需要你确认。`,project:`项目范围`,global:`所有项目`,inherited:`沿用全局策略`,override:`项目覆盖策略`,reset:`恢复全局策略`,resetTitle:`删除该项目的覆盖策略`,save:`保存策略`,undo:`撤销`,saved:`策略已保存。`,loading:`正在读取判断策略…`,saving:`正在保存判断策略…`,loadError:`暂时无法读取判断策略。`,saveError:`暂时无法保存判断策略。`,conflictError:`判断策略已更新,请重新检查后再保存。`,retry:`重试`},mode:{title:`自主程度`,manual:`我来确认`,manualHint:`只分析,不执行。`,shared:`共同决策`,sharedHint:`按已有确认处理常规事项,拿不准时问我。`,autonomous:`自主处理`,autonomousHint:`把常规审核和执行选择交给 Tonborg,必要时再找我。`},quality:{title:`质量偏好`,quality:`质量优先`,balanced:`平衡`,economy:`经济`},client:{title:`判断客户端`,codex:`Codex`,claude_code:`Claude Code`},workbench:{aria:`Tonborg 决策工作台`,title:`判断工作台`,subtitle:`查看近期判断并决定下一步。`,all:`全部`,human:`需要人工`,review:`运行一次判断`,reviewing:`正在分析待处理事项…`,loading:`正在读取近期判断…`,refresh:`刷新`,empty:`暂时没有判断记录。`,emptyHuman:`没有需要人工处理的判断。`,loadError:`暂时无法读取判断记录。`,reviewError:`判断请求暂时无法完成。`,retry:`重试`,target:`目标`,evidence:`依据`,execution:`执行状态`,policy:`策略`,session:`会话`,source:`来源`,selection:`推荐方案`,executor:`执行器`,model:`模型`,disposition:`建议动作`,actions:{continue_current:`继续当前会话`,reuse_conversation:`复用历史会话`,new_session:`新开会话`,delegate:`委派子 Agent`,ask_user:`请你决定`},details:`查看执行详情`,receipt:`执行回执`,recordError:`记录错误`,feedbackHistory:`反馈历史`,executionHistory:`执行历史`,detailsUnavailable:`详情暂不可用。`,kind:{review:`审阅`,routing:`执行选择`,acceptance:`任务验收`},outcome:{approve:`通过`,escalate:`需要确认`,recommend:`建议`,failed:`失败`},executionStatus:{not_applied:`尚未执行`,applied:`已执行`,stale:`已过期`,failed:`执行失败`},feedback:`反馈`,feedbackReason:`反馈原因(可选)`,feedbackReasonAdd:`添加反馈原因`,feedbackReasonSaved:`已保存反馈原因`,saveReason:`保存原因`,feedbackUp:`有帮助`,feedbackDown:`需要改进`,feedbackSaving:`正在保存反馈…`,feedbackConflict:`记录已更新,请重新查看后再反馈。`,timeUnknown:`时间未知`},links:{profile:`查看 Agent 资料`,memory:`查看记忆`}},"en-US":{settings:{title:`Judgment and autonomy`,hint:`Choose how Tonborg analyzes requests and which results need your confirmation.`,project:`Project scope`,global:`All projects`,inherited:`Using the global policy`,override:`Project override`,reset:`Use global policy`,resetTitle:`Remove this project override`,save:`Save policy`,undo:`Undo`,saved:`Policy saved.`,loading:`Reading judgment policy…`,saving:`Saving judgment policy…`,loadError:`The judgment policy is temporarily unavailable.`,saveError:`The judgment policy could not be saved.`,conflictError:`The judgment policy changed. Review it before saving again.`,retry:`Retry`},mode:{title:`Autonomy scope`,manual:`Manual`,manualHint:`Analyze only; do not apply changes.`,shared:`Shared`,sharedHint:`Apply safe and reversible items.`,autonomous:`Autonomous`,autonomousHint:`Handle additional routine items; risky actions always need you.`},quality:{title:`Quality preference`,quality:`Quality priority`,balanced:`Balanced`,economy:`Economy`},client:{title:`Judgment client`,codex:`Codex`,claude_code:`Claude Code`},workbench:{aria:`Tonborg decision workbench`,title:`Judgment workbench`,subtitle:`Review recent decisions and choose what happens next.`,all:`All`,human:`Human needed`,review:`Run a judgment review`,reviewing:`Analyzing pending items…`,loading:`Reading recent judgments…`,refresh:`Refresh`,empty:`There are no judgment records yet.`,emptyHuman:`No judgments need human attention.`,loadError:`Judgment records are temporarily unavailable.`,reviewError:`The judgment request could not be completed.`,retry:`Retry`,target:`Target`,evidence:`Evidence`,execution:`Execution`,policy:`Policy`,session:`Session`,source:`Source`,selection:`Recommended option`,executor:`Executor`,model:`Model`,disposition:`Suggested action`,actions:{continue_current:`Continue here`,reuse_conversation:`Reuse conversation`,new_session:`Start session`,delegate:`Delegate work`,ask_user:`Ask you`},details:`View execution details`,receipt:`Execution receipt`,recordError:`Record error`,feedbackHistory:`Feedback history`,executionHistory:`Execution history`,detailsUnavailable:`Details are temporarily unavailable.`,kind:{review:`Review`,routing:`Execution choice`,acceptance:`Task acceptance`},outcome:{approve:`Approved`,escalate:`Needs confirmation`,recommend:`Recommended`,failed:`Failed`},executionStatus:{not_applied:`Not applied`,applied:`Applied`,stale:`Stale`,failed:`Execution failed`},feedback:`Feedback`,feedbackReason:`Feedback reason (optional)`,feedbackReasonAdd:`Add feedback reason`,feedbackReasonSaved:`Feedback reason saved`,saveReason:`Save reason`,feedbackUp:`Helpful`,feedbackDown:`Needs improvement`,feedbackSaving:`Saving feedback…`,feedbackConflict:`The record changed. Review it before sending feedback again.`,timeUnknown:`Unknown time`},links:{profile:`View Agent profile`,memory:`View memory`}}},dh=[`zh-CN`,`en-US`],fh=`fuli.locale`;function ph(e){return typeof e==`string`&&dh.includes(e)}function mh(e,t=[]){if(ph(e))return e;for(let e of t){let t=_h(e);if(t)return t}return`en-US`}function hh(){if(typeof window>`u`)return null;try{return window.localStorage.getItem(fh)}catch{return null}}function gh(){return typeof navigator>`u`?[]:navigator.languages.length>0?navigator.languages:navigator.language?[navigator.language]:[]}function _h(e){let t=e.trim().toLowerCase().split(/[-_]/,1)[0];return t===`zh`?`zh-CN`:t===`en`?`en-US`:null}var vh={"zh-CN":{judgment:uh[`zh-CN`],agentPins:lh[`zh-CN`],ui:Um[`zh-CN`],overview:Wm[`zh-CN`],agentRedesign:Gm[`zh-CN`],agentProfiles:Km[`zh-CN`],attention:sh[`zh-CN`],roundtable:ch[`zh-CN`],employees:oh[`zh-CN`],about:Qm[`zh-CN`],common:qm[`zh-CN`],console:Jm[`zh-CN`],knowledge:{dialogs:Xm[`zh-CN`],domain:Ym[`zh-CN`],workspace:Zm[`zh-CN`]},pages:$m[`zh-CN`],preferences:eh[`zh-CN`],projects:th[`zh-CN`],projectAgents:nh[`zh-CN`],routes:rh[`zh-CN`],settings:ih[`zh-CN`],writingTaste:ah[`zh-CN`]},"en-US":{judgment:uh[`en-US`],agentPins:lh[`en-US`],ui:Um[`en-US`],overview:Wm[`en-US`],agentRedesign:Gm[`en-US`],agentProfiles:Km[`en-US`],attention:sh[`en-US`],roundtable:ch[`en-US`],employees:oh[`en-US`],about:Qm[`en-US`],common:qm[`en-US`],console:Jm[`en-US`],knowledge:{dialogs:Xm[`en-US`],domain:Ym[`en-US`],workspace:Zm[`en-US`]},pages:$m[`en-US`],preferences:eh[`en-US`],projects:th[`en-US`],projectAgents:nh[`en-US`],routes:rh[`en-US`],settings:ih[`en-US`],writingTaste:ah[`en-US`]}},yh=Am({legacy:!1,globalInjection:!0,locale:mh(hh(),gh()),fallbackLocale:`zh-CN`,messages:vh});function bh(){return mh(yh.global.locale.value)}function xh(e,t={}){if(yh.global.locale.value=e,typeof document<`u`&&(document.documentElement.lang=e),!(t.persist===!1||typeof window>`u`))try{window.localStorage.setItem(fh,e)}catch{}}function Sh(e,t){return t?yh.global.t(e,t):yh.global.t(e)}xh(bh(),{persist:!1});export{qt as $,js as A,Cr as B,pa as C,ic as D,ni as E,hr as F,je as G,fr as H,fa as I,tn as J,Zt as K,ma as L,Qi as M,Yi as N,_r as O,ls as P,an as Q,ca as R,ms as S,H as T,pr as U,br as V,Ae as W,Kt as X,Me as Y,Jt as Z,Rr as _,Sh as a,de as at,hs as b,yu as c,Ql as d,on as et,Jl as f,B as g,lu as h,xh as i,ge as it,Yn as j,gr as k,Yl as l,du as m,bh as n,gn as nt,uh as o,Te as ot,Gc as p,L as q,yh as r,un as rt,Il as s,dh as t,I as tt,Zl as u,rc as v,Ts as w,Ds as x,xs as y,ri as z};