create-quiver 0.15.2 → 0.15.4

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 (324) hide show
  1. package/.github/workflows/ci.yml +3 -0
  2. package/AGENTS.md.es.template +37 -0
  3. package/README.md +1 -0
  4. package/README_FOR_AI.md +6 -4
  5. package/docs/AI_CONTEXT.md.es.template +35 -0
  6. package/docs/AI_ONBOARDING_PROMPT.md.es.template +22 -0
  7. package/docs/CLI_UX_GUIDE.md +47 -1
  8. package/docs/COMMANDS.md.es.template +28 -0
  9. package/docs/COMMANDS.md.template +14 -3
  10. package/docs/CONTEXTO.md.es.template +33 -0
  11. package/docs/DECISIONS.md.es.template +17 -0
  12. package/docs/GITFLOW_PR_GUIDE.md.es.template +25 -0
  13. package/docs/INDEX.md +96 -0
  14. package/docs/INDEX.md.es.template +36 -0
  15. package/docs/STATUS.md.es.template +28 -0
  16. package/docs/SUPPORT_MATRIX.md.es.template +22 -0
  17. package/docs/TESTING_GUIDE_FOR_AI.md.es.template +19 -0
  18. package/docs/TROUBLESHOOTING.md.es.template +35 -0
  19. package/docs/WORKFLOW.md.es.template +29 -0
  20. package/docs/WORKFLOW.md.template +2 -2
  21. package/docs/ai/LESSONS.md.es.template +24 -0
  22. package/docs/getting-started/installation.md +19 -0
  23. package/docs/reference/commands.md +68 -2
  24. package/package.json +3 -1
  25. package/specs/quiver-v34-cli-dashboard-status/EVIDENCE_REPORT.md +119 -0
  26. package/specs/quiver-v34-cli-dashboard-status/EXECUTION_PLAN.md +77 -0
  27. package/specs/quiver-v34-cli-dashboard-status/SPEC.md +152 -0
  28. package/specs/quiver-v34-cli-dashboard-status/STATUS.md +29 -0
  29. package/specs/quiver-v34-cli-dashboard-status/pr.md +99 -0
  30. package/specs/quiver-v34-cli-dashboard-status/slices/slice-00-dashboard-foundation/CLOSURE_BRIEF.md +19 -0
  31. package/specs/quiver-v34-cli-dashboard-status/slices/slice-00-dashboard-foundation/EXECUTION_BRIEF.md +49 -0
  32. package/specs/quiver-v34-cli-dashboard-status/slices/slice-00-dashboard-foundation/slice.json +68 -0
  33. package/specs/quiver-v34-cli-dashboard-status/slices/slice-01-dashboard-report-contract/CLOSURE_BRIEF.md +19 -0
  34. package/specs/quiver-v34-cli-dashboard-status/slices/slice-01-dashboard-report-contract/EXECUTION_BRIEF.md +53 -0
  35. package/specs/quiver-v34-cli-dashboard-status/slices/slice-01-dashboard-report-contract/slice.json +78 -0
  36. package/specs/quiver-v34-cli-dashboard-status/slices/slice-02-dashboard-command-rendering/CLOSURE_BRIEF.md +19 -0
  37. package/specs/quiver-v34-cli-dashboard-status/slices/slice-02-dashboard-command-rendering/EXECUTION_BRIEF.md +53 -0
  38. package/specs/quiver-v34-cli-dashboard-status/slices/slice-02-dashboard-command-rendering/slice.json +82 -0
  39. package/specs/quiver-v34-cli-dashboard-status/slices/slice-03-dashboard-edge-cases-and-guardrails/CLOSURE_BRIEF.md +19 -0
  40. package/specs/quiver-v34-cli-dashboard-status/slices/slice-03-dashboard-edge-cases-and-guardrails/EXECUTION_BRIEF.md +54 -0
  41. package/specs/quiver-v34-cli-dashboard-status/slices/slice-03-dashboard-edge-cases-and-guardrails/slice.json +77 -0
  42. package/specs/quiver-v34-cli-dashboard-status/slices/slice-04-docs-templates-and-scripts/CLOSURE_BRIEF.md +19 -0
  43. package/specs/quiver-v34-cli-dashboard-status/slices/slice-04-docs-templates-and-scripts/EXECUTION_BRIEF.md +54 -0
  44. package/specs/quiver-v34-cli-dashboard-status/slices/slice-04-docs-templates-and-scripts/slice.json +88 -0
  45. package/specs/quiver-v34-cli-dashboard-status/slices/slice-05-tests-smokes-release-readiness/CLOSURE_BRIEF.md +26 -0
  46. package/specs/quiver-v34-cli-dashboard-status/slices/slice-05-tests-smokes-release-readiness/EXECUTION_BRIEF.md +57 -0
  47. package/specs/quiver-v34-cli-dashboard-status/slices/slice-05-tests-smokes-release-readiness/slice.json +85 -0
  48. package/specs/quiver-v35-compact-dashboard-version-ux/EVIDENCE_REPORT.md +43 -0
  49. package/specs/quiver-v35-compact-dashboard-version-ux/EXECUTION_PLAN.md +85 -0
  50. package/specs/quiver-v35-compact-dashboard-version-ux/SPEC.md +147 -0
  51. package/specs/quiver-v35-compact-dashboard-version-ux/STATUS.md +33 -0
  52. package/specs/quiver-v35-compact-dashboard-version-ux/pr.md +106 -0
  53. package/specs/quiver-v35-compact-dashboard-version-ux/slices/slice-00-foundation-and-doc-router/CLOSURE_BRIEF.md +19 -0
  54. package/specs/quiver-v35-compact-dashboard-version-ux/slices/slice-00-foundation-and-doc-router/EXECUTION_BRIEF.md +38 -0
  55. package/specs/quiver-v35-compact-dashboard-version-ux/slices/slice-00-foundation-and-doc-router/slice.json +64 -0
  56. package/specs/quiver-v35-compact-dashboard-version-ux/slices/slice-01-dashboard-cli-contract/CLOSURE_BRIEF.md +19 -0
  57. package/specs/quiver-v35-compact-dashboard-version-ux/slices/slice-01-dashboard-cli-contract/EXECUTION_BRIEF.md +49 -0
  58. package/specs/quiver-v35-compact-dashboard-version-ux/slices/slice-01-dashboard-cli-contract/slice.json +80 -0
  59. package/specs/quiver-v35-compact-dashboard-version-ux/slices/slice-02-dashboard-compact-renderer/CLOSURE_BRIEF.md +19 -0
  60. package/specs/quiver-v35-compact-dashboard-version-ux/slices/slice-02-dashboard-compact-renderer/EXECUTION_BRIEF.md +48 -0
  61. package/specs/quiver-v35-compact-dashboard-version-ux/slices/slice-02-dashboard-compact-renderer/slice.json +73 -0
  62. package/specs/quiver-v35-compact-dashboard-version-ux/slices/slice-03-dashboard-details-sections/CLOSURE_BRIEF.md +19 -0
  63. package/specs/quiver-v35-compact-dashboard-version-ux/slices/slice-03-dashboard-details-sections/EXECUTION_BRIEF.md +48 -0
  64. package/specs/quiver-v35-compact-dashboard-version-ux/slices/slice-03-dashboard-details-sections/slice.json +72 -0
  65. package/specs/quiver-v35-compact-dashboard-version-ux/slices/slice-04-version-command/CLOSURE_BRIEF.md +19 -0
  66. package/specs/quiver-v35-compact-dashboard-version-ux/slices/slice-04-version-command/EXECUTION_BRIEF.md +49 -0
  67. package/specs/quiver-v35-compact-dashboard-version-ux/slices/slice-04-version-command/slice.json +82 -0
  68. package/specs/quiver-v35-compact-dashboard-version-ux/slices/slice-05-docs-help-generated-guidance/CLOSURE_BRIEF.md +19 -0
  69. package/specs/quiver-v35-compact-dashboard-version-ux/slices/slice-05-docs-help-generated-guidance/EXECUTION_BRIEF.md +50 -0
  70. package/specs/quiver-v35-compact-dashboard-version-ux/slices/slice-05-docs-help-generated-guidance/slice.json +90 -0
  71. package/specs/quiver-v35-compact-dashboard-version-ux/slices/slice-06-tests-smokes-release-readiness/CLOSURE_BRIEF.md +21 -0
  72. package/specs/quiver-v35-compact-dashboard-version-ux/slices/slice-06-tests-smokes-release-readiness/EXECUTION_BRIEF.md +51 -0
  73. package/specs/quiver-v35-compact-dashboard-version-ux/slices/slice-06-tests-smokes-release-readiness/slice.json +85 -0
  74. package/specs/quiver-v35-compact-dashboard-version-ux/slices/slice-07-package-and-cross-platform-smoke/CLOSURE_BRIEF.md +20 -0
  75. package/specs/quiver-v35-compact-dashboard-version-ux/slices/slice-07-package-and-cross-platform-smoke/EXECUTION_BRIEF.md +49 -0
  76. package/specs/quiver-v35-compact-dashboard-version-ux/slices/slice-07-package-and-cross-platform-smoke/slice.json +79 -0
  77. package/specs/quiver-v36-ai-run-watch-portable/EVIDENCE_REPORT.md +33 -0
  78. package/specs/quiver-v36-ai-run-watch-portable/EXECUTION_PLAN.md +39 -0
  79. package/specs/quiver-v36-ai-run-watch-portable/SPEC.md +166 -0
  80. package/specs/quiver-v36-ai-run-watch-portable/STATUS.md +31 -0
  81. package/specs/quiver-v36-ai-run-watch-portable/pr.md +78 -0
  82. package/specs/quiver-v36-ai-run-watch-portable/slices/slice-00-foundation-and-handoffs/CLOSURE_BRIEF.md +19 -0
  83. package/specs/quiver-v36-ai-run-watch-portable/slices/slice-00-foundation-and-handoffs/EXECUTION_BRIEF.md +43 -0
  84. package/specs/quiver-v36-ai-run-watch-portable/slices/slice-00-foundation-and-handoffs/slice.json +61 -0
  85. package/specs/quiver-v36-ai-run-watch-portable/slices/slice-01-run-schema-path-safety/CLOSURE_BRIEF.md +18 -0
  86. package/specs/quiver-v36-ai-run-watch-portable/slices/slice-01-run-schema-path-safety/EXECUTION_BRIEF.md +43 -0
  87. package/specs/quiver-v36-ai-run-watch-portable/slices/slice-01-run-schema-path-safety/slice.json +65 -0
  88. package/specs/quiver-v36-ai-run-watch-portable/slices/slice-02-event-writer-redacted-logs/CLOSURE_BRIEF.md +18 -0
  89. package/specs/quiver-v36-ai-run-watch-portable/slices/slice-02-event-writer-redacted-logs/EXECUTION_BRIEF.md +43 -0
  90. package/specs/quiver-v36-ai-run-watch-portable/slices/slice-02-event-writer-redacted-logs/slice.json +66 -0
  91. package/specs/quiver-v36-ai-run-watch-portable/slices/slice-03-provider-streaming-integration/CLOSURE_BRIEF.md +18 -0
  92. package/specs/quiver-v36-ai-run-watch-portable/slices/slice-03-provider-streaming-integration/EXECUTION_BRIEF.md +41 -0
  93. package/specs/quiver-v36-ai-run-watch-portable/slices/slice-03-provider-streaming-integration/slice.json +71 -0
  94. package/specs/quiver-v36-ai-run-watch-portable/slices/slice-04-ai-run-watch-command/CLOSURE_BRIEF.md +18 -0
  95. package/specs/quiver-v36-ai-run-watch-portable/slices/slice-04-ai-run-watch-command/EXECUTION_BRIEF.md +44 -0
  96. package/specs/quiver-v36-ai-run-watch-portable/slices/slice-04-ai-run-watch-command/slice.json +73 -0
  97. package/specs/quiver-v36-ai-run-watch-portable/slices/slice-05-main-progress-user-guidance/CLOSURE_BRIEF.md +18 -0
  98. package/specs/quiver-v36-ai-run-watch-portable/slices/slice-05-main-progress-user-guidance/EXECUTION_BRIEF.md +44 -0
  99. package/specs/quiver-v36-ai-run-watch-portable/slices/slice-05-main-progress-user-guidance/slice.json +71 -0
  100. package/specs/quiver-v36-ai-run-watch-portable/slices/slice-06-docs-generated-guidance/CLOSURE_BRIEF.md +19 -0
  101. package/specs/quiver-v36-ai-run-watch-portable/slices/slice-06-docs-generated-guidance/EXECUTION_BRIEF.md +45 -0
  102. package/specs/quiver-v36-ai-run-watch-portable/slices/slice-06-docs-generated-guidance/slice.json +77 -0
  103. package/specs/quiver-v36-ai-run-watch-portable/slices/slice-07-tests-cross-platform-readiness/CLOSURE_BRIEF.md +22 -0
  104. package/specs/quiver-v36-ai-run-watch-portable/slices/slice-07-tests-cross-platform-readiness/EXECUTION_BRIEF.md +46 -0
  105. package/specs/quiver-v36-ai-run-watch-portable/slices/slice-07-tests-cross-platform-readiness/slice.json +87 -0
  106. package/specs/quiver-v37-cli-i18n-foundation/EVIDENCE_REPORT.md +73 -0
  107. package/specs/quiver-v37-cli-i18n-foundation/EXECUTION_PLAN.md +34 -0
  108. package/specs/quiver-v37-cli-i18n-foundation/SPEC.md +91 -0
  109. package/specs/quiver-v37-cli-i18n-foundation/STATUS.md +29 -0
  110. package/specs/quiver-v37-cli-i18n-foundation/pr.md +97 -0
  111. package/specs/quiver-v37-cli-i18n-foundation/slices/slice-00-foundation-and-program-roadmap/CLOSURE_BRIEF.md +10 -0
  112. package/specs/quiver-v37-cli-i18n-foundation/slices/slice-00-foundation-and-program-roadmap/EXECUTION_BRIEF.md +22 -0
  113. package/specs/quiver-v37-cli-i18n-foundation/slices/slice-00-foundation-and-program-roadmap/slice.json +54 -0
  114. package/specs/quiver-v37-cli-i18n-foundation/slices/slice-01-language-resolution-contract/CLOSURE_BRIEF.md +30 -0
  115. package/specs/quiver-v37-cli-i18n-foundation/slices/slice-01-language-resolution-contract/EXECUTION_BRIEF.md +27 -0
  116. package/specs/quiver-v37-cli-i18n-foundation/slices/slice-01-language-resolution-contract/slice.json +66 -0
  117. package/specs/quiver-v37-cli-i18n-foundation/slices/slice-02-message-catalog-interpolation/CLOSURE_BRIEF.md +27 -0
  118. package/specs/quiver-v37-cli-i18n-foundation/slices/slice-02-message-catalog-interpolation/EXECUTION_BRIEF.md +26 -0
  119. package/specs/quiver-v37-cli-i18n-foundation/slices/slice-02-message-catalog-interpolation/slice.json +62 -0
  120. package/specs/quiver-v37-cli-i18n-foundation/slices/slice-03-config-language-command/CLOSURE_BRIEF.md +32 -0
  121. package/specs/quiver-v37-cli-i18n-foundation/slices/slice-03-config-language-command/EXECUTION_BRIEF.md +25 -0
  122. package/specs/quiver-v37-cli-i18n-foundation/slices/slice-03-config-language-command/slice.json +66 -0
  123. package/specs/quiver-v37-cli-i18n-foundation/slices/slice-04-parser-help-error-foundation/CLOSURE_BRIEF.md +30 -0
  124. package/specs/quiver-v37-cli-i18n-foundation/slices/slice-04-parser-help-error-foundation/EXECUTION_BRIEF.md +24 -0
  125. package/specs/quiver-v37-cli-i18n-foundation/slices/slice-04-parser-help-error-foundation/slice.json +65 -0
  126. package/specs/quiver-v37-cli-i18n-foundation/slices/slice-05-foundation-docs-tests-package-readiness/CLOSURE_BRIEF.md +27 -0
  127. package/specs/quiver-v37-cli-i18n-foundation/slices/slice-05-foundation-docs-tests-package-readiness/EXECUTION_BRIEF.md +23 -0
  128. package/specs/quiver-v37-cli-i18n-foundation/slices/slice-05-foundation-docs-tests-package-readiness/slice.json +67 -0
  129. package/specs/quiver-v38-cli-i18n-read-only-commands/EVIDENCE_REPORT.md +69 -0
  130. package/specs/quiver-v38-cli-i18n-read-only-commands/EXECUTION_PLAN.md +25 -0
  131. package/specs/quiver-v38-cli-i18n-read-only-commands/SPEC.md +52 -0
  132. package/specs/quiver-v38-cli-i18n-read-only-commands/STATUS.md +24 -0
  133. package/specs/quiver-v38-cli-i18n-read-only-commands/pr.md +119 -0
  134. package/specs/quiver-v38-cli-i18n-read-only-commands/slices/slice-00-read-only-foundation/CLOSURE_BRIEF.md +10 -0
  135. package/specs/quiver-v38-cli-i18n-read-only-commands/slices/slice-00-read-only-foundation/EXECUTION_BRIEF.md +21 -0
  136. package/specs/quiver-v38-cli-i18n-read-only-commands/slices/slice-00-read-only-foundation/slice.json +53 -0
  137. package/specs/quiver-v38-cli-i18n-read-only-commands/slices/slice-01-version-dashboard-help/CLOSURE_BRIEF.md +17 -0
  138. package/specs/quiver-v38-cli-i18n-read-only-commands/slices/slice-01-version-dashboard-help/EXECUTION_BRIEF.md +23 -0
  139. package/specs/quiver-v38-cli-i18n-read-only-commands/slices/slice-01-version-dashboard-help/slice.json +69 -0
  140. package/specs/quiver-v38-cli-i18n-read-only-commands/slices/slice-02-flow-doctor-next-graph/CLOSURE_BRIEF.md +13 -0
  141. package/specs/quiver-v38-cli-i18n-read-only-commands/slices/slice-02-flow-doctor-next-graph/EXECUTION_BRIEF.md +22 -0
  142. package/specs/quiver-v38-cli-i18n-read-only-commands/slices/slice-02-flow-doctor-next-graph/slice.json +77 -0
  143. package/specs/quiver-v38-cli-i18n-read-only-commands/slices/slice-03-ai-inspection-and-export/CLOSURE_BRIEF.md +12 -0
  144. package/specs/quiver-v38-cli-i18n-read-only-commands/slices/slice-03-ai-inspection-and-export/EXECUTION_BRIEF.md +22 -0
  145. package/specs/quiver-v38-cli-i18n-read-only-commands/slices/slice-03-ai-inspection-and-export/slice.json +66 -0
  146. package/specs/quiver-v38-cli-i18n-read-only-commands/slices/slice-04-read-only-tests-smokes/CLOSURE_BRIEF.md +13 -0
  147. package/specs/quiver-v38-cli-i18n-read-only-commands/slices/slice-04-read-only-tests-smokes/EXECUTION_BRIEF.md +22 -0
  148. package/specs/quiver-v38-cli-i18n-read-only-commands/slices/slice-04-read-only-tests-smokes/slice.json +61 -0
  149. package/specs/quiver-v39-cli-i18n-setup-onboarding/EVIDENCE_REPORT.md +71 -0
  150. package/specs/quiver-v39-cli-i18n-setup-onboarding/EXECUTION_PLAN.md +25 -0
  151. package/specs/quiver-v39-cli-i18n-setup-onboarding/SPEC.md +53 -0
  152. package/specs/quiver-v39-cli-i18n-setup-onboarding/STATUS.md +24 -0
  153. package/specs/quiver-v39-cli-i18n-setup-onboarding/pr.md +104 -0
  154. package/specs/quiver-v39-cli-i18n-setup-onboarding/slices/slice-00-setup-foundation/CLOSURE_BRIEF.md +10 -0
  155. package/specs/quiver-v39-cli-i18n-setup-onboarding/slices/slice-00-setup-foundation/EXECUTION_BRIEF.md +21 -0
  156. package/specs/quiver-v39-cli-i18n-setup-onboarding/slices/slice-00-setup-foundation/slice.json +53 -0
  157. package/specs/quiver-v39-cli-i18n-setup-onboarding/slices/slice-01-init-interactive-language/CLOSURE_BRIEF.md +12 -0
  158. package/specs/quiver-v39-cli-i18n-setup-onboarding/slices/slice-01-init-interactive-language/EXECUTION_BRIEF.md +23 -0
  159. package/specs/quiver-v39-cli-i18n-setup-onboarding/slices/slice-01-init-interactive-language/slice.json +68 -0
  160. package/specs/quiver-v39-cli-i18n-setup-onboarding/slices/slice-02-analyze-migrate-prepare/CLOSURE_BRIEF.md +12 -0
  161. package/specs/quiver-v39-cli-i18n-setup-onboarding/slices/slice-02-analyze-migrate-prepare/EXECUTION_BRIEF.md +23 -0
  162. package/specs/quiver-v39-cli-i18n-setup-onboarding/slices/slice-02-analyze-migrate-prepare/slice.json +62 -0
  163. package/specs/quiver-v39-cli-i18n-setup-onboarding/slices/slice-03-demo-evidence-onboarding/CLOSURE_BRIEF.md +12 -0
  164. package/specs/quiver-v39-cli-i18n-setup-onboarding/slices/slice-03-demo-evidence-onboarding/EXECUTION_BRIEF.md +22 -0
  165. package/specs/quiver-v39-cli-i18n-setup-onboarding/slices/slice-03-demo-evidence-onboarding/slice.json +72 -0
  166. package/specs/quiver-v39-cli-i18n-setup-onboarding/slices/slice-04-setup-tests-smokes/CLOSURE_BRIEF.md +15 -0
  167. package/specs/quiver-v39-cli-i18n-setup-onboarding/slices/slice-04-setup-tests-smokes/EXECUTION_BRIEF.md +22 -0
  168. package/specs/quiver-v39-cli-i18n-setup-onboarding/slices/slice-04-setup-tests-smokes/slice.json +61 -0
  169. package/specs/quiver-v40-cli-i18n-spec-slice-workflows/EVIDENCE_REPORT.md +50 -0
  170. package/specs/quiver-v40-cli-i18n-spec-slice-workflows/EXECUTION_PLAN.md +25 -0
  171. package/specs/quiver-v40-cli-i18n-spec-slice-workflows/SPEC.md +52 -0
  172. package/specs/quiver-v40-cli-i18n-spec-slice-workflows/STATUS.md +24 -0
  173. package/specs/quiver-v40-cli-i18n-spec-slice-workflows/pr.md +94 -0
  174. package/specs/quiver-v40-cli-i18n-spec-slice-workflows/slices/slice-00-spec-slice-foundation/CLOSURE_BRIEF.md +10 -0
  175. package/specs/quiver-v40-cli-i18n-spec-slice-workflows/slices/slice-00-spec-slice-foundation/EXECUTION_BRIEF.md +21 -0
  176. package/specs/quiver-v40-cli-i18n-spec-slice-workflows/slices/slice-00-spec-slice-foundation/slice.json +53 -0
  177. package/specs/quiver-v40-cli-i18n-spec-slice-workflows/slices/slice-01-spec-create-start-status/CLOSURE_BRIEF.md +12 -0
  178. package/specs/quiver-v40-cli-i18n-spec-slice-workflows/slices/slice-01-spec-create-start-status/EXECUTION_BRIEF.md +22 -0
  179. package/specs/quiver-v40-cli-i18n-spec-slice-workflows/slices/slice-01-spec-create-start-status/slice.json +63 -0
  180. package/specs/quiver-v40-cli-i18n-spec-slice-workflows/slices/slice-02-spec-validate-close/CLOSURE_BRIEF.md +10 -0
  181. package/specs/quiver-v40-cli-i18n-spec-slice-workflows/slices/slice-02-spec-validate-close/EXECUTION_BRIEF.md +22 -0
  182. package/specs/quiver-v40-cli-i18n-spec-slice-workflows/slices/slice-02-spec-validate-close/slice.json +63 -0
  183. package/specs/quiver-v40-cli-i18n-spec-slice-workflows/slices/slice-03-slice-lifecycle-handoffs/CLOSURE_BRIEF.md +10 -0
  184. package/specs/quiver-v40-cli-i18n-spec-slice-workflows/slices/slice-03-slice-lifecycle-handoffs/EXECUTION_BRIEF.md +22 -0
  185. package/specs/quiver-v40-cli-i18n-spec-slice-workflows/slices/slice-03-slice-lifecycle-handoffs/slice.json +72 -0
  186. package/specs/quiver-v40-cli-i18n-spec-slice-workflows/slices/slice-04-spec-slice-tests-smokes/CLOSURE_BRIEF.md +15 -0
  187. package/specs/quiver-v40-cli-i18n-spec-slice-workflows/slices/slice-04-spec-slice-tests-smokes/EXECUTION_BRIEF.md +22 -0
  188. package/specs/quiver-v40-cli-i18n-spec-slice-workflows/slices/slice-04-spec-slice-tests-smokes/slice.json +69 -0
  189. package/specs/quiver-v41-cli-i18n-ai-lifecycle/EVIDENCE_REPORT.md +90 -0
  190. package/specs/quiver-v41-cli-i18n-ai-lifecycle/EXECUTION_PLAN.md +33 -0
  191. package/specs/quiver-v41-cli-i18n-ai-lifecycle/SPEC.md +57 -0
  192. package/specs/quiver-v41-cli-i18n-ai-lifecycle/STATUS.md +26 -0
  193. package/specs/quiver-v41-cli-i18n-ai-lifecycle/pr.md +103 -0
  194. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-00-ai-i18n-foundation/CLOSURE_BRIEF.md +10 -0
  195. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-00-ai-i18n-foundation/EXECUTION_BRIEF.md +21 -0
  196. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-00-ai-i18n-foundation/slice.json +53 -0
  197. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-01-ai-run-status-resume/CLOSURE_BRIEF.md +13 -0
  198. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-01-ai-run-status-resume/EXECUTION_BRIEF.md +22 -0
  199. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-01-ai-run-status-resume/slice.json +68 -0
  200. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-02-ai-agent-models/CLOSURE_BRIEF.md +12 -0
  201. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-02-ai-agent-models/EXECUTION_BRIEF.md +22 -0
  202. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-02-ai-agent-models/slice.json +66 -0
  203. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-03-ai-planner-approval-review/CLOSURE_BRIEF.md +12 -0
  204. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-03-ai-planner-approval-review/EXECUTION_BRIEF.md +23 -0
  205. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-03-ai-planner-approval-review/slice.json +68 -0
  206. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-04-ai-execution-pr/CLOSURE_BRIEF.md +13 -0
  207. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-04-ai-execution-pr/EXECUTION_BRIEF.md +23 -0
  208. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-04-ai-execution-pr/slice.json +72 -0
  209. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-05-ai-tests-smokes/CLOSURE_BRIEF.md +15 -0
  210. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-05-ai-tests-smokes/EXECUTION_BRIEF.md +22 -0
  211. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-05-ai-tests-smokes/slice.json +66 -0
  212. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-06-ai-prepare-context-progress-i18n-fix/CLOSURE_BRIEF.md +11 -0
  213. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-06-ai-prepare-context-progress-i18n-fix/EXECUTION_BRIEF.md +22 -0
  214. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-06-ai-prepare-context-progress-i18n-fix/slice.json +70 -0
  215. package/specs/quiver-v42-cli-i18n-generated-docs/EVIDENCE_REPORT.md +64 -0
  216. package/specs/quiver-v42-cli-i18n-generated-docs/EXECUTION_PLAN.md +26 -0
  217. package/specs/quiver-v42-cli-i18n-generated-docs/SPEC.md +52 -0
  218. package/specs/quiver-v42-cli-i18n-generated-docs/STATUS.md +24 -0
  219. package/specs/quiver-v42-cli-i18n-generated-docs/pr.md +125 -0
  220. package/specs/quiver-v42-cli-i18n-generated-docs/slices/slice-00-generated-docs-foundation/CLOSURE_BRIEF.md +10 -0
  221. package/specs/quiver-v42-cli-i18n-generated-docs/slices/slice-00-generated-docs-foundation/EXECUTION_BRIEF.md +21 -0
  222. package/specs/quiver-v42-cli-i18n-generated-docs/slices/slice-00-generated-docs-foundation/slice.json +53 -0
  223. package/specs/quiver-v42-cli-i18n-generated-docs/slices/slice-01-template-language-routing/CLOSURE_BRIEF.md +10 -0
  224. package/specs/quiver-v42-cli-i18n-generated-docs/slices/slice-01-template-language-routing/EXECUTION_BRIEF.md +22 -0
  225. package/specs/quiver-v42-cli-i18n-generated-docs/slices/slice-01-template-language-routing/slice.json +62 -0
  226. package/specs/quiver-v42-cli-i18n-generated-docs/slices/slice-02-init-docs-and-i18n-assets/CLOSURE_BRIEF.md +11 -0
  227. package/specs/quiver-v42-cli-i18n-generated-docs/slices/slice-02-init-docs-and-i18n-assets/EXECUTION_BRIEF.md +22 -0
  228. package/specs/quiver-v42-cli-i18n-generated-docs/slices/slice-02-init-docs-and-i18n-assets/slice.json +72 -0
  229. package/specs/quiver-v42-cli-i18n-generated-docs/slices/slice-03-docs-reference-guides/CLOSURE_BRIEF.md +12 -0
  230. package/specs/quiver-v42-cli-i18n-generated-docs/slices/slice-03-docs-reference-guides/EXECUTION_BRIEF.md +22 -0
  231. package/specs/quiver-v42-cli-i18n-generated-docs/slices/slice-03-docs-reference-guides/slice.json +60 -0
  232. package/specs/quiver-v42-cli-i18n-generated-docs/slices/slice-04-generated-docs-tests-smokes/CLOSURE_BRIEF.md +16 -0
  233. package/specs/quiver-v42-cli-i18n-generated-docs/slices/slice-04-generated-docs-tests-smokes/EXECUTION_BRIEF.md +22 -0
  234. package/specs/quiver-v42-cli-i18n-generated-docs/slices/slice-04-generated-docs-tests-smokes/slice.json +62 -0
  235. package/specs/quiver-v43-cli-i18n-audit-release-readiness/EVIDENCE_REPORT.md +203 -0
  236. package/specs/quiver-v43-cli-i18n-audit-release-readiness/EXECUTION_PLAN.md +27 -0
  237. package/specs/quiver-v43-cli-i18n-audit-release-readiness/SPEC.md +54 -0
  238. package/specs/quiver-v43-cli-i18n-audit-release-readiness/STATUS.md +24 -0
  239. package/specs/quiver-v43-cli-i18n-audit-release-readiness/command-language-mode-matrix.json +545 -0
  240. package/specs/quiver-v43-cli-i18n-audit-release-readiness/cross-platform-smoke-matrix.md +35 -0
  241. package/specs/quiver-v43-cli-i18n-audit-release-readiness/pr.md +155 -0
  242. package/specs/quiver-v43-cli-i18n-audit-release-readiness/slices/slice-00-audit-foundation/CLOSURE_BRIEF.md +10 -0
  243. package/specs/quiver-v43-cli-i18n-audit-release-readiness/slices/slice-00-audit-foundation/EXECUTION_BRIEF.md +21 -0
  244. package/specs/quiver-v43-cli-i18n-audit-release-readiness/slices/slice-00-audit-foundation/slice.json +53 -0
  245. package/specs/quiver-v43-cli-i18n-audit-release-readiness/slices/slice-01-command-language-mode-matrix/CLOSURE_BRIEF.md +13 -0
  246. package/specs/quiver-v43-cli-i18n-audit-release-readiness/slices/slice-01-command-language-mode-matrix/EXECUTION_BRIEF.md +23 -0
  247. package/specs/quiver-v43-cli-i18n-audit-release-readiness/slices/slice-01-command-language-mode-matrix/slice.json +62 -0
  248. package/specs/quiver-v43-cli-i18n-audit-release-readiness/slices/slice-02-public-string-audit/CLOSURE_BRIEF.md +18 -0
  249. package/specs/quiver-v43-cli-i18n-audit-release-readiness/slices/slice-02-public-string-audit/EXECUTION_BRIEF.md +22 -0
  250. package/specs/quiver-v43-cli-i18n-audit-release-readiness/slices/slice-02-public-string-audit/slice.json +59 -0
  251. package/specs/quiver-v43-cli-i18n-audit-release-readiness/slices/slice-03-cross-platform-smokes/CLOSURE_BRIEF.md +15 -0
  252. package/specs/quiver-v43-cli-i18n-audit-release-readiness/slices/slice-03-cross-platform-smokes/EXECUTION_BRIEF.md +23 -0
  253. package/specs/quiver-v43-cli-i18n-audit-release-readiness/slices/slice-03-cross-platform-smokes/slice.json +62 -0
  254. package/specs/quiver-v43-cli-i18n-audit-release-readiness/slices/slice-04-package-release-readiness/CLOSURE_BRIEF.md +17 -0
  255. package/specs/quiver-v43-cli-i18n-audit-release-readiness/slices/slice-04-package-release-readiness/EXECUTION_BRIEF.md +24 -0
  256. package/specs/quiver-v43-cli-i18n-audit-release-readiness/slices/slice-04-package-release-readiness/slice.json +66 -0
  257. package/specs/quiver-v44-provider-live-output-tui-lite/EVIDENCE_REPORT.md +18 -0
  258. package/specs/quiver-v44-provider-live-output-tui-lite/EXECUTION_PLAN.md +31 -0
  259. package/specs/quiver-v44-provider-live-output-tui-lite/SPEC.md +118 -0
  260. package/specs/quiver-v44-provider-live-output-tui-lite/STATUS.md +25 -0
  261. package/specs/quiver-v44-provider-live-output-tui-lite/pr.md +92 -0
  262. package/specs/quiver-v44-provider-live-output-tui-lite/slices/slice-00-tui-lite-contract-foundation/CLOSURE_BRIEF.md +11 -0
  263. package/specs/quiver-v44-provider-live-output-tui-lite/slices/slice-00-tui-lite-contract-foundation/EXECUTION_BRIEF.md +23 -0
  264. package/specs/quiver-v44-provider-live-output-tui-lite/slices/slice-00-tui-lite-contract-foundation/slice.json +64 -0
  265. package/specs/quiver-v44-provider-live-output-tui-lite/slices/slice-01-provider-stream-hooks/CLOSURE_BRIEF.md +10 -0
  266. package/specs/quiver-v44-provider-live-output-tui-lite/slices/slice-01-provider-stream-hooks/EXECUTION_BRIEF.md +24 -0
  267. package/specs/quiver-v44-provider-live-output-tui-lite/slices/slice-01-provider-stream-hooks/slice.json +65 -0
  268. package/specs/quiver-v44-provider-live-output-tui-lite/slices/slice-02-live-output-renderer/CLOSURE_BRIEF.md +10 -0
  269. package/specs/quiver-v44-provider-live-output-tui-lite/slices/slice-02-live-output-renderer/EXECUTION_BRIEF.md +24 -0
  270. package/specs/quiver-v44-provider-live-output-tui-lite/slices/slice-02-live-output-renderer/slice.json +70 -0
  271. package/specs/quiver-v44-provider-live-output-tui-lite/slices/slice-03-prepare-context-integration/CLOSURE_BRIEF.md +10 -0
  272. package/specs/quiver-v44-provider-live-output-tui-lite/slices/slice-03-prepare-context-integration/EXECUTION_BRIEF.md +25 -0
  273. package/specs/quiver-v44-provider-live-output-tui-lite/slices/slice-03-prepare-context-integration/slice.json +70 -0
  274. package/specs/quiver-v44-provider-live-output-tui-lite/slices/slice-04-planner-command-audit-adoption/CLOSURE_BRIEF.md +10 -0
  275. package/specs/quiver-v44-provider-live-output-tui-lite/slices/slice-04-planner-command-audit-adoption/EXECUTION_BRIEF.md +26 -0
  276. package/specs/quiver-v44-provider-live-output-tui-lite/slices/slice-04-planner-command-audit-adoption/slice.json +72 -0
  277. package/specs/quiver-v44-provider-live-output-tui-lite/slices/slice-05-docs-tests-readiness/CLOSURE_BRIEF.md +15 -0
  278. package/specs/quiver-v44-provider-live-output-tui-lite/slices/slice-05-docs-tests-readiness/EXECUTION_BRIEF.md +26 -0
  279. package/specs/quiver-v44-provider-live-output-tui-lite/slices/slice-05-docs-tests-readiness/slice.json +75 -0
  280. package/specs/quiver-v45-ci-actions-node24-readiness/EVIDENCE_REPORT.md +30 -0
  281. package/specs/quiver-v45-ci-actions-node24-readiness/EXECUTION_PLAN.md +22 -0
  282. package/specs/quiver-v45-ci-actions-node24-readiness/SPEC.md +49 -0
  283. package/specs/quiver-v45-ci-actions-node24-readiness/STATUS.md +21 -0
  284. package/specs/quiver-v45-ci-actions-node24-readiness/pr.md +67 -0
  285. package/specs/quiver-v45-ci-actions-node24-readiness/slices/slice-00-ci-actions-foundation/CLOSURE_BRIEF.md +10 -0
  286. package/specs/quiver-v45-ci-actions-node24-readiness/slices/slice-00-ci-actions-foundation/EXECUTION_BRIEF.md +21 -0
  287. package/specs/quiver-v45-ci-actions-node24-readiness/slices/slice-00-ci-actions-foundation/slice.json +48 -0
  288. package/specs/quiver-v45-ci-actions-node24-readiness/slices/slice-01-actions-node24-readiness/CLOSURE_BRIEF.md +14 -0
  289. package/specs/quiver-v45-ci-actions-node24-readiness/slices/slice-01-actions-node24-readiness/EXECUTION_BRIEF.md +23 -0
  290. package/specs/quiver-v45-ci-actions-node24-readiness/slices/slice-01-actions-node24-readiness/slice.json +65 -0
  291. package/src/create-quiver/commands/ai.js +485 -307
  292. package/src/create-quiver/commands/config.js +124 -0
  293. package/src/create-quiver/commands/dashboard.js +31 -0
  294. package/src/create-quiver/commands/demo.js +2 -2
  295. package/src/create-quiver/commands/evidence.js +6 -4
  296. package/src/create-quiver/commands/flow.js +108 -16
  297. package/src/create-quiver/commands/graph.js +1 -0
  298. package/src/create-quiver/commands/next.js +21 -18
  299. package/src/create-quiver/commands/plan.js +23 -6
  300. package/src/create-quiver/commands/spec.js +66 -57
  301. package/src/create-quiver/index.js +606 -136
  302. package/src/create-quiver/lib/ai/execution-plan.js +23 -20
  303. package/src/create-quiver/lib/ai/executor.js +60 -44
  304. package/src/create-quiver/lib/ai/export-state.js +75 -64
  305. package/src/create-quiver/lib/ai/github.js +24 -21
  306. package/src/create-quiver/lib/ai/run-state.js +28 -25
  307. package/src/create-quiver/lib/cli/ux-flags.js +6 -0
  308. package/src/create-quiver/lib/dashboard.js +939 -0
  309. package/src/create-quiver/lib/demo.js +14 -12
  310. package/src/create-quiver/lib/handoff.js +16 -7
  311. package/src/create-quiver/lib/i18n/catalog.js +152 -0
  312. package/src/create-quiver/lib/i18n/language.js +279 -0
  313. package/src/create-quiver/lib/i18n/messages/en.js +853 -0
  314. package/src/create-quiver/lib/i18n/messages/es.js +968 -0
  315. package/src/create-quiver/lib/i18n/read-only-format.js +26 -0
  316. package/src/create-quiver/lib/i18n/templates.js +172 -0
  317. package/src/create-quiver/lib/init-docs.js +24 -4
  318. package/src/create-quiver/lib/init-layout.js +8 -0
  319. package/src/create-quiver/lib/lifecycle.js +53 -46
  320. package/src/create-quiver/lib/project-state-resolver.js +22 -2
  321. package/src/create-quiver/lib/readiness.js +77 -67
  322. package/src/create-quiver/lib/renderers/tree.js +9 -6
  323. package/src/create-quiver/lib/spec-worktrees.js +34 -30
  324. package/src/create-quiver/lib/version.js +159 -0
