paseo-req-kit 1.14.0 → 1.15.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 (219) hide show
  1. package/CHANGELOG.md +47 -0
  2. package/docs/guide//347/273/264/346/212/244/350/200/205/346/214/207/345/215/227.md +2 -0
  3. package/engine/src/review-assets/app.css +153 -234
  4. package/engine/src/review-assets/app.html +44 -32
  5. package/engine/src/review-assets/app.js +11 -7
  6. package/engine/src/review-assets/check.css +11 -56
  7. package/engine/src/review-assets/check.html +48 -22
  8. package/engine/src/review-assets/check.js +169 -86
  9. package/engine/src/review-assets/code.css +15 -92
  10. package/engine/src/review-assets/code.html +41 -26
  11. package/engine/src/review-assets/code.js +196 -101
  12. package/engine/src/review-assets/rk-icons.js +98 -0
  13. package/engine/src/review-assets/rk-tokens.css +252 -0
  14. package/engine/src/review-assets/rk.css +252 -0
  15. package/engine/src/review.ts +6 -4
  16. package/package.json +1 -1
  17. package/paseo-plugin/client/detail.tsx +31 -11
  18. package/paseo-plugin/client/format.ts +56 -0
  19. package/paseo-plugin/client/inbox.tsx +26 -20
  20. package/paseo-plugin/client/markdown.tsx +2 -1
  21. package/paseo-plugin/client/overview.tsx +21 -11
  22. package/paseo-plugin/client/review.tsx +3 -3
  23. package/paseo-plugin/client/row.tsx +38 -15
  24. package/paseo-plugin/client/stats.tsx +5 -4
  25. package/paseo-plugin/client/ui.tsx +196 -29
  26. package/paseo-plugin/package.json +1 -1
  27. package/paseo-plugin/shared/rk-colors.ts +35 -0
  28. package/site-dist/404.html +5 -5
  29. package/site-dist/assets/{app.VQ-QxRPH.js → app.Ny0BZHeG.js} +1 -1
  30. package/site-dist/assets/changelog.md.CUwudFS5.js +1 -0
  31. package/site-dist/assets/{changelog.md.CIKYJXpF.lean.js → changelog.md.CUwudFS5.lean.js} +1 -1
  32. package/site-dist/assets/chunks/@localSearchIndexroot.BmFA3hqY.js +1 -0
  33. package/site-dist/assets/chunks/{VPLocalSearchBox.CT4Vlj76.js → VPLocalSearchBox.BCWGSI0L.js} +1 -1
  34. package/site-dist/assets/chunks/{framework.B9qR_F1m.js → framework.BetZR81g.js} +1 -1
  35. package/site-dist/assets/chunks/theme.BeEUWcJI.js +2 -0
  36. package/site-dist/assets/{guide_getting-started.md.CZM53rO_.js → guide_getting-started.md.DBJ0aMgy.js} +1 -1
  37. package/site-dist/assets/{guide_getting-started.md.CZM53rO_.lean.js → guide_getting-started.md.DBJ0aMgy.lean.js} +1 -1
  38. package/site-dist/assets/{guide_how-it-works.md.D-kQsF1t.js → guide_how-it-works.md.Rn-g0Um8.js} +1 -1
  39. package/site-dist/assets/{guide_how-it-works.md.D-kQsF1t.lean.js → guide_how-it-works.md.Rn-g0Um8.lean.js} +1 -1
  40. package/site-dist/assets/{guide_index.md.CLnGCmGW.js → guide_index.md.BIF6VPBE.js} +1 -1
  41. package/site-dist/assets/{guide_index.md.CLnGCmGW.lean.js → guide_index.md.BIF6VPBE.lean.js} +1 -1
  42. package/site-dist/assets/{guide_install.md.DkCyZsOU.js → guide_install.md.kIsj5oWc.js} +1 -1
  43. package/site-dist/assets/{guide_install.md.DkCyZsOU.lean.js → guide_install.md.kIsj5oWc.lean.js} +1 -1
  44. package/site-dist/assets/guide_maintainer.md.SWALpGR5.js +1 -0
  45. package/site-dist/assets/guide_maintainer.md.SWALpGR5.lean.js +1 -0
  46. package/site-dist/assets/{guide_phases.md.BpGAb1re.js → guide_phases.md.Bnd9FQ27.js} +1 -1
  47. package/site-dist/assets/{guide_phases.md.BpGAb1re.lean.js → guide_phases.md.Bnd9FQ27.lean.js} +1 -1
  48. package/site-dist/assets/{guide_project.md.DIjDRoAq.js → guide_project.md.CzS92KTI.js} +1 -1
  49. package/site-dist/assets/{guide_project.md.DIjDRoAq.lean.js → guide_project.md.CzS92KTI.lean.js} +1 -1
  50. package/site-dist/assets/{guide_user.md.UV0WxdJa.js → guide_user.md.REc1nK8f.js} +1 -1
  51. package/site-dist/assets/{guide_user.md.UV0WxdJa.lean.js → guide_user.md.REc1nK8f.lean.js} +1 -1
  52. package/site-dist/assets/index.md.CpaGRB2c.js +1 -0
  53. package/site-dist/assets/index.md.CpaGRB2c.lean.js +1 -0
  54. package/site-dist/assets/{reference_adr_0001-step-agents-under-origin-chat.md.RtRTq7oi.js → reference_adr_0001-step-agents-under-origin-chat.md.CPq0ZVSs.js} +1 -1
  55. package/site-dist/assets/{reference_adr_0001-step-agents-under-origin-chat.md.RtRTq7oi.lean.js → reference_adr_0001-step-agents-under-origin-chat.md.CPq0ZVSs.lean.js} +1 -1
  56. package/site-dist/assets/{reference_adr_0002-no-directory-switch-in-chat.md.BxtN-Aa2.js → reference_adr_0002-no-directory-switch-in-chat.md.BZD1j8xZ.js} +1 -1
  57. package/site-dist/assets/{reference_adr_0002-no-directory-switch-in-chat.md.BxtN-Aa2.lean.js → reference_adr_0002-no-directory-switch-in-chat.md.BZD1j8xZ.lean.js} +1 -1
  58. package/site-dist/assets/{reference_adr_0003-script-engine-not-hub.md.66EgZtqx.js → reference_adr_0003-script-engine-not-hub.md.Bi4uZZaE.js} +1 -1
  59. package/site-dist/assets/{reference_adr_0003-script-engine-not-hub.md.66EgZtqx.lean.js → reference_adr_0003-script-engine-not-hub.md.Bi4uZZaE.lean.js} +1 -1
  60. package/site-dist/assets/{reference_adr_0004-result-files.md.DbqcCozI.js → reference_adr_0004-result-files.md.CNQMSs4R.js} +1 -1
  61. package/site-dist/assets/{reference_adr_0004-result-files.md.DbqcCozI.lean.js → reference_adr_0004-result-files.md.CNQMSs4R.lean.js} +1 -1
  62. package/site-dist/assets/{reference_adr_0005-no-default-branch-local-commits-only.md.CkImA4s6.js → reference_adr_0005-no-default-branch-local-commits-only.md.DeXnMAyg.js} +1 -1
  63. package/site-dist/assets/{reference_adr_0005-no-default-branch-local-commits-only.md.CkImA4s6.lean.js → reference_adr_0005-no-default-branch-local-commits-only.md.DeXnMAyg.lean.js} +1 -1
  64. package/site-dist/assets/{reference_adr_0006-skill-install-targets.md.CwY8YepV.js → reference_adr_0006-skill-install-targets.md.CwqvB8NW.js} +1 -1
  65. package/site-dist/assets/{reference_adr_0006-skill-install-targets.md.CwY8YepV.lean.js → reference_adr_0006-skill-install-targets.md.CwqvB8NW.lean.js} +1 -1
  66. package/site-dist/assets/{reference_adr_0007-own-interview-skill.md.CryhxRyG.js → reference_adr_0007-own-interview-skill.md.HlLp78db.js} +1 -1
  67. package/site-dist/assets/{reference_adr_0007-own-interview-skill.md.CryhxRyG.lean.js → reference_adr_0007-own-interview-skill.md.HlLp78db.lean.js} +1 -1
  68. package/site-dist/assets/{reference_adr_0008-entries-do-not-call-entries.md.DsRWAgeA.js → reference_adr_0008-entries-do-not-call-entries.md.D2VH2uQV.js} +1 -1
  69. package/site-dist/assets/{reference_adr_0008-entries-do-not-call-entries.md.DsRWAgeA.lean.js → reference_adr_0008-entries-do-not-call-entries.md.D2VH2uQV.lean.js} +1 -1
  70. package/site-dist/assets/{reference_adr_0009-versioned-install-layout.md.CSg1VqlW.js → reference_adr_0009-versioned-install-layout.md.D9g3dWr-.js} +1 -1
  71. package/site-dist/assets/{reference_adr_0009-versioned-install-layout.md.CSg1VqlW.lean.js → reference_adr_0009-versioned-install-layout.md.D9g3dWr-.lean.js} +1 -1
  72. package/site-dist/assets/{reference_adr_0010-generated-feature-overview.md.D8F3MK-h.js → reference_adr_0010-generated-feature-overview.md.CHOwcV4c.js} +1 -1
  73. package/site-dist/assets/{reference_adr_0010-generated-feature-overview.md.D8F3MK-h.lean.js → reference_adr_0010-generated-feature-overview.md.CHOwcV4c.lean.js} +1 -1
  74. package/site-dist/assets/{reference_adr_0011-resume-after-completion.md.BCrZrKjf.js → reference_adr_0011-resume-after-completion.md.CqdSPi49.js} +1 -1
  75. package/site-dist/assets/{reference_adr_0011-resume-after-completion.md.BCrZrKjf.lean.js → reference_adr_0011-resume-after-completion.md.CqdSPi49.lean.js} +1 -1
  76. package/site-dist/assets/{reference_adr_0012-review-panel.md.k9rrHFFc.js → reference_adr_0012-review-panel.md.d4wmLrNF.js} +1 -1
  77. package/site-dist/assets/{reference_adr_0012-review-panel.md.k9rrHFFc.lean.js → reference_adr_0012-review-panel.md.d4wmLrNF.lean.js} +1 -1
  78. package/site-dist/assets/{reference_adr_0013-no-release-tooling.md.BQeJ8dEI.js → reference_adr_0013-no-release-tooling.md.BOROmwvq.js} +1 -1
  79. package/site-dist/assets/{reference_adr_0013-no-release-tooling.md.BQeJ8dEI.lean.js → reference_adr_0013-no-release-tooling.md.BOROmwvq.lean.js} +1 -1
  80. package/site-dist/assets/{reference_adr_0014-notifier-slot.md.C23QR1xO.js → reference_adr_0014-notifier-slot.md.BAqt1Xj1.js} +1 -1
  81. package/site-dist/assets/{reference_adr_0014-notifier-slot.md.C23QR1xO.lean.js → reference_adr_0014-notifier-slot.md.BAqt1Xj1.lean.js} +1 -1
  82. package/site-dist/assets/{reference_adr_0015-incremental-continue.md.Buy7wwO8.js → reference_adr_0015-incremental-continue.md.BiUdpeq5.js} +1 -1
  83. package/site-dist/assets/{reference_adr_0015-incremental-continue.md.Buy7wwO8.lean.js → reference_adr_0015-incremental-continue.md.BiUdpeq5.lean.js} +1 -1
  84. package/site-dist/assets/{reference_adr_0016-upgrade-from-tags.md.qfIW-tqJ.js → reference_adr_0016-upgrade-from-tags.md.D48PfEFP.js} +1 -1
  85. package/site-dist/assets/{reference_adr_0016-upgrade-from-tags.md.qfIW-tqJ.lean.js → reference_adr_0016-upgrade-from-tags.md.D48PfEFP.lean.js} +1 -1
  86. package/site-dist/assets/{reference_adr_0017-use-paseo-capabilities.md.CjcGli87.js → reference_adr_0017-use-paseo-capabilities.md.CAMkamzJ.js} +1 -1
  87. package/site-dist/assets/{reference_adr_0017-use-paseo-capabilities.md.CjcGli87.lean.js → reference_adr_0017-use-paseo-capabilities.md.CAMkamzJ.lean.js} +1 -1
  88. package/site-dist/assets/{reference_adr_0018-own-worktree-option.md.fVDpgGSE.js → reference_adr_0018-own-worktree-option.md.DgkWjYL-.js} +1 -1
  89. package/site-dist/assets/{reference_adr_0018-own-worktree-option.md.fVDpgGSE.lean.js → reference_adr_0018-own-worktree-option.md.DgkWjYL-.lean.js} +1 -1
  90. package/site-dist/assets/{reference_adr_0019-parallel-orchestration.md.DrfrV0To.js → reference_adr_0019-parallel-orchestration.md.B9xqQidw.js} +1 -1
  91. package/site-dist/assets/{reference_adr_0019-parallel-orchestration.md.DrfrV0To.lean.js → reference_adr_0019-parallel-orchestration.md.B9xqQidw.lean.js} +1 -1
  92. package/site-dist/assets/{reference_adr_0020-scheduling-through-the-chat.md.BqSemGFG.js → reference_adr_0020-scheduling-through-the-chat.md.Dh81be7G.js} +1 -1
  93. package/site-dist/assets/{reference_adr_0020-scheduling-through-the-chat.md.BqSemGFG.lean.js → reference_adr_0020-scheduling-through-the-chat.md.Dh81be7G.lean.js} +1 -1
  94. package/site-dist/assets/{reference_adr_0021-npm-version-manager.md.CU3PG6y5.js → reference_adr_0021-npm-version-manager.md.Pz4vZbkE.js} +1 -1
  95. package/site-dist/assets/{reference_adr_0021-npm-version-manager.md.CU3PG6y5.lean.js → reference_adr_0021-npm-version-manager.md.Pz4vZbkE.lean.js} +1 -1
  96. package/site-dist/assets/{reference_adr_0022-develop-and-verify-phases.md.C6fQDLq4.js → reference_adr_0022-develop-and-verify-phases.md.35MxNOuj.js} +1 -1
  97. package/site-dist/assets/{reference_adr_0022-develop-and-verify-phases.md.C6fQDLq4.lean.js → reference_adr_0022-develop-and-verify-phases.md.35MxNOuj.lean.js} +1 -1
  98. package/site-dist/assets/{reference_adr_0023-types-gate-slices.md.D2E6yyYQ.js → reference_adr_0023-types-gate-slices.md.Bjufr5EK.js} +1 -1
  99. package/site-dist/assets/{reference_adr_0023-types-gate-slices.md.D2E6yyYQ.lean.js → reference_adr_0023-types-gate-slices.md.Bjufr5EK.lean.js} +1 -1
  100. package/site-dist/assets/{reference_adr_0024-confirm-early-review-axes.md.FmK_ke0x.js → reference_adr_0024-confirm-early-review-axes.md.BRxVXJa4.js} +1 -1
  101. package/site-dist/assets/{reference_adr_0024-confirm-early-review-axes.md.FmK_ke0x.lean.js → reference_adr_0024-confirm-early-review-axes.md.BRxVXJa4.lean.js} +1 -1
  102. package/site-dist/assets/{reference_adr_0025-joint-requirements.md.ChoKvMUx.js → reference_adr_0025-joint-requirements.md.ClCFyIiN.js} +1 -1
  103. package/site-dist/assets/{reference_adr_0025-joint-requirements.md.ChoKvMUx.lean.js → reference_adr_0025-joint-requirements.md.ClCFyIiN.lean.js} +1 -1
  104. package/site-dist/assets/{reference_adr_0026-machine-records-and-api.md.veybjBPq.js → reference_adr_0026-machine-records-and-api.md.Bv1k_WjT.js} +1 -1
  105. package/site-dist/assets/{reference_adr_0026-machine-records-and-api.md.veybjBPq.lean.js → reference_adr_0026-machine-records-and-api.md.Bv1k_WjT.lean.js} +1 -1
  106. package/site-dist/assets/{reference_adr_0027-paseo-plugin.md.BMX33ZNU.js → reference_adr_0027-paseo-plugin.md.CcpaKksi.js} +1 -1
  107. package/site-dist/assets/{reference_adr_0027-paseo-plugin.md.BMX33ZNU.lean.js → reference_adr_0027-paseo-plugin.md.CcpaKksi.lean.js} +1 -1
  108. package/site-dist/assets/{reference_adr_0028-external-integrations.md.DtdMe8RK.js → reference_adr_0028-external-integrations.md.CrGqXJux.js} +1 -1
  109. package/site-dist/assets/{reference_adr_0028-external-integrations.md.DtdMe8RK.lean.js → reference_adr_0028-external-integrations.md.CrGqXJux.lean.js} +1 -1
  110. package/site-dist/assets/{reference_adr_0029-requirements-from-cards.md.BHd1SQPe.js → reference_adr_0029-requirements-from-cards.md.BUVah9hV.js} +1 -1
  111. package/site-dist/assets/{reference_adr_0029-requirements-from-cards.md.BHd1SQPe.lean.js → reference_adr_0029-requirements-from-cards.md.BUVah9hV.lean.js} +1 -1
  112. package/site-dist/assets/{reference_adr_0030-card-intake-process.md.kLc-DG9_.js → reference_adr_0030-card-intake-process.md.DKMkIFXw.js} +1 -1
  113. package/site-dist/assets/{reference_adr_0030-card-intake-process.md.kLc-DG9_.lean.js → reference_adr_0030-card-intake-process.md.DKMkIFXw.lean.js} +1 -1
  114. package/site-dist/assets/{reference_adr_0031-fewer-interventions.md.BDnQcz8g.js → reference_adr_0031-fewer-interventions.md.C8e2jpbC.js} +1 -1
  115. package/site-dist/assets/{reference_adr_0031-fewer-interventions.md.BDnQcz8g.lean.js → reference_adr_0031-fewer-interventions.md.C8e2jpbC.lean.js} +1 -1
  116. package/site-dist/assets/{reference_adr_0032-npm-only-install.md.C-3L1FkX.js → reference_adr_0032-npm-only-install.md.5tFsGLKz.js} +1 -1
  117. package/site-dist/assets/{reference_adr_0032-npm-only-install.md.C-3L1FkX.lean.js → reference_adr_0032-npm-only-install.md.5tFsGLKz.lean.js} +1 -1
  118. package/site-dist/assets/{reference_adr_0033-prototype-review-and-ui-check.md.hFcQzmaa.js → reference_adr_0033-prototype-review-and-ui-check.md.CW5Soqvp.js} +1 -1
  119. package/site-dist/assets/{reference_adr_0033-prototype-review-and-ui-check.md.hFcQzmaa.lean.js → reference_adr_0033-prototype-review-and-ui-check.md.CW5Soqvp.lean.js} +1 -1
  120. package/site-dist/assets/{reference_adr_index.md.BYF-Ofor.js → reference_adr_index.md.DgUVrHoO.js} +1 -1
  121. package/site-dist/assets/{reference_adr_index.md.BYF-Ofor.lean.js → reference_adr_index.md.DgUVrHoO.lean.js} +1 -1
  122. package/site-dist/assets/{reference_commands.md.ClKbS-t8.js → reference_commands.md.BAQ8FugP.js} +1 -1
  123. package/site-dist/assets/{reference_commands.md.ClKbS-t8.lean.js → reference_commands.md.BAQ8FugP.lean.js} +1 -1
  124. package/site-dist/assets/{reference_config.md.CRe27LaA.js → reference_config.md.DoQUxHQ2.js} +1 -1
  125. package/site-dist/assets/{reference_config.md.CRe27LaA.lean.js → reference_config.md.DoQUxHQ2.lean.js} +1 -1
  126. package/site-dist/assets/{reference_contracts_cli-json.md.CCvKLasM.js → reference_contracts_cli-json.md.nRuTayON.js} +1 -1
  127. package/site-dist/assets/{reference_contracts_cli-json.md.CCvKLasM.lean.js → reference_contracts_cli-json.md.nRuTayON.lean.js} +1 -1
  128. package/site-dist/assets/{reference_contracts_feature-files.md.DSiA8OEH.lean.js → reference_contracts_feature-files.md.CgiSHFpq.js} +1 -1
  129. package/site-dist/assets/{reference_contracts_feature-files.md.DSiA8OEH.js → reference_contracts_feature-files.md.CgiSHFpq.lean.js} +1 -1
  130. package/site-dist/assets/{reference_contracts_index.md.Bkznz4px.js → reference_contracts_index.md.3h253qSo.js} +1 -1
  131. package/site-dist/assets/{reference_contracts_index.md.Bkznz4px.lean.js → reference_contracts_index.md.3h253qSo.lean.js} +1 -1
  132. package/site-dist/assets/{reference_contracts_notifier-event.md.B9WqeZdO.js → reference_contracts_notifier-event.md.DVrifpjH.js} +1 -1
  133. package/site-dist/assets/{reference_contracts_notifier-event.md.B9WqeZdO.lean.js → reference_contracts_notifier-event.md.DVrifpjH.lean.js} +1 -1
  134. package/site-dist/assets/{reference_contracts_result-file.md.DmR4fjB-.js → reference_contracts_result-file.md.CiZCk_r-.js} +1 -1
  135. package/site-dist/assets/{reference_contracts_result-file.md.DmR4fjB-.lean.js → reference_contracts_result-file.md.CiZCk_r-.lean.js} +1 -1
  136. package/site-dist/assets/{reference_contracts_spec.md.Dh5XczZL.js → reference_contracts_spec.md.B04OndF4.js} +1 -1
  137. package/site-dist/assets/{reference_contracts_spec.md.Dh5XczZL.lean.js → reference_contracts_spec.md.B04OndF4.lean.js} +1 -1
  138. package/site-dist/assets/{reference_contracts_state.md.STlqkPPS.js → reference_contracts_state.md.Xu63sMWH.js} +1 -1
  139. package/site-dist/assets/{reference_contracts_state.md.STlqkPPS.lean.js → reference_contracts_state.md.Xu63sMWH.lean.js} +1 -1
  140. package/site-dist/assets/{reference_contracts_usage-record.md.MjVps4CA.js → reference_contracts_usage-record.md.gd7f8fyb.js} +1 -1
  141. package/site-dist/assets/{reference_contracts_usage-record.md.MjVps4CA.lean.js → reference_contracts_usage-record.md.gd7f8fyb.lean.js} +1 -1
  142. package/site-dist/assets/{reference_contracts_verify.md.CbA88u6S.js → reference_contracts_verify.md.D_bAWUcP.js} +1 -1
  143. package/site-dist/assets/{reference_contracts_verify.md.CbA88u6S.lean.js → reference_contracts_verify.md.D_bAWUcP.lean.js} +1 -1
  144. package/site-dist/assets/{reference_scope.md.Kzqw8U_f.js → reference_scope.md.B7JBceSf.js} +1 -1
  145. package/site-dist/assets/{reference_scope.md.Kzqw8U_f.lean.js → reference_scope.md.B7JBceSf.lean.js} +1 -1
  146. package/site-dist/assets/{style.Dwsa4SMe.css → style.2G3zLS3c.css} +1 -1
  147. package/site-dist/changelog.html +9 -9
  148. package/site-dist/favicon.svg +10 -0
  149. package/site-dist/guide/getting-started.html +9 -9
  150. package/site-dist/guide/how-it-works.html +9 -9
  151. package/site-dist/guide/index.html +9 -9
  152. package/site-dist/guide/install.html +9 -9
  153. package/site-dist/guide/maintainer.html +9 -9
  154. package/site-dist/guide/phases.html +9 -9
  155. package/site-dist/guide/project.html +9 -9
  156. package/site-dist/guide/user.html +9 -9
  157. package/site-dist/hashmap.json +1 -1
  158. package/site-dist/index.html +9 -9
  159. package/site-dist/logo-light.svg +6 -0
  160. package/site-dist/logo.svg +5 -10
  161. package/site-dist/reference/adr/0001-step-agents-under-origin-chat.html +9 -9
  162. package/site-dist/reference/adr/0002-no-directory-switch-in-chat.html +9 -9
  163. package/site-dist/reference/adr/0003-script-engine-not-hub.html +9 -9
  164. package/site-dist/reference/adr/0004-result-files.html +9 -9
  165. package/site-dist/reference/adr/0005-no-default-branch-local-commits-only.html +9 -9
  166. package/site-dist/reference/adr/0006-skill-install-targets.html +9 -9
  167. package/site-dist/reference/adr/0007-own-interview-skill.html +9 -9
  168. package/site-dist/reference/adr/0008-entries-do-not-call-entries.html +9 -9
  169. package/site-dist/reference/adr/0009-versioned-install-layout.html +9 -9
  170. package/site-dist/reference/adr/0010-generated-feature-overview.html +9 -9
  171. package/site-dist/reference/adr/0011-resume-after-completion.html +9 -9
  172. package/site-dist/reference/adr/0012-review-panel.html +9 -9
  173. package/site-dist/reference/adr/0013-no-release-tooling.html +9 -9
  174. package/site-dist/reference/adr/0014-notifier-slot.html +9 -9
  175. package/site-dist/reference/adr/0015-incremental-continue.html +9 -9
  176. package/site-dist/reference/adr/0016-upgrade-from-tags.html +9 -9
  177. package/site-dist/reference/adr/0017-use-paseo-capabilities.html +9 -9
  178. package/site-dist/reference/adr/0018-own-worktree-option.html +9 -9
  179. package/site-dist/reference/adr/0019-parallel-orchestration.html +9 -9
  180. package/site-dist/reference/adr/0020-scheduling-through-the-chat.html +9 -9
  181. package/site-dist/reference/adr/0021-npm-version-manager.html +9 -9
  182. package/site-dist/reference/adr/0022-develop-and-verify-phases.html +9 -9
  183. package/site-dist/reference/adr/0023-types-gate-slices.html +9 -9
  184. package/site-dist/reference/adr/0024-confirm-early-review-axes.html +9 -9
  185. package/site-dist/reference/adr/0025-joint-requirements.html +9 -9
  186. package/site-dist/reference/adr/0026-machine-records-and-api.html +9 -9
  187. package/site-dist/reference/adr/0027-paseo-plugin.html +9 -9
  188. package/site-dist/reference/adr/0028-external-integrations.html +9 -9
  189. package/site-dist/reference/adr/0029-requirements-from-cards.html +9 -9
  190. package/site-dist/reference/adr/0030-card-intake-process.html +9 -9
  191. package/site-dist/reference/adr/0031-fewer-interventions.html +9 -9
  192. package/site-dist/reference/adr/0032-npm-only-install.html +9 -9
  193. package/site-dist/reference/adr/0033-prototype-review-and-ui-check.html +9 -9
  194. package/site-dist/reference/adr/index.html +9 -9
  195. package/site-dist/reference/commands.html +9 -9
  196. package/site-dist/reference/config.html +9 -9
  197. package/site-dist/reference/contracts/cli-json.html +9 -9
  198. package/site-dist/reference/contracts/feature-files.html +9 -9
  199. package/site-dist/reference/contracts/index.html +9 -9
  200. package/site-dist/reference/contracts/notifier-event.html +9 -9
  201. package/site-dist/reference/contracts/result-file.html +9 -9
  202. package/site-dist/reference/contracts/spec.html +9 -9
  203. package/site-dist/reference/contracts/state.html +9 -9
  204. package/site-dist/reference/contracts/usage-record.html +9 -9
  205. package/site-dist/reference/contracts/verify.html +9 -9
  206. package/site-dist/reference/scope.html +9 -9
  207. package/site-dist/assets/changelog.md.CIKYJXpF.js +0 -1
  208. package/site-dist/assets/chunks/@localSearchIndexroot.h7oQE_np.js +0 -1
  209. package/site-dist/assets/chunks/theme.B_UmHHou.js +0 -2
  210. package/site-dist/assets/guide_maintainer.md.C1v7EpSY.js +0 -1
  211. package/site-dist/assets/guide_maintainer.md.C1v7EpSY.lean.js +0 -1
  212. package/site-dist/assets/index.md.Cf_sSf_f.js +0 -1
  213. package/site-dist/assets/index.md.Cf_sSf_f.lean.js +0 -1
  214. package/site-dist/icons/agents.svg +0 -1
  215. package/site-dist/icons/chat.svg +0 -1
  216. package/site-dist/icons/paseo.svg +0 -1
  217. package/site-dist/icons/phases.svg +0 -1
  218. package/site-dist/icons/review.svg +0 -1
  219. package/site-dist/icons/safe.svg +0 -1
