@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
package/dist/index.js
CHANGED
|
@@ -19,759 +19,55 @@ if (
|
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
// Import configuration and utilities
|
|
22
|
-
const {
|
|
23
|
-
CLI_VERSION,
|
|
24
|
-
initializeGlobalSetup,
|
|
25
|
-
loadProvenanceTools,
|
|
26
|
-
initializeLanguageSupport,
|
|
27
|
-
} = require('./config');
|
|
22
|
+
const { CLI_VERSION } = require('./config');
|
|
28
23
|
|
|
29
24
|
// Import error handling
|
|
30
25
|
const { handleCliError, findSimilarCommand } = require('./error-handler');
|
|
31
26
|
|
|
32
|
-
//
|
|
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('conflicts')
|
|
238
|
-
.description('Check for scope conflicts between specs')
|
|
239
|
-
.action(() => specsCommand('conflicts', {}));
|
|
240
|
-
|
|
241
|
-
specsCmd
|
|
242
|
-
.command('migrate')
|
|
243
|
-
.description('Migrate from legacy working-spec.yaml to feature-specific specs')
|
|
244
|
-
.option('-i, --interactive', 'Interactive feature selection', false)
|
|
245
|
-
.option('-f, --features <features>', 'Comma-separated list of features to migrate', (value) =>
|
|
246
|
-
value.split(',')
|
|
247
|
-
)
|
|
248
|
-
.action((options) => specsCommand('migrate', options));
|
|
249
|
-
|
|
250
|
-
specsCmd
|
|
251
|
-
.command('types')
|
|
252
|
-
.description('Show available spec types')
|
|
253
|
-
.action(() => specsCommand('types', {}));
|
|
254
|
-
|
|
255
|
-
// Sidecar command group
|
|
256
|
-
const sidecarCmd = program.command('sidecar').description('Advisory analysis tools (drift, gaps, waivers, provenance)');
|
|
257
|
-
|
|
258
|
-
sidecarCmd
|
|
259
|
-
.command('drift')
|
|
260
|
-
.description('Analyze spec drift vs implementation evidence')
|
|
261
|
-
.option('--spec-id <id>', 'Target spec ID')
|
|
262
|
-
.option('--json', 'Output as JSON', false)
|
|
263
|
-
.action((options) => sidecarCommand('drift', options));
|
|
264
|
-
|
|
265
|
-
sidecarCmd
|
|
266
|
-
.command('gaps')
|
|
267
|
-
.description('Diagnose quality gaps preventing phase advancement')
|
|
268
|
-
.option('--spec-id <id>', 'Target spec ID')
|
|
269
|
-
.option('--json', 'Output as JSON', false)
|
|
270
|
-
.action((options) => sidecarCommand('gaps', options));
|
|
271
|
-
|
|
272
|
-
sidecarCmd
|
|
273
|
-
.command('waiver-draft')
|
|
274
|
-
.description('Generate pre-filled waiver templates from gate failures')
|
|
275
|
-
.option('--spec-id <id>', 'Target spec ID')
|
|
276
|
-
.option('--gate <gate>', 'Specific gate to draft waiver for')
|
|
277
|
-
.option('--json', 'Output as JSON', false)
|
|
278
|
-
.action((options) => sidecarCommand('waiver-draft', options));
|
|
279
|
-
|
|
280
|
-
sidecarCmd
|
|
281
|
-
.command('provenance')
|
|
282
|
-
.description('Summarize work provenance for merge readiness')
|
|
283
|
-
.option('--spec-id <id>', 'Target spec ID')
|
|
284
|
-
.option('--json', 'Output as JSON', false)
|
|
285
|
-
.action((options) => sidecarCommand('provenance', options));
|
|
286
|
-
|
|
287
|
-
// Mode command group
|
|
288
|
-
const modeCmd = program.command('mode').description('Manage CAWS complexity tiers');
|
|
289
|
-
|
|
290
|
-
// Mode subcommands
|
|
291
|
-
modeCmd
|
|
292
|
-
.command('current')
|
|
293
|
-
.description('Show current CAWS mode')
|
|
294
|
-
.action(() => modeCommand('current', {}));
|
|
295
|
-
|
|
296
|
-
modeCmd
|
|
297
|
-
.command('set <mode>')
|
|
298
|
-
.description('Set CAWS complexity tier')
|
|
299
|
-
.action((mode) => modeCommand('set', { mode }));
|
|
300
|
-
|
|
301
|
-
modeCmd
|
|
302
|
-
.command('compare')
|
|
303
|
-
.description('Compare all available tiers')
|
|
304
|
-
.action(() => modeCommand('compare', {}));
|
|
305
|
-
|
|
306
|
-
modeCmd
|
|
307
|
-
.command('recommend')
|
|
308
|
-
.description('Get tier recommendation for your project')
|
|
309
|
-
.option('--size <size>', 'Project size (small, medium, large)', 'medium')
|
|
310
|
-
.option('--team-size <size>', 'Team size (number)', '1')
|
|
311
|
-
.option('--compliance <required>', 'Compliance requirements (true/false)', 'false')
|
|
312
|
-
.option('--audit <required>', 'Audit requirements (true/false)', 'false')
|
|
313
|
-
.option('--details', 'Show detailed recommendation', false)
|
|
314
|
-
.action((options) => modeCommand('recommend', options));
|
|
315
|
-
|
|
316
|
-
modeCmd
|
|
317
|
-
.command('details <mode>')
|
|
318
|
-
.description('Show detailed information about a specific tier')
|
|
319
|
-
.action((mode) => modeCommand('details', { mode }));
|
|
320
|
-
|
|
321
|
-
// Tutorial command
|
|
322
|
-
program
|
|
323
|
-
.command('tutorial [type]')
|
|
324
|
-
.description('Interactive guided learning for CAWS')
|
|
325
|
-
.action(tutorialCommand);
|
|
326
|
-
|
|
327
|
-
// Plan command
|
|
328
|
-
program
|
|
329
|
-
.command('plan <action>')
|
|
330
|
-
.description('Generate implementation plans')
|
|
331
|
-
.option('--spec-id <id>', 'Spec ID to generate plan for')
|
|
332
|
-
.option('--spec <id>', 'Alias for --spec-id')
|
|
333
|
-
.option('--output <path>', 'Output file path for the plan')
|
|
334
|
-
.action((action, options) => planCommand(action, options));
|
|
335
|
-
|
|
336
|
-
// Worktree command group
|
|
337
|
-
const worktreeCmd = program
|
|
338
|
-
.command('worktree')
|
|
339
|
-
.description('Manage git worktrees for agent scope isolation');
|
|
340
|
-
|
|
341
|
-
worktreeCmd
|
|
342
|
-
.command('create <name>')
|
|
343
|
-
.description('Create a new isolated worktree')
|
|
344
|
-
.option('--scope <patterns>', 'Sparse checkout patterns (comma-separated, e.g., "src/auth/**")')
|
|
345
|
-
.option('--base-branch <branch>', 'Base branch to create from')
|
|
346
|
-
.option('--spec-id <id>', 'Associated spec ID')
|
|
347
|
-
.action((name, options) => worktreeCommand('create', { name, ...options }));
|
|
348
|
-
|
|
349
|
-
worktreeCmd
|
|
350
|
-
.command('list')
|
|
351
|
-
.description('List all managed worktrees')
|
|
352
|
-
.action(() => worktreeCommand('list'));
|
|
353
|
-
|
|
354
|
-
worktreeCmd
|
|
355
|
-
.command('destroy <name>')
|
|
356
|
-
.description('Destroy a worktree')
|
|
357
|
-
.option('--delete-branch', 'Also delete the associated branch', false)
|
|
358
|
-
.option('--force', 'Force removal even if worktree is dirty', false)
|
|
359
|
-
.action((name, options) => worktreeCommand('destroy', { name, ...options }));
|
|
360
|
-
|
|
361
|
-
worktreeCmd
|
|
362
|
-
.command('merge <name>')
|
|
363
|
-
.description('Merge a worktree branch back to base (destroy + merge + cleanup)')
|
|
364
|
-
.option('--dry-run', 'Preview conflicts without merging', false)
|
|
365
|
-
.option('--message <msg>', 'Custom merge commit message')
|
|
366
|
-
.option('--no-delete-branch', 'Keep the branch after merging')
|
|
367
|
-
.action((name, options) => worktreeCommand('merge', { name, ...options }));
|
|
368
|
-
|
|
369
|
-
worktreeCmd
|
|
370
|
-
.command('prune')
|
|
371
|
-
.description('Clean up stale worktree entries')
|
|
372
|
-
.option('--max-age <days>', 'Remove entries older than N days', '30')
|
|
373
|
-
.option('--force', 'Allow pruning entries owned by other sessions', false)
|
|
374
|
-
.action((options) => worktreeCommand('prune', options));
|
|
375
|
-
|
|
376
|
-
worktreeCmd
|
|
377
|
-
.command('repair')
|
|
378
|
-
.description('Reconcile registry with git and filesystem state')
|
|
379
|
-
.option('--dry-run', 'Report only, do not persist changes', false)
|
|
380
|
-
.option('--prune', 'Remove destroyed, stale-merged, and missing entries', false)
|
|
381
|
-
.option('--force', 'Allow pruning entries owned by other sessions', false)
|
|
382
|
-
.action((options) => worktreeCommand('repair', options));
|
|
383
|
-
|
|
384
|
-
worktreeCmd
|
|
385
|
-
.command('bind <spec-id>')
|
|
386
|
-
.description('Bind a spec to this worktree (fixes mutual reference)')
|
|
387
|
-
.option('--name <name>', 'Worktree name (auto-detected from cwd if omitted)')
|
|
388
|
-
.action((specId, options) => worktreeCommand('bind', { specId, ...options }));
|
|
389
|
-
|
|
390
|
-
// Scope command group
|
|
391
|
-
const scopeCmd = program
|
|
392
|
-
.command('scope')
|
|
393
|
-
.description('Inspect and manage scope boundaries');
|
|
394
|
-
|
|
395
|
-
scopeCmd
|
|
396
|
-
.command('show')
|
|
397
|
-
.description('Show effective scope for the current context')
|
|
398
|
-
.action(() => scopeCommand('show'));
|
|
399
|
-
|
|
400
|
-
// Session command group
|
|
401
|
-
const sessionCmd = program
|
|
402
|
-
.command('session')
|
|
403
|
-
.description('Manage session lifecycle and capsules for multi-agent coordination');
|
|
404
|
-
|
|
405
|
-
sessionCmd
|
|
406
|
-
.command('start')
|
|
407
|
-
.description('Start a new tracked session with baseline checkpoint')
|
|
408
|
-
.option('--role <role>', 'Agent role (worker, integrator, qa)', 'worker')
|
|
409
|
-
.option('--spec-id <id>', 'Associated feature spec ID')
|
|
410
|
-
.option('--scope <patterns>', 'Allowed file patterns (comma-separated)')
|
|
411
|
-
.option('--intent <text>', 'What this session intends to accomplish')
|
|
412
|
-
.action((options) => sessionCommand('start', options));
|
|
413
|
-
|
|
414
|
-
sessionCmd
|
|
415
|
-
.command('checkpoint')
|
|
416
|
-
.description('Record a checkpoint in the current session')
|
|
417
|
-
.option('--session-id <id>', 'Specific session ID (uses latest active if omitted)')
|
|
418
|
-
.option('--intent <text>', 'Updated intent description')
|
|
419
|
-
.option('--paths <paths>', 'Files changed (comma-separated)')
|
|
420
|
-
.option('--tests <json>', 'Test results as JSON array [{name, status, evidence}]')
|
|
421
|
-
.option('--issues <json>', 'Known issues as JSON array [{type, description}]')
|
|
422
|
-
.action((options) => sessionCommand('checkpoint', options));
|
|
423
|
-
|
|
424
|
-
sessionCmd
|
|
425
|
-
.command('end')
|
|
426
|
-
.description('End the current session with handoff information')
|
|
427
|
-
.option('--session-id <id>', 'Specific session ID (uses latest active if omitted)')
|
|
428
|
-
.option('--next-actions <actions>', 'Handoff actions (pipe-separated)')
|
|
429
|
-
.option('--risk-notes <notes>', 'Risk notes (pipe-separated)')
|
|
430
|
-
.action((options) => sessionCommand('end', options));
|
|
431
|
-
|
|
432
|
-
sessionCmd
|
|
433
|
-
.command('list')
|
|
434
|
-
.description('List all sessions')
|
|
435
|
-
.option('--status <status>', 'Filter by status (active, completed)')
|
|
436
|
-
.option('--limit <n>', 'Max entries to show')
|
|
437
|
-
.action((options) => sessionCommand('list', options));
|
|
438
|
-
|
|
439
|
-
sessionCmd
|
|
440
|
-
.command('show [id]')
|
|
441
|
-
.description('Show session capsule details (default: latest)')
|
|
442
|
-
.option('--json', 'Output as raw JSON', false)
|
|
443
|
-
.action((id, options) => sessionCommand('show', { ...options, id: id || 'latest' }));
|
|
444
|
-
|
|
445
|
-
sessionCmd
|
|
446
|
-
.command('briefing')
|
|
447
|
-
.description('Show session briefing for hooks/startup')
|
|
448
|
-
.action(() => sessionCommand('briefing'));
|
|
449
|
-
|
|
450
|
-
// Parallel command group
|
|
451
|
-
const parallelCmd = program
|
|
452
|
-
.command('parallel')
|
|
453
|
-
.description('Orchestrate parallel multi-agent workspaces');
|
|
454
|
-
|
|
455
|
-
parallelCmd
|
|
456
|
-
.command('setup <plan-file>')
|
|
457
|
-
.description('Create worktrees and sessions from a plan file')
|
|
458
|
-
.option('--base-branch <branch>', 'Base branch for all worktrees')
|
|
459
|
-
.action((planFile, options) => parallelCommand('setup', { planFile, ...options }));
|
|
460
|
-
|
|
461
|
-
parallelCmd
|
|
462
|
-
.command('status')
|
|
463
|
-
.description('Show all active parallel worktrees and sessions')
|
|
464
|
-
.action(() => parallelCommand('status'));
|
|
465
|
-
|
|
466
|
-
parallelCmd
|
|
467
|
-
.command('merge')
|
|
468
|
-
.description('Merge all parallel branches back to base')
|
|
469
|
-
.option('--strategy <strategy>', 'Merge strategy: merge or squash', 'merge')
|
|
470
|
-
.option('--dry-run', 'Preview merge without executing', false)
|
|
471
|
-
.option('--force', 'Force merge even with detected conflicts', false)
|
|
472
|
-
.action((options) => parallelCommand('merge', options));
|
|
473
|
-
|
|
474
|
-
parallelCmd
|
|
475
|
-
.command('teardown')
|
|
476
|
-
.description('Destroy all parallel worktrees')
|
|
477
|
-
.option('--delete-branches', 'Also delete associated branches', false)
|
|
478
|
-
.option('--force', 'Force removal even if worktrees are dirty', false)
|
|
479
|
-
.action((options) => parallelCommand('teardown', options));
|
|
480
|
-
|
|
481
|
-
// Templates command
|
|
482
|
-
program
|
|
483
|
-
.command('templates [subcommand]')
|
|
484
|
-
.description('Discover and manage project templates')
|
|
485
|
-
.option('-n, --name <template>', 'Template name (for info subcommand)')
|
|
486
|
-
.action(templatesCommand);
|
|
44
|
+
.showHelpAfterError(false);
|
|
487
45
|
|
|
488
|
-
// Diagnose command
|
|
489
|
-
program
|
|
490
|
-
.command('diagnose')
|
|
491
|
-
.description('Run health checks and suggest fixes')
|
|
492
|
-
.option('--spec-id <id>', 'Feature-specific spec ID')
|
|
493
|
-
.option('--fix', 'Apply automatic fixes', false)
|
|
494
|
-
.action(diagnoseCommand);
|
|
495
|
-
|
|
496
|
-
// Verify Acceptance Criteria command
|
|
497
|
-
program
|
|
498
|
-
.command('verify-acs')
|
|
499
|
-
.description('Verify acceptance criteria in specs are backed by test evidence')
|
|
500
|
-
.option('--spec-id <id>', 'Verify only this spec')
|
|
501
|
-
.option('--run', 'Actually run tests (default: collect-only)', false)
|
|
502
|
-
.option('--runner <runner>', 'Force test runner (pytest, jest, vitest, cargo, go)')
|
|
503
|
-
.option('--format <format>', 'Output format (text, json)', 'text')
|
|
504
|
-
.action(verifyAcsCommand);
|
|
505
|
-
|
|
506
|
-
// Evaluate command
|
|
507
|
-
program
|
|
508
|
-
.command('evaluate [spec-file]')
|
|
509
|
-
.description('Evaluate work against CAWS quality standards')
|
|
510
|
-
.option('--spec-id <id>', 'Feature-specific spec ID (e.g., user-auth)')
|
|
511
|
-
.option('-v, --verbose', 'Show detailed error information', false)
|
|
512
|
-
.action(evaluateCommand);
|
|
513
|
-
|
|
514
|
-
// Iterate command
|
|
515
|
-
program
|
|
516
|
-
.command('iterate [spec-file]')
|
|
517
|
-
.description('Get iterative development guidance')
|
|
518
|
-
.option('--spec-id <id>', 'Feature-specific spec ID (e.g., user-auth)')
|
|
519
|
-
.option('--current-state <json>', 'Current implementation state as JSON', '{}')
|
|
520
|
-
.option('-v, --verbose', 'Show detailed error information', false)
|
|
521
|
-
.action(iterateCommand);
|
|
522
|
-
|
|
523
|
-
// Burnup command
|
|
524
|
-
program
|
|
525
|
-
.command('burnup [spec-file]')
|
|
526
|
-
.description('Generate budget burn-up report for scope visibility')
|
|
527
|
-
.option('--spec-id <id>', 'Feature-specific spec ID (e.g., user-auth)')
|
|
528
|
-
.option('-v, --verbose', 'Show detailed error information', false)
|
|
529
|
-
.action(burnupCommand);
|
|
530
|
-
|
|
531
|
-
// Waivers command group
|
|
532
|
-
const waiversCmd = program.command('waivers').description('Manage CAWS quality gate waivers');
|
|
533
|
-
|
|
534
|
-
// Waivers subcommands
|
|
535
|
-
waiversCmd
|
|
536
|
-
.command('create')
|
|
537
|
-
.description('Create a new quality gate waiver')
|
|
538
|
-
.requiredOption('--title <title>', 'Waiver title')
|
|
539
|
-
.requiredOption(
|
|
540
|
-
'--reason <reason>',
|
|
541
|
-
'Reason for waiver (emergency_hotfix, legacy_integration, etc.)'
|
|
542
|
-
)
|
|
543
|
-
.requiredOption('--description <description>', 'Detailed description')
|
|
544
|
-
.requiredOption('--gates <gates>', 'Comma-separated list of gates to waive')
|
|
545
|
-
.requiredOption('--expires-at <date>', 'Expiration date (ISO 8601)')
|
|
546
|
-
.requiredOption('--approved-by <approver>', 'Approver name')
|
|
547
|
-
.requiredOption('--impact-level <level>', 'Impact level (low, medium, high, critical)')
|
|
548
|
-
.requiredOption('--mitigation-plan <plan>', 'Risk mitigation plan')
|
|
549
|
-
.option('-v, --verbose', 'Show detailed error information', false)
|
|
550
|
-
.action((options) => waiversCommand('create', options));
|
|
551
|
-
|
|
552
|
-
waiversCmd
|
|
553
|
-
.command('list')
|
|
554
|
-
.description('List all waivers')
|
|
555
|
-
.option('-v, --verbose', 'Show detailed error information', false)
|
|
556
|
-
.action((options) => waiversCommand('list', options));
|
|
557
|
-
|
|
558
|
-
waiversCmd
|
|
559
|
-
.command('show <id>')
|
|
560
|
-
.description('Show waiver details')
|
|
561
|
-
.option('-v, --verbose', 'Show detailed error information', false)
|
|
562
|
-
.action((id, options) => waiversCommand('show', { ...options, id }));
|
|
563
|
-
|
|
564
|
-
waiversCmd
|
|
565
|
-
.command('revoke <id>')
|
|
566
|
-
.description('Revoke a waiver')
|
|
567
|
-
.option('--revoked-by <name>', 'Person revoking the waiver')
|
|
568
|
-
.option('--reason <reason>', 'Revocation reason')
|
|
569
|
-
.option('-v, --verbose', 'Show detailed error information', false)
|
|
570
|
-
.action((id, options) => waiversCommand('revoke', { ...options, id }));
|
|
571
|
-
|
|
572
|
-
waiversCmd
|
|
573
|
-
.command('prune')
|
|
574
|
-
.description('Prune expired waivers (dry-run by default; use --apply to persist)')
|
|
575
|
-
.option('--expired', 'Prune active waivers whose expires_at is in the past')
|
|
576
|
-
.option('--apply', 'Actually transition status (default: dry run)')
|
|
577
|
-
.option('--json', 'Emit machine-readable JSON output')
|
|
578
|
-
.option('-v, --verbose', 'Show detailed error information', false)
|
|
579
|
-
.action((options) => waiversCommand('prune', options));
|
|
580
|
-
|
|
581
|
-
// Workflow command group
|
|
582
|
-
program
|
|
583
|
-
.command('workflow <type>')
|
|
584
|
-
.description('Get workflow-specific guidance')
|
|
585
|
-
.option('--spec-id <id>', 'Feature-specific spec ID (e.g., user-auth)')
|
|
586
|
-
.option('--step <number>', 'Current step in workflow', '1')
|
|
587
|
-
.option('--current-state <json>', 'Current implementation state as JSON', '{}')
|
|
588
|
-
.option('-v, --verbose', 'Show detailed error information', false)
|
|
589
|
-
.action((type, options) => workflowCommand(type, options));
|
|
590
|
-
|
|
591
|
-
// Quality Monitor command
|
|
592
|
-
program
|
|
593
|
-
.command('quality-monitor <action>')
|
|
594
|
-
.description('Monitor code quality impact in real-time')
|
|
595
|
-
.option('--spec-id <id>', 'Feature-specific spec ID (e.g., user-auth)')
|
|
596
|
-
.option('--files <files>', 'Files affected (comma-separated)')
|
|
597
|
-
.option('--context <json>', 'Additional context as JSON', '{}')
|
|
598
|
-
.option('-v, --verbose', 'Show detailed error information', false)
|
|
599
|
-
.action(qualityMonitorCommand);
|
|
600
|
-
|
|
601
|
-
// Troubleshoot command available via: caws diagnose --troubleshoot <guide>
|
|
602
|
-
// The standalone command was consolidated into the diagnose command.
|
|
603
|
-
|
|
604
|
-
// Tool command
|
|
605
|
-
program
|
|
606
|
-
.command('tool')
|
|
607
|
-
.description('Execute CAWS tools programmatically')
|
|
608
|
-
.argument('<tool-id>', 'ID of the tool to execute')
|
|
609
|
-
.option('-p, --params <json>', 'Parameters as JSON string', '{}')
|
|
610
|
-
.option('-t, --timeout <ms>', 'Execution timeout in milliseconds', parseInt, 30000)
|
|
611
|
-
.action(executeTool);
|
|
612
|
-
|
|
613
|
-
// Test Analysis command
|
|
614
|
-
program
|
|
615
|
-
.command('test-analysis <subcommand> [options...]')
|
|
616
|
-
.description('Statistical analysis for budget prediction')
|
|
617
|
-
.option('--spec-id <id>', 'Feature-specific spec ID (e.g., user-auth)')
|
|
618
|
-
.action((subcommand, optionArgs, command) => {
|
|
619
|
-
testAnalysisCommand(subcommand, optionArgs, command.opts());
|
|
620
|
-
});
|
|
621
|
-
|
|
622
|
-
// Provenance command group
|
|
623
|
-
const provenanceCmd = program.command('provenance').description('Manage CAWS provenance tracking');
|
|
624
|
-
|
|
625
|
-
// Subcommands
|
|
626
|
-
provenanceCmd
|
|
627
|
-
.command('update')
|
|
628
|
-
.description('Add new commit to provenance chain')
|
|
629
|
-
.requiredOption('-c, --commit <hash>', 'Git commit hash')
|
|
630
|
-
.option('--spec-id <id>', 'Feature-specific spec ID')
|
|
631
|
-
.option('-s, --spec <path>', 'Path to spec file (explicit override)')
|
|
632
|
-
.option('-m, --message <msg>', 'Commit message')
|
|
633
|
-
.option('-a, --author <info>', 'Author information')
|
|
634
|
-
.option('-q, --quiet', 'Suppress output')
|
|
635
|
-
.option('-o, --output <path>', 'Output path for provenance files', '.caws/provenance')
|
|
636
|
-
.action(async (options) => {
|
|
637
|
-
await provenanceCommand('update', options);
|
|
638
|
-
});
|
|
639
|
-
|
|
640
|
-
provenanceCmd
|
|
641
|
-
.command('show')
|
|
642
|
-
.description('Display current provenance history')
|
|
643
|
-
.option('-o, --output <path>', 'Output path for provenance files', '.caws/provenance')
|
|
644
|
-
.option('--format <type>', 'Output format: text, json, dashboard', 'text')
|
|
645
|
-
.action(async (options) => {
|
|
646
|
-
await provenanceCommand('show', options);
|
|
647
|
-
});
|
|
648
|
-
|
|
649
|
-
provenanceCmd
|
|
650
|
-
.command('verify')
|
|
651
|
-
.description('Validate provenance chain integrity')
|
|
652
|
-
.option('-o, --output <path>', 'Output path for provenance files', '.caws/provenance')
|
|
653
|
-
.action(async (options) => {
|
|
654
|
-
await provenanceCommand('verify', options);
|
|
655
|
-
});
|
|
656
|
-
|
|
657
|
-
provenanceCmd
|
|
658
|
-
.command('analyze-ai')
|
|
659
|
-
.description('Analyze AI-assisted development patterns')
|
|
660
|
-
.option('-o, --output <path>', 'Output path for provenance files', '.caws/provenance')
|
|
661
|
-
.action(async (options) => {
|
|
662
|
-
await provenanceCommand('analyze-ai', options);
|
|
663
|
-
});
|
|
664
|
-
|
|
665
|
-
provenanceCmd
|
|
666
|
-
.command('init')
|
|
667
|
-
.description('Initialize provenance tracking for the project')
|
|
668
|
-
.option('--spec-id <id>', 'Feature-specific spec ID')
|
|
669
|
-
.option('-s, --spec <path>', 'Path to spec file (explicit override)')
|
|
670
|
-
.option('-o, --output <path>', 'Output path for provenance files', '.caws/provenance')
|
|
671
|
-
.option('--cursor-api <url>', 'Cursor tracking API endpoint')
|
|
672
|
-
.option('--cursor-key <key>', 'Cursor API key')
|
|
673
|
-
.action(async (options) => {
|
|
674
|
-
await provenanceCommand('init', options);
|
|
675
|
-
});
|
|
676
|
-
|
|
677
|
-
// Git hooks command
|
|
678
|
-
const hooksCmd = program
|
|
679
|
-
.command('hooks')
|
|
680
|
-
.description('Manage CAWS git hooks for provenance tracking');
|
|
681
|
-
|
|
682
|
-
hooksCmd
|
|
683
|
-
.command('install')
|
|
684
|
-
.description('Install CAWS git hooks')
|
|
685
|
-
.option('--no-provenance', 'Skip provenance tracking hooks')
|
|
686
|
-
.option('--no-validation', 'Skip validation hooks')
|
|
687
|
-
.option('--no-quality-gates', 'Skip quality gate hooks')
|
|
688
|
-
.option('--force', 'Overwrite existing hooks')
|
|
689
|
-
.option('--backup', 'Backup existing hooks before replacing')
|
|
690
|
-
.action(async (options) => {
|
|
691
|
-
const hookOptions = {
|
|
692
|
-
provenance: options.provenance !== false,
|
|
693
|
-
validation: options.validation !== false,
|
|
694
|
-
qualityGates: options.qualityGates !== false,
|
|
695
|
-
force: options.force,
|
|
696
|
-
backup: options.backup,
|
|
697
|
-
};
|
|
698
|
-
|
|
699
|
-
try {
|
|
700
|
-
const result = await scaffoldGitHooks(process.cwd(), hookOptions);
|
|
701
|
-
if (result.added > 0) {
|
|
702
|
-
console.log(`Successfully installed ${result.added} git hooks`);
|
|
703
|
-
if (result.skipped > 0) {
|
|
704
|
-
console.log(`Skipped ${result.skipped} existing hooks`);
|
|
705
|
-
}
|
|
706
|
-
} else {
|
|
707
|
-
console.log('All hooks already configured');
|
|
708
|
-
}
|
|
709
|
-
} catch (error) {
|
|
710
|
-
console.error(`Failed to install git hooks: ${error.message}`);
|
|
711
|
-
process.exit(1);
|
|
712
|
-
}
|
|
713
|
-
});
|
|
714
|
-
|
|
715
|
-
hooksCmd
|
|
716
|
-
.command('remove')
|
|
717
|
-
.description('Remove CAWS git hooks')
|
|
718
|
-
.action(async () => {
|
|
719
|
-
try {
|
|
720
|
-
await removeGitHooks(process.cwd());
|
|
721
|
-
} catch (error) {
|
|
722
|
-
console.error(`Failed to remove git hooks: ${error.message}`);
|
|
723
|
-
process.exit(1);
|
|
724
|
-
}
|
|
725
|
-
});
|
|
726
|
-
|
|
727
|
-
hooksCmd
|
|
728
|
-
.command('status')
|
|
729
|
-
.description('Check git hooks status')
|
|
730
|
-
.action(async () => {
|
|
731
|
-
try {
|
|
732
|
-
await checkGitHooksStatus(process.cwd());
|
|
733
|
-
} catch (error) {
|
|
734
|
-
console.error(`Failed to check git hooks status: ${error.message}`);
|
|
735
|
-
process.exit(1);
|
|
736
|
-
}
|
|
737
|
-
});
|
|
738
|
-
|
|
739
|
-
// Error handling
|
|
740
|
-
// Custom error event handler for better messages
|
|
741
46
|
program.configureHelp({
|
|
742
|
-
|
|
743
|
-
showError: () => {}, // Suppress default error display
|
|
47
|
+
showError: () => {},
|
|
744
48
|
});
|
|
745
49
|
|
|
50
|
+
// v11.0.0 surface: exactly the 8 vNext command groups registered by
|
|
51
|
+
// `registerShellCommands(program)`. Used by `findSimilarCommand` for
|
|
52
|
+
// unknown-command suggestions. Must match `node dist/index.js --help`
|
|
53
|
+
// output (excluding Commander's auto-generated `help` row).
|
|
54
|
+
//
|
|
55
|
+
// Slice 8a3.5 reconciliation: dropped 24 legacy entries removed in
|
|
56
|
+
// 8a3.1–8a3.4 plus the stale `'quality-gates'` alias (alias was
|
|
57
|
+
// removed in slice 6c but the suggester entry was never cleaned).
|
|
58
|
+
// Added the 5 vNext groups that were missing from the suggester:
|
|
59
|
+
// 'agents' (now removed), 'claim', 'doctor', 'evidence',
|
|
60
|
+
// 'test-analysis' (now removed). Final list is exactly the 8 vNext
|
|
61
|
+
// groups currently registered.
|
|
746
62
|
const VALID_COMMANDS = [
|
|
747
|
-
'
|
|
748
|
-
'
|
|
749
|
-
'
|
|
750
|
-
'status',
|
|
751
|
-
'archive',
|
|
752
|
-
'specs',
|
|
753
|
-
'sidecar',
|
|
754
|
-
'mode',
|
|
755
|
-
'tutorial',
|
|
756
|
-
'plan',
|
|
757
|
-
'templates',
|
|
758
|
-
'diagnose',
|
|
759
|
-
'evaluate',
|
|
760
|
-
'iterate',
|
|
761
|
-
'waivers',
|
|
762
|
-
'workflow',
|
|
763
|
-
'quality-monitor',
|
|
764
|
-
'quality-gates',
|
|
63
|
+
'claim',
|
|
64
|
+
'doctor',
|
|
65
|
+
'evidence',
|
|
765
66
|
'gates',
|
|
766
|
-
'
|
|
767
|
-
'hooks',
|
|
768
|
-
'burnup',
|
|
769
|
-
'tool',
|
|
770
|
-
'worktree',
|
|
771
|
-
'session',
|
|
772
|
-
'parallel',
|
|
773
|
-
'verify-acs',
|
|
67
|
+
'init',
|
|
774
68
|
'scope',
|
|
69
|
+
'status',
|
|
70
|
+
'waiver',
|
|
775
71
|
];
|
|
776
72
|
|
|
777
73
|
program.exitOverride((err) => {
|
|
@@ -815,12 +111,6 @@ program.exitOverride((err) => {
|
|
|
815
111
|
console.error(chalk.red(`\nUnknown option: ${option}`));
|
|
816
112
|
console.error(chalk.yellow(`\nTry: caws ${commandName || ''} --help for available options`));
|
|
817
113
|
|
|
818
|
-
// Provide specific suggestions for common mistakes
|
|
819
|
-
if (option === '--suggestions' || option === '--suggest') {
|
|
820
|
-
console.error(chalk.yellow('Note: Validation includes suggestions by default'));
|
|
821
|
-
console.error(chalk.yellow(' Just run: caws validate'));
|
|
822
|
-
}
|
|
823
|
-
|
|
824
114
|
console.error(
|
|
825
115
|
chalk.blue(
|
|
826
116
|
'\nDocumentation: https://github.com/Paths-Design/coding-agent-working-standard/blob/main/docs/api/cli.md'
|
|
@@ -841,11 +131,12 @@ program.exitOverride((err) => {
|
|
|
841
131
|
process.exit(1);
|
|
842
132
|
});
|
|
843
133
|
|
|
844
|
-
// Register
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
134
|
+
// Register vNext shell commands. This is the only registration block
|
|
135
|
+
// in v11; all command groups are in src/shell/. The legacy registration
|
|
136
|
+
// blocks above this line were removed in slices 8a3.1–8a3.4 as part of
|
|
137
|
+
// the v11.0.0 cutover.
|
|
138
|
+
const { registerShellCommands } = require('./shell');
|
|
139
|
+
registerShellCommands(program);
|
|
849
140
|
|
|
850
141
|
// Parse and run
|
|
851
142
|
if (require.main === module) {
|
|
@@ -899,12 +190,6 @@ if (require.main === module) {
|
|
|
899
190
|
chalk.yellow(`\nTry: caws ${commandName || ''} --help for available options`)
|
|
900
191
|
);
|
|
901
192
|
|
|
902
|
-
// Provide specific suggestions for common mistakes
|
|
903
|
-
if (option === '--suggestions' || option === '--suggest') {
|
|
904
|
-
console.error(chalk.yellow('Note: Validation includes suggestions by default'));
|
|
905
|
-
console.error(chalk.yellow(' Just run: caws validate'));
|
|
906
|
-
}
|
|
907
|
-
|
|
908
193
|
console.error(
|
|
909
194
|
chalk.blue(
|
|
910
195
|
'\nDocumentation: https://github.com/Paths-Design/coding-agent-working-standard/blob/main/docs/api/cli.md'
|
|
@@ -919,8 +204,10 @@ if (require.main === module) {
|
|
|
919
204
|
}
|
|
920
205
|
}
|
|
921
206
|
|
|
922
|
-
//
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
207
|
+
// Public API surface removed in slice 8a3 (v11.0.0 cutover). The
|
|
208
|
+
// legacy `generateWorkingSpec` / `validateGeneratedSpec` helpers were
|
|
209
|
+
// part of v10.x's exported API; v11 ships only the binary entry point
|
|
210
|
+
// and exposes no JS exports from this module. Programmatic consumers
|
|
211
|
+
// should depend on `@paths.design/caws-kernel` (pure logic) or the
|
|
212
|
+
// `dist/shell` / `dist/store` modules directly.
|
|
213
|
+
module.exports = {};
|