@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.
- package/README.md +125 -374
- package/dist/index.js +43 -756
- package/dist/shell/binding/resolve-binding.d.ts +4 -0
- package/dist/shell/binding/resolve-binding.d.ts.map +1 -0
- package/dist/shell/binding/resolve-binding.js +228 -0
- package/dist/shell/binding/resolve-binding.js.map +1 -0
- package/dist/shell/binding/types.d.ts +42 -0
- package/dist/shell/binding/types.d.ts.map +1 -0
- package/dist/shell/binding/types.js +21 -0
- package/dist/shell/binding/types.js.map +1 -0
- package/dist/shell/commands/claim.d.ts +14 -0
- package/dist/shell/commands/claim.d.ts.map +1 -0
- package/dist/shell/commands/claim.js +197 -0
- package/dist/shell/commands/claim.js.map +1 -0
- package/dist/shell/commands/doctor.d.ts +13 -0
- package/dist/shell/commands/doctor.d.ts.map +1 -0
- package/dist/shell/commands/doctor.js +97 -0
- package/dist/shell/commands/doctor.js.map +1 -0
- package/dist/shell/commands/evidence.d.ts +28 -0
- package/dist/shell/commands/evidence.d.ts.map +1 -0
- package/dist/shell/commands/evidence.js +166 -0
- package/dist/shell/commands/evidence.js.map +1 -0
- package/dist/shell/commands/gates.d.ts +19 -0
- package/dist/shell/commands/gates.d.ts.map +1 -0
- package/dist/shell/commands/gates.js +181 -0
- package/dist/shell/commands/gates.js.map +1 -0
- package/dist/shell/commands/init.d.ts +8 -0
- package/dist/shell/commands/init.d.ts.map +1 -0
- package/dist/shell/commands/init.js +64 -0
- package/dist/shell/commands/init.js.map +1 -0
- package/dist/shell/commands/scope.d.ts +11 -0
- package/dist/shell/commands/scope.d.ts.map +1 -0
- package/dist/shell/commands/scope.js +92 -0
- package/dist/shell/commands/scope.js.map +1 -0
- package/dist/shell/commands/status.d.ts +15 -0
- package/dist/shell/commands/status.d.ts.map +1 -0
- package/dist/shell/commands/status.js +106 -0
- package/dist/shell/commands/status.js.map +1 -0
- package/dist/shell/commands/waiver.d.ts +38 -0
- package/dist/shell/commands/waiver.d.ts.map +1 -0
- package/dist/shell/commands/waiver.js +240 -0
- package/dist/shell/commands/waiver.js.map +1 -0
- package/dist/shell/gates/disposition.d.ts +23 -0
- package/dist/shell/gates/disposition.d.ts.map +1 -0
- package/dist/shell/gates/disposition.js +87 -0
- package/dist/shell/gates/disposition.js.map +1 -0
- package/dist/shell/gates/gate-result-contract.d.ts +39 -0
- package/dist/shell/gates/gate-result-contract.d.ts.map +1 -0
- package/dist/shell/gates/gate-result-contract.js +150 -0
- package/dist/shell/gates/gate-result-contract.js.map +1 -0
- package/dist/shell/gates/quality-gates-adapter.d.ts +55 -0
- package/dist/shell/gates/quality-gates-adapter.d.ts.map +1 -0
- package/dist/shell/gates/quality-gates-adapter.js +161 -0
- package/dist/shell/gates/quality-gates-adapter.js.map +1 -0
- package/dist/shell/gates/waiver-filter.d.ts +58 -0
- package/dist/shell/gates/waiver-filter.d.ts.map +1 -0
- package/dist/shell/gates/waiver-filter.js +119 -0
- package/dist/shell/gates/waiver-filter.js.map +1 -0
- package/dist/shell/index.d.ts +50 -0
- package/dist/shell/index.d.ts.map +1 -0
- package/dist/shell/index.js +73 -0
- package/dist/shell/index.js.map +1 -0
- package/dist/shell/register.d.ts +11 -0
- package/dist/shell/register.d.ts.map +1 -0
- package/dist/shell/register.js +274 -0
- package/dist/shell/register.js.map +1 -0
- package/dist/shell/render/claim.d.ts +22 -0
- package/dist/shell/render/claim.d.ts.map +1 -0
- package/dist/shell/render/claim.js +75 -0
- package/dist/shell/render/claim.js.map +1 -0
- package/dist/shell/render/decision.d.ts +15 -0
- package/dist/shell/render/decision.d.ts.map +1 -0
- package/dist/shell/render/decision.js +66 -0
- package/dist/shell/render/decision.js.map +1 -0
- package/dist/shell/render/diagnostic.d.ts +19 -0
- package/dist/shell/render/diagnostic.d.ts.map +1 -0
- package/dist/shell/render/diagnostic.js +76 -0
- package/dist/shell/render/diagnostic.js.map +1 -0
- package/dist/shell/render/finding.d.ts +15 -0
- package/dist/shell/render/finding.d.ts.map +1 -0
- package/dist/shell/render/finding.js +57 -0
- package/dist/shell/render/finding.js.map +1 -0
- package/dist/shell/render/gates.d.ts +3 -0
- package/dist/shell/render/gates.d.ts.map +1 -0
- package/dist/shell/render/gates.js +56 -0
- package/dist/shell/render/gates.js.map +1 -0
- package/dist/shell/render/init.d.ts +11 -0
- package/dist/shell/render/init.d.ts.map +1 -0
- package/dist/shell/render/init.js +32 -0
- package/dist/shell/render/init.js.map +1 -0
- package/dist/shell/render/status.d.ts +26 -0
- package/dist/shell/render/status.d.ts.map +1 -0
- package/dist/shell/render/status.js +143 -0
- package/dist/shell/render/status.js.map +1 -0
- package/dist/shell/render/waiver.d.ts +21 -0
- package/dist/shell/render/waiver.d.ts.map +1 -0
- package/dist/shell/render/waiver.js +94 -0
- package/dist/shell/render/waiver.js.map +1 -0
- package/dist/shell/rules.d.ts +37 -0
- package/dist/shell/rules.d.ts.map +1 -0
- package/dist/shell/rules.js +51 -0
- package/dist/shell/rules.js.map +1 -0
- package/dist/shell/session/actor.d.ts +14 -0
- package/dist/shell/session/actor.d.ts.map +1 -0
- package/dist/shell/session/actor.js +34 -0
- package/dist/shell/session/actor.js.map +1 -0
- package/dist/shell/session/resolve-session.d.ts +5 -0
- package/dist/shell/session/resolve-session.d.ts.map +1 -0
- package/dist/shell/session/resolve-session.js +239 -0
- package/dist/shell/session/resolve-session.js.map +1 -0
- package/dist/shell/session/types.d.ts +56 -0
- package/dist/shell/session/types.d.ts.map +1 -0
- package/dist/shell/session/types.js +15 -0
- package/dist/shell/session/types.js.map +1 -0
- package/dist/store/agents-store.d.ts +3 -0
- package/dist/store/agents-store.d.ts.map +1 -0
- package/dist/store/agents-store.js +63 -0
- package/dist/store/agents-store.js.map +1 -0
- package/dist/store/apply-patch.d.ts +16 -0
- package/dist/store/apply-patch.d.ts.map +1 -0
- package/dist/store/apply-patch.js +191 -0
- package/dist/store/apply-patch.js.map +1 -0
- package/dist/store/atomic-write.d.ts +16 -0
- package/dist/store/atomic-write.d.ts.map +1 -0
- package/dist/store/atomic-write.js +132 -0
- package/dist/store/atomic-write.js.map +1 -0
- package/dist/store/doctor-snapshot.d.ts +20 -0
- package/dist/store/doctor-snapshot.d.ts.map +1 -0
- package/dist/store/doctor-snapshot.js +176 -0
- package/dist/store/doctor-snapshot.js.map +1 -0
- package/dist/store/events-store.d.ts +33 -0
- package/dist/store/events-store.d.ts.map +1 -0
- package/dist/store/events-store.js +297 -0
- package/dist/store/events-store.js.map +1 -0
- package/dist/store/index.d.ts +21 -0
- package/dist/store/index.d.ts.map +1 -0
- package/dist/store/index.js +47 -0
- package/dist/store/index.js.map +1 -0
- package/dist/store/init-store.d.ts +21 -0
- package/dist/store/init-store.d.ts.map +1 -0
- package/dist/store/init-store.js +295 -0
- package/dist/store/init-store.js.map +1 -0
- package/dist/store/json-store.d.ts +3 -0
- package/dist/store/json-store.d.ts.map +1 -0
- package/dist/store/json-store.js +65 -0
- package/dist/store/json-store.js.map +1 -0
- package/dist/store/policy-store.d.ts +3 -0
- package/dist/store/policy-store.d.ts.map +1 -0
- package/dist/store/policy-store.js +65 -0
- package/dist/store/policy-store.js.map +1 -0
- package/dist/store/repo-root.d.ts +46 -0
- package/dist/store/repo-root.d.ts.map +1 -0
- package/dist/store/repo-root.js +145 -0
- package/dist/store/repo-root.js.map +1 -0
- package/dist/store/rules.d.ts +53 -0
- package/dist/store/rules.d.ts.map +1 -0
- package/dist/store/rules.js +78 -0
- package/dist/store/rules.js.map +1 -0
- package/dist/store/specs-store.d.ts +3 -0
- package/dist/store/specs-store.d.ts.map +1 -0
- package/dist/store/specs-store.js +131 -0
- package/dist/store/specs-store.js.map +1 -0
- package/dist/store/types.d.ts +84 -0
- package/dist/store/types.d.ts.map +1 -0
- package/dist/store/types.js +14 -0
- package/dist/store/types.js.map +1 -0
- package/dist/store/waivers-store.d.ts +25 -0
- package/dist/store/waivers-store.d.ts.map +1 -0
- package/dist/store/waivers-store.js +232 -0
- package/dist/store/waivers-store.js.map +1 -0
- package/dist/store/worktrees-store.d.ts +3 -0
- package/dist/store/worktrees-store.d.ts.map +1 -0
- package/dist/store/worktrees-store.js +62 -0
- package/dist/store/worktrees-store.js.map +1 -0
- package/dist/store/yaml-store.d.ts +9 -0
- package/dist/store/yaml-store.d.ts.map +1 -0
- package/dist/store/yaml-store.js +121 -0
- package/dist/store/yaml-store.js.map +1 -0
- package/package.json +15 -13
- package/dist/budget-derivation.js +0 -751
- package/dist/cicd-optimizer.js +0 -504
- package/dist/commands/archive.js +0 -500
- package/dist/commands/burnup.js +0 -198
- package/dist/commands/diagnose.js +0 -525
- package/dist/commands/evaluate.js +0 -314
- package/dist/commands/gates.js +0 -149
- package/dist/commands/init.js +0 -857
- package/dist/commands/iterate.js +0 -417
- package/dist/commands/mode.js +0 -269
- package/dist/commands/parallel.js +0 -242
- package/dist/commands/plan.js +0 -438
- package/dist/commands/provenance.js +0 -1143
- package/dist/commands/quality-monitor.js +0 -284
- package/dist/commands/scope.js +0 -264
- package/dist/commands/session.js +0 -312
- package/dist/commands/sidecar.js +0 -74
- package/dist/commands/specs.js +0 -1448
- package/dist/commands/status.js +0 -1151
- package/dist/commands/templates.js +0 -237
- package/dist/commands/tool.js +0 -136
- package/dist/commands/tutorial.js +0 -480
- package/dist/commands/validate.js +0 -357
- package/dist/commands/verify-acs.js +0 -443
- package/dist/commands/waivers.js +0 -599
- package/dist/commands/workflow.js +0 -243
- package/dist/commands/worktree.js +0 -386
- package/dist/config/lite-scope.js +0 -158
- package/dist/config/modes.js +0 -347
- package/dist/constants/spec-types.js +0 -65
- package/dist/gates/budget-limit.js +0 -121
- package/dist/gates/feedback.js +0 -260
- package/dist/gates/format.js +0 -179
- package/dist/gates/god-object.js +0 -117
- package/dist/gates/pipeline.js +0 -167
- package/dist/gates/scope-boundary.js +0 -93
- package/dist/gates/spec-completeness.js +0 -109
- package/dist/gates/todo-detection.js +0 -205
- package/dist/generators/jest-config-generator.js +0 -242
- package/dist/generators/working-spec.js +0 -237
- package/dist/minimal-cli.js +0 -88
- package/dist/parallel/parallel-manager.js +0 -433
- package/dist/policy/PolicyManager.js +0 -465
- package/dist/scaffold/claude-hooks.js +0 -443
- package/dist/scaffold/cursor-hooks.js +0 -177
- package/dist/scaffold/git-hooks.js +0 -928
- package/dist/scaffold/index.js +0 -794
- package/dist/session/session-manager.js +0 -653
- package/dist/sidecars/index.js +0 -33
- package/dist/sidecars/listeners.js +0 -40
- package/dist/sidecars/provenance-summary.js +0 -238
- package/dist/sidecars/quality-gaps.js +0 -258
- package/dist/sidecars/schema.js +0 -149
- package/dist/sidecars/spec-drift.js +0 -151
- package/dist/sidecars/waiver-draft.js +0 -176
- package/dist/spec/SpecFileManager.js +0 -419
- package/dist/templates/.caws/schemas/policy.schema.json +0 -112
- package/dist/templates/.caws/schemas/scope.schema.json +0 -52
- package/dist/templates/.caws/schemas/waivers.schema.json +0 -106
- package/dist/templates/.caws/schemas/working-spec.schema.json +0 -340
- package/dist/templates/.caws/schemas/worktrees.schema.json +0 -38
- package/dist/templates/.caws/templates/working-spec.template.yml +0 -80
- package/dist/templates/.caws/tools/README.md +0 -18
- package/dist/templates/.caws/tools/scope-guard.js +0 -203
- package/dist/templates/.caws/tools-allow.json +0 -331
- package/dist/templates/.caws/waivers.yml +0 -19
- package/dist/templates/.claude/README.md +0 -190
- package/dist/templates/.claude/hooks/audit.sh +0 -121
- package/dist/templates/.claude/hooks/block-dangerous.sh +0 -203
- package/dist/templates/.claude/hooks/classify_command.py +0 -592
- package/dist/templates/.claude/hooks/doc-frontmatter-check.sh +0 -173
- package/dist/templates/.claude/hooks/lite-sprawl-check.sh +0 -145
- package/dist/templates/.claude/hooks/naming-check.sh +0 -100
- package/dist/templates/.claude/hooks/protected-paths.sh +0 -39
- package/dist/templates/.claude/hooks/quality-check.sh +0 -81
- package/dist/templates/.claude/hooks/scan-secrets.sh +0 -85
- package/dist/templates/.claude/hooks/scope-guard.sh +0 -381
- package/dist/templates/.claude/hooks/session-caws-status.sh +0 -117
- package/dist/templates/.claude/hooks/session-log.sh +0 -634
- package/dist/templates/.claude/hooks/simplification-guard.sh +0 -92
- package/dist/templates/.claude/hooks/stop-worktree-check.sh +0 -46
- package/dist/templates/.claude/hooks/test_classify_command.py +0 -370
- package/dist/templates/.claude/hooks/test_wrapper_smoke.sh +0 -96
- package/dist/templates/.claude/hooks/validate-spec.sh +0 -76
- package/dist/templates/.claude/hooks/worktree-guard.sh +0 -220
- package/dist/templates/.claude/hooks/worktree-write-guard.sh +0 -190
- package/dist/templates/.claude/rules/git-safety.md +0 -26
- package/dist/templates/.claude/rules/worktree-isolation.md +0 -83
- package/dist/templates/.claude/settings.json +0 -141
- package/dist/templates/.cursor/README.md +0 -299
- package/dist/templates/.cursor/hooks/audit.sh +0 -55
- package/dist/templates/.cursor/hooks/block-dangerous.sh +0 -84
- package/dist/templates/.cursor/hooks/caws-quality-check.sh +0 -52
- package/dist/templates/.cursor/hooks/caws-scope-guard.sh +0 -130
- package/dist/templates/.cursor/hooks/format.sh +0 -38
- package/dist/templates/.cursor/hooks/naming-check.sh +0 -64
- package/dist/templates/.cursor/hooks/scan-secrets.sh +0 -51
- package/dist/templates/.cursor/hooks/scope-guard.sh +0 -52
- package/dist/templates/.cursor/hooks/session-log.sh +0 -924
- package/dist/templates/.cursor/hooks/validate-spec.sh +0 -83
- package/dist/templates/.cursor/hooks.json +0 -76
- package/dist/templates/.cursor/rules/00-claims-verification.mdc +0 -144
- package/dist/templates/.cursor/rules/01-working-style.mdc +0 -50
- package/dist/templates/.cursor/rules/02-quality-gates.mdc +0 -368
- package/dist/templates/.cursor/rules/03-naming-and-refactor.mdc +0 -33
- package/dist/templates/.cursor/rules/04-logging-language-style.mdc +0 -23
- package/dist/templates/.cursor/rules/05-safe-defaults-guards.mdc +0 -23
- package/dist/templates/.cursor/rules/06-typescript-conventions.mdc +0 -36
- package/dist/templates/.cursor/rules/07-process-ops.mdc +0 -20
- package/dist/templates/.cursor/rules/08-solid-and-architecture.mdc +0 -16
- package/dist/templates/.cursor/rules/09-docstrings.mdc +0 -89
- package/dist/templates/.cursor/rules/10-documentation-quality-standards.mdc +0 -385
- package/dist/templates/.cursor/rules/11-scope-management-waivers.mdc +0 -381
- package/dist/templates/.cursor/rules/12-implementation-completeness.mdc +0 -516
- package/dist/templates/.cursor/rules/13-language-agnostic-standards.mdc +0 -578
- package/dist/templates/.cursor/rules/README.md +0 -148
- package/dist/templates/.github/copilot-instructions.md +0 -82
- package/dist/templates/.idea/runConfigurations/CAWS_Evaluate.xml +0 -5
- package/dist/templates/.idea/runConfigurations/CAWS_Validate.xml +0 -5
- package/dist/templates/.junie/guidelines.md +0 -73
- package/dist/templates/.vscode/launch.json +0 -17
- package/dist/templates/.vscode/settings.json +0 -95
- package/dist/templates/.windsurf/rules/caws-quality-standards.md +0 -54
- package/dist/templates/.windsurf/workflows/caws-guided-development.md +0 -92
- package/dist/templates/CLAUDE.md +0 -174
- package/dist/templates/COMMIT_CONVENTIONS.md +0 -86
- package/dist/templates/OIDC_SETUP.md +0 -300
- package/dist/templates/agents.md +0 -145
- package/dist/templates/codemod/README.md +0 -1
- package/dist/templates/codemod/test.js +0 -93
- package/dist/templates/docs/README.md +0 -151
- package/dist/templates/scripts/new_feature.sh +0 -80
- package/dist/templates/scripts/quality-gates/check-god-objects.js +0 -146
- package/dist/templates/scripts/quality-gates/run-quality-gates.js +0 -50
- package/dist/templates/scripts/v3/analysis/todo_analyzer.py +0 -1997
- package/dist/test-analysis.js +0 -786
- package/dist/tool-interface.js +0 -314
- package/dist/tool-loader.js +0 -303
- package/dist/tool-validator.js +0 -393
- package/dist/utils/agent-session.js +0 -202
- package/dist/utils/async-utils.js +0 -188
- package/dist/utils/command-wrapper.js +0 -200
- package/dist/utils/event-log.js +0 -584
- package/dist/utils/event-renderer.js +0 -521
- package/dist/utils/finalization.js +0 -230
- package/dist/utils/git-lock.js +0 -119
- package/dist/utils/gitignore-updater.js +0 -158
- package/dist/utils/ide-detection.js +0 -133
- package/dist/utils/lifecycle-events.js +0 -94
- package/dist/utils/project-analysis.js +0 -367
- package/dist/utils/promise-utils.js +0 -72
- package/dist/utils/quality-gates-errors.js +0 -520
- package/dist/utils/quality-gates-utils.js +0 -387
- package/dist/utils/schema-validator.js +0 -50
- package/dist/utils/spec-resolver.js +0 -711
- package/dist/utils/typescript-detector.js +0 -369
- package/dist/utils/working-state.js +0 -530
- package/dist/utils/yaml-validation.js +0 -156
- package/dist/validation/spec-validation.js +0 -921
- package/dist/waivers-manager.js +0 -732
- package/dist/worktree/worktree-manager.js +0 -1374
- package/templates/.caws/schemas/policy.schema.json +0 -112
- package/templates/.caws/schemas/scope.schema.json +0 -52
- package/templates/.caws/schemas/waivers.schema.json +0 -106
- package/templates/.caws/schemas/working-spec.schema.json +0 -340
- package/templates/.caws/schemas/worktrees.schema.json +0 -38
- package/templates/.caws/templates/working-spec.template.yml +0 -80
- package/templates/.caws/tools/README.md +0 -18
- package/templates/.caws/tools/scope-guard.js +0 -203
- package/templates/.caws/tools-allow.json +0 -331
- package/templates/.caws/waivers.yml +0 -19
- package/templates/.claude/README.md +0 -190
- package/templates/.claude/hooks/audit.sh +0 -121
- package/templates/.claude/hooks/block-dangerous.sh +0 -203
- package/templates/.claude/hooks/classify_command.py +0 -592
- package/templates/.claude/hooks/doc-frontmatter-check.sh +0 -173
- package/templates/.claude/hooks/lite-sprawl-check.sh +0 -145
- package/templates/.claude/hooks/naming-check.sh +0 -100
- package/templates/.claude/hooks/protected-paths.sh +0 -39
- package/templates/.claude/hooks/quality-check.sh +0 -81
- package/templates/.claude/hooks/scan-secrets.sh +0 -85
- package/templates/.claude/hooks/scope-guard.sh +0 -381
- package/templates/.claude/hooks/session-caws-status.sh +0 -117
- package/templates/.claude/hooks/session-log.sh +0 -634
- package/templates/.claude/hooks/simplification-guard.sh +0 -92
- package/templates/.claude/hooks/stop-worktree-check.sh +0 -46
- package/templates/.claude/hooks/test_classify_command.py +0 -370
- package/templates/.claude/hooks/test_wrapper_smoke.sh +0 -96
- package/templates/.claude/hooks/validate-spec.sh +0 -76
- package/templates/.claude/hooks/worktree-guard.sh +0 -220
- package/templates/.claude/hooks/worktree-write-guard.sh +0 -190
- package/templates/.claude/rules/git-safety.md +0 -26
- package/templates/.claude/rules/worktree-isolation.md +0 -83
- package/templates/.claude/settings.json +0 -141
- package/templates/.cursor/README.md +0 -299
- package/templates/.cursor/hooks/audit.sh +0 -55
- package/templates/.cursor/hooks/block-dangerous.sh +0 -84
- package/templates/.cursor/hooks/caws-quality-check.sh +0 -52
- package/templates/.cursor/hooks/caws-scope-guard.sh +0 -130
- package/templates/.cursor/hooks/format.sh +0 -38
- package/templates/.cursor/hooks/naming-check.sh +0 -64
- package/templates/.cursor/hooks/scan-secrets.sh +0 -51
- package/templates/.cursor/hooks/scope-guard.sh +0 -52
- package/templates/.cursor/hooks/session-log.sh +0 -924
- package/templates/.cursor/hooks/validate-spec.sh +0 -83
- package/templates/.cursor/hooks.json +0 -76
- package/templates/.cursor/rules/00-claims-verification.mdc +0 -144
- package/templates/.cursor/rules/01-working-style.mdc +0 -50
- package/templates/.cursor/rules/02-quality-gates.mdc +0 -368
- package/templates/.cursor/rules/03-naming-and-refactor.mdc +0 -33
- package/templates/.cursor/rules/04-logging-language-style.mdc +0 -23
- package/templates/.cursor/rules/05-safe-defaults-guards.mdc +0 -23
- package/templates/.cursor/rules/06-typescript-conventions.mdc +0 -36
- package/templates/.cursor/rules/07-process-ops.mdc +0 -20
- package/templates/.cursor/rules/08-solid-and-architecture.mdc +0 -16
- package/templates/.cursor/rules/09-docstrings.mdc +0 -89
- package/templates/.cursor/rules/10-documentation-quality-standards.mdc +0 -385
- package/templates/.cursor/rules/11-scope-management-waivers.mdc +0 -381
- package/templates/.cursor/rules/12-implementation-completeness.mdc +0 -516
- package/templates/.cursor/rules/13-language-agnostic-standards.mdc +0 -578
- package/templates/.cursor/rules/README.md +0 -148
- package/templates/.github/copilot-instructions.md +0 -82
- package/templates/.idea/runConfigurations/CAWS_Evaluate.xml +0 -5
- package/templates/.idea/runConfigurations/CAWS_Validate.xml +0 -5
- package/templates/.junie/guidelines.md +0 -73
- package/templates/.vscode/launch.json +0 -17
- package/templates/.vscode/settings.json +0 -95
- package/templates/.windsurf/rules/caws-quality-standards.md +0 -54
- package/templates/.windsurf/workflows/caws-guided-development.md +0 -92
- package/templates/CLAUDE.md +0 -174
- package/templates/COMMIT_CONVENTIONS.md +0 -86
- package/templates/OIDC_SETUP.md +0 -300
- package/templates/agents.md +0 -145
- package/templates/codemod/README.md +0 -1
- package/templates/codemod/test.js +0 -93
- package/templates/docs/README.md +0 -151
- package/templates/scripts/new_feature.sh +0 -80
- package/templates/scripts/quality-gates/check-god-objects.js +0 -146
- package/templates/scripts/quality-gates/run-quality-gates.js +0 -50
- package/templates/scripts/v3/analysis/todo_analyzer.py +0 -1997
|
@@ -1,300 +0,0 @@
|
|
|
1
|
-
# OIDC Trusted Publisher Setup
|
|
2
|
-
|
|
3
|
-
This guide helps you set up OIDC (OpenID Connect) trusted publisher for automated publishing to package registries.
|
|
4
|
-
|
|
5
|
-
## Overview
|
|
6
|
-
|
|
7
|
-
OIDC trusted publisher allows you to publish packages without storing long-lived tokens or passwords in your CI/CD environment. Instead, it uses short-lived tokens issued by the OIDC provider.
|
|
8
|
-
|
|
9
|
-
## Supported Registries
|
|
10
|
-
|
|
11
|
-
- **npm**: npm Registry
|
|
12
|
-
- **PyPI**: Python Package Index
|
|
13
|
-
- **Maven Central**: Java packages
|
|
14
|
-
- **NuGet**: .NET packages
|
|
15
|
-
|
|
16
|
-
## Setup Process
|
|
17
|
-
|
|
18
|
-
### 1. Configure OIDC Provider
|
|
19
|
-
|
|
20
|
-
Most CI/CD platforms (GitHub Actions, GitLab CI, etc.) provide built-in OIDC support.
|
|
21
|
-
|
|
22
|
-
**GitHub Actions Example:**
|
|
23
|
-
|
|
24
|
-
```yaml
|
|
25
|
-
# .github/workflows/publish.yml
|
|
26
|
-
name: Publish Package
|
|
27
|
-
|
|
28
|
-
on:
|
|
29
|
-
release:
|
|
30
|
-
types: [published]
|
|
31
|
-
|
|
32
|
-
jobs:
|
|
33
|
-
publish:
|
|
34
|
-
runs-on: ubuntu-latest
|
|
35
|
-
permissions:
|
|
36
|
-
contents: read
|
|
37
|
-
id-token: write
|
|
38
|
-
steps:
|
|
39
|
-
- uses: actions/checkout@v4
|
|
40
|
-
- name: Setup Node.js
|
|
41
|
-
uses: actions/setup-node@v4
|
|
42
|
-
with:
|
|
43
|
-
node-version: '20'
|
|
44
|
-
registry-url: 'https://registry.npmjs.org'
|
|
45
|
-
- name: Install dependencies
|
|
46
|
-
run: npm ci
|
|
47
|
-
- name: Build package
|
|
48
|
-
run: npm run build
|
|
49
|
-
- name: Publish to npm
|
|
50
|
-
run: npm publish
|
|
51
|
-
env:
|
|
52
|
-
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
### 2. Registry Configuration
|
|
56
|
-
|
|
57
|
-
#### npm Registry
|
|
58
|
-
|
|
59
|
-
1. **Create OIDC Integration**:
|
|
60
|
-
|
|
61
|
-
```bash
|
|
62
|
-
# Using npm CLI
|
|
63
|
-
npm profile enable-2fa auth-and-writes
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
2. **Configure Trusted Publisher**:
|
|
67
|
-
- Go to npmjs.com → Account Settings → Access Tokens
|
|
68
|
-
- Create "Automation" token
|
|
69
|
-
- Configure OIDC integration
|
|
70
|
-
|
|
71
|
-
3. **Repository Settings**:
|
|
72
|
-
```json
|
|
73
|
-
// package.json
|
|
74
|
-
{
|
|
75
|
-
"publishConfig": {
|
|
76
|
-
"registry": "https://registry.npmjs.org/"
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
#### PyPI (Python)
|
|
82
|
-
|
|
83
|
-
1. **Create API Token**:
|
|
84
|
-
|
|
85
|
-
```bash
|
|
86
|
-
# Using twine
|
|
87
|
-
twine upload --config-file ~/.pypirc dist/*
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
2. **OIDC Configuration**:
|
|
91
|
-
```yaml
|
|
92
|
-
# .github/workflows/publish.yml
|
|
93
|
-
- name: Publish to PyPI
|
|
94
|
-
uses: pypa/gh-action-pypi-publish@release/v1
|
|
95
|
-
with:
|
|
96
|
-
password: ${{ secrets.PYPI_API_TOKEN }}
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
### 3. Security Best Practices
|
|
100
|
-
|
|
101
|
-
#### Token Management
|
|
102
|
-
|
|
103
|
-
- ✅ **Use short-lived tokens** (1-6 hours)
|
|
104
|
-
- ✅ **Scope tokens to specific repositories**
|
|
105
|
-
- ✅ **Rotate tokens regularly**
|
|
106
|
-
- ❌ **Never store long-lived tokens in code**
|
|
107
|
-
- ❌ **Never commit tokens to version control**
|
|
108
|
-
|
|
109
|
-
#### Environment Variables
|
|
110
|
-
|
|
111
|
-
```bash
|
|
112
|
-
# Good: Short-lived, scoped token
|
|
113
|
-
NODE_AUTH_TOKEN=gho_shortlivedtoken123
|
|
114
|
-
|
|
115
|
-
# Bad: Long-lived, broad token
|
|
116
|
-
NPM_TOKEN=longlivedbroadtoken456
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
#### Repository Secrets
|
|
120
|
-
|
|
121
|
-
Store sensitive tokens in repository secrets:
|
|
122
|
-
|
|
123
|
-
**GitHub**: Settings → Secrets and variables → Actions
|
|
124
|
-
**GitLab**: Settings → CI/CD → Variables
|
|
125
|
-
**Azure DevOps**: Pipelines → Library → Variable groups
|
|
126
|
-
|
|
127
|
-
### 4. Testing the Setup
|
|
128
|
-
|
|
129
|
-
#### Local Testing
|
|
130
|
-
|
|
131
|
-
```bash
|
|
132
|
-
# Test with dry run
|
|
133
|
-
npm publish --dry-run
|
|
134
|
-
|
|
135
|
-
# Test with local registry
|
|
136
|
-
npm publish --registry http://localhost:4873
|
|
137
|
-
```
|
|
138
|
-
|
|
139
|
-
#### CI/CD Testing
|
|
140
|
-
|
|
141
|
-
```yaml
|
|
142
|
-
# Add to your workflow for testing
|
|
143
|
-
- name: Test publish (dry run)
|
|
144
|
-
run: npm publish --dry-run
|
|
145
|
-
env:
|
|
146
|
-
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
147
|
-
```
|
|
148
|
-
|
|
149
|
-
### 5. Troubleshooting
|
|
150
|
-
|
|
151
|
-
#### Common Issues
|
|
152
|
-
|
|
153
|
-
**Token Expired**:
|
|
154
|
-
|
|
155
|
-
```
|
|
156
|
-
npm ERR! code E401
|
|
157
|
-
npm ERR! Unable to authenticate, need: Basic
|
|
158
|
-
```
|
|
159
|
-
|
|
160
|
-
**Solution**: Check token expiration and refresh if needed.
|
|
161
|
-
|
|
162
|
-
**Insufficient Permissions**:
|
|
163
|
-
|
|
164
|
-
```
|
|
165
|
-
npm ERR! code E403
|
|
166
|
-
npm ERR! Forbidden
|
|
167
|
-
```
|
|
168
|
-
|
|
169
|
-
**Solution**: Verify token has publish permissions for the package.
|
|
170
|
-
|
|
171
|
-
**OIDC Provider Issues**:
|
|
172
|
-
|
|
173
|
-
```
|
|
174
|
-
Error: Failed to get OIDC token
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
**Solution**: Check OIDC provider configuration and permissions.
|
|
178
|
-
|
|
179
|
-
#### Debug Mode
|
|
180
|
-
|
|
181
|
-
Enable debug logging:
|
|
182
|
-
|
|
183
|
-
```bash
|
|
184
|
-
# npm
|
|
185
|
-
npm config set loglevel verbose
|
|
186
|
-
|
|
187
|
-
# Python
|
|
188
|
-
export TWINE_VERBOSE=1
|
|
189
|
-
|
|
190
|
-
# Maven
|
|
191
|
-
mvn deploy -X
|
|
192
|
-
```
|
|
193
|
-
|
|
194
|
-
### 6. Migration from Legacy Tokens
|
|
195
|
-
|
|
196
|
-
If you're migrating from username/password or long-lived tokens:
|
|
197
|
-
|
|
198
|
-
1. **Audit existing tokens**:
|
|
199
|
-
|
|
200
|
-
```bash
|
|
201
|
-
# npm
|
|
202
|
-
npm profile get
|
|
203
|
-
|
|
204
|
-
# List all tokens
|
|
205
|
-
npm token list
|
|
206
|
-
```
|
|
207
|
-
|
|
208
|
-
2. **Revoke old tokens**:
|
|
209
|
-
|
|
210
|
-
```bash
|
|
211
|
-
npm token delete <token-id>
|
|
212
|
-
```
|
|
213
|
-
|
|
214
|
-
3. **Update CI/CD workflows**:
|
|
215
|
-
- Replace `NPM_TOKEN` with `NODE_AUTH_TOKEN`
|
|
216
|
-
- Add OIDC permissions
|
|
217
|
-
- Test in staging environment
|
|
218
|
-
|
|
219
|
-
### 7. Monitoring and Alerts
|
|
220
|
-
|
|
221
|
-
Set up monitoring for:
|
|
222
|
-
|
|
223
|
-
- **Publish failures**: Alert on failed deployments
|
|
224
|
-
- **Token expiration**: Proactive token renewal
|
|
225
|
-
- **Security events**: Unusual publish patterns
|
|
226
|
-
- **Registry status**: External service health
|
|
227
|
-
|
|
228
|
-
#### Example Monitoring
|
|
229
|
-
|
|
230
|
-
```yaml
|
|
231
|
-
# .github/workflows/monitor.yml
|
|
232
|
-
name: Monitor Publishing
|
|
233
|
-
|
|
234
|
-
on:
|
|
235
|
-
workflow_run:
|
|
236
|
-
workflows: ['Publish Package']
|
|
237
|
-
types: [completed]
|
|
238
|
-
|
|
239
|
-
jobs:
|
|
240
|
-
monitor:
|
|
241
|
-
runs-on: ubuntu-latest
|
|
242
|
-
steps:
|
|
243
|
-
- name: Check publish status
|
|
244
|
-
if: ${{ github.event.workflow_run.conclusion == 'failure' }}
|
|
245
|
-
run: |
|
|
246
|
-
echo "Publish failed! Check logs."
|
|
247
|
-
# Send alert to Slack/Teams/etc.
|
|
248
|
-
```
|
|
249
|
-
|
|
250
|
-
## CAWS Integration
|
|
251
|
-
|
|
252
|
-
For CAWS projects, OIDC setup integrates with:
|
|
253
|
-
|
|
254
|
-
- **Provenance tracking**: Automatic attestation of published packages
|
|
255
|
-
- **Security scanning**: Validation of published artifacts
|
|
256
|
-
- **Quality gates**: Ensure packages meet standards before publish
|
|
257
|
-
|
|
258
|
-
### CAWS-Specific Configuration
|
|
259
|
-
|
|
260
|
-
```yaml
|
|
261
|
-
# .caws/working-spec.yaml
|
|
262
|
-
non_functional:
|
|
263
|
-
security:
|
|
264
|
-
- 'oidc-authentication'
|
|
265
|
-
- 'token-rotation'
|
|
266
|
-
- 'publish-attestation'
|
|
267
|
-
```
|
|
268
|
-
|
|
269
|
-
### Automated Provenance
|
|
270
|
-
|
|
271
|
-
CAWS automatically generates provenance information:
|
|
272
|
-
|
|
273
|
-
```bash
|
|
274
|
-
# Generate SBOM and attestation
|
|
275
|
-
caws attest --format=slsa
|
|
276
|
-
|
|
277
|
-
# Validate before publish
|
|
278
|
-
caws validate --security-scan
|
|
279
|
-
```
|
|
280
|
-
|
|
281
|
-
## Resources
|
|
282
|
-
|
|
283
|
-
- [npm OIDC Documentation](https://docs.npmjs.com/about-access-tokens)
|
|
284
|
-
- [GitHub Actions OIDC](https://docs.github.com/en/actions/deployment/security/hardening-your-deployments/about-security-hardening-with-openid-connect)
|
|
285
|
-
- [PyPI Trusted Publishing](https://docs.pypi.org/trusted-publishing/)
|
|
286
|
-
- [OIDC Specification](https://openid.net/connect/)
|
|
287
|
-
|
|
288
|
-
## Support
|
|
289
|
-
|
|
290
|
-
For issues with OIDC setup:
|
|
291
|
-
|
|
292
|
-
1. Check the troubleshooting section above
|
|
293
|
-
2. Review registry-specific documentation
|
|
294
|
-
3. Open an issue in the CAWS repository
|
|
295
|
-
4. Contact your organization's security team
|
|
296
|
-
|
|
297
|
-
---
|
|
298
|
-
|
|
299
|
-
**Note**: This guide provides general OIDC setup instructions. Always follow your organization's specific security policies and procedures.
|
|
300
|
-
|
package/dist/templates/agents.md
DELETED
|
@@ -1,145 +0,0 @@
|
|
|
1
|
-
# AGENTS.md
|
|
2
|
-
|
|
3
|
-
This project uses [CAWS](https://github.com/paths-design/caws) (Coding Agent Working Standard) for quality-assured AI-assisted development.
|
|
4
|
-
|
|
5
|
-
## Build & Test
|
|
6
|
-
|
|
7
|
-
```bash
|
|
8
|
-
npm install # Install dependencies
|
|
9
|
-
npm test # Run tests
|
|
10
|
-
npm run lint # Lint code
|
|
11
|
-
npm run typecheck # Type check (if TypeScript)
|
|
12
|
-
caws validate # Validate the current CAWS spec
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
## Project Structure
|
|
16
|
-
|
|
17
|
-
```
|
|
18
|
-
.caws/
|
|
19
|
-
working-spec.yaml # Compatibility mirror for legacy paths
|
|
20
|
-
specs/ # Canonical feature specs
|
|
21
|
-
policy.yaml # Quality policy overrides (optional)
|
|
22
|
-
waivers.yml # Active waivers (optional)
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
## CAWS Workflow
|
|
26
|
-
|
|
27
|
-
1. **Read the canonical spec**: Use `.caws/specs/<spec-id>.yaml` when feature specs exist
|
|
28
|
-
2. **Validate**: Run `caws validate --spec-id <spec-id>` for feature work
|
|
29
|
-
3. **Plan**: Run `caws iterate` for implementation guidance
|
|
30
|
-
4. **Implement**: Write tests first, then implementation. Stay within scope boundaries.
|
|
31
|
-
5. **Verify**: Run `caws evaluate` to check quality compliance
|
|
32
|
-
6. **Commit**: Use conventional commits (`feat:`, `fix:`, `refactor:`, `docs:`, `chore:`)
|
|
33
|
-
|
|
34
|
-
For a new feature in a multi-agent project:
|
|
35
|
-
|
|
36
|
-
```bash
|
|
37
|
-
caws specs create my-feature --type feature --title "My Feature"
|
|
38
|
-
caws validate --spec-id my-feature
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
## Scope and Worktree Binding
|
|
42
|
-
|
|
43
|
-
The scope guard enforces `scope.in` and `scope.out` from your spec. How it enforces depends on binding:
|
|
44
|
-
|
|
45
|
-
- **Authoritative mode** (worktree bound to a spec): Only your spec's scope is checked. Other agents' specs cannot block you.
|
|
46
|
-
- **Union mode** (no binding): ALL active specs are checked. Any `scope.out` from any spec can block you.
|
|
47
|
-
|
|
48
|
-
```bash
|
|
49
|
-
# See your effective scope and binding health
|
|
50
|
-
caws scope show
|
|
51
|
-
|
|
52
|
-
# Fix a broken binding
|
|
53
|
-
caws worktree bind <spec-id>
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
**Recovery** (when blocked unexpectedly):
|
|
57
|
-
1. Run `caws scope show` to check mode and binding health
|
|
58
|
-
2. If union mode: `caws worktree bind <spec-id>`
|
|
59
|
-
3. If authoritative but blocked: update your spec's `scope.in`
|
|
60
|
-
4. Do NOT edit another spec's `scope.out` to unblock yourself
|
|
61
|
-
|
|
62
|
-
## Key Rules
|
|
63
|
-
|
|
64
|
-
1. **Stay in scope** -- only edit files listed in `scope.in`, never touch `scope.out`
|
|
65
|
-
2. **Respect change budgets** -- stay within `max_files` and `max_loc` limits
|
|
66
|
-
3. **No shadow files** -- edit in place, never create `*-enhanced.*`, `*-new.*`, `*-v2.*`, `*-final.*` copies
|
|
67
|
-
4. **Tests first** -- write failing tests before implementation
|
|
68
|
-
5. **Deterministic code** -- inject time, random, and UUID generators for testability
|
|
69
|
-
6. **No fake implementations** -- no placeholder stubs, no `TODO` in committed code, no in-memory arrays pretending to be persistence, no hardcoded mock responses
|
|
70
|
-
7. **Prove claims** -- never assert "production-ready", "complete", or "battle-tested" without passing all quality gates. Provide evidence (test results, coverage reports), not assertions.
|
|
71
|
-
8. **No marketing language in docs** -- avoid "revolutionary", "cutting-edge", "state-of-the-art", "enterprise-grade" in documentation and comments
|
|
72
|
-
9. **Ask first for risky changes** -- changes touching >10 files, >300 LOC, crossing package boundaries, or affecting security/infrastructure require discussion before implementation
|
|
73
|
-
|
|
74
|
-
## Quality Gates
|
|
75
|
-
|
|
76
|
-
Requirements are tiered based on the `risk_tier` in the active spec:
|
|
77
|
-
|
|
78
|
-
| Gate | T1 (Critical) | T2 (Standard) | T3 (Low Risk) |
|
|
79
|
-
|------|---------------|----------------|----------------|
|
|
80
|
-
| Test coverage | 90%+ | 80%+ | 70%+ |
|
|
81
|
-
| Mutation score | 70%+ | 50%+ | 30%+ |
|
|
82
|
-
| Contracts | Required | Required | Optional |
|
|
83
|
-
| Manual review | Required | Optional | Optional |
|
|
84
|
-
|
|
85
|
-
## Code Style
|
|
86
|
-
|
|
87
|
-
- Prefer `const` over `let`
|
|
88
|
-
- Use guard clauses and early returns over deep nesting
|
|
89
|
-
- Single responsibility: one reason to change per module
|
|
90
|
-
- Depend on abstractions, not concretions
|
|
91
|
-
- Extension points over editing internals (open/closed principle)
|
|
92
|
-
- Max cyclomatic complexity per function: 10
|
|
93
|
-
- Max nesting depth: 4
|
|
94
|
-
- Max function length: 50 lines
|
|
95
|
-
- Max file length: 1000 lines
|
|
96
|
-
- Max parameters: 5
|
|
97
|
-
- No emojis in production code or logs
|
|
98
|
-
- Check if a server/process is already running before starting another
|
|
99
|
-
|
|
100
|
-
### Naming
|
|
101
|
-
|
|
102
|
-
Forbidden file name modifiers: `enhanced`, `unified`, `better`, `new`, `next`, `final`, `copy`, `revamp`, `improved`. Use in-place edits with merge-then-delete strategy for refactors.
|
|
103
|
-
|
|
104
|
-
## Modes
|
|
105
|
-
|
|
106
|
-
| Mode | Contracts | New Files | Key Artifacts |
|
|
107
|
-
|------|-----------|-----------|---------------|
|
|
108
|
-
| **feature** | Required first | Allowed in scope.in | Migration plan, feature flag, perf budget |
|
|
109
|
-
| **refactor** | Must not change | Discouraged | Codemod script + semantic diff |
|
|
110
|
-
| **fix** | Unchanged | Discouraged | Red test -> green; root cause note |
|
|
111
|
-
| **doc** | N/A | Docs only | Updated README/usage snippets |
|
|
112
|
-
| **chore** | N/A | Build/tools only | Version updates, dependency changes |
|
|
113
|
-
|
|
114
|
-
## Waivers
|
|
115
|
-
|
|
116
|
-
If you need to bypass a quality gate, create a waiver with justification:
|
|
117
|
-
|
|
118
|
-
```bash
|
|
119
|
-
caws waivers create --reason emergency_hotfix --gates coverage_threshold
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
Valid reasons: `emergency_hotfix`, `legacy_integration`, `experimental_feature`, `performance_critical`, `infrastructure_limitation`
|
|
123
|
-
|
|
124
|
-
## Pre-Submit Checklist
|
|
125
|
-
|
|
126
|
-
- [ ] Canonical spec exists and validates (`caws validate --spec-id <spec-id>` when applicable)
|
|
127
|
-
- [ ] All tests pass (`npm test`)
|
|
128
|
-
- [ ] Coverage meets tier requirements
|
|
129
|
-
- [ ] Lints pass (`npm run lint`)
|
|
130
|
-
- [ ] Types check (`npm run typecheck`)
|
|
131
|
-
- [ ] No scope violations
|
|
132
|
-
- [ ] Change budget not exceeded (`caws burnup --spec-id <spec-id>` shows budget consumption)
|
|
133
|
-
- [ ] Acceptance criteria proven (`caws verify-acs --spec-id <spec-id>` checks evidence exists)
|
|
134
|
-
- [ ] Conventional commit message
|
|
135
|
-
|
|
136
|
-
### Optional: Self-Diagnosis with Sidecars
|
|
137
|
-
|
|
138
|
-
If a gate blocks you, use sidecar commands to understand why before retrying:
|
|
139
|
-
|
|
140
|
-
```bash
|
|
141
|
-
caws sidecar gaps # What's missing? Which gates are failing and why?
|
|
142
|
-
caws sidecar drift # Has implementation drifted from the spec intent?
|
|
143
|
-
caws sidecar waiver-draft # Generate a pre-filled waiver if the gap is acceptable
|
|
144
|
-
caws sidecar provenance # Summarize work history for merge readiness
|
|
145
|
-
```
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
# Codemod Scripts
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Template Codemod for CAWS Framework
|
|
5
|
-
* Automated code transformations for refactoring
|
|
6
|
-
* @author CAWS Framework
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
const tsMorph = require('ts-morph');
|
|
10
|
-
|
|
11
|
-
function applyCodemod(dryRun = true) {
|
|
12
|
-
console.log('🔧 Applying codemod transformations...');
|
|
13
|
-
|
|
14
|
-
const project = new tsMorph.Project();
|
|
15
|
-
|
|
16
|
-
// Load all TypeScript source files
|
|
17
|
-
const sourceFiles = project.addSourceFilesAtPaths('src/**/*.ts');
|
|
18
|
-
|
|
19
|
-
if (sourceFiles.length === 0) {
|
|
20
|
-
console.log('⚠️ No TypeScript source files found in src/ directory');
|
|
21
|
-
return { filesProcessed: 0, changesApplied: 0 };
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
console.log(`📁 Processing ${sourceFiles.length} source files`);
|
|
25
|
-
let totalChanges = 0;
|
|
26
|
-
|
|
27
|
-
for (const sourceFile of sourceFiles) {
|
|
28
|
-
const filePath = sourceFile.getFilePath();
|
|
29
|
-
console.log(`Processing: ${filePath}`);
|
|
30
|
-
|
|
31
|
-
let fileChanges = 0;
|
|
32
|
-
|
|
33
|
-
// Example transformations - customize these for your specific needs:
|
|
34
|
-
|
|
35
|
-
// 1. Add JSDoc to exported functions without documentation
|
|
36
|
-
const exportedFunctions = sourceFile
|
|
37
|
-
.getFunctions()
|
|
38
|
-
.filter((func) => func.isExported && !func.getJsDocs().length);
|
|
39
|
-
|
|
40
|
-
for (const func of exportedFunctions) {
|
|
41
|
-
func.addJsDoc({
|
|
42
|
-
description: `Handles ${func.getName()} operations`,
|
|
43
|
-
tags: [
|
|
44
|
-
{ tagName: 'param', text: 'options - Configuration options' },
|
|
45
|
-
{ tagName: 'returns', text: 'Result of the operation' },
|
|
46
|
-
],
|
|
47
|
-
});
|
|
48
|
-
fileChanges++;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
// 2. Add type annotations to untyped parameters (example)
|
|
52
|
-
// const untypedParams = sourceFile.getDescendantsOfKind(tsMorph.SyntaxKind.Parameter)
|
|
53
|
-
// .filter(param => !param.getTypeNode());
|
|
54
|
-
// Add your transformation logic here...
|
|
55
|
-
|
|
56
|
-
if (fileChanges > 0) {
|
|
57
|
-
console.log(` ✅ Applied ${fileChanges} transformations`);
|
|
58
|
-
totalChanges += fileChanges;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
console.log(`📊 Codemod complete: ${totalChanges} total transformations`);
|
|
63
|
-
|
|
64
|
-
if (!dryRun) {
|
|
65
|
-
console.log('💾 Saving changes...');
|
|
66
|
-
project.saveSync();
|
|
67
|
-
console.log('✅ All changes saved successfully');
|
|
68
|
-
} else {
|
|
69
|
-
console.log('🔍 Dry run - no files were modified');
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
return {
|
|
73
|
-
filesProcessed: sourceFiles.length,
|
|
74
|
-
changesApplied: totalChanges,
|
|
75
|
-
};
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
// CLI interface
|
|
79
|
-
if (require.main === module) {
|
|
80
|
-
const args = process.argv.slice(2);
|
|
81
|
-
const dryRun = !args.includes('--apply');
|
|
82
|
-
|
|
83
|
-
try {
|
|
84
|
-
const result = applyCodemod(dryRun);
|
|
85
|
-
console.log('✅ Codemod execution completed');
|
|
86
|
-
process.exit(0);
|
|
87
|
-
} catch (error) {
|
|
88
|
-
console.error('❌ Codemod execution failed:', error.message);
|
|
89
|
-
process.exit(1);
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
module.exports = { applyCodemod };
|
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
# CAWS Project Documentation
|
|
2
|
-
|
|
3
|
-
## Overview
|
|
4
|
-
This project is built with the **Coding Agent Workflow System (CAWS)** - an engineering-grade framework that ensures quality, reliability, and maintainability in AI-assisted development.
|
|
5
|
-
|
|
6
|
-
## Key Features
|
|
7
|
-
- **Quality Gates**: Automated validation of scope, budget, and standards
|
|
8
|
-
- **Comprehensive Testing**: Unit, contract, integration, and mutation testing
|
|
9
|
-
- **Observability**: Structured logging, metrics, and tracing
|
|
10
|
-
- **Rollback Ready**: Feature flags and migration support
|
|
11
|
-
- **Provenance Tracking**: SBOM and SLSA attestation generation
|
|
12
|
-
|
|
13
|
-
## Getting Started
|
|
14
|
-
|
|
15
|
-
### 1. Project Setup
|
|
16
|
-
The project is already scaffolded with CAWS. Review and customize:
|
|
17
|
-
- `.caws/specs/<spec-id>.yaml` - Canonical feature specification and requirements
|
|
18
|
-
- `.caws/working-spec.yaml` - Compatibility mirror for legacy paths
|
|
19
|
-
- `.caws/policy.yaml` - Risk tier definitions
|
|
20
|
-
- `.github/workflows/caws.yml` - CI/CD quality gates
|
|
21
|
-
|
|
22
|
-
### 2. Development Workflow
|
|
23
|
-
1. **Plan**: Update the active feature spec with requirements and scope
|
|
24
|
-
2. **Implement**: Follow agent conduct rules and mode constraints
|
|
25
|
-
3. **Verify**: Run tests and quality gates locally
|
|
26
|
-
4. **Document**: Update documentation and generate provenance
|
|
27
|
-
|
|
28
|
-
### 3. Quality Assurance
|
|
29
|
-
- Run `npm run test` for all tests
|
|
30
|
-
- Check trust score with CAWS tools
|
|
31
|
-
- Validate against working specification
|
|
32
|
-
- Ensure rollback capabilities
|
|
33
|
-
|
|
34
|
-
## Architecture
|
|
35
|
-
|
|
36
|
-
### Directory Structure
|
|
37
|
-
```
|
|
38
|
-
src/ # Source code
|
|
39
|
-
├── core/ # Core business logic
|
|
40
|
-
├── api/ # API endpoints
|
|
41
|
-
├── models/ # Data models
|
|
42
|
-
└── utils/ # Utilities
|
|
43
|
-
|
|
44
|
-
tests/ # Test suites
|
|
45
|
-
├── unit/ # Unit tests
|
|
46
|
-
├── contract/ # Contract tests
|
|
47
|
-
├── integration/ # Integration tests
|
|
48
|
-
└── e2e/ # End-to-end tests
|
|
49
|
-
|
|
50
|
-
apps/tools/caws/ # CAWS utilities
|
|
51
|
-
└── prompt-lint.js # Prompt validation
|
|
52
|
-
└── attest.js # SBOM/attestation generation
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
### Key Patterns
|
|
56
|
-
- **Dependency Injection**: For testability and determinism
|
|
57
|
-
- **Interface Segregation**: Clean boundaries and contracts
|
|
58
|
-
- **Observability**: Structured logging and metrics
|
|
59
|
-
- **Property Testing**: Edge cases and invariants
|
|
60
|
-
|
|
61
|
-
## Development Guidelines
|
|
62
|
-
|
|
63
|
-
### Agent Conduct Rules
|
|
64
|
-
1. **Spec Adherence**: Stay within declared scope and mode
|
|
65
|
-
2. **Determinism**: Inject time, UUID, and random dependencies
|
|
66
|
-
3. **Comprehensive Testing**: Unit + property + integration tests
|
|
67
|
-
4. **Observability**: Log, metric, and trace key operations
|
|
68
|
-
5. **Rollback Ready**: Feature flags and migration support
|
|
69
|
-
|
|
70
|
-
### Code Quality
|
|
71
|
-
- **Type Safety**: Full TypeScript coverage
|
|
72
|
-
- **Test Coverage**: 80%+ branch coverage, 50%+ mutation score
|
|
73
|
-
- **Performance**: API p95 < 250ms, accessibility compliance
|
|
74
|
-
- **Security**: Input validation, rate limiting, secret scanning
|
|
75
|
-
|
|
76
|
-
## Deployment
|
|
77
|
-
|
|
78
|
-
### CI/CD Pipeline
|
|
79
|
-
The project includes automated quality gates:
|
|
80
|
-
- Static analysis and security scanning
|
|
81
|
-
- Unit and integration testing
|
|
82
|
-
- Performance and accessibility validation
|
|
83
|
-
- Provenance and attestation generation
|
|
84
|
-
|
|
85
|
-
### Environment Setup
|
|
86
|
-
1. Configure environment variables
|
|
87
|
-
2. Set up monitoring and alerting
|
|
88
|
-
3. Establish rollback procedures
|
|
89
|
-
4. Document operational runbooks
|
|
90
|
-
|
|
91
|
-
## Monitoring & Observability
|
|
92
|
-
|
|
93
|
-
### Metrics
|
|
94
|
-
- Request latency and throughput
|
|
95
|
-
- Error rates and types
|
|
96
|
-
- Resource utilization
|
|
97
|
-
- Business metrics
|
|
98
|
-
|
|
99
|
-
### Logging
|
|
100
|
-
- Structured logs with correlation IDs
|
|
101
|
-
- Error tracking and alerting
|
|
102
|
-
- Performance monitoring
|
|
103
|
-
- Security event logging
|
|
104
|
-
|
|
105
|
-
### Tracing
|
|
106
|
-
- Distributed request tracing
|
|
107
|
-
- Performance profiling
|
|
108
|
-
- Dependency analysis
|
|
109
|
-
- Root cause identification
|
|
110
|
-
|
|
111
|
-
## Troubleshooting
|
|
112
|
-
|
|
113
|
-
### Common Issues
|
|
114
|
-
1. **Trust Score Low**: Check test coverage and quality gates
|
|
115
|
-
2. **Scope Violations**: Ensure changes align with the active spec
|
|
116
|
-
3. **Budget Exceeded**: Review change size and complexity
|
|
117
|
-
4. **Flaky Tests**: Use property testing and proper mocking
|
|
118
|
-
|
|
119
|
-
### Support
|
|
120
|
-
- Check `agents.md` for comprehensive documentation
|
|
121
|
-
- Review CI/CD logs for quality gate failures
|
|
122
|
-
- Use CAWS tools for validation and debugging
|
|
123
|
-
- Follow agent conduct rules for collaboration
|
|
124
|
-
|
|
125
|
-
## Contributing
|
|
126
|
-
|
|
127
|
-
### Development Process
|
|
128
|
-
1. Update the active feature specification
|
|
129
|
-
2. Create comprehensive tests
|
|
130
|
-
3. Implement with quality gates
|
|
131
|
-
4. Generate provenance artifacts
|
|
132
|
-
5. Document changes thoroughly
|
|
133
|
-
|
|
134
|
-
### Code Review
|
|
135
|
-
- Review against the active feature spec
|
|
136
|
-
- Check trust score and quality gates
|
|
137
|
-
- Validate observability and rollback
|
|
138
|
-
- Ensure documentation completeness
|
|
139
|
-
|
|
140
|
-
## Resources
|
|
141
|
-
|
|
142
|
-
- **[CAWS Framework](agents.md)**: Complete system documentation
|
|
143
|
-
- **[Canonical Specs](.caws/specs/)**: Project requirements
|
|
144
|
-
- **[Quality Gates](.github/workflows/caws.yml)**: CI/CD pipeline
|
|
145
|
-
- **[Tools](apps/tools/caws/)**: Development utilities
|
|
146
|
-
|
|
147
|
-
---
|
|
148
|
-
|
|
149
|
-
**Maintainer**: @darianrosebrook
|
|
150
|
-
**Framework**: CAWS v1.0
|
|
151
|
-
**Updated**: $(date)
|