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