@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
@@ -1,299 +0,0 @@
1
- # CAWS Cursor IDE Integration
2
-
3
- This directory contains Cursor IDE hooks that provide real-time CAWS quality assurance integration during development.
4
-
5
- ## Overview
6
-
7
- Cursor hooks enable seamless integration between CAWS and the Cursor IDE, providing:
8
-
9
- - **Real-time quality validation** as you code
10
- - **Automatic spec validation** when editing working specs
11
- - **Scope enforcement** preventing out-of-scope file access
12
- - **Quality monitoring** after file edits
13
-
14
- ## Hook Configuration
15
-
16
- The `hooks.json` file defines when each hook runs:
17
-
18
- ```json
19
- {
20
- "beforeShellExecution": ["block-dangerous.sh", "audit.sh"],
21
- "beforeReadFile": ["scan-secrets.sh", "caws-scope-guard.sh"],
22
- "afterFileEdit": ["format.sh", "naming-check.sh", "validate-spec.sh", "caws-quality-check.sh", "audit.sh"],
23
- "beforeSubmitPrompt": ["caws-scope-guard.sh", "audit.sh"],
24
- "stop": ["audit.sh"]
25
- }
26
- ```
27
-
28
- ## Available Hooks
29
-
30
- ### CAWS-Specific Hooks
31
-
32
- #### `caws-quality-check.sh`
33
- - **Trigger**: `afterFileEdit`
34
- - **Purpose**: Runs CAWS quality evaluation after code changes
35
- - **Blocks**: No (provides warnings and suggestions)
36
- - **Fallback**: Graceful degradation if CAWS CLI unavailable
37
-
38
- #### `caws-scope-guard.sh`
39
- - **Trigger**: `beforeReadFile`, `beforeSubmitPrompt`
40
- - **Purpose**: Prevents access to files outside CAWS-defined scope
41
- - **Blocks**: Yes (for out-of-scope file access)
42
- - **Requires**: `.caws/working-spec.yaml`
43
-
44
- ### General Security Hooks
45
-
46
- #### `block-dangerous.sh`
47
- - **Trigger**: `beforeShellExecution`
48
- - **Purpose**: Prevents execution of dangerous shell commands
49
- - **Blocks**: `rm -rf /`, `sudo`, destructive operations
50
-
51
- #### `scan-secrets.sh`
52
- - **Trigger**: `beforeReadFile`
53
- - **Purpose**: Scans for potential secrets before file access
54
- - **Blocks**: Files containing password/token patterns
55
-
56
- ### Code Quality Hooks
57
-
58
- #### `format.sh`
59
- - **Trigger**: `afterFileEdit`
60
- - **Purpose**: Auto-formats code using Prettier/ESLint
61
- - **Blocks**: No (formats in background)
62
-
63
- #### `naming-check.sh`
64
- - **Trigger**: `afterFileEdit`
65
- - **Purpose**: Enforces CAWS naming conventions
66
- - **Blocks**: No (provides warnings)
67
-
68
- #### `validate-spec.sh`
69
- - **Trigger**: `afterFileEdit`
70
- - **Purpose**: Validates CAWS working specs in real-time
71
- - **Blocks**: No (shows validation errors)
72
-
73
- ### Audit Hooks
74
-
75
- #### `audit.sh`
76
- - **Trigger**: Multiple events
77
- - **Purpose**: Logs all hook executions for debugging
78
- - **Blocks**: No (passive logging)
79
-
80
- ## Installation
81
-
82
- ### Automatic Setup
83
-
84
- ```bash
85
- # CAWS init automatically sets up Cursor hooks
86
- caws init my-project --interactive
87
-
88
- # Or manually scaffold hooks
89
- caws scaffold
90
- ```
91
-
92
- ### Manual Setup
93
-
94
- 1. Copy `.cursor/` directory to your project root
95
- 2. Ensure hook scripts are executable: `chmod +x .cursor/hooks/*.sh`
96
- 3. Restart Cursor IDE
97
- 4. Verify hooks are active in Cursor settings
98
-
99
- ## Configuration
100
-
101
- ### Environment Variables
102
-
103
- ```bash
104
- # Enable debug logging
105
- export CURSOR_HOOKS_DEBUG=1
106
-
107
- # CAWS CLI path override
108
- export CAWS_CLI_PATH=/custom/path/to/caws
109
-
110
- # Disable specific hooks
111
- export CURSOR_DISABLE_HOOKS=audit.sh,format.sh
112
- ```
113
-
114
- ### Hook Customization
115
-
116
- Modify `hooks.json` to customize hook behavior:
117
-
118
- ```json
119
- {
120
- "afterFileEdit": [
121
- {
122
- "command": "./.cursor/hooks/caws-quality-check.sh",
123
- "timeout": 5000,
124
- "background": true
125
- }
126
- ]
127
- }
128
- ```
129
-
130
- ## Troubleshooting
131
-
132
- ### Hooks Not Running
133
-
134
- ```bash
135
- # Check hook permissions
136
- ls -la .cursor/hooks/
137
-
138
- # Verify Cursor hooks are enabled
139
- # Cursor Settings → Hooks → Enable hooks
140
-
141
- # Check Cursor logs
142
- # Help → Toggle Developer Tools → Console
143
- ```
144
-
145
- ### CAWS CLI Not Found
146
-
147
- ```bash
148
- # Install CAWS CLI
149
- npm install -g @caws/cli
150
-
151
- # Verify PATH
152
- which caws
153
- ```
154
-
155
- ### False Positives
156
-
157
- ```bash
158
- # Temporarily disable hooks
159
- export CURSOR_DISABLE_HOOKS=caws-scope-guard.sh
160
-
161
- # Or modify hook logic
162
- vim .cursor/hooks/caws-scope-guard.sh
163
- ```
164
-
165
- ### Performance Issues
166
-
167
- ```bash
168
- # Run hooks in background
169
- # Edit hooks.json to add "background": true
170
-
171
- # Increase timeouts
172
- # Edit hooks.json to add "timeout": 10000
173
-
174
- # Disable slow hooks
175
- export CURSOR_DISABLE_HOOKS=format.sh,naming-check.sh
176
- ```
177
-
178
- ## Development
179
-
180
- ### Creating New Hooks
181
-
182
- 1. **Create script** in `.cursor/hooks/`
183
- 2. **Make executable**: `chmod +x .cursor/hooks/your-hook.sh`
184
- 3. **Add to configuration** in `hooks.json`
185
- 4. **Test manually**: `echo '{}' | ./cursor/hooks/your-hook.sh`
186
-
187
- ### Hook Script Template
188
-
189
- ```bash
190
- #!/bin/bash
191
- # CAWS Hook: Description
192
- # @author @darianrosebrook
193
-
194
- set -e
195
-
196
- # Read Cursor input
197
- INPUT=$(cat)
198
- DATA=$(echo "$INPUT" | jq -r '.data // ""')
199
-
200
- # Your hook logic here
201
- if [[ -n "$DATA" ]]; then
202
- # Process data
203
- echo '{"userMessage": "Hook executed", "agentMessage": "Details"}'
204
- fi
205
-
206
- exit 0
207
- ```
208
-
209
- ### Testing Hooks
210
-
211
- ```bash
212
- # Test with sample input
213
- echo '{"action": "edit_file", "file_path": "test.js"}' | ./cursor/hooks/caws-quality-check.sh
214
-
215
- # Test error conditions
216
- echo '{}' | ./cursor/hooks/caws-scope-guard.sh
217
-
218
- # Debug with verbose output
219
- export CURSOR_HOOKS_DEBUG=1
220
- ```
221
-
222
- ## Integration with CAWS Ecosystem
223
-
224
- ### Relationship to Other Tools
225
-
226
- ```
227
- Cursor Hooks ←→ CAWS CLI ←→ VS Code Extension
228
- ↓ ↓ ↓
229
- Real-time Command-line Rich IDE
230
- Validation Interface Integration
231
- ```
232
-
233
- ### Complementary Tools
234
-
235
- - **Git Hooks**: `.git/hooks/` for commit/push validation
236
- - **VS Code Extension**: Rich UI for CAWS operations
237
- - **CAWS CLI**: Core functionality
238
-
239
- ### Data Flow
240
-
241
- ```
242
- File Edit → Cursor Hook → CAWS CLI → Quality Check → User Feedback
243
-
244
- Audit Log → Provenance Tracking
245
- ```
246
-
247
- ## Security Considerations
248
-
249
- ### Safe Execution
250
-
251
- - Hooks run in isolated processes
252
- - No access to sensitive Cursor data
253
- - Input validation on all hook data
254
- - Timeout protection against hanging hooks
255
-
256
- ### Privacy Protection
257
-
258
- - File contents not sent to external services
259
- - Local CAWS CLI execution only
260
- - No telemetry or data collection
261
- - User-controlled hook execution
262
-
263
- ## Performance Optimization
264
-
265
- ### Hook Design Principles
266
-
267
- 1. **Fast Execution**: < 2 seconds for real-time feedback
268
- 2. **Background Processing**: Non-blocking operations
269
- 3. **Selective Running**: Only run relevant hooks
270
- 4. **Caching**: Avoid redundant operations
271
-
272
- ### Optimization Strategies
273
-
274
- - **Debounced execution** for file edit hooks
275
- - **Incremental validation** for large codebases
276
- - **Parallel processing** for independent checks
277
- - **Result caching** for repeated operations
278
-
279
- ## Contributing
280
-
281
- ### Hook Development Guidelines
282
-
283
- - **Clear naming**: `caws-*` prefix for CAWS-specific hooks
284
- - **Comprehensive logging**: Debug-friendly output
285
- - **Error handling**: Graceful failure modes
286
- - **Documentation**: Inline comments and README updates
287
- - **Testing**: Manual and automated test coverage
288
-
289
- ### Pull Request Process
290
-
291
- 1. **Test locally** in Cursor IDE
292
- 2. **Update documentation** in this README
293
- 3. **Add configuration examples** if needed
294
- 4. **Consider performance impact** on large codebases
295
- 5. **Test with different project types** (CAWS/non-CAWS)
296
-
297
- ## License
298
-
299
- MIT License - see main project LICENSE file.
@@ -1,55 +0,0 @@
1
- #!/bin/bash
2
- # Cursor Hook: Audit Trail
3
- #
4
- # Purpose: Log all Cursor AI events for provenance tracking
5
- # Event: All (beforeShellExecution, beforeReadFile,
6
- # afterFileEdit, beforeSubmitPrompt, stop)
7
- #
8
- # @author @darianrosebrook
9
-
10
- set -euo pipefail
11
-
12
- # Read input from Cursor
13
- INPUT=$(cat)
14
-
15
- # Create log directory if it doesn't exist
16
- LOG_DIR=".cursor/logs"
17
- mkdir -p "$LOG_DIR"
18
-
19
- # Log file with date rotation
20
- LOG_FILE="$LOG_DIR/audit-$(date +%Y-%m-%d).log"
21
-
22
- # Extract key information
23
- TIMESTAMP=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
24
- HOOK_EVENT=$(echo "$INPUT" | jq -r '.hook_event_name // "unknown"')
25
- CONVERSATION_ID=$(echo "$INPUT" | jq -r '.conversation_id // "none"')
26
- GENERATION_ID=$(echo "$INPUT" | jq -r '.generation_id // "none"')
27
-
28
- # Create audit entry
29
- AUDIT_ENTRY=$(cat <<EOF
30
- {
31
- "timestamp": "$TIMESTAMP",
32
- "event": "$HOOK_EVENT",
33
- "conversation_id": "$CONVERSATION_ID",
34
- "generation_id": "$GENERATION_ID",
35
- "details": $INPUT
36
- }
37
- EOF
38
- )
39
-
40
- # Append to audit log
41
- echo "$AUDIT_ENTRY" >> "$LOG_FILE"
42
-
43
- # Try to update CAWS provenance if available
44
- if [ -f "apps/tools/caws/provenance.js" ]; then
45
- node apps/tools/caws/provenance.js log-event \
46
- --event="$HOOK_EVENT" \
47
- --conversation="$CONVERSATION_ID" \
48
- --generation="$GENERATION_ID" \
49
- 2>/dev/null || true
50
- fi
51
-
52
- # Always allow - this is observation only
53
- echo '{"permission":"allow"}' 2>/dev/null || true
54
- exit 0
55
-
@@ -1,84 +0,0 @@
1
- #!/bin/bash
2
- # Cursor Hook: Dangerous Command Blocker
3
- #
4
- # Purpose: Block or ask permission for risky shell commands
5
- # Event: beforeShellExecution
6
- #
7
- # @author @darianrosebrook
8
-
9
- set -euo pipefail
10
-
11
- # Read input from Cursor
12
- INPUT=$(cat)
13
-
14
- # Extract command and cwd
15
- COMMAND=$(echo "$INPUT" | jq -r '.command // ""')
16
- CWD=$(echo "$INPUT" | jq -r '.cwd // ""')
17
-
18
- # Hard blocks - never allow these
19
- # CRITICAL: These commands can cause catastrophic data loss
20
- # git init, git reset --hard, and git push --force were added after an incident
21
- # where an agent panicked at quality gates and wiped thousands of lines of work
22
- HARD_BLOCKS=(
23
- "rm -rf /"
24
- "rm -rf /*"
25
- "rm -rf ~"
26
- "rm -rf $HOME"
27
- "> /dev/sda"
28
- "git init" # Can wipe entire git history and stashed changes
29
- "git commit --amend --no-edit" # Can rewrite commit history destructively
30
- "git reset --hard" # Can lose uncommitted work and stashed changes
31
- "git push --force" # Can overwrite remote repository history
32
- "git rebase" # Rewrites branch history; blocked while worktrees are active
33
- "dd if="
34
- "mkfs"
35
- "format c:"
36
- "del /f /s /q"
37
- "DROP DATABASE"
38
- "TRUNCATE TABLE"
39
- )
40
-
41
- for blocked in "${HARD_BLOCKS[@]}"; do
42
- if [[ "$COMMAND" == *"$blocked"* ]]; then
43
- echo '{"permission":"deny","userMessage":"⚠️ BLOCKED: Dangerous command detected. This operation could cause data loss.","agentMessage":"This command is blocked for safety. If you need to perform this operation, run it manually."}' 2>/dev/null
44
- exit 0
45
- fi
46
- done
47
-
48
- # Ask permission for risky operations
49
- # Note: git commands moved to HARD_BLOCKS after catastrophic data loss incident
50
- ASK_PERMISSION=(
51
- "rm -rf"
52
- "npm publish"
53
- "docker rmi"
54
- "docker system prune"
55
- "kubectl delete"
56
- "terraform destroy"
57
- "DROP TABLE"
58
- "DELETE FROM"
59
- "UPDATE.*SET"
60
- )
61
-
62
- for risky in "${ASK_PERMISSION[@]}"; do
63
- if echo "$COMMAND" | grep -qiE "$risky"; then
64
- echo '{"permission":"ask","userMessage":"⚠️ Risky operation: '"$COMMAND"'. Approve to continue.","agentMessage":"This is a potentially destructive operation. User approval required."}' 2>/dev/null
65
- exit 0
66
- fi
67
- done
68
-
69
- # Block git operations that skip hooks
70
- if echo "$COMMAND" | grep -qE "(--no-verify|--no-gpg-sign)"; then
71
- echo '{"permission":"ask","userMessage":"⚠️ This command skips git hooks. Approve to continue.","agentMessage":"Skipping hooks bypasses quality gates. Use with caution."}' 2>/dev/null
72
- exit 0
73
- fi
74
-
75
- # Block force push to main/master
76
- if echo "$COMMAND" | grep -qE "git push.*(--force|-f).*\s+(origin\s+)?(main|master)"; then
77
- echo '{"permission":"deny","userMessage":"⚠️ BLOCKED: Force push to main/master is not allowed.","agentMessage":"Force pushing to main/master can cause data loss for other developers."}' 2>/dev/null
78
- exit 0
79
- fi
80
-
81
- # Allow by default
82
- echo '{"permission":"allow"}' 2>/dev/null
83
- exit 0
84
-
@@ -1,52 +0,0 @@
1
- #!/bin/bash
2
- # CAWS Quality Check Hook
3
- # Runs CAWS quality validation after file edits
4
- # @author @darianrosebrook
5
-
6
- set -e
7
-
8
- # Read input from Cursor
9
- INPUT=$(cat)
10
- FILE_PATH=$(echo "$INPUT" | jq -r '.file_path // ""')
11
-
12
- # Only run on source files
13
- if [[ "$FILE_PATH" =~ \.(js|ts|jsx|tsx|py|go|rs|java)$ ]] && [[ ! "$FILE_PATH" =~ node_modules ]] && [[ ! "$FILE_PATH" =~ dist ]]; then
14
-
15
- # Check if CAWS is available
16
- if command -v caws &> /dev/null; then
17
-
18
- # Check if we're in a CAWS project
19
- if [[ -f ".caws/working-spec.yaml" ]]; then
20
-
21
- echo "🔍 Running CAWS quality check..." >&2
22
-
23
- # Run CAWS evaluation in quiet mode for fast feedback
24
- if caws evaluate .caws/working-spec.yaml --quiet 2>/dev/null; then
25
- echo '{"userMessage": "✅ CAWS quality check passed", "agentMessage": "Quality standards maintained"}'
26
- else
27
- # Get detailed feedback
28
- EVALUATION=$(caws evaluate .caws/working-spec.yaml --json 2>/dev/null || echo '{"success": false, "error": "Evaluation failed"}')
29
-
30
- # Parse the evaluation result
31
- SUCCESS=$(echo "$EVALUATION" | jq -r '.success // false')
32
- SCORE=$(echo "$EVALUATION" | jq -r '.evaluation.quality_score // 0')
33
-
34
- if [[ "$SUCCESS" == "true" ]] && (( $(echo "$SCORE > 0.75" | bc -l) )); then
35
- echo '{"userMessage": "✅ CAWS quality standards met", "agentMessage": "Code meets quality requirements"}'
36
- else
37
- FAILED_GATES=$(echo "$EVALUATION" | jq -r '.evaluation.criteria[] | select(.status == "failed") | .name' | tr '\n' ', ' | sed 's/, $//')
38
-
39
- echo '{
40
- "userMessage": "⚠️ CAWS quality issues detected. Run: caws evaluate",
41
- "agentMessage": "Quality gates failed: '"$FAILED_GATES"'",
42
- "suggestions": [
43
- "Run caws evaluate for detailed feedback",
44
- "Consider creating a waiver if justified: caws waivers create",
45
- "Address failing quality gates before proceeding"
46
- ]
47
- }'
48
- fi
49
- fi
50
- fi
51
- fi
52
- fi
@@ -1,130 +0,0 @@
1
- #!/bin/bash
2
- # CAWS Scope Guard Hook
3
- # Prevents agents from accessing files outside CAWS-defined scope
4
- # @author @darianrosebrook
5
-
6
- set -e
7
-
8
- # Read input from Cursor
9
- INPUT=$(cat)
10
- ACTION=$(echo "$INPUT" | jq -r '.action // ""')
11
- FILE_PATH=$(echo "$INPUT" | jq -r '.file_path // ""')
12
-
13
- # Check if CAWS is available and we have a working spec
14
- if command -v caws &> /dev/null && [[ -f ".caws/working-spec.yaml" ]]; then
15
-
16
- # AGENT GUARDRAILS - Prevent policy bypass attempts
17
- if [[ "$ACTION" == "edit_file" ]] || [[ "$ACTION" == "create_file" ]]; then
18
- if [[ "$FILE_PATH" == ".caws/policy.yaml" ]]; then
19
- echo '{
20
- "userMessage": "🚫 Policy file editing blocked by agent guardrails",
21
- "agentMessage": "Agents cannot edit .caws/policy.yaml - requires human dual control",
22
- "block": true,
23
- "suggestions": [
24
- "Policy changes must be approved by humans with Gatekeeper role",
25
- "Create a separate PR for policy changes",
26
- "For budget exceptions: caws waivers create --title=\"Budget exception\" --reason=architectural_refactor --gates=budget_limit",
27
- "Contact @gatekeepers for policy modifications"
28
- ]
29
- }'
30
- exit 1
31
- fi
32
-
33
- if [[ "$FILE_PATH" == "CODEOWNERS" ]]; then
34
- echo '{
35
- "userMessage": "🚫 CODEOWNERS editing blocked by agent guardrails",
36
- "agentMessage": "Agents cannot modify CODEOWNERS - governance changes require approval",
37
- "block": true,
38
- "suggestions": [
39
- "CODEOWNERS changes require governance review",
40
- "Contact repository maintainers for ownership changes",
41
- "For approval workflows: caws waivers create --reason=governance_change"
42
- ]
43
- }'
44
- exit 1
45
- fi
46
-
47
- if [[ "$FILE_PATH" == ".caws/working-spec.yaml" ]]; then
48
- # Check if trying to add change_budget
49
- FILE_CONTENT=$(echo "$INPUT" | jq -r '.content // ""')
50
- if echo "$FILE_CONTENT" | grep -q "change_budget"; then
51
- echo '{
52
- "userMessage": "🚫 Budget editing blocked by agent guardrails",
53
- "agentMessage": "Agents cannot introduce change_budget fields - budgets are derived automatically",
54
- "block": true,
55
- "suggestions": [
56
- "Check current budget status: caws burnup",
57
- "For budget exceptions: caws waivers create --title=\"Scope expansion\" --reason=architectural_refactor --gates=budget_limit --expires-at=\"2025-12-31T23:59:59Z\"",
58
- "Add waiver_ids to working spec instead: [\"WV-XXXX\"]",
59
- "Validate waiver: caws validate .caws/working-spec.yaml"
60
- ]
61
- }'
62
- exit 1
63
- fi
64
- fi
65
- fi
66
-
67
- # For file access actions, check scope
68
- if [[ "$ACTION" == "read_file" ]] || [[ "$ACTION" == "edit_file" ]] || [[ -n "$FILE_PATH" ]]; then
69
-
70
- # Get scope information from CAWS spec
71
- SCOPE_CHECK=$(caws validate .caws/working-spec.yaml --scope-check "$FILE_PATH" 2>/dev/null || echo "unknown")
72
-
73
- if [[ "$SCOPE_CHECK" == "out_of_scope" ]]; then
74
- echo '{
75
- "userMessage": "🚫 File access blocked by CAWS scope guard",
76
- "agentMessage": "Cannot access '"$FILE_PATH"' - outside CAWS defined scope",
77
- "block": true,
78
- "suggestions": [
79
- "Check current scope: caws validate .caws/working-spec.yaml",
80
- "Update scope in working spec: edit .caws/working-spec.yaml scope.in array",
81
- "For scope exceptions: caws waivers create --title=\"Scope expansion\" --reason=architectural_refactor --gates=scope_boundary --description=\"Need access to '"$FILE_PATH"' for implementation\"",
82
- "Validate changes: caws validate .caws/working-spec.yaml"
83
- ]
84
- }'
85
- exit 1
86
- elif [[ "$SCOPE_CHECK" == "scope_warning" ]]; then
87
- echo '{
88
- "userMessage": "⚠️ File access outside primary scope",
89
- "agentMessage": "File '"$FILE_PATH"' is outside primary scope but allowed",
90
- "suggestions": [
91
- "Check if needed in primary scope: edit .caws/working-spec.yaml scope.in",
92
- "Consider scope implications: caws evaluate",
93
- "Document scope decision in working spec invariants",
94
- "Validate scope changes: caws validate .caws/working-spec.yaml"
95
- ]
96
- }'
97
- fi
98
- fi
99
-
100
- # For prompt submissions, check working spec compliance
101
- if [[ "$ACTION" == "submit_prompt" ]]; then
102
- PROMPT_CONTENT=$(echo "$INPUT" | jq -r '.prompt // ""')
103
-
104
- # Check if prompt mentions files outside scope
105
- if [[ -n "$PROMPT_CONTENT" ]]; then
106
- MENTIONED_FILES=$(echo "$PROMPT_CONTENT" | grep -oE '\b[a-zA-Z0-9_/.-]+\.(js|ts|jsx|tsx|py|go|rs|java|yaml|json|md)\b' | sort | uniq || true)
107
-
108
- OUT_OF_SCOPE=""
109
- for file in $MENTIONED_FILES; do
110
- if [[ -f "$file" ]] && ! caws validate .caws/working-spec.yaml --scope-check "$file" 2>/dev/null | grep -q "in_scope"; then
111
- OUT_OF_SCOPE="$OUT_OF_SCOPE $file"
112
- fi
113
- done
114
-
115
- if [[ -n "$OUT_OF_SCOPE" ]]; then
116
- echo '{
117
- "userMessage": "⚠️ Prompt references files outside CAWS scope",
118
- "agentMessage": "Prompt mentions out-of-scope files: '"$OUT_OF_SCOPE"'",
119
- "suggestions": [
120
- "Check current scope definition: caws validate .caws/working-spec.yaml",
121
- "Update working spec scope: edit .caws/working-spec.yaml scope.in array",
122
- "For scope exceptions: caws waivers create --title=\"Scope expansion\" --reason=architectural_refactor --gates=scope_boundary",
123
- "Refocus prompt on in-scope files or request scope update approval",
124
- "Validate scope changes: caws validate .caws/working-spec.yaml"
125
- ]
126
- }'
127
- fi
128
- fi
129
- fi
130
- fi
@@ -1,38 +0,0 @@
1
- #!/bin/bash
2
- # Cursor Hook: Auto-formatting
3
- #
4
- # Purpose: Run formatters after file edits
5
- # Event: afterFileEdit
6
- #
7
- # @author @darianrosebrook
8
-
9
- set -euo pipefail
10
-
11
- # Read input from Cursor
12
- INPUT=$(cat)
13
-
14
- # Extract file path
15
- FILE_PATH=$(echo "$INPUT" | jq -r '.file_path // ""')
16
-
17
- # Only format source code files
18
- if [[ "$FILE_PATH" =~ \.(js|ts|jsx|tsx|json|md|yml|yaml)$ ]]; then
19
- # Try prettier if available
20
- if command -v prettier &> /dev/null; then
21
- prettier --write "$FILE_PATH" 2>/dev/null || true
22
- elif [ -f "node_modules/.bin/prettier" ]; then
23
- node_modules/.bin/prettier --write "$FILE_PATH" 2>/dev/null || true
24
- fi
25
-
26
- # Try eslint for JS/TS files
27
- if [[ "$FILE_PATH" =~ \.(js|ts|jsx|tsx)$ ]]; then
28
- if command -v eslint &> /dev/null; then
29
- eslint --fix "$FILE_PATH" 2>/dev/null || true
30
- elif [ -f "node_modules/.bin/eslint" ]; then
31
- node_modules/.bin/eslint --fix "$FILE_PATH" 2>/dev/null || true
32
- fi
33
- fi
34
- fi
35
-
36
- # Always allow - formatting is non-blocking
37
- exit 0
38
-