@@ -0,0 +1,124 @@
1
+ const path = require('path');
2
+
3
+ const {
4
+ DEFAULT_LANGUAGE,
5
+ SUPPORTED_LANGUAGES,
6
+ formatLanguageWarning,
7
+ globalLanguageConfigPath,
8
+ normalizeLanguage,
9
+ projectLanguageConfigPath,
10
+ writeGlobalLanguageConfig,
11
+ writeProjectLanguageConfig,
12
+ } = require('../lib/i18n/language');
13
+
14
+ function formatError(message) {
15
+ return `create-quiver: ${message}`;
16
+ }
17
+
18
+ function toJsonWarning(warning) {
19
+ return {
20
+ code: warning.code,
21
+ source: warning.source,
22
+ requested_language: warning.requestedLanguage,
23
+ fallback_language: warning.fallbackLanguage,
24
+ supported_languages: warning.supportedLanguages,
25
+ };
26
+ }
27
+
28
+ function formatProjectRelativePath(repoRoot, filePath) {
29
+ return path.relative(repoRoot, filePath).split(path.sep).join('/') || '.';
30
+ }
31
+
32
+ function validateLanguageForSet(language) {
33
+ const normalized = normalizeLanguage(language);
34
+ if (!normalized || normalized !== String(language || '').trim().toLowerCase()) {
35
+ throw new Error(formatError(`unsupported language: ${language || '<missing>'}. Supported languages: ${SUPPORTED_LANGUAGES.join(', ')}. Run: npx create-quiver config language set ${DEFAULT_LANGUAGE}`));
36
+ }
37
+ return normalized;
38
+ }
39
+
40
+ function runLanguageShow(repoRoot, options = {}) {
41
+ const resolution = options.languageResolution || {
42
+ language: DEFAULT_LANGUAGE,
43
+ source: 'default',
44
+ warnings: [],
45
+ };
46
+ const warnings = resolution.warnings || [];
47
+
48
+ if (options.json) {
49
+ process.stdout.write(`${JSON.stringify({
50
+ schema_version: 1,
51
+ language: resolution.language,
52
+ source: resolution.source,
53
+ requested_source: resolution.requestedSource || null,
54
+ requested_language: resolution.requestedLanguage || null,
55
+ warnings: warnings.map(toJsonWarning),
56
+ }, null, 2)}\n`);
57
+ return;
58
+ }
59
+
60
+ const lines = [
61
+ 'Quiver config language',
62
+ `Language: ${resolution.language}`,
63
+ `Source: ${resolution.source}`,
64
+ ];
65
+ for (const warning of warnings) {
66
+ lines.push(formatLanguageWarning(warning));
67
+ }
68
+ process.stdout.write(`${lines.join('\n')}\n`);
69
+ }
70
+
71
+ function runLanguageSet(repoRoot, options = {}) {
72
+ const language = validateLanguageForSet(options.value);
73
+ const global = options.global === true;
74
+ const configPath = global ? globalLanguageConfigPath() : projectLanguageConfigPath(repoRoot);
75
+
76
+ if (global) {
77
+ writeGlobalLanguageConfig(language);
78
+ } else {
79
+ writeProjectLanguageConfig(repoRoot, language);
80
+ }
81
+
82
+ const displayPath = global ? '~/.quiver/config.json' : formatProjectRelativePath(repoRoot, configPath);
83
+ const scope = global ? 'global' : 'project';
84
+
85
+ if (options.json) {
86
+ process.stdout.write(`${JSON.stringify({
87
+ schema_version: 1,
88
+ action: 'set',
89
+ scope,
90
+ language,
91
+ path: displayPath,
92
+ }, null, 2)}\n`);
93
+ return;
94
+ }
95
+
96
+ process.stdout.write([
97
+ 'Quiver config language updated',
98
+ `Scope: ${scope}`,
99
+ `Path: ${displayPath}`,
100
+ `Language: ${language}`,
101
+ ].join('\n') + '\n');
102
+ }
103
+
104
+ function runConfig(repoRoot, options = {}) {
105
+ if (options.section !== 'language') {
106
+ throw new Error(formatError(`unsupported config section: ${options.section || '(missing)'}. Supported sections: language`));
107
+ }
108
+
109
+ if (options.command === 'show') {
110
+ runLanguageShow(repoRoot, options);
111
+ return;
112
+ }
113
+
114
+ if (options.command === 'set') {
115
+ runLanguageSet(repoRoot, options);
116
+ return;
117
+ }
118
+
119
+ throw new Error(formatError(`unsupported config language command: ${options.command || '(missing)'}. Supported commands: show, set`));
120
+ }
121
+
122
+ module.exports = {
123
+ runConfig,
124
+ };
@@ -0,0 +1,31 @@
1
+ const {
2
+ buildErrorPayload,
3
+ collectDashboardReport,
4
+ formatHumanDashboard,
5
+ normalizeDashboardOptions,
6
+ } = require('../lib/dashboard');
7
+
8
+ function runDashboard(repoRoot, options = {}) {
9
+ try {
10
+ normalizeDashboardOptions(options);
11
+ const report = collectDashboardReport(repoRoot, options);
12
+ if (options.json) {
13
+ process.stdout.write(`${JSON.stringify(report, null, 2)}\n`);
14
+ return report;
15
+ }
16
+
17
+ process.stdout.write(formatHumanDashboard(report, options));
18
+ return report;
19
+ } catch (error) {
20
+ if (options.json) {
21
+ process.stdout.write(`${JSON.stringify(buildErrorPayload(error), null, 2)}\n`);
22
+ process.exitCode = 1;
23
+ return null;
24
+ }
25
+ throw error;
26
+ }
27
+ }
28
+
29
+ module.exports = {
30
+ runDashboard,
31
+ };
@@ -8,12 +8,12 @@ function runDemo(options = {}) {
8
8
  const plan = buildDemoPlan(options.targetRoot, { demo: options.demo });
9
9
 
10
10
  if (options.dryRun) {
11
- console.log(formatDemoPlan(plan, { dryRun: true }));
11
+ console.log(formatDemoPlan(plan, { dryRun: true, language: options.language }));
12
12
  return plan;
13
13
  }
14
14
 
15
15
  writeDemoPlan(plan);
16
- console.log(formatDemoPlan(plan));
16
+ console.log(formatDemoPlan(plan, { language: options.language }));
17
17
  return plan;
18
18
  }
