paseo-req-kit 1.14.0-beta.2 → 1.14.0-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/bin/req.mjs +8 -0
  3. package/contracts/cli-json.md +1 -1
  4. package/docs/guide//344/275/277/347/224/250/350/200/205/346/214/207/345/215/227.md +7 -0
  5. package/engine/src/api.ts +6 -2
  6. package/engine/src/checklist-cmd.ts +37 -0
  7. package/engine/src/checklist.ts +254 -0
  8. package/engine/src/reply.ts +7 -4
  9. package/engine/src/review-assets/check.css +57 -0
  10. package/engine/src/review-assets/check.html +35 -0
  11. package/engine/src/review-assets/check.js +258 -0
  12. package/engine/src/review.ts +94 -1
  13. package/engine/src/try.ts +134 -0
  14. package/package.json +1 -1
  15. package/paseo-plugin/client/data.ts +3 -3
  16. package/paseo-plugin/client/detail.tsx +5 -2
  17. package/paseo-plugin/client/nav.ts +5 -0
  18. package/paseo-plugin/client/review.tsx +20 -6
  19. package/paseo-plugin/package.json +1 -1
  20. package/paseo-plugin/server/handlers.ts +2 -2
  21. package/paseo-plugin/shared/contracts.ts +2 -1
  22. package/site-dist/404.html +2 -2
  23. package/site-dist/assets/{app.gI1JF182.js → app.BpC99f5a.js} +1 -1
  24. package/site-dist/assets/changelog.md.m4cSU5e4.js +1 -0
  25. package/site-dist/assets/chunks/@localSearchIndexroot.D6ywcTJ5.js +1 -0
  26. package/site-dist/assets/chunks/{VPLocalSearchBox.DNmhkkfS.js → VPLocalSearchBox.CI43rhTA.js} +1 -1
  27. package/site-dist/assets/chunks/{theme.CZzkCOAC.js → theme.S6pNEF23.js} +2 -2
  28. package/site-dist/assets/{guide_getting-started.md.zmtXv15G.js → guide_getting-started.md.a7iNP1Ky.js} +1 -1
  29. package/site-dist/assets/{guide_user.md.2v7b_fzd.js → guide_user.md.D9GpGJ7y.js} +1 -1
  30. package/site-dist/assets/{guide_user.md.2v7b_fzd.lean.js → guide_user.md.D9GpGJ7y.lean.js} +1 -1
  31. package/site-dist/assets/{reference_contracts_cli-json.md.BR6gwq-e.js → reference_contracts_cli-json.md.BV1HtTmr.js} +1 -1
  32. package/site-dist/assets/{reference_contracts_cli-json.md.BR6gwq-e.lean.js → reference_contracts_cli-json.md.BV1HtTmr.lean.js} +1 -1
  33. package/site-dist/changelog.html +5 -5
  34. package/site-dist/guide/getting-started.html +5 -5
  35. package/site-dist/guide/how-it-works.html +4 -4
  36. package/site-dist/guide/index.html +4 -4
  37. package/site-dist/guide/install.html +4 -4
  38. package/site-dist/guide/maintainer.html +4 -4
  39. package/site-dist/guide/phases.html +4 -4
  40. package/site-dist/guide/project.html +4 -4
  41. package/site-dist/guide/user.html +5 -5
  42. package/site-dist/hashmap.json +1 -1
  43. package/site-dist/index.html +4 -4
  44. package/site-dist/reference/adr/0001-step-agents-under-origin-chat.html +4 -4
  45. package/site-dist/reference/adr/0002-no-directory-switch-in-chat.html +4 -4
  46. package/site-dist/reference/adr/0003-script-engine-not-hub.html +4 -4
  47. package/site-dist/reference/adr/0004-result-files.html +4 -4
  48. package/site-dist/reference/adr/0005-no-default-branch-local-commits-only.html +4 -4
  49. package/site-dist/reference/adr/0006-skill-install-targets.html +4 -4
  50. package/site-dist/reference/adr/0007-own-interview-skill.html +4 -4
  51. package/site-dist/reference/adr/0008-entries-do-not-call-entries.html +4 -4
  52. package/site-dist/reference/adr/0009-versioned-install-layout.html +4 -4
  53. package/site-dist/reference/adr/0010-generated-feature-overview.html +4 -4
  54. package/site-dist/reference/adr/0011-resume-after-completion.html +4 -4
  55. package/site-dist/reference/adr/0012-review-panel.html +4 -4
  56. package/site-dist/reference/adr/0013-no-release-tooling.html +4 -4
  57. package/site-dist/reference/adr/0014-notifier-slot.html +4 -4
  58. package/site-dist/reference/adr/0015-incremental-continue.html +4 -4
  59. package/site-dist/reference/adr/0016-upgrade-from-tags.html +4 -4
  60. package/site-dist/reference/adr/0017-use-paseo-capabilities.html +4 -4
  61. package/site-dist/reference/adr/0018-own-worktree-option.html +4 -4
  62. package/site-dist/reference/adr/0019-parallel-orchestration.html +4 -4
  63. package/site-dist/reference/adr/0020-scheduling-through-the-chat.html +4 -4
  64. package/site-dist/reference/adr/0021-npm-version-manager.html +4 -4
  65. package/site-dist/reference/adr/0022-develop-and-verify-phases.html +4 -4
  66. package/site-dist/reference/adr/0023-types-gate-slices.html +4 -4
  67. package/site-dist/reference/adr/0024-confirm-early-review-axes.html +4 -4
  68. package/site-dist/reference/adr/0025-joint-requirements.html +4 -4
  69. package/site-dist/reference/adr/0026-machine-records-and-api.html +4 -4
  70. package/site-dist/reference/adr/0027-paseo-plugin.html +4 -4
  71. package/site-dist/reference/adr/0028-external-integrations.html +4 -4
  72. package/site-dist/reference/adr/0029-requirements-from-cards.html +4 -4
  73. package/site-dist/reference/adr/0030-card-intake-process.html +4 -4
  74. package/site-dist/reference/adr/0031-fewer-interventions.html +4 -4
  75. package/site-dist/reference/adr/0032-npm-only-install.html +4 -4
  76. package/site-dist/reference/adr/0033-prototype-review-and-ui-check.html +4 -4
  77. package/site-dist/reference/adr/index.html +4 -4
  78. package/site-dist/reference/commands.html +4 -4
  79. package/site-dist/reference/config.html +4 -4
  80. package/site-dist/reference/contracts/cli-json.html +5 -5
  81. package/site-dist/reference/contracts/feature-files.html +4 -4
  82. package/site-dist/reference/contracts/index.html +4 -4
  83. package/site-dist/reference/contracts/notifier-event.html +4 -4
  84. package/site-dist/reference/contracts/result-file.html +4 -4
  85. package/site-dist/reference/contracts/spec.html +4 -4
  86. package/site-dist/reference/contracts/state.html +4 -4
  87. package/site-dist/reference/contracts/usage-record.html +4 -4
  88. package/site-dist/reference/contracts/verify.html +4 -4
  89. package/site-dist/reference/scope.html +4 -4
  90. package/skills/req/SKILL.md +2 -0
  91. package/skills/req/playbooks/accept.md +2 -2
  92. package/site-dist/assets/changelog.md.2xf690VW.js +0 -1
  93. package/site-dist/assets/chunks/@localSearchIndexroot.CiFeI6qC.js +0 -1
  94. /package/site-dist/assets/{changelog.md.2xf690VW.lean.js → changelog.md.m4cSU5e4.lean.js} +0 -0
  95. /package/site-dist/assets/{guide_getting-started.md.zmtXv15G.lean.js → guide_getting-started.md.a7iNP1Ky.lean.js} +0 -0
