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