diff --git a/404.html b/404.html index c9c5c77c..e424b8de 100644 --- a/404.html +++ b/404.html @@ -9,7 +9,7 @@ - + @@ -17,7 +17,7 @@
- + \ No newline at end of file diff --git a/assets/app.D5pFsAJ4.js b/assets/app.BCeoDn-v.js similarity index 95% rename from assets/app.D5pFsAJ4.js rename to assets/app.BCeoDn-v.js index 754888a9..9181440b 100644 --- a/assets/app.D5pFsAJ4.js +++ b/assets/app.BCeoDn-v.js @@ -1 +1 @@ -import{t as p}from"./chunks/theme.Cqd42OuW.js";import{R as s,a2 as i,a3 as u,a4 as c,a5 as l,a6 as f,a7 as d,a8 as m,a9 as h,aa as g,ab as A,d as v,u as y,v as C,s as P,ac as b,ad as w,ae as R,af as E}from"./chunks/framework.DEqXEGcv.js";function r(e){if(e.extends){const a=r(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const n=r(p),S=v({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=y();return C(()=>{P(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&b(),w(),R(),n.setup&&n.setup(),()=>E(n.Layout)}});async function T(){globalThis.__VITEPRESS__=!0;const e=_(),a=D();a.provide(u,e);const t=c(e.route);return a.provide(l,t),a.component("Content",f),a.component("ClientOnly",d),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),n.enhanceApp&&await n.enhanceApp({app:a,router:e,siteData:m}),{app:a,router:e,data:t}}function D(){return A(S)}function _(){let e=s;return h(a=>{let t=g(a),o=null;return t&&(e&&(t=t.replace(/\.js$/,".lean.js")),o=import(t)),s&&(e=!1),o},n.NotFound)}s&&T().then(({app:e,router:a,data:t})=>{a.go().then(()=>{i(a.route,t.site),e.mount("#app")})});export{T as createApp}; +import{t as p}from"./chunks/theme.Bxi9Rr1a.js";import{R as s,a2 as i,a3 as u,a4 as c,a5 as l,a6 as f,a7 as d,a8 as m,a9 as h,aa as g,ab as A,d as v,u as y,v as C,s as P,ac as b,ad as w,ae as R,af as E}from"./chunks/framework.DEqXEGcv.js";function r(e){if(e.extends){const a=r(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const n=r(p),S=v({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=y();return C(()=>{P(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&b(),w(),R(),n.setup&&n.setup(),()=>E(n.Layout)}});async function T(){globalThis.__VITEPRESS__=!0;const e=_(),a=D();a.provide(u,e);const t=c(e.route);return a.provide(l,t),a.component("Content",f),a.component("ClientOnly",d),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),n.enhanceApp&&await n.enhanceApp({app:a,router:e,siteData:m}),{app:a,router:e,data:t}}function D(){return A(S)}function _(){let e=s;return h(a=>{let t=g(a),o=null;return t&&(e&&(t=t.replace(/\.js$/,".lean.js")),o=import(t)),s&&(e=!1),o},n.NotFound)}s&&T().then(({app:e,router:a,data:t})=>{a.go().then(()=>{i(a.route,t.site),e.mount("#app")})});export{T as createApp}; diff --git a/assets/chunks/@localSearchIndexroot.BkeCdQfh.js b/assets/chunks/@localSearchIndexroot.BkeCdQfh.js deleted file mode 100644 index 4e7993d3..00000000 --- a/assets/chunks/@localSearchIndexroot.BkeCdQfh.js +++ /dev/null @@ -1 +0,0 @@ -const e='{"documentCount":30,"nextId":30,"documentIds":{"0":"/concepts/#core-concepts","1":"/concepts/#concept-map","2":"/concepts/#why-this-matters","3":"/concepts/#in-this-chapter","4":"/getting-started.html#getting-started","5":"/concepts/identity-and-binding.html#accounts-and-linking","6":"/concepts/identity-and-binding.html#account-model","7":"/concepts/identity-and-binding.html#access-platform-and-bot","8":"/concepts/identity-and-binding.html#why-linking-is-account-scoped","9":"/concepts/identity-and-binding.html#linking-flow-current-consensus","10":"/concepts/identity-and-binding.html#bot-type-semantics","11":"/#memoh-documentation","12":"/#documentation-sections","13":"/#for-contributors","14":"/#current-focus","15":"/style/terminology.html#terminology-rules","16":"/style/terminology.html#canonical-terms","17":"/style/terminology.html#preferred-wording","18":"/style/terminology.html#disallowed-or-discouraged-terms","19":"/style/terminology.html#example-sentences","20":"/style/terminology.html#contributor-checklist","21":"/troubleshooting.html#troubleshooting","22":"/troubleshooting.html#mcp-container-no-running-task-found-task-mcp-xxx-not-found","23":"/troubleshooting.html#symptom","24":"/troubleshooting.html#cause","25":"/troubleshooting.html#solution","26":"/troubleshooting.html#mcp-container-image-update-not-taking-effect-after-rebuild","27":"/troubleshooting.html#symptom-1","28":"/troubleshooting.html#cause-1","29":"/troubleshooting.html#solution-1"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[2,1,13],"1":[2,2,37],"2":[3,2,51],"3":[3,2,4],"4":[2,1,1],"5":[3,1,1],"6":[2,3,43],"7":[4,3,27],"8":[5,3,32],"9":[5,3,32],"10":[3,3,36],"11":[2,1,12],"12":[2,2,5],"13":[2,2,3],"14":[2,2,38],"15":[2,1,17],"16":[2,2,42],"17":[2,2,32],"18":[4,2,32],"19":[2,2,22],"20":[2,2,25],"21":[1,1,1],"22":[9,1,1],"23":[1,10,46],"24":[1,10,65],"25":[1,10,56],"26":[9,1,1],"27":[1,10,33],"28":[1,10,44],"29":[1,10,55]},"averageFieldLength":[2.7,3.5,26.9],"storedFields":{"0":{"title":"Core Concepts","titles":[]},"1":{"title":"Concept Map","titles":["Core Concepts"]},"2":{"title":"Why This Matters","titles":["Core Concepts"]},"3":{"title":"In This Chapter","titles":["Core Concepts"]},"4":{"title":"Getting Started","titles":[]},"5":{"title":"Accounts and Linking","titles":[]},"6":{"title":"Account Model","titles":["Accounts and Linking"]},"7":{"title":"Access Platform and Bot","titles":["Accounts and Linking"]},"8":{"title":"Why Linking Is Account-Scoped","titles":["Accounts and Linking"]},"9":{"title":"Linking Flow (Current Consensus)","titles":["Accounts and Linking"]},"10":{"title":"Bot Type Semantics","titles":["Accounts and Linking"]},"11":{"title":"Memoh Documentation","titles":[]},"12":{"title":"Documentation Sections","titles":["Memoh Documentation"]},"13":{"title":"For Contributors","titles":["Memoh Documentation"]},"14":{"title":"Current Focus","titles":["Memoh Documentation"]},"15":{"title":"Terminology Rules","titles":[]},"16":{"title":"Canonical Terms","titles":["Terminology Rules"]},"17":{"title":"Preferred Wording","titles":["Terminology Rules"]},"18":{"title":"Disallowed or Discouraged Terms","titles":["Terminology Rules"]},"19":{"title":"Example Sentences","titles":["Terminology Rules"]},"20":{"title":"Contributor Checklist","titles":["Terminology Rules"]},"21":{"title":"Troubleshooting","titles":[]},"22":{"title":"MCP Container: no running task found: task mcp-xxx not found","titles":["Troubleshooting"]},"23":{"title":"Symptom","titles":["Troubleshooting","MCP Container: no running task found: task mcp-xxx not found"]},"24":{"title":"Cause","titles":["Troubleshooting","MCP Container: no running task found: task mcp-xxx not found"]},"25":{"title":"Solution","titles":["Troubleshooting","MCP Container: no running task found: task mcp-xxx not found"]},"26":{"title":"MCP Container: Image update not taking effect after rebuild","titles":["Troubleshooting"]},"27":{"title":"Symptom","titles":["Troubleshooting","MCP Container: Image update not taking effect after rebuild"]},"28":{"title":"Cause","titles":["Troubleshooting","MCP Container: Image update not taking effect after rebuild"]},"29":{"title":"Solution","titles":["Troubleshooting","MCP Container: Image update not taking effect after rebuild"]}},"dirtCount":0,"index":[["$path",{"2":{"27":1}}],["js",{"2":{"27":1,"29":1}}],["yml",{"2":{"25":1}}],["your",{"2":{"25":2}}],["you",{"2":{"24":2,"25":1}}],["x3c",{"2":{"25":1}}],["xxx",{"0":{"22":1},"1":{"23":1,"24":1,"25":1},"2":{"23":1,"24":1}}],["never",{"2":{"28":1}}],["new",{"2":{"28":1,"29":2}}],["name==$",{"2":{"28":1}}],["named",{"2":{"24":1}}],["npx",{"2":{"27":1}}],["n",{"2":{"25":1,"28":1,"29":2}}],["node",{"2":{"27":1,"29":1}}],["no",{"0":{"22":1},"1":{"23":1,"24":1,"25":1},"2":{"23":1,"24":1}}],["notfound",{"2":{"23":1}}],["note",{"2":{"2":1,"10":1,"14":1,"25":1}}],["not",{"0":{"22":1,"26":1},"1":{"23":1,"24":1,"25":1,"27":1,"28":1,"29":1},"2":{"1":1,"2":1,"6":1,"8":1,"10":1,"14":1,"15":1,"16":1,"18":1,"19":1,"23":3,"24":1,"27":1}}],["=",{"2":{"23":2,"25":1}}],["kept",{"2":{"20":1}}],["keeps",{"2":{"8":1}}],["keeping",{"2":{"2":1}}],["keep",{"2":{"2":1,"17":1,"25":1}}],["verify",{"2":{"29":1}}],["volume",{"2":{"24":1,"28":1}}],["vs",{"2":{"18":1,"20":1}}],["validates",{"2":{"9":1}}],["ls",{"2":{"29":1}}],["larger",{"2":{"29":1}}],["latest",{"2":{"29":1}}],["library",{"2":{"29":1}}],["like",{"2":{"27":1}}],["links",{"2":{"1":1,"6":1,"8":1,"9":1}}],["linking",{"0":{"5":1,"8":1,"9":1},"1":{"6":1,"7":1,"8":1,"9":1,"10":1},"2":{"1":1,"3":1,"6":1,"8":3,"14":2,"16":3,"17":1,"19":1}}],["level=error",{"2":{"23":1}}],["level=warn",{"2":{"23":1}}],["local",{"2":{"25":1}}],["locally",{"2":{"25":1}}],["logs",{"2":{"23":2}}],["long",{"2":{"11":1}}],["rm",{"2":{"25":1,"29":1}}],["root",{"2":{"24":2,"25":2}}],["rpc",{"2":{"23":1}}],["run",{"2":{"25":1}}],["runc",{"2":{"24":1}}],["running",{"0":{"22":1},"1":{"23":1,"24":1,"25":1},"2":{"23":1}}],["runtime",{"2":{"10":1}}],["rules",{"0":{"15":1},"1":{"16":1,"17":1,"18":1,"19":1,"20":1},"2":{"13":1}}],["recreate",{"2":{"29":1}}],["receives",{"2":{"2":1}}],["re",{"2":{"29":1}}],["remove",{"2":{"29":1}}],["rebuilt",{"2":{"28":1}}],["rebuilding",{"2":{"27":1}}],["rebuild",{"0":{"26":1},"1":{"27":1,"28":1,"29":1}}],["restarts",{"2":{"28":1}}],["restarting",{"2":{"27":1}}],["restart",{"2":{"25":2,"29":2}}],["resources",{"2":{"2":1,"8":1}}],["resource",{"2":{"1":1,"7":1,"16":1}}],["request",{"2":{"24":1}}],["requests",{"2":{"9":1}}],["references",{"2":{"20":1}}],["replaced",{"2":{"20":1}}],["relationship",{"2":{"14":1}}],["rely",{"2":{"10":1}}],["host",{"2":{"24":2}}],["here",{"2":{"10":1}}],["handled",{"2":{"9":1}}],["updating",{"2":{"27":1}}],["update",{"0":{"26":1},"1":{"27":1,"28":1,"29":1},"2":{"25":1}}],["up",{"2":{"25":1}}],["under",{"2":{"9":1}}],["uses",{"2":{"24":1,"29":1}}],["use",{"2":{"23":1,"24":1}}],["users",{"2":{"24":2}}],["user",{"2":{"1":3,"2":1,"6":2,"9":1,"14":1,"15":1,"16":2,"17":2,"18":1,"19":2}}],["used",{"2":{"0":1,"16":1}}],["were",{"2":{"29":1}}],["was",{"2":{"29":1}}],["write",{"2":{"17":2}}],["writing",{"2":{"15":1}}],["wording",{"0":{"17":1},"2":{"18":1}}],["with",{"2":{"8":1,"24":1,"27":1}}],["when",{"2":{"17":1,"18":1,"23":1,"24":1}}],["where",{"2":{"7":1}}],["while",{"2":{"2":1,"7":1}}],["why",{"0":{"2":1,"8":1},"2":{"14":1}}],["g",{"2":{"23":1,"24":1,"27":1}}],["guidance",{"2":{"15":1}}],["grant",{"2":{"8":1}}],["getting",{"0":{"4":1},"2":{"12":1}}],["old",{"2":{"28":1,"29":1}}],["outside",{"2":{"25":1}}],["open",{"2":{"24":1}}],["opt",{"2":{"24":1,"25":1}}],["or",{"0":{"18":1},"2":{"24":1}}],["owner",{"2":{"10":1}}],["ownership",{"2":{"8":1}}],["own",{"2":{"9":2}}],["of",{"2":{"8":1,"17":2}}],["only",{"2":{"20":1}}],["one",{"2":{"16":1}}],["on",{"2":{"1":1,"2":1,"6":1,"10":1,"14":2,"16":1,"17":1}}],["io",{"2":{"29":1}}],["imported",{"2":{"28":1,"29":1}}],["import",{"2":{"28":2,"29":1}}],["implies",{"2":{"18":1}}],["implementations",{"2":{"10":1}}],["images",{"2":{"28":1,"29":2}}],["image",{"0":{"26":1},"1":{"27":1,"28":1,"29":1},"2":{"27":1,"28":7,"29":3}}],["id>",{"2":{"25":1}}],["id=xxx",{"2":{"23":1}}],["if",{"2":{"25":2,"28":1,"29":1}}],["iteration",{"2":{"14":1}}],["it",{"2":{"8":3,"15":1,"18":1,"24":1,"25":1,"29":2}}],["is",{"0":{"8":1},"2":{"6":3,"7":2,"10":1,"11":1,"14":1,"15":1,"18":1,"19":2,"20":2,"24":1,"28":2}}],["incorrect",{"2":{"19":1}}],["instead",{"2":{"17":2,"25":1}}],["inside",{"2":{"2":1,"7":1,"16":1,"18":1,"24":2}}],["inbound",{"2":{"7":2,"16":1}}],["independent",{"2":{"2":1,"8":1}}],["in",{"0":{"3":1},"2":{"1":1,"6":1,"10":1,"17":2,"18":1,"19":1,"20":1,"24":1,"25":2,"27":1,"28":2}}],["internal",{"2":{"1":1,"2":1,"6":2}}],["embedded",{"2":{"28":1}}],["entrypoint",{"2":{"28":2}}],["entities",{"2":{"6":1}}],["effect",{"0":{"26":1},"1":{"27":1,"28":1,"29":1}}],["errors",{"2":{"27":1}}],["error",{"2":{"23":1}}],["error=",{"2":{"23":2}}],["e",{"2":{"23":1,"24":1,"27":1}}],["every",{"2":{"20":1}}],["establish",{"2":{"8":1}}],["executable",{"2":{"27":1}}],["execute",{"2":{"23":1}}],["exec",{"2":{"23":1,"25":1,"27":1,"29":2}}],["except",{"2":{"18":1}}],["explaining",{"2":{"14":1}}],["exists",{"2":{"8":1,"25":1,"28":1}}],["exist",{"2":{"6":1,"24":1}}],["example",{"0":{"19":1},"2":{"1":1,"6":1,"14":1}}],["external",{"2":{"1":1,"2":1,"6":1,"14":1,"16":2}}],["data",{"2":{"24":5,"25":3,"28":1}}],["does",{"2":{"18":1,"24":1}}],["dockerfile",{"2":{"27":1}}],["docker",{"2":{"24":1,"25":6,"28":2,"29":1}}],["docs",{"2":{"17":1,"18":1}}],["documentation",{"0":{"11":1,"12":1},"1":{"12":1,"13":1,"14":1},"2":{"14":1,"15":1}}],["documented",{"2":{"10":1}}],["detail",{"2":{"29":1}}],["default",{"2":{"25":1,"28":1,"29":2}}],["defines",{"2":{"0":1,"15":1}}],["desc",{"2":{"23":1}}],["describing",{"2":{"17":1}}],["delete",{"2":{"23":1,"29":1}}],["decoupled",{"2":{"8":1}}],["directory",{"2":{"24":1}}],["directly",{"2":{"8":1}}],["distinguish",{"2":{"18":1}}],["distinguishing",{"2":{"14":1}}],["discouraged",{"0":{"18":1}}],["disallowed",{"0":{"18":1}}],["different",{"2":{"6":1}}],["quoting",{"2":{"18":1}}],["quot",{"2":{"2":2,"14":2,"17":8,"19":6,"20":6}}],["fi",{"2":{"28":1}}],["file",{"2":{"24":1,"27":1}}],["first",{"2":{"17":1}}],["fulfil",{"2":{"24":1}}],["fail",{"2":{"27":1}}],["fails",{"2":{"24":1}}],["failed",{"2":{"23":2,"24":1}}],["facing",{"2":{"17":1}}],["found",{"0":{"22":2},"1":{"23":2,"24":2,"25":2},"2":{"23":3,"27":1}}],["focuses",{"2":{"14":1}}],["focus",{"0":{"14":1}}],["for",{"0":{"13":1},"2":{"1":1,"6":1,"14":1,"16":1}}],["flows",{"2":{"9":1}}],["flow",{"0":{"9":1}}],["from",{"2":{"2":2,"7":1,"9":1,"25":1,"29":2}}],["python",{"2":{"27":1,"29":1}}],["phrasing",{"2":{"18":1}}],["plain",{"2":{"18":1}}],["platforms",{"2":{"2":1,"14":1}}],["platform",{"0":{"7":1},"2":{"1":3,"2":3,"6":4,"7":2,"8":1,"9":3,"14":2,"16":5,"17":3,"18":3,"19":2,"20":2}}],["path",{"2":{"24":2,"25":1}}],["parenthetical",{"2":{"20":1}}],["parentheses",{"2":{"17":1}}],["page",{"2":{"15":1,"29":1}}],["preferred",{"0":{"17":1}}],["provider=container",{"2":{"23":1}}],["prose",{"2":{"20":1}}],["product",{"2":{"10":1,"15":1,"17":1}}],["produced",{"2":{"7":1}}],["project",{"2":{"2":1}}],["process",{"2":{"1":1}}],["persistent",{"2":{"28":1}}],["personal",{"2":{"10":1}}],["permissions",{"2":{"2":1}}],["public",{"2":{"10":1}}],["bashdocker",{"2":{"25":2,"29":3}}],["based",{"2":{"10":1}}],["between",{"2":{"14":1}}],["be",{"2":{"10":1,"29":1}}],["behavior",{"2":{"10":1,"17":1}}],["before",{"2":{"6":1}}],["but",{"2":{"2":1,"24":1}}],["binds",{"2":{"19":1}}],["bind",{"2":{"1":1,"6":1,"9":1,"16":2,"17":1}}],["boundary",{"2":{"1":1,"7":1,"16":1}}],["bots",{"2":{"7":1,"24":1}}],["bot",{"0":{"7":1,"10":1},"2":{"1":1,"2":1,"7":1,"8":3,"9":1,"10":2,"14":1,"16":1,"23":2,"25":1,"29":2}}],["by",{"2":{"0":1,"1":1,"2":1,"7":2,"9":1,"16":1,"20":1}}],["taking",{"0":{"26":1},"1":{"27":1,"28":1,"29":1}}],["task",{"0":{"22":2},"1":{"23":2,"24":2,"25":2},"2":{"23":3}}],["time",{"2":{"16":1}}],["tightened",{"2":{"10":1}}],["trigger",{"2":{"29":1}}],["tries",{"2":{"23":1}}],["troubleshooting",{"0":{"21":1},"1":{"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1}}],["transition",{"2":{"10":1}}],["treats",{"2":{"6":1}}],["type",{"0":{"10":1}}],["types",{"2":{"6":1}}],["two",{"2":{"6":2}}],["term",{"2":{"20":1}}],["terms",{"0":{"16":1,"18":1},"2":{"15":1}}],["terminology",{"0":{"15":1},"1":{"16":1,"17":1,"18":1,"19":1,"20":1},"2":{"2":1,"13":1}}],["telegram",{"2":{"1":1}}],["toml",{"2":{"24":1,"25":3}}],["tool",{"2":{"23":1}}],["tools",{"2":{"23":1,"27":1}}],["to",{"2":{"1":1,"2":1,"8":2,"9":1,"16":1,"19":1,"23":2,"24":2,"25":2,"27":1,"29":1}}],["tg",{"2":{"1":1,"2":1,"6":1,"14":1,"19":1}}],["that",{"2":{"1":1,"2":1,"6":1,"18":1}}],["then",{"2":{"28":1}}],["their",{"2":{"9":2}}],["these",{"2":{"2":1,"6":1}}],["the",{"2":{"0":1,"1":2,"2":3,"6":2,"9":3,"10":1,"14":3,"16":3,"19":1,"23":2,"24":5,"25":6,"27":2,"28":5,"29":6}}],["this",{"0":{"2":1,"3":1},"2":{"0":1,"2":1,"15":1,"24":1}}],["ctr",{"2":{"25":1,"28":1,"29":2}}],["creates",{"2":{"24":1}}],["created",{"2":{"2":1,"18":1,"23":1}}],["check",{"2":{"28":1}}],["checklist",{"0":{"20":1}}],["channel",{"2":{"7":1,"16":1,"17":1,"20":1}}],["channelidentity",{"2":{"1":1,"6":1,"16":1,"17":1}}],["chapter",{"0":{"3":1}}],["cause",{"0":{"24":1,"28":1}}],["carrying",{"2":{"16":1}}],["canonical",{"0":{"16":1}}],["can",{"2":{"6":1}}],["clean",{"2":{"25":1}}],["clearly",{"2":{"20":1}}],["clear",{"2":{"2":1}}],["clarifying",{"2":{"14":1}}],["current",{"0":{"9":1,"14":1},"2":{"14":1}}],["compose",{"2":{"25":2,"29":1}}],["command=date",{"2":{"23":1}}],["commands",{"2":{"23":1}}],["come",{"2":{"7":1}}],["correct",{"2":{"19":2}}],["core",{"0":{"0":1},"1":{"1":1,"2":1,"3":1},"2":{"0":1,"12":1}}],["collaboration",{"2":{"10":1}}],["code",{"2":{"9":3,"16":2,"17":1,"18":1,"20":1,"23":1,"24":2}}],["coupling",{"2":{"8":1}}],["config",{"2":{"24":1,"25":6}}],["containers",{"2":{"24":1,"25":1}}],["containerd",{"2":{"23":1,"24":3,"25":2,"27":2,"28":4,"29":5}}],["container",{"0":{"22":1,"26":1},"1":{"23":1,"24":1,"25":1,"27":1,"28":1,"29":1},"2":{"23":3,"24":2,"25":2,"27":1,"28":1,"29":2}}],["containerized",{"2":{"11":1}}],["contributor",{"0":{"20":1}}],["contributors",{"0":{"13":1},"2":{"15":1}}],["control",{"2":{"2":1}}],["conversation",{"2":{"9":1}}],["consensus",{"0":{"9":1}}],["concern",{"2":{"2":1}}],["concerns",{"2":{"2":1}}],["conceptual",{"2":{"10":1,"18":1}}],["conceptually",{"2":{"10":1}}],["concept",{"0":{"1":1}}],["concepts",{"0":{"0":1},"1":{"1":1,"2":1,"3":1},"2":{"0":1,"12":1}}],["significantly",{"2":{"29":1}}],["size",{"2":{"29":1}}],["since",{"2":{"24":1,"28":1}}],["single",{"2":{"8":1,"10":1}}],["skips",{"2":{"28":1}}],["shif",{"2":{"28":1}}],["sh",{"2":{"28":1}}],["show",{"2":{"23":2}}],["should",{"2":{"10":1,"29":1}}],["script",{"2":{"28":1}}],["scoped",{"0":{"8":1},"2":{"14":1,"20":1}}],["specific",{"2":{"25":1}}],["so",{"2":{"29":1}}],["solution",{"0":{"25":1,"29":1}}],["source",{"2":{"24":1}}],["symptom",{"0":{"23":1,"27":1}}],["symbols",{"2":{"18":1}}],["system",{"2":{"1":3,"2":2,"6":2,"7":1,"8":1,"9":2,"11":1,"14":1,"16":3,"17":1,"18":1,"19":1,"20":1}}],["store",{"2":{"28":1}}],["stale",{"2":{"25":1}}],["started",{"0":{"4":1},"2":{"12":1}}],["still",{"2":{"10":1,"27":1}}],["survives",{"2":{"28":1}}],["supports",{"2":{"10":1}}],["supported",{"2":{"9":1}}],["such",{"2":{"2":1,"24":1}}],["separate",{"2":{"25":1}}],["separates",{"2":{"2":1}}],["set",{"2":{"24":1,"25":1}}],["server",{"2":{"23":1,"24":2,"25":3}}],["sentences",{"0":{"19":1}}],["sends",{"2":{"9":1}}],["semantics",{"0":{"10":1},"2":{"8":1,"10":2,"14":1}}],["sections",{"0":{"12":1}}],["section",{"2":{"0":1}}],["s",{"2":{"1":2,"2":1,"6":1,"14":1,"16":1,"19":1,"28":1,"29":1}}],["mount",{"2":{"24":2,"25":1}}],["mounted",{"2":{"24":1}}],["model",{"0":{"6":1},"2":{"2":1,"10":1}}],["msg=",{"2":{"23":2}}],["mcp",{"0":{"22":2,"26":1},"1":{"23":2,"24":2,"25":2,"27":1,"28":1,"29":1},"2":{"23":1,"24":2,"25":2,"27":2,"28":2,"29":3}}],["multi",{"2":{"11":1}}],["mention",{"2":{"17":1}}],["memory",{"2":{"11":1}}],["memoh",{"0":{"11":1},"1":{"12":1,"13":1,"14":1},"2":{"0":1,"1":2,"2":1,"6":3,"7":1,"9":1,"11":1,"14":1,"16":2,"18":1,"19":2,"24":3,"25":2,"29":3}}],["membership",{"2":{"9":1}}],["member",{"2":{"8":1,"10":2,"11":1}}],["mechanism",{"2":{"6":1}}],["means",{"2":{"2":1,"14":1}}],["messages",{"2":{"2":1,"7":2,"16":1}}],["machine",{"2":{"24":1}}],["maintainers",{"2":{"15":1}}],["may",{"2":{"10":1,"23":1}}],["management",{"2":{"8":1}}],["manages",{"2":{"2":1}}],["managed",{"2":{"1":1,"7":1,"16":1}}],["matters",{"0":{"2":1}}],["map",{"0":{"1":1}}],["added",{"2":{"29":1}}],["adding",{"2":{"27":1}}],["after",{"0":{"26":1},"1":{"27":1,"28":1,"29":1},"2":{"27":1}}],["at",{"2":{"24":1}}],["ambiguous",{"2":{"18":1}}],["avoid",{"2":{"18":3}}],["avoids",{"2":{"8":1}}],["already",{"2":{"28":1}}],["also",{"2":{"23":1,"25":1}}],["aliases",{"2":{"17":1,"20":1}}],["always",{"2":{"2":1}}],["across",{"2":{"28":1}}],["actor",{"2":{"17":1,"18":1,"19":1}}],["access",{"0":{"7":1},"2":{"0":1,"1":2,"2":2,"6":1,"7":1,"9":1,"14":1,"16":2,"17":1,"20":1}}],["accounts",{"0":{"5":1},"1":{"6":1,"7":1,"8":1,"9":1,"10":1},"2":{"2":2,"3":1,"6":2,"7":2,"8":2,"14":2}}],["account",{"0":{"6":1,"8":1},"2":{"0":1,"1":10,"2":3,"6":8,"8":4,"9":4,"14":7,"16":10,"17":4,"18":2,"19":6,"20":1}}],["audience",{"2":{"15":1}}],["authorization",{"2":{"7":1,"8":1,"9":1,"16":1}}],["agent",{"2":{"11":1}}],["ai",{"2":{"11":1}}],["are",{"2":{"7":2,"9":1,"10":1,"20":1}}],["as",{"2":{"2":2,"6":1,"10":2,"20":1,"24":1}}],["a",{"2":{"1":5,"6":3,"9":3,"11":1,"14":1,"16":4,"19":5,"23":1,"24":2,"28":1}}],["any",{"2":{"8":1}}],["an",{"2":{"1":3,"2":2,"6":2,"7":1,"16":1,"24":1}}],["and",{"0":{"5":1,"7":1},"1":{"6":1,"7":1,"8":1,"9":1,"10":1},"2":{"0":1,"1":1,"2":1,"3":1,"6":1,"7":1,"8":2,"9":2,"10":1,"14":2,"15":1,"16":1,"24":1,"25":1,"27":1,"29":1}}]],"serializationVersion":2}';export{e as default}; diff --git a/assets/chunks/@localSearchIndexroot.CVEXjrNv.js b/assets/chunks/@localSearchIndexroot.CVEXjrNv.js new file mode 100644 index 00000000..1feddaa6 --- /dev/null +++ b/assets/chunks/@localSearchIndexroot.CVEXjrNv.js @@ -0,0 +1 @@ +const t='{"documentCount":110,"nextId":110,"documentIds":{"0":"/cli/auth.html#auth-commands","1":"/cli/auth.html#login","2":"/cli/auth.html#logout","3":"/cli/auth.html#whoami","4":"/cli/bot.html#bot-commands","5":"/cli/bot.html#bot-list","6":"/cli/bot.html#bot-create","7":"/cli/bot.html#bot-update","8":"/cli/bot.html#bot-delete","9":"/cli/bot.html#bot-chat","10":"/cli/bot.html#bot-set-model","11":"/cli/channel.html#channel-commands","12":"/cli/channel.html#channel-list","13":"/cli/channel.html#channel-info","14":"/cli/channel.html#channel-config-get","15":"/cli/channel.html#channel-config-set","16":"/cli/channel.html#channel-bind-get","17":"/cli/channel.html#channel-bind-set","18":"/cli/chat.html#chat-commands","19":"/cli/chat.html#default-interactive-chat","20":"/cli/chat.html#tui","21":"/cli/chat.html#version","22":"/cli/config.html#config-commands","23":"/cli/config.html#config","24":"/cli/config.html#config-set","25":"/cli/#memoh-cli","26":"/cli/#installation","27":"/cli/#configuration","28":"/cli/#commands","29":"/cli/model.html#model-commands","30":"/cli/model.html#model-list","31":"/cli/model.html#model-create","32":"/cli/model.html#model-delete","33":"/cli/provider.html#provider-commands","34":"/cli/provider.html#provider-list","35":"/cli/provider.html#provider-create","36":"/cli/provider.html#provider-delete","37":"/cli/schedule.html#schedule-commands","38":"/cli/schedule.html#schedule-list","39":"/cli/schedule.html#schedule-get","40":"/cli/schedule.html#schedule-create","41":"/cli/schedule.html#schedule-update","42":"/cli/schedule.html#schedule-toggle","43":"/cli/schedule.html#schedule-delete","44":"/concepts/identity-and-binding.html#accounts-and-linking","45":"/concepts/identity-and-binding.html#account-model","46":"/concepts/identity-and-binding.html#access-platform-and-bot","47":"/concepts/identity-and-binding.html#why-linking-is-account-scoped","48":"/concepts/identity-and-binding.html#linking-flow-current-consensus","49":"/concepts/identity-and-binding.html#bot-type-semantics","50":"/concepts/#core-concepts","51":"/concepts/#concept-map","52":"/concepts/#why-this-matters","53":"/concepts/#in-this-chapter","54":"/#memoh-documentation","55":"/#documentation","56":"/#for-contributors","57":"/getting-started.html#getting-started","58":"/getting-started.html#what-is-memoh","59":"/getting-started.html#key-features","60":"/getting-started.html#multi-bot-management","61":"/getting-started.html#containerized-isolation","62":"/getting-started.html#memory-engineering","63":"/getting-started.html#multi-platform-support","64":"/getting-started.html#agent-capabilities","65":"/getting-started.html#multi-llm-provider-support","66":"/getting-started.html#mcp-protocol-support","67":"/getting-started.html#scheduled-tasks","68":"/getting-started.html#graphical-configuration","69":"/getting-started.html#cli-tool","70":"/getting-started.html#installation","71":"/installation/config-toml.html#config-toml-reference","72":"/installation/config-toml.html#full-example","73":"/installation/config-toml.html#section-reference","74":"/installation/config-toml.html#log","75":"/installation/config-toml.html#server","76":"/installation/config-toml.html#admin","77":"/installation/config-toml.html#auth","78":"/installation/config-toml.html#containerd","79":"/installation/config-toml.html#mcp","80":"/installation/config-toml.html#postgres","81":"/installation/config-toml.html#qdrant","82":"/installation/config-toml.html#agent-gateway","83":"/installation/config-toml.html#web","84":"/installation/config-toml.html#brave","85":"/style/terminology.html#terminology-rules","86":"/style/terminology.html#canonical-terms","87":"/style/terminology.html#preferred-wording","88":"/style/terminology.html#disallowed-or-discouraged-terms","89":"/style/terminology.html#example-sentences","90":"/style/terminology.html#contributor-checklist","91":"/installation/docker.html#docker-installation","92":"/installation/docker.html#prerequisites","93":"/installation/docker.html#one-click-install","94":"/installation/docker.html#manual-install","95":"/installation/docker.html#access-points","96":"/installation/docker.html#custom-configuration","97":"/installation/docker.html#common-commands","98":"/installation/docker.html#production-checklist","99":"/installation/docker.html#troubleshooting","100":"/installation/docker.html#security-warnings","101":"/troubleshooting.html#troubleshooting","102":"/troubleshooting.html#mcp-container-no-running-task-found-task-mcp-xxx-not-found","103":"/troubleshooting.html#symptom","104":"/troubleshooting.html#cause","105":"/troubleshooting.html#solution","106":"/troubleshooting.html#mcp-container-image-update-not-taking-effect-after-rebuild","107":"/troubleshooting.html#symptom-1","108":"/troubleshooting.html#cause-1","109":"/troubleshooting.html#solution-1"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[2,1,1],"1":[1,2,25],"2":[1,2,10],"3":[1,2,23],"4":[2,1,7],"5":[2,2,23],"6":[2,2,29],"7":[2,2,31],"8":[2,2,10],"9":[2,2,19],"10":[3,2,26],"11":[2,1,8],"12":[2,2,12],"13":[2,2,20],"14":[3,2,18],"15":[3,2,36],"16":[3,2,21],"17":[3,2,30],"18":[2,1,1],"19":[3,2,46],"20":[1,2,29],"21":[1,2,6],"22":[2,1,18],"23":[1,2,16],"24":[2,2,39],"25":[2,1,28],"26":[1,2,56],"27":[1,2,20],"28":[1,2,61],"29":[2,1,6],"30":[2,2,14],"31":[2,2,48],"32":[2,2,13],"33":[2,1,8],"34":[2,2,21],"35":[2,2,50],"36":[2,2,13],"37":[2,1,18],"38":[2,2,12],"39":[2,2,11],"40":[2,2,51],"41":[2,2,32],"42":[2,2,14],"43":[2,2,9],"44":[3,1,1],"45":[2,3,43],"46":[4,3,27],"47":[5,3,32],"48":[5,3,32],"49":[3,3,36],"50":[2,1,13],"51":[2,2,37],"52":[3,2,51],"53":[3,2,4],"54":[2,1,45],"55":[1,2,33],"56":[2,2,6],"57":[2,1,1],"58":[4,2,50],"59":[2,2,1],"60":[3,4,29],"61":[2,4,33],"62":[2,4,51],"63":[3,4,31],"64":[2,4,57],"65":[4,4,23],"66":[3,4,23],"67":[2,4,22],"68":[2,4,27],"69":[2,4,24],"70":[1,2,35],"71":[3,1,29],"72":[2,3,82],"73":[2,3,1],"74":[2,4,17],"75":[2,4,24],"76":[2,4,18],"77":[2,4,30],"78":[2,4,20],"79":[2,4,44],"80":[2,4,30],"81":[2,4,34],"82":[3,4,34],"83":[2,4,17],"84":[2,4,32],"85":[2,1,17],"86":[2,2,42],"87":[2,2,32],"88":[4,2,32],"89":[2,2,22],"90":[2,2,25],"91":[2,1,42],"92":[1,2,5],"93":[3,2,73],"94":[2,2,44],"95":[2,2,31],"96":[2,2,65],"97":[2,2,18],"98":[2,2,40],"99":[1,2,21],"100":[2,2,27],"101":[1,1,1],"102":[9,1,1],"103":[1,10,46],"104":[1,10,65],"105":[1,10,56],"106":[9,1,1],"107":[1,10,33],"108":[1,10,44],"109":[1,10,55]},"averageFieldLength":[2.2181818181818174,2.7090909090909103,27.327272727272735],"storedFields":{"0":{"title":"Auth Commands","titles":[]},"1":{"title":"login","titles":["Auth Commands"]},"2":{"title":"logout","titles":["Auth Commands"]},"3":{"title":"whoami","titles":["Auth Commands"]},"4":{"title":"Bot Commands","titles":[]},"5":{"title":"bot list","titles":["Bot Commands"]},"6":{"title":"bot create","titles":["Bot Commands"]},"7":{"title":"bot update","titles":["Bot Commands"]},"8":{"title":"bot delete","titles":["Bot Commands"]},"9":{"title":"bot chat","titles":["Bot Commands"]},"10":{"title":"bot set-model","titles":["Bot Commands"]},"11":{"title":"Channel Commands","titles":[]},"12":{"title":"channel list","titles":["Channel Commands"]},"13":{"title":"channel info","titles":["Channel Commands"]},"14":{"title":"channel config get","titles":["Channel Commands"]},"15":{"title":"channel config set","titles":["Channel Commands"]},"16":{"title":"channel bind get","titles":["Channel Commands"]},"17":{"title":"channel bind set","titles":["Channel Commands"]},"18":{"title":"Chat Commands","titles":[]},"19":{"title":"Default: Interactive Chat","titles":["Chat Commands"]},"20":{"title":"tui","titles":["Chat Commands"]},"21":{"title":"version","titles":["Chat Commands"]},"22":{"title":"Config Commands","titles":[]},"23":{"title":"config","titles":["Config Commands"]},"24":{"title":"config set","titles":["Config Commands"]},"25":{"title":"Memoh CLI","titles":[]},"26":{"title":"Installation","titles":["Memoh CLI"]},"27":{"title":"Configuration","titles":["Memoh CLI"]},"28":{"title":"Commands","titles":["Memoh CLI"]},"29":{"title":"Model Commands","titles":[]},"30":{"title":"model list","titles":["Model Commands"]},"31":{"title":"model create","titles":["Model Commands"]},"32":{"title":"model delete","titles":["Model Commands"]},"33":{"title":"Provider Commands","titles":[]},"34":{"title":"provider list","titles":["Provider Commands"]},"35":{"title":"provider create","titles":["Provider Commands"]},"36":{"title":"provider delete","titles":["Provider Commands"]},"37":{"title":"Schedule Commands","titles":[]},"38":{"title":"schedule list","titles":["Schedule Commands"]},"39":{"title":"schedule get","titles":["Schedule Commands"]},"40":{"title":"schedule create","titles":["Schedule Commands"]},"41":{"title":"schedule update","titles":["Schedule Commands"]},"42":{"title":"schedule toggle","titles":["Schedule Commands"]},"43":{"title":"schedule delete","titles":["Schedule Commands"]},"44":{"title":"Accounts and Linking","titles":[]},"45":{"title":"Account Model","titles":["Accounts and Linking"]},"46":{"title":"Access Platform and Bot","titles":["Accounts and Linking"]},"47":{"title":"Why Linking Is Account-Scoped","titles":["Accounts and Linking"]},"48":{"title":"Linking Flow (Current Consensus)","titles":["Accounts and Linking"]},"49":{"title":"Bot Type Semantics","titles":["Accounts and Linking"]},"50":{"title":"Core Concepts","titles":[]},"51":{"title":"Concept Map","titles":["Core Concepts"]},"52":{"title":"Why This Matters","titles":["Core Concepts"]},"53":{"title":"In This Chapter","titles":["Core Concepts"]},"54":{"title":"Memoh Documentation","titles":[]},"55":{"title":"Documentation","titles":["Memoh Documentation"]},"56":{"title":"For Contributors","titles":["Memoh Documentation"]},"57":{"title":"Getting Started","titles":[]},"58":{"title":"What is Memoh?","titles":["Getting Started"]},"59":{"title":"Key Features","titles":["Getting Started"]},"60":{"title":"Multi-Bot Management","titles":["Getting Started","Key Features"]},"61":{"title":"Containerized Isolation","titles":["Getting Started","Key Features"]},"62":{"title":"Memory Engineering","titles":["Getting Started","Key Features"]},"63":{"title":"Multi-Platform Support","titles":["Getting Started","Key Features"]},"64":{"title":"Agent Capabilities","titles":["Getting Started","Key Features"]},"65":{"title":"Multi-LLM Provider Support","titles":["Getting Started","Key Features"]},"66":{"title":"MCP Protocol Support","titles":["Getting Started","Key Features"]},"67":{"title":"Scheduled Tasks","titles":["Getting Started","Key Features"]},"68":{"title":"Graphical Configuration","titles":["Getting Started","Key Features"]},"69":{"title":"CLI Tool","titles":["Getting Started","Key Features"]},"70":{"title":"Installation","titles":["Getting Started"]},"71":{"title":"config.toml Reference","titles":[]},"72":{"title":"Full Example","titles":["config.toml Reference"]},"73":{"title":"Section Reference","titles":["config.toml Reference"]},"74":{"title":"[log]","titles":["config.toml Reference","Section Reference"]},"75":{"title":"[server]","titles":["config.toml Reference","Section Reference"]},"76":{"title":"[admin]","titles":["config.toml Reference","Section Reference"]},"77":{"title":"[auth]","titles":["config.toml Reference","Section Reference"]},"78":{"title":"[containerd]","titles":["config.toml Reference","Section Reference"]},"79":{"title":"[mcp]","titles":["config.toml Reference","Section Reference"]},"80":{"title":"[postgres]","titles":["config.toml Reference","Section Reference"]},"81":{"title":"[qdrant]","titles":["config.toml Reference","Section Reference"]},"82":{"title":"[agent_gateway]","titles":["config.toml Reference","Section Reference"]},"83":{"title":"[web]","titles":["config.toml Reference","Section Reference"]},"84":{"title":"[brave]","titles":["config.toml Reference","Section Reference"]},"85":{"title":"Terminology Rules","titles":[]},"86":{"title":"Canonical Terms","titles":["Terminology Rules"]},"87":{"title":"Preferred Wording","titles":["Terminology Rules"]},"88":{"title":"Disallowed or Discouraged Terms","titles":["Terminology Rules"]},"89":{"title":"Example Sentences","titles":["Terminology Rules"]},"90":{"title":"Contributor Checklist","titles":["Terminology Rules"]},"91":{"title":"Docker Installation","titles":[]},"92":{"title":"Prerequisites","titles":["Docker Installation"]},"93":{"title":"One-Click Install","titles":["Docker Installation"]},"94":{"title":"Manual Install","titles":["Docker Installation"]},"95":{"title":"Access Points","titles":["Docker Installation"]},"96":{"title":"Custom Configuration","titles":["Docker Installation"]},"97":{"title":"Common Commands","titles":["Docker Installation"]},"98":{"title":"Production Checklist","titles":["Docker Installation"]},"99":{"title":"Troubleshooting","titles":["Docker Installation"]},"100":{"title":"Security Warnings","titles":["Docker Installation"]},"101":{"title":"Troubleshooting","titles":[]},"102":{"title":"MCP Container: no running task found: task mcp-xxx not found","titles":["Troubleshooting"]},"103":{"title":"Symptom","titles":["Troubleshooting","MCP Container: no running task found: task mcp-xxx not found"]},"104":{"title":"Cause","titles":["Troubleshooting","MCP Container: no running task found: task mcp-xxx not found"]},"105":{"title":"Solution","titles":["Troubleshooting","MCP Container: no running task found: task mcp-xxx not found"]},"106":{"title":"MCP Container: Image update not taking effect after rebuild","titles":["Troubleshooting"]},"107":{"title":"Symptom","titles":["Troubleshooting","MCP Container: Image update not taking effect after rebuild"]},"108":{"title":"Cause","titles":["Troubleshooting","MCP Container: Image update not taking effect after rebuild"]},"109":{"title":"Solution","titles":["Troubleshooting","MCP Container: Image update not taking effect after rebuild"]}},"dirtCount":0,"index":[["$path",{"2":{"107":1}}],["2",{"2":{"95":1}}],["24h",{"2":{"77":2}}],["24",{"2":{"62":1}}],["yml",{"2":{"98":1,"105":1}}],["y",{"2":{"93":1}}],["your",{"2":{"19":1,"26":1,"54":1,"58":1,"68":1,"72":3,"91":1,"96":2,"105":2}}],["you",{"2":{"19":1,"58":1,"71":1,"91":1,"100":1,"104":2,"105":1}}],["|",{"2":{"93":2}}],["7",{"2":{"77":1}}],["8082",{"2":{"72":1,"83":1,"95":1}}],["8081",{"2":{"72":1,"82":1,"95":1}}],["8080",{"2":{"23":1,"24":2,"26":1,"72":1,"75":3,"95":1}}],["6334",{"2":{"72":1,"81":1}}],["5432",{"2":{"72":1,"80":1}}],["qwen",{"2":{"65":1}}],["qdrant",{"0":{"81":1},"2":{"62":1,"70":1,"72":1,"81":2,"91":1,"98":1}}],["quoting",{"2":{"88":1}}],["quot",{"2":{"52":2,"74":4,"75":2,"76":2,"77":6,"78":4,"79":8,"80":8,"81":6,"82":4,"83":2,"84":4,"87":8,"89":6,"90":6}}],["quit",{"2":{"9":1,"19":1}}],["kept",{"2":{"90":1}}],["keeping",{"2":{"52":1}}],["keep",{"2":{"52":1,"62":1,"87":1,"105":1}}],["keeps",{"2":{"47":1}}],["keyword",{"2":{"62":1}}],["key",{"0":{"59":1},"1":{"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1},"2":{"15":3,"35":3,"55":1,"62":1,"72":2,"81":2,"84":3}}],["9am",{"2":{"40":1}}],["9",{"2":{"40":1}}],["xxx",{"0":{"102":1},"1":{"103":1,"104":1,"105":1},"2":{"103":1,"104":1}}],["x26",{"2":{"99":2}}],["xai",{"2":{"35":1,"65":1}}],["x3c",{"2":{"19":1,"20":1,"32":1,"36":1,"38":1,"39":2,"40":1,"41":2,"42":2,"43":2,"105":1}}],["32",{"2":{"72":1,"77":1,"96":1}}],["3",{"2":{"31":2}}],["hours",{"2":{"62":1}}],["host",{"2":{"23":2,"24":6,"26":1,"27":1,"28":1,"70":1,"72":3,"75":1,"79":1,"80":2,"82":3,"83":2,"91":1,"96":1,"104":2}}],["humans",{"2":{"60":1}}],["have",{"2":{"66":1}}],["having",{"2":{"58":1}}],["has",{"2":{"58":1}}],["handled",{"2":{"48":1}}],["here",{"2":{"49":1}}],["help",{"2":{"26":2}}],["http",{"2":{"35":1,"66":1,"72":1,"75":1,"81":2,"95":3}}],["https",{"2":{"26":1,"72":1,"84":1,"93":2,"94":1,"98":1,"100":1}}],["10",{"2":{"72":1,"81":1}}],["100",{"2":{"24":1}}],["11434",{"2":{"35":1}}],["1536",{"2":{"31":1}}],["168h",{"2":{"72":1,"77":1}}],["168",{"2":{"24":1}}],["192",{"2":{"24":1}}],["1",{"2":{"23":1,"24":2,"26":1,"72":4,"80":1,"81":1,"82":1,"83":1,"95":1}}],["127",{"2":{"23":1,"24":1,"26":1,"72":4,"80":1,"81":1,"82":1,"83":1}}],["0",{"2":{"23":2,"24":2,"26":2,"40":1,"72":8,"80":2,"81":2,"82":2,"83":2}}],["=",{"2":{"23":2,"72":30,"103":2,"105":1}}],["volume",{"2":{"104":1,"108":1}}],["validate",{"2":{"99":1}}],["validates",{"2":{"48":1}}],["v2",{"2":{"92":1}}],["vs",{"2":{"88":1,"90":1}}],["v1",{"2":{"72":1,"84":1}}],["vector",{"2":{"62":1,"81":1}}],["verify",{"2":{"80":2,"109":1}}],["verification",{"2":{"15":2}}],["version",{"0":{"21":1},"2":{"21":2,"28":2}}],["via",{"2":{"24":1,"25":1,"54":1,"58":1,"62":1,"66":1,"71":1,"91":1,"98":1}}],["view",{"2":{"22":1,"27":1,"97":1,"99":2}}],["rm",{"2":{"105":1,"109":1}}],["rpc",{"2":{"103":1}}],["raw",{"2":{"93":2}}],["rand",{"2":{"72":1,"77":1,"96":1}}],["range",{"2":{"65":1}}],["root",{"2":{"72":1,"79":1,"94":1,"96":1,"104":2,"105":2}}],["role",{"2":{"3":1}}],["rich",{"2":{"64":1}}],["rules",{"0":{"85":1},"1":{"86":1,"87":1,"88":1,"89":1,"90":1},"2":{"56":1}}],["runc",{"2":{"104":1}}],["runs",{"2":{"54":1,"61":1,"79":1,"91":1,"100":1}}],["runtime",{"2":{"49":1}}],["run",{"2":{"26":1,"28":1,"40":1,"54":1,"67":1,"72":1,"78":1,"91":1,"93":1,"96":1,"100":1,"105":1}}],["running",{"0":{"102":1},"1":{"103":1,"104":1,"105":1},"2":{"19":1,"25":1,"26":1,"70":1,"93":1,"96":1,"103":1}}],["re",{"2":{"109":1}}],["remove",{"2":{"109":1}}],["rebuilt",{"2":{"108":1}}],["rebuilding",{"2":{"107":1}}],["rebuild",{"0":{"106":1},"1":{"107":1,"108":1,"109":1},"2":{"97":1,"99":1}}],["regular",{"2":{"98":1}}],["repository",{"2":{"93":1,"94":1}}],["replaced",{"2":{"90":1}}],["replies",{"2":{"63":1}}],["retrieval",{"2":{"62":1}}],["references",{"2":{"90":1}}],["reference",{"0":{"71":1,"73":1},"1":{"72":1,"73":1,"74":2,"75":2,"76":2,"77":2,"78":2,"79":2,"80":2,"81":2,"82":2,"83":2,"84":2},"2":{"55":1,"70":1,"94":1,"96":2}}],["recreate",{"2":{"109":1}}],["recommended",{"2":{"55":1,"70":1,"91":1,"96":1}}],["receives",{"2":{"52":1}}],["rely",{"2":{"49":1}}],["request",{"2":{"81":1,"104":1}}],["requests",{"2":{"48":1}}],["requires",{"2":{"93":1}}],["required",{"2":{"31":1,"68":1,"77":1}}],["require",{"2":{"28":1,"37":1,"80":1}}],["restrict",{"2":{"98":1}}],["restarts",{"2":{"108":1}}],["restarting",{"2":{"107":1}}],["restart",{"2":{"97":1,"105":2,"109":2}}],["res",{"2":{"72":1,"84":1}}],["resources",{"2":{"47":1,"52":1}}],["resource",{"2":{"46":1,"51":1,"86":1,"98":1}}],["responses",{"2":{"19":1}}],["reactions",{"2":{"64":1}}],["reachable",{"2":{"26":1}}],["reads",{"2":{"82":1}}],["read",{"2":{"61":1,"64":1}}],["real",{"2":{"19":1,"64":1}}],["4",{"2":{"10":1,"31":2,"32":1}}],["guidance",{"2":{"85":1}}],["guide",{"2":{"56":1}}],["generated",{"2":{"93":1}}],["generate",{"2":{"77":1,"93":1,"96":1}}],["getting",{"0":{"57":1},"1":{"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1},"2":{"55":1}}],["get",{"0":{"14":1,"16":1,"39":1},"2":{"14":2,"16":2,"28":2,"39":2,"70":1,"84":1}}],["gateway",{"0":{"82":1},"2":{"72":1,"82":2,"91":1,"95":1}}],["graphical",{"0":{"68":1}}],["grant",{"2":{"47":1}}],["groups",{"2":{"60":1}}],["google",{"2":{"35":1,"65":1}}],["global",{"2":{"26":2}}],["git",{"2":{"26":1,"92":1,"94":1}}],["githubusercontent",{"2":{"93":2}}],["github",{"2":{"26":1,"94":1}}],["g",{"2":{"12":1,"15":1,"17":1,"24":1,"31":1,"40":1,"75":1,"77":1,"98":1,"103":1,"104":1,"107":1}}],["gpt",{"2":{"10":1,"31":2,"32":1}}],["gt",{"2":{"5":1,"6":3,"7":2,"10":2,"14":1,"15":5,"16":1,"17":3,"19":2,"20":1,"24":2,"31":5,"34":1,"35":4,"37":1,"40":5,"41":5}}],["effect",{"0":{"106":1},"1":{"107":1,"108":1,"109":1}}],["errors",{"2":{"107":1}}],["error=",{"2":{"103":2}}],["error",{"2":{"74":1,"103":1}}],["everything",{"2":{"91":1}}],["every",{"2":{"58":1,"90":1}}],["edit",{"2":{"54":1,"58":1,"64":1,"96":1}}],["each",{"2":{"54":1,"60":1,"61":2,"62":1,"66":1,"79":1}}],["establish",{"2":{"47":1}}],["embedded",{"2":{"108":1}}],["embedding",{"2":{"10":2,"29":1,"31":7}}],["email",{"2":{"72":1,"76":2}}],["empty",{"2":{"40":1,"84":1}}],["etc",{"2":{"33":1}}],["e",{"2":{"12":1,"15":1,"17":1,"24":1,"31":1,"40":1,"75":1,"77":1,"98":1,"103":1,"104":1,"107":1}}],["exec",{"2":{"103":1,"105":1,"107":1,"109":2}}],["executable",{"2":{"107":1}}],["execution",{"2":{"67":1}}],["executions",{"2":{"40":1,"41":1}}],["execute",{"2":{"58":1,"61":1,"64":1,"103":1}}],["except",{"2":{"88":1}}],["expiration",{"2":{"77":1}}],["expires",{"2":{"72":1,"77":1}}],["expressions",{"2":{"67":1}}],["explicitly",{"2":{"20":1}}],["extra",{"2":{"70":1}}],["extracts",{"2":{"62":1}}],["extend",{"2":{"64":1}}],["external",{"2":{"45":1,"51":1,"52":1,"66":1,"86":2}}],["exists",{"2":{"47":1,"105":1,"108":1}}],["exist",{"2":{"45":1,"104":1}}],["exit",{"2":{"9":1,"19":1}}],["examples",{"2":{"24":1,"31":1,"34":1,"35":1}}],["example",{"0":{"72":1,"89":1},"2":{"10":1,"23":1,"24":1,"32":1,"36":1,"45":1,"51":1,"72":1}}],["environments",{"2":{"100":1}}],["engineered",{"2":{"62":1}}],["engineering",{"0":{"62":1}}],["entrypoint",{"2":{"108":2}}],["entities",{"2":{"45":1}}],["enter",{"2":{"9":1,"19":1}}],["ensure",{"2":{"26":1}}],["encrypt",{"2":{"15":2}}],["enabled",{"2":{"40":2,"41":1}}],["enable",{"2":{"10":1,"41":1,"42":1}}],["updating",{"2":{"107":1}}],["update",{"0":{"7":1,"41":1,"106":1},"1":{"107":1,"108":1,"109":1},"2":{"7":2,"22":1,"24":1,"28":3,"41":2,"105":1}}],["up",{"2":{"60":1,"68":1,"93":1,"94":1,"96":1,"97":2,"99":1,"105":1}}],["unified",{"2":{"63":1}}],["under",{"2":{"48":1}}],["unlimited",{"2":{"40":1}}],["ui",{"2":{"20":1,"28":1,"68":1,"83":2,"91":1,"95":1}}],["using",{"2":{"67":1}}],["uses",{"2":{"71":1,"94":1,"104":1,"109":1}}],["used",{"2":{"50":1,"86":1,"94":1}}],["use",{"2":{"19":1,"22":1,"26":1,"27":1,"75":1,"93":1,"96":1,"100":2,"103":1,"104":1}}],["users",{"2":{"104":2}}],["user",{"2":{"3":2,"5":2,"11":1,"16":1,"17":4,"28":2,"45":2,"48":1,"51":3,"52":1,"72":1,"80":2,"85":1,"86":2,"87":2,"88":1,"89":2}}],["username",{"2":{"1":2,"3":1,"72":1,"76":2}}],["usage",{"2":{"10":1}}],["url",{"2":{"6":2,"7":2,"35":4,"72":2,"81":2,"84":2,"95":1}}],["npx",{"2":{"107":1}}],["nano",{"2":{"96":1}}],["name==$",{"2":{"108":1}}],["named",{"2":{"104":1}}],["namespace",{"2":{"72":1,"78":2}}],["name>",{"2":{"36":1}}],["name",{"2":{"3":1,"6":4,"7":3,"31":4,"34":3,"35":4,"36":1,"40":4,"41":3,"80":1,"81":1,"82":1}}],["never",{"2":{"108":1}}],["necessary",{"2":{"98":1}}],["nerdctl",{"2":{"91":1}}],["need",{"2":{"91":1}}],["network",{"2":{"54":1,"58":1,"61":1}}],["new",{"2":{"6":1,"31":1,"35":1,"40":1,"108":1,"109":2}}],["n",{"2":{"31":1,"40":1,"41":1,"105":1,"108":1,"109":2}}],["node",{"2":{"107":1,"109":1}}],["notfound",{"2":{"103":1}}],["note",{"2":{"49":1,"52":1,"105":1}}],["not",{"0":{"102":1,"106":1},"1":{"103":1,"104":1,"105":1,"107":1,"108":1,"109":1},"2":{"24":1,"45":1,"47":1,"49":1,"51":1,"52":1,"85":1,"86":1,"88":1,"89":1,"91":1,"103":3,"104":1,"107":1}}],["no",{"0":{"102":1},"1":{"103":1,"104":1,"105":1},"2":{"19":1,"68":1,"70":1,"93":1,"94":1,"99":1,"103":1,"104":1}}],["d",{"2":{"93":1,"94":1,"96":1,"97":2,"99":1}}],["down",{"2":{"97":1}}],["do",{"2":{"91":1}}],["does",{"2":{"88":1,"104":1}}],["docs",{"2":{"87":1,"88":1}}],["documentation",{"0":{"54":1,"55":1},"1":{"55":1,"56":1},"2":{"56":1,"69":1,"85":1}}],["documented",{"2":{"49":1}}],["dockerfile",{"2":{"107":1}}],["docker",{"0":{"91":1},"1":{"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1},"2":{"26":1,"55":1,"70":2,"71":2,"72":1,"75":1,"79":2,"82":1,"91":2,"92":2,"93":6,"94":5,"96":6,"97":4,"98":1,"99":4,"104":1,"105":6,"108":2,"109":1}}],["days",{"2":{"77":1}}],["data",{"2":{"72":4,"79":7,"93":3,"98":1,"104":5,"105":3,"108":1}}],["database",{"2":{"62":1,"72":1,"80":4,"96":1}}],["daily",{"2":{"40":1,"60":1}}],["dashscope",{"2":{"35":1,"65":1}}],["directory",{"2":{"71":1,"93":2,"104":1}}],["directly",{"2":{"47":1}}],["different",{"2":{"45":1}}],["distinguish",{"2":{"88":1}}],["discouraged",{"0":{"88":1}}],["disallowed",{"0":{"88":1}}],["disable",{"2":{"41":1,"42":1,"72":1,"80":2,"84":1}}],["disabled",{"2":{"40":2,"41":1}}],["display",{"2":{"3":1,"6":1,"7":1,"31":1,"76":1}}],["dimensions",{"2":{"31":4}}],["detail",{"2":{"109":1}}],["details",{"2":{"96":1}}],["detection",{"2":{"62":1}}],["debug",{"2":{"74":1}}],["dependencies",{"2":{"70":1}}],["developers",{"2":{"69":1}}],["designed",{"2":{"69":1}}],["describing",{"2":{"87":1}}],["descriptions",{"2":{"96":1}}],["description",{"2":{"5":1,"6":1,"7":1,"10":1,"14":1,"15":1,"16":1,"17":1,"19":1,"20":1,"24":1,"28":1,"31":1,"34":1,"35":1,"40":4,"41":3,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1}}],["desc",{"2":{"40":1,"41":1,"103":1}}],["delegate",{"2":{"64":1}}],["delete",{"0":{"8":1,"32":1,"36":1,"43":1},"2":{"8":2,"28":4,"32":3,"36":3,"43":2,"103":1,"109":1}}],["deeply",{"2":{"62":1}}],["defines",{"2":{"50":1,"85":1}}],["defaults",{"2":{"93":2}}],["default",{"0":{"19":1},"2":{"20":1,"24":1,"26":1,"28":1,"62":1,"71":1,"72":1,"74":1,"75":1,"76":1,"77":1,"78":2,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"94":1,"95":1,"98":1,"100":1,"105":1,"108":1,"109":2}}],["decoupled",{"2":{"47":1}}],["old",{"2":{"108":1,"109":1}}],["ollama",{"2":{"33":1,"35":3,"36":1,"65":1}}],["override",{"2":{"98":1}}],["overlayfs",{"2":{"72":1,"79":1}}],["overview",{"2":{"55":1}}],["other",{"2":{"60":1,"61":1,"68":1}}],["otherwise",{"2":{"19":1}}],["own",{"2":{"48":2,"54":2,"58":3,"61":1,"66":1,"68":1,"96":1}}],["ownership",{"2":{"47":1}}],["owner",{"2":{"5":3,"49":1}}],["official",{"2":{"93":1}}],["of",{"2":{"26":1,"47":1,"62":1,"64":1,"65":1,"87":2,"98":1}}],["on",{"2":{"45":1,"49":1,"51":1,"52":1,"70":1,"86":1,"87":1,"91":1,"96":1}}],["one",{"0":{"93":1},"2":{"19":1,"70":1,"84":1,"86":1}}],["only",{"2":{"5":1,"90":1,"94":1,"100":1}}],["opt",{"2":{"79":1,"104":1,"105":1}}],["optional",{"2":{"15":2,"40":2,"81":1}}],["optionally",{"2":{"6":1,"34":1}}],["option",{"2":{"5":1,"6":1,"7":1,"10":1,"14":1,"15":1,"16":1,"17":1,"19":1,"20":1,"24":1,"31":1,"34":1,"35":1,"40":1,"41":1}}],["options",{"2":{"5":1,"6":1,"7":1,"10":1,"14":1,"15":1,"16":1,"17":1,"19":1,"20":1,"24":2,"31":1,"34":1,"35":1,"40":1,"41":1}}],["operations",{"2":{"64":1}}],["openssl",{"2":{"72":1,"77":1,"96":1}}],["openai",{"2":{"31":2,"33":1,"34":1,"35":2,"65":1}}],["open",{"2":{"17":3,"104":1}}],["omitted",{"2":{"13":1}}],["orchestrated",{"2":{"91":1}}],["or",{"0":{"88":1},"2":{"6":1,"7":1,"10":2,"17":1,"22":1,"24":1,"28":1,"31":1,"42":1,"54":1,"60":3,"70":1,"74":1,"75":1,"91":1,"104":1}}],["outside",{"2":{"105":1}}],["output",{"2":{"23":1}}],["out",{"2":{"2":1,"28":1}}],["ls",{"2":{"109":1}}],["leave",{"2":{"84":1}}],["lean",{"2":{"62":1}}],["level=error",{"2":{"103":1}}],["level=warn",{"2":{"103":1}}],["level",{"2":{"72":1,"74":2}}],["larger",{"2":{"109":1}}],["lark",{"2":{"54":1,"58":1,"63":1}}],["latest",{"2":{"72":1,"79":1,"109":1}}],["language",{"2":{"62":1}}],["last",{"2":{"62":1}}],["layer",{"2":{"62":1}}],["library",{"2":{"72":1,"79":1,"109":1}}],["limits",{"2":{"67":1,"98":2}}],["like",{"2":{"58":1,"107":1}}],["links",{"2":{"45":1,"47":1,"48":1,"51":1,"55":1}}],["linking",{"0":{"44":1,"47":1,"48":1},"1":{"45":1,"46":1,"47":1,"48":1,"49":1},"2":{"45":1,"47":3,"51":1,"53":1,"55":1,"86":3,"87":1,"89":1}}],["link",{"2":{"26":1}}],["line",{"2":{"25":1,"55":1,"63":1,"69":1}}],["listen",{"2":{"75":1}}],["list",{"0":{"5":1,"12":1,"30":1,"34":1,"38":1},"2":{"5":2,"12":2,"28":5,"30":2,"34":4,"38":2}}],["llm",{"0":{"65":1},"2":{"28":1,"33":1,"65":1}}],["ll",{"2":{"19":1}}],["looks",{"2":{"71":1}}],["loads",{"2":{"62":1}}],["long",{"2":{"54":1,"58":1}}],["locally",{"2":{"105":1}}],["localhost",{"2":{"35":1,"95":3}}],["local",{"2":{"12":1,"105":1}}],["logs",{"2":{"97":2,"99":4,"103":2}}],["logged",{"2":{"3":1}}],["logout",{"0":{"2":1},"2":{"2":1,"28":1}}],["log",{"0":{"74":1},"2":{"1":1,"2":1,"28":2,"72":1,"74":2}}],["login",{"0":{"1":1},"2":{"1":1,"28":2,"76":2,"95":1}}],["lt",{"2":{"5":1,"6":3,"7":2,"10":2,"14":1,"15":5,"16":1,"17":3,"19":2,"20":1,"24":2,"31":5,"34":1,"35":4,"37":1,"40":5,"41":5}}],["were",{"2":{"109":1}}],["web",{"0":{"83":1},"2":{"54":1,"63":2,"64":1,"68":1,"70":1,"72":1,"83":2,"84":2,"91":1,"95":1}}],["workspace",{"2":{"93":2}}],["wording",{"0":{"87":1},"2":{"88":1}}],["was",{"2":{"109":1}}],["way",{"2":{"91":1}}],["warnings",{"0":{"100":1}}],["warn",{"2":{"74":1}}],["writing",{"2":{"85":1}}],["write",{"2":{"61":1,"64":1,"87":2}}],["will",{"2":{"93":1}}],["wide",{"2":{"65":1}}],["without",{"2":{"61":1}}],["within",{"2":{"58":1,"61":1}}],["with",{"2":{"4":1,"9":1,"19":3,"20":1,"25":1,"28":1,"30":1,"47":1,"54":2,"58":1,"60":2,"61":2,"63":1,"64":1,"70":1,"71":1,"77":1,"93":1,"94":1,"96":1,"98":1,"100":1,"104":1,"107":1}}],["when",{"2":{"87":1,"88":1,"93":1,"96":2,"103":1,"104":1}}],["where",{"2":{"46":1,"79":1}}],["who",{"2":{"69":1}}],["whoami",{"0":{"3":1},"2":{"3":1,"28":1}}],["what",{"0":{"58":1},"2":{"55":1}}],["why",{"0":{"47":1,"52":1}}],["while",{"2":{"46":1,"52":1,"95":1}}],["which",{"2":{"19":1}}],["msg=",{"2":{"103":2}}],["must",{"2":{"100":1}}],["multiple",{"2":{"60":1,"63":1}}],["multi",{"0":{"60":1,"63":1,"65":1},"2":{"54":1,"58":1,"62":1}}],["multimodal",{"2":{"30":1,"31":2}}],["minutes",{"2":{"95":1}}],["mistral",{"2":{"35":1,"65":1}}],["missing",{"2":{"35":1}}],["mcp",{"0":{"66":1,"79":1,"102":2,"106":1},"1":{"103":2,"104":2,"105":2,"107":1,"108":1,"109":1},"2":{"66":2,"68":1,"72":2,"79":3,"103":1,"104":2,"105":2,"107":2,"108":2,"109":3}}],["machine",{"2":{"104":1}}],["maintainers",{"2":{"85":1}}],["main",{"2":{"82":1,"91":1,"93":2,"99":1,"100":1}}],["manual",{"0":{"94":1},"2":{"67":1,"70":1}}],["managing",{"2":{"25":1}}],["manages",{"2":{"52":1}}],["management",{"0":{"60":1},"2":{"47":1,"64":1,"68":1,"69":2}}],["managed",{"2":{"46":1,"51":1,"86":1}}],["manage",{"2":{"4":1,"11":1,"29":1,"33":1,"37":1,"60":1,"64":1}}],["matters",{"0":{"52":1}}],["map",{"0":{"51":1}}],["may",{"2":{"49":1,"95":1,"103":1}}],["max",{"2":{"40":3,"41":2,"67":1}}],["markdown",{"2":{"63":1}}],["mark",{"2":{"31":1}}],["mode",{"2":{"80":1}}],["models",{"2":{"25":1,"28":1,"29":1,"30":1,"31":2,"55":1,"68":1}}],["model",{"0":{"10":1,"29":1,"30":1,"31":1,"32":1,"45":1},"1":{"30":1,"31":1,"32":1},"2":{"10":7,"28":2,"30":1,"31":10,"32":7,"49":1,"52":1,"66":1,"69":1,"79":1}}],["mounted",{"2":{"79":1,"94":1,"104":1}}],["mount",{"2":{"71":1,"72":1,"79":1,"104":2,"105":1}}],["more",{"2":{"58":1,"65":1,"69":1}}],["most",{"2":{"28":1}}],["monorepo",{"2":{"26":1}}],["my",{"2":{"10":1,"31":2,"34":1,"35":1,"36":1}}],["mention",{"2":{"87":1}}],["messaging",{"2":{"63":1,"64":1}}],["message",{"2":{"19":1}}],["messages",{"2":{"9":1,"46":2,"52":1,"64":1,"86":1}}],["means",{"2":{"52":1}}],["mem0",{"2":{"62":1}}],["members",{"2":{"60":1}}],["membership",{"2":{"48":1}}],["member",{"2":{"47":1,"49":2,"54":1,"58":1}}],["memories",{"2":{"62":1,"64":1,"81":1}}],["memory",{"0":{"62":1},"2":{"10":2,"54":2,"58":2,"62":3,"64":1,"72":1,"81":1,"98":1}}],["memoh123",{"2":{"93":1}}],["memohai",{"2":{"26":1,"93":2,"94":1}}],["memoh",{"0":{"25":1,"54":1,"58":1},"1":{"26":1,"27":1,"28":1,"55":1,"56":1},"2":{"1":2,"19":2,"20":1,"22":1,"24":1,"25":3,"26":6,"27":4,"28":2,"31":2,"34":1,"35":1,"45":3,"46":1,"48":1,"50":1,"51":2,"52":1,"54":1,"55":1,"58":1,"70":1,"71":2,"72":2,"79":2,"80":1,"86":2,"88":1,"89":2,"91":1,"93":4,"94":2,"96":1,"104":3,"105":2,"109":3}}],["mechanism",{"2":{"45":1}}],["metadata",{"2":{"13":1}}],["brave",{"0":{"84":1},"2":{"64":1,"72":2,"84":5}}],["bm25",{"2":{"62":1}}],["boundary",{"2":{"46":1,"51":1,"86":1}}],["bots",{"2":{"4":1,"5":1,"25":2,"28":1,"37":1,"46":1,"54":1,"55":1,"58":1,"60":4,"61":1,"64":1,"68":1,"104":1}}],["bot",{"0":{"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"46":1,"49":1,"60":1},"1":{"5":1,"6":1,"7":1,"8":1,"9":1,"10":1},"2":{"5":1,"6":4,"7":5,"8":2,"9":2,"10":4,"11":1,"14":2,"15":2,"19":6,"20":4,"28":4,"37":2,"38":3,"39":2,"40":3,"41":2,"42":2,"43":2,"46":1,"47":3,"48":1,"49":2,"51":1,"52":1,"54":1,"58":1,"60":1,"61":1,"64":1,"66":1,"68":1,"69":1,"78":1,"79":2,"86":1,"103":2,"105":1,"109":2}}],["built",{"2":{"63":1,"64":1,"79":1,"94":1}}],["buildkit",{"2":{"91":1}}],["build",{"2":{"26":1,"60":1,"93":1,"95":1,"97":1,"99":1}}],["but",{"2":{"20":1,"52":1,"104":1}}],["binds",{"2":{"89":1}}],["binding",{"2":{"16":1,"17":1,"28":1}}],["bind",{"0":{"16":1,"17":1},"2":{"16":1,"17":1,"45":1,"48":1,"51":1,"82":1,"83":1,"86":2,"87":1}}],["between",{"2":{"65":1}}],["before",{"2":{"45":1,"100":1}}],["bedrock",{"2":{"35":1,"65":1}}],["behavior",{"2":{"20":1,"49":1,"87":1}}],["be",{"2":{"7":1,"19":1,"49":1,"109":1}}],["by",{"2":{"5":2,"32":1,"34":2,"36":1,"39":1,"46":2,"48":1,"50":1,"51":1,"52":1,"61":1,"62":2,"71":1,"86":1,"90":1,"94":1}}],["base64",{"2":{"72":1,"77":1,"96":1}}],["based",{"2":{"37":1,"49":1}}],["base",{"2":{"35":3,"72":2,"81":1,"84":2}}],["bashdocker",{"2":{"97":1,"99":1,"105":2,"109":3}}],["bashcp",{"2":{"96":1}}],["bashcurl",{"2":{"93":2}}],["bashcd",{"2":{"26":2}}],["bashgit",{"2":{"26":1,"94":1}}],["bashmemoh",{"2":{"1":1,"2":1,"3":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":2,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"19":1,"20":1,"21":1,"23":1,"24":2,"30":1,"31":2,"32":2,"34":2,"35":2,"36":2,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"96":1}}],["backups",{"2":{"98":2}}],["back",{"2":{"3":1}}],["fulfil",{"2":{"104":1}}],["full",{"0":{"72":1},"2":{"63":2,"80":1,"99":1}}],["found",{"0":{"102":2},"1":{"103":2,"104":2,"105":2},"2":{"103":3,"107":1}}],["format",{"2":{"72":1,"74":2}}],["for",{"0":{"56":1},"2":{"1":1,"6":1,"8":1,"10":1,"13":1,"16":1,"24":2,"25":1,"31":3,"35":2,"37":1,"38":1,"40":3,"45":1,"51":1,"55":1,"60":1,"63":1,"64":1,"69":2,"70":1,"71":1,"75":1,"76":1,"77":1,"78":1,"79":1,"81":2,"84":1,"86":1,"93":2,"94":1,"96":3,"98":1}}],["f",{"2":{"97":1}}],["fssl",{"2":{"93":2}}],["freely",{"2":{"61":1}}],["from",{"2":{"13":1,"26":1,"46":1,"48":1,"52":2,"62":1,"72":1,"79":1,"93":1,"96":1,"105":1,"109":2}}],["features",{"0":{"59":1},"1":{"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1},"2":{"55":1}}],["feishu",{"2":{"12":1,"15":4,"17":4,"54":1,"58":1,"63":1}}],["flexibly",{"2":{"65":1}}],["flows",{"2":{"48":1}}],["flow",{"0":{"48":1}}],["flip",{"2":{"42":1}}],["flag",{"2":{"30":1}}],["fi",{"2":{"108":1}}],["firewall",{"2":{"98":1}}],["first",{"2":{"28":1,"87":1,"95":1}}],["field",{"2":{"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"96":1}}],["fields",{"2":{"35":1,"70":1,"94":1}}],["file",{"2":{"71":1,"94":1,"96":1,"104":1,"107":1}}],["filesystem",{"2":{"61":1}}],["files",{"2":{"54":1,"58":1,"61":1,"64":1}}],["filter",{"2":{"5":2,"34":2}}],["fail",{"2":{"107":1}}],["failed",{"2":{"103":2,"104":1}}],["fails",{"2":{"3":1,"104":1}}],["facing",{"2":{"87":1}}],["facts",{"2":{"62":1}}],["family",{"2":{"60":1}}],["falls",{"2":{"3":1}}],["io",{"2":{"72":1,"79":1,"109":1}}],["imported",{"2":{"108":1,"109":1}}],["import",{"2":{"108":2,"109":1}}],["implies",{"2":{"88":1}}],["implementations",{"2":{"49":1}}],["images",{"2":{"95":1,"108":1,"109":2}}],["image",{"0":{"106":1},"1":{"107":1,"108":1,"109":1},"2":{"72":1,"79":3,"107":1,"108":7,"109":3}}],["it",{"2":{"22":1,"25":1,"47":3,"58":1,"71":1,"85":1,"88":1,"96":1,"104":1,"105":1,"109":2}}],["its",{"2":{"22":1,"25":1,"54":1,"58":2,"61":1,"66":1}}],["isolation",{"0":{"61":1}}],["isolated",{"2":{"54":1,"61":1}}],["is",{"0":{"47":1,"58":1},"2":{"13":1,"25":1,"26":3,"45":3,"46":2,"49":1,"54":1,"55":1,"58":1,"79":1,"82":1,"85":1,"88":1,"89":2,"90":2,"91":1,"94":2,"96":1,"104":1,"108":2}}],["if",{"2":{"3":1,"13":1,"24":1,"105":2,"108":1,"109":1}}],["id=xxx",{"2":{"103":1}}],["id>",{"2":{"19":1,"20":1,"32":1,"38":1,"39":2,"40":1,"41":2,"42":2,"43":2,"105":1}}],["id",{"2":{"3":1,"5":2,"7":2,"8":1,"9":1,"10":4,"14":1,"15":4,"17":8,"19":3,"20":2,"31":6,"32":1,"37":1,"39":1}}],["initialize",{"2":{"95":1}}],["incorrect",{"2":{"89":1}}],["includes",{"2":{"70":1,"91":1}}],["int",{"2":{"80":1,"81":1,"82":1,"83":1}}],["integration",{"2":{"64":1}}],["interfaces",{"2":{"75":1}}],["interface",{"2":{"63":1}}],["interfering",{"2":{"61":1}}],["internal",{"2":{"45":2,"51":1,"52":1}}],["interactively",{"2":{"7":1}}],["interactive",{"0":{"19":1},"2":{"1":1,"9":1,"19":1,"24":1,"28":1,"31":1,"35":1}}],["independent",{"2":{"47":1,"52":1,"58":1,"66":1}}],["instead",{"2":{"87":2,"105":1}}],["install",{"0":{"93":1,"94":1},"2":{"26":2,"91":1,"93":4}}],["installation",{"0":{"26":1,"70":1,"91":1},"1":{"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1},"2":{"26":1,"55":2,"71":1}}],["inspired",{"2":{"62":1}}],["inside",{"2":{"46":1,"52":1,"64":1,"79":1,"86":1,"88":1,"91":1,"104":2}}],["inbound",{"2":{"46":2,"86":1}}],["invoked",{"2":{"20":1}}],["inactive",{"2":{"6":2,"7":2}}],["information",{"2":{"64":1}}],["info",{"0":{"13":1},"2":{"3":1,"7":1,"13":1,"72":1,"74":2}}],["in",{"0":{"53":1},"2":{"1":2,"3":1,"19":1,"22":1,"27":2,"28":1,"40":1,"45":1,"49":1,"51":1,"54":1,"60":1,"61":1,"63":1,"64":1,"71":1,"72":1,"75":1,"76":1,"77":1,"79":1,"81":1,"82":1,"87":2,"88":1,"89":1,"90":1,"94":2,"100":2,"104":1,"105":2,"107":1,"108":2}}],["ctr",{"2":{"105":1,"108":1,"109":2}}],["cpu",{"2":{"98":1}}],["certs",{"2":{"98":1}}],["check",{"2":{"93":1,"108":1}}],["checklist",{"0":{"90":1,"98":1}}],["chapter",{"0":{"53":1}}],["changes",{"2":{"96":1}}],["change",{"2":{"27":1,"72":1,"76":1,"96":2,"98":1,"100":1}}],["channelidentity",{"2":{"45":1,"51":1,"86":1,"87":1}}],["channels",{"2":{"11":1,"13":1,"25":1,"28":1,"55":1,"68":1}}],["channel",{"0":{"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1},"1":{"12":1,"13":1,"14":1,"15":1,"16":1,"17":1},"2":{"11":1,"12":2,"13":3,"14":3,"15":3,"16":3,"17":3,"28":2,"46":1,"63":1,"69":1,"86":1,"87":1,"90":1}}],["chatting",{"2":{"25":1}}],["chat",{"0":{"9":1,"18":1,"19":1},"1":{"19":1,"20":1,"21":1},"2":{"4":1,"9":2,"10":3,"19":3,"20":3,"28":4,"29":1,"31":2,"54":1,"55":1,"58":1,"60":1,"63":2,"69":1}}],["custom",{"0":{"96":1},"2":{"71":1}}],["currently",{"2":{"15":1,"17":1}}],["current",{"0":{"48":1},"2":{"3":1,"16":1,"17":1,"23":1,"28":1,"42":1,"71":1}}],["cmd",{"2":{"40":1,"41":1}}],["credentials",{"2":{"93":1}}],["creates",{"2":{"104":1}}],["created",{"2":{"52":1,"88":1,"103":1}}],["create",{"0":{"6":1,"31":1,"35":1,"40":1},"2":{"6":2,"28":4,"31":5,"35":4,"40":4,"54":1,"58":1,"60":1,"64":1}}],["cron",{"2":{"37":1,"40":2,"41":1,"67":1}}],["cd",{"2":{"26":1,"94":1}}],["clean",{"2":{"105":1}}],["clearly",{"2":{"90":1}}],["clear",{"2":{"2":1,"28":1,"52":1}}],["cloud",{"2":{"81":1}}],["clone",{"2":{"26":1,"93":1,"94":2}}],["click",{"0":{"93":1},"2":{"70":1}}],["client",{"2":{"35":2}}],["cli",{"0":{"25":1,"69":1},"1":{"26":1,"27":1,"28":1},"2":{"21":1,"22":1,"25":1,"26":4,"27":1,"28":2,"54":1,"55":1,"63":1,"69":1}}],["copy",{"2":{"96":1}}],["correct",{"2":{"89":2}}],["core",{"0":{"50":1},"1":{"51":1,"52":1,"53":1},"2":{"50":1,"55":1}}],["collection",{"2":{"72":1,"81":2}}],["collaborate",{"2":{"60":1}}],["collaboration",{"2":{"49":1}}],["coding",{"2":{"68":1}}],["code",{"2":{"48":3,"64":1,"86":2,"87":1,"88":1,"90":1,"103":1,"104":2}}],["count",{"2":{"67":1}}],["coupling",{"2":{"47":1}}],["connections",{"2":{"66":1}}],["connecting",{"2":{"63":1}}],["connect",{"2":{"66":1}}],["context",{"2":{"62":1,"66":1,"79":1}}],["contributor",{"0":{"90":1}}],["contributors",{"0":{"56":1},"2":{"85":1}}],["control",{"2":{"52":1}}],["containers",{"2":{"61":1,"78":1,"91":1,"98":1,"104":1,"105":1}}],["containerd",{"0":{"78":1},"2":{"61":1,"70":1,"72":3,"78":4,"79":1,"91":2,"99":2,"103":1,"104":3,"105":2,"107":2,"108":4,"109":5}}],["containerized",{"0":{"61":1},"2":{"54":1,"58":1}}],["container",{"0":{"102":1,"106":1},"1":{"103":1,"104":1,"105":1,"107":1,"108":1,"109":1},"2":{"40":1,"54":1,"58":2,"61":1,"64":2,"79":4,"100":1,"103":3,"104":2,"105":2,"107":1,"108":1,"109":2}}],["concern",{"2":{"52":1}}],["concerns",{"2":{"52":1}}],["concept",{"0":{"51":1}}],["concepts",{"0":{"50":1},"1":{"51":1,"52":1,"53":1},"2":{"50":1,"55":2}}],["conceptual",{"2":{"49":1,"88":1}}],["conceptually",{"2":{"49":1}}],["conversation",{"2":{"48":1,"62":2}}],["consensus",{"0":{"48":1}}],["config=",{"2":{"96":1}}],["configure",{"2":{"67":1,"68":1,"98":1}}],["configured",{"2":{"26":1}}],["configurable",{"2":{"64":1}}],["configuration",{"0":{"27":1,"68":1,"96":1},"2":{"11":1,"14":1,"15":1,"69":1,"70":1,"71":1,"79":1,"93":1,"94":1,"99":1}}],["config",{"0":{"14":1,"15":1,"22":1,"23":1,"24":1,"71":1},"1":{"23":1,"24":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1},"2":{"14":1,"15":1,"22":2,"23":2,"24":4,"27":4,"28":3,"55":1,"70":1,"71":3,"93":1,"94":5,"96":11,"99":1,"104":1,"105":6}}],["confirmation",{"2":{"8":1}}],["common",{"0":{"97":1}}],["command=date",{"2":{"103":1}}],["command",{"2":{"25":1,"26":1,"28":2,"40":3,"41":2,"55":1,"63":1,"69":1}}],["commands",{"0":{"0":1,"4":1,"11":1,"18":1,"22":1,"28":1,"29":1,"33":1,"37":1,"97":1},"1":{"1":1,"2":1,"3":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"19":1,"20":1,"21":1,"23":1,"24":1,"30":1,"31":1,"32":1,"34":1,"35":1,"36":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1},"2":{"22":1,"28":1,"37":1,"54":1,"58":1,"61":1,"64":1,"67":1,"103":1}}],["compose",{"2":{"70":1,"82":1,"91":1,"92":1,"93":3,"94":3,"96":3,"97":5,"98":1,"99":5,"105":2,"109":1}}],["complex",{"2":{"64":1}}],["compaction",{"2":{"62":1}}],["compat",{"2":{"35":1}}],["computer",{"2":{"58":1}}],["come",{"2":{"46":1,"64":1}}],["com",{"2":{"24":1,"26":1,"72":2,"84":2,"93":2,"94":1}}],["cause",{"0":{"104":1,"108":1}}],["cache",{"2":{"99":1}}],["carrying",{"2":{"86":1}}],["ca",{"2":{"80":1}}],["capabilities",{"0":{"64":1},"2":{"64":1}}],["canonical",{"0":{"86":1}}],["can",{"2":{"5":1,"7":1,"45":1,"58":1,"60":1,"61":1,"66":1,"71":1}}],["calls",{"2":{"40":2,"41":1}}],["call",{"2":{"3":1,"82":1}}],["js",{"2":{"107":1,"109":1}}],["json",{"2":{"1":1,"27":1,"74":1}}],["jwt",{"2":{"1":1,"72":2,"77":4,"93":2,"96":1}}],["~",{"2":{"1":1,"22":1,"27":2,"93":2}}],["skips",{"2":{"108":1}}],["skill",{"2":{"64":1}}],["skills",{"2":{"64":2,"68":1}}],["shif",{"2":{"108":1}}],["sh",{"2":{"93":4,"108":1}}],["should",{"2":{"49":1,"109":1}}],["show",{"2":{"3":1,"13":1,"21":1,"23":1,"28":3,"103":2}}],["symptom",{"0":{"103":1,"107":1}}],["symbols",{"2":{"88":1}}],["system",{"2":{"45":2,"46":1,"47":1,"48":2,"51":3,"52":2,"54":2,"58":2,"64":1,"86":3,"87":1,"88":1,"89":1,"90":1}}],["significantly",{"2":{"109":1}}],["signing",{"2":{"77":1}}],["size",{"2":{"109":1}}],["since",{"2":{"104":1,"108":1}}],["single",{"2":{"47":1,"49":1}}],["silently",{"2":{"93":1}}],["silent",{"2":{"93":1}}],["ssl",{"2":{"80":1,"98":1}}],["sslmode",{"2":{"72":1,"80":1}}],["sse",{"2":{"66":1}}],["snapshotter",{"2":{"72":1,"79":2}}],["so",{"2":{"109":1}}],["solution",{"0":{"105":1,"109":1}}],["sock",{"2":{"72":1,"78":1}}],["socket",{"2":{"72":1,"78":2}}],["source",{"2":{"26":1,"104":1}}],["switch",{"2":{"65":1}}],["specific",{"2":{"105":1}}],["specified",{"2":{"67":1}}],["specify",{"2":{"19":1,"37":1}}],["specialized",{"2":{"64":1}}],["scripts",{"2":{"93":2}}],["script",{"2":{"93":2,"108":1}}],["scoped",{"0":{"47":1},"2":{"90":1}}],["scheduled",{"0":{"67":1},"2":{"67":1}}],["schedule",{"0":{"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1},"1":{"38":1,"39":1,"40":1,"41":1,"42":1,"43":1},"2":{"28":1,"37":1,"38":1,"39":2,"40":3,"41":3,"42":2,"43":2}}],["schedules",{"2":{"25":1,"28":1,"37":1,"38":1,"55":1}}],["schema",{"2":{"13":1}}],["small",{"2":{"31":2}}],["same",{"2":{"20":1}}],["survives",{"2":{"108":1}}],["subagents",{"2":{"64":2}}],["subcommand",{"2":{"19":1}}],["such",{"2":{"52":1,"104":1}}],["support",{"0":{"63":1,"65":1,"66":1},"2":{"63":2}}],["supported",{"2":{"35":1,"48":1}}],["supports",{"2":{"15":1,"17":1,"49":1,"62":1,"66":1,"67":1}}],["s",{"2":{"14":1,"15":1,"16":1,"17":1,"45":1,"51":2,"52":1,"86":1,"89":1,"93":1,"108":1,"109":1}}],["stop",{"2":{"97":1}}],["store",{"2":{"62":1,"108":1}}],["stored",{"2":{"2":1}}],["stores",{"2":{"1":1,"22":1,"27":1,"62":1}}],["style",{"2":{"56":1}}],["string",{"2":{"74":2,"75":1,"76":3,"77":2,"78":2,"79":4,"80":5,"81":3,"82":1,"83":1,"84":2}}],["structured",{"2":{"54":1,"58":1,"62":1}}],["stream",{"2":{"19":1}}],["streaming",{"2":{"9":1,"63":1,"69":1}}],["still",{"2":{"49":1,"107":1}}],["stale",{"2":{"105":1}}],["status",{"2":{"97":1}}],["state",{"2":{"42":1}}],["stack",{"2":{"91":1}}],["starting",{"2":{"96":1}}],["startup",{"2":{"95":2}}],["started",{"0":{"57":1},"1":{"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1},"2":{"55":1}}],["starts",{"2":{"19":1}}],["start",{"2":{"9":1,"26":1,"93":1,"94":1,"97":1}}],["sentences",{"0":{"89":1}}],["send",{"2":{"64":1}}],["sends",{"2":{"48":1}}],["service",{"2":{"82":1,"95":1,"99":1,"100":1}}],["services",{"2":{"66":1,"70":1,"93":1,"95":1}}],["server",{"0":{"75":1},"2":{"1":1,"25":1,"26":1,"28":1,"70":1,"72":1,"75":1,"82":1,"91":1,"99":1,"103":1,"104":2,"105":3}}],["search",{"2":{"62":1,"64":3,"72":1,"84":7}}],["semantic",{"2":{"62":1}}],["semantics",{"0":{"49":1},"2":{"47":1,"49":2}}],["separate",{"2":{"61":1,"105":1}}],["separates",{"2":{"52":1}}],["security",{"0":{"100":1}}],["seconds",{"2":{"72":1,"81":2}}],["section",{"0":{"73":1},"1":{"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1},"2":{"50":1}}],["secrets",{"2":{"98":1,"100":1}}],["secret",{"2":{"15":3,"72":2,"77":2,"93":2,"96":1}}],["see",{"2":{"26":1,"69":1,"71":1,"94":1,"96":2}}],["session",{"2":{"20":1,"28":1}}],["select",{"2":{"13":1,"19":1}}],["selected",{"2":{"7":1}}],["setup",{"2":{"70":1}}],["settings",{"2":{"68":1}}],["set",{"0":{"10":1,"15":1,"17":1,"24":1},"2":{"6":2,"7":2,"10":2,"15":2,"17":2,"24":3,"27":1,"28":3,"60":1,"64":1,"68":1,"96":1,"98":1,"104":1,"105":1}}],["python",{"2":{"107":1,"109":1}}],["ps",{"2":{"97":1}}],["phrasing",{"2":{"88":1}}],["plain",{"2":{"88":1}}],["platforms",{"2":{"52":1,"63":1}}],["platform",{"0":{"46":1,"63":1},"2":{"16":1,"45":4,"46":2,"47":1,"48":3,"51":3,"52":3,"58":1,"86":5,"87":3,"88":3,"89":2,"90":2}}],["point",{"2":{"96":1}}],["points",{"0":{"95":1}}],["postgres",{"0":{"80":1},"2":{"72":2,"80":1,"93":2,"96":2,"98":1}}],["postgresql",{"2":{"70":1,"80":2,"91":1}}],["powered",{"2":{"61":1}}],["ports",{"2":{"98":1}}],["port",{"2":{"23":2,"24":6,"26":1,"27":1,"28":1,"72":3,"75":1,"80":2,"82":2,"83":2}}],["persistent",{"2":{"108":1}}],["personal",{"2":{"6":1,"49":1}}],["permissions",{"2":{"52":1}}],["pnpm",{"2":{"26":4}}],["parenthetical",{"2":{"90":1}}],["parentheses",{"2":{"87":1}}],["part",{"2":{"26":1}}],["page",{"2":{"85":1,"109":1}}],["path",{"2":{"72":1,"78":2,"79":2,"96":1,"104":2,"105":1}}],["pattern",{"2":{"40":4,"41":3}}],["packages",{"2":{"26":2}}],["passed",{"2":{"7":1}}],["passwords",{"2":{"98":2,"100":1}}],["password",{"2":{"1":2,"72":4,"76":2,"80":2,"93":2,"96":5}}],["privileged",{"2":{"100":1}}],["privately",{"2":{"60":1}}],["prerequisites",{"0":{"92":1}}],["preferred",{"0":{"87":1}}],["prefer",{"2":{"69":1}}],["press",{"2":{"9":1,"19":1}}],["prose",{"2":{"90":1}}],["protocol",{"0":{"66":1},"2":{"66":1,"79":1}}],["project",{"2":{"52":1,"94":1,"96":1}}],["process",{"2":{"51":1}}],["production",{"0":{"98":1},"2":{"76":1,"96":1,"100":2}}],["product",{"2":{"49":1,"85":1,"87":1}}],["produced",{"2":{"46":1}}],["provider=container",{"2":{"103":1}}],["provider",{"0":{"33":1,"34":1,"35":1,"36":1,"65":1},"1":{"34":1,"35":1,"36":1},"2":{"28":1,"30":1,"31":6,"34":7,"35":5,"36":5}}],["providers",{"2":{"25":1,"28":1,"33":1,"34":1,"55":1,"65":1,"68":1}}],["provided",{"2":{"24":1}}],["prompt",{"2":{"93":1}}],["prompted",{"2":{"19":1}}],["prompts",{"2":{"1":2,"6":1,"13":1,"24":2,"31":2,"35":2,"40":1,"93":1}}],["public",{"2":{"6":1,"49":1}}],["after",{"0":{"106":1},"1":{"107":1,"108":1,"109":1},"2":{"95":1,"107":1}}],["ambiguous",{"2":{"88":1}}],["audience",{"2":{"85":1}}],["auto",{"2":{"62":1,"93":1}}],["automatic",{"2":{"62":1}}],["automatically",{"2":{"62":1,"67":1}}],["authorization",{"2":{"46":1,"47":1,"48":1,"86":1}}],["authentication",{"2":{"28":1}}],["auth",{"0":{"0":1,"77":1},"1":{"1":1,"2":1,"3":1},"2":{"27":1,"72":1,"96":1}}],["aws",{"2":{"65":1}}],["added",{"2":{"109":1}}],["adding",{"2":{"107":1}}],["address",{"2":{"75":1}}],["addr",{"2":{"72":1,"75":1,"82":1}}],["adapter",{"2":{"63":1}}],["admin123",{"2":{"93":1,"95":1}}],["admin",{"0":{"76":1},"2":{"5":1,"72":3,"76":4,"93":3,"95":1,"96":2}}],["admins",{"2":{"5":1}}],["able",{"2":{"54":1}}],["agent",{"0":{"64":1,"82":1},"2":{"54":1,"58":1,"70":1,"72":1,"82":4,"91":1,"95":1}}],["ai",{"2":{"54":2,"58":2,"68":1}}],["already",{"2":{"108":1}}],["also",{"2":{"103":1,"105":1}}],["aliases",{"2":{"87":1,"90":1}}],["always",{"2":{"52":1}}],["allowing",{"2":{"58":1}}],["all",{"2":{"5":1,"30":1,"34":1,"37":1,"38":1,"68":1,"70":2,"75":1,"91":1,"93":2,"94":1,"98":1,"100":1}}],["avoid",{"2":{"88":3}}],["avoids",{"2":{"47":1}}],["available",{"2":{"12":1,"13":1}}],["avatar",{"2":{"6":2,"7":2}}],["architecture",{"2":{"63":1}}],["are",{"2":{"46":2,"48":1,"49":1,"90":1}}],["argument",{"2":{"7":1}}],["across",{"2":{"108":1}}],["actor",{"2":{"87":1,"88":1,"89":1}}],["active",{"2":{"6":2,"7":2}}],["access",{"0":{"46":1,"95":1},"2":{"45":1,"46":1,"48":1,"50":1,"51":2,"52":2,"54":1,"58":1,"86":2,"87":1,"90":1,"98":1,"100":1}}],["account",{"0":{"45":1,"47":1},"2":{"45":8,"47":4,"48":4,"50":1,"51":10,"52":3,"86":10,"87":4,"88":2,"89":6,"90":1}}],["accounts",{"0":{"44":1},"1":{"45":1,"46":1,"47":1,"48":1,"49":1},"2":{"45":2,"46":2,"47":2,"52":2,"53":1,"55":1,"60":1}}],["azure",{"2":{"35":1,"65":1}}],["attachments",{"2":{"63":1}}],["at",{"2":{"26":1,"40":1,"67":1,"84":1,"96":1,"104":1}}],["app",{"2":{"15":4}}],["api",{"2":{"3":1,"24":3,"25":1,"26":1,"35":3,"72":3,"81":3,"82":1,"84":7,"95":1}}],["any",{"2":{"35":1,"47":1}}],["anthropic",{"2":{"33":1,"35":1,"65":1}}],["an",{"2":{"9":1,"19":1,"45":2,"46":1,"51":3,"52":2,"54":1,"58":1,"86":1,"104":1}}],["and",{"0":{"44":1,"46":1},"1":{"45":1,"46":1,"47":1,"48":1,"49":1},"2":{"1":1,"2":1,"4":1,"6":1,"9":1,"11":1,"13":1,"19":1,"23":1,"24":2,"25":1,"26":1,"27":2,"28":1,"29":1,"30":1,"31":1,"40":1,"45":1,"46":1,"47":2,"48":2,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":5,"58":4,"60":1,"61":2,"62":2,"63":1,"64":4,"65":1,"66":1,"67":1,"68":1,"69":1,"85":1,"86":1,"91":1,"93":2,"94":1,"95":1,"96":2,"97":1,"98":2,"100":1,"104":1,"105":1,"107":1,"109":1}}],["assign",{"2":{"64":1}}],["asks",{"2":{"8":1}}],["as",{"2":{"7":1,"10":2,"20":1,"26":1,"31":1,"40":2,"45":1,"49":2,"52":2,"62":1,"90":1,"104":1}}],["a",{"2":{"6":1,"8":1,"9":1,"10":2,"13":1,"14":1,"15":1,"16":1,"25":2,"26":1,"28":1,"31":1,"32":1,"35":1,"36":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"45":3,"48":3,"51":5,"54":1,"58":1,"61":1,"62":1,"64":1,"65":1,"68":1,"69":1,"71":2,"79":1,"86":4,"89":5,"103":1,"104":2,"108":1}}],["typically",{"2":{"82":1}}],["types",{"2":{"12":1,"35":1,"45":1}}],["type",{"0":{"49":1},"2":{"6":3,"9":2,"13":3,"14":3,"15":3,"16":3,"17":3,"19":2,"30":1,"31":5,"35":4,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1}}],["turn",{"2":{"62":1}}],["tui",{"0":{"20":1},"2":{"20":2,"28":1}}],["taking",{"0":{"106":1},"1":{"107":1,"108":1,"109":1}}],["take",{"2":{"95":1}}],["task",{"0":{"102":2},"1":{"103":2,"104":2,"105":2},"2":{"103":3}}],["tasks",{"0":{"67":1},"2":{"60":1,"64":1,"67":1}}],["talks",{"2":{"25":1}}],["tightened",{"2":{"49":1}}],["timeout",{"2":{"72":1,"81":2}}],["times",{"2":{"67":1}}],["time",{"2":{"19":1,"64":1,"86":1}}],["trigger",{"2":{"109":1}}],["triggers",{"2":{"67":1}}],["tries",{"2":{"103":1}}],["trusted",{"2":{"100":1}}],["troubleshooting",{"0":{"99":1,"101":1},"1":{"102":1,"103":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1}}],["transition",{"2":{"49":1}}],["treats",{"2":{"45":1}}],["through",{"2":{"68":1}}],["this",{"0":{"52":1,"53":1},"2":{"50":1,"52":1,"79":1,"85":1,"94":1,"104":1}}],["that",{"2":{"45":1,"51":1,"52":1,"88":1}}],["their",{"2":{"30":1,"48":2,"61":1}}],["these",{"2":{"22":1,"45":1,"52":1}}],["them",{"2":{"4":1,"54":1,"58":1,"62":1}}],["then",{"2":{"1":1,"108":1}}],["the",{"2":{"1":2,"2":1,"3":2,"16":1,"17":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":5,"27":1,"28":1,"35":1,"37":1,"40":1,"45":2,"48":3,"49":1,"50":1,"51":2,"52":3,"54":1,"58":1,"62":2,"64":1,"69":1,"70":1,"71":1,"82":2,"84":1,"86":3,"89":1,"91":3,"93":4,"94":2,"96":5,"100":1,"103":2,"104":5,"105":6,"107":2,"108":5,"109":6}}],["tg",{"2":{"45":1,"51":1,"52":1,"89":1}}],["two",{"2":{"45":2}}],["template",{"2":{"93":1,"96":1}}],["term",{"2":{"90":1}}],["terms",{"0":{"86":1,"88":1},"2":{"85":1}}],["terminology",{"0":{"85":1},"1":{"86":1,"87":1,"88":1,"89":1,"90":1},"2":{"52":1,"56":1}}],["terminal",{"2":{"20":1,"28":1,"69":1}}],["teams",{"2":{"60":1}}],["text",{"2":{"31":2,"72":1,"74":2}}],["telegram",{"2":{"12":1,"51":1,"54":1,"58":1,"63":1}}],["toggle",{"0":{"42":1},"2":{"28":1,"42":1}}],["tools",{"2":{"64":1,"103":1,"107":1}}],["tool",{"0":{"69":1},"2":{"25":1,"55":1,"66":1,"69":1,"84":1,"103":1}}],["toml",{"0":{"71":1},"1":{"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1},"2":{"22":1,"27":1,"55":1,"70":1,"71":2,"72":1,"93":1,"94":2,"96":6,"104":1,"105":3}}],["tokens",{"2":{"77":1}}],["token",{"2":{"1":2,"2":1,"3":1,"15":3,"27":2,"28":1}}],["to",{"2":{"1":1,"3":1,"9":1,"13":1,"19":5,"20":1,"22":1,"25":1,"26":1,"27":2,"28":1,"37":1,"40":1,"47":2,"48":1,"51":1,"52":1,"54":1,"58":1,"60":1,"62":1,"63":1,"64":1,"66":1,"67":1,"68":1,"70":1,"78":1,"82":1,"84":1,"86":1,"89":1,"91":2,"96":1,"98":1,"103":2,"104":2,"105":2,"107":1,"109":1}}]],"serializationVersion":2}';export{t as default}; diff --git a/assets/chunks/VPLocalSearchBox.DxDk0WUu.js b/assets/chunks/VPLocalSearchBox.CrvgDWgJ.js similarity index 99% rename from assets/chunks/VPLocalSearchBox.DxDk0WUu.js rename to assets/chunks/VPLocalSearchBox.CrvgDWgJ.js index 61063074..79f804c3 100644 --- a/assets/chunks/VPLocalSearchBox.DxDk0WUu.js +++ b/assets/chunks/VPLocalSearchBox.CrvgDWgJ.js @@ -1,4 +1,4 @@ -var At=Object.defineProperty;var Ct=(a,e,t)=>e in a?At(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t;var Me=(a,e,t)=>Ct(a,typeof e!="symbol"?e+"":e,t);import{V as nt,q as Be,ah as Mt,h as be,ai as rt,aj as Lt,ak as Dt,al as Pt,G as ce,d as zt,am as it,p as he,an as Vt,ao as jt,s as $t,ap as Bt,v as Le,P as ve,O as _e,aq as Wt,ar as Kt,W as Jt,R as qt,$ as Ut,o as q,b as Ht,j as T,a0 as Gt,k as P,as as Qt,at as Yt,au as Zt,c as Q,n as st,e as xe,B as at,F as ot,a as pe,t as me,av as Xt,aw as lt,ax as en,a5 as tn,aa as nn,ay as rn,_ as sn}from"./framework.DEqXEGcv.js";import{u as an,c as on}from"./theme.Cqd42OuW.js";const ln={root:()=>nt(()=>import("./@localSearchIndexroot.BkeCdQfh.js"),[]),zh:()=>nt(()=>import("./@localSearchIndexzh.dDuBvO1t.js"),[])};/*! +var At=Object.defineProperty;var Ct=(a,e,t)=>e in a?At(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t;var Me=(a,e,t)=>Ct(a,typeof e!="symbol"?e+"":e,t);import{V as nt,q as Be,ah as Mt,h as be,ai as rt,aj as Lt,ak as Dt,al as Pt,G as ce,d as zt,am as it,p as he,an as Vt,ao as jt,s as $t,ap as Bt,v as Le,P as ve,O as _e,aq as Wt,ar as Kt,W as Jt,R as qt,$ as Ut,o as q,b as Ht,j as T,a0 as Gt,k as P,as as Qt,at as Yt,au as Zt,c as Q,n as st,e as xe,B as at,F as ot,a as pe,t as me,av as Xt,aw as lt,ax as en,a5 as tn,aa as nn,ay as rn,_ as sn}from"./framework.DEqXEGcv.js";import{u as an,c as on}from"./theme.Bxi9Rr1a.js";const ln={root:()=>nt(()=>import("./@localSearchIndexroot.CVEXjrNv.js"),[]),zh:()=>nt(()=>import("./@localSearchIndexzh.dDuBvO1t.js"),[])};/*! * tabbable 6.4.0 * @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE */var bt=["input:not([inert]):not([inert] *)","select:not([inert]):not([inert] *)","textarea:not([inert]):not([inert] *)","a[href]:not([inert]):not([inert] *)","button:not([inert]):not([inert] *)","[tabindex]:not(slot):not([inert]):not([inert] *)","audio[controls]:not([inert]):not([inert] *)","video[controls]:not([inert]):not([inert] *)",'[contenteditable]:not([contenteditable="false"]):not([inert]):not([inert] *)',"details>summary:first-of-type:not([inert]):not([inert] *)","details:not([inert]):not([inert] *)"],ke=bt.join(","),yt=typeof Element>"u",ae=yt?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,Ne=!yt&&Element.prototype.getRootNode?function(a){var e;return a==null||(e=a.getRootNode)===null||e===void 0?void 0:e.call(a)}:function(a){return a==null?void 0:a.ownerDocument},Fe=function(e,t){var n;t===void 0&&(t=!0);var r=e==null||(n=e.getAttribute)===null||n===void 0?void 0:n.call(e,"inert"),s=r===""||r==="true",i=s||t&&e&&(typeof e.closest=="function"?e.closest("[inert]"):Fe(e.parentNode));return i},cn=function(e){var t,n=e==null||(t=e.getAttribute)===null||t===void 0?void 0:t.call(e,"contenteditable");return n===""||n==="true"},wt=function(e,t,n){if(Fe(e))return[];var r=Array.prototype.slice.apply(e.querySelectorAll(ke));return t&&ae.call(e,ke)&&r.unshift(e),r=r.filter(n),r},Re=function(e,t,n){for(var r=[],s=Array.from(e);s.length;){var i=s.shift();if(!Fe(i,!1))if(i.tagName==="SLOT"){var o=i.assignedElements(),l=o.length?o:i.children,c=Re(l,!0,n);n.flatten?r.push.apply(r,c):r.push({scopeParent:i,candidates:c})}else{var h=ae.call(i,ke);h&&n.filter(i)&&(t||!e.includes(i))&&r.push(i);var m=i.shadowRoot||typeof n.getShadowRoot=="function"&&n.getShadowRoot(i),p=!Fe(m,!1)&&(!n.shadowRootFilter||n.shadowRootFilter(i));if(m&&p){var b=Re(m===!0?i.children:m.children,!0,n);n.flatten?r.push.apply(r,b):r.push({scopeParent:i,candidates:b})}else s.unshift.apply(s,i.children)}}return r},St=function(e){return!isNaN(parseInt(e.getAttribute("tabindex"),10))},se=function(e){if(!e)throw new Error("No node provided");return e.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||cn(e))&&!St(e)?0:e.tabIndex},un=function(e,t){var n=se(e);return n<0&&t&&!St(e)?0:n},dn=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},_t=function(e){return e.tagName==="INPUT"},fn=function(e){return _t(e)&&e.type==="hidden"},hn=function(e){var t=e.tagName==="DETAILS"&&Array.prototype.slice.apply(e.children).some(function(n){return n.tagName==="SUMMARY"});return t},vn=function(e,t){for(var n=0;nsummary:first-of-type"),o=i?e.parentElement:e;if(ae.call(o,"details:not([open]) *"))return!0;if(!n||n==="full"||n==="full-native"||n==="legacy-full"){if(typeof r=="function"){for(var l=e;e;){var c=e.parentElement,h=Ne(e);if(c&&!c.shadowRoot&&r(c)===!0)return ct(e);e.assignedSlot?e=e.assignedSlot:!c&&h!==e.ownerDocument?e=h.host:e=c}e=l}if(bn(e))return!e.getClientRects().length;if(n!=="legacy-full")return!0}else if(n==="non-zero-area")return ct(e);return!1},wn=function(e){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(e.tagName))for(var t=e.parentElement;t;){if(t.tagName==="FIELDSET"&&t.disabled){for(var n=0;n=0)},xt=function(e){var t=[],n=[];return e.forEach(function(r,s){var i=!!r.scopeParent,o=i?r.scopeParent:r,l=un(o,i),c=i?xt(r.candidates):o;l===0?i?t.push.apply(t,c):t.push(o):n.push({documentOrder:s,tabIndex:l,item:r,isScope:i,content:c})}),n.sort(dn).reduce(function(r,s){return s.isScope?r.push.apply(r,s.content):r.push(s.content),r},[]).concat(t)},_n=function(e,t){t=t||{};var n;return t.getShadowRoot?n=Re([e],t.includeContainer,{filter:We.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:Sn}):n=wt(e,t.includeContainer,We.bind(null,t)),xt(n)},xn=function(e,t){t=t||{};var n;return t.getShadowRoot?n=Re([e],t.includeContainer,{filter:Oe.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):n=wt(e,t.includeContainer,Oe.bind(null,t)),n},oe=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ae.call(e,ke)===!1?!1:We(t,e)},Tn=bt.concat("iframe:not([inert]):not([inert] *)").join(","),De=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ae.call(e,Tn)===!1?!1:Oe(t,e)};/*! diff --git a/assets/chunks/theme.Cqd42OuW.js b/assets/chunks/theme.Bxi9Rr1a.js similarity index 99% rename from assets/chunks/theme.Cqd42OuW.js rename to assets/chunks/theme.Bxi9Rr1a.js index 1e3fd9d3..bdec1d6d 100644 --- a/assets/chunks/theme.Cqd42OuW.js +++ b/assets/chunks/theme.Bxi9Rr1a.js @@ -1,2 +1,2 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/chunks/VPLocalSearchBox.DxDk0WUu.js","assets/chunks/framework.DEqXEGcv.js"])))=>i.map(i=>d[i]); -import{d as p,c as u,r as c,n as N,o as s,a as j,t as M,b as _,w as h,T as ue,e as m,_ as g,u as Ce,i as He,f as Be,g as de,h as y,j as d,k as i,l as z,m as se,p as S,q as F,s as X,v as U,x as ve,y as fe,z as Ee,A as Fe,F as x,B as A,C as W,D as Y,E as k,G as $e,H as B,I as ye,J as Q,K as G,L as Z,M as De,N as Pe,O as ie,P as Le,Q as Ve,R as ee,S as Oe,U as Ge,V as Ue,W as Se,X as Te,Y as je,Z as ze,$ as We,a0 as Ke,a1 as qe}from"./framework.DEqXEGcv.js";const Re=p({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(e){return(t,n)=>(s(),u("span",{class:N(["VPBadge",e.type])},[c(t.$slots,"default",{},()=>[j(M(e.text),1)])],2))}}),Je={key:0,class:"VPBackdrop"},Xe=p({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(e){return(t,n)=>(s(),_(ue,{name:"fade"},{default:h(()=>[e.show?(s(),u("div",Je)):m("",!0)]),_:1}))}}),Ye=g(Xe,[["__scopeId","data-v-f6932a82"]]),L=Ce;function Qe(e,t){let n,a=!1;return()=>{n&&clearTimeout(n),a?n=setTimeout(e,t):(e(),(a=!0)&&setTimeout(()=>a=!1,t))}}function re(e){return e.startsWith("/")?e:`/${e}`}function he(e){const{pathname:t,search:n,hash:a,protocol:o}=new URL(e,"http://a.com");if(He(e)||e.startsWith("#")||!o.startsWith("http")||!Be(t))return e;const{site:r}=L(),l=t.endsWith("/")||t.endsWith(".html")?e:e.replace(/(?:(^\.+)\/)?.*$/,`$1${t.replace(/(\.md)?$/,r.value.cleanUrls?"":".html")}${n}${a}`);return de(l)}function q({correspondingLink:e=!1}={}){const{site:t,localeIndex:n,page:a,theme:o,hash:r}=L(),l=y(()=>{var f,$;return{label:(f=t.value.locales[n.value])==null?void 0:f.label,link:(($=t.value.locales[n.value])==null?void 0:$.link)||(n.value==="root"?"/":`/${n.value}/`)}});return{localeLinks:y(()=>Object.entries(t.value.locales).flatMap(([f,$])=>l.value.label===$.label?[]:{text:$.label,link:Ze($.link||(f==="root"?"/":`/${f}/`),o.value.i18nRouting!==!1&&e,a.value.relativePath.slice(l.value.link.length-1),!t.value.cleanUrls)+r.value})),currentLang:l}}function Ze(e,t,n,a){return t?e.replace(/\/$/,"")+re(n.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,a?".html":"")):e}const et={class:"NotFound"},tt={class:"code"},nt={class:"title"},at={class:"quote"},ot={class:"action"},st=["href","aria-label"],it=p({__name:"NotFound",setup(e){const{theme:t}=L(),{currentLang:n}=q();return(a,o)=>{var r,l,v,f,$;return s(),u("div",et,[d("p",tt,M(((r=i(t).notFound)==null?void 0:r.code)??"404"),1),d("h1",nt,M(((l=i(t).notFound)==null?void 0:l.title)??"PAGE NOT FOUND"),1),o[0]||(o[0]=d("div",{class:"divider"},null,-1)),d("blockquote",at,M(((v=i(t).notFound)==null?void 0:v.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),d("div",ot,[d("a",{class:"link",href:i(de)(i(n).link),"aria-label":((f=i(t).notFound)==null?void 0:f.linkLabel)??"go to home"},M((($=i(t).notFound)==null?void 0:$.linkText)??"Take me home"),9,st)])])}}}),rt=g(it,[["__scopeId","data-v-c827a85d"]]);function Ne(e,t){if(Array.isArray(e))return R(e);if(e==null)return[];t=re(t);const n=Object.keys(e).sort((o,r)=>r.split("/").length-o.split("/").length).find(o=>t.startsWith(re(o))),a=n?e[n]:[];return Array.isArray(a)?R(a):R(a.items,a.base)}function lt(e){const t=[];let n=0;for(const a in e){const o=e[a];if(o.items){n=t.push(o);continue}t[n]||t.push({items:[]}),t[n].items.push(o)}return t}function ct(e){const t=[];function n(a){for(const o of a)o.text&&o.link&&t.push({text:o.text,link:o.link,docFooterText:o.docFooterText}),o.items&&n(o.items)}return n(e),t}function le(e,t){return Array.isArray(t)?t.some(n=>le(e,n)):z(e,t.link)?!0:t.items?le(e,t.items):!1}function R(e,t){return[...e].map(n=>{const a={...n},o=a.base||t;return o&&a.link&&(a.link=o+a.link),a.items&&(a.items=R(a.items,o)),a})}function D(){const{frontmatter:e,page:t,theme:n}=L(),a=se("(min-width: 960px)"),o=S(!1),r=y(()=>{const w=n.value.sidebar,C=t.value.relativePath;return w?Ne(w,C):[]}),l=S(r.value);F(r,(w,C)=>{JSON.stringify(w)!==JSON.stringify(C)&&(l.value=r.value)});const v=y(()=>e.value.sidebar!==!1&&l.value.length>0&&e.value.layout!=="home"),f=y(()=>$?e.value.aside==null?n.value.aside==="left":e.value.aside==="left":!1),$=y(()=>e.value.layout==="home"?!1:e.value.aside!=null?!!e.value.aside:n.value.aside!==!1),V=y(()=>v.value&&a.value),b=y(()=>v.value?lt(l.value):[]);function P(){o.value=!0}function T(){o.value=!1}function I(){o.value?T():P()}return{isOpen:o,sidebar:l,sidebarGroups:b,hasSidebar:v,hasAside:$,leftAside:f,isSidebarEnabled:V,open:P,close:T,toggle:I}}function ut(e,t){let n;X(()=>{n=e.value?document.activeElement:void 0}),U(()=>{window.addEventListener("keyup",a)}),ve(()=>{window.removeEventListener("keyup",a)});function a(o){o.key==="Escape"&&e.value&&(t(),n==null||n.focus())}}function dt(e){const{page:t,hash:n}=L(),a=S(!1),o=y(()=>e.value.collapsed!=null),r=y(()=>!!e.value.link),l=S(!1),v=()=>{l.value=z(t.value.relativePath,e.value.link)};F([t,e,n],v),U(v);const f=y(()=>l.value?!0:e.value.items?le(t.value.relativePath,e.value.items):!1),$=y(()=>!!(e.value.items&&e.value.items.length));X(()=>{a.value=!!(o.value&&e.value.collapsed)}),fe(()=>{(l.value||f.value)&&(a.value=!1)});function V(){o.value&&(a.value=!a.value)}return{collapsed:a,collapsible:o,isLink:r,isActiveLink:l,hasActiveLink:f,hasChildren:$,toggle:V}}function vt(){const{hasSidebar:e}=D(),t=se("(min-width: 960px)"),n=se("(min-width: 1280px)");return{isAsideEnabled:y(()=>!n.value&&!t.value?!1:e.value?n.value:t.value)}}const ft=/\b(?:VPBadge|header-anchor|footnote-ref|ignore-header)\b/,ce=[];function Me(e){return typeof e.outline=="object"&&!Array.isArray(e.outline)&&e.outline.label||e.outlineTitle||"On this page"}function me(e){const t=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(n=>n.id&&n.hasChildNodes()).map(n=>{const a=Number(n.tagName[1]);return{element:n,title:ht(n),link:"#"+n.id,level:a}});return mt(t,e)}function ht(e){let t="";for(const n of e.childNodes)if(n.nodeType===1){if(ft.test(n.className))continue;t+=n.textContent}else n.nodeType===3&&(t+=n.textContent);return t.trim()}function mt(e,t){if(t===!1)return[];const n=(typeof t=="object"&&!Array.isArray(t)?t.level:t)||2,[a,o]=typeof n=="number"?[n,n]:n==="deep"?[2,6]:n;return _t(e,a,o)}function pt(e,t){const{isAsideEnabled:n}=vt(),a=Qe(r,100);let o=null;U(()=>{requestAnimationFrame(r),window.addEventListener("scroll",a)}),Ee(()=>{l(location.hash)}),ve(()=>{window.removeEventListener("scroll",a)});function r(){if(!n.value)return;const v=window.scrollY,f=window.innerHeight,$=document.body.offsetHeight,V=Math.abs(v+f-$)<1,b=ce.map(({element:T,link:I})=>({link:I,top:kt(T)})).filter(({top:T})=>!Number.isNaN(T)).sort((T,I)=>T.top-I.top);if(!b.length){l(null);return}if(v<1){l(null);return}if(V){l(b[b.length-1].link);return}let P=null;for(const{link:T,top:I}of b){if(I>v+Fe()+4)break;P=T}l(P)}function l(v){o&&o.classList.remove("active"),v==null?o=null:o=e.value.querySelector(`a[href="${decodeURIComponent(v)}"]`);const f=o;f?(f.classList.add("active"),t.value.style.top=f.offsetTop+39+"px",t.value.style.opacity="1"):(t.value.style.top="33px",t.value.style.opacity="0")}}function kt(e){let t=0;for(;e!==document.body;){if(e===null)return NaN;t+=e.offsetTop,e=e.offsetParent}return t}function _t(e,t,n){ce.length=0;const a=[],o=[];return e.forEach(r=>{const l={...r,children:[]};let v=o[o.length-1];for(;v&&v.level>=l.level;)o.pop(),v=o[o.length-1];if(l.element.classList.contains("ignore-header")||v&&"shouldIgnore"in v){o.push({level:l.level,shouldIgnore:!0});return}l.level>n||l.level{const o=W("VPDocOutlineItem",!0);return s(),u("ul",{class:N(["VPDocOutlineItem",e.root?"root":"nested"])},[(s(!0),u(x,null,A(e.headers,({children:r,link:l,title:v})=>(s(),u("li",null,[d("a",{class:"outline-link",href:l,onClick:t,title:v},M(v),9,bt),r!=null&&r.length?(s(),_(o,{key:0,headers:r},null,8,["headers"])):m("",!0)]))),256))],2)}}}),xe=g(gt,[["__scopeId","data-v-21fe7f0b"]]),$t={class:"content"},yt={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},Pt=p({__name:"VPDocAsideOutline",setup(e){const{frontmatter:t,theme:n}=L(),a=$e([]);Y(()=>{a.value=me(t.value.outline??n.value.outline)});const o=S(),r=S();return pt(o,r),(l,v)=>(s(),u("nav",{"aria-labelledby":"doc-outline-aria-label",class:N(["VPDocAsideOutline",{"has-outline":a.value.length>0}]),ref_key:"container",ref:o},[d("div",$t,[d("div",{class:"outline-marker",ref_key:"marker",ref:r},null,512),d("div",yt,M(i(Me)(i(n))),1),k(xe,{headers:a.value,root:!0},null,8,["headers"])])],2))}}),Lt=g(Pt,[["__scopeId","data-v-e382fc21"]]),Vt={class:"VPDocAsideCarbonAds"},St=p({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(e){const t=()=>null;return(n,a)=>(s(),u("div",Vt,[k(i(t),{"carbon-ads":e.carbonAds},null,8,["carbon-ads"])]))}}),Tt={class:"VPDocAside"},Nt=p({__name:"VPDocAside",setup(e){const{theme:t}=L();return(n,a)=>(s(),u("div",Tt,[c(n.$slots,"aside-top",{},void 0,!0),c(n.$slots,"aside-outline-before",{},void 0,!0),k(Lt),c(n.$slots,"aside-outline-after",{},void 0,!0),a[0]||(a[0]=d("div",{class:"spacer"},null,-1)),c(n.$slots,"aside-ads-before",{},void 0,!0),i(t).carbonAds?(s(),_(St,{key:0,"carbon-ads":i(t).carbonAds},null,8,["carbon-ads"])):m("",!0),c(n.$slots,"aside-ads-after",{},void 0,!0),c(n.$slots,"aside-bottom",{},void 0,!0)]))}}),Mt=g(Nt,[["__scopeId","data-v-4e31e231"]]);function xt(){const{theme:e,page:t}=L();return y(()=>{const{text:n="Edit this page",pattern:a=""}=e.value.editLink||{};let o;return typeof a=="function"?o=a(t.value):o=a.replace(/:path/g,t.value.filePath),{url:o,text:n}})}function It(){const{page:e,theme:t,frontmatter:n}=L();return y(()=>{var $,V,b,P,T,I,w,C;const a=Ne(t.value.sidebar,e.value.relativePath),o=ct(a),r=wt(o,H=>H.link.replace(/[?#].*$/,"")),l=r.findIndex(H=>z(e.value.relativePath,H.link)),v=(($=t.value.docFooter)==null?void 0:$.prev)===!1&&!n.value.prev||n.value.prev===!1,f=((V=t.value.docFooter)==null?void 0:V.next)===!1&&!n.value.next||n.value.next===!1;return{prev:v?void 0:{text:(typeof n.value.prev=="string"?n.value.prev:typeof n.value.prev=="object"?n.value.prev.text:void 0)??((b=r[l-1])==null?void 0:b.docFooterText)??((P=r[l-1])==null?void 0:P.text),link:(typeof n.value.prev=="object"?n.value.prev.link:void 0)??((T=r[l-1])==null?void 0:T.link)},next:f?void 0:{text:(typeof n.value.next=="string"?n.value.next:typeof n.value.next=="object"?n.value.next.text:void 0)??((I=r[l+1])==null?void 0:I.docFooterText)??((w=r[l+1])==null?void 0:w.text),link:(typeof n.value.next=="object"?n.value.next.link:void 0)??((C=r[l+1])==null?void 0:C.link)}}})}function wt(e,t){const n=new Set;return e.filter(a=>{const o=t(a);return n.has(o)?!1:n.add(o)})}const E=p({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(e){const t=e,n=y(()=>t.tag??(t.href?"a":"span")),a=y(()=>t.href&&ye.test(t.href)||t.target==="_blank");return(o,r)=>(s(),_(B(n.value),{class:N(["VPLink",{link:e.href,"vp-external-link-icon":a.value,"no-icon":e.noIcon}]),href:e.href?i(he)(e.href):void 0,target:e.target??(a.value?"_blank":void 0),rel:e.rel??(a.value?"noreferrer":void 0)},{default:h(()=>[c(o.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),At={class:"VPLastUpdated"},Ct=["datetime"],Ht=p({__name:"VPDocFooterLastUpdated",setup(e){const{theme:t,page:n,lang:a}=L(),o=y(()=>new Date(n.value.lastUpdated)),r=y(()=>o.value.toISOString()),l=S("");return U(()=>{X(()=>{var v,f,$;l.value=new Intl.DateTimeFormat((f=(v=t.value.lastUpdated)==null?void 0:v.formatOptions)!=null&&f.forceLocale?a.value:void 0,(($=t.value.lastUpdated)==null?void 0:$.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(o.value)})}),(v,f)=>{var $;return s(),u("p",At,[j(M((($=i(t).lastUpdated)==null?void 0:$.text)||i(t).lastUpdatedText||"Last updated")+": ",1),d("time",{datetime:r.value},M(l.value),9,Ct)])}}}),Bt=g(Ht,[["__scopeId","data-v-744e3437"]]),Et={key:0,class:"VPDocFooter"},Ft={key:0,class:"edit-info"},Dt={key:0,class:"edit-link"},Ot={key:1,class:"last-updated"},Gt={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},Ut={class:"pager"},jt=["innerHTML"],zt=["innerHTML"],Wt={class:"pager"},Kt=["innerHTML"],qt=["innerHTML"],Rt=p({__name:"VPDocFooter",setup(e){const{theme:t,page:n,frontmatter:a}=L(),o=xt(),r=It(),l=y(()=>t.value.editLink&&a.value.editLink!==!1),v=y(()=>n.value.lastUpdated),f=y(()=>l.value||v.value||r.value.prev||r.value.next);return($,V)=>{var b,P,T,I;return f.value?(s(),u("footer",Et,[c($.$slots,"doc-footer-before",{},void 0,!0),l.value||v.value?(s(),u("div",Ft,[l.value?(s(),u("div",Dt,[k(E,{class:"edit-link-button",href:i(o).url,"no-icon":!0},{default:h(()=>[V[0]||(V[0]=d("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),j(" "+M(i(o).text),1)]),_:1},8,["href"])])):m("",!0),v.value?(s(),u("div",Ot,[k(Bt)])):m("",!0)])):m("",!0),(b=i(r).prev)!=null&&b.link||(P=i(r).next)!=null&&P.link?(s(),u("nav",Gt,[V[1]||(V[1]=d("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),d("div",Ut,[(T=i(r).prev)!=null&&T.link?(s(),_(E,{key:0,class:"pager-link prev",href:i(r).prev.link},{default:h(()=>{var w;return[d("span",{class:"desc",innerHTML:((w=i(t).docFooter)==null?void 0:w.prev)||"Previous page"},null,8,jt),d("span",{class:"title",innerHTML:i(r).prev.text},null,8,zt)]}),_:1},8,["href"])):m("",!0)]),d("div",Wt,[(I=i(r).next)!=null&&I.link?(s(),_(E,{key:0,class:"pager-link next",href:i(r).next.link},{default:h(()=>{var w;return[d("span",{class:"desc",innerHTML:((w=i(t).docFooter)==null?void 0:w.next)||"Next page"},null,8,Kt),d("span",{class:"title",innerHTML:i(r).next.text},null,8,qt)]}),_:1},8,["href"])):m("",!0)])])):m("",!0)])):m("",!0)}}}),Jt=g(Rt,[["__scopeId","data-v-d650fb62"]]),Xt={class:"container"},Yt={class:"aside-container"},Qt={class:"aside-content"},Zt={class:"content"},en={class:"content-container"},tn={class:"main"},nn=p({__name:"VPDoc",setup(e){const{theme:t}=L(),n=Q(),{hasSidebar:a,hasAside:o,leftAside:r}=D(),l=y(()=>n.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(v,f)=>{const $=W("Content");return s(),u("div",{class:N(["VPDoc",{"has-sidebar":i(a),"has-aside":i(o)}])},[c(v.$slots,"doc-top",{},void 0,!0),d("div",Xt,[i(o)?(s(),u("div",{key:0,class:N(["aside",{"left-aside":i(r)}])},[f[0]||(f[0]=d("div",{class:"aside-curtain"},null,-1)),d("div",Yt,[d("div",Qt,[k(Mt,null,{"aside-top":h(()=>[c(v.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":h(()=>[c(v.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":h(()=>[c(v.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":h(()=>[c(v.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":h(()=>[c(v.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":h(()=>[c(v.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):m("",!0),d("div",Zt,[d("div",en,[c(v.$slots,"doc-before",{},void 0,!0),d("main",tn,[k($,{class:N(["vp-doc",[l.value,i(t).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),k(Jt,null,{"doc-footer-before":h(()=>[c(v.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),c(v.$slots,"doc-after",{},void 0,!0)])])]),c(v.$slots,"doc-bottom",{},void 0,!0)],2)}}}),an=g(nn,[["__scopeId","data-v-c0d172cc"]]),on=p({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(e){const t=e,n=y(()=>t.href&&ye.test(t.href)),a=y(()=>t.tag||(t.href?"a":"button"));return(o,r)=>(s(),_(B(a.value),{class:N(["VPButton",[e.size,e.theme]]),href:e.href?i(he)(e.href):void 0,target:t.target??(n.value?"_blank":void 0),rel:t.rel??(n.value?"noreferrer":void 0)},{default:h(()=>[j(M(e.text),1)]),_:1},8,["class","href","target","rel"]))}}),sn=g(on,[["__scopeId","data-v-701b600a"]]),rn=["src","alt"],ln=p({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(e){return(t,n)=>{const a=W("VPImage",!0);return e.image?(s(),u(x,{key:0},[typeof e.image=="string"||"src"in e.image?(s(),u("img",G({key:0,class:"VPImage"},typeof e.image=="string"?t.$attrs:{...e.image,...t.$attrs},{src:i(de)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,rn)):(s(),u(x,{key:1},[k(a,G({class:"dark",image:e.image.dark,alt:e.image.alt},t.$attrs),null,16,["image","alt"]),k(a,G({class:"light",image:e.image.light,alt:e.image.alt},t.$attrs),null,16,["image","alt"])],64))],64)):m("",!0)}}}),J=g(ln,[["__scopeId","data-v-a9ec2bb1"]]),cn={class:"container"},un={class:"main"},dn={class:"heading"},vn=["innerHTML"],fn=["innerHTML"],hn=["innerHTML"],mn={key:0,class:"actions"},pn={key:0,class:"image"},kn={class:"image-container"},_n=p({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(e){const t=Z("hero-image-slot-exists");return(n,a)=>(s(),u("div",{class:N(["VPHero",{"has-image":e.image||i(t)}])},[d("div",cn,[d("div",un,[c(n.$slots,"home-hero-info-before",{},void 0,!0),c(n.$slots,"home-hero-info",{},()=>[d("h1",dn,[e.name?(s(),u("span",{key:0,innerHTML:e.name,class:"name clip"},null,8,vn)):m("",!0),e.text?(s(),u("span",{key:1,innerHTML:e.text,class:"text"},null,8,fn)):m("",!0)]),e.tagline?(s(),u("p",{key:0,innerHTML:e.tagline,class:"tagline"},null,8,hn)):m("",!0)],!0),c(n.$slots,"home-hero-info-after",{},void 0,!0),e.actions?(s(),u("div",mn,[(s(!0),u(x,null,A(e.actions,o=>(s(),u("div",{key:o.link,class:"action"},[k(sn,{tag:"a",size:"medium",theme:o.theme,text:o.text,href:o.link,target:o.target,rel:o.rel},null,8,["theme","text","href","target","rel"])]))),128))])):m("",!0),c(n.$slots,"home-hero-actions-after",{},void 0,!0)]),e.image||i(t)?(s(),u("div",pn,[d("div",kn,[a[0]||(a[0]=d("div",{class:"image-bg"},null,-1)),c(n.$slots,"home-hero-image",{},()=>[e.image?(s(),_(J,{key:0,class:"image-src",image:e.image},null,8,["image"])):m("",!0)],!0)])])):m("",!0)])],2))}}),bn=g(_n,[["__scopeId","data-v-4d7b5684"]]),gn=p({__name:"VPHomeHero",setup(e){const{frontmatter:t}=L();return(n,a)=>i(t).hero?(s(),_(bn,{key:0,class:"VPHomeHero",name:i(t).hero.name,text:i(t).hero.text,tagline:i(t).hero.tagline,image:i(t).hero.image,actions:i(t).hero.actions},{"home-hero-info-before":h(()=>[c(n.$slots,"home-hero-info-before")]),"home-hero-info":h(()=>[c(n.$slots,"home-hero-info")]),"home-hero-info-after":h(()=>[c(n.$slots,"home-hero-info-after")]),"home-hero-actions-after":h(()=>[c(n.$slots,"home-hero-actions-after")]),"home-hero-image":h(()=>[c(n.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):m("",!0)}}),$n={class:"box"},yn={key:0,class:"icon"},Pn=["innerHTML"],Ln=["innerHTML"],Vn=["innerHTML"],Sn={key:4,class:"link-text"},Tn={class:"link-text-value"},Nn=p({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(e){return(t,n)=>(s(),_(E,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:h(()=>[d("article",$n,[typeof e.icon=="object"&&e.icon.wrap?(s(),u("div",yn,[k(J,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(s(),_(J,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(s(),u("div",{key:2,class:"icon",innerHTML:e.icon},null,8,Pn)):m("",!0),d("h2",{class:"title",innerHTML:e.title},null,8,Ln),e.details?(s(),u("p",{key:3,class:"details",innerHTML:e.details},null,8,Vn)):m("",!0),e.linkText?(s(),u("div",Sn,[d("p",Tn,[j(M(e.linkText)+" ",1),n[0]||(n[0]=d("span",{class:"vpi-arrow-right link-text-icon"},null,-1))])])):m("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),Mn=g(Nn,[["__scopeId","data-v-281d2434"]]),xn={key:0,class:"VPFeatures"},In={class:"container"},wn={class:"items"},An=p({__name:"VPFeatures",props:{features:{}},setup(e){const t=e,n=y(()=>{const a=t.features.length;if(a){if(a===2)return"grid-2";if(a===3)return"grid-3";if(a%3===0)return"grid-6";if(a>3)return"grid-4"}else return});return(a,o)=>e.features?(s(),u("div",xn,[d("div",In,[d("div",wn,[(s(!0),u(x,null,A(e.features,r=>(s(),u("div",{key:r.title,class:N(["item",[n.value]])},[k(Mn,{icon:r.icon,title:r.title,details:r.details,link:r.link,"link-text":r.linkText,rel:r.rel,target:r.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):m("",!0)}}),Cn=g(An,[["__scopeId","data-v-4a3c9473"]]),Hn=p({__name:"VPHomeFeatures",setup(e){const{frontmatter:t}=L();return(n,a)=>i(t).features?(s(),_(Cn,{key:0,class:"VPHomeFeatures",features:i(t).features},null,8,["features"])):m("",!0)}}),Bn=p({__name:"VPHomeContent",setup(e){const{width:t}=De({initialWidth:0,includeScrollbar:!1});return(n,a)=>(s(),u("div",{class:"vp-doc container",style:Pe(i(t)?{"--vp-offset":`calc(50% - ${i(t)/2}px)`}:{})},[c(n.$slots,"default",{},void 0,!0)],4))}}),En=g(Bn,[["__scopeId","data-v-b6816877"]]),Fn=p({__name:"VPHome",setup(e){const{frontmatter:t,theme:n}=L();return(a,o)=>{const r=W("Content");return s(),u("div",{class:N(["VPHome",{"external-link-icon-enabled":i(n).externalLinkIcon}])},[c(a.$slots,"home-hero-before",{},void 0,!0),k(gn,null,{"home-hero-info-before":h(()=>[c(a.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":h(()=>[c(a.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":h(()=>[c(a.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":h(()=>[c(a.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":h(()=>[c(a.$slots,"home-hero-image",{},void 0,!0)]),_:3}),c(a.$slots,"home-hero-after",{},void 0,!0),c(a.$slots,"home-features-before",{},void 0,!0),k(Hn),c(a.$slots,"home-features-after",{},void 0,!0),i(t).markdownStyles!==!1?(s(),_(En,{key:0},{default:h(()=>[k(r)]),_:1})):(s(),_(r,{key:1}))],2)}}}),Dn=g(Fn,[["__scopeId","data-v-436abcc8"]]),On={},Gn={class:"VPPage"};function Un(e,t){const n=W("Content");return s(),u("div",Gn,[c(e.$slots,"page-top"),k(n),c(e.$slots,"page-bottom")])}const jn=g(On,[["render",Un]]),zn=p({__name:"VPContent",setup(e){const{page:t,frontmatter:n}=L(),{hasSidebar:a}=D();return(o,r)=>(s(),u("div",{class:N(["VPContent",{"has-sidebar":i(a),"is-home":i(n).layout==="home"}]),id:"VPContent"},[i(t).isNotFound?c(o.$slots,"not-found",{key:0},()=>[k(rt)],!0):i(n).layout==="page"?(s(),_(jn,{key:1},{"page-top":h(()=>[c(o.$slots,"page-top",{},void 0,!0)]),"page-bottom":h(()=>[c(o.$slots,"page-bottom",{},void 0,!0)]),_:3})):i(n).layout==="home"?(s(),_(Dn,{key:2},{"home-hero-before":h(()=>[c(o.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":h(()=>[c(o.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":h(()=>[c(o.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":h(()=>[c(o.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":h(()=>[c(o.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":h(()=>[c(o.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":h(()=>[c(o.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":h(()=>[c(o.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":h(()=>[c(o.$slots,"home-features-after",{},void 0,!0)]),_:3})):i(n).layout&&i(n).layout!=="doc"?(s(),_(B(i(n).layout),{key:3})):(s(),_(an,{key:4},{"doc-top":h(()=>[c(o.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":h(()=>[c(o.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":h(()=>[c(o.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":h(()=>[c(o.$slots,"doc-before",{},void 0,!0)]),"doc-after":h(()=>[c(o.$slots,"doc-after",{},void 0,!0)]),"aside-top":h(()=>[c(o.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":h(()=>[c(o.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":h(()=>[c(o.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":h(()=>[c(o.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":h(()=>[c(o.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":h(()=>[c(o.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),Wn=g(zn,[["__scopeId","data-v-df015b7a"]]),Kn={class:"container"},qn=["innerHTML"],Rn=["innerHTML"],Jn=p({__name:"VPFooter",setup(e){const{theme:t,frontmatter:n}=L(),{hasSidebar:a}=D();return(o,r)=>i(t).footer&&i(n).footer!==!1?(s(),u("footer",{key:0,class:N(["VPFooter",{"has-sidebar":i(a)}])},[d("div",Kn,[i(t).footer.message?(s(),u("p",{key:0,class:"message",innerHTML:i(t).footer.message},null,8,qn)):m("",!0),i(t).footer.copyright?(s(),u("p",{key:1,class:"copyright",innerHTML:i(t).footer.copyright},null,8,Rn)):m("",!0)])],2)):m("",!0)}}),Xn=g(Jn,[["__scopeId","data-v-cea6e03e"]]);function Yn(){const{theme:e,frontmatter:t}=L(),n=$e([]),a=y(()=>n.value.length>0);return Y(()=>{n.value=me(t.value.outline??e.value.outline)}),{headers:n,hasLocalNav:a}}const Qn={class:"menu-text"},Zn={class:"header"},ea={class:"outline"},ta=p({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(e){const t=e,{theme:n}=L(),a=S(!1),o=S(0),r=S(),l=S();function v(b){var P;(P=r.value)!=null&&P.contains(b.target)||(a.value=!1)}F(a,b=>{if(b){document.addEventListener("click",v);return}document.removeEventListener("click",v)}),ie("Escape",()=>{a.value=!1}),Y(()=>{a.value=!1});function f(){a.value=!a.value,o.value=window.innerHeight+Math.min(window.scrollY-t.navHeight,0)}function $(b){b.target.classList.contains("outline-link")&&(l.value&&(l.value.style.transition="none"),Le(()=>{a.value=!1}))}function V(){a.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(b,P)=>(s(),u("div",{class:"VPLocalNavOutlineDropdown",style:Pe({"--vp-vh":o.value+"px"}),ref_key:"main",ref:r},[e.headers.length>0?(s(),u("button",{key:0,onClick:f,class:N({open:a.value})},[d("span",Qn,M(i(Me)(i(n))),1),P[0]||(P[0]=d("span",{class:"vpi-chevron-right icon"},null,-1))],2)):(s(),u("button",{key:1,onClick:V},M(i(n).returnToTopLabel||"Return to top"),1)),k(ue,{name:"flyout"},{default:h(()=>[a.value?(s(),u("div",{key:0,ref_key:"items",ref:l,class:"items",onClick:$},[d("div",Zn,[d("a",{class:"top-link",href:"#",onClick:V},M(i(n).returnToTopLabel||"Return to top"),1)]),d("div",ea,[k(xe,{headers:e.headers},null,8,["headers"])])],512)):m("",!0)]),_:1})],4))}}),na=g(ta,[["__scopeId","data-v-65f11ad7"]]),aa={class:"container"},oa=["aria-expanded"],sa={class:"menu-text"},ia=p({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(e){const{theme:t,frontmatter:n}=L(),{hasSidebar:a}=D(),{headers:o}=Yn(),{y:r}=Ve(),l=S(0);U(()=>{l.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),Y(()=>{o.value=me(n.value.outline??t.value.outline)});const v=y(()=>o.value.length===0),f=y(()=>v.value&&!a.value),$=y(()=>({VPLocalNav:!0,"has-sidebar":a.value,empty:v.value,fixed:f.value}));return(V,b)=>i(n).layout!=="home"&&(!f.value||i(r)>=l.value)?(s(),u("div",{key:0,class:N($.value)},[d("div",aa,[i(a)?(s(),u("button",{key:0,class:"menu","aria-expanded":e.open,"aria-controls":"VPSidebarNav",onClick:b[0]||(b[0]=P=>V.$emit("open-menu"))},[b[1]||(b[1]=d("span",{class:"vpi-align-left menu-icon"},null,-1)),d("span",sa,M(i(t).sidebarMenuLabel||"Menu"),1)],8,oa)):m("",!0),k(na,{headers:i(o),navHeight:l.value},null,8,["headers","navHeight"])])],2)):m("",!0)}}),ra=g(ia,[["__scopeId","data-v-42b4930c"]]);function la(){const e=S(!1);function t(){e.value=!0,window.addEventListener("resize",o)}function n(){e.value=!1,window.removeEventListener("resize",o)}function a(){e.value?n():t()}function o(){window.outerWidth>=768&&n()}const r=Q();return F(()=>r.path,n),{isScreenOpen:e,openScreen:t,closeScreen:n,toggleScreen:a}}const ca={},ua={class:"VPSwitch",type:"button",role:"switch"},da={class:"check"},va={key:0,class:"icon"};function fa(e,t){return s(),u("button",ua,[d("span",da,[e.$slots.default?(s(),u("span",va,[c(e.$slots,"default",{},void 0,!0)])):m("",!0)])])}const ha=g(ca,[["render",fa],["__scopeId","data-v-be020907"]]),ma=p({__name:"VPSwitchAppearance",setup(e){const{isDark:t,theme:n}=L(),a=Z("toggle-appearance",()=>{t.value=!t.value}),o=S("");return fe(()=>{o.value=t.value?n.value.lightModeSwitchTitle||"Switch to light theme":n.value.darkModeSwitchTitle||"Switch to dark theme"}),(r,l)=>(s(),_(ha,{title:o.value,class:"VPSwitchAppearance","aria-checked":i(t),onClick:i(a)},{default:h(()=>[...l[0]||(l[0]=[d("span",{class:"vpi-sun sun"},null,-1),d("span",{class:"vpi-moon moon"},null,-1)])]),_:1},8,["title","aria-checked","onClick"]))}}),pe=g(ma,[["__scopeId","data-v-0c13c3df"]]),pa={key:0,class:"VPNavBarAppearance"},ka=p({__name:"VPNavBarAppearance",setup(e){const{site:t}=L();return(n,a)=>i(t).appearance&&i(t).appearance!=="force-dark"&&i(t).appearance!=="force-auto"?(s(),u("div",pa,[k(pe)])):m("",!0)}}),_a=g(ka,[["__scopeId","data-v-7208450f"]]),ke=S();let Ie=!1,oe=0;function ba(e){const t=S(!1);if(ee){!Ie&&ga(),oe++;const n=F(ke,a=>{var o,r,l;a===e.el.value||(o=e.el.value)!=null&&o.contains(a)?(t.value=!0,(r=e.onFocus)==null||r.call(e)):(t.value=!1,(l=e.onBlur)==null||l.call(e))});ve(()=>{n(),oe--,oe||$a()})}return Oe(t)}function ga(){document.addEventListener("focusin",we),Ie=!0,ke.value=document.activeElement}function $a(){document.removeEventListener("focusin",we)}function we(){ke.value=document.activeElement}const ya={class:"VPMenuLink"},Pa=["innerHTML"],La=p({__name:"VPMenuLink",props:{item:{}},setup(e){const{page:t}=L();return(n,a)=>(s(),u("div",ya,[k(E,{class:N({active:i(z)(i(t).relativePath,e.item.activeMatch||e.item.link,!!e.item.activeMatch)}),href:e.item.link,target:e.item.target,rel:e.item.rel,"no-icon":e.item.noIcon},{default:h(()=>[d("span",{innerHTML:e.item.text},null,8,Pa)]),_:1},8,["class","href","target","rel","no-icon"])]))}}),te=g(La,[["__scopeId","data-v-adc65559"]]),Va={class:"VPMenuGroup"},Sa={key:0,class:"title"},Ta=p({__name:"VPMenuGroup",props:{text:{},items:{}},setup(e){return(t,n)=>(s(),u("div",Va,[e.text?(s(),u("p",Sa,M(e.text),1)):m("",!0),(s(!0),u(x,null,A(e.items,a=>(s(),u(x,null,["link"in a?(s(),_(te,{key:0,item:a},null,8,["item"])):m("",!0)],64))),256))]))}}),Na=g(Ta,[["__scopeId","data-v-2751c69e"]]),Ma={class:"VPMenu"},xa={key:0,class:"items"},Ia=p({__name:"VPMenu",props:{items:{}},setup(e){return(t,n)=>(s(),u("div",Ma,[e.items?(s(),u("div",xa,[(s(!0),u(x,null,A(e.items,a=>(s(),u(x,{key:JSON.stringify(a)},["link"in a?(s(),_(te,{key:0,item:a},null,8,["item"])):"component"in a?(s(),_(B(a.component),G({key:1,ref_for:!0},a.props),null,16)):(s(),_(Na,{key:2,text:a.text,items:a.items},null,8,["text","items"]))],64))),128))])):m("",!0),c(t.$slots,"default",{},void 0,!0)]))}}),wa=g(Ia,[["__scopeId","data-v-78767497"]]),Aa=["aria-expanded","aria-label"],Ca={key:0,class:"text"},Ha=["innerHTML"],Ba={key:1,class:"vpi-more-horizontal icon"},Ea={class:"menu"},Fa=p({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(e){const t=S(!1),n=S();ba({el:n,onBlur:a});function a(){t.value=!1}return(o,r)=>(s(),u("div",{class:"VPFlyout",ref_key:"el",ref:n,onMouseenter:r[1]||(r[1]=l=>t.value=!0),onMouseleave:r[2]||(r[2]=l=>t.value=!1)},[d("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":t.value,"aria-label":e.label,onClick:r[0]||(r[0]=l=>t.value=!t.value)},[e.button||e.icon?(s(),u("span",Ca,[e.icon?(s(),u("span",{key:0,class:N([e.icon,"option-icon"])},null,2)):m("",!0),e.button?(s(),u("span",{key:1,innerHTML:e.button},null,8,Ha)):m("",!0),r[3]||(r[3]=d("span",{class:"vpi-chevron-down text-icon"},null,-1))])):(s(),u("span",Ba))],8,Aa),d("div",Ea,[k(wa,{items:e.items},{default:h(()=>[c(o.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),_e=g(Fa,[["__scopeId","data-v-500c8661"]]),Da=["href","aria-label","innerHTML"],Oa=p({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(e){const t=e,n=S();U(async()=>{var r;await Le();const o=(r=n.value)==null?void 0:r.children[0];o instanceof HTMLElement&&o.className.startsWith("vpi-social-")&&(getComputedStyle(o).maskImage||getComputedStyle(o).webkitMaskImage)==="none"&&o.style.setProperty("--icon",`url('https://api.iconify.design/simple-icons/${t.icon}.svg')`)});const a=y(()=>typeof t.icon=="object"?t.icon.svg:``);return(o,r)=>(s(),u("a",{ref_key:"el",ref:n,class:"VPSocialLink no-icon",href:e.link,"aria-label":e.ariaLabel??(typeof e.icon=="string"?e.icon:""),target:"_blank",rel:"noopener",innerHTML:a.value},null,8,Da))}}),Ga=g(Oa,[["__scopeId","data-v-0890861b"]]),Ua={class:"VPSocialLinks"},ja=p({__name:"VPSocialLinks",props:{links:{}},setup(e){return(t,n)=>(s(),u("div",Ua,[(s(!0),u(x,null,A(e.links,({link:a,icon:o,ariaLabel:r})=>(s(),_(Ga,{key:a,icon:o,link:a,ariaLabel:r},null,8,["icon","link","ariaLabel"]))),128))]))}}),be=g(ja,[["__scopeId","data-v-a84d2f45"]]),za={key:0,class:"group translations"},Wa={class:"trans-title"},Ka={key:1,class:"group"},qa={class:"item appearance"},Ra={class:"label"},Ja={class:"appearance-action"},Xa={key:2,class:"group"},Ya={class:"item social-links"},Qa=p({__name:"VPNavBarExtra",setup(e){const{site:t,theme:n}=L(),{localeLinks:a,currentLang:o}=q({correspondingLink:!0}),r=y(()=>a.value.length&&o.value.label||t.value.appearance||n.value.socialLinks);return(l,v)=>r.value?(s(),_(_e,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:h(()=>[i(a).length&&i(o).label?(s(),u("div",za,[d("p",Wa,M(i(o).label),1),(s(!0),u(x,null,A(i(a),f=>(s(),_(te,{key:f.link,item:f},null,8,["item"]))),128))])):m("",!0),i(t).appearance&&i(t).appearance!=="force-dark"&&i(t).appearance!=="force-auto"?(s(),u("div",Ka,[d("div",qa,[d("p",Ra,M(i(n).darkModeSwitchLabel||"Appearance"),1),d("div",Ja,[k(pe)])])])):m("",!0),i(n).socialLinks?(s(),u("div",Xa,[d("div",Ya,[k(be,{class:"social-links-list",links:i(n).socialLinks},null,8,["links"])])])):m("",!0)]),_:1})):m("",!0)}}),Za=g(Qa,[["__scopeId","data-v-c2346f84"]]),eo=["aria-expanded"],to=p({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(e){return(t,n)=>(s(),u("button",{type:"button",class:N(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:n[0]||(n[0]=a=>t.$emit("click"))},[...n[1]||(n[1]=[d("span",{class:"container"},[d("span",{class:"top"}),d("span",{class:"middle"}),d("span",{class:"bottom"})],-1)])],10,eo))}}),no=g(to,[["__scopeId","data-v-c0ff09b3"]]),ao=["innerHTML"],oo=p({__name:"VPNavBarMenuLink",props:{item:{}},setup(e){const{page:t}=L();return(n,a)=>(s(),_(E,{class:N({VPNavBarMenuLink:!0,active:i(z)(i(t).relativePath,e.item.activeMatch||e.item.link,!!e.item.activeMatch)}),href:e.item.link,target:e.item.target,rel:e.item.rel,"no-icon":e.item.noIcon,tabindex:"0"},{default:h(()=>[d("span",{innerHTML:e.item.text},null,8,ao)]),_:1},8,["class","href","target","rel","no-icon"]))}}),so=g(oo,[["__scopeId","data-v-df2fe9fb"]]),io=p({__name:"VPNavBarMenuGroup",props:{item:{}},setup(e){const t=e,{page:n}=L(),a=r=>"component"in r?!1:"link"in r?z(n.value.relativePath,r.link,!!t.item.activeMatch):r.items.some(a),o=y(()=>a(t.item));return(r,l)=>(s(),_(_e,{class:N({VPNavBarMenuGroup:!0,active:i(z)(i(n).relativePath,e.item.activeMatch,!!e.item.activeMatch)||o.value}),button:e.item.text,items:e.item.items},null,8,["class","button","items"]))}}),ro={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},lo=p({__name:"VPNavBarMenu",setup(e){const{theme:t}=L();return(n,a)=>i(t).nav?(s(),u("nav",ro,[a[0]||(a[0]=d("span",{id:"main-nav-aria-label",class:"visually-hidden"}," Main Navigation ",-1)),(s(!0),u(x,null,A(i(t).nav,o=>(s(),u(x,{key:JSON.stringify(o)},["link"in o?(s(),_(so,{key:0,item:o},null,8,["item"])):"component"in o?(s(),_(B(o.component),G({key:1,ref_for:!0},o.props),null,16)):(s(),_(io,{key:2,item:o},null,8,["item"]))],64))),128))])):m("",!0)}}),co=g(lo,[["__scopeId","data-v-a8c7b9cb"]]);function uo(e){const{localeIndex:t,theme:n}=L();function a(o){var I,w,C;const r=o.split("."),l=(I=n.value.search)==null?void 0:I.options,v=l&&typeof l=="object",f=v&&((C=(w=l.locales)==null?void 0:w[t.value])==null?void 0:C.translations)||null,$=v&&l.translations||null;let V=f,b=$,P=e;const T=r.pop();for(const H of r){let O=null;const K=P==null?void 0:P[H];K&&(O=P=K);const ne=b==null?void 0:b[H];ne&&(O=b=ne);const ae=V==null?void 0:V[H];ae&&(O=V=ae),K||(P=O),ne||(b=O),ae||(V=O)}return(V==null?void 0:V[T])??(b==null?void 0:b[T])??(P==null?void 0:P[T])??""}return a}const vo=["aria-label"],fo={class:"DocSearch-Button-Container"},ho={class:"DocSearch-Button-Placeholder"},ge=p({__name:"VPNavBarSearchButton",setup(e){const n=uo({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(a,o)=>(s(),u("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":i(n)("button.buttonAriaLabel")},[d("span",fo,[o[0]||(o[0]=d("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1)),d("span",ho,M(i(n)("button.buttonText")),1)]),o[1]||(o[1]=d("span",{class:"DocSearch-Button-Keys"},[d("kbd",{class:"DocSearch-Button-Key"}),d("kbd",{class:"DocSearch-Button-Key"},"K")],-1))],8,vo))}}),mo={class:"VPNavBarSearch"},po={id:"local-search"},ko={key:1,id:"docsearch"},_o=p({__name:"VPNavBarSearch",setup(e){const t=Ge(()=>Ue(()=>import("./VPLocalSearchBox.DxDk0WUu.js"),__vite__mapDeps([0,1]))),n=()=>null,{theme:a}=L(),o=S(!1),r=S(!1);U(()=>{});function l(){o.value||(o.value=!0,setTimeout(v,16))}function v(){const b=new Event("keydown");b.key="k",b.metaKey=!0,window.dispatchEvent(b),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||v()},16)}function f(b){const P=b.target,T=P.tagName;return P.isContentEditable||T==="INPUT"||T==="SELECT"||T==="TEXTAREA"}const $=S(!1);ie("k",b=>{(b.ctrlKey||b.metaKey)&&(b.preventDefault(),$.value=!0)}),ie("/",b=>{f(b)||(b.preventDefault(),$.value=!0)});const V="local";return(b,P)=>{var T;return s(),u("div",mo,[i(V)==="local"?(s(),u(x,{key:0},[$.value?(s(),_(i(t),{key:0,onClose:P[0]||(P[0]=I=>$.value=!1)})):m("",!0),d("div",po,[k(ge,{onClick:P[1]||(P[1]=I=>$.value=!0)})])],64)):i(V)==="algolia"?(s(),u(x,{key:1},[o.value?(s(),_(i(n),{key:0,algolia:((T=i(a).search)==null?void 0:T.options)??i(a).algolia,onVnodeBeforeMount:P[2]||(P[2]=I=>r.value=!0)},null,8,["algolia"])):m("",!0),r.value?m("",!0):(s(),u("div",ko,[k(ge,{onClick:l})]))],64)):m("",!0)])}}}),bo=p({__name:"VPNavBarSocialLinks",setup(e){const{theme:t}=L();return(n,a)=>i(t).socialLinks?(s(),_(be,{key:0,class:"VPNavBarSocialLinks",links:i(t).socialLinks},null,8,["links"])):m("",!0)}}),go=g(bo,[["__scopeId","data-v-1a196069"]]),$o=["href","rel","target"],yo=["innerHTML"],Po={key:2},Lo=p({__name:"VPNavBarTitle",setup(e){const{site:t,theme:n}=L(),{hasSidebar:a}=D(),{currentLang:o}=q(),r=y(()=>{var f;return typeof n.value.logoLink=="string"?n.value.logoLink:(f=n.value.logoLink)==null?void 0:f.link}),l=y(()=>{var f;return typeof n.value.logoLink=="string"||(f=n.value.logoLink)==null?void 0:f.rel}),v=y(()=>{var f;return typeof n.value.logoLink=="string"||(f=n.value.logoLink)==null?void 0:f.target});return(f,$)=>(s(),u("div",{class:N(["VPNavBarTitle",{"has-sidebar":i(a)}])},[d("a",{class:"title",href:r.value??i(he)(i(o).link),rel:l.value,target:v.value},[c(f.$slots,"nav-bar-title-before",{},void 0,!0),i(n).logo?(s(),_(J,{key:0,class:"logo",image:i(n).logo},null,8,["image"])):m("",!0),i(n).siteTitle?(s(),u("span",{key:1,innerHTML:i(n).siteTitle},null,8,yo)):i(n).siteTitle===void 0?(s(),u("span",Po,M(i(t).title),1)):m("",!0),c(f.$slots,"nav-bar-title-after",{},void 0,!0)],8,$o)],2))}}),Vo=g(Lo,[["__scopeId","data-v-d3560e07"]]),So={class:"items"},To={class:"title"},No=p({__name:"VPNavBarTranslations",setup(e){const{theme:t}=L(),{localeLinks:n,currentLang:a}=q({correspondingLink:!0});return(o,r)=>i(n).length&&i(a).label?(s(),_(_e,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:i(t).langMenuLabel||"Change language"},{default:h(()=>[d("div",So,[d("p",To,M(i(a).label),1),(s(!0),u(x,null,A(i(n),l=>(s(),_(te,{key:l.link,item:l},null,8,["item"]))),128))])]),_:1},8,["label"])):m("",!0)}}),Mo=g(No,[["__scopeId","data-v-f7e0dd34"]]),xo={class:"wrapper"},Io={class:"container"},wo={class:"title"},Ao={class:"content"},Co={class:"content-body"},Ho=p({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(e){const t=e,{y:n}=Ve(),{hasSidebar:a}=D(),{frontmatter:o}=L(),r=S({});return fe(()=>{r.value={"has-sidebar":a.value,home:o.value.layout==="home",top:n.value===0,"screen-open":t.isScreenOpen}}),(l,v)=>(s(),u("div",{class:N(["VPNavBar",r.value])},[d("div",xo,[d("div",Io,[d("div",wo,[k(Vo,null,{"nav-bar-title-before":h(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":h(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),d("div",Ao,[d("div",Co,[c(l.$slots,"nav-bar-content-before",{},void 0,!0),k(_o,{class:"search"}),k(co,{class:"menu"}),k(Mo,{class:"translations"}),k(_a,{class:"appearance"}),k(go,{class:"social-links"}),k(Za,{class:"extra"}),c(l.$slots,"nav-bar-content-after",{},void 0,!0),k(no,{class:"hamburger",active:e.isScreenOpen,onClick:v[0]||(v[0]=f=>l.$emit("toggle-screen"))},null,8,["active"])])])])]),v[1]||(v[1]=d("div",{class:"divider"},[d("div",{class:"divider-line"})],-1))],2))}}),Bo=g(Ho,[["__scopeId","data-v-d92360c8"]]),Eo={key:0,class:"VPNavScreenAppearance"},Fo={class:"text"},Do=p({__name:"VPNavScreenAppearance",setup(e){const{site:t,theme:n}=L();return(a,o)=>i(t).appearance&&i(t).appearance!=="force-dark"&&i(t).appearance!=="force-auto"?(s(),u("div",Eo,[d("p",Fo,M(i(n).darkModeSwitchLabel||"Appearance"),1),k(pe)])):m("",!0)}}),Oo=g(Do,[["__scopeId","data-v-5f5f718e"]]),Go=["innerHTML"],Uo=p({__name:"VPNavScreenMenuLink",props:{item:{}},setup(e){const t=Z("close-screen");return(n,a)=>(s(),_(E,{class:"VPNavScreenMenuLink",href:e.item.link,target:e.item.target,rel:e.item.rel,"no-icon":e.item.noIcon,onClick:i(t)},{default:h(()=>[d("span",{innerHTML:e.item.text},null,8,Go)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),jo=g(Uo,[["__scopeId","data-v-af7e055c"]]),zo=["innerHTML"],Wo=p({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(e){const t=Z("close-screen");return(n,a)=>(s(),_(E,{class:"VPNavScreenMenuGroupLink",href:e.item.link,target:e.item.target,rel:e.item.rel,"no-icon":e.item.noIcon,onClick:i(t)},{default:h(()=>[d("span",{innerHTML:e.item.text},null,8,zo)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),Ae=g(Wo,[["__scopeId","data-v-a18eb207"]]),Ko={class:"VPNavScreenMenuGroupSection"},qo={key:0,class:"title"},Ro=p({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(e){return(t,n)=>(s(),u("div",Ko,[e.text?(s(),u("p",qo,M(e.text),1)):m("",!0),(s(!0),u(x,null,A(e.items,a=>(s(),_(Ae,{key:a.text,item:a},null,8,["item"]))),128))]))}}),Jo=g(Ro,[["__scopeId","data-v-18902326"]]),Xo=["aria-controls","aria-expanded"],Yo=["innerHTML"],Qo=["id"],Zo={key:0,class:"item"},es={key:1,class:"item"},ts={key:2,class:"group"},ns=p({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(e){const t=e,n=S(!1),a=y(()=>`NavScreenGroup-${t.text.replace(" ","-").toLowerCase()}`);function o(){n.value=!n.value}return(r,l)=>(s(),u("div",{class:N(["VPNavScreenMenuGroup",{open:n.value}])},[d("button",{class:"button","aria-controls":a.value,"aria-expanded":n.value,onClick:o},[d("span",{class:"button-text",innerHTML:e.text},null,8,Yo),l[0]||(l[0]=d("span",{class:"vpi-plus button-icon"},null,-1))],8,Xo),d("div",{id:a.value,class:"items"},[(s(!0),u(x,null,A(e.items,v=>(s(),u(x,{key:JSON.stringify(v)},["link"in v?(s(),u("div",Zo,[k(Ae,{item:v},null,8,["item"])])):"component"in v?(s(),u("div",es,[(s(),_(B(v.component),G({ref_for:!0},v.props,{"screen-menu":""}),null,16))])):(s(),u("div",ts,[k(Jo,{text:v.text,items:v.items},null,8,["text","items"])]))],64))),128))],8,Qo)],2))}}),as=g(ns,[["__scopeId","data-v-2bf06c47"]]),os={key:0,class:"VPNavScreenMenu"},ss=p({__name:"VPNavScreenMenu",setup(e){const{theme:t}=L();return(n,a)=>i(t).nav?(s(),u("nav",os,[(s(!0),u(x,null,A(i(t).nav,o=>(s(),u(x,{key:JSON.stringify(o)},["link"in o?(s(),_(jo,{key:0,item:o},null,8,["item"])):"component"in o?(s(),_(B(o.component),G({key:1,ref_for:!0},o.props,{"screen-menu":""}),null,16)):(s(),_(as,{key:2,text:o.text||"",items:o.items},null,8,["text","items"]))],64))),128))])):m("",!0)}}),is=p({__name:"VPNavScreenSocialLinks",setup(e){const{theme:t}=L();return(n,a)=>i(t).socialLinks?(s(),_(be,{key:0,class:"VPNavScreenSocialLinks",links:i(t).socialLinks},null,8,["links"])):m("",!0)}}),rs={class:"list"},ls=p({__name:"VPNavScreenTranslations",setup(e){const{localeLinks:t,currentLang:n}=q({correspondingLink:!0}),a=S(!1);function o(){a.value=!a.value}return(r,l)=>i(t).length&&i(n).label?(s(),u("div",{key:0,class:N(["VPNavScreenTranslations",{open:a.value}])},[d("button",{class:"title",onClick:o},[l[0]||(l[0]=d("span",{class:"vpi-languages icon lang"},null,-1)),j(" "+M(i(n).label)+" ",1),l[1]||(l[1]=d("span",{class:"vpi-chevron-down icon chevron"},null,-1))]),d("ul",rs,[(s(!0),u(x,null,A(i(t),v=>(s(),u("li",{key:v.link,class:"item"},[k(E,{class:"link",href:v.link},{default:h(()=>[j(M(v.text),1)]),_:2},1032,["href"])]))),128))])],2)):m("",!0)}}),cs=g(ls,[["__scopeId","data-v-842a3317"]]),us={class:"container"},ds=p({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(e){const t=S(null),n=Se(ee?document.body:null);return(a,o)=>(s(),_(ue,{name:"fade",onEnter:o[0]||(o[0]=r=>n.value=!0),onAfterLeave:o[1]||(o[1]=r=>n.value=!1)},{default:h(()=>[e.open?(s(),u("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:t,id:"VPNavScreen"},[d("div",us,[c(a.$slots,"nav-screen-content-before",{},void 0,!0),k(ss,{class:"menu"}),k(cs,{class:"translations"}),k(Oo,{class:"appearance"}),k(is,{class:"social-links"}),c(a.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):m("",!0)]),_:3}))}}),vs=g(ds,[["__scopeId","data-v-424bec18"]]),fs={key:0,class:"VPNav"},hs=p({__name:"VPNav",setup(e){const{isScreenOpen:t,closeScreen:n,toggleScreen:a}=la(),{frontmatter:o}=L(),r=y(()=>o.value.navbar!==!1);return Te("close-screen",n),X(()=>{ee&&document.documentElement.classList.toggle("hide-nav",!r.value)}),(l,v)=>r.value?(s(),u("header",fs,[k(Bo,{"is-screen-open":i(t),onToggleScreen:i(a)},{"nav-bar-title-before":h(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":h(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":h(()=>[c(l.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":h(()=>[c(l.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),k(vs,{open:i(t)},{"nav-screen-content-before":h(()=>[c(l.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":h(()=>[c(l.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):m("",!0)}}),ms=g(hs,[["__scopeId","data-v-39691f49"]]),ps=["role","tabindex"],ks={key:1,class:"items"},_s=p({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(e){const t=e,{collapsed:n,collapsible:a,isLink:o,isActiveLink:r,hasActiveLink:l,hasChildren:v,toggle:f}=dt(y(()=>t.item)),$=y(()=>v.value?"section":"div"),V=y(()=>o.value?"a":"div"),b=y(()=>v.value?t.depth+2===7?"p":`h${t.depth+2}`:"p"),P=y(()=>o.value?void 0:"button"),T=y(()=>[[`level-${t.depth}`],{collapsible:a.value},{collapsed:n.value},{"is-link":o.value},{"is-active":r.value},{"has-active":l.value}]);function I(C){"key"in C&&C.key!=="Enter"||!t.item.link&&f()}function w(){t.item.link&&f()}return(C,H)=>{const O=W("VPSidebarItem",!0);return s(),_(B($.value),{class:N(["VPSidebarItem",T.value])},{default:h(()=>[e.item.text?(s(),u("div",G({key:0,class:"item",role:P.value},je(e.item.items?{click:I,keydown:I}:{},!0),{tabindex:e.item.items&&0}),[H[1]||(H[1]=d("div",{class:"indicator"},null,-1)),e.item.link?(s(),_(E,{key:0,tag:V.value,class:"link",href:e.item.link,rel:e.item.rel,target:e.item.target},{default:h(()=>[(s(),_(B(b.value),{class:"text",innerHTML:e.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(s(),_(B(b.value),{key:1,class:"text",innerHTML:e.item.text},null,8,["innerHTML"])),e.item.collapsed!=null&&e.item.items&&e.item.items.length?(s(),u("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:w,onKeydown:ze(w,["enter"]),tabindex:"0"},[...H[0]||(H[0]=[d("span",{class:"vpi-chevron-right caret-icon"},null,-1)])],32)):m("",!0)],16,ps)):m("",!0),e.item.items&&e.item.items.length?(s(),u("div",ks,[e.depth<5?(s(!0),u(x,{key:0},A(e.item.items,K=>(s(),_(O,{key:K.text,item:K,depth:e.depth+1},null,8,["item","depth"]))),128)):m("",!0)])):m("",!0)]),_:1},8,["class"])}}}),bs=g(_s,[["__scopeId","data-v-df85d8e3"]]),gs=p({__name:"VPSidebarGroup",props:{items:{}},setup(e){const t=S(!0);let n=null;return U(()=>{n=setTimeout(()=>{n=null,t.value=!1},300)}),We(()=>{n!=null&&(clearTimeout(n),n=null)}),(a,o)=>(s(!0),u(x,null,A(e.items,r=>(s(),u("div",{key:r.text,class:N(["group",{"no-transition":t.value}])},[k(bs,{item:r,depth:0},null,8,["item"])],2))),128))}}),$s=g(gs,[["__scopeId","data-v-60f157c0"]]),ys={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},Ps=p({__name:"VPSidebar",props:{open:{type:Boolean}},setup(e){const{sidebarGroups:t,hasSidebar:n}=D(),a=e,o=S(null),r=Se(ee?document.body:null);F([a,o],()=>{var v;a.open?(r.value=!0,(v=o.value)==null||v.focus()):r.value=!1},{immediate:!0,flush:"post"});const l=S(0);return F(t,()=>{l.value+=1},{deep:!0}),(v,f)=>i(n)?(s(),u("aside",{key:0,class:N(["VPSidebar",{open:e.open}]),ref_key:"navEl",ref:o,onClick:f[0]||(f[0]=Ke(()=>{},["stop"]))},[f[2]||(f[2]=d("div",{class:"curtain"},null,-1)),d("nav",ys,[f[1]||(f[1]=d("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),c(v.$slots,"sidebar-nav-before",{},void 0,!0),(s(),_($s,{items:i(t),key:l.value},null,8,["items"])),c(v.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):m("",!0)}}),Ls=g(Ps,[["__scopeId","data-v-aee49e2a"]]),Vs=p({__name:"VPSkipLink",setup(e){const{theme:t}=L(),n=Q(),a=S();F(()=>n.path,()=>a.value.focus());function o({target:r}){const l=document.getElementById(decodeURIComponent(r.hash).slice(1));if(l){const v=()=>{l.removeAttribute("tabindex"),l.removeEventListener("blur",v)};l.setAttribute("tabindex","-1"),l.addEventListener("blur",v),l.focus(),window.scrollTo(0,0)}}return(r,l)=>(s(),u(x,null,[d("span",{ref_key:"backToTop",ref:a,tabindex:"-1"},null,512),d("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:o},M(i(t).skipToContentLabel||"Skip to content"),1)],64))}}),Ss=g(Vs,[["__scopeId","data-v-639cd3d8"]]),Ts=p({__name:"Layout",setup(e){const{isOpen:t,open:n,close:a}=D(),o=Q();F(()=>o.path,a),ut(t,a);const{frontmatter:r}=L(),l=qe(),v=y(()=>!!l["home-hero-image"]);return Te("hero-image-slot-exists",v),(f,$)=>{const V=W("Content");return i(r).layout!==!1?(s(),u("div",{key:0,class:N(["Layout",i(r).pageClass])},[c(f.$slots,"layout-top",{},void 0,!0),k(Ss),k(Ye,{class:"backdrop",show:i(t),onClick:i(a)},null,8,["show","onClick"]),k(ms,null,{"nav-bar-title-before":h(()=>[c(f.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":h(()=>[c(f.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":h(()=>[c(f.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":h(()=>[c(f.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":h(()=>[c(f.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":h(()=>[c(f.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),k(ra,{open:i(t),onOpenMenu:i(n)},null,8,["open","onOpenMenu"]),k(Ls,{open:i(t)},{"sidebar-nav-before":h(()=>[c(f.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":h(()=>[c(f.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),k(Wn,null,{"page-top":h(()=>[c(f.$slots,"page-top",{},void 0,!0)]),"page-bottom":h(()=>[c(f.$slots,"page-bottom",{},void 0,!0)]),"not-found":h(()=>[c(f.$slots,"not-found",{},void 0,!0)]),"home-hero-before":h(()=>[c(f.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":h(()=>[c(f.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":h(()=>[c(f.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":h(()=>[c(f.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":h(()=>[c(f.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":h(()=>[c(f.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":h(()=>[c(f.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":h(()=>[c(f.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":h(()=>[c(f.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":h(()=>[c(f.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":h(()=>[c(f.$slots,"doc-before",{},void 0,!0)]),"doc-after":h(()=>[c(f.$slots,"doc-after",{},void 0,!0)]),"doc-top":h(()=>[c(f.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":h(()=>[c(f.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":h(()=>[c(f.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":h(()=>[c(f.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":h(()=>[c(f.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":h(()=>[c(f.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":h(()=>[c(f.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":h(()=>[c(f.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),k(Xn),c(f.$slots,"layout-bottom",{},void 0,!0)],2)):(s(),_(V,{key:1}))}}}),Ns=g(Ts,[["__scopeId","data-v-ecfbf7a9"]]),xs={Layout:Ns,enhanceApp:({app:e})=>{e.component("Badge",Re)}};export{uo as c,xs as t,L as u}; +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/chunks/VPLocalSearchBox.CrvgDWgJ.js","assets/chunks/framework.DEqXEGcv.js"])))=>i.map(i=>d[i]); +import{d as p,c as u,r as c,n as N,o as s,a as j,t as M,b as _,w as h,T as ue,e as m,_ as g,u as Ce,i as He,f as Be,g as de,h as y,j as d,k as i,l as z,m as se,p as S,q as F,s as X,v as U,x as ve,y as fe,z as Ee,A as Fe,F as x,B as A,C as W,D as Y,E as k,G as $e,H as B,I as ye,J as Q,K as G,L as Z,M as De,N as Pe,O as ie,P as Le,Q as Ve,R as ee,S as Oe,U as Ge,V as Ue,W as Se,X as Te,Y as je,Z as ze,$ as We,a0 as Ke,a1 as qe}from"./framework.DEqXEGcv.js";const Re=p({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(e){return(t,n)=>(s(),u("span",{class:N(["VPBadge",e.type])},[c(t.$slots,"default",{},()=>[j(M(e.text),1)])],2))}}),Je={key:0,class:"VPBackdrop"},Xe=p({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(e){return(t,n)=>(s(),_(ue,{name:"fade"},{default:h(()=>[e.show?(s(),u("div",Je)):m("",!0)]),_:1}))}}),Ye=g(Xe,[["__scopeId","data-v-f6932a82"]]),L=Ce;function Qe(e,t){let n,a=!1;return()=>{n&&clearTimeout(n),a?n=setTimeout(e,t):(e(),(a=!0)&&setTimeout(()=>a=!1,t))}}function re(e){return e.startsWith("/")?e:`/${e}`}function he(e){const{pathname:t,search:n,hash:a,protocol:o}=new URL(e,"http://a.com");if(He(e)||e.startsWith("#")||!o.startsWith("http")||!Be(t))return e;const{site:r}=L(),l=t.endsWith("/")||t.endsWith(".html")?e:e.replace(/(?:(^\.+)\/)?.*$/,`$1${t.replace(/(\.md)?$/,r.value.cleanUrls?"":".html")}${n}${a}`);return de(l)}function q({correspondingLink:e=!1}={}){const{site:t,localeIndex:n,page:a,theme:o,hash:r}=L(),l=y(()=>{var f,$;return{label:(f=t.value.locales[n.value])==null?void 0:f.label,link:(($=t.value.locales[n.value])==null?void 0:$.link)||(n.value==="root"?"/":`/${n.value}/`)}});return{localeLinks:y(()=>Object.entries(t.value.locales).flatMap(([f,$])=>l.value.label===$.label?[]:{text:$.label,link:Ze($.link||(f==="root"?"/":`/${f}/`),o.value.i18nRouting!==!1&&e,a.value.relativePath.slice(l.value.link.length-1),!t.value.cleanUrls)+r.value})),currentLang:l}}function Ze(e,t,n,a){return t?e.replace(/\/$/,"")+re(n.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,a?".html":"")):e}const et={class:"NotFound"},tt={class:"code"},nt={class:"title"},at={class:"quote"},ot={class:"action"},st=["href","aria-label"],it=p({__name:"NotFound",setup(e){const{theme:t}=L(),{currentLang:n}=q();return(a,o)=>{var r,l,v,f,$;return s(),u("div",et,[d("p",tt,M(((r=i(t).notFound)==null?void 0:r.code)??"404"),1),d("h1",nt,M(((l=i(t).notFound)==null?void 0:l.title)??"PAGE NOT FOUND"),1),o[0]||(o[0]=d("div",{class:"divider"},null,-1)),d("blockquote",at,M(((v=i(t).notFound)==null?void 0:v.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),d("div",ot,[d("a",{class:"link",href:i(de)(i(n).link),"aria-label":((f=i(t).notFound)==null?void 0:f.linkLabel)??"go to home"},M((($=i(t).notFound)==null?void 0:$.linkText)??"Take me home"),9,st)])])}}}),rt=g(it,[["__scopeId","data-v-c827a85d"]]);function Ne(e,t){if(Array.isArray(e))return R(e);if(e==null)return[];t=re(t);const n=Object.keys(e).sort((o,r)=>r.split("/").length-o.split("/").length).find(o=>t.startsWith(re(o))),a=n?e[n]:[];return Array.isArray(a)?R(a):R(a.items,a.base)}function lt(e){const t=[];let n=0;for(const a in e){const o=e[a];if(o.items){n=t.push(o);continue}t[n]||t.push({items:[]}),t[n].items.push(o)}return t}function ct(e){const t=[];function n(a){for(const o of a)o.text&&o.link&&t.push({text:o.text,link:o.link,docFooterText:o.docFooterText}),o.items&&n(o.items)}return n(e),t}function le(e,t){return Array.isArray(t)?t.some(n=>le(e,n)):z(e,t.link)?!0:t.items?le(e,t.items):!1}function R(e,t){return[...e].map(n=>{const a={...n},o=a.base||t;return o&&a.link&&(a.link=o+a.link),a.items&&(a.items=R(a.items,o)),a})}function D(){const{frontmatter:e,page:t,theme:n}=L(),a=se("(min-width: 960px)"),o=S(!1),r=y(()=>{const w=n.value.sidebar,C=t.value.relativePath;return w?Ne(w,C):[]}),l=S(r.value);F(r,(w,C)=>{JSON.stringify(w)!==JSON.stringify(C)&&(l.value=r.value)});const v=y(()=>e.value.sidebar!==!1&&l.value.length>0&&e.value.layout!=="home"),f=y(()=>$?e.value.aside==null?n.value.aside==="left":e.value.aside==="left":!1),$=y(()=>e.value.layout==="home"?!1:e.value.aside!=null?!!e.value.aside:n.value.aside!==!1),V=y(()=>v.value&&a.value),b=y(()=>v.value?lt(l.value):[]);function P(){o.value=!0}function T(){o.value=!1}function I(){o.value?T():P()}return{isOpen:o,sidebar:l,sidebarGroups:b,hasSidebar:v,hasAside:$,leftAside:f,isSidebarEnabled:V,open:P,close:T,toggle:I}}function ut(e,t){let n;X(()=>{n=e.value?document.activeElement:void 0}),U(()=>{window.addEventListener("keyup",a)}),ve(()=>{window.removeEventListener("keyup",a)});function a(o){o.key==="Escape"&&e.value&&(t(),n==null||n.focus())}}function dt(e){const{page:t,hash:n}=L(),a=S(!1),o=y(()=>e.value.collapsed!=null),r=y(()=>!!e.value.link),l=S(!1),v=()=>{l.value=z(t.value.relativePath,e.value.link)};F([t,e,n],v),U(v);const f=y(()=>l.value?!0:e.value.items?le(t.value.relativePath,e.value.items):!1),$=y(()=>!!(e.value.items&&e.value.items.length));X(()=>{a.value=!!(o.value&&e.value.collapsed)}),fe(()=>{(l.value||f.value)&&(a.value=!1)});function V(){o.value&&(a.value=!a.value)}return{collapsed:a,collapsible:o,isLink:r,isActiveLink:l,hasActiveLink:f,hasChildren:$,toggle:V}}function vt(){const{hasSidebar:e}=D(),t=se("(min-width: 960px)"),n=se("(min-width: 1280px)");return{isAsideEnabled:y(()=>!n.value&&!t.value?!1:e.value?n.value:t.value)}}const ft=/\b(?:VPBadge|header-anchor|footnote-ref|ignore-header)\b/,ce=[];function Me(e){return typeof e.outline=="object"&&!Array.isArray(e.outline)&&e.outline.label||e.outlineTitle||"On this page"}function me(e){const t=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(n=>n.id&&n.hasChildNodes()).map(n=>{const a=Number(n.tagName[1]);return{element:n,title:ht(n),link:"#"+n.id,level:a}});return mt(t,e)}function ht(e){let t="";for(const n of e.childNodes)if(n.nodeType===1){if(ft.test(n.className))continue;t+=n.textContent}else n.nodeType===3&&(t+=n.textContent);return t.trim()}function mt(e,t){if(t===!1)return[];const n=(typeof t=="object"&&!Array.isArray(t)?t.level:t)||2,[a,o]=typeof n=="number"?[n,n]:n==="deep"?[2,6]:n;return _t(e,a,o)}function pt(e,t){const{isAsideEnabled:n}=vt(),a=Qe(r,100);let o=null;U(()=>{requestAnimationFrame(r),window.addEventListener("scroll",a)}),Ee(()=>{l(location.hash)}),ve(()=>{window.removeEventListener("scroll",a)});function r(){if(!n.value)return;const v=window.scrollY,f=window.innerHeight,$=document.body.offsetHeight,V=Math.abs(v+f-$)<1,b=ce.map(({element:T,link:I})=>({link:I,top:kt(T)})).filter(({top:T})=>!Number.isNaN(T)).sort((T,I)=>T.top-I.top);if(!b.length){l(null);return}if(v<1){l(null);return}if(V){l(b[b.length-1].link);return}let P=null;for(const{link:T,top:I}of b){if(I>v+Fe()+4)break;P=T}l(P)}function l(v){o&&o.classList.remove("active"),v==null?o=null:o=e.value.querySelector(`a[href="${decodeURIComponent(v)}"]`);const f=o;f?(f.classList.add("active"),t.value.style.top=f.offsetTop+39+"px",t.value.style.opacity="1"):(t.value.style.top="33px",t.value.style.opacity="0")}}function kt(e){let t=0;for(;e!==document.body;){if(e===null)return NaN;t+=e.offsetTop,e=e.offsetParent}return t}function _t(e,t,n){ce.length=0;const a=[],o=[];return e.forEach(r=>{const l={...r,children:[]};let v=o[o.length-1];for(;v&&v.level>=l.level;)o.pop(),v=o[o.length-1];if(l.element.classList.contains("ignore-header")||v&&"shouldIgnore"in v){o.push({level:l.level,shouldIgnore:!0});return}l.level>n||l.level{const o=W("VPDocOutlineItem",!0);return s(),u("ul",{class:N(["VPDocOutlineItem",e.root?"root":"nested"])},[(s(!0),u(x,null,A(e.headers,({children:r,link:l,title:v})=>(s(),u("li",null,[d("a",{class:"outline-link",href:l,onClick:t,title:v},M(v),9,bt),r!=null&&r.length?(s(),_(o,{key:0,headers:r},null,8,["headers"])):m("",!0)]))),256))],2)}}}),xe=g(gt,[["__scopeId","data-v-21fe7f0b"]]),$t={class:"content"},yt={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},Pt=p({__name:"VPDocAsideOutline",setup(e){const{frontmatter:t,theme:n}=L(),a=$e([]);Y(()=>{a.value=me(t.value.outline??n.value.outline)});const o=S(),r=S();return pt(o,r),(l,v)=>(s(),u("nav",{"aria-labelledby":"doc-outline-aria-label",class:N(["VPDocAsideOutline",{"has-outline":a.value.length>0}]),ref_key:"container",ref:o},[d("div",$t,[d("div",{class:"outline-marker",ref_key:"marker",ref:r},null,512),d("div",yt,M(i(Me)(i(n))),1),k(xe,{headers:a.value,root:!0},null,8,["headers"])])],2))}}),Lt=g(Pt,[["__scopeId","data-v-e382fc21"]]),Vt={class:"VPDocAsideCarbonAds"},St=p({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(e){const t=()=>null;return(n,a)=>(s(),u("div",Vt,[k(i(t),{"carbon-ads":e.carbonAds},null,8,["carbon-ads"])]))}}),Tt={class:"VPDocAside"},Nt=p({__name:"VPDocAside",setup(e){const{theme:t}=L();return(n,a)=>(s(),u("div",Tt,[c(n.$slots,"aside-top",{},void 0,!0),c(n.$slots,"aside-outline-before",{},void 0,!0),k(Lt),c(n.$slots,"aside-outline-after",{},void 0,!0),a[0]||(a[0]=d("div",{class:"spacer"},null,-1)),c(n.$slots,"aside-ads-before",{},void 0,!0),i(t).carbonAds?(s(),_(St,{key:0,"carbon-ads":i(t).carbonAds},null,8,["carbon-ads"])):m("",!0),c(n.$slots,"aside-ads-after",{},void 0,!0),c(n.$slots,"aside-bottom",{},void 0,!0)]))}}),Mt=g(Nt,[["__scopeId","data-v-4e31e231"]]);function xt(){const{theme:e,page:t}=L();return y(()=>{const{text:n="Edit this page",pattern:a=""}=e.value.editLink||{};let o;return typeof a=="function"?o=a(t.value):o=a.replace(/:path/g,t.value.filePath),{url:o,text:n}})}function It(){const{page:e,theme:t,frontmatter:n}=L();return y(()=>{var $,V,b,P,T,I,w,C;const a=Ne(t.value.sidebar,e.value.relativePath),o=ct(a),r=wt(o,H=>H.link.replace(/[?#].*$/,"")),l=r.findIndex(H=>z(e.value.relativePath,H.link)),v=(($=t.value.docFooter)==null?void 0:$.prev)===!1&&!n.value.prev||n.value.prev===!1,f=((V=t.value.docFooter)==null?void 0:V.next)===!1&&!n.value.next||n.value.next===!1;return{prev:v?void 0:{text:(typeof n.value.prev=="string"?n.value.prev:typeof n.value.prev=="object"?n.value.prev.text:void 0)??((b=r[l-1])==null?void 0:b.docFooterText)??((P=r[l-1])==null?void 0:P.text),link:(typeof n.value.prev=="object"?n.value.prev.link:void 0)??((T=r[l-1])==null?void 0:T.link)},next:f?void 0:{text:(typeof n.value.next=="string"?n.value.next:typeof n.value.next=="object"?n.value.next.text:void 0)??((I=r[l+1])==null?void 0:I.docFooterText)??((w=r[l+1])==null?void 0:w.text),link:(typeof n.value.next=="object"?n.value.next.link:void 0)??((C=r[l+1])==null?void 0:C.link)}}})}function wt(e,t){const n=new Set;return e.filter(a=>{const o=t(a);return n.has(o)?!1:n.add(o)})}const E=p({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(e){const t=e,n=y(()=>t.tag??(t.href?"a":"span")),a=y(()=>t.href&&ye.test(t.href)||t.target==="_blank");return(o,r)=>(s(),_(B(n.value),{class:N(["VPLink",{link:e.href,"vp-external-link-icon":a.value,"no-icon":e.noIcon}]),href:e.href?i(he)(e.href):void 0,target:e.target??(a.value?"_blank":void 0),rel:e.rel??(a.value?"noreferrer":void 0)},{default:h(()=>[c(o.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),At={class:"VPLastUpdated"},Ct=["datetime"],Ht=p({__name:"VPDocFooterLastUpdated",setup(e){const{theme:t,page:n,lang:a}=L(),o=y(()=>new Date(n.value.lastUpdated)),r=y(()=>o.value.toISOString()),l=S("");return U(()=>{X(()=>{var v,f,$;l.value=new Intl.DateTimeFormat((f=(v=t.value.lastUpdated)==null?void 0:v.formatOptions)!=null&&f.forceLocale?a.value:void 0,(($=t.value.lastUpdated)==null?void 0:$.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(o.value)})}),(v,f)=>{var $;return s(),u("p",At,[j(M((($=i(t).lastUpdated)==null?void 0:$.text)||i(t).lastUpdatedText||"Last updated")+": ",1),d("time",{datetime:r.value},M(l.value),9,Ct)])}}}),Bt=g(Ht,[["__scopeId","data-v-744e3437"]]),Et={key:0,class:"VPDocFooter"},Ft={key:0,class:"edit-info"},Dt={key:0,class:"edit-link"},Ot={key:1,class:"last-updated"},Gt={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},Ut={class:"pager"},jt=["innerHTML"],zt=["innerHTML"],Wt={class:"pager"},Kt=["innerHTML"],qt=["innerHTML"],Rt=p({__name:"VPDocFooter",setup(e){const{theme:t,page:n,frontmatter:a}=L(),o=xt(),r=It(),l=y(()=>t.value.editLink&&a.value.editLink!==!1),v=y(()=>n.value.lastUpdated),f=y(()=>l.value||v.value||r.value.prev||r.value.next);return($,V)=>{var b,P,T,I;return f.value?(s(),u("footer",Et,[c($.$slots,"doc-footer-before",{},void 0,!0),l.value||v.value?(s(),u("div",Ft,[l.value?(s(),u("div",Dt,[k(E,{class:"edit-link-button",href:i(o).url,"no-icon":!0},{default:h(()=>[V[0]||(V[0]=d("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),j(" "+M(i(o).text),1)]),_:1},8,["href"])])):m("",!0),v.value?(s(),u("div",Ot,[k(Bt)])):m("",!0)])):m("",!0),(b=i(r).prev)!=null&&b.link||(P=i(r).next)!=null&&P.link?(s(),u("nav",Gt,[V[1]||(V[1]=d("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),d("div",Ut,[(T=i(r).prev)!=null&&T.link?(s(),_(E,{key:0,class:"pager-link prev",href:i(r).prev.link},{default:h(()=>{var w;return[d("span",{class:"desc",innerHTML:((w=i(t).docFooter)==null?void 0:w.prev)||"Previous page"},null,8,jt),d("span",{class:"title",innerHTML:i(r).prev.text},null,8,zt)]}),_:1},8,["href"])):m("",!0)]),d("div",Wt,[(I=i(r).next)!=null&&I.link?(s(),_(E,{key:0,class:"pager-link next",href:i(r).next.link},{default:h(()=>{var w;return[d("span",{class:"desc",innerHTML:((w=i(t).docFooter)==null?void 0:w.next)||"Next page"},null,8,Kt),d("span",{class:"title",innerHTML:i(r).next.text},null,8,qt)]}),_:1},8,["href"])):m("",!0)])])):m("",!0)])):m("",!0)}}}),Jt=g(Rt,[["__scopeId","data-v-d650fb62"]]),Xt={class:"container"},Yt={class:"aside-container"},Qt={class:"aside-content"},Zt={class:"content"},en={class:"content-container"},tn={class:"main"},nn=p({__name:"VPDoc",setup(e){const{theme:t}=L(),n=Q(),{hasSidebar:a,hasAside:o,leftAside:r}=D(),l=y(()=>n.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(v,f)=>{const $=W("Content");return s(),u("div",{class:N(["VPDoc",{"has-sidebar":i(a),"has-aside":i(o)}])},[c(v.$slots,"doc-top",{},void 0,!0),d("div",Xt,[i(o)?(s(),u("div",{key:0,class:N(["aside",{"left-aside":i(r)}])},[f[0]||(f[0]=d("div",{class:"aside-curtain"},null,-1)),d("div",Yt,[d("div",Qt,[k(Mt,null,{"aside-top":h(()=>[c(v.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":h(()=>[c(v.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":h(()=>[c(v.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":h(()=>[c(v.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":h(()=>[c(v.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":h(()=>[c(v.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):m("",!0),d("div",Zt,[d("div",en,[c(v.$slots,"doc-before",{},void 0,!0),d("main",tn,[k($,{class:N(["vp-doc",[l.value,i(t).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),k(Jt,null,{"doc-footer-before":h(()=>[c(v.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),c(v.$slots,"doc-after",{},void 0,!0)])])]),c(v.$slots,"doc-bottom",{},void 0,!0)],2)}}}),an=g(nn,[["__scopeId","data-v-c0d172cc"]]),on=p({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(e){const t=e,n=y(()=>t.href&&ye.test(t.href)),a=y(()=>t.tag||(t.href?"a":"button"));return(o,r)=>(s(),_(B(a.value),{class:N(["VPButton",[e.size,e.theme]]),href:e.href?i(he)(e.href):void 0,target:t.target??(n.value?"_blank":void 0),rel:t.rel??(n.value?"noreferrer":void 0)},{default:h(()=>[j(M(e.text),1)]),_:1},8,["class","href","target","rel"]))}}),sn=g(on,[["__scopeId","data-v-701b600a"]]),rn=["src","alt"],ln=p({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(e){return(t,n)=>{const a=W("VPImage",!0);return e.image?(s(),u(x,{key:0},[typeof e.image=="string"||"src"in e.image?(s(),u("img",G({key:0,class:"VPImage"},typeof e.image=="string"?t.$attrs:{...e.image,...t.$attrs},{src:i(de)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,rn)):(s(),u(x,{key:1},[k(a,G({class:"dark",image:e.image.dark,alt:e.image.alt},t.$attrs),null,16,["image","alt"]),k(a,G({class:"light",image:e.image.light,alt:e.image.alt},t.$attrs),null,16,["image","alt"])],64))],64)):m("",!0)}}}),J=g(ln,[["__scopeId","data-v-a9ec2bb1"]]),cn={class:"container"},un={class:"main"},dn={class:"heading"},vn=["innerHTML"],fn=["innerHTML"],hn=["innerHTML"],mn={key:0,class:"actions"},pn={key:0,class:"image"},kn={class:"image-container"},_n=p({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(e){const t=Z("hero-image-slot-exists");return(n,a)=>(s(),u("div",{class:N(["VPHero",{"has-image":e.image||i(t)}])},[d("div",cn,[d("div",un,[c(n.$slots,"home-hero-info-before",{},void 0,!0),c(n.$slots,"home-hero-info",{},()=>[d("h1",dn,[e.name?(s(),u("span",{key:0,innerHTML:e.name,class:"name clip"},null,8,vn)):m("",!0),e.text?(s(),u("span",{key:1,innerHTML:e.text,class:"text"},null,8,fn)):m("",!0)]),e.tagline?(s(),u("p",{key:0,innerHTML:e.tagline,class:"tagline"},null,8,hn)):m("",!0)],!0),c(n.$slots,"home-hero-info-after",{},void 0,!0),e.actions?(s(),u("div",mn,[(s(!0),u(x,null,A(e.actions,o=>(s(),u("div",{key:o.link,class:"action"},[k(sn,{tag:"a",size:"medium",theme:o.theme,text:o.text,href:o.link,target:o.target,rel:o.rel},null,8,["theme","text","href","target","rel"])]))),128))])):m("",!0),c(n.$slots,"home-hero-actions-after",{},void 0,!0)]),e.image||i(t)?(s(),u("div",pn,[d("div",kn,[a[0]||(a[0]=d("div",{class:"image-bg"},null,-1)),c(n.$slots,"home-hero-image",{},()=>[e.image?(s(),_(J,{key:0,class:"image-src",image:e.image},null,8,["image"])):m("",!0)],!0)])])):m("",!0)])],2))}}),bn=g(_n,[["__scopeId","data-v-4d7b5684"]]),gn=p({__name:"VPHomeHero",setup(e){const{frontmatter:t}=L();return(n,a)=>i(t).hero?(s(),_(bn,{key:0,class:"VPHomeHero",name:i(t).hero.name,text:i(t).hero.text,tagline:i(t).hero.tagline,image:i(t).hero.image,actions:i(t).hero.actions},{"home-hero-info-before":h(()=>[c(n.$slots,"home-hero-info-before")]),"home-hero-info":h(()=>[c(n.$slots,"home-hero-info")]),"home-hero-info-after":h(()=>[c(n.$slots,"home-hero-info-after")]),"home-hero-actions-after":h(()=>[c(n.$slots,"home-hero-actions-after")]),"home-hero-image":h(()=>[c(n.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):m("",!0)}}),$n={class:"box"},yn={key:0,class:"icon"},Pn=["innerHTML"],Ln=["innerHTML"],Vn=["innerHTML"],Sn={key:4,class:"link-text"},Tn={class:"link-text-value"},Nn=p({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(e){return(t,n)=>(s(),_(E,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:h(()=>[d("article",$n,[typeof e.icon=="object"&&e.icon.wrap?(s(),u("div",yn,[k(J,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(s(),_(J,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(s(),u("div",{key:2,class:"icon",innerHTML:e.icon},null,8,Pn)):m("",!0),d("h2",{class:"title",innerHTML:e.title},null,8,Ln),e.details?(s(),u("p",{key:3,class:"details",innerHTML:e.details},null,8,Vn)):m("",!0),e.linkText?(s(),u("div",Sn,[d("p",Tn,[j(M(e.linkText)+" ",1),n[0]||(n[0]=d("span",{class:"vpi-arrow-right link-text-icon"},null,-1))])])):m("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),Mn=g(Nn,[["__scopeId","data-v-281d2434"]]),xn={key:0,class:"VPFeatures"},In={class:"container"},wn={class:"items"},An=p({__name:"VPFeatures",props:{features:{}},setup(e){const t=e,n=y(()=>{const a=t.features.length;if(a){if(a===2)return"grid-2";if(a===3)return"grid-3";if(a%3===0)return"grid-6";if(a>3)return"grid-4"}else return});return(a,o)=>e.features?(s(),u("div",xn,[d("div",In,[d("div",wn,[(s(!0),u(x,null,A(e.features,r=>(s(),u("div",{key:r.title,class:N(["item",[n.value]])},[k(Mn,{icon:r.icon,title:r.title,details:r.details,link:r.link,"link-text":r.linkText,rel:r.rel,target:r.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):m("",!0)}}),Cn=g(An,[["__scopeId","data-v-4a3c9473"]]),Hn=p({__name:"VPHomeFeatures",setup(e){const{frontmatter:t}=L();return(n,a)=>i(t).features?(s(),_(Cn,{key:0,class:"VPHomeFeatures",features:i(t).features},null,8,["features"])):m("",!0)}}),Bn=p({__name:"VPHomeContent",setup(e){const{width:t}=De({initialWidth:0,includeScrollbar:!1});return(n,a)=>(s(),u("div",{class:"vp-doc container",style:Pe(i(t)?{"--vp-offset":`calc(50% - ${i(t)/2}px)`}:{})},[c(n.$slots,"default",{},void 0,!0)],4))}}),En=g(Bn,[["__scopeId","data-v-b6816877"]]),Fn=p({__name:"VPHome",setup(e){const{frontmatter:t,theme:n}=L();return(a,o)=>{const r=W("Content");return s(),u("div",{class:N(["VPHome",{"external-link-icon-enabled":i(n).externalLinkIcon}])},[c(a.$slots,"home-hero-before",{},void 0,!0),k(gn,null,{"home-hero-info-before":h(()=>[c(a.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":h(()=>[c(a.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":h(()=>[c(a.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":h(()=>[c(a.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":h(()=>[c(a.$slots,"home-hero-image",{},void 0,!0)]),_:3}),c(a.$slots,"home-hero-after",{},void 0,!0),c(a.$slots,"home-features-before",{},void 0,!0),k(Hn),c(a.$slots,"home-features-after",{},void 0,!0),i(t).markdownStyles!==!1?(s(),_(En,{key:0},{default:h(()=>[k(r)]),_:1})):(s(),_(r,{key:1}))],2)}}}),Dn=g(Fn,[["__scopeId","data-v-436abcc8"]]),On={},Gn={class:"VPPage"};function Un(e,t){const n=W("Content");return s(),u("div",Gn,[c(e.$slots,"page-top"),k(n),c(e.$slots,"page-bottom")])}const jn=g(On,[["render",Un]]),zn=p({__name:"VPContent",setup(e){const{page:t,frontmatter:n}=L(),{hasSidebar:a}=D();return(o,r)=>(s(),u("div",{class:N(["VPContent",{"has-sidebar":i(a),"is-home":i(n).layout==="home"}]),id:"VPContent"},[i(t).isNotFound?c(o.$slots,"not-found",{key:0},()=>[k(rt)],!0):i(n).layout==="page"?(s(),_(jn,{key:1},{"page-top":h(()=>[c(o.$slots,"page-top",{},void 0,!0)]),"page-bottom":h(()=>[c(o.$slots,"page-bottom",{},void 0,!0)]),_:3})):i(n).layout==="home"?(s(),_(Dn,{key:2},{"home-hero-before":h(()=>[c(o.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":h(()=>[c(o.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":h(()=>[c(o.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":h(()=>[c(o.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":h(()=>[c(o.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":h(()=>[c(o.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":h(()=>[c(o.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":h(()=>[c(o.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":h(()=>[c(o.$slots,"home-features-after",{},void 0,!0)]),_:3})):i(n).layout&&i(n).layout!=="doc"?(s(),_(B(i(n).layout),{key:3})):(s(),_(an,{key:4},{"doc-top":h(()=>[c(o.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":h(()=>[c(o.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":h(()=>[c(o.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":h(()=>[c(o.$slots,"doc-before",{},void 0,!0)]),"doc-after":h(()=>[c(o.$slots,"doc-after",{},void 0,!0)]),"aside-top":h(()=>[c(o.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":h(()=>[c(o.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":h(()=>[c(o.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":h(()=>[c(o.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":h(()=>[c(o.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":h(()=>[c(o.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),Wn=g(zn,[["__scopeId","data-v-df015b7a"]]),Kn={class:"container"},qn=["innerHTML"],Rn=["innerHTML"],Jn=p({__name:"VPFooter",setup(e){const{theme:t,frontmatter:n}=L(),{hasSidebar:a}=D();return(o,r)=>i(t).footer&&i(n).footer!==!1?(s(),u("footer",{key:0,class:N(["VPFooter",{"has-sidebar":i(a)}])},[d("div",Kn,[i(t).footer.message?(s(),u("p",{key:0,class:"message",innerHTML:i(t).footer.message},null,8,qn)):m("",!0),i(t).footer.copyright?(s(),u("p",{key:1,class:"copyright",innerHTML:i(t).footer.copyright},null,8,Rn)):m("",!0)])],2)):m("",!0)}}),Xn=g(Jn,[["__scopeId","data-v-cea6e03e"]]);function Yn(){const{theme:e,frontmatter:t}=L(),n=$e([]),a=y(()=>n.value.length>0);return Y(()=>{n.value=me(t.value.outline??e.value.outline)}),{headers:n,hasLocalNav:a}}const Qn={class:"menu-text"},Zn={class:"header"},ea={class:"outline"},ta=p({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(e){const t=e,{theme:n}=L(),a=S(!1),o=S(0),r=S(),l=S();function v(b){var P;(P=r.value)!=null&&P.contains(b.target)||(a.value=!1)}F(a,b=>{if(b){document.addEventListener("click",v);return}document.removeEventListener("click",v)}),ie("Escape",()=>{a.value=!1}),Y(()=>{a.value=!1});function f(){a.value=!a.value,o.value=window.innerHeight+Math.min(window.scrollY-t.navHeight,0)}function $(b){b.target.classList.contains("outline-link")&&(l.value&&(l.value.style.transition="none"),Le(()=>{a.value=!1}))}function V(){a.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(b,P)=>(s(),u("div",{class:"VPLocalNavOutlineDropdown",style:Pe({"--vp-vh":o.value+"px"}),ref_key:"main",ref:r},[e.headers.length>0?(s(),u("button",{key:0,onClick:f,class:N({open:a.value})},[d("span",Qn,M(i(Me)(i(n))),1),P[0]||(P[0]=d("span",{class:"vpi-chevron-right icon"},null,-1))],2)):(s(),u("button",{key:1,onClick:V},M(i(n).returnToTopLabel||"Return to top"),1)),k(ue,{name:"flyout"},{default:h(()=>[a.value?(s(),u("div",{key:0,ref_key:"items",ref:l,class:"items",onClick:$},[d("div",Zn,[d("a",{class:"top-link",href:"#",onClick:V},M(i(n).returnToTopLabel||"Return to top"),1)]),d("div",ea,[k(xe,{headers:e.headers},null,8,["headers"])])],512)):m("",!0)]),_:1})],4))}}),na=g(ta,[["__scopeId","data-v-65f11ad7"]]),aa={class:"container"},oa=["aria-expanded"],sa={class:"menu-text"},ia=p({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(e){const{theme:t,frontmatter:n}=L(),{hasSidebar:a}=D(),{headers:o}=Yn(),{y:r}=Ve(),l=S(0);U(()=>{l.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),Y(()=>{o.value=me(n.value.outline??t.value.outline)});const v=y(()=>o.value.length===0),f=y(()=>v.value&&!a.value),$=y(()=>({VPLocalNav:!0,"has-sidebar":a.value,empty:v.value,fixed:f.value}));return(V,b)=>i(n).layout!=="home"&&(!f.value||i(r)>=l.value)?(s(),u("div",{key:0,class:N($.value)},[d("div",aa,[i(a)?(s(),u("button",{key:0,class:"menu","aria-expanded":e.open,"aria-controls":"VPSidebarNav",onClick:b[0]||(b[0]=P=>V.$emit("open-menu"))},[b[1]||(b[1]=d("span",{class:"vpi-align-left menu-icon"},null,-1)),d("span",sa,M(i(t).sidebarMenuLabel||"Menu"),1)],8,oa)):m("",!0),k(na,{headers:i(o),navHeight:l.value},null,8,["headers","navHeight"])])],2)):m("",!0)}}),ra=g(ia,[["__scopeId","data-v-42b4930c"]]);function la(){const e=S(!1);function t(){e.value=!0,window.addEventListener("resize",o)}function n(){e.value=!1,window.removeEventListener("resize",o)}function a(){e.value?n():t()}function o(){window.outerWidth>=768&&n()}const r=Q();return F(()=>r.path,n),{isScreenOpen:e,openScreen:t,closeScreen:n,toggleScreen:a}}const ca={},ua={class:"VPSwitch",type:"button",role:"switch"},da={class:"check"},va={key:0,class:"icon"};function fa(e,t){return s(),u("button",ua,[d("span",da,[e.$slots.default?(s(),u("span",va,[c(e.$slots,"default",{},void 0,!0)])):m("",!0)])])}const ha=g(ca,[["render",fa],["__scopeId","data-v-be020907"]]),ma=p({__name:"VPSwitchAppearance",setup(e){const{isDark:t,theme:n}=L(),a=Z("toggle-appearance",()=>{t.value=!t.value}),o=S("");return fe(()=>{o.value=t.value?n.value.lightModeSwitchTitle||"Switch to light theme":n.value.darkModeSwitchTitle||"Switch to dark theme"}),(r,l)=>(s(),_(ha,{title:o.value,class:"VPSwitchAppearance","aria-checked":i(t),onClick:i(a)},{default:h(()=>[...l[0]||(l[0]=[d("span",{class:"vpi-sun sun"},null,-1),d("span",{class:"vpi-moon moon"},null,-1)])]),_:1},8,["title","aria-checked","onClick"]))}}),pe=g(ma,[["__scopeId","data-v-0c13c3df"]]),pa={key:0,class:"VPNavBarAppearance"},ka=p({__name:"VPNavBarAppearance",setup(e){const{site:t}=L();return(n,a)=>i(t).appearance&&i(t).appearance!=="force-dark"&&i(t).appearance!=="force-auto"?(s(),u("div",pa,[k(pe)])):m("",!0)}}),_a=g(ka,[["__scopeId","data-v-7208450f"]]),ke=S();let Ie=!1,oe=0;function ba(e){const t=S(!1);if(ee){!Ie&&ga(),oe++;const n=F(ke,a=>{var o,r,l;a===e.el.value||(o=e.el.value)!=null&&o.contains(a)?(t.value=!0,(r=e.onFocus)==null||r.call(e)):(t.value=!1,(l=e.onBlur)==null||l.call(e))});ve(()=>{n(),oe--,oe||$a()})}return Oe(t)}function ga(){document.addEventListener("focusin",we),Ie=!0,ke.value=document.activeElement}function $a(){document.removeEventListener("focusin",we)}function we(){ke.value=document.activeElement}const ya={class:"VPMenuLink"},Pa=["innerHTML"],La=p({__name:"VPMenuLink",props:{item:{}},setup(e){const{page:t}=L();return(n,a)=>(s(),u("div",ya,[k(E,{class:N({active:i(z)(i(t).relativePath,e.item.activeMatch||e.item.link,!!e.item.activeMatch)}),href:e.item.link,target:e.item.target,rel:e.item.rel,"no-icon":e.item.noIcon},{default:h(()=>[d("span",{innerHTML:e.item.text},null,8,Pa)]),_:1},8,["class","href","target","rel","no-icon"])]))}}),te=g(La,[["__scopeId","data-v-adc65559"]]),Va={class:"VPMenuGroup"},Sa={key:0,class:"title"},Ta=p({__name:"VPMenuGroup",props:{text:{},items:{}},setup(e){return(t,n)=>(s(),u("div",Va,[e.text?(s(),u("p",Sa,M(e.text),1)):m("",!0),(s(!0),u(x,null,A(e.items,a=>(s(),u(x,null,["link"in a?(s(),_(te,{key:0,item:a},null,8,["item"])):m("",!0)],64))),256))]))}}),Na=g(Ta,[["__scopeId","data-v-2751c69e"]]),Ma={class:"VPMenu"},xa={key:0,class:"items"},Ia=p({__name:"VPMenu",props:{items:{}},setup(e){return(t,n)=>(s(),u("div",Ma,[e.items?(s(),u("div",xa,[(s(!0),u(x,null,A(e.items,a=>(s(),u(x,{key:JSON.stringify(a)},["link"in a?(s(),_(te,{key:0,item:a},null,8,["item"])):"component"in a?(s(),_(B(a.component),G({key:1,ref_for:!0},a.props),null,16)):(s(),_(Na,{key:2,text:a.text,items:a.items},null,8,["text","items"]))],64))),128))])):m("",!0),c(t.$slots,"default",{},void 0,!0)]))}}),wa=g(Ia,[["__scopeId","data-v-78767497"]]),Aa=["aria-expanded","aria-label"],Ca={key:0,class:"text"},Ha=["innerHTML"],Ba={key:1,class:"vpi-more-horizontal icon"},Ea={class:"menu"},Fa=p({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(e){const t=S(!1),n=S();ba({el:n,onBlur:a});function a(){t.value=!1}return(o,r)=>(s(),u("div",{class:"VPFlyout",ref_key:"el",ref:n,onMouseenter:r[1]||(r[1]=l=>t.value=!0),onMouseleave:r[2]||(r[2]=l=>t.value=!1)},[d("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":t.value,"aria-label":e.label,onClick:r[0]||(r[0]=l=>t.value=!t.value)},[e.button||e.icon?(s(),u("span",Ca,[e.icon?(s(),u("span",{key:0,class:N([e.icon,"option-icon"])},null,2)):m("",!0),e.button?(s(),u("span",{key:1,innerHTML:e.button},null,8,Ha)):m("",!0),r[3]||(r[3]=d("span",{class:"vpi-chevron-down text-icon"},null,-1))])):(s(),u("span",Ba))],8,Aa),d("div",Ea,[k(wa,{items:e.items},{default:h(()=>[c(o.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),_e=g(Fa,[["__scopeId","data-v-500c8661"]]),Da=["href","aria-label","innerHTML"],Oa=p({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(e){const t=e,n=S();U(async()=>{var r;await Le();const o=(r=n.value)==null?void 0:r.children[0];o instanceof HTMLElement&&o.className.startsWith("vpi-social-")&&(getComputedStyle(o).maskImage||getComputedStyle(o).webkitMaskImage)==="none"&&o.style.setProperty("--icon",`url('https://api.iconify.design/simple-icons/${t.icon}.svg')`)});const a=y(()=>typeof t.icon=="object"?t.icon.svg:``);return(o,r)=>(s(),u("a",{ref_key:"el",ref:n,class:"VPSocialLink no-icon",href:e.link,"aria-label":e.ariaLabel??(typeof e.icon=="string"?e.icon:""),target:"_blank",rel:"noopener",innerHTML:a.value},null,8,Da))}}),Ga=g(Oa,[["__scopeId","data-v-0890861b"]]),Ua={class:"VPSocialLinks"},ja=p({__name:"VPSocialLinks",props:{links:{}},setup(e){return(t,n)=>(s(),u("div",Ua,[(s(!0),u(x,null,A(e.links,({link:a,icon:o,ariaLabel:r})=>(s(),_(Ga,{key:a,icon:o,link:a,ariaLabel:r},null,8,["icon","link","ariaLabel"]))),128))]))}}),be=g(ja,[["__scopeId","data-v-a84d2f45"]]),za={key:0,class:"group translations"},Wa={class:"trans-title"},Ka={key:1,class:"group"},qa={class:"item appearance"},Ra={class:"label"},Ja={class:"appearance-action"},Xa={key:2,class:"group"},Ya={class:"item social-links"},Qa=p({__name:"VPNavBarExtra",setup(e){const{site:t,theme:n}=L(),{localeLinks:a,currentLang:o}=q({correspondingLink:!0}),r=y(()=>a.value.length&&o.value.label||t.value.appearance||n.value.socialLinks);return(l,v)=>r.value?(s(),_(_e,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:h(()=>[i(a).length&&i(o).label?(s(),u("div",za,[d("p",Wa,M(i(o).label),1),(s(!0),u(x,null,A(i(a),f=>(s(),_(te,{key:f.link,item:f},null,8,["item"]))),128))])):m("",!0),i(t).appearance&&i(t).appearance!=="force-dark"&&i(t).appearance!=="force-auto"?(s(),u("div",Ka,[d("div",qa,[d("p",Ra,M(i(n).darkModeSwitchLabel||"Appearance"),1),d("div",Ja,[k(pe)])])])):m("",!0),i(n).socialLinks?(s(),u("div",Xa,[d("div",Ya,[k(be,{class:"social-links-list",links:i(n).socialLinks},null,8,["links"])])])):m("",!0)]),_:1})):m("",!0)}}),Za=g(Qa,[["__scopeId","data-v-c2346f84"]]),eo=["aria-expanded"],to=p({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(e){return(t,n)=>(s(),u("button",{type:"button",class:N(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:n[0]||(n[0]=a=>t.$emit("click"))},[...n[1]||(n[1]=[d("span",{class:"container"},[d("span",{class:"top"}),d("span",{class:"middle"}),d("span",{class:"bottom"})],-1)])],10,eo))}}),no=g(to,[["__scopeId","data-v-c0ff09b3"]]),ao=["innerHTML"],oo=p({__name:"VPNavBarMenuLink",props:{item:{}},setup(e){const{page:t}=L();return(n,a)=>(s(),_(E,{class:N({VPNavBarMenuLink:!0,active:i(z)(i(t).relativePath,e.item.activeMatch||e.item.link,!!e.item.activeMatch)}),href:e.item.link,target:e.item.target,rel:e.item.rel,"no-icon":e.item.noIcon,tabindex:"0"},{default:h(()=>[d("span",{innerHTML:e.item.text},null,8,ao)]),_:1},8,["class","href","target","rel","no-icon"]))}}),so=g(oo,[["__scopeId","data-v-df2fe9fb"]]),io=p({__name:"VPNavBarMenuGroup",props:{item:{}},setup(e){const t=e,{page:n}=L(),a=r=>"component"in r?!1:"link"in r?z(n.value.relativePath,r.link,!!t.item.activeMatch):r.items.some(a),o=y(()=>a(t.item));return(r,l)=>(s(),_(_e,{class:N({VPNavBarMenuGroup:!0,active:i(z)(i(n).relativePath,e.item.activeMatch,!!e.item.activeMatch)||o.value}),button:e.item.text,items:e.item.items},null,8,["class","button","items"]))}}),ro={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},lo=p({__name:"VPNavBarMenu",setup(e){const{theme:t}=L();return(n,a)=>i(t).nav?(s(),u("nav",ro,[a[0]||(a[0]=d("span",{id:"main-nav-aria-label",class:"visually-hidden"}," Main Navigation ",-1)),(s(!0),u(x,null,A(i(t).nav,o=>(s(),u(x,{key:JSON.stringify(o)},["link"in o?(s(),_(so,{key:0,item:o},null,8,["item"])):"component"in o?(s(),_(B(o.component),G({key:1,ref_for:!0},o.props),null,16)):(s(),_(io,{key:2,item:o},null,8,["item"]))],64))),128))])):m("",!0)}}),co=g(lo,[["__scopeId","data-v-a8c7b9cb"]]);function uo(e){const{localeIndex:t,theme:n}=L();function a(o){var I,w,C;const r=o.split("."),l=(I=n.value.search)==null?void 0:I.options,v=l&&typeof l=="object",f=v&&((C=(w=l.locales)==null?void 0:w[t.value])==null?void 0:C.translations)||null,$=v&&l.translations||null;let V=f,b=$,P=e;const T=r.pop();for(const H of r){let O=null;const K=P==null?void 0:P[H];K&&(O=P=K);const ne=b==null?void 0:b[H];ne&&(O=b=ne);const ae=V==null?void 0:V[H];ae&&(O=V=ae),K||(P=O),ne||(b=O),ae||(V=O)}return(V==null?void 0:V[T])??(b==null?void 0:b[T])??(P==null?void 0:P[T])??""}return a}const vo=["aria-label"],fo={class:"DocSearch-Button-Container"},ho={class:"DocSearch-Button-Placeholder"},ge=p({__name:"VPNavBarSearchButton",setup(e){const n=uo({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(a,o)=>(s(),u("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":i(n)("button.buttonAriaLabel")},[d("span",fo,[o[0]||(o[0]=d("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1)),d("span",ho,M(i(n)("button.buttonText")),1)]),o[1]||(o[1]=d("span",{class:"DocSearch-Button-Keys"},[d("kbd",{class:"DocSearch-Button-Key"}),d("kbd",{class:"DocSearch-Button-Key"},"K")],-1))],8,vo))}}),mo={class:"VPNavBarSearch"},po={id:"local-search"},ko={key:1,id:"docsearch"},_o=p({__name:"VPNavBarSearch",setup(e){const t=Ge(()=>Ue(()=>import("./VPLocalSearchBox.CrvgDWgJ.js"),__vite__mapDeps([0,1]))),n=()=>null,{theme:a}=L(),o=S(!1),r=S(!1);U(()=>{});function l(){o.value||(o.value=!0,setTimeout(v,16))}function v(){const b=new Event("keydown");b.key="k",b.metaKey=!0,window.dispatchEvent(b),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||v()},16)}function f(b){const P=b.target,T=P.tagName;return P.isContentEditable||T==="INPUT"||T==="SELECT"||T==="TEXTAREA"}const $=S(!1);ie("k",b=>{(b.ctrlKey||b.metaKey)&&(b.preventDefault(),$.value=!0)}),ie("/",b=>{f(b)||(b.preventDefault(),$.value=!0)});const V="local";return(b,P)=>{var T;return s(),u("div",mo,[i(V)==="local"?(s(),u(x,{key:0},[$.value?(s(),_(i(t),{key:0,onClose:P[0]||(P[0]=I=>$.value=!1)})):m("",!0),d("div",po,[k(ge,{onClick:P[1]||(P[1]=I=>$.value=!0)})])],64)):i(V)==="algolia"?(s(),u(x,{key:1},[o.value?(s(),_(i(n),{key:0,algolia:((T=i(a).search)==null?void 0:T.options)??i(a).algolia,onVnodeBeforeMount:P[2]||(P[2]=I=>r.value=!0)},null,8,["algolia"])):m("",!0),r.value?m("",!0):(s(),u("div",ko,[k(ge,{onClick:l})]))],64)):m("",!0)])}}}),bo=p({__name:"VPNavBarSocialLinks",setup(e){const{theme:t}=L();return(n,a)=>i(t).socialLinks?(s(),_(be,{key:0,class:"VPNavBarSocialLinks",links:i(t).socialLinks},null,8,["links"])):m("",!0)}}),go=g(bo,[["__scopeId","data-v-1a196069"]]),$o=["href","rel","target"],yo=["innerHTML"],Po={key:2},Lo=p({__name:"VPNavBarTitle",setup(e){const{site:t,theme:n}=L(),{hasSidebar:a}=D(),{currentLang:o}=q(),r=y(()=>{var f;return typeof n.value.logoLink=="string"?n.value.logoLink:(f=n.value.logoLink)==null?void 0:f.link}),l=y(()=>{var f;return typeof n.value.logoLink=="string"||(f=n.value.logoLink)==null?void 0:f.rel}),v=y(()=>{var f;return typeof n.value.logoLink=="string"||(f=n.value.logoLink)==null?void 0:f.target});return(f,$)=>(s(),u("div",{class:N(["VPNavBarTitle",{"has-sidebar":i(a)}])},[d("a",{class:"title",href:r.value??i(he)(i(o).link),rel:l.value,target:v.value},[c(f.$slots,"nav-bar-title-before",{},void 0,!0),i(n).logo?(s(),_(J,{key:0,class:"logo",image:i(n).logo},null,8,["image"])):m("",!0),i(n).siteTitle?(s(),u("span",{key:1,innerHTML:i(n).siteTitle},null,8,yo)):i(n).siteTitle===void 0?(s(),u("span",Po,M(i(t).title),1)):m("",!0),c(f.$slots,"nav-bar-title-after",{},void 0,!0)],8,$o)],2))}}),Vo=g(Lo,[["__scopeId","data-v-d3560e07"]]),So={class:"items"},To={class:"title"},No=p({__name:"VPNavBarTranslations",setup(e){const{theme:t}=L(),{localeLinks:n,currentLang:a}=q({correspondingLink:!0});return(o,r)=>i(n).length&&i(a).label?(s(),_(_e,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:i(t).langMenuLabel||"Change language"},{default:h(()=>[d("div",So,[d("p",To,M(i(a).label),1),(s(!0),u(x,null,A(i(n),l=>(s(),_(te,{key:l.link,item:l},null,8,["item"]))),128))])]),_:1},8,["label"])):m("",!0)}}),Mo=g(No,[["__scopeId","data-v-f7e0dd34"]]),xo={class:"wrapper"},Io={class:"container"},wo={class:"title"},Ao={class:"content"},Co={class:"content-body"},Ho=p({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(e){const t=e,{y:n}=Ve(),{hasSidebar:a}=D(),{frontmatter:o}=L(),r=S({});return fe(()=>{r.value={"has-sidebar":a.value,home:o.value.layout==="home",top:n.value===0,"screen-open":t.isScreenOpen}}),(l,v)=>(s(),u("div",{class:N(["VPNavBar",r.value])},[d("div",xo,[d("div",Io,[d("div",wo,[k(Vo,null,{"nav-bar-title-before":h(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":h(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),d("div",Ao,[d("div",Co,[c(l.$slots,"nav-bar-content-before",{},void 0,!0),k(_o,{class:"search"}),k(co,{class:"menu"}),k(Mo,{class:"translations"}),k(_a,{class:"appearance"}),k(go,{class:"social-links"}),k(Za,{class:"extra"}),c(l.$slots,"nav-bar-content-after",{},void 0,!0),k(no,{class:"hamburger",active:e.isScreenOpen,onClick:v[0]||(v[0]=f=>l.$emit("toggle-screen"))},null,8,["active"])])])])]),v[1]||(v[1]=d("div",{class:"divider"},[d("div",{class:"divider-line"})],-1))],2))}}),Bo=g(Ho,[["__scopeId","data-v-d92360c8"]]),Eo={key:0,class:"VPNavScreenAppearance"},Fo={class:"text"},Do=p({__name:"VPNavScreenAppearance",setup(e){const{site:t,theme:n}=L();return(a,o)=>i(t).appearance&&i(t).appearance!=="force-dark"&&i(t).appearance!=="force-auto"?(s(),u("div",Eo,[d("p",Fo,M(i(n).darkModeSwitchLabel||"Appearance"),1),k(pe)])):m("",!0)}}),Oo=g(Do,[["__scopeId","data-v-5f5f718e"]]),Go=["innerHTML"],Uo=p({__name:"VPNavScreenMenuLink",props:{item:{}},setup(e){const t=Z("close-screen");return(n,a)=>(s(),_(E,{class:"VPNavScreenMenuLink",href:e.item.link,target:e.item.target,rel:e.item.rel,"no-icon":e.item.noIcon,onClick:i(t)},{default:h(()=>[d("span",{innerHTML:e.item.text},null,8,Go)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),jo=g(Uo,[["__scopeId","data-v-af7e055c"]]),zo=["innerHTML"],Wo=p({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(e){const t=Z("close-screen");return(n,a)=>(s(),_(E,{class:"VPNavScreenMenuGroupLink",href:e.item.link,target:e.item.target,rel:e.item.rel,"no-icon":e.item.noIcon,onClick:i(t)},{default:h(()=>[d("span",{innerHTML:e.item.text},null,8,zo)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),Ae=g(Wo,[["__scopeId","data-v-a18eb207"]]),Ko={class:"VPNavScreenMenuGroupSection"},qo={key:0,class:"title"},Ro=p({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(e){return(t,n)=>(s(),u("div",Ko,[e.text?(s(),u("p",qo,M(e.text),1)):m("",!0),(s(!0),u(x,null,A(e.items,a=>(s(),_(Ae,{key:a.text,item:a},null,8,["item"]))),128))]))}}),Jo=g(Ro,[["__scopeId","data-v-18902326"]]),Xo=["aria-controls","aria-expanded"],Yo=["innerHTML"],Qo=["id"],Zo={key:0,class:"item"},es={key:1,class:"item"},ts={key:2,class:"group"},ns=p({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(e){const t=e,n=S(!1),a=y(()=>`NavScreenGroup-${t.text.replace(" ","-").toLowerCase()}`);function o(){n.value=!n.value}return(r,l)=>(s(),u("div",{class:N(["VPNavScreenMenuGroup",{open:n.value}])},[d("button",{class:"button","aria-controls":a.value,"aria-expanded":n.value,onClick:o},[d("span",{class:"button-text",innerHTML:e.text},null,8,Yo),l[0]||(l[0]=d("span",{class:"vpi-plus button-icon"},null,-1))],8,Xo),d("div",{id:a.value,class:"items"},[(s(!0),u(x,null,A(e.items,v=>(s(),u(x,{key:JSON.stringify(v)},["link"in v?(s(),u("div",Zo,[k(Ae,{item:v},null,8,["item"])])):"component"in v?(s(),u("div",es,[(s(),_(B(v.component),G({ref_for:!0},v.props,{"screen-menu":""}),null,16))])):(s(),u("div",ts,[k(Jo,{text:v.text,items:v.items},null,8,["text","items"])]))],64))),128))],8,Qo)],2))}}),as=g(ns,[["__scopeId","data-v-2bf06c47"]]),os={key:0,class:"VPNavScreenMenu"},ss=p({__name:"VPNavScreenMenu",setup(e){const{theme:t}=L();return(n,a)=>i(t).nav?(s(),u("nav",os,[(s(!0),u(x,null,A(i(t).nav,o=>(s(),u(x,{key:JSON.stringify(o)},["link"in o?(s(),_(jo,{key:0,item:o},null,8,["item"])):"component"in o?(s(),_(B(o.component),G({key:1,ref_for:!0},o.props,{"screen-menu":""}),null,16)):(s(),_(as,{key:2,text:o.text||"",items:o.items},null,8,["text","items"]))],64))),128))])):m("",!0)}}),is=p({__name:"VPNavScreenSocialLinks",setup(e){const{theme:t}=L();return(n,a)=>i(t).socialLinks?(s(),_(be,{key:0,class:"VPNavScreenSocialLinks",links:i(t).socialLinks},null,8,["links"])):m("",!0)}}),rs={class:"list"},ls=p({__name:"VPNavScreenTranslations",setup(e){const{localeLinks:t,currentLang:n}=q({correspondingLink:!0}),a=S(!1);function o(){a.value=!a.value}return(r,l)=>i(t).length&&i(n).label?(s(),u("div",{key:0,class:N(["VPNavScreenTranslations",{open:a.value}])},[d("button",{class:"title",onClick:o},[l[0]||(l[0]=d("span",{class:"vpi-languages icon lang"},null,-1)),j(" "+M(i(n).label)+" ",1),l[1]||(l[1]=d("span",{class:"vpi-chevron-down icon chevron"},null,-1))]),d("ul",rs,[(s(!0),u(x,null,A(i(t),v=>(s(),u("li",{key:v.link,class:"item"},[k(E,{class:"link",href:v.link},{default:h(()=>[j(M(v.text),1)]),_:2},1032,["href"])]))),128))])],2)):m("",!0)}}),cs=g(ls,[["__scopeId","data-v-842a3317"]]),us={class:"container"},ds=p({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(e){const t=S(null),n=Se(ee?document.body:null);return(a,o)=>(s(),_(ue,{name:"fade",onEnter:o[0]||(o[0]=r=>n.value=!0),onAfterLeave:o[1]||(o[1]=r=>n.value=!1)},{default:h(()=>[e.open?(s(),u("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:t,id:"VPNavScreen"},[d("div",us,[c(a.$slots,"nav-screen-content-before",{},void 0,!0),k(ss,{class:"menu"}),k(cs,{class:"translations"}),k(Oo,{class:"appearance"}),k(is,{class:"social-links"}),c(a.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):m("",!0)]),_:3}))}}),vs=g(ds,[["__scopeId","data-v-424bec18"]]),fs={key:0,class:"VPNav"},hs=p({__name:"VPNav",setup(e){const{isScreenOpen:t,closeScreen:n,toggleScreen:a}=la(),{frontmatter:o}=L(),r=y(()=>o.value.navbar!==!1);return Te("close-screen",n),X(()=>{ee&&document.documentElement.classList.toggle("hide-nav",!r.value)}),(l,v)=>r.value?(s(),u("header",fs,[k(Bo,{"is-screen-open":i(t),onToggleScreen:i(a)},{"nav-bar-title-before":h(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":h(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":h(()=>[c(l.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":h(()=>[c(l.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),k(vs,{open:i(t)},{"nav-screen-content-before":h(()=>[c(l.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":h(()=>[c(l.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):m("",!0)}}),ms=g(hs,[["__scopeId","data-v-39691f49"]]),ps=["role","tabindex"],ks={key:1,class:"items"},_s=p({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(e){const t=e,{collapsed:n,collapsible:a,isLink:o,isActiveLink:r,hasActiveLink:l,hasChildren:v,toggle:f}=dt(y(()=>t.item)),$=y(()=>v.value?"section":"div"),V=y(()=>o.value?"a":"div"),b=y(()=>v.value?t.depth+2===7?"p":`h${t.depth+2}`:"p"),P=y(()=>o.value?void 0:"button"),T=y(()=>[[`level-${t.depth}`],{collapsible:a.value},{collapsed:n.value},{"is-link":o.value},{"is-active":r.value},{"has-active":l.value}]);function I(C){"key"in C&&C.key!=="Enter"||!t.item.link&&f()}function w(){t.item.link&&f()}return(C,H)=>{const O=W("VPSidebarItem",!0);return s(),_(B($.value),{class:N(["VPSidebarItem",T.value])},{default:h(()=>[e.item.text?(s(),u("div",G({key:0,class:"item",role:P.value},je(e.item.items?{click:I,keydown:I}:{},!0),{tabindex:e.item.items&&0}),[H[1]||(H[1]=d("div",{class:"indicator"},null,-1)),e.item.link?(s(),_(E,{key:0,tag:V.value,class:"link",href:e.item.link,rel:e.item.rel,target:e.item.target},{default:h(()=>[(s(),_(B(b.value),{class:"text",innerHTML:e.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(s(),_(B(b.value),{key:1,class:"text",innerHTML:e.item.text},null,8,["innerHTML"])),e.item.collapsed!=null&&e.item.items&&e.item.items.length?(s(),u("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:w,onKeydown:ze(w,["enter"]),tabindex:"0"},[...H[0]||(H[0]=[d("span",{class:"vpi-chevron-right caret-icon"},null,-1)])],32)):m("",!0)],16,ps)):m("",!0),e.item.items&&e.item.items.length?(s(),u("div",ks,[e.depth<5?(s(!0),u(x,{key:0},A(e.item.items,K=>(s(),_(O,{key:K.text,item:K,depth:e.depth+1},null,8,["item","depth"]))),128)):m("",!0)])):m("",!0)]),_:1},8,["class"])}}}),bs=g(_s,[["__scopeId","data-v-df85d8e3"]]),gs=p({__name:"VPSidebarGroup",props:{items:{}},setup(e){const t=S(!0);let n=null;return U(()=>{n=setTimeout(()=>{n=null,t.value=!1},300)}),We(()=>{n!=null&&(clearTimeout(n),n=null)}),(a,o)=>(s(!0),u(x,null,A(e.items,r=>(s(),u("div",{key:r.text,class:N(["group",{"no-transition":t.value}])},[k(bs,{item:r,depth:0},null,8,["item"])],2))),128))}}),$s=g(gs,[["__scopeId","data-v-60f157c0"]]),ys={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},Ps=p({__name:"VPSidebar",props:{open:{type:Boolean}},setup(e){const{sidebarGroups:t,hasSidebar:n}=D(),a=e,o=S(null),r=Se(ee?document.body:null);F([a,o],()=>{var v;a.open?(r.value=!0,(v=o.value)==null||v.focus()):r.value=!1},{immediate:!0,flush:"post"});const l=S(0);return F(t,()=>{l.value+=1},{deep:!0}),(v,f)=>i(n)?(s(),u("aside",{key:0,class:N(["VPSidebar",{open:e.open}]),ref_key:"navEl",ref:o,onClick:f[0]||(f[0]=Ke(()=>{},["stop"]))},[f[2]||(f[2]=d("div",{class:"curtain"},null,-1)),d("nav",ys,[f[1]||(f[1]=d("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),c(v.$slots,"sidebar-nav-before",{},void 0,!0),(s(),_($s,{items:i(t),key:l.value},null,8,["items"])),c(v.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):m("",!0)}}),Ls=g(Ps,[["__scopeId","data-v-aee49e2a"]]),Vs=p({__name:"VPSkipLink",setup(e){const{theme:t}=L(),n=Q(),a=S();F(()=>n.path,()=>a.value.focus());function o({target:r}){const l=document.getElementById(decodeURIComponent(r.hash).slice(1));if(l){const v=()=>{l.removeAttribute("tabindex"),l.removeEventListener("blur",v)};l.setAttribute("tabindex","-1"),l.addEventListener("blur",v),l.focus(),window.scrollTo(0,0)}}return(r,l)=>(s(),u(x,null,[d("span",{ref_key:"backToTop",ref:a,tabindex:"-1"},null,512),d("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:o},M(i(t).skipToContentLabel||"Skip to content"),1)],64))}}),Ss=g(Vs,[["__scopeId","data-v-639cd3d8"]]),Ts=p({__name:"Layout",setup(e){const{isOpen:t,open:n,close:a}=D(),o=Q();F(()=>o.path,a),ut(t,a);const{frontmatter:r}=L(),l=qe(),v=y(()=>!!l["home-hero-image"]);return Te("hero-image-slot-exists",v),(f,$)=>{const V=W("Content");return i(r).layout!==!1?(s(),u("div",{key:0,class:N(["Layout",i(r).pageClass])},[c(f.$slots,"layout-top",{},void 0,!0),k(Ss),k(Ye,{class:"backdrop",show:i(t),onClick:i(a)},null,8,["show","onClick"]),k(ms,null,{"nav-bar-title-before":h(()=>[c(f.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":h(()=>[c(f.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":h(()=>[c(f.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":h(()=>[c(f.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":h(()=>[c(f.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":h(()=>[c(f.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),k(ra,{open:i(t),onOpenMenu:i(n)},null,8,["open","onOpenMenu"]),k(Ls,{open:i(t)},{"sidebar-nav-before":h(()=>[c(f.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":h(()=>[c(f.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),k(Wn,null,{"page-top":h(()=>[c(f.$slots,"page-top",{},void 0,!0)]),"page-bottom":h(()=>[c(f.$slots,"page-bottom",{},void 0,!0)]),"not-found":h(()=>[c(f.$slots,"not-found",{},void 0,!0)]),"home-hero-before":h(()=>[c(f.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":h(()=>[c(f.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":h(()=>[c(f.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":h(()=>[c(f.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":h(()=>[c(f.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":h(()=>[c(f.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":h(()=>[c(f.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":h(()=>[c(f.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":h(()=>[c(f.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":h(()=>[c(f.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":h(()=>[c(f.$slots,"doc-before",{},void 0,!0)]),"doc-after":h(()=>[c(f.$slots,"doc-after",{},void 0,!0)]),"doc-top":h(()=>[c(f.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":h(()=>[c(f.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":h(()=>[c(f.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":h(()=>[c(f.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":h(()=>[c(f.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":h(()=>[c(f.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":h(()=>[c(f.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":h(()=>[c(f.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),k(Xn),c(f.$slots,"layout-bottom",{},void 0,!0)],2)):(s(),_(V,{key:1}))}}}),Ns=g(Ts,[["__scopeId","data-v-ecfbf7a9"]]),xs={Layout:Ns,enhanceApp:({app:e})=>{e.component("Badge",Re)}};export{uo as c,xs as t,L as u}; diff --git a/assets/cli_auth.md.DPl-4zFk.js b/assets/cli_auth.md.DPl-4zFk.js new file mode 100644 index 00000000..01bc2fa6 --- /dev/null +++ b/assets/cli_auth.md.DPl-4zFk.js @@ -0,0 +1 @@ +import{_ as e,o as s,c as t,ag as i}from"./chunks/framework.DEqXEGcv.js";const u=JSON.parse('{"title":"Auth Commands","description":"","frontmatter":{},"headers":[],"relativePath":"cli/auth.md","filePath":"cli/auth.md","lastUpdated":1771161622000}'),o={name:"cli/auth.md"};function n(l,a,h,r,d,p){return s(),t("div",null,[...a[0]||(a[0]=[i('

Auth Commands

login

Log in to the Memoh server. Prompts for username and password, then stores the JWT token in ~/.memoh/token.json.

bash
memoh login

Interactive prompts:

  • Username
  • Password

logout

Clear the stored token and log out.

bash
memoh logout

whoami

Show the current logged-in user (username, display name, user ID, role). Falls back to token info if the API call fails.

bash
memoh whoami
',12)])])}const m=e(o,[["render",n]]);export{u as __pageData,m as default}; diff --git a/assets/cli_auth.md.DPl-4zFk.lean.js b/assets/cli_auth.md.DPl-4zFk.lean.js new file mode 100644 index 00000000..f0f43e0f --- /dev/null +++ b/assets/cli_auth.md.DPl-4zFk.lean.js @@ -0,0 +1 @@ +import{_ as e,o as s,c as t,ag as i}from"./chunks/framework.DEqXEGcv.js";const u=JSON.parse('{"title":"Auth Commands","description":"","frontmatter":{},"headers":[],"relativePath":"cli/auth.md","filePath":"cli/auth.md","lastUpdated":1771161622000}'),o={name:"cli/auth.md"};function n(l,a,h,r,d,p){return s(),t("div",null,[...a[0]||(a[0]=[i("",12)])])}const m=e(o,[["render",n]]);export{u as __pageData,m as default}; diff --git a/assets/cli_bot.md.B2YOOp9H.js b/assets/cli_bot.md.B2YOOp9H.js new file mode 100644 index 00000000..f3410505 --- /dev/null +++ b/assets/cli_bot.md.B2YOOp9H.js @@ -0,0 +1 @@ +import{_ as a,o as e,c as s,ag as i}from"./chunks/framework.DEqXEGcv.js";const b=JSON.parse('{"title":"Bot Commands","description":"","frontmatter":{},"headers":[],"relativePath":"cli/bot.md","filePath":"cli/bot.md","lastUpdated":1771161622000}'),d={name:"cli/bot.md"};function o(h,t,l,n,p,r){return e(),s("div",null,[...t[0]||(t[0]=[i('

Bot Commands

Manage bots and chat with them.

bot list

List all bots. Admins can filter by owner.

bash
memoh bot list [options]
OptionDescription
--owner <user_id>Filter by owner user ID (admin only)

bot create

Create a new bot. Prompts for type and optionally name.

bash
memoh bot create [options]
OptionDescription
--type <type>personal or public
--name <name>Display name
--avatar <url>Avatar URL
--activeSet bot active
--inactiveSet bot inactive

bot update

Update bot info. Bot ID can be passed as argument or selected interactively.

bash
memoh bot update [id] [options]
OptionDescription
--name <name>Display name
--avatar <url>Avatar URL
--activeSet bot active
--inactiveSet bot inactive

bot delete

Delete a bot. Asks for confirmation.

bash
memoh bot delete [id]

bot chat

Start an interactive streaming chat with a bot.

bash
memoh bot chat [id]

Type messages and press Enter. Type exit to quit.

bot set-model

Enable a model for a bot (chat, memory, or embedding).

bash
memoh bot set-model [id] [options]
OptionDescription
--as <usage>chat, memory, or embedding
--model <model_id>Model ID

Example:

bash
memoh bot set-model my-bot-id --as chat --model gpt-4
',27)])])}const k=a(d,[["render",o]]);export{b as __pageData,k as default}; diff --git a/assets/cli_bot.md.B2YOOp9H.lean.js b/assets/cli_bot.md.B2YOOp9H.lean.js new file mode 100644 index 00000000..622a81ad --- /dev/null +++ b/assets/cli_bot.md.B2YOOp9H.lean.js @@ -0,0 +1 @@ +import{_ as a,o as e,c as s,ag as i}from"./chunks/framework.DEqXEGcv.js";const b=JSON.parse('{"title":"Bot Commands","description":"","frontmatter":{},"headers":[],"relativePath":"cli/bot.md","filePath":"cli/bot.md","lastUpdated":1771161622000}'),d={name:"cli/bot.md"};function o(h,t,l,n,p,r){return e(),s("div",null,[...t[0]||(t[0]=[i("",27)])])}const k=a(d,[["render",o]]);export{b as __pageData,k as default}; diff --git a/assets/cli_channel.md.T-qsPRZ9.js b/assets/cli_channel.md.T-qsPRZ9.js new file mode 100644 index 00000000..642b9bbc --- /dev/null +++ b/assets/cli_channel.md.T-qsPRZ9.js @@ -0,0 +1 @@ +import{_ as a,o as e,c as i,ag as s}from"./chunks/framework.DEqXEGcv.js";const k=JSON.parse('{"title":"Channel Commands","description":"","frontmatter":{},"headers":[],"relativePath":"cli/channel.md","filePath":"cli/channel.md","lastUpdated":1771161622000}'),n={name:"cli/channel.md"};function h(l,t,d,o,p,c){return e(),i("div",null,[...t[0]||(t[0]=[s('

Channel Commands

Manage channels and bot/user channel configuration.

channel list

List available channel types (e.g. telegram, feishu, local).

bash
memoh channel list

channel info

Show channel metadata and schema for a channel type.

bash
memoh channel info [type]

If type is omitted, prompts to select from available channels.

channel config get

Get a bot's channel configuration.

bash
memoh channel config get [bot_id] [options]
OptionDescription
--type <type>Channel type

channel config set

Set a bot's channel configuration. Currently supports Feishu.

bash
memoh channel config set [bot_id] [options]
OptionDescription
--type <type>Channel type (e.g. feishu)
--app_id <id>Feishu App ID
--app_secret <secret>Feishu App Secret
--encrypt_key <key>Encrypt key (optional)
--verification_token <token>Verification token (optional)

channel bind get

Get the current user's channel binding for a platform.

bash
memoh channel bind get [options]
OptionDescription
--type <type>Channel type

channel bind set

Set the current user's channel binding. Currently supports Feishu (open_id or user_id).

bash
memoh channel bind set [options]
OptionDescription
--type <type>Channel type (e.g. feishu)
--open_id <id>Feishu Open ID
--user_id <id>Feishu User ID
',25)])])}const g=a(n,[["render",h]]);export{k as __pageData,g as default}; diff --git a/assets/cli_channel.md.T-qsPRZ9.lean.js b/assets/cli_channel.md.T-qsPRZ9.lean.js new file mode 100644 index 00000000..d445ace2 --- /dev/null +++ b/assets/cli_channel.md.T-qsPRZ9.lean.js @@ -0,0 +1 @@ +import{_ as a,o as e,c as i,ag as s}from"./chunks/framework.DEqXEGcv.js";const k=JSON.parse('{"title":"Channel Commands","description":"","frontmatter":{},"headers":[],"relativePath":"cli/channel.md","filePath":"cli/channel.md","lastUpdated":1771161622000}'),n={name:"cli/channel.md"};function h(l,t,d,o,p,c){return e(),i("div",null,[...t[0]||(t[0]=[s("",25)])])}const g=a(n,[["render",h]]);export{k as __pageData,g as default}; diff --git a/assets/cli_chat.md.LOg8zrpn.js b/assets/cli_chat.md.LOg8zrpn.js new file mode 100644 index 00000000..63a95204 --- /dev/null +++ b/assets/cli_chat.md.LOg8zrpn.js @@ -0,0 +1,3 @@ +import{_ as a,o as s,c as i,ag as e}from"./chunks/framework.DEqXEGcv.js";const k=JSON.parse('{"title":"Chat Commands","description":"","frontmatter":{},"headers":[],"relativePath":"cli/chat.md","filePath":"cli/chat.md","lastUpdated":1771161622000}'),h={name:"cli/chat.md"};function n(o,t,l,d,p,r){return s(),i("div",null,[...t[0]||(t[0]=[e(`

Chat Commands

Default: Interactive Chat

Running memoh with no subcommand starts an interactive chat. Use --bot <id> to specify which bot to chat with; otherwise you'll be prompted to select one.

bash
memoh [options]
+memoh --bot <bot_id>
OptionDescription
--bot <id>Bot ID to chat with

Type your message and press Enter. Type exit to quit. Responses stream in real time.

tui

Terminal UI chat session. Same behavior as the default chat but explicitly invoked.

bash
memoh tui [options]
+memoh tui --bot <bot_id>
OptionDescription
--bot <id>Bot ID to chat with

version

Show the CLI version.

bash
memoh version
`,13)])])}const b=a(h,[["render",n]]);export{k as __pageData,b as default}; diff --git a/assets/cli_chat.md.LOg8zrpn.lean.js b/assets/cli_chat.md.LOg8zrpn.lean.js new file mode 100644 index 00000000..2cf1d596 --- /dev/null +++ b/assets/cli_chat.md.LOg8zrpn.lean.js @@ -0,0 +1 @@ +import{_ as a,o as s,c as i,ag as e}from"./chunks/framework.DEqXEGcv.js";const k=JSON.parse('{"title":"Chat Commands","description":"","frontmatter":{},"headers":[],"relativePath":"cli/chat.md","filePath":"cli/chat.md","lastUpdated":1771161622000}'),h={name:"cli/chat.md"};function n(o,t,l,d,p,r){return s(),i("div",null,[...t[0]||(t[0]=[e("",13)])])}const b=a(h,[["render",n]]);export{k as __pageData,b as default}; diff --git a/assets/cli_config.md.C-0Xv0hx.js b/assets/cli_config.md.C-0Xv0hx.js new file mode 100644 index 00000000..a452acbe --- /dev/null +++ b/assets/cli_config.md.C-0Xv0hx.js @@ -0,0 +1,4 @@ +import{_ as a,o as i,c as t,ag as e}from"./chunks/framework.DEqXEGcv.js";const g=JSON.parse('{"title":"Config Commands","description":"","frontmatter":{},"headers":[],"relativePath":"cli/config.md","filePath":"cli/config.md","lastUpdated":1771161622000}'),n={name:"cli/config.md"};function o(p,s,h,l,d,c){return i(),t("div",null,[...s[0]||(s[0]=[e(`

Config Commands

The CLI stores its config in ~/.memoh/config.toml. Use these commands to view or update it.

config

Show the current config (host and port).

bash
memoh config

Output example:

host = "127.0.0.1"
+port = 8080

config set

Update the config. Prompts for host and port if not provided via options.

bash
memoh config set [options]
OptionDescription
--host <host>API host (e.g. 127.0.0.1 or api.example.com)
--port <port>API port (default: 8080)

Examples:

bash
memoh config set --host 192.168.1.100 --port 8080
+memoh config set
+# Interactive prompts for host and port
`,13)])])}const k=a(n,[["render",o]]);export{g as __pageData,k as default}; diff --git a/assets/cli_config.md.C-0Xv0hx.lean.js b/assets/cli_config.md.C-0Xv0hx.lean.js new file mode 100644 index 00000000..baf5fe95 --- /dev/null +++ b/assets/cli_config.md.C-0Xv0hx.lean.js @@ -0,0 +1 @@ +import{_ as a,o as i,c as t,ag as e}from"./chunks/framework.DEqXEGcv.js";const g=JSON.parse('{"title":"Config Commands","description":"","frontmatter":{},"headers":[],"relativePath":"cli/config.md","filePath":"cli/config.md","lastUpdated":1771161622000}'),n={name:"cli/config.md"};function o(p,s,h,l,d,c){return i(),t("div",null,[...s[0]||(s[0]=[e("",13)])])}const k=a(n,[["render",o]]);export{g as __pageData,k as default}; diff --git a/assets/cli_index.md.CTMBSccU.js b/assets/cli_index.md.CTMBSccU.js new file mode 100644 index 00000000..d20ac4d5 --- /dev/null +++ b/assets/cli_index.md.CTMBSccU.js @@ -0,0 +1,7 @@ +import{_ as a,o as e,c as s,ag as i}from"./chunks/framework.DEqXEGcv.js";const m=JSON.parse('{"title":"Memoh CLI","description":"","frontmatter":{},"headers":[],"relativePath":"cli/index.md","filePath":"cli/index.md","lastUpdated":1771161622000}'),n={name:"cli/index.md"};function h(o,t,l,d,r,p){return e(),s("div",null,[...t[0]||(t[0]=[i(`

Memoh CLI

The Memoh CLI (memoh) is a command-line tool for managing bots, channels, providers, models, schedules, and chatting with bots. It talks to a running Memoh server via its API.

Installation

The CLI is part of the Memoh monorepo. Install from source:

bash
git clone https://github.com/memohai/Memoh.git
+cd Memoh
+pnpm install

Run the CLI:

bash
cd packages/cli
+pnpm start -- --help

To use memoh as a global command:

bash
cd packages/cli
+pnpm build
+pnpm link --global
+memoh --help

Ensure your Memoh server is running (see Docker installation) and the API is reachable at the configured host/port (default: 127.0.0.1:8080).

Configuration

The CLI stores config in ~/.memoh/config.toml and auth token in ~/.memoh/token.json. Use memoh config to view and memoh config set to change host/port.

Commands

CommandDescription
loginLog in to the Memoh server
logoutLog out and clear token
whoamiShow current user
configShow or update CLI config (host, port)
providerList, create, delete LLM providers
modelList, create, delete models
botList, create, update, delete bots; chat; set model
channelList channels; get/set bot channel config; get/set user binding
scheduleList, create, update, toggle, delete bot schedules
chatInteractive chat with a bot (default command)
tuiTerminal UI chat session
versionShow CLI version

Most commands require authentication. Run memoh login first.

`,15)])])}const k=a(n,[["render",h]]);export{m as __pageData,k as default}; diff --git a/assets/cli_index.md.CTMBSccU.lean.js b/assets/cli_index.md.CTMBSccU.lean.js new file mode 100644 index 00000000..e925c11f --- /dev/null +++ b/assets/cli_index.md.CTMBSccU.lean.js @@ -0,0 +1 @@ +import{_ as a,o as e,c as s,ag as i}from"./chunks/framework.DEqXEGcv.js";const m=JSON.parse('{"title":"Memoh CLI","description":"","frontmatter":{},"headers":[],"relativePath":"cli/index.md","filePath":"cli/index.md","lastUpdated":1771161622000}'),n={name:"cli/index.md"};function h(o,t,l,d,r,p){return e(),s("div",null,[...t[0]||(t[0]=[i("",15)])])}const k=a(n,[["render",h]]);export{m as __pageData,k as default}; diff --git a/assets/cli_model.md.Bp0XdM9y.js b/assets/cli_model.md.Bp0XdM9y.js new file mode 100644 index 00000000..7f474a32 --- /dev/null +++ b/assets/cli_model.md.Bp0XdM9y.js @@ -0,0 +1,4 @@ +import{_ as i,o as a,c as e,ag as t}from"./chunks/framework.DEqXEGcv.js";const m=JSON.parse('{"title":"Model Commands","description":"","frontmatter":{},"headers":[],"relativePath":"cli/model.md","filePath":"cli/model.md","lastUpdated":1771161622000}'),d={name:"cli/model.md"};function l(h,s,n,p,o,k){return a(),e("div",null,[...s[0]||(s[0]=[t(`

Model Commands

Manage chat and embedding models.

model list

List all models with their provider, type, and multimodal flag.

bash
memoh model list

model create

Create a new model. Prompts for provider, model ID, type, and (for embedding models) dimensions.

bash
memoh model create [options]
OptionDescription
--model_id <id>Model ID (e.g. gpt-4, text-embedding-3-small)
--name <name>Display name
--provider <provider>Provider name
--type <type>chat or embedding
--dimensions <n>Embedding dimensions (required for embedding models)
--multimodalMark as multimodal

Examples:

bash
memoh model create --model_id gpt-4 --provider my-openai --type chat
+memoh model create --model_id text-embedding-3-small --provider my-openai --type embedding --dimensions 1536
+memoh model create
+# Interactive prompts

model delete

Delete a model by model ID.

bash
memoh model delete --model <model_id>

Example:

bash
memoh model delete --model gpt-4
`,16)])])}const c=i(d,[["render",l]]);export{m as __pageData,c as default}; diff --git a/assets/cli_model.md.Bp0XdM9y.lean.js b/assets/cli_model.md.Bp0XdM9y.lean.js new file mode 100644 index 00000000..5c1f5a58 --- /dev/null +++ b/assets/cli_model.md.Bp0XdM9y.lean.js @@ -0,0 +1 @@ +import{_ as i,o as a,c as e,ag as t}from"./chunks/framework.DEqXEGcv.js";const m=JSON.parse('{"title":"Model Commands","description":"","frontmatter":{},"headers":[],"relativePath":"cli/model.md","filePath":"cli/model.md","lastUpdated":1771161622000}'),d={name:"cli/model.md"};function l(h,s,n,p,o,k){return a(),e("div",null,[...s[0]||(s[0]=[t("",16)])])}const c=i(d,[["render",l]]);export{m as __pageData,c as default}; diff --git a/assets/cli_provider.md.CEEKGN01.js b/assets/cli_provider.md.CEEKGN01.js new file mode 100644 index 00000000..00bc47db --- /dev/null +++ b/assets/cli_provider.md.CEEKGN01.js @@ -0,0 +1,4 @@ +import{_ as s,o as a,c as e,ag as t}from"./chunks/framework.DEqXEGcv.js";const c=JSON.parse('{"title":"Provider Commands","description":"","frontmatter":{},"headers":[],"relativePath":"cli/provider.md","filePath":"cli/provider.md","lastUpdated":1771161622000}'),p={name:"cli/provider.md"};function d(l,i,h,n,r,o){return a(),e("div",null,[...i[0]||(i[0]=[t(`

Provider Commands

Manage LLM providers (OpenAI, Anthropic, Ollama, etc.).

provider list

List all providers. Optionally filter by provider name.

bash
memoh provider list [options]
OptionDescription
--provider <name>Filter by provider name

Examples:

bash
memoh provider list
+memoh provider list --provider my-openai

provider create

Create a new provider. Prompts for any missing fields.

bash
memoh provider create [options]
OptionDescription
--name <name>Provider name
--type <type>Client type
--base_url <url>Base URL for the API
--api_key <key>API key

Supported client types: openai, openai-compat, anthropic, google, azure, bedrock, mistral, xai, ollama, dashscope

Examples:

bash
memoh provider create --name my-ollama --type ollama --base_url http://localhost:11434
+memoh provider create
+# Interactive prompts

provider delete

Delete a provider by name.

bash
memoh provider delete --provider <name>

Example:

bash
memoh provider delete --provider my-ollama
`,20)])])}const F=s(p,[["render",d]]);export{c as __pageData,F as default}; diff --git a/assets/cli_provider.md.CEEKGN01.lean.js b/assets/cli_provider.md.CEEKGN01.lean.js new file mode 100644 index 00000000..f0063f7d --- /dev/null +++ b/assets/cli_provider.md.CEEKGN01.lean.js @@ -0,0 +1 @@ +import{_ as s,o as a,c as e,ag as t}from"./chunks/framework.DEqXEGcv.js";const c=JSON.parse('{"title":"Provider Commands","description":"","frontmatter":{},"headers":[],"relativePath":"cli/provider.md","filePath":"cli/provider.md","lastUpdated":1771161622000}'),p={name:"cli/provider.md"};function d(l,i,h,n,r,o){return a(),e("div",null,[...i[0]||(i[0]=[t("",20)])])}const F=s(p,[["render",d]]);export{c as __pageData,F as default}; diff --git a/assets/cli_schedule.md.DSG0HQuo.js b/assets/cli_schedule.md.DSG0HQuo.js new file mode 100644 index 00000000..dba54067 --- /dev/null +++ b/assets/cli_schedule.md.DSG0HQuo.js @@ -0,0 +1 @@ +import{_ as t,o as i,c as a,ag as e}from"./chunks/framework.DEqXEGcv.js";const c=JSON.parse('{"title":"Schedule Commands","description":"","frontmatter":{},"headers":[],"relativePath":"cli/schedule.md","filePath":"cli/schedule.md","lastUpdated":1771161622000}'),d={name:"cli/schedule.md"};function h(l,s,n,p,k,r){return i(),a("div",null,[...s[0]||(s[0]=[e('

Schedule Commands

Manage cron-based schedules for bots. All schedule commands require --bot <id> to specify the bot.

schedule list

List all schedules for a bot.

bash
memoh schedule list --bot <bot_id>

schedule get

Get a schedule by ID.

bash
memoh schedule get <id> --bot <bot_id>

schedule create

Create a new schedule. Prompts for name, description, cron pattern, command, and optional max calls.

bash
memoh schedule create [options] --bot <bot_id>
OptionDescription
--name <name>Schedule name
--description <desc>Description
--pattern <pattern>Cron pattern (e.g. 0 9 * * * for daily at 9am)
--command <cmd>Command to run in the bot container
--max_calls <n>Max executions (optional, empty for unlimited)
--enabledCreate as enabled
--disabledCreate as disabled

schedule update

Update a schedule.

bash
memoh schedule update <id> [options] --bot <bot_id>
OptionDescription
--name <name>Schedule name
--description <desc>Description
--pattern <pattern>Cron pattern
--command <cmd>Command
--max_calls <n>Max executions
--enabledEnable
--disabledDisable

schedule toggle

Enable or disable a schedule (flip current state).

bash
memoh schedule toggle <id> --bot <bot_id>

schedule delete

Delete a schedule.

bash
memoh schedule delete <id> --bot <bot_id>
',22)])])}const g=t(d,[["render",h]]);export{c as __pageData,g as default}; diff --git a/assets/cli_schedule.md.DSG0HQuo.lean.js b/assets/cli_schedule.md.DSG0HQuo.lean.js new file mode 100644 index 00000000..d60ba1db --- /dev/null +++ b/assets/cli_schedule.md.DSG0HQuo.lean.js @@ -0,0 +1 @@ +import{_ as t,o as i,c as a,ag as e}from"./chunks/framework.DEqXEGcv.js";const c=JSON.parse('{"title":"Schedule Commands","description":"","frontmatter":{},"headers":[],"relativePath":"cli/schedule.md","filePath":"cli/schedule.md","lastUpdated":1771161622000}'),d={name:"cli/schedule.md"};function h(l,s,n,p,k,r){return i(),a("div",null,[...s[0]||(s[0]=[e("",22)])])}const g=t(d,[["render",h]]);export{c as __pageData,g as default}; diff --git a/assets/getting-started.md.B8NVZwU9.js b/assets/getting-started.md.B8NVZwU9.js deleted file mode 100644 index 88efa294..00000000 --- a/assets/getting-started.md.B8NVZwU9.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as a,o as r,c as n,j as e,a as s}from"./chunks/framework.DEqXEGcv.js";const f=JSON.parse('{"title":"Getting Started","description":"","frontmatter":{},"headers":[],"relativePath":"getting-started.md","filePath":"getting-started.md","lastUpdated":1770046483000}'),d={name:"getting-started.md"};function i(o,t,g,c,l,p){return r(),n("div",null,[...t[0]||(t[0]=[e("h1",{id:"getting-started",tabindex:"-1"},[s("Getting Started "),e("a",{class:"header-anchor",href:"#getting-started","aria-label":'Permalink to "Getting Started"'},"​")],-1)])])}const _=a(d,[["render",i]]);export{f as __pageData,_ as default}; diff --git a/assets/getting-started.md.B8NVZwU9.lean.js b/assets/getting-started.md.B8NVZwU9.lean.js deleted file mode 100644 index 88efa294..00000000 --- a/assets/getting-started.md.B8NVZwU9.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as a,o as r,c as n,j as e,a as s}from"./chunks/framework.DEqXEGcv.js";const f=JSON.parse('{"title":"Getting Started","description":"","frontmatter":{},"headers":[],"relativePath":"getting-started.md","filePath":"getting-started.md","lastUpdated":1770046483000}'),d={name:"getting-started.md"};function i(o,t,g,c,l,p){return r(),n("div",null,[...t[0]||(t[0]=[e("h1",{id:"getting-started",tabindex:"-1"},[s("Getting Started "),e("a",{class:"header-anchor",href:"#getting-started","aria-label":'Permalink to "Getting Started"'},"​")],-1)])])}const _=a(d,[["render",i]]);export{f as __pageData,_ as default}; diff --git a/assets/getting-started.md.DF97X5A_.js b/assets/getting-started.md.DF97X5A_.js new file mode 100644 index 00000000..87432e27 --- /dev/null +++ b/assets/getting-started.md.DF97X5A_.js @@ -0,0 +1 @@ +import{_ as t,o as a,c as o,ag as i}from"./chunks/framework.DEqXEGcv.js";const u=JSON.parse('{"title":"Getting Started","description":"","frontmatter":{},"headers":[],"relativePath":"getting-started.md","filePath":"getting-started.md","lastUpdated":1771161622000}'),n={name:"getting-started.md"};function r(l,e,s,c,d,h){return a(),o("div",null,[...e[0]||(e[0]=[i('

Getting Started

What is Memoh?

Memoh is a multi-member, structured long-memory, containerized AI agent system platform. You can create your own AI bots and chat with them via Telegram, Lark (Feishu), and more. Every bot has an independent container and memory system, allowing it to edit files, execute commands, and access the network within its own container — like having its own computer.

Key Features

Multi-Bot Management

Create multiple bots. Humans and bots, or bots with each other, can chat privately, in groups, or collaborate. Build bot teams, or set up accounts for family members to manage daily tasks with bots.

Containerized Isolation

Each bot runs in its own isolated container (powered by Containerd) with a separate filesystem and network. Bots can freely read/write files and execute commands within their containers without interfering with each other.

Memory Engineering

A deeply engineered memory layer inspired by Mem0:

  • Automatically extracts key facts from each conversation turn and stores them as structured memories
  • Supports semantic search (via Qdrant vector database) and keyword retrieval (BM25)
  • Loads the last 24 hours of conversation context by default
  • Automatic memory compaction to keep the memory store lean
  • Multi-language auto-detection

Multi-Platform Support

Unified channel adapter architecture for connecting to multiple messaging platforms:

  • Telegram — Full support with streaming, Markdown, attachments, and replies
  • Lark (Feishu) — Full support
  • Web — Built-in web chat interface
  • CLI — Command-line chat

Agent Capabilities

Bots come with a rich set of built-in tools:

  • Web Search — Brave Search integration for real-time information
  • Subagents — Create specialized subagents, assign skills, and delegate complex tasks
  • Skills — Configurable skill system to extend bot capabilities
  • Container Operations — Read/write files, edit code, and execute commands inside the container
  • Memory Management — Search and manage memories
  • Messaging — Send messages and reactions

Multi-LLM Provider Support

Flexibly switch between a wide range of LLM providers:

  • OpenAI, Anthropic, Google, Azure, AWS Bedrock
  • Mistral, XAI, Ollama, Dashscope (Qwen), and more

MCP Protocol Support

Supports Model Context Protocol (MCP) via HTTP and SSE to connect external tool services. Each bot can have its own independent MCP connections.

Scheduled Tasks

Configure scheduled tasks using cron expressions to automatically run commands at specified times. Supports max execution count limits and manual triggers.

Graphical Configuration

Configure bots, channels, providers, models, MCP, skills, and all other settings through a web management UI — no coding required to set up your own AI bot.

CLI Tool

A command-line tool for bot management, channel configuration, model management, streaming chat, and more — designed for developers who prefer the terminal. See CLI documentation.

Installation

To get Memoh running:

  • Docker — Recommended. One-click or manual setup with Docker Compose. Includes all services (PostgreSQL, Qdrant, Containerd, server, agent, web) — no extra dependencies on the host.
  • config.toml — Reference for all configuration fields.
',31)])])}const p=t(n,[["render",r]]);export{u as __pageData,p as default}; diff --git a/assets/getting-started.md.DF97X5A_.lean.js b/assets/getting-started.md.DF97X5A_.lean.js new file mode 100644 index 00000000..a67dc840 --- /dev/null +++ b/assets/getting-started.md.DF97X5A_.lean.js @@ -0,0 +1 @@ +import{_ as t,o as a,c as o,ag as i}from"./chunks/framework.DEqXEGcv.js";const u=JSON.parse('{"title":"Getting Started","description":"","frontmatter":{},"headers":[],"relativePath":"getting-started.md","filePath":"getting-started.md","lastUpdated":1771161622000}'),n={name:"getting-started.md"};function r(l,e,s,c,d,h){return a(),o("div",null,[...e[0]||(e[0]=[i("",31)])])}const p=t(n,[["render",r]]);export{u as __pageData,p as default}; diff --git a/assets/index.md.DCIshPcM.js b/assets/index.md.DCIshPcM.js deleted file mode 100644 index 8028f1a9..00000000 --- a/assets/index.md.DCIshPcM.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,o,c as a,ag as n}from"./chunks/framework.DEqXEGcv.js";const h=JSON.parse('{"title":"Memoh Documentation","description":"","frontmatter":{},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":1770887583000}'),i={name:"index.md"};function r(c,t,s,l,u,m){return o(),a("div",null,[...t[0]||(t[0]=[n('

Memoh Documentation

Memoh is a multi-member, long-memory, containerized AI agent system.

Documentation Sections

For Contributors

Current Focus

The current documentation iteration focuses on account semantics:

  • Distinguishing system accounts and platform accounts
  • Explaining why account linking is account-scoped
  • Clarifying the relationship between account linking and bot access

Note: "platform account" means the user's account on external platforms (for example, TG), not a Memoh account.

',10)])])}const p=e(i,[["render",r]]);export{h as __pageData,p as default}; diff --git a/assets/index.md.DCIshPcM.lean.js b/assets/index.md.DCIshPcM.lean.js deleted file mode 100644 index 47fec712..00000000 --- a/assets/index.md.DCIshPcM.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,o,c as a,ag as n}from"./chunks/framework.DEqXEGcv.js";const h=JSON.parse('{"title":"Memoh Documentation","description":"","frontmatter":{},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":1770887583000}'),i={name:"index.md"};function r(c,t,s,l,u,m){return o(),a("div",null,[...t[0]||(t[0]=[n("",10)])])}const p=e(i,[["render",r]]);export{h as __pageData,p as default}; diff --git a/assets/index.md.XthB7km1.js b/assets/index.md.XthB7km1.js new file mode 100644 index 00000000..eaa68e1e --- /dev/null +++ b/assets/index.md.XthB7km1.js @@ -0,0 +1 @@ +import{_ as e,o,c as a,ag as n}from"./chunks/framework.DEqXEGcv.js";const u=JSON.parse('{"title":"Memoh Documentation","description":"","frontmatter":{},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":1771161622000}'),r={name:"index.md"};function i(s,t,l,c,m,d){return o(),a("div",null,[...t[0]||(t[0]=[n('

Memoh Documentation

Memoh is a multi-member, structured long-memory, containerized AI agent system. Create your own AI bots, chat with them via Telegram, Lark (Feishu), Web, or CLI. Each bot runs in an isolated container with its own memory system — able to edit files, run commands, and access the network.

Documentation

For Contributors

',6)])])}const f=e(r,[["render",i]]);export{u as __pageData,f as default}; diff --git a/assets/index.md.XthB7km1.lean.js b/assets/index.md.XthB7km1.lean.js new file mode 100644 index 00000000..fd2cdbe9 --- /dev/null +++ b/assets/index.md.XthB7km1.lean.js @@ -0,0 +1 @@ +import{_ as e,o,c as a,ag as n}from"./chunks/framework.DEqXEGcv.js";const u=JSON.parse('{"title":"Memoh Documentation","description":"","frontmatter":{},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":1771161622000}'),r={name:"index.md"};function i(s,t,l,c,m,d){return o(),a("div",null,[...t[0]||(t[0]=[n("",6)])])}const f=e(r,[["render",i]]);export{u as __pageData,f as default}; diff --git a/assets/installation_config-toml.md.DLEOCXmn.js b/assets/installation_config-toml.md.DLEOCXmn.js new file mode 100644 index 00000000..9ad10ae4 --- /dev/null +++ b/assets/installation_config-toml.md.DLEOCXmn.js @@ -0,0 +1,51 @@ +import{_ as s,o as a,c as e,ag as i}from"./chunks/framework.DEqXEGcv.js";const k=JSON.parse('{"title":"config.toml Reference","description":"","frontmatter":{},"headers":[],"relativePath":"installation/config-toml.md","filePath":"installation/config-toml.md","lastUpdated":1771161622000}'),d={name:"installation/config-toml.md"};function n(o,t,h,r,l,p){return a(),e("div",null,[...t[0]||(t[0]=[i(`

config.toml Reference

Memoh uses a TOML configuration file. By default it looks for config.toml in the current directory. With Docker, you can mount a custom config via MEMOH_CONFIG (see Docker installation).

Full Example

toml
[log]
+level = "info"
+format = "text"
+
+[server]
+addr = ":8080"
+
+[admin]
+username = "admin"
+password = "change-your-password"
+email = "admin@example.com"
+
+[auth]
+jwt_secret = "your-secret-from-openssl-rand-base64-32"
+jwt_expires_in = "168h"
+
+[containerd]
+socket_path = "/run/containerd/containerd.sock"
+namespace = "default"
+
+[mcp]
+image = "docker.io/library/memoh-mcp:latest"
+snapshotter = "overlayfs"
+data_root = "data"
+data_mount = "/data"
+
+[postgres]
+host = "127.0.0.1"
+port = 5432
+user = "postgres"
+password = "your-password"
+database = "memoh"
+sslmode = "disable"
+
+[qdrant]
+base_url = "http://127.0.0.1:6334"
+api_key = ""
+collection = "memory"
+timeout_seconds = 10
+
+[agent_gateway]
+host = "127.0.0.1"
+port = 8081
+
+[web]
+host = "127.0.0.1"
+port = 8082
+
+[brave]
+api_key = ""
+base_url = "https://api.search.brave.com/res/v1/"

Section Reference

[log]

FieldTypeDefaultDescription
levelstring"info"Log level: debug, info, warn, error
formatstring"text"Log format: text or json

[server]

FieldTypeDefaultDescription
addrstring":8080"HTTP listen address. Use :8080 for all interfaces, or host:port (e.g. server:8080 in Docker).

[admin]

FieldTypeDefaultDescription
usernamestring"admin"Admin login username
passwordstringAdmin login password. Change in production.
emailstringAdmin email (for display)

[auth]

FieldTypeDefaultDescription
jwt_secretstringSecret for signing JWT tokens. Required. Generate with openssl rand -base64 32.
jwt_expires_instring"24h"JWT expiration, e.g. "24h", "168h" (7 days)

[containerd]

FieldTypeDefaultDescription
socket_pathstring"/run/containerd/containerd.sock"Path to containerd socket
namespacestring"default"Containerd namespace for bot containers

[mcp]

MCP (Model Context Protocol) container configuration. Each bot runs in a container built from this image.

FieldTypeDefaultDescription
imagestring"docker.io/library/memoh-mcp:latest"MCP container image
snapshotterstring"overlayfs"Containerd snapshotter
data_rootstring"data"Host path for bot data (Docker: /opt/memoh/data)
data_mountstring"/data"Path inside container where data is mounted

[postgres]

FieldTypeDefaultDescription
hoststring"127.0.0.1"PostgreSQL host
portint5432PostgreSQL port
userstring"postgres"Database user
passwordstringDatabase password
databasestring"memoh"Database name
sslmodestring"disable"SSL mode: disable, require, verify-ca, verify-full

[qdrant]

FieldTypeDefaultDescription
base_urlstring"http://127.0.0.1:6334"Qdrant HTTP API URL
api_keystring""Optional API key for Qdrant Cloud
collectionstring"memory"Vector collection name for memories
timeout_secondsint10Request timeout in seconds

[agent_gateway]

FieldTypeDefaultDescription
hoststring"127.0.0.1"Agent gateway bind host
portint8081Agent gateway port

In Docker Compose, host is typically "agent" (service name). The agent reads [server].addr to call the main API.

[web]

FieldTypeDefaultDescription
hoststring"127.0.0.1"Web UI bind host
portint8082Web UI port

[brave]

Brave Search API for the web search tool. Leave api_key empty to disable web search.

FieldTypeDefaultDescription
api_keystring""Brave Search API key. Get one at brave.com/search/api.
base_urlstring"https://api.search.brave.com/res/v1/"Brave Search API base URL
`,30)])])}const E=s(d,[["render",n]]);export{k as __pageData,E as default}; diff --git a/assets/installation_config-toml.md.DLEOCXmn.lean.js b/assets/installation_config-toml.md.DLEOCXmn.lean.js new file mode 100644 index 00000000..d3d4349e --- /dev/null +++ b/assets/installation_config-toml.md.DLEOCXmn.lean.js @@ -0,0 +1 @@ +import{_ as s,o as a,c as e,ag as i}from"./chunks/framework.DEqXEGcv.js";const k=JSON.parse('{"title":"config.toml Reference","description":"","frontmatter":{},"headers":[],"relativePath":"installation/config-toml.md","filePath":"installation/config-toml.md","lastUpdated":1771161622000}'),d={name:"installation/config-toml.md"};function n(o,t,h,r,l,p){return a(),e("div",null,[...t[0]||(t[0]=[i("",30)])])}const E=s(d,[["render",n]]);export{k as __pageData,E as default}; diff --git a/assets/installation_docker.md.xaCmXfCQ.js b/assets/installation_docker.md.xaCmXfCQ.js new file mode 100644 index 00000000..98d73ea5 --- /dev/null +++ b/assets/installation_docker.md.xaCmXfCQ.js @@ -0,0 +1,11 @@ +import{_ as i,o as a,c as e,ag as t}from"./chunks/framework.DEqXEGcv.js";const c=JSON.parse('{"title":"Docker Installation","description":"","frontmatter":{},"headers":[],"relativePath":"installation/docker.md","filePath":"installation/docker.md","lastUpdated":1771161622000}'),n={name:"installation/docker.md"};function l(o,s,h,r,p,d){return a(),e("div",null,[...s[0]||(s[0]=[t(`

Docker Installation

Docker is the recommended way to run Memoh. The stack includes PostgreSQL, Qdrant, Containerd, the main server, agent gateway, and web UI — all orchestrated via Docker Compose. You do not need to install containerd, nerdctl, or buildkit on your host; everything runs inside containers.

Prerequisites

One-Click Install

Run the official install script (requires Docker and Docker Compose):

bash
curl -fsSL https://raw.githubusercontent.com/memohai/Memoh/main/scripts/install.sh | sh

The script will:

  1. Check for Docker and Docker Compose
  2. Prompt for configuration (workspace, data directory, admin credentials, JWT secret, Postgres password)
  3. Clone the repository
  4. Generate config.toml from the Docker template
  5. Start all services with docker compose up -d --build

Silent install (use all defaults, no prompts):

bash
curl -fsSL https://raw.githubusercontent.com/memohai/Memoh/main/scripts/install.sh | sh -s -- -y

Defaults when running silently:

  • Workspace: ~/memoh
  • Data directory: ~/memoh/data
  • Admin: admin / admin123
  • JWT secret: auto-generated
  • Postgres password: memoh123

Manual Install

Clone the repository and start with Docker Compose:

bash
git clone https://github.com/memohai/Memoh.git
+cd Memoh
+docker compose up -d

By default, Docker Compose uses docker/config/config.docker.toml. No config file in the project root is mounted — only this built-in config is used. See config.toml reference for all configuration fields.

Access Points

After startup:

ServiceURL
Web UIhttp://localhost:8082
APIhttp://localhost:8080
Agent Gatewayhttp://localhost:8081

Default login: admin / admin123

First startup may take 1–2 minutes while images build and services initialize.

Custom Configuration

To use your own config file:

  1. Copy the Docker config template and edit it. See config.toml reference for field descriptions:
bash
cp docker/config/config.docker.toml config.toml
+nano config.toml
  1. Point MEMOH_CONFIG at your config when starting (path is on the host; run docker compose from the project root):
bash
MEMOH_CONFIG=./config.toml docker compose up -d

Recommended changes for production (see config.toml reference for details):

  • admin.password — Change the admin password
  • auth.jwt_secret — Generate with openssl rand -base64 32
  • postgres.password — Change the database password (and set POSTGRES_PASSWORD when running docker compose)

Common Commands

bash
docker compose up -d           # Start
+docker compose down            # Stop
+docker compose logs -f         # View logs
+docker compose ps              # Status
+docker compose up -d --build   # Rebuild and restart

Production Checklist

  1. HTTPS — Configure SSL (e.g. via docker-compose.override.yml with certs)
  2. Passwords — Change all default passwords and secrets
  3. Firewall — Restrict access to necessary ports
  4. Resource limits — Set memory/CPU limits for containers
  5. Backups — Regular backups of Postgres and Qdrant data

Troubleshooting

bash
docker compose logs server      # View main service logs
+docker compose logs containerd # View containerd logs
+docker compose config          # Validate configuration
+docker compose build --no-cache && docker compose up -d  # Full rebuild

Security Warnings

  • The main service runs with privileged container access — only run in trusted environments
  • You must change all default passwords and secrets before production use
  • Use HTTPS in production
`,38)])])}const g=i(n,[["render",l]]);export{c as __pageData,g as default}; diff --git a/assets/installation_docker.md.xaCmXfCQ.lean.js b/assets/installation_docker.md.xaCmXfCQ.lean.js new file mode 100644 index 00000000..300d3952 --- /dev/null +++ b/assets/installation_docker.md.xaCmXfCQ.lean.js @@ -0,0 +1 @@ +import{_ as i,o as a,c as e,ag as t}from"./chunks/framework.DEqXEGcv.js";const c=JSON.parse('{"title":"Docker Installation","description":"","frontmatter":{},"headers":[],"relativePath":"installation/docker.md","filePath":"installation/docker.md","lastUpdated":1771161622000}'),n={name:"installation/docker.md"};function l(o,s,h,r,p,d){return a(),e("div",null,[...s[0]||(s[0]=[t("",38)])])}const g=i(n,[["render",l]]);export{c as __pageData,g as default}; diff --git a/cli/auth.html b/cli/auth.html new file mode 100644 index 00000000..7c23be5a --- /dev/null +++ b/cli/auth.html @@ -0,0 +1,26 @@ + + + + + + Auth Commands | Memoh Documentation + + + + + + + + + + + + + + + +
Skip to content

Auth Commands

login

Log in to the Memoh server. Prompts for username and password, then stores the JWT token in ~/.memoh/token.json.

bash
memoh login

Interactive prompts:

  • Username
  • Password

logout

Clear the stored token and log out.

bash
memoh logout

whoami

Show the current logged-in user (username, display name, user ID, role). Falls back to token info if the API call fails.

bash
memoh whoami

Published under AGPLv3

+ + + + \ No newline at end of file diff --git a/cli/bot.html b/cli/bot.html new file mode 100644 index 00000000..de34d5a1 --- /dev/null +++ b/cli/bot.html @@ -0,0 +1,26 @@ + + + + + + Bot Commands | Memoh Documentation + + + + + + + + + + + + + + + +
Skip to content

Bot Commands

Manage bots and chat with them.

bot list

List all bots. Admins can filter by owner.

bash
memoh bot list [options]
OptionDescription
--owner <user_id>Filter by owner user ID (admin only)

bot create

Create a new bot. Prompts for type and optionally name.

bash
memoh bot create [options]
OptionDescription
--type <type>personal or public
--name <name>Display name
--avatar <url>Avatar URL
--activeSet bot active
--inactiveSet bot inactive

bot update

Update bot info. Bot ID can be passed as argument or selected interactively.

bash
memoh bot update [id] [options]
OptionDescription
--name <name>Display name
--avatar <url>Avatar URL
--activeSet bot active
--inactiveSet bot inactive

bot delete

Delete a bot. Asks for confirmation.

bash
memoh bot delete [id]

bot chat

Start an interactive streaming chat with a bot.

bash
memoh bot chat [id]

Type messages and press Enter. Type exit to quit.

bot set-model

Enable a model for a bot (chat, memory, or embedding).

bash
memoh bot set-model [id] [options]
OptionDescription
--as <usage>chat, memory, or embedding
--model <model_id>Model ID

Example:

bash
memoh bot set-model my-bot-id --as chat --model gpt-4

Published under AGPLv3

+ + + + \ No newline at end of file diff --git a/cli/channel.html b/cli/channel.html new file mode 100644 index 00000000..fc0aeb55 --- /dev/null +++ b/cli/channel.html @@ -0,0 +1,26 @@ + + + + + + Channel Commands | Memoh Documentation + + + + + + + + + + + + + + + +
Skip to content

Channel Commands

Manage channels and bot/user channel configuration.

channel list

List available channel types (e.g. telegram, feishu, local).

bash
memoh channel list

channel info

Show channel metadata and schema for a channel type.

bash
memoh channel info [type]

If type is omitted, prompts to select from available channels.

channel config get

Get a bot's channel configuration.

bash
memoh channel config get [bot_id] [options]
OptionDescription
--type <type>Channel type

channel config set

Set a bot's channel configuration. Currently supports Feishu.

bash
memoh channel config set [bot_id] [options]
OptionDescription
--type <type>Channel type (e.g. feishu)
--app_id <id>Feishu App ID
--app_secret <secret>Feishu App Secret
--encrypt_key <key>Encrypt key (optional)
--verification_token <token>Verification token (optional)

channel bind get

Get the current user's channel binding for a platform.

bash
memoh channel bind get [options]
OptionDescription
--type <type>Channel type

channel bind set

Set the current user's channel binding. Currently supports Feishu (open_id or user_id).

bash
memoh channel bind set [options]
OptionDescription
--type <type>Channel type (e.g. feishu)
--open_id <id>Feishu Open ID
--user_id <id>Feishu User ID

Published under AGPLv3

+ + + + \ No newline at end of file diff --git a/cli/chat.html b/cli/chat.html new file mode 100644 index 00000000..3ffca1f1 --- /dev/null +++ b/cli/chat.html @@ -0,0 +1,28 @@ + + + + + + Chat Commands | Memoh Documentation + + + + + + + + + + + + + + + +
Skip to content

Chat Commands

Default: Interactive Chat

Running memoh with no subcommand starts an interactive chat. Use --bot <id> to specify which bot to chat with; otherwise you'll be prompted to select one.

bash
memoh [options]
+memoh --bot <bot_id>
OptionDescription
--bot <id>Bot ID to chat with

Type your message and press Enter. Type exit to quit. Responses stream in real time.

tui

Terminal UI chat session. Same behavior as the default chat but explicitly invoked.

bash
memoh tui [options]
+memoh tui --bot <bot_id>
OptionDescription
--bot <id>Bot ID to chat with

version

Show the CLI version.

bash
memoh version

Published under AGPLv3

+ + + + \ No newline at end of file diff --git a/cli/config.html b/cli/config.html new file mode 100644 index 00000000..1c38eb3c --- /dev/null +++ b/cli/config.html @@ -0,0 +1,29 @@ + + + + + + Config Commands | Memoh Documentation + + + + + + + + + + + + + + + +
Skip to content

Config Commands

The CLI stores its config in ~/.memoh/config.toml. Use these commands to view or update it.

config

Show the current config (host and port).

bash
memoh config

Output example:

host = "127.0.0.1"
+port = 8080

config set

Update the config. Prompts for host and port if not provided via options.

bash
memoh config set [options]
OptionDescription
--host <host>API host (e.g. 127.0.0.1 or api.example.com)
--port <port>API port (default: 8080)

Examples:

bash
memoh config set --host 192.168.1.100 --port 8080
+memoh config set
+# Interactive prompts for host and port

Published under AGPLv3

+ + + + \ No newline at end of file diff --git a/cli/index.html b/cli/index.html new file mode 100644 index 00000000..551a4d10 --- /dev/null +++ b/cli/index.html @@ -0,0 +1,32 @@ + + + + + + Memoh CLI | Memoh Documentation + + + + + + + + + + + + + + + +
Skip to content

Memoh CLI

The Memoh CLI (memoh) is a command-line tool for managing bots, channels, providers, models, schedules, and chatting with bots. It talks to a running Memoh server via its API.

Installation

The CLI is part of the Memoh monorepo. Install from source:

bash
git clone https://github.com/memohai/Memoh.git
+cd Memoh
+pnpm install

Run the CLI:

bash
cd packages/cli
+pnpm start -- --help

To use memoh as a global command:

bash
cd packages/cli
+pnpm build
+pnpm link --global
+memoh --help

Ensure your Memoh server is running (see Docker installation) and the API is reachable at the configured host/port (default: 127.0.0.1:8080).

Configuration

The CLI stores config in ~/.memoh/config.toml and auth token in ~/.memoh/token.json. Use memoh config to view and memoh config set to change host/port.

Commands

CommandDescription
loginLog in to the Memoh server
logoutLog out and clear token
whoamiShow current user
configShow or update CLI config (host, port)
providerList, create, delete LLM providers
modelList, create, delete models
botList, create, update, delete bots; chat; set model
channelList channels; get/set bot channel config; get/set user binding
scheduleList, create, update, toggle, delete bot schedules
chatInteractive chat with a bot (default command)
tuiTerminal UI chat session
versionShow CLI version

Most commands require authentication. Run memoh login first.

Published under AGPLv3

+ + + + \ No newline at end of file diff --git a/cli/model.html b/cli/model.html new file mode 100644 index 00000000..b5ac82cf --- /dev/null +++ b/cli/model.html @@ -0,0 +1,29 @@ + + + + + + Model Commands | Memoh Documentation + + + + + + + + + + + + + + + +
Skip to content

Model Commands

Manage chat and embedding models.

model list

List all models with their provider, type, and multimodal flag.

bash
memoh model list

model create

Create a new model. Prompts for provider, model ID, type, and (for embedding models) dimensions.

bash
memoh model create [options]
OptionDescription
--model_id <id>Model ID (e.g. gpt-4, text-embedding-3-small)
--name <name>Display name
--provider <provider>Provider name
--type <type>chat or embedding
--dimensions <n>Embedding dimensions (required for embedding models)
--multimodalMark as multimodal

Examples:

bash
memoh model create --model_id gpt-4 --provider my-openai --type chat
+memoh model create --model_id text-embedding-3-small --provider my-openai --type embedding --dimensions 1536
+memoh model create
+# Interactive prompts

model delete

Delete a model by model ID.

bash
memoh model delete --model <model_id>

Example:

bash
memoh model delete --model gpt-4

Published under AGPLv3

+ + + + \ No newline at end of file diff --git a/cli/provider.html b/cli/provider.html new file mode 100644 index 00000000..fd879cef --- /dev/null +++ b/cli/provider.html @@ -0,0 +1,29 @@ + + + + + + Provider Commands | Memoh Documentation + + + + + + + + + + + + + + + +
Skip to content

Provider Commands

Manage LLM providers (OpenAI, Anthropic, Ollama, etc.).

provider list

List all providers. Optionally filter by provider name.

bash
memoh provider list [options]
OptionDescription
--provider <name>Filter by provider name

Examples:

bash
memoh provider list
+memoh provider list --provider my-openai

provider create

Create a new provider. Prompts for any missing fields.

bash
memoh provider create [options]
OptionDescription
--name <name>Provider name
--type <type>Client type
--base_url <url>Base URL for the API
--api_key <key>API key

Supported client types: openai, openai-compat, anthropic, google, azure, bedrock, mistral, xai, ollama, dashscope

Examples:

bash
memoh provider create --name my-ollama --type ollama --base_url http://localhost:11434
+memoh provider create
+# Interactive prompts

provider delete

Delete a provider by name.

bash
memoh provider delete --provider <name>

Example:

bash
memoh provider delete --provider my-ollama

Published under AGPLv3

+ + + + \ No newline at end of file diff --git a/cli/schedule.html b/cli/schedule.html new file mode 100644 index 00000000..488c01a4 --- /dev/null +++ b/cli/schedule.html @@ -0,0 +1,26 @@ + + + + + + Schedule Commands | Memoh Documentation + + + + + + + + + + + + + + + +
Skip to content

Schedule Commands

Manage cron-based schedules for bots. All schedule commands require --bot <id> to specify the bot.

schedule list

List all schedules for a bot.

bash
memoh schedule list --bot <bot_id>

schedule get

Get a schedule by ID.

bash
memoh schedule get <id> --bot <bot_id>

schedule create

Create a new schedule. Prompts for name, description, cron pattern, command, and optional max calls.

bash
memoh schedule create [options] --bot <bot_id>
OptionDescription
--name <name>Schedule name
--description <desc>Description
--pattern <pattern>Cron pattern (e.g. 0 9 * * * for daily at 9am)
--command <cmd>Command to run in the bot container
--max_calls <n>Max executions (optional, empty for unlimited)
--enabledCreate as enabled
--disabledCreate as disabled

schedule update

Update a schedule.

bash
memoh schedule update <id> [options] --bot <bot_id>
OptionDescription
--name <name>Schedule name
--description <desc>Description
--pattern <pattern>Cron pattern
--command <cmd>Command
--max_calls <n>Max executions
--enabledEnable
--disabledDisable

schedule toggle

Enable or disable a schedule (flip current state).

bash
memoh schedule toggle <id> --bot <bot_id>

schedule delete

Delete a schedule.

bash
memoh schedule delete <id> --bot <bot_id>

Published under AGPLv3

+ + + + \ No newline at end of file diff --git a/concepts/identity-and-binding.html b/concepts/identity-and-binding.html index 55164e7a..a50f7073 100644 --- a/concepts/identity-and-binding.html +++ b/concepts/identity-and-binding.html @@ -9,9 +9,9 @@ - + - + @@ -19,8 +19,8 @@ -
Skip to content

Accounts and Linking

Account Model

Memoh treats platform accounts and system accounts as two different entities:

  • Platform Account (ChannelIdentity) is the user's account on an external access platform (for example, a TG account), not a Memoh internal account.
  • System Account (User) is an internal account in Memoh.

A platform account can exist before linking.
bind is the mechanism that links these two account types.

Access Platform and Bot

  • Access Platform (channel) is where inbound messages come from.
  • Bot is an authorization and resource boundary inside Memoh.

Bots are managed by system accounts, while inbound messages are produced by platform accounts.

Why Linking Is Account-Scoped

Account linking exists to establish account ownership, not to grant bot resources directly:

  • It links platform accounts and system accounts independent of any single bot.
  • It avoids coupling account linking with member management semantics.
  • It keeps bot authorization and account linking decoupled.

Linking Flow (Current Consensus)

  1. A user requests a bind code under their own system account.
  2. The platform account sends the code from a supported access-platform conversation.
  3. Memoh validates the code and links platform account to system account.
  4. Bot membership and authorization are handled by their own flows.

Bot Type Semantics

  • Public bot: supports member-based collaboration.
  • Personal bot: conceptually single-owner, and should not rely on member semantics.

Note: The conceptual model is documented here as product semantics.
Runtime behavior may still be in transition as implementations are tightened.

Published under AGPLv3

- +
Skip to content

Accounts and Linking

Account Model

Memoh treats platform accounts and system accounts as two different entities:

  • Platform Account (ChannelIdentity) is the user's account on an external access platform (for example, a TG account), not a Memoh internal account.
  • System Account (User) is an internal account in Memoh.

A platform account can exist before linking.
bind is the mechanism that links these two account types.

Access Platform and Bot

  • Access Platform (channel) is where inbound messages come from.
  • Bot is an authorization and resource boundary inside Memoh.

Bots are managed by system accounts, while inbound messages are produced by platform accounts.

Why Linking Is Account-Scoped

Account linking exists to establish account ownership, not to grant bot resources directly:

  • It links platform accounts and system accounts independent of any single bot.
  • It avoids coupling account linking with member management semantics.
  • It keeps bot authorization and account linking decoupled.

Linking Flow (Current Consensus)

  1. A user requests a bind code under their own system account.
  2. The platform account sends the code from a supported access-platform conversation.
  3. Memoh validates the code and links platform account to system account.
  4. Bot membership and authorization are handled by their own flows.

Bot Type Semantics

  • Public bot: supports member-based collaboration.
  • Personal bot: conceptually single-owner, and should not rely on member semantics.

Note: The conceptual model is documented here as product semantics.
Runtime behavior may still be in transition as implementations are tightened.

Published under AGPLv3

+ \ No newline at end of file diff --git a/concepts/index.html b/concepts/index.html index ec5fdf68..8f93403f 100644 --- a/concepts/index.html +++ b/concepts/index.html @@ -9,9 +9,9 @@ - + - + @@ -19,8 +19,8 @@ -
Skip to content

Core Concepts

This section defines the core account and access concepts used by Memoh.

Concept Map

  • System Account (User): an internal account in Memoh.
  • Platform Account (ChannelIdentity): a user's account on an external access platform, not a Memoh account (for example, the user's Telegram (TG) account).
  • Bot: an access and resource boundary managed by a system account.
  • Account Linking (bind): the process that links a platform account to a system account.

Why This Matters

Memoh receives messages from external access platforms, but manages permissions and resources inside the system. To keep these concerns clear, the model separates platform accounts from system accounts, while keeping bot access control as an independent concern.

Terminology note: "platform account" always means the user's account on that platform (such as TG), not an internal account created by this project.

In This Chapter

Published under AGPLv3

- +
Skip to content

Core Concepts

This section defines the core account and access concepts used by Memoh.

Concept Map

  • System Account (User): an internal account in Memoh.
  • Platform Account (ChannelIdentity): a user's account on an external access platform, not a Memoh account (for example, the user's Telegram (TG) account).
  • Bot: an access and resource boundary managed by a system account.
  • Account Linking (bind): the process that links a platform account to a system account.

Why This Matters

Memoh receives messages from external access platforms, but manages permissions and resources inside the system. To keep these concerns clear, the model separates platform accounts from system accounts, while keeping bot access control as an independent concern.

Terminology note: "platform account" always means the user's account on that platform (such as TG), not an internal account created by this project.

In This Chapter

Published under AGPLv3

+ \ No newline at end of file diff --git a/getting-started.html b/getting-started.html index 1bd69809..9da61c80 100644 --- a/getting-started.html +++ b/getting-started.html @@ -9,18 +9,18 @@ - + - + - + -
Skip to content

Published under AGPLv3

- +
Skip to content

Getting Started

What is Memoh?

Memoh is a multi-member, structured long-memory, containerized AI agent system platform. You can create your own AI bots and chat with them via Telegram, Lark (Feishu), and more. Every bot has an independent container and memory system, allowing it to edit files, execute commands, and access the network within its own container — like having its own computer.

Key Features

Multi-Bot Management

Create multiple bots. Humans and bots, or bots with each other, can chat privately, in groups, or collaborate. Build bot teams, or set up accounts for family members to manage daily tasks with bots.

Containerized Isolation

Each bot runs in its own isolated container (powered by Containerd) with a separate filesystem and network. Bots can freely read/write files and execute commands within their containers without interfering with each other.

Memory Engineering

A deeply engineered memory layer inspired by Mem0:

  • Automatically extracts key facts from each conversation turn and stores them as structured memories
  • Supports semantic search (via Qdrant vector database) and keyword retrieval (BM25)
  • Loads the last 24 hours of conversation context by default
  • Automatic memory compaction to keep the memory store lean
  • Multi-language auto-detection

Multi-Platform Support

Unified channel adapter architecture for connecting to multiple messaging platforms:

  • Telegram — Full support with streaming, Markdown, attachments, and replies
  • Lark (Feishu) — Full support
  • Web — Built-in web chat interface
  • CLI — Command-line chat

Agent Capabilities

Bots come with a rich set of built-in tools:

  • Web Search — Brave Search integration for real-time information
  • Subagents — Create specialized subagents, assign skills, and delegate complex tasks
  • Skills — Configurable skill system to extend bot capabilities
  • Container Operations — Read/write files, edit code, and execute commands inside the container
  • Memory Management — Search and manage memories
  • Messaging — Send messages and reactions

Multi-LLM Provider Support

Flexibly switch between a wide range of LLM providers:

  • OpenAI, Anthropic, Google, Azure, AWS Bedrock
  • Mistral, XAI, Ollama, Dashscope (Qwen), and more

MCP Protocol Support

Supports Model Context Protocol (MCP) via HTTP and SSE to connect external tool services. Each bot can have its own independent MCP connections.

Scheduled Tasks

Configure scheduled tasks using cron expressions to automatically run commands at specified times. Supports max execution count limits and manual triggers.

Graphical Configuration

Configure bots, channels, providers, models, MCP, skills, and all other settings through a web management UI — no coding required to set up your own AI bot.

CLI Tool

A command-line tool for bot management, channel configuration, model management, streaming chat, and more — designed for developers who prefer the terminal. See CLI documentation.

Installation

To get Memoh running:

  • Docker — Recommended. One-click or manual setup with Docker Compose. Includes all services (PostgreSQL, Qdrant, Containerd, server, agent, web) — no extra dependencies on the host.
  • config.toml — Reference for all configuration fields.

Published under AGPLv3

+ \ No newline at end of file diff --git a/hashmap.json b/hashmap.json index 1e837d73..d963a7a4 100644 --- a/hashmap.json +++ b/hashmap.json @@ -1 +1 @@ -{"concepts_identity-and-binding.md":"Dqnt6wsW","concepts_index.md":"CxGkiYqO","getting-started.md":"B8NVZwU9","index.md":"DCIshPcM","style_terminology.md":"zpSWt3dU","troubleshooting.md":"DEVYH0Du","zh_concepts_identity-and-binding.md":"BpgZjxhl","zh_concepts_index.md":"CFVegv9w","zh_index.md":"N8D_wq8q","zh_style_terminology.md":"DtBRpWD7"} +{"cli_auth.md":"DPl-4zFk","cli_bot.md":"B2YOOp9H","cli_channel.md":"T-qsPRZ9","cli_chat.md":"LOg8zrpn","cli_config.md":"C-0Xv0hx","cli_index.md":"CTMBSccU","cli_model.md":"Bp0XdM9y","cli_provider.md":"CEEKGN01","cli_schedule.md":"DSG0HQuo","concepts_identity-and-binding.md":"Dqnt6wsW","concepts_index.md":"CxGkiYqO","getting-started.md":"DF97X5A_","index.md":"XthB7km1","installation_config-toml.md":"DLEOCXmn","installation_docker.md":"xaCmXfCQ","style_terminology.md":"zpSWt3dU","troubleshooting.md":"DEVYH0Du","zh_concepts_identity-and-binding.md":"BpgZjxhl","zh_concepts_index.md":"CFVegv9w","zh_index.md":"N8D_wq8q","zh_style_terminology.md":"DtBRpWD7"} diff --git a/index.html b/index.html index ba96baef..34432f73 100644 --- a/index.html +++ b/index.html @@ -9,18 +9,18 @@ - + - + - + -
Skip to content

Memoh Documentation

Memoh is a multi-member, long-memory, containerized AI agent system.

Documentation Sections

For Contributors

Current Focus

The current documentation iteration focuses on account semantics:

  • Distinguishing system accounts and platform accounts
  • Explaining why account linking is account-scoped
  • Clarifying the relationship between account linking and bot access

Note: "platform account" means the user's account on external platforms (for example, TG), not a Memoh account.

Published under AGPLv3

- +
Skip to content

Memoh Documentation

Memoh is a multi-member, structured long-memory, containerized AI agent system. Create your own AI bots, chat with them via Telegram, Lark (Feishu), Web, or CLI. Each bot runs in an isolated container with its own memory system — able to edit files, run commands, and access the network.

Documentation

For Contributors

Published under AGPLv3

+ \ No newline at end of file diff --git a/installation/config-toml.html b/installation/config-toml.html new file mode 100644 index 00000000..2a5dee78 --- /dev/null +++ b/installation/config-toml.html @@ -0,0 +1,76 @@ + + + + + + config.toml Reference | Memoh Documentation + + + + + + + + + + + + + + + +
Skip to content

config.toml Reference

Memoh uses a TOML configuration file. By default it looks for config.toml in the current directory. With Docker, you can mount a custom config via MEMOH_CONFIG (see Docker installation).

Full Example

toml
[log]
+level = "info"
+format = "text"
+
+[server]
+addr = ":8080"
+
+[admin]
+username = "admin"
+password = "change-your-password"
+email = "admin@example.com"
+
+[auth]
+jwt_secret = "your-secret-from-openssl-rand-base64-32"
+jwt_expires_in = "168h"
+
+[containerd]
+socket_path = "/run/containerd/containerd.sock"
+namespace = "default"
+
+[mcp]
+image = "docker.io/library/memoh-mcp:latest"
+snapshotter = "overlayfs"
+data_root = "data"
+data_mount = "/data"
+
+[postgres]
+host = "127.0.0.1"
+port = 5432
+user = "postgres"
+password = "your-password"
+database = "memoh"
+sslmode = "disable"
+
+[qdrant]
+base_url = "http://127.0.0.1:6334"
+api_key = ""
+collection = "memory"
+timeout_seconds = 10
+
+[agent_gateway]
+host = "127.0.0.1"
+port = 8081
+
+[web]
+host = "127.0.0.1"
+port = 8082
+
+[brave]
+api_key = ""
+base_url = "https://api.search.brave.com/res/v1/"

Section Reference

[log]

FieldTypeDefaultDescription
levelstring"info"Log level: debug, info, warn, error
formatstring"text"Log format: text or json

[server]

FieldTypeDefaultDescription
addrstring":8080"HTTP listen address. Use :8080 for all interfaces, or host:port (e.g. server:8080 in Docker).

[admin]

FieldTypeDefaultDescription
usernamestring"admin"Admin login username
passwordstringAdmin login password. Change in production.
emailstringAdmin email (for display)

[auth]

FieldTypeDefaultDescription
jwt_secretstringSecret for signing JWT tokens. Required. Generate with openssl rand -base64 32.
jwt_expires_instring"24h"JWT expiration, e.g. "24h", "168h" (7 days)

[containerd]

FieldTypeDefaultDescription
socket_pathstring"/run/containerd/containerd.sock"Path to containerd socket
namespacestring"default"Containerd namespace for bot containers

[mcp]

MCP (Model Context Protocol) container configuration. Each bot runs in a container built from this image.

FieldTypeDefaultDescription
imagestring"docker.io/library/memoh-mcp:latest"MCP container image
snapshotterstring"overlayfs"Containerd snapshotter
data_rootstring"data"Host path for bot data (Docker: /opt/memoh/data)
data_mountstring"/data"Path inside container where data is mounted

[postgres]

FieldTypeDefaultDescription
hoststring"127.0.0.1"PostgreSQL host
portint5432PostgreSQL port
userstring"postgres"Database user
passwordstringDatabase password
databasestring"memoh"Database name
sslmodestring"disable"SSL mode: disable, require, verify-ca, verify-full

[qdrant]

FieldTypeDefaultDescription
base_urlstring"http://127.0.0.1:6334"Qdrant HTTP API URL
api_keystring""Optional API key for Qdrant Cloud
collectionstring"memory"Vector collection name for memories
timeout_secondsint10Request timeout in seconds

[agent_gateway]

FieldTypeDefaultDescription
hoststring"127.0.0.1"Agent gateway bind host
portint8081Agent gateway port

In Docker Compose, host is typically "agent" (service name). The agent reads [server].addr to call the main API.

[web]

FieldTypeDefaultDescription
hoststring"127.0.0.1"Web UI bind host
portint8082Web UI port

[brave]

Brave Search API for the web search tool. Leave api_key empty to disable web search.

FieldTypeDefaultDescription
api_keystring""Brave Search API key. Get one at brave.com/search/api.
base_urlstring"https://api.search.brave.com/res/v1/"Brave Search API base URL

Published under AGPLv3

+ + + + \ No newline at end of file diff --git a/installation/docker.html b/installation/docker.html new file mode 100644 index 00000000..7527c6af --- /dev/null +++ b/installation/docker.html @@ -0,0 +1,36 @@ + + + + + + Docker Installation | Memoh Documentation + + + + + + + + + + + + + + + +
Skip to content

Docker Installation

Docker is the recommended way to run Memoh. The stack includes PostgreSQL, Qdrant, Containerd, the main server, agent gateway, and web UI — all orchestrated via Docker Compose. You do not need to install containerd, nerdctl, or buildkit on your host; everything runs inside containers.

Prerequisites

One-Click Install

Run the official install script (requires Docker and Docker Compose):

bash
curl -fsSL https://raw.githubusercontent.com/memohai/Memoh/main/scripts/install.sh | sh

The script will:

  1. Check for Docker and Docker Compose
  2. Prompt for configuration (workspace, data directory, admin credentials, JWT secret, Postgres password)
  3. Clone the repository
  4. Generate config.toml from the Docker template
  5. Start all services with docker compose up -d --build

Silent install (use all defaults, no prompts):

bash
curl -fsSL https://raw.githubusercontent.com/memohai/Memoh/main/scripts/install.sh | sh -s -- -y

Defaults when running silently:

  • Workspace: ~/memoh
  • Data directory: ~/memoh/data
  • Admin: admin / admin123
  • JWT secret: auto-generated
  • Postgres password: memoh123

Manual Install

Clone the repository and start with Docker Compose:

bash
git clone https://github.com/memohai/Memoh.git
+cd Memoh
+docker compose up -d

By default, Docker Compose uses docker/config/config.docker.toml. No config file in the project root is mounted — only this built-in config is used. See config.toml reference for all configuration fields.

Access Points

After startup:

ServiceURL
Web UIhttp://localhost:8082
APIhttp://localhost:8080
Agent Gatewayhttp://localhost:8081

Default login: admin / admin123

First startup may take 1–2 minutes while images build and services initialize.

Custom Configuration

To use your own config file:

  1. Copy the Docker config template and edit it. See config.toml reference for field descriptions:
bash
cp docker/config/config.docker.toml config.toml
+nano config.toml
  1. Point MEMOH_CONFIG at your config when starting (path is on the host; run docker compose from the project root):
bash
MEMOH_CONFIG=./config.toml docker compose up -d

Recommended changes for production (see config.toml reference for details):

  • admin.password — Change the admin password
  • auth.jwt_secret — Generate with openssl rand -base64 32
  • postgres.password — Change the database password (and set POSTGRES_PASSWORD when running docker compose)

Common Commands

bash
docker compose up -d           # Start
+docker compose down            # Stop
+docker compose logs -f         # View logs
+docker compose ps              # Status
+docker compose up -d --build   # Rebuild and restart

Production Checklist

  1. HTTPS — Configure SSL (e.g. via docker-compose.override.yml with certs)
  2. Passwords — Change all default passwords and secrets
  3. Firewall — Restrict access to necessary ports
  4. Resource limits — Set memory/CPU limits for containers
  5. Backups — Regular backups of Postgres and Qdrant data

Troubleshooting

bash
docker compose logs server      # View main service logs
+docker compose logs containerd # View containerd logs
+docker compose config          # Validate configuration
+docker compose build --no-cache && docker compose up -d  # Full rebuild

Security Warnings

  • The main service runs with privileged container access — only run in trusted environments
  • You must change all default passwords and secrets before production use
  • Use HTTPS in production

Published under AGPLv3

+ + + + \ No newline at end of file diff --git a/style/terminology.html b/style/terminology.html index 3f53255f..eff027bf 100644 --- a/style/terminology.html +++ b/style/terminology.html @@ -9,9 +9,9 @@ - + - + @@ -19,8 +19,8 @@ -
Skip to content

Terminology Rules

Audience: documentation contributors and maintainers. This page defines writing terms. It is not product user guidance.

Canonical Terms

  • System Account (User): the account inside Memoh.
  • Platform Account (ChannelIdentity): the user's account on an external access platform, not a Memoh account.
  • Access Platform (channel): the external platform carrying inbound messages.
  • Account Linking (bind): linking a Platform Account to a System Account.
  • Bind Code: one-time code used for account linking.
  • Bot: resource and authorization boundary managed by a System Account.

Preferred Wording

  • Write "platform account" instead of "actor" in user-facing docs.
  • Write "access platform" instead of "channel" when describing product behavior.
  • Keep code aliases in parentheses on first mention:
    • Platform Account (ChannelIdentity)
    • System Account (User)
    • Account Linking (bind)

Disallowed or Discouraged Terms

  • Avoid plain actor in conceptual docs (except when quoting code symbols).
  • Avoid ambiguous platform user phrasing (it does not distinguish system vs platform account).
  • Avoid wording that implies Platform Account is created inside Memoh.

Example Sentences

  • Correct: "A platform account is the user's TG account, not a Memoh account."
  • Correct: "Account linking binds a platform account to a system account."
  • Incorrect: "Actor is a user in Memoh."

Contributor Checklist

  • Is every "account" term clearly scoped (system vs platform)?
  • Is "channel" replaced by "access platform" in prose?
  • Are code aliases kept only as parenthetical references?

Published under AGPLv3

- +
Skip to content

Terminology Rules

Audience: documentation contributors and maintainers. This page defines writing terms. It is not product user guidance.

Canonical Terms

  • System Account (User): the account inside Memoh.
  • Platform Account (ChannelIdentity): the user's account on an external access platform, not a Memoh account.
  • Access Platform (channel): the external platform carrying inbound messages.
  • Account Linking (bind): linking a Platform Account to a System Account.
  • Bind Code: one-time code used for account linking.
  • Bot: resource and authorization boundary managed by a System Account.

Preferred Wording

  • Write "platform account" instead of "actor" in user-facing docs.
  • Write "access platform" instead of "channel" when describing product behavior.
  • Keep code aliases in parentheses on first mention:
    • Platform Account (ChannelIdentity)
    • System Account (User)
    • Account Linking (bind)

Disallowed or Discouraged Terms

  • Avoid plain actor in conceptual docs (except when quoting code symbols).
  • Avoid ambiguous platform user phrasing (it does not distinguish system vs platform account).
  • Avoid wording that implies Platform Account is created inside Memoh.

Example Sentences

  • Correct: "A platform account is the user's TG account, not a Memoh account."
  • Correct: "Account linking binds a platform account to a system account."
  • Incorrect: "Actor is a user in Memoh."

Contributor Checklist

  • Is every "account" term clearly scoped (system vs platform)?
  • Is "channel" replaced by "access platform" in prose?
  • Are code aliases kept only as parenthetical references?

Published under AGPLv3

+ \ No newline at end of file diff --git a/troubleshooting.html b/troubleshooting.html index f6cea4a4..7b198cd3 100644 --- a/troubleshooting.html +++ b/troubleshooting.html @@ -9,9 +9,9 @@ - + - + @@ -19,11 +19,11 @@ -
Skip to content

Troubleshooting

MCP Container: no running task found: task mcp-xxx not found

Symptom

When a bot tries to use container tools (e.g., execute commands), the server logs show:

level=WARN msg="exec failed" provider=container_tool bot_id=xxx command=date error="no running task found: task mcp-xxx not found"

The containerd container logs may also show:

level=error msg="failed to delete task" error="rpc error: code = NotFound desc = container not created: not found"

Cause

The [mcp] data_root in config.toml is set to a host machine path (e.g., /Users/you/Code/Memoh/data), but the server and containerd containers use a Docker named volume mounted at /opt/memoh/data.

When the server creates an MCP container inside containerd, it uses data_root as the mount source. Since this host path does not exist inside the containerd container, runc fails with:

failed to fulfil mount request: open /Users/you/Code/Memoh/data/bots/xxx: no such file or directory

Solution

  1. Set data_root to the in-container path in your config:
toml
[mcp]
+    
Skip to content

Troubleshooting

MCP Container: no running task found: task mcp-xxx not found

Symptom

When a bot tries to use container tools (e.g., execute commands), the server logs show:

level=WARN msg="exec failed" provider=container_tool bot_id=xxx command=date error="no running task found: task mcp-xxx not found"

The containerd container logs may also show:

level=error msg="failed to delete task" error="rpc error: code = NotFound desc = container not created: not found"

Cause

The [mcp] data_root in config.toml is set to a host machine path (e.g., /Users/you/Code/Memoh/data), but the server and containerd containers use a Docker named volume mounted at /opt/memoh/data.

When the server creates an MCP container inside containerd, it uses data_root as the mount source. Since this host path does not exist inside the containerd container, runc fails with:

failed to fulfil mount request: open /Users/you/Code/Memoh/data/bots/xxx: no such file or directory

Solution

  1. Set data_root to the in-container path in your config:
toml
[mcp]
 data_root = "/opt/memoh/data"
  1. Clean up the stale containerd container (if it exists):
bash
docker exec memoh-containerd ctr -n default containers rm mcp-<bot-id>
  1. Restart the server:
bash
docker compose restart server

Note: If you also run the server locally (outside Docker), keep the Docker config (docker/config/config.docker.toml) separate from your local config.toml, and update docker-compose.yml to mount the Docker-specific config instead.

MCP Container: Image update not taking effect after rebuild

Symptom

After updating Dockerfile.containerd (e.g., adding Node.js/Python to the MCP image), rebuilding and restarting the containerd container, MCP tools still fail with errors like:

exec: "npx": executable file not found in $PATH

Cause

The containerd entrypoint script (containerd-entrypoint.sh) skips image import if the image already exists in containerd's image store:

sh
if ! ctr -n default images check "name==${MCP_IMAGE}" ...; then
   # import
 fi

Since containerd_data is a persistent Docker volume, the old MCP image survives across container restarts. The new image embedded in the rebuilt Docker image is never imported.

Solution

  1. Remove the old MCP image from containerd:
bash
docker exec memoh-containerd ctr -n default images rm docker.io/library/memoh-mcp:latest
  1. Restart the containerd container to trigger re-import:
bash
docker compose restart containerd
  1. Verify the new image was imported (size should be significantly larger if Node.js/Python were added):
bash
docker exec memoh-containerd ctr -n default images ls
  1. Delete the bot's MCP container and recreate it from the bot detail page so it uses the new image.

Published under AGPLv3

- + \ No newline at end of file diff --git a/zh/concepts/identity-and-binding.html b/zh/concepts/identity-and-binding.html index 7bf05a36..57dbbf5c 100644 --- a/zh/concepts/identity-and-binding.html +++ b/zh/concepts/identity-and-binding.html @@ -9,9 +9,9 @@ - + - + @@ -20,7 +20,7 @@
Skip to content

账号模型与绑定

账号模型

Memoh 将平台账号与系统账号视为两类不同实体:

  • 平台账号(ChannelIdentity 是用户在外部接入平台上的账号(例如飞书账号),不是 Memoh 内部账号。
  • 系统账号(User 是 Memoh 系统内账号。

平台账号在初始阶段可以不绑定系统账号。
bind 的职责是完成这两类账号的关联。

接入平台与 Bot

  • 接入平台(channel 是入站消息来源。
  • Bot 是系统内的授权与资源边界。

Bot 由系统账号管理,入站消息由平台账号产生。

为什么账号绑定是账号作用域

账号绑定的目标是建立账号归属关系,而不是直接发放 bot 资源权限:

  • 它只负责平台账号与系统账号的绑定;
  • 不把账号绑定与成员管理语义耦合在一起;
  • 让 bot 访问控制保持独立、可演进。

账号绑定流程(当前共识)

  1. 用户以自己的系统账号申请 bind code;
  2. 平台账号在支持的接入平台会话中发送 code;
  3. 系统校验 code,完成平台账号到系统账号的绑定;
  4. bot 成员与授权由独立流程处理。

Bot 类型语义

  • Public bot:支持成员协作语义。
  • Personal bot:语义上应为单 owner,不应依赖成员机制。

注:本文档记录的是产品语义与共识方向。
部分运行时细节仍可能处于收敛阶段。

Published under AGPLv3

- + \ No newline at end of file diff --git a/zh/concepts/index.html b/zh/concepts/index.html index b1890b1d..9a2b184a 100644 --- a/zh/concepts/index.html +++ b/zh/concepts/index.html @@ -9,9 +9,9 @@ - + - + @@ -20,7 +20,7 @@
Skip to content

核心概念

本章节用于定义 Memoh 的核心账号与访问概念。

概念图

  • 系统账号(User:Memoh 系统内账号。
  • 平台账号(ChannelIdentity:用户在外部接入平台上的账号,不是 Memoh 系统内账号(例如用户的飞书账号)。
  • Bot:由系统账号管理的资源与访问边界。
  • 账号绑定(bind:把平台账号关联到系统账号的过程。

为什么重要

Memoh 需要同时处理外部接入平台消息与系统内权限控制。
因此我们明确区分平台账号与系统账号,并将 bot 授权与账号绑定解耦。

术语说明:文档中的“平台账号”统一指用户在对应平台上的真实账号(如飞书账号),不指本项目内部账号。

本章内容

Published under AGPLv3

- + \ No newline at end of file diff --git a/zh/index.html b/zh/index.html index 3ffeb0e8..df13527b 100644 --- a/zh/index.html +++ b/zh/index.html @@ -9,9 +9,9 @@ - + - + @@ -20,7 +20,7 @@
Skip to content

Memoh 文档

Memoh 是一个多成员、长记忆、容器化的 AI Agent 系统。

文档章节

面向文档贡献者

当前维护范围

当前文档先聚焦账号语义与访问控制:

  • 区分系统账号与平台账号
  • 解释为什么账号绑定是账号作用域
  • 说明账号绑定与 bot 访问控制之间的关系

说明:“平台账号”指用户在外部平台上的真实账号(例如飞书账号),不是 Memoh 系统账号。

Published under AGPLv3

- + \ No newline at end of file diff --git a/zh/style/terminology.html b/zh/style/terminology.html index 24a51e62..b5924377 100644 --- a/zh/style/terminology.html +++ b/zh/style/terminology.html @@ -9,9 +9,9 @@ - + - + @@ -20,7 +20,7 @@
Skip to content

术语规范

适用对象:文档编写者与维护者。 本页用于统一写作语义,不是面向最终用户的功能说明。

规范术语

  • 系统账号(User:Memoh 系统内账号。
  • 平台账号(ChannelIdentity:用户在外部接入平台上的账号,不是 Memoh 内账号。
  • 接入平台(channel:承载入站消息的外部平台。
  • 账号绑定(bind:把平台账号关联到系统账号的过程。
  • 绑定码(Bind Code):用于账号绑定的一次性代码。
  • Bot:由系统账号管理的资源与授权边界。

推荐写法

  • 面向产品语义时,优先写 “平台账号”,不要直接写 actor。
  • 描述业务行为时,优先写 “接入平台”,不要直接写 channel。
  • 首次出现保留技术别名,后续可只用中文术语:
    • 平台账号(ChannelIdentity
    • 系统账号(User
    • 账号绑定(bind

禁用或不推荐写法

  • 在概念文档中直接使用 actor(除非明确引用代码符号)。
  • 使用含糊表述如 “平台用户”(未区分系统账号与平台账号)。
  • 写出“平台账号是 Memoh 内部账号”这类错误语义。

示例

  • 正确:“平台账号是用户在飞书上的账号,不是 Memoh 系统账号。”
  • 正确:“账号绑定用于把平台账号关联到系统账号。”
  • 错误:“Actor 是 Memoh 里的用户。”

自检清单

  • 是否明确区分了系统账号与平台账号?
  • 叙述中是否将 channel 表述为接入平台?
  • 是否仅在首处保留技术别名?

Published under AGPLv3

- + \ No newline at end of file