@@ -1,10 +1,30 @@
1
- // Small building blocks in Paseo's theme. Every color comes from theme.colors.
1
+ // Small building blocks. Surfaces, text, borders and status colors come from Paseo's theme
2
+ // (theme.colors), so the plugin sits well in Paseo's light, dark and phone layouts; req-kit's own
3
+ // accents (lime for "you decide", indigo for AI, cyan for running) come from design/ through
4
+ // shared/rk-colors.ts. See design/guidelines/plugin.md.
2
5
  import type { PluginHostProps } from "@getpaseo/plugin/client";
6
+ import { Icon } from "@getpaseo/plugin/client/react-native";
3
7
  import { type ReactNode, useMemo } from "react";
4
8
  import { Pressable, Text, View } from "react-native";
9
+ import { RK_COLORS, type RkColors } from "../shared/rk-colors";
5
10
 
6
11
  type Theme = PluginHostProps["theme"];
7
12
 
13
+ const MONO = "ui-monospace, Menlo, Consolas, monospace";
14
+
15
+ /** Whether Paseo is in a dark theme: from the brightness of its page background. */
16
+ export function isDark(theme: Theme): boolean {
17
+ const m = /^#?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})/i.exec(theme.colors.surface0.trim());
18
+ if (!m) return true;
19
+ const [r, g, b] = [m[1], m[2], m[3]].map((h) => parseInt(h, 16) / 255);
20
+ return 0.2126 * r + 0.7152 * g + 0.0722 * b < 0.45;
21
+ }
22
+
23
+ /** req-kit's accent colors for the current Paseo theme. */
24
+ export function rk(theme: Theme): RkColors {
25
+ return isDark(theme) ? RK_COLORS.dark : (RK_COLORS.light as unknown as RkColors);
26
+ }
27
+
8
28
  export function useStyles(theme: Theme, compact: boolean) {
9
29
  return useMemo(
10
30
  () => ({
@@ -12,16 +32,18 @@ export function useStyles(theme: Theme, compact: boolean) {
12
32
  body: { padding: compact ? 16 : 24, gap: compact ? 16 : 20 },
13
33
  title: { color: theme.colors.foreground, fontSize: compact ? 18 : 20, fontWeight: "600" as const },
14
34
  heading: { color: theme.colors.foregroundMuted, fontSize: 13, fontWeight: "600" as const, marginBottom: 6 },
15
- text: { color: theme.colors.foreground, fontSize: 14 },
16
- muted: { color: theme.colors.foregroundMuted, fontSize: 13 },
35
+ text: { color: theme.colors.foreground, fontSize: 14, lineHeight: 22 },
36
+ muted: { color: theme.colors.foregroundMuted, fontSize: 13, lineHeight: 20 },
37
+ mono: { color: theme.colors.foregroundMuted, fontSize: 12, fontFamily: MONO },
17
38
  danger: { color: theme.colors.statusDanger, fontSize: 13 },
39
+ eyebrow: { color: theme.colors.foregroundMuted, fontSize: 12, fontFamily: MONO, letterSpacing: 1.9, fontWeight: "500" as const },
18
40
  card: {
19
41
  backgroundColor: theme.colors.surface1,
20
42
  borderColor: theme.colors.border,
21
43
  borderWidth: 1,
22
- borderRadius: 10,
23
- padding: compact ? 12 : 14,
24
- gap: 4,
44
+ borderRadius: 14,
45
+ padding: compact ? 12 : 16,
46
+ gap: 6,
25
47
  },
26
48
  row: { flexDirection: "row" as const, alignItems: "center" as const, gap: 8, flexWrap: "wrap" as const },
27
49
  divider: { height: 1, backgroundColor: theme.colors.border },
@@ -30,78 +52,223 @@ export function useStyles(theme: Theme, compact: boolean) {
30
52
  );
31
53
  }
32
54
 
33
- export function Badge({ theme, tone, children }: { theme: Theme; tone: "warning" | "danger" | "success" | "accent" | "muted"; children: ReactNode }) {
34
- const color =
55
+ export type Tone = "warning" | "danger" | "success" | "accent" | "running" | "needs" | "ai" | "muted";
56
+
57
+ /** A status badge: color + (optional) Lucide icon + words. "accent" is an older name for "running". */
58
+ export function Badge({ theme, tone, icon, children }: { theme: Theme; tone: Tone; icon?: string; children: ReactNode }) {
59
+ const c = rk(theme);
60
+ const [fg, bg] =
35
61
  tone === "warning"
36
- ? theme.colors.statusWarning
62
+ ? [theme.colors.statusWarning, c.warningTint]
37
63
  : tone === "danger"
38
- ? theme.colors.statusDanger
64
+ ? [theme.colors.statusDanger, c.failedTint]
39
65
  : tone === "success"
40
- ? theme.colors.statusSuccess
41
- : tone === "accent"
42
- ? theme.colors.accent
43
- : theme.colors.foregroundMuted;
66
+ ? [theme.colors.statusSuccess, c.successTint]
67
+ : tone === "running" || tone === "accent"
68
+ ? [c.data, c.dataTint]
69
+ : tone === "needs"
70
+ ? [c.brandText, c.brandTint]
71
+ : tone === "ai"
72
+ ? [c.ai, c.aiTint]
73
+ : [theme.colors.foregroundMuted, theme.colors.surface2];
44
74
  return (
45
- <View style={{ borderColor: color, borderWidth: 1, borderRadius: 999, paddingHorizontal: 8, paddingVertical: 2 }}>
46
- <Text style={{ color, fontSize: 12 }}>{children}</Text>
75
+ <View style={{ flexDirection: "row", alignItems: "center", gap: 4, borderRadius: 6, paddingHorizontal: 8, paddingVertical: 2, backgroundColor: bg }}>
76
+ {icon ? <Icon name={icon} size={13} color={fg} /> : null}
77
+ <Text style={{ color: fg, fontSize: 12, fontWeight: "600" }}>{children}</Text>
47
78
  </View>
48
79
  );
49
80
  }
50
81
 
82
+ /**
83
+ * A button. `primary` is req-kit's lime: the one decision this view is asking for (one per card or
84
+ * screen). Others take Paseo's surfaces.
85
+ */
51
86
  export function Button({
52
87
  theme,
53
88
  label,
54
89
  onPress,
55
90
  primary,
56
91
  disabled,
92
+ icon,
57
93
  }: {
58
94
  theme: Theme;
59
95
  label: string;
60
96
  onPress(): void;
61
97
  primary?: boolean;
62
98
  disabled?: boolean;
99
+ icon?: string;
63
100
  }) {
101
+ const c = rk(theme);
102
+ const fg = primary ? c.onBrand : theme.colors.foreground;
64
103
  return (
65
104
  <Pressable
66
105
  accessibilityRole="button"
67
106
  accessibilityLabel={label}
107
+ accessibilityState={{ disabled: !!disabled }}
68
108
  disabled={disabled}
69
109
  onPress={onPress}
70
- style={{
110
+ style={({ pressed }: { pressed: boolean }) => ({
111
+ flexDirection: "row",
112
+ alignItems: "center",
113
+ gap: 6,
71
114
  paddingHorizontal: 14,
72
115
  paddingVertical: 8,
73
- borderRadius: 8,
116
+ borderRadius: 10,
74
117
  opacity: disabled ? 0.5 : 1,
75
- backgroundColor: primary ? theme.colors.accent : theme.colors.surface2,
76
- borderColor: theme.colors.border,
77
- borderWidth: primary ? 0 : 1,
78
- }}
118
+ backgroundColor: primary ? (pressed ? c.brand400 : c.brand500) : pressed ? theme.colors.surface1 : theme.colors.surface2,
119
+ borderColor: primary ? c.brandEdge : theme.colors.border,
120
+ borderWidth: 1,
121
+ })}
79
122
  >
80
- <Text style={{ color: primary ? theme.colors.accentForeground : theme.colors.foreground, fontSize: 14 }}>{label}</Text>
123
+ {icon ? <Icon name={icon} size={16} color={fg} /> : null}
124
+ <Text style={{ color: fg, fontSize: 14, fontWeight: "600" }}>{label}</Text>
81
125
  </Pressable>
82
126
  );
83
127
  }
84
128
 
129
+ /** A filter chip; the selected one carries req-kit's lime. */
85
130
  export function Chip({ theme, label, active, onPress }: { theme: Theme; label: string; active: boolean; onPress(): void }) {
131
+ const c = rk(theme);
86
132
  return (
87
133
  <Pressable
88
134
  accessibilityRole="button"
89
135
  accessibilityState={{ selected: active }}
90
136
  onPress={onPress}
91
137
  style={{
92
- paddingHorizontal: 10,
93
- paddingVertical: 4,
138
+ paddingHorizontal: 12,
139
+ paddingVertical: 5,
94
140
  borderRadius: 999,
95
- backgroundColor: active ? theme.colors.accent : theme.colors.surface1,
96
- borderColor: theme.colors.border,
97
- borderWidth: active ? 0 : 1,
141
+ backgroundColor: active ? c.brandTint : theme.colors.surface1,
142
+ borderColor: active ? c.brandEdge : theme.colors.border,
143
+ borderWidth: 1,
98
144
  }}
99
145
  >
100
- <Text style={{ color: active ? theme.colors.accentForeground : theme.colors.foreground, fontSize: 13 }}>{label}</Text>
146
+ <Text style={{ color: active ? c.brandText : theme.colors.foreground, fontSize: 13, fontWeight: active ? "600" : "400" }}>{label}</Text>
101
147
  </Pressable>
102
148
  );
103
149
  }
104
150
 
151
+ /** An uppercase mono label above a group, e.g. NEEDS YOU · 2. */
152
+ export function Eyebrow({ theme, children, accent, right }: { theme: Theme; children: ReactNode; accent?: boolean; right?: ReactNode }) {
153
+ const c = rk(theme);
154
+ return (
155
+ <View style={{ flexDirection: "row", alignItems: "center", justifyContent: "space-between", gap: 8 }}>
156
+ <Text style={{ color: accent ? c.brandText : theme.colors.foregroundMuted, fontSize: 12, fontFamily: MONO, letterSpacing: 1.9, fontWeight: "500" }}>{children}</Text>
157
+ {right ?? null}
158
+ </View>
159
+ );
160
+ }
161
+
162
+ /** The req-kit mark (a check-shaped pipeline ending in a lit node), drawn with views. */
163
+ export function Mark({ theme, size = 20 }: { theme: Theme; size?: number }) {
164
+ const c = rk(theme);
165
+ const k = size / 100;
166
+ const bar = (x1: number, y1: number, x2: number, y2: number) => {
167
+ const len = Math.hypot(x2 - x1, y2 - y1);
168
+ const angle = (Math.atan2(y2 - y1, x2 - x1) * 180) / Math.PI;
169
+ return (
170
+ <View
171
+ style={{
172
+ position: "absolute",
173
+ left: ((x1 + x2) / 2 - len / 2) * k,
174
+ top: ((y1 + y2) / 2) * k - 5 * k,
175
+ width: len * k,
176
+ height: 10 * k,
177
+ borderRadius: 5 * k,
178
+ backgroundColor: c.brandEdge,
179
+ transform: [{ rotate: `${angle}deg` }],
180
+ }}
181
+ />
182
+ );
183
+ };
184
+ const node = (x: number, y: number, r: number, filled: boolean) => (
185
+ <View
186
+ style={{
187
+ position: "absolute",
188
+ left: (x - r) * k,
189
+ top: (y - r) * k,
190
+ width: 2 * r * k,
191
+ height: 2 * r * k,
192
+ borderRadius: r * k,
193
+ backgroundColor: filled ? c.brandEdge : theme.colors.surface0,
194
+ borderColor: c.brandEdge,
195
+ borderWidth: filled ? 0 : Math.max(1, 6 * k),
196
+ }}
197
+ />
198
+ );
199
+ return (
200
+ <View style={{ width: size, height: size }}>
201
+ {bar(16, 54, 40, 77)}
202
+ {bar(40, 77, 82, 30)}
203
+ {node(16, 54, 9, false)}
204
+ {node(40, 77, 9, false)}
205
+ {node(82, 30, 13, true)}
206
+ </View>
207
+ );
208
+ }
209
+
210
+ /** The mark and the wordmark "req-kit" (its hyphen lime), and an optional page name. */
211
+ export function BrandHeader({ theme, page, right }: { theme: Theme; page?: string; right?: ReactNode }) {
212
+ const c = rk(theme);
213
+ return (
214
+ <View style={{ flexDirection: "row", alignItems: "center", gap: 10, flexWrap: "wrap" }}>
215
+ <Mark theme={theme} size={20} />
216
+ <Text style={{ color: theme.colors.foreground, fontSize: 16, fontWeight: "800", letterSpacing: -0.3 }}>
217
+ req<Text style={{ color: c.brandEdge }}>-</Text>kit
218
+ </Text>
219
+ {page ? <Text style={{ color: theme.colors.foregroundMuted, fontSize: 15, fontWeight: "600" }}>{page}</Text> : null}
220
+ <View style={{ flex: 1 }} />
221
+ {right ?? null}
222
+ </View>
223
+ );
224
+ }
225
+
226
+ export type TrackState = "done" | "now" | "needs" | "todo";
227
+
228
+ /** The step track: where a requirement is (design/components/StepTrack.md). */
229
+ export function StepTrack({ theme, steps }: { theme: Theme; steps: Array<{ label: string; who: string; state: TrackState }> }) {
230
+ const c = rk(theme);
231
+ return (
232
+ <View style={{ flexDirection: "row", alignItems: "flex-start" }} accessibilityLabel={`进度:${steps.map((s) => `${s.label}${s.state === "done" ? "已完成" : s.state === "now" ? "进行中" : s.state === "needs" ? "等你" : ""}`).join(",")}`}>
233
+ {steps.map((st, i) => {
234
+ const reached = st.state !== "todo";
235
+ const dot =
236
+ st.state === "done"
237
+ ? { bg: c.successTint, border: theme.colors.statusSuccess, fg: theme.colors.statusSuccess }
238
+ : st.state === "now"
239
+ ? { bg: c.dataTint, border: c.data, fg: c.data }
240
+ : st.state === "needs"
241
+ ? { bg: c.brand500, border: c.brandEdge, fg: c.onBrand }
242
+ : { bg: theme.colors.surface1, border: theme.colors.border, fg: theme.colors.foregroundMuted };
243
+ return (
244
+ <View key={st.label} style={{ flex: 1, alignItems: "center", gap: 4, minWidth: 48 }}>
245
+ <View style={{ flexDirection: "row", alignItems: "center", alignSelf: "stretch" }}>
246
+ <View style={{ flex: 1, height: 2, backgroundColor: i === 0 ? "transparent" : reached ? theme.colors.statusSuccess : theme.colors.border }} />
247
+ <View style={{ width: 24, height: 24, borderRadius: 12, alignItems: "center", justifyContent: "center", backgroundColor: dot.bg, borderColor: dot.border, borderWidth: 1.5 }}>
248
+ {st.state === "done" ? <Icon name="Check" size={13} color={dot.fg} /> : <Text style={{ color: dot.fg, fontSize: 11, fontWeight: "700", fontFamily: MONO }}>{i + 1}</Text>}
249
+ </View>
250
+ <View style={{ flex: 1, height: 2, backgroundColor: i === steps.length - 1 ? "transparent" : steps[i + 1].state !== "todo" ? theme.colors.statusSuccess : theme.colors.border }} />
251
+ </View>
252
+ <Text style={{ color: st.state === "needs" ? c.brandText : theme.colors.foreground, fontSize: 12, fontWeight: "600" }}>{st.label}</Text>
253
+ <Text style={{ color: theme.colors.foregroundMuted, fontSize: 11 }}>{st.who}</Text>
254
+ </View>
255
+ );
256
+ })}
257
+ </View>
258
+ );
259
+ }
260
+
261
+ /** The square icon block at the start of an "等你处理" card. */
262
+ export function AttentionIcon({ theme, icon, tone = "needs" }: { theme: Theme; icon: string; tone?: "needs" | "danger" | "muted" }) {
263
+ const c = rk(theme);
264
+ const [fg, bg] = tone === "danger" ? [theme.colors.statusDanger, c.failedTint] : tone === "muted" ? [theme.colors.foregroundMuted, theme.colors.surface2] : [c.brandText, c.brandTint];
265
+ return (
266
+ <View style={{ width: 36, height: 36, borderRadius: 10, alignItems: "center", justifyContent: "center", backgroundColor: bg }}>
267
+ <Icon name={icon} size={18} color={fg} />
268
+ </View>
269
+ );
270
+ }
271
+
105
272
  /** Loading, error and empty states in one place. */
106
273
  export function Status({ theme, loading, error, empty }: { theme: Theme; loading?: boolean; error?: Error | null; empty?: string | null }) {
107
274
  if (error) return <Text style={{ color: theme.colors.statusDanger, fontSize: 14 }}>{error.message}</Text>;
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "req-kit-paseo-plugin",
3
- "version": "1.14.0",
3
+ "version": "1.15.0-beta.3",
4
4
  "private": true,
5
5
  "description": "The req-kit plugin for Paseo. Ships inside the paseo-req-kit package; installed with req plugin install.",
6
6
  "type": "module",
@@ -0,0 +1,35 @@
1
+ // req-kit accent colors for the Paseo plugin, generated from design/tokens.json by scripts/tokens-build.mjs. Do not edit.
2
+ export const RK_COLORS = {
3
+ "dark": {
4
+ "brand500": "#a8e01f",
5
+ "brand400": "#bdeb4a",
6
+ "brandEdge": "#a8e01f",
7
+ "brandText": "#c2ee55",
8
+ "brandTint": "#a8e01f24",
9
+ "onBrand": "#0f1a02",
10
+ "ai": "#a5b4fc",
11
+ "aiTint": "#818cf81f",
12
+ "data": "#22d3ee",
13
+ "dataTint": "#22d3ee1f",
14
+ "successTint": "#34d3991f",
15
+ "warningTint": "#fbbf241f",
16
+ "failedTint": "#fb71851f"
17
+ },
18
+ "light": {
19
+ "brand500": "#a8e01f",
20
+ "brand400": "#b3e536",
21
+ "brandEdge": "#65a30d",
22
+ "brandText": "#466f0f",
23
+ "brandTint": "#a8e01f2e",
24
+ "onBrand": "#0f1a02",
25
+ "ai": "#4f46e5",
26
+ "aiTint": "#4f46e514",
27
+ "data": "#0e7490",
28
+ "dataTint": "#0e749014",
29
+ "successTint": "#04785714",
30
+ "warningTint": "#92400e14",
31
+ "failedTint": "#be123c14"
32
+ }
33
+ } as const;
34
+
35
+ export type RkColors = (typeof RK_COLORS)["dark"];
@@ -6,13 +6,13 @@
6
6
  <title>404 · req-kit</title>
7
7
  <meta name="description" content="Not Found">
8
8
  <meta name="generator" content="VitePress v1.6.3">
9
- <link rel="preload stylesheet" href="/assets/style.Dwsa4SMe.css" as="style">
9
+ <link rel="preload stylesheet" href="/assets/style.2G3zLS3c.css" as="style">
10
10
  <link rel="preload stylesheet" href="/vp-icons.css" as="style">
11
11
 
12
- <script type="module" src="/assets/app.VQ-QxRPH.js"></script>
12
+ <script type="module" src="/assets/app.Ny0BZHeG.js"></script>
13
13
  <link rel="preload" href="/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
14
- <link rel="icon" type="image/svg+xml" href="/logo.svg">
15
- <meta name="theme-color" content="#3f6fd8">
14
+ <link rel="icon" type="image/svg+xml" href="/favicon.svg">
15
+ <meta name="theme-color" content="#a8e01f">
16
16
  <meta property="og:type" content="website">
17
17
  <meta property="og:title" content="req-kit:从一句需求,到可验收的功能">
18
18
  <meta property="og:description" content="在 Paseo 中用对话对齐需求,由一组 AI agent 在后台完成设计、实现、评审和验证。">
@@ -21,7 +21,7 @@
21
21
  </head>
22
22
  <body>
23
23
  <div id="app"></div>
24
- <script>window.__VP_HASH_MAP__=JSON.parse("{\"changelog.md\":\"CIKYJXpF\",\"guide_getting-started.md\":\"CZM53rO_\",\"guide_how-it-works.md\":\"D-kQsF1t\",\"guide_index.md\":\"CLnGCmGW\",\"guide_install.md\":\"DkCyZsOU\",\"guide_maintainer.md\":\"C1v7EpSY\",\"guide_phases.md\":\"BpGAb1re\",\"guide_project.md\":\"DIjDRoAq\",\"guide_user.md\":\"UV0WxdJa\",\"index.md\":\"Cf_sSf_f\",\"reference_adr_0001-step-agents-under-origin-chat.md\":\"RtRTq7oi\",\"reference_adr_0002-no-directory-switch-in-chat.md\":\"BxtN-Aa2\",\"reference_adr_0003-script-engine-not-hub.md\":\"66EgZtqx\",\"reference_adr_0004-result-files.md\":\"DbqcCozI\",\"reference_adr_0005-no-default-branch-local-commits-only.md\":\"CkImA4s6\",\"reference_adr_0006-skill-install-targets.md\":\"CwY8YepV\",\"reference_adr_0007-own-interview-skill.md\":\"CryhxRyG\",\"reference_adr_0008-entries-do-not-call-entries.md\":\"DsRWAgeA\",\"reference_adr_0009-versioned-install-layout.md\":\"CSg1VqlW\",\"reference_adr_0010-generated-feature-overview.md\":\"D8F3MK-h\",\"reference_adr_0011-resume-after-completion.md\":\"BCrZrKjf\",\"reference_adr_0012-review-panel.md\":\"k9rrHFFc\",\"reference_adr_0013-no-release-tooling.md\":\"BQeJ8dEI\",\"reference_adr_0014-notifier-slot.md\":\"C23QR1xO\",\"reference_adr_0015-incremental-continue.md\":\"Buy7wwO8\",\"reference_adr_0016-upgrade-from-tags.md\":\"qfIW-tqJ\",\"reference_adr_0017-use-paseo-capabilities.md\":\"CjcGli87\",\"reference_adr_0018-own-worktree-option.md\":\"fVDpgGSE\",\"reference_adr_0019-parallel-orchestration.md\":\"DrfrV0To\",\"reference_adr_0020-scheduling-through-the-chat.md\":\"BqSemGFG\",\"reference_adr_0021-npm-version-manager.md\":\"CU3PG6y5\",\"reference_adr_0022-develop-and-verify-phases.md\":\"C6fQDLq4\",\"reference_adr_0023-types-gate-slices.md\":\"D2E6yyYQ\",\"reference_adr_0024-confirm-early-review-axes.md\":\"FmK_ke0x\",\"reference_adr_0025-joint-requirements.md\":\"ChoKvMUx\",\"reference_adr_0026-machine-records-and-api.md\":\"veybjBPq\",\"reference_adr_0027-paseo-plugin.md\":\"BMX33ZNU\",\"reference_adr_0028-external-integrations.md\":\"DtdMe8RK\",\"reference_adr_0029-requirements-from-cards.md\":\"BHd1SQPe\",\"reference_adr_0030-card-intake-process.md\":\"kLc-DG9_\",\"reference_adr_0031-fewer-interventions.md\":\"BDnQcz8g\",\"reference_adr_0032-npm-only-install.md\":\"C-3L1FkX\",\"reference_adr_0033-prototype-review-and-ui-check.md\":\"hFcQzmaa\",\"reference_adr_index.md\":\"BYF-Ofor\",\"reference_commands.md\":\"ClKbS-t8\",\"reference_config.md\":\"CRe27LaA\",\"reference_contracts_cli-json.md\":\"CCvKLasM\",\"reference_contracts_feature-files.md\":\"DSiA8OEH\",\"reference_contracts_index.md\":\"Bkznz4px\",\"reference_contracts_notifier-event.md\":\"B9WqeZdO\",\"reference_contracts_result-file.md\":\"DmR4fjB-\",\"reference_contracts_spec.md\":\"Dh5XczZL\",\"reference_contracts_state.md\":\"STlqkPPS\",\"reference_contracts_usage-record.md\":\"MjVps4CA\",\"reference_contracts_verify.md\":\"CbA88u6S\",\"reference_scope.md\":\"Kzqw8U_f\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"zh-CN\",\"dir\":\"ltr\",\"title\":\"req-kit\",\"titleTemplate\":\":title · req-kit\",\"description\":\"在 Paseo 中用对话对齐需求,由一组 AI agent 在后台完成设计、实现、评审和验证。给测试、产品、项目经理用的需求开发体系。\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"logo\":\"/logo.svg\",\"siteTitle\":\"req-kit\",\"nav\":[{\"text\":\"指南\",\"link\":\"/guide/\",\"activeMatch\":\"^/guide/\"},{\"text\":\"参考\",\"link\":\"/reference/commands\",\"activeMatch\":\"^/reference/\"},{\"text\":\"更新记录\",\"link\":\"/changelog\"},{\"text\":\"v1.14.0\",\"items\":[{\"text\":\"更新记录\",\"link\":\"/changelog\"},{\"text\":\"GitHub Releases\",\"link\":\"https://github.com/yiyisf/paseo-req-kit/releases\"},{\"text\":\"范围与取舍\",\"link\":\"/reference/scope\"}]}],\"sidebar\":{\"/guide/\":[{\"text\":\"开始\",\"items\":[{\"text\":\"req-kit 是什么\",\"link\":\"/guide/\"},{\"text\":\"快速开始\",\"link\":\"/guide/getting-started\"},{\"text\":\"工作原理\",\"link\":\"/guide/how-it-works\"}]},{\"text\":\"使用\",\"items\":[{\"text\":\"使用者指南\",\"link\":\"/guide/user\"},{\"text\":\"分阶段执行与提测\",\"link\":\"/guide/phases\"}]},{\"text\":\"安装与维护\",\"items\":[{\"text\":\"安装与升级\",\"link\":\"/guide/install\"},{\"text\":\"项目定制与运行规则\",\"link\":\"/guide/project\"},{\"text\":\"维护者指南\",\"link\":\"/guide/maintainer\"}]}],\"/reference/\":[{\"text\":\"参考\",\"items\":[{\"text\":\"命令\",\"link\":\"/reference/commands\"},{\"text\":\"配置项\",\"link\":\"/reference/config\"},{\"text\":\"范围与取舍\",\"link\":\"/reference/scope\"}]},{\"text\":\"文件格式约定\",\"collapsed\":false,\"items\":[{\"text\":\"总览\",\"link\":\"/reference/contracts/\"},{\"text\":\"需求说明 spec.md\",\"link\":\"/reference/contracts/spec\"},{\"text\":\"状态文件 state.json\",\"link\":\"/reference/contracts/state\"},{\"text\":\"结果文件\",\"link\":\"/reference/contracts/result-file\"},{\"text\":\"功能目录中的文件\",\"link\":\"/reference/contracts/feature-files\"},{\"text\":\"验证方法 verify.md\",\"link\":\"/reference/contracts/verify\"},{\"text\":\"外部通知事件\",\"link\":\"/reference/contracts/notifier-event\"},{\"text\":\"req api 的 JSON 输出\",\"link\":\"/reference/contracts/cli-json\"},{\"text\":\"需求索引与使用记录\",\"link\":\"/reference/contracts/usage-record\"}]},{\"text\":\"设计决定(ADR)\",\"collapsed\":true,\"items\":[{\"text\":\"总览\",\"link\":\"/reference/adr/\"},{\"text\":\"0001 步骤 agent 挂在发起的对话下\",\"link\":\"/reference/adr/0001-step-agents-under-origin-chat\"},{\"text\":\"0002 对话过程中不切换工作目录\",\"link\":\"/reference/adr/0002-no-directory-switch-in-chat\"},{\"text\":\"0003 第 3–11 步由脚本引擎驱动,不用 Hub 多步骤工作流\",\"link\":\"/reference/adr/0003-script-engine-not-hub\"},{\"text\":\"0004 步骤结论只看结果文件\",\"link\":\"/reference/adr/0004-result-files\"},{\"text\":\"0005 不在默认分支上运行,只做本地提交\",\"link\":\"/reference/adr/0005-no-default-branch-local-commits-only\"},{\"text\":\"0006 只安装到 ~/.agents/skills 和 ~/.claude/skills\",\"link\":\"/reference/adr/0006-skill-install-targets\"},{\"text\":\"0007 自带需求访谈 skill,不依赖外部 skill 包\",\"link\":\"/reference/adr/0007-own-interview-skill\"},{\"text\":\"0008 入口 skill 之间不互相调用\",\"link\":\"/reference/adr/0008-entries-do-not-call-entries\"},{\"text\":\"0009 程序与本机配置分开存放,按版本目录并存\",\"link\":\"/reference/adr/0009-versioned-install-layout\"},{\"text\":\"0010 需求总览现场生成,不维护 INDEX.md\",\"link\":\"/reference/adr/0010-generated-feature-overview\"},{\"text\":\"0011 完成后修改 spec 可以继续开发\",\"link\":\"/reference/adr/0011-resume-after-completion\"},{\"text\":\"0012 评审小组:首轮并行评审,评审者核实汇总\",\"link\":\"/reference/adr/0012-review-panel\"},{\"text\":\"0013 发布不使用 changesets 等工具\",\"link\":\"/reference/adr/0013-no-release-tooling\"},{\"text\":\"0014 外部通知只留接口,不内置任何 IM\",\"link\":\"/reference/adr/0014-notifier-slot\"},{\"text\":\"0015 需求变更后增量继续,而不是从零重做\",\"link\":\"/reference/adr/0015-incremental-continue\"},{\"text\":\"0016 一键升级:从 git 标签下载到 versions/ 再切换\",\"link\":\"/reference/adr/0016-upgrade-from-tags\"},{\"text\":\"0017 用好 Paseo 自身的能力:profile、工作区脚本、用量和时间线\",\"link\":\"/reference/adr/0017-use-paseo-capabilities\"},{\"text\":\"0018 可选:流水线为需求新建 worktree 工作区\",\"link\":\"/reference/adr/0018-own-worktree-option\"},{\"text\":\"0019 用 Paseo 的并行子 agent:确认前独立审阅、方案提案\",\"link\":\"/reference/adr/0019-parallel-orchestration\"},{\"text\":\"0020 调度:用 Paseo 定时任务把消息发回对话,排队在本机进行\",\"link\":\"/reference/adr/0020-scheduling-through-the-chat\"},{\"text\":\"0021 npm 分发:全局包是版本管理器,各版本仍装在 versions/ 下\",\"link\":\"/reference/adr/0021-npm-version-manager\"},{\"text\":\"0022 分阶段执行:研发阶段、闸口、测试验证阶段\",\"link\":\"/reference/adr/0022-develop-and-verify-phases\"},{\"text\":\"0023 需求类型、质量门、按切片实现\",\"link\":\"/reference/adr/0023-types-gate-slices\"},{\"text\":\"0024 让分歧更早暴露:验收例子、方案确认点、两个方向的评审、反复的问题变成规则\",\"link\":\"/reference/adr/0024-confirm-early-review-axes\"},{\"text\":\"0025 联合需求:一个需求同时改几个仓库\",\"link\":\"/reference/adr/0025-joint-requirements\"},{\"text\":\"0026 本机的需求索引、使用记录和 req api\",\"link\":\"/reference/adr/0026-machine-records-and-api\"},{\"text\":\"0027 Paseo 插件:随 req-kit 一起发布,只通过 req api 工作\",\"link\":\"/reference/adr/0027-paseo-plugin\"},{\"text\":\"0028 外部系统对接:命令写法在配置里,内容由 AI 整理,调用是确定的\",\"link\":\"/reference/adr/0028-external-integrations\"},{\"text\":\"0029 从卡片开始的需求:需求会话代替人,卡片描述代替对话\",\"link\":\"/reference/adr/0029-requirements-from-cards\"},{\"text\":\"0030 接单器:共享机器上定时接卡片、转达回复\",\"link\":\"/reference/adr/0030-card-intake-process\"},{\"text\":\"0031 少等人:每种中断都有自动的下一步\",\"link\":\"/reference/adr/0031-fewer-interventions\"},{\"text\":\"0032 安装、升级和文档只依赖 npm 源\",\"link\":\"/reference/adr/0032-npm-only-install\"},{\"text\":\"0033 原型审查页和不靠看图的界面检查\",\"link\":\"/reference/adr/0033-prototype-review-and-ui-check\"}]}]},\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/yiyisf/paseo-req-kit\"}],\"editLink\":{\"pattern\":\"https://github.com/yiyisf/paseo-req-kit/edit/main/site/:path\",\"text\":\"在 GitHub 上编辑此页\"},\"footer\":{\"message\":\"以 MIT 许可发布。req-kit 是运行在 Paseo 上的社区项目。\",\"copyright\":\"Copyright © 2026 yiyisf\"},\"search\":{\"provider\":\"local\",\"options\":{\"translations\":{\"button\":{\"buttonText\":\"搜索文档\",\"buttonAriaLabel\":\"搜索文档\"},\"modal\":{\"noResultsText\":\"没有找到相关结果\",\"resetButtonTitle\":\"清除\",\"footer\":{\"selectText\":\"选择\",\"navigateText\":\"切换\",\"closeText\":\"关闭\"}}}}},\"outline\":{\"level\":[2,3],\"label\":\"本页内容\"},\"docFooter\":{\"prev\":\"上一页\",\"next\":\"下一页\"},\"lastUpdated\":{\"text\":\"最后更新\"},\"returnToTopLabel\":\"回到顶部\",\"sidebarMenuLabel\":\"目录\",\"darkModeSwitchLabel\":\"外观\",\"lightModeSwitchTitle\":\"切换到浅色\",\"darkModeSwitchTitle\":\"切换到深色\",\"externalLinkIcon\":true,\"notFound\":{\"title\":\"页面不存在\",\"quote\":\"这个页面可能已经移动或删除。\",\"linkText\":\"回到首页\"}},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":true}");</script>
24
+ <script>window.__VP_HASH_MAP__=JSON.parse("{\"changelog.md\":\"CUwudFS5\",\"guide_getting-started.md\":\"DBJ0aMgy\",\"guide_how-it-works.md\":\"Rn-g0Um8\",\"guide_index.md\":\"BIF6VPBE\",\"guide_install.md\":\"kIsj5oWc\",\"guide_maintainer.md\":\"SWALpGR5\",\"guide_phases.md\":\"Bnd9FQ27\",\"guide_project.md\":\"CzS92KTI\",\"guide_user.md\":\"REc1nK8f\",\"index.md\":\"CpaGRB2c\",\"reference_adr_0001-step-agents-under-origin-chat.md\":\"CPq0ZVSs\",\"reference_adr_0002-no-directory-switch-in-chat.md\":\"BZD1j8xZ\",\"reference_adr_0003-script-engine-not-hub.md\":\"Bi4uZZaE\",\"reference_adr_0004-result-files.md\":\"CNQMSs4R\",\"reference_adr_0005-no-default-branch-local-commits-only.md\":\"DeXnMAyg\",\"reference_adr_0006-skill-install-targets.md\":\"CwqvB8NW\",\"reference_adr_0007-own-interview-skill.md\":\"HlLp78db\",\"reference_adr_0008-entries-do-not-call-entries.md\":\"D2VH2uQV\",\"reference_adr_0009-versioned-install-layout.md\":\"D9g3dWr-\",\"reference_adr_0010-generated-feature-overview.md\":\"CHOwcV4c\",\"reference_adr_0011-resume-after-completion.md\":\"CqdSPi49\",\"reference_adr_0012-review-panel.md\":\"d4wmLrNF\",\"reference_adr_0013-no-release-tooling.md\":\"BOROmwvq\",\"reference_adr_0014-notifier-slot.md\":\"BAqt1Xj1\",\"reference_adr_0015-incremental-continue.md\":\"BiUdpeq5\",\"reference_adr_0016-upgrade-from-tags.md\":\"D48PfEFP\",\"reference_adr_0017-use-paseo-capabilities.md\":\"CAMkamzJ\",\"reference_adr_0018-own-worktree-option.md\":\"DgkWjYL-\",\"reference_adr_0019-parallel-orchestration.md\":\"B9xqQidw\",\"reference_adr_0020-scheduling-through-the-chat.md\":\"Dh81be7G\",\"reference_adr_0021-npm-version-manager.md\":\"Pz4vZbkE\",\"reference_adr_0022-develop-and-verify-phases.md\":\"35MxNOuj\",\"reference_adr_0023-types-gate-slices.md\":\"Bjufr5EK\",\"reference_adr_0024-confirm-early-review-axes.md\":\"BRxVXJa4\",\"reference_adr_0025-joint-requirements.md\":\"ClCFyIiN\",\"reference_adr_0026-machine-records-and-api.md\":\"Bv1k_WjT\",\"reference_adr_0027-paseo-plugin.md\":\"CcpaKksi\",\"reference_adr_0028-external-integrations.md\":\"CrGqXJux\",\"reference_adr_0029-requirements-from-cards.md\":\"BUVah9hV\",\"reference_adr_0030-card-intake-process.md\":\"DKMkIFXw\",\"reference_adr_0031-fewer-interventions.md\":\"C8e2jpbC\",\"reference_adr_0032-npm-only-install.md\":\"5tFsGLKz\",\"reference_adr_0033-prototype-review-and-ui-check.md\":\"CW5Soqvp\",\"reference_adr_index.md\":\"DgUVrHoO\",\"reference_commands.md\":\"BAQ8FugP\",\"reference_config.md\":\"DoQUxHQ2\",\"reference_contracts_cli-json.md\":\"nRuTayON\",\"reference_contracts_feature-files.md\":\"CgiSHFpq\",\"reference_contracts_index.md\":\"3h253qSo\",\"reference_contracts_notifier-event.md\":\"DVrifpjH\",\"reference_contracts_result-file.md\":\"CiZCk_r-\",\"reference_contracts_spec.md\":\"B04OndF4\",\"reference_contracts_state.md\":\"Xu63sMWH\",\"reference_contracts_usage-record.md\":\"gd7f8fyb\",\"reference_contracts_verify.md\":\"D_bAWUcP\",\"reference_scope.md\":\"B7JBceSf\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"zh-CN\",\"dir\":\"ltr\",\"title\":\"req-kit\",\"titleTemplate\":\":title · req-kit\",\"description\":\"在 Paseo 中用对话对齐需求,由一组 AI agent 在后台完成设计、实现、评审和验证。给测试、产品、项目经理用的需求开发体系。\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"rk\":{\"version\":\"1.15.0-beta.3\",\"beta\":true,\"releases\":43,\"stable\":7,\"adrs\":33},\"logo\":{\"light\":\"/logo-light.svg\",\"dark\":\"/logo.svg\",\"alt\":\"req-kit\"},\"siteTitle\":\"req-kit\",\"nav\":[{\"text\":\"指南\",\"link\":\"/guide/\",\"activeMatch\":\"^/guide/\"},{\"text\":\"参考\",\"link\":\"/reference/commands\",\"activeMatch\":\"^/reference/\"},{\"text\":\"更新记录\",\"link\":\"/changelog\"},{\"text\":\"v1.15.0-beta.3\",\"items\":[{\"text\":\"更新记录\",\"link\":\"/changelog\"},{\"text\":\"GitHub Releases\",\"link\":\"https://github.com/yiyisf/paseo-req-kit/releases\"},{\"text\":\"范围与取舍\",\"link\":\"/reference/scope\"}]}],\"sidebar\":{\"/guide/\":[{\"text\":\"开始\",\"items\":[{\"text\":\"req-kit 是什么\",\"link\":\"/guide/\"},{\"text\":\"快速开始\",\"link\":\"/guide/getting-started\"},{\"text\":\"工作原理\",\"link\":\"/guide/how-it-works\"}]},{\"text\":\"使用\",\"items\":[{\"text\":\"使用者指南\",\"link\":\"/guide/user\"},{\"text\":\"分阶段执行与提测\",\"link\":\"/guide/phases\"}]},{\"text\":\"安装与维护\",\"items\":[{\"text\":\"安装与升级\",\"link\":\"/guide/install\"},{\"text\":\"项目定制与运行规则\",\"link\":\"/guide/project\"},{\"text\":\"维护者指南\",\"link\":\"/guide/maintainer\"}]}],\"/reference/\":[{\"text\":\"参考\",\"items\":[{\"text\":\"命令\",\"link\":\"/reference/commands\"},{\"text\":\"配置项\",\"link\":\"/reference/config\"},{\"text\":\"范围与取舍\",\"link\":\"/reference/scope\"}]},{\"text\":\"文件格式约定\",\"collapsed\":false,\"items\":[{\"text\":\"总览\",\"link\":\"/reference/contracts/\"},{\"text\":\"需求说明 spec.md\",\"link\":\"/reference/contracts/spec\"},{\"text\":\"状态文件 state.json\",\"link\":\"/reference/contracts/state\"},{\"text\":\"结果文件\",\"link\":\"/reference/contracts/result-file\"},{\"text\":\"功能目录中的文件\",\"link\":\"/reference/contracts/feature-files\"},{\"text\":\"验证方法 verify.md\",\"link\":\"/reference/contracts/verify\"},{\"text\":\"外部通知事件\",\"link\":\"/reference/contracts/notifier-event\"},{\"text\":\"req api 的 JSON 输出\",\"link\":\"/reference/contracts/cli-json\"},{\"text\":\"需求索引与使用记录\",\"link\":\"/reference/contracts/usage-record\"}]},{\"text\":\"设计决定(ADR)\",\"collapsed\":true,\"items\":[{\"text\":\"总览\",\"link\":\"/reference/adr/\"},{\"text\":\"0001 步骤 agent 挂在发起的对话下\",\"link\":\"/reference/adr/0001-step-agents-under-origin-chat\"},{\"text\":\"0002 对话过程中不切换工作目录\",\"link\":\"/reference/adr/0002-no-directory-switch-in-chat\"},{\"text\":\"0003 第 3–11 步由脚本引擎驱动,不用 Hub 多步骤工作流\",\"link\":\"/reference/adr/0003-script-engine-not-hub\"},{\"text\":\"0004 步骤结论只看结果文件\",\"link\":\"/reference/adr/0004-result-files\"},{\"text\":\"0005 不在默认分支上运行,只做本地提交\",\"link\":\"/reference/adr/0005-no-default-branch-local-commits-only\"},{\"text\":\"0006 只安装到 ~/.agents/skills 和 ~/.claude/skills\",\"link\":\"/reference/adr/0006-skill-install-targets\"},{\"text\":\"0007 自带需求访谈 skill,不依赖外部 skill 包\",\"link\":\"/reference/adr/0007-own-interview-skill\"},{\"text\":\"0008 入口 skill 之间不互相调用\",\"link\":\"/reference/adr/0008-entries-do-not-call-entries\"},{\"text\":\"0009 程序与本机配置分开存放,按版本目录并存\",\"link\":\"/reference/adr/0009-versioned-install-layout\"},{\"text\":\"0010 需求总览现场生成,不维护 INDEX.md\",\"link\":\"/reference/adr/0010-generated-feature-overview\"},{\"text\":\"0011 完成后修改 spec 可以继续开发\",\"link\":\"/reference/adr/0011-resume-after-completion\"},{\"text\":\"0012 评审小组:首轮并行评审,评审者核实汇总\",\"link\":\"/reference/adr/0012-review-panel\"},{\"text\":\"0013 发布不使用 changesets 等工具\",\"link\":\"/reference/adr/0013-no-release-tooling\"},{\"text\":\"0014 外部通知只留接口,不内置任何 IM\",\"link\":\"/reference/adr/0014-notifier-slot\"},{\"text\":\"0015 需求变更后增量继续,而不是从零重做\",\"link\":\"/reference/adr/0015-incremental-continue\"},{\"text\":\"0016 一键升级:从 git 标签下载到 versions/ 再切换\",\"link\":\"/reference/adr/0016-upgrade-from-tags\"},{\"text\":\"0017 用好 Paseo 自身的能力:profile、工作区脚本、用量和时间线\",\"link\":\"/reference/adr/0017-use-paseo-capabilities\"},{\"text\":\"0018 可选:流水线为需求新建 worktree 工作区\",\"link\":\"/reference/adr/0018-own-worktree-option\"},{\"text\":\"0019 用 Paseo 的并行子 agent:确认前独立审阅、方案提案\",\"link\":\"/reference/adr/0019-parallel-orchestration\"},{\"text\":\"0020 调度:用 Paseo 定时任务把消息发回对话,排队在本机进行\",\"link\":\"/reference/adr/0020-scheduling-through-the-chat\"},{\"text\":\"0021 npm 分发:全局包是版本管理器,各版本仍装在 versions/ 下\",\"link\":\"/reference/adr/0021-npm-version-manager\"},{\"text\":\"0022 分阶段执行:研发阶段、闸口、测试验证阶段\",\"link\":\"/reference/adr/0022-develop-and-verify-phases\"},{\"text\":\"0023 需求类型、质量门、按切片实现\",\"link\":\"/reference/adr/0023-types-gate-slices\"},{\"text\":\"0024 让分歧更早暴露:验收例子、方案确认点、两个方向的评审、反复的问题变成规则\",\"link\":\"/reference/adr/0024-confirm-early-review-axes\"},{\"text\":\"0025 联合需求:一个需求同时改几个仓库\",\"link\":\"/reference/adr/0025-joint-requirements\"},{\"text\":\"0026 本机的需求索引、使用记录和 req api\",\"link\":\"/reference/adr/0026-machine-records-and-api\"},{\"text\":\"0027 Paseo 插件:随 req-kit 一起发布,只通过 req api 工作\",\"link\":\"/reference/adr/0027-paseo-plugin\"},{\"text\":\"0028 外部系统对接:命令写法在配置里,内容由 AI 整理,调用是确定的\",\"link\":\"/reference/adr/0028-external-integrations\"},{\"text\":\"0029 从卡片开始的需求:需求会话代替人,卡片描述代替对话\",\"link\":\"/reference/adr/0029-requirements-from-cards\"},{\"text\":\"0030 接单器:共享机器上定时接卡片、转达回复\",\"link\":\"/reference/adr/0030-card-intake-process\"},{\"text\":\"0031 少等人:每种中断都有自动的下一步\",\"link\":\"/reference/adr/0031-fewer-interventions\"},{\"text\":\"0032 安装、升级和文档只依赖 npm 源\",\"link\":\"/reference/adr/0032-npm-only-install\"},{\"text\":\"0033 原型审查页和不靠看图的界面检查\",\"link\":\"/reference/adr/0033-prototype-review-and-ui-check\"}]}]},\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/yiyisf/paseo-req-kit\"}],\"editLink\":{\"pattern\":\"https://github.com/yiyisf/paseo-req-kit/edit/main/site/:path\",\"text\":\"在 GitHub 上编辑此页\"},\"footer\":{\"message\":\"以 MIT 许可发布。req-kit 是运行在 Paseo 上的社区项目。\",\"copyright\":\"Copyright © 2026 yiyisf\"},\"search\":{\"provider\":\"local\",\"options\":{\"translations\":{\"button\":{\"buttonText\":\"搜索文档\",\"buttonAriaLabel\":\"搜索文档\"},\"modal\":{\"noResultsText\":\"没有找到相关结果\",\"resetButtonTitle\":\"清除\",\"footer\":{\"selectText\":\"选择\",\"navigateText\":\"切换\",\"closeText\":\"关闭\"}}}}},\"outline\":{\"level\":[2,3],\"label\":\"本页内容\"},\"docFooter\":{\"prev\":\"上一页\",\"next\":\"下一页\"},\"lastUpdated\":{\"text\":\"最后更新\"},\"returnToTopLabel\":\"回到顶部\",\"sidebarMenuLabel\":\"目录\",\"darkModeSwitchLabel\":\"外观\",\"lightModeSwitchTitle\":\"切换到浅色\",\"darkModeSwitchTitle\":\"切换到深色\",\"externalLinkIcon\":true,\"notFound\":{\"title\":\"页面不存在\",\"quote\":\"这个页面可能已经移动或删除。\",\"linkText\":\"回到首页\"}},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":true}");</script>
25
25
 
26
26
  </body>
27
27
  </html>
@@ -1 +1 @@
1
- import{R as p}from"./chunks/theme.B_UmHHou.js";import{R as s,a4 as i,a5 as u,a6 as c,a7 as l,a8 as f,a9 as d,aa as m,ab as h,ac as g,ad as A,d as v,u as R,v as w,s as y,ae as C,af as P,ag as b,a2 as E}from"./chunks/framework.B9qR_F1m.js";function r(e){if(e.extends){const a=r(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const n=r(p),S=v({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=R();return w(()=>{y(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&C(),P(),b(),n.setup&&n.setup(),()=>E(n.Layout)}});async function T(){globalThis.__VITEPRESS__=!0;const e=_(),a=D();a.provide(u,e);const t=c(e.route);return a.provide(l,t),a.component("Content",f),a.component("ClientOnly",d),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),n.enhanceApp&&await n.enhanceApp({app:a,router:e,siteData:m}),{app:a,router:e,data:t}}function D(){return A(S)}function _(){let e=s;return h(a=>{let t=g(a),o=null;return t&&(e&&(t=t.replace(/\.js$/,".lean.js")),o=import(t)),s&&(e=!1),o},n.NotFound)}s&&T().then(({app:e,router:a,data:t})=>{a.go().then(()=>{i(a.route,t.site),e.mount("#app")})});export{T as createApp};
1
+ import{R as p}from"./chunks/theme.BeEUWcJI.js";import{R as s,a4 as i,a5 as u,a6 as c,a7 as l,a8 as f,a9 as d,aa as m,ab as h,ac as g,ad as A,d as v,u as R,v as w,s as y,ae as C,af as P,ag as b,a3 as E}from"./chunks/framework.BetZR81g.js";function r(e){if(e.extends){const a=r(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const n=r(p),S=v({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=R();return w(()=>{y(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&C(),P(),b(),n.setup&&n.setup(),()=>E(n.Layout)}});async function T(){globalThis.__VITEPRESS__=!0;const e=_(),a=D();a.provide(u,e);const t=c(e.route);return a.provide(l,t),a.component("Content",f),a.component("ClientOnly",d),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),n.enhanceApp&&await n.enhanceApp({app:a,router:e,siteData:m}),{app:a,router:e,data:t}}function D(){return A(S)}function _(){let e=s;return h(a=>{let t=g(a),o=null;return t&&(e&&(t=t.replace(/\.js$/,".lean.js")),o=import(t)),s&&(e=!1),o},n.NotFound)}s&&T().then(({app:e,router:a,data:t})=>{a.go().then(()=>{i(a.route,t.site),e.mount("#app")})});export{T as createApp};