@paths.design/caws-cli 10.1.0 → 11.0.0

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 (419) hide show
  1. package/README.md +125 -374
  2. package/dist/index.js +43 -756
  3. package/dist/shell/binding/resolve-binding.d.ts +4 -0
  4. package/dist/shell/binding/resolve-binding.d.ts.map +1 -0
  5. package/dist/shell/binding/resolve-binding.js +228 -0
  6. package/dist/shell/binding/resolve-binding.js.map +1 -0
  7. package/dist/shell/binding/types.d.ts +42 -0
  8. package/dist/shell/binding/types.d.ts.map +1 -0
  9. package/dist/shell/binding/types.js +21 -0
  10. package/dist/shell/binding/types.js.map +1 -0
  11. package/dist/shell/commands/claim.d.ts +14 -0
  12. package/dist/shell/commands/claim.d.ts.map +1 -0
  13. package/dist/shell/commands/claim.js +197 -0
  14. package/dist/shell/commands/claim.js.map +1 -0
  15. package/dist/shell/commands/doctor.d.ts +13 -0
  16. package/dist/shell/commands/doctor.d.ts.map +1 -0
  17. package/dist/shell/commands/doctor.js +97 -0
  18. package/dist/shell/commands/doctor.js.map +1 -0
  19. package/dist/shell/commands/evidence.d.ts +28 -0
  20. package/dist/shell/commands/evidence.d.ts.map +1 -0
  21. package/dist/shell/commands/evidence.js +166 -0
  22. package/dist/shell/commands/evidence.js.map +1 -0
  23. package/dist/shell/commands/gates.d.ts +19 -0
  24. package/dist/shell/commands/gates.d.ts.map +1 -0
  25. package/dist/shell/commands/gates.js +181 -0
  26. package/dist/shell/commands/gates.js.map +1 -0
  27. package/dist/shell/commands/init.d.ts +8 -0
  28. package/dist/shell/commands/init.d.ts.map +1 -0
  29. package/dist/shell/commands/init.js +64 -0
  30. package/dist/shell/commands/init.js.map +1 -0
  31. package/dist/shell/commands/scope.d.ts +11 -0
  32. package/dist/shell/commands/scope.d.ts.map +1 -0
  33. package/dist/shell/commands/scope.js +92 -0
  34. package/dist/shell/commands/scope.js.map +1 -0
  35. package/dist/shell/commands/status.d.ts +15 -0
  36. package/dist/shell/commands/status.d.ts.map +1 -0
  37. package/dist/shell/commands/status.js +106 -0
  38. package/dist/shell/commands/status.js.map +1 -0
  39. package/dist/shell/commands/waiver.d.ts +38 -0
  40. package/dist/shell/commands/waiver.d.ts.map +1 -0
  41. package/dist/shell/commands/waiver.js +240 -0
  42. package/dist/shell/commands/waiver.js.map +1 -0
  43. package/dist/shell/gates/disposition.d.ts +23 -0
  44. package/dist/shell/gates/disposition.d.ts.map +1 -0
  45. package/dist/shell/gates/disposition.js +87 -0
  46. package/dist/shell/gates/disposition.js.map +1 -0
  47. package/dist/shell/gates/gate-result-contract.d.ts +39 -0
  48. package/dist/shell/gates/gate-result-contract.d.ts.map +1 -0
  49. package/dist/shell/gates/gate-result-contract.js +150 -0
  50. package/dist/shell/gates/gate-result-contract.js.map +1 -0
  51. package/dist/shell/gates/quality-gates-adapter.d.ts +55 -0
  52. package/dist/shell/gates/quality-gates-adapter.d.ts.map +1 -0
  53. package/dist/shell/gates/quality-gates-adapter.js +161 -0
  54. package/dist/shell/gates/quality-gates-adapter.js.map +1 -0
  55. package/dist/shell/gates/waiver-filter.d.ts +58 -0
  56. package/dist/shell/gates/waiver-filter.d.ts.map +1 -0
  57. package/dist/shell/gates/waiver-filter.js +119 -0
  58. package/dist/shell/gates/waiver-filter.js.map +1 -0
  59. package/dist/shell/index.d.ts +50 -0
  60. package/dist/shell/index.d.ts.map +1 -0
  61. package/dist/shell/index.js +73 -0
  62. package/dist/shell/index.js.map +1 -0
  63. package/dist/shell/register.d.ts +11 -0
  64. package/dist/shell/register.d.ts.map +1 -0
  65. package/dist/shell/register.js +274 -0
  66. package/dist/shell/register.js.map +1 -0
  67. package/dist/shell/render/claim.d.ts +22 -0
  68. package/dist/shell/render/claim.d.ts.map +1 -0
  69. package/dist/shell/render/claim.js +75 -0
  70. package/dist/shell/render/claim.js.map +1 -0
  71. package/dist/shell/render/decision.d.ts +15 -0
  72. package/dist/shell/render/decision.d.ts.map +1 -0
  73. package/dist/shell/render/decision.js +66 -0
  74. package/dist/shell/render/decision.js.map +1 -0
  75. package/dist/shell/render/diagnostic.d.ts +19 -0
  76. package/dist/shell/render/diagnostic.d.ts.map +1 -0
  77. package/dist/shell/render/diagnostic.js +76 -0
  78. package/dist/shell/render/diagnostic.js.map +1 -0
  79. package/dist/shell/render/finding.d.ts +15 -0
  80. package/dist/shell/render/finding.d.ts.map +1 -0
  81. package/dist/shell/render/finding.js +57 -0
  82. package/dist/shell/render/finding.js.map +1 -0
  83. package/dist/shell/render/gates.d.ts +3 -0
  84. package/dist/shell/render/gates.d.ts.map +1 -0
  85. package/dist/shell/render/gates.js +56 -0
  86. package/dist/shell/render/gates.js.map +1 -0
  87. package/dist/shell/render/init.d.ts +11 -0
  88. package/dist/shell/render/init.d.ts.map +1 -0
  89. package/dist/shell/render/init.js +32 -0
  90. package/dist/shell/render/init.js.map +1 -0
  91. package/dist/shell/render/status.d.ts +26 -0
  92. package/dist/shell/render/status.d.ts.map +1 -0
  93. package/dist/shell/render/status.js +143 -0
  94. package/dist/shell/render/status.js.map +1 -0
  95. package/dist/shell/render/waiver.d.ts +21 -0
  96. package/dist/shell/render/waiver.d.ts.map +1 -0
  97. package/dist/shell/render/waiver.js +94 -0
  98. package/dist/shell/render/waiver.js.map +1 -0
  99. package/dist/shell/rules.d.ts +37 -0
  100. package/dist/shell/rules.d.ts.map +1 -0
  101. package/dist/shell/rules.js +51 -0
  102. package/dist/shell/rules.js.map +1 -0
  103. package/dist/shell/session/actor.d.ts +14 -0
  104. package/dist/shell/session/actor.d.ts.map +1 -0
  105. package/dist/shell/session/actor.js +34 -0
  106. package/dist/shell/session/actor.js.map +1 -0
  107. package/dist/shell/session/resolve-session.d.ts +5 -0
  108. package/dist/shell/session/resolve-session.d.ts.map +1 -0
  109. package/dist/shell/session/resolve-session.js +239 -0
  110. package/dist/shell/session/resolve-session.js.map +1 -0
  111. package/dist/shell/session/types.d.ts +56 -0
  112. package/dist/shell/session/types.d.ts.map +1 -0
  113. package/dist/shell/session/types.js +15 -0
  114. package/dist/shell/session/types.js.map +1 -0
  115. package/dist/store/agents-store.d.ts +3 -0
  116. package/dist/store/agents-store.d.ts.map +1 -0
  117. package/dist/store/agents-store.js +63 -0
  118. package/dist/store/agents-store.js.map +1 -0
  119. package/dist/store/apply-patch.d.ts +16 -0
  120. package/dist/store/apply-patch.d.ts.map +1 -0
  121. package/dist/store/apply-patch.js +191 -0
  122. package/dist/store/apply-patch.js.map +1 -0
  123. package/dist/store/atomic-write.d.ts +16 -0
  124. package/dist/store/atomic-write.d.ts.map +1 -0
  125. package/dist/store/atomic-write.js +132 -0
  126. package/dist/store/atomic-write.js.map +1 -0
  127. package/dist/store/doctor-snapshot.d.ts +20 -0
  128. package/dist/store/doctor-snapshot.d.ts.map +1 -0
  129. package/dist/store/doctor-snapshot.js +176 -0
  130. package/dist/store/doctor-snapshot.js.map +1 -0
  131. package/dist/store/events-store.d.ts +33 -0
  132. package/dist/store/events-store.d.ts.map +1 -0
  133. package/dist/store/events-store.js +297 -0
  134. package/dist/store/events-store.js.map +1 -0
  135. package/dist/store/index.d.ts +21 -0
  136. package/dist/store/index.d.ts.map +1 -0
  137. package/dist/store/index.js +47 -0
  138. package/dist/store/index.js.map +1 -0
  139. package/dist/store/init-store.d.ts +21 -0
  140. package/dist/store/init-store.d.ts.map +1 -0
  141. package/dist/store/init-store.js +295 -0
  142. package/dist/store/init-store.js.map +1 -0
  143. package/dist/store/json-store.d.ts +3 -0
  144. package/dist/store/json-store.d.ts.map +1 -0
  145. package/dist/store/json-store.js +65 -0
  146. package/dist/store/json-store.js.map +1 -0
  147. package/dist/store/policy-store.d.ts +3 -0
  148. package/dist/store/policy-store.d.ts.map +1 -0
  149. package/dist/store/policy-store.js +65 -0
  150. package/dist/store/policy-store.js.map +1 -0
  151. package/dist/store/repo-root.d.ts +46 -0
  152. package/dist/store/repo-root.d.ts.map +1 -0
  153. package/dist/store/repo-root.js +145 -0
  154. package/dist/store/repo-root.js.map +1 -0
  155. package/dist/store/rules.d.ts +53 -0
  156. package/dist/store/rules.d.ts.map +1 -0
  157. package/dist/store/rules.js +78 -0
  158. package/dist/store/rules.js.map +1 -0
  159. package/dist/store/specs-store.d.ts +3 -0
  160. package/dist/store/specs-store.d.ts.map +1 -0
  161. package/dist/store/specs-store.js +131 -0
  162. package/dist/store/specs-store.js.map +1 -0
  163. package/dist/store/types.d.ts +84 -0
  164. package/dist/store/types.d.ts.map +1 -0
  165. package/dist/store/types.js +14 -0
  166. package/dist/store/types.js.map +1 -0
  167. package/dist/store/waivers-store.d.ts +25 -0
  168. package/dist/store/waivers-store.d.ts.map +1 -0
  169. package/dist/store/waivers-store.js +232 -0
  170. package/dist/store/waivers-store.js.map +1 -0
  171. package/dist/store/worktrees-store.d.ts +3 -0
  172. package/dist/store/worktrees-store.d.ts.map +1 -0
  173. package/dist/store/worktrees-store.js +62 -0
  174. package/dist/store/worktrees-store.js.map +1 -0
  175. package/dist/store/yaml-store.d.ts +9 -0
  176. package/dist/store/yaml-store.d.ts.map +1 -0
  177. package/dist/store/yaml-store.js +121 -0
  178. package/dist/store/yaml-store.js.map +1 -0
  179. package/package.json +15 -13
  180. package/dist/budget-derivation.js +0 -751
  181. package/dist/cicd-optimizer.js +0 -504
  182. package/dist/commands/archive.js +0 -500
  183. package/dist/commands/burnup.js +0 -198
  184. package/dist/commands/diagnose.js +0 -525
  185. package/dist/commands/evaluate.js +0 -314
  186. package/dist/commands/gates.js +0 -149
  187. package/dist/commands/init.js +0 -857
  188. package/dist/commands/iterate.js +0 -417
  189. package/dist/commands/mode.js +0 -269
  190. package/dist/commands/parallel.js +0 -242
  191. package/dist/commands/plan.js +0 -438
  192. package/dist/commands/provenance.js +0 -1143
  193. package/dist/commands/quality-monitor.js +0 -284
  194. package/dist/commands/scope.js +0 -264
  195. package/dist/commands/session.js +0 -312
  196. package/dist/commands/sidecar.js +0 -74
  197. package/dist/commands/specs.js +0 -1448
  198. package/dist/commands/status.js +0 -1151
  199. package/dist/commands/templates.js +0 -237
  200. package/dist/commands/tool.js +0 -136
  201. package/dist/commands/tutorial.js +0 -480
  202. package/dist/commands/validate.js +0 -357
  203. package/dist/commands/verify-acs.js +0 -443
  204. package/dist/commands/waivers.js +0 -599
  205. package/dist/commands/workflow.js +0 -243
  206. package/dist/commands/worktree.js +0 -386
  207. package/dist/config/lite-scope.js +0 -158
  208. package/dist/config/modes.js +0 -347
  209. package/dist/constants/spec-types.js +0 -65
  210. package/dist/gates/budget-limit.js +0 -121
  211. package/dist/gates/feedback.js +0 -260
  212. package/dist/gates/format.js +0 -179
  213. package/dist/gates/god-object.js +0 -117
  214. package/dist/gates/pipeline.js +0 -167
  215. package/dist/gates/scope-boundary.js +0 -93
  216. package/dist/gates/spec-completeness.js +0 -109
  217. package/dist/gates/todo-detection.js +0 -205
  218. package/dist/generators/jest-config-generator.js +0 -242
  219. package/dist/generators/working-spec.js +0 -237
  220. package/dist/minimal-cli.js +0 -88
  221. package/dist/parallel/parallel-manager.js +0 -433
  222. package/dist/policy/PolicyManager.js +0 -465
  223. package/dist/scaffold/claude-hooks.js +0 -443
  224. package/dist/scaffold/cursor-hooks.js +0 -177
  225. package/dist/scaffold/git-hooks.js +0 -928
  226. package/dist/scaffold/index.js +0 -794
  227. package/dist/session/session-manager.js +0 -653
  228. package/dist/sidecars/index.js +0 -33
  229. package/dist/sidecars/listeners.js +0 -40
  230. package/dist/sidecars/provenance-summary.js +0 -238
  231. package/dist/sidecars/quality-gaps.js +0 -258
  232. package/dist/sidecars/schema.js +0 -149
  233. package/dist/sidecars/spec-drift.js +0 -151
  234. package/dist/sidecars/waiver-draft.js +0 -176
  235. package/dist/spec/SpecFileManager.js +0 -419
  236. package/dist/templates/.caws/schemas/policy.schema.json +0 -112
  237. package/dist/templates/.caws/schemas/scope.schema.json +0 -52
  238. package/dist/templates/.caws/schemas/waivers.schema.json +0 -106
  239. package/dist/templates/.caws/schemas/working-spec.schema.json +0 -340
  240. package/dist/templates/.caws/schemas/worktrees.schema.json +0 -38
  241. package/dist/templates/.caws/templates/working-spec.template.yml +0 -80
  242. package/dist/templates/.caws/tools/README.md +0 -18
  243. package/dist/templates/.caws/tools/scope-guard.js +0 -203
  244. package/dist/templates/.caws/tools-allow.json +0 -331
  245. package/dist/templates/.caws/waivers.yml +0 -19
  246. package/dist/templates/.claude/README.md +0 -190
  247. package/dist/templates/.claude/hooks/audit.sh +0 -121
  248. package/dist/templates/.claude/hooks/block-dangerous.sh +0 -203
  249. package/dist/templates/.claude/hooks/classify_command.py +0 -592
  250. package/dist/templates/.claude/hooks/doc-frontmatter-check.sh +0 -173
  251. package/dist/templates/.claude/hooks/lite-sprawl-check.sh +0 -145
  252. package/dist/templates/.claude/hooks/naming-check.sh +0 -100
  253. package/dist/templates/.claude/hooks/protected-paths.sh +0 -39
  254. package/dist/templates/.claude/hooks/quality-check.sh +0 -81
  255. package/dist/templates/.claude/hooks/scan-secrets.sh +0 -85
  256. package/dist/templates/.claude/hooks/scope-guard.sh +0 -381
  257. package/dist/templates/.claude/hooks/session-caws-status.sh +0 -117
  258. package/dist/templates/.claude/hooks/session-log.sh +0 -634
  259. package/dist/templates/.claude/hooks/simplification-guard.sh +0 -92
  260. package/dist/templates/.claude/hooks/stop-worktree-check.sh +0 -46
  261. package/dist/templates/.claude/hooks/test_classify_command.py +0 -370
  262. package/dist/templates/.claude/hooks/test_wrapper_smoke.sh +0 -96
  263. package/dist/templates/.claude/hooks/validate-spec.sh +0 -76
  264. package/dist/templates/.claude/hooks/worktree-guard.sh +0 -220
  265. package/dist/templates/.claude/hooks/worktree-write-guard.sh +0 -190
  266. package/dist/templates/.claude/rules/git-safety.md +0 -26
  267. package/dist/templates/.claude/rules/worktree-isolation.md +0 -83
  268. package/dist/templates/.claude/settings.json +0 -141
  269. package/dist/templates/.cursor/README.md +0 -299
  270. package/dist/templates/.cursor/hooks/audit.sh +0 -55
  271. package/dist/templates/.cursor/hooks/block-dangerous.sh +0 -84
  272. package/dist/templates/.cursor/hooks/caws-quality-check.sh +0 -52
  273. package/dist/templates/.cursor/hooks/caws-scope-guard.sh +0 -130
  274. package/dist/templates/.cursor/hooks/format.sh +0 -38
  275. package/dist/templates/.cursor/hooks/naming-check.sh +0 -64
  276. package/dist/templates/.cursor/hooks/scan-secrets.sh +0 -51
  277. package/dist/templates/.cursor/hooks/scope-guard.sh +0 -52
  278. package/dist/templates/.cursor/hooks/session-log.sh +0 -924
  279. package/dist/templates/.cursor/hooks/validate-spec.sh +0 -83
  280. package/dist/templates/.cursor/hooks.json +0 -76
  281. package/dist/templates/.cursor/rules/00-claims-verification.mdc +0 -144
  282. package/dist/templates/.cursor/rules/01-working-style.mdc +0 -50
  283. package/dist/templates/.cursor/rules/02-quality-gates.mdc +0 -368
  284. package/dist/templates/.cursor/rules/03-naming-and-refactor.mdc +0 -33
  285. package/dist/templates/.cursor/rules/04-logging-language-style.mdc +0 -23
  286. package/dist/templates/.cursor/rules/05-safe-defaults-guards.mdc +0 -23
  287. package/dist/templates/.cursor/rules/06-typescript-conventions.mdc +0 -36
  288. package/dist/templates/.cursor/rules/07-process-ops.mdc +0 -20
  289. package/dist/templates/.cursor/rules/08-solid-and-architecture.mdc +0 -16
  290. package/dist/templates/.cursor/rules/09-docstrings.mdc +0 -89
  291. package/dist/templates/.cursor/rules/10-documentation-quality-standards.mdc +0 -385
  292. package/dist/templates/.cursor/rules/11-scope-management-waivers.mdc +0 -381
  293. package/dist/templates/.cursor/rules/12-implementation-completeness.mdc +0 -516
  294. package/dist/templates/.cursor/rules/13-language-agnostic-standards.mdc +0 -578
  295. package/dist/templates/.cursor/rules/README.md +0 -148
  296. package/dist/templates/.github/copilot-instructions.md +0 -82
  297. package/dist/templates/.idea/runConfigurations/CAWS_Evaluate.xml +0 -5
  298. package/dist/templates/.idea/runConfigurations/CAWS_Validate.xml +0 -5
  299. package/dist/templates/.junie/guidelines.md +0 -73
  300. package/dist/templates/.vscode/launch.json +0 -17
  301. package/dist/templates/.vscode/settings.json +0 -95
  302. package/dist/templates/.windsurf/rules/caws-quality-standards.md +0 -54
  303. package/dist/templates/.windsurf/workflows/caws-guided-development.md +0 -92
  304. package/dist/templates/CLAUDE.md +0 -174
  305. package/dist/templates/COMMIT_CONVENTIONS.md +0 -86
  306. package/dist/templates/OIDC_SETUP.md +0 -300
  307. package/dist/templates/agents.md +0 -145
  308. package/dist/templates/codemod/README.md +0 -1
  309. package/dist/templates/codemod/test.js +0 -93
  310. package/dist/templates/docs/README.md +0 -151
  311. package/dist/templates/scripts/new_feature.sh +0 -80
  312. package/dist/templates/scripts/quality-gates/check-god-objects.js +0 -146
  313. package/dist/templates/scripts/quality-gates/run-quality-gates.js +0 -50
  314. package/dist/templates/scripts/v3/analysis/todo_analyzer.py +0 -1997
  315. package/dist/test-analysis.js +0 -786
  316. package/dist/tool-interface.js +0 -314
  317. package/dist/tool-loader.js +0 -303
  318. package/dist/tool-validator.js +0 -393
  319. package/dist/utils/agent-session.js +0 -202
  320. package/dist/utils/async-utils.js +0 -188
  321. package/dist/utils/command-wrapper.js +0 -200
  322. package/dist/utils/event-log.js +0 -584
  323. package/dist/utils/event-renderer.js +0 -521
  324. package/dist/utils/finalization.js +0 -230
  325. package/dist/utils/git-lock.js +0 -119
  326. package/dist/utils/gitignore-updater.js +0 -158
  327. package/dist/utils/ide-detection.js +0 -133
  328. package/dist/utils/lifecycle-events.js +0 -94
  329. package/dist/utils/project-analysis.js +0 -367
  330. package/dist/utils/promise-utils.js +0 -72
  331. package/dist/utils/quality-gates-errors.js +0 -520
  332. package/dist/utils/quality-gates-utils.js +0 -387
  333. package/dist/utils/schema-validator.js +0 -50
  334. package/dist/utils/spec-resolver.js +0 -711
  335. package/dist/utils/typescript-detector.js +0 -369
  336. package/dist/utils/working-state.js +0 -530
  337. package/dist/utils/yaml-validation.js +0 -156
  338. package/dist/validation/spec-validation.js +0 -921
  339. package/dist/waivers-manager.js +0 -732
  340. package/dist/worktree/worktree-manager.js +0 -1374
  341. package/templates/.caws/schemas/policy.schema.json +0 -112
  342. package/templates/.caws/schemas/scope.schema.json +0 -52
  343. package/templates/.caws/schemas/waivers.schema.json +0 -106
  344. package/templates/.caws/schemas/working-spec.schema.json +0 -340
  345. package/templates/.caws/schemas/worktrees.schema.json +0 -38
  346. package/templates/.caws/templates/working-spec.template.yml +0 -80
  347. package/templates/.caws/tools/README.md +0 -18
  348. package/templates/.caws/tools/scope-guard.js +0 -203
  349. package/templates/.caws/tools-allow.json +0 -331
  350. package/templates/.caws/waivers.yml +0 -19
  351. package/templates/.claude/README.md +0 -190
  352. package/templates/.claude/hooks/audit.sh +0 -121
  353. package/templates/.claude/hooks/block-dangerous.sh +0 -203
  354. package/templates/.claude/hooks/classify_command.py +0 -592
  355. package/templates/.claude/hooks/doc-frontmatter-check.sh +0 -173
  356. package/templates/.claude/hooks/lite-sprawl-check.sh +0 -145
  357. package/templates/.claude/hooks/naming-check.sh +0 -100
  358. package/templates/.claude/hooks/protected-paths.sh +0 -39
  359. package/templates/.claude/hooks/quality-check.sh +0 -81
  360. package/templates/.claude/hooks/scan-secrets.sh +0 -85
  361. package/templates/.claude/hooks/scope-guard.sh +0 -381
  362. package/templates/.claude/hooks/session-caws-status.sh +0 -117
  363. package/templates/.claude/hooks/session-log.sh +0 -634
  364. package/templates/.claude/hooks/simplification-guard.sh +0 -92
  365. package/templates/.claude/hooks/stop-worktree-check.sh +0 -46
  366. package/templates/.claude/hooks/test_classify_command.py +0 -370
  367. package/templates/.claude/hooks/test_wrapper_smoke.sh +0 -96
  368. package/templates/.claude/hooks/validate-spec.sh +0 -76
  369. package/templates/.claude/hooks/worktree-guard.sh +0 -220
  370. package/templates/.claude/hooks/worktree-write-guard.sh +0 -190
  371. package/templates/.claude/rules/git-safety.md +0 -26
  372. package/templates/.claude/rules/worktree-isolation.md +0 -83
  373. package/templates/.claude/settings.json +0 -141
  374. package/templates/.cursor/README.md +0 -299
  375. package/templates/.cursor/hooks/audit.sh +0 -55
  376. package/templates/.cursor/hooks/block-dangerous.sh +0 -84
  377. package/templates/.cursor/hooks/caws-quality-check.sh +0 -52
  378. package/templates/.cursor/hooks/caws-scope-guard.sh +0 -130
  379. package/templates/.cursor/hooks/format.sh +0 -38
  380. package/templates/.cursor/hooks/naming-check.sh +0 -64
  381. package/templates/.cursor/hooks/scan-secrets.sh +0 -51
  382. package/templates/.cursor/hooks/scope-guard.sh +0 -52
  383. package/templates/.cursor/hooks/session-log.sh +0 -924
  384. package/templates/.cursor/hooks/validate-spec.sh +0 -83
  385. package/templates/.cursor/hooks.json +0 -76
  386. package/templates/.cursor/rules/00-claims-verification.mdc +0 -144
  387. package/templates/.cursor/rules/01-working-style.mdc +0 -50
  388. package/templates/.cursor/rules/02-quality-gates.mdc +0 -368
  389. package/templates/.cursor/rules/03-naming-and-refactor.mdc +0 -33
  390. package/templates/.cursor/rules/04-logging-language-style.mdc +0 -23
  391. package/templates/.cursor/rules/05-safe-defaults-guards.mdc +0 -23
  392. package/templates/.cursor/rules/06-typescript-conventions.mdc +0 -36
  393. package/templates/.cursor/rules/07-process-ops.mdc +0 -20
  394. package/templates/.cursor/rules/08-solid-and-architecture.mdc +0 -16
  395. package/templates/.cursor/rules/09-docstrings.mdc +0 -89
  396. package/templates/.cursor/rules/10-documentation-quality-standards.mdc +0 -385
  397. package/templates/.cursor/rules/11-scope-management-waivers.mdc +0 -381
  398. package/templates/.cursor/rules/12-implementation-completeness.mdc +0 -516
  399. package/templates/.cursor/rules/13-language-agnostic-standards.mdc +0 -578
  400. package/templates/.cursor/rules/README.md +0 -148
  401. package/templates/.github/copilot-instructions.md +0 -82
  402. package/templates/.idea/runConfigurations/CAWS_Evaluate.xml +0 -5
  403. package/templates/.idea/runConfigurations/CAWS_Validate.xml +0 -5
  404. package/templates/.junie/guidelines.md +0 -73
  405. package/templates/.vscode/launch.json +0 -17
  406. package/templates/.vscode/settings.json +0 -95
  407. package/templates/.windsurf/rules/caws-quality-standards.md +0 -54
  408. package/templates/.windsurf/workflows/caws-guided-development.md +0 -92
  409. package/templates/CLAUDE.md +0 -174
  410. package/templates/COMMIT_CONVENTIONS.md +0 -86
  411. package/templates/OIDC_SETUP.md +0 -300
  412. package/templates/agents.md +0 -145
  413. package/templates/codemod/README.md +0 -1
  414. package/templates/codemod/test.js +0 -93
  415. package/templates/docs/README.md +0 -151
  416. package/templates/scripts/new_feature.sh +0 -80
  417. package/templates/scripts/quality-gates/check-god-objects.js +0 -146
  418. package/templates/scripts/quality-gates/run-quality-gates.js +0 -50
  419. package/templates/scripts/v3/analysis/todo_analyzer.py +0 -1997
