@paths.design/caws-cli 10.1.0 → 11.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +125 -374
- package/dist/index.js +43 -756
- package/dist/shell/binding/resolve-binding.d.ts +4 -0
- package/dist/shell/binding/resolve-binding.d.ts.map +1 -0
- package/dist/shell/binding/resolve-binding.js +228 -0
- package/dist/shell/binding/resolve-binding.js.map +1 -0
- package/dist/shell/binding/types.d.ts +42 -0
- package/dist/shell/binding/types.d.ts.map +1 -0
- package/dist/shell/binding/types.js +21 -0
- package/dist/shell/binding/types.js.map +1 -0
- package/dist/shell/commands/claim.d.ts +14 -0
- package/dist/shell/commands/claim.d.ts.map +1 -0
- package/dist/shell/commands/claim.js +197 -0
- package/dist/shell/commands/claim.js.map +1 -0
- package/dist/shell/commands/doctor.d.ts +13 -0
- package/dist/shell/commands/doctor.d.ts.map +1 -0
- package/dist/shell/commands/doctor.js +97 -0
- package/dist/shell/commands/doctor.js.map +1 -0
- package/dist/shell/commands/evidence.d.ts +28 -0
- package/dist/shell/commands/evidence.d.ts.map +1 -0
- package/dist/shell/commands/evidence.js +166 -0
- package/dist/shell/commands/evidence.js.map +1 -0
- package/dist/shell/commands/gates.d.ts +19 -0
- package/dist/shell/commands/gates.d.ts.map +1 -0
- package/dist/shell/commands/gates.js +181 -0
- package/dist/shell/commands/gates.js.map +1 -0
- package/dist/shell/commands/init.d.ts +8 -0
- package/dist/shell/commands/init.d.ts.map +1 -0
- package/dist/shell/commands/init.js +64 -0
- package/dist/shell/commands/init.js.map +1 -0
- package/dist/shell/commands/scope.d.ts +11 -0
- package/dist/shell/commands/scope.d.ts.map +1 -0
- package/dist/shell/commands/scope.js +92 -0
- package/dist/shell/commands/scope.js.map +1 -0
- package/dist/shell/commands/status.d.ts +15 -0
- package/dist/shell/commands/status.d.ts.map +1 -0
- package/dist/shell/commands/status.js +106 -0
- package/dist/shell/commands/status.js.map +1 -0
- package/dist/shell/commands/waiver.d.ts +38 -0
- package/dist/shell/commands/waiver.d.ts.map +1 -0
- package/dist/shell/commands/waiver.js +240 -0
- package/dist/shell/commands/waiver.js.map +1 -0
- package/dist/shell/gates/disposition.d.ts +23 -0
- package/dist/shell/gates/disposition.d.ts.map +1 -0
- package/dist/shell/gates/disposition.js +87 -0
- package/dist/shell/gates/disposition.js.map +1 -0
- package/dist/shell/gates/gate-result-contract.d.ts +39 -0
- package/dist/shell/gates/gate-result-contract.d.ts.map +1 -0
- package/dist/shell/gates/gate-result-contract.js +150 -0
- package/dist/shell/gates/gate-result-contract.js.map +1 -0
- package/dist/shell/gates/quality-gates-adapter.d.ts +55 -0
- package/dist/shell/gates/quality-gates-adapter.d.ts.map +1 -0
- package/dist/shell/gates/quality-gates-adapter.js +161 -0
- package/dist/shell/gates/quality-gates-adapter.js.map +1 -0
- package/dist/shell/gates/waiver-filter.d.ts +58 -0
- package/dist/shell/gates/waiver-filter.d.ts.map +1 -0
- package/dist/shell/gates/waiver-filter.js +119 -0
- package/dist/shell/gates/waiver-filter.js.map +1 -0
- package/dist/shell/index.d.ts +50 -0
- package/dist/shell/index.d.ts.map +1 -0
- package/dist/shell/index.js +73 -0
- package/dist/shell/index.js.map +1 -0
- package/dist/shell/register.d.ts +11 -0
- package/dist/shell/register.d.ts.map +1 -0
- package/dist/shell/register.js +274 -0
- package/dist/shell/register.js.map +1 -0
- package/dist/shell/render/claim.d.ts +22 -0
- package/dist/shell/render/claim.d.ts.map +1 -0
- package/dist/shell/render/claim.js +75 -0
- package/dist/shell/render/claim.js.map +1 -0
- package/dist/shell/render/decision.d.ts +15 -0
- package/dist/shell/render/decision.d.ts.map +1 -0
- package/dist/shell/render/decision.js +66 -0
- package/dist/shell/render/decision.js.map +1 -0
- package/dist/shell/render/diagnostic.d.ts +19 -0
- package/dist/shell/render/diagnostic.d.ts.map +1 -0
- package/dist/shell/render/diagnostic.js +76 -0
- package/dist/shell/render/diagnostic.js.map +1 -0
- package/dist/shell/render/finding.d.ts +15 -0
- package/dist/shell/render/finding.d.ts.map +1 -0
- package/dist/shell/render/finding.js +57 -0
- package/dist/shell/render/finding.js.map +1 -0
- package/dist/shell/render/gates.d.ts +3 -0
- package/dist/shell/render/gates.d.ts.map +1 -0
- package/dist/shell/render/gates.js +56 -0
- package/dist/shell/render/gates.js.map +1 -0
- package/dist/shell/render/init.d.ts +11 -0
- package/dist/shell/render/init.d.ts.map +1 -0
- package/dist/shell/render/init.js +32 -0
- package/dist/shell/render/init.js.map +1 -0
- package/dist/shell/render/status.d.ts +26 -0
- package/dist/shell/render/status.d.ts.map +1 -0
- package/dist/shell/render/status.js +143 -0
- package/dist/shell/render/status.js.map +1 -0
- package/dist/shell/render/waiver.d.ts +21 -0
- package/dist/shell/render/waiver.d.ts.map +1 -0
- package/dist/shell/render/waiver.js +94 -0
- package/dist/shell/render/waiver.js.map +1 -0
- package/dist/shell/rules.d.ts +37 -0
- package/dist/shell/rules.d.ts.map +1 -0
- package/dist/shell/rules.js +51 -0
- package/dist/shell/rules.js.map +1 -0
- package/dist/shell/session/actor.d.ts +14 -0
- package/dist/shell/session/actor.d.ts.map +1 -0
- package/dist/shell/session/actor.js +34 -0
- package/dist/shell/session/actor.js.map +1 -0
- package/dist/shell/session/resolve-session.d.ts +5 -0
- package/dist/shell/session/resolve-session.d.ts.map +1 -0
- package/dist/shell/session/resolve-session.js +239 -0
- package/dist/shell/session/resolve-session.js.map +1 -0
- package/dist/shell/session/types.d.ts +56 -0
- package/dist/shell/session/types.d.ts.map +1 -0
- package/dist/shell/session/types.js +15 -0
- package/dist/shell/session/types.js.map +1 -0
- package/dist/store/agents-store.d.ts +3 -0
- package/dist/store/agents-store.d.ts.map +1 -0
- package/dist/store/agents-store.js +63 -0
- package/dist/store/agents-store.js.map +1 -0
- package/dist/store/apply-patch.d.ts +16 -0
- package/dist/store/apply-patch.d.ts.map +1 -0
- package/dist/store/apply-patch.js +191 -0
- package/dist/store/apply-patch.js.map +1 -0
- package/dist/store/atomic-write.d.ts +16 -0
- package/dist/store/atomic-write.d.ts.map +1 -0
- package/dist/store/atomic-write.js +132 -0
- package/dist/store/atomic-write.js.map +1 -0
- package/dist/store/doctor-snapshot.d.ts +20 -0
- package/dist/store/doctor-snapshot.d.ts.map +1 -0
- package/dist/store/doctor-snapshot.js +176 -0
- package/dist/store/doctor-snapshot.js.map +1 -0
- package/dist/store/events-store.d.ts +33 -0
- package/dist/store/events-store.d.ts.map +1 -0
- package/dist/store/events-store.js +297 -0
- package/dist/store/events-store.js.map +1 -0
- package/dist/store/index.d.ts +21 -0
- package/dist/store/index.d.ts.map +1 -0
- package/dist/store/index.js +47 -0
- package/dist/store/index.js.map +1 -0
- package/dist/store/init-store.d.ts +21 -0
- package/dist/store/init-store.d.ts.map +1 -0
- package/dist/store/init-store.js +295 -0
- package/dist/store/init-store.js.map +1 -0
- package/dist/store/json-store.d.ts +3 -0
- package/dist/store/json-store.d.ts.map +1 -0
- package/dist/store/json-store.js +65 -0
- package/dist/store/json-store.js.map +1 -0
- package/dist/store/policy-store.d.ts +3 -0
- package/dist/store/policy-store.d.ts.map +1 -0
- package/dist/store/policy-store.js +65 -0
- package/dist/store/policy-store.js.map +1 -0
- package/dist/store/repo-root.d.ts +46 -0
- package/dist/store/repo-root.d.ts.map +1 -0
- package/dist/store/repo-root.js +145 -0
- package/dist/store/repo-root.js.map +1 -0
- package/dist/store/rules.d.ts +53 -0
- package/dist/store/rules.d.ts.map +1 -0
- package/dist/store/rules.js +78 -0
- package/dist/store/rules.js.map +1 -0
- package/dist/store/specs-store.d.ts +3 -0
- package/dist/store/specs-store.d.ts.map +1 -0
- package/dist/store/specs-store.js +131 -0
- package/dist/store/specs-store.js.map +1 -0
- package/dist/store/types.d.ts +84 -0
- package/dist/store/types.d.ts.map +1 -0
- package/dist/store/types.js +14 -0
- package/dist/store/types.js.map +1 -0
- package/dist/store/waivers-store.d.ts +25 -0
- package/dist/store/waivers-store.d.ts.map +1 -0
- package/dist/store/waivers-store.js +232 -0
- package/dist/store/waivers-store.js.map +1 -0
- package/dist/store/worktrees-store.d.ts +3 -0
- package/dist/store/worktrees-store.d.ts.map +1 -0
- package/dist/store/worktrees-store.js +62 -0
- package/dist/store/worktrees-store.js.map +1 -0
- package/dist/store/yaml-store.d.ts +9 -0
- package/dist/store/yaml-store.d.ts.map +1 -0
- package/dist/store/yaml-store.js +121 -0
- package/dist/store/yaml-store.js.map +1 -0
- package/package.json +15 -13
- package/dist/budget-derivation.js +0 -751
- package/dist/cicd-optimizer.js +0 -504
- package/dist/commands/archive.js +0 -500
- package/dist/commands/burnup.js +0 -198
- package/dist/commands/diagnose.js +0 -525
- package/dist/commands/evaluate.js +0 -314
- package/dist/commands/gates.js +0 -149
- package/dist/commands/init.js +0 -857
- package/dist/commands/iterate.js +0 -417
- package/dist/commands/mode.js +0 -269
- package/dist/commands/parallel.js +0 -242
- package/dist/commands/plan.js +0 -438
- package/dist/commands/provenance.js +0 -1143
- package/dist/commands/quality-monitor.js +0 -284
- package/dist/commands/scope.js +0 -264
- package/dist/commands/session.js +0 -312
- package/dist/commands/sidecar.js +0 -74
- package/dist/commands/specs.js +0 -1448
- package/dist/commands/status.js +0 -1151
- package/dist/commands/templates.js +0 -237
- package/dist/commands/tool.js +0 -136
- package/dist/commands/tutorial.js +0 -480
- package/dist/commands/validate.js +0 -357
- package/dist/commands/verify-acs.js +0 -443
- package/dist/commands/waivers.js +0 -599
- package/dist/commands/workflow.js +0 -243
- package/dist/commands/worktree.js +0 -386
- package/dist/config/lite-scope.js +0 -158
- package/dist/config/modes.js +0 -347
- package/dist/constants/spec-types.js +0 -65
- package/dist/gates/budget-limit.js +0 -121
- package/dist/gates/feedback.js +0 -260
- package/dist/gates/format.js +0 -179
- package/dist/gates/god-object.js +0 -117
- package/dist/gates/pipeline.js +0 -167
- package/dist/gates/scope-boundary.js +0 -93
- package/dist/gates/spec-completeness.js +0 -109
- package/dist/gates/todo-detection.js +0 -205
- package/dist/generators/jest-config-generator.js +0 -242
- package/dist/generators/working-spec.js +0 -237
- package/dist/minimal-cli.js +0 -88
- package/dist/parallel/parallel-manager.js +0 -433
- package/dist/policy/PolicyManager.js +0 -465
- package/dist/scaffold/claude-hooks.js +0 -443
- package/dist/scaffold/cursor-hooks.js +0 -177
- package/dist/scaffold/git-hooks.js +0 -928
- package/dist/scaffold/index.js +0 -794
- package/dist/session/session-manager.js +0 -653
- package/dist/sidecars/index.js +0 -33
- package/dist/sidecars/listeners.js +0 -40
- package/dist/sidecars/provenance-summary.js +0 -238
- package/dist/sidecars/quality-gaps.js +0 -258
- package/dist/sidecars/schema.js +0 -149
- package/dist/sidecars/spec-drift.js +0 -151
- package/dist/sidecars/waiver-draft.js +0 -176
- package/dist/spec/SpecFileManager.js +0 -419
- package/dist/templates/.caws/schemas/policy.schema.json +0 -112
- package/dist/templates/.caws/schemas/scope.schema.json +0 -52
- package/dist/templates/.caws/schemas/waivers.schema.json +0 -106
- package/dist/templates/.caws/schemas/working-spec.schema.json +0 -340
- package/dist/templates/.caws/schemas/worktrees.schema.json +0 -38
- package/dist/templates/.caws/templates/working-spec.template.yml +0 -80
- package/dist/templates/.caws/tools/README.md +0 -18
- package/dist/templates/.caws/tools/scope-guard.js +0 -203
- package/dist/templates/.caws/tools-allow.json +0 -331
- package/dist/templates/.caws/waivers.yml +0 -19
- package/dist/templates/.claude/README.md +0 -190
- package/dist/templates/.claude/hooks/audit.sh +0 -121
- package/dist/templates/.claude/hooks/block-dangerous.sh +0 -203
- package/dist/templates/.claude/hooks/classify_command.py +0 -592
- package/dist/templates/.claude/hooks/doc-frontmatter-check.sh +0 -173
- package/dist/templates/.claude/hooks/lite-sprawl-check.sh +0 -145
- package/dist/templates/.claude/hooks/naming-check.sh +0 -100
- package/dist/templates/.claude/hooks/protected-paths.sh +0 -39
- package/dist/templates/.claude/hooks/quality-check.sh +0 -81
- package/dist/templates/.claude/hooks/scan-secrets.sh +0 -85
- package/dist/templates/.claude/hooks/scope-guard.sh +0 -381
- package/dist/templates/.claude/hooks/session-caws-status.sh +0 -117
- package/dist/templates/.claude/hooks/session-log.sh +0 -634
- package/dist/templates/.claude/hooks/simplification-guard.sh +0 -92
- package/dist/templates/.claude/hooks/stop-worktree-check.sh +0 -46
- package/dist/templates/.claude/hooks/test_classify_command.py +0 -370
- package/dist/templates/.claude/hooks/test_wrapper_smoke.sh +0 -96
- package/dist/templates/.claude/hooks/validate-spec.sh +0 -76
- package/dist/templates/.claude/hooks/worktree-guard.sh +0 -220
- package/dist/templates/.claude/hooks/worktree-write-guard.sh +0 -190
- package/dist/templates/.claude/rules/git-safety.md +0 -26
- package/dist/templates/.claude/rules/worktree-isolation.md +0 -83
- package/dist/templates/.claude/settings.json +0 -141
- package/dist/templates/.cursor/README.md +0 -299
- package/dist/templates/.cursor/hooks/audit.sh +0 -55
- package/dist/templates/.cursor/hooks/block-dangerous.sh +0 -84
- package/dist/templates/.cursor/hooks/caws-quality-check.sh +0 -52
- package/dist/templates/.cursor/hooks/caws-scope-guard.sh +0 -130
- package/dist/templates/.cursor/hooks/format.sh +0 -38
- package/dist/templates/.cursor/hooks/naming-check.sh +0 -64
- package/dist/templates/.cursor/hooks/scan-secrets.sh +0 -51
- package/dist/templates/.cursor/hooks/scope-guard.sh +0 -52
- package/dist/templates/.cursor/hooks/session-log.sh +0 -924
- package/dist/templates/.cursor/hooks/validate-spec.sh +0 -83
- package/dist/templates/.cursor/hooks.json +0 -76
- package/dist/templates/.cursor/rules/00-claims-verification.mdc +0 -144
- package/dist/templates/.cursor/rules/01-working-style.mdc +0 -50
- package/dist/templates/.cursor/rules/02-quality-gates.mdc +0 -368
- package/dist/templates/.cursor/rules/03-naming-and-refactor.mdc +0 -33
- package/dist/templates/.cursor/rules/04-logging-language-style.mdc +0 -23
- package/dist/templates/.cursor/rules/05-safe-defaults-guards.mdc +0 -23
- package/dist/templates/.cursor/rules/06-typescript-conventions.mdc +0 -36
- package/dist/templates/.cursor/rules/07-process-ops.mdc +0 -20
- package/dist/templates/.cursor/rules/08-solid-and-architecture.mdc +0 -16
- package/dist/templates/.cursor/rules/09-docstrings.mdc +0 -89
- package/dist/templates/.cursor/rules/10-documentation-quality-standards.mdc +0 -385
- package/dist/templates/.cursor/rules/11-scope-management-waivers.mdc +0 -381
- package/dist/templates/.cursor/rules/12-implementation-completeness.mdc +0 -516
- package/dist/templates/.cursor/rules/13-language-agnostic-standards.mdc +0 -578
- package/dist/templates/.cursor/rules/README.md +0 -148
- package/dist/templates/.github/copilot-instructions.md +0 -82
- package/dist/templates/.idea/runConfigurations/CAWS_Evaluate.xml +0 -5
- package/dist/templates/.idea/runConfigurations/CAWS_Validate.xml +0 -5
- package/dist/templates/.junie/guidelines.md +0 -73
- package/dist/templates/.vscode/launch.json +0 -17
- package/dist/templates/.vscode/settings.json +0 -95
- package/dist/templates/.windsurf/rules/caws-quality-standards.md +0 -54
- package/dist/templates/.windsurf/workflows/caws-guided-development.md +0 -92
- package/dist/templates/CLAUDE.md +0 -174
- package/dist/templates/COMMIT_CONVENTIONS.md +0 -86
- package/dist/templates/OIDC_SETUP.md +0 -300
- package/dist/templates/agents.md +0 -145
- package/dist/templates/codemod/README.md +0 -1
- package/dist/templates/codemod/test.js +0 -93
- package/dist/templates/docs/README.md +0 -151
- package/dist/templates/scripts/new_feature.sh +0 -80
- package/dist/templates/scripts/quality-gates/check-god-objects.js +0 -146
- package/dist/templates/scripts/quality-gates/run-quality-gates.js +0 -50
- package/dist/templates/scripts/v3/analysis/todo_analyzer.py +0 -1997
- package/dist/test-analysis.js +0 -786
- package/dist/tool-interface.js +0 -314
- package/dist/tool-loader.js +0 -303
- package/dist/tool-validator.js +0 -393
- package/dist/utils/agent-session.js +0 -202
- package/dist/utils/async-utils.js +0 -188
- package/dist/utils/command-wrapper.js +0 -200
- package/dist/utils/event-log.js +0 -584
- package/dist/utils/event-renderer.js +0 -521
- package/dist/utils/finalization.js +0 -230
- package/dist/utils/git-lock.js +0 -119
- package/dist/utils/gitignore-updater.js +0 -158
- package/dist/utils/ide-detection.js +0 -133
- package/dist/utils/lifecycle-events.js +0 -94
- package/dist/utils/project-analysis.js +0 -367
- package/dist/utils/promise-utils.js +0 -72
- package/dist/utils/quality-gates-errors.js +0 -520
- package/dist/utils/quality-gates-utils.js +0 -387
- package/dist/utils/schema-validator.js +0 -50
- package/dist/utils/spec-resolver.js +0 -711
- package/dist/utils/typescript-detector.js +0 -369
- package/dist/utils/working-state.js +0 -530
- package/dist/utils/yaml-validation.js +0 -156
- package/dist/validation/spec-validation.js +0 -921
- package/dist/waivers-manager.js +0 -732
- package/dist/worktree/worktree-manager.js +0 -1374
- package/templates/.caws/schemas/policy.schema.json +0 -112
- package/templates/.caws/schemas/scope.schema.json +0 -52
- package/templates/.caws/schemas/waivers.schema.json +0 -106
- package/templates/.caws/schemas/working-spec.schema.json +0 -340
- package/templates/.caws/schemas/worktrees.schema.json +0 -38
- package/templates/.caws/templates/working-spec.template.yml +0 -80
- package/templates/.caws/tools/README.md +0 -18
- package/templates/.caws/tools/scope-guard.js +0 -203
- package/templates/.caws/tools-allow.json +0 -331
- package/templates/.caws/waivers.yml +0 -19
- package/templates/.claude/README.md +0 -190
- package/templates/.claude/hooks/audit.sh +0 -121
- package/templates/.claude/hooks/block-dangerous.sh +0 -203
- package/templates/.claude/hooks/classify_command.py +0 -592
- package/templates/.claude/hooks/doc-frontmatter-check.sh +0 -173
- package/templates/.claude/hooks/lite-sprawl-check.sh +0 -145
- package/templates/.claude/hooks/naming-check.sh +0 -100
- package/templates/.claude/hooks/protected-paths.sh +0 -39
- package/templates/.claude/hooks/quality-check.sh +0 -81
- package/templates/.claude/hooks/scan-secrets.sh +0 -85
- package/templates/.claude/hooks/scope-guard.sh +0 -381
- package/templates/.claude/hooks/session-caws-status.sh +0 -117
- package/templates/.claude/hooks/session-log.sh +0 -634
- package/templates/.claude/hooks/simplification-guard.sh +0 -92
- package/templates/.claude/hooks/stop-worktree-check.sh +0 -46
- package/templates/.claude/hooks/test_classify_command.py +0 -370
- package/templates/.claude/hooks/test_wrapper_smoke.sh +0 -96
- package/templates/.claude/hooks/validate-spec.sh +0 -76
- package/templates/.claude/hooks/worktree-guard.sh +0 -220
- package/templates/.claude/hooks/worktree-write-guard.sh +0 -190
- package/templates/.claude/rules/git-safety.md +0 -26
- package/templates/.claude/rules/worktree-isolation.md +0 -83
- package/templates/.claude/settings.json +0 -141
- package/templates/.cursor/README.md +0 -299
- package/templates/.cursor/hooks/audit.sh +0 -55
- package/templates/.cursor/hooks/block-dangerous.sh +0 -84
- package/templates/.cursor/hooks/caws-quality-check.sh +0 -52
- package/templates/.cursor/hooks/caws-scope-guard.sh +0 -130
- package/templates/.cursor/hooks/format.sh +0 -38
- package/templates/.cursor/hooks/naming-check.sh +0 -64
- package/templates/.cursor/hooks/scan-secrets.sh +0 -51
- package/templates/.cursor/hooks/scope-guard.sh +0 -52
- package/templates/.cursor/hooks/session-log.sh +0 -924
- package/templates/.cursor/hooks/validate-spec.sh +0 -83
- package/templates/.cursor/hooks.json +0 -76
- package/templates/.cursor/rules/00-claims-verification.mdc +0 -144
- package/templates/.cursor/rules/01-working-style.mdc +0 -50
- package/templates/.cursor/rules/02-quality-gates.mdc +0 -368
- package/templates/.cursor/rules/03-naming-and-refactor.mdc +0 -33
- package/templates/.cursor/rules/04-logging-language-style.mdc +0 -23
- package/templates/.cursor/rules/05-safe-defaults-guards.mdc +0 -23
- package/templates/.cursor/rules/06-typescript-conventions.mdc +0 -36
- package/templates/.cursor/rules/07-process-ops.mdc +0 -20
- package/templates/.cursor/rules/08-solid-and-architecture.mdc +0 -16
- package/templates/.cursor/rules/09-docstrings.mdc +0 -89
- package/templates/.cursor/rules/10-documentation-quality-standards.mdc +0 -385
- package/templates/.cursor/rules/11-scope-management-waivers.mdc +0 -381
- package/templates/.cursor/rules/12-implementation-completeness.mdc +0 -516
- package/templates/.cursor/rules/13-language-agnostic-standards.mdc +0 -578
- package/templates/.cursor/rules/README.md +0 -148
- package/templates/.github/copilot-instructions.md +0 -82
- package/templates/.idea/runConfigurations/CAWS_Evaluate.xml +0 -5
- package/templates/.idea/runConfigurations/CAWS_Validate.xml +0 -5
- package/templates/.junie/guidelines.md +0 -73
- package/templates/.vscode/launch.json +0 -17
- package/templates/.vscode/settings.json +0 -95
- package/templates/.windsurf/rules/caws-quality-standards.md +0 -54
- package/templates/.windsurf/workflows/caws-guided-development.md +0 -92
- package/templates/CLAUDE.md +0 -174
- package/templates/COMMIT_CONVENTIONS.md +0 -86
- package/templates/OIDC_SETUP.md +0 -300
- package/templates/agents.md +0 -145
- package/templates/codemod/README.md +0 -1
- package/templates/codemod/test.js +0 -93
- package/templates/docs/README.md +0 -151
- package/templates/scripts/new_feature.sh +0 -80
- package/templates/scripts/quality-gates/check-god-objects.js +0 -146
- package/templates/scripts/quality-gates/run-quality-gates.js +0 -50
- package/templates/scripts/v3/analysis/todo_analyzer.py +0 -1997
|
@@ -1,242 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Jest Configuration Generator
|
|
3
|
-
* Generates Jest configuration for TypeScript projects
|
|
4
|
-
* @author @darianrosebrook
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
const fs = require('fs-extra');
|
|
8
|
-
const path = require('path');
|
|
9
|
-
const chalk = require('chalk');
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* Generate Jest configuration for TypeScript project
|
|
13
|
-
* @param {Object} options - Configuration options
|
|
14
|
-
* @returns {string} Jest configuration content
|
|
15
|
-
*/
|
|
16
|
-
function generateJestConfig(options = {}) {
|
|
17
|
-
const {
|
|
18
|
-
preset = 'ts-jest',
|
|
19
|
-
testEnvironment = 'node',
|
|
20
|
-
rootDir = '.',
|
|
21
|
-
testMatch = ['**/__tests__/**/*.ts', '**/?(*.)+(spec|test).ts'],
|
|
22
|
-
moduleFileExtensions = ['ts', 'tsx', 'js', 'jsx', 'json', 'node'],
|
|
23
|
-
collectCoverageFrom = ['src/**/*.ts', '!src/**/*.d.ts', '!src/**/*.test.ts'],
|
|
24
|
-
coverageThreshold = {
|
|
25
|
-
global: {
|
|
26
|
-
branches: 80,
|
|
27
|
-
functions: 80,
|
|
28
|
-
lines: 80,
|
|
29
|
-
statements: 80,
|
|
30
|
-
},
|
|
31
|
-
},
|
|
32
|
-
} = options;
|
|
33
|
-
|
|
34
|
-
const config = {
|
|
35
|
-
preset,
|
|
36
|
-
testEnvironment,
|
|
37
|
-
rootDir,
|
|
38
|
-
testMatch,
|
|
39
|
-
moduleFileExtensions,
|
|
40
|
-
collectCoverageFrom,
|
|
41
|
-
coverageThreshold,
|
|
42
|
-
transform: {
|
|
43
|
-
'^.+\\.tsx?$': [
|
|
44
|
-
'ts-jest',
|
|
45
|
-
{
|
|
46
|
-
tsconfig: 'tsconfig.json',
|
|
47
|
-
},
|
|
48
|
-
],
|
|
49
|
-
},
|
|
50
|
-
moduleNameMapper: {
|
|
51
|
-
'^@/(.*)$': '<rootDir>/src/$1',
|
|
52
|
-
},
|
|
53
|
-
};
|
|
54
|
-
|
|
55
|
-
return `module.exports = ${JSON.stringify(config, null, 2)};\n`;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
/**
|
|
59
|
-
* Generate test setup file for TypeScript
|
|
60
|
-
* @returns {string} Setup file content
|
|
61
|
-
*/
|
|
62
|
-
function generateTestSetup() {
|
|
63
|
-
return `/**
|
|
64
|
-
* Jest setup file for TypeScript tests
|
|
65
|
-
* @author @darianrosebrook
|
|
66
|
-
*/
|
|
67
|
-
|
|
68
|
-
// Add custom matchers or global test setup here
|
|
69
|
-
beforeAll(() => {
|
|
70
|
-
// Global setup
|
|
71
|
-
});
|
|
72
|
-
|
|
73
|
-
afterAll(() => {
|
|
74
|
-
// Global teardown
|
|
75
|
-
});
|
|
76
|
-
`;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
/**
|
|
80
|
-
* Install Jest and TypeScript dependencies
|
|
81
|
-
* @param {string} projectDir - Project directory
|
|
82
|
-
* @param {Object} packageJson - Existing package.json
|
|
83
|
-
* @returns {Promise<Object>} Installation result
|
|
84
|
-
*/
|
|
85
|
-
async function installJestDependencies(projectDir, packageJson) {
|
|
86
|
-
const dependencies = ['jest', '@types/jest', 'ts-jest'];
|
|
87
|
-
|
|
88
|
-
// Check which dependencies are already installed
|
|
89
|
-
const allDeps = {
|
|
90
|
-
...packageJson.dependencies,
|
|
91
|
-
...packageJson.devDependencies,
|
|
92
|
-
};
|
|
93
|
-
|
|
94
|
-
const toInstall = dependencies.filter((dep) => !(dep in allDeps));
|
|
95
|
-
|
|
96
|
-
if (toInstall.length === 0) {
|
|
97
|
-
return {
|
|
98
|
-
installed: false,
|
|
99
|
-
message: 'All Jest dependencies already installed',
|
|
100
|
-
dependencies: [],
|
|
101
|
-
};
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
return {
|
|
105
|
-
installed: false,
|
|
106
|
-
needsInstall: true,
|
|
107
|
-
dependencies: toInstall,
|
|
108
|
-
installCommand: `npm install --save-dev ${toInstall.join(' ')}`,
|
|
109
|
-
};
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
/**
|
|
113
|
-
* Configure Jest for TypeScript project
|
|
114
|
-
* @param {string} projectDir - Project directory path
|
|
115
|
-
* @param {Object} options - Configuration options
|
|
116
|
-
* @returns {Promise<Object>} Configuration result
|
|
117
|
-
*/
|
|
118
|
-
async function configureJestForTypeScript(projectDir = process.cwd(), options = {}) {
|
|
119
|
-
const { force = false, quiet = false } = options;
|
|
120
|
-
|
|
121
|
-
// Check if Jest config already exists
|
|
122
|
-
const jestConfigPath = path.join(projectDir, 'jest.config.js');
|
|
123
|
-
if (fs.existsSync(jestConfigPath) && !force) {
|
|
124
|
-
return {
|
|
125
|
-
configured: false,
|
|
126
|
-
skipped: true,
|
|
127
|
-
message: 'Jest configuration already exists',
|
|
128
|
-
path: jestConfigPath,
|
|
129
|
-
};
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
// Generate Jest config
|
|
133
|
-
const jestConfig = generateJestConfig();
|
|
134
|
-
await fs.writeFile(jestConfigPath, jestConfig);
|
|
135
|
-
|
|
136
|
-
if (!quiet) {
|
|
137
|
-
console.log(chalk.green('Created jest.config.js'));
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
// Generate test setup file
|
|
141
|
-
const setupPath = path.join(projectDir, 'tests', 'setup.ts');
|
|
142
|
-
await fs.ensureDir(path.join(projectDir, 'tests'));
|
|
143
|
-
await fs.writeFile(setupPath, generateTestSetup());
|
|
144
|
-
|
|
145
|
-
if (!quiet) {
|
|
146
|
-
console.log(chalk.green('Created tests/setup.ts'));
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
// Update package.json with test script if needed
|
|
150
|
-
const packageJsonPath = path.join(projectDir, 'package.json');
|
|
151
|
-
if (fs.existsSync(packageJsonPath)) {
|
|
152
|
-
const packageJson = JSON.parse(await fs.readFile(packageJsonPath, 'utf8'));
|
|
153
|
-
|
|
154
|
-
if (!packageJson.scripts) {
|
|
155
|
-
packageJson.scripts = {};
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
if (!packageJson.scripts.test) {
|
|
159
|
-
packageJson.scripts.test = 'jest';
|
|
160
|
-
packageJson.scripts['test:coverage'] = 'jest --coverage';
|
|
161
|
-
packageJson.scripts['test:watch'] = 'jest --watch';
|
|
162
|
-
|
|
163
|
-
await fs.writeFile(packageJsonPath, JSON.stringify(packageJson, null, 2) + '\n');
|
|
164
|
-
|
|
165
|
-
if (!quiet) {
|
|
166
|
-
console.log(chalk.green('Added test scripts to package.json'));
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
return {
|
|
172
|
-
configured: true,
|
|
173
|
-
files: [jestConfigPath, setupPath],
|
|
174
|
-
nextSteps: [
|
|
175
|
-
'Install dependencies: npm install --save-dev jest @types/jest ts-jest',
|
|
176
|
-
'Run tests: npm test',
|
|
177
|
-
'Run with coverage: npm run test:coverage',
|
|
178
|
-
],
|
|
179
|
-
};
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
/**
|
|
183
|
-
* Get Jest configuration recommendations
|
|
184
|
-
* @param {string} projectDir - Project directory path
|
|
185
|
-
* @returns {Object} Recommendations
|
|
186
|
-
*/
|
|
187
|
-
function getJestRecommendations(projectDir = process.cwd()) {
|
|
188
|
-
const recommendations = [];
|
|
189
|
-
const hasJestConfig = fs.existsSync(path.join(projectDir, 'jest.config.js'));
|
|
190
|
-
const packageJsonPath = path.join(projectDir, 'package.json');
|
|
191
|
-
|
|
192
|
-
if (fs.existsSync(packageJsonPath)) {
|
|
193
|
-
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
|
|
194
|
-
const allDeps = {
|
|
195
|
-
...packageJson.dependencies,
|
|
196
|
-
...packageJson.devDependencies,
|
|
197
|
-
};
|
|
198
|
-
|
|
199
|
-
if (!hasJestConfig && !('jest' in allDeps)) {
|
|
200
|
-
recommendations.push({
|
|
201
|
-
type: 'missing_framework',
|
|
202
|
-
severity: 'high',
|
|
203
|
-
message: 'No testing framework detected',
|
|
204
|
-
fix: 'Install Jest: npm install --save-dev jest @types/jest ts-jest',
|
|
205
|
-
autoFixable: false,
|
|
206
|
-
});
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
if ('typescript' in allDeps && 'jest' in allDeps && !('ts-jest' in allDeps)) {
|
|
210
|
-
recommendations.push({
|
|
211
|
-
type: 'missing_ts_jest',
|
|
212
|
-
severity: 'high',
|
|
213
|
-
message: 'TypeScript project with Jest but missing ts-jest',
|
|
214
|
-
fix: 'Install ts-jest: npm install --save-dev ts-jest',
|
|
215
|
-
autoFixable: false,
|
|
216
|
-
});
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
if (!hasJestConfig && 'jest' in allDeps) {
|
|
220
|
-
recommendations.push({
|
|
221
|
-
type: 'missing_config',
|
|
222
|
-
severity: 'medium',
|
|
223
|
-
message: 'Jest installed but not configured',
|
|
224
|
-
fix: 'Run: caws scaffold to generate Jest configuration',
|
|
225
|
-
autoFixable: true,
|
|
226
|
-
});
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
return {
|
|
231
|
-
hasIssues: recommendations.length > 0,
|
|
232
|
-
recommendations,
|
|
233
|
-
};
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
module.exports = {
|
|
237
|
-
configureJestForTypeScript,
|
|
238
|
-
generateJestConfig,
|
|
239
|
-
generateTestSetup,
|
|
240
|
-
installJestDependencies,
|
|
241
|
-
getJestRecommendations,
|
|
242
|
-
};
|
|
@@ -1,237 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Working Spec Generation Utilities
|
|
3
|
-
* Functions for generating and validating CAWS working specifications
|
|
4
|
-
* @author @darianrosebrook
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
const yaml = require('js-yaml');
|
|
8
|
-
const chalk = require('chalk');
|
|
9
|
-
|
|
10
|
-
// Import validation utilities
|
|
11
|
-
const { validateWorkingSpec } = require('../validation/spec-validation');
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Generate working spec YAML with user input
|
|
15
|
-
* @param {Object} answers - User responses
|
|
16
|
-
* @returns {string} - Generated YAML content
|
|
17
|
-
*/
|
|
18
|
-
function generateWorkingSpec(answers) {
|
|
19
|
-
const template = {
|
|
20
|
-
id: answers.projectId || 'PROJ-001',
|
|
21
|
-
title: answers.projectTitle || 'New CAWS Project',
|
|
22
|
-
risk_tier: answers.riskTier || 2,
|
|
23
|
-
mode: answers.projectMode || 'feature',
|
|
24
|
-
change_budget: {
|
|
25
|
-
max_files: answers.maxFiles || 25,
|
|
26
|
-
max_loc: answers.maxLoc || 1000,
|
|
27
|
-
},
|
|
28
|
-
blast_radius: {
|
|
29
|
-
modules: (answers.blastModules || 'src, tests')
|
|
30
|
-
.split(',')
|
|
31
|
-
.map((m) => m.trim())
|
|
32
|
-
.filter((m) => m),
|
|
33
|
-
data_migration: answers.dataMigration ?? false,
|
|
34
|
-
},
|
|
35
|
-
operational_rollback_slo: answers.rollbackSlo || '5m',
|
|
36
|
-
threats: (answers.projectThreats || '')
|
|
37
|
-
.split('\n')
|
|
38
|
-
.map((t) => t.trim())
|
|
39
|
-
.filter((t) => t && !t.startsWith('-') === false), // Allow lines starting with -
|
|
40
|
-
scope: {
|
|
41
|
-
in: (answers.scopeIn || 'src/, tests/')
|
|
42
|
-
.split(',')
|
|
43
|
-
.map((s) => s.trim())
|
|
44
|
-
.filter((s) => s),
|
|
45
|
-
out: (answers.scopeOut || 'node_modules/, dist/, build/')
|
|
46
|
-
.split(',')
|
|
47
|
-
.map((s) => s.trim())
|
|
48
|
-
.filter((s) => s)
|
|
49
|
-
// Remove glob patterns - scope.out should only contain directory paths
|
|
50
|
-
.filter((s) => !s.includes('*') && !s.includes('?'))
|
|
51
|
-
// Ensure paths end with / for directories or are explicit file paths
|
|
52
|
-
.map((s) => {
|
|
53
|
-
// If it's a directory pattern without trailing slash, add it
|
|
54
|
-
if (!s.includes('.') && !s.endsWith('/')) {
|
|
55
|
-
return s + '/';
|
|
56
|
-
}
|
|
57
|
-
return s;
|
|
58
|
-
}),
|
|
59
|
-
},
|
|
60
|
-
invariants: (answers.projectInvariants || 'System maintains data consistency')
|
|
61
|
-
.split('\n')
|
|
62
|
-
.map((i) => i.trim())
|
|
63
|
-
.filter((i) => i),
|
|
64
|
-
acceptance: (
|
|
65
|
-
answers.acceptanceCriteria || 'Given current state, when action occurs, then expected result'
|
|
66
|
-
)
|
|
67
|
-
.split('\n')
|
|
68
|
-
.filter((a) => a.trim())
|
|
69
|
-
.map((criteria, index) => {
|
|
70
|
-
const id = `A${index + 1}`;
|
|
71
|
-
const upperCriteria = criteria.toUpperCase();
|
|
72
|
-
|
|
73
|
-
// Try different variations of the format
|
|
74
|
-
let given = '';
|
|
75
|
-
let when = '';
|
|
76
|
-
let then = '';
|
|
77
|
-
|
|
78
|
-
if (
|
|
79
|
-
upperCriteria.includes('GIVEN') &&
|
|
80
|
-
upperCriteria.includes('WHEN') &&
|
|
81
|
-
upperCriteria.includes('THEN')
|
|
82
|
-
) {
|
|
83
|
-
given = criteria.split(/WHEN/i)[0]?.replace(/GIVEN/i, '').trim() || '';
|
|
84
|
-
const whenThen = criteria.split(/WHEN/i)[1];
|
|
85
|
-
when = whenThen?.split(/THEN/i)[0]?.trim() || '';
|
|
86
|
-
then = whenThen?.split(/THEN/i)[1]?.trim() || '';
|
|
87
|
-
} else {
|
|
88
|
-
// Fallback: just split by lines and create simple criteria
|
|
89
|
-
given = 'Current system state';
|
|
90
|
-
when = criteria.replace(/^(GIVEN|WHEN|THEN)/i, '').trim();
|
|
91
|
-
then = 'Expected behavior occurs';
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
return {
|
|
95
|
-
id,
|
|
96
|
-
given: given || 'Current system state',
|
|
97
|
-
when: when || criteria,
|
|
98
|
-
then: then || 'Expected behavior occurs',
|
|
99
|
-
};
|
|
100
|
-
}),
|
|
101
|
-
non_functional: {
|
|
102
|
-
a11y: (answers.a11yRequirements || 'keyboard')
|
|
103
|
-
.split(',')
|
|
104
|
-
.map((a) => a.trim())
|
|
105
|
-
.filter((a) => a),
|
|
106
|
-
perf: { api_p95_ms: answers.perfBudget || 250 },
|
|
107
|
-
security: (answers.securityRequirements || 'validation')
|
|
108
|
-
.split(',')
|
|
109
|
-
.map((s) => s.trim())
|
|
110
|
-
.filter((s) => s),
|
|
111
|
-
},
|
|
112
|
-
contracts: (() => {
|
|
113
|
-
// If contract type/path provided, use it
|
|
114
|
-
if (answers.contractType && answers.contractPath) {
|
|
115
|
-
return [
|
|
116
|
-
{
|
|
117
|
-
type: answers.contractType,
|
|
118
|
-
path: answers.contractPath,
|
|
119
|
-
},
|
|
120
|
-
];
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
// For Tier 1 & 2, provide minimal project_setup contract if none specified
|
|
124
|
-
const riskTier = answers.riskTier || 2;
|
|
125
|
-
if (riskTier === 1 || riskTier === 2) {
|
|
126
|
-
return [
|
|
127
|
-
{
|
|
128
|
-
type: 'project_setup',
|
|
129
|
-
path: '.caws/working-spec.yaml',
|
|
130
|
-
description:
|
|
131
|
-
'Project-level CAWS configuration. Feature-specific contracts will be added as features are developed.',
|
|
132
|
-
},
|
|
133
|
-
];
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
// Tier 3 doesn't require contracts
|
|
137
|
-
return [];
|
|
138
|
-
})(),
|
|
139
|
-
observability: {
|
|
140
|
-
logs: (answers.observabilityLogs || '')
|
|
141
|
-
.split(',')
|
|
142
|
-
.map((l) => l.trim())
|
|
143
|
-
.filter((l) => l),
|
|
144
|
-
metrics: (answers.observabilityMetrics || '')
|
|
145
|
-
.split(',')
|
|
146
|
-
.map((m) => m.trim())
|
|
147
|
-
.filter((m) => m),
|
|
148
|
-
traces: (answers.observabilityTraces || '')
|
|
149
|
-
.split(',')
|
|
150
|
-
.map((t) => t.trim())
|
|
151
|
-
.filter((t) => t),
|
|
152
|
-
},
|
|
153
|
-
migrations: (answers.migrationPlan || '')
|
|
154
|
-
.split('\n')
|
|
155
|
-
.map((m) => m.trim())
|
|
156
|
-
.filter((m) => m),
|
|
157
|
-
rollback: (answers.rollbackPlan || '')
|
|
158
|
-
.split('\n')
|
|
159
|
-
.map((r) => r.trim())
|
|
160
|
-
.filter((r) => r),
|
|
161
|
-
human_override: answers.needsOverride
|
|
162
|
-
? {
|
|
163
|
-
enabled: true,
|
|
164
|
-
approver: answers.overrideApprover,
|
|
165
|
-
rationale: answers.overrideRationale,
|
|
166
|
-
waived_gates: answers.waivedGates,
|
|
167
|
-
approved_at: new Date().toISOString(),
|
|
168
|
-
expires_at: new Date(
|
|
169
|
-
Date.now() + answers.overrideExpiresDays * 24 * 60 * 60 * 1000
|
|
170
|
-
).toISOString(),
|
|
171
|
-
}
|
|
172
|
-
: undefined,
|
|
173
|
-
experimental_mode: answers.isExperimental
|
|
174
|
-
? {
|
|
175
|
-
enabled: true,
|
|
176
|
-
rationale: answers.experimentalRationale,
|
|
177
|
-
expires_at: new Date(
|
|
178
|
-
Date.now() + answers.experimentalExpiresDays * 24 * 60 * 60 * 1000
|
|
179
|
-
).toISOString(),
|
|
180
|
-
sandbox_location: answers.experimentalSandbox,
|
|
181
|
-
}
|
|
182
|
-
: undefined,
|
|
183
|
-
ai_assessment: {
|
|
184
|
-
confidence_level: answers.aiConfidence || 0.8,
|
|
185
|
-
uncertainty_areas: (answers.uncertaintyAreas || '')
|
|
186
|
-
.split(',')
|
|
187
|
-
.map((a) => a.trim())
|
|
188
|
-
.filter((a) => a),
|
|
189
|
-
complexity_factors: (answers.complexityFactors || '')
|
|
190
|
-
.split(',')
|
|
191
|
-
.map((f) => f.trim())
|
|
192
|
-
.filter((f) => f),
|
|
193
|
-
risk_factors: [], // Could be populated by AI analysis
|
|
194
|
-
},
|
|
195
|
-
};
|
|
196
|
-
|
|
197
|
-
return yaml.dump(template, { indent: 2 });
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
/**
|
|
201
|
-
* Validate generated working spec against JSON schema
|
|
202
|
-
* @param {string} specContent - YAML spec content
|
|
203
|
-
* @param {Object} answers - User responses for error context
|
|
204
|
-
*/
|
|
205
|
-
function validateGeneratedSpec(specContent, _answers) {
|
|
206
|
-
try {
|
|
207
|
-
const spec = yaml.load(specContent);
|
|
208
|
-
|
|
209
|
-
const isValid = validateWorkingSpec(spec);
|
|
210
|
-
|
|
211
|
-
if (!isValid) {
|
|
212
|
-
console.error(chalk.red('Generated working spec failed validation:'));
|
|
213
|
-
validateWorkingSpec.errors.forEach((error) => {
|
|
214
|
-
console.error(` - ${error.instancePath || 'root'}: ${error.message}`);
|
|
215
|
-
});
|
|
216
|
-
|
|
217
|
-
// Provide helpful guidance
|
|
218
|
-
console.log(chalk.blue('\nValidation Tips:'));
|
|
219
|
-
console.log(' - Ensure risk_tier is 1, 2, or 3');
|
|
220
|
-
console.log(' - Check that scope.in is not empty');
|
|
221
|
-
console.log(' - Verify invariants and acceptance criteria are provided');
|
|
222
|
-
console.log(' - For tier 1 and 2, ensure contracts are specified');
|
|
223
|
-
|
|
224
|
-
process.exit(1);
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
console.log(chalk.green('Generated working spec passed validation'));
|
|
228
|
-
} catch (error) {
|
|
229
|
-
console.error(chalk.red('Error validating working spec:'), error.message);
|
|
230
|
-
process.exit(1);
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
module.exports = {
|
|
235
|
-
generateWorkingSpec,
|
|
236
|
-
validateGeneratedSpec,
|
|
237
|
-
};
|
package/dist/minimal-cli.js
DELETED
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* @fileoverview Minimal CAWS CLI for testing and development
|
|
5
|
-
* Provides a lightweight CLI structure with version and help commands
|
|
6
|
-
* for quick verification of CLI functionality.
|
|
7
|
-
* @author @darianrosebrook
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
const { Command } = require('commander');
|
|
11
|
-
const chalk = require('chalk');
|
|
12
|
-
|
|
13
|
-
const program = new Command();
|
|
14
|
-
|
|
15
|
-
// Configuration
|
|
16
|
-
const CLI_VERSION = require('../package.json').version;
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* Show version information
|
|
20
|
-
*/
|
|
21
|
-
function showVersion() {
|
|
22
|
-
console.log(chalk.bold(`CAWS CLI v${CLI_VERSION}`));
|
|
23
|
-
console.log(chalk.cyan('Coding Agent Workflow System - Scaffolding Tool'));
|
|
24
|
-
console.log(chalk.gray('Author: @darianrosebrook'));
|
|
25
|
-
console.log(chalk.gray('License: MIT'));
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* Initialize a new project
|
|
30
|
-
*/
|
|
31
|
-
async function initProject(projectName, _options) {
|
|
32
|
-
console.log(chalk.cyan(`Initializing new CAWS project: ${projectName}`));
|
|
33
|
-
|
|
34
|
-
try {
|
|
35
|
-
if (!projectName || projectName.trim() === '') {
|
|
36
|
-
console.error(chalk.red('Project name is required'));
|
|
37
|
-
console.error(chalk.blue('Usage: caws init <project-name>'));
|
|
38
|
-
process.exit(1);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
console.log(chalk.green('Project initialization started'));
|
|
42
|
-
console.log(chalk.bold('\nConfiguration Summary:'));
|
|
43
|
-
console.log(` ${chalk.cyan('Project')}: ${projectName}`);
|
|
44
|
-
console.log(` ${chalk.cyan('Status')}: Initialized`);
|
|
45
|
-
|
|
46
|
-
console.log(chalk.green('\nProject initialized successfully!'));
|
|
47
|
-
console.log(chalk.blue('\nFor help: caws --help'));
|
|
48
|
-
} catch (error) {
|
|
49
|
-
console.error(chalk.red('Error during project initialization:'), error.message);
|
|
50
|
-
process.exit(1);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
// CLI Commands
|
|
55
|
-
program
|
|
56
|
-
.name('caws')
|
|
57
|
-
.description('CAWS - Coding Agent Workflow System CLI')
|
|
58
|
-
.version(CLI_VERSION, '-v, --version', 'Show version information');
|
|
59
|
-
|
|
60
|
-
program
|
|
61
|
-
.command('init')
|
|
62
|
-
.alias('i')
|
|
63
|
-
.description('Initialize a new project with CAWS')
|
|
64
|
-
.argument('<project-name>', 'Name of the new project')
|
|
65
|
-
.action(initProject);
|
|
66
|
-
|
|
67
|
-
program.command('version').alias('v').description('Show version information').action(showVersion);
|
|
68
|
-
|
|
69
|
-
// Error handling
|
|
70
|
-
program.exitOverride((err) => {
|
|
71
|
-
if (err.code === 'commander.help') {
|
|
72
|
-
process.exit(0);
|
|
73
|
-
}
|
|
74
|
-
console.error(chalk.red('Error:'), err.message);
|
|
75
|
-
process.exit(1);
|
|
76
|
-
});
|
|
77
|
-
|
|
78
|
-
// Parse and run
|
|
79
|
-
try {
|
|
80
|
-
program.parse();
|
|
81
|
-
} catch (error) {
|
|
82
|
-
if (error.code === 'commander.help' || error.code === 'commander.version') {
|
|
83
|
-
process.exit(0);
|
|
84
|
-
} else {
|
|
85
|
-
console.error(chalk.red('Error:'), error.message);
|
|
86
|
-
process.exit(1);
|
|
87
|
-
}
|
|
88
|
-
}
|