19
19
 
@@ -1,5 +1,6 @@
1
1
  const path = require('path');
2
2
  const { runEvidenceCommand } = require('../lib/evidence');
3
+ const { createTranslator } = require('../lib/i18n/catalog');
3
4
 
4
5
  function formatOutputPath(repoRoot, outputPath) {
5
6
  const relativeOutput = path.relative(repoRoot, outputPath).split(path.sep).join('/');
@@ -11,6 +12,7 @@ function formatOutputPath(repoRoot, outputPath) {
11
12
  }
12
13
 
13
14
  function runEvidence(repoRoot, options = {}) {
15
+ const translator = createTranslator(options.language);
14
16
  const command = options.command || '';
15
17
  if (options.subcommand !== 'run') {
16
18
  throw new Error('create-quiver: missing evidence subcommand. Use: npx create-quiver evidence run -- <command>');
@@ -23,10 +25,10 @@ function runEvidence(repoRoot, options = {}) {
23
25
  });
24
26
  const displayOutput = formatOutputPath(repoRoot, result.outputPath);
25
27
 
26
- console.log('Quiver evidence recorded');
27
- console.log(`- Command: ${result.record.command}`);
28
- console.log(`- Exit code: ${result.exitCode}`);
29
- console.log(`- Output: ${displayOutput}`);
28
+ console.log(translator.t('evidence.recorded'));
29
+ console.log(`- ${translator.t('evidence.command', { command: result.record.command })}`);
30
+ console.log(`- ${translator.t('evidence.exit_code', { code: result.exitCode })}`);
31
+ console.log(`- ${translator.t('evidence.output', { path: displayOutput })}`);
30
32
 
31
33
  return result;
32
34
  }
@@ -5,6 +5,7 @@ const { readPhaseApproval } = require('../lib/approvals');
5
5
  const { approvalCandidateCommand, buildApprovalCandidateReport, formatCandidateSummary } = require('../lib/ai/approval-candidates');
6
6
  const { readPlanReview } = require('../lib/ai/plan-review');
7
7
  const { listAgentProfiles } = require('../lib/agent-profiles');
8
+ const { translatorForHuman } = require('../lib/i18n/read-only-format');
8
9
  const { readProjectScanStatus } = require('../lib/project-scan');
9
10
  const { buildGraph, naturalNumberFromSliceId, readAllSlices } = require('../lib/slice-graph');
10
11
  const { hasQuiverInitializationEvidence, readState } = require('../lib/state');
@@ -617,38 +618,129 @@ function detectFlowState(projectRoot) {
617
618
  });