package/dist/index.js CHANGED
@@ -19,759 +19,55 @@ if (
19
19
  }
20
20
 
21
21
  // Import configuration and utilities
22
- const {
23
- CLI_VERSION,
24
- initializeGlobalSetup,
25
- loadProvenanceTools,
26
- initializeLanguageSupport,
27
- } = require('./config');
22
+ const { CLI_VERSION } = require('./config');
28
23
 
29
24
  // Import error handling
30
25
  const { handleCliError, findSimilarCommand } = require('./error-handler');
31
26
 
32
- // Import command handlers
33
- const { initProject } = require('./commands/init');
34
- const { validateCommand } = require('./commands/validate');
35
- const { burnupCommand } = require('./commands/burnup');
36
- const { testAnalysisCommand } = require('./test-analysis');
37
- const { provenanceCommand } = require('./commands/provenance');
38
- const { executeTool } = require('./commands/tool');
39
- const { statusCommand } = require('./commands/status');
40
- const { templatesCommand } = require('./commands/templates');
41
- const { diagnoseCommand } = require('./commands/diagnose');
42
- const { evaluateCommand } = require('./commands/evaluate');
43
- const { iterateCommand } = require('./commands/iterate');
44
- const { waiversCommand } = require('./commands/waivers');
45
- const { workflowCommand } = require('./commands/workflow');
46
- const { qualityMonitorCommand } = require('./commands/quality-monitor');
47
- const { gatesCommand } = require('./commands/gates');
48
- const { archiveCommand } = require('./commands/archive');
49
- const { specsCommand } = require('./commands/specs');
50
- const { modeCommand } = require('./commands/mode');
51
- const { tutorialCommand } = require('./commands/tutorial');
52
- const { planCommand } = require('./commands/plan');
53
- const { worktreeCommand } = require('./commands/worktree');
54
- const { sessionCommand } = require('./commands/session');
55
- const { parallelCommand } = require('./commands/parallel');
56
- const { verifyAcsCommand } = require('./commands/verify-acs');
57
- const { sidecarCommand } = require('./commands/sidecar');
58
- const { scopeCommand } = require('./commands/scope');
59
-
60
- // Import scaffold functionality
61
- const { scaffoldProject, setScaffoldDependencies } = require('./scaffold');
62
-
63
- // Import git hooks functionality
64
- const { scaffoldGitHooks, removeGitHooks, checkGitHooksStatus } = require('./scaffold/git-hooks');
65
-
66
- // Import finalization utilities
67
- const {
68
- setFinalizationDependencies,
69
- } = require('./utils/finalization');
70
-
71
- // Import generators
72
- const { generateWorkingSpec, validateGeneratedSpec } = require('./generators/working-spec');
27
+ // v11.0.0 entrypoint. The CLI surface is registered exclusively
28
+ // through `registerShellCommands(program)` further down. All legacy
29
+ // command groups, imports, public exports, and startup side effects
30
+ // were removed in slices 8a3.1–8a3.5. See
31
+ // docs/architecture/caws-vnext-command-surface.md for the doctrine,
32
+ // removal table, and the canonical v11 surface.
33
+ //
34
+ // What v11 ships: init, doctor, status, scope, claim, gates,
35
+ // evidence, waiver. Nothing else.
73
36
 
