@codemcp/workflows 6.12.0 → 6.13.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (178) hide show
  1. package/README.md +8 -6
  2. package/package.json +2 -2
  3. package/packages/cli/dist/{chunk-HMZICCYA.js → chunk-SB3HRQCH.js} +8 -4
  4. package/packages/cli/dist/{cli-E6575RSU.js → cli-RLPVHRTE.js} +4 -4
  5. package/packages/cli/dist/{dist-WVNXA2PS.js → dist-ARC6LWFF.js} +9 -5
  6. package/packages/cli/dist/{dist-TSPCPCN3.js → dist-FTEFRIPR.js} +1 -1
  7. package/packages/cli/dist/index.js +2 -2
  8. package/packages/cli/package.json +1 -1
  9. package/packages/cli/resources/agents/architect.yaml +2 -2
  10. package/packages/cli/resources/agents/business-analyst.yaml +1 -1
  11. package/packages/cli/resources/agents/developer.yaml +1 -1
  12. package/packages/cli/resources/templates/skills/POWER.md +1 -1
  13. package/packages/cli/resources/templates/skills/SKILL.md +1 -1
  14. package/packages/core/dist/instruction-generator.js +8 -3
  15. package/packages/core/dist/instruction-generator.js.map +1 -1
  16. package/packages/core/dist/plan-manager.js +1 -1
  17. package/packages/core/dist/plan-manager.js.map +1 -1
  18. package/packages/core/package.json +1 -1
  19. package/packages/core/resources/agents/architect.yaml +2 -2
  20. package/packages/core/resources/agents/business-analyst.yaml +1 -1
  21. package/packages/core/resources/agents/developer.yaml +1 -1
  22. package/packages/core/resources/templates/skills/POWER.md +1 -1
  23. package/packages/core/resources/templates/skills/SKILL.md +1 -1
  24. package/packages/docs/.vitepress/dist/404.html +6 -6
  25. package/packages/docs/.vitepress/dist/assets/{app.BRB3NIl4.js → app.DCKDzGKW.js} +1 -1
  26. package/packages/docs/.vitepress/dist/assets/chunks/{framework.DZS7lpav.js → framework.FdfEk_gD.js} +1 -1
  27. package/packages/docs/.vitepress/dist/assets/chunks/{theme.DMKMhwGo.js → theme.D_Ip3oEh.js} +2 -2
  28. package/packages/docs/.vitepress/dist/assets/{dev_ARCHITECTURE.md.da_vFDwM.js → dev_ARCHITECTURE.md.CvNKCNdN.js} +1 -1
  29. package/packages/docs/.vitepress/dist/assets/{dev_ARCHITECTURE.md.da_vFDwM.lean.js → dev_ARCHITECTURE.md.CvNKCNdN.lean.js} +1 -1
  30. package/packages/docs/.vitepress/dist/assets/{dev_DEVELOPMENT.md.DWl9cccE.js → dev_DEVELOPMENT.md.D_3UnLYh.js} +1 -1
  31. package/packages/docs/.vitepress/dist/assets/{dev_DEVELOPMENT.md.DWl9cccE.lean.js → dev_DEVELOPMENT.md.D_3UnLYh.lean.js} +1 -1
  32. package/packages/docs/.vitepress/dist/assets/{dev_LOGGING.md.BebvbW7z.js → dev_LOGGING.md.ChgMzoxk.js} +1 -1
  33. package/packages/docs/.vitepress/dist/assets/{dev_LOGGING.md.BebvbW7z.lean.js → dev_LOGGING.md.ChgMzoxk.lean.js} +1 -1
  34. package/packages/docs/.vitepress/dist/assets/dev_PUBLISHING.md.9HHCKtL4.js +1 -0
  35. package/packages/docs/.vitepress/dist/assets/dev_PUBLISHING.md.9HHCKtL4.lean.js +1 -0
  36. package/packages/docs/.vitepress/dist/assets/index.md.BqtGZhQl.js +2 -0
  37. package/packages/docs/.vitepress/dist/assets/index.md.BqtGZhQl.lean.js +1 -0
  38. package/packages/docs/.vitepress/dist/assets/style.DfNfC54K.css +1 -0
  39. package/packages/docs/.vitepress/dist/assets/{user_advanced-engineering.md.PD-xOFno.js → user_advanced-engineering.md.DSy0uwWe.js} +1 -1
  40. package/packages/docs/.vitepress/dist/assets/{user_advanced-engineering.md.PD-xOFno.lean.js → user_advanced-engineering.md.DSy0uwWe.lean.js} +1 -1
  41. package/packages/docs/.vitepress/dist/assets/{user_agent-setup.md.BhcuRdG8.js → user_agent-setup.md.Cgzr8dYa.js} +1 -1
  42. package/packages/docs/.vitepress/dist/assets/{user_agent-setup.md.BhcuRdG8.lean.js → user_agent-setup.md.Cgzr8dYa.lean.js} +1 -1
  43. package/packages/docs/.vitepress/dist/assets/{user_beads-integration.md.BzdR5Fif.js → user_beads-integration.md.CB1VJJCp.js} +1 -1
  44. package/packages/docs/.vitepress/dist/assets/{user_beads-integration.md.BzdR5Fif.lean.js → user_beads-integration.md.CB1VJJCp.lean.js} +1 -1
  45. package/packages/docs/.vitepress/dist/assets/{user_crowd-mcp-integration.md.DvEooBMm.js → user_crowd-mcp-integration.md.DPSO9u7p.js} +1 -1
  46. package/packages/docs/.vitepress/dist/assets/{user_crowd-mcp-integration.md.DvEooBMm.lean.js → user_crowd-mcp-integration.md.DPSO9u7p.lean.js} +1 -1
  47. package/packages/docs/.vitepress/dist/assets/{user_custom-workflows.md.D11jbjWQ.js → user_custom-workflows.md.CtvQt5R0.js} +1 -1
  48. package/packages/docs/.vitepress/dist/assets/{user_custom-workflows.md.D11jbjWQ.lean.js → user_custom-workflows.md.CtvQt5R0.lean.js} +1 -1
  49. package/packages/docs/.vitepress/dist/assets/{user_git-commit-feature.md.UcTvDR-O.js → user_git-commit-feature.md.IwIx6MMR.js} +1 -1
  50. package/packages/docs/.vitepress/dist/assets/{user_git-commit-feature.md.UcTvDR-O.lean.js → user_git-commit-feature.md.IwIx6MMR.lean.js} +1 -1
  51. package/packages/docs/.vitepress/dist/assets/{user_how-it-works.md.DiOXNgaL.js → user_how-it-works.md.08ZFhWmJ.js} +1 -1
  52. package/packages/docs/.vitepress/dist/assets/user_how-it-works.md.08ZFhWmJ.lean.js +1 -0
  53. package/packages/docs/.vitepress/dist/assets/{user_long-term-memory.md.DZh0tjNa.js → user_long-term-memory.md.Tss4q2DM.js} +1 -1
  54. package/packages/docs/.vitepress/dist/assets/{user_long-term-memory.md.DZh0tjNa.lean.js → user_long-term-memory.md.Tss4q2DM.lean.js} +1 -1
  55. package/packages/docs/.vitepress/dist/assets/{user_packaged-workflows.md.D-qqL4g-.js → user_packaged-workflows.md.D8DLEuhH.js} +1 -1
  56. package/packages/docs/.vitepress/dist/assets/{user_packaged-workflows.md.D-qqL4g-.lean.js → user_packaged-workflows.md.D8DLEuhH.lean.js} +1 -1
  57. package/packages/docs/.vitepress/dist/assets/{user_tutorial.md.Dmj8zLB2.js → user_tutorial.md.BTP4OqKB.js} +1 -1
  58. package/packages/docs/.vitepress/dist/assets/{user_tutorial.md.Dmj8zLB2.lean.js → user_tutorial.md.BTP4OqKB.lean.js} +1 -1
  59. package/packages/docs/.vitepress/dist/assets/{user_workflow-selection.md.CrPGw9Hr.js → user_workflow-selection.md.G8vSc8iy.js} +1 -1
  60. package/packages/docs/.vitepress/dist/assets/{user_workflow-selection.md.CrPGw9Hr.lean.js → user_workflow-selection.md.G8vSc8iy.lean.js} +1 -1
  61. package/packages/docs/.vitepress/dist/assets/{workflows.md.Bm5sGt3u.js → workflows.md.B6jknRdS.js} +1 -1
  62. package/packages/docs/.vitepress/dist/assets/{workflows.md.Bm5sGt3u.lean.js → workflows.md.B6jknRdS.lean.js} +1 -1
  63. package/packages/docs/.vitepress/dist/assets/{workflows_adr.md.DEaXkbRp.js → workflows_adr.md.DQ73iGUh.js} +1 -1
  64. package/packages/docs/.vitepress/dist/assets/{workflows_adr.md.DEaXkbRp.lean.js → workflows_adr.md.DQ73iGUh.lean.js} +1 -1
  65. package/packages/docs/.vitepress/dist/assets/{workflows_big-bang-conversion.md.BA5R1LxZ.js → workflows_big-bang-conversion.md.BgV6R1KI.js} +1 -1
  66. package/packages/docs/.vitepress/dist/assets/{workflows_big-bang-conversion.md.BA5R1LxZ.lean.js → workflows_big-bang-conversion.md.BgV6R1KI.lean.js} +1 -1
  67. package/packages/docs/.vitepress/dist/assets/{workflows_boundary-testing.md.DBcYnMhx.js → workflows_boundary-testing.md.RwhcIDcf.js} +1 -1
  68. package/packages/docs/.vitepress/dist/assets/{workflows_boundary-testing.md.DBcYnMhx.lean.js → workflows_boundary-testing.md.RwhcIDcf.lean.js} +1 -1
  69. package/packages/docs/.vitepress/dist/assets/{workflows_bugfix.md.CZRCL0Hp.js → workflows_bugfix.md.sZNWPjvx.js} +1 -1
  70. package/packages/docs/.vitepress/dist/assets/{workflows_bugfix.md.CZRCL0Hp.lean.js → workflows_bugfix.md.sZNWPjvx.lean.js} +1 -1
  71. package/packages/docs/.vitepress/dist/assets/{workflows_business-analysis.md.fGLml8Hw.js → workflows_business-analysis.md.C3FBbsiu.js} +1 -1
  72. package/packages/docs/.vitepress/dist/assets/{workflows_business-analysis.md.fGLml8Hw.lean.js → workflows_business-analysis.md.C3FBbsiu.lean.js} +1 -1
  73. package/packages/docs/.vitepress/dist/assets/{workflows_c4-analysis.md.Dnssqzuf.js → workflows_c4-analysis.md.MVyWuWSL.js} +1 -1
  74. package/packages/docs/.vitepress/dist/assets/{workflows_c4-analysis.md.Dnssqzuf.lean.js → workflows_c4-analysis.md.MVyWuWSL.lean.js} +1 -1
  75. package/packages/docs/.vitepress/dist/assets/{workflows_epcc.md.M6DnIhpp.js → workflows_epcc.md.1mWsuIIR.js} +1 -1
  76. package/packages/docs/.vitepress/dist/assets/{workflows_epcc.md.M6DnIhpp.lean.js → workflows_epcc.md.1mWsuIIR.lean.js} +1 -1
  77. package/packages/docs/.vitepress/dist/assets/{workflows_game-beginner.md.CNxzWLtd.js → workflows_game-beginner.md.J4UOyAAT.js} +1 -1
  78. package/packages/docs/.vitepress/dist/assets/{workflows_game-beginner.md.CNxzWLtd.lean.js → workflows_game-beginner.md.J4UOyAAT.lean.js} +1 -1
  79. package/packages/docs/.vitepress/dist/assets/{workflows_greenfield.md.vx_g-WOe.js → workflows_greenfield.md.DzJ6V7lb.js} +1 -1
  80. package/packages/docs/.vitepress/dist/assets/{workflows_greenfield.md.vx_g-WOe.lean.js → workflows_greenfield.md.DzJ6V7lb.lean.js} +1 -1
  81. package/packages/docs/.vitepress/dist/assets/{workflows_minor.md.DdnfwMf4.js → workflows_minor.md.dYZlfSHT.js} +1 -1
  82. package/packages/docs/.vitepress/dist/assets/{workflows_minor.md.DdnfwMf4.lean.js → workflows_minor.md.dYZlfSHT.lean.js} +1 -1
  83. package/packages/docs/.vitepress/dist/assets/{workflows_posts.md.SOldXvq7.js → workflows_posts.md.BrkDZjGs.js} +1 -1
  84. package/packages/docs/.vitepress/dist/assets/{workflows_posts.md.SOldXvq7.lean.js → workflows_posts.md.BrkDZjGs.lean.js} +1 -1
  85. package/packages/docs/.vitepress/dist/assets/{workflows_sdd-bugfix-crowd.md.-lSf42gJ.js → workflows_sdd-bugfix-crowd.md.BQH-LJXS.js} +1 -1
  86. package/packages/docs/.vitepress/dist/assets/{workflows_sdd-bugfix-crowd.md.-lSf42gJ.lean.js → workflows_sdd-bugfix-crowd.md.BQH-LJXS.lean.js} +1 -1
  87. package/packages/docs/.vitepress/dist/assets/{workflows_sdd-bugfix.md.oRAsEVbc.js → workflows_sdd-bugfix.md.CoPY5TS6.js} +1 -1
  88. package/packages/docs/.vitepress/dist/assets/{workflows_sdd-bugfix.md.oRAsEVbc.lean.js → workflows_sdd-bugfix.md.CoPY5TS6.lean.js} +1 -1
  89. package/packages/docs/.vitepress/dist/assets/{workflows_sdd-feature-crowd.md.DAtnfCAd.js → workflows_sdd-feature-crowd.md.CCj9xqan.js} +1 -1
  90. package/packages/docs/.vitepress/dist/assets/{workflows_sdd-feature-crowd.md.DAtnfCAd.lean.js → workflows_sdd-feature-crowd.md.CCj9xqan.lean.js} +1 -1
  91. package/packages/docs/.vitepress/dist/assets/{workflows_sdd-feature.md.Ce3-H_g3.js → workflows_sdd-feature.md.Dy8SNaX8.js} +1 -1
  92. package/packages/docs/.vitepress/dist/assets/{workflows_sdd-feature.md.Ce3-H_g3.lean.js → workflows_sdd-feature.md.Dy8SNaX8.lean.js} +1 -1
  93. package/packages/docs/.vitepress/dist/assets/{workflows_sdd-greenfield-crowd.md.8DUvcmLe.js → workflows_sdd-greenfield-crowd.md._lPEQnGj.js} +1 -1
  94. package/packages/docs/.vitepress/dist/assets/{workflows_sdd-greenfield-crowd.md.8DUvcmLe.lean.js → workflows_sdd-greenfield-crowd.md._lPEQnGj.lean.js} +1 -1
  95. package/packages/docs/.vitepress/dist/assets/{workflows_sdd-greenfield.md.eEN6U0J4.js → workflows_sdd-greenfield.md.KStU-OJS.js} +1 -1
  96. package/packages/docs/.vitepress/dist/assets/{workflows_sdd-greenfield.md.eEN6U0J4.lean.js → workflows_sdd-greenfield.md.KStU-OJS.lean.js} +1 -1
  97. package/packages/docs/.vitepress/dist/assets/{workflows_skilled-bugfix.md.YyOU6NjA.js → workflows_skilled-bugfix.md.CvCekIa2.js} +1 -1
  98. package/packages/docs/.vitepress/dist/assets/{workflows_skilled-bugfix.md.YyOU6NjA.lean.js → workflows_skilled-bugfix.md.CvCekIa2.lean.js} +1 -1
  99. package/packages/docs/.vitepress/dist/assets/{workflows_skilled-epcc.md.BGeI6g1n.js → workflows_skilled-epcc.md.D7Kg_U7p.js} +1 -1
  100. package/packages/docs/.vitepress/dist/assets/{workflows_skilled-epcc.md.BGeI6g1n.lean.js → workflows_skilled-epcc.md.D7Kg_U7p.lean.js} +1 -1
  101. package/packages/docs/.vitepress/dist/assets/{workflows_skilled-greenfield.md.CKxrbPQ-.js → workflows_skilled-greenfield.md.C_R8GafG.js} +1 -1
  102. package/packages/docs/.vitepress/dist/assets/{workflows_skilled-greenfield.md.CKxrbPQ-.lean.js → workflows_skilled-greenfield.md.C_R8GafG.lean.js} +1 -1
  103. package/packages/docs/.vitepress/dist/assets/{workflows_slides.md.Cqt-19_1.js → workflows_slides.md.CScRnwcC.js} +1 -1
  104. package/packages/docs/.vitepress/dist/assets/{workflows_slides.md.Cqt-19_1.lean.js → workflows_slides.md.CScRnwcC.lean.js} +1 -1
  105. package/packages/docs/.vitepress/dist/assets/{workflows_tdd.md.BjVC69tu.js → workflows_tdd.md.C_hC07yu.js} +1 -1
  106. package/packages/docs/.vitepress/dist/assets/{workflows_tdd.md.BjVC69tu.lean.js → workflows_tdd.md.C_hC07yu.lean.js} +1 -1
  107. package/packages/docs/.vitepress/dist/assets/{workflows_waterfall.md.CL6jTZP9.js → workflows_waterfall.md.nMkWHPRt.js} +1 -1
  108. package/packages/docs/.vitepress/dist/assets/{workflows_waterfall.md.CL6jTZP9.lean.js → workflows_waterfall.md.nMkWHPRt.lean.js} +1 -1
  109. package/packages/docs/.vitepress/dist/dev/ARCHITECTURE.html +11 -11
  110. package/packages/docs/.vitepress/dist/dev/DEVELOPMENT.html +11 -11
  111. package/packages/docs/.vitepress/dist/dev/LOGGING.html +11 -11
  112. package/packages/docs/.vitepress/dist/dev/PUBLISHING.html +11 -11
  113. package/packages/docs/.vitepress/dist/hashmap.json +1 -1
  114. package/packages/docs/.vitepress/dist/index.html +11 -11
  115. package/packages/docs/.vitepress/dist/user/advanced-engineering.html +11 -11
  116. package/packages/docs/.vitepress/dist/user/agent-setup.html +11 -11
  117. package/packages/docs/.vitepress/dist/user/beads-integration.html +11 -11
  118. package/packages/docs/.vitepress/dist/user/crowd-mcp-integration.html +11 -11
  119. package/packages/docs/.vitepress/dist/user/custom-workflows.html +11 -11
  120. package/packages/docs/.vitepress/dist/user/git-commit-feature.html +11 -11
  121. package/packages/docs/.vitepress/dist/user/how-it-works.html +11 -11
  122. package/packages/docs/.vitepress/dist/user/long-term-memory.html +11 -11
  123. package/packages/docs/.vitepress/dist/user/packaged-workflows.html +11 -11
  124. package/packages/docs/.vitepress/dist/user/tutorial.html +11 -11
  125. package/packages/docs/.vitepress/dist/user/workflow-selection.html +11 -11
  126. package/packages/docs/.vitepress/dist/workflows/adr.html +10 -10
  127. package/packages/docs/.vitepress/dist/workflows/big-bang-conversion.html +10 -10
  128. package/packages/docs/.vitepress/dist/workflows/boundary-testing.html +10 -10
  129. package/packages/docs/.vitepress/dist/workflows/bugfix.html +10 -10
  130. package/packages/docs/.vitepress/dist/workflows/business-analysis.html +10 -10
  131. package/packages/docs/.vitepress/dist/workflows/c4-analysis.html +10 -10
  132. package/packages/docs/.vitepress/dist/workflows/epcc.html +10 -10
  133. package/packages/docs/.vitepress/dist/workflows/game-beginner.html +10 -10
  134. package/packages/docs/.vitepress/dist/workflows/greenfield.html +10 -10
  135. package/packages/docs/.vitepress/dist/workflows/minor.html +10 -10
  136. package/packages/docs/.vitepress/dist/workflows/posts.html +10 -10
  137. package/packages/docs/.vitepress/dist/workflows/sdd-bugfix-crowd.html +10 -10
  138. package/packages/docs/.vitepress/dist/workflows/sdd-bugfix.html +10 -10
  139. package/packages/docs/.vitepress/dist/workflows/sdd-feature-crowd.html +10 -10
  140. package/packages/docs/.vitepress/dist/workflows/sdd-feature.html +10 -10
  141. package/packages/docs/.vitepress/dist/workflows/sdd-greenfield-crowd.html +10 -10
  142. package/packages/docs/.vitepress/dist/workflows/sdd-greenfield.html +10 -10
  143. package/packages/docs/.vitepress/dist/workflows/skilled-bugfix.html +10 -10
  144. package/packages/docs/.vitepress/dist/workflows/skilled-epcc.html +10 -10
  145. package/packages/docs/.vitepress/dist/workflows/skilled-greenfield.html +10 -10
  146. package/packages/docs/.vitepress/dist/workflows/slides.html +10 -10
  147. package/packages/docs/.vitepress/dist/workflows/tdd.html +10 -10
  148. package/packages/docs/.vitepress/dist/workflows/waterfall.html +10 -10
  149. package/packages/docs/.vitepress/dist/workflows.html +10 -10
  150. package/packages/docs/package.json +1 -1
  151. package/packages/mcp-server/dist/index.js +9 -5
  152. package/packages/mcp-server/package.json +1 -1
  153. package/packages/mcp-server/resources/agents/architect.yaml +2 -2
  154. package/packages/mcp-server/resources/agents/business-analyst.yaml +1 -1
  155. package/packages/mcp-server/resources/agents/developer.yaml +1 -1
  156. package/packages/mcp-server/resources/templates/skills/POWER.md +1 -1
  157. package/packages/mcp-server/resources/templates/skills/SKILL.md +1 -1
  158. package/packages/opencode-plugin/dist/index.d.ts +19 -2
  159. package/packages/opencode-plugin/dist/index.js +126 -17
  160. package/packages/opencode-plugin/package.json +2 -2
  161. package/packages/opencode-plugin/resources/agents/architect.yaml +2 -2
  162. package/packages/opencode-plugin/resources/agents/business-analyst.yaml +1 -1
  163. package/packages/opencode-plugin/resources/agents/developer.yaml +1 -1
  164. package/packages/opencode-plugin/resources/templates/skills/POWER.md +1 -1
  165. package/packages/opencode-plugin/resources/templates/skills/SKILL.md +1 -1
  166. package/packages/opencode-tui-plugin/package.json +2 -2
  167. package/packages/visualizer/package.json +1 -1
  168. package/resources/agents/architect.yaml +2 -2
  169. package/resources/agents/business-analyst.yaml +1 -1
  170. package/resources/agents/developer.yaml +1 -1
  171. package/resources/templates/skills/POWER.md +1 -1
  172. package/resources/templates/skills/SKILL.md +1 -1
  173. package/packages/docs/.vitepress/dist/assets/dev_PUBLISHING.md.CQqbiIOF.js +0 -1
  174. package/packages/docs/.vitepress/dist/assets/dev_PUBLISHING.md.CQqbiIOF.lean.js +0 -1
  175. package/packages/docs/.vitepress/dist/assets/index.md.D6ROLohf.js +0 -2
  176. package/packages/docs/.vitepress/dist/assets/index.md.D6ROLohf.lean.js +0 -1
  177. package/packages/docs/.vitepress/dist/assets/style.CAgdBzOq.css +0 -1
  178. package/packages/docs/.vitepress/dist/assets/user_how-it-works.md.DiOXNgaL.lean.js +0 -1