@@ -1,4 +1,4 @@
1
- var Ot=Object.defineProperty;var At=(a,e,t)=>e in a?Ot(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t;var Me=(a,e,t)=>At(a,typeof e!="symbol"?e+"":e,t);import{V as Ct,q as Be,ah as Mt,h as be,ai as nt,aj as Lt,ak as Dt,al as Pt,G as ce,d as zt,am as rt,p as he,an as Vt,ao as jt,s as $t,ap as Bt,v as Le,P as ve,O as xe,aq as Wt,ar as Kt,W as Jt,R as qt,$ as Ut,o as q,b as Ht,j as T,a0 as Gt,k as P,as as Qt,at as Yt,au as Zt,c as Q,n as it,e as _e,B as st,F as at,a as pe,t as me,av as Xt,aw as ot,ax as en,a7 as tn,ac as nn,ay as rn,_ as sn}from"./framework.B9qR_F1m.js";import{u as an,c as on}from"./theme.CZzkCOAC.js";const ln={root:()=>Ct(()=>import("./@localSearchIndexroot.CiFeI6qC.js"),[])};/*!
1
+ var Ot=Object.defineProperty;var At=(a,e,t)=>e in a?Ot(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t;var Me=(a,e,t)=>At(a,typeof e!="symbol"?e+"":e,t);import{V as Ct,q as Be,ah as Mt,h as be,ai as nt,aj as Lt,ak as Dt,al as Pt,G as ce,d as zt,am as rt,p as he,an as Vt,ao as jt,s as $t,ap as Bt,v as Le,P as ve,O as xe,aq as Wt,ar as Kt,W as Jt,R as qt,$ as Ut,o as q,b as Ht,j as T,a0 as Gt,k as P,as as Qt,at as Yt,au as Zt,c as Q,n as it,e as _e,B as st,F as at,a as pe,t as me,av as Xt,aw as ot,ax as en,a7 as tn,ac as nn,ay as rn,_ as sn}from"./framework.B9qR_F1m.js";import{u as an,c as on}from"./theme.S6pNEF23.js";const ln={root:()=>Ct(()=>import("./@localSearchIndexroot.D6ywcTJ5.js"),[])};/*!
2
2
  * tabbable 6.5.0
3
3
  * @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE
4
4
  */var gt=["input:not([inert]):not([inert] *)","select:not([inert]):not([inert] *)","textarea:not([inert]):not([inert] *)","a[href]:not([inert]):not([inert] *)","area[href]:not([inert]):not([inert] *)","button:not([inert]):not([inert] *)","[tabindex]:not(slot):not([inert]):not([inert] *)","audio[controls]:not([inert]):not([inert] *)","video[controls]:not([inert]):not([inert] *)",'[contenteditable]:not([contenteditable="false"]):not([inert]):not([inert] *)',"details>summary:first-of-type:not([inert]):not([inert] *)","details:not([inert]):not([inert] *)"],ke=gt.join(","),bt=typeof Element>"u",ae=bt?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,Ne=!bt&&Element.prototype.getRootNode?function(a){var e;return a==null||(e=a.getRootNode)===null||e===void 0?void 0:e.call(a)}:function(a){return a==null?void 0:a.ownerDocument},Fe=function(e,t){var n;t===void 0&&(t=!0);var r=e==null||(n=e.getAttribute)===null||n===void 0?void 0:n.call(e,"inert"),s=r===""||r==="true",i=s||t&&e&&(typeof e.closest=="function"?e.closest("[inert]"):Fe(e.parentNode));return i},cn=function(e){var t,n=e==null||(t=e.getAttribute)===null||t===void 0?void 0:t.call(e,"contenteditable");return n===""||n==="true"},yt=function(e,t,n){if(Fe(e))return[];var r=Array.prototype.slice.apply(e.querySelectorAll(ke));return t&&ae.call(e,ke)&&r.unshift(e),r=r.filter(n),r},Re=function(e,t,n){for(var r=[],s=Array.from(e);s.length;){var i=s.shift();if(!Fe(i,!1))if(i.tagName==="SLOT"){var o=i.assignedElements(),l=o.length?o:i.children,c=Re(l,!0,n);n.flatten?r.push.apply(r,c):r.push({scopeParent:i,candidates:c})}else{var h=ae.call(i,ke);h&&n.filter(i)&&(t||!e.includes(i))&&r.push(i);var m=i.shadowRoot||typeof n.getShadowRoot=="function"&&n.getShadowRoot(i),p=!Fe(m,!1)&&(!n.shadowRootFilter||n.shadowRootFilter(i));if(m&&p){var b=Re(m===!0?i.children:m.children,!0,n);n.flatten?r.push.apply(r,b):r.push({scopeParent:i,candidates:b})}else s.unshift.apply(s,i.children)}}return r},wt=function(e){return!isNaN(parseInt(e.getAttribute("tabindex"),10))},se=function(e){if(!e)throw new Error("No node provided");return e.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||cn(e))&&!wt(e)?0:e.tabIndex},un=function(e,t){var n=se(e);return n<0&&t&&!wt(e)?0:n},dn=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},St=function(e){return e.tagName==="INPUT"},fn=function(e){return St(e)&&e.type==="hidden"},hn=function(e){var t=e.tagName==="DETAILS"&&Array.prototype.slice.apply(e.children).some(function(n){return n.tagName==="SUMMARY"});return t},vn=function(e,t){for(var n=0;n<e.length;n++)if(e[n].checked&&e[n].form===t)return e[n]},pn=function(e){if(!e.name)return!0;var t=e.form||Ne(e),n=function(o){return t.querySelectorAll('input[type="radio"][name="'+o+'"]')},r;if(typeof window<"u"&&typeof window.CSS<"u"&&typeof window.CSS.escape=="function")r=n(window.CSS.escape(e.name));else try{r=n(e.name)}catch(i){return console.error("Looks like you have a radio button with a name attribute containing invalid CSS selector characters and need the CSS.escape polyfill: %s",i.message),!1}var s=vn(r,e.form);return!s||s===e},mn=function(e){return St(e)&&e.type==="radio"},gn=function(e){return mn(e)&&!pn(e)},bn=function(e){var t,n=e&&Ne(e),r=(t=n)===null||t===void 0?void 0:t.host,s=!1;if(n&&n!==e){var i,o,l;for(s=!!((i=r)!==null&&i!==void 0&&(o=i.ownerDocument)!==null&&o!==void 0&&o.contains(r)||e!=null&&(l=e.ownerDocument)!==null&&l!==void 0&&l.contains(e));!s&&r;){var c,h,m;n=Ne(r),r=(c=n)===null||c===void 0?void 0:c.host,s=!!((h=r)!==null&&h!==void 0&&(m=h.ownerDocument)!==null&&m!==void 0&&m.contains(r))}}return s},lt=function(e){var t=e.getBoundingClientRect(),n=t.width,r=t.height;return n===0&&r===0},yn=function(e,t){var n=t.displayCheck,r=t.getShadowRoot;if(n==="full-native"&&"checkVisibility"in e){var s=e.checkVisibility({checkOpacity:!1,opacityProperty:!1,contentVisibilityAuto:!0,visibilityProperty:!0,checkVisibilityCSS:!0});return!s}var i=getComputedStyle(e),o=i.visibility;if(o==="hidden"||o==="collapse")return!0;var l=ae.call(e,"details>summary:first-of-type"),c=l?e.parentElement:e;if(ae.call(c,"details:not([open]) *"))return!0;if(!n||n==="full"||n==="full-native"||n==="legacy-full"){if(typeof r=="function"){for(var h=e;e;){var m=e.parentElement,p=Ne(e);if(m&&!m.shadowRoot&&r(m)===!0)return lt(e);e.assignedSlot?e=e.assignedSlot:!m&&p!==e.ownerDocument?e=p.host:e=m}e=h}if(bn(e))return!e.getClientRects().length;if(n!=="legacy-full")return!0}else if(n==="non-zero-area")return lt(e);return!1},wn=function(e){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(e.tagName))for(var t=e.parentElement;t;){if(t.tagName==="FIELDSET"&&t.disabled){for(var n=0;n<t.children.length;n++){var r=t.children.item(n);if(r.tagName==="LEGEND")return ae.call(t,"fieldset[disabled] *")?!0:!r.contains(e)}return!0}t=t.parentElement}return!1},Oe=function(e,t){return!(t.disabled||fn(t)||yn(t,e)||hn(t)||wn(t))},We=function(e,t){return!(gn(t)||se(t)<0||!Oe(e,t))},Sn=function(e){var t=parseInt(e.getAttribute("tabindex"),10);return!!(isNaN(t)||t>=0)},xt=function(e){var t=[],n=[];return e.forEach(function(r,s){var i=!!r.scopeParent,o=i?r.scopeParent:r,l=un(o,i),c=i?xt(r.candidates):o;l===0?i?t.push.apply(t,c):t.push(o):n.push({documentOrder:s,tabIndex:l,item:r,isScope:i,content:c})}),n.sort(dn).reduce(function(r,s){return s.isScope?r.push.apply(r,s.content):r.push(s.content),r},[]).concat(t)},xn=function(e,t){t=t||{};var n;return t.getShadowRoot?n=Re([e],t.includeContainer,{filter:We.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:Sn}):n=yt(e,t.includeContainer,We.bind(null,t)),xt(n)},_n=function(e,t){t=t||{};var n;return t.getShadowRoot?n=Re([e],t.includeContainer,{filter:Oe.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):n=yt(e,t.includeContainer,Oe.bind(null,t)),n},oe=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ae.call(e,ke)===!1?!1:We(t,e)},Tn=gt.concat("iframe:not([inert]):not([inert] *)").join(","),De=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ae.call(e,Tn)===!1?!1:Oe(t,e)};/*!
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/chunks/VPLocalSearchBox.DNmhkkfS.js","assets/chunks/framework.B9qR_F1m.js"])))=>i.map(i=>d[i]);
2
- import{d as k,c as u,r as d,n as w,o,a as q,t as S,b as g,w as h,T as ve,e as p,_ as y,u as Ee,i as Fe,f as De,g as U,h as P,j as l,k as i,l as W,m as le,p as T,q as F,s as Q,v as D,x as fe,y as he,z as Oe,A as Ge,F as x,B as M,C as z,D as Z,E as b,G as Le,H as B,I as Ve,J as ee,K as j,L as te,M as Ue,N as Se,O as re,P as Te,Q as xe,R as ne,S as je,U as qe,V as We,W as Ne,X as we,Y as ze,Z as Ke,$ as Re,a0 as Je,a1 as Ye,a2 as $e}from"./framework.B9qR_F1m.js";const Xe=k({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(e){return(t,n)=>(o(),u("span",{class:w(["VPBadge",e.type])},[d(t.$slots,"default",{},()=>[q(S(e.text),1)])],2))}}),Qe={key:0,class:"VPBackdrop"},Ze=k({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(e){return(t,n)=>(o(),g(ve,{name:"fade"},{default:h(()=>[e.show?(o(),u("div",Qe)):p("",!0)]),_:1}))}}),et=y(Ze,[["__scopeId","data-v-54a304ca"]]),V=Ee;function tt(e,t){let n,s=!1;return()=>{n&&clearTimeout(n),s?n=setTimeout(e,t):(e(),(s=!0)&&setTimeout(()=>s=!1,t))}}function ce(e){return e.startsWith("/")?e:`/${e}`}function me(e){const{pathname:t,search:n,hash:s,protocol:a}=new URL(e,"http://a.com");if(Fe(e)||e.startsWith("#")||!a.startsWith("http")||!De(t))return e;const{site:r}=V(),c=t.endsWith("/")||t.endsWith(".html")?e:e.replace(/(?:(^\.+)\/)?.*$/,`$1${t.replace(/(\.md)?$/,r.value.cleanUrls?"":".html")}${n}${s}`);return U(c)}function R({correspondingLink:e=!1}={}){const{site:t,localeIndex:n,page:s,theme:a,hash:r}=V(),c=P(()=>{var v,m;return{label:(v=t.value.locales[n.value])==null?void 0:v.label,link:((m=t.value.locales[n.value])==null?void 0:m.link)||(n.value==="root"?"/":`/${n.value}/`)}});return{localeLinks:P(()=>Object.entries(t.value.locales).flatMap(([v,m])=>c.value.label===m.label?[]:{text:m.label,link:nt(m.link||(v==="root"?"/":`/${v}/`),a.value.i18nRouting!==!1&&e,s.value.relativePath.slice(c.value.link.length-1),!t.value.cleanUrls)+r.value})),currentLang:c}}function nt(e,t,n,s){return t?e.replace(/\/$/,"")+ce(n.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,s?".html":"")):e}const st={class:"NotFound"},at={class:"code"},ot={class:"title"},it={class:"quote"},lt={class:"action"},rt=["href","aria-label"],ct=k({__name:"NotFound",setup(e){const{theme:t}=V(),{currentLang:n}=R();return(s,a)=>{var r,c,f,v,m;return o(),u("div",st,[l("p",at,S(((r=i(t).notFound)==null?void 0:r.code)??"404"),1),l("h1",ot,S(((c=i(t).notFound)==null?void 0:c.title)??"PAGE NOT FOUND"),1),a[0]||(a[0]=l("div",{class:"divider"},null,-1)),l("blockquote",it,S(((f=i(t).notFound)==null?void 0:f.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),l("div",lt,[l("a",{class:"link",href:i(U)(i(n).link),"aria-label":((v=i(t).notFound)==null?void 0:v.linkLabel)??"go to home"},S(((m=i(t).notFound)==null?void 0:m.linkText)??"Take me home"),9,rt)])])}}}),ut=y(ct,[["__scopeId","data-v-6ff51ddd"]]);function Ie(e,t){if(Array.isArray(e))return Y(e);if(e==null)return[];t=ce(t);const n=Object.keys(e).sort((a,r)=>r.split("/").length-a.split("/").length).find(a=>t.startsWith(ce(a))),s=n?e[n]:[];return Array.isArray(s)?Y(s):Y(s.items,s.base)}function dt(e){const t=[];let n=0;for(const s in e){const a=e[s];if(a.items){n=t.push(a);continue}t[n]||t.push({items:[]}),t[n].items.push(a)}return t}function vt(e){const t=[];function n(s){for(const a of s)a.text&&a.link&&t.push({text:a.text,link:a.link,docFooterText:a.docFooterText}),a.items&&n(a.items)}return n(e),t}function ue(e,t){return Array.isArray(t)?t.some(n=>ue(e,n)):W(e,t.link)?!0:t.items?ue(e,t.items):!1}function Y(e,t){return[...e].map(n=>{const s={...n},a=s.base||t;return a&&s.link&&(s.link=a+s.link),s.items&&(s.items=Y(s.items,a)),s})}function O(){const{frontmatter:e,page:t,theme:n}=V(),s=le("(min-width: 960px)"),a=T(!1),r=P(()=>{const C=n.value.sidebar,A=t.value.relativePath;return C?Ie(C,A):[]}),c=T(r.value);F(r,(C,A)=>{JSON.stringify(C)!==JSON.stringify(A)&&(c.value=r.value)});const f=P(()=>e.value.sidebar!==!1&&c.value.length>0&&e.value.layout!=="home"),v=P(()=>m?e.value.aside==null?n.value.aside==="left":e.value.aside==="left":!1),m=P(()=>e.value.layout==="home"?!1:e.value.aside!=null?!!e.value.aside:n.value.aside!==!1),_=P(()=>f.value&&s.value),$=P(()=>f.value?dt(c.value):[]);function L(){a.value=!0}function N(){a.value=!1}function I(){a.value?N():L()}return{isOpen:a,sidebar:c,sidebarGroups:$,hasSidebar:f,hasAside:m,leftAside:v,isSidebarEnabled:_,open:L,close:N,toggle:I}}function ft(e,t){let n;Q(()=>{n=e.value?document.activeElement:void 0}),D(()=>{window.addEventListener("keyup",s)}),fe(()=>{window.removeEventListener("keyup",s)});function s(a){a.key==="Escape"&&e.value&&(t(),n==null||n.focus())}}function ht(e){const{page:t,hash:n}=V(),s=T(!1),a=P(()=>e.value.collapsed!=null),r=P(()=>!!e.value.link),c=T(!1),f=()=>{c.value=W(t.value.relativePath,e.value.link)};F([t,e,n],f),D(f);const v=P(()=>c.value?!0:e.value.items?ue(t.value.relativePath,e.value.items):!1),m=P(()=>!!(e.value.items&&e.value.items.length));Q(()=>{s.value=!!(a.value&&e.value.collapsed)}),he(()=>{(c.value||v.value)&&(s.value=!1)});function _(){a.value&&(s.value=!s.value)}return{collapsed:s,collapsible:a,isLink:r,isActiveLink:c,hasActiveLink:v,hasChildren:m,toggle:_}}function mt(){const{hasSidebar:e}=O(),t=le("(min-width: 960px)"),n=le("(min-width: 1280px)");return{isAsideEnabled:P(()=>!n.value&&!t.value?!1:e.value?n.value:t.value)}}const pt=/\b(?:VPBadge|header-anchor|footnote-ref|ignore-header)\b/,de=[];function Me(e){return typeof e.outline=="object"&&!Array.isArray(e.outline)&&e.outline.label||e.outlineTitle||"On this page"}function pe(e){const t=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(n=>n.id&&n.hasChildNodes()).map(n=>{const s=Number(n.tagName[1]);return{element:n,title:kt(n),link:"#"+n.id,level:s}});return _t(t,e)}function kt(e){let t="";for(const n of e.childNodes)if(n.nodeType===1){if(pt.test(n.className))continue;t+=n.textContent}else n.nodeType===3&&(t+=n.textContent);return t.trim()}function _t(e,t){if(t===!1)return[];const n=(typeof t=="object"&&!Array.isArray(t)?t.level:t)||2,[s,a]=typeof n=="number"?[n,n]:n==="deep"?[2,6]:n;return $t(e,s,a)}function bt(e,t){const{isAsideEnabled:n}=mt(),s=tt(r,100);let a=null;D(()=>{requestAnimationFrame(r),window.addEventListener("scroll",s)}),Oe(()=>{c(location.hash)}),fe(()=>{window.removeEventListener("scroll",s)});function r(){if(!n.value)return;const f=window.scrollY,v=window.innerHeight,m=document.body.offsetHeight,_=Math.abs(f+v-m)<1,$=de.map(({element:N,link:I})=>({link:I,top:gt(N)})).filter(({top:N})=>!Number.isNaN(N)).sort((N,I)=>N.top-I.top);if(!$.length){c(null);return}if(f<1){c(null);return}if(_){c($[$.length-1].link);return}let L=null;for(const{link:N,top:I}of $){if(I>f+Ge()+4)break;L=N}c(L)}function c(f){a&&a.classList.remove("active"),f==null?a=null:a=e.value.querySelector(`a[href="${decodeURIComponent(f)}"]`);const v=a;v?(v.classList.add("active"),t.value.style.top=v.offsetTop+39+"px",t.value.style.opacity="1"):(t.value.style.top="33px",t.value.style.opacity="0")}}function gt(e){let t=0;for(;e!==document.body;){if(e===null)return NaN;t+=e.offsetTop,e=e.offsetParent}return t}function $t(e,t,n){de.length=0;const s=[],a=[];return e.forEach(r=>{const c={...r,children:[]};let f=a[a.length-1];for(;f&&f.level>=c.level;)a.pop(),f=a[a.length-1];if(c.element.classList.contains("ignore-header")||f&&"shouldIgnore"in f){a.push({level:c.level,shouldIgnore:!0});return}c.level>n||c.level<t||(de.push({element:c.element,link:c.link}),f?f.children.push(c):s.push(c),a.push(c))}),s}const yt=["href","title"],Pt=k({__name:"VPDocOutlineItem",props:{headers:{},root:{type:Boolean}},setup(e){function t({target:n}){const s=n.href.split("#")[1],a=document.getElementById(decodeURIComponent(s));a==null||a.focus({preventScroll:!0})}return(n,s)=>{const a=z("VPDocOutlineItem",!0);return o(),u("ul",{class:w(["VPDocOutlineItem",e.root?"root":"nested"])},[(o(!0),u(x,null,M(e.headers,({children:r,link:c,title:f})=>(o(),u("li",null,[l("a",{class:"outline-link",href:c,onClick:t,title:f},S(f),9,yt),r!=null&&r.length?(o(),g(a,{key:0,headers:r},null,8,["headers"])):p("",!0)]))),256))],2)}}}),Ce=y(Pt,[["__scopeId","data-v-53c99d69"]]),Lt={class:"content"},Vt={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},St=k({__name:"VPDocAsideOutline",setup(e){const{frontmatter:t,theme:n}=V(),s=Le([]);Z(()=>{s.value=pe(t.value.outline??n.value.outline)});const a=T(),r=T();return bt(a,r),(c,f)=>(o(),u("nav",{"aria-labelledby":"doc-outline-aria-label",class:w(["VPDocAsideOutline",{"has-outline":s.value.length>0}]),ref_key:"container",ref:a},[l("div",Lt,[l("div",{class:"outline-marker",ref_key:"marker",ref:r},null,512),l("div",Vt,S(i(Me)(i(n))),1),b(Ce,{headers:s.value,root:!0},null,8,["headers"])])],2))}}),Tt=y(St,[["__scopeId","data-v-f610f197"]]),xt={class:"VPDocAsideCarbonAds"},Nt=k({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(e){const t=()=>null;return(n,s)=>(o(),u("div",xt,[b(i(t),{"carbon-ads":e.carbonAds},null,8,["carbon-ads"])]))}}),wt={class:"VPDocAside"},It=k({__name:"VPDocAside",setup(e){const{theme:t}=V();return(n,s)=>(o(),u("div",wt,[d(n.$slots,"aside-top",{},void 0,!0),d(n.$slots,"aside-outline-before",{},void 0,!0),b(Tt),d(n.$slots,"aside-outline-after",{},void 0,!0),s[0]||(s[0]=l("div",{class:"spacer"},null,-1)),d(n.$slots,"aside-ads-before",{},void 0,!0),i(t).carbonAds?(o(),g(Nt,{key:0,"carbon-ads":i(t).carbonAds},null,8,["carbon-ads"])):p("",!0),d(n.$slots,"aside-ads-after",{},void 0,!0),d(n.$slots,"aside-bottom",{},void 0,!0)]))}}),Mt=y(It,[["__scopeId","data-v-cb998dce"]]);function Ct(){const{theme:e,page:t}=V();return P(()=>{const{text:n="Edit this page",pattern:s=""}=e.value.editLink||{};let a;return typeof s=="function"?a=s(t.value):a=s.replace(/:path/g,t.value.filePath),{url:a,text:n}})}function At(){const{page:e,theme:t,frontmatter:n}=V();return P(()=>{var m,_,$,L,N,I,C,A;const s=Ie(t.value.sidebar,e.value.relativePath),a=vt(s),r=Ht(a,H=>H.link.replace(/[?#].*$/,"")),c=r.findIndex(H=>W(e.value.relativePath,H.link)),f=((m=t.value.docFooter)==null?void 0:m.prev)===!1&&!n.value.prev||n.value.prev===!1,v=((_=t.value.docFooter)==null?void 0:_.next)===!1&&!n.value.next||n.value.next===!1;return{prev:f?void 0:{text:(typeof n.value.prev=="string"?n.value.prev:typeof n.value.prev=="object"?n.value.prev.text:void 0)??(($=r[c-1])==null?void 0:$.docFooterText)??((L=r[c-1])==null?void 0:L.text),link:(typeof n.value.prev=="object"?n.value.prev.link:void 0)??((N=r[c-1])==null?void 0:N.link)},next:v?void 0:{text:(typeof n.value.next=="string"?n.value.next:typeof n.value.next=="object"?n.value.next.text:void 0)??((I=r[c+1])==null?void 0:I.docFooterText)??((C=r[c+1])==null?void 0:C.text),link:(typeof n.value.next=="object"?n.value.next.link:void 0)??((A=r[c+1])==null?void 0:A.link)}}})}function Ht(e,t){const n=new Set;return e.filter(s=>{const a=t(s);return n.has(a)?!1:n.add(a)})}const E=k({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(e){const t=e,n=P(()=>t.tag??(t.href?"a":"span")),s=P(()=>t.href&&Ve.test(t.href)||t.target==="_blank");return(a,r)=>(o(),g(B(n.value),{class:w(["VPLink",{link:e.href,"vp-external-link-icon":s.value,"no-icon":e.noIcon}]),href:e.href?i(me)(e.href):void 0,target:e.target??(s.value?"_blank":void 0),rel:e.rel??(s.value?"noreferrer":void 0)},{default:h(()=>[d(a.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),Bt={class:"VPLastUpdated"},Et=["datetime"],Ft=k({__name:"VPDocFooterLastUpdated",setup(e){const{theme:t,page:n,lang:s}=V(),a=P(()=>new Date(n.value.lastUpdated)),r=P(()=>a.value.toISOString()),c=T("");return D(()=>{Q(()=>{var f,v,m;c.value=new Intl.DateTimeFormat((v=(f=t.value.lastUpdated)==null?void 0:f.formatOptions)!=null&&v.forceLocale?s.value:void 0,((m=t.value.lastUpdated)==null?void 0:m.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(a.value)})}),(f,v)=>{var m;return o(),u("p",Bt,[q(S(((m=i(t).lastUpdated)==null?void 0:m.text)||i(t).lastUpdatedText||"Last updated")+": ",1),l("time",{datetime:r.value},S(c.value),9,Et)])}}}),Dt=y(Ft,[["__scopeId","data-v-1bb0c8a8"]]),Ot={key:0,class:"VPDocFooter"},Gt={key:0,class:"edit-info"},Ut={key:0,class:"edit-link"},jt={key:1,class:"last-updated"},qt={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},Wt={class:"pager"},zt=["innerHTML"],Kt=["innerHTML"],Rt={class:"pager"},Jt=["innerHTML"],Yt=["innerHTML"],Xt=k({__name:"VPDocFooter",setup(e){const{theme:t,page:n,frontmatter:s}=V(),a=Ct(),r=At(),c=P(()=>t.value.editLink&&s.value.editLink!==!1),f=P(()=>n.value.lastUpdated),v=P(()=>c.value||f.value||r.value.prev||r.value.next);return(m,_)=>{var $,L,N,I;return v.value?(o(),u("footer",Ot,[d(m.$slots,"doc-footer-before",{},void 0,!0),c.value||f.value?(o(),u("div",Gt,[c.value?(o(),u("div",Ut,[b(E,{class:"edit-link-button",href:i(a).url,"no-icon":!0},{default:h(()=>[_[0]||(_[0]=l("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),q(" "+S(i(a).text),1)]),_:1},8,["href"])])):p("",!0),f.value?(o(),u("div",jt,[b(Dt)])):p("",!0)])):p("",!0),($=i(r).prev)!=null&&$.link||(L=i(r).next)!=null&&L.link?(o(),u("nav",qt,[_[1]||(_[1]=l("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),l("div",Wt,[(N=i(r).prev)!=null&&N.link?(o(),g(E,{key:0,class:"pager-link prev",href:i(r).prev.link},{default:h(()=>{var C;return[l("span",{class:"desc",innerHTML:((C=i(t).docFooter)==null?void 0:C.prev)||"Previous page"},null,8,zt),l("span",{class:"title",innerHTML:i(r).prev.text},null,8,Kt)]}),_:1},8,["href"])):p("",!0)]),l("div",Rt,[(I=i(r).next)!=null&&I.link?(o(),g(E,{key:0,class:"pager-link next",href:i(r).next.link},{default:h(()=>{var C;return[l("span",{class:"desc",innerHTML:((C=i(t).docFooter)==null?void 0:C.next)||"Next page"},null,8,Jt),l("span",{class:"title",innerHTML:i(r).next.text},null,8,Yt)]}),_:1},8,["href"])):p("",!0)])])):p("",!0)])):p("",!0)}}}),Qt=y(Xt,[["__scopeId","data-v-1bcd8184"]]),Zt={class:"container"},en={class:"aside-container"},tn={class:"aside-content"},nn={class:"content"},sn={class:"content-container"},an={class:"main"},on=k({__name:"VPDoc",setup(e){const{theme:t}=V(),n=ee(),{hasSidebar:s,hasAside:a,leftAside:r}=O(),c=P(()=>n.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(f,v)=>{const m=z("Content");return o(),u("div",{class:w(["VPDoc",{"has-sidebar":i(s),"has-aside":i(a)}])},[d(f.$slots,"doc-top",{},void 0,!0),l("div",Zt,[i(a)?(o(),u("div",{key:0,class:w(["aside",{"left-aside":i(r)}])},[v[0]||(v[0]=l("div",{class:"aside-curtain"},null,-1)),l("div",en,[l("div",tn,[b(Mt,null,{"aside-top":h(()=>[d(f.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":h(()=>[d(f.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":h(()=>[d(f.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":h(()=>[d(f.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":h(()=>[d(f.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":h(()=>[d(f.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):p("",!0),l("div",nn,[l("div",sn,[d(f.$slots,"doc-before",{},void 0,!0),l("main",an,[b(m,{class:w(["vp-doc",[c.value,i(t).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),b(Qt,null,{"doc-footer-before":h(()=>[d(f.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),d(f.$slots,"doc-after",{},void 0,!0)])])]),d(f.$slots,"doc-bottom",{},void 0,!0)],2)}}}),ln=y(on,[["__scopeId","data-v-e6f2a212"]]),rn=k({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(e){const t=e,n=P(()=>t.href&&Ve.test(t.href)),s=P(()=>t.tag||(t.href?"a":"button"));return(a,r)=>(o(),g(B(s.value),{class:w(["VPButton",[e.size,e.theme]]),href:e.href?i(me)(e.href):void 0,target:t.target??(n.value?"_blank":void 0),rel:t.rel??(n.value?"noreferrer":void 0)},{default:h(()=>[q(S(e.text),1)]),_:1},8,["class","href","target","rel"]))}}),cn=y(rn,[["__scopeId","data-v-93dc4167"]]),un=["src","alt"],dn=k({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(e){return(t,n)=>{const s=z("VPImage",!0);return e.image?(o(),u(x,{key:0},[typeof e.image=="string"||"src"in e.image?(o(),u("img",j({key:0,class:"VPImage"},typeof e.image=="string"?t.$attrs:{...e.image,...t.$attrs},{src:i(U)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,un)):(o(),u(x,{key:1},[b(s,j({class:"dark",image:e.image.dark,alt:e.image.alt},t.$attrs),null,16,["image","alt"]),b(s,j({class:"light",image:e.image.light,alt:e.image.alt},t.$attrs),null,16,["image","alt"])],64))],64)):p("",!0)}}}),X=y(dn,[["__scopeId","data-v-ab19afbb"]]),vn={class:"container"},fn={class:"main"},hn={class:"heading"},mn=["innerHTML"],pn=["innerHTML"],kn=["innerHTML"],_n={key:0,class:"actions"},bn={key:0,class:"image"},gn={class:"image-container"},$n=k({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(e){const t=te("hero-image-slot-exists");return(n,s)=>(o(),u("div",{class:w(["VPHero",{"has-image":e.image||i(t)}])},[l("div",vn,[l("div",fn,[d(n.$slots,"home-hero-info-before",{},void 0,!0),d(n.$slots,"home-hero-info",{},()=>[l("h1",hn,[e.name?(o(),u("span",{key:0,innerHTML:e.name,class:"name clip"},null,8,mn)):p("",!0),e.text?(o(),u("span",{key:1,innerHTML:e.text,class:"text"},null,8,pn)):p("",!0)]),e.tagline?(o(),u("p",{key:0,innerHTML:e.tagline,class:"tagline"},null,8,kn)):p("",!0)],!0),d(n.$slots,"home-hero-info-after",{},void 0,!0),e.actions?(o(),u("div",_n,[(o(!0),u(x,null,M(e.actions,a=>(o(),u("div",{key:a.link,class:"action"},[b(cn,{tag:"a",size:"medium",theme:a.theme,text:a.text,href:a.link,target:a.target,rel:a.rel},null,8,["theme","text","href","target","rel"])]))),128))])):p("",!0),d(n.$slots,"home-hero-actions-after",{},void 0,!0)]),e.image||i(t)?(o(),u("div",bn,[l("div",gn,[s[0]||(s[0]=l("div",{class:"image-bg"},null,-1)),d(n.$slots,"home-hero-image",{},()=>[e.image?(o(),g(X,{key:0,class:"image-src",image:e.image},null,8,["image"])):p("",!0)],!0)])])):p("",!0)])],2))}}),yn=y($n,[["__scopeId","data-v-dd8814ff"]]),Pn=k({__name:"VPHomeHero",setup(e){const{frontmatter:t}=V();return(n,s)=>i(t).hero?(o(),g(yn,{key:0,class:"VPHomeHero",name:i(t).hero.name,text:i(t).hero.text,tagline:i(t).hero.tagline,image:i(t).hero.image,actions:i(t).hero.actions},{"home-hero-info-before":h(()=>[d(n.$slots,"home-hero-info-before")]),"home-hero-info":h(()=>[d(n.$slots,"home-hero-info")]),"home-hero-info-after":h(()=>[d(n.$slots,"home-hero-info-after")]),"home-hero-actions-after":h(()=>[d(n.$slots,"home-hero-actions-after")]),"home-hero-image":h(()=>[d(n.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):p("",!0)}}),Ln={class:"box"},Vn={key:0,class:"icon"},Sn=["innerHTML"],Tn=["innerHTML"],xn=["innerHTML"],Nn={key:4,class:"link-text"},wn={class:"link-text-value"},In=k({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(e){return(t,n)=>(o(),g(E,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:h(()=>[l("article",Ln,[typeof e.icon=="object"&&e.icon.wrap?(o(),u("div",Vn,[b(X,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(o(),g(X,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(o(),u("div",{key:2,class:"icon",innerHTML:e.icon},null,8,Sn)):p("",!0),l("h2",{class:"title",innerHTML:e.title},null,8,Tn),e.details?(o(),u("p",{key:3,class:"details",innerHTML:e.details},null,8,xn)):p("",!0),e.linkText?(o(),u("div",Nn,[l("p",wn,[q(S(e.linkText)+" ",1),n[0]||(n[0]=l("span",{class:"vpi-arrow-right link-text-icon"},null,-1))])])):p("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),Mn=y(In,[["__scopeId","data-v-bd37d1a2"]]),Cn={key:0,class:"VPFeatures"},An={class:"container"},Hn={class:"items"},Bn=k({__name:"VPFeatures",props:{features:{}},setup(e){const t=e,n=P(()=>{const s=t.features.length;if(s){if(s===2)return"grid-2";if(s===3)return"grid-3";if(s%3===0)return"grid-6";if(s>3)return"grid-4"}else return});return(s,a)=>e.features?(o(),u("div",Cn,[l("div",An,[l("div",Hn,[(o(!0),u(x,null,M(e.features,r=>(o(),u("div",{key:r.title,class:w(["item",[n.value]])},[b(Mn,{icon:r.icon,title:r.title,details:r.details,link:r.link,"link-text":r.linkText,rel:r.rel,target:r.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):p("",!0)}}),En=y(Bn,[["__scopeId","data-v-b1eea84a"]]),Fn=k({__name:"VPHomeFeatures",setup(e){const{frontmatter:t}=V();return(n,s)=>i(t).features?(o(),g(En,{key:0,class:"VPHomeFeatures",features:i(t).features},null,8,["features"])):p("",!0)}}),Dn=k({__name:"VPHomeContent",setup(e){const{width:t}=Ue({initialWidth:0,includeScrollbar:!1});return(n,s)=>(o(),u("div",{class:"vp-doc container",style:Se(i(t)?{"--vp-offset":`calc(50% - ${i(t)/2}px)`}:{})},[d(n.$slots,"default",{},void 0,!0)],4))}}),On=y(Dn,[["__scopeId","data-v-c141a4bd"]]),Gn=k({__name:"VPHome",setup(e){const{frontmatter:t,theme:n}=V();return(s,a)=>{const r=z("Content");return o(),u("div",{class:w(["VPHome",{"external-link-icon-enabled":i(n).externalLinkIcon}])},[d(s.$slots,"home-hero-before",{},void 0,!0),b(Pn,null,{"home-hero-info-before":h(()=>[d(s.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":h(()=>[d(s.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":h(()=>[d(s.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":h(()=>[d(s.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":h(()=>[d(s.$slots,"home-hero-image",{},void 0,!0)]),_:3}),d(s.$slots,"home-hero-after",{},void 0,!0),d(s.$slots,"home-features-before",{},void 0,!0),b(Fn),d(s.$slots,"home-features-after",{},void 0,!0),i(t).markdownStyles!==!1?(o(),g(On,{key:0},{default:h(()=>[b(r)]),_:1})):(o(),g(r,{key:1}))],2)}}}),Un=y(Gn,[["__scopeId","data-v-e07eaea7"]]),jn={},qn={class:"VPPage"};function Wn(e,t){const n=z("Content");return o(),u("div",qn,[d(e.$slots,"page-top"),b(n),d(e.$slots,"page-bottom")])}const zn=y(jn,[["render",Wn]]),Kn=k({__name:"VPContent",setup(e){const{page:t,frontmatter:n}=V(),{hasSidebar:s}=O();return(a,r)=>(o(),u("div",{class:w(["VPContent",{"has-sidebar":i(s),"is-home":i(n).layout==="home"}]),id:"VPContent"},[i(t).isNotFound?d(a.$slots,"not-found",{},()=>[b(ut)],!0,0):i(n).layout==="page"?(o(),g(zn,{key:1},{"page-top":h(()=>[d(a.$slots,"page-top",{},void 0,!0)]),"page-bottom":h(()=>[d(a.$slots,"page-bottom",{},void 0,!0)]),_:3})):i(n).layout==="home"?(o(),g(Un,{key:2},{"home-hero-before":h(()=>[d(a.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":h(()=>[d(a.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":h(()=>[d(a.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":h(()=>[d(a.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":h(()=>[d(a.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":h(()=>[d(a.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":h(()=>[d(a.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":h(()=>[d(a.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":h(()=>[d(a.$slots,"home-features-after",{},void 0,!0)]),_:3})):i(n).layout&&i(n).layout!=="doc"?(o(),g(B(i(n).layout),{key:3})):(o(),g(ln,{key:4},{"doc-top":h(()=>[d(a.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":h(()=>[d(a.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":h(()=>[d(a.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":h(()=>[d(a.$slots,"doc-before",{},void 0,!0)]),"doc-after":h(()=>[d(a.$slots,"doc-after",{},void 0,!0)]),"aside-top":h(()=>[d(a.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":h(()=>[d(a.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":h(()=>[d(a.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":h(()=>[d(a.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":h(()=>[d(a.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":h(()=>[d(a.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),Rn=y(Kn,[["__scopeId","data-v-9a6c75ad"]]),Jn={class:"container"},Yn=["innerHTML"],Xn=["innerHTML"],Qn=k({__name:"VPFooter",setup(e){const{theme:t,frontmatter:n}=V(),{hasSidebar:s}=O();return(a,r)=>i(t).footer&&i(n).footer!==!1?(o(),u("footer",{key:0,class:w(["VPFooter",{"has-sidebar":i(s)}])},[l("div",Jn,[i(t).footer.message?(o(),u("p",{key:0,class:"message",innerHTML:i(t).footer.message},null,8,Yn)):p("",!0),i(t).footer.copyright?(o(),u("p",{key:1,class:"copyright",innerHTML:i(t).footer.copyright},null,8,Xn)):p("",!0)])],2)):p("",!0)}}),Zn=y(Qn,[["__scopeId","data-v-566314d4"]]);function es(){const{theme:e,frontmatter:t}=V(),n=Le([]),s=P(()=>n.value.length>0);return Z(()=>{n.value=pe(t.value.outline??e.value.outline)}),{headers:n,hasLocalNav:s}}const ts={class:"menu-text"},ns={class:"header"},ss={class:"outline"},as=k({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(e){const t=e,{theme:n}=V(),s=T(!1),a=T(0),r=T(),c=T();function f($){var L;(L=r.value)!=null&&L.contains($.target)||(s.value=!1)}F(s,$=>{if($){document.addEventListener("click",f);return}document.removeEventListener("click",f)}),re("Escape",()=>{s.value=!1}),Z(()=>{s.value=!1});function v(){s.value=!s.value,a.value=window.innerHeight+Math.min(window.scrollY-t.navHeight,0)}function m($){$.target.classList.contains("outline-link")&&(c.value&&(c.value.style.transition="none"),Te(()=>{s.value=!1}))}function _(){s.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return($,L)=>(o(),u("div",{class:"VPLocalNavOutlineDropdown",style:Se({"--vp-vh":a.value+"px"}),ref_key:"main",ref:r},[e.headers.length>0?(o(),u("button",{key:0,onClick:v,class:w({open:s.value})},[l("span",ts,S(i(Me)(i(n))),1),L[0]||(L[0]=l("span",{class:"vpi-chevron-right icon"},null,-1))],2)):(o(),u("button",{key:1,onClick:_},S(i(n).returnToTopLabel||"Return to top"),1)),b(ve,{name:"flyout"},{default:h(()=>[s.value?(o(),u("div",{key:0,ref_key:"items",ref:c,class:"items",onClick:m},[l("div",ns,[l("a",{class:"top-link",href:"#",onClick:_},S(i(n).returnToTopLabel||"Return to top"),1)]),l("div",ss,[b(Ce,{headers:e.headers},null,8,["headers"])])],512)):p("",!0)]),_:1})],4))}}),os=y(as,[["__scopeId","data-v-6b867909"]]),is={class:"container"},ls=["aria-expanded"],rs={class:"menu-text"},cs=k({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(e){const{theme:t,frontmatter:n}=V(),{hasSidebar:s}=O(),{headers:a}=es(),{y:r}=xe(),c=T(0);D(()=>{c.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),Z(()=>{a.value=pe(n.value.outline??t.value.outline)});const f=P(()=>a.value.length===0),v=P(()=>f.value&&!s.value),m=P(()=>({VPLocalNav:!0,"has-sidebar":s.value,empty:f.value,fixed:v.value}));return(_,$)=>i(n).layout!=="home"&&(!v.value||i(r)>=c.value)?(o(),u("div",{key:0,class:w(m.value)},[l("div",is,[i(s)?(o(),u("button",{key:0,class:"menu","aria-expanded":e.open,"aria-controls":"VPSidebarNav",onClick:$[0]||($[0]=L=>_.$emit("open-menu"))},[$[1]||($[1]=l("span",{class:"vpi-align-left menu-icon"},null,-1)),l("span",rs,S(i(t).sidebarMenuLabel||"Menu"),1)],8,ls)):p("",!0),b(os,{headers:i(a),navHeight:c.value},null,8,["headers","navHeight"])])],2)):p("",!0)}}),us=y(cs,[["__scopeId","data-v-2488c25a"]]);function ds(){const e=T(!1);function t(){e.value=!0,window.addEventListener("resize",a)}function n(){e.value=!1,window.removeEventListener("resize",a)}function s(){e.value?n():t()}function a(){window.outerWidth>=768&&n()}const r=ee();return F(()=>r.path,n),{isScreenOpen:e,openScreen:t,closeScreen:n,toggleScreen:s}}const vs={},fs={class:"VPSwitch",type:"button",role:"switch"},hs={class:"check"},ms={key:0,class:"icon"};function ps(e,t){return o(),u("button",fs,[l("span",hs,[e.$slots.default?(o(),u("span",ms,[d(e.$slots,"default",{},void 0,!0)])):p("",!0)])])}const ks=y(vs,[["render",ps],["__scopeId","data-v-b4ccac88"]]),_s=k({__name:"VPSwitchAppearance",setup(e){const{isDark:t,theme:n}=V(),s=te("toggle-appearance",()=>{t.value=!t.value}),a=T("");return he(()=>{a.value=t.value?n.value.lightModeSwitchTitle||"Switch to light theme":n.value.darkModeSwitchTitle||"Switch to dark theme"}),(r,c)=>(o(),g(ks,{title:a.value,class:"VPSwitchAppearance","aria-checked":i(t),onClick:i(s)},{default:h(()=>[...c[0]||(c[0]=[l("span",{class:"vpi-sun sun"},null,-1),l("span",{class:"vpi-moon moon"},null,-1)])]),_:1},8,["title","aria-checked","onClick"]))}}),ke=y(_s,[["__scopeId","data-v-be9742d9"]]),bs={key:0,class:"VPNavBarAppearance"},gs=k({__name:"VPNavBarAppearance",setup(e){const{site:t}=V();return(n,s)=>i(t).appearance&&i(t).appearance!=="force-dark"&&i(t).appearance!=="force-auto"?(o(),u("div",bs,[b(ke)])):p("",!0)}}),$s=y(gs,[["__scopeId","data-v-3f90c1a5"]]),_e=T();let Ae=!1,ie=0;function ys(e){const t=T(!1);if(ne){!Ae&&Ps(),ie++;const n=F(_e,s=>{var a,r,c;s===e.el.value||(a=e.el.value)!=null&&a.contains(s)?(t.value=!0,(r=e.onFocus)==null||r.call(e)):(t.value=!1,(c=e.onBlur)==null||c.call(e))});fe(()=>{n(),ie--,ie||Ls()})}return je(t)}function Ps(){document.addEventListener("focusin",He),Ae=!0,_e.value=document.activeElement}function Ls(){document.removeEventListener("focusin",He)}function He(){_e.value=document.activeElement}const Vs={class:"VPMenuLink"},Ss=["innerHTML"],Ts=k({__name:"VPMenuLink",props:{item:{}},setup(e){const{page:t}=V();return(n,s)=>(o(),u("div",Vs,[b(E,{class:w({active:i(W)(i(t).relativePath,e.item.activeMatch||e.item.link,!!e.item.activeMatch)}),href:e.item.link,target:e.item.target,rel:e.item.rel,"no-icon":e.item.noIcon},{default:h(()=>[l("span",{innerHTML:e.item.text},null,8,Ss)]),_:1},8,["class","href","target","rel","no-icon"])]))}}),se=y(Ts,[["__scopeId","data-v-7eeeb2dc"]]),xs={class:"VPMenuGroup"},Ns={key:0,class:"title"},ws=k({__name:"VPMenuGroup",props:{text:{},items:{}},setup(e){return(t,n)=>(o(),u("div",xs,[e.text?(o(),u("p",Ns,S(e.text),1)):p("",!0),(o(!0),u(x,null,M(e.items,s=>(o(),u(x,null,["link"in s?(o(),g(se,{key:0,item:s},null,8,["item"])):p("",!0)],64))),256))]))}}),Is=y(ws,[["__scopeId","data-v-a6b0397c"]]),Ms={class:"VPMenu"},Cs={key:0,class:"items"},As=k({__name:"VPMenu",props:{items:{}},setup(e){return(t,n)=>(o(),u("div",Ms,[e.items?(o(),u("div",Cs,[(o(!0),u(x,null,M(e.items,s=>(o(),u(x,{key:JSON.stringify(s)},["link"in s?(o(),g(se,{key:0,item:s},null,8,["item"])):"component"in s?(o(),g(B(s.component),j({key:1,ref_for:!0},s.props),null,16)):(o(),g(Is,{key:2,text:s.text,items:s.items},null,8,["text","items"]))],64))),128))])):p("",!0),d(t.$slots,"default",{},void 0,!0)]))}}),Hs=y(As,[["__scopeId","data-v-20ed86d6"]]),Bs=["aria-expanded","aria-label"],Es={key:0,class:"text"},Fs=["innerHTML"],Ds={key:1,class:"vpi-more-horizontal icon"},Os={class:"menu"},Gs=k({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(e){const t=T(!1),n=T();ys({el:n,onBlur:s});function s(){t.value=!1}return(a,r)=>(o(),u("div",{class:"VPFlyout",ref_key:"el",ref:n,onMouseenter:r[1]||(r[1]=c=>t.value=!0),onMouseleave:r[2]||(r[2]=c=>t.value=!1)},[l("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":t.value,"aria-label":e.label,onClick:r[0]||(r[0]=c=>t.value=!t.value)},[e.button||e.icon?(o(),u("span",Es,[e.icon?(o(),u("span",{key:0,class:w([e.icon,"option-icon"])},null,2)):p("",!0),e.button?(o(),u("span",{key:1,innerHTML:e.button},null,8,Fs)):p("",!0),r[3]||(r[3]=l("span",{class:"vpi-chevron-down text-icon"},null,-1))])):(o(),u("span",Ds))],8,Bs),l("div",Os,[b(Hs,{items:e.items},{default:h(()=>[d(a.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),be=y(Gs,[["__scopeId","data-v-bfe7971f"]]),Us=["href","aria-label","innerHTML"],js=k({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(e){const t=e,n=T();D(async()=>{var r;await Te();const a=(r=n.value)==null?void 0:r.children[0];a instanceof HTMLElement&&a.className.startsWith("vpi-social-")&&(getComputedStyle(a).maskImage||getComputedStyle(a).webkitMaskImage)==="none"&&a.style.setProperty("--icon",`url('https://api.iconify.design/simple-icons/${t.icon}.svg')`)});const s=P(()=>typeof t.icon=="object"?t.icon.svg:`<span class="vpi-social-${t.icon}"></span>`);return(a,r)=>(o(),u("a",{ref_key:"el",ref:n,class:"VPSocialLink no-icon",href:e.link,"aria-label":e.ariaLabel??(typeof e.icon=="string"?e.icon:""),target:"_blank",rel:"noopener",innerHTML:s.value},null,8,Us))}}),qs=y(js,[["__scopeId","data-v-60a9a2d3"]]),Ws={class:"VPSocialLinks"},zs=k({__name:"VPSocialLinks",props:{links:{}},setup(e){return(t,n)=>(o(),u("div",Ws,[(o(!0),u(x,null,M(e.links,({link:s,icon:a,ariaLabel:r})=>(o(),g(qs,{key:s,icon:a,link:s,ariaLabel:r},null,8,["icon","link","ariaLabel"]))),128))]))}}),ge=y(zs,[["__scopeId","data-v-e71e869c"]]),Ks={key:0,class:"group translations"},Rs={class:"trans-title"},Js={key:1,class:"group"},Ys={class:"item appearance"},Xs={class:"label"},Qs={class:"appearance-action"},Zs={key:2,class:"group"},ea={class:"item social-links"},ta=k({__name:"VPNavBarExtra",setup(e){const{site:t,theme:n}=V(),{localeLinks:s,currentLang:a}=R({correspondingLink:!0}),r=P(()=>s.value.length&&a.value.label||t.value.appearance||n.value.socialLinks);return(c,f)=>r.value?(o(),g(be,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:h(()=>[i(s).length&&i(a).label?(o(),u("div",Ks,[l("p",Rs,S(i(a).label),1),(o(!0),u(x,null,M(i(s),v=>(o(),g(se,{key:v.link,item:v},null,8,["item"]))),128))])):p("",!0),i(t).appearance&&i(t).appearance!=="force-dark"&&i(t).appearance!=="force-auto"?(o(),u("div",Js,[l("div",Ys,[l("p",Xs,S(i(n).darkModeSwitchLabel||"Appearance"),1),l("div",Qs,[b(ke)])])])):p("",!0),i(n).socialLinks?(o(),u("div",Zs,[l("div",ea,[b(ge,{class:"social-links-list",links:i(n).socialLinks},null,8,["links"])])])):p("",!0)]),_:1})):p("",!0)}}),na=y(ta,[["__scopeId","data-v-f953d92f"]]),sa=["aria-expanded"],aa=k({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(e){return(t,n)=>(o(),u("button",{type:"button",class:w(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:n[0]||(n[0]=s=>t.$emit("click"))},[...n[1]||(n[1]=[l("span",{class:"container"},[l("span",{class:"top"}),l("span",{class:"middle"}),l("span",{class:"bottom"})],-1)])],10,sa))}}),oa=y(aa,[["__scopeId","data-v-6bee1efd"]]),ia=["innerHTML"],la=k({__name:"VPNavBarMenuLink",props:{item:{}},setup(e){const{page:t}=V();return(n,s)=>(o(),g(E,{class:w({VPNavBarMenuLink:!0,active:i(W)(i(t).relativePath,e.item.activeMatch||e.item.link,!!e.item.activeMatch)}),href:e.item.link,target:e.item.target,rel:e.item.rel,"no-icon":e.item.noIcon,tabindex:"0"},{default:h(()=>[l("span",{innerHTML:e.item.text},null,8,ia)]),_:1},8,["class","href","target","rel","no-icon"]))}}),ra=y(la,[["__scopeId","data-v-815115f5"]]),ca=k({__name:"VPNavBarMenuGroup",props:{item:{}},setup(e){const t=e,{page:n}=V(),s=r=>"component"in r?!1:"link"in r?W(n.value.relativePath,r.link,!!t.item.activeMatch):r.items.some(s),a=P(()=>s(t.item));return(r,c)=>(o(),g(be,{class:w({VPNavBarMenuGroup:!0,active:i(W)(i(n).relativePath,e.item.activeMatch,!!e.item.activeMatch)||a.value}),button:e.item.text,items:e.item.items},null,8,["class","button","items"]))}}),ua={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},da=k({__name:"VPNavBarMenu",setup(e){const{theme:t}=V();return(n,s)=>i(t).nav?(o(),u("nav",ua,[s[0]||(s[0]=l("span",{id:"main-nav-aria-label",class:"visually-hidden"}," Main Navigation ",-1)),(o(!0),u(x,null,M(i(t).nav,a=>(o(),u(x,{key:JSON.stringify(a)},["link"in a?(o(),g(ra,{key:0,item:a},null,8,["item"])):"component"in a?(o(),g(B(a.component),j({key:1,ref_for:!0},a.props),null,16)):(o(),g(ca,{key:2,item:a},null,8,["item"]))],64))),128))])):p("",!0)}}),va=y(da,[["__scopeId","data-v-afb2845e"]]);function fa(e){const{localeIndex:t,theme:n}=V();function s(a){var I,C,A;const r=a.split("."),c=(I=n.value.search)==null?void 0:I.options,f=c&&typeof c=="object",v=f&&((A=(C=c.locales)==null?void 0:C[t.value])==null?void 0:A.translations)||null,m=f&&c.translations||null;let _=v,$=m,L=e;const N=r.pop();for(const H of r){let G=null;const K=L==null?void 0:L[H];K&&(G=L=K);const ae=$==null?void 0:$[H];ae&&(G=$=ae);const oe=_==null?void 0:_[H];oe&&(G=_=oe),K||(L=G),ae||($=G),oe||(_=G)}return(_==null?void 0:_[N])??($==null?void 0:$[N])??(L==null?void 0:L[N])??""}return s}const ha=["aria-label"],ma={class:"DocSearch-Button-Container"},pa={class:"DocSearch-Button-Placeholder"},ye=k({__name:"VPNavBarSearchButton",setup(e){const n=fa({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(s,a)=>(o(),u("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":i(n)("button.buttonAriaLabel")},[l("span",ma,[a[0]||(a[0]=l("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1)),l("span",pa,S(i(n)("button.buttonText")),1)]),a[1]||(a[1]=l("span",{class:"DocSearch-Button-Keys"},[l("kbd",{class:"DocSearch-Button-Key"}),l("kbd",{class:"DocSearch-Button-Key"},"K")],-1))],8,ha))}}),ka={class:"VPNavBarSearch"},_a={id:"local-search"},ba={key:1,id:"docsearch"},ga=k({__name:"VPNavBarSearch",setup(e){const t=qe(()=>We(()=>import("./VPLocalSearchBox.DNmhkkfS.js"),__vite__mapDeps([0,1]))),n=()=>null,{theme:s}=V(),a=T(!1),r=T(!1);D(()=>{});function c(){a.value||(a.value=!0,setTimeout(f,16))}function f(){const $=new Event("keydown");$.key="k",$.metaKey=!0,window.dispatchEvent($),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||f()},16)}function v($){const L=$.target,N=L.tagName;return L.isContentEditable||N==="INPUT"||N==="SELECT"||N==="TEXTAREA"}const m=T(!1);re("k",$=>{($.ctrlKey||$.metaKey)&&($.preventDefault(),m.value=!0)}),re("/",$=>{v($)||($.preventDefault(),m.value=!0)});const _="local";return($,L)=>{var N;return o(),u("div",ka,[i(_)==="local"?(o(),u(x,{key:0},[m.value?(o(),g(i(t),{key:0,onClose:L[0]||(L[0]=I=>m.value=!1)})):p("",!0),l("div",_a,[b(ye,{onClick:L[1]||(L[1]=I=>m.value=!0)})])],64)):i(_)==="algolia"?(o(),u(x,{key:1},[a.value?(o(),g(i(n),{key:0,algolia:((N=i(s).search)==null?void 0:N.options)??i(s).algolia,onVnodeBeforeMount:L[2]||(L[2]=I=>r.value=!0)},null,8,["algolia"])):p("",!0),r.value?p("",!0):(o(),u("div",ba,[b(ye,{onClick:c})]))],64)):p("",!0)])}}}),$a=k({__name:"VPNavBarSocialLinks",setup(e){const{theme:t}=V();return(n,s)=>i(t).socialLinks?(o(),g(ge,{key:0,class:"VPNavBarSocialLinks",links:i(t).socialLinks},null,8,["links"])):p("",!0)}}),ya=y($a,[["__scopeId","data-v-ef6192dc"]]),Pa=["href","rel","target"],La=["innerHTML"],Va={key:2},Sa=k({__name:"VPNavBarTitle",setup(e){const{site:t,theme:n}=V(),{hasSidebar:s}=O(),{currentLang:a}=R(),r=P(()=>{var v;return typeof n.value.logoLink=="string"?n.value.logoLink:(v=n.value.logoLink)==null?void 0:v.link}),c=P(()=>{var v;return typeof n.value.logoLink=="string"||(v=n.value.logoLink)==null?void 0:v.rel}),f=P(()=>{var v;return typeof n.value.logoLink=="string"||(v=n.value.logoLink)==null?void 0:v.target});return(v,m)=>(o(),u("div",{class:w(["VPNavBarTitle",{"has-sidebar":i(s)}])},[l("a",{class:"title",href:r.value??i(me)(i(a).link),rel:c.value,target:f.value},[d(v.$slots,"nav-bar-title-before",{},void 0,!0),i(n).logo?(o(),g(X,{key:0,class:"logo",image:i(n).logo},null,8,["image"])):p("",!0),i(n).siteTitle?(o(),u("span",{key:1,innerHTML:i(n).siteTitle},null,8,La)):i(n).siteTitle===void 0?(o(),u("span",Va,S(i(t).title),1)):p("",!0),d(v.$slots,"nav-bar-title-after",{},void 0,!0)],8,Pa)],2))}}),Ta=y(Sa,[["__scopeId","data-v-9f43907a"]]),xa={class:"items"},Na={class:"title"},wa=k({__name:"VPNavBarTranslations",setup(e){const{theme:t}=V(),{localeLinks:n,currentLang:s}=R({correspondingLink:!0});return(a,r)=>i(n).length&&i(s).label?(o(),g(be,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:i(t).langMenuLabel||"Change language"},{default:h(()=>[l("div",xa,[l("p",Na,S(i(s).label),1),(o(!0),u(x,null,M(i(n),c=>(o(),g(se,{key:c.link,item:c},null,8,["item"]))),128))])]),_:1},8,["label"])):p("",!0)}}),Ia=y(wa,[["__scopeId","data-v-acee064b"]]),Ma={class:"wrapper"},Ca={class:"container"},Aa={class:"title"},Ha={class:"content"},Ba={class:"content-body"},Ea=k({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(e){const t=e,{y:n}=xe(),{hasSidebar:s}=O(),{frontmatter:a}=V(),r=T({});return he(()=>{r.value={"has-sidebar":s.value,home:a.value.layout==="home",top:n.value===0,"screen-open":t.isScreenOpen}}),(c,f)=>(o(),u("div",{class:w(["VPNavBar",r.value])},[l("div",Ma,[l("div",Ca,[l("div",Aa,[b(Ta,null,{"nav-bar-title-before":h(()=>[d(c.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":h(()=>[d(c.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),l("div",Ha,[l("div",Ba,[d(c.$slots,"nav-bar-content-before",{},void 0,!0),b(ga,{class:"search"}),b(va,{class:"menu"}),b(Ia,{class:"translations"}),b($s,{class:"appearance"}),b(ya,{class:"social-links"}),b(na,{class:"extra"}),d(c.$slots,"nav-bar-content-after",{},void 0,!0),b(oa,{class:"hamburger",active:e.isScreenOpen,onClick:f[0]||(f[0]=v=>c.$emit("toggle-screen"))},null,8,["active"])])])])]),f[1]||(f[1]=l("div",{class:"divider"},[l("div",{class:"divider-line"})],-1))],2))}}),Fa=y(Ea,[["__scopeId","data-v-9fd4d1dd"]]),Da={key:0,class:"VPNavScreenAppearance"},Oa={class:"text"},Ga=k({__name:"VPNavScreenAppearance",setup(e){const{site:t,theme:n}=V();return(s,a)=>i(t).appearance&&i(t).appearance!=="force-dark"&&i(t).appearance!=="force-auto"?(o(),u("div",Da,[l("p",Oa,S(i(n).darkModeSwitchLabel||"Appearance"),1),b(ke)])):p("",!0)}}),Ua=y(Ga,[["__scopeId","data-v-a3e2920d"]]),ja=["innerHTML"],qa=k({__name:"VPNavScreenMenuLink",props:{item:{}},setup(e){const t=te("close-screen");return(n,s)=>(o(),g(E,{class:"VPNavScreenMenuLink",href:e.item.link,target:e.item.target,rel:e.item.rel,"no-icon":e.item.noIcon,onClick:i(t)},{default:h(()=>[l("span",{innerHTML:e.item.text},null,8,ja)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),Wa=y(qa,[["__scopeId","data-v-fa963d97"]]),za=["innerHTML"],Ka=k({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(e){const t=te("close-screen");return(n,s)=>(o(),g(E,{class:"VPNavScreenMenuGroupLink",href:e.item.link,target:e.item.target,rel:e.item.rel,"no-icon":e.item.noIcon,onClick:i(t)},{default:h(()=>[l("span",{innerHTML:e.item.text},null,8,za)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),Be=y(Ka,[["__scopeId","data-v-e04f3e85"]]),Ra={class:"VPNavScreenMenuGroupSection"},Ja={key:0,class:"title"},Ya=k({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(e){return(t,n)=>(o(),u("div",Ra,[e.text?(o(),u("p",Ja,S(e.text),1)):p("",!0),(o(!0),u(x,null,M(e.items,s=>(o(),g(Be,{key:s.text,item:s},null,8,["item"]))),128))]))}}),Xa=y(Ya,[["__scopeId","data-v-f60dbfa7"]]),Qa=["aria-controls","aria-expanded"],Za=["innerHTML"],eo=["id"],to={key:0,class:"item"},no={key:1,class:"item"},so={key:2,class:"group"},ao=k({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(e){const t=e,n=T(!1),s=P(()=>`NavScreenGroup-${t.text.replace(" ","-").toLowerCase()}`);function a(){n.value=!n.value}return(r,c)=>(o(),u("div",{class:w(["VPNavScreenMenuGroup",{open:n.value}])},[l("button",{class:"button","aria-controls":s.value,"aria-expanded":n.value,onClick:a},[l("span",{class:"button-text",innerHTML:e.text},null,8,Za),c[0]||(c[0]=l("span",{class:"vpi-plus button-icon"},null,-1))],8,Qa),l("div",{id:s.value,class:"items"},[(o(!0),u(x,null,M(e.items,f=>(o(),u(x,{key:JSON.stringify(f)},["link"in f?(o(),u("div",to,[b(Be,{item:f},null,8,["item"])])):"component"in f?(o(),u("div",no,[(o(),g(B(f.component),j({ref_for:!0},f.props,{"screen-menu":""}),null,16))])):(o(),u("div",so,[b(Xa,{text:f.text,items:f.items},null,8,["text","items"])]))],64))),128))],8,eo)],2))}}),oo=y(ao,[["__scopeId","data-v-d99bfeec"]]),io={key:0,class:"VPNavScreenMenu"},lo=k({__name:"VPNavScreenMenu",setup(e){const{theme:t}=V();return(n,s)=>i(t).nav?(o(),u("nav",io,[(o(!0),u(x,null,M(i(t).nav,a=>(o(),u(x,{key:JSON.stringify(a)},["link"in a?(o(),g(Wa,{key:0,item:a},null,8,["item"])):"component"in a?(o(),g(B(a.component),j({key:1,ref_for:!0},a.props,{"screen-menu":""}),null,16)):(o(),g(oo,{key:2,text:a.text||"",items:a.items},null,8,["text","items"]))],64))),128))])):p("",!0)}}),ro=k({__name:"VPNavScreenSocialLinks",setup(e){const{theme:t}=V();return(n,s)=>i(t).socialLinks?(o(),g(ge,{key:0,class:"VPNavScreenSocialLinks",links:i(t).socialLinks},null,8,["links"])):p("",!0)}}),co={class:"list"},uo=k({__name:"VPNavScreenTranslations",setup(e){const{localeLinks:t,currentLang:n}=R({correspondingLink:!0}),s=T(!1);function a(){s.value=!s.value}return(r,c)=>i(t).length&&i(n).label?(o(),u("div",{key:0,class:w(["VPNavScreenTranslations",{open:s.value}])},[l("button",{class:"title",onClick:a},[c[0]||(c[0]=l("span",{class:"vpi-languages icon lang"},null,-1)),q(" "+S(i(n).label)+" ",1),c[1]||(c[1]=l("span",{class:"vpi-chevron-down icon chevron"},null,-1))]),l("ul",co,[(o(!0),u(x,null,M(i(t),f=>(o(),u("li",{key:f.link,class:"item"},[b(E,{class:"link",href:f.link},{default:h(()=>[q(S(f.text),1)]),_:2},1032,["href"])]))),128))])],2)):p("",!0)}}),vo=y(uo,[["__scopeId","data-v-516e4bc3"]]),fo={class:"container"},ho=k({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(e){const t=T(null),n=Ne(ne?document.body:null);return(s,a)=>(o(),g(ve,{name:"fade",onEnter:a[0]||(a[0]=r=>n.value=!0),onAfterLeave:a[1]||(a[1]=r=>n.value=!1)},{default:h(()=>[e.open?(o(),u("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:t,id:"VPNavScreen"},[l("div",fo,[d(s.$slots,"nav-screen-content-before",{},void 0,!0),b(lo,{class:"menu"}),b(vo,{class:"translations"}),b(Ua,{class:"appearance"}),b(ro,{class:"social-links"}),d(s.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):p("",!0)]),_:3}))}}),mo=y(ho,[["__scopeId","data-v-2dd6d0c7"]]),po={key:0,class:"VPNav"},ko=k({__name:"VPNav",setup(e){const{isScreenOpen:t,closeScreen:n,toggleScreen:s}=ds(),{frontmatter:a}=V(),r=P(()=>a.value.navbar!==!1);return we("close-screen",n),Q(()=>{ne&&document.documentElement.classList.toggle("hide-nav",!r.value)}),(c,f)=>r.value?(o(),u("header",po,[b(Fa,{"is-screen-open":i(t),onToggleScreen:i(s)},{"nav-bar-title-before":h(()=>[d(c.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":h(()=>[d(c.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":h(()=>[d(c.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":h(()=>[d(c.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),b(mo,{open:i(t)},{"nav-screen-content-before":h(()=>[d(c.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":h(()=>[d(c.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):p("",!0)}}),_o=y(ko,[["__scopeId","data-v-7ad780c2"]]),bo=["role","tabindex"],go={key:1,class:"items"},$o=k({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(e){const t=e,{collapsed:n,collapsible:s,isLink:a,isActiveLink:r,hasActiveLink:c,hasChildren:f,toggle:v}=ht(P(()=>t.item)),m=P(()=>f.value?"section":"div"),_=P(()=>a.value?"a":"div"),$=P(()=>f.value?t.depth+2===7?"p":`h${t.depth+2}`:"p"),L=P(()=>a.value?void 0:"button"),N=P(()=>[[`level-${t.depth}`],{collapsible:s.value},{collapsed:n.value},{"is-link":a.value},{"is-active":r.value},{"has-active":c.value}]);function I(A){"key"in A&&A.key!=="Enter"||!t.item.link&&v()}function C(){t.item.link&&v()}return(A,H)=>{const G=z("VPSidebarItem",!0);return o(),g(B(m.value),{class:w(["VPSidebarItem",N.value])},{default:h(()=>[e.item.text?(o(),u("div",j({key:0,class:"item",role:L.value},ze(e.item.items?{click:I,keydown:I}:{},!0),{tabindex:e.item.items&&0}),[H[1]||(H[1]=l("div",{class:"indicator"},null,-1)),e.item.link?(o(),g(E,{key:0,tag:_.value,class:"link",href:e.item.link,rel:e.item.rel,target:e.item.target},{default:h(()=>[(o(),g(B($.value),{class:"text",innerHTML:e.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(o(),g(B($.value),{key:1,class:"text",innerHTML:e.item.text},null,8,["innerHTML"])),e.item.collapsed!=null&&e.item.items&&e.item.items.length?(o(),u("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:C,onKeydown:Ke(C,["enter"]),tabindex:"0"},[...H[0]||(H[0]=[l("span",{class:"vpi-chevron-right caret-icon"},null,-1)])],32)):p("",!0)],16,bo)):p("",!0),e.item.items&&e.item.items.length?(o(),u("div",go,[e.depth<5?(o(!0),u(x,{key:0},M(e.item.items,K=>(o(),g(G,{key:K.text,item:K,depth:e.depth+1},null,8,["item","depth"]))),128)):p("",!0)])):p("",!0)]),_:1},8,["class"])}}}),yo=y($o,[["__scopeId","data-v-0009425e"]]),Po=k({__name:"VPSidebarGroup",props:{items:{}},setup(e){const t=T(!0);let n=null;return D(()=>{n=setTimeout(()=>{n=null,t.value=!1},300)}),Re(()=>{n!=null&&(clearTimeout(n),n=null)}),(s,a)=>(o(!0),u(x,null,M(e.items,r=>(o(),u("div",{key:r.text,class:w(["group",{"no-transition":t.value}])},[b(yo,{item:r,depth:0},null,8,["item"])],2))),128))}}),Lo=y(Po,[["__scopeId","data-v-51288d80"]]),Vo={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},So=k({__name:"VPSidebar",props:{open:{type:Boolean}},setup(e){const{sidebarGroups:t,hasSidebar:n}=O(),s=e,a=T(null),r=Ne(ne?document.body:null);F([s,a],()=>{var f;s.open?(r.value=!0,(f=a.value)==null||f.focus()):r.value=!1},{immediate:!0,flush:"post"});const c=T(0);return F(t,()=>{c.value+=1},{deep:!0}),(f,v)=>i(n)?(o(),u("aside",{key:0,class:w(["VPSidebar",{open:e.open}]),ref_key:"navEl",ref:a,onClick:v[0]||(v[0]=Je(()=>{},["stop"]))},[v[2]||(v[2]=l("div",{class:"curtain"},null,-1)),l("nav",Vo,[v[1]||(v[1]=l("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),d(f.$slots,"sidebar-nav-before",{},void 0,!0),(o(),g(Lo,{items:i(t),key:c.value},null,8,["items"])),d(f.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):p("",!0)}}),To=y(So,[["__scopeId","data-v-42c4c606"]]),xo=k({__name:"VPSkipLink",setup(e){const{theme:t}=V(),n=ee(),s=T();F(()=>n.path,()=>s.value.focus());function a({target:r}){const c=document.getElementById(decodeURIComponent(r.hash).slice(1));if(c){const f=()=>{c.removeAttribute("tabindex"),c.removeEventListener("blur",f)};c.setAttribute("tabindex","-1"),c.addEventListener("blur",f),c.focus(),window.scrollTo(0,0)}}return(r,c)=>(o(),u(x,null,[l("span",{ref_key:"backToTop",ref:s,tabindex:"-1"},null,512),l("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:a},S(i(t).skipToContentLabel||"Skip to content"),1)],64))}}),No=y(xo,[["__scopeId","data-v-fcbfc0e0"]]),wo=k({__name:"Layout",setup(e){const{isOpen:t,open:n,close:s}=O(),a=ee();F(()=>a.path,s),ft(t,s);const{frontmatter:r}=V(),c=Ye(),f=P(()=>!!c["home-hero-image"]);return we("hero-image-slot-exists",f),(v,m)=>{const _=z("Content");return i(r).layout!==!1?(o(),u("div",{key:0,class:w(["Layout",i(r).pageClass])},[d(v.$slots,"layout-top",{},void 0,!0),b(No),b(et,{class:"backdrop",show:i(t),onClick:i(s)},null,8,["show","onClick"]),b(_o,null,{"nav-bar-title-before":h(()=>[d(v.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":h(()=>[d(v.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":h(()=>[d(v.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":h(()=>[d(v.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":h(()=>[d(v.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":h(()=>[d(v.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),b(us,{open:i(t),onOpenMenu:i(n)},null,8,["open","onOpenMenu"]),b(To,{open:i(t)},{"sidebar-nav-before":h(()=>[d(v.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":h(()=>[d(v.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),b(Rn,null,{"page-top":h(()=>[d(v.$slots,"page-top",{},void 0,!0)]),"page-bottom":h(()=>[d(v.$slots,"page-bottom",{},void 0,!0)]),"not-found":h(()=>[d(v.$slots,"not-found",{},void 0,!0)]),"home-hero-before":h(()=>[d(v.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":h(()=>[d(v.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":h(()=>[d(v.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":h(()=>[d(v.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":h(()=>[d(v.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":h(()=>[d(v.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":h(()=>[d(v.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":h(()=>[d(v.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":h(()=>[d(v.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":h(()=>[d(v.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":h(()=>[d(v.$slots,"doc-before",{},void 0,!0)]),"doc-after":h(()=>[d(v.$slots,"doc-after",{},void 0,!0)]),"doc-top":h(()=>[d(v.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":h(()=>[d(v.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":h(()=>[d(v.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":h(()=>[d(v.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":h(()=>[d(v.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":h(()=>[d(v.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":h(()=>[d(v.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":h(()=>[d(v.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),b(Zn),d(v.$slots,"layout-bottom",{},void 0,!0)],2)):(o(),g(_,{key:1}))}}}),Io=y(wo,[["__scopeId","data-v-d8b57b2d"]]),Pe={Layout:Io,enhanceApp:({app:e})=>{e.component("Badge",Xe)}},Mo={class:"rk-home"},Co={class:"rk-section"},Ao={class:"rk-stages"},Ho={class:"rk-no"},Bo={class:"rk-section"},Eo={class:"rk-flow"},Fo={class:"rk-phase"},Do={class:"rk-chips"},Oo={class:"rk-phase"},Go={class:"rk-chips"},Uo={class:"rk-more"},jo=["href"],qo={class:"rk-section"},Wo={class:"rk-install-box"},zo={class:"rk-tabs",role:"tablist"},Ko=["aria-selected","onClick"],Ro={key:0,class:"rk-command"},Jo=["aria-label","onClick"],Yo={key:1,class:"rk-note"},Xo={class:"rk-more"},Qo=["href"],Zo={class:"rk-section rk-cta"},ei={class:"rk-cta-actions"},ti=["href"],ni=["href"],J="https://paseo-req-kit.vercel.app",si=k({__name:"HomeExtras",setup(e){const t=T([{id:"npx",label:"任何系统(npx)",command:"npx -y paseo-req-kit@latest install",note:"只需要 Node.js 22+。公司内网只有 npm 镜像时:npx -y --registry=<镜像地址> paseo-req-kit@latest install(会保存为本机的 npm 源)。beta 版把 latest 换成 beta。"},{id:"unix",label:"macOS / Linux",command:`curl -fsSL ${J}/install.sh | sh`,note:"也适用于 Windows 的 Git Bash、WSL。加 -s -- --beta 安装 beta 版。"},{id:"windows",label:"Windows PowerShell",command:`irm ${J}/install.ps1 | iex`,note:"不受脚本执行策略限制。"}]);D(()=>{const v=`${window.location.origin}${U("/").replace(/\/$/,"")}`;v===J||!/^https?:/.test(v)||(t.value=t.value.map(m=>({...m,command:m.command.replace(J,v)})))});const n=T(t.value[0].id),s=T(!1);function a(v){var m;(m=navigator.clipboard)==null||m.writeText(v).then(()=>{s.value=!0,setTimeout(()=>s.value=!1,1500)})}const r=[{no:"01",title:"对话对齐需求",text:"输入 /req 和一句话。AI 先复述理解,再一次问一个问题、给出选项和推荐,最后写成一份需求说明请你确认。"},{no:"02",title:"后台开发",text:"方案设计、方案审核、代码实现、代码评审、修复,由一组 agent 在后台完成。每一步都挂在你的对话下,可以随时点开看。"},{no:"03",title:"提测与验证",text:"研发完成写好提测说明。可以接着自动验证,也可以停下来交给测试同事,在测试环境里验证。"},{no:"04",title:"逐条验收",text:"收到结论和报告后,AI 按验收标准一条一条带你核对,记录结果。合并上线仍然由人决定。"}],c=["方案设计","方案审核 ⇄ 修订","代码实现","代码评审 ⇄ 修复","提测说明"],f=["服务启动","功能验证","缺陷修复 ⇄ 复验","完成报告"];return(v,m)=>(o(),u("div",Mo,[l("section",Co,[m[0]||(m[0]=l("h2",{class:"rk-title"},"一个需求,四个阶段",-1)),m[1]||(m[1]=l("p",{class:"rk-lead"},"你负责把需求讲清楚和最后验收,中间的工作交给 agent。",-1)),l("div",Ao,[(o(),u(x,null,M(r,_=>l("div",{key:_.no,class:"rk-stage"},[l("div",Ho,S(_.no),1),l("h3",null,S(_.title),1),l("p",null,S(_.text),1)])),64))])]),l("section",Bo,[m[5]||(m[5]=l("h2",{class:"rk-title"},"流水线",-1)),m[6]||(m[6]=l("p",{class:"rk-lead"}," 做事的和检查的是不同的 agent,每一步只看文件、不靠记忆;审核、评审、验证不通过就返工,轮数有上限,遗留问题如实写进报告。 ",-1)),l("div",Eo,[l("div",Fo,[m[2]||(m[2]=l("div",{class:"rk-phase-name"},"研发阶段",-1)),l("div",Do,[(o(),u(x,null,M(c,_=>l("span",{key:_,class:"rk-chip"},S(_),1)),64))])]),m[4]||(m[4]=l("div",{class:"rk-gate",title:"执行方式为“分阶段”时在这里停下,等待提测"},[l("span",null,"闸口"),l("small",null,"连续 / 分阶段 / 只做研发")],-1)),l("div",Oo,[m[3]||(m[3]=l("div",{class:"rk-phase-name"},"测试验证阶段",-1)),l("div",Go,[(o(),u(x,null,M(f,_=>l("span",{key:_,class:"rk-chip"},S(_),1)),64))])])]),l("p",Uo,[l("a",{href:i(U)("/guide/how-it-works")},"了解工作原理 →",8,jo)])]),l("section",qo,[m[7]||(m[7]=l("h2",{class:"rk-title"},"安装",-1)),m[8]||(m[8]=l("p",{class:"rk-lead"},"在运行 Paseo daemon 的机器上执行一条命令:检查环境、安装、装好 /req 等 skill、引导你选择 agent。再次运行即升级。",-1)),l("div",Wo,[l("div",zo,[(o(!0),u(x,null,M(t.value,_=>(o(),u("button",{key:_.id,role:"tab","aria-selected":n.value===_.id,class:w({active:n.value===_.id}),onClick:$=>n.value=_.id},S(_.label),11,Ko))),128))]),(o(!0),u(x,null,M(t.value,_=>(o(),u(x,{key:_.id},[n.value===_.id?(o(),u("div",Ro,[l("code",null,S(_.command),1),l("button",{class:"rk-copy","aria-label":s.value?"已复制":"复制命令",onClick:$=>a(_.command)},S(s.value?"已复制":"复制"),9,Jo)])):p("",!0),n.value===_.id?(o(),u("p",Yo,S(_.note),1)):p("",!0)],64))),128))]),l("p",Xo,[l("a",{href:i(U)("/guide/getting-started")},"快速开始 →",8,Qo)])]),l("section",Zo,[m[9]||(m[9]=l("h2",{class:"rk-title"},"给测试、产品、项目经理用的需求开发体系",-1)),m[10]||(m[10]=l("p",{class:"rk-lead"},"不用读代码,也能把一个需求从“我想要……”推进到“可以验收”。每一步的产物都在仓库里,可以随时查看、亲自核对。",-1)),l("div",ei,[l("a",{class:"rk-button brand",href:i(U)("/guide/getting-started")},"开始使用",8,ti),l("a",{class:"rk-button",href:i(U)("/guide/user")},"阅读使用者指南",8,ni)])])]))}}),ai=y(si,[["__scopeId","data-v-4e115be8"]]),ii={extends:Pe,Layout:()=>$e(Pe.Layout,null,{"home-features-after":()=>$e(ai)})};export{ii as R,fa as c,V as u};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/chunks/VPLocalSearchBox.CI43rhTA.js","assets/chunks/framework.B9qR_F1m.js"])))=>i.map(i=>d[i]);
2
+ import{d as k,c as u,r as d,n as w,o,a as q,t as S,b as g,w as h,T as ve,e as p,_ as y,u as Ee,i as Fe,f as De,g as U,h as P,j as l,k as i,l as W,m as le,p as T,q as F,s as Q,v as D,x as fe,y as he,z as Oe,A as Ge,F as x,B as M,C as z,D as Z,E as b,G as Le,H as B,I as Ve,J as ee,K as j,L as te,M as Ue,N as Se,O as re,P as Te,Q as xe,R as ne,S as je,U as qe,V as We,W as Ne,X as we,Y as ze,Z as Ke,$ as Re,a0 as Je,a1 as Ye,a2 as $e}from"./framework.B9qR_F1m.js";const Xe=k({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(e){return(t,n)=>(o(),u("span",{class:w(["VPBadge",e.type])},[d(t.$slots,"default",{},()=>[q(S(e.text),1)])],2))}}),Qe={key:0,class:"VPBackdrop"},Ze=k({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(e){return(t,n)=>(o(),g(ve,{name:"fade"},{default:h(()=>[e.show?(o(),u("div",Qe)):p("",!0)]),_:1}))}}),et=y(Ze,[["__scopeId","data-v-54a304ca"]]),V=Ee;function tt(e,t){let n,s=!1;return()=>{n&&clearTimeout(n),s?n=setTimeout(e,t):(e(),(s=!0)&&setTimeout(()=>s=!1,t))}}function ce(e){return e.startsWith("/")?e:`/${e}`}function me(e){const{pathname:t,search:n,hash:s,protocol:a}=new URL(e,"http://a.com");if(Fe(e)||e.startsWith("#")||!a.startsWith("http")||!De(t))return e;const{site:r}=V(),c=t.endsWith("/")||t.endsWith(".html")?e:e.replace(/(?:(^\.+)\/)?.*$/,`$1${t.replace(/(\.md)?$/,r.value.cleanUrls?"":".html")}${n}${s}`);return U(c)}function R({correspondingLink:e=!1}={}){const{site:t,localeIndex:n,page:s,theme:a,hash:r}=V(),c=P(()=>{var v,m;return{label:(v=t.value.locales[n.value])==null?void 0:v.label,link:((m=t.value.locales[n.value])==null?void 0:m.link)||(n.value==="root"?"/":`/${n.value}/`)}});return{localeLinks:P(()=>Object.entries(t.value.locales).flatMap(([v,m])=>c.value.label===m.label?[]:{text:m.label,link:nt(m.link||(v==="root"?"/":`/${v}/`),a.value.i18nRouting!==!1&&e,s.value.relativePath.slice(c.value.link.length-1),!t.value.cleanUrls)+r.value})),currentLang:c}}function nt(e,t,n,s){return t?e.replace(/\/$/,"")+ce(n.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,s?".html":"")):e}const st={class:"NotFound"},at={class:"code"},ot={class:"title"},it={class:"quote"},lt={class:"action"},rt=["href","aria-label"],ct=k({__name:"NotFound",setup(e){const{theme:t}=V(),{currentLang:n}=R();return(s,a)=>{var r,c,f,v,m;return o(),u("div",st,[l("p",at,S(((r=i(t).notFound)==null?void 0:r.code)??"404"),1),l("h1",ot,S(((c=i(t).notFound)==null?void 0:c.title)??"PAGE NOT FOUND"),1),a[0]||(a[0]=l("div",{class:"divider"},null,-1)),l("blockquote",it,S(((f=i(t).notFound)==null?void 0:f.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),l("div",lt,[l("a",{class:"link",href:i(U)(i(n).link),"aria-label":((v=i(t).notFound)==null?void 0:v.linkLabel)??"go to home"},S(((m=i(t).notFound)==null?void 0:m.linkText)??"Take me home"),9,rt)])])}}}),ut=y(ct,[["__scopeId","data-v-6ff51ddd"]]);function Ie(e,t){if(Array.isArray(e))return Y(e);if(e==null)return[];t=ce(t);const n=Object.keys(e).sort((a,r)=>r.split("/").length-a.split("/").length).find(a=>t.startsWith(ce(a))),s=n?e[n]:[];return Array.isArray(s)?Y(s):Y(s.items,s.base)}function dt(e){const t=[];let n=0;for(const s in e){const a=e[s];if(a.items){n=t.push(a);continue}t[n]||t.push({items:[]}),t[n].items.push(a)}return t}function vt(e){const t=[];function n(s){for(const a of s)a.text&&a.link&&t.push({text:a.text,link:a.link,docFooterText:a.docFooterText}),a.items&&n(a.items)}return n(e),t}function ue(e,t){return Array.isArray(t)?t.some(n=>ue(e,n)):W(e,t.link)?!0:t.items?ue(e,t.items):!1}function Y(e,t){return[...e].map(n=>{const s={...n},a=s.base||t;return a&&s.link&&(s.link=a+s.link),s.items&&(s.items=Y(s.items,a)),s})}function O(){const{frontmatter:e,page:t,theme:n}=V(),s=le("(min-width: 960px)"),a=T(!1),r=P(()=>{const C=n.value.sidebar,A=t.value.relativePath;return C?Ie(C,A):[]}),c=T(r.value);F(r,(C,A)=>{JSON.stringify(C)!==JSON.stringify(A)&&(c.value=r.value)});const f=P(()=>e.value.sidebar!==!1&&c.value.length>0&&e.value.layout!=="home"),v=P(()=>m?e.value.aside==null?n.value.aside==="left":e.value.aside==="left":!1),m=P(()=>e.value.layout==="home"?!1:e.value.aside!=null?!!e.value.aside:n.value.aside!==!1),_=P(()=>f.value&&s.value),$=P(()=>f.value?dt(c.value):[]);function L(){a.value=!0}function N(){a.value=!1}function I(){a.value?N():L()}return{isOpen:a,sidebar:c,sidebarGroups:$,hasSidebar:f,hasAside:m,leftAside:v,isSidebarEnabled:_,open:L,close:N,toggle:I}}function ft(e,t){let n;Q(()=>{n=e.value?document.activeElement:void 0}),D(()=>{window.addEventListener("keyup",s)}),fe(()=>{window.removeEventListener("keyup",s)});function s(a){a.key==="Escape"&&e.value&&(t(),n==null||n.focus())}}function ht(e){const{page:t,hash:n}=V(),s=T(!1),a=P(()=>e.value.collapsed!=null),r=P(()=>!!e.value.link),c=T(!1),f=()=>{c.value=W(t.value.relativePath,e.value.link)};F([t,e,n],f),D(f);const v=P(()=>c.value?!0:e.value.items?ue(t.value.relativePath,e.value.items):!1),m=P(()=>!!(e.value.items&&e.value.items.length));Q(()=>{s.value=!!(a.value&&e.value.collapsed)}),he(()=>{(c.value||v.value)&&(s.value=!1)});function _(){a.value&&(s.value=!s.value)}return{collapsed:s,collapsible:a,isLink:r,isActiveLink:c,hasActiveLink:v,hasChildren:m,toggle:_}}function mt(){const{hasSidebar:e}=O(),t=le("(min-width: 960px)"),n=le("(min-width: 1280px)");return{isAsideEnabled:P(()=>!n.value&&!t.value?!1:e.value?n.value:t.value)}}const pt=/\b(?:VPBadge|header-anchor|footnote-ref|ignore-header)\b/,de=[];function Me(e){return typeof e.outline=="object"&&!Array.isArray(e.outline)&&e.outline.label||e.outlineTitle||"On this page"}function pe(e){const t=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(n=>n.id&&n.hasChildNodes()).map(n=>{const s=Number(n.tagName[1]);return{element:n,title:kt(n),link:"#"+n.id,level:s}});return _t(t,e)}function kt(e){let t="";for(const n of e.childNodes)if(n.nodeType===1){if(pt.test(n.className))continue;t+=n.textContent}else n.nodeType===3&&(t+=n.textContent);return t.trim()}function _t(e,t){if(t===!1)return[];const n=(typeof t=="object"&&!Array.isArray(t)?t.level:t)||2,[s,a]=typeof n=="number"?[n,n]:n==="deep"?[2,6]:n;return $t(e,s,a)}function bt(e,t){const{isAsideEnabled:n}=mt(),s=tt(r,100);let a=null;D(()=>{requestAnimationFrame(r),window.addEventListener("scroll",s)}),Oe(()=>{c(location.hash)}),fe(()=>{window.removeEventListener("scroll",s)});function r(){if(!n.value)return;const f=window.scrollY,v=window.innerHeight,m=document.body.offsetHeight,_=Math.abs(f+v-m)<1,$=de.map(({element:N,link:I})=>({link:I,top:gt(N)})).filter(({top:N})=>!Number.isNaN(N)).sort((N,I)=>N.top-I.top);if(!$.length){c(null);return}if(f<1){c(null);return}if(_){c($[$.length-1].link);return}let L=null;for(const{link:N,top:I}of $){if(I>f+Ge()+4)break;L=N}c(L)}function c(f){a&&a.classList.remove("active"),f==null?a=null:a=e.value.querySelector(`a[href="${decodeURIComponent(f)}"]`);const v=a;v?(v.classList.add("active"),t.value.style.top=v.offsetTop+39+"px",t.value.style.opacity="1"):(t.value.style.top="33px",t.value.style.opacity="0")}}function gt(e){let t=0;for(;e!==document.body;){if(e===null)return NaN;t+=e.offsetTop,e=e.offsetParent}return t}function $t(e,t,n){de.length=0;const s=[],a=[];return e.forEach(r=>{const c={...r,children:[]};let f=a[a.length-1];for(;f&&f.level>=c.level;)a.pop(),f=a[a.length-1];if(c.element.classList.contains("ignore-header")||f&&"shouldIgnore"in f){a.push({level:c.level,shouldIgnore:!0});return}c.level>n||c.level<t||(de.push({element:c.element,link:c.link}),f?f.children.push(c):s.push(c),a.push(c))}),s}const yt=["href","title"],Pt=k({__name:"VPDocOutlineItem",props:{headers:{},root:{type:Boolean}},setup(e){function t({target:n}){const s=n.href.split("#")[1],a=document.getElementById(decodeURIComponent(s));a==null||a.focus({preventScroll:!0})}return(n,s)=>{const a=z("VPDocOutlineItem",!0);return o(),u("ul",{class:w(["VPDocOutlineItem",e.root?"root":"nested"])},[(o(!0),u(x,null,M(e.headers,({children:r,link:c,title:f})=>(o(),u("li",null,[l("a",{class:"outline-link",href:c,onClick:t,title:f},S(f),9,yt),r!=null&&r.length?(o(),g(a,{key:0,headers:r},null,8,["headers"])):p("",!0)]))),256))],2)}}}),Ce=y(Pt,[["__scopeId","data-v-53c99d69"]]),Lt={class:"content"},Vt={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},St=k({__name:"VPDocAsideOutline",setup(e){const{frontmatter:t,theme:n}=V(),s=Le([]);Z(()=>{s.value=pe(t.value.outline??n.value.outline)});const a=T(),r=T();return bt(a,r),(c,f)=>(o(),u("nav",{"aria-labelledby":"doc-outline-aria-label",class:w(["VPDocAsideOutline",{"has-outline":s.value.length>0}]),ref_key:"container",ref:a},[l("div",Lt,[l("div",{class:"outline-marker",ref_key:"marker",ref:r},null,512),l("div",Vt,S(i(Me)(i(n))),1),b(Ce,{headers:s.value,root:!0},null,8,["headers"])])],2))}}),Tt=y(St,[["__scopeId","data-v-f610f197"]]),xt={class:"VPDocAsideCarbonAds"},Nt=k({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(e){const t=()=>null;return(n,s)=>(o(),u("div",xt,[b(i(t),{"carbon-ads":e.carbonAds},null,8,["carbon-ads"])]))}}),wt={class:"VPDocAside"},It=k({__name:"VPDocAside",setup(e){const{theme:t}=V();return(n,s)=>(o(),u("div",wt,[d(n.$slots,"aside-top",{},void 0,!0),d(n.$slots,"aside-outline-before",{},void 0,!0),b(Tt),d(n.$slots,"aside-outline-after",{},void 0,!0),s[0]||(s[0]=l("div",{class:"spacer"},null,-1)),d(n.$slots,"aside-ads-before",{},void 0,!0),i(t).carbonAds?(o(),g(Nt,{key:0,"carbon-ads":i(t).carbonAds},null,8,["carbon-ads"])):p("",!0),d(n.$slots,"aside-ads-after",{},void 0,!0),d(n.$slots,"aside-bottom",{},void 0,!0)]))}}),Mt=y(It,[["__scopeId","data-v-cb998dce"]]);function Ct(){const{theme:e,page:t}=V();return P(()=>{const{text:n="Edit this page",pattern:s=""}=e.value.editLink||{};let a;return typeof s=="function"?a=s(t.value):a=s.replace(/:path/g,t.value.filePath),{url:a,text:n}})}function At(){const{page:e,theme:t,frontmatter:n}=V();return P(()=>{var m,_,$,L,N,I,C,A;const s=Ie(t.value.sidebar,e.value.relativePath),a=vt(s),r=Ht(a,H=>H.link.replace(/[?#].*$/,"")),c=r.findIndex(H=>W(e.value.relativePath,H.link)),f=((m=t.value.docFooter)==null?void 0:m.prev)===!1&&!n.value.prev||n.value.prev===!1,v=((_=t.value.docFooter)==null?void 0:_.next)===!1&&!n.value.next||n.value.next===!1;return{prev:f?void 0:{text:(typeof n.value.prev=="string"?n.value.prev:typeof n.value.prev=="object"?n.value.prev.text:void 0)??(($=r[c-1])==null?void 0:$.docFooterText)??((L=r[c-1])==null?void 0:L.text),link:(typeof n.value.prev=="object"?n.value.prev.link:void 0)??((N=r[c-1])==null?void 0:N.link)},next:v?void 0:{text:(typeof n.value.next=="string"?n.value.next:typeof n.value.next=="object"?n.value.next.text:void 0)??((I=r[c+1])==null?void 0:I.docFooterText)??((C=r[c+1])==null?void 0:C.text),link:(typeof n.value.next=="object"?n.value.next.link:void 0)??((A=r[c+1])==null?void 0:A.link)}}})}function Ht(e,t){const n=new Set;return e.filter(s=>{const a=t(s);return n.has(a)?!1:n.add(a)})}const E=k({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(e){const t=e,n=P(()=>t.tag??(t.href?"a":"span")),s=P(()=>t.href&&Ve.test(t.href)||t.target==="_blank");return(a,r)=>(o(),g(B(n.value),{class:w(["VPLink",{link:e.href,"vp-external-link-icon":s.value,"no-icon":e.noIcon}]),href:e.href?i(me)(e.href):void 0,target:e.target??(s.value?"_blank":void 0),rel:e.rel??(s.value?"noreferrer":void 0)},{default:h(()=>[d(a.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),Bt={class:"VPLastUpdated"},Et=["datetime"],Ft=k({__name:"VPDocFooterLastUpdated",setup(e){const{theme:t,page:n,lang:s}=V(),a=P(()=>new Date(n.value.lastUpdated)),r=P(()=>a.value.toISOString()),c=T("");return D(()=>{Q(()=>{var f,v,m;c.value=new Intl.DateTimeFormat((v=(f=t.value.lastUpdated)==null?void 0:f.formatOptions)!=null&&v.forceLocale?s.value:void 0,((m=t.value.lastUpdated)==null?void 0:m.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(a.value)})}),(f,v)=>{var m;return o(),u("p",Bt,[q(S(((m=i(t).lastUpdated)==null?void 0:m.text)||i(t).lastUpdatedText||"Last updated")+": ",1),l("time",{datetime:r.value},S(c.value),9,Et)])}}}),Dt=y(Ft,[["__scopeId","data-v-1bb0c8a8"]]),Ot={key:0,class:"VPDocFooter"},Gt={key:0,class:"edit-info"},Ut={key:0,class:"edit-link"},jt={key:1,class:"last-updated"},qt={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},Wt={class:"pager"},zt=["innerHTML"],Kt=["innerHTML"],Rt={class:"pager"},Jt=["innerHTML"],Yt=["innerHTML"],Xt=k({__name:"VPDocFooter",setup(e){const{theme:t,page:n,frontmatter:s}=V(),a=Ct(),r=At(),c=P(()=>t.value.editLink&&s.value.editLink!==!1),f=P(()=>n.value.lastUpdated),v=P(()=>c.value||f.value||r.value.prev||r.value.next);return(m,_)=>{var $,L,N,I;return v.value?(o(),u("footer",Ot,[d(m.$slots,"doc-footer-before",{},void 0,!0),c.value||f.value?(o(),u("div",Gt,[c.value?(o(),u("div",Ut,[b(E,{class:"edit-link-button",href:i(a).url,"no-icon":!0},{default:h(()=>[_[0]||(_[0]=l("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),q(" "+S(i(a).text),1)]),_:1},8,["href"])])):p("",!0),f.value?(o(),u("div",jt,[b(Dt)])):p("",!0)])):p("",!0),($=i(r).prev)!=null&&$.link||(L=i(r).next)!=null&&L.link?(o(),u("nav",qt,[_[1]||(_[1]=l("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),l("div",Wt,[(N=i(r).prev)!=null&&N.link?(o(),g(E,{key:0,class:"pager-link prev",href:i(r).prev.link},{default:h(()=>{var C;return[l("span",{class:"desc",innerHTML:((C=i(t).docFooter)==null?void 0:C.prev)||"Previous page"},null,8,zt),l("span",{class:"title",innerHTML:i(r).prev.text},null,8,Kt)]}),_:1},8,["href"])):p("",!0)]),l("div",Rt,[(I=i(r).next)!=null&&I.link?(o(),g(E,{key:0,class:"pager-link next",href:i(r).next.link},{default:h(()=>{var C;return[l("span",{class:"desc",innerHTML:((C=i(t).docFooter)==null?void 0:C.next)||"Next page"},null,8,Jt),l("span",{class:"title",innerHTML:i(r).next.text},null,8,Yt)]}),_:1},8,["href"])):p("",!0)])])):p("",!0)])):p("",!0)}}}),Qt=y(Xt,[["__scopeId","data-v-1bcd8184"]]),Zt={class:"container"},en={class:"aside-container"},tn={class:"aside-content"},nn={class:"content"},sn={class:"content-container"},an={class:"main"},on=k({__name:"VPDoc",setup(e){const{theme:t}=V(),n=ee(),{hasSidebar:s,hasAside:a,leftAside:r}=O(),c=P(()=>n.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(f,v)=>{const m=z("Content");return o(),u("div",{class:w(["VPDoc",{"has-sidebar":i(s),"has-aside":i(a)}])},[d(f.$slots,"doc-top",{},void 0,!0),l("div",Zt,[i(a)?(o(),u("div",{key:0,class:w(["aside",{"left-aside":i(r)}])},[v[0]||(v[0]=l("div",{class:"aside-curtain"},null,-1)),l("div",en,[l("div",tn,[b(Mt,null,{"aside-top":h(()=>[d(f.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":h(()=>[d(f.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":h(()=>[d(f.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":h(()=>[d(f.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":h(()=>[d(f.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":h(()=>[d(f.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):p("",!0),l("div",nn,[l("div",sn,[d(f.$slots,"doc-before",{},void 0,!0),l("main",an,[b(m,{class:w(["vp-doc",[c.value,i(t).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),b(Qt,null,{"doc-footer-before":h(()=>[d(f.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),d(f.$slots,"doc-after",{},void 0,!0)])])]),d(f.$slots,"doc-bottom",{},void 0,!0)],2)}}}),ln=y(on,[["__scopeId","data-v-e6f2a212"]]),rn=k({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(e){const t=e,n=P(()=>t.href&&Ve.test(t.href)),s=P(()=>t.tag||(t.href?"a":"button"));return(a,r)=>(o(),g(B(s.value),{class:w(["VPButton",[e.size,e.theme]]),href:e.href?i(me)(e.href):void 0,target:t.target??(n.value?"_blank":void 0),rel:t.rel??(n.value?"noreferrer":void 0)},{default:h(()=>[q(S(e.text),1)]),_:1},8,["class","href","target","rel"]))}}),cn=y(rn,[["__scopeId","data-v-93dc4167"]]),un=["src","alt"],dn=k({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(e){return(t,n)=>{const s=z("VPImage",!0);return e.image?(o(),u(x,{key:0},[typeof e.image=="string"||"src"in e.image?(o(),u("img",j({key:0,class:"VPImage"},typeof e.image=="string"?t.$attrs:{...e.image,...t.$attrs},{src:i(U)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,un)):(o(),u(x,{key:1},[b(s,j({class:"dark",image:e.image.dark,alt:e.image.alt},t.$attrs),null,16,["image","alt"]),b(s,j({class:"light",image:e.image.light,alt:e.image.alt},t.$attrs),null,16,["image","alt"])],64))],64)):p("",!0)}}}),X=y(dn,[["__scopeId","data-v-ab19afbb"]]),vn={class:"container"},fn={class:"main"},hn={class:"heading"},mn=["innerHTML"],pn=["innerHTML"],kn=["innerHTML"],_n={key:0,class:"actions"},bn={key:0,class:"image"},gn={class:"image-container"},$n=k({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(e){const t=te("hero-image-slot-exists");return(n,s)=>(o(),u("div",{class:w(["VPHero",{"has-image":e.image||i(t)}])},[l("div",vn,[l("div",fn,[d(n.$slots,"home-hero-info-before",{},void 0,!0),d(n.$slots,"home-hero-info",{},()=>[l("h1",hn,[e.name?(o(),u("span",{key:0,innerHTML:e.name,class:"name clip"},null,8,mn)):p("",!0),e.text?(o(),u("span",{key:1,innerHTML:e.text,class:"text"},null,8,pn)):p("",!0)]),e.tagline?(o(),u("p",{key:0,innerHTML:e.tagline,class:"tagline"},null,8,kn)):p("",!0)],!0),d(n.$slots,"home-hero-info-after",{},void 0,!0),e.actions?(o(),u("div",_n,[(o(!0),u(x,null,M(e.actions,a=>(o(),u("div",{key:a.link,class:"action"},[b(cn,{tag:"a",size:"medium",theme:a.theme,text:a.text,href:a.link,target:a.target,rel:a.rel},null,8,["theme","text","href","target","rel"])]))),128))])):p("",!0),d(n.$slots,"home-hero-actions-after",{},void 0,!0)]),e.image||i(t)?(o(),u("div",bn,[l("div",gn,[s[0]||(s[0]=l("div",{class:"image-bg"},null,-1)),d(n.$slots,"home-hero-image",{},()=>[e.image?(o(),g(X,{key:0,class:"image-src",image:e.image},null,8,["image"])):p("",!0)],!0)])])):p("",!0)])],2))}}),yn=y($n,[["__scopeId","data-v-dd8814ff"]]),Pn=k({__name:"VPHomeHero",setup(e){const{frontmatter:t}=V();return(n,s)=>i(t).hero?(o(),g(yn,{key:0,class:"VPHomeHero",name:i(t).hero.name,text:i(t).hero.text,tagline:i(t).hero.tagline,image:i(t).hero.image,actions:i(t).hero.actions},{"home-hero-info-before":h(()=>[d(n.$slots,"home-hero-info-before")]),"home-hero-info":h(()=>[d(n.$slots,"home-hero-info")]),"home-hero-info-after":h(()=>[d(n.$slots,"home-hero-info-after")]),"home-hero-actions-after":h(()=>[d(n.$slots,"home-hero-actions-after")]),"home-hero-image":h(()=>[d(n.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):p("",!0)}}),Ln={class:"box"},Vn={key:0,class:"icon"},Sn=["innerHTML"],Tn=["innerHTML"],xn=["innerHTML"],Nn={key:4,class:"link-text"},wn={class:"link-text-value"},In=k({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(e){return(t,n)=>(o(),g(E,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:h(()=>[l("article",Ln,[typeof e.icon=="object"&&e.icon.wrap?(o(),u("div",Vn,[b(X,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(o(),g(X,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(o(),u("div",{key:2,class:"icon",innerHTML:e.icon},null,8,Sn)):p("",!0),l("h2",{class:"title",innerHTML:e.title},null,8,Tn),e.details?(o(),u("p",{key:3,class:"details",innerHTML:e.details},null,8,xn)):p("",!0),e.linkText?(o(),u("div",Nn,[l("p",wn,[q(S(e.linkText)+" ",1),n[0]||(n[0]=l("span",{class:"vpi-arrow-right link-text-icon"},null,-1))])])):p("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),Mn=y(In,[["__scopeId","data-v-bd37d1a2"]]),Cn={key:0,class:"VPFeatures"},An={class:"container"},Hn={class:"items"},Bn=k({__name:"VPFeatures",props:{features:{}},setup(e){const t=e,n=P(()=>{const s=t.features.length;if(s){if(s===2)return"grid-2";if(s===3)return"grid-3";if(s%3===0)return"grid-6";if(s>3)return"grid-4"}else return});return(s,a)=>e.features?(o(),u("div",Cn,[l("div",An,[l("div",Hn,[(o(!0),u(x,null,M(e.features,r=>(o(),u("div",{key:r.title,class:w(["item",[n.value]])},[b(Mn,{icon:r.icon,title:r.title,details:r.details,link:r.link,"link-text":r.linkText,rel:r.rel,target:r.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):p("",!0)}}),En=y(Bn,[["__scopeId","data-v-b1eea84a"]]),Fn=k({__name:"VPHomeFeatures",setup(e){const{frontmatter:t}=V();return(n,s)=>i(t).features?(o(),g(En,{key:0,class:"VPHomeFeatures",features:i(t).features},null,8,["features"])):p("",!0)}}),Dn=k({__name:"VPHomeContent",setup(e){const{width:t}=Ue({initialWidth:0,includeScrollbar:!1});return(n,s)=>(o(),u("div",{class:"vp-doc container",style:Se(i(t)?{"--vp-offset":`calc(50% - ${i(t)/2}px)`}:{})},[d(n.$slots,"default",{},void 0,!0)],4))}}),On=y(Dn,[["__scopeId","data-v-c141a4bd"]]),Gn=k({__name:"VPHome",setup(e){const{frontmatter:t,theme:n}=V();return(s,a)=>{const r=z("Content");return o(),u("div",{class:w(["VPHome",{"external-link-icon-enabled":i(n).externalLinkIcon}])},[d(s.$slots,"home-hero-before",{},void 0,!0),b(Pn,null,{"home-hero-info-before":h(()=>[d(s.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":h(()=>[d(s.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":h(()=>[d(s.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":h(()=>[d(s.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":h(()=>[d(s.$slots,"home-hero-image",{},void 0,!0)]),_:3}),d(s.$slots,"home-hero-after",{},void 0,!0),d(s.$slots,"home-features-before",{},void 0,!0),b(Fn),d(s.$slots,"home-features-after",{},void 0,!0),i(t).markdownStyles!==!1?(o(),g(On,{key:0},{default:h(()=>[b(r)]),_:1})):(o(),g(r,{key:1}))],2)}}}),Un=y(Gn,[["__scopeId","data-v-e07eaea7"]]),jn={},qn={class:"VPPage"};function Wn(e,t){const n=z("Content");return o(),u("div",qn,[d(e.$slots,"page-top"),b(n),d(e.$slots,"page-bottom")])}const zn=y(jn,[["render",Wn]]),Kn=k({__name:"VPContent",setup(e){const{page:t,frontmatter:n}=V(),{hasSidebar:s}=O();return(a,r)=>(o(),u("div",{class:w(["VPContent",{"has-sidebar":i(s),"is-home":i(n).layout==="home"}]),id:"VPContent"},[i(t).isNotFound?d(a.$slots,"not-found",{},()=>[b(ut)],!0,0):i(n).layout==="page"?(o(),g(zn,{key:1},{"page-top":h(()=>[d(a.$slots,"page-top",{},void 0,!0)]),"page-bottom":h(()=>[d(a.$slots,"page-bottom",{},void 0,!0)]),_:3})):i(n).layout==="home"?(o(),g(Un,{key:2},{"home-hero-before":h(()=>[d(a.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":h(()=>[d(a.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":h(()=>[d(a.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":h(()=>[d(a.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":h(()=>[d(a.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":h(()=>[d(a.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":h(()=>[d(a.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":h(()=>[d(a.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":h(()=>[d(a.$slots,"home-features-after",{},void 0,!0)]),_:3})):i(n).layout&&i(n).layout!=="doc"?(o(),g(B(i(n).layout),{key:3})):(o(),g(ln,{key:4},{"doc-top":h(()=>[d(a.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":h(()=>[d(a.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":h(()=>[d(a.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":h(()=>[d(a.$slots,"doc-before",{},void 0,!0)]),"doc-after":h(()=>[d(a.$slots,"doc-after",{},void 0,!0)]),"aside-top":h(()=>[d(a.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":h(()=>[d(a.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":h(()=>[d(a.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":h(()=>[d(a.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":h(()=>[d(a.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":h(()=>[d(a.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),Rn=y(Kn,[["__scopeId","data-v-9a6c75ad"]]),Jn={class:"container"},Yn=["innerHTML"],Xn=["innerHTML"],Qn=k({__name:"VPFooter",setup(e){const{theme:t,frontmatter:n}=V(),{hasSidebar:s}=O();return(a,r)=>i(t).footer&&i(n).footer!==!1?(o(),u("footer",{key:0,class:w(["VPFooter",{"has-sidebar":i(s)}])},[l("div",Jn,[i(t).footer.message?(o(),u("p",{key:0,class:"message",innerHTML:i(t).footer.message},null,8,Yn)):p("",!0),i(t).footer.copyright?(o(),u("p",{key:1,class:"copyright",innerHTML:i(t).footer.copyright},null,8,Xn)):p("",!0)])],2)):p("",!0)}}),Zn=y(Qn,[["__scopeId","data-v-566314d4"]]);function es(){const{theme:e,frontmatter:t}=V(),n=Le([]),s=P(()=>n.value.length>0);return Z(()=>{n.value=pe(t.value.outline??e.value.outline)}),{headers:n,hasLocalNav:s}}const ts={class:"menu-text"},ns={class:"header"},ss={class:"outline"},as=k({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(e){const t=e,{theme:n}=V(),s=T(!1),a=T(0),r=T(),c=T();function f($){var L;(L=r.value)!=null&&L.contains($.target)||(s.value=!1)}F(s,$=>{if($){document.addEventListener("click",f);return}document.removeEventListener("click",f)}),re("Escape",()=>{s.value=!1}),Z(()=>{s.value=!1});function v(){s.value=!s.value,a.value=window.innerHeight+Math.min(window.scrollY-t.navHeight,0)}function m($){$.target.classList.contains("outline-link")&&(c.value&&(c.value.style.transition="none"),Te(()=>{s.value=!1}))}function _(){s.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return($,L)=>(o(),u("div",{class:"VPLocalNavOutlineDropdown",style:Se({"--vp-vh":a.value+"px"}),ref_key:"main",ref:r},[e.headers.length>0?(o(),u("button",{key:0,onClick:v,class:w({open:s.value})},[l("span",ts,S(i(Me)(i(n))),1),L[0]||(L[0]=l("span",{class:"vpi-chevron-right icon"},null,-1))],2)):(o(),u("button",{key:1,onClick:_},S(i(n).returnToTopLabel||"Return to top"),1)),b(ve,{name:"flyout"},{default:h(()=>[s.value?(o(),u("div",{key:0,ref_key:"items",ref:c,class:"items",onClick:m},[l("div",ns,[l("a",{class:"top-link",href:"#",onClick:_},S(i(n).returnToTopLabel||"Return to top"),1)]),l("div",ss,[b(Ce,{headers:e.headers},null,8,["headers"])])],512)):p("",!0)]),_:1})],4))}}),os=y(as,[["__scopeId","data-v-6b867909"]]),is={class:"container"},ls=["aria-expanded"],rs={class:"menu-text"},cs=k({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(e){const{theme:t,frontmatter:n}=V(),{hasSidebar:s}=O(),{headers:a}=es(),{y:r}=xe(),c=T(0);D(()=>{c.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),Z(()=>{a.value=pe(n.value.outline??t.value.outline)});const f=P(()=>a.value.length===0),v=P(()=>f.value&&!s.value),m=P(()=>({VPLocalNav:!0,"has-sidebar":s.value,empty:f.value,fixed:v.value}));return(_,$)=>i(n).layout!=="home"&&(!v.value||i(r)>=c.value)?(o(),u("div",{key:0,class:w(m.value)},[l("div",is,[i(s)?(o(),u("button",{key:0,class:"menu","aria-expanded":e.open,"aria-controls":"VPSidebarNav",onClick:$[0]||($[0]=L=>_.$emit("open-menu"))},[$[1]||($[1]=l("span",{class:"vpi-align-left menu-icon"},null,-1)),l("span",rs,S(i(t).sidebarMenuLabel||"Menu"),1)],8,ls)):p("",!0),b(os,{headers:i(a),navHeight:c.value},null,8,["headers","navHeight"])])],2)):p("",!0)}}),us=y(cs,[["__scopeId","data-v-2488c25a"]]);function ds(){const e=T(!1);function t(){e.value=!0,window.addEventListener("resize",a)}function n(){e.value=!1,window.removeEventListener("resize",a)}function s(){e.value?n():t()}function a(){window.outerWidth>=768&&n()}const r=ee();return F(()=>r.path,n),{isScreenOpen:e,openScreen:t,closeScreen:n,toggleScreen:s}}const vs={},fs={class:"VPSwitch",type:"button",role:"switch"},hs={class:"check"},ms={key:0,class:"icon"};function ps(e,t){return o(),u("button",fs,[l("span",hs,[e.$slots.default?(o(),u("span",ms,[d(e.$slots,"default",{},void 0,!0)])):p("",!0)])])}const ks=y(vs,[["render",ps],["__scopeId","data-v-b4ccac88"]]),_s=k({__name:"VPSwitchAppearance",setup(e){const{isDark:t,theme:n}=V(),s=te("toggle-appearance",()=>{t.value=!t.value}),a=T("");return he(()=>{a.value=t.value?n.value.lightModeSwitchTitle||"Switch to light theme":n.value.darkModeSwitchTitle||"Switch to dark theme"}),(r,c)=>(o(),g(ks,{title:a.value,class:"VPSwitchAppearance","aria-checked":i(t),onClick:i(s)},{default:h(()=>[...c[0]||(c[0]=[l("span",{class:"vpi-sun sun"},null,-1),l("span",{class:"vpi-moon moon"},null,-1)])]),_:1},8,["title","aria-checked","onClick"]))}}),ke=y(_s,[["__scopeId","data-v-be9742d9"]]),bs={key:0,class:"VPNavBarAppearance"},gs=k({__name:"VPNavBarAppearance",setup(e){const{site:t}=V();return(n,s)=>i(t).appearance&&i(t).appearance!=="force-dark"&&i(t).appearance!=="force-auto"?(o(),u("div",bs,[b(ke)])):p("",!0)}}),$s=y(gs,[["__scopeId","data-v-3f90c1a5"]]),_e=T();let Ae=!1,ie=0;function ys(e){const t=T(!1);if(ne){!Ae&&Ps(),ie++;const n=F(_e,s=>{var a,r,c;s===e.el.value||(a=e.el.value)!=null&&a.contains(s)?(t.value=!0,(r=e.onFocus)==null||r.call(e)):(t.value=!1,(c=e.onBlur)==null||c.call(e))});fe(()=>{n(),ie--,ie||Ls()})}return je(t)}function Ps(){document.addEventListener("focusin",He),Ae=!0,_e.value=document.activeElement}function Ls(){document.removeEventListener("focusin",He)}function He(){_e.value=document.activeElement}const Vs={class:"VPMenuLink"},Ss=["innerHTML"],Ts=k({__name:"VPMenuLink",props:{item:{}},setup(e){const{page:t}=V();return(n,s)=>(o(),u("div",Vs,[b(E,{class:w({active:i(W)(i(t).relativePath,e.item.activeMatch||e.item.link,!!e.item.activeMatch)}),href:e.item.link,target:e.item.target,rel:e.item.rel,"no-icon":e.item.noIcon},{default:h(()=>[l("span",{innerHTML:e.item.text},null,8,Ss)]),_:1},8,["class","href","target","rel","no-icon"])]))}}),se=y(Ts,[["__scopeId","data-v-7eeeb2dc"]]),xs={class:"VPMenuGroup"},Ns={key:0,class:"title"},ws=k({__name:"VPMenuGroup",props:{text:{},items:{}},setup(e){return(t,n)=>(o(),u("div",xs,[e.text?(o(),u("p",Ns,S(e.text),1)):p("",!0),(o(!0),u(x,null,M(e.items,s=>(o(),u(x,null,["link"in s?(o(),g(se,{key:0,item:s},null,8,["item"])):p("",!0)],64))),256))]))}}),Is=y(ws,[["__scopeId","data-v-a6b0397c"]]),Ms={class:"VPMenu"},Cs={key:0,class:"items"},As=k({__name:"VPMenu",props:{items:{}},setup(e){return(t,n)=>(o(),u("div",Ms,[e.items?(o(),u("div",Cs,[(o(!0),u(x,null,M(e.items,s=>(o(),u(x,{key:JSON.stringify(s)},["link"in s?(o(),g(se,{key:0,item:s},null,8,["item"])):"component"in s?(o(),g(B(s.component),j({key:1,ref_for:!0},s.props),null,16)):(o(),g(Is,{key:2,text:s.text,items:s.items},null,8,["text","items"]))],64))),128))])):p("",!0),d(t.$slots,"default",{},void 0,!0)]))}}),Hs=y(As,[["__scopeId","data-v-20ed86d6"]]),Bs=["aria-expanded","aria-label"],Es={key:0,class:"text"},Fs=["innerHTML"],Ds={key:1,class:"vpi-more-horizontal icon"},Os={class:"menu"},Gs=k({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(e){const t=T(!1),n=T();ys({el:n,onBlur:s});function s(){t.value=!1}return(a,r)=>(o(),u("div",{class:"VPFlyout",ref_key:"el",ref:n,onMouseenter:r[1]||(r[1]=c=>t.value=!0),onMouseleave:r[2]||(r[2]=c=>t.value=!1)},[l("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":t.value,"aria-label":e.label,onClick:r[0]||(r[0]=c=>t.value=!t.value)},[e.button||e.icon?(o(),u("span",Es,[e.icon?(o(),u("span",{key:0,class:w([e.icon,"option-icon"])},null,2)):p("",!0),e.button?(o(),u("span",{key:1,innerHTML:e.button},null,8,Fs)):p("",!0),r[3]||(r[3]=l("span",{class:"vpi-chevron-down text-icon"},null,-1))])):(o(),u("span",Ds))],8,Bs),l("div",Os,[b(Hs,{items:e.items},{default:h(()=>[d(a.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),be=y(Gs,[["__scopeId","data-v-bfe7971f"]]),Us=["href","aria-label","innerHTML"],js=k({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(e){const t=e,n=T();D(async()=>{var r;await Te();const a=(r=n.value)==null?void 0:r.children[0];a instanceof HTMLElement&&a.className.startsWith("vpi-social-")&&(getComputedStyle(a).maskImage||getComputedStyle(a).webkitMaskImage)==="none"&&a.style.setProperty("--icon",`url('https://api.iconify.design/simple-icons/${t.icon}.svg')`)});const s=P(()=>typeof t.icon=="object"?t.icon.svg:`<span class="vpi-social-${t.icon}"></span>`);return(a,r)=>(o(),u("a",{ref_key:"el",ref:n,class:"VPSocialLink no-icon",href:e.link,"aria-label":e.ariaLabel??(typeof e.icon=="string"?e.icon:""),target:"_blank",rel:"noopener",innerHTML:s.value},null,8,Us))}}),qs=y(js,[["__scopeId","data-v-60a9a2d3"]]),Ws={class:"VPSocialLinks"},zs=k({__name:"VPSocialLinks",props:{links:{}},setup(e){return(t,n)=>(o(),u("div",Ws,[(o(!0),u(x,null,M(e.links,({link:s,icon:a,ariaLabel:r})=>(o(),g(qs,{key:s,icon:a,link:s,ariaLabel:r},null,8,["icon","link","ariaLabel"]))),128))]))}}),ge=y(zs,[["__scopeId","data-v-e71e869c"]]),Ks={key:0,class:"group translations"},Rs={class:"trans-title"},Js={key:1,class:"group"},Ys={class:"item appearance"},Xs={class:"label"},Qs={class:"appearance-action"},Zs={key:2,class:"group"},ea={class:"item social-links"},ta=k({__name:"VPNavBarExtra",setup(e){const{site:t,theme:n}=V(),{localeLinks:s,currentLang:a}=R({correspondingLink:!0}),r=P(()=>s.value.length&&a.value.label||t.value.appearance||n.value.socialLinks);return(c,f)=>r.value?(o(),g(be,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:h(()=>[i(s).length&&i(a).label?(o(),u("div",Ks,[l("p",Rs,S(i(a).label),1),(o(!0),u(x,null,M(i(s),v=>(o(),g(se,{key:v.link,item:v},null,8,["item"]))),128))])):p("",!0),i(t).appearance&&i(t).appearance!=="force-dark"&&i(t).appearance!=="force-auto"?(o(),u("div",Js,[l("div",Ys,[l("p",Xs,S(i(n).darkModeSwitchLabel||"Appearance"),1),l("div",Qs,[b(ke)])])])):p("",!0),i(n).socialLinks?(o(),u("div",Zs,[l("div",ea,[b(ge,{class:"social-links-list",links:i(n).socialLinks},null,8,["links"])])])):p("",!0)]),_:1})):p("",!0)}}),na=y(ta,[["__scopeId","data-v-f953d92f"]]),sa=["aria-expanded"],aa=k({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(e){return(t,n)=>(o(),u("button",{type:"button",class:w(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:n[0]||(n[0]=s=>t.$emit("click"))},[...n[1]||(n[1]=[l("span",{class:"container"},[l("span",{class:"top"}),l("span",{class:"middle"}),l("span",{class:"bottom"})],-1)])],10,sa))}}),oa=y(aa,[["__scopeId","data-v-6bee1efd"]]),ia=["innerHTML"],la=k({__name:"VPNavBarMenuLink",props:{item:{}},setup(e){const{page:t}=V();return(n,s)=>(o(),g(E,{class:w({VPNavBarMenuLink:!0,active:i(W)(i(t).relativePath,e.item.activeMatch||e.item.link,!!e.item.activeMatch)}),href:e.item.link,target:e.item.target,rel:e.item.rel,"no-icon":e.item.noIcon,tabindex:"0"},{default:h(()=>[l("span",{innerHTML:e.item.text},null,8,ia)]),_:1},8,["class","href","target","rel","no-icon"]))}}),ra=y(la,[["__scopeId","data-v-815115f5"]]),ca=k({__name:"VPNavBarMenuGroup",props:{item:{}},setup(e){const t=e,{page:n}=V(),s=r=>"component"in r?!1:"link"in r?W(n.value.relativePath,r.link,!!t.item.activeMatch):r.items.some(s),a=P(()=>s(t.item));return(r,c)=>(o(),g(be,{class:w({VPNavBarMenuGroup:!0,active:i(W)(i(n).relativePath,e.item.activeMatch,!!e.item.activeMatch)||a.value}),button:e.item.text,items:e.item.items},null,8,["class","button","items"]))}}),ua={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},da=k({__name:"VPNavBarMenu",setup(e){const{theme:t}=V();return(n,s)=>i(t).nav?(o(),u("nav",ua,[s[0]||(s[0]=l("span",{id:"main-nav-aria-label",class:"visually-hidden"}," Main Navigation ",-1)),(o(!0),u(x,null,M(i(t).nav,a=>(o(),u(x,{key:JSON.stringify(a)},["link"in a?(o(),g(ra,{key:0,item:a},null,8,["item"])):"component"in a?(o(),g(B(a.component),j({key:1,ref_for:!0},a.props),null,16)):(o(),g(ca,{key:2,item:a},null,8,["item"]))],64))),128))])):p("",!0)}}),va=y(da,[["__scopeId","data-v-afb2845e"]]);function fa(e){const{localeIndex:t,theme:n}=V();function s(a){var I,C,A;const r=a.split("."),c=(I=n.value.search)==null?void 0:I.options,f=c&&typeof c=="object",v=f&&((A=(C=c.locales)==null?void 0:C[t.value])==null?void 0:A.translations)||null,m=f&&c.translations||null;let _=v,$=m,L=e;const N=r.pop();for(const H of r){let G=null;const K=L==null?void 0:L[H];K&&(G=L=K);const ae=$==null?void 0:$[H];ae&&(G=$=ae);const oe=_==null?void 0:_[H];oe&&(G=_=oe),K||(L=G),ae||($=G),oe||(_=G)}return(_==null?void 0:_[N])??($==null?void 0:$[N])??(L==null?void 0:L[N])??""}return s}const ha=["aria-label"],ma={class:"DocSearch-Button-Container"},pa={class:"DocSearch-Button-Placeholder"},ye=k({__name:"VPNavBarSearchButton",setup(e){const n=fa({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(s,a)=>(o(),u("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":i(n)("button.buttonAriaLabel")},[l("span",ma,[a[0]||(a[0]=l("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1)),l("span",pa,S(i(n)("button.buttonText")),1)]),a[1]||(a[1]=l("span",{class:"DocSearch-Button-Keys"},[l("kbd",{class:"DocSearch-Button-Key"}),l("kbd",{class:"DocSearch-Button-Key"},"K")],-1))],8,ha))}}),ka={class:"VPNavBarSearch"},_a={id:"local-search"},ba={key:1,id:"docsearch"},ga=k({__name:"VPNavBarSearch",setup(e){const t=qe(()=>We(()=>import("./VPLocalSearchBox.CI43rhTA.js"),__vite__mapDeps([0,1]))),n=()=>null,{theme:s}=V(),a=T(!1),r=T(!1);D(()=>{});function c(){a.value||(a.value=!0,setTimeout(f,16))}function f(){const $=new Event("keydown");$.key="k",$.metaKey=!0,window.dispatchEvent($),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||f()},16)}function v($){const L=$.target,N=L.tagName;return L.isContentEditable||N==="INPUT"||N==="SELECT"||N==="TEXTAREA"}const m=T(!1);re("k",$=>{($.ctrlKey||$.metaKey)&&($.preventDefault(),m.value=!0)}),re("/",$=>{v($)||($.preventDefault(),m.value=!0)});const _="local";return($,L)=>{var N;return o(),u("div",ka,[i(_)==="local"?(o(),u(x,{key:0},[m.value?(o(),g(i(t),{key:0,onClose:L[0]||(L[0]=I=>m.value=!1)})):p("",!0),l("div",_a,[b(ye,{onClick:L[1]||(L[1]=I=>m.value=!0)})])],64)):i(_)==="algolia"?(o(),u(x,{key:1},[a.value?(o(),g(i(n),{key:0,algolia:((N=i(s).search)==null?void 0:N.options)??i(s).algolia,onVnodeBeforeMount:L[2]||(L[2]=I=>r.value=!0)},null,8,["algolia"])):p("",!0),r.value?p("",!0):(o(),u("div",ba,[b(ye,{onClick:c})]))],64)):p("",!0)])}}}),$a=k({__name:"VPNavBarSocialLinks",setup(e){const{theme:t}=V();return(n,s)=>i(t).socialLinks?(o(),g(ge,{key:0,class:"VPNavBarSocialLinks",links:i(t).socialLinks},null,8,["links"])):p("",!0)}}),ya=y($a,[["__scopeId","data-v-ef6192dc"]]),Pa=["href","rel","target"],La=["innerHTML"],Va={key:2},Sa=k({__name:"VPNavBarTitle",setup(e){const{site:t,theme:n}=V(),{hasSidebar:s}=O(),{currentLang:a}=R(),r=P(()=>{var v;return typeof n.value.logoLink=="string"?n.value.logoLink:(v=n.value.logoLink)==null?void 0:v.link}),c=P(()=>{var v;return typeof n.value.logoLink=="string"||(v=n.value.logoLink)==null?void 0:v.rel}),f=P(()=>{var v;return typeof n.value.logoLink=="string"||(v=n.value.logoLink)==null?void 0:v.target});return(v,m)=>(o(),u("div",{class:w(["VPNavBarTitle",{"has-sidebar":i(s)}])},[l("a",{class:"title",href:r.value??i(me)(i(a).link),rel:c.value,target:f.value},[d(v.$slots,"nav-bar-title-before",{},void 0,!0),i(n).logo?(o(),g(X,{key:0,class:"logo",image:i(n).logo},null,8,["image"])):p("",!0),i(n).siteTitle?(o(),u("span",{key:1,innerHTML:i(n).siteTitle},null,8,La)):i(n).siteTitle===void 0?(o(),u("span",Va,S(i(t).title),1)):p("",!0),d(v.$slots,"nav-bar-title-after",{},void 0,!0)],8,Pa)],2))}}),Ta=y(Sa,[["__scopeId","data-v-9f43907a"]]),xa={class:"items"},Na={class:"title"},wa=k({__name:"VPNavBarTranslations",setup(e){const{theme:t}=V(),{localeLinks:n,currentLang:s}=R({correspondingLink:!0});return(a,r)=>i(n).length&&i(s).label?(o(),g(be,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:i(t).langMenuLabel||"Change language"},{default:h(()=>[l("div",xa,[l("p",Na,S(i(s).label),1),(o(!0),u(x,null,M(i(n),c=>(o(),g(se,{key:c.link,item:c},null,8,["item"]))),128))])]),_:1},8,["label"])):p("",!0)}}),Ia=y(wa,[["__scopeId","data-v-acee064b"]]),Ma={class:"wrapper"},Ca={class:"container"},Aa={class:"title"},Ha={class:"content"},Ba={class:"content-body"},Ea=k({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(e){const t=e,{y:n}=xe(),{hasSidebar:s}=O(),{frontmatter:a}=V(),r=T({});return he(()=>{r.value={"has-sidebar":s.value,home:a.value.layout==="home",top:n.value===0,"screen-open":t.isScreenOpen}}),(c,f)=>(o(),u("div",{class:w(["VPNavBar",r.value])},[l("div",Ma,[l("div",Ca,[l("div",Aa,[b(Ta,null,{"nav-bar-title-before":h(()=>[d(c.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":h(()=>[d(c.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),l("div",Ha,[l("div",Ba,[d(c.$slots,"nav-bar-content-before",{},void 0,!0),b(ga,{class:"search"}),b(va,{class:"menu"}),b(Ia,{class:"translations"}),b($s,{class:"appearance"}),b(ya,{class:"social-links"}),b(na,{class:"extra"}),d(c.$slots,"nav-bar-content-after",{},void 0,!0),b(oa,{class:"hamburger",active:e.isScreenOpen,onClick:f[0]||(f[0]=v=>c.$emit("toggle-screen"))},null,8,["active"])])])])]),f[1]||(f[1]=l("div",{class:"divider"},[l("div",{class:"divider-line"})],-1))],2))}}),Fa=y(Ea,[["__scopeId","data-v-9fd4d1dd"]]),Da={key:0,class:"VPNavScreenAppearance"},Oa={class:"text"},Ga=k({__name:"VPNavScreenAppearance",setup(e){const{site:t,theme:n}=V();return(s,a)=>i(t).appearance&&i(t).appearance!=="force-dark"&&i(t).appearance!=="force-auto"?(o(),u("div",Da,[l("p",Oa,S(i(n).darkModeSwitchLabel||"Appearance"),1),b(ke)])):p("",!0)}}),Ua=y(Ga,[["__scopeId","data-v-a3e2920d"]]),ja=["innerHTML"],qa=k({__name:"VPNavScreenMenuLink",props:{item:{}},setup(e){const t=te("close-screen");return(n,s)=>(o(),g(E,{class:"VPNavScreenMenuLink",href:e.item.link,target:e.item.target,rel:e.item.rel,"no-icon":e.item.noIcon,onClick:i(t)},{default:h(()=>[l("span",{innerHTML:e.item.text},null,8,ja)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),Wa=y(qa,[["__scopeId","data-v-fa963d97"]]),za=["innerHTML"],Ka=k({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(e){const t=te("close-screen");return(n,s)=>(o(),g(E,{class:"VPNavScreenMenuGroupLink",href:e.item.link,target:e.item.target,rel:e.item.rel,"no-icon":e.item.noIcon,onClick:i(t)},{default:h(()=>[l("span",{innerHTML:e.item.text},null,8,za)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),Be=y(Ka,[["__scopeId","data-v-e04f3e85"]]),Ra={class:"VPNavScreenMenuGroupSection"},Ja={key:0,class:"title"},Ya=k({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(e){return(t,n)=>(o(),u("div",Ra,[e.text?(o(),u("p",Ja,S(e.text),1)):p("",!0),(o(!0),u(x,null,M(e.items,s=>(o(),g(Be,{key:s.text,item:s},null,8,["item"]))),128))]))}}),Xa=y(Ya,[["__scopeId","data-v-f60dbfa7"]]),Qa=["aria-controls","aria-expanded"],Za=["innerHTML"],eo=["id"],to={key:0,class:"item"},no={key:1,class:"item"},so={key:2,class:"group"},ao=k({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(e){const t=e,n=T(!1),s=P(()=>`NavScreenGroup-${t.text.replace(" ","-").toLowerCase()}`);function a(){n.value=!n.value}return(r,c)=>(o(),u("div",{class:w(["VPNavScreenMenuGroup",{open:n.value}])},[l("button",{class:"button","aria-controls":s.value,"aria-expanded":n.value,onClick:a},[l("span",{class:"button-text",innerHTML:e.text},null,8,Za),c[0]||(c[0]=l("span",{class:"vpi-plus button-icon"},null,-1))],8,Qa),l("div",{id:s.value,class:"items"},[(o(!0),u(x,null,M(e.items,f=>(o(),u(x,{key:JSON.stringify(f)},["link"in f?(o(),u("div",to,[b(Be,{item:f},null,8,["item"])])):"component"in f?(o(),u("div",no,[(o(),g(B(f.component),j({ref_for:!0},f.props,{"screen-menu":""}),null,16))])):(o(),u("div",so,[b(Xa,{text:f.text,items:f.items},null,8,["text","items"])]))],64))),128))],8,eo)],2))}}),oo=y(ao,[["__scopeId","data-v-d99bfeec"]]),io={key:0,class:"VPNavScreenMenu"},lo=k({__name:"VPNavScreenMenu",setup(e){const{theme:t}=V();return(n,s)=>i(t).nav?(o(),u("nav",io,[(o(!0),u(x,null,M(i(t).nav,a=>(o(),u(x,{key:JSON.stringify(a)},["link"in a?(o(),g(Wa,{key:0,item:a},null,8,["item"])):"component"in a?(o(),g(B(a.component),j({key:1,ref_for:!0},a.props,{"screen-menu":""}),null,16)):(o(),g(oo,{key:2,text:a.text||"",items:a.items},null,8,["text","items"]))],64))),128))])):p("",!0)}}),ro=k({__name:"VPNavScreenSocialLinks",setup(e){const{theme:t}=V();return(n,s)=>i(t).socialLinks?(o(),g(ge,{key:0,class:"VPNavScreenSocialLinks",links:i(t).socialLinks},null,8,["links"])):p("",!0)}}),co={class:"list"},uo=k({__name:"VPNavScreenTranslations",setup(e){const{localeLinks:t,currentLang:n}=R({correspondingLink:!0}),s=T(!1);function a(){s.value=!s.value}return(r,c)=>i(t).length&&i(n).label?(o(),u("div",{key:0,class:w(["VPNavScreenTranslations",{open:s.value}])},[l("button",{class:"title",onClick:a},[c[0]||(c[0]=l("span",{class:"vpi-languages icon lang"},null,-1)),q(" "+S(i(n).label)+" ",1),c[1]||(c[1]=l("span",{class:"vpi-chevron-down icon chevron"},null,-1))]),l("ul",co,[(o(!0),u(x,null,M(i(t),f=>(o(),u("li",{key:f.link,class:"item"},[b(E,{class:"link",href:f.link},{default:h(()=>[q(S(f.text),1)]),_:2},1032,["href"])]))),128))])],2)):p("",!0)}}),vo=y(uo,[["__scopeId","data-v-516e4bc3"]]),fo={class:"container"},ho=k({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(e){const t=T(null),n=Ne(ne?document.body:null);return(s,a)=>(o(),g(ve,{name:"fade",onEnter:a[0]||(a[0]=r=>n.value=!0),onAfterLeave:a[1]||(a[1]=r=>n.value=!1)},{default:h(()=>[e.open?(o(),u("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:t,id:"VPNavScreen"},[l("div",fo,[d(s.$slots,"nav-screen-content-before",{},void 0,!0),b(lo,{class:"menu"}),b(vo,{class:"translations"}),b(Ua,{class:"appearance"}),b(ro,{class:"social-links"}),d(s.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):p("",!0)]),_:3}))}}),mo=y(ho,[["__scopeId","data-v-2dd6d0c7"]]),po={key:0,class:"VPNav"},ko=k({__name:"VPNav",setup(e){const{isScreenOpen:t,closeScreen:n,toggleScreen:s}=ds(),{frontmatter:a}=V(),r=P(()=>a.value.navbar!==!1);return we("close-screen",n),Q(()=>{ne&&document.documentElement.classList.toggle("hide-nav",!r.value)}),(c,f)=>r.value?(o(),u("header",po,[b(Fa,{"is-screen-open":i(t),onToggleScreen:i(s)},{"nav-bar-title-before":h(()=>[d(c.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":h(()=>[d(c.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":h(()=>[d(c.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":h(()=>[d(c.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),b(mo,{open:i(t)},{"nav-screen-content-before":h(()=>[d(c.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":h(()=>[d(c.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):p("",!0)}}),_o=y(ko,[["__scopeId","data-v-7ad780c2"]]),bo=["role","tabindex"],go={key:1,class:"items"},$o=k({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(e){const t=e,{collapsed:n,collapsible:s,isLink:a,isActiveLink:r,hasActiveLink:c,hasChildren:f,toggle:v}=ht(P(()=>t.item)),m=P(()=>f.value?"section":"div"),_=P(()=>a.value?"a":"div"),$=P(()=>f.value?t.depth+2===7?"p":`h${t.depth+2}`:"p"),L=P(()=>a.value?void 0:"button"),N=P(()=>[[`level-${t.depth}`],{collapsible:s.value},{collapsed:n.value},{"is-link":a.value},{"is-active":r.value},{"has-active":c.value}]);function I(A){"key"in A&&A.key!=="Enter"||!t.item.link&&v()}function C(){t.item.link&&v()}return(A,H)=>{const G=z("VPSidebarItem",!0);return o(),g(B(m.value),{class:w(["VPSidebarItem",N.value])},{default:h(()=>[e.item.text?(o(),u("div",j({key:0,class:"item",role:L.value},ze(e.item.items?{click:I,keydown:I}:{},!0),{tabindex:e.item.items&&0}),[H[1]||(H[1]=l("div",{class:"indicator"},null,-1)),e.item.link?(o(),g(E,{key:0,tag:_.value,class:"link",href:e.item.link,rel:e.item.rel,target:e.item.target},{default:h(()=>[(o(),g(B($.value),{class:"text",innerHTML:e.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(o(),g(B($.value),{key:1,class:"text",innerHTML:e.item.text},null,8,["innerHTML"])),e.item.collapsed!=null&&e.item.items&&e.item.items.length?(o(),u("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:C,onKeydown:Ke(C,["enter"]),tabindex:"0"},[...H[0]||(H[0]=[l("span",{class:"vpi-chevron-right caret-icon"},null,-1)])],32)):p("",!0)],16,bo)):p("",!0),e.item.items&&e.item.items.length?(o(),u("div",go,[e.depth<5?(o(!0),u(x,{key:0},M(e.item.items,K=>(o(),g(G,{key:K.text,item:K,depth:e.depth+1},null,8,["item","depth"]))),128)):p("",!0)])):p("",!0)]),_:1},8,["class"])}}}),yo=y($o,[["__scopeId","data-v-0009425e"]]),Po=k({__name:"VPSidebarGroup",props:{items:{}},setup(e){const t=T(!0);let n=null;return D(()=>{n=setTimeout(()=>{n=null,t.value=!1},300)}),Re(()=>{n!=null&&(clearTimeout(n),n=null)}),(s,a)=>(o(!0),u(x,null,M(e.items,r=>(o(),u("div",{key:r.text,class:w(["group",{"no-transition":t.value}])},[b(yo,{item:r,depth:0},null,8,["item"])],2))),128))}}),Lo=y(Po,[["__scopeId","data-v-51288d80"]]),Vo={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},So=k({__name:"VPSidebar",props:{open:{type:Boolean}},setup(e){const{sidebarGroups:t,hasSidebar:n}=O(),s=e,a=T(null),r=Ne(ne?document.body:null);F([s,a],()=>{var f;s.open?(r.value=!0,(f=a.value)==null||f.focus()):r.value=!1},{immediate:!0,flush:"post"});const c=T(0);return F(t,()=>{c.value+=1},{deep:!0}),(f,v)=>i(n)?(o(),u("aside",{key:0,class:w(["VPSidebar",{open:e.open}]),ref_key:"navEl",ref:a,onClick:v[0]||(v[0]=Je(()=>{},["stop"]))},[v[2]||(v[2]=l("div",{class:"curtain"},null,-1)),l("nav",Vo,[v[1]||(v[1]=l("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),d(f.$slots,"sidebar-nav-before",{},void 0,!0),(o(),g(Lo,{items:i(t),key:c.value},null,8,["items"])),d(f.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):p("",!0)}}),To=y(So,[["__scopeId","data-v-42c4c606"]]),xo=k({__name:"VPSkipLink",setup(e){const{theme:t}=V(),n=ee(),s=T();F(()=>n.path,()=>s.value.focus());function a({target:r}){const c=document.getElementById(decodeURIComponent(r.hash).slice(1));if(c){const f=()=>{c.removeAttribute("tabindex"),c.removeEventListener("blur",f)};c.setAttribute("tabindex","-1"),c.addEventListener("blur",f),c.focus(),window.scrollTo(0,0)}}return(r,c)=>(o(),u(x,null,[l("span",{ref_key:"backToTop",ref:s,tabindex:"-1"},null,512),l("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:a},S(i(t).skipToContentLabel||"Skip to content"),1)],64))}}),No=y(xo,[["__scopeId","data-v-fcbfc0e0"]]),wo=k({__name:"Layout",setup(e){const{isOpen:t,open:n,close:s}=O(),a=ee();F(()=>a.path,s),ft(t,s);const{frontmatter:r}=V(),c=Ye(),f=P(()=>!!c["home-hero-image"]);return we("hero-image-slot-exists",f),(v,m)=>{const _=z("Content");return i(r).layout!==!1?(o(),u("div",{key:0,class:w(["Layout",i(r).pageClass])},[d(v.$slots,"layout-top",{},void 0,!0),b(No),b(et,{class:"backdrop",show:i(t),onClick:i(s)},null,8,["show","onClick"]),b(_o,null,{"nav-bar-title-before":h(()=>[d(v.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":h(()=>[d(v.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":h(()=>[d(v.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":h(()=>[d(v.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":h(()=>[d(v.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":h(()=>[d(v.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),b(us,{open:i(t),onOpenMenu:i(n)},null,8,["open","onOpenMenu"]),b(To,{open:i(t)},{"sidebar-nav-before":h(()=>[d(v.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":h(()=>[d(v.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),b(Rn,null,{"page-top":h(()=>[d(v.$slots,"page-top",{},void 0,!0)]),"page-bottom":h(()=>[d(v.$slots,"page-bottom",{},void 0,!0)]),"not-found":h(()=>[d(v.$slots,"not-found",{},void 0,!0)]),"home-hero-before":h(()=>[d(v.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":h(()=>[d(v.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":h(()=>[d(v.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":h(()=>[d(v.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":h(()=>[d(v.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":h(()=>[d(v.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":h(()=>[d(v.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":h(()=>[d(v.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":h(()=>[d(v.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":h(()=>[d(v.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":h(()=>[d(v.$slots,"doc-before",{},void 0,!0)]),"doc-after":h(()=>[d(v.$slots,"doc-after",{},void 0,!0)]),"doc-top":h(()=>[d(v.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":h(()=>[d(v.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":h(()=>[d(v.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":h(()=>[d(v.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":h(()=>[d(v.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":h(()=>[d(v.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":h(()=>[d(v.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":h(()=>[d(v.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),b(Zn),d(v.$slots,"layout-bottom",{},void 0,!0)],2)):(o(),g(_,{key:1}))}}}),Io=y(wo,[["__scopeId","data-v-d8b57b2d"]]),Pe={Layout:Io,enhanceApp:({app:e})=>{e.component("Badge",Xe)}},Mo={class:"rk-home"},Co={class:"rk-section"},Ao={class:"rk-stages"},Ho={class:"rk-no"},Bo={class:"rk-section"},Eo={class:"rk-flow"},Fo={class:"rk-phase"},Do={class:"rk-chips"},Oo={class:"rk-phase"},Go={class:"rk-chips"},Uo={class:"rk-more"},jo=["href"],qo={class:"rk-section"},Wo={class:"rk-install-box"},zo={class:"rk-tabs",role:"tablist"},Ko=["aria-selected","onClick"],Ro={key:0,class:"rk-command"},Jo=["aria-label","onClick"],Yo={key:1,class:"rk-note"},Xo={class:"rk-more"},Qo=["href"],Zo={class:"rk-section rk-cta"},ei={class:"rk-cta-actions"},ti=["href"],ni=["href"],J="https://paseo-req-kit.vercel.app",si=k({__name:"HomeExtras",setup(e){const t=T([{id:"npx",label:"任何系统(npx)",command:"npx -y paseo-req-kit@latest install",note:"只需要 Node.js 22+。公司内网只有 npm 镜像时:npx -y --registry=<镜像地址> paseo-req-kit@latest install(会保存为本机的 npm 源)。beta 版把 latest 换成 beta。"},{id:"unix",label:"macOS / Linux",command:`curl -fsSL ${J}/install.sh | sh`,note:"也适用于 Windows 的 Git Bash、WSL。加 -s -- --beta 安装 beta 版。"},{id:"windows",label:"Windows PowerShell",command:`irm ${J}/install.ps1 | iex`,note:"不受脚本执行策略限制。"}]);D(()=>{const v=`${window.location.origin}${U("/").replace(/\/$/,"")}`;v===J||!/^https?:/.test(v)||(t.value=t.value.map(m=>({...m,command:m.command.replace(J,v)})))});const n=T(t.value[0].id),s=T(!1);function a(v){var m;(m=navigator.clipboard)==null||m.writeText(v).then(()=>{s.value=!0,setTimeout(()=>s.value=!1,1500)})}const r=[{no:"01",title:"对话对齐需求",text:"输入 /req 和一句话。AI 先复述理解,再一次问一个问题、给出选项和推荐,最后写成一份需求说明请你确认。"},{no:"02",title:"后台开发",text:"方案设计、方案审核、代码实现、代码评审、修复,由一组 agent 在后台完成。每一步都挂在你的对话下,可以随时点开看。"},{no:"03",title:"提测与验证",text:"研发完成写好提测说明。可以接着自动验证,也可以停下来交给测试同事,在测试环境里验证。"},{no:"04",title:"逐条验收",text:"收到结论和报告后,AI 按验收标准一条一条带你核对,记录结果。合并上线仍然由人决定。"}],c=["方案设计","方案审核 ⇄ 修订","代码实现","代码评审 ⇄ 修复","提测说明"],f=["服务启动","功能验证","缺陷修复 ⇄ 复验","完成报告"];return(v,m)=>(o(),u("div",Mo,[l("section",Co,[m[0]||(m[0]=l("h2",{class:"rk-title"},"一个需求,四个阶段",-1)),m[1]||(m[1]=l("p",{class:"rk-lead"},"你负责把需求讲清楚和最后验收,中间的工作交给 agent。",-1)),l("div",Ao,[(o(),u(x,null,M(r,_=>l("div",{key:_.no,class:"rk-stage"},[l("div",Ho,S(_.no),1),l("h3",null,S(_.title),1),l("p",null,S(_.text),1)])),64))])]),l("section",Bo,[m[5]||(m[5]=l("h2",{class:"rk-title"},"流水线",-1)),m[6]||(m[6]=l("p",{class:"rk-lead"}," 做事的和检查的是不同的 agent,每一步只看文件、不靠记忆;审核、评审、验证不通过就返工,轮数有上限,遗留问题如实写进报告。 ",-1)),l("div",Eo,[l("div",Fo,[m[2]||(m[2]=l("div",{class:"rk-phase-name"},"研发阶段",-1)),l("div",Do,[(o(),u(x,null,M(c,_=>l("span",{key:_,class:"rk-chip"},S(_),1)),64))])]),m[4]||(m[4]=l("div",{class:"rk-gate",title:"执行方式为“分阶段”时在这里停下,等待提测"},[l("span",null,"闸口"),l("small",null,"连续 / 分阶段 / 只做研发")],-1)),l("div",Oo,[m[3]||(m[3]=l("div",{class:"rk-phase-name"},"测试验证阶段",-1)),l("div",Go,[(o(),u(x,null,M(f,_=>l("span",{key:_,class:"rk-chip"},S(_),1)),64))])])]),l("p",Uo,[l("a",{href:i(U)("/guide/how-it-works")},"了解工作原理 →",8,jo)])]),l("section",qo,[m[7]||(m[7]=l("h2",{class:"rk-title"},"安装",-1)),m[8]||(m[8]=l("p",{class:"rk-lead"},"在运行 Paseo daemon 的机器上执行一条命令:检查环境、安装、装好 /req 等 skill、引导你选择 agent。再次运行即升级。",-1)),l("div",Wo,[l("div",zo,[(o(!0),u(x,null,M(t.value,_=>(o(),u("button",{key:_.id,role:"tab","aria-selected":n.value===_.id,class:w({active:n.value===_.id}),onClick:$=>n.value=_.id},S(_.label),11,Ko))),128))]),(o(!0),u(x,null,M(t.value,_=>(o(),u(x,{key:_.id},[n.value===_.id?(o(),u("div",Ro,[l("code",null,S(_.command),1),l("button",{class:"rk-copy","aria-label":s.value?"已复制":"复制命令",onClick:$=>a(_.command)},S(s.value?"已复制":"复制"),9,Jo)])):p("",!0),n.value===_.id?(o(),u("p",Yo,S(_.note),1)):p("",!0)],64))),128))]),l("p",Xo,[l("a",{href:i(U)("/guide/getting-started")},"快速开始 →",8,Qo)])]),l("section",Zo,[m[9]||(m[9]=l("h2",{class:"rk-title"},"给测试、产品、项目经理用的需求开发体系",-1)),m[10]||(m[10]=l("p",{class:"rk-lead"},"不用读代码,也能把一个需求从“我想要……”推进到“可以验收”。每一步的产物都在仓库里,可以随时查看、亲自核对。",-1)),l("div",ei,[l("a",{class:"rk-button brand",href:i(U)("/guide/getting-started")},"开始使用",8,ti),l("a",{class:"rk-button",href:i(U)("/guide/user")},"阅读使用者指南",8,ni)])])]))}}),ai=y(si,[["__scopeId","data-v-4e115be8"]]),ii={extends:Pe,Layout:()=>$e(Pe.Layout,null,{"home-features-after":()=>$e(ai)})};export{ii as R,fa as c,V as u};
@@ -1,4 +1,4 @@
1
- import{_ as i,o as a,c as t,a3 as e}from"./chunks/framework.B9qR_F1m.js";const c=JSON.parse('{"title":"快速开始","description":"","frontmatter":{},"headers":[],"relativePath":"guide/getting-started.md","filePath":"guide/getting-started.md","lastUpdated":1792362729000}'),l={name:"guide/getting-started.md"};function p(n,s,h,d,k,o){return a(),t("div",null,[...s[0]||(s[0]=[e(`<h1 id="快速开始" tabindex="-1">快速开始 <a class="header-anchor" href="#快速开始" aria-label="Permalink to &quot;快速开始&quot;">​</a></h1><p>从安装到第一个需求,大约 15 分钟。安装只需在<strong>运行 Paseo daemon 的那台机器</strong>上做一次。</p><h2 id="_1-安装" tabindex="-1">1. 安装 <a class="header-anchor" href="#_1-安装" aria-label="Permalink to &quot;1. 安装&quot;">​</a></h2><div class="vp-code-group vp-adaptive-theme"><div class="tabs"><input type="radio" name="group-obXMt" id="tab-Gy_RC4v" checked><label data-title="任何系统(npx)" for="tab-Gy_RC4v">任何系统(npx)</label><input type="radio" name="group-obXMt" id="tab-fozWYYd"><label data-title="公司内网(npm 镜像)" for="tab-fozWYYd">公司内网(npm 镜像)</label><input type="radio" name="group-obXMt" id="tab-PbTvA-B"><label data-title="macOS / Linux" for="tab-PbTvA-B">macOS / Linux</label><input type="radio" name="group-obXMt" id="tab-vQfmzCT"><label data-title="Windows PowerShell" for="tab-vQfmzCT">Windows PowerShell</label><input type="radio" name="group-obXMt" id="tab-ofxDfzS"><label data-title="Windows Git Bash / WSL" for="tab-ofxDfzS">Windows Git Bash / WSL</label></div><div class="blocks"><div class="language-sh vp-adaptive-theme active"><button title="Copy Code" class="copy"></button><span class="lang">sh</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;">npx</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -y</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> paseo-req-kit@latest</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> install</span></span></code></pre></div><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</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;">npx</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -y</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --registry=https://npm.example.internal/</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> paseo-req-kit@latest</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> install</span></span></code></pre></div><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</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;">curl</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -fsSL</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> https://paseo-req-kit.vercel.app/install.sh</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> sh</span></span></code></pre></div><div class="language-powershell vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">powershell</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;">irm https:</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">//</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">paseo</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">-</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">req</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">-</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">kit.vercel.app</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">/</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">install.ps1 </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">|</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> iex</span></span></code></pre></div><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</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;">curl</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -fsSL</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> https://paseo-req-kit.vercel.app/install.sh</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> sh</span></span></code></pre></div></div></div><p>几种写法做的事情完全一样(1.13 起,安装脚本只是先选好版本,再运行这个版本自带的 <code>install</code>)。只要能访问 npm 源就能装:公司内网只有 npm 镜像、打不开 GitHub 和这个站点时,用 <code>--registry</code> 写上镜像地址,它会保存为本机的 npm 源,以后 <code>req upgrade</code> 也从镜像取。</p><p>安装会依次:</p><ol><li>检查 Node.js 22+、npm 和 git;确定 npm 源;</li><li>安装 <code>paseo-req-kit</code>(npm 上有就从 npm 安装,否则用 GitHub Release 的安装包;npm 全局目录不可写时装到 <code>~/.req-kit/npm</code>,不需要 sudo);</li><li>检查 Paseo:没有 Paseo 时安装与 req-kit 匹配的 Paseo 命令行(<code>@getpaseo/cli</code>),开启它自带的网页界面并启动 daemon;已有 Paseo 时核对版本、开启网页界面(不会自动重启正在运行的 daemon)。之后浏览器打开 <code>http://localhost:6767/</code> 就是 Paseo;</li><li>运行 <code>req setup</code>:把这个版本装到 <code>~/tools/req-kit/versions/&lt;版本&gt;</code>,并为 Claude Code、Codex 等安装 <code>/req</code> 等 skill;</li><li>安装脚本会自动选好&quot;实现&quot;(builder)、&quot;评审&quot;(reviewer)和备用模型用的 agent(1.12 起;也可以运行 <code>req configure</code> 逐项选择,或在 Paseo 插件设置的&quot;模型&quot;页修改)——两个不同厂商的模型评审效果更好;</li><li>最后询问是否安装 req-kit 的 Paseo 插件:在 Paseo 的界面里看需求总览、进度和文档,并确认方案、停止、继续(会先征得同意再打开 Paseo 的插件总开关)。</li></ol><p>再次运行同一条命令即升级。装好后运行 <code>req docs</code> 可以在本机打开这份文档(和装的版本一致,不需要外网)。常用选项:</p><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</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;">npx</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -y</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> paseo-req-kit@beta</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> install</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # beta 版</span></span>
1
+ import{_ as i,o as a,c as t,a3 as e}from"./chunks/framework.B9qR_F1m.js";const c=JSON.parse('{"title":"快速开始","description":"","frontmatter":{},"headers":[],"relativePath":"guide/getting-started.md","filePath":"guide/getting-started.md","lastUpdated":1792362729000}'),l={name:"guide/getting-started.md"};function p(n,s,h,d,k,o){return a(),t("div",null,[...s[0]||(s[0]=[e(`<h1 id="快速开始" tabindex="-1">快速开始 <a class="header-anchor" href="#快速开始" aria-label="Permalink to &quot;快速开始&quot;">​</a></h1><p>从安装到第一个需求,大约 15 分钟。安装只需在<strong>运行 Paseo daemon 的那台机器</strong>上做一次。</p><h2 id="_1-安装" tabindex="-1">1. 安装 <a class="header-anchor" href="#_1-安装" aria-label="Permalink to &quot;1. 安装&quot;">​</a></h2><div class="vp-code-group vp-adaptive-theme"><div class="tabs"><input type="radio" name="group-TAcvS" id="tab-XMB_vFj" checked><label data-title="任何系统(npx)" for="tab-XMB_vFj">任何系统(npx)</label><input type="radio" name="group-TAcvS" id="tab-4HSHUrY"><label data-title="公司内网(npm 镜像)" for="tab-4HSHUrY">公司内网(npm 镜像)</label><input type="radio" name="group-TAcvS" id="tab-L4K5jsO"><label data-title="macOS / Linux" for="tab-L4K5jsO">macOS / Linux</label><input type="radio" name="group-TAcvS" id="tab-R2DA-AF"><label data-title="Windows PowerShell" for="tab-R2DA-AF">Windows PowerShell</label><input type="radio" name="group-TAcvS" id="tab-Yn4YeOf"><label data-title="Windows Git Bash / WSL" for="tab-Yn4YeOf">Windows Git Bash / WSL</label></div><div class="blocks"><div class="language-sh vp-adaptive-theme active"><button title="Copy Code" class="copy"></button><span class="lang">sh</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;">npx</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -y</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> paseo-req-kit@latest</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> install</span></span></code></pre></div><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</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;">npx</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -y</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --registry=https://npm.example.internal/</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> paseo-req-kit@latest</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> install</span></span></code></pre></div><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</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;">curl</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -fsSL</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> https://paseo-req-kit.vercel.app/install.sh</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> sh</span></span></code></pre></div><div class="language-powershell vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">powershell</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;">irm https:</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">//</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">paseo</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">-</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">req</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">-</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">kit.vercel.app</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">/</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">install.ps1 </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">|</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> iex</span></span></code></pre></div><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</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;">curl</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -fsSL</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> https://paseo-req-kit.vercel.app/install.sh</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> sh</span></span></code></pre></div></div></div><p>几种写法做的事情完全一样(1.13 起,安装脚本只是先选好版本,再运行这个版本自带的 <code>install</code>)。只要能访问 npm 源就能装:公司内网只有 npm 镜像、打不开 GitHub 和这个站点时,用 <code>--registry</code> 写上镜像地址,它会保存为本机的 npm 源,以后 <code>req upgrade</code> 也从镜像取。</p><p>安装会依次:</p><ol><li>检查 Node.js 22+、npm 和 git;确定 npm 源;</li><li>安装 <code>paseo-req-kit</code>(npm 上有就从 npm 安装,否则用 GitHub Release 的安装包;npm 全局目录不可写时装到 <code>~/.req-kit/npm</code>,不需要 sudo);</li><li>检查 Paseo:没有 Paseo 时安装与 req-kit 匹配的 Paseo 命令行(<code>@getpaseo/cli</code>),开启它自带的网页界面并启动 daemon;已有 Paseo 时核对版本、开启网页界面(不会自动重启正在运行的 daemon)。之后浏览器打开 <code>http://localhost:6767/</code> 就是 Paseo;</li><li>运行 <code>req setup</code>:把这个版本装到 <code>~/tools/req-kit/versions/&lt;版本&gt;</code>,并为 Claude Code、Codex 等安装 <code>/req</code> 等 skill;</li><li>安装脚本会自动选好&quot;实现&quot;(builder)、&quot;评审&quot;(reviewer)和备用模型用的 agent(1.12 起;也可以运行 <code>req configure</code> 逐项选择,或在 Paseo 插件设置的&quot;模型&quot;页修改)——两个不同厂商的模型评审效果更好;</li><li>最后询问是否安装 req-kit 的 Paseo 插件:在 Paseo 的界面里看需求总览、进度和文档,并确认方案、停止、继续(会先征得同意再打开 Paseo 的插件总开关)。</li></ol><p>再次运行同一条命令即升级。装好后运行 <code>req docs</code> 可以在本机打开这份文档(和装的版本一致,不需要外网)。常用选项:</p><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</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;">npx</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -y</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> paseo-req-kit@beta</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> install</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # beta 版</span></span>
2
2
  <span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">npx</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -y</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> paseo-req-kit@1.13.0</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> install</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # 指定版本(1.13 起)</span></span>
3
3
  <span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">npx</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -y</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> paseo-req-kit@latest</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> install</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --skip-paseo</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # 不检查、不安装 Paseo</span></span>
4
4
  <span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">curl</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -fsSL</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> https://paseo-req-kit.vercel.app/install.sh</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> sh</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -s</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --beta</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # 包括 beta 版</span></span>
@@ -1 +1 @@
1
- import{_ as o,o as e,c as r,a3 as d}from"./chunks/framework.B9qR_F1m.js";const g=JSON.parse('{"title":"使用者指南","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"guide/user.md","filePath":"guide/user.md","lastUpdated":null}'),u={name:"guide/user.md"};function q(s,t,a,i,l,n){return e(),r("div",null,[...t[0]||(t[0]=[d('<div><h1 id="使用者指南" tabindex="-1">使用者指南 <a class="header-anchor" href="#使用者指南" aria-label="Permalink to &quot;使用者指南&quot;">​</a></h1><p>req-kit 帮你把一个需求从&quot;我想要……&quot;做到&quot;可以验收&quot;:你在 Paseo 的对话里把需求讲清楚、确认一份需求说明,之后的方案设计、写代码、评审、测试和报告由一组 AI agent 在后台完成,结果发回同一个对话。</p><p>适合测试、产品经理、项目经理等不写代码、但熟悉需求和测试的同事。你不需要读代码,但可以随时查看每一步的产物,也可以亲自执行测试命令核对结果。</p><h2 id="第一次使用之前" tabindex="-1">第一次使用之前 <a class="header-anchor" href="#第一次使用之前" aria-label="Permalink to &quot;第一次使用之前&quot;">​</a></h2><p>请开发同事确认这台机器已经装好 req-kit(<code>/req-doctor</code> 全部正常),并且项目已经接入:在项目根目录的对话中运行过 <code>/req-setup</code>,生成了项目说明和验证方法。测试同事熟悉项目的话,也可以自己运行 <code>/req-setup</code>。</p><h2 id="提一个需求" tabindex="-1">提一个需求 <a class="header-anchor" href="#提一个需求" aria-label="Permalink to &quot;提一个需求&quot;">​</a></h2><ol><li><strong>准备工作区</strong>:每个需求最好有自己的 worktree 工作区,几个需求可以同时进行,互不影响。两种方式任选: <ul><li>直接在项目的对话里开始,AI 问到时选&quot;开发时自动新建工作区&quot;:照常谈需求,启动开发时流水线会自动新建工作区并在那里开发,这个对话不用动。</li><li>自己新建:在 Paseo 中点 <strong>New workspace</strong> → 选择项目 → <strong>Isolation</strong> 选 <strong>New worktree</strong> → 起点选主分支,然后在新工作区的对话里开始。</li></ul></li><li><strong>输入 <code>/req</code> 和一句话</strong>:例如 <code>/req 登录页增加短信验证码登录</code>。用 Pi 时输入 <code>/skill:req ……</code>。</li><li><strong>回答问题</strong>:AI 会先复述它的理解,然后一次问一个问题,给出选项和推荐。它会问到异常情况、权限、已有数据、测试数据和验证环境,这些往往是你最清楚的。拿不准时可以说&quot;你定&quot;,它会采用推荐项并记为假设,最后请你过目。</li><li><strong>独立审阅</strong>(标准档):确认之前,AI 会请另一个模型把需求说明独立审一遍,几分钟后把发现的问题(歧义、遗漏、没法验证的验收标准)逐个问你。这一步常常能省掉开发之后的返工。</li><li><strong>确认需求说明</strong>:AI 给出一份 10 行以内的摘要,完整的需求说明在 <code>docs/features/&lt;日期&gt;-&lt;名称&gt;/spec.md</code>。确认后它会问是否开始开发。</li><li><strong>等待</strong>:开发在后台进行,通常需要几个小时,不需要盯着。期间你会收到几句进展(方案定了、开始验证等)。</li></ol><p>小改动(改文案、样式、一个配置项)会走快速流程:只问 2–3 个问题,开发环节各做一轮。</p><p><strong>需求的类型</strong>:AI 复述时会和你确认这是哪一类,流水线按类型走不同的做法:</p><table tabindex="0"><thead><tr><th>类型</th><th>说法举例</th><th>流水线怎么做</th><th>你需要讲清楚的</th></tr></thead><tbody><tr><td>新需求</td><td>&quot;加一个……&quot;</td><td>方案、实现、评审、验证</td><td>要什么、怎么算做对</td></tr><tr><td>缺陷</td><td>&quot;……不对&quot;&quot;报错了&quot;</td><td>先复现、找到原因再修;复现不了会回来问你</td><td>复现步骤:环境、账号或数据、操作、看到的、应有的</td></tr><tr><td>重构</td><td>&quot;整理一下……&quot;&quot;升级依赖&quot;</td><td>先用测试锁住现有行为,再小步改,确认行为没变</td><td>改进目标,以及哪些行为必须保持不变</td></tr><tr><td>评估</td><td>&quot;能不能做……&quot;&quot;影响多大&quot;</td><td>只调研、写评估报告,由另一个模型审阅,不写代码</td><td>要回答的问题,结论用来做什么决定</td></tr></tbody></table><p>评估做完后,可以直接说&quot;按评估结果提一个新需求&quot;。</p><p><strong>前端和后端都要改</strong>:另一个仓库已经由开发同事登记过(<code>/req-setup</code> 时登记)的,AI 会问是否作为联合需求一起做:流水线先设计整体方案和双方的接口约定,再在每个仓库各开一个工作区同时开发,最后一起验证,报告里写明每个仓库的分支和合并顺序。</p><p><strong>验收标准带例子</strong>:AI 写验收标准时会给每条配上具体的数据(&quot;输入 13800000000,60 秒内再点发送,提示&#39;请 45 秒后重试&#39;&quot;)。请认真看这些例子:它们会直接变成测试检查的期望值,你确认的就是测试会检查的东西。</p><p><strong>开工前先看一眼&quot;做完后会看到什么&quot;</strong>(标准档的界面改动):方案审核通过后、写代码之前,流水线会停下来,AI 把 <code>preview.md</code> 的要点讲给你听:会看到什么变化、有哪些需要你确认的假设;界面改动还会有静态的原型页面(功能目录的 <code>prototype/</code> 中),可以在浏览器里打开看。说&quot;可以&quot;就开始写代码;想改的直接说,AI 会更新需求说明,方案调整后再请你看一次。这时调整的成本最低。</p><p><strong>研发和测试分开做</strong>(标准档,确定档位时 AI 会问,团队配置里定好了就不问):</p><ul><li><strong>连续</strong>(默认):研发完成后流水线接着做测试验证,一次跑完。</li><li><strong>分阶段</strong>:研发完成、写好提测说明(<code>handoff.md</code>)后停下来通知你:&quot;研发完成,可以提测&quot;。你或测试同事准备好之后说&quot;开始测试验证&quot;,AI 会讲一遍提测说明,问清在哪里测(本地,或已部署的测试环境)、发现缺陷怎么办(当场修复、退回研发修复后再提测,或只记录),然后开始;也可以预约时间。用&quot;开发时自动新建工作区&quot;开发的需求,测试同事可以在自己的对话里输入 <code>/req 开始测试验证 &lt;需求名称&gt;</code> 接手。</li><li><strong>只做研发</strong>:做到提测说明和研发报告为止,测试由人完成,验收时 AI 会按提测说明带你逐条测试。</li></ul><h2 id="过程中" tabindex="-1">过程中 <a class="header-anchor" href="#过程中" aria-label="Permalink to &quot;过程中&quot;">​</a></h2><table tabindex="0"><thead><tr><th>你想做的</th><th>在对话里说</th></tr></thead><tbody><tr><td>看进度</td><td>&quot;做到哪了&quot;(会说明当前在哪一步、agent 最近在做什么,例如正在运行测试)</td></tr><tr><td>暂停</td><td>&quot;先停一下&quot;(当前步骤做到一半的工作不保留,已完成的步骤保留)</td></tr><tr><td>继续</td><td>&quot;继续开发&quot;</td></tr><tr><td>确认方案</td><td>收到&quot;请确认方案&quot;时,看过之后说&quot;可以,按这个做&quot;,或者说要改哪里</td></tr><tr><td>改需求</td><td>&quot;我想改一下……&quot;:先暂停,谈清变化的部分,更新需求说明(版本加 1,记入 <code>changes.md</code>)后继续,开发会在已有方案和代码的基础上只处理变化的部分。开发已经完成的也可以改</td></tr><tr><td>看看项目里有哪些需求</td><td>&quot;现在有哪些需求&quot;:列出所有工作区中的需求和各自的阶段</td></tr><tr><td>研发完成后提测</td><td>&quot;开始测试验证&quot;(分阶段执行时);想晚点开始就说&quot;等测试环境部署好,明早 9 点开始测试&quot;</td></tr><tr><td>晚点再开始</td><td>确认需求后说&quot;今晚 10 点开始&quot;&quot;明天早上开始&quot;:到时会在这个对话里自动开始,说&quot;先停一下&quot;可以取消</td></tr><tr><td>接手别人的需求</td><td>&quot;这个需求之前是同事提的,现在什么情况&quot;:讲清现状、待决事项和下一步</td></tr></tbody></table><p>也可以不进对话,在终端里用 <code>req</code> 命令(需要开发同事装好并加入 PATH,见 <a href="./install">安装与升级</a>):在项目目录中 <code>req list</code> 看所有需求,<code>req status</code> 看进度(多个需求时写名称的一部分,如 <code>req status sms-login</code>),<code>req stop</code>、<code>req resume</code> 暂停和继续。</p><p>装了 req-kit 插件的话(见 <a href="./install">安装与升级</a> 第 13 节),在 Paseo 侧边栏点&quot;需求&quot;:本机所有项目的需求一页看完,&quot;需要你处理&quot;的排在最前;点开一个需求能看到每一步的进度和用时、读需求说明、方案、确认预览和完成报告,也可以直接确认方案、停止、继续或开始测试验证。网页端、桌面版和手机上都能用。</p><p>1.14 起,需求从开始谈的时候就出现在插件里(状态&quot;对齐中&quot;);需求说明确认了却还没开始开发(超过 30 分钟),或者上次启动没成功的,会出现在&quot;等你处理&quot;里,点&quot;开始开发&quot;就能开始,进展照常发回谈需求的那个对话。</p><p>1.12 起,首页最上面是&quot;等你处理&quot;:所有等你确认方案、回答问题、中断了的需求,等得最久的在前,每条写明要做什么、等了多久。方案可以直接确认,也可以写修改意见;方案审核的问题可以直接写回答,插件会转给这个需求的对话,效果和在对话里回答一样。首页的&quot;配置&quot;列出 req-kit 的全部设置:每一项是什么、现在的值、来自本机、团队还是项目的配置文件,可以按项目查看、搜索、只看改过的。</p><p><strong>在原型上提意见(1.13 起)。</strong> 界面改动的需求,在请你确认方案时会有一份界面原型。在插件首页的&quot;等你处理&quot;或需求页面最上面,点**&quot;审查原型并确认方案&quot;**按钮(终端里是 <code>req review &lt;需求&gt;</code>),原型审查页就在 Paseo 里打开(手机上会在浏览器中打开;嫌窗口小时点右上角&quot;在新窗口打开&quot;):</p><ul><li>标着 ①②③ 的是这次要改的地方,右边写着各自对应的验收标准,顺着看就不会漏。</li><li>想改哪里就<strong>点哪里</strong>,选一种改法(文字改成…、大一点、换颜色、换位置、删掉、这里加东西……),再用自己的话补一句。不用想专业词汇,你点的是哪个按钮、原来是什么颜色和大小,页面会自动记下来交给 AI。</li><li>想换文字就<strong>双击文字</strong>,直接改成你想要的字。</li><li>正常、出错、空数据这些状态,以及电脑、手机宽度,在页面上方切换。</li><li>写的意见会自动保存。看完后点&quot;提交修改意见&quot;,需求会话会据此改需求说明,改好后请你再确认;改过的原型再打开时,会用绿色框标出这一版改了哪里。没有要改的,点&quot;同意开始写代码&quot;。</li></ul><p><strong>还要多久(1.13 起)。</strong> 本机做完过 3 个以上同档位的需求后,开始开发时会告诉你这类需求通常要多久、用多少 token;问&quot;做到哪了&quot;或在插件的需求页面里,会看到&quot;预计还要约多久&quot;(不含等人确认的时间)。</p><p>每个步骤都会出现在这个对话的子 agent 列表里(名字形如&quot;[20261012-sms-login] 6-代码评审 第2轮&quot;),点开可以看到它在做什么。功能目录下的 <code>progress.md</code> 按时间记录了每一步的结果。</p><p>可能收到的通知(团队接入了企业 IM 的话,这些通知也会发到 IM):</p><ul><li><strong>需要你决定</strong>:方案审核发现只有你能回答的问题。AI 会逐个问你,然后继续。一天没有回答的话,会在对话里提醒一次。</li><li><strong>研发完成,可以提测</strong>(分阶段执行时):代码已写完并通过评审,提测说明在 <code>handoff.md</code>。一天没有开始测试验证的话,会在对话里提醒一次。</li><li><strong>等待批准</strong>:某一步在等权限批准,按提示打开对应的 agent 处理,或请开发同事处理。1.13 起插件的&quot;等你处理&quot;里也会显示,列出要批准的操作,点&quot;打开这个 agent&quot;直接去处理。</li><li><strong>token 用量提醒</strong>(团队设了 token 预算时):用到预算的一定比例时告知一次,开发照常进行;用完时做完当前步骤就停下,AI 会告诉你用了多少、问你是否继续。继续会再给一份预算。</li><li><strong>中断</strong>:限流、网络中断这类临时问题会先自动等待重试,仍然不行才中断,并预约半小时后自动继续(说&quot;先停一下&quot;可以取消)。AI 会说明原因和日志位置。环境类问题(例如测试服务没启动)你可以自己处理;涉及配置或代码的请开发同事处理。处理后说&quot;继续开发&quot;。</li></ul><h2 id="验收" tabindex="-1">验收 <a class="header-anchor" href="#验收" aria-label="Permalink to &quot;验收&quot;">​</a></h2><p>完成后你会收到结论和摘要,完整报告在功能目录的 <code>report.md</code>:</p><ul><li><strong>验收对照表</strong>:每条验收标准的结果,以及是怎么确认的(运行了什么命令、看到了什么、截图在哪里)。</li><li><strong>需要你确认的决定</strong>:开发过程中替你做的假设和取舍,以及被驳回的评审意见里会影响结果的那些。请逐条表态。</li><li><strong>遗留问题</strong>和<strong>需要你做的事</strong>。</li><li><strong>用时与用量</strong>:各步骤 agent 合计用了多长时间、多少 token、大约多少费用,便于估算后续需求的成本。</li></ul><p>然后说&quot;我要验收&quot;。AI 会按验收标准一条一条带你核对:告诉你怎么操作、应该看到什么;能用命令验证的给出命令,你可以自己执行。每条结果记入功能目录的 <code>acceptance.md</code>。</p><ul><li><strong>全部通过</strong>:请开发同事审阅代码并合并上线。流水线只做本地提交,不会自己合并或上线。</li><li><strong>有不通过的</strong>:逐项决定怎么处理:做得不对的,补进需求说明后继续开发;发现想要的不是这样的,按改需求处理;也可以接受现状并记下理由。</li></ul><p>测试同事可以把验收标准直接转成测试用例:每条都写成了&quot;前置条件 / 操作 / 预期结果&quot;。</p><h2 id="上线后发现问题" tabindex="-1">上线后发现问题 <a class="header-anchor" href="#上线后发现问题" aria-label="Permalink to &quot;上线后发现问题&quot;">​</a></h2><p>说&quot;线上发现……不对&quot;。AI 会先问这个问题是否正在影响真实用户:是的话,请马上联系开发同事或值班人员处理线上情况(req-kit 不碰生产环境)。然后它会问清现象、复现步骤、影响范围,关联到原来的需求,生成一份缺陷说明,按快速流程修复,修复后照常验收。</p><h2 id="注意" tabindex="-1">注意 <a class="header-anchor" href="#注意" aria-label="Permalink to &quot;注意&quot;">​</a></h2><ul><li>一个对话只谈一个需求;对话过程中不要切换工作目录。</li><li>需求属于另一个项目时,到那个项目里新开对话。</li><li>遇到&quot;未启动&quot;或其他看不懂的情况,输入 <code>/req-doctor</code> 做一次体检,或请开发同事看一下。</li></ul></div><p class="source-note">本页由仓库中的 <a href="https://github.com/yiyisf/paseo-req-kit/blob/main/docs/guide/使用者指南.md">docs/guide/使用者指南.md</a> 生成。<a href="https://github.com/yiyisf/paseo-req-kit/edit/main/docs/guide/使用者指南.md">在 GitHub 上编辑</a></p>',2)])])}const p=o(u,[["render",q]]);export{g as __pageData,p as default};
1
+ import{_ as o,o as e,c as r,a3 as d}from"./chunks/framework.B9qR_F1m.js";const g=JSON.parse('{"title":"使用者指南","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"guide/user.md","filePath":"guide/user.md","lastUpdated":null}'),u={name:"guide/user.md"};function q(s,t,l,i,a,n){return e(),r("div",null,[...t[0]||(t[0]=[d('<div><h1 id="使用者指南" tabindex="-1">使用者指南 <a class="header-anchor" href="#使用者指南" aria-label="Permalink to &quot;使用者指南&quot;">​</a></h1><p>req-kit 帮你把一个需求从&quot;我想要……&quot;做到&quot;可以验收&quot;:你在 Paseo 的对话里把需求讲清楚、确认一份需求说明,之后的方案设计、写代码、评审、测试和报告由一组 AI agent 在后台完成,结果发回同一个对话。</p><p>适合测试、产品经理、项目经理等不写代码、但熟悉需求和测试的同事。你不需要读代码,但可以随时查看每一步的产物,也可以亲自执行测试命令核对结果。</p><h2 id="第一次使用之前" tabindex="-1">第一次使用之前 <a class="header-anchor" href="#第一次使用之前" aria-label="Permalink to &quot;第一次使用之前&quot;">​</a></h2><p>请开发同事确认这台机器已经装好 req-kit(<code>/req-doctor</code> 全部正常),并且项目已经接入:在项目根目录的对话中运行过 <code>/req-setup</code>,生成了项目说明和验证方法。测试同事熟悉项目的话,也可以自己运行 <code>/req-setup</code>。</p><h2 id="提一个需求" tabindex="-1">提一个需求 <a class="header-anchor" href="#提一个需求" aria-label="Permalink to &quot;提一个需求&quot;">​</a></h2><ol><li><strong>准备工作区</strong>:每个需求最好有自己的 worktree 工作区,几个需求可以同时进行,互不影响。两种方式任选: <ul><li>直接在项目的对话里开始,AI 问到时选&quot;开发时自动新建工作区&quot;:照常谈需求,启动开发时流水线会自动新建工作区并在那里开发,这个对话不用动。</li><li>自己新建:在 Paseo 中点 <strong>New workspace</strong> → 选择项目 → <strong>Isolation</strong> 选 <strong>New worktree</strong> → 起点选主分支,然后在新工作区的对话里开始。</li></ul></li><li><strong>输入 <code>/req</code> 和一句话</strong>:例如 <code>/req 登录页增加短信验证码登录</code>。用 Pi 时输入 <code>/skill:req ……</code>。</li><li><strong>回答问题</strong>:AI 会先复述它的理解,然后一次问一个问题,给出选项和推荐。它会问到异常情况、权限、已有数据、测试数据和验证环境,这些往往是你最清楚的。拿不准时可以说&quot;你定&quot;,它会采用推荐项并记为假设,最后请你过目。</li><li><strong>独立审阅</strong>(标准档):确认之前,AI 会请另一个模型把需求说明独立审一遍,几分钟后把发现的问题(歧义、遗漏、没法验证的验收标准)逐个问你。这一步常常能省掉开发之后的返工。</li><li><strong>确认需求说明</strong>:AI 给出一份 10 行以内的摘要,完整的需求说明在 <code>docs/features/&lt;日期&gt;-&lt;名称&gt;/spec.md</code>。确认后它会问是否开始开发。</li><li><strong>等待</strong>:开发在后台进行,通常需要几个小时,不需要盯着。期间你会收到几句进展(方案定了、开始验证等)。</li></ol><p>小改动(改文案、样式、一个配置项)会走快速流程:只问 2–3 个问题,开发环节各做一轮。</p><p><strong>需求的类型</strong>:AI 复述时会和你确认这是哪一类,流水线按类型走不同的做法:</p><table tabindex="0"><thead><tr><th>类型</th><th>说法举例</th><th>流水线怎么做</th><th>你需要讲清楚的</th></tr></thead><tbody><tr><td>新需求</td><td>&quot;加一个……&quot;</td><td>方案、实现、评审、验证</td><td>要什么、怎么算做对</td></tr><tr><td>缺陷</td><td>&quot;……不对&quot;&quot;报错了&quot;</td><td>先复现、找到原因再修;复现不了会回来问你</td><td>复现步骤:环境、账号或数据、操作、看到的、应有的</td></tr><tr><td>重构</td><td>&quot;整理一下……&quot;&quot;升级依赖&quot;</td><td>先用测试锁住现有行为,再小步改,确认行为没变</td><td>改进目标,以及哪些行为必须保持不变</td></tr><tr><td>评估</td><td>&quot;能不能做……&quot;&quot;影响多大&quot;</td><td>只调研、写评估报告,由另一个模型审阅,不写代码</td><td>要回答的问题,结论用来做什么决定</td></tr></tbody></table><p>评估做完后,可以直接说&quot;按评估结果提一个新需求&quot;。</p><p><strong>前端和后端都要改</strong>:另一个仓库已经由开发同事登记过(<code>/req-setup</code> 时登记)的,AI 会问是否作为联合需求一起做:流水线先设计整体方案和双方的接口约定,再在每个仓库各开一个工作区同时开发,最后一起验证,报告里写明每个仓库的分支和合并顺序。</p><p><strong>验收标准带例子</strong>:AI 写验收标准时会给每条配上具体的数据(&quot;输入 13800000000,60 秒内再点发送,提示&#39;请 45 秒后重试&#39;&quot;)。请认真看这些例子:它们会直接变成测试检查的期望值,你确认的就是测试会检查的东西。</p><p><strong>开工前先看一眼&quot;做完后会看到什么&quot;</strong>(标准档的界面改动):方案审核通过后、写代码之前,流水线会停下来,AI 把 <code>preview.md</code> 的要点讲给你听:会看到什么变化、有哪些需要你确认的假设;界面改动还会有静态的原型页面(功能目录的 <code>prototype/</code> 中),可以在浏览器里打开看。说&quot;可以&quot;就开始写代码;想改的直接说,AI 会更新需求说明,方案调整后再请你看一次。这时调整的成本最低。</p><p><strong>研发和测试分开做</strong>(标准档,确定档位时 AI 会问,团队配置里定好了就不问):</p><ul><li><strong>连续</strong>(默认):研发完成后流水线接着做测试验证,一次跑完。</li><li><strong>分阶段</strong>:研发完成、写好提测说明(<code>handoff.md</code>)后停下来通知你:&quot;研发完成,可以提测&quot;。你或测试同事准备好之后说&quot;开始测试验证&quot;,AI 会讲一遍提测说明,问清在哪里测(本地,或已部署的测试环境)、发现缺陷怎么办(当场修复、退回研发修复后再提测,或只记录),然后开始;也可以预约时间。用&quot;开发时自动新建工作区&quot;开发的需求,测试同事可以在自己的对话里输入 <code>/req 开始测试验证 &lt;需求名称&gt;</code> 接手。</li><li><strong>只做研发</strong>:做到提测说明和研发报告为止,测试由人完成,验收时 AI 会按提测说明带你逐条测试。</li></ul><h2 id="过程中" tabindex="-1">过程中 <a class="header-anchor" href="#过程中" aria-label="Permalink to &quot;过程中&quot;">​</a></h2><table tabindex="0"><thead><tr><th>你想做的</th><th>在对话里说</th></tr></thead><tbody><tr><td>看进度</td><td>&quot;做到哪了&quot;(会说明当前在哪一步、agent 最近在做什么,例如正在运行测试)</td></tr><tr><td>暂停</td><td>&quot;先停一下&quot;(当前步骤做到一半的工作不保留,已完成的步骤保留)</td></tr><tr><td>继续</td><td>&quot;继续开发&quot;</td></tr><tr><td>确认方案</td><td>收到&quot;请确认方案&quot;时,看过之后说&quot;可以,按这个做&quot;,或者说要改哪里</td></tr><tr><td>改需求</td><td>&quot;我想改一下……&quot;:先暂停,谈清变化的部分,更新需求说明(版本加 1,记入 <code>changes.md</code>)后继续,开发会在已有方案和代码的基础上只处理变化的部分。开发已经完成的也可以改</td></tr><tr><td>看看项目里有哪些需求</td><td>&quot;现在有哪些需求&quot;:列出所有工作区中的需求和各自的阶段</td></tr><tr><td>研发完成后提测</td><td>&quot;开始测试验证&quot;(分阶段执行时);想晚点开始就说&quot;等测试环境部署好,明早 9 点开始测试&quot;</td></tr><tr><td>晚点再开始</td><td>确认需求后说&quot;今晚 10 点开始&quot;&quot;明天早上开始&quot;:到时会在这个对话里自动开始,说&quot;先停一下&quot;可以取消</td></tr><tr><td>接手别人的需求</td><td>&quot;这个需求之前是同事提的,现在什么情况&quot;:讲清现状、待决事项和下一步</td></tr></tbody></table><p>也可以不进对话,在终端里用 <code>req</code> 命令(需要开发同事装好并加入 PATH,见 <a href="./install">安装与升级</a>):在项目目录中 <code>req list</code> 看所有需求,<code>req status</code> 看进度(多个需求时写名称的一部分,如 <code>req status sms-login</code>),<code>req stop</code>、<code>req resume</code> 暂停和继续。</p><p>装了 req-kit 插件的话(见 <a href="./install">安装与升级</a> 第 13 节),在 Paseo 侧边栏点&quot;需求&quot;:本机所有项目的需求一页看完,&quot;需要你处理&quot;的排在最前;点开一个需求能看到每一步的进度和用时、读需求说明、方案、确认预览和完成报告,也可以直接确认方案、停止、继续或开始测试验证。网页端、桌面版和手机上都能用。</p><p>1.14 起,需求从开始谈的时候就出现在插件里(状态&quot;对齐中&quot;);需求说明确认了却还没开始开发(超过 30 分钟),或者上次启动没成功的,会出现在&quot;等你处理&quot;里,点&quot;开始开发&quot;就能开始,进展照常发回谈需求的那个对话。</p><p>1.12 起,首页最上面是&quot;等你处理&quot;:所有等你确认方案、回答问题、中断了的需求,等得最久的在前,每条写明要做什么、等了多久。方案可以直接确认,也可以写修改意见;方案审核的问题可以直接写回答,插件会转给这个需求的对话,效果和在对话里回答一样。首页的&quot;配置&quot;列出 req-kit 的全部设置:每一项是什么、现在的值、来自本机、团队还是项目的配置文件,可以按项目查看、搜索、只看改过的。</p><p><strong>在原型上提意见(1.13 起)。</strong> 界面改动的需求,在请你确认方案时会有一份界面原型。在插件首页的&quot;等你处理&quot;或需求页面最上面,点**&quot;审查原型并确认方案&quot;**按钮(终端里是 <code>req review &lt;需求&gt;</code>),原型审查页就在 Paseo 里打开(手机上会在浏览器中打开;嫌窗口小时点右上角&quot;在新窗口打开&quot;):</p><ul><li>标着 ①②③ 的是这次要改的地方,右边写着各自对应的验收标准,顺着看就不会漏。</li><li>想改哪里就<strong>点哪里</strong>,选一种改法(文字改成…、大一点、换颜色、换位置、删掉、这里加东西……),再用自己的话补一句。不用想专业词汇,你点的是哪个按钮、原来是什么颜色和大小,页面会自动记下来交给 AI。</li><li>想换文字就<strong>双击文字</strong>,直接改成你想要的字。</li><li>正常、出错、空数据这些状态,以及电脑、手机宽度,在页面上方切换。</li><li>写的意见会自动保存。看完后点&quot;提交修改意见&quot;,需求会话会据此改需求说明,改好后请你再确认;改过的原型再打开时,会用绿色框标出这一版改了哪里。没有要改的,点&quot;同意开始写代码&quot;。</li></ul><p><strong>还要多久(1.13 起)。</strong> 本机做完过 3 个以上同档位的需求后,开始开发时会告诉你这类需求通常要多久、用多少 token;问&quot;做到哪了&quot;或在插件的需求页面里,会看到&quot;预计还要约多久&quot;(不含等人确认的时间)。</p><p>每个步骤都会出现在这个对话的子 agent 列表里(名字形如&quot;[20261012-sms-login] 6-代码评审 第2轮&quot;),点开可以看到它在做什么。功能目录下的 <code>progress.md</code> 按时间记录了每一步的结果。</p><p>可能收到的通知(团队接入了企业 IM 的话,这些通知也会发到 IM):</p><ul><li><strong>需要你决定</strong>:方案审核发现只有你能回答的问题。AI 会逐个问你,然后继续。一天没有回答的话,会在对话里提醒一次。</li><li><strong>研发完成,可以提测</strong>(分阶段执行时):代码已写完并通过评审,提测说明在 <code>handoff.md</code>。一天没有开始测试验证的话,会在对话里提醒一次。</li><li><strong>等待批准</strong>:某一步在等权限批准,按提示打开对应的 agent 处理,或请开发同事处理。1.13 起插件的&quot;等你处理&quot;里也会显示,列出要批准的操作,点&quot;打开这个 agent&quot;直接去处理。</li><li><strong>token 用量提醒</strong>(团队设了 token 预算时):用到预算的一定比例时告知一次,开发照常进行;用完时做完当前步骤就停下,AI 会告诉你用了多少、问你是否继续。继续会再给一份预算。</li><li><strong>中断</strong>:限流、网络中断这类临时问题会先自动等待重试,仍然不行才中断,并预约半小时后自动继续(说&quot;先停一下&quot;可以取消)。AI 会说明原因和日志位置。环境类问题(例如测试服务没启动)你可以自己处理;涉及配置或代码的请开发同事处理。处理后说&quot;继续开发&quot;。</li></ul><h2 id="验收" tabindex="-1">验收 <a class="header-anchor" href="#验收" aria-label="Permalink to &quot;验收&quot;">​</a></h2><p>完成后你会收到结论和摘要,完整报告在功能目录的 <code>report.md</code>:</p><ul><li><strong>验收对照表</strong>:每条验收标准的结果,以及是怎么确认的(运行了什么命令、看到了什么、截图在哪里)。</li><li><strong>需要你确认的决定</strong>:开发过程中替你做的假设和取舍,以及被驳回的评审意见里会影响结果的那些。请逐条表态。</li><li><strong>遗留问题</strong>和<strong>需要你做的事</strong>。</li><li><strong>用时与用量</strong>:各步骤 agent 合计用了多长时间、多少 token、大约多少费用,便于估算后续需求的成本。</li></ul><p>然后说&quot;我要验收&quot;。AI 会按验收标准一条一条带你核对:告诉你怎么操作、应该看到什么;能用命令验证的给出命令,你可以自己执行。每条结果记入功能目录的 <code>acceptance.md</code>。</p><p><strong>在插件里自己验收(1.14 起)。</strong> 需求页面上点**&quot;验收清单(可一键试用)&quot;**(终端里是 <code>req checklist &lt;需求&gt;</code>),验收清单在 Paseo 里打开:</p><ul><li><p>每条验收标准写着前置条件、怎么操作、应该看到什么,以及流水线的验证结果;流水线没验证或没通过的排在最前面,报告里&quot;需要你确认的决定&quot;也列在后面请你表态。</p></li><li><p>右上角**&quot;把它跑起来试用&quot;**(终端里是 <code>req try &lt;需求&gt;</code>):用项目的 Paseo 服务脚本(<code>paseo.json</code>)在这个需求自己的工作区里把它启动起来,给出访问地址和提测说明里的测试账号、数据;用完点&quot;停止试用&quot;。项目没有服务脚本时,会给出提测说明里写的启动方法,也可以在需求的对话里说&quot;帮我把它跑起来&quot;。</p></li><li><p>每条点&quot;通过&quot;、&quot;不对&quot;(写下看到了什么)或&quot;先不验&quot;,进度自动保存。必须验的都核对完才能提交&quot;通过&quot;;有&quot;不对&quot;的就提交&quot;不通过&quot;。</p></li><li><p>提交后写成 <code>acceptance.md</code> 并提交。不通过时,不对的地方会转给这个需求的对话,它会和你一起确定怎么处理。</p></li><li><p><strong>全部通过</strong>:请开发同事审阅代码并合并上线。流水线只做本地提交,不会自己合并或上线。</p></li><li><p><strong>有不通过的</strong>:逐项决定怎么处理:做得不对的,补进需求说明后继续开发;发现想要的不是这样的,按改需求处理;也可以接受现状并记下理由。</p></li></ul><p>测试同事可以把验收标准直接转成测试用例:每条都写成了&quot;前置条件 / 操作 / 预期结果&quot;。</p><h2 id="上线后发现问题" tabindex="-1">上线后发现问题 <a class="header-anchor" href="#上线后发现问题" aria-label="Permalink to &quot;上线后发现问题&quot;">​</a></h2><p>说&quot;线上发现……不对&quot;。AI 会先问这个问题是否正在影响真实用户:是的话,请马上联系开发同事或值班人员处理线上情况(req-kit 不碰生产环境)。然后它会问清现象、复现步骤、影响范围,关联到原来的需求,生成一份缺陷说明,按快速流程修复,修复后照常验收。</p><h2 id="注意" tabindex="-1">注意 <a class="header-anchor" href="#注意" aria-label="Permalink to &quot;注意&quot;">​</a></h2><ul><li>一个对话只谈一个需求;对话过程中不要切换工作目录。</li><li>需求属于另一个项目时,到那个项目里新开对话。</li><li>遇到&quot;未启动&quot;或其他看不懂的情况,输入 <code>/req-doctor</code> 做一次体检,或请开发同事看一下。</li></ul></div><p class="source-note">本页由仓库中的 <a href="https://github.com/yiyisf/paseo-req-kit/blob/main/docs/guide/使用者指南.md">docs/guide/使用者指南.md</a> 生成。<a href="https://github.com/yiyisf/paseo-req-kit/edit/main/docs/guide/使用者指南.md">在 GitHub 上编辑</a></p>',2)])])}const p=o(u,[["render",q]]);export{g as __pageData,p as default};
@@ -1 +1 @@
1
- import{_ as o,o as e,c as r,a3 as d}from"./chunks/framework.B9qR_F1m.js";const g=JSON.parse('{"title":"使用者指南","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"guide/user.md","filePath":"guide/user.md","lastUpdated":null}'),u={name:"guide/user.md"};function q(s,t,a,i,l,n){return e(),r("div",null,[...t[0]||(t[0]=[d("",2)])])}const p=o(u,[["render",q]]);export{g as __pageData,p as default};
1
+ import{_ as o,o as e,c as r,a3 as d}from"./chunks/framework.B9qR_F1m.js";const g=JSON.parse('{"title":"使用者指南","description":"","frontmatter":{"editLink":false},"headers":[],"relativePath":"guide/user.md","filePath":"guide/user.md","lastUpdated":null}'),u={name:"guide/user.md"};function q(s,t,l,i,a,n){return e(),r("div",null,[...t[0]||(t[0]=[d("",2)])])}const p=o(u,[["render",q]]);export{g as __pageData,p as default};