74
37
  // Initialize global configuration
75
38
  const program = new Command();
76
39
 
77
- // Initialize global state
78
- const cawsSetup = initializeGlobalSetup();
79
- const languageSupport = initializeLanguageSupport();
80
-
81
- // Set up dependencies for modules that need them
82
- setScaffoldDependencies({
83
- cawsSetup,
84
- loadProvenanceTools,
85
- });
86
-
87
- setFinalizationDependencies({
88
- languageSupport,
89
- loadProvenanceTools,
90
- });
91
-
92
- // Setup CLI program
93
40
  program
94
41
  .name('caws')
95
42
  .description('CAWS - Coding Agent Workflow System CLI')
96
43
  .version(CLI_VERSION)
97
- .showHelpAfterError(false); // We'll show better suggestions instead
98
-
99
- // Init command
100
- program
101
- .command('init')
102
- .description('Initialize a new project with CAWS')
103
- .argument('[project-name]', 'Name of the project to create (use "." for current directory)')
104
- .option('-i, --interactive', 'Run interactive setup wizard', true)
105
- .option('--non-interactive', 'Skip interactive prompts (use defaults)', false)
106
- .option('--template <template>', 'Use specific project template')
107
- .option('--mode <mode>', 'CAWS mode (lite, simple, standard, enterprise)')
108
- .option('--ide <ides>', 'IDE integrations to install (comma-separated: cursor,claude,vscode,intellij,windsurf,copilot,all,none)')
109
- .action(initProject);
110
-
111
- // Scaffold command
112
- program
113
- .command('scaffold')
114
- .description('Add CAWS components to existing project')
115
- .option('-f, --force', 'Overwrite existing files', false)
116
- .option('--minimal', 'Only essential components', false)
117
- .option('--with-codemods', 'Include codemod scripts', false)
118
- .option('--with-oidc', 'Include OIDC trusted publisher setup', false)
119
- .option('--with-quality-gates', 'Install quality gates package and scripts', false)
120
- .option('--ide <ides>', 'IDE integrations to install (comma-separated: cursor,claude,vscode,intellij,windsurf,copilot,all,none)')
121
- .action(scaffoldProject);
122
-
123
- // Validate command
124
- program
125
- .command('validate')
126
- .alias('verify')
127
- .description('Validate CAWS spec with suggestions')
128
- .argument('[spec-file]', 'Path to spec file (optional, uses spec resolution)')
129
- .option('--spec-id <id>', 'Feature-specific spec ID (e.g., user-auth, FEAT-001)')
130
- .option('-i, --interactive', 'Interactive spec selection when multiple specs exist', false)
131
- .option('-q, --quiet', 'Suppress suggestions and warnings', false)
132
- .option('--auto-fix', 'Automatically fix safe validation issues', false)
133
- .option('--dry-run', 'Preview auto-fixes without applying them', false)
134
- .option('--format <format>', 'Output format (text, json)', 'text')
135
- .action(validateCommand);
136
-
137
- // Gates command group (v2 pipeline)
138
- const gatesCmd = program
139
- .command('gates')
140
- .description('Run quality gate checks');
141
-
142
- gatesCmd
143
- .command('run')
144
- .description('Run quality gates against staged files or a specific file')
145
- .option('--context <context>', 'Execution context (cli, commit, edit)', 'cli')
146
- .option('--spec-id <id>', 'Target spec ID')
147
- .option('--file <path>', 'Single file to check (for edit context)')
148
- .option('--json', 'Output as JSON', false)
149
- .option('--quiet', 'Minimal output', false)
150
- .action((options) => gatesCommand(options));
151
-
152
- // Quality Gates command (legacy alias — delegates to gates command)
153
- program
154
- .command('quality-gates')
155
- .description('Run quality gates (alias for "caws gates run")')
156
- .option('--ci', 'CI mode - exit with error code if violations found', false)
157
- .option('--json', 'Output machine-readable JSON to stdout', false)
158
- .option('--context <context>', 'Execution context: commit, push, ci', 'commit')
159
- .option('--all-files', 'Check all tracked files (equivalent to --context=ci)', false)
160
- .option('--spec-id <id>', 'Target spec ID')
161
- .option('--quiet', 'Minimal output', false)
162
- .action(async (options) => {
163
- // Map legacy options to new gates command options
164
- const gateOpts = {
165
- context: options.allFiles ? 'ci' : (options.context || 'cli'),
166
- specId: options.specId,
167
- json: options.json,
168
- quiet: options.quiet,
169
- };
170
- await gatesCommand(gateOpts);
171
- });
172
-
173
- // Status command
174
- program
175
- .command('status')
176
- .description('Show project health overview')
177
- .option('--spec-id <id>', 'Feature-specific spec ID (e.g., user-auth)')
178
- .option('-s, --spec <path>', 'Path to spec file (explicit override)')
179
- .option('--visual', 'Enhanced visual output with progress bars', false)
180
- .option('--json', 'Output in JSON format for automation', false)
181
- .action(statusCommand);
182
-
183
- // Archive command
184
- program
185
- .command('archive <change-id>')
186
- .description('Archive completed change')
187
- .option('--spec-id <id>', 'Feature-specific spec ID (e.g., user-auth)')
188
- .option('-s, --spec <path>', 'Path to spec file (explicit override)')
189
- .option('-f, --force', 'Force archive even if criteria not met', false)
190
- .option('--dry-run', 'Preview archive without performing it', false)
191
- .action(archiveCommand);
192
-
193
- // Specs command group
194
- const specsCmd = program.command('specs').description('Manage multiple CAWS spec files');
195
-
196
- // Specs subcommands
197
- specsCmd
198
- .command('list')
199
- .description('List all available specs')
200
- .action(() => specsCommand('list', {}));
201
-
202
- specsCmd
203
- .command('create <id>')
204
- .description('Create a new spec (with conflict resolution)')
205
- .option('-t, --type <type>', 'Spec type (feature, fix, refactor, chore, docs)', 'feature')
206
- .option('--title <title>', 'Spec title')
207
- .option('--tier <tier>', 'Risk tier (T1, T2, T3)', 'T3')
208
- .option('--mode <mode>', 'Development mode', 'development')
209
- .option('-f, --force', 'Override existing specs without confirmation', false)
210
- .option('-i, --interactive', 'Ask for confirmation on conflicts', false)
211
- .action((id, options) => specsCommand('create', { id, ...options }));
212
-
213
- specsCmd
214
- .command('show <id>')
215
- .description('Show detailed spec information')
216
- .action((id) => specsCommand('show', { id }));
217
-
218
- specsCmd
219
- .command('update <id>')
220
- .description('Update spec properties')
221
- .option('-s, --status <status>', 'Spec status (draft, active, in_progress, completed, closed, archived)')
222
- .option('--title <title>', 'Spec title')
223
- .option('--description <desc>', 'Spec description')
224
- .action((id, options) => specsCommand('update', { id, ...options }));
225
-
226
- specsCmd
227
- .command('delete <id>')
228
- .description('Delete a spec')
229
- .action((id) => specsCommand('delete', { id }));
230
-
231
- specsCmd
232
- .command('close <id>')
233
- .description('Close a completed spec (removes scope enforcement)')
234
- .action((id) => specsCommand('close', { id }));
235
-
236
- specsCmd
237
- .command('conflicts')
238
- .description('Check for scope conflicts between specs')
239
- .action(() => specsCommand('conflicts', {}));
240
-
241
- specsCmd
242
- .command('migrate')
243
- .description('Migrate from legacy working-spec.yaml to feature-specific specs')
244
- .option('-i, --interactive', 'Interactive feature selection', false)
245
- .option('-f, --features <features>', 'Comma-separated list of features to migrate', (value) =>
246
- value.split(',')
247
- )
248
- .action((options) => specsCommand('migrate', options));
249
-
250
- specsCmd
251
- .command('types')
252
- .description('Show available spec types')
253
- .action(() => specsCommand('types', {}));
254
-
255
- // Sidecar command group
256
- const sidecarCmd = program.command('sidecar').description('Advisory analysis tools (drift, gaps, waivers, provenance)');
257
-
258
- sidecarCmd
259
- .command('drift')
260
- .description('Analyze spec drift vs implementation evidence')
261
- .option('--spec-id <id>', 'Target spec ID')
262
- .option('--json', 'Output as JSON', false)
263
- .action((options) => sidecarCommand('drift', options));
264
-
265
- sidecarCmd
266
- .command('gaps')
267
- .description('Diagnose quality gaps preventing phase advancement')
268
- .option('--spec-id <id>', 'Target spec ID')
269
- .option('--json', 'Output as JSON', false)
270
- .action((options) => sidecarCommand('gaps', options));
271
-
272
- sidecarCmd
273
- .command('waiver-draft')
274
- .description('Generate pre-filled waiver templates from gate failures')
275
- .option('--spec-id <id>', 'Target spec ID')
276
- .option('--gate <gate>', 'Specific gate to draft waiver for')
277
- .option('--json', 'Output as JSON', false)
278
- .action((options) => sidecarCommand('waiver-draft', options));
279
-
280
- sidecarCmd
281
- .command('provenance')
282
- .description('Summarize work provenance for merge readiness')
283
- .option('--spec-id <id>', 'Target spec ID')
284
- .option('--json', 'Output as JSON', false)
285
- .action((options) => sidecarCommand('provenance', options));
286
-
287
- // Mode command group
288
- const modeCmd = program.command('mode').description('Manage CAWS complexity tiers');
289
-
290
- // Mode subcommands
291
- modeCmd
292
- .command('current')
293
- .description('Show current CAWS mode')
294
- .action(() => modeCommand('current', {}));
295
-
296
- modeCmd
297
- .command('set <mode>')
298
- .description('Set CAWS complexity tier')
299
- .action((mode) => modeCommand('set', { mode }));
300
-
301
- modeCmd
302
- .command('compare')
303
- .description('Compare all available tiers')
304
- .action(() => modeCommand('compare', {}));
305
-
306
- modeCmd
307
- .command('recommend')
308
- .description('Get tier recommendation for your project')
309
- .option('--size <size>', 'Project size (small, medium, large)', 'medium')
310
- .option('--team-size <size>', 'Team size (number)', '1')
311
- .option('--compliance <required>', 'Compliance requirements (true/false)', 'false')
312
- .option('--audit <required>', 'Audit requirements (true/false)', 'false')
313
- .option('--details', 'Show detailed recommendation', false)
314
- .action((options) => modeCommand('recommend', options));
315
-
316
- modeCmd
317
- .command('details <mode>')
318
- .description('Show detailed information about a specific tier')
319
- .action((mode) => modeCommand('details', { mode }));
320
-
321
- // Tutorial command
322
- program
323
- .command('tutorial [type]')
324
- .description('Interactive guided learning for CAWS')
325
- .action(tutorialCommand);
326
-
327
- // Plan command
328
- program
329
- .command('plan <action>')
330
- .description('Generate implementation plans')
331
- .option('--spec-id <id>', 'Spec ID to generate plan for')
332
- .option('--spec <id>', 'Alias for --spec-id')
333
- .option('--output <path>', 'Output file path for the plan')
334
- .action((action, options) => planCommand(action, options));
335
-
336
- // Worktree command group
337
- const worktreeCmd = program
338
- .command('worktree')
339
- .description('Manage git worktrees for agent scope isolation');
340
-
341
- worktreeCmd
342
- .command('create <name>')
343
- .description('Create a new isolated worktree')
344
- .option('--scope <patterns>', 'Sparse checkout patterns (comma-separated, e.g., "src/auth/**")')
345
- .option('--base-branch <branch>', 'Base branch to create from')
346
- .option('--spec-id <id>', 'Associated spec ID')
347
- .action((name, options) => worktreeCommand('create', { name, ...options }));
348
-
349
- worktreeCmd
350
- .command('list')
351
- .description('List all managed worktrees')
352
- .action(() => worktreeCommand('list'));
353
-
354
- worktreeCmd
355
- .command('destroy <name>')
356
- .description('Destroy a worktree')
357
- .option('--delete-branch', 'Also delete the associated branch', false)
358
- .option('--force', 'Force removal even if worktree is dirty', false)
359
- .action((name, options) => worktreeCommand('destroy', { name, ...options }));
360
-
361
- worktreeCmd
362
- .command('merge <name>')
363
- .description('Merge a worktree branch back to base (destroy + merge + cleanup)')
364
- .option('--dry-run', 'Preview conflicts without merging', false)
365
- .option('--message <msg>', 'Custom merge commit message')
366
- .option('--no-delete-branch', 'Keep the branch after merging')
367
- .action((name, options) => worktreeCommand('merge', { name, ...options }));
368
-
369
- worktreeCmd
370
- .command('prune')
371
- .description('Clean up stale worktree entries')
372
- .option('--max-age <days>', 'Remove entries older than N days', '30')
373
- .option('--force', 'Allow pruning entries owned by other sessions', false)
374
- .action((options) => worktreeCommand('prune', options));
375
-
376
- worktreeCmd
377
- .command('repair')
378
- .description('Reconcile registry with git and filesystem state')
379
- .option('--dry-run', 'Report only, do not persist changes', false)
380
- .option('--prune', 'Remove destroyed, stale-merged, and missing entries', false)
381
- .option('--force', 'Allow pruning entries owned by other sessions', false)
382
- .action((options) => worktreeCommand('repair', options));
383
-
384
- worktreeCmd
385
- .command('bind <spec-id>')
386
- .description('Bind a spec to this worktree (fixes mutual reference)')
387
- .option('--name <name>', 'Worktree name (auto-detected from cwd if omitted)')
388
- .action((specId, options) => worktreeCommand('bind', { specId, ...options }));
389
-
390
- // Scope command group
391
- const scopeCmd = program
392
- .command('scope')
393
- .description('Inspect and manage scope boundaries');
394
-
395
- scopeCmd
396
- .command('show')
397
- .description('Show effective scope for the current context')
398
- .action(() => scopeCommand('show'));
399
-
400
- // Session command group
401
- const sessionCmd = program
402
- .command('session')
403
- .description('Manage session lifecycle and capsules for multi-agent coordination');
404
-
405
- sessionCmd
406
- .command('start')
407
- .description('Start a new tracked session with baseline checkpoint')
408
- .option('--role <role>', 'Agent role (worker, integrator, qa)', 'worker')
409
- .option('--spec-id <id>', 'Associated feature spec ID')
410
- .option('--scope <patterns>', 'Allowed file patterns (comma-separated)')
411
- .option('--intent <text>', 'What this session intends to accomplish')
412
- .action((options) => sessionCommand('start', options));
413
-
414
- sessionCmd
415
- .command('checkpoint')
416
- .description('Record a checkpoint in the current session')
417
- .option('--session-id <id>', 'Specific session ID (uses latest active if omitted)')
418
- .option('--intent <text>', 'Updated intent description')
419
- .option('--paths <paths>', 'Files changed (comma-separated)')
420
- .option('--tests <json>', 'Test results as JSON array [{name, status, evidence}]')
421
- .option('--issues <json>', 'Known issues as JSON array [{type, description}]')
422
- .action((options) => sessionCommand('checkpoint', options));
423
-
424
- sessionCmd
425
- .command('end')
426
- .description('End the current session with handoff information')
427
- .option('--session-id <id>', 'Specific session ID (uses latest active if omitted)')
428
- .option('--next-actions <actions>', 'Handoff actions (pipe-separated)')
429
- .option('--risk-notes <notes>', 'Risk notes (pipe-separated)')
430
- .action((options) => sessionCommand('end', options));
431
-
432
- sessionCmd
433
- .command('list')
434
- .description('List all sessions')
435
- .option('--status <status>', 'Filter by status (active, completed)')
436
- .option('--limit <n>', 'Max entries to show')
437
- .action((options) => sessionCommand('list', options));
438
-
439
- sessionCmd
440
- .command('show [id]')
441
- .description('Show session capsule details (default: latest)')
442
- .option('--json', 'Output as raw JSON', false)
443
- .action((id, options) => sessionCommand('show', { ...options, id: id || 'latest' }));
444
-
445
- sessionCmd
446
- .command('briefing')
447
- .description('Show session briefing for hooks/startup')
448
- .action(() => sessionCommand('briefing'));
449
-
450
- // Parallel command group
451
- const parallelCmd = program
452
- .command('parallel')
453
- .description('Orchestrate parallel multi-agent workspaces');
454
-
455
- parallelCmd
456
- .command('setup <plan-file>')
457
- .description('Create worktrees and sessions from a plan file')
458
- .option('--base-branch <branch>', 'Base branch for all worktrees')
459
- .action((planFile, options) => parallelCommand('setup', { planFile, ...options }));
460
-
461
- parallelCmd
462
- .command('status')
463
- .description('Show all active parallel worktrees and sessions')
464
- .action(() => parallelCommand('status'));
465
-
466
- parallelCmd
467
- .command('merge')
468
- .description('Merge all parallel branches back to base')
469
- .option('--strategy <strategy>', 'Merge strategy: merge or squash', 'merge')
470
- .option('--dry-run', 'Preview merge without executing', false)
471
- .option('--force', 'Force merge even with detected conflicts', false)
472
- .action((options) => parallelCommand('merge', options));
473
-
474
- parallelCmd
475
- .command('teardown')
476
- .description('Destroy all parallel worktrees')
477
- .option('--delete-branches', 'Also delete associated branches', false)
478
- .option('--force', 'Force removal even if worktrees are dirty', false)
479
- .action((options) => parallelCommand('teardown', options));
480
-
481
- // Templates command
482
- program
483
- .command('templates [subcommand]')
484
- .description('Discover and manage project templates')
485
- .option('-n, --name <template>', 'Template name (for info subcommand)')
486
- .action(templatesCommand);
44
+ .showHelpAfterError(false);
487
45
 