@@ -1,4 +1,4 @@
1
- import{_ as a,c as n,o as s,a0 as t}from"./chunks/framework.DZS7lpav.js";const g=JSON.parse('{"title":"Architecture","description":"","frontmatter":{},"headers":[],"relativePath":"dev/ARCHITECTURE.md","filePath":"dev/ARCHITECTURE.md"}'),i={name:"dev/ARCHITECTURE.md"};function o(r,e,l,p,c,h){return s(),n("div",null,[...e[0]||(e[0]=[t(`<h1 id="architecture" tabindex="-1">Architecture <a class="header-anchor" href="#architecture" aria-label="Permalink to &quot;Architecture&quot;">​</a></h1><p>This document provides detailed information about the Responsible Vibe MCP Server architecture, components, and design principles.</p><h2 id="information-architecture" tabindex="-1">Information Architecture <a class="header-anchor" href="#information-architecture" aria-label="Permalink to &quot;Information Architecture&quot;">​</a></h2><p>Responsible-Vibe-MCP implements a <strong>plan-file-centric information architecture</strong> with clear separation of responsibilities across different components:</p><h3 id="information-component-responsibilities" tabindex="-1">Information Component Responsibilities <a class="header-anchor" href="#information-component-responsibilities" aria-label="Permalink to &quot;Information Component Responsibilities&quot;">​</a></h3><table tabindex="0"><thead><tr><th><strong>Component</strong></th><th><strong>Responsibility</strong></th><th><strong>Information Type</strong></th><th><strong>Maintenance</strong></th></tr></thead><tbody><tr><td><strong>System Prompt</strong></td><td>Generic workflow guidance</td><td>How to use the system</td><td>Static</td></tr><tr><td><strong>Tool Descriptions</strong></td><td>Generic tool usage</td><td>What each tool does</td><td>Static</td></tr><tr><td><strong>Tool Responses</strong></td><td>Dynamic phase guidance</td><td>What to do right now</td><td>Dynamic</td></tr><tr><td><strong>Plan File</strong></td><td>Project context &amp; tasks</td><td>What we&#39;ve done/decided</td><td>LLM-maintained</td></tr></tbody></table><h3 id="core-principles" tabindex="-1">Core Principles <a class="header-anchor" href="#core-principles" aria-label="Permalink to &quot;Core Principles&quot;">​</a></h3><h4 id="_1-static-components-stay-generic" tabindex="-1"><strong>1. Static Components Stay Generic</strong> <a class="header-anchor" href="#_1-static-components-stay-generic" aria-label="Permalink to &quot;**1. Static Components Stay Generic**&quot;">​</a></h4><ul><li><strong>System Prompt</strong>: Workflow-agnostic instructions on tool usage patterns</li><li><strong>Tool Descriptions</strong>: Generic tool purposes without hardcoded phase names</li><li><strong>Benefit</strong>: Works with any workflow (built-in or custom)</li></ul><h4 id="_2-dynamic-guidance-through-tool-responses" tabindex="-1"><strong>2. Dynamic Guidance Through Tool Responses</strong> <a class="header-anchor" href="#_2-dynamic-guidance-through-tool-responses" aria-label="Permalink to &quot;**2. Dynamic Guidance Through Tool Responses**&quot;">​</a></h4><ul><li><strong>Tool responses provide</strong>: Phase-specific instructions, user interaction guidance, completion criteria</li><li><strong>Plan-file-referential</strong>: &quot;Check your plan file&#39;s Design section for current tasks&quot;</li><li><strong>Context-aware</strong>: Adapts to current project state and progress</li></ul><h4 id="_3-plan-file-as-single-source-of-truth" tabindex="-1"><strong>3. Plan File as Single Source of Truth</strong> <a class="header-anchor" href="#_3-plan-file-as-single-source-of-truth" aria-label="Permalink to &quot;**3. Plan File as Single Source of Truth**&quot;">​</a></h4><ul><li><strong>Contains</strong>: Task lists per phase, key decisions, project context</li><li><strong>Structure</strong>: Simple, LLM-maintainable (no complex dynamic elements)</li><li><strong>Purpose</strong>: Task tracker and decision log, not workflow guide</li></ul><h4 id="_4-clear-separation-of-concerns" tabindex="-1"><strong>4. Clear Separation of Concerns</strong> <a class="header-anchor" href="#_4-clear-separation-of-concerns" aria-label="Permalink to &quot;**4. Clear Separation of Concerns**&quot;">​</a></h4><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>System Prompt: &quot;How to use tools&quot;</span></span>
1
+ import{_ as a,c as n,o as s,a0 as t}from"./chunks/framework.FdfEk_gD.js";const g=JSON.parse('{"title":"Architecture","description":"","frontmatter":{},"headers":[],"relativePath":"dev/ARCHITECTURE.md","filePath":"dev/ARCHITECTURE.md"}'),i={name:"dev/ARCHITECTURE.md"};function o(r,e,l,p,c,h){return s(),n("div",null,[...e[0]||(e[0]=[t(`<h1 id="architecture" tabindex="-1">Architecture <a class="header-anchor" href="#architecture" aria-label="Permalink to &quot;Architecture&quot;">​</a></h1><p>This document provides detailed information about the Responsible Vibe MCP Server architecture, components, and design principles.</p><h2 id="information-architecture" tabindex="-1">Information Architecture <a class="header-anchor" href="#information-architecture" aria-label="Permalink to &quot;Information Architecture&quot;">​</a></h2><p>Responsible-Vibe-MCP implements a <strong>plan-file-centric information architecture</strong> with clear separation of responsibilities across different components:</p><h3 id="information-component-responsibilities" tabindex="-1">Information Component Responsibilities <a class="header-anchor" href="#information-component-responsibilities" aria-label="Permalink to &quot;Information Component Responsibilities&quot;">​</a></h3><table tabindex="0"><thead><tr><th><strong>Component</strong></th><th><strong>Responsibility</strong></th><th><strong>Information Type</strong></th><th><strong>Maintenance</strong></th></tr></thead><tbody><tr><td><strong>System Prompt</strong></td><td>Generic workflow guidance</td><td>How to use the system</td><td>Static</td></tr><tr><td><strong>Tool Descriptions</strong></td><td>Generic tool usage</td><td>What each tool does</td><td>Static</td></tr><tr><td><strong>Tool Responses</strong></td><td>Dynamic phase guidance</td><td>What to do right now</td><td>Dynamic</td></tr><tr><td><strong>Plan File</strong></td><td>Project context &amp; tasks</td><td>What we&#39;ve done/decided</td><td>LLM-maintained</td></tr></tbody></table><h3 id="core-principles" tabindex="-1">Core Principles <a class="header-anchor" href="#core-principles" aria-label="Permalink to &quot;Core Principles&quot;">​</a></h3><h4 id="_1-static-components-stay-generic" tabindex="-1"><strong>1. Static Components Stay Generic</strong> <a class="header-anchor" href="#_1-static-components-stay-generic" aria-label="Permalink to &quot;**1. Static Components Stay Generic**&quot;">​</a></h4><ul><li><strong>System Prompt</strong>: Workflow-agnostic instructions on tool usage patterns</li><li><strong>Tool Descriptions</strong>: Generic tool purposes without hardcoded phase names</li><li><strong>Benefit</strong>: Works with any workflow (built-in or custom)</li></ul><h4 id="_2-dynamic-guidance-through-tool-responses" tabindex="-1"><strong>2. Dynamic Guidance Through Tool Responses</strong> <a class="header-anchor" href="#_2-dynamic-guidance-through-tool-responses" aria-label="Permalink to &quot;**2. Dynamic Guidance Through Tool Responses**&quot;">​</a></h4><ul><li><strong>Tool responses provide</strong>: Phase-specific instructions, user interaction guidance, completion criteria</li><li><strong>Plan-file-referential</strong>: &quot;Check your plan file&#39;s Design section for current tasks&quot;</li><li><strong>Context-aware</strong>: Adapts to current project state and progress</li></ul><h4 id="_3-plan-file-as-single-source-of-truth" tabindex="-1"><strong>3. Plan File as Single Source of Truth</strong> <a class="header-anchor" href="#_3-plan-file-as-single-source-of-truth" aria-label="Permalink to &quot;**3. Plan File as Single Source of Truth**&quot;">​</a></h4><ul><li><strong>Contains</strong>: Task lists per phase, key decisions, project context</li><li><strong>Structure</strong>: Simple, LLM-maintainable (no complex dynamic elements)</li><li><strong>Purpose</strong>: Task tracker and decision log, not workflow guide</li></ul><h4 id="_4-clear-separation-of-concerns" tabindex="-1"><strong>4. Clear Separation of Concerns</strong> <a class="header-anchor" href="#_4-clear-separation-of-concerns" aria-label="Permalink to &quot;**4. Clear Separation of Concerns**&quot;">​</a></h4><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>System Prompt: &quot;How to use tools&quot;</span></span>
2
2
  <span class="line"><span>Tool Descriptions: &quot;What tools do&quot; (generic)</span></span>
3
3
  <span class="line"><span>Tool Responses: &quot;Check plan file section X, work on tasks Y, Z&quot; (specific)</span></span>
4
4
  <span class="line"><span>Plan File: &quot;[ ] Task 1 [x] Task 2 Decision: chose approach A&quot; (tracking)</span></span></code></pre></div><h3 id="benefits-of-this-architecture" tabindex="-1">Benefits of This Architecture <a class="header-anchor" href="#benefits-of-this-architecture" aria-label="Permalink to &quot;Benefits of This Architecture&quot;">​</a></h3><ul><li><strong>✅ Workflow Flexibility</strong>: Static components work with any workflow type</li><li><strong>✅ Maintainable</strong>: No hardcoded workflow information in static descriptions</li><li><strong>✅ User Transparency</strong>: Users see the same plan file the LLM follows</li><li><strong>✅ Consistent Guidance</strong>: All dynamic instructions come from tool responses</li><li><strong>✅ Simple Maintenance</strong>: LLM only updates simple task lists and decisions</li></ul><h2 id="monorepo-architecture" tabindex="-1">Monorepo Architecture <a class="header-anchor" href="#monorepo-architecture" aria-label="Permalink to &quot;Monorepo Architecture&quot;">​</a></h2><p>Responsible-Vibe-MCP is organized as a monorepo with clear package separation and dependency management:</p><h3 id="package-structure" tabindex="-1">Package Structure <a class="header-anchor" href="#package-structure" aria-label="Permalink to &quot;Package Structure&quot;">​</a></h3><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>@codemcp/workflows/</span></span>
@@ -1 +1 @@
1
- import{_ as a,c as n,o as s,a0 as t}from"./chunks/framework.DZS7lpav.js";const g=JSON.parse('{"title":"Architecture","description":"","frontmatter":{},"headers":[],"relativePath":"dev/ARCHITECTURE.md","filePath":"dev/ARCHITECTURE.md"}'),i={name:"dev/ARCHITECTURE.md"};function o(r,e,l,p,c,h){return s(),n("div",null,[...e[0]||(e[0]=[t("",142)])])}const u=a(i,[["render",o]]);export{g as __pageData,u as default};
1
+ import{_ as a,c as n,o as s,a0 as t}from"./chunks/framework.FdfEk_gD.js";const g=JSON.parse('{"title":"Architecture","description":"","frontmatter":{},"headers":[],"relativePath":"dev/ARCHITECTURE.md","filePath":"dev/ARCHITECTURE.md"}'),i={name:"dev/ARCHITECTURE.md"};function o(r,e,l,p,c,h){return s(),n("div",null,[...e[0]||(e[0]=[t("",142)])])}const u=a(i,[["render",o]]);export{g as __pageData,u as default};
@@ -1,4 +1,4 @@
1
- import{_ as a,c as e,o as i,a0 as n}from"./chunks/framework.DZS7lpav.js";const g=JSON.parse('{"title":"Development","description":"","frontmatter":{},"headers":[],"relativePath":"dev/DEVELOPMENT.md","filePath":"dev/DEVELOPMENT.md"}'),t={name:"dev/DEVELOPMENT.md"};function l(o,s,r,p,h,d){return i(),e("div",null,[...s[0]||(s[0]=[n(`<h1 id="development" tabindex="-1">Development <a class="header-anchor" href="#development" aria-label="Permalink to &quot;Development&quot;">​</a></h1><p>This document provides information for developers working on the Responsible Vibe MCP Server, including testing, logging, debugging, and architectural decisions.</p><h2 id="optional-documentation-feature" tabindex="-1">Optional Documentation Feature <a class="header-anchor" href="#optional-documentation-feature" aria-label="Permalink to &quot;Optional Documentation Feature&quot;">​</a></h2><p>The system includes a flexible documentation architecture that allows workflows to specify their documentation requirements:</p><h3 id="key-implementation-components" tabindex="-1">Key Implementation Components <a class="header-anchor" href="#key-implementation-components" aria-label="Permalink to &quot;Key Implementation Components&quot;">​</a></h3><h4 id="_1-workflow-metadata-schema" tabindex="-1">1. Workflow Metadata Schema <a class="header-anchor" href="#_1-workflow-metadata-schema" aria-label="Permalink to &quot;1. Workflow Metadata Schema&quot;">​</a></h4><div class="language-typescript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">typescript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">interface</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> YamlStateMachine</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
1
+ import{_ as a,c as e,o as i,a0 as n}from"./chunks/framework.FdfEk_gD.js";const g=JSON.parse('{"title":"Development","description":"","frontmatter":{},"headers":[],"relativePath":"dev/DEVELOPMENT.md","filePath":"dev/DEVELOPMENT.md"}'),t={name:"dev/DEVELOPMENT.md"};function l(o,s,r,p,h,d){return i(),e("div",null,[...s[0]||(s[0]=[n(`<h1 id="development" tabindex="-1">Development <a class="header-anchor" href="#development" aria-label="Permalink to &quot;Development&quot;">​</a></h1><p>This document provides information for developers working on the Responsible Vibe MCP Server, including testing, logging, debugging, and architectural decisions.</p><h2 id="optional-documentation-feature" tabindex="-1">Optional Documentation Feature <a class="header-anchor" href="#optional-documentation-feature" aria-label="Permalink to &quot;Optional Documentation Feature&quot;">​</a></h2><p>The system includes a flexible documentation architecture that allows workflows to specify their documentation requirements:</p><h3 id="key-implementation-components" tabindex="-1">Key Implementation Components <a class="header-anchor" href="#key-implementation-components" aria-label="Permalink to &quot;Key Implementation Components&quot;">​</a></h3><h4 id="_1-workflow-metadata-schema" tabindex="-1">1. Workflow Metadata Schema <a class="header-anchor" href="#_1-workflow-metadata-schema" aria-label="Permalink to &quot;1. Workflow Metadata Schema&quot;">​</a></h4><div class="language-typescript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">typescript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">interface</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> YamlStateMachine</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
2
2
  <span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;"> metadata</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">?:</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
3
3
  <span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;"> requiresDocumentation</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">?:</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> boolean</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">; </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// defaults to false</span></span>
4
4
  <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> // ... other metadata</span></span>
@@ -1 +1 @@
1
- import{_ as a,c as e,o as i,a0 as n}from"./chunks/framework.DZS7lpav.js";const g=JSON.parse('{"title":"Development","description":"","frontmatter":{},"headers":[],"relativePath":"dev/DEVELOPMENT.md","filePath":"dev/DEVELOPMENT.md"}'),t={name:"dev/DEVELOPMENT.md"};function l(o,s,r,p,h,d){return i(),e("div",null,[...s[0]||(s[0]=[n("",106)])])}const k=a(t,[["render",l]]);export{g as __pageData,k as default};
1
+ import{_ as a,c as e,o as i,a0 as n}from"./chunks/framework.FdfEk_gD.js";const g=JSON.parse('{"title":"Development","description":"","frontmatter":{},"headers":[],"relativePath":"dev/DEVELOPMENT.md","filePath":"dev/DEVELOPMENT.md"}'),t={name:"dev/DEVELOPMENT.md"};function l(o,s,r,p,h,d){return i(),e("div",null,[...s[0]||(s[0]=[n("",106)])])}const k=a(t,[["render",l]]);export{g as __pageData,k as default};
@@ -1,4 +1,4 @@
1
- import{_ as s,c as a,o as e,a0 as n}from"./chunks/framework.DZS7lpav.js";const d=JSON.parse('{"title":"Logging Documentation","description":"","frontmatter":{},"headers":[],"relativePath":"dev/LOGGING.md","filePath":"dev/LOGGING.md"}'),t={name:"dev/LOGGING.md"};function l(o,i,r,h,p,g){return e(),a("div",null,[...i[0]||(i[0]=[n(`<h1 id="logging-documentation" tabindex="-1">Logging Documentation <a class="header-anchor" href="#logging-documentation" aria-label="Permalink to &quot;Logging Documentation&quot;">​</a></h1><p>The Vibe Feature MCP Server includes a comprehensive logging system that follows MCP best practices and provides both local debugging capabilities and client notifications.</p><h2 id="mcp-compliance" tabindex="-1">MCP Compliance <a class="header-anchor" href="#mcp-compliance" aria-label="Permalink to &quot;MCP Compliance&quot;">​</a></h2><p>The logging system is fully compliant with MCP requirements:</p><ul><li><strong>stderr only</strong>: All local logging uses <code>stderr</code> (not <code>stdout</code>) to avoid interfering with MCP protocol operation</li><li><strong>Client notifications</strong>: Important events are sent to the MCP client via log message notifications</li><li><strong>Structured logging</strong>: All log messages include structured context data</li><li><strong>Centralized logging</strong>: All logging logic is centralized in <code>logger.ts</code> to avoid duplication</li></ul><h2 id="log-levels" tabindex="-1">Log Levels <a class="header-anchor" href="#log-levels" aria-label="Permalink to &quot;Log Levels&quot;">​</a></h2><p>The server supports four log levels with configurable output:</p><ul><li><strong>DEBUG</strong>: Detailed tracing and execution flow information</li><li><strong>INFO</strong>: Success operations and important milestones (default)</li><li><strong>WARN</strong>: Expected errors and recoverable issues</li><li><strong>ERROR</strong>: Caught but unexpected errors</li></ul><h2 id="configuration" tabindex="-1">Configuration <a class="header-anchor" href="#configuration" aria-label="Permalink to &quot;Configuration&quot;">​</a></h2><p>Set the log level using the <code>LOG_LEVEL</code> environment variable:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Debug level (most verbose)</span></span>
1
+ import{_ as s,c as a,o as e,a0 as n}from"./chunks/framework.FdfEk_gD.js";const d=JSON.parse('{"title":"Logging Documentation","description":"","frontmatter":{},"headers":[],"relativePath":"dev/LOGGING.md","filePath":"dev/LOGGING.md"}'),t={name:"dev/LOGGING.md"};function l(o,i,r,h,p,g){return e(),a("div",null,[...i[0]||(i[0]=[n(`<h1 id="logging-documentation" tabindex="-1">Logging Documentation <a class="header-anchor" href="#logging-documentation" aria-label="Permalink to &quot;Logging Documentation&quot;">​</a></h1><p>The Vibe Feature MCP Server includes a comprehensive logging system that follows MCP best practices and provides both local debugging capabilities and client notifications.</p><h2 id="mcp-compliance" tabindex="-1">MCP Compliance <a class="header-anchor" href="#mcp-compliance" aria-label="Permalink to &quot;MCP Compliance&quot;">​</a></h2><p>The logging system is fully compliant with MCP requirements:</p><ul><li><strong>stderr only</strong>: All local logging uses <code>stderr</code> (not <code>stdout</code>) to avoid interfering with MCP protocol operation</li><li><strong>Client notifications</strong>: Important events are sent to the MCP client via log message notifications</li><li><strong>Structured logging</strong>: All log messages include structured context data</li><li><strong>Centralized logging</strong>: All logging logic is centralized in <code>logger.ts</code> to avoid duplication</li></ul><h2 id="log-levels" tabindex="-1">Log Levels <a class="header-anchor" href="#log-levels" aria-label="Permalink to &quot;Log Levels&quot;">​</a></h2><p>The server supports four log levels with configurable output:</p><ul><li><strong>DEBUG</strong>: Detailed tracing and execution flow information</li><li><strong>INFO</strong>: Success operations and important milestones (default)</li><li><strong>WARN</strong>: Expected errors and recoverable issues</li><li><strong>ERROR</strong>: Caught but unexpected errors</li></ul><h2 id="configuration" tabindex="-1">Configuration <a class="header-anchor" href="#configuration" aria-label="Permalink to &quot;Configuration&quot;">​</a></h2><p>Set the log level using the <code>LOG_LEVEL</code> environment variable:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Debug level (most verbose)</span></span>
2
2
  <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">LOG_LEVEL</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">DEBUG</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> npx</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> tsx</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> src/index.ts</span></span>
3
3
  <span class="line"></span>
4
4
  <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Production level (default)</span></span>
@@ -1 +1 @@
1
- import{_ as s,c as a,o as e,a0 as n}from"./chunks/framework.DZS7lpav.js";const d=JSON.parse('{"title":"Logging Documentation","description":"","frontmatter":{},"headers":[],"relativePath":"dev/LOGGING.md","filePath":"dev/LOGGING.md"}'),t={name:"dev/LOGGING.md"};function l(o,i,r,h,p,g){return e(),a("div",null,[...i[0]||(i[0]=[n("",67)])])}const c=s(t,[["render",l]]);export{d as __pageData,c as default};
1
+ import{_ as s,c as a,o as e,a0 as n}from"./chunks/framework.FdfEk_gD.js";const d=JSON.parse('{"title":"Logging Documentation","description":"","frontmatter":{},"headers":[],"relativePath":"dev/LOGGING.md","filePath":"dev/LOGGING.md"}'),t={name:"dev/LOGGING.md"};function l(o,i,r,h,p,g){return e(),a("div",null,[...i[0]||(i[0]=[n("",67)])])}const c=s(t,[["render",l]]);export{d as __pageData,c as default};
@@ -0,0 +1 @@
1
+ import{_ as i,c as s,o as t,a0 as o}from"./chunks/framework.FdfEk_gD.js";const g=JSON.parse('{"title":"Publishing Guide","description":"","frontmatter":{},"headers":[],"relativePath":"dev/PUBLISHING.md","filePath":"dev/PUBLISHING.md"}'),a={name:"dev/PUBLISHING.md"};function l(r,e,n,h,c,u){return t(),s("div",null,[...e[0]||(e[0]=[o('<h1 id="publishing-guide" tabindex="-1">Publishing Guide <a class="header-anchor" href="#publishing-guide" aria-label="Permalink to &quot;Publishing Guide&quot;">​</a></h1><p>This document describes the automated publishing setup for the responsible-vibe MCP server.</p><h2 id="overview" tabindex="-1">Overview <a class="header-anchor" href="#overview" aria-label="Permalink to &quot;Overview&quot;">​</a></h2><p>The project uses GitHub Actions to automatically:</p><ul><li>Run tests on pull requests</li><li>Version bump using conventional commits</li><li>Publish to npm registry</li><li>Create git tags and GitHub releases</li><li>Generate changelogs</li></ul><h2 id="setup-instructions" tabindex="-1">Setup Instructions <a class="header-anchor" href="#setup-instructions" aria-label="Permalink to &quot;Setup Instructions&quot;">​</a></h2><h3 id="_1-npm-token-setup" tabindex="-1">1. npm Token Setup <a class="header-anchor" href="#_1-npm-token-setup" aria-label="Permalink to &quot;1. npm Token Setup&quot;">​</a></h3><ol><li><p><strong>Generate npm Access Token:</strong></p><ul><li>Go to <a href="https://www.npmjs.com/settings/tokens" target="_blank" rel="noreferrer">https://www.npmjs.com/settings/tokens</a></li><li>Click &quot;Generate New Token&quot; → &quot;Automation&quot; (for CI/CD)</li><li>Copy the token (starts with <code>npm_</code>)</li></ul></li><li><p><strong>Add GitHub Secret:</strong></p><ul><li>Go to your repo: <a href="https://github.com/codemcp/workflows/settings/secrets/actions" target="_blank" rel="noreferrer">https://github.com/codemcp/workflows/settings/secrets/actions</a></li><li>Click &quot;New repository secret&quot;</li><li>Name: <code>NPM_TOKEN</code></li><li>Value: Your npm token</li></ul></li></ol><h3 id="_2-package-information" tabindex="-1">2. Package Information <a class="header-anchor" href="#_2-package-information" aria-label="Permalink to &quot;2. Package Information&quot;">​</a></h3><ul><li><strong>Package Name</strong>: <code>@codemcp/workflows</code></li><li><strong>Registry</strong>: npm (<a href="https://registry.npmjs.org" target="_blank" rel="noreferrer">https://registry.npmjs.org</a>)</li><li><strong>Access</strong>: Public (scoped package)</li></ul><h2 id="workflows" tabindex="-1">Workflows <a class="header-anchor" href="#workflows" aria-label="Permalink to &quot;Workflows&quot;">​</a></h2><h3 id="pr-workflow-github-workflows-pr-yml" tabindex="-1">PR Workflow (<code>.github/workflows/pr.yml</code>) <a class="header-anchor" href="#pr-workflow-github-workflows-pr-yml" aria-label="Permalink to &quot;PR Workflow (`.github/workflows/pr.yml`)&quot;">​</a></h3><p><strong>Triggers</strong>: Pull requests to main branch <strong>Actions</strong>:</p><ul><li>Tests on Node.js 18, 20, and latest</li><li>Build verification</li><li>Full test suite including MCP contract tests</li></ul><h3 id="release-workflow-github-workflows-release-yml" tabindex="-1">Release Workflow (<code>.github/workflows/release.yml</code>) <a class="header-anchor" href="#release-workflow-github-workflows-release-yml" aria-label="Permalink to &quot;Release Workflow (`.github/workflows/release.yml`)&quot;">​</a></h3><p><strong>Triggers</strong>: Push to main branch <strong>Actions</strong>:</p><ol><li>Run full test suite</li><li>Analyze conventional commits for version bump</li><li>Update package.json version</li><li>Create git tag (v1.2.3 format)</li><li>Generate changelog</li><li>Publish to npm</li><li>Create GitHub release</li></ol><h2 id="conventional-commits" tabindex="-1">Conventional Commits <a class="header-anchor" href="#conventional-commits" aria-label="Permalink to &quot;Conventional Commits&quot;">​</a></h2><p>The versioning follows conventional commit standards:</p><ul><li><code>feat:</code> → Minor version bump (1.0.0 → 1.1.0)</li><li><code>fix:</code> → Patch version bump (1.0.0 → 1.0.1)</li><li><code>BREAKING CHANGE:</code> → Major version bump (1.0.0 → 2.0.0)</li></ul><h3 id="examples" tabindex="-1">Examples: <a class="header-anchor" href="#examples" aria-label="Permalink to &quot;Examples:&quot;">​</a></h3><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> commit</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -m</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;feat: add new authentication method&quot;</span></span>\n<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> commit</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -m</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;fix: resolve memory leak in state management&quot;</span></span>\n<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> commit</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -m</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;feat!: redesign API structure</span></span>\n<span class="line"></span>\n<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">BREAKING CHANGE: API endpoints have changed&quot;</span></span></code></pre></div><h2 id="publishing-process" tabindex="-1">Publishing Process <a class="header-anchor" href="#publishing-process" aria-label="Permalink to &quot;Publishing Process&quot;">​</a></h2><ol><li><strong>Development</strong>: Work on feature branches</li><li><strong>Pull Request</strong>: Create PR to main branch (triggers tests)</li><li><strong>Review &amp; Merge</strong>: After approval, merge to main</li><li><strong>Automatic Release</strong>: GitHub Actions handles the rest: <ul><li>Tests pass → Version bump → npm publish → Git tag → Release notes</li></ul></li></ol><h2 id="manual-override" tabindex="-1">Manual Override <a class="header-anchor" href="#manual-override" aria-label="Permalink to &quot;Manual Override&quot;">​</a></h2><p>If needed, you can manually trigger releases:</p><ol><li>Go to Actions tab in GitHub</li><li>Select &quot;Release and Publish&quot; workflow</li><li>Click &quot;Run workflow&quot; on main branch</li></ol><h2 id="troubleshooting" tabindex="-1">Troubleshooting <a class="header-anchor" href="#troubleshooting" aria-label="Permalink to &quot;Troubleshooting&quot;">​</a></h2><h3 id="common-issues" tabindex="-1">Common Issues: <a class="header-anchor" href="#common-issues" aria-label="Permalink to &quot;Common Issues:&quot;">​</a></h3><ol><li><strong>npm publish fails</strong>: Check NPM_TOKEN secret is set correctly</li><li><strong>No version bump</strong>: Ensure commits follow conventional format</li><li><strong>Tests fail</strong>: Fix tests before merging to main</li><li><strong>Permission denied</strong>: Verify GitHub Actions permissions</li></ol><h3 id="checking-status" tabindex="-1">Checking Status: <a class="header-anchor" href="#checking-status" aria-label="Permalink to &quot;Checking Status:&quot;">​</a></h3><ul><li><strong>npm package</strong>: <a href="https://www.npmjs.com/package/@codemcp/workflows" target="_blank" rel="noreferrer">https://www.npmjs.com/package/@codemcp/workflows</a></li><li><strong>GitHub releases</strong>: <a href="https://github.com/codemcp/workflows/releases" target="_blank" rel="noreferrer">https://github.com/codemcp/workflows/releases</a></li><li><strong>Actions logs</strong>: <a href="https://github.com/codemcp/workflows/actions" target="_blank" rel="noreferrer">https://github.com/codemcp/workflows/actions</a></li></ul><h2 id="version-history" tabindex="-1">Version History <a class="header-anchor" href="#version-history" aria-label="Permalink to &quot;Version History&quot;">​</a></h2><p>Versions and changelogs are automatically maintained in:</p><ul><li>GitHub Releases</li><li>CHANGELOG.md (auto-generated)</li><li>Git tags (v1.2.3 format)</li></ul>',35)])])}const m=i(a,[["render",l]]);export{g as __pageData,m as default};
@@ -0,0 +1 @@
1
+ import{_ as i,c as s,o as t,a0 as o}from"./chunks/framework.FdfEk_gD.js";const g=JSON.parse('{"title":"Publishing Guide","description":"","frontmatter":{},"headers":[],"relativePath":"dev/PUBLISHING.md","filePath":"dev/PUBLISHING.md"}'),a={name:"dev/PUBLISHING.md"};function l(r,e,n,h,c,u){return t(),s("div",null,[...e[0]||(e[0]=[o("",35)])])}const m=i(a,[["render",l]]);export{g as __pageData,m as default};
@@ -0,0 +1,2 @@
1
+ import{v as d,x as p,c,o as u,a0 as r,j as e,af as g,ag as m,p as l}from"./chunks/framework.FdfEk_gD.js";const b="/workflows/assets/placeholder-demo-greenfield.B8lG_tBI.png",f={style:{position:"relative",width:"95%",height:"100%",margin:"0 auto"}},w=["src"],x=JSON.parse('{"title":"Responsible Vibe MCP","description":"","frontmatter":{},"headers":[],"relativePath":"index.md","filePath":"README.md"}'),k={name:"index.md"},C=Object.assign(k,{setup(y){const o=l(!1),i=l(""),h=()=>{i.value="https://agentic-rpl.netlify.app/conversation?url=https://github.com/codemcp/workflows/tree/demo-todo-greenfield/examples/greenfield-todo",o.value=!0,document.body.style.overflow="hidden"},a=()=>{o.value=!1,i.value="",document.body.style.overflow="auto"},n=s=>{s.key==="Escape"&&a()};return d(()=>{document.addEventListener("keydown",n)}),p(()=>{document.removeEventListener("keydown",n)}),(s,t)=>(u(),c("div",null,[t[1]||(t[1]=r('<h1 id="responsible-vibe-mcp" tabindex="-1">Responsible Vibe MCP <a class="header-anchor" href="#responsible-vibe-mcp" aria-label="Permalink to &quot;Responsible Vibe MCP&quot;">​</a></h1><p>Transform any AI coding agent into a structured development partner with battle-tested engineering workflows.</p><h2 id="the-problem-with-ai-coding-tools" tabindex="-1">The Problem with AI Coding Tools <a class="header-anchor" href="#the-problem-with-ai-coding-tools" aria-label="Permalink to &quot;The Problem with AI Coding Tools&quot;">​</a></h2><p>Most AI coding tools are glorified autocomplete on steroids. They research you code base, may even check guide on the internet – end then they spit out a full blown solution. But here&#39;s the thing: <strong>software engineering isn&#39;t just about writing code</strong>. It&#39;s about thinking through problems, making architectural decisions, and following proven methodologies that prevent you from painting yourself into corners.</p><p>The faster these tools get, the easier it becomes to skip the thinking part. Before you know it, you&#39;re three hours deep in a refactor that could have been avoided with 10 minutes of upfront design.</p><h2 id="how-responsible-vibe-changes-the-game" tabindex="-1">How Responsible Vibe Changes the Game <a class="header-anchor" href="#how-responsible-vibe-changes-the-game" aria-label="Permalink to &quot;How Responsible Vibe Changes the Game&quot;">​</a></h2><p>Instead of just responding to your requests, Responsible Vibe <strong>proactively guides your AI agent</strong> through proven engineering workflows. Your agent doesn&#39;t just write code – it engineers solutions.</p><p>Think of it as having a senior engineer sitting next to your AI, constantly asking: <em>&quot;Did you think about the how it integrates with the existing architecture? What about edge cases? We&#39;re doing TDD – let&#39;s create a red test case first&quot;</em></p><h2 id="🎬-see-it-in-action" tabindex="-1">🎬 See It In Action <a class="header-anchor" href="#🎬-see-it-in-action" aria-label="Permalink to &quot;🎬 See It In Action&quot;">​</a></h2>',9)),e("div",{class:"demo-container",style:{position:"relative",display:"inline-block",cursor:"pointer","border-radius":"8px",overflow:"hidden","box-shadow":"0 4px 12px rgba(0,0,0,0.15)"},onClick:h},[...t[0]||(t[0]=[e("img",{src:b,alt:"Interactive demo showing Responsible Vibe MCP in action",style:{width:"100%","max-width":"600px",height:"auto",display:"block"}},null,-1),e("div",{style:{position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",background:"rgba(0,0,0,0.7)","border-radius":"50%",width:"80px",height:"80px",display:"flex","align-items":"center","justify-content":"center",transition:"all 0.3s ease"}},[e("div",{style:{width:"0",height:"0","border-left":"25px solid white","border-top":"15px solid transparent","border-bottom":"15px solid transparent","margin-left":"5px"}})],-1)])]),g(e("div",{style:{position:"fixed",top:"0",left:"0",width:"100%",height:"100%",background:"rgba(0,0,0,0.9)","z-index":"1000",padding:"20px","box-sizing":"border-box"},onClick:a},[e("div",f,[e("button",{onClick:a,style:{position:"absolute",top:"-10px",right:"-10px",background:"white",border:"none","border-radius":"50%",width:"40px",height:"40px","font-size":"24px",cursor:"pointer","z-index":"1001",display:"flex","align-items":"center","justify-content":"center"},"aria-label":"Close demo"},"×"),e("iframe",{src:i.value,style:{width:"100%",height:"100%",border:"none","border-radius":"8px"},title:"Responsible Vibe MCP Interactive Demo"},null,8,w)])],512),[[m,o.value]]),t[2]||(t[2]=r(`<h2 id="what-you-actually-get" tabindex="-1">What You Actually Get <a class="header-anchor" href="#what-you-actually-get" aria-label="Permalink to &quot;What You Actually Get&quot;">​</a></h2><p><strong>Multiple Battle-Tested Workflows</strong>: Not just one-size-fits-all. Building a new project? Use the traditional V-model or the more ideation-focused greenfield. Adding a feature? EPCC works great. Fixing a bug? There&#39;s a workflow for that too.</p><p><strong>Your AI Remembers Everything</strong>: Conversations, decisions, architectural choices – all persisted across sessions and even git branches.</p><p><strong>Process Guidance That Actually Works</strong>: Your AI knows what phase it&#39;s in and what to focus on next. No more random code generation – structured, methodical development.</p><h2 id="universal-mcp-support" tabindex="-1">Universal MCP Support <a class="header-anchor" href="#universal-mcp-support" aria-label="Permalink to &quot;Universal MCP Support&quot;">​</a></h2><p>Works with any agent that supports the Model Context Protocol. Amazon Q CLI, Claude Code, Gemini CLI – doesn&#39;t matter. When the next &quot;revolutionary&quot; coding IDE launches next month, you won&#39;t need to change how you work.</p><h2 id="quick-start" tabindex="-1">Quick Start <a class="header-anchor" href="#quick-start" aria-label="Permalink to &quot;Quick Start&quot;">​</a></h2><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Setup your coding agent (works with any MCP-compatible agent)</span></span>
2
+ <span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">npx</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> @codemcp/workflows</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> setup</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> config</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> kiro</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # or claude, gemini, opencode, copilot</span></span></code></pre></div><p>Head to an empty directory and try: <em>&quot;Build a simple todo app with a terminal interface&quot;</em></p><p>Watch your agent start with architecture decisions instead of jumping straight into code. That&#39;s engineering.</p><h2 id="next-steps" tabindex="-1">Next Steps <a class="header-anchor" href="#next-steps" aria-label="Permalink to &quot;Next Steps&quot;">​</a></h2><ul><li><strong><a href="./user/how-it-works.html">How It Works</a></strong> – The technical details and what makes it different</li><li><strong><a href="./user/agent-setup.html">Quick Setup</a></strong> – Get your agent configured in 2 minutes</li><li><strong><a href="./user/tutorial.html">Hands-On Tutorial</a></strong> – Learn by building (todo app → enhancement → bugfix)</li><li><strong><a href="./workflows.html">Interactive Workflows</a></strong> – Explore all available methodologies</li><li><strong><a href="./user/crowd-mcp-integration.html">Crowd MCP Integration</a></strong> – Multi-agent collaboration with specialized roles</li></ul><hr><p><em>Because software engineering is a creative process that happens in your brain – not in the LLM&#39;s context window.</em></p>`,14))]))}});export{x as __pageData,C as default};
@@ -0,0 +1 @@
1
+ import{v as d,x as p,c,o as u,a0 as r,j as e,af as g,ag as m,p as l}from"./chunks/framework.FdfEk_gD.js";const b="/workflows/assets/placeholder-demo-greenfield.B8lG_tBI.png",f={style:{position:"relative",width:"95%",height:"100%",margin:"0 auto"}},w=["src"],x=JSON.parse('{"title":"Responsible Vibe MCP","description":"","frontmatter":{},"headers":[],"relativePath":"index.md","filePath":"README.md"}'),k={name:"index.md"},C=Object.assign(k,{setup(y){const o=l(!1),i=l(""),h=()=>{i.value="https://agentic-rpl.netlify.app/conversation?url=https://github.com/codemcp/workflows/tree/demo-todo-greenfield/examples/greenfield-todo",o.value=!0,document.body.style.overflow="hidden"},a=()=>{o.value=!1,i.value="",document.body.style.overflow="auto"},n=s=>{s.key==="Escape"&&a()};return d(()=>{document.addEventListener("keydown",n)}),p(()=>{document.removeEventListener("keydown",n)}),(s,t)=>(u(),c("div",null,[t[1]||(t[1]=r("",9)),e("div",{class:"demo-container",style:{position:"relative",display:"inline-block",cursor:"pointer","border-radius":"8px",overflow:"hidden","box-shadow":"0 4px 12px rgba(0,0,0,0.15)"},onClick:h},[...t[0]||(t[0]=[e("img",{src:b,alt:"Interactive demo showing Responsible Vibe MCP in action",style:{width:"100%","max-width":"600px",height:"auto",display:"block"}},null,-1),e("div",{style:{position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",background:"rgba(0,0,0,0.7)","border-radius":"50%",width:"80px",height:"80px",display:"flex","align-items":"center","justify-content":"center",transition:"all 0.3s ease"}},[e("div",{style:{width:"0",height:"0","border-left":"25px solid white","border-top":"15px solid transparent","border-bottom":"15px solid transparent","margin-left":"5px"}})],-1)])]),g(e("div",{style:{position:"fixed",top:"0",left:"0",width:"100%",height:"100%",background:"rgba(0,0,0,0.9)","z-index":"1000",padding:"20px","box-sizing":"border-box"},onClick:a},[e("div",f,[e("button",{onClick:a,style:{position:"absolute",top:"-10px",right:"-10px",background:"white",border:"none","border-radius":"50%",width:"40px",height:"40px","font-size":"24px",cursor:"pointer","z-index":"1001",display:"flex","align-items":"center","justify-content":"center"},"aria-label":"Close demo"},"×"),e("iframe",{src:i.value,style:{width:"100%",height:"100%",border:"none","border-radius":"8px"},title:"Responsible Vibe MCP Interactive Demo"},null,8,w)])],512),[[m,o.value]]),t[2]||(t[2]=r("",14))]))}});export{x as __pageData,C as default};
@@ -0,0 +1 @@
1
+ @font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/workflows/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/workflows/assets/inter-roman-cyrillic.C5lxZ8CY.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/workflows/assets/inter-roman-greek-ext.CqjqNYQ-.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/workflows/assets/inter-roman-greek.BBVDIX6e.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/workflows/assets/inter-roman-vietnamese.BjW4sHH5.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/workflows/assets/inter-roman-latin-ext.4ZJIpNVo.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/workflows/assets/inter-roman-latin.Di8DUHzh.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/workflows/assets/inter-italic-cyrillic-ext.r48I6akx.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/workflows/assets/inter-italic-cyrillic.By2_1cv3.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/workflows/assets/inter-italic-greek-ext.1u6EdAuj.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/workflows/assets/inter-italic-greek.DJ8dCoTZ.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/workflows/assets/inter-italic-vietnamese.BSbpV94h.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/workflows/assets/inter-italic-latin-ext.CN1xVJS-.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/workflows/assets/inter-italic-latin.C2AdPX0b.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Punctuation SC;font-weight:400;src:local("PingFang SC Regular"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:500;src:local("PingFang SC Medium"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:600;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:700;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}:root{--vp-c-white: #ffffff;--vp-c-black: #000000;--vp-c-neutral: var(--vp-c-black);--vp-c-neutral-inverse: var(--vp-c-white)}.dark{--vp-c-neutral: var(--vp-c-white);--vp-c-neutral-inverse: var(--vp-c-black)}:root{--vp-c-gray-1: #dddde3;--vp-c-gray-2: #e4e4e9;--vp-c-gray-3: #ebebef;--vp-c-gray-soft: rgba(142, 150, 170, .14);--vp-c-indigo-1: #3451b2;--vp-c-indigo-2: #3a5ccc;--vp-c-indigo-3: #5672cd;--vp-c-indigo-soft: rgba(100, 108, 255, .14);--vp-c-purple-1: #6f42c1;--vp-c-purple-2: #7e4cc9;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .14);--vp-c-green-1: #18794e;--vp-c-green-2: #299764;--vp-c-green-3: #30a46c;--vp-c-green-soft: rgba(16, 185, 129, .14);--vp-c-yellow-1: #915930;--vp-c-yellow-2: #946300;--vp-c-yellow-3: #9f6a00;--vp-c-yellow-soft: rgba(234, 179, 8, .14);--vp-c-red-1: #b8272c;--vp-c-red-2: #d5393e;--vp-c-red-3: #e0575b;--vp-c-red-soft: rgba(244, 63, 94, .14);--vp-c-sponsor: #db2777}.dark{--vp-c-gray-1: #515c67;--vp-c-gray-2: #414853;--vp-c-gray-3: #32363f;--vp-c-gray-soft: rgba(101, 117, 133, .16);--vp-c-indigo-1: #a8b1ff;--vp-c-indigo-2: #5c73e7;--vp-c-indigo-3: #3e63dd;--vp-c-indigo-soft: rgba(100, 108, 255, .16);--vp-c-purple-1: #c8abfa;--vp-c-purple-2: #a879e6;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .16);--vp-c-green-1: #3dd68c;--vp-c-green-2: #30a46c;--vp-c-green-3: #298459;--vp-c-green-soft: rgba(16, 185, 129, .16);--vp-c-yellow-1: #f9b44e;--vp-c-yellow-2: #da8b17;--vp-c-yellow-3: #a46a0a;--vp-c-yellow-soft: rgba(234, 179, 8, .16);--vp-c-red-1: #f66f81;--vp-c-red-2: #f14158;--vp-c-red-3: #b62a3c;--vp-c-red-soft: rgba(244, 63, 94, .16)}:root{--vp-c-bg: #ffffff;--vp-c-bg-alt: #f6f6f7;--vp-c-bg-elv: #ffffff;--vp-c-bg-soft: #f6f6f7}.dark{--vp-c-bg: #1b1b1f;--vp-c-bg-alt: #161618;--vp-c-bg-elv: #202127;--vp-c-bg-soft: #202127}:root{--vp-c-border: #c2c2c4;--vp-c-divider: #e2e2e3;--vp-c-gutter: #e2e2e3}.dark{--vp-c-border: #3c3f44;--vp-c-divider: #2e2e32;--vp-c-gutter: #000000}:root{--vp-c-text-1: #3c3c43;--vp-c-text-2: #67676c;--vp-c-text-3: #929295}.dark{--vp-c-text-1: #dfdfd6;--vp-c-text-2: #98989f;--vp-c-text-3: #6a6a71}:root{--vp-c-default-1: var(--vp-c-gray-1);--vp-c-default-2: var(--vp-c-gray-2);--vp-c-default-3: var(--vp-c-gray-3);--vp-c-default-soft: var(--vp-c-gray-soft);--vp-c-brand-1: var(--vp-c-indigo-1);--vp-c-brand-2: var(--vp-c-indigo-2);--vp-c-brand-3: var(--vp-c-indigo-3);--vp-c-brand-soft: var(--vp-c-indigo-soft);--vp-c-brand: var(--vp-c-brand-1);--vp-c-tip-1: var(--vp-c-brand-1);--vp-c-tip-2: var(--vp-c-brand-2);--vp-c-tip-3: var(--vp-c-brand-3);--vp-c-tip-soft: var(--vp-c-brand-soft);--vp-c-note-1: var(--vp-c-brand-1);--vp-c-note-2: var(--vp-c-brand-2);--vp-c-note-3: var(--vp-c-brand-3);--vp-c-note-soft: var(--vp-c-brand-soft);--vp-c-success-1: var(--vp-c-green-1);--vp-c-success-2: var(--vp-c-green-2);--vp-c-success-3: var(--vp-c-green-3);--vp-c-success-soft: var(--vp-c-green-soft);--vp-c-important-1: var(--vp-c-purple-1);--vp-c-important-2: var(--vp-c-purple-2);--vp-c-important-3: var(--vp-c-purple-3);--vp-c-important-soft: var(--vp-c-purple-soft);--vp-c-warning-1: var(--vp-c-yellow-1);--vp-c-warning-2: var(--vp-c-yellow-2);--vp-c-warning-3: var(--vp-c-yellow-3);--vp-c-warning-soft: var(--vp-c-yellow-soft);--vp-c-danger-1: var(--vp-c-red-1);--vp-c-danger-2: var(--vp-c-red-2);--vp-c-danger-3: var(--vp-c-red-3);--vp-c-danger-soft: var(--vp-c-red-soft);--vp-c-caution-1: var(--vp-c-red-1);--vp-c-caution-2: var(--vp-c-red-2);--vp-c-caution-3: var(--vp-c-red-3);--vp-c-caution-soft: var(--vp-c-red-soft)}:root{--vp-font-family-base: "Inter", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--vp-font-family-mono: ui-monospace, "Menlo", "Monaco", "Consolas", "Liberation Mono", "Courier New", monospace;font-optical-sizing:auto}:root:where(:lang(zh)){--vp-font-family-base: "Punctuation SC", "Inter", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"}:root{--vp-shadow-1: 0 1px 2px rgba(0, 0, 0, .04), 0 1px 2px rgba(0, 0, 0, .06);--vp-shadow-2: 0 3px 12px rgba(0, 0, 0, .07), 0 1px 4px rgba(0, 0, 0, .07);--vp-shadow-3: 0 12px 32px rgba(0, 0, 0, .1), 0 2px 6px rgba(0, 0, 0, .08);--vp-shadow-4: 0 14px 44px rgba(0, 0, 0, .12), 0 3px 9px rgba(0, 0, 0, .12);--vp-shadow-5: 0 18px 56px rgba(0, 0, 0, .16), 0 4px 12px rgba(0, 0, 0, .16)}:root{--vp-z-index-footer: 10;--vp-z-index-local-nav: 20;--vp-z-index-nav: 30;--vp-z-index-layout-top: 40;--vp-z-index-backdrop: 50;--vp-z-index-sidebar: 60}@media (min-width: 960px){:root{--vp-z-index-sidebar: 25}}:root{--vp-layout-max-width: 1440px}:root{--vp-header-anchor-symbol: "#"}:root{--vp-code-line-height: 1.7;--vp-code-font-size: .875em;--vp-code-color: var(--vp-c-brand-1);--vp-code-link-color: var(--vp-c-brand-1);--vp-code-link-hover-color: var(--vp-c-brand-2);--vp-code-bg: var(--vp-c-default-soft);--vp-code-block-color: var(--vp-c-text-2);--vp-code-block-bg: var(--vp-c-bg-alt);--vp-code-block-divider-color: var(--vp-c-gutter);--vp-code-lang-color: var(--vp-c-text-3);--vp-code-line-highlight-color: var(--vp-c-default-soft);--vp-code-line-number-color: var(--vp-c-text-3);--vp-code-line-diff-add-color: var(--vp-c-success-soft);--vp-code-line-diff-add-symbol-color: var(--vp-c-success-1);--vp-code-line-diff-remove-color: var(--vp-c-danger-soft);--vp-code-line-diff-remove-symbol-color: var(--vp-c-danger-1);--vp-code-line-warning-color: var(--vp-c-warning-soft);--vp-code-line-error-color: var(--vp-c-danger-soft);--vp-code-copy-code-border-color: var(--vp-c-divider);--vp-code-copy-code-bg: var(--vp-c-bg-soft);--vp-code-copy-code-hover-border-color: var(--vp-c-divider);--vp-code-copy-code-hover-bg: var(--vp-c-bg);--vp-code-copy-code-active-text: var(--vp-c-text-2);--vp-code-copy-copied-text-content: "Copied";--vp-code-tab-divider: var(--vp-code-block-divider-color);--vp-code-tab-text-color: var(--vp-c-text-2);--vp-code-tab-bg: var(--vp-code-block-bg);--vp-code-tab-hover-text-color: var(--vp-c-text-1);--vp-code-tab-active-text-color: var(--vp-c-text-1);--vp-code-tab-active-bar-color: var(--vp-c-brand-1)}:lang(es),:lang(pt){--vp-code-copy-copied-text-content: "Copiado"}:lang(fa){--vp-code-copy-copied-text-content: "کپی شد"}:lang(ko){--vp-code-copy-copied-text-content: "복사됨"}:lang(ru){--vp-code-copy-copied-text-content: "Скопировано"}:lang(zh){--vp-code-copy-copied-text-content: "已复制"}:root{--vp-button-brand-border: transparent;--vp-button-brand-text: var(--vp-c-white);--vp-button-brand-bg: var(--vp-c-brand-3);--vp-button-brand-hover-border: transparent;--vp-button-brand-hover-text: var(--vp-c-white);--vp-button-brand-hover-bg: var(--vp-c-brand-2);--vp-button-brand-active-border: transparent;--vp-button-brand-active-text: var(--vp-c-white);--vp-button-brand-active-bg: var(--vp-c-brand-1);--vp-button-alt-border: transparent;--vp-button-alt-text: var(--vp-c-text-1);--vp-button-alt-bg: var(--vp-c-default-3);--vp-button-alt-hover-border: transparent;--vp-button-alt-hover-text: var(--vp-c-text-1);--vp-button-alt-hover-bg: var(--vp-c-default-2);--vp-button-alt-active-border: transparent;--vp-button-alt-active-text: var(--vp-c-text-1);--vp-button-alt-active-bg: var(--vp-c-default-1);--vp-button-sponsor-border: var(--vp-c-text-2);--vp-button-sponsor-text: var(--vp-c-text-2);--vp-button-sponsor-bg: transparent;--vp-button-sponsor-hover-border: var(--vp-c-sponsor);--vp-button-sponsor-hover-text: var(--vp-c-sponsor);--vp-button-sponsor-hover-bg: transparent;--vp-button-sponsor-active-border: var(--vp-c-sponsor);--vp-button-sponsor-active-text: var(--vp-c-sponsor);--vp-button-sponsor-active-bg: transparent}:root{--vp-custom-block-font-size: 14px;--vp-custom-block-code-font-size: 13px;--vp-custom-block-info-border: transparent;--vp-custom-block-info-text: var(--vp-c-text-1);--vp-custom-block-info-bg: var(--vp-c-default-soft);--vp-custom-block-info-code-bg: var(--vp-c-default-soft);--vp-custom-block-note-border: transparent;--vp-custom-block-note-text: var(--vp-c-text-1);--vp-custom-block-note-bg: var(--vp-c-default-soft);--vp-custom-block-note-code-bg: var(--vp-c-default-soft);--vp-custom-block-tip-border: transparent;--vp-custom-block-tip-text: var(--vp-c-text-1);--vp-custom-block-tip-bg: var(--vp-c-tip-soft);--vp-custom-block-tip-code-bg: var(--vp-c-tip-soft);--vp-custom-block-important-border: transparent;--vp-custom-block-important-text: var(--vp-c-text-1);--vp-custom-block-important-bg: var(--vp-c-important-soft);--vp-custom-block-important-code-bg: var(--vp-c-important-soft);--vp-custom-block-warning-border: transparent;--vp-custom-block-warning-text: var(--vp-c-text-1);--vp-custom-block-warning-bg: var(--vp-c-warning-soft);--vp-custom-block-warning-code-bg: var(--vp-c-warning-soft);--vp-custom-block-danger-border: transparent;--vp-custom-block-danger-text: var(--vp-c-text-1);--vp-custom-block-danger-bg: var(--vp-c-danger-soft);--vp-custom-block-danger-code-bg: var(--vp-c-danger-soft);--vp-custom-block-caution-border: transparent;--vp-custom-block-caution-text: var(--vp-c-text-1);--vp-custom-block-caution-bg: var(--vp-c-caution-soft);--vp-custom-block-caution-code-bg: var(--vp-c-caution-soft);--vp-custom-block-details-border: var(--vp-custom-block-info-border);--vp-custom-block-details-text: var(--vp-custom-block-info-text);--vp-custom-block-details-bg: var(--vp-custom-block-info-bg);--vp-custom-block-details-code-bg: var(--vp-custom-block-info-code-bg)}:root{--vp-input-border-color: var(--vp-c-border);--vp-input-bg-color: var(--vp-c-bg-alt);--vp-input-switch-bg-color: var(--vp-c-default-soft)}:root{--vp-nav-height: 64px;--vp-nav-bg-color: var(--vp-c-bg);--vp-nav-screen-bg-color: var(--vp-c-bg);--vp-nav-logo-height: 24px}.hide-nav{--vp-nav-height: 0px}.hide-nav .VPSidebar{--vp-nav-height: 22px}:root{--vp-local-nav-bg-color: var(--vp-c-bg)}:root{--vp-sidebar-width: 272px;--vp-sidebar-bg-color: var(--vp-c-bg-alt)}:root{--vp-backdrop-bg-color: rgba(0, 0, 0, .6)}:root{--vp-home-hero-name-color: var(--vp-c-brand-1);--vp-home-hero-name-background: transparent;--vp-home-hero-image-background-image: none;--vp-home-hero-image-filter: none}:root{--vp-badge-info-border: transparent;--vp-badge-info-text: var(--vp-c-text-2);--vp-badge-info-bg: var(--vp-c-default-soft);--vp-badge-tip-border: transparent;--vp-badge-tip-text: var(--vp-c-tip-1);--vp-badge-tip-bg: var(--vp-c-tip-soft);--vp-badge-warning-border: transparent;--vp-badge-warning-text: var(--vp-c-warning-1);--vp-badge-warning-bg: var(--vp-c-warning-soft);--vp-badge-danger-border: transparent;--vp-badge-danger-text: var(--vp-c-danger-1);--vp-badge-danger-bg: var(--vp-c-danger-soft)}:root{--vp-carbon-ads-text-color: var(--vp-c-text-1);--vp-carbon-ads-poweredby-color: var(--vp-c-text-2);--vp-carbon-ads-bg-color: var(--vp-c-bg-soft);--vp-carbon-ads-hover-text-color: var(--vp-c-brand-1);--vp-carbon-ads-hover-poweredby-color: var(--vp-c-text-1)}:root{--vp-local-search-bg: var(--vp-c-bg);--vp-local-search-result-bg: var(--vp-c-bg);--vp-local-search-result-border: var(--vp-c-divider);--vp-local-search-result-selected-bg: var(--vp-c-bg);--vp-local-search-result-selected-border: var(--vp-c-brand-1);--vp-local-search-highlight-bg: var(--vp-c-brand-1);--vp-local-search-highlight-text: var(--vp-c-neutral-inverse)}@media (prefers-reduced-motion: reduce){*,:before,:after{animation-delay:-1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important;background-attachment:initial!important;scroll-behavior:auto!important;transition-duration:0s!important;transition-delay:0s!important}}*,:before,:after{box-sizing:border-box}html{line-height:1.4;font-size:16px;-webkit-text-size-adjust:100%}html.dark{color-scheme:dark}body{margin:0;width:100%;min-width:320px;min-height:100vh;line-height:24px;font-family:var(--vp-font-family-base);font-size:16px;font-weight:400;color:var(--vp-c-text-1);background-color:var(--vp-c-bg);font-synthesis:style;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}main{display:block}h1,h2,h3,h4,h5,h6{margin:0;line-height:24px;font-size:16px;font-weight:400}p{margin:0}strong,b{font-weight:600}a,area,button,[role=button],input,label,select,summary,textarea{touch-action:manipulation}a{color:inherit;text-decoration:inherit}ol,ul{list-style:none;margin:0;padding:0}blockquote{margin:0}pre,code,kbd,samp{font-family:var(--vp-font-family-mono)}img,svg,video,canvas,audio,iframe,embed,object{display:block}figure{margin:0}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{border:0;padding:0;line-height:inherit;color:inherit}button{padding:0;font-family:inherit;background-color:transparent;background-image:none}button:enabled,[role=button]:enabled{cursor:pointer}button:focus,button:focus-visible{outline:1px dotted;outline:4px auto -webkit-focus-ring-color}button:focus:not(:focus-visible){outline:none!important}input:focus,textarea:focus,select:focus{outline:none}table{border-collapse:collapse}input{background-color:transparent}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:var(--vp-c-text-3)}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:var(--vp-c-text-3)}input::placeholder,textarea::placeholder{color:var(--vp-c-text-3)}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}textarea{resize:vertical}select{-webkit-appearance:none}fieldset{margin:0;padding:0}h1,h2,h3,h4,h5,h6,li,p{overflow-wrap:break-word}vite-error-overlay{z-index:9999}mjx-container{overflow-x:auto}mjx-container>svg{display:inline-block;margin:auto}[class^=vpi-],[class*=" vpi-"],.vp-icon{width:1em;height:1em}[class^=vpi-].bg,[class*=" vpi-"].bg,.vp-icon.bg{background-size:100% 100%;background-color:transparent}[class^=vpi-]:not(.bg),[class*=" vpi-"]:not(.bg),.vp-icon:not(.bg){-webkit-mask:var(--icon) no-repeat;mask:var(--icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit}.vpi-align-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M21 6H3M15 12H3M17 18H3'/%3E%3C/svg%3E")}.vpi-arrow-right,.vpi-arrow-down,.vpi-arrow-left,.vpi-arrow-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5l7 7-7 7'/%3E%3C/svg%3E")}.vpi-chevron-right,.vpi-chevron-down,.vpi-chevron-left,.vpi-chevron-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E")}.vpi-chevron-down,.vpi-arrow-down{transform:rotate(90deg)}.vpi-chevron-left,.vpi-arrow-left{transform:rotate(180deg)}.vpi-chevron-up,.vpi-arrow-up{transform:rotate(-90deg)}.vpi-square-pen{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7'/%3E%3Cpath d='M18.375 2.625a2.121 2.121 0 1 1 3 3L12 15l-4 1 1-4Z'/%3E%3C/svg%3E")}.vpi-plus{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5v14'/%3E%3C/svg%3E")}.vpi-sun{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Cpath d='M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41'/%3E%3C/svg%3E")}.vpi-moon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z'/%3E%3C/svg%3E")}.vpi-more-horizontal{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='1'/%3E%3Ccircle cx='19' cy='12' r='1'/%3E%3Ccircle cx='5' cy='12' r='1'/%3E%3C/svg%3E")}.vpi-languages{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m5 8 6 6M4 14l6-6 2-3M2 5h12M7 2h1M22 22l-5-10-5 10M14 18h6'/%3E%3C/svg%3E")}.vpi-heart{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z'/%3E%3C/svg%3E")}.vpi-search{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E")}.vpi-layout-list{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='7' height='7' x='3' y='3' rx='1'/%3E%3Crect width='7' height='7' x='3' y='14' rx='1'/%3E%3Cpath d='M14 4h7M14 9h7M14 15h7M14 20h7'/%3E%3C/svg%3E")}.vpi-delete{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M20 5H9l-7 7 7 7h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2ZM18 9l-6 6M12 9l6 6'/%3E%3C/svg%3E")}.vpi-corner-down-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 10-5 5 5 5'/%3E%3Cpath d='M20 4v7a4 4 0 0 1-4 4H4'/%3E%3C/svg%3E")}:root{--vp-icon-copy: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3C/svg%3E");--vp-icon-copied: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3Cpath d='m9 14 2 2 4-4'/%3E%3C/svg%3E")}.visually-hidden{position:absolute;width:1px;height:1px;white-space:nowrap;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden}.custom-block{border:1px solid transparent;border-radius:8px;padding:16px 16px 8px;line-height:24px;font-size:var(--vp-custom-block-font-size);color:var(--vp-c-text-2)}.custom-block.info{border-color:var(--vp-custom-block-info-border);color:var(--vp-custom-block-info-text);background-color:var(--vp-custom-block-info-bg)}.custom-block.info a,.custom-block.info code{color:var(--vp-c-brand-1)}.custom-block.info a:hover,.custom-block.info a:hover>code{color:var(--vp-c-brand-2)}.custom-block.info code{background-color:var(--vp-custom-block-info-code-bg)}.custom-block.note{border-color:var(--vp-custom-block-note-border);color:var(--vp-custom-block-note-text);background-color:var(--vp-custom-block-note-bg)}.custom-block.note a,.custom-block.note code{color:var(--vp-c-brand-1)}.custom-block.note a:hover,.custom-block.note a:hover>code{color:var(--vp-c-brand-2)}.custom-block.note code{background-color:var(--vp-custom-block-note-code-bg)}.custom-block.tip{border-color:var(--vp-custom-block-tip-border);color:var(--vp-custom-block-tip-text);background-color:var(--vp-custom-block-tip-bg)}.custom-block.tip a,.custom-block.tip code{color:var(--vp-c-tip-1)}.custom-block.tip a:hover,.custom-block.tip a:hover>code{color:var(--vp-c-tip-2)}.custom-block.tip code{background-color:var(--vp-custom-block-tip-code-bg)}.custom-block.important{border-color:var(--vp-custom-block-important-border);color:var(--vp-custom-block-important-text);background-color:var(--vp-custom-block-important-bg)}.custom-block.important a,.custom-block.important code{color:var(--vp-c-important-1)}.custom-block.important a:hover,.custom-block.important a:hover>code{color:var(--vp-c-important-2)}.custom-block.important code{background-color:var(--vp-custom-block-important-code-bg)}.custom-block.warning{border-color:var(--vp-custom-block-warning-border);color:var(--vp-custom-block-warning-text);background-color:var(--vp-custom-block-warning-bg)}.custom-block.warning a,.custom-block.warning code{color:var(--vp-c-warning-1)}.custom-block.warning a:hover,.custom-block.warning a:hover>code{color:var(--vp-c-warning-2)}.custom-block.warning code{background-color:var(--vp-custom-block-warning-code-bg)}.custom-block.danger{border-color:var(--vp-custom-block-danger-border);color:var(--vp-custom-block-danger-text);background-color:var(--vp-custom-block-danger-bg)}.custom-block.danger a,.custom-block.danger code{color:var(--vp-c-danger-1)}.custom-block.danger a:hover,.custom-block.danger a:hover>code{color:var(--vp-c-danger-2)}.custom-block.danger code{background-color:var(--vp-custom-block-danger-code-bg)}.custom-block.caution{border-color:var(--vp-custom-block-caution-border);color:var(--vp-custom-block-caution-text);background-color:var(--vp-custom-block-caution-bg)}.custom-block.caution a,.custom-block.caution code{color:var(--vp-c-caution-1)}.custom-block.caution a:hover,.custom-block.caution a:hover>code{color:var(--vp-c-caution-2)}.custom-block.caution code{background-color:var(--vp-custom-block-caution-code-bg)}.custom-block.details{border-color:var(--vp-custom-block-details-border);color:var(--vp-custom-block-details-text);background-color:var(--vp-custom-block-details-bg)}.custom-block.details a{color:var(--vp-c-brand-1)}.custom-block.details a:hover,.custom-block.details a:hover>code{color:var(--vp-c-brand-2)}.custom-block.details code{background-color:var(--vp-custom-block-details-code-bg)}.custom-block-title{font-weight:600}.custom-block p+p{margin:8px 0}.custom-block.details summary{margin:0 0 8px;font-weight:700;cursor:pointer;-webkit-user-select:none;user-select:none}.custom-block.details summary+p{margin:8px 0}.custom-block a{color:inherit;font-weight:600;text-decoration:underline;text-underline-offset:2px;transition:opacity .25s}.custom-block a:hover{opacity:.75}.custom-block code{font-size:var(--vp-custom-block-code-font-size)}.custom-block.custom-block th,.custom-block.custom-block blockquote>p{font-size:var(--vp-custom-block-font-size);color:inherit}.dark .vp-code span{color:var(--shiki-dark, inherit)}html:not(.dark) .vp-code span{color:var(--shiki-light, inherit)}.vp-code-group{margin-top:16px}.vp-code-group .tabs{position:relative;display:flex;margin-right:-24px;margin-left:-24px;padding:0 12px;background-color:var(--vp-code-tab-bg);overflow-x:auto;overflow-y:hidden;box-shadow:inset 0 -1px var(--vp-code-tab-divider)}@media (min-width: 640px){.vp-code-group .tabs{margin-right:0;margin-left:0;border-radius:8px 8px 0 0}}.vp-code-group .tabs input{position:fixed;opacity:0;pointer-events:none}.vp-code-group .tabs label{position:relative;display:inline-block;border-bottom:1px solid transparent;padding:0 12px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-code-tab-text-color);white-space:nowrap;cursor:pointer;transition:color .25s}.vp-code-group .tabs label:after{position:absolute;right:8px;bottom:-1px;left:8px;z-index:1;height:2px;border-radius:2px;content:"";background-color:transparent;transition:background-color .25s}.vp-code-group label:hover{color:var(--vp-code-tab-hover-text-color)}.vp-code-group input:checked+label{color:var(--vp-code-tab-active-text-color)}.vp-code-group input:checked+label:after{background-color:var(--vp-code-tab-active-bar-color)}.vp-code-group div[class*=language-],.vp-block{display:none;margin-top:0!important;border-top-left-radius:0!important;border-top-right-radius:0!important}.vp-code-group div[class*=language-].active,.vp-block.active{display:block}.vp-block{padding:20px 24px}.vp-doc h1,.vp-doc h2,.vp-doc h3,.vp-doc h4,.vp-doc h5,.vp-doc h6{position:relative;font-weight:600;outline:none}.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:28px}.vp-doc h2{margin:48px 0 16px;border-top:1px solid var(--vp-c-divider);padding-top:24px;letter-spacing:-.02em;line-height:32px;font-size:24px}.vp-doc h3{margin:32px 0 0;letter-spacing:-.01em;line-height:28px;font-size:20px}.vp-doc h4{margin:24px 0 0;letter-spacing:-.01em;line-height:24px;font-size:18px}.vp-doc .header-anchor{position:absolute;top:0;left:0;margin-left:-.87em;font-weight:500;-webkit-user-select:none;user-select:none;opacity:0;text-decoration:none;transition:color .25s,opacity .25s}.vp-doc .header-anchor:before{content:var(--vp-header-anchor-symbol)}.vp-doc h1:hover .header-anchor,.vp-doc h1 .header-anchor:focus,.vp-doc h2:hover .header-anchor,.vp-doc h2 .header-anchor:focus,.vp-doc h3:hover .header-anchor,.vp-doc h3 .header-anchor:focus,.vp-doc h4:hover .header-anchor,.vp-doc h4 .header-anchor:focus,.vp-doc h5:hover .header-anchor,.vp-doc h5 .header-anchor:focus,.vp-doc h6:hover .header-anchor,.vp-doc h6 .header-anchor:focus{opacity:1}@media (min-width: 768px){.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:32px}}.vp-doc h2 .header-anchor{top:24px}.vp-doc p,.vp-doc summary{margin:16px 0}.vp-doc p{line-height:28px}.vp-doc blockquote{margin:16px 0;border-left:2px solid var(--vp-c-divider);padding-left:16px;transition:border-color .5s;color:var(--vp-c-text-2)}.vp-doc blockquote>p{margin:0;font-size:16px;transition:color .5s}.vp-doc a{font-weight:500;color:var(--vp-c-brand-1);text-decoration:underline;text-underline-offset:2px;transition:color .25s,opacity .25s}.vp-doc a:hover{color:var(--vp-c-brand-2)}.vp-doc strong{font-weight:600}.vp-doc ul,.vp-doc ol{padding-left:1.25rem;margin:16px 0}.vp-doc ul{list-style:disc}.vp-doc ol{list-style:decimal}.vp-doc li+li{margin-top:8px}.vp-doc li>ol,.vp-doc li>ul{margin:8px 0 0}.vp-doc table{display:block;border-collapse:collapse;margin:20px 0;overflow-x:auto}.vp-doc tr{background-color:var(--vp-c-bg);border-top:1px solid var(--vp-c-divider);transition:background-color .5s}.vp-doc tr:nth-child(2n){background-color:var(--vp-c-bg-soft)}.vp-doc th,.vp-doc td{border:1px solid var(--vp-c-divider);padding:8px 16px}.vp-doc th{text-align:left;font-size:14px;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-doc td{font-size:14px}.vp-doc hr{margin:16px 0;border:none;border-top:1px solid var(--vp-c-divider)}.vp-doc .custom-block{margin:16px 0}.vp-doc .custom-block p{margin:8px 0;line-height:24px}.vp-doc .custom-block p:first-child{margin:0}.vp-doc .custom-block div[class*=language-]{margin:8px 0;border-radius:8px}.vp-doc .custom-block div[class*=language-] code{font-weight:400;background-color:transparent}.vp-doc .custom-block .vp-code-group .tabs{margin:0;border-radius:8px 8px 0 0}.vp-doc :not(pre,h1,h2,h3,h4,h5,h6)>code{font-size:var(--vp-code-font-size);color:var(--vp-code-color)}.vp-doc :not(pre)>code{border-radius:4px;padding:3px 6px;background-color:var(--vp-code-bg);transition:color .25s,background-color .5s}.vp-doc a>code{color:var(--vp-code-link-color)}.vp-doc a:hover>code{color:var(--vp-code-link-hover-color)}.vp-doc h1>code,.vp-doc h2>code,.vp-doc h3>code,.vp-doc h4>code{font-size:.9em}.vp-doc div[class*=language-],.vp-block{position:relative;margin:16px -24px;background-color:var(--vp-code-block-bg);overflow-x:auto;transition:background-color .5s}@media (min-width: 640px){.vp-doc div[class*=language-],.vp-block{border-radius:8px;margin:16px 0}}@media (max-width: 639px){.vp-doc li div[class*=language-]{border-radius:8px 0 0 8px}}.vp-doc div[class*=language-]+div[class*=language-],.vp-doc div[class$=-api]+div[class*=language-],.vp-doc div[class*=language-]+div[class$=-api]>div[class*=language-]{margin-top:-8px}.vp-doc [class*=language-] pre,.vp-doc [class*=language-] code{direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}.vp-doc [class*=language-] pre{position:relative;z-index:1;margin:0;padding:20px 0;background:transparent;overflow-x:auto}.vp-doc [class*=language-] code{display:block;padding:0 24px;width:fit-content;min-width:100%;line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-block-color);transition:color .5s}.vp-doc [class*=language-] code .highlighted{background-color:var(--vp-code-line-highlight-color);transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .highlighted.error{background-color:var(--vp-code-line-error-color)}.vp-doc [class*=language-] code .highlighted.warning{background-color:var(--vp-code-line-warning-color)}.vp-doc [class*=language-] code .diff{transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .diff:before{position:absolute;left:10px}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){filter:blur(.095rem);opacity:.4;transition:filter .35s,opacity .35s}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){opacity:.7;transition:filter .35s,opacity .35s}.vp-doc [class*=language-]:hover .has-focused-lines .line:not(.has-focus){filter:blur(0);opacity:1}.vp-doc [class*=language-] code .diff.remove{background-color:var(--vp-code-line-diff-remove-color);opacity:.7}.vp-doc [class*=language-] code .diff.remove:before{content:"-";color:var(--vp-code-line-diff-remove-symbol-color)}.vp-doc [class*=language-] code .diff.add{background-color:var(--vp-code-line-diff-add-color)}.vp-doc [class*=language-] code .diff.add:before{content:"+";color:var(--vp-code-line-diff-add-symbol-color)}.vp-doc div[class*=language-].line-numbers-mode{padding-left:32px}.vp-doc .line-numbers-wrapper{position:absolute;top:0;bottom:0;left:0;z-index:3;border-right:1px solid var(--vp-code-block-divider-color);padding-top:20px;width:32px;text-align:center;font-family:var(--vp-font-family-mono);line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-line-number-color);transition:border-color .5s,color .5s}.vp-doc [class*=language-]>button.copy{direction:ltr;position:absolute;top:12px;right:12px;z-index:3;border:1px solid var(--vp-code-copy-code-border-color);border-radius:4px;width:40px;height:40px;background-color:var(--vp-code-copy-code-bg);opacity:0;cursor:pointer;background-image:var(--vp-icon-copy);background-position:50%;background-size:20px;background-repeat:no-repeat;transition:border-color .25s,background-color .25s,opacity .25s}.vp-doc [class*=language-]:hover>button.copy,.vp-doc [class*=language-]>button.copy:focus{opacity:1}.vp-doc [class*=language-]>button.copy:hover,.vp-doc [class*=language-]>button.copy.copied{border-color:var(--vp-code-copy-code-hover-border-color);background-color:var(--vp-code-copy-code-hover-bg)}.vp-doc [class*=language-]>button.copy.copied,.vp-doc [class*=language-]>button.copy:hover.copied{border-radius:0 4px 4px 0;background-color:var(--vp-code-copy-code-hover-bg);background-image:var(--vp-icon-copied)}.vp-doc [class*=language-]>button.copy.copied:before,.vp-doc [class*=language-]>button.copy:hover.copied:before{position:relative;top:-1px;transform:translate(calc(-100% - 1px));display:flex;justify-content:center;align-items:center;border:1px solid var(--vp-code-copy-code-hover-border-color);border-right:0;border-radius:4px 0 0 4px;padding:0 10px;width:fit-content;height:40px;text-align:center;font-size:12px;font-weight:500;color:var(--vp-code-copy-code-active-text);background-color:var(--vp-code-copy-code-hover-bg);white-space:nowrap;content:var(--vp-code-copy-copied-text-content)}.vp-doc [class*=language-]>span.lang{position:absolute;top:2px;right:8px;z-index:2;font-size:12px;font-weight:500;-webkit-user-select:none;user-select:none;color:var(--vp-code-lang-color);transition:color .4s,opacity .4s}.vp-doc [class*=language-]:hover>button.copy+span.lang,.vp-doc [class*=language-]>button.copy:focus+span.lang{opacity:0}.vp-doc .VPTeamMembers{margin-top:24px}.vp-doc .VPTeamMembers.small.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}.vp-doc .VPTeamMembers.small.count-2 .container,.vp-doc .VPTeamMembers.small.count-3 .container{max-width:100%!important}.vp-doc .VPTeamMembers.medium.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}:is(.vp-external-link-icon,.vp-doc a[href*="://"],.vp-doc a[target=_blank]):not(:is(.no-icon,svg a,:has(img,svg))):after{display:inline-block;margin-top:-1px;margin-left:4px;width:11px;height:11px;background:currentColor;color:var(--vp-c-text-3);flex-shrink:0;--icon: url("data:image/svg+xml, %3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' %3E%3Cpath d='M0 0h24v24H0V0z' fill='none' /%3E%3Cpath d='M9 5v2h6.59L4 18.59 5.41 20 17 8.41V15h2V5H9z' /%3E%3C/svg%3E");-webkit-mask-image:var(--icon);mask-image:var(--icon)}.vp-external-link-icon:after{content:""}.external-link-icon-enabled :is(.vp-doc a[href*="://"],.vp-doc a[target=_blank]):not(:is(.no-icon,svg a,:has(img,svg))):after{content:"";color:currentColor}.vp-sponsor{border-radius:16px;overflow:hidden}.vp-sponsor.aside{border-radius:12px}.vp-sponsor-section+.vp-sponsor-section{margin-top:4px}.vp-sponsor-tier{margin:0 0 4px!important;text-align:center;letter-spacing:1px!important;line-height:24px;width:100%;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-sponsor.normal .vp-sponsor-tier{padding:13px 0 11px;font-size:14px}.vp-sponsor.aside .vp-sponsor-tier{padding:9px 0 7px;font-size:12px}.vp-sponsor-grid+.vp-sponsor-tier{margin-top:4px}.vp-sponsor-grid{display:flex;flex-wrap:wrap;gap:4px}.vp-sponsor-grid.xmini .vp-sponsor-grid-link{height:64px}.vp-sponsor-grid.xmini .vp-sponsor-grid-image{max-width:64px;max-height:22px}.vp-sponsor-grid.mini .vp-sponsor-grid-link{height:72px}.vp-sponsor-grid.mini .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.small .vp-sponsor-grid-link{height:96px}.vp-sponsor-grid.small .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.medium .vp-sponsor-grid-link{height:112px}.vp-sponsor-grid.medium .vp-sponsor-grid-image{max-width:120px;max-height:36px}.vp-sponsor-grid.big .vp-sponsor-grid-link{height:184px}.vp-sponsor-grid.big .vp-sponsor-grid-image{max-width:192px;max-height:56px}.vp-sponsor-grid[data-vp-grid="2"] .vp-sponsor-grid-item{width:calc((100% - 4px)/2)}.vp-sponsor-grid[data-vp-grid="3"] .vp-sponsor-grid-item{width:calc((100% - 4px * 2) / 3)}.vp-sponsor-grid[data-vp-grid="4"] .vp-sponsor-grid-item{width:calc((100% - 12px)/4)}.vp-sponsor-grid[data-vp-grid="5"] .vp-sponsor-grid-item{width:calc((100% - 16px)/5)}.vp-sponsor-grid[data-vp-grid="6"] .vp-sponsor-grid-item{width:calc((100% - 4px * 5) / 6)}.vp-sponsor-grid-item{flex-shrink:0;width:100%;background-color:var(--vp-c-bg-soft);transition:background-color .25s}.vp-sponsor-grid-item:hover{background-color:var(--vp-c-default-soft)}.vp-sponsor-grid-item:hover .vp-sponsor-grid-image{filter:grayscale(0) invert(0)}.vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.dark .vp-sponsor-grid-item:hover{background-color:var(--vp-c-white)}.dark .vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.vp-sponsor-grid-link{display:flex}.vp-sponsor-grid-box{display:flex;justify-content:center;align-items:center;width:100%}.vp-sponsor-grid-image{max-width:100%;filter:grayscale(1);transition:filter .25s}.dark .vp-sponsor-grid-image{filter:grayscale(1) invert(1)}.VPBadge{display:inline-block;margin-left:2px;border:1px solid transparent;border-radius:12px;padding:0 10px;line-height:22px;font-size:12px;font-weight:500;transform:translateY(-2px)}.VPBadge.small{padding:0 6px;line-height:18px;font-size:10px;transform:translateY(-8px)}.VPDocFooter .VPBadge{display:none}.vp-doc h1>.VPBadge{margin-top:4px;vertical-align:top}.vp-doc h2>.VPBadge{margin-top:3px;padding:0 8px;vertical-align:top}.vp-doc h3>.VPBadge{vertical-align:middle}.vp-doc h4>.VPBadge,.vp-doc h5>.VPBadge,.vp-doc h6>.VPBadge{vertical-align:middle;line-height:18px}.VPBadge.info{border-color:var(--vp-badge-info-border);color:var(--vp-badge-info-text);background-color:var(--vp-badge-info-bg)}.VPBadge.tip{border-color:var(--vp-badge-tip-border);color:var(--vp-badge-tip-text);background-color:var(--vp-badge-tip-bg)}.VPBadge.warning{border-color:var(--vp-badge-warning-border);color:var(--vp-badge-warning-text);background-color:var(--vp-badge-warning-bg)}.VPBadge.danger{border-color:var(--vp-badge-danger-border);color:var(--vp-badge-danger-text);background-color:var(--vp-badge-danger-bg)}.VPBackdrop[data-v-21d34dee]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--vp-z-index-backdrop);background:var(--vp-backdrop-bg-color);transition:opacity .5s}.VPBackdrop.fade-enter-from[data-v-21d34dee],.VPBackdrop.fade-leave-to[data-v-21d34dee]{opacity:0}.VPBackdrop.fade-leave-active[data-v-21d34dee]{transition-duration:.25s}@media (min-width: 1280px){.VPBackdrop[data-v-21d34dee]{display:none}}.NotFound[data-v-7fd251a9]{padding:64px 24px 96px;text-align:center}@media (min-width: 768px){.NotFound[data-v-7fd251a9]{padding:96px 32px 168px}}.code[data-v-7fd251a9]{line-height:64px;font-size:64px;font-weight:600}.title[data-v-7fd251a9]{padding-top:12px;letter-spacing:2px;line-height:20px;font-size:20px;font-weight:700}.divider[data-v-7fd251a9]{margin:24px auto 18px;width:64px;height:1px;background-color:var(--vp-c-divider)}.quote[data-v-7fd251a9]{margin:0 auto;max-width:256px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.action[data-v-7fd251a9]{padding-top:20px}.link[data-v-7fd251a9]{display:inline-block;border:1px solid var(--vp-c-brand-1);border-radius:16px;padding:3px 16px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:border-color .25s,color .25s}.link[data-v-7fd251a9]:hover{border-color:var(--vp-c-brand-2);color:var(--vp-c-brand-2)}.root[data-v-f1d87f0d]{position:relative;z-index:1}.nested[data-v-f1d87f0d]{padding-right:16px;padding-left:16px}.outline-link[data-v-f1d87f0d]{display:block;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .5s}.outline-link[data-v-f1d87f0d]:hover,.outline-link.active[data-v-f1d87f0d]{color:var(--vp-c-text-1);transition:color .25s}.outline-link.nested[data-v-f1d87f0d]{padding-left:13px}.VPDocAsideOutline[data-v-9d908c55]{display:none}.VPDocAsideOutline.has-outline[data-v-9d908c55]{display:block}.content[data-v-9d908c55]{position:relative;border-left:1px solid var(--vp-c-divider);padding-left:16px;font-size:13px;font-weight:500}.outline-marker[data-v-9d908c55]{position:absolute;top:32px;left:-1px;z-index:0;opacity:0;width:2px;border-radius:2px;height:18px;background-color:var(--vp-c-brand-1);transition:top .25s cubic-bezier(0,1,.5,1),background-color .5s,opacity .25s}.outline-title[data-v-9d908c55]{line-height:32px;font-size:14px;font-weight:600}.VPDocAside[data-v-0199d109]{display:flex;flex-direction:column;flex-grow:1}.spacer[data-v-0199d109]{flex-grow:1}.VPDocAside[data-v-0199d109] .spacer+.VPDocAsideSponsors,.VPDocAside[data-v-0199d109] .spacer+.VPDocAsideCarbonAds{margin-top:24px}.VPDocAside[data-v-0199d109] .VPDocAsideSponsors+.VPDocAsideCarbonAds{margin-top:16px}.VPLastUpdated[data-v-4b4ed50c]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 640px){.VPLastUpdated[data-v-4b4ed50c]{line-height:32px;font-size:14px;font-weight:500}}.VPDocFooter[data-v-5253e96b]{margin-top:64px}.edit-info[data-v-5253e96b]{padding-bottom:18px}@media (min-width: 640px){.edit-info[data-v-5253e96b]{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px}}.edit-link-button[data-v-5253e96b]{display:flex;align-items:center;border:0;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.edit-link-button[data-v-5253e96b]:hover{color:var(--vp-c-brand-2)}.edit-link-icon[data-v-5253e96b]{margin-right:8px}.prev-next[data-v-5253e96b]{border-top:1px solid var(--vp-c-divider);padding-top:24px;display:grid;grid-row-gap:8px}@media (min-width: 640px){.prev-next[data-v-5253e96b]{grid-template-columns:repeat(2,1fr);grid-column-gap:16px}}.pager-link[data-v-5253e96b]{display:block;border:1px solid var(--vp-c-divider);border-radius:8px;padding:11px 16px 13px;width:100%;height:100%;transition:border-color .25s}.pager-link[data-v-5253e96b]:hover{border-color:var(--vp-c-brand-1)}.pager-link.next[data-v-5253e96b]{margin-left:auto;text-align:right}.desc[data-v-5253e96b]{display:block;line-height:20px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.title[data-v-5253e96b]{display:block;line-height:20px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.VPDoc[data-v-cda1d691]{padding:32px 24px 96px;width:100%}@media (min-width: 768px){.VPDoc[data-v-cda1d691]{padding:48px 32px 128px}}@media (min-width: 960px){.VPDoc[data-v-cda1d691]{padding:48px 32px 0}.VPDoc:not(.has-sidebar) .container[data-v-cda1d691]{display:flex;justify-content:center;max-width:992px}.VPDoc:not(.has-sidebar) .content[data-v-cda1d691]{max-width:752px}}@media (min-width: 1280px){.VPDoc .container[data-v-cda1d691]{display:flex;justify-content:center}.VPDoc .aside[data-v-cda1d691]{display:block}}@media (min-width: 1440px){.VPDoc:not(.has-sidebar) .content[data-v-cda1d691]{max-width:784px}.VPDoc:not(.has-sidebar) .container[data-v-cda1d691]{max-width:1104px}}.container[data-v-cda1d691]{margin:0 auto;width:100%}.aside[data-v-cda1d691]{position:relative;display:none;order:2;flex-grow:1;padding-left:32px;width:100%;max-width:256px}.left-aside[data-v-cda1d691]{order:1;padding-left:unset;padding-right:32px}.aside-container[data-v-cda1d691]{position:fixed;top:0;padding-top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + var(--vp-doc-top-height, 0px) + 48px);width:224px;height:100vh;overflow-x:hidden;overflow-y:auto;scrollbar-width:none}.aside-container[data-v-cda1d691]::-webkit-scrollbar{display:none}.aside-curtain[data-v-cda1d691]{position:fixed;bottom:0;z-index:10;width:224px;height:32px;background:linear-gradient(transparent,var(--vp-c-bg) 70%)}.aside-content[data-v-cda1d691]{display:flex;flex-direction:column;min-height:calc(100vh - (var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px));padding-bottom:32px}.content[data-v-cda1d691]{position:relative;margin:0 auto;width:100%}@media (min-width: 960px){.content[data-v-cda1d691]{padding:0 32px 128px}}@media (min-width: 1280px){.content[data-v-cda1d691]{order:1;margin:0;min-width:640px}}.content-container[data-v-cda1d691]{margin:0 auto}.VPDoc.has-aside .content-container[data-v-cda1d691]{max-width:688px}.VPButton[data-v-62ffcf97]{display:inline-block;border:1px solid transparent;text-align:center;font-weight:600;white-space:nowrap;transition:color .25s,border-color .25s,background-color .25s}.VPButton[data-v-62ffcf97]:active{transition:color .1s,border-color .1s,background-color .1s}.VPButton.medium[data-v-62ffcf97]{border-radius:20px;padding:0 20px;line-height:38px;font-size:14px}.VPButton.big[data-v-62ffcf97]{border-radius:24px;padding:0 24px;line-height:46px;font-size:16px}.VPButton.brand[data-v-62ffcf97]{border-color:var(--vp-button-brand-border);color:var(--vp-button-brand-text);background-color:var(--vp-button-brand-bg)}.VPButton.brand[data-v-62ffcf97]:hover{border-color:var(--vp-button-brand-hover-border);color:var(--vp-button-brand-hover-text);background-color:var(--vp-button-brand-hover-bg)}.VPButton.brand[data-v-62ffcf97]:active{border-color:var(--vp-button-brand-active-border);color:var(--vp-button-brand-active-text);background-color:var(--vp-button-brand-active-bg)}.VPButton.alt[data-v-62ffcf97]{border-color:var(--vp-button-alt-border);color:var(--vp-button-alt-text);background-color:var(--vp-button-alt-bg)}.VPButton.alt[data-v-62ffcf97]:hover{border-color:var(--vp-button-alt-hover-border);color:var(--vp-button-alt-hover-text);background-color:var(--vp-button-alt-hover-bg)}.VPButton.alt[data-v-62ffcf97]:active{border-color:var(--vp-button-alt-active-border);color:var(--vp-button-alt-active-text);background-color:var(--vp-button-alt-active-bg)}.VPButton.sponsor[data-v-62ffcf97]{border-color:var(--vp-button-sponsor-border);color:var(--vp-button-sponsor-text);background-color:var(--vp-button-sponsor-bg)}.VPButton.sponsor[data-v-62ffcf97]:hover{border-color:var(--vp-button-sponsor-hover-border);color:var(--vp-button-sponsor-hover-text);background-color:var(--vp-button-sponsor-hover-bg)}.VPButton.sponsor[data-v-62ffcf97]:active{border-color:var(--vp-button-sponsor-active-border);color:var(--vp-button-sponsor-active-text);background-color:var(--vp-button-sponsor-active-bg)}html:not(.dark) .VPImage.dark[data-v-1894ea08]{display:none}.dark .VPImage.light[data-v-1894ea08]{display:none}.VPHero[data-v-ec82ec9d]{margin-top:calc((var(--vp-nav-height) + var(--vp-layout-top-height, 0px)) * -1);padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px) 24px 48px}@media (min-width: 640px){.VPHero[data-v-ec82ec9d]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 48px 64px}}@media (min-width: 960px){.VPHero[data-v-ec82ec9d]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 64px 64px}}.container[data-v-ec82ec9d]{display:flex;flex-direction:column;margin:0 auto;max-width:1152px}@media (min-width: 960px){.container[data-v-ec82ec9d]{flex-direction:row}}.main[data-v-ec82ec9d]{position:relative;z-index:10;order:2;flex-grow:1;flex-shrink:0}.VPHero.has-image .container[data-v-ec82ec9d]{text-align:center}@media (min-width: 960px){.VPHero.has-image .container[data-v-ec82ec9d]{text-align:left}}@media (min-width: 960px){.main[data-v-ec82ec9d]{order:1;width:calc((100% / 3) * 2)}.VPHero.has-image .main[data-v-ec82ec9d]{max-width:592px}}.heading[data-v-ec82ec9d]{display:flex;flex-direction:column}.name[data-v-ec82ec9d],.text[data-v-ec82ec9d]{width:fit-content;max-width:392px;letter-spacing:-.4px;line-height:40px;font-size:32px;font-weight:700;white-space:pre-wrap}.VPHero.has-image .name[data-v-ec82ec9d],.VPHero.has-image .text[data-v-ec82ec9d]{margin:0 auto}.name[data-v-ec82ec9d]{color:var(--vp-home-hero-name-color)}.clip[data-v-ec82ec9d]{background:var(--vp-home-hero-name-background);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:var(--vp-home-hero-name-color)}@media (min-width: 640px){.name[data-v-ec82ec9d],.text[data-v-ec82ec9d]{max-width:576px;line-height:56px;font-size:48px}}@media (min-width: 960px){.name[data-v-ec82ec9d],.text[data-v-ec82ec9d]{line-height:64px;font-size:56px}.VPHero.has-image .name[data-v-ec82ec9d],.VPHero.has-image .text[data-v-ec82ec9d]{margin:0}}.tagline[data-v-ec82ec9d]{padding-top:8px;max-width:392px;line-height:28px;font-size:18px;font-weight:500;white-space:pre-wrap;color:var(--vp-c-text-2)}.VPHero.has-image .tagline[data-v-ec82ec9d]{margin:0 auto}@media (min-width: 640px){.tagline[data-v-ec82ec9d]{padding-top:12px;max-width:576px;line-height:32px;font-size:20px}}@media (min-width: 960px){.tagline[data-v-ec82ec9d]{line-height:36px;font-size:24px}.VPHero.has-image .tagline[data-v-ec82ec9d]{margin:0}}.actions[data-v-ec82ec9d]{display:flex;flex-wrap:wrap;margin:-6px;padding-top:24px}.VPHero.has-image .actions[data-v-ec82ec9d]{justify-content:center}@media (min-width: 640px){.actions[data-v-ec82ec9d]{padding-top:32px}}@media (min-width: 960px){.VPHero.has-image .actions[data-v-ec82ec9d]{justify-content:flex-start}}.action[data-v-ec82ec9d]{flex-shrink:0;padding:6px}.image[data-v-ec82ec9d]{order:1;margin:-76px -24px -48px}@media (min-width: 640px){.image[data-v-ec82ec9d]{margin:-108px -24px -48px}}@media (min-width: 960px){.image[data-v-ec82ec9d]{flex-grow:1;order:2;margin:0;min-height:100%}}.image-container[data-v-ec82ec9d]{position:relative;margin:0 auto;width:320px;height:320px}@media (min-width: 640px){.image-container[data-v-ec82ec9d]{width:392px;height:392px}}@media (min-width: 960px){.image-container[data-v-ec82ec9d]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;transform:translate(-32px,-32px)}}.image-bg[data-v-ec82ec9d]{position:absolute;top:50%;left:50%;border-radius:50%;width:192px;height:192px;background-image:var(--vp-home-hero-image-background-image);filter:var(--vp-home-hero-image-filter);transform:translate(-50%,-50%)}@media (min-width: 640px){.image-bg[data-v-ec82ec9d]{width:256px;height:256px}}@media (min-width: 960px){.image-bg[data-v-ec82ec9d]{width:320px;height:320px}}[data-v-ec82ec9d] .image-src{position:absolute;top:50%;left:50%;max-width:192px;max-height:192px;transform:translate(-50%,-50%)}@media (min-width: 640px){[data-v-ec82ec9d] .image-src{max-width:256px;max-height:256px}}@media (min-width: 960px){[data-v-ec82ec9d] .image-src{max-width:320px;max-height:320px}}.VPFeature[data-v-3bc8bef8]{display:block;border:1px solid var(--vp-c-bg-soft);border-radius:12px;height:100%;background-color:var(--vp-c-bg-soft);transition:border-color .25s,background-color .25s}.VPFeature.link[data-v-3bc8bef8]:hover{border-color:var(--vp-c-brand-1)}.box[data-v-3bc8bef8]{display:flex;flex-direction:column;padding:24px;height:100%}.box[data-v-3bc8bef8]>.VPImage{margin-bottom:20px}.icon[data-v-3bc8bef8]{display:flex;justify-content:center;align-items:center;margin-bottom:20px;border-radius:6px;background-color:var(--vp-c-default-soft);width:48px;height:48px;font-size:24px;transition:background-color .25s}.title[data-v-3bc8bef8]{line-height:24px;font-size:16px;font-weight:600}.details[data-v-3bc8bef8]{flex-grow:1;padding-top:8px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.link-text[data-v-3bc8bef8]{padding-top:8px}.link-text-value[data-v-3bc8bef8]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.link-text-icon[data-v-3bc8bef8]{margin-left:6px}.VPFeatures[data-v-7b521244]{position:relative;padding:0 24px}@media (min-width: 640px){.VPFeatures[data-v-7b521244]{padding:0 48px}}@media (min-width: 960px){.VPFeatures[data-v-7b521244]{padding:0 64px}}.container[data-v-7b521244]{margin:0 auto;max-width:1152px}.items[data-v-7b521244]{display:flex;flex-wrap:wrap;margin:-8px}.item[data-v-7b521244]{padding:8px;width:100%}@media (min-width: 640px){.item.grid-2[data-v-7b521244],.item.grid-4[data-v-7b521244],.item.grid-6[data-v-7b521244]{width:50%}}@media (min-width: 768px){.item.grid-2[data-v-7b521244],.item.grid-4[data-v-7b521244]{width:50%}.item.grid-3[data-v-7b521244],.item.grid-6[data-v-7b521244]{width:calc(100% / 3)}}@media (min-width: 960px){.item.grid-4[data-v-7b521244]{width:25%}}.container[data-v-a5eb1e19]{margin:auto;width:100%;max-width:1280px;padding:0 24px}@media (min-width: 640px){.container[data-v-a5eb1e19]{padding:0 48px}}@media (min-width: 960px){.container[data-v-a5eb1e19]{width:100%;padding:0 64px}}.vp-doc[data-v-a5eb1e19] .VPHomeSponsors,.vp-doc[data-v-a5eb1e19] .VPTeamPage{margin-left:var(--vp-offset, calc(50% - 50vw) );margin-right:var(--vp-offset, calc(50% - 50vw) )}.vp-doc[data-v-a5eb1e19] .VPHomeSponsors h2{border-top:none;letter-spacing:normal}.vp-doc[data-v-a5eb1e19] .VPHomeSponsors a,.vp-doc[data-v-a5eb1e19] .VPTeamPage a{text-decoration:none}.VPHome[data-v-0630bfe6]{margin-bottom:96px}@media (min-width: 768px){.VPHome[data-v-0630bfe6]{margin-bottom:128px}}.VPContent[data-v-28fa4ed1]{flex-grow:1;flex-shrink:0;margin:var(--vp-layout-top-height, 0px) auto 0;width:100%}.VPContent.is-home[data-v-28fa4ed1]{width:100%;max-width:100%}.VPContent.has-sidebar[data-v-28fa4ed1]{margin:0}@media (min-width: 960px){.VPContent[data-v-28fa4ed1]{padding-top:var(--vp-nav-height)}.VPContent.has-sidebar[data-v-28fa4ed1]{margin:var(--vp-layout-top-height, 0px) 0 0;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPContent.has-sidebar[data-v-28fa4ed1]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.VPFooter[data-v-b20ae055]{position:relative;z-index:var(--vp-z-index-footer);border-top:1px solid var(--vp-c-gutter);padding:32px 24px;background-color:var(--vp-c-bg)}.VPFooter.has-sidebar[data-v-b20ae055]{display:none}.VPFooter[data-v-b20ae055] a{text-decoration-line:underline;text-underline-offset:2px;transition:color .25s}.VPFooter[data-v-b20ae055] a:hover{color:var(--vp-c-text-1)}@media (min-width: 768px){.VPFooter[data-v-b20ae055]{padding:32px}}.container[data-v-b20ae055]{margin:0 auto;max-width:var(--vp-layout-max-width);text-align:center}.message[data-v-b20ae055],.copyright[data-v-b20ae055]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.VPLocalNavOutlineDropdown[data-v-aab1d107]{padding:12px 20px 11px}@media (min-width: 960px){.VPLocalNavOutlineDropdown[data-v-aab1d107]{padding:12px 36px 11px}}.VPLocalNavOutlineDropdown button[data-v-aab1d107]{display:block;font-size:12px;font-weight:500;line-height:24px;color:var(--vp-c-text-2);transition:color .5s;position:relative}.VPLocalNavOutlineDropdown button[data-v-aab1d107]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPLocalNavOutlineDropdown button.open[data-v-aab1d107]{color:var(--vp-c-text-1)}.icon[data-v-aab1d107]{display:inline-block;vertical-align:middle;margin-left:2px;font-size:14px;transform:rotate(0);transition:transform .25s}@media (min-width: 960px){.VPLocalNavOutlineDropdown button[data-v-aab1d107]{font-size:14px}.icon[data-v-aab1d107]{font-size:16px}}.open>.icon[data-v-aab1d107]{transform:rotate(90deg)}.items[data-v-aab1d107]{position:absolute;top:40px;right:16px;left:16px;display:grid;gap:1px;border:1px solid var(--vp-c-border);border-radius:8px;background-color:var(--vp-c-gutter);max-height:calc(var(--vp-vh, 100vh) - 86px);overflow:hidden auto;box-shadow:var(--vp-shadow-3)}@media (min-width: 960px){.items[data-v-aab1d107]{right:auto;left:calc(var(--vp-sidebar-width) + 32px);width:320px}}.header[data-v-aab1d107]{background-color:var(--vp-c-bg-soft)}.top-link[data-v-aab1d107]{display:block;padding:0 16px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.outline[data-v-aab1d107]{padding:8px 0;background-color:var(--vp-c-bg-soft)}.flyout-enter-active[data-v-aab1d107]{transition:all .2s ease-out}.flyout-leave-active[data-v-aab1d107]{transition:all .15s ease-in}.flyout-enter-from[data-v-aab1d107],.flyout-leave-to[data-v-aab1d107]{opacity:0;transform:translateY(-16px)}.VPLocalNav[data-v-d06e114f]{position:sticky;top:0;left:0;z-index:var(--vp-z-index-local-nav);border-bottom:1px solid var(--vp-c-gutter);padding-top:var(--vp-layout-top-height, 0px);width:100%;background-color:var(--vp-local-nav-bg-color)}.VPLocalNav.fixed[data-v-d06e114f]{position:fixed}@media (min-width: 960px){.VPLocalNav[data-v-d06e114f]{top:var(--vp-nav-height)}.VPLocalNav.has-sidebar[data-v-d06e114f]{padding-left:var(--vp-sidebar-width)}.VPLocalNav.empty[data-v-d06e114f]{display:none}}@media (min-width: 1280px){.VPLocalNav[data-v-d06e114f]{display:none}}@media (min-width: 1440px){.VPLocalNav.has-sidebar[data-v-d06e114f]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.container[data-v-d06e114f]{display:flex;justify-content:space-between;align-items:center}.menu[data-v-d06e114f]{display:flex;align-items:center;padding:12px 24px 11px;line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.menu[data-v-d06e114f]:hover{color:var(--vp-c-text-1);transition:color .25s}@media (min-width: 768px){.menu[data-v-d06e114f]{padding:0 32px}}@media (min-width: 960px){.menu[data-v-d06e114f]{display:none}}.menu-icon[data-v-d06e114f]{margin-right:8px;font-size:14px}.VPOutlineDropdown[data-v-d06e114f]{padding:12px 24px 11px}@media (min-width: 768px){.VPOutlineDropdown[data-v-d06e114f]{padding:12px 32px 11px}}.VPSwitch[data-v-c055c202]{position:relative;border-radius:11px;display:block;width:40px;height:22px;flex-shrink:0;border:1px solid var(--vp-input-border-color);background-color:var(--vp-input-switch-bg-color);transition:border-color .25s!important}.VPSwitch[data-v-c055c202]:hover{border-color:var(--vp-c-brand-1)}.check[data-v-c055c202]{position:absolute;top:1px;left:1px;width:18px;height:18px;border-radius:50%;background-color:var(--vp-c-neutral-inverse);box-shadow:var(--vp-shadow-1);transition:transform .25s!important}.icon[data-v-c055c202]{position:relative;display:block;width:18px;height:18px;border-radius:50%;overflow:hidden}.icon[data-v-c055c202] [class^=vpi-]{position:absolute;top:3px;left:3px;width:12px;height:12px;color:var(--vp-c-text-2)}.dark .icon[data-v-c055c202] [class^=vpi-]{color:var(--vp-c-text-1);transition:opacity .25s!important}.sun[data-v-9e7dfa94]{opacity:1}.moon[data-v-9e7dfa94],.dark .sun[data-v-9e7dfa94]{opacity:0}.dark .moon[data-v-9e7dfa94]{opacity:1}.dark .VPSwitchAppearance[data-v-9e7dfa94] .check{transform:translate(18px)}.VPNavBarAppearance[data-v-34a9cb79]{display:none}@media (min-width: 1280px){.VPNavBarAppearance[data-v-34a9cb79]{display:flex;align-items:center}}.VPMenuGroup+.VPMenuLink[data-v-10a71e15]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.link[data-v-10a71e15]{display:block;border-radius:6px;padding:0 12px;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);white-space:nowrap;transition:background-color .25s,color .25s}.link[data-v-10a71e15]:hover{color:var(--vp-c-brand-1);background-color:var(--vp-c-default-soft)}.link.active[data-v-10a71e15]{color:var(--vp-c-brand-1)}.VPMenuGroup[data-v-e437336b]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.VPMenuGroup[data-v-e437336b]:first-child{margin-top:0;border-top:0;padding-top:0}.VPMenuGroup+.VPMenuGroup[data-v-e437336b]{margin-top:12px;border-top:1px solid var(--vp-c-divider)}.title[data-v-e437336b]{padding:0 12px;line-height:32px;font-size:14px;font-weight:600;color:var(--vp-c-text-2);white-space:nowrap;transition:color .25s}.VPMenu[data-v-5713f977]{border-radius:12px;padding:12px;min-width:128px;border:1px solid var(--vp-c-divider);background-color:var(--vp-c-bg-elv);box-shadow:var(--vp-shadow-3);transition:background-color .5s;max-height:calc(100vh - var(--vp-nav-height));overflow-y:auto}.VPMenu[data-v-5713f977] .group{margin:0 -12px;padding:0 12px 12px}.VPMenu[data-v-5713f977] .group+.group{border-top:1px solid var(--vp-c-divider);padding:11px 12px 12px}.VPMenu[data-v-5713f977] .group:last-child{padding-bottom:0}.VPMenu[data-v-5713f977] .group+.item{border-top:1px solid var(--vp-c-divider);padding:11px 16px 0}.VPMenu[data-v-5713f977] .item{padding:0 16px;white-space:nowrap}.VPMenu[data-v-5713f977] .label{flex-grow:1;line-height:28px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.VPMenu[data-v-5713f977] .action{padding-left:24px}.VPFlyout[data-v-8b861926]{position:relative}.VPFlyout[data-v-8b861926]:hover{color:var(--vp-c-brand-1);transition:color .25s}.VPFlyout:hover .text[data-v-8b861926]{color:var(--vp-c-text-2)}.VPFlyout:hover .icon[data-v-8b861926]{fill:var(--vp-c-text-2)}.VPFlyout.active .text[data-v-8b861926]{color:var(--vp-c-brand-1)}.VPFlyout.active:hover .text[data-v-8b861926]{color:var(--vp-c-brand-2)}.button[aria-expanded=false]+.menu[data-v-8b861926]{opacity:0;visibility:hidden;transform:translateY(0)}.VPFlyout:hover .menu[data-v-8b861926],.button[aria-expanded=true]+.menu[data-v-8b861926]{opacity:1;visibility:visible;transform:translateY(0)}.button[data-v-8b861926]{display:flex;align-items:center;padding:0 12px;height:var(--vp-nav-height);color:var(--vp-c-text-1);transition:color .5s}.text[data-v-8b861926]{display:flex;align-items:center;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.option-icon[data-v-8b861926]{margin-right:0;font-size:16px}.text-icon[data-v-8b861926]{margin-left:4px;font-size:14px}.icon[data-v-8b861926]{font-size:20px;transition:fill .25s}.menu[data-v-8b861926]{position:absolute;top:calc(var(--vp-nav-height) / 2 + 20px);right:0;opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s,transform .25s}.VPSocialLink[data-v-c02d4801]{display:flex;justify-content:center;align-items:center;width:36px;height:36px;color:var(--vp-c-text-2);transition:color .5s}.VPSocialLink[data-v-c02d4801]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPSocialLink[data-v-c02d4801]>svg,.VPSocialLink[data-v-c02d4801]>[class^=vpi-social-]{width:20px;height:20px;fill:currentColor}.VPSocialLinks[data-v-0f6120fc]{display:flex;justify-content:center}.VPNavBarExtra[data-v-abbdfbda]{display:none;margin-right:-12px}@media (min-width: 768px){.VPNavBarExtra[data-v-abbdfbda]{display:block}}@media (min-width: 1280px){.VPNavBarExtra[data-v-abbdfbda]{display:none}}.trans-title[data-v-abbdfbda]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.item.appearance[data-v-abbdfbda],.item.social-links[data-v-abbdfbda]{display:flex;align-items:center;padding:0 12px}.item.appearance[data-v-abbdfbda]{min-width:176px}.appearance-action[data-v-abbdfbda]{margin-right:-2px}.social-links-list[data-v-abbdfbda]{margin:-4px -8px}.VPNavBarHamburger[data-v-923ccc68]{display:flex;justify-content:center;align-items:center;width:48px;height:var(--vp-nav-height)}@media (min-width: 768px){.VPNavBarHamburger[data-v-923ccc68]{display:none}}.container[data-v-923ccc68]{position:relative;width:16px;height:14px;overflow:hidden}.VPNavBarHamburger:hover .top[data-v-923ccc68]{top:0;left:0;transform:translate(4px)}.VPNavBarHamburger:hover .middle[data-v-923ccc68]{top:6px;left:0;transform:translate(0)}.VPNavBarHamburger:hover .bottom[data-v-923ccc68]{top:12px;left:0;transform:translate(8px)}.VPNavBarHamburger.active .top[data-v-923ccc68]{top:6px;transform:translate(0) rotate(225deg)}.VPNavBarHamburger.active .middle[data-v-923ccc68]{top:6px;transform:translate(16px)}.VPNavBarHamburger.active .bottom[data-v-923ccc68]{top:6px;transform:translate(0) rotate(135deg)}.VPNavBarHamburger.active:hover .top[data-v-923ccc68],.VPNavBarHamburger.active:hover .middle[data-v-923ccc68],.VPNavBarHamburger.active:hover .bottom[data-v-923ccc68]{background-color:var(--vp-c-text-2);transition:top .25s,background-color .25s,transform .25s}.top[data-v-923ccc68],.middle[data-v-923ccc68],.bottom[data-v-923ccc68]{position:absolute;width:16px;height:2px;background-color:var(--vp-c-text-1);transition:top .25s,background-color .5s,transform .25s}.top[data-v-923ccc68]{top:0;left:0;transform:translate(0)}.middle[data-v-923ccc68]{top:6px;left:0;transform:translate(8px)}.bottom[data-v-923ccc68]{top:12px;left:0;transform:translate(4px)}.VPNavBarMenuLink[data-v-e70ce59d]{display:flex;align-items:center;padding:0 12px;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.VPNavBarMenuLink.active[data-v-e70ce59d],.VPNavBarMenuLink[data-v-e70ce59d]:hover{color:var(--vp-c-brand-1)}.VPNavBarMenu[data-v-27d7d4fe]{display:none}@media (min-width: 768px){.VPNavBarMenu[data-v-27d7d4fe]{display:flex}}/*! @docsearch/css 3.8.2 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */:root{--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:rgba(101,108,133,.8);--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 hsla(0,0%,100%,.5),0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,.4);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 1px 0 rgba(30,35,90,.4);--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 rgba(69,98,155,.12)}html[data-theme=dark]{--docsearch-text-color:#f5f6f7;--docsearch-container-background:rgba(9,10,17,.8);--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,.3);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 1px 1px 0 #0304094d;--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 rgba(73,76,106,.5),0 -4px 8px 0 rgba(0,0,0,.2);--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}.DocSearch-Button{align-items:center;background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;display:flex;font-weight:500;height:36px;justify-content:space-between;margin:0 0 0 16px;padding:0 8px;-webkit-user-select:none;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:none}.DocSearch-Button-Container{align-items:center;display:flex}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border:0;border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 2px;position:relative;top:-1px;width:20px}.DocSearch-Button-Key--pressed{box-shadow:var(--docsearch-key-pressed-shadow);transform:translate3d(0,1px,0)}@media (max-width:768px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder{display:none}}.DocSearch--active{overflow:hidden!important}.DocSearch-Container,.DocSearch-Container *{box-sizing:border-box}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Container a{text-decoration:none}.DocSearch-Link{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;font:inherit;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;color:var(--docsearch-text-color);flex:1;font:inherit;font-size:1.2em;height:100%;outline:none;padding:0 0 0 8px;width:80%}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator{display:none}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{animation:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0;stroke-width:var(--docsearch-icon-stroke-width)}}.DocSearch-Reset{animation:fade-in .1s ease-in forwards;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;padding:2px;right:0;stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Cancel{display:none}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:transparent}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Help{font-size:.9em;margin:0;-webkit-user-select:none;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{color:var(--docsearch-muted-color);display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--deleting{transition:none}}.DocSearch-Hit--deleting{opacity:0;transition:all .25s linear}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--favoriting{transition:none}}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:all .25s linear;transition-delay:.25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;stroke-width:var(--docsearch-icon-stroke-width);width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit[aria-selected=true] mark{text-decoration:underline}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color);stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:inherit;cursor:pointer;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:background-color .1s ease-in}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{transition:none}}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:none}}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"» "}.DocSearch-Prefill{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:none;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;-webkit-user-select:none;user-select:none;width:100%;z-index:300}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li{align-items:center;display:flex}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{align-items:center;background:var(--docsearch-key-gradient);border:0;border-radius:2px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;width:20px}.DocSearch-VisuallyHiddenForAccessibility{clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}@media (max-width:768px){:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Dropdown{max-height:calc(var(--docsearch-vh, 1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Cancel{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:none;overflow:hidden;padding:0;-webkit-user-select:none;user-select:none;white-space:nowrap}.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}[class*=DocSearch]{--docsearch-primary-color: var(--vp-c-brand-1);--docsearch-highlight-color: var(--docsearch-primary-color);--docsearch-text-color: var(--vp-c-text-1);--docsearch-muted-color: var(--vp-c-text-2);--docsearch-searchbox-shadow: none;--docsearch-searchbox-background: transparent;--docsearch-searchbox-focus-background: transparent;--docsearch-key-gradient: transparent;--docsearch-key-shadow: none;--docsearch-modal-background: var(--vp-c-bg-soft);--docsearch-footer-background: var(--vp-c-bg)}.dark [class*=DocSearch]{--docsearch-modal-shadow: none;--docsearch-footer-shadow: none;--docsearch-logo-color: var(--vp-c-text-2);--docsearch-hit-background: var(--vp-c-default-soft);--docsearch-hit-color: var(--vp-c-text-2);--docsearch-hit-shadow: none}.DocSearch-Button{display:flex;justify-content:center;align-items:center;margin:0;padding:0;width:48px;height:55px;background:transparent;transition:border-color .25s}.DocSearch-Button:hover{background:transparent}.DocSearch-Button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.DocSearch-Button-Key--pressed{transform:none;box-shadow:none}.DocSearch-Button:focus:not(:focus-visible){outline:none!important}@media (min-width: 768px){.DocSearch-Button{justify-content:flex-start;border:1px solid transparent;border-radius:8px;padding:0 10px 0 12px;width:100%;height:40px;background-color:var(--vp-c-bg-alt)}.DocSearch-Button:hover{border-color:var(--vp-c-brand-1);background:var(--vp-c-bg-alt)}}.DocSearch-Button .DocSearch-Button-Container{display:flex;align-items:center}.DocSearch-Button .DocSearch-Search-Icon{position:relative;width:16px;height:16px;color:var(--vp-c-text-1);fill:currentColor;transition:color .5s}.DocSearch-Button:hover .DocSearch-Search-Icon{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Search-Icon{top:1px;margin-right:8px;width:14px;height:14px;color:var(--vp-c-text-2)}}.DocSearch-Button .DocSearch-Button-Placeholder{display:none;margin-top:2px;padding:0 16px 0 0;font-size:13px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.DocSearch-Button:hover .DocSearch-Button-Placeholder{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Placeholder{display:inline-block}}.DocSearch-Button .DocSearch-Button-Keys{direction:ltr;display:none;min-width:auto}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Keys{display:flex;align-items:center}}.DocSearch-Button .DocSearch-Button-Key{display:block;margin:2px 0 0;border:1px solid var(--vp-c-divider);border-right:none;border-radius:4px 0 0 4px;padding-left:6px;min-width:0;width:auto;height:22px;line-height:22px;font-family:var(--vp-font-family-base);font-size:12px;font-weight:500;transition:color .5s,border-color .5s}.DocSearch-Button .DocSearch-Button-Key+.DocSearch-Button-Key{border-right:1px solid var(--vp-c-divider);border-left:none;border-radius:0 4px 4px 0;padding-left:2px;padding-right:6px}.DocSearch-Button .DocSearch-Button-Key:first-child{font-size:0!important}.DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"Ctrl";font-size:12px;letter-spacing:normal;color:var(--docsearch-muted-color)}.mac .DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"⌘"}.DocSearch-Button .DocSearch-Button-Key:first-child>*{display:none}.DocSearch-Search-Icon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke-width='1.6' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' d='m14.386 14.386 4.088 4.088-4.088-4.088A7.533 7.533 0 1 1 3.733 3.733a7.533 7.533 0 0 1 10.653 10.653z'/%3E%3C/svg%3E")}.VPNavBarSearch{display:flex;align-items:center}@media (min-width: 768px){.VPNavBarSearch{flex-grow:1;padding-left:24px}}@media (min-width: 960px){.VPNavBarSearch{padding-left:32px}}.dark .DocSearch-Footer{border-top:1px solid var(--vp-c-divider)}.DocSearch-Form{border:1px solid var(--vp-c-brand-1);background-color:var(--vp-c-white)}.dark .DocSearch-Form{background-color:var(--vp-c-default-soft)}.DocSearch-Screen-Icon>svg{margin:auto}.VPNavBarSocialLinks[data-v-c62caff0]{display:none}@media (min-width: 1280px){.VPNavBarSocialLinks[data-v-c62caff0]{display:flex;align-items:center}}.title[data-v-b408e164]{display:flex;align-items:center;border-bottom:1px solid transparent;width:100%;height:var(--vp-nav-height);font-size:16px;font-weight:600;color:var(--vp-c-text-1);transition:opacity .25s}@media (min-width: 960px){.title[data-v-b408e164]{flex-shrink:0}.VPNavBarTitle.has-sidebar .title[data-v-b408e164]{border-bottom-color:var(--vp-c-divider)}}[data-v-b408e164] .logo{margin-right:8px;height:var(--vp-nav-logo-height)}.VPNavBarTranslations[data-v-30db8fc1]{display:none}@media (min-width: 1280px){.VPNavBarTranslations[data-v-30db8fc1]{display:flex;align-items:center}}.title[data-v-30db8fc1]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.VPNavBar[data-v-37a0846a]{position:relative;height:var(--vp-nav-height);pointer-events:none;white-space:nowrap;transition:background-color .25s}.VPNavBar.screen-open[data-v-37a0846a]{transition:none;background-color:var(--vp-nav-bg-color);border-bottom:1px solid var(--vp-c-divider)}.VPNavBar[data-v-37a0846a]:not(.home){background-color:var(--vp-nav-bg-color)}@media (min-width: 960px){.VPNavBar[data-v-37a0846a]:not(.home){background-color:transparent}.VPNavBar[data-v-37a0846a]:not(.has-sidebar):not(.home.top){background-color:var(--vp-nav-bg-color)}}.wrapper[data-v-37a0846a]{padding:0 8px 0 24px}@media (min-width: 768px){.wrapper[data-v-37a0846a]{padding:0 32px}}@media (min-width: 960px){.VPNavBar.has-sidebar .wrapper[data-v-37a0846a]{padding:0}}.container[data-v-37a0846a]{display:flex;justify-content:space-between;margin:0 auto;max-width:calc(var(--vp-layout-max-width) - 64px);height:var(--vp-nav-height);pointer-events:none}.container>.title[data-v-37a0846a],.container>.content[data-v-37a0846a]{pointer-events:none}.container[data-v-37a0846a] *{pointer-events:auto}@media (min-width: 960px){.VPNavBar.has-sidebar .container[data-v-37a0846a]{max-width:100%}}.title[data-v-37a0846a]{flex-shrink:0;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar.has-sidebar .title[data-v-37a0846a]{position:absolute;top:0;left:0;z-index:2;padding:0 32px;width:var(--vp-sidebar-width);height:var(--vp-nav-height);background-color:transparent}}@media (min-width: 1440px){.VPNavBar.has-sidebar .title[data-v-37a0846a]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}.content[data-v-37a0846a]{flex-grow:1}@media (min-width: 960px){.VPNavBar.has-sidebar .content[data-v-37a0846a]{position:relative;z-index:1;padding-right:32px;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .content[data-v-37a0846a]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2 + 32px);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.content-body[data-v-37a0846a]{display:flex;justify-content:flex-end;align-items:center;height:var(--vp-nav-height);transition:background-color .5s}@media (min-width: 960px){.VPNavBar:not(.home.top) .content-body[data-v-37a0846a]{position:relative;background-color:var(--vp-nav-bg-color)}.VPNavBar:not(.has-sidebar):not(.home.top) .content-body[data-v-37a0846a]{background-color:transparent}}@media (max-width: 767px){.content-body[data-v-37a0846a]{column-gap:.5rem}}.menu+.translations[data-v-37a0846a]:before,.menu+.appearance[data-v-37a0846a]:before,.menu+.social-links[data-v-37a0846a]:before,.translations+.appearance[data-v-37a0846a]:before,.appearance+.social-links[data-v-37a0846a]:before{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--vp-c-divider);content:""}.menu+.appearance[data-v-37a0846a]:before,.translations+.appearance[data-v-37a0846a]:before{margin-right:16px}.appearance+.social-links[data-v-37a0846a]:before{margin-left:16px}.social-links[data-v-37a0846a]{margin-right:-8px}.divider[data-v-37a0846a]{width:100%;height:1px}@media (min-width: 960px){.VPNavBar.has-sidebar .divider[data-v-37a0846a]{padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .divider[data-v-37a0846a]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.divider-line[data-v-37a0846a]{width:100%;height:1px;transition:background-color .5s}.VPNavBar:not(.home) .divider-line[data-v-37a0846a]{background-color:var(--vp-c-gutter)}@media (min-width: 960px){.VPNavBar:not(.home.top) .divider-line[data-v-37a0846a]{background-color:var(--vp-c-gutter)}.VPNavBar:not(.has-sidebar):not(.home.top) .divider[data-v-37a0846a]{background-color:var(--vp-c-gutter)}}.VPNavScreenAppearance[data-v-f8077189]{display:flex;justify-content:space-between;align-items:center;border-radius:8px;padding:12px 14px 12px 16px;background-color:var(--vp-c-bg-soft)}.text[data-v-f8077189]{line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.VPNavScreenMenuLink[data-v-75f92ccc]{display:block;border-bottom:1px solid var(--vp-c-divider);padding:12px 0 11px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:border-color .25s,color .25s}.VPNavScreenMenuLink[data-v-75f92ccc]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupLink[data-v-46a51c0a]{display:block;margin-left:12px;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-1);transition:color .25s}.VPNavScreenMenuGroupLink[data-v-46a51c0a]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupSection[data-v-40ce99b3]{display:block}.title[data-v-40ce99b3]{line-height:32px;font-size:13px;font-weight:700;color:var(--vp-c-text-2);transition:color .25s}.VPNavScreenMenuGroup[data-v-aba12b3a]{border-bottom:1px solid var(--vp-c-divider);height:48px;overflow:hidden;transition:border-color .5s}.VPNavScreenMenuGroup .items[data-v-aba12b3a]{visibility:hidden}.VPNavScreenMenuGroup.open .items[data-v-aba12b3a]{visibility:visible}.VPNavScreenMenuGroup.open[data-v-aba12b3a]{padding-bottom:10px;height:auto}.VPNavScreenMenuGroup.open .button[data-v-aba12b3a]{padding-bottom:6px;color:var(--vp-c-brand-1)}.VPNavScreenMenuGroup.open .button-icon[data-v-aba12b3a]{transform:rotate(45deg)}.button[data-v-aba12b3a]{display:flex;justify-content:space-between;align-items:center;padding:12px 4px 11px 0;width:100%;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.button[data-v-aba12b3a]:hover{color:var(--vp-c-brand-1)}.button-icon[data-v-aba12b3a]{transition:transform .25s}.group[data-v-aba12b3a]:first-child{padding-top:0}.group+.group[data-v-aba12b3a],.group+.item[data-v-aba12b3a]{padding-top:4px}.VPNavScreenTranslations[data-v-4e8edf1e]{height:24px;overflow:hidden}.VPNavScreenTranslations.open[data-v-4e8edf1e]{height:auto}.title[data-v-4e8edf1e]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-text-1)}.icon[data-v-4e8edf1e]{font-size:16px}.icon.lang[data-v-4e8edf1e]{margin-right:8px}.icon.chevron[data-v-4e8edf1e]{margin-left:4px}.list[data-v-4e8edf1e]{padding:4px 0 0 24px}.link[data-v-4e8edf1e]{line-height:32px;font-size:13px;color:var(--vp-c-text-1)}.VPNavScreen[data-v-77194996]{position:fixed;top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px));right:0;bottom:0;left:0;padding:0 32px;width:100%;background-color:var(--vp-nav-screen-bg-color);overflow-y:auto;transition:background-color .25s;pointer-events:auto}.VPNavScreen.fade-enter-active[data-v-77194996],.VPNavScreen.fade-leave-active[data-v-77194996]{transition:opacity .25s}.VPNavScreen.fade-enter-active .container[data-v-77194996],.VPNavScreen.fade-leave-active .container[data-v-77194996]{transition:transform .25s ease}.VPNavScreen.fade-enter-from[data-v-77194996],.VPNavScreen.fade-leave-to[data-v-77194996]{opacity:0}.VPNavScreen.fade-enter-from .container[data-v-77194996],.VPNavScreen.fade-leave-to .container[data-v-77194996]{transform:translateY(-8px)}@media (min-width: 768px){.VPNavScreen[data-v-77194996]{display:none}}.container[data-v-77194996]{margin:0 auto;padding:24px 0 96px;max-width:288px}.menu+.translations[data-v-77194996],.menu+.appearance[data-v-77194996],.translations+.appearance[data-v-77194996]{margin-top:24px}.menu+.social-links[data-v-77194996]{margin-top:16px}.appearance+.social-links[data-v-77194996]{margin-top:16px}.VPNav[data-v-b2fedd30]{position:relative;top:var(--vp-layout-top-height, 0px);left:0;z-index:var(--vp-z-index-nav);width:100%;pointer-events:none;transition:background-color .5s}@media (min-width: 960px){.VPNav[data-v-b2fedd30]{position:fixed}}.VPSidebarItem.level-0[data-v-cb4e7117]{padding-bottom:24px}.VPSidebarItem.collapsed.level-0[data-v-cb4e7117]{padding-bottom:10px}.item[data-v-cb4e7117]{position:relative;display:flex;width:100%}.VPSidebarItem.collapsible>.item[data-v-cb4e7117]{cursor:pointer}.indicator[data-v-cb4e7117]{position:absolute;top:6px;bottom:6px;left:-17px;width:2px;border-radius:2px;transition:background-color .25s}.VPSidebarItem.level-2.is-active>.item>.indicator[data-v-cb4e7117],.VPSidebarItem.level-3.is-active>.item>.indicator[data-v-cb4e7117],.VPSidebarItem.level-4.is-active>.item>.indicator[data-v-cb4e7117],.VPSidebarItem.level-5.is-active>.item>.indicator[data-v-cb4e7117]{background-color:var(--vp-c-brand-1)}.link[data-v-cb4e7117]{display:flex;align-items:center;flex-grow:1}.text[data-v-cb4e7117]{flex-grow:1;padding:4px 0;line-height:24px;font-size:14px;transition:color .25s}.VPSidebarItem.level-0 .text[data-v-cb4e7117]{font-weight:700;color:var(--vp-c-text-1)}.VPSidebarItem.level-1 .text[data-v-cb4e7117],.VPSidebarItem.level-2 .text[data-v-cb4e7117],.VPSidebarItem.level-3 .text[data-v-cb4e7117],.VPSidebarItem.level-4 .text[data-v-cb4e7117],.VPSidebarItem.level-5 .text[data-v-cb4e7117]{font-weight:500;color:var(--vp-c-text-2)}.VPSidebarItem.level-0.is-link>.item>.link:hover .text[data-v-cb4e7117],.VPSidebarItem.level-1.is-link>.item>.link:hover .text[data-v-cb4e7117],.VPSidebarItem.level-2.is-link>.item>.link:hover .text[data-v-cb4e7117],.VPSidebarItem.level-3.is-link>.item>.link:hover .text[data-v-cb4e7117],.VPSidebarItem.level-4.is-link>.item>.link:hover .text[data-v-cb4e7117],.VPSidebarItem.level-5.is-link>.item>.link:hover .text[data-v-cb4e7117]{color:var(--vp-c-brand-1)}.VPSidebarItem.level-0.has-active>.item>.text[data-v-cb4e7117],.VPSidebarItem.level-1.has-active>.item>.text[data-v-cb4e7117],.VPSidebarItem.level-2.has-active>.item>.text[data-v-cb4e7117],.VPSidebarItem.level-3.has-active>.item>.text[data-v-cb4e7117],.VPSidebarItem.level-4.has-active>.item>.text[data-v-cb4e7117],.VPSidebarItem.level-5.has-active>.item>.text[data-v-cb4e7117],.VPSidebarItem.level-0.has-active>.item>.link>.text[data-v-cb4e7117],.VPSidebarItem.level-1.has-active>.item>.link>.text[data-v-cb4e7117],.VPSidebarItem.level-2.has-active>.item>.link>.text[data-v-cb4e7117],.VPSidebarItem.level-3.has-active>.item>.link>.text[data-v-cb4e7117],.VPSidebarItem.level-4.has-active>.item>.link>.text[data-v-cb4e7117],.VPSidebarItem.level-5.has-active>.item>.link>.text[data-v-cb4e7117]{color:var(--vp-c-text-1)}.VPSidebarItem.level-0.is-active>.item .link>.text[data-v-cb4e7117],.VPSidebarItem.level-1.is-active>.item .link>.text[data-v-cb4e7117],.VPSidebarItem.level-2.is-active>.item .link>.text[data-v-cb4e7117],.VPSidebarItem.level-3.is-active>.item .link>.text[data-v-cb4e7117],.VPSidebarItem.level-4.is-active>.item .link>.text[data-v-cb4e7117],.VPSidebarItem.level-5.is-active>.item .link>.text[data-v-cb4e7117]{color:var(--vp-c-brand-1)}.caret[data-v-cb4e7117]{display:flex;justify-content:center;align-items:center;margin-right:-7px;width:32px;height:32px;color:var(--vp-c-text-3);cursor:pointer;transition:color .25s;flex-shrink:0}.item:hover .caret[data-v-cb4e7117]{color:var(--vp-c-text-2)}.item:hover .caret[data-v-cb4e7117]:hover{color:var(--vp-c-text-1)}.caret-icon[data-v-cb4e7117]{font-size:18px;transform:rotate(90deg);transition:transform .25s}.VPSidebarItem.collapsed .caret-icon[data-v-cb4e7117]{transform:rotate(0)}.VPSidebarItem.level-1 .items[data-v-cb4e7117],.VPSidebarItem.level-2 .items[data-v-cb4e7117],.VPSidebarItem.level-3 .items[data-v-cb4e7117],.VPSidebarItem.level-4 .items[data-v-cb4e7117],.VPSidebarItem.level-5 .items[data-v-cb4e7117]{border-left:1px solid var(--vp-c-divider);padding-left:16px}.VPSidebarItem.collapsed .items[data-v-cb4e7117]{display:none}.no-transition[data-v-03a62be3] .caret-icon{transition:none}.group+.group[data-v-03a62be3]{border-top:1px solid var(--vp-c-divider);padding-top:10px}@media (min-width: 960px){.group[data-v-03a62be3]{padding-top:10px;width:calc(var(--vp-sidebar-width) - 64px)}}.VPSidebar[data-v-026681b8]{position:fixed;top:var(--vp-layout-top-height, 0px);bottom:0;left:0;z-index:var(--vp-z-index-sidebar);padding:32px 32px 96px;width:calc(100vw - 64px);max-width:320px;background-color:var(--vp-sidebar-bg-color);opacity:0;box-shadow:var(--vp-c-shadow-3);overflow-x:hidden;overflow-y:auto;transform:translate(-100%);transition:opacity .5s,transform .25s ease;overscroll-behavior:contain}.VPSidebar.open[data-v-026681b8]{opacity:1;visibility:visible;transform:translate(0);transition:opacity .25s,transform .5s cubic-bezier(.19,1,.22,1)}.dark .VPSidebar[data-v-026681b8]{box-shadow:var(--vp-shadow-1)}@media (min-width: 960px){.VPSidebar[data-v-026681b8]{padding-top:var(--vp-nav-height);width:var(--vp-sidebar-width);max-width:100%;background-color:var(--vp-sidebar-bg-color);opacity:1;visibility:visible;box-shadow:none;transform:translate(0)}}@media (min-width: 1440px){.VPSidebar[data-v-026681b8]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}@media (min-width: 960px){.curtain[data-v-026681b8]{position:sticky;top:-64px;left:0;z-index:1;margin-top:calc(var(--vp-nav-height) * -1);margin-right:-32px;margin-left:-32px;height:var(--vp-nav-height);background-color:var(--vp-sidebar-bg-color)}}.nav[data-v-026681b8]{outline:0}.VPSkipLink[data-v-ecac0ce8]{top:8px;left:8px;padding:8px 16px;z-index:999;border-radius:8px;font-size:12px;font-weight:700;text-decoration:none;color:var(--vp-c-brand-1);box-shadow:var(--vp-shadow-3);background-color:var(--vp-c-bg)}.VPSkipLink[data-v-ecac0ce8]:focus{height:auto;width:auto;clip:auto;clip-path:none}@media (min-width: 1280px){.VPSkipLink[data-v-ecac0ce8]{top:14px;left:16px}}.Layout[data-v-c1df4d5c]{display:flex;flex-direction:column;min-height:100vh}.VPHomeSponsors[data-v-8d5a7694]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPHomeSponsors[data-v-8d5a7694]{margin:96px 0}@media (min-width: 768px){.VPHomeSponsors[data-v-8d5a7694]{margin:128px 0}}.VPHomeSponsors[data-v-8d5a7694]{padding:0 24px}@media (min-width: 768px){.VPHomeSponsors[data-v-8d5a7694]{padding:0 48px}}@media (min-width: 960px){.VPHomeSponsors[data-v-8d5a7694]{padding:0 64px}}.container[data-v-8d5a7694]{margin:0 auto;max-width:1152px}.love[data-v-8d5a7694]{margin:0 auto;width:fit-content;font-size:28px;color:var(--vp-c-text-3)}.icon[data-v-8d5a7694]{display:inline-block}.message[data-v-8d5a7694]{margin:0 auto;padding-top:10px;max-width:320px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.sponsors[data-v-8d5a7694]{padding-top:32px}.action[data-v-8d5a7694]{padding-top:40px;text-align:center}.VPTeamMembersItem[data-v-97f37a6d]{display:flex;flex-direction:column;gap:2px;border-radius:12px;width:100%;height:100%;overflow:hidden}.VPTeamMembersItem.small .profile[data-v-97f37a6d]{padding:32px}.VPTeamMembersItem.small .data[data-v-97f37a6d]{padding-top:20px}.VPTeamMembersItem.small .avatar[data-v-97f37a6d]{width:64px;height:64px}.VPTeamMembersItem.small .name[data-v-97f37a6d]{line-height:24px;font-size:16px}.VPTeamMembersItem.small .affiliation[data-v-97f37a6d]{padding-top:4px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .desc[data-v-97f37a6d]{padding-top:12px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .links[data-v-97f37a6d]{margin:0 -16px -20px;padding:10px 0 0}.VPTeamMembersItem.medium .profile[data-v-97f37a6d]{padding:48px 32px}.VPTeamMembersItem.medium .data[data-v-97f37a6d]{padding-top:24px;text-align:center}.VPTeamMembersItem.medium .avatar[data-v-97f37a6d]{width:96px;height:96px}.VPTeamMembersItem.medium .name[data-v-97f37a6d]{letter-spacing:.15px;line-height:28px;font-size:20px}.VPTeamMembersItem.medium .affiliation[data-v-97f37a6d]{padding-top:4px;font-size:16px}.VPTeamMembersItem.medium .desc[data-v-97f37a6d]{padding-top:16px;max-width:288px;font-size:16px}.VPTeamMembersItem.medium .links[data-v-97f37a6d]{margin:0 -16px -12px;padding:16px 12px 0}.profile[data-v-97f37a6d]{flex-grow:1;background-color:var(--vp-c-bg-soft)}.data[data-v-97f37a6d]{text-align:center}.avatar[data-v-97f37a6d]{position:relative;flex-shrink:0;margin:0 auto;border-radius:50%;box-shadow:var(--vp-shadow-3)}.avatar-img[data-v-97f37a6d]{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;object-fit:cover}.name[data-v-97f37a6d]{margin:0;font-weight:600}.affiliation[data-v-97f37a6d]{margin:0;font-weight:500;color:var(--vp-c-text-2)}.org.link[data-v-97f37a6d]{color:var(--vp-c-text-2);transition:color .25s}.org.link[data-v-97f37a6d]:hover{color:var(--vp-c-brand-1)}.desc[data-v-97f37a6d]{margin:0 auto}.desc[data-v-97f37a6d] a{font-weight:500;color:var(--vp-c-brand-1);text-decoration-style:dotted;transition:color .25s}.links[data-v-97f37a6d]{display:flex;justify-content:center;height:56px}.sp-link[data-v-97f37a6d]{display:flex;justify-content:center;align-items:center;text-align:center;padding:16px;font-size:14px;font-weight:500;color:var(--vp-c-sponsor);background-color:var(--vp-c-bg-soft);transition:color .25s,background-color .25s}.sp .sp-link.link[data-v-97f37a6d]:hover,.sp .sp-link.link[data-v-97f37a6d]:focus{outline:none;color:var(--vp-c-white);background-color:var(--vp-c-sponsor)}.sp-icon[data-v-97f37a6d]{margin-right:8px;font-size:16px}.VPTeamMembers.small .container[data-v-2b24ac44]{grid-template-columns:repeat(auto-fit,minmax(224px,1fr))}.VPTeamMembers.small.count-1 .container[data-v-2b24ac44]{max-width:276px}.VPTeamMembers.small.count-2 .container[data-v-2b24ac44]{max-width:576px}.VPTeamMembers.small.count-3 .container[data-v-2b24ac44]{max-width:876px}.VPTeamMembers.medium .container[data-v-2b24ac44]{grid-template-columns:repeat(auto-fit,minmax(256px,1fr))}@media (min-width: 375px){.VPTeamMembers.medium .container[data-v-2b24ac44]{grid-template-columns:repeat(auto-fit,minmax(288px,1fr))}}.VPTeamMembers.medium.count-1 .container[data-v-2b24ac44]{max-width:368px}.VPTeamMembers.medium.count-2 .container[data-v-2b24ac44]{max-width:760px}.container[data-v-2b24ac44]{display:grid;gap:24px;margin:0 auto;max-width:1152px}.VPTeamPage[data-v-6b7784fa]{margin:96px 0}@media (min-width: 768px){.VPTeamPage[data-v-6b7784fa]{margin:128px 0}}.VPHome .VPTeamPageTitle[data-v-6b7784fa-s]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPTeamPageSection+.VPTeamPageSection[data-v-6b7784fa-s],.VPTeamMembers+.VPTeamPageSection[data-v-6b7784fa-s]{margin-top:64px}.VPTeamMembers+.VPTeamMembers[data-v-6b7784fa-s]{margin-top:24px}@media (min-width: 768px){.VPTeamPageTitle+.VPTeamPageSection[data-v-6b7784fa-s]{margin-top:16px}.VPTeamPageSection+.VPTeamPageSection[data-v-6b7784fa-s],.VPTeamMembers+.VPTeamPageSection[data-v-6b7784fa-s]{margin-top:96px}}.VPTeamMembers[data-v-6b7784fa-s]{padding:0 24px}@media (min-width: 768px){.VPTeamMembers[data-v-6b7784fa-s]{padding:0 48px}}@media (min-width: 960px){.VPTeamMembers[data-v-6b7784fa-s]{padding:0 64px}}.VPTeamPageSection[data-v-e57fddc3]{padding:0 32px}@media (min-width: 768px){.VPTeamPageSection[data-v-e57fddc3]{padding:0 48px}}@media (min-width: 960px){.VPTeamPageSection[data-v-e57fddc3]{padding:0 64px}}.title[data-v-e57fddc3]{position:relative;margin:0 auto;max-width:1152px;text-align:center;color:var(--vp-c-text-2)}.title-line[data-v-e57fddc3]{position:absolute;top:16px;left:0;width:100%;height:1px;background-color:var(--vp-c-divider)}.title-text[data-v-e57fddc3]{position:relative;display:inline-block;padding:0 24px;letter-spacing:0;line-height:32px;font-size:20px;font-weight:500;background-color:var(--vp-c-bg)}.lead[data-v-e57fddc3]{margin:0 auto;max-width:480px;padding-top:12px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.members[data-v-e57fddc3]{padding-top:40px}.VPTeamPageTitle[data-v-2aa69d3e]{padding:48px 32px;text-align:center}@media (min-width: 768px){.VPTeamPageTitle[data-v-2aa69d3e]{padding:64px 48px 48px}}@media (min-width: 960px){.VPTeamPageTitle[data-v-2aa69d3e]{padding:80px 64px 48px}}.title[data-v-2aa69d3e]{letter-spacing:0;line-height:44px;font-size:36px;font-weight:500}@media (min-width: 768px){.title[data-v-2aa69d3e]{letter-spacing:-.5px;line-height:56px;font-size:48px}}.lead[data-v-2aa69d3e]{margin:0 auto;max-width:512px;padding-top:12px;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 768px){.lead[data-v-2aa69d3e]{max-width:592px;letter-spacing:.15px;line-height:28px;font-size:20px}}#workflow-visualizer-app{--color-primary: #2563eb;--color-primary-hover: #1d4ed8;--color-secondary: #64748b;--color-success: #059669;--color-warning: #d97706;--color-error: #dc2626;--color-white: #ffffff;--color-gray-50: #f8fafc;--color-gray-100: #f1f5f9;--color-gray-200: #e2e8f0;--color-gray-300: #cbd5e1;--color-gray-400: #94a3b8;--color-gray-500: #64748b;--color-gray-600: #475569;--color-gray-700: #334155;--color-gray-800: #1e293b;--color-gray-900: #0f172a;--font-family-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-family-mono: "SF Mono", Monaco, "Cascadia Code", "Roboto Mono", Consolas, "Courier New", monospace;--spacing-xs: .25rem;--spacing-sm: .5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--radius-sm: .25rem;--radius-md: .375rem;--radius-lg: .5rem;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / .05);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1)}#workflow-visualizer-app{width:100%;height:100%;background:var(--color-white);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);overflow:hidden;font-family:var(--font-family-sans);font-size:14px;line-height:1.5;color:var(--color-gray-900)}#workflow-visualizer-app *{box-sizing:border-box}#workflow-visualizer-app .app-header{background:var(--color-gray-50);border-bottom:1px solid var(--color-gray-200);padding:var(--spacing-lg)}#workflow-visualizer-app .app-header h1{margin:0 0 var(--spacing-md) 0;color:var(--color-gray-900);font-size:1.5rem;font-weight:600;line-height:1.2}#workflow-visualizer-app .workflow-controls{display:flex;gap:var(--spacing-md);align-items:center;flex-wrap:wrap}#workflow-visualizer-app .workflow-selector{flex:1;min-width:200px;padding:var(--spacing-sm);border:1px solid var(--color-gray-300);border-radius:var(--radius-md);background:var(--color-white);font-family:inherit;font-size:inherit;color:var(--color-gray-900)}#workflow-visualizer-app .file-upload{display:none}#workflow-visualizer-app .file-upload-label{padding:var(--spacing-sm) var(--spacing-md);background:var(--color-primary);color:var(--color-white);border-radius:var(--radius-md);cursor:pointer;font-weight:500;transition:background-color .2s;border:none;font-family:inherit;font-size:inherit}#workflow-visualizer-app .file-upload-label:hover{background:var(--color-primary-hover)}#workflow-visualizer-app .app-main{display:flex;height:100%}#workflow-visualizer-app.fullscreen .app-main{height:80vh}#workflow-visualizer-app .diagram-container{flex:1;position:relative;overflow:hidden;background:var(--color-white)}#workflow-visualizer-app .diagram-canvas{width:100%;height:100%;overflow:auto;position:relative}#workflow-visualizer-app .loading-message{display:flex;align-items:center;justify-content:center;height:100%;color:var(--color-gray-500);font-size:1rem;font-style:italic}#workflow-visualizer-app .side-panel{width:35%;border-left:1px solid var(--color-gray-200);background:var(--color-gray-50);display:flex;flex-direction:column}#workflow-visualizer-app .side-panel .metadata-item{margin-bottom:8px}#workflow-visualizer-app .side-panel .metadata-item ul{list-style:circle;padding:0;margin-bottom:var(--spacing-sm)}#workflow-visualizer-app .side-panel .metadata-item ul li{padding-bottom:var(--spacing-sm);margin-left:var(--spacing-lg)}#workflow-visualizer-app .side-panel-header{padding:var(--spacing-lg);border-bottom:1px solid var(--color-gray-200);background:var(--color-white);display:flex;align-items:center}#workflow-visualizer-app .side-panel-header h2{margin:0;color:var(--color-gray-900);font-size:1.125rem;font-weight:600;line-height:1.2}#workflow-visualizer-app .side-panel-content{flex:1;padding:var(--spacing-lg);overflow-y:auto}#workflow-visualizer-app .empty-state{color:var(--color-gray-500);text-align:center;font-style:italic;padding:var(--spacing-xl) 0}#workflow-visualizer-app .detail-section{margin-bottom:var(--spacing-lg);padding-bottom:var(--spacing-lg);border-bottom:1px solid var(--color-gray-200)}#workflow-visualizer-app .detail-section:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}#workflow-visualizer-app .detail-title{font-size:1.125rem;font-weight:600;color:var(--color-gray-900);margin-bottom:var(--spacing-sm)}#workflow-visualizer-app .detail-subtitle{font-size:1rem;font-weight:500;color:var(--color-gray-800);margin-bottom:var(--spacing-sm)}#workflow-visualizer-app .detail-content{color:var(--color-gray-700);line-height:1.6;margin:0}#workflow-visualizer-app .code-block{background-color:var(--color-gray-100);border:1px solid var(--color-gray-200);border-radius:var(--radius-md);padding:var(--spacing-md);font-family:var(--font-family-mono);font-size:.875rem;color:var(--color-gray-800);overflow-x:auto;white-space:pre-wrap;word-break:break-word;margin:var(--spacing-sm) 0}#workflow-visualizer-app .badge{display:inline-flex;align-items:center;padding:.25rem .5rem;border-radius:var(--radius-sm);font-size:.75rem;font-weight:500;text-transform:uppercase;letter-spacing:.025em;margin-left:var(--spacing-sm)}#workflow-visualizer-app .badge-success{background-color:var(--color-success);color:var(--color-white)}#workflow-visualizer-app .transitions-list{list-style:none;padding:0;margin:0}#workflow-visualizer-app .transition-item{background:var(--color-white);border:1px solid var(--color-gray-200);border-radius:var(--radius-md);padding:var(--spacing-md);margin-bottom:var(--spacing-sm);transition:all .2s ease}#workflow-visualizer-app .transition-item:hover{border-color:var(--color-primary);box-shadow:var(--shadow-sm)}#workflow-visualizer-app .transition-trigger{font-weight:600;color:var(--color-gray-900);margin-bottom:.25rem}#workflow-visualizer-app .transition-target{color:var(--color-primary);font-weight:500;margin-bottom:.25rem}#workflow-visualizer-app .transition-reason{color:var(--color-gray-600);font-size:.875rem}#workflow-visualizer-app .error-container{position:absolute;bottom:var(--spacing-lg);right:var(--spacing-lg);z-index:1000}#workflow-visualizer-app .error-container.hidden{display:none}#workflow-visualizer-app .error-message{background:#fef2f2;border:1px solid #fecaca;color:var(--color-error);padding:var(--spacing-md);border-radius:var(--radius-md);display:flex;align-items:center;gap:var(--spacing-sm);max-width:300px;box-shadow:var(--shadow-md)}#workflow-visualizer-app .error-close{background:none;border:none;color:var(--color-error);cursor:pointer;font-size:1.25rem;line-height:1;padding:0}#workflow-visualizer-app button{cursor:pointer;font-family:inherit}#workflow-visualizer-app select{cursor:pointer}#workflow-visualizer-app .back-button{background:none;border:none;color:var(--color-gray-500);cursor:pointer;font-size:18px;padding:4px;margin-right:8px;border-radius:4px;transition:all .2s ease}#workflow-visualizer-app .back-button:hover{background-color:var(--color-gray-100)}#workflow-visualizer-app .diagram-canvas svg{max-width:100%;height:auto}#workflow-visualizer-app .clickable-transition{cursor:pointer;transition:background-color .2s ease}#workflow-visualizer-app .clickable-transition:hover{background-color:#f0f9ff}.loading-message[data-v-7fa343e6]{display:flex;align-items:center;justify-content:center;height:400px;color:#64748b;font-style:italic}.three-layers-container[data-v-d89b85c7]{display:flex;flex-direction:column;gap:1rem;max-width:800px;margin:2rem auto;padding:2rem}.layer[data-v-d89b85c7]{display:flex;align-items:center;padding:1.5rem 2rem;border-radius:12px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:2px solid;transition:transform .2s ease}.layer[data-v-d89b85c7]:hover{transform:scale(105%)}.layer-conversation[data-v-d89b85c7]{background:linear-gradient(135deg,#3b82f633,#9333ea33);border-color:#3b82f666;border-style:dashed}.layer-process[data-v-d89b85c7]{background:linear-gradient(135deg,#22c55e33,#3b82f633);border-color:#22c55e66}.layer-longterm[data-v-d89b85c7]{background:linear-gradient(135deg,#9333ea33,#a855f733);border-color:#9333ea66}.layer-icon[data-v-d89b85c7]{margin-right:2rem;flex-shrink:0;font-size:3rem;display:flex;align-items:center;justify-content:center}.layer-content h3[data-v-d89b85c7]{margin:0 0 .5rem;font-size:1.5rem;font-weight:600}.layer-content p[data-v-d89b85c7]{margin:0;font-size:1rem;opacity:.8}.vp-doc,.VPDoc .container,.content,.content-container,.VPContent,.VPDoc{max-width:none!important;width:100%!important}.vp-doc{padding:0 24px!important}.vp-doc h2{border-top:none}
@@ -1,4 +1,4 @@
1
- import{_ as s,c as a,o as n,a0 as i}from"./chunks/framework.DZS7lpav.js";const g=JSON.parse('{"title":"Advanced Engineering","description":"","frontmatter":{},"headers":[],"relativePath":"user/advanced-engineering.md","filePath":"user/advanced-engineering.md"}'),t={name:"user/advanced-engineering.md"};function o(l,e,r,p,c,h){return n(),a("div",null,[...e[0]||(e[0]=[i(`<h1 id="advanced-engineering" tabindex="-1">Advanced Engineering <a class="header-anchor" href="#advanced-engineering" aria-label="Permalink to &quot;Advanced Engineering&quot;">​</a></h1><p>Beyond basic workflows, Responsible Vibe provides sophisticated engineering practices for serious software development.</p><h2 id="project-documentation-system" tabindex="-1">Project Documentation System <a class="header-anchor" href="#project-documentation-system" aria-label="Permalink to &quot;Project Documentation System&quot;">​</a></h2><h3 id="setup-project-docs-tool" tabindex="-1"><code>setup_project_docs</code> Tool <a class="header-anchor" href="#setup-project-docs-tool" aria-label="Permalink to &quot;\`setup_project_docs\` Tool&quot;">​</a></h3><p>Create structured project documentation that persists across conversations:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Your AI can call this automatically or you can request it</span></span>
1
+ import{_ as s,c as a,o as n,a0 as i}from"./chunks/framework.FdfEk_gD.js";const g=JSON.parse('{"title":"Advanced Engineering","description":"","frontmatter":{},"headers":[],"relativePath":"user/advanced-engineering.md","filePath":"user/advanced-engineering.md"}'),t={name:"user/advanced-engineering.md"};function o(l,e,r,p,c,h){return n(),a("div",null,[...e[0]||(e[0]=[i(`<h1 id="advanced-engineering" tabindex="-1">Advanced Engineering <a class="header-anchor" href="#advanced-engineering" aria-label="Permalink to &quot;Advanced Engineering&quot;">​</a></h1><p>Beyond basic workflows, Responsible Vibe provides sophisticated engineering practices for serious software development.</p><h2 id="project-documentation-system" tabindex="-1">Project Documentation System <a class="header-anchor" href="#project-documentation-system" aria-label="Permalink to &quot;Project Documentation System&quot;">​</a></h2><h3 id="setup-project-docs-tool" tabindex="-1"><code>setup_project_docs</code> Tool <a class="header-anchor" href="#setup-project-docs-tool" aria-label="Permalink to &quot;\`setup_project_docs\` Tool&quot;">​</a></h3><p>Create structured project documentation that persists across conversations:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Your AI can call this automatically or you can request it</span></span>
2
2
  <span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">&quot;Set up project documentation using the arc42 template&quot;</span></span></code></pre></div><p><strong>What it creates:</strong></p><ul><li><code>architecture.md</code> – System design and technical decisions</li><li><code>requirements.md</code> – What you&#39;re building and why</li><li><code>design.md</code> – Detailed implementation approach</li></ul><p><strong>Template Options:</strong></p><ul><li><strong>arc42</strong>: Industry-standard architecture documentation</li><li><strong>comprehensive</strong>: Detailed templates for all aspects</li><li><strong>freestyle</strong>: Minimal structure, maximum flexibility</li><li><strong>none</strong>: Placeholder that references plan file instead</li></ul><p><strong>File Linking:</strong> Instead of creating new docs, you can link existing ones:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">&quot;Link the existing README.md as architecture documentation&quot;</span></span>
3
3
  <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Creates symlink: .vibe/docs/architecture.md → README.md</span></span></code></pre></div><h2 id="workflow-variables" tabindex="-1">Workflow Variables <a class="header-anchor" href="#workflow-variables" aria-label="Permalink to &quot;Workflow Variables&quot;">​</a></h2><p>Your workflows can reference project documentation dynamically:</p><p><strong>In Workflow Instructions:</strong></p><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>&quot;Review the system architecture documented in $ARCHITECTURE_DOC</span></span>
4
4
  <span class="line"><span>and ensure your design addresses all requirements in $REQUIREMENTS_DOC.&quot;</span></span></code></pre></div><p><strong>At Runtime:</strong></p><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>&quot;Review the system architecture documented in /project/.vibe/docs/architecture.md</span></span>
@@ -1 +1 @@
1
- import{_ as s,c as a,o as n,a0 as i}from"./chunks/framework.DZS7lpav.js";const g=JSON.parse('{"title":"Advanced Engineering","description":"","frontmatter":{},"headers":[],"relativePath":"user/advanced-engineering.md","filePath":"user/advanced-engineering.md"}'),t={name:"user/advanced-engineering.md"};function o(l,e,r,p,c,h){return n(),a("div",null,[...e[0]||(e[0]=[i("",61)])])}const u=s(t,[["render",o]]);export{g as __pageData,u as default};
1
+ import{_ as s,c as a,o as n,a0 as i}from"./chunks/framework.FdfEk_gD.js";const g=JSON.parse('{"title":"Advanced Engineering","description":"","frontmatter":{},"headers":[],"relativePath":"user/advanced-engineering.md","filePath":"user/advanced-engineering.md"}'),t={name:"user/advanced-engineering.md"};function o(l,e,r,p,c,h){return n(),a("div",null,[...e[0]||(e[0]=[i("",61)])])}const u=s(t,[["render",o]]);export{g as __pageData,u as default};
@@ -1,4 +1,4 @@
1
- import{_ as i,c as t,o as e,a0 as a}from"./chunks/framework.DZS7lpav.js";const c=JSON.parse('{"title":"Agent Setup Guide","description":"","frontmatter":{},"headers":[],"relativePath":"user/agent-setup.md","filePath":"user/agent-setup.md"}'),n={name:"user/agent-setup.md"};function l(o,s,p,h,r,d){return e(),t("div",null,[...s[0]||(s[0]=[a(`<h1 id="agent-setup-guide" tabindex="-1">Agent Setup Guide <a class="header-anchor" href="#agent-setup-guide" aria-label="Permalink to &quot;Agent Setup Guide&quot;">​</a></h1><p>This guide explains how to set up AI coding agents to work with the workflows server.</p><h2 id="core-concepts" tabindex="-1">Core Concepts <a class="header-anchor" href="#core-concepts" aria-label="Permalink to &quot;Core Concepts&quot;">​</a></h2><p>Every AI coding agent needs two things to work with the workflows server:</p><h3 id="_1-system-prompt" tabindex="-1">1. System Prompt <a class="header-anchor" href="#_1-system-prompt" aria-label="Permalink to &quot;1. System Prompt&quot;">​</a></h3><p>Instructions that tell the agent how to use the MCP tools. The system prompt teaches the agent to:</p><ul><li>Call <code>whats_next()</code> after each user interaction</li><li>Follow the workflow phases (explore, plan, code, commit, etc.)</li><li>Update the plan file to maintain project memory</li><li>Request phase transitions when appropriate</li></ul><h3 id="_2-mcp-server-connection" tabindex="-1">2. MCP Server Connection <a class="header-anchor" href="#_2-mcp-server-connection" aria-label="Permalink to &quot;2. MCP Server Connection&quot;">​</a></h3><p>A connection to the workflows server that provides the actual tools:</p><div class="language-json vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">json</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{</span></span>
1
+ import{_ as i,c as t,o as e,a0 as a}from"./chunks/framework.FdfEk_gD.js";const c=JSON.parse('{"title":"Agent Setup Guide","description":"","frontmatter":{},"headers":[],"relativePath":"user/agent-setup.md","filePath":"user/agent-setup.md"}'),n={name:"user/agent-setup.md"};function l(o,s,p,h,r,d){return e(),t("div",null,[...s[0]||(s[0]=[a(`<h1 id="agent-setup-guide" tabindex="-1">Agent Setup Guide <a class="header-anchor" href="#agent-setup-guide" aria-label="Permalink to &quot;Agent Setup Guide&quot;">​</a></h1><p>This guide explains how to set up AI coding agents to work with the workflows server.</p><h2 id="core-concepts" tabindex="-1">Core Concepts <a class="header-anchor" href="#core-concepts" aria-label="Permalink to &quot;Core Concepts&quot;">​</a></h2><p>Every AI coding agent needs two things to work with the workflows server:</p><h3 id="_1-system-prompt" tabindex="-1">1. System Prompt <a class="header-anchor" href="#_1-system-prompt" aria-label="Permalink to &quot;1. System Prompt&quot;">​</a></h3><p>Instructions that tell the agent how to use the MCP tools. The system prompt teaches the agent to:</p><ul><li>Call <code>whats_next()</code> after each user interaction</li><li>Follow the workflow phases (explore, plan, code, commit, etc.)</li><li>Update the plan file to maintain project memory</li><li>Request phase transitions when appropriate</li></ul><h3 id="_2-mcp-server-connection" tabindex="-1">2. MCP Server Connection <a class="header-anchor" href="#_2-mcp-server-connection" aria-label="Permalink to &quot;2. MCP Server Connection&quot;">​</a></h3><p>A connection to the workflows server that provides the actual tools:</p><div class="language-json vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">json</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{</span></span>
2
2
  <span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> &quot;mcpServers&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: {</span></span>
3
3
  <span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> &quot;workflows&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: {</span></span>
4
4
  <span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> &quot;command&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;npx&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
@@ -1 +1 @@
1
- import{_ as i,c as t,o as e,a0 as a}from"./chunks/framework.DZS7lpav.js";const c=JSON.parse('{"title":"Agent Setup Guide","description":"","frontmatter":{},"headers":[],"relativePath":"user/agent-setup.md","filePath":"user/agent-setup.md"}'),n={name:"user/agent-setup.md"};function l(o,s,p,h,r,d){return e(),t("div",null,[...s[0]||(s[0]=[a("",36)])])}const g=i(n,[["render",l]]);export{c as __pageData,g as default};
1
+ import{_ as i,c as t,o as e,a0 as a}from"./chunks/framework.FdfEk_gD.js";const c=JSON.parse('{"title":"Agent Setup Guide","description":"","frontmatter":{},"headers":[],"relativePath":"user/agent-setup.md","filePath":"user/agent-setup.md"}'),n={name:"user/agent-setup.md"};function l(o,s,p,h,r,d){return e(),t("div",null,[...s[0]||(s[0]=[a("",36)])])}const g=i(n,[["render",l]]);export{c as __pageData,g as default};
@@ -1,4 +1,4 @@
1
- import{_ as a,c as i,o as e,a0 as t}from"./chunks/framework.DZS7lpav.js";const c=JSON.parse('{"title":"Beads Integration for Workflows Server","description":"","frontmatter":{},"headers":[],"relativePath":"user/beads-integration.md","filePath":"user/beads-integration.md"}'),n={name:"user/beads-integration.md"};function l(r,s,o,h,p,d){return e(),i("div",null,[...s[0]||(s[0]=[t(`<h1 id="beads-integration-for-workflows-server" tabindex="-1">Beads Integration for Workflows Server <a class="header-anchor" href="#beads-integration-for-workflows-server" aria-label="Permalink to &quot;Beads Integration for Workflows Server&quot;">​</a></h1><p>Integration between the workflows server and <a href="https://github.com/steveyegge/beads" target="_blank" rel="noreferrer">beads distributed issue tracker</a> for enhanced AI agent task management.</p><h2 id="overview" tabindex="-1">Overview <a class="header-anchor" href="#overview" aria-label="Permalink to &quot;Overview&quot;">​</a></h2><p><strong>Prerequisites</strong>: <code>bd</code> CLI must be installed and available in PATH.</p><p><strong>Backends</strong>:</p><ul><li><strong>Markdown</strong>: Checkbox tasks in plan files</li><li><strong>Beads</strong>: Rich task management with dependencies, priorities, and git integration</li></ul><h2 id="configuration" tabindex="-1">Configuration <a class="header-anchor" href="#configuration" aria-label="Permalink to &quot;Configuration&quot;">​</a></h2><p>Beads is <strong>auto-detected</strong>: if the <code>bd</code> command is available, it is used automatically. No configuration needed.</p><p>To explicitly override auto-detection:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> TASK_BACKEND</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">markdown </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Force markdown even if bd is available</span></span>
1
+ import{_ as a,c as i,o as e,a0 as t}from"./chunks/framework.FdfEk_gD.js";const c=JSON.parse('{"title":"Beads Integration for Workflows Server","description":"","frontmatter":{},"headers":[],"relativePath":"user/beads-integration.md","filePath":"user/beads-integration.md"}'),n={name:"user/beads-integration.md"};function l(r,s,o,h,p,d){return e(),i("div",null,[...s[0]||(s[0]=[t(`<h1 id="beads-integration-for-workflows-server" tabindex="-1">Beads Integration for Workflows Server <a class="header-anchor" href="#beads-integration-for-workflows-server" aria-label="Permalink to &quot;Beads Integration for Workflows Server&quot;">​</a></h1><p>Integration between the workflows server and <a href="https://github.com/steveyegge/beads" target="_blank" rel="noreferrer">beads distributed issue tracker</a> for enhanced AI agent task management.</p><h2 id="overview" tabindex="-1">Overview <a class="header-anchor" href="#overview" aria-label="Permalink to &quot;Overview&quot;">​</a></h2><p><strong>Prerequisites</strong>: <code>bd</code> CLI must be installed and available in PATH.</p><p><strong>Backends</strong>:</p><ul><li><strong>Markdown</strong>: Checkbox tasks in plan files</li><li><strong>Beads</strong>: Rich task management with dependencies, priorities, and git integration</li></ul><h2 id="configuration" tabindex="-1">Configuration <a class="header-anchor" href="#configuration" aria-label="Permalink to &quot;Configuration&quot;">​</a></h2><p>Beads is <strong>auto-detected</strong>: if the <code>bd</code> command is available, it is used automatically. No configuration needed.</p><p>To explicitly override auto-detection:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> TASK_BACKEND</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">markdown </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Force markdown even if bd is available</span></span>
2
2
  <span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">export</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> TASK_BACKEND</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">beads </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Force beads (errors if bd unavailable)</span></span></code></pre></div><h2 id="quick-setup" tabindex="-1">Quick Setup <a class="header-anchor" href="#quick-setup" aria-label="Permalink to &quot;Quick Setup&quot;">​</a></h2><ol><li>Install beads CLI (<code>bd</code> command must be in PATH)</li><li>Use <code>start_development()</code> as normal — beads is detected automatically</li></ol><h2 id="usage" tabindex="-1">Usage <a class="header-anchor" href="#usage" aria-label="Permalink to &quot;Usage&quot;">​</a></h2><h3 id="development-workflow" tabindex="-1">Development Workflow <a class="header-anchor" href="#development-workflow" aria-label="Permalink to &quot;Development Workflow&quot;">​</a></h3><p>When beads is active:</p><ol><li><strong>Project epic</strong>: Created automatically for all development tasks</li><li><strong>Phase tasks</strong>: One task per workflow phase with sequential dependencies</li><li><strong>Plan file</strong>: Modified to include beads task IDs in comments</li></ol><p><strong>Task Hierarchy</strong> (automatic):</p><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>Project Epic: &quot;responsible-vibe Development: My Project&quot; (bd-a1b2)</span></span>
3
3
  <span class="line"><span>├── Explore Phase (bd-a1b2.1) → Plan Phase (bd-a1b2.2) →</span></span>
4
4
  <span class="line"><span>├── Code Phase (bd-a1b2.3) → Commit Phase (bd-a1b2.4)</span></span></code></pre></div><p><strong>Sequential dependencies</strong>: Each phase blocks the next, ensuring proper workflow order.</p><h3 id="essential-commands" tabindex="-1">Essential Commands <a class="header-anchor" href="#essential-commands" aria-label="Permalink to &quot;Essential Commands&quot;">​</a></h3><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Task creation with context</span></span>
@@ -1 +1 @@
1
- import{_ as a,c as i,o as e,a0 as t}from"./chunks/framework.DZS7lpav.js";const c=JSON.parse('{"title":"Beads Integration for Workflows Server","description":"","frontmatter":{},"headers":[],"relativePath":"user/beads-integration.md","filePath":"user/beads-integration.md"}'),n={name:"user/beads-integration.md"};function l(r,s,o,h,p,d){return e(),i("div",null,[...s[0]||(s[0]=[t("",29)])])}const g=a(n,[["render",l]]);export{c as __pageData,g as default};
1
+ import{_ as a,c as i,o as e,a0 as t}from"./chunks/framework.FdfEk_gD.js";const c=JSON.parse('{"title":"Beads Integration for Workflows Server","description":"","frontmatter":{},"headers":[],"relativePath":"user/beads-integration.md","filePath":"user/beads-integration.md"}'),n={name:"user/beads-integration.md"};function l(r,s,o,h,p,d){return e(),i("div",null,[...s[0]||(s[0]=[t("",29)])])}const g=a(n,[["render",l]]);export{c as __pageData,g as default};