@paths.design/caws-cli 10.2.0 → 11.1.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 +45 -787
- package/dist/init/harness-detect.d.ts +18 -0
- package/dist/init/harness-detect.d.ts.map +1 -0
- package/dist/init/harness-detect.js +90 -0
- package/dist/init/harness-detect.js.map +1 -0
- package/dist/init/hook-install.d.ts +53 -0
- package/dist/init/hook-install.d.ts.map +1 -0
- package/dist/init/hook-install.js +421 -0
- package/dist/init/hook-install.js.map +1 -0
- package/dist/init/hook-packs/manifest-claude-code.d.ts +4 -0
- package/dist/init/hook-packs/manifest-claude-code.d.ts.map +1 -0
- package/dist/init/hook-packs/manifest-claude-code.js +190 -0
- package/dist/init/hook-packs/manifest-claude-code.js.map +1 -0
- package/dist/init/hook-packs/register.d.ts +19 -0
- package/dist/init/hook-packs/register.d.ts.map +1 -0
- package/dist/init/hook-packs/register.js +37 -0
- package/dist/init/hook-packs/register.js.map +1 -0
- package/dist/init/hook-packs/types.d.ts +123 -0
- package/dist/init/hook-packs/types.d.ts.map +1 -0
- package/dist/init/hook-packs/types.js +29 -0
- package/dist/init/hook-packs/types.js.map +1 -0
- 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 +208 -0
- package/dist/shell/commands/gates.js.map +1 -0
- package/dist/shell/commands/init.d.ts +17 -0
- package/dist/shell/commands/init.d.ts.map +1 -0
- package/dist/shell/commands/init.js +168 -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/specs.d.ts +41 -0
- package/dist/shell/commands/specs.d.ts.map +1 -0
- package/dist/shell/commands/specs.js +264 -0
- package/dist/shell/commands/specs.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/commands/worktree.d.ts +38 -0
- package/dist/shell/commands/worktree.d.ts.map +1 -0
- package/dist/shell/commands/worktree.js +286 -0
- package/dist/shell/commands/worktree.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 +117 -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/local-evaluators/budget-limit.d.ts +24 -0
- package/dist/shell/gates/local-evaluators/budget-limit.d.ts.map +1 -0
- package/dist/shell/gates/local-evaluators/budget-limit.js +67 -0
- package/dist/shell/gates/local-evaluators/budget-limit.js.map +1 -0
- package/dist/shell/gates/local-evaluators/diff-helpers.d.ts +25 -0
- package/dist/shell/gates/local-evaluators/diff-helpers.d.ts.map +1 -0
- package/dist/shell/gates/local-evaluators/diff-helpers.js +74 -0
- package/dist/shell/gates/local-evaluators/diff-helpers.js.map +1 -0
- package/dist/shell/gates/local-evaluators/index.d.ts +28 -0
- package/dist/shell/gates/local-evaluators/index.d.ts.map +1 -0
- package/dist/shell/gates/local-evaluators/index.js +67 -0
- package/dist/shell/gates/local-evaluators/index.js.map +1 -0
- package/dist/shell/gates/local-evaluators/scope-boundary.d.ts +23 -0
- package/dist/shell/gates/local-evaluators/scope-boundary.d.ts.map +1 -0
- package/dist/shell/gates/local-evaluators/scope-boundary.js +67 -0
- package/dist/shell/gates/local-evaluators/scope-boundary.js.map +1 -0
- package/dist/shell/gates/local-evaluators/spec-completeness.d.ts +12 -0
- package/dist/shell/gates/local-evaluators/spec-completeness.d.ts.map +1 -0
- package/dist/shell/gates/local-evaluators/spec-completeness.js +73 -0
- package/dist/shell/gates/local-evaluators/spec-completeness.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 +54 -0
- package/dist/shell/index.d.ts.map +1 -0
- package/dist/shell/index.js +85 -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 +464 -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-hook-pack.d.ts +16 -0
- package/dist/shell/render/init-hook-pack.d.ts.map +1 -0
- package/dist/shell/render/init-hook-pack.js +206 -0
- package/dist/shell/render/init-hook-pack.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 +34 -0
- package/dist/store/atomic-write.d.ts.map +1 -0
- package/dist/store/atomic-write.js +174 -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/lifecycle-lock.d.ts +34 -0
- package/dist/store/lifecycle-lock.d.ts.map +1 -0
- package/dist/store/lifecycle-lock.js +168 -0
- package/dist/store/lifecycle-lock.js.map +1 -0
- package/dist/store/lifecycle-transaction.d.ts +79 -0
- package/dist/store/lifecycle-transaction.d.ts.map +1 -0
- package/dist/store/lifecycle-transaction.js +319 -0
- package/dist/store/lifecycle-transaction.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 +69 -0
- package/dist/store/rules.d.ts.map +1 -0
- package/dist/store/rules.js +95 -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/specs-writer.d.ts +61 -0
- package/dist/store/specs-writer.d.ts.map +1 -0
- package/dist/store/specs-writer.js +506 -0
- package/dist/store/specs-writer.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/worktrees-writer.d.ts +77 -0
- package/dist/store/worktrees-writer.d.ts.map +1 -0
- package/dist/store/worktrees-writer.js +674 -0
- package/dist/store/worktrees-writer.js.map +1 -0
- package/dist/store/yaml-patch.d.ts +7 -0
- package/dist/store/yaml-patch.d.ts.map +1 -0
- package/dist/store/yaml-patch.js +250 -0
- package/dist/store/yaml-patch.js.map +1 -0
- package/dist/store/yaml-store.d.ts +9 -0
- package/dist/store/yaml-store.d.ts.map +1 -0
- package/dist/store/yaml-store.js +121 -0
- package/dist/store/yaml-store.js.map +1 -0
- package/package.json +15 -13
- package/dist/budget-derivation.js +0 -751
- package/dist/cicd-optimizer.js +0 -504
- package/dist/commands/agents.js +0 -124
- package/dist/commands/archive.js +0 -500
- package/dist/commands/burnup.js +0 -198
- package/dist/commands/diagnose.js +0 -525
- package/dist/commands/evaluate.js +0 -314
- package/dist/commands/gates.js +0 -149
- package/dist/commands/init.js +0 -857
- package/dist/commands/iterate.js +0 -417
- package/dist/commands/mode.js +0 -269
- package/dist/commands/parallel.js +0 -242
- package/dist/commands/plan.js +0 -438
- package/dist/commands/provenance.js +0 -1143
- package/dist/commands/quality-monitor.js +0 -284
- package/dist/commands/scope.js +0 -264
- package/dist/commands/session.js +0 -312
- package/dist/commands/sidecar.js +0 -74
- package/dist/commands/specs.js +0 -1656
- package/dist/commands/status.js +0 -1172
- package/dist/commands/templates.js +0 -237
- package/dist/commands/tool.js +0 -136
- package/dist/commands/tutorial.js +0 -480
- package/dist/commands/validate.js +0 -357
- package/dist/commands/verify-acs.js +0 -443
- package/dist/commands/waivers.js +0 -599
- package/dist/commands/workflow.js +0 -243
- package/dist/commands/worktree.js +0 -502
- package/dist/config/lite-scope.js +0 -158
- package/dist/config/modes.js +0 -347
- package/dist/constants/spec-types.js +0 -65
- package/dist/gates/budget-limit.js +0 -121
- package/dist/gates/feedback.js +0 -260
- package/dist/gates/format.js +0 -179
- package/dist/gates/god-object.js +0 -117
- package/dist/gates/pipeline.js +0 -167
- package/dist/gates/scope-boundary.js +0 -112
- package/dist/gates/spec-completeness.js +0 -109
- package/dist/gates/todo-detection.js +0 -205
- package/dist/generators/jest-config-generator.js +0 -242
- package/dist/generators/working-spec.js +0 -237
- package/dist/minimal-cli.js +0 -88
- package/dist/parallel/parallel-manager.js +0 -433
- package/dist/policy/PolicyManager.js +0 -470
- package/dist/scaffold/claude-hooks.js +0 -443
- package/dist/scaffold/cursor-hooks.js +0 -177
- package/dist/scaffold/git-hooks.js +0 -928
- package/dist/scaffold/index.js +0 -794
- package/dist/session/session-manager.js +0 -653
- package/dist/sidecars/index.js +0 -33
- package/dist/sidecars/listeners.js +0 -40
- package/dist/sidecars/provenance-summary.js +0 -238
- package/dist/sidecars/quality-gaps.js +0 -258
- package/dist/sidecars/schema.js +0 -149
- package/dist/sidecars/spec-drift.js +0 -151
- package/dist/sidecars/waiver-draft.js +0 -176
- package/dist/spec/SpecFileManager.js +0 -419
- package/dist/templates/.caws/schemas/policy.schema.json +0 -117
- package/dist/templates/.caws/schemas/scope.schema.json +0 -52
- package/dist/templates/.caws/schemas/waivers.schema.json +0 -106
- package/dist/templates/.caws/schemas/working-spec.schema.json +0 -340
- package/dist/templates/.caws/schemas/worktrees.schema.json +0 -38
- package/dist/templates/.caws/templates/working-spec.template.yml +0 -80
- package/dist/templates/.caws/tools/README.md +0 -18
- package/dist/templates/.caws/tools/scope-guard.js +0 -203
- package/dist/templates/.caws/tools-allow.json +0 -331
- package/dist/templates/.caws/waivers.yml +0 -19
- package/dist/templates/.claude/README.md +0 -190
- package/dist/templates/.claude/hooks/audit.sh +0 -121
- package/dist/templates/.claude/hooks/block-dangerous.sh +0 -203
- package/dist/templates/.claude/hooks/classify_command.py +0 -592
- package/dist/templates/.claude/hooks/doc-frontmatter-check.sh +0 -173
- package/dist/templates/.claude/hooks/lite-sprawl-check.sh +0 -145
- package/dist/templates/.claude/hooks/naming-check.sh +0 -100
- package/dist/templates/.claude/hooks/protected-paths.sh +0 -39
- package/dist/templates/.claude/hooks/quality-check.sh +0 -81
- package/dist/templates/.claude/hooks/scan-secrets.sh +0 -85
- package/dist/templates/.claude/hooks/scope-guard.sh +0 -381
- package/dist/templates/.claude/hooks/session-caws-status.sh +0 -117
- package/dist/templates/.claude/hooks/session-log.sh +0 -634
- package/dist/templates/.claude/hooks/simplification-guard.sh +0 -92
- package/dist/templates/.claude/hooks/stop-worktree-check.sh +0 -46
- package/dist/templates/.claude/hooks/test_classify_command.py +0 -370
- package/dist/templates/.claude/hooks/test_wrapper_smoke.sh +0 -96
- package/dist/templates/.claude/hooks/validate-spec.sh +0 -76
- package/dist/templates/.claude/hooks/worktree-guard.sh +0 -220
- package/dist/templates/.claude/hooks/worktree-write-guard.sh +0 -190
- package/dist/templates/.claude/rules/git-safety.md +0 -26
- package/dist/templates/.claude/rules/worktree-isolation.md +0 -101
- package/dist/templates/.claude/settings.json +0 -141
- package/dist/templates/.cursor/README.md +0 -299
- package/dist/templates/.cursor/hooks/audit.sh +0 -55
- package/dist/templates/.cursor/hooks/block-dangerous.sh +0 -84
- package/dist/templates/.cursor/hooks/caws-quality-check.sh +0 -52
- package/dist/templates/.cursor/hooks/caws-scope-guard.sh +0 -130
- package/dist/templates/.cursor/hooks/format.sh +0 -38
- package/dist/templates/.cursor/hooks/naming-check.sh +0 -64
- package/dist/templates/.cursor/hooks/scan-secrets.sh +0 -51
- package/dist/templates/.cursor/hooks/scope-guard.sh +0 -52
- package/dist/templates/.cursor/hooks/session-log.sh +0 -924
- package/dist/templates/.cursor/hooks/validate-spec.sh +0 -83
- package/dist/templates/.cursor/hooks.json +0 -76
- package/dist/templates/.cursor/rules/00-claims-verification.mdc +0 -144
- package/dist/templates/.cursor/rules/01-working-style.mdc +0 -50
- package/dist/templates/.cursor/rules/02-quality-gates.mdc +0 -368
- package/dist/templates/.cursor/rules/03-naming-and-refactor.mdc +0 -33
- package/dist/templates/.cursor/rules/04-logging-language-style.mdc +0 -23
- package/dist/templates/.cursor/rules/05-safe-defaults-guards.mdc +0 -23
- package/dist/templates/.cursor/rules/06-typescript-conventions.mdc +0 -36
- package/dist/templates/.cursor/rules/07-process-ops.mdc +0 -20
- package/dist/templates/.cursor/rules/08-solid-and-architecture.mdc +0 -16
- package/dist/templates/.cursor/rules/09-docstrings.mdc +0 -89
- package/dist/templates/.cursor/rules/10-documentation-quality-standards.mdc +0 -385
- package/dist/templates/.cursor/rules/11-scope-management-waivers.mdc +0 -381
- package/dist/templates/.cursor/rules/12-implementation-completeness.mdc +0 -516
- package/dist/templates/.cursor/rules/13-language-agnostic-standards.mdc +0 -578
- package/dist/templates/.cursor/rules/README.md +0 -148
- package/dist/templates/.github/copilot-instructions.md +0 -82
- package/dist/templates/.idea/runConfigurations/CAWS_Evaluate.xml +0 -5
- package/dist/templates/.idea/runConfigurations/CAWS_Validate.xml +0 -5
- package/dist/templates/.junie/guidelines.md +0 -73
- package/dist/templates/.vscode/launch.json +0 -17
- package/dist/templates/.vscode/settings.json +0 -95
- package/dist/templates/.windsurf/rules/caws-quality-standards.md +0 -54
- package/dist/templates/.windsurf/workflows/caws-guided-development.md +0 -92
- package/dist/templates/CLAUDE.md +0 -196
- package/dist/templates/COMMIT_CONVENTIONS.md +0 -86
- package/dist/templates/OIDC_SETUP.md +0 -300
- package/dist/templates/agents.md +0 -171
- package/dist/templates/codemod/README.md +0 -1
- package/dist/templates/codemod/test.js +0 -93
- package/dist/templates/docs/README.md +0 -151
- package/dist/templates/scripts/new_feature.sh +0 -80
- package/dist/templates/scripts/quality-gates/check-god-objects.js +0 -146
- package/dist/templates/scripts/quality-gates/run-quality-gates.js +0 -50
- package/dist/templates/scripts/v3/analysis/todo_analyzer.py +0 -1997
- package/dist/test-analysis.js +0 -786
- package/dist/tool-interface.js +0 -314
- package/dist/tool-loader.js +0 -303
- package/dist/tool-validator.js +0 -393
- package/dist/utils/agent-display.js +0 -210
- package/dist/utils/agent-session.js +0 -344
- package/dist/utils/async-utils.js +0 -188
- package/dist/utils/command-wrapper.js +0 -200
- package/dist/utils/event-log.js +0 -584
- package/dist/utils/event-renderer.js +0 -521
- package/dist/utils/finalization.js +0 -230
- package/dist/utils/git-lock.js +0 -119
- package/dist/utils/gitignore-updater.js +0 -158
- package/dist/utils/ide-detection.js +0 -133
- package/dist/utils/lifecycle-events.js +0 -94
- package/dist/utils/project-analysis.js +0 -367
- package/dist/utils/promise-utils.js +0 -72
- package/dist/utils/quality-gates-errors.js +0 -520
- package/dist/utils/quality-gates-utils.js +0 -387
- package/dist/utils/schema-validator.js +0 -50
- package/dist/utils/spec-resolver.js +0 -711
- package/dist/utils/typescript-detector.js +0 -369
- package/dist/utils/working-state.js +0 -530
- package/dist/utils/yaml-validation.js +0 -156
- package/dist/validation/spec-validation.js +0 -924
- package/dist/waivers-manager.js +0 -732
- package/dist/worktree/worktree-manager.js +0 -1735
- package/templates/.caws/schemas/policy.schema.json +0 -117
- package/templates/.caws/schemas/scope.schema.json +0 -52
- package/templates/.caws/schemas/waivers.schema.json +0 -106
- package/templates/.caws/schemas/working-spec.schema.json +0 -340
- package/templates/.caws/schemas/worktrees.schema.json +0 -38
- package/templates/.caws/templates/working-spec.template.yml +0 -80
- package/templates/.caws/tools/README.md +0 -18
- package/templates/.caws/tools/scope-guard.js +0 -203
- package/templates/.caws/tools-allow.json +0 -331
- package/templates/.caws/waivers.yml +0 -19
- package/templates/.claude/README.md +0 -190
- package/templates/.claude/hooks/audit.sh +0 -121
- package/templates/.claude/hooks/block-dangerous.sh +0 -203
- package/templates/.claude/hooks/classify_command.py +0 -592
- package/templates/.claude/hooks/doc-frontmatter-check.sh +0 -173
- package/templates/.claude/hooks/lite-sprawl-check.sh +0 -145
- package/templates/.claude/hooks/naming-check.sh +0 -100
- package/templates/.claude/hooks/protected-paths.sh +0 -39
- package/templates/.claude/hooks/quality-check.sh +0 -81
- package/templates/.claude/hooks/scan-secrets.sh +0 -85
- package/templates/.claude/hooks/scope-guard.sh +0 -381
- package/templates/.claude/hooks/session-caws-status.sh +0 -117
- package/templates/.claude/hooks/session-log.sh +0 -634
- package/templates/.claude/hooks/simplification-guard.sh +0 -92
- package/templates/.claude/hooks/stop-worktree-check.sh +0 -46
- package/templates/.claude/hooks/test_classify_command.py +0 -370
- package/templates/.claude/hooks/test_wrapper_smoke.sh +0 -96
- package/templates/.claude/hooks/validate-spec.sh +0 -76
- package/templates/.claude/hooks/worktree-guard.sh +0 -220
- package/templates/.claude/hooks/worktree-write-guard.sh +0 -190
- package/templates/.claude/rules/git-safety.md +0 -26
- package/templates/.claude/rules/worktree-isolation.md +0 -101
- package/templates/.claude/settings.json +0 -141
- package/templates/.cursor/README.md +0 -299
- package/templates/.cursor/hooks/audit.sh +0 -55
- package/templates/.cursor/hooks/block-dangerous.sh +0 -84
- package/templates/.cursor/hooks/caws-quality-check.sh +0 -52
- package/templates/.cursor/hooks/caws-scope-guard.sh +0 -130
- package/templates/.cursor/hooks/format.sh +0 -38
- package/templates/.cursor/hooks/naming-check.sh +0 -64
- package/templates/.cursor/hooks/scan-secrets.sh +0 -51
- package/templates/.cursor/hooks/scope-guard.sh +0 -52
- package/templates/.cursor/hooks/session-log.sh +0 -924
- package/templates/.cursor/hooks/validate-spec.sh +0 -83
- package/templates/.cursor/hooks.json +0 -76
- package/templates/.cursor/rules/00-claims-verification.mdc +0 -144
- package/templates/.cursor/rules/01-working-style.mdc +0 -50
- package/templates/.cursor/rules/02-quality-gates.mdc +0 -368
- package/templates/.cursor/rules/03-naming-and-refactor.mdc +0 -33
- package/templates/.cursor/rules/04-logging-language-style.mdc +0 -23
- package/templates/.cursor/rules/05-safe-defaults-guards.mdc +0 -23
- package/templates/.cursor/rules/06-typescript-conventions.mdc +0 -36
- package/templates/.cursor/rules/07-process-ops.mdc +0 -20
- package/templates/.cursor/rules/08-solid-and-architecture.mdc +0 -16
- package/templates/.cursor/rules/09-docstrings.mdc +0 -89
- package/templates/.cursor/rules/10-documentation-quality-standards.mdc +0 -385
- package/templates/.cursor/rules/11-scope-management-waivers.mdc +0 -381
- package/templates/.cursor/rules/12-implementation-completeness.mdc +0 -516
- package/templates/.cursor/rules/13-language-agnostic-standards.mdc +0 -578
- package/templates/.cursor/rules/README.md +0 -148
- package/templates/.github/copilot-instructions.md +0 -82
- package/templates/.idea/runConfigurations/CAWS_Evaluate.xml +0 -5
- package/templates/.idea/runConfigurations/CAWS_Validate.xml +0 -5
- package/templates/.junie/guidelines.md +0 -73
- package/templates/.vscode/launch.json +0 -17
- package/templates/.vscode/settings.json +0 -95
- package/templates/.windsurf/rules/caws-quality-standards.md +0 -54
- package/templates/.windsurf/workflows/caws-guided-development.md +0 -92
- package/templates/CLAUDE.md +0 -196
- package/templates/COMMIT_CONVENTIONS.md +0 -86
- package/templates/OIDC_SETUP.md +0 -300
- package/templates/agents.md +0 -171
- package/templates/codemod/README.md +0 -1
- package/templates/codemod/test.js +0 -93
- package/templates/docs/README.md +0 -151
- package/templates/scripts/new_feature.sh +0 -80
- package/templates/scripts/quality-gates/check-god-objects.js +0 -146
- package/templates/scripts/quality-gates/run-quality-gates.js +0 -50
- package/templates/scripts/v3/analysis/todo_analyzer.py +0 -1997
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evidence.js","sourceRoot":"","sources":["../../../src/shell/commands/evidence.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type QualityGatesRunner } from '../gates/quality-gates-adapter';
|
|
2
|
+
export interface GatesRunCommandOptions {
|
|
3
|
+
readonly cwd?: string;
|
|
4
|
+
readonly now?: () => Date;
|
|
5
|
+
readonly env?: NodeJS.ProcessEnv;
|
|
6
|
+
readonly out?: (line: string) => void;
|
|
7
|
+
readonly err?: (line: string) => void;
|
|
8
|
+
/** Extra args to pass to the subprocess after --json. */
|
|
9
|
+
readonly subprocessArgs?: readonly string[];
|
|
10
|
+
/** Injected subprocess runner (tests). */
|
|
11
|
+
readonly runner?: QualityGatesRunner;
|
|
12
|
+
/** Show structured data on rendered diagnostics. */
|
|
13
|
+
readonly showData?: boolean;
|
|
14
|
+
}
|
|
15
|
+
export interface GatesRunCommandRequest {
|
|
16
|
+
readonly specId: string;
|
|
17
|
+
}
|
|
18
|
+
export declare function runGatesRunCommand(request: GatesRunCommandRequest, opts?: GatesRunCommandOptions): number;
|
|
19
|
+
//# sourceMappingURL=gates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gates.d.ts","sourceRoot":"","sources":["../../../src/shell/commands/gates.ts"],"names":[],"mappings":"AA2CA,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,gCAAgC,CAAC;AAMxC,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACjC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,yDAAyD;IACzD,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,0CAA0C;IAC1C,QAAQ,CAAC,MAAM,CAAC,EAAE,kBAAkB,CAAC;IACrC,oDAAoD;IACpD,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B;AA6CD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,sBAAsB,EAC/B,IAAI,GAAE,sBAA2B,GAChC,MAAM,CA6JR"}
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// `caws gates run` — single policy-driven gate execution path.
|
|
3
|
+
//
|
|
4
|
+
// Pipeline:
|
|
5
|
+
// 1. resolveRepoRoot(cwd)
|
|
6
|
+
// 2. composeStoreSnapshot — we need the policy
|
|
7
|
+
// 3. policy presence check — gates cannot run without policy
|
|
8
|
+
// 4. resolveSession({ allowMint: true }) — we will append events
|
|
9
|
+
// 5. runQualityGates(adapter) — subprocess + JSON validation
|
|
10
|
+
// 6. deriveDispositions(report, policy) — policy decides block/warn/skip
|
|
11
|
+
// 7. For each disposition, appendEvent(`gate_evaluated`)
|
|
12
|
+
// 8. Render summary
|
|
13
|
+
// 9. Exit code:
|
|
14
|
+
// 0 if no disposition blocks
|
|
15
|
+
// 1 if any disposition blocks
|
|
16
|
+
// 2 on hard composition errors (no policy, subprocess contract failure,
|
|
17
|
+
// event append failure)
|
|
18
|
+
//
|
|
19
|
+
// The subprocess does NOT decide blocking. The policy does. The subprocess
|
|
20
|
+
// reports violations; this command groups them per policy-declared gate
|
|
21
|
+
// and applies policy.gates[gate].mode to compute outcome.
|
|
22
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
+
exports.runGatesRunCommand = runGatesRunCommand;
|
|
24
|
+
const store_1 = require("../../store");
|
|
25
|
+
const diagnostic_1 = require("../render/diagnostic");
|
|
26
|
+
const gates_1 = require("../render/gates");
|
|
27
|
+
const resolve_session_1 = require("../session/resolve-session");
|
|
28
|
+
const actor_1 = require("../session/actor");
|
|
29
|
+
const rules_1 = require("../rules");
|
|
30
|
+
const disposition_1 = require("../gates/disposition");
|
|
31
|
+
const local_evaluators_1 = require("../gates/local-evaluators");
|
|
32
|
+
const quality_gates_adapter_1 = require("../gates/quality-gates-adapter");
|
|
33
|
+
const waiver_filter_1 = require("../gates/waiver-filter");
|
|
34
|
+
const MAX_EVENT_VIOLATIONS = 100;
|
|
35
|
+
function dispositionToEventBody(args) {
|
|
36
|
+
const violations = args.disposition.violations
|
|
37
|
+
.slice(0, MAX_EVENT_VIOLATIONS)
|
|
38
|
+
.map((v) => ({
|
|
39
|
+
rule: typeof v.type === 'string' ? v.type : 'unknown',
|
|
40
|
+
subject: typeof v.file === 'string'
|
|
41
|
+
? typeof v.line === 'number'
|
|
42
|
+
? `${v.file}:${v.line}`
|
|
43
|
+
: v.file
|
|
44
|
+
: (v.gate ?? 'unknown'),
|
|
45
|
+
...(v.message !== undefined ? { details: v.message } : {}),
|
|
46
|
+
}));
|
|
47
|
+
const ev = args.waiverEvidence;
|
|
48
|
+
const waivedCount = ev?.waived_count ?? 0;
|
|
49
|
+
return {
|
|
50
|
+
event: 'gate_evaluated',
|
|
51
|
+
ts: args.ts,
|
|
52
|
+
actor: args.actor,
|
|
53
|
+
spec_id: args.specId,
|
|
54
|
+
data: {
|
|
55
|
+
gate_id: args.disposition.gate_id,
|
|
56
|
+
mode: args.disposition.mode,
|
|
57
|
+
result: args.disposition.outcome === 'skipped' ? 'skipped' : args.disposition.outcome,
|
|
58
|
+
violations,
|
|
59
|
+
waived_count: waivedCount,
|
|
60
|
+
...(ev !== undefined && ev.waiver_ids.length > 0
|
|
61
|
+
? { waiver_ids: ev.waiver_ids.slice() }
|
|
62
|
+
: {}),
|
|
63
|
+
},
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
function runGatesRunCommand(request, opts = {}) {
|
|
67
|
+
const cwd = opts.cwd ?? process.cwd();
|
|
68
|
+
const nowFn = opts.now ?? (() => new Date());
|
|
69
|
+
const now = nowFn();
|
|
70
|
+
const env = opts.env ?? process.env;
|
|
71
|
+
const out = opts.out ?? ((s) => process.stdout.write(s + '\n'));
|
|
72
|
+
const err = opts.err ?? ((s) => process.stderr.write(s + '\n'));
|
|
73
|
+
const showData = opts.showData === true;
|
|
74
|
+
if (typeof request.specId !== 'string' || request.specId.length === 0) {
|
|
75
|
+
err('caws gates run: --spec is required.');
|
|
76
|
+
err(`(rule: ${rules_1.SHELL_RULES.COMMAND_MISSING_SPEC_ID})`);
|
|
77
|
+
return 1;
|
|
78
|
+
}
|
|
79
|
+
// 1. Repo root
|
|
80
|
+
const repoRootResult = (0, store_1.resolveRepoRoot)(cwd);
|
|
81
|
+
if (!repoRootResult.ok) {
|
|
82
|
+
err('caws gates run: failed to resolve repo root.');
|
|
83
|
+
err((0, diagnostic_1.renderDiagnostics)(repoRootResult.errors, { showData }));
|
|
84
|
+
return 2;
|
|
85
|
+
}
|
|
86
|
+
const { repoRoot, cawsDir } = repoRootResult.value;
|
|
87
|
+
// 2. Snapshot for policy
|
|
88
|
+
let snapshot;
|
|
89
|
+
try {
|
|
90
|
+
snapshot = (0, store_1.composeStoreSnapshot)({ repoRoot, cawsDir });
|
|
91
|
+
}
|
|
92
|
+
catch (e) {
|
|
93
|
+
err(`caws gates run: store composition failed: ${e.message}`);
|
|
94
|
+
return 2;
|
|
95
|
+
}
|
|
96
|
+
// 3. Policy required — gates cannot decide mode without it.
|
|
97
|
+
if (snapshot.policy === undefined) {
|
|
98
|
+
err(`caws gates run: no policy.yaml loaded — gates require policy to derive ` +
|
|
99
|
+
`block/warn/skip semantics. Run \`caws doctor\` for details.`);
|
|
100
|
+
err(`(rule: ${rules_1.SHELL_RULES.GATES_POLICY_REQUIRED})`);
|
|
101
|
+
if (snapshot.policyErrors.length > 0) {
|
|
102
|
+
err((0, diagnostic_1.renderDiagnostics)(snapshot.policyErrors, { showData }));
|
|
103
|
+
}
|
|
104
|
+
return 2;
|
|
105
|
+
}
|
|
106
|
+
const policy = snapshot.policy;
|
|
107
|
+
// 4. Session (write op — gates append events)
|
|
108
|
+
const sessionResult = (0, resolve_session_1.resolveSession)({
|
|
109
|
+
cawsDir,
|
|
110
|
+
worktreeRoot: cwd,
|
|
111
|
+
env,
|
|
112
|
+
now: nowFn,
|
|
113
|
+
allowMint: true,
|
|
114
|
+
});
|
|
115
|
+
if (!sessionResult.ok) {
|
|
116
|
+
err('caws gates run: failed to resolve session identity.');
|
|
117
|
+
err((0, diagnostic_1.renderDiagnostics)(sessionResult.errors, { showData }));
|
|
118
|
+
return 2;
|
|
119
|
+
}
|
|
120
|
+
const actor = (0, actor_1.buildActor)({
|
|
121
|
+
session: sessionResult.value,
|
|
122
|
+
kind: 'agent',
|
|
123
|
+
});
|
|
124
|
+
// 5. Subprocess + contract validation
|
|
125
|
+
const runOpts = {
|
|
126
|
+
cwd: repoRoot,
|
|
127
|
+
};
|
|
128
|
+
if (opts.runner !== undefined)
|
|
129
|
+
runOpts.runner = opts.runner;
|
|
130
|
+
if (opts.subprocessArgs !== undefined)
|
|
131
|
+
runOpts.args = opts.subprocessArgs;
|
|
132
|
+
const reportResult = (0, quality_gates_adapter_1.runQualityGates)(runOpts);
|
|
133
|
+
if (!reportResult.ok) {
|
|
134
|
+
err('caws gates run: quality-gates subprocess contract failure.');
|
|
135
|
+
err((0, diagnostic_1.renderDiagnostics)(reportResult.errors, { showData }));
|
|
136
|
+
return 2;
|
|
137
|
+
}
|
|
138
|
+
const report = reportResult.value;
|
|
139
|
+
// 5b. Local CAWS policy evaluators. These produce violations under
|
|
140
|
+
// canonical policy gate IDs (budget_limit, scope_boundary,
|
|
141
|
+
// spec_completeness) that the subprocess does not emit. Locating
|
|
142
|
+
// them in caws-cli (not in the generic quality-gates subprocess)
|
|
143
|
+
// keeps quality-gates decoupled from spec/policy authority.
|
|
144
|
+
//
|
|
145
|
+
// The active spec must exist and be loadable. If it isn't,
|
|
146
|
+
// refuse the run with a typed diagnostic — running gates against
|
|
147
|
+
// a missing or unparseable spec is a category error.
|
|
148
|
+
const activeSpec = snapshot.specs.find((s) => s.id === request.specId);
|
|
149
|
+
if (activeSpec === undefined) {
|
|
150
|
+
err(`caws gates run: spec ${request.specId} not found in .caws/specs/. ` +
|
|
151
|
+
`Either the id is wrong, or the spec failed to load (run \`caws doctor\` for details).`);
|
|
152
|
+
err(`(rule: ${rules_1.SHELL_RULES.GATES_POLICY_REQUIRED})`);
|
|
153
|
+
return 2;
|
|
154
|
+
}
|
|
155
|
+
const localResult = (0, local_evaluators_1.runLocalEvaluators)({
|
|
156
|
+
spec: activeSpec,
|
|
157
|
+
policy,
|
|
158
|
+
repoRoot,
|
|
159
|
+
nowIso: now.toISOString(),
|
|
160
|
+
});
|
|
161
|
+
const mergedReport = {
|
|
162
|
+
...report,
|
|
163
|
+
violations: [...report.violations, ...localResult.violations],
|
|
164
|
+
};
|
|
165
|
+
// 6a. Load + apply waivers BEFORE disposition.
|
|
166
|
+
// Waivers do NOT mutate policy.gates[gate].mode. They remove
|
|
167
|
+
// authorized-exception violations from the report so blocking is
|
|
168
|
+
// computed only from unwaived violations. Malformed waiver files
|
|
169
|
+
// produce diagnostics but never discard valid waivers.
|
|
170
|
+
const waiversLoad = (0, store_1.loadWaivers)(cawsDir);
|
|
171
|
+
if (waiversLoad.diagnostics.length > 0) {
|
|
172
|
+
err((0, diagnostic_1.renderDiagnostics)(waiversLoad.diagnostics, { showData }));
|
|
173
|
+
}
|
|
174
|
+
const waiverFilter = (0, waiver_filter_1.filterWaivedViolations)({
|
|
175
|
+
report: mergedReport,
|
|
176
|
+
waivers: waiversLoad.waivers,
|
|
177
|
+
specId: request.specId,
|
|
178
|
+
now,
|
|
179
|
+
policyGateIds: Object.keys(policy.gates),
|
|
180
|
+
});
|
|
181
|
+
// 6b. Policy-driven disposition on UNWAIVED violations only.
|
|
182
|
+
const dispositionResult = (0, disposition_1.deriveDispositions)(waiverFilter.reportForDisposition, policy);
|
|
183
|
+
// 7. Append one gate_evaluated event per policy-declared gate.
|
|
184
|
+
// Failure to append is a hard error: evidence integrity matters.
|
|
185
|
+
const ts = now.toISOString();
|
|
186
|
+
for (const d of dispositionResult.dispositions) {
|
|
187
|
+
const body = dispositionToEventBody({
|
|
188
|
+
disposition: d,
|
|
189
|
+
ts,
|
|
190
|
+
actor,
|
|
191
|
+
specId: request.specId,
|
|
192
|
+
...(waiverFilter.waivedByGate[d.gate_id] !== undefined
|
|
193
|
+
? { waiverEvidence: waiverFilter.waivedByGate[d.gate_id] }
|
|
194
|
+
: {}),
|
|
195
|
+
});
|
|
196
|
+
const append = (0, store_1.appendEvent)(cawsDir, body);
|
|
197
|
+
if (!append.ok) {
|
|
198
|
+
err(`caws gates run: failed to append gate_evaluated event for ${d.gate_id}.`);
|
|
199
|
+
err((0, diagnostic_1.renderDiagnostics)(append.errors, { showData }));
|
|
200
|
+
return 2;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
// 8. Render summary
|
|
204
|
+
out((0, gates_1.renderGatesRun)(dispositionResult));
|
|
205
|
+
// 9. Exit by policy disposition.
|
|
206
|
+
return dispositionResult.anyBlocks ? 1 : 0;
|
|
207
|
+
}
|
|
208
|
+
//# sourceMappingURL=gates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gates.js","sourceRoot":"","sources":["../../../src/shell/commands/gates.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { AgentSurface } from '../../init/hook-packs/types';
|
|
2
|
+
export interface InitCommandOptions {
|
|
3
|
+
readonly cwd?: string;
|
|
4
|
+
readonly out?: (line: string) => void;
|
|
5
|
+
readonly err?: (line: string) => void;
|
|
6
|
+
readonly showData?: boolean;
|
|
7
|
+
/** Selected agent harness. When undefined, the command attempts
|
|
8
|
+
* filesystem detection. */
|
|
9
|
+
readonly agentSurface?: AgentSurface;
|
|
10
|
+
/** When true, overwrite drifted/unmanaged files at managed pack paths. */
|
|
11
|
+
readonly overwrite?: boolean;
|
|
12
|
+
/** When true, leave drifted/unmanaged files in place; do not enforce
|
|
13
|
+
* pack contents at those paths. */
|
|
14
|
+
readonly adopt?: boolean;
|
|
15
|
+
}
|
|
16
|
+
export declare function runInitCommand(opts?: InitCommandOptions): number;
|
|
17
|
+
//# sourceMappingURL=init.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/shell/commands/init.ts"],"names":[],"mappings":"AAsCA,OAAO,KAAK,EACV,YAAY,EAEb,MAAM,6BAA6B,CAAC;AAUrC,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B;gCAC4B;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;IACrC,0EAA0E;IAC1E,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B;wCACoC;IACpC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B;AA0ED,wBAAgB,cAAc,CAAC,IAAI,GAAE,kBAAuB,GAAG,MAAM,CAoGpE"}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// `caws init` — vNext bootstrap of the canonical .caws/ shape, plus
|
|
3
|
+
// optional hook-pack install for the operating agent harness.
|
|
4
|
+
//
|
|
5
|
+
// Pipeline:
|
|
6
|
+
// 1. resolveRepoRoot(cwd) — needs git, NOT .caws/
|
|
7
|
+
// 2. initProject(repoRoot) — store-side adapter does the work
|
|
8
|
+
// 3. render canonical-state result — step 1 message
|
|
9
|
+
// 4. resolve agent surface — from --agent-surface or detection
|
|
10
|
+
// 5. install hook pack (or skip) — step 2 message
|
|
11
|
+
// 6. inspect .claude/settings.json — step 3 message
|
|
12
|
+
// 7. emit activation contract — step 4 message
|
|
13
|
+
//
|
|
14
|
+
// The init surface is **non-interactive**. All decisions come from CLI
|
|
15
|
+
// flags or filesystem signals; nothing prompts. Each step prints a
|
|
16
|
+
// clearly-labeled section so a turn-by-turn agent can read what
|
|
17
|
+
// happened and what to do next.
|
|
18
|
+
//
|
|
19
|
+
// Exit codes:
|
|
20
|
+
// 0 = canonical state established (created OR already_initialized)
|
|
21
|
+
// AND hook-pack step did not refuse files
|
|
22
|
+
// 1 = legacy residue refused (INIT_LEGACY_RESIDUE)
|
|
23
|
+
// OR hook-pack install refused one or more files (use --adopt or
|
|
24
|
+
// --overwrite to resolve)
|
|
25
|
+
// 2 = repo-root resolution failed, write I/O failed, or default
|
|
26
|
+
// policy invalid
|
|
27
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
28
|
+
exports.runInitCommand = runInitCommand;
|
|
29
|
+
const harness_detect_1 = require("../../init/harness-detect");
|
|
30
|
+
const hook_install_1 = require("../../init/hook-install");
|
|
31
|
+
const register_1 = require("../../init/hook-packs/register");
|
|
32
|
+
const store_1 = require("../../store");
|
|
33
|
+
const diagnostic_1 = require("../render/diagnostic");
|
|
34
|
+
const init_1 = require("../render/init");
|
|
35
|
+
const init_hook_pack_1 = require("../render/init-hook-pack");
|
|
36
|
+
function chooseSurface(explicit, detection) {
|
|
37
|
+
if (explicit !== undefined) {
|
|
38
|
+
return { surface: explicit, reason: 'explicit' };
|
|
39
|
+
}
|
|
40
|
+
if (detection.kind === 'single') {
|
|
41
|
+
return { surface: detection.surface, reason: 'detected' };
|
|
42
|
+
}
|
|
43
|
+
if (detection.kind === 'ambiguous') {
|
|
44
|
+
return { surface: null, reason: 'ambiguous' };
|
|
45
|
+
}
|
|
46
|
+
return { surface: null, reason: 'none' };
|
|
47
|
+
}
|
|
48
|
+
function performHookPackStep(repoRoot, surface, reason, options) {
|
|
49
|
+
if (surface === null) {
|
|
50
|
+
// No surface chosen — emit skipped_ambiguous.
|
|
51
|
+
return {
|
|
52
|
+
outcome: 'skipped_ambiguous',
|
|
53
|
+
pack: null,
|
|
54
|
+
actions: [],
|
|
55
|
+
activation: 'not_applicable',
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
if (surface === 'none') {
|
|
59
|
+
return {
|
|
60
|
+
outcome: 'skipped_explicit_none',
|
|
61
|
+
pack: null,
|
|
62
|
+
actions: [],
|
|
63
|
+
activation: 'not_applicable',
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
const resolution = (0, register_1.resolveHookPack)(surface);
|
|
67
|
+
if (resolution.kind === 'declared_not_implemented') {
|
|
68
|
+
// Treat as a skip with a clear message in the renderer.
|
|
69
|
+
return {
|
|
70
|
+
outcome: 'skipped_ambiguous',
|
|
71
|
+
pack: null,
|
|
72
|
+
actions: [],
|
|
73
|
+
activation: 'not_applicable',
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
if (resolution.kind === 'none') {
|
|
77
|
+
return {
|
|
78
|
+
outcome: 'skipped_explicit_none',
|
|
79
|
+
pack: null,
|
|
80
|
+
actions: [],
|
|
81
|
+
activation: 'not_applicable',
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
const installOpts = { repoRoot };
|
|
85
|
+
if (options.overwrite !== undefined) {
|
|
86
|
+
installOpts.overwrite = options.overwrite;
|
|
87
|
+
}
|
|
88
|
+
if (options.adopt !== undefined) {
|
|
89
|
+
installOpts.adopt = options.adopt;
|
|
90
|
+
}
|
|
91
|
+
return (0, hook_install_1.installHookPack)(resolution.pack, installOpts);
|
|
92
|
+
}
|
|
93
|
+
function runInitCommand(opts = {}) {
|
|
94
|
+
const cwd = opts.cwd ?? process.cwd();
|
|
95
|
+
const out = opts.out ?? ((s) => process.stdout.write(s + '\n'));
|
|
96
|
+
const err = opts.err ?? ((s) => process.stderr.write(s + '\n'));
|
|
97
|
+
const showData = opts.showData === true;
|
|
98
|
+
// Validate --agent-surface early. An unknown value is a programmer
|
|
99
|
+
// error from the caller (or a typo at the CLI); fail fast with a
|
|
100
|
+
// clear diagnostic.
|
|
101
|
+
if (opts.agentSurface !== undefined &&
|
|
102
|
+
!(0, register_1.isKnownSurface)(opts.agentSurface)) {
|
|
103
|
+
err(`caws init: unknown --agent-surface "${opts.agentSurface}".`);
|
|
104
|
+
err(' Known values: claude-code, cursor, windsurf, none.');
|
|
105
|
+
return 2;
|
|
106
|
+
}
|
|
107
|
+
// Step 0: resolve repo root.
|
|
108
|
+
const root = (0, store_1.resolveRepoRoot)(cwd);
|
|
109
|
+
if (!root.ok) {
|
|
110
|
+
err('caws init: failed to resolve repo root.');
|
|
111
|
+
err((0, diagnostic_1.renderDiagnostics)(root.errors, { showData }));
|
|
112
|
+
return 2;
|
|
113
|
+
}
|
|
114
|
+
const { repoRoot } = root.value;
|
|
115
|
+
// Step 1: bootstrap canonical .caws/ state.
|
|
116
|
+
const result = (0, store_1.initProject)(repoRoot);
|
|
117
|
+
if (!result.ok) {
|
|
118
|
+
const isLegacy = result.errors.some((d) => d.rule === 'store.init.legacy_residue');
|
|
119
|
+
err(isLegacy
|
|
120
|
+
? 'caws init: refusing to overwrite legacy state.'
|
|
121
|
+
: 'caws init: failed to bootstrap project.');
|
|
122
|
+
err((0, diagnostic_1.renderDiagnostics)(result.errors, { showData }));
|
|
123
|
+
return isLegacy ? 1 : 2;
|
|
124
|
+
}
|
|
125
|
+
out((0, init_1.renderInit)({ result: result.value, repoRoot }));
|
|
126
|
+
// Step 2: choose the agent surface and install the hook pack.
|
|
127
|
+
const detection = (0, harness_detect_1.detectAgentHarness)(repoRoot);
|
|
128
|
+
const chosen = chooseSurface(opts.agentSurface, detection);
|
|
129
|
+
const hookPackResult = performHookPackStep(repoRoot, chosen.surface, chosen.reason, opts);
|
|
130
|
+
// When detection produced an ambiguous result and no explicit flag,
|
|
131
|
+
// the renderer's skipped_ambiguous branch handles the message.
|
|
132
|
+
// When the user requested an unimplemented surface (cursor, windsurf
|
|
133
|
+
// today), the renderer surfaces it as a skipped-ambiguous with the
|
|
134
|
+
// same instruction shape.
|
|
135
|
+
if (opts.agentSurface !== undefined &&
|
|
136
|
+
opts.agentSurface !== 'none' &&
|
|
137
|
+
chosen.surface !== null) {
|
|
138
|
+
const resolution = (0, register_1.resolveHookPack)(opts.agentSurface);
|
|
139
|
+
if (resolution.kind === 'declared_not_implemented') {
|
|
140
|
+
err(`caws init: --agent-surface "${opts.agentSurface}" is declared but not yet implemented in this CLI version.`);
|
|
141
|
+
err(' Known values: claude-code, cursor, windsurf, none.');
|
|
142
|
+
err(' Implemented values: claude-code.');
|
|
143
|
+
// Surface the canonical-state success (step 1 already printed) so
|
|
144
|
+
// the user knows .caws/ is set up.
|
|
145
|
+
return 1;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
out((0, init_hook_pack_1.renderHookPackInstall)(hookPackResult));
|
|
149
|
+
// Step 3: inspect .claude/settings.json. Only meaningful when a pack
|
|
150
|
+
// was actually installed (claude-code in v11.1). For 'none' or
|
|
151
|
+
// 'skipped_ambiguous', skip this check.
|
|
152
|
+
let wiringStatus;
|
|
153
|
+
if (hookPackResult.pack !== null) {
|
|
154
|
+
wiringStatus = (0, hook_install_1.inspectClaudeSettings)(repoRoot);
|
|
155
|
+
out((0, init_hook_pack_1.renderSettingsWiring)(wiringStatus));
|
|
156
|
+
}
|
|
157
|
+
// Step 4: activation contract. The contract message tailors to whether
|
|
158
|
+
// anything was actually installed/updated this run AND whether the
|
|
159
|
+
// settings.json wiring is in place — without those signals the panel
|
|
160
|
+
// becomes a constant STOP sign on re-runs, training agents to ignore
|
|
161
|
+
// it.
|
|
162
|
+
out((0, init_hook_pack_1.renderActivationContract)(hookPackResult, wiringStatus));
|
|
163
|
+
// Exit code: refusal in pack install → 1 so callers see something went
|
|
164
|
+
// wrong; otherwise 0.
|
|
165
|
+
const anyRefused = hookPackResult.actions.some((a) => a.action === 'refused');
|
|
166
|
+
return anyRefused ? 1 : 0;
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/shell/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export type ScopeMode = 'show' | 'check';
|
|
2
|
+
export interface ScopeCommandOptions {
|
|
3
|
+
readonly path: string;
|
|
4
|
+
readonly mode: ScopeMode;
|
|
5
|
+
readonly cwd?: string;
|
|
6
|
+
readonly out?: (line: string) => void;
|
|
7
|
+
readonly err?: (line: string) => void;
|
|
8
|
+
readonly showData?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare function runScopeCommand(opts: ScopeCommandOptions): number;
|
|
11
|
+
//# sourceMappingURL=scope.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../../../src/shell/commands/scope.ts"],"names":[],"mappings":"AAiCA,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;AAEzC,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM,CAkEjE"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// `caws scope show <path>` and `caws scope check <path>` — share one
|
|
3
|
+
// decision path; differ only in exit-code policy.
|
|
4
|
+
//
|
|
5
|
+
// show: always exits 0 after rendering, even for reject / no_authority
|
|
6
|
+
// / invalid_path. It is explanatory.
|
|
7
|
+
// check: exits 0 only on `admit`. reject / no_authority / invalid_path
|
|
8
|
+
// exit 1. Used by hooks.
|
|
9
|
+
//
|
|
10
|
+
// Both:
|
|
11
|
+
// 1. resolveRepoRoot(cwd)
|
|
12
|
+
// 2. composeStoreSnapshot (we want load diagnostics if anything is
|
|
13
|
+
// malformed; we do NOT use composeDoctorSnapshot because we don't
|
|
14
|
+
// run the doctor here)
|
|
15
|
+
// 3. resolveBinding(cwd, registry, specs)
|
|
16
|
+
// 4. require a loaded policy. If absent, exit 2 with a clear message.
|
|
17
|
+
// 5. kernel evaluatePath(path, binding, policy)
|
|
18
|
+
// 6. renderDecision(decision, {boundContext})
|
|
19
|
+
// 7. exit per mode.
|
|
20
|
+
//
|
|
21
|
+
// The command does NOT compute its own scope rules. The kernel decides;
|
|
22
|
+
// the command only renders and picks the exit.
|
|
23
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
|
+
exports.runScopeCommand = runScopeCommand;
|
|
25
|
+
const caws_kernel_1 = require("@paths.design/caws-kernel");
|
|
26
|
+
const store_1 = require("../../store");
|
|
27
|
+
const resolve_binding_1 = require("../binding/resolve-binding");
|
|
28
|
+
const decision_1 = require("../render/decision");
|
|
29
|
+
const diagnostic_1 = require("../render/diagnostic");
|
|
30
|
+
function runScopeCommand(opts) {
|
|
31
|
+
const cwd = opts.cwd ?? process.cwd();
|
|
32
|
+
const out = opts.out ?? ((s) => process.stdout.write(s + '\n'));
|
|
33
|
+
const err = opts.err ?? ((s) => process.stderr.write(s + '\n'));
|
|
34
|
+
const showData = opts.showData === true;
|
|
35
|
+
const mode = opts.mode;
|
|
36
|
+
// 1. Repo root
|
|
37
|
+
const repoRootResult = (0, store_1.resolveRepoRoot)(cwd);
|
|
38
|
+
if (!repoRootResult.ok) {
|
|
39
|
+
err(`caws scope ${mode}: failed to resolve repo root.`);
|
|
40
|
+
err((0, diagnostic_1.renderDiagnostics)(repoRootResult.errors, { showData }));
|
|
41
|
+
return 2;
|
|
42
|
+
}
|
|
43
|
+
const { repoRoot, cawsDir } = repoRootResult.value;
|
|
44
|
+
// 2. Snapshot
|
|
45
|
+
let snapshot;
|
|
46
|
+
try {
|
|
47
|
+
snapshot = (0, store_1.composeStoreSnapshot)({ repoRoot, cawsDir });
|
|
48
|
+
}
|
|
49
|
+
catch (e) {
|
|
50
|
+
err(`caws scope ${mode}: store composition failed: ${e.message}`);
|
|
51
|
+
return 2;
|
|
52
|
+
}
|
|
53
|
+
// 3. Binding from cwd
|
|
54
|
+
const bound = (0, resolve_binding_1.resolveBinding)({
|
|
55
|
+
repoRoot,
|
|
56
|
+
cwd,
|
|
57
|
+
registry: snapshot.worktrees,
|
|
58
|
+
specs: snapshot.specs,
|
|
59
|
+
});
|
|
60
|
+
// 4. Require a loaded policy. Without it, the kernel can't evaluate
|
|
61
|
+
// non_governed_zones / root_passthrough / infra exemptions, and the
|
|
62
|
+
// rewrite plan requires policy.yaml for any vNext project. This is
|
|
63
|
+
// exit-2 (program/composition) territory, not no_authority.
|
|
64
|
+
const policy = snapshot.policy;
|
|
65
|
+
if (policy === undefined) {
|
|
66
|
+
err(`caws scope ${mode}: no policy.yaml loaded. Run \`caws doctor\` for details.`);
|
|
67
|
+
if (snapshot.policyErrors.length > 0) {
|
|
68
|
+
err((0, diagnostic_1.renderDiagnostics)(snapshot.policyErrors, { showData }));
|
|
69
|
+
}
|
|
70
|
+
return 2;
|
|
71
|
+
}
|
|
72
|
+
// 5. Kernel decision
|
|
73
|
+
let decision;
|
|
74
|
+
try {
|
|
75
|
+
decision = (0, caws_kernel_1.evaluatePath)(opts.path, bound.binding, policy);
|
|
76
|
+
}
|
|
77
|
+
catch (e) {
|
|
78
|
+
err(`caws scope ${mode}: kernel evaluation failed: ${e.message}`);
|
|
79
|
+
return 2;
|
|
80
|
+
}
|
|
81
|
+
// 6. Render — both modes use the same renderer with the same
|
|
82
|
+
// boundContext hint so the human-readable nuance for unbound is
|
|
83
|
+
// consistent.
|
|
84
|
+
out((0, decision_1.renderDecision)(decision, { boundContext: bound, showData }));
|
|
85
|
+
// 7. Exit per mode
|
|
86
|
+
if (mode === 'show') {
|
|
87
|
+
return 0;
|
|
88
|
+
}
|
|
89
|
+
// mode === 'check'
|
|
90
|
+
return decision.kind === 'admit' ? 0 : 1;
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=scope.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scope.js","sourceRoot":"","sources":["../../../src/shell/commands/scope.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { type ActorKind } from '@paths.design/caws-kernel';
|
|
2
|
+
interface BaseCommandOptions {
|
|
3
|
+
readonly cwd?: string;
|
|
4
|
+
readonly now?: () => Date;
|
|
5
|
+
readonly env?: NodeJS.ProcessEnv;
|
|
6
|
+
readonly out?: (line: string) => void;
|
|
7
|
+
readonly err?: (line: string) => void;
|
|
8
|
+
readonly showData?: boolean;
|
|
9
|
+
readonly actorKind?: ActorKind;
|
|
10
|
+
}
|
|
11
|
+
export interface SpecsCreateOptions extends BaseCommandOptions {
|
|
12
|
+
readonly id: string;
|
|
13
|
+
readonly title: string;
|
|
14
|
+
readonly mode: string;
|
|
15
|
+
readonly riskTier: number | string;
|
|
16
|
+
}
|
|
17
|
+
export declare function runSpecsCreateCommand(opts: SpecsCreateOptions): number;
|
|
18
|
+
export interface SpecsListOptions extends BaseCommandOptions {
|
|
19
|
+
/** Include archived specs in the listing. */
|
|
20
|
+
readonly includeArchived?: boolean;
|
|
21
|
+
}
|
|
22
|
+
export declare function runSpecsListCommand(opts?: SpecsListOptions): number;
|
|
23
|
+
export interface SpecsShowOptions extends BaseCommandOptions {
|
|
24
|
+
readonly id: string;
|
|
25
|
+
}
|
|
26
|
+
export declare function runSpecsShowCommand(opts: SpecsShowOptions): number;
|
|
27
|
+
export interface SpecsCloseOptions extends BaseCommandOptions {
|
|
28
|
+
readonly id: string;
|
|
29
|
+
readonly resolution: string;
|
|
30
|
+
readonly reason?: string;
|
|
31
|
+
readonly mergeCommit?: string;
|
|
32
|
+
readonly supersededBy?: string;
|
|
33
|
+
}
|
|
34
|
+
export declare function runSpecsCloseCommand(opts: SpecsCloseOptions): number;
|
|
35
|
+
export interface SpecsArchiveOptions extends BaseCommandOptions {
|
|
36
|
+
readonly id: string;
|
|
37
|
+
readonly reason?: string;
|
|
38
|
+
}
|
|
39
|
+
export declare function runSpecsArchiveCommand(opts: SpecsArchiveOptions): number;
|
|
40
|
+
export {};
|
|
41
|
+
//# sourceMappingURL=specs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"specs.d.ts","sourceRoot":"","sources":["../../../src/shell/commands/specs.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAoB7E,UAAU,kBAAkB;IAC1B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACjC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;CAChC;AAyDD,MAAM,WAAW,kBAAmB,SAAQ,kBAAkB;IAC5D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;CACpC;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,kBAAkB,GAAG,MAAM,CAmDtE;AAID,MAAM,WAAW,gBAAiB,SAAQ,kBAAkB;IAC1D,6CAA6C;IAC7C,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;CACpC;AAED,wBAAgB,mBAAmB,CAAC,IAAI,GAAE,gBAAqB,GAAG,MAAM,CAgCvE;AAID,MAAM,WAAW,gBAAiB,SAAQ,kBAAkB;IAC1D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAelE;AAID,MAAM,WAAW,iBAAkB,SAAQ,kBAAkB;IAC3D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,iBAAiB,GAAG,MAAM,CA0CpE;AAID,MAAM,WAAW,mBAAoB,SAAQ,kBAAkB;IAC7D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM,CAgCxE"}
|