488
- // Diagnose command
489
- program
490
- .command('diagnose')
491
- .description('Run health checks and suggest fixes')
492
- .option('--spec-id <id>', 'Feature-specific spec ID')
493
- .option('--fix', 'Apply automatic fixes', false)
494
- .action(diagnoseCommand);
495
-
496
- // Verify Acceptance Criteria command
497
- program
498
- .command('verify-acs')
499
- .description('Verify acceptance criteria in specs are backed by test evidence')
500
- .option('--spec-id <id>', 'Verify only this spec')
501
- .option('--run', 'Actually run tests (default: collect-only)', false)
502
- .option('--runner <runner>', 'Force test runner (pytest, jest, vitest, cargo, go)')
503
- .option('--format <format>', 'Output format (text, json)', 'text')
504
- .action(verifyAcsCommand);
505
-
506
- // Evaluate command
507
- program
508
- .command('evaluate [spec-file]')
509
- .description('Evaluate work against CAWS quality standards')
510
- .option('--spec-id <id>', 'Feature-specific spec ID (e.g., user-auth)')
511
- .option('-v, --verbose', 'Show detailed error information', false)
512
- .action(evaluateCommand);
513
-
514
- // Iterate command
515
- program
516
- .command('iterate [spec-file]')
517
- .description('Get iterative development guidance')
518
- .option('--spec-id <id>', 'Feature-specific spec ID (e.g., user-auth)')
519
- .option('--current-state <json>', 'Current implementation state as JSON', '{}')
520
- .option('-v, --verbose', 'Show detailed error information', false)
521
- .action(iterateCommand);
522
-
523
- // Burnup command
524
- program
525
- .command('burnup [spec-file]')
526
- .description('Generate budget burn-up report for scope visibility')
527
- .option('--spec-id <id>', 'Feature-specific spec ID (e.g., user-auth)')
528
- .option('-v, --verbose', 'Show detailed error information', false)
529
- .action(burnupCommand);
530
-
531
- // Waivers command group
532
- const waiversCmd = program.command('waivers').description('Manage CAWS quality gate waivers');
533
-
534
- // Waivers subcommands
535
- waiversCmd
536
- .command('create')
537
- .description('Create a new quality gate waiver')
538
- .requiredOption('--title <title>', 'Waiver title')
539
- .requiredOption(
540
- '--reason <reason>',
541
- 'Reason for waiver (emergency_hotfix, legacy_integration, etc.)'
542
- )
543
- .requiredOption('--description <description>', 'Detailed description')
544
- .requiredOption('--gates <gates>', 'Comma-separated list of gates to waive')
545
- .requiredOption('--expires-at <date>', 'Expiration date (ISO 8601)')
546
- .requiredOption('--approved-by <approver>', 'Approver name')
547
- .requiredOption('--impact-level <level>', 'Impact level (low, medium, high, critical)')
548
- .requiredOption('--mitigation-plan <plan>', 'Risk mitigation plan')
549
- .option('-v, --verbose', 'Show detailed error information', false)
550
- .action((options) => waiversCommand('create', options));
551
-
552
- waiversCmd
553
- .command('list')
554
- .description('List all waivers')
555
- .option('-v, --verbose', 'Show detailed error information', false)
556
- .action((options) => waiversCommand('list', options));
557
-
558
- waiversCmd
559
- .command('show <id>')
560
- .description('Show waiver details')
561
- .option('-v, --verbose', 'Show detailed error information', false)
562
- .action((id, options) => waiversCommand('show', { ...options, id }));
563
-
564
- waiversCmd
565
- .command('revoke <id>')
566
- .description('Revoke a waiver')
567
- .option('--revoked-by <name>', 'Person revoking the waiver')
568
- .option('--reason <reason>', 'Revocation reason')
569
- .option('-v, --verbose', 'Show detailed error information', false)
570
- .action((id, options) => waiversCommand('revoke', { ...options, id }));
571
-
572
- waiversCmd
573
- .command('prune')
574
- .description('Prune expired waivers (dry-run by default; use --apply to persist)')
575
- .option('--expired', 'Prune active waivers whose expires_at is in the past')
576
- .option('--apply', 'Actually transition status (default: dry run)')
577
- .option('--json', 'Emit machine-readable JSON output')
578
- .option('-v, --verbose', 'Show detailed error information', false)
579
- .action((options) => waiversCommand('prune', options));
580
-
581
- // Workflow command group
582
- program
583
- .command('workflow <type>')
584
- .description('Get workflow-specific guidance')
585
- .option('--spec-id <id>', 'Feature-specific spec ID (e.g., user-auth)')
586
- .option('--step <number>', 'Current step in workflow', '1')
587
- .option('--current-state <json>', 'Current implementation state as JSON', '{}')
588
- .option('-v, --verbose', 'Show detailed error information', false)
589
- .action((type, options) => workflowCommand(type, options));
590
-
591
- // Quality Monitor command
592
- program
593
- .command('quality-monitor <action>')
594
- .description('Monitor code quality impact in real-time')
595
- .option('--spec-id <id>', 'Feature-specific spec ID (e.g., user-auth)')
596
- .option('--files <files>', 'Files affected (comma-separated)')
597
- .option('--context <json>', 'Additional context as JSON', '{}')
598
- .option('-v, --verbose', 'Show detailed error information', false)
599
- .action(qualityMonitorCommand);
600
-
601
- // Troubleshoot command available via: caws diagnose --troubleshoot <guide>
602
- // The standalone command was consolidated into the diagnose command.
603
-
604
- // Tool command
605
- program
606
- .command('tool')
607
- .description('Execute CAWS tools programmatically')
608
- .argument('<tool-id>', 'ID of the tool to execute')
609
- .option('-p, --params <json>', 'Parameters as JSON string', '{}')
610
- .option('-t, --timeout <ms>', 'Execution timeout in milliseconds', parseInt, 30000)
611
- .action(executeTool);
612
-
613
- // Test Analysis command
614
- program
615
- .command('test-analysis <subcommand> [options...]')
616
- .description('Statistical analysis for budget prediction')
617
- .option('--spec-id <id>', 'Feature-specific spec ID (e.g., user-auth)')
618
- .action((subcommand, optionArgs, command) => {
619
- testAnalysisCommand(subcommand, optionArgs, command.opts());
620
- });
621
-
622
- // Provenance command group
623
- const provenanceCmd = program.command('provenance').description('Manage CAWS provenance tracking');
624
-
625
- // Subcommands
626
- provenanceCmd
627
- .command('update')
628
- .description('Add new commit to provenance chain')
629
- .requiredOption('-c, --commit <hash>', 'Git commit hash')
630
- .option('--spec-id <id>', 'Feature-specific spec ID')
631
- .option('-s, --spec <path>', 'Path to spec file (explicit override)')
632
- .option('-m, --message <msg>', 'Commit message')
633
- .option('-a, --author <info>', 'Author information')
634
- .option('-q, --quiet', 'Suppress output')
635
- .option('-o, --output <path>', 'Output path for provenance files', '.caws/provenance')
636
- .action(async (options) => {
637
- await provenanceCommand('update', options);
638
- });
639
-
640
- provenanceCmd
641
- .command('show')
642
- .description('Display current provenance history')
643
- .option('-o, --output <path>', 'Output path for provenance files', '.caws/provenance')
644
- .option('--format <type>', 'Output format: text, json, dashboard', 'text')
645
- .action(async (options) => {
646
- await provenanceCommand('show', options);
647
- });
648
-
649
- provenanceCmd
650
- .command('verify')
651
- .description('Validate provenance chain integrity')
652
- .option('-o, --output <path>', 'Output path for provenance files', '.caws/provenance')
653
- .action(async (options) => {
654
- await provenanceCommand('verify', options);
655
- });
656
-
657
- provenanceCmd
658
- .command('analyze-ai')
659
- .description('Analyze AI-assisted development patterns')
660
- .option('-o, --output <path>', 'Output path for provenance files', '.caws/provenance')
661
- .action(async (options) => {
662
- await provenanceCommand('analyze-ai', options);
663
- });
664
-
665
- provenanceCmd
666
- .command('init')
667
- .description('Initialize provenance tracking for the project')
668
- .option('--spec-id <id>', 'Feature-specific spec ID')
669
- .option('-s, --spec <path>', 'Path to spec file (explicit override)')
670
- .option('-o, --output <path>', 'Output path for provenance files', '.caws/provenance')
671
- .option('--cursor-api <url>', 'Cursor tracking API endpoint')
672
- .option('--cursor-key <key>', 'Cursor API key')
673
- .action(async (options) => {
674
- await provenanceCommand('init', options);
675
- });
676
-
677
- // Git hooks command
678
- const hooksCmd = program
679
- .command('hooks')
680
- .description('Manage CAWS git hooks for provenance tracking');
681
-
682
- hooksCmd
683
- .command('install')
684
- .description('Install CAWS git hooks')
685
- .option('--no-provenance', 'Skip provenance tracking hooks')
686
- .option('--no-validation', 'Skip validation hooks')
687
- .option('--no-quality-gates', 'Skip quality gate hooks')
688
- .option('--force', 'Overwrite existing hooks')
689
- .option('--backup', 'Backup existing hooks before replacing')
690
- .action(async (options) => {
691
- const hookOptions = {
692
- provenance: options.provenance !== false,
693
- validation: options.validation !== false,
694
- qualityGates: options.qualityGates !== false,
695
- force: options.force,
696
- backup: options.backup,
697
- };
698
-
699
- try {
700
- const result = await scaffoldGitHooks(process.cwd(), hookOptions);
701
- if (result.added > 0) {
702
- console.log(`Successfully installed ${result.added} git hooks`);
703
- if (result.skipped > 0) {
704
- console.log(`Skipped ${result.skipped} existing hooks`);
705
- }
706
- } else {
707
- console.log('All hooks already configured');
708
- }
709
- } catch (error) {
710
- console.error(`Failed to install git hooks: ${error.message}`);
711
- process.exit(1);
712
- }
713
- });
714
-
715
- hooksCmd
716
- .command('remove')
717
- .description('Remove CAWS git hooks')
718
- .action(async () => {
719
- try {
720
- await removeGitHooks(process.cwd());
721
- } catch (error) {
722
- console.error(`Failed to remove git hooks: ${error.message}`);
723
- process.exit(1);
724
- }
725
- });
726
-
727
- hooksCmd
728
- .command('status')
729
- .description('Check git hooks status')
730
- .action(async () => {
731
- try {
732
- await checkGitHooksStatus(process.cwd());
733
- } catch (error) {
734
- console.error(`Failed to check git hooks status: ${error.message}`);
735
- process.exit(1);
736
- }
737
- });
738
-
739
- // Error handling
740
- // Custom error event handler for better messages
741
46
  program.configureHelp({
742
- // Override error display
743
- showError: () => {}, // Suppress default error display
47
+ showError: () => {},
744
48
  });