618
619
  }
619
620
 
620
- function formatFlowReport(report) {
621
+ function formatFlowBlocker(blocker, translator) {
622
+ const text = String(blocker || '');
623
+ if (text === 'Quiver has not been initialized in this project.') {
624
+ return translator.t('flow.blocker.not_initialized');
625
+ }
626
+ if (text === 'Acceptance criteria draft exists but is not approved.') {
627
+ return translator.t('flow.blocker.acceptance_draft');
628
+ }
629
+ if (text === 'Acceptance criteria changed after approval.') {
630
+ return translator.t('flow.blocker.acceptance_stale');
631
+ }
632
+ if (text === 'Technical plan draft exists but has not been reviewed for production readiness.') {
633
+ return translator.t('flow.blocker.technical_plan_review_needed');
634
+ }
635
+ if (text === 'Technical plan review blocks approval.') {
636
+ return translator.t('flow.blocker.technical_plan_review_blocked');
637
+ }
638
+ if (text === 'Technical plan draft was reviewed but is not approved.') {
639
+ return translator.t('flow.blocker.technical_plan_draft');
640
+ }
641
+ if (text === 'Technical plan changed after approval and needs a fresh production review.') {
642
+ return translator.t('flow.blocker.technical_plan_changed_review_needed');
643
+ }
644
+ if (text === 'Technical plan changed after approval and latest review blocks approval.') {
645
+ return translator.t('flow.blocker.technical_plan_changed_review_blocked');
646
+ }
647
+ if (text === 'Technical plan changed after approval and the latest draft was reviewed.') {
648
+ return translator.t('flow.blocker.technical_plan_changed_reviewed');
649
+ }
650
+ if (text === 'Later slices are blocked until slice-00 is completed and committed.') {
651
+ return translator.t('flow.blocker.slice_00_required');
652
+ }
653
+ if (text === 'No ready slice was found. Review dependencies and statuses.') {
654
+ return translator.t('flow.blocker.no_ready_slice');
655
+ }
656
+ const missingDoc = text.match(/^Missing (docs\/[^.]+\.md)\.$/);
657
+ if (missingDoc) {
658
+ return translator.t('flow.blocker.missing_doc', { file: missingDoc[1] });
659
+ }
660
+ const missingProfiles = text.match(/^Missing (.+) agent profile(s?)\.$/);
661
+ if (missingProfiles) {
662
+ return translator.t('flow.blocker.missing_agent_profiles', { roles: missingProfiles[1] });
663
+ }
664
+ const planReviewStatus = text.match(/^Plan review status is (.+)\.$/);
665
+ if (planReviewStatus) {
666
+ return translator.t('flow.blocker.plan_review_status', { status: planReviewStatus[1] });
667
+ }
668
+ const couldNotReadSlices = text.match(/^Could not read slices: (.+)$/);
669
+ if (couldNotReadSlices) {
670
+ return translator.t('flow.blocker.could_not_read_slices', { error: couldNotReadSlices[1] });
671
+ }
672
+ if (text === 'No slice.json files found for the detected specs.') {
673
+ return translator.t('flow.blocker.no_slice_json');
674
+ }
675
+ const graphNotReady = text.match(/^Slice graph is not ready: (.+)$/);
676
+ if (graphNotReady) {
677
+ return translator.t('flow.blocker.slice_graph_not_ready', { error: graphNotReady[1] });
678
+ }
679
+ return text;
680
+ }
681
+
682
+ function formatFlowContextSource(contextSource, translator) {
683
+ const source = contextSource || {};
684
+ if (source.status === 'fresh') {
685
+ return translator.t('flow.context_source.fresh', {
686
+ path: source.artifactPath,
687
+ updatedAt: source.scanUpdatedAt,
688
+ });
689
+ }
690
+ if (source.status === 'legacy') {
691
+ return translator.t('flow.context_source.legacy', {
692
+ path: source.artifactPath,
693
+ updatedAt: source.scanUpdatedAt,
694
+ });
695
+ }
696
+ if (source.status === 'stale') {
697
+ return translator.t('flow.context_source.stale', { path: source.artifactPath });
698
+ }
699
+ if (source.status === 'partial' && source.artifactPath && !source.projectMapPath) {
700
+ return translator.t('flow.context_source.partial_scan_only', { path: source.artifactPath });
701
+ }
702
+ if (source.status === 'partial' && !source.artifactPath && source.projectMapPath) {
703
+ return translator.t('flow.context_source.partial_map_only');
704
+ }
705
+ if (source.status === 'invalid') {
706
+ return translator.t('flow.context_source.invalid', { error: source.error });
707
+ }
708
+ return translator.t('flow.context_source.missing');
709
+ }
710
+
711
+ function formatFlowReport(report, options = {}) {
712
+ const translator = translatorForHuman(options);
621
713
  const lines = [
622
- 'Quiver guided flow',
714
+ translator.t('flow.title'),
623
715
  '',
624
- 'Command path:',
625
- '- Bootstrap and remote use: npx create-quiver <command>',
626
- '- Short alias after local install: quiver <command>',
627
- `- Generated project script: ${report.facts.flowScriptCommand}`,
716
+ `${translator.t('flow.command_path')}:`,
717
+ `- ${translator.t('flow.bootstrap_remote')}: npx create-quiver <command>`,
718
+ `- ${translator.t('flow.short_alias')}: quiver <command>`,
719
+ `- ${translator.t('flow.generated_script')}: ${report.facts.flowScriptCommand}`,
628
720
  '',
629
- `Package manager: ${report.facts.packageManager}`,
630
- `Stage: ${report.label}`,
631
- `Next safe command: ${report.nextCommand}`,
632
- `Context source: ${report.facts.contextSource.summary}`,
721
+ `${translator.t('flow.package_manager')}: ${report.facts.packageManager}`,
722
+ `${translator.t('flow.stage')}: ${translator.t(`flow.stage.${report.stage}`)}`,
723
+ `${translator.t('flow.next_safe_command')}: ${report.nextCommand}`,
724
+ `${translator.t('flow.context_source')}: ${formatFlowContextSource(report.facts.contextSource, translator)}`,
633
725
  ];
634
726
 
635
727
  if (report.blockers.length > 0) {
636
- lines.push('', 'Blockers:');
728
+ lines.push('', `${translator.t('flow.blockers')}:`);
637
729
  for (const blocker of report.blockers) {
638
- lines.push(`- ${blocker}`);
730
+ lines.push(`- ${formatFlowBlocker(blocker, translator)}`);
639
731
  }
640
732
  }
641
733
 
642
- lines.push('', 'Suggested sequence:');
734
+ lines.push('', `${translator.t('flow.suggested_sequence')}:`);
643
735
  for (const command of report.suggestedCommands) {
644
736
  lines.push(`- ${command}`);
645
737
  }
646
738
 
647
739
  if (report.facts.specSlugs.length > 0) {
648
- lines.push('', `Specs found: ${report.facts.specSlugs.join(', ')}`);
740
+ lines.push('', `${translator.t('flow.specs_found')}: ${report.facts.specSlugs.join(', ')}`);
649
741
  }
650
742
 
651
- lines.push('', 'Safety: this command is read-only and does not call AI providers.');
743
+ lines.push('', translator.t('flow.safety_read_only'));
652
744
 
653
745
  return `${lines.join('\n')}\n`;
654
746
  }
@@ -661,7 +753,7 @@ async function runFlow(repoRoot, options = {}) {
661
753
  return report;
662
754
  }
663
755
 
664
- process.stdout.write(formatFlowReport(report));
756
+ process.stdout.write(formatFlowReport(report, options));
665
757
  return report;
666
758
  }
