@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
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// `caws doctor` — composition command.
|
|
3
|
+
//
|
|
4
|
+
// Pipeline (no business logic in this file):
|
|
5
|
+
//
|
|
6
|
+
// 1. resolveRepoRoot(cwd) (store)
|
|
7
|
+
// 2. composeDoctorSnapshot(...) (store)
|
|
8
|
+
// 3. inspectProjectState(input) (kernel)
|
|
9
|
+
// 4. render store-load diagnostics (renderer)
|
|
10
|
+
// 5. render doctor findings (renderer)
|
|
11
|
+
// 6. choose exit code (this file)
|
|
12
|
+
//
|
|
13
|
+
// The command does NOT read .caws/ files directly, does NOT walk specs,
|
|
14
|
+
// does NOT invent repair rules, and does NOT re-validate state.
|
|
15
|
+
//
|
|
16
|
+
// Exit codes:
|
|
17
|
+
// 0 = no error-severity findings AND no error-severity store-load
|
|
18
|
+
// diagnostics
|
|
19
|
+
// 1 = any error-severity finding OR any error-severity store-load
|
|
20
|
+
// diagnostic. (Store-load errors count even when they were filtered
|
|
21
|
+
// out before reaching the kernel, because an invalid spec file is a
|
|
22
|
+
// project-health problem regardless.)
|
|
23
|
+
// 2 = repo-root resolution failed, or other hard composition failure.
|
|
24
|
+
//
|
|
25
|
+
// Testable without Commander: caller passes cwd / out / err / now and
|
|
26
|
+
// receives a number. `registerShellCommands(program)` (Slice 5c.9) is the
|
|
27
|
+
// only place that wires this to Commander.
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.runDoctorCommand = runDoctorCommand;
|
|
30
|
+
const caws_kernel_1 = require("@paths.design/caws-kernel");
|
|
31
|
+
const store_1 = require("../../store");
|
|
32
|
+
const index_1 = require("../index");
|
|
33
|
+
function runDoctorCommand(opts = {}) {
|
|
34
|
+
const cwd = opts.cwd ?? process.cwd();
|
|
35
|
+
const now = opts.now ?? new Date();
|
|
36
|
+
const out = opts.out ?? ((s) => process.stdout.write(s + '\n'));
|
|
37
|
+
const err = opts.err ?? ((s) => process.stderr.write(s + '\n'));
|
|
38
|
+
const showData = opts.showData === true;
|
|
39
|
+
// 1. Repo root
|
|
40
|
+
const repoRootResult = (0, store_1.resolveRepoRoot)(cwd);
|
|
41
|
+
if (!repoRootResult.ok) {
|
|
42
|
+
err('caws doctor: failed to resolve repo root.');
|
|
43
|
+
err((0, index_1.renderDiagnostics)(repoRootResult.errors, { showData }));
|
|
44
|
+
return 2;
|
|
45
|
+
}
|
|
46
|
+
const { repoRoot, cawsDir } = repoRootResult.value;
|
|
47
|
+
// 2 + 3. Compose snapshot, run kernel diagnoser
|
|
48
|
+
let composition;
|
|
49
|
+
try {
|
|
50
|
+
composition = (0, store_1.composeDoctorSnapshot)({ repoRoot, cawsDir, now });
|
|
51
|
+
}
|
|
52
|
+
catch (e) {
|
|
53
|
+
err(`caws doctor: store composition failed: ${e.message}`);
|
|
54
|
+
return 2;
|
|
55
|
+
}
|
|
56
|
+
const { snapshot, doctorInput } = composition;
|
|
57
|
+
let report;
|
|
58
|
+
try {
|
|
59
|
+
report = (0, caws_kernel_1.inspectProjectState)(doctorInput);
|
|
60
|
+
}
|
|
61
|
+
catch (e) {
|
|
62
|
+
err(`caws doctor: kernel inspect failed: ${e.message}`);
|
|
63
|
+
return 2;
|
|
64
|
+
}
|
|
65
|
+
// 4. Render store-load diagnostics — kept SEPARATE from doctor findings.
|
|
66
|
+
const loadDiagnostics = [
|
|
67
|
+
...snapshot.specDiagnostics,
|
|
68
|
+
...snapshot.policyErrors,
|
|
69
|
+
...snapshot.policyWarnings,
|
|
70
|
+
...snapshot.eventWarnings,
|
|
71
|
+
];
|
|
72
|
+
out('Store load diagnostics:');
|
|
73
|
+
if (loadDiagnostics.length === 0) {
|
|
74
|
+
out(' (none)');
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
out((0, index_1.renderDiagnostics)(loadDiagnostics, { showData }));
|
|
78
|
+
}
|
|
79
|
+
// 5. Render doctor findings — separate section.
|
|
80
|
+
out('');
|
|
81
|
+
out('Doctor findings:');
|
|
82
|
+
if (report.findings.length === 0) {
|
|
83
|
+
out(' (none)');
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
out((0, index_1.renderFindings)(report.findings, { showData }));
|
|
87
|
+
}
|
|
88
|
+
// 6. Exit code
|
|
89
|
+
const loadCounts = (0, index_1.countSeverities)(loadDiagnostics);
|
|
90
|
+
const findingCounts = (0, index_1.countFindingSeverities)(report.findings);
|
|
91
|
+
const hasErrors = findingCounts.errors > 0 || loadCounts.errors > 0;
|
|
92
|
+
out('');
|
|
93
|
+
out(`Summary: findings ${findingCounts.errors}E/${findingCounts.warnings}W/${findingCounts.infos}I; ` +
|
|
94
|
+
`load ${loadCounts.errors}E/${loadCounts.warnings}W/${loadCounts.infos}I`);
|
|
95
|
+
return hasErrors ? 1 : 0;
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=doctor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/shell/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { type ActorKind } from '@paths.design/caws-kernel';
|
|
2
|
+
export type EvidenceKind = 'test' | 'gate' | 'ac';
|
|
3
|
+
export interface EvidenceRecordOptions {
|
|
4
|
+
/** Which evidence event to record. */
|
|
5
|
+
readonly kind: EvidenceKind;
|
|
6
|
+
/** Required: the spec id this evidence is about. */
|
|
7
|
+
readonly specId: string;
|
|
8
|
+
/** Required: the event payload — must match the kernel's event-type schema. */
|
|
9
|
+
readonly data: Record<string, unknown>;
|
|
10
|
+
/** Actor kind. Defaults to 'agent'. */
|
|
11
|
+
readonly actorKind?: ActorKind;
|
|
12
|
+
/** Optional actor id override. Defaults to session.identity.session_id. */
|
|
13
|
+
readonly actorId?: string;
|
|
14
|
+
/** Optional ISO-8601 ts. Defaults to now. */
|
|
15
|
+
readonly ts?: string;
|
|
16
|
+
/** Working directory. Defaults to process.cwd(). */
|
|
17
|
+
readonly cwd?: string;
|
|
18
|
+
/** Injected clock for tests. */
|
|
19
|
+
readonly now?: () => Date;
|
|
20
|
+
/** Injected env for tests. */
|
|
21
|
+
readonly env?: NodeJS.ProcessEnv;
|
|
22
|
+
readonly out?: (line: string) => void;
|
|
23
|
+
readonly err?: (line: string) => void;
|
|
24
|
+
/** Show optional `data` blocks on rendered errors. */
|
|
25
|
+
readonly showData?: boolean;
|
|
26
|
+
}
|
|
27
|
+
export declare function runEvidenceRecordCommand(opts: EvidenceRecordOptions): number;
|
|
28
|
+
//# sourceMappingURL=evidence.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../../../src/shell/commands/evidence.ts"],"names":[],"mappings":"AAyBA,OAAO,EAEL,KAAK,SAAS,EAGf,MAAM,2BAA2B,CAAC;AAQnC,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;AAQlD,MAAM,WAAW,qBAAqB;IACpC,sCAAsC;IACtC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,oDAAoD;IACpD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,+EAA+E;IAC/E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,uCAAuC;IACvC,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IAC/B,2EAA2E;IAC3E,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,oDAAoD;IACpD,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,gCAAgC;IAChC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,8BAA8B;IAC9B,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,sDAAsD;IACtD,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B;AAeD,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,qBAAqB,GAAG,MAAM,CAqG5E"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// `caws evidence record` — append one typed evidence event.
|
|
3
|
+
//
|
|
4
|
+
// Pipeline:
|
|
5
|
+
// 1. resolveRepoRoot(cwd)
|
|
6
|
+
// 2. resolveSession({ allowMint: true }) — this is a write op
|
|
7
|
+
// 3. buildActor({ session, kind })
|
|
8
|
+
// 4. construct EventBody from caller inputs — body-only; no seq/prev/hash
|
|
9
|
+
// 5. appendEvent(cawsDir, body) — store enforces lock,
|
|
10
|
+
// chain via kernel
|
|
11
|
+
// prepareAppend
|
|
12
|
+
// 6. print seq + event_hash AFTER success
|
|
13
|
+
//
|
|
14
|
+
// Exit codes:
|
|
15
|
+
// 0 = append succeeded
|
|
16
|
+
// 1 = validation rejected the body OR appendEvent returned Err
|
|
17
|
+
// 2 = repo-root / session resolution / composition failure
|
|
18
|
+
//
|
|
19
|
+
// CRITICAL: the API surface accepts EventBody-shaped inputs only. It does
|
|
20
|
+
// not accept `seq`, `prev_hash`, or `event_hash`. The CLI layer parsing
|
|
21
|
+
// (commander) MUST NOT add those fields. If a caller does pass them via
|
|
22
|
+
// the data object, kernel `validateEventBody` rejects them (additionalProperties:
|
|
23
|
+
// false on the per-event-type payload schemas).
|
|
24
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
25
|
+
if (k2 === undefined) k2 = k;
|
|
26
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
27
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
28
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
29
|
+
}
|
|
30
|
+
Object.defineProperty(o, k2, desc);
|
|
31
|
+
}) : (function(o, m, k, k2) {
|
|
32
|
+
if (k2 === undefined) k2 = k;
|
|
33
|
+
o[k2] = m[k];
|
|
34
|
+
}));
|
|
35
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
36
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
37
|
+
}) : function(o, v) {
|
|
38
|
+
o["default"] = v;
|
|
39
|
+
});
|
|
40
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
41
|
+
var ownKeys = function(o) {
|
|
42
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
43
|
+
var ar = [];
|
|
44
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
45
|
+
return ar;
|
|
46
|
+
};
|
|
47
|
+
return ownKeys(o);
|
|
48
|
+
};
|
|
49
|
+
return function (mod) {
|
|
50
|
+
if (mod && mod.__esModule) return mod;
|
|
51
|
+
var result = {};
|
|
52
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
53
|
+
__setModuleDefault(result, mod);
|
|
54
|
+
return result;
|
|
55
|
+
};
|
|
56
|
+
})();
|
|
57
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
58
|
+
exports.runEvidenceRecordCommand = runEvidenceRecordCommand;
|
|
59
|
+
const path = __importStar(require("node:path"));
|
|
60
|
+
const store_1 = require("../../store");
|
|
61
|
+
const actor_1 = require("../session/actor");
|
|
62
|
+
const resolve_session_1 = require("../session/resolve-session");
|
|
63
|
+
const diagnostic_1 = require("../render/diagnostic");
|
|
64
|
+
const rules_1 = require("../rules");
|
|
65
|
+
const KIND_TO_EVENT_TYPE = {
|
|
66
|
+
test: 'test_recorded',
|
|
67
|
+
gate: 'gate_evaluated',
|
|
68
|
+
ac: 'ac_recorded',
|
|
69
|
+
};
|
|
70
|
+
function rejectPreChainedFields(data) {
|
|
71
|
+
for (const banned of ['seq', 'prev_hash', 'event_hash']) {
|
|
72
|
+
if (Object.prototype.hasOwnProperty.call(data, banned)) {
|
|
73
|
+
return banned;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
function isEvidenceKind(value) {
|
|
79
|
+
return value === 'test' || value === 'gate' || value === 'ac';
|
|
80
|
+
}
|
|
81
|
+
function runEvidenceRecordCommand(opts) {
|
|
82
|
+
const cwd = opts.cwd ?? process.cwd();
|
|
83
|
+
const now = opts.now ?? (() => new Date());
|
|
84
|
+
const env = opts.env ?? process.env;
|
|
85
|
+
const out = opts.out ?? ((s) => process.stdout.write(s + '\n'));
|
|
86
|
+
const err = opts.err ?? ((s) => process.stderr.write(s + '\n'));
|
|
87
|
+
const showData = opts.showData === true;
|
|
88
|
+
// Validate the evidence kind up front (defensive — Commander should
|
|
89
|
+
// reject unknown values at the parser, but tests / programmatic callers
|
|
90
|
+
// may bypass that).
|
|
91
|
+
if (!isEvidenceKind(opts.kind)) {
|
|
92
|
+
err(`caws evidence record: invalid --type. Got ${JSON.stringify(opts.kind)}; expected test|gate|ac.`);
|
|
93
|
+
err(`(rule: ${rules_1.SHELL_RULES.COMMAND_INVALID_EVIDENCE_TYPE})`);
|
|
94
|
+
return 1;
|
|
95
|
+
}
|
|
96
|
+
// Reject pre-chained fields in the payload BEFORE doing any I/O.
|
|
97
|
+
const banned = rejectPreChainedFields(opts.data);
|
|
98
|
+
if (banned !== null) {
|
|
99
|
+
err(`caws evidence record: payload must NOT include \`${banned}\`. Pre-chained events are not accepted by this command.`);
|
|
100
|
+
err(`(rule: ${rules_1.SHELL_RULES.COMMAND_PRE_CHAINED_EVENT_REFUSED})`);
|
|
101
|
+
return 1;
|
|
102
|
+
}
|
|
103
|
+
// Require non-empty spec_id (also enforced by kernel REQUIRES_SPEC_ID
|
|
104
|
+
// fence, but we surface the shell-level error early).
|
|
105
|
+
if (typeof opts.specId !== 'string' || opts.specId.length === 0) {
|
|
106
|
+
err('caws evidence record: --spec is required.');
|
|
107
|
+
err(`(rule: ${rules_1.SHELL_RULES.COMMAND_MISSING_SPEC_ID})`);
|
|
108
|
+
return 1;
|
|
109
|
+
}
|
|
110
|
+
// 1. Repo root.
|
|
111
|
+
const repoRootResult = (0, store_1.resolveRepoRoot)(cwd);
|
|
112
|
+
if (!repoRootResult.ok) {
|
|
113
|
+
err('caws evidence record: failed to resolve repo root.');
|
|
114
|
+
err((0, diagnostic_1.renderDiagnostics)(repoRootResult.errors, { showData }));
|
|
115
|
+
return 2;
|
|
116
|
+
}
|
|
117
|
+
const { repoRoot, cawsDir } = repoRootResult.value;
|
|
118
|
+
// 2. Session (write op → allowMint).
|
|
119
|
+
const sessionResult = (0, resolve_session_1.resolveSession)({
|
|
120
|
+
cawsDir,
|
|
121
|
+
worktreeRoot: cwd,
|
|
122
|
+
env,
|
|
123
|
+
now,
|
|
124
|
+
allowMint: true,
|
|
125
|
+
});
|
|
126
|
+
if (!sessionResult.ok) {
|
|
127
|
+
err('caws evidence record: failed to resolve session identity.');
|
|
128
|
+
err((0, diagnostic_1.renderDiagnostics)(sessionResult.errors, { showData }));
|
|
129
|
+
return 2;
|
|
130
|
+
}
|
|
131
|
+
// 3. Actor envelope.
|
|
132
|
+
const actor = (0, actor_1.buildActor)({
|
|
133
|
+
session: sessionResult.value,
|
|
134
|
+
kind: opts.actorKind ?? 'agent',
|
|
135
|
+
...(opts.actorId !== undefined ? { id: opts.actorId } : {}),
|
|
136
|
+
});
|
|
137
|
+
// 4. Body.
|
|
138
|
+
const eventType = KIND_TO_EVENT_TYPE[opts.kind];
|
|
139
|
+
const ts = opts.ts ?? now().toISOString();
|
|
140
|
+
// `EventBody.data` is typed as `EventPayload` (a union of per-event
|
|
141
|
+
// payload shapes). The kernel will validate against the right schema
|
|
142
|
+
// at append time; we hand off the caller's already-parsed object.
|
|
143
|
+
const body = {
|
|
144
|
+
event: eventType,
|
|
145
|
+
ts,
|
|
146
|
+
actor,
|
|
147
|
+
spec_id: opts.specId,
|
|
148
|
+
data: opts.data,
|
|
149
|
+
};
|
|
150
|
+
// 5. Append. `appendEvent` calls `prepareAppend` which calls
|
|
151
|
+
// `validateEventBody` against the per-type schema.
|
|
152
|
+
const appendResult = (0, store_1.appendEvent)(cawsDir, body);
|
|
153
|
+
if (!appendResult.ok) {
|
|
154
|
+
err('caws evidence record: append rejected.');
|
|
155
|
+
err((0, diagnostic_1.renderDiagnostics)(appendResult.errors, { showData }));
|
|
156
|
+
return 1;
|
|
157
|
+
}
|
|
158
|
+
// 6. Print outcome AFTER success. Includes seq + event_hash so the
|
|
159
|
+
// caller (agent or human) gets a stable handle for the new event.
|
|
160
|
+
const ev = appendResult.value;
|
|
161
|
+
out(`recorded ${ev.event} seq=${ev.seq} hash=${ev.event_hash} spec=${ev.spec_id ?? '(none)'}`);
|
|
162
|
+
// Print the relative events file path for ergonomics.
|
|
163
|
+
out(` written to ${path.relative(repoRoot, path.join(cawsDir, 'events.jsonl'))}`);
|
|
164
|
+
return 0;
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=evidence.js.map
|
|
@@ -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":"AAyCA,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,CAgIR"}
|
|
@@ -0,0 +1,181 @@
|
|
|
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 quality_gates_adapter_1 = require("../gates/quality-gates-adapter");
|
|
32
|
+
const waiver_filter_1 = require("../gates/waiver-filter");
|
|
33
|
+
const MAX_EVENT_VIOLATIONS = 100;
|
|
34
|
+
function dispositionToEventBody(args) {
|
|
35
|
+
const violations = args.disposition.violations
|
|
36
|
+
.slice(0, MAX_EVENT_VIOLATIONS)
|
|
37
|
+
.map((v) => ({
|
|
38
|
+
rule: typeof v.type === 'string' ? v.type : 'unknown',
|
|
39
|
+
subject: typeof v.file === 'string'
|
|
40
|
+
? typeof v.line === 'number'
|
|
41
|
+
? `${v.file}:${v.line}`
|
|
42
|
+
: v.file
|
|
43
|
+
: (v.gate ?? 'unknown'),
|
|
44
|
+
...(v.message !== undefined ? { details: v.message } : {}),
|
|
45
|
+
}));
|
|
46
|
+
const ev = args.waiverEvidence;
|
|
47
|
+
const waivedCount = ev?.waived_count ?? 0;
|
|
48
|
+
return {
|
|
49
|
+
event: 'gate_evaluated',
|
|
50
|
+
ts: args.ts,
|
|
51
|
+
actor: args.actor,
|
|
52
|
+
spec_id: args.specId,
|
|
53
|
+
data: {
|
|
54
|
+
gate_id: args.disposition.gate_id,
|
|
55
|
+
mode: args.disposition.mode,
|
|
56
|
+
result: args.disposition.outcome === 'skipped' ? 'skipped' : args.disposition.outcome,
|
|
57
|
+
violations,
|
|
58
|
+
waived_count: waivedCount,
|
|
59
|
+
...(ev !== undefined && ev.waiver_ids.length > 0
|
|
60
|
+
? { waiver_ids: ev.waiver_ids.slice() }
|
|
61
|
+
: {}),
|
|
62
|
+
},
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
function runGatesRunCommand(request, opts = {}) {
|
|
66
|
+
const cwd = opts.cwd ?? process.cwd();
|
|
67
|
+
const nowFn = opts.now ?? (() => new Date());
|
|
68
|
+
const now = nowFn();
|
|
69
|
+
const env = opts.env ?? process.env;
|
|
70
|
+
const out = opts.out ?? ((s) => process.stdout.write(s + '\n'));
|
|
71
|
+
const err = opts.err ?? ((s) => process.stderr.write(s + '\n'));
|
|
72
|
+
const showData = opts.showData === true;
|
|
73
|
+
if (typeof request.specId !== 'string' || request.specId.length === 0) {
|
|
74
|
+
err('caws gates run: --spec is required.');
|
|
75
|
+
err(`(rule: ${rules_1.SHELL_RULES.COMMAND_MISSING_SPEC_ID})`);
|
|
76
|
+
return 1;
|
|
77
|
+
}
|
|
78
|
+
// 1. Repo root
|
|
79
|
+
const repoRootResult = (0, store_1.resolveRepoRoot)(cwd);
|
|
80
|
+
if (!repoRootResult.ok) {
|
|
81
|
+
err('caws gates run: failed to resolve repo root.');
|
|
82
|
+
err((0, diagnostic_1.renderDiagnostics)(repoRootResult.errors, { showData }));
|
|
83
|
+
return 2;
|
|
84
|
+
}
|
|
85
|
+
const { repoRoot, cawsDir } = repoRootResult.value;
|
|
86
|
+
// 2. Snapshot for policy
|
|
87
|
+
let snapshot;
|
|
88
|
+
try {
|
|
89
|
+
snapshot = (0, store_1.composeStoreSnapshot)({ repoRoot, cawsDir });
|
|
90
|
+
}
|
|
91
|
+
catch (e) {
|
|
92
|
+
err(`caws gates run: store composition failed: ${e.message}`);
|
|
93
|
+
return 2;
|
|
94
|
+
}
|
|
95
|
+
// 3. Policy required — gates cannot decide mode without it.
|
|
96
|
+
if (snapshot.policy === undefined) {
|
|
97
|
+
err(`caws gates run: no policy.yaml loaded — gates require policy to derive ` +
|
|
98
|
+
`block/warn/skip semantics. Run \`caws doctor\` for details.`);
|
|
99
|
+
err(`(rule: ${rules_1.SHELL_RULES.GATES_POLICY_REQUIRED})`);
|
|
100
|
+
if (snapshot.policyErrors.length > 0) {
|
|
101
|
+
err((0, diagnostic_1.renderDiagnostics)(snapshot.policyErrors, { showData }));
|
|
102
|
+
}
|
|
103
|
+
return 2;
|
|
104
|
+
}
|
|
105
|
+
const policy = snapshot.policy;
|
|
106
|
+
// 4. Session (write op — gates append events)
|
|
107
|
+
const sessionResult = (0, resolve_session_1.resolveSession)({
|
|
108
|
+
cawsDir,
|
|
109
|
+
worktreeRoot: cwd,
|
|
110
|
+
env,
|
|
111
|
+
now: nowFn,
|
|
112
|
+
allowMint: true,
|
|
113
|
+
});
|
|
114
|
+
if (!sessionResult.ok) {
|
|
115
|
+
err('caws gates run: failed to resolve session identity.');
|
|
116
|
+
err((0, diagnostic_1.renderDiagnostics)(sessionResult.errors, { showData }));
|
|
117
|
+
return 2;
|
|
118
|
+
}
|
|
119
|
+
const actor = (0, actor_1.buildActor)({
|
|
120
|
+
session: sessionResult.value,
|
|
121
|
+
kind: 'agent',
|
|
122
|
+
});
|
|
123
|
+
// 5. Subprocess + contract validation
|
|
124
|
+
const runOpts = {
|
|
125
|
+
cwd: repoRoot,
|
|
126
|
+
};
|
|
127
|
+
if (opts.runner !== undefined)
|
|
128
|
+
runOpts.runner = opts.runner;
|
|
129
|
+
if (opts.subprocessArgs !== undefined)
|
|
130
|
+
runOpts.args = opts.subprocessArgs;
|
|
131
|
+
const reportResult = (0, quality_gates_adapter_1.runQualityGates)(runOpts);
|
|
132
|
+
if (!reportResult.ok) {
|
|
133
|
+
err('caws gates run: quality-gates subprocess contract failure.');
|
|
134
|
+
err((0, diagnostic_1.renderDiagnostics)(reportResult.errors, { showData }));
|
|
135
|
+
return 2;
|
|
136
|
+
}
|
|
137
|
+
const report = reportResult.value;
|
|
138
|
+
// 6a. Load + apply waivers BEFORE disposition.
|
|
139
|
+
// Waivers do NOT mutate policy.gates[gate].mode. They remove
|
|
140
|
+
// authorized-exception violations from the report so blocking is
|
|
141
|
+
// computed only from unwaived violations. Malformed waiver files
|
|
142
|
+
// produce diagnostics but never discard valid waivers.
|
|
143
|
+
const waiversLoad = (0, store_1.loadWaivers)(cawsDir);
|
|
144
|
+
if (waiversLoad.diagnostics.length > 0) {
|
|
145
|
+
err((0, diagnostic_1.renderDiagnostics)(waiversLoad.diagnostics, { showData }));
|
|
146
|
+
}
|
|
147
|
+
const waiverFilter = (0, waiver_filter_1.filterWaivedViolations)({
|
|
148
|
+
report,
|
|
149
|
+
waivers: waiversLoad.waivers,
|
|
150
|
+
specId: request.specId,
|
|
151
|
+
now,
|
|
152
|
+
policyGateIds: Object.keys(policy.gates),
|
|
153
|
+
});
|
|
154
|
+
// 6b. Policy-driven disposition on UNWAIVED violations only.
|
|
155
|
+
const dispositionResult = (0, disposition_1.deriveDispositions)(waiverFilter.reportForDisposition, policy);
|
|
156
|
+
// 7. Append one gate_evaluated event per policy-declared gate.
|
|
157
|
+
// Failure to append is a hard error: evidence integrity matters.
|
|
158
|
+
const ts = now.toISOString();
|
|
159
|
+
for (const d of dispositionResult.dispositions) {
|
|
160
|
+
const body = dispositionToEventBody({
|
|
161
|
+
disposition: d,
|
|
162
|
+
ts,
|
|
163
|
+
actor,
|
|
164
|
+
specId: request.specId,
|
|
165
|
+
...(waiverFilter.waivedByGate[d.gate_id] !== undefined
|
|
166
|
+
? { waiverEvidence: waiverFilter.waivedByGate[d.gate_id] }
|
|
167
|
+
: {}),
|
|
168
|
+
});
|
|
169
|
+
const append = (0, store_1.appendEvent)(cawsDir, body);
|
|
170
|
+
if (!append.ok) {
|
|
171
|
+
err(`caws gates run: failed to append gate_evaluated event for ${d.gate_id}.`);
|
|
172
|
+
err((0, diagnostic_1.renderDiagnostics)(append.errors, { showData }));
|
|
173
|
+
return 2;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
// 8. Render summary
|
|
177
|
+
out((0, gates_1.renderGatesRun)(dispositionResult));
|
|
178
|
+
// 9. Exit by policy disposition.
|
|
179
|
+
return dispositionResult.anyBlocks ? 1 : 0;
|
|
180
|
+
}
|
|
181
|
+
//# 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,8 @@
|
|
|
1
|
+
export interface InitCommandOptions {
|
|
2
|
+
readonly cwd?: string;
|
|
3
|
+
readonly out?: (line: string) => void;
|
|
4
|
+
readonly err?: (line: string) => void;
|
|
5
|
+
readonly showData?: boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare function runInitCommand(opts?: InitCommandOptions): number;
|
|
8
|
+
//# sourceMappingURL=init.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/shell/commands/init.ts"],"names":[],"mappings":"AA8BA,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;CAC7B;AAED,wBAAgB,cAAc,CAAC,IAAI,GAAE,kBAAuB,GAAG,MAAM,CAsCpE"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// `caws init` — vNext bootstrap of the canonical .caws/ shape.
|
|
3
|
+
//
|
|
4
|
+
// Pipeline:
|
|
5
|
+
// 1. resolveRepoRoot(cwd) — needs git, NOT .caws/
|
|
6
|
+
// 2. initProject(repoRoot) — store-side adapter does the work
|
|
7
|
+
// 3. render result — short summary or "already initialized"
|
|
8
|
+
//
|
|
9
|
+
// Exit codes:
|
|
10
|
+
// 0 = canonical state established (created OR already_initialized)
|
|
11
|
+
// 1 = legacy residue refused (INIT_LEGACY_RESIDUE) — non-destructive,
|
|
12
|
+
// the user must clear the listed files manually
|
|
13
|
+
// 2 = repo-root resolution failed, write I/O failed, or the default
|
|
14
|
+
// policy itself failed kernel validation
|
|
15
|
+
// (INIT_DEFAULT_POLICY_INVALID — programmer error in our seed)
|
|
16
|
+
//
|
|
17
|
+
// Discipline:
|
|
18
|
+
// - No --force in 7b. Force modes turn into cleanup tools and cleanup
|
|
19
|
+
// belongs to a later doctor/repair surface.
|
|
20
|
+
// - The seeded policy MUST pass kernel validation BEFORE landing on
|
|
21
|
+
// disk. If our default is bad, that's a programmer error and exit 2
|
|
22
|
+
// is correct — we do NOT write a known-invalid policy just to keep
|
|
23
|
+
// `init` succeeding.
|
|
24
|
+
// - Init never overwrites existing canonical files. Idempotent rerun
|
|
25
|
+
// reports "already initialized"; partial state is filled in
|
|
26
|
+
// additively (a half-bootstrapped project becomes whole).
|
|
27
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
28
|
+
exports.runInitCommand = runInitCommand;
|
|
29
|
+
const store_1 = require("../../store");
|
|
30
|
+
const diagnostic_1 = require("../render/diagnostic");
|
|
31
|
+
const init_1 = require("../render/init");
|
|
32
|
+
function runInitCommand(opts = {}) {
|
|
33
|
+
const cwd = opts.cwd ?? process.cwd();
|
|
34
|
+
const out = opts.out ?? ((s) => process.stdout.write(s + '\n'));
|
|
35
|
+
const err = opts.err ?? ((s) => process.stderr.write(s + '\n'));
|
|
36
|
+
const showData = opts.showData === true;
|
|
37
|
+
// 1. Resolve repo root. We do NOT pass requireCawsDir — the whole
|
|
38
|
+
// point of init is to create .caws/, so failing on its absence
|
|
39
|
+
// here would be self-contradictory.
|
|
40
|
+
const root = (0, store_1.resolveRepoRoot)(cwd);
|
|
41
|
+
if (!root.ok) {
|
|
42
|
+
err('caws init: failed to resolve repo root.');
|
|
43
|
+
err((0, diagnostic_1.renderDiagnostics)(root.errors, { showData }));
|
|
44
|
+
return 2;
|
|
45
|
+
}
|
|
46
|
+
const { repoRoot } = root.value;
|
|
47
|
+
// 2. Bootstrap.
|
|
48
|
+
const result = (0, store_1.initProject)(repoRoot);
|
|
49
|
+
if (!result.ok) {
|
|
50
|
+
// Decide exit code from the diagnostic rule. Legacy residue is a
|
|
51
|
+
// user-correctable domain error (1); everything else is a hard
|
|
52
|
+
// store/programmer failure (2).
|
|
53
|
+
const isLegacy = result.errors.some((d) => d.rule === 'store.init.legacy_residue');
|
|
54
|
+
err(isLegacy
|
|
55
|
+
? 'caws init: refusing to overwrite legacy state.'
|
|
56
|
+
: 'caws init: failed to bootstrap project.');
|
|
57
|
+
err((0, diagnostic_1.renderDiagnostics)(result.errors, { showData }));
|
|
58
|
+
return isLegacy ? 1 : 2;
|
|
59
|
+
}
|
|
60
|
+
// 3. Render and exit.
|
|
61
|
+
out((0, init_1.renderInit)({ result: result.value, repoRoot }));
|
|
62
|
+
return 0;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/shell/commands/init.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,EAAE;AACF,YAAY;AACZ,gEAAgE;AAChE,2EAA2E;AAC3E,iFAAiF;AACjF,EAAE;AACF,cAAc;AACd,qEAAqE;AACrE,wEAAwE;AACxE,sDAAsD;AACtD,sEAAsE;AACtE,+CAA+C;AAC/C,qEAAqE;AACrE,EAAE;AACF,cAAc;AACd,wEAAwE;AACxE,gDAAgD;AAChD,sEAAsE;AACtE,wEAAwE;AACxE,uEAAuE;AACvE,yBAAyB;AACzB,uEAAuE;AACvE,gEAAgE;AAChE,8DAA8D;;AAa9D,wCAsCC;AAjDD,uCAA2D;AAC3D,qDAAyD;AACzD,yCAA4C;AAS5C,SAAgB,cAAc,CAAC,OAA2B,EAAE;IAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACtC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IACxE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IACxE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC;IAExC,kEAAkE;IAClE,kEAAkE;IAClE,uCAAuC;IACvC,MAAM,IAAI,GAAG,IAAA,uBAAe,EAAC,GAAG,CAAC,CAAC;IAClC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QACb,GAAG,CAAC,yCAAyC,CAAC,CAAC;QAC/C,GAAG,CAAC,IAAA,8BAAiB,EAAC,IAAI,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QAClD,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;IAEhC,gBAAgB;IAChB,MAAM,MAAM,GAAG,IAAA,mBAAW,EAAC,QAAQ,CAAC,CAAC;IACrC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,iEAAiE;QACjE,+DAA+D;QAC/D,gCAAgC;QAChC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CACjC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,2BAA2B,CAC9C,CAAC;QACF,GAAG,CACD,QAAQ;YACN,CAAC,CAAC,gDAAgD;YAClD,CAAC,CAAC,yCAAyC,CAC9C,CAAC;QACF,GAAG,CAAC,IAAA,8BAAiB,EAAC,MAAM,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QACpD,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;IAED,sBAAsB;IACtB,GAAG,CAAC,IAAA,iBAAU,EAAC,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;IACpD,OAAO,CAAC,CAAC;AACX,CAAC"}
|
|
@@ -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"}
|