745
49
 
50
+ // v11.0.0 surface: exactly the 8 vNext command groups registered by
51
+ // `registerShellCommands(program)`. Used by `findSimilarCommand` for
52
+ // unknown-command suggestions. Must match `node dist/index.js --help`
53
+ // output (excluding Commander's auto-generated `help` row).
54
+ //
55
+ // Slice 8a3.5 reconciliation: dropped 24 legacy entries removed in
56
+ // 8a3.1–8a3.4 plus the stale `'quality-gates'` alias (alias was
57
+ // removed in slice 6c but the suggester entry was never cleaned).
58
+ // Added the 5 vNext groups that were missing from the suggester:
59
+ // 'agents' (now removed), 'claim', 'doctor', 'evidence',
60
+ // 'test-analysis' (now removed). Final list is exactly the 8 vNext
61
+ // groups currently registered.
746
62
  const VALID_COMMANDS = [
747
- 'init',
748
- 'validate',
749
- 'scaffold',
750
- 'status',
751
- 'archive',
752
- 'specs',
753
- 'sidecar',
754
- 'mode',
755
- 'tutorial',
756
- 'plan',
757
- 'templates',
758
- 'diagnose',
759
- 'evaluate',
760
- 'iterate',
761
- 'waivers',
762
- 'workflow',
763
- 'quality-monitor',
764
- 'quality-gates',
63
+ 'claim',
64
+ 'doctor',
65
+ 'evidence',
765
66
  'gates',
766
- 'provenance',
767
- 'hooks',
768
- 'burnup',
769
- 'tool',
770
- 'worktree',
771
- 'session',
772
- 'parallel',
773
- 'verify-acs',
67
+ 'init',
774
68
  'scope',
69
+ 'status',
70
+ 'waiver',
775
71
  ];