667
759
 
@@ -72,6 +72,7 @@ function formatHumanGraph(report, options = {}) {
72
72
  const format = options.format || 'tree';
73
73
  const sharedOptions = {
74
74
  showConflicts: options.showConflicts === true,
75
+ language: options.language,
75
76
  unicode: options.unicode === true || isUnicodeEnabled(options),
76
77
  };
77
78
 
@@ -1,6 +1,7 @@
1
1
  const path = require('path');
2
2
  const readline = require('readline');
3
3
  const { collectPlan } = require('./plan');
4
+ const { formatStatus, translatorForHuman } = require('../lib/i18n/read-only-format');
4
5
  const { startSlice } = require('../lib/lifecycle');
5
6
 
6
7
  function toStartSliceCommand(slicePath) {
@@ -34,15 +35,16 @@ function collectNext(repoRoot, options = {}) {
34
35
  }
35
36
 
36
37
  function formatHumanNext(report, options = {}) {
37
- const lines = [options.allReady ? 'Ready slices' : 'Next ready slice'];
38
+ const translator = translatorForHuman(options);
39
+ const lines = [options.allReady ? translator.t('next.title.ready') : translator.t('next.title.next')];
38
40
 
39
41
  if (!report.next) {
40
- lines.push('No ready slices found.');
42
+ lines.push(translator.t('next.empty.ready'));
41
43
  if (report.include_completed && report.history.length > 0) {
42
44
  lines.push('');
43
- lines.push('Historical slices included by --include-completed:');
45
+ lines.push(`${translator.t('next.history_title')}:`);
44
46
  for (const item of report.history) {
45
- lines.push(`- ${item.ref} (${item.status})`);
47
+ lines.push(`- ${item.ref} (${formatStatus(item.status, translator)})`);
46
48
  }
47
49
  }
48
50
  return `${lines.join('\n')}\n`;
@@ -55,25 +57,25 @@ function formatHumanNext(report, options = {}) {
55
57
  if (options.allReady) {
56
58
  lines.push('');
57
59
  lines.push(`[${index + 1}] ${item.ref}`);
58
- lines.push(`Title: ${item.title}`);
59
- lines.push(`Status: ${item.status}`);
60
- lines.push(`Start: ${command}`);
60
+ lines.push(`${translator.t('next.label.title')}: ${item.title}`);
61
+ lines.push(`${translator.t('next.label.status')}: ${formatStatus(item.status, translator)}`);
62
+ lines.push(`${translator.t('next.label.start')}: ${command}`);
61
63
  } else {
62
- lines.push(`Slice: ${item.ref}`);
63
- lines.push(`Title: ${item.title}`);
64
- lines.push(`Status: ${item.status}`);
65
- lines.push(`Start: ${command}`);
64
+ lines.push(`${translator.t('next.label.slice')}: ${item.ref}`);
65
+ lines.push(`${translator.t('next.label.title')}: ${item.title}`);
66
+ lines.push(`${translator.t('next.label.status')}: ${formatStatus(item.status, translator)}`);
67
+ lines.push(`${translator.t('next.label.start')}: ${command}`);
66
68
  if (report.all_ready.length > 1) {
67
- lines.push(`Also ready: ${report.all_ready.slice(1).map((candidate) => candidate.ref).join(', ')}`);
69
+ lines.push(`${translator.t('next.label.also_ready')}: ${report.all_ready.slice(1).map((candidate) => candidate.ref).join(', ')}`);
68
70
  }
69
71
  }
70
72
  }
71
73
 
72
74
  if (report.include_completed && report.history.length > 0) {
73
75
  lines.push('');
74
- lines.push('Historical slices included by --include-completed:');
76
+ lines.push(`${translator.t('next.history_title')}:`);
75
77
  for (const item of report.history) {
76
- lines.push(`- ${item.ref} (${item.status})`);
78
+ lines.push(`- ${item.ref} (${formatStatus(item.status, translator)})`);
77
79
  }
78
80
  }
79
81
 
@@ -104,6 +106,7 @@ function promptConfirm(message, io = {}) {
104
106
 
105
107
  async function runNext(repoRoot, options = {}) {
106
108
  const report = collectNext(repoRoot, options);
109
+ const translator = translatorForHuman(options);
107
110
  const isTTY = options.isTTY || {
108
111
  stdin: Boolean(process.stdin.isTTY),
109
112
  stdout: Boolean(process.stdout.isTTY),
@@ -115,17 +118,17 @@ async function runNext(repoRoot, options = {}) {
115
118
  }
116
119
 
117
120
  if (!report.next) {
118
- process.stdout.write('No ready slices found.\n');
121
+ process.stdout.write(`${translator.t('next.empty.ready')}\n`);
119
122
  return report;
120
123
  }
121
124
 
122
- const confirmed = await (options.promptConfirm || promptConfirm)(`Start slice ${report.next.ref}?`);
125
+ const confirmed = await (options.promptConfirm || promptConfirm)(translator.t('next.prompt.start', { ref: report.next.ref }));
123
126
  if (confirmed) {
124
127
  const slicePath = path.resolve(repoRoot, report.next.slice_path);
125
128
  await Promise.resolve((options.startSliceFn || startSlice)(slicePath, { allowDraft: true }));
126
- process.stdout.write(`Started: ${report.next.ref}\n`);
129
+ process.stdout.write(`${translator.t('next.started', { ref: report.next.ref })}\n`);
127
130
  } else {
128
- process.stdout.write('Aborted.\n');
131
+ process.stdout.write(`${translator.t('next.aborted')}\n`);
129
132
  }
130
133
  return report;
131
134
  }
@@ -1,4 +1,5 @@
1
1
  const { relativePosixPath } = require('../lib/paths');
2
+ const { formatStatus, translatorForHuman } = require('../lib/i18n/read-only-format');
2
3
  const { filterSlicesForExecution, resolveProjectState } = require('../lib/project-state-resolver');
3
4
  const { topoSort } = require('../lib/slice-graph');
4
5
 
@@ -147,13 +148,21 @@ function collectPlan(repoRoot, options = {}) {
147
148
  }
148
149
 
149
150
  function formatHumanPlan(report, options = {}) {
151
+ const translator = translatorForHuman(options);
150
152
  const unicode = Boolean(options.unicode) || /UTF-8/i.test(process.env.LANG || '');
151
- const title = options.onlyReady ? 'Ready slices' : (report.include_completed ? 'Quiver plan (including completed)' : 'Quiver plan');
153
+ const title = options.onlyReady
154
+ ? translator.t('plan.title.ready')
155
+ : (report.include_completed ? translator.t('plan.title.including_completed') : translator.t('plan.title'));
152
156
  const pathSeparator = unicode ? ' → ' : ' -> ';
153
- const lines = [title, `Total hours: ${report.total_hours}`, `Critical path: ${report.critical_path.length > 0 ? report.critical_path.join(pathSeparator) : '-'}`, ''];
157
+ const lines = [
158
+ title,
159
+ `${translator.t('plan.total_hours')}: ${report.total_hours}`,
160
+ `${translator.t('plan.critical_path')}: ${report.critical_path.length > 0 ? report.critical_path.join(pathSeparator) : '-'}`,
161
+ '',
162
+ ];
154
163
 
155
164
  if (report.plan.length === 0) {
156
- lines.push(report.include_completed ? 'No slices found for the selected filters.' : 'No pending slices found.');
165
+ lines.push(report.include_completed ? translator.t('plan.empty.filtered') : translator.t('plan.empty.pending'));
157
166
  return `${lines.join('\n')}\n`;
158
167
  }
159
168
 
@@ -163,15 +172,23 @@ function formatHumanPlan(report, options = {}) {
163
172
  item.ref,
164
173
  item.title,
165
174
  `${item.hours}`,
166
- item.status,
175
+ formatStatus(item.status, translator),
167
176
  ]);
168
177
 
178
+ const headers = [
179
+ translator.t('plan.header.index'),
180
+ translator.t('plan.header.ticket'),
181
+ translator.t('plan.header.spec_slice'),
182
+ translator.t('plan.header.title'),
183
+ translator.t('plan.header.hours'),
184
+ translator.t('plan.header.status'),
185
+ ];
169
186
  const widths = rows[0].map((_, colIndex) => Math.max(
170
187
  rows.reduce((max, row) => Math.max(max, row[colIndex].length), 0),
171
- ['[N]', 'TICKET', 'SPEC/SLICE', 'TITLE', 'HOURS', 'STATUS'][colIndex].length,
188
+ headers[colIndex].length,
172
189
  ));
173
190
 
174
- lines.push(['[N]', 'TICKET', 'SPEC/SLICE', 'TITLE', 'HOURS', 'STATUS'].map((label, index) => label.padEnd(widths[index])).join(' '));
191
+ lines.push(headers.map((label, index) => label.padEnd(widths[index])).join(' '));
175
192
  lines.push(widths.map((width) => '-'.repeat(width)).join(' '));
176
193
 
177
194
  for (const row of rows) {