776
72
 
777
73
  program.exitOverride((err) => {
@@ -815,12 +111,6 @@ program.exitOverride((err) => {
815
111
  console.error(chalk.red(`\nUnknown option: ${option}`));
816
112
  console.error(chalk.yellow(`\nTry: caws ${commandName || ''} --help for available options`));
817
113
 
818
- // Provide specific suggestions for common mistakes
819
- if (option === '--suggestions' || option === '--suggest') {
820
- console.error(chalk.yellow('Note: Validation includes suggestions by default'));
821
- console.error(chalk.yellow(' Just run: caws validate'));
822
- }
823
-
824
114
  console.error(
825
115
  chalk.blue(
826
116
  '\nDocumentation: https://github.com/Paths-Design/coding-agent-working-standard/blob/main/docs/api/cli.md'
@@ -841,11 +131,12 @@ program.exitOverride((err) => {
841
131
  process.exit(1);
842
132
  });
843
133
 
844
- // Register sidecar lifecycle listeners (non-fatal hints)
845
- try {
846
- const { registerSidecarListeners } = require('./sidecars/listeners');
847
- registerSidecarListeners();
848
- } catch { /* sidecars module not available — non-fatal */ }
134
+ // Register vNext shell commands. This is the only registration block
135
+ // in v11; all command groups are in src/shell/. The legacy registration
136
+ // blocks above this line were removed in slices 8a3.1–8a3.4 as part of
137
+ // the v11.0.0 cutover.
138
+ const { registerShellCommands } = require('./shell');
139
+ registerShellCommands(program);
849
140
 
850
141
  // Parse and run
851
142
  if (require.main === module) {
@@ -899,12 +190,6 @@ if (require.main === module) {
899
190
  chalk.yellow(`\nTry: caws ${commandName || ''} --help for available options`)
900
191
  );
901
192
 
902
- // Provide specific suggestions for common mistakes
903
- if (option === '--suggestions' || option === '--suggest') {
904
- console.error(chalk.yellow('Note: Validation includes suggestions by default'));
905
- console.error(chalk.yellow(' Just run: caws validate'));
906
- }
907
-
908
193
  console.error(
909
194
  chalk.blue(
910
195
  '\nDocumentation: https://github.com/Paths-Design/coding-agent-working-standard/blob/main/docs/api/cli.md'
@@ -919,8 +204,10 @@ if (require.main === module) {
919
204
  }
920
205
  }
921
206
 
922
- // Export functions for testing
923
- module.exports = {
924
- generateWorkingSpec,
925
- validateGeneratedSpec,
926
- };
207
+ // Public API surface removed in slice 8a3 (v11.0.0 cutover). The
208
+ // legacy `generateWorkingSpec` / `validateGeneratedSpec` helpers were
209
+ // part of v10.x's exported API; v11 ships only the binary entry point
210
+ // and exposes no JS exports from this module. Programmatic consumers
211
+ // should depend on `@paths.design/caws-kernel` (pure logic) or the
212
+ // `dist/shell` / `dist/store` modules directly.
213
+ module.exports = {};