agentic-qe 3.7.8 → 3.7.10
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/.claude/skills/.validation/README.md +111 -111
- package/.claude/skills/.validation/examples/chaos-engineering-output.example.json +530 -530
- package/.claude/skills/.validation/examples/performance-testing-output.example.json +252 -252
- package/.claude/skills/.validation/examples/security-testing-output.example.json +413 -413
- package/.claude/skills/.validation/examples/testability-scoring-output.example.json +350 -350
- package/.claude/skills/.validation/schemas/skill-eval.schema.json +462 -462
- package/.claude/skills/.validation/schemas/skill-frontmatter.schema.json +341 -341
- package/.claude/skills/.validation/schemas/skill-output-meta.schema.json +199 -199
- package/.claude/skills/.validation/schemas/skill-output.template.json +610 -610
- package/.claude/skills/.validation/skill-validation-mcp-integration.md +250 -250
- package/.claude/skills/.validation/templates/eval.template.yaml +366 -366
- package/.claude/skills/.validation/templates/schemas/output.json +145 -145
- package/.claude/skills/.validation/templates/security-testing-eval.template.yaml +725 -725
- package/.claude/skills/.validation/templates/skill-frontmatter.example.yaml +225 -225
- package/.claude/skills/.validation/test-data/invalid-output.json +5 -5
- package/.claude/skills/.validation/test-data/minimal-output.json +9 -9
- package/.claude/skills/.validation/test-data/sample-output.json +73 -73
- package/.claude/skills/a11y-ally/evals/a11y-ally.yaml +376 -376
- package/.claude/skills/a11y-ally/schemas/output.json +549 -549
- package/.claude/skills/accessibility-testing/evals/accessibility-testing.yaml +719 -719
- package/.claude/skills/accessibility-testing/schemas/output.json +776 -776
- package/.claude/skills/accessibility-testing/test-data/sample-output.json +191 -191
- package/.claude/skills/agentic-quality-engineering/schemas/output.json +577 -577
- package/.claude/skills/api-testing-patterns/evals/api-testing-patterns.yaml +696 -696
- package/.claude/skills/api-testing-patterns/schemas/output.json +845 -845
- package/.claude/skills/aqe-v2-v3-migration/schemas/output.json +513 -513
- package/.claude/skills/brutal-honesty-review/schemas/output.json +291 -291
- package/.claude/skills/bug-reporting-excellence/schemas/output.json +288 -288
- package/.claude/skills/chaos-engineering-resilience/evals/chaos-engineering-resilience.yaml +761 -761
- package/.claude/skills/chaos-engineering-resilience/schemas/output.json +1205 -1205
- package/.claude/skills/cicd-pipeline-qe-orchestrator/evals/cicd-pipeline-qe-orchestrator.yaml +157 -157
- package/.claude/skills/cicd-pipeline-qe-orchestrator/schemas/output.json +542 -542
- package/.claude/skills/code-review-quality/schemas/output.json +264 -264
- package/.claude/skills/compatibility-testing/evals/compatibility-testing.yaml +410 -410
- package/.claude/skills/compatibility-testing/schemas/output.json +551 -551
- package/.claude/skills/compliance-testing/evals/compliance-testing.yaml +1107 -1107
- package/.claude/skills/compliance-testing/schemas/output.json +845 -845
- package/.claude/skills/consultancy-practices/schemas/output.json +282 -282
- package/.claude/skills/contract-testing/evals/contract-testing.yaml +748 -748
- package/.claude/skills/contract-testing/schemas/output.json +638 -638
- package/.claude/skills/database-testing/evals/database-testing.yaml +968 -968
- package/.claude/skills/database-testing/schemas/output.json +1446 -1446
- package/.claude/skills/debug-loop/SKILL.md +61 -61
- package/.claude/skills/enterprise-integration-testing/SKILL.md +735 -735
- package/.claude/skills/enterprise-integration-testing/evals/enterprise-integration-testing.yaml +158 -0
- package/.claude/skills/enterprise-integration-testing/schemas/output.json +74 -0
- package/.claude/skills/enterprise-integration-testing/scripts/validate-config.json +25 -0
- package/.claude/skills/iterative-loop/SKILL.md +371 -371
- package/.claude/skills/localization-testing/evals/localization-testing.yaml +544 -544
- package/.claude/skills/localization-testing/schemas/output.json +325 -325
- package/.claude/skills/middleware-testing-patterns/SKILL.md +798 -798
- package/.claude/skills/middleware-testing-patterns/evals/middleware-testing-patterns.yaml +153 -0
- package/.claude/skills/middleware-testing-patterns/schemas/output.json +58 -0
- package/.claude/skills/middleware-testing-patterns/scripts/validate-config.json +25 -0
- package/.claude/skills/mobile-testing/evals/mobile-testing.yaml +537 -537
- package/.claude/skills/mobile-testing/schemas/output.json +318 -318
- package/.claude/skills/mutation-testing/evals/mutation-testing.yaml +652 -652
- package/.claude/skills/mutation-testing/schemas/output.json +707 -707
- package/.claude/skills/mutation-testing/test-data/sample-output.json +295 -295
- package/.claude/skills/n8n-expression-testing/evals/n8n-expression-testing.yaml +450 -450
- package/.claude/skills/n8n-expression-testing/schemas/output.json +369 -369
- package/.claude/skills/n8n-integration-testing-patterns/evals/n8n-integration-testing-patterns.yaml +522 -522
- package/.claude/skills/n8n-integration-testing-patterns/schemas/output.json +291 -291
- package/.claude/skills/n8n-security-testing/evals/n8n-security-testing.yaml +493 -493
- package/.claude/skills/n8n-security-testing/schemas/output.json +293 -293
- package/.claude/skills/n8n-trigger-testing-strategies/evals/n8n-trigger-testing-strategies.yaml +500 -500
- package/.claude/skills/n8n-trigger-testing-strategies/schemas/output.json +295 -295
- package/.claude/skills/n8n-workflow-testing-fundamentals/evals/n8n-workflow-testing-fundamentals.yaml +497 -497
- package/.claude/skills/n8n-workflow-testing-fundamentals/schemas/output.json +254 -254
- package/.claude/skills/observability-testing-patterns/SKILL.md +930 -930
- package/.claude/skills/observability-testing-patterns/evals/observability-testing-patterns.yaml +157 -0
- package/.claude/skills/observability-testing-patterns/schemas/output.json +58 -0
- package/.claude/skills/observability-testing-patterns/scripts/validate-config.json +25 -0
- package/.claude/skills/pentest-validation/SKILL.md +268 -268
- package/.claude/skills/pentest-validation/evals/pentest-validation.yaml +708 -708
- package/.claude/skills/pentest-validation/schemas/output.json +281 -281
- package/.claude/skills/performance-analysis/evals/performance-analysis.yaml +144 -144
- package/.claude/skills/performance-analysis/schemas/output.json +588 -588
- package/.claude/skills/performance-testing/evals/performance-testing.yaml +772 -772
- package/.claude/skills/performance-testing/schemas/output.json +1184 -1184
- package/.claude/skills/pr-review/SKILL.md +61 -61
- package/.claude/skills/qcsd-cicd-swarm/SKILL.md +2206 -2206
- package/.claude/skills/qcsd-cicd-swarm/evals/qcsd-cicd-swarm.yaml +211 -0
- package/.claude/skills/qcsd-cicd-swarm/schemas/output.json +86 -0
- package/.claude/skills/qcsd-cicd-swarm/scripts/validate-config.json +30 -0
- package/.claude/skills/qcsd-development-swarm/SKILL.md +2154 -2154
- package/.claude/skills/qcsd-development-swarm/evals/qcsd-development-swarm.yaml +162 -0
- package/.claude/skills/qcsd-development-swarm/schemas/output.json +72 -0
- package/.claude/skills/qcsd-development-swarm/scripts/validate-config.json +25 -0
- package/.claude/skills/qcsd-ideation-swarm/evals/qcsd-ideation-swarm.yaml +138 -138
- package/.claude/skills/qcsd-ideation-swarm/schemas/output.json +568 -568
- package/.claude/skills/qcsd-production-swarm/SKILL.md +2781 -2781
- package/.claude/skills/qcsd-production-swarm/evals/qcsd-production-swarm.yaml +246 -246
- package/.claude/skills/qcsd-production-swarm/schemas/output.json +505 -505
- package/.claude/skills/qcsd-production-swarm/scripts/validate-config.json +25 -25
- package/.claude/skills/qe-chaos-resilience/evals/qe-chaos-resilience.yaml +443 -443
- package/.claude/skills/qe-chaos-resilience/schemas/output.json +314 -314
- package/.claude/skills/qe-code-intelligence/evals/qe-code-intelligence.yaml +459 -459
- package/.claude/skills/qe-code-intelligence/schemas/output.json +315 -315
- package/.claude/skills/qe-contract-testing/evals/qe-contract-testing.yaml +513 -513
- package/.claude/skills/qe-contract-testing/schemas/output.json +295 -295
- package/.claude/skills/qe-coverage-analysis/evals/qe-coverage-analysis.yaml +494 -494
- package/.claude/skills/qe-coverage-analysis/schemas/output.json +286 -286
- package/.claude/skills/qe-defect-intelligence/evals/qe-defect-intelligence.yaml +511 -511
- package/.claude/skills/qe-defect-intelligence/schemas/output.json +283 -283
- package/.claude/skills/qe-iterative-loop/schemas/output.json +264 -264
- package/.claude/skills/qe-learning-optimization/evals/qe-learning-optimization.yaml +144 -144
- package/.claude/skills/qe-learning-optimization/schemas/output.json +288 -288
- package/.claude/skills/qe-quality-assessment/evals/qe-quality-assessment.yaml +506 -506
- package/.claude/skills/qe-quality-assessment/schemas/output.json +550 -550
- package/.claude/skills/qe-requirements-validation/evals/qe-requirements-validation.yaml +598 -598
- package/.claude/skills/qe-requirements-validation/schemas/output.json +587 -587
- package/.claude/skills/qe-security-compliance/evals/qe-security-compliance.yaml +595 -595
- package/.claude/skills/qe-security-compliance/schemas/output.json +498 -498
- package/.claude/skills/qe-test-execution/evals/qe-test-execution.yaml +607 -607
- package/.claude/skills/qe-test-execution/schemas/output.json +529 -529
- package/.claude/skills/qe-test-generation/evals/qe-test-generation.yaml +148 -148
- package/.claude/skills/qe-test-generation/schemas/output.json +439 -439
- package/.claude/skills/qe-visual-accessibility/evals/qe-visual-accessibility.yaml +142 -142
- package/.claude/skills/qe-visual-accessibility/schemas/output.json +491 -491
- package/.claude/skills/quality-metrics/evals/quality-metrics.yaml +494 -494
- package/.claude/skills/quality-metrics/schemas/output.json +403 -403
- package/.claude/skills/refactoring-patterns/schemas/output.json +475 -475
- package/.claude/skills/regression-testing/evals/regression-testing.yaml +504 -504
- package/.claude/skills/regression-testing/schemas/output.json +311 -311
- package/.claude/skills/release/SKILL.md +347 -347
- package/.claude/skills/risk-based-testing/evals/risk-based-testing.yaml +141 -141
- package/.claude/skills/risk-based-testing/schemas/output.json +480 -480
- package/.claude/skills/security-testing/evals/security-testing.yaml +789 -789
- package/.claude/skills/security-testing/schemas/output.json +879 -879
- package/.claude/skills/security-visual-testing/evals/security-visual-testing.yaml +163 -163
- package/.claude/skills/security-visual-testing/schemas/output.json +486 -486
- package/.claude/skills/sfdipot-product-factors/SKILL.md +239 -239
- package/.claude/skills/sherlock-review/schemas/output.json +297 -297
- package/.claude/skills/shift-left-testing/evals/shift-left-testing.yaml +145 -145
- package/.claude/skills/shift-left-testing/schemas/output.json +459 -459
- package/.claude/skills/shift-right-testing/evals/shift-right-testing.yaml +147 -147
- package/.claude/skills/shift-right-testing/schemas/output.json +418 -418
- package/.claude/skills/skills-manifest.json +1 -1
- package/.claude/skills/tdd-london-chicago/schemas/output.json +444 -444
- package/.claude/skills/technical-writing/schemas/output.json +268 -268
- package/.claude/skills/test-automation-strategy/evals/test-automation-strategy.yaml +148 -148
- package/.claude/skills/test-automation-strategy/schemas/output.json +444 -444
- package/.claude/skills/test-data-management/evals/test-data-management.yaml +504 -504
- package/.claude/skills/test-data-management/schemas/output.json +284 -284
- package/.claude/skills/test-design-techniques/evals/test-design-techniques.yaml +142 -142
- package/.claude/skills/test-design-techniques/schemas/output.json +295 -295
- package/.claude/skills/test-environment-management/schemas/output.json +310 -310
- package/.claude/skills/test-idea-rewriting/SKILL.md +229 -229
- package/.claude/skills/test-reporting-analytics/evals/test-reporting-analytics.yaml +155 -155
- package/.claude/skills/test-reporting-analytics/schemas/output.json +329 -329
- package/.claude/skills/testability-scoring/evals/testability-scoring.yaml +814 -814
- package/.claude/skills/testability-scoring/resources/templates/config.template.js +84 -84
- package/.claude/skills/testability-scoring/schemas/output.json +606 -606
- package/.claude/skills/testability-scoring/scripts/generate-html-report.js +1007 -1007
- package/.claude/skills/trust-tier-manifest.json +78 -7
- package/.claude/skills/verification-quality/evals/verification-quality.yaml +150 -150
- package/.claude/skills/verification-quality/schemas/output.json +432 -432
- package/.claude/skills/visual-testing-advanced/evals/visual-testing-advanced.yaml +154 -154
- package/.claude/skills/visual-testing-advanced/schemas/output.json +294 -294
- package/.claude/skills/wms-testing-patterns/evals/wms-testing-patterns.yaml +165 -165
- package/.claude/skills/wms-testing-patterns/schemas/output.json +150 -150
- package/.claude/skills/wms-testing-patterns/scripts/validate-config.json +51 -51
- package/CHANGELOG.md +34 -0
- package/README.md +169 -900
- package/assets/agents/v3/helpers/quality-criteria/evidence-classification.md +116 -116
- package/assets/agents/v3/helpers/quality-criteria/htsm-categories.md +139 -139
- package/assets/governance/constitution.md +202 -202
- package/assets/governance/shards/chaos-resilience.shard.md +221 -221
- package/assets/governance/shards/code-intelligence.shard.md +178 -178
- package/assets/governance/shards/contract-testing.shard.md +206 -206
- package/assets/governance/shards/coverage-analysis.shard.md +146 -146
- package/assets/governance/shards/defect-intelligence.shard.md +182 -182
- package/assets/governance/shards/learning-optimization.shard.md +248 -248
- package/assets/governance/shards/quality-assessment.shard.md +165 -165
- package/assets/governance/shards/requirements-validation.shard.md +177 -177
- package/assets/governance/shards/security-compliance.shard.md +196 -196
- package/assets/governance/shards/test-execution.shard.md +156 -156
- package/assets/governance/shards/test-generation.shard.md +128 -128
- package/assets/governance/shards/visual-accessibility.shard.md +209 -209
- package/assets/hooks/cross-phase-memory.yaml +253 -253
- package/assets/patterns/adr-051-booster-patterns.json +78 -78
- package/assets/patterns/adr-051-embedding-patterns.json +147 -147
- package/assets/patterns/adr-051-integration-summary.json +62 -62
- package/assets/patterns/adr-051-reasoning-patterns.json +166 -166
- package/assets/patterns/adr-051-router-patterns.json +113 -113
- package/assets/patterns/index.json +136 -136
- package/assets/skills/.validation/README.md +111 -111
- package/assets/skills/.validation/examples/chaos-engineering-output.example.json +530 -530
- package/assets/skills/.validation/examples/performance-testing-output.example.json +252 -252
- package/assets/skills/.validation/examples/security-testing-output.example.json +413 -413
- package/assets/skills/.validation/examples/testability-scoring-output.example.json +350 -350
- package/assets/skills/.validation/schemas/skill-eval.schema.json +462 -462
- package/assets/skills/.validation/schemas/skill-frontmatter.schema.json +341 -341
- package/assets/skills/.validation/schemas/skill-output-meta.schema.json +199 -199
- package/assets/skills/.validation/schemas/skill-output.template.json +610 -610
- package/assets/skills/.validation/skill-validation-mcp-integration.md +250 -250
- package/assets/skills/.validation/templates/eval.template.yaml +366 -366
- package/assets/skills/.validation/templates/schemas/output.json +145 -145
- package/assets/skills/.validation/templates/security-testing-eval.template.yaml +725 -725
- package/assets/skills/.validation/templates/skill-frontmatter.example.yaml +225 -225
- package/assets/skills/.validation/test-data/invalid-output.json +5 -5
- package/assets/skills/.validation/test-data/minimal-output.json +9 -9
- package/assets/skills/.validation/test-data/sample-output.json +73 -73
- package/assets/skills/a11y-ally/SKILL.md +1664 -1658
- package/assets/skills/a11y-ally/evals/a11y-ally.yaml +376 -0
- package/assets/skills/a11y-ally/schemas/output.json +549 -0
- package/assets/skills/a11y-ally/scripts/validate-config.json +42 -0
- package/assets/skills/accessibility-testing/evals/accessibility-testing.yaml +719 -719
- package/assets/skills/accessibility-testing/schemas/output.json +776 -776
- package/assets/skills/accessibility-testing/test-data/sample-output.json +191 -191
- package/assets/skills/agentic-quality-engineering/schemas/output.json +577 -577
- package/assets/skills/api-testing-patterns/evals/api-testing-patterns.yaml +696 -696
- package/assets/skills/api-testing-patterns/schemas/output.json +845 -845
- package/assets/skills/aqe-v2-v3-migration/schemas/output.json +513 -513
- package/assets/skills/brutal-honesty-review/SKILL.md +5 -0
- package/assets/skills/brutal-honesty-review/schemas/output.json +291 -0
- package/assets/skills/brutal-honesty-review/scripts/validate-config.json +34 -0
- package/assets/skills/bug-reporting-excellence/schemas/output.json +288 -288
- package/assets/skills/chaos-engineering-resilience/evals/chaos-engineering-resilience.yaml +761 -761
- package/assets/skills/chaos-engineering-resilience/schemas/output.json +1205 -1205
- package/assets/skills/cicd-pipeline-qe-orchestrator/README.md +1 -1
- package/assets/skills/cicd-pipeline-qe-orchestrator/SKILL.md +6 -0
- package/assets/skills/cicd-pipeline-qe-orchestrator/evals/cicd-pipeline-qe-orchestrator.yaml +157 -0
- package/assets/skills/cicd-pipeline-qe-orchestrator/schemas/output.json +542 -0
- package/assets/skills/cicd-pipeline-qe-orchestrator/scripts/validate-config.json +42 -0
- package/assets/skills/code-review-quality/schemas/output.json +264 -264
- package/assets/skills/compatibility-testing/evals/compatibility-testing.yaml +410 -410
- package/assets/skills/compatibility-testing/schemas/output.json +551 -551
- package/assets/skills/compliance-testing/evals/compliance-testing.yaml +1107 -1107
- package/assets/skills/compliance-testing/schemas/output.json +845 -845
- package/assets/skills/consultancy-practices/schemas/output.json +282 -282
- package/assets/skills/contract-testing/evals/contract-testing.yaml +748 -748
- package/assets/skills/contract-testing/schemas/output.json +638 -638
- package/assets/skills/database-testing/evals/database-testing.yaml +968 -968
- package/assets/skills/database-testing/schemas/output.json +1446 -1446
- package/assets/skills/debug-loop/SKILL.md +61 -61
- package/assets/skills/enterprise-integration-testing/SKILL.md +735 -735
- package/assets/skills/enterprise-integration-testing/evals/enterprise-integration-testing.yaml +158 -0
- package/assets/skills/enterprise-integration-testing/schemas/output.json +74 -0
- package/assets/skills/enterprise-integration-testing/scripts/validate-config.json +25 -0
- package/assets/skills/localization-testing/evals/localization-testing.yaml +544 -544
- package/assets/skills/localization-testing/schemas/output.json +325 -325
- package/assets/skills/middleware-testing-patterns/SKILL.md +798 -798
- package/assets/skills/middleware-testing-patterns/evals/middleware-testing-patterns.yaml +153 -0
- package/assets/skills/middleware-testing-patterns/schemas/output.json +58 -0
- package/assets/skills/middleware-testing-patterns/scripts/validate-config.json +25 -0
- package/assets/skills/mobile-testing/evals/mobile-testing.yaml +537 -537
- package/assets/skills/mobile-testing/schemas/output.json +318 -318
- package/assets/skills/mutation-testing/evals/mutation-testing.yaml +652 -652
- package/assets/skills/mutation-testing/schemas/output.json +707 -707
- package/assets/skills/mutation-testing/test-data/sample-output.json +295 -295
- package/assets/skills/n8n-expression-testing/SKILL.md +6 -0
- package/assets/skills/n8n-expression-testing/evals/n8n-expression-testing.yaml +450 -0
- package/assets/skills/n8n-expression-testing/schemas/output.json +369 -0
- package/assets/skills/n8n-expression-testing/scripts/validate-config.json +39 -0
- package/assets/skills/n8n-integration-testing-patterns/SKILL.md +6 -0
- package/assets/skills/n8n-integration-testing-patterns/evals/n8n-integration-testing-patterns.yaml +522 -0
- package/assets/skills/n8n-integration-testing-patterns/schemas/output.json +291 -0
- package/assets/skills/n8n-integration-testing-patterns/scripts/validate-config.json +34 -0
- package/assets/skills/n8n-security-testing/SKILL.md +6 -0
- package/assets/skills/n8n-security-testing/evals/n8n-security-testing.yaml +493 -0
- package/assets/skills/n8n-security-testing/schemas/output.json +293 -0
- package/assets/skills/n8n-security-testing/scripts/validate-config.json +34 -0
- package/assets/skills/n8n-trigger-testing-strategies/SKILL.md +6 -0
- package/assets/skills/n8n-trigger-testing-strategies/evals/n8n-trigger-testing-strategies.yaml +500 -0
- package/assets/skills/n8n-trigger-testing-strategies/schemas/output.json +295 -0
- package/assets/skills/n8n-trigger-testing-strategies/scripts/validate-config.json +34 -0
- package/assets/skills/n8n-workflow-testing-fundamentals/SKILL.md +6 -0
- package/assets/skills/n8n-workflow-testing-fundamentals/evals/n8n-workflow-testing-fundamentals.yaml +497 -0
- package/assets/skills/n8n-workflow-testing-fundamentals/schemas/output.json +254 -0
- package/assets/skills/n8n-workflow-testing-fundamentals/scripts/validate-config.json +35 -0
- package/assets/skills/observability-testing-patterns/SKILL.md +930 -930
- package/assets/skills/observability-testing-patterns/evals/observability-testing-patterns.yaml +157 -0
- package/assets/skills/observability-testing-patterns/schemas/output.json +58 -0
- package/assets/skills/observability-testing-patterns/scripts/validate-config.json +25 -0
- package/assets/skills/pentest-validation/SKILL.md +268 -268
- package/assets/skills/pentest-validation/evals/pentest-validation.yaml +708 -708
- package/assets/skills/pentest-validation/schemas/output.json +281 -281
- package/assets/skills/pentest-validation/scripts/validate-config.json +12 -0
- package/assets/skills/performance-testing/evals/performance-testing.yaml +772 -772
- package/assets/skills/performance-testing/schemas/output.json +1184 -1184
- package/assets/skills/pr-review/SKILL.md +61 -61
- package/assets/skills/qcsd-cicd-swarm/SKILL.md +2206 -2206
- package/assets/skills/qcsd-cicd-swarm/evals/qcsd-cicd-swarm.yaml +211 -0
- package/assets/skills/qcsd-cicd-swarm/schemas/output.json +86 -0
- package/assets/skills/qcsd-cicd-swarm/scripts/validate-config.json +30 -0
- package/assets/skills/qcsd-development-swarm/SKILL.md +2154 -2154
- package/assets/skills/qcsd-development-swarm/evals/qcsd-development-swarm.yaml +162 -0
- package/assets/skills/qcsd-development-swarm/schemas/output.json +72 -0
- package/assets/skills/qcsd-development-swarm/scripts/validate-config.json +25 -0
- package/assets/skills/qcsd-ideation-swarm/evals/qcsd-ideation-swarm.yaml +138 -0
- package/assets/skills/qcsd-ideation-swarm/schemas/output.json +568 -0
- package/assets/skills/qcsd-ideation-swarm/scripts/validate-config.json +25 -0
- package/assets/skills/qcsd-production-swarm/SKILL.md +2781 -0
- package/assets/skills/qcsd-production-swarm/evals/qcsd-production-swarm.yaml +246 -0
- package/assets/skills/qcsd-production-swarm/schemas/output.json +505 -0
- package/assets/skills/qcsd-production-swarm/scripts/validate-config.json +25 -0
- package/assets/skills/qcsd-refinement-swarm/evals/qcsd-refinement-swarm.yaml +139 -0
- package/assets/skills/qcsd-refinement-swarm/schemas/output.json +811 -0
- package/assets/skills/qcsd-refinement-swarm/scripts/validate-config.json +25 -0
- package/assets/skills/qe-chaos-resilience/evals/qe-chaos-resilience.yaml +443 -443
- package/assets/skills/qe-chaos-resilience/schemas/output.json +314 -314
- package/assets/skills/qe-code-intelligence/evals/qe-code-intelligence.yaml +459 -459
- package/assets/skills/qe-code-intelligence/schemas/output.json +315 -315
- package/assets/skills/qe-contract-testing/evals/qe-contract-testing.yaml +513 -513
- package/assets/skills/qe-contract-testing/schemas/output.json +295 -295
- package/assets/skills/qe-coverage-analysis/evals/qe-coverage-analysis.yaml +494 -494
- package/assets/skills/qe-coverage-analysis/schemas/output.json +286 -286
- package/assets/skills/qe-defect-intelligence/evals/qe-defect-intelligence.yaml +511 -511
- package/assets/skills/qe-defect-intelligence/schemas/output.json +283 -283
- package/assets/skills/qe-iterative-loop/schemas/output.json +264 -264
- package/assets/skills/qe-learning-optimization/evals/qe-learning-optimization.yaml +144 -144
- package/assets/skills/qe-learning-optimization/schemas/output.json +288 -288
- package/assets/skills/qe-quality-assessment/evals/qe-quality-assessment.yaml +506 -506
- package/assets/skills/qe-quality-assessment/schemas/output.json +550 -550
- package/assets/skills/qe-requirements-validation/evals/qe-requirements-validation.yaml +598 -598
- package/assets/skills/qe-requirements-validation/schemas/output.json +587 -587
- package/assets/skills/qe-security-compliance/evals/qe-security-compliance.yaml +595 -595
- package/assets/skills/qe-security-compliance/schemas/output.json +498 -498
- package/assets/skills/qe-test-execution/evals/qe-test-execution.yaml +607 -607
- package/assets/skills/qe-test-execution/schemas/output.json +529 -529
- package/assets/skills/qe-test-generation/evals/qe-test-generation.yaml +148 -148
- package/assets/skills/qe-test-generation/schemas/output.json +439 -439
- package/assets/skills/qe-visual-accessibility/evals/qe-visual-accessibility.yaml +142 -142
- package/assets/skills/qe-visual-accessibility/schemas/output.json +491 -491
- package/assets/skills/quality-metrics/evals/quality-metrics.yaml +494 -494
- package/assets/skills/quality-metrics/schemas/output.json +403 -403
- package/assets/skills/refactoring-patterns/schemas/output.json +475 -475
- package/assets/skills/regression-testing/evals/regression-testing.yaml +504 -504
- package/assets/skills/regression-testing/schemas/output.json +311 -311
- package/assets/skills/risk-based-testing/evals/risk-based-testing.yaml +141 -141
- package/assets/skills/risk-based-testing/schemas/output.json +480 -480
- package/assets/skills/security-testing/evals/security-testing.yaml +789 -789
- package/assets/skills/security-testing/schemas/output.json +879 -879
- package/assets/skills/security-visual-testing/evals/security-visual-testing.yaml +163 -163
- package/assets/skills/security-visual-testing/schemas/output.json +486 -486
- package/assets/skills/security-visual-testing/scripts/validate-config.json +45 -0
- package/assets/skills/sfdipot-product-factors/SKILL.md +239 -239
- package/assets/skills/sherlock-review/SKILL.md +5 -0
- package/assets/skills/sherlock-review/schemas/output.json +297 -0
- package/assets/skills/sherlock-review/scripts/validate-config.json +35 -0
- package/assets/skills/shift-left-testing/evals/shift-left-testing.yaml +145 -145
- package/assets/skills/shift-left-testing/schemas/output.json +459 -459
- package/assets/skills/shift-right-testing/evals/shift-right-testing.yaml +147 -147
- package/assets/skills/shift-right-testing/schemas/output.json +418 -418
- package/assets/skills/tdd-london-chicago/schemas/output.json +444 -444
- package/assets/skills/technical-writing/schemas/output.json +268 -268
- package/assets/skills/test-automation-strategy/evals/test-automation-strategy.yaml +148 -148
- package/assets/skills/test-automation-strategy/schemas/output.json +444 -444
- package/assets/skills/test-data-management/evals/test-data-management.yaml +504 -504
- package/assets/skills/test-data-management/schemas/output.json +284 -284
- package/assets/skills/test-design-techniques/evals/test-design-techniques.yaml +142 -142
- package/assets/skills/test-design-techniques/schemas/output.json +295 -295
- package/assets/skills/test-environment-management/schemas/output.json +310 -310
- package/assets/skills/test-idea-rewriting/SKILL.md +229 -229
- package/assets/skills/test-reporting-analytics/evals/test-reporting-analytics.yaml +155 -155
- package/assets/skills/test-reporting-analytics/schemas/output.json +329 -329
- package/assets/skills/testability-scoring/SKILL.md +5 -0
- package/assets/skills/testability-scoring/evals/testability-scoring.yaml +814 -0
- package/assets/skills/testability-scoring/resources/templates/config.template.js +84 -84
- package/assets/skills/testability-scoring/schemas/output.json +606 -0
- package/assets/skills/testability-scoring/scripts/generate-html-report.js +1007 -1007
- package/assets/skills/testability-scoring/scripts/validate-config.json +42 -0
- package/assets/skills/trust-tier-manifest.json +2404 -0
- package/assets/skills/verification-quality/evals/verification-quality.yaml +150 -150
- package/assets/skills/verification-quality/schemas/output.json +432 -432
- package/assets/skills/visual-testing-advanced/evals/visual-testing-advanced.yaml +154 -154
- package/assets/skills/visual-testing-advanced/schemas/output.json +294 -294
- package/assets/skills/wms-testing-patterns/evals/wms-testing-patterns.yaml +165 -0
- package/assets/skills/wms-testing-patterns/schemas/output.json +150 -0
- package/assets/skills/wms-testing-patterns/scripts/validate-config.json +51 -0
- package/assets/templates/validation-summary.json +56 -56
- package/dist/benchmarks/performance-benchmarks.js +1 -1
- package/dist/cli/bundle.js +9158 -2288
- package/dist/cli/commands/hooks.d.ts.map +1 -1
- package/dist/cli/commands/hooks.js +92 -0
- package/dist/cli/commands/hooks.js.map +1 -1
- package/dist/cli/commands/mcp.d.ts.map +1 -1
- package/dist/cli/commands/mcp.js +11 -9
- package/dist/cli/commands/mcp.js.map +1 -1
- package/dist/cli/commands/migrate.js +2 -2
- package/dist/coordination/constants.d.ts +1 -1
- package/dist/coordination/constants.js +1 -1
- package/dist/coordination/handlers/coverage-handlers.js +1 -1
- package/dist/coordination/handlers/coverage-handlers.js.map +1 -1
- package/dist/domains/code-intelligence/services/semantic-analyzer.d.ts +1 -1
- package/dist/domains/code-intelligence/services/semantic-analyzer.d.ts.map +1 -1
- package/dist/domains/code-intelligence/services/semantic-analyzer.js +1 -1
- package/dist/domains/code-intelligence/services/semantic-analyzer.js.map +1 -1
- package/dist/domains/coverage-analysis/coordinator.js +1 -1
- package/dist/domains/coverage-analysis/services/coverage-analyzer.js +1 -1
- package/dist/domains/coverage-analysis/services/coverage-embedder.d.ts +1 -1
- package/dist/domains/coverage-analysis/services/coverage-embedder.js +1 -1
- package/dist/domains/coverage-analysis/services/gap-detector.js +1 -1
- package/dist/domains/coverage-analysis/services/ghost-coverage-analyzer.js +1 -1
- package/dist/domains/coverage-analysis/services/hnsw-index.d.ts +2 -2
- package/dist/domains/coverage-analysis/services/hnsw-index.js +3 -3
- package/dist/domains/coverage-analysis/services/sublinear-analyzer.d.ts +1 -1
- package/dist/domains/coverage-analysis/services/sublinear-analyzer.js +1 -1
- package/dist/domains/test-execution/services/test-prioritizer.js +1 -1
- package/dist/domains/test-generation/context/rust-context-builder.d.ts +31 -0
- package/dist/domains/test-generation/context/rust-context-builder.d.ts.map +1 -0
- package/dist/domains/test-generation/context/rust-context-builder.js +27 -0
- package/dist/domains/test-generation/context/rust-context-builder.js.map +1 -0
- package/dist/domains/test-generation/coordinator.js +3 -3
- package/dist/domains/test-generation/coordinator.js.map +1 -1
- package/dist/domains/test-generation/detectors/mobile-detector.d.ts +41 -0
- package/dist/domains/test-generation/detectors/mobile-detector.d.ts.map +1 -0
- package/dist/domains/test-generation/detectors/mobile-detector.js +111 -0
- package/dist/domains/test-generation/detectors/mobile-detector.js.map +1 -0
- package/dist/domains/test-generation/detectors/spring-detector.d.ts +22 -0
- package/dist/domains/test-generation/detectors/spring-detector.d.ts.map +1 -0
- package/dist/domains/test-generation/detectors/spring-detector.js +37 -0
- package/dist/domains/test-generation/detectors/spring-detector.js.map +1 -0
- package/dist/domains/test-generation/factories/test-generator-factory.d.ts +2 -1
- package/dist/domains/test-generation/factories/test-generator-factory.d.ts.map +1 -1
- package/dist/domains/test-generation/factories/test-generator-factory.js +33 -13
- package/dist/domains/test-generation/factories/test-generator-factory.js.map +1 -1
- package/dist/domains/test-generation/generators/flutter-test-generator.d.ts +107 -0
- package/dist/domains/test-generation/generators/flutter-test-generator.d.ts.map +1 -0
- package/dist/domains/test-generation/generators/flutter-test-generator.js +590 -0
- package/dist/domains/test-generation/generators/flutter-test-generator.js.map +1 -0
- package/dist/domains/test-generation/generators/go-test-generator.d.ts +139 -0
- package/dist/domains/test-generation/generators/go-test-generator.d.ts.map +1 -0
- package/dist/domains/test-generation/generators/go-test-generator.js +654 -0
- package/dist/domains/test-generation/generators/go-test-generator.js.map +1 -0
- package/dist/domains/test-generation/generators/index.d.ts +8 -0
- package/dist/domains/test-generation/generators/index.d.ts.map +1 -1
- package/dist/domains/test-generation/generators/index.js +8 -0
- package/dist/domains/test-generation/generators/index.js.map +1 -1
- package/dist/domains/test-generation/generators/jest-rn-generator.d.ts +95 -0
- package/dist/domains/test-generation/generators/jest-rn-generator.d.ts.map +1 -0
- package/dist/domains/test-generation/generators/jest-rn-generator.js +591 -0
- package/dist/domains/test-generation/generators/jest-rn-generator.js.map +1 -0
- package/dist/domains/test-generation/generators/junit5-generator.d.ts +107 -0
- package/dist/domains/test-generation/generators/junit5-generator.d.ts.map +1 -0
- package/dist/domains/test-generation/generators/junit5-generator.js +588 -0
- package/dist/domains/test-generation/generators/junit5-generator.js.map +1 -0
- package/dist/domains/test-generation/generators/kotlin-junit-generator.d.ts +109 -0
- package/dist/domains/test-generation/generators/kotlin-junit-generator.d.ts.map +1 -0
- package/dist/domains/test-generation/generators/kotlin-junit-generator.js +588 -0
- package/dist/domains/test-generation/generators/kotlin-junit-generator.js.map +1 -0
- package/dist/domains/test-generation/generators/pytest-generator.d.ts +8 -1
- package/dist/domains/test-generation/generators/pytest-generator.d.ts.map +1 -1
- package/dist/domains/test-generation/generators/pytest-generator.js +57 -0
- package/dist/domains/test-generation/generators/pytest-generator.js.map +1 -1
- package/dist/domains/test-generation/generators/rust-test-generator.d.ts +80 -0
- package/dist/domains/test-generation/generators/rust-test-generator.d.ts.map +1 -0
- package/dist/domains/test-generation/generators/rust-test-generator.js +442 -0
- package/dist/domains/test-generation/generators/rust-test-generator.js.map +1 -0
- package/dist/domains/test-generation/generators/swift-testing-generator.d.ts +97 -0
- package/dist/domains/test-generation/generators/swift-testing-generator.d.ts.map +1 -0
- package/dist/domains/test-generation/generators/swift-testing-generator.js +482 -0
- package/dist/domains/test-generation/generators/swift-testing-generator.js.map +1 -0
- package/dist/domains/test-generation/generators/xunit-generator.d.ts +110 -0
- package/dist/domains/test-generation/generators/xunit-generator.d.ts.map +1 -0
- package/dist/domains/test-generation/generators/xunit-generator.js +611 -0
- package/dist/domains/test-generation/generators/xunit-generator.js.map +1 -0
- package/dist/domains/test-generation/interfaces.d.ts +11 -2
- package/dist/domains/test-generation/interfaces.d.ts.map +1 -1
- package/dist/domains/test-generation/prompts/language-prompts.d.ts +29 -0
- package/dist/domains/test-generation/prompts/language-prompts.d.ts.map +1 -0
- package/dist/domains/test-generation/prompts/language-prompts.js +135 -0
- package/dist/domains/test-generation/prompts/language-prompts.js.map +1 -0
- package/dist/domains/test-generation/services/compilation-validator.d.ts +43 -0
- package/dist/domains/test-generation/services/compilation-validator.d.ts.map +1 -0
- package/dist/domains/test-generation/services/compilation-validator.js +134 -0
- package/dist/domains/test-generation/services/compilation-validator.js.map +1 -0
- package/dist/domains/test-generation/services/index.d.ts +2 -1
- package/dist/domains/test-generation/services/index.d.ts.map +1 -1
- package/dist/domains/test-generation/services/index.js +3 -1
- package/dist/domains/test-generation/services/index.js.map +1 -1
- package/dist/domains/test-generation/services/test-file-resolver.d.ts +32 -0
- package/dist/domains/test-generation/services/test-file-resolver.d.ts.map +1 -0
- package/dist/domains/test-generation/services/test-file-resolver.js +159 -0
- package/dist/domains/test-generation/services/test-file-resolver.js.map +1 -0
- package/dist/domains/test-generation/services/test-generator.d.ts +10 -0
- package/dist/domains/test-generation/services/test-generator.d.ts.map +1 -1
- package/dist/domains/test-generation/services/test-generator.js +87 -10
- package/dist/domains/test-generation/services/test-generator.js.map +1 -1
- package/dist/governance/feature-flags.js +2 -2
- package/dist/governance/feature-flags.js.map +1 -1
- package/dist/governance/shard-embeddings.js +1 -1
- package/dist/init/init-wizard-hooks.d.ts.map +1 -1
- package/dist/init/init-wizard-hooks.js +0 -1
- package/dist/init/init-wizard-hooks.js.map +1 -1
- package/dist/init/phases/07-hooks.d.ts.map +1 -1
- package/dist/init/phases/07-hooks.js +0 -2
- package/dist/init/phases/07-hooks.js.map +1 -1
- package/dist/init/phases/08-mcp.d.ts +8 -4
- package/dist/init/phases/08-mcp.d.ts.map +1 -1
- package/dist/init/phases/08-mcp.js +13 -31
- package/dist/init/phases/08-mcp.js.map +1 -1
- package/dist/init/phases/10-workers.js +4 -4
- package/dist/init/phases/10-workers.js.map +1 -1
- package/dist/init/settings-merge.d.ts.map +1 -1
- package/dist/init/settings-merge.js +0 -2
- package/dist/init/settings-merge.js.map +1 -1
- package/dist/init/token-bootstrap.js +1 -1
- package/dist/init/token-bootstrap.js.map +1 -1
- package/dist/integrations/rl-suite/algorithms/decision-transformer.js +1 -1
- package/dist/kernel/constants.d.ts +2 -2
- package/dist/kernel/constants.js +2 -2
- package/dist/kernel/hnsw-adapter.js +1 -1
- package/dist/kernel/progressive-hnsw-backend.d.ts +2 -2
- package/dist/kernel/progressive-hnsw-backend.js +2 -2
- package/dist/learning/dream/concept-graph.d.ts +1 -1
- package/dist/learning/dream/concept-graph.js +1 -1
- package/dist/learning/dream/dream-engine.d.ts +1 -1
- package/dist/learning/dream/dream-engine.js +1 -1
- package/dist/learning/dream/index.d.ts +1 -1
- package/dist/learning/dream/index.js +1 -1
- package/dist/learning/dream/types.d.ts +1 -1
- package/dist/learning/dream/types.d.ts.map +1 -1
- package/dist/learning/dream/types.js +1 -1
- package/dist/learning/dream/types.js.map +1 -1
- package/dist/learning/token-tracker.js +1 -1
- package/dist/learning/token-tracker.js.map +1 -1
- package/dist/mcp/bundle.js +7538 -893
- package/dist/routing/qe-agent-registry.js +4 -4
- package/dist/routing/qe-agent-registry.js.map +1 -1
- package/dist/routing/types.d.ts +5 -8
- package/dist/routing/types.d.ts.map +1 -1
- package/dist/routing/types.js.map +1 -1
- package/dist/shared/embeddings/embedding-cache.js +2 -2
- package/dist/shared/embeddings/index.d.ts +2 -2
- package/dist/shared/embeddings/index.js +2 -2
- package/dist/shared/embeddings/nomic-embedder.d.ts +4 -4
- package/dist/shared/embeddings/nomic-embedder.js +2 -2
- package/dist/shared/embeddings/ollama-client.d.ts +1 -1
- package/dist/shared/embeddings/ollama-client.js +2 -2
- package/dist/shared/embeddings/ollama-client.js.map +1 -1
- package/dist/shared/embeddings/types.d.ts +2 -2
- package/dist/shared/embeddings/types.js +2 -2
- package/dist/shared/language-detector.d.ts +46 -0
- package/dist/shared/language-detector.d.ts.map +1 -0
- package/dist/shared/language-detector.js +183 -0
- package/dist/shared/language-detector.js.map +1 -0
- package/dist/shared/llm/providers/ollama.js +1 -1
- package/dist/shared/metrics/code-metrics.d.ts.map +1 -1
- package/dist/shared/metrics/code-metrics.js +24 -1
- package/dist/shared/metrics/code-metrics.js.map +1 -1
- package/dist/shared/parsers/index.d.ts +2 -0
- package/dist/shared/parsers/index.d.ts.map +1 -1
- package/dist/shared/parsers/index.js +2 -0
- package/dist/shared/parsers/index.js.map +1 -1
- package/dist/shared/parsers/interfaces.d.ts +81 -0
- package/dist/shared/parsers/interfaces.d.ts.map +1 -0
- package/dist/shared/parsers/interfaces.js +6 -0
- package/dist/shared/parsers/interfaces.js.map +1 -0
- package/dist/shared/parsers/multi-language-parser.d.ts +144 -0
- package/dist/shared/parsers/multi-language-parser.d.ts.map +1 -0
- package/dist/shared/parsers/multi-language-parser.js +1271 -0
- package/dist/shared/parsers/multi-language-parser.js.map +1 -0
- package/dist/shared/parsers/rust-ownership-analyzer.d.ts +45 -0
- package/dist/shared/parsers/rust-ownership-analyzer.d.ts.map +1 -0
- package/dist/shared/parsers/rust-ownership-analyzer.js +52 -0
- package/dist/shared/parsers/rust-ownership-analyzer.js.map +1 -0
- package/dist/shared/parsers/typescript-parser.d.ts +16 -0
- package/dist/shared/parsers/typescript-parser.d.ts.map +1 -1
- package/dist/shared/parsers/typescript-parser.js +85 -0
- package/dist/shared/parsers/typescript-parser.js.map +1 -1
- package/dist/shared/types/test-frameworks.d.ts +25 -0
- package/dist/shared/types/test-frameworks.d.ts.map +1 -0
- package/dist/shared/types/test-frameworks.js +111 -0
- package/dist/shared/types/test-frameworks.js.map +1 -0
- package/package.json +1 -1
- package/scripts/prepare-assets.sh +16 -2
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mobile Framework Detection for test generation routing (M4.5)
|
|
3
|
+
*
|
|
4
|
+
* Detects SwiftUI, Jetpack Compose, and Flutter Widget patterns
|
|
5
|
+
* to route between unit tests vs widget/UI tests.
|
|
6
|
+
*
|
|
7
|
+
* @module test-generation/detectors
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Detect SwiftUI view patterns in Swift source code.
|
|
11
|
+
* Looks for `import SwiftUI` and `var body: some View`.
|
|
12
|
+
*/
|
|
13
|
+
export function detectSwiftUIView(content, parsed) {
|
|
14
|
+
const hasImport = /import\s+SwiftUI/.test(content);
|
|
15
|
+
const hasBody = /var\s+body\s*:\s*some\s+View/.test(content);
|
|
16
|
+
const hasViewProtocol = parsed?.classes.some(c => c.implements?.includes('View') || c.extends === 'View') ?? /:\s*View\b/.test(content);
|
|
17
|
+
if (hasImport && (hasBody || hasViewProtocol)) {
|
|
18
|
+
return {
|
|
19
|
+
framework: 'swiftui',
|
|
20
|
+
testStrategy: 'ui',
|
|
21
|
+
imports: ['import Testing', '@testable import MyApp'],
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
// Plain Swift class/struct — unit test
|
|
25
|
+
if (parsed?.classes.length || parsed?.functions.length) {
|
|
26
|
+
return undefined; // No SwiftUI detected, fall through to unit test
|
|
27
|
+
}
|
|
28
|
+
return undefined;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Detect Jetpack Compose composable patterns in Kotlin source code.
|
|
32
|
+
* Looks for `@Composable` annotation.
|
|
33
|
+
*/
|
|
34
|
+
export function detectComposable(content, parsed) {
|
|
35
|
+
const hasComposable = /@Composable/.test(content);
|
|
36
|
+
const hasComposeImport = /import\s+androidx\.compose/.test(content);
|
|
37
|
+
if (hasComposable || hasComposeImport) {
|
|
38
|
+
const hasState = /remember\s*\{|mutableStateOf|collectAsState/.test(content);
|
|
39
|
+
return {
|
|
40
|
+
framework: 'compose',
|
|
41
|
+
testStrategy: hasState ? 'widget' : 'ui',
|
|
42
|
+
imports: [
|
|
43
|
+
'import androidx.compose.ui.test.junit4.createComposeRule',
|
|
44
|
+
'import androidx.compose.ui.test.onNodeWithText',
|
|
45
|
+
'import androidx.compose.ui.test.performClick',
|
|
46
|
+
],
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
return undefined;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Detect Flutter Widget patterns in Dart source code.
|
|
53
|
+
* Looks for `extends StatelessWidget` / `extends StatefulWidget` / `extends State<T>`.
|
|
54
|
+
*/
|
|
55
|
+
export function detectFlutterWidget(content, parsed) {
|
|
56
|
+
const extendsWidget = /extends\s+(Stateless|Stateful)Widget/.test(content);
|
|
57
|
+
const extendsState = /extends\s+State</.test(content);
|
|
58
|
+
const hasBuildMethod = /Widget\s+build\s*\(BuildContext/.test(content);
|
|
59
|
+
if (extendsWidget || extendsState || hasBuildMethod) {
|
|
60
|
+
return {
|
|
61
|
+
framework: 'flutter-widget',
|
|
62
|
+
testStrategy: 'widget',
|
|
63
|
+
imports: [
|
|
64
|
+
"import 'package:flutter_test/flutter_test.dart';",
|
|
65
|
+
"import 'package:flutter/material.dart';",
|
|
66
|
+
],
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
return undefined;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Detect React Native component patterns in TSX/JSX source code.
|
|
73
|
+
* Looks for react-native imports and JSX component exports.
|
|
74
|
+
*/
|
|
75
|
+
export function detectReactNativeComponent(content, parsed) {
|
|
76
|
+
const hasRNImport = /from\s+['"]react-native['"]/.test(content);
|
|
77
|
+
const hasRNComponent = /(View|Text|ScrollView|FlatList|TouchableOpacity|Pressable)\b/.test(content);
|
|
78
|
+
const hasJSX = /<[A-Z][a-zA-Z]*[\s/>]/.test(content);
|
|
79
|
+
if (hasRNImport && (hasRNComponent || hasJSX)) {
|
|
80
|
+
// Check if it uses hooks (functional component) vs class component
|
|
81
|
+
const isHookBased = /use(State|Effect|Context|Memo|Callback|Ref)\b/.test(content);
|
|
82
|
+
return {
|
|
83
|
+
framework: 'react-native-component',
|
|
84
|
+
testStrategy: isHookBased ? 'widget' : 'ui',
|
|
85
|
+
imports: [
|
|
86
|
+
"import { render, fireEvent, screen } from '@testing-library/react-native';",
|
|
87
|
+
],
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
return undefined;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Detect any mobile UI framework from source content.
|
|
94
|
+
* Returns the first match, or undefined for plain unit-testable code.
|
|
95
|
+
*/
|
|
96
|
+
export function detectMobileFramework(content, language, parsed) {
|
|
97
|
+
switch (language) {
|
|
98
|
+
case 'swift':
|
|
99
|
+
return detectSwiftUIView(content, parsed);
|
|
100
|
+
case 'kotlin':
|
|
101
|
+
return detectComposable(content, parsed);
|
|
102
|
+
case 'dart':
|
|
103
|
+
return detectFlutterWidget(content, parsed);
|
|
104
|
+
case 'typescript':
|
|
105
|
+
case 'javascript':
|
|
106
|
+
return detectReactNativeComponent(content, parsed);
|
|
107
|
+
default:
|
|
108
|
+
return undefined;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=mobile-detector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mobile-detector.js","sourceRoot":"","sources":["../../../../src/domains/test-generation/detectors/mobile-detector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Spring Framework Detection for Java test generation
|
|
3
|
+
*
|
|
4
|
+
* Detects Spring annotations on classes to determine the appropriate
|
|
5
|
+
* test annotation strategy (MockitoExtension, WebMvcTest, DataJpaTest, etc.)
|
|
6
|
+
*
|
|
7
|
+
* @module test-generation/detectors
|
|
8
|
+
*/
|
|
9
|
+
export interface SpringAnnotation {
|
|
10
|
+
type: 'service' | 'controller' | 'repository' | 'component' | 'configuration';
|
|
11
|
+
testAnnotation: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Detect Spring annotations from a list of class decorators.
|
|
15
|
+
* Returns the appropriate Spring test annotation for the detected type,
|
|
16
|
+
* or undefined if no Spring annotations are found.
|
|
17
|
+
*
|
|
18
|
+
* @param decorators - Array of decorator/annotation strings from the AST
|
|
19
|
+
* @returns SpringAnnotation with test annotation, or undefined
|
|
20
|
+
*/
|
|
21
|
+
export declare function detectSpringAnnotations(decorators: string[]): SpringAnnotation | undefined;
|
|
22
|
+
//# sourceMappingURL=spring-detector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spring-detector.d.ts","sourceRoot":"","sources":["../../../../src/domains/test-generation/detectors/spring-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,SAAS,GAAG,YAAY,GAAG,YAAY,GAAG,WAAW,GAAG,eAAe,CAAC;IAC9E,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,gBAAgB,GAAG,SAAS,CAmB1F"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Spring Framework Detection for Java test generation
|
|
3
|
+
*
|
|
4
|
+
* Detects Spring annotations on classes to determine the appropriate
|
|
5
|
+
* test annotation strategy (MockitoExtension, WebMvcTest, DataJpaTest, etc.)
|
|
6
|
+
*
|
|
7
|
+
* @module test-generation/detectors
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Detect Spring annotations from a list of class decorators.
|
|
11
|
+
* Returns the appropriate Spring test annotation for the detected type,
|
|
12
|
+
* or undefined if no Spring annotations are found.
|
|
13
|
+
*
|
|
14
|
+
* @param decorators - Array of decorator/annotation strings from the AST
|
|
15
|
+
* @returns SpringAnnotation with test annotation, or undefined
|
|
16
|
+
*/
|
|
17
|
+
export function detectSpringAnnotations(decorators) {
|
|
18
|
+
for (const dec of decorators) {
|
|
19
|
+
if (dec.includes('@Service')) {
|
|
20
|
+
return { type: 'service', testAnnotation: '@ExtendWith(MockitoExtension.class)' };
|
|
21
|
+
}
|
|
22
|
+
if (dec.includes('@RestController') || dec.includes('@Controller')) {
|
|
23
|
+
return { type: 'controller', testAnnotation: '@WebMvcTest' };
|
|
24
|
+
}
|
|
25
|
+
if (dec.includes('@Repository')) {
|
|
26
|
+
return { type: 'repository', testAnnotation: '@DataJpaTest' };
|
|
27
|
+
}
|
|
28
|
+
if (dec.includes('@Component')) {
|
|
29
|
+
return { type: 'component', testAnnotation: '@ExtendWith(MockitoExtension.class)' };
|
|
30
|
+
}
|
|
31
|
+
if (dec.includes('@Configuration')) {
|
|
32
|
+
return { type: 'configuration', testAnnotation: '@ExtendWith(MockitoExtension.class)' };
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return undefined;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=spring-detector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spring-detector.js","sourceRoot":"","sources":["../../../../src/domains/test-generation/detectors/spring-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH;;;;;;;GAOG;AACH,MAAM,UAAU,uBAAuB,CAAC,UAAoB;IAC1D,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,IAAI,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAC7B,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,cAAc,EAAE,qCAAqC,EAAE,CAAC;QACpF,CAAC;QACD,IAAI,GAAG,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YACnE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,CAAC;QAC/D,CAAC;QACD,IAAI,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YAChC,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC;QAChE,CAAC;QACD,IAAI,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YAC/B,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE,qCAAqC,EAAE,CAAC;QACtF,CAAC;QACD,IAAI,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACnC,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,cAAc,EAAE,qCAAqC,EAAE,CAAC;QAC1F,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -7,7 +7,8 @@
|
|
|
7
7
|
*
|
|
8
8
|
* @module test-generation/factories
|
|
9
9
|
*/
|
|
10
|
-
import type { ITestGenerator, ITestGeneratorFactory
|
|
10
|
+
import type { ITestGenerator, ITestGeneratorFactory } from '../interfaces';
|
|
11
|
+
import type { TestFramework } from '../../../shared/types/test-frameworks.js';
|
|
11
12
|
/**
|
|
12
13
|
* TestGeneratorFactory - Factory for creating test generators
|
|
13
14
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-generator-factory.d.ts","sourceRoot":"","sources":["../../../../src/domains/test-generation/factories/test-generator-factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,qBAAqB,
|
|
1
|
+
{"version":3,"file":"test-generator-factory.d.ts","sourceRoot":"","sources":["../../../../src/domains/test-generation/factories/test-generator-factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,qBAAqB,EACtB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AA2B9E;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,oBAAqB,YAAW,qBAAqB;IAChE;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA4C;IAElE;;;;;;OAMG;IACH,MAAM,CAAC,SAAS,EAAE,aAAa,GAAG,cAAc;IAgBhD;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,IAAI,aAAa;IAKvD;;;;OAIG;IACH,UAAU,IAAI,aAAa;IAI3B;;;;OAIG;IACH,sBAAsB,IAAI,aAAa,EAAE;IAIzC;;OAEG;IACH,OAAO,CAAC,eAAe;IAyCvB;;;OAGG;IACH,UAAU,IAAI,IAAI;CAGnB;AAED;;;GAGG;AACH,eAAO,MAAM,oBAAoB,sBAA6B,CAAC;AAE/D;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,CAAC,EAAE,aAAa,GAAG,cAAc,CAE7E;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,IAAI,aAAa,CAElF"}
|
|
@@ -7,17 +7,12 @@
|
|
|
7
7
|
*
|
|
8
8
|
* @module test-generation/factories
|
|
9
9
|
*/
|
|
10
|
-
import {
|
|
10
|
+
import { ALL_TEST_FRAMEWORKS, resolveFrameworkAlias } from '../../../shared/types/test-frameworks.js';
|
|
11
|
+
import { JestVitestGenerator, MochaGenerator, PytestGenerator, NodeTestGenerator, JUnit5Generator, XUnitGenerator, GoTestGenerator, RustTestGenerator, SwiftTestingGenerator, KotlinJUnitGenerator, FlutterTestGenerator, JestRNGenerator, } from '../generators';
|
|
11
12
|
/**
|
|
12
13
|
* Supported test frameworks
|
|
13
14
|
*/
|
|
14
|
-
const SUPPORTED_FRAMEWORKS =
|
|
15
|
-
'jest',
|
|
16
|
-
'vitest',
|
|
17
|
-
'mocha',
|
|
18
|
-
'pytest',
|
|
19
|
-
'node-test',
|
|
20
|
-
];
|
|
15
|
+
const SUPPORTED_FRAMEWORKS = ALL_TEST_FRAMEWORKS;
|
|
21
16
|
/**
|
|
22
17
|
* Default framework when none is specified
|
|
23
18
|
*/
|
|
@@ -57,14 +52,16 @@ export class TestGeneratorFactory {
|
|
|
57
52
|
* @throws Error if framework is not supported
|
|
58
53
|
*/
|
|
59
54
|
create(framework) {
|
|
55
|
+
// Resolve aliases (e.g., 'junit' -> 'junit5')
|
|
56
|
+
const resolved = resolveFrameworkAlias(framework) ?? framework;
|
|
60
57
|
// Check cache first
|
|
61
|
-
const cached = this.cache.get(
|
|
58
|
+
const cached = this.cache.get(resolved);
|
|
62
59
|
if (cached) {
|
|
63
60
|
return cached;
|
|
64
61
|
}
|
|
65
62
|
// Create new generator
|
|
66
|
-
const generator = this.createGenerator(
|
|
67
|
-
this.cache.set(
|
|
63
|
+
const generator = this.createGenerator(resolved);
|
|
64
|
+
this.cache.set(resolved, generator);
|
|
68
65
|
return generator;
|
|
69
66
|
}
|
|
70
67
|
/**
|
|
@@ -74,7 +71,8 @@ export class TestGeneratorFactory {
|
|
|
74
71
|
* @returns True if supported, with type narrowing
|
|
75
72
|
*/
|
|
76
73
|
supports(framework) {
|
|
77
|
-
|
|
74
|
+
const resolved = resolveFrameworkAlias(framework);
|
|
75
|
+
return resolved !== undefined;
|
|
78
76
|
}
|
|
79
77
|
/**
|
|
80
78
|
* Get the default framework
|
|
@@ -107,6 +105,28 @@ export class TestGeneratorFactory {
|
|
|
107
105
|
return new PytestGenerator();
|
|
108
106
|
case 'node-test':
|
|
109
107
|
return new NodeTestGenerator();
|
|
108
|
+
case 'junit5':
|
|
109
|
+
case 'testng': // Aliased to JUnit5 — TestNG-specific annotations (@DataProvider) not yet supported
|
|
110
|
+
return new JUnit5Generator();
|
|
111
|
+
case 'xunit':
|
|
112
|
+
case 'nunit': // Aliased to xUnit — NUnit-specific attributes ([TestCase]) not yet supported
|
|
113
|
+
return new XUnitGenerator();
|
|
114
|
+
case 'go-test':
|
|
115
|
+
return new GoTestGenerator();
|
|
116
|
+
case 'rust-test':
|
|
117
|
+
return new RustTestGenerator();
|
|
118
|
+
case 'swift-testing':
|
|
119
|
+
case 'xctest':
|
|
120
|
+
return new SwiftTestingGenerator();
|
|
121
|
+
case 'kotlin-junit':
|
|
122
|
+
return new KotlinJUnitGenerator();
|
|
123
|
+
case 'flutter-test':
|
|
124
|
+
return new FlutterTestGenerator();
|
|
125
|
+
case 'jest-rn':
|
|
126
|
+
return new JestRNGenerator();
|
|
127
|
+
case 'playwright':
|
|
128
|
+
case 'cypress':
|
|
129
|
+
throw new Error(`Generator for '${framework}' not yet implemented`);
|
|
110
130
|
default:
|
|
111
131
|
// This should never happen due to type constraints,
|
|
112
132
|
// but provides a fallback for runtime safety
|
|
@@ -156,6 +176,6 @@ export function createTestGenerator(framework) {
|
|
|
156
176
|
* ```
|
|
157
177
|
*/
|
|
158
178
|
export function isValidTestFramework(framework) {
|
|
159
|
-
return
|
|
179
|
+
return resolveFrameworkAlias(framework) !== undefined;
|
|
160
180
|
}
|
|
161
181
|
//# sourceMappingURL=test-generator-factory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-generator-factory.js","sourceRoot":"","sources":["../../../../src/domains/test-generation/factories/test-generator-factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,iBAAiB,
|
|
1
|
+
{"version":3,"file":"test-generator-factory.js","sourceRoot":"","sources":["../../../../src/domains/test-generation/factories/test-generator-factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agentic QE v3 - Flutter Test Generator
|
|
3
|
+
* Strategy implementation for Flutter/Dart test framework
|
|
4
|
+
*
|
|
5
|
+
* Generates test code using:
|
|
6
|
+
* - flutter_test package (group, test, testWidgets, expect)
|
|
7
|
+
* - mockito package (@GenerateMocks, when/verify/thenReturn)
|
|
8
|
+
* - setUp / tearDown lifecycle hooks
|
|
9
|
+
* - async/await with Future<T> handling
|
|
10
|
+
* - Dart null safety (T? types)
|
|
11
|
+
* - WidgetTester for widget tests
|
|
12
|
+
*
|
|
13
|
+
* @module test-generation/generators
|
|
14
|
+
*/
|
|
15
|
+
import { BaseTestGenerator } from './base-test-generator.js';
|
|
16
|
+
import type { TestFramework, TestType, FunctionInfo, ClassInfo, TestGenerationContext, CodeAnalysis } from '../interfaces.js';
|
|
17
|
+
import type { ParsedFile } from '../../../shared/parsers/interfaces.js';
|
|
18
|
+
/**
|
|
19
|
+
* FlutterTestGenerator - Test generator for Flutter/Dart test framework
|
|
20
|
+
*
|
|
21
|
+
* Produces idiomatic Dart test files using flutter_test and mockito,
|
|
22
|
+
* with support for widget tests, async Future handling, and null safety.
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```typescript
|
|
26
|
+
* const generator = new FlutterTestGenerator();
|
|
27
|
+
* const testCode = generator.generateTests({
|
|
28
|
+
* moduleName: 'UserService',
|
|
29
|
+
* importPath: 'package:my_app/services/user_service.dart',
|
|
30
|
+
* testType: 'unit',
|
|
31
|
+
* patterns: [],
|
|
32
|
+
* analysis: { functions: [...], classes: [...] }
|
|
33
|
+
* });
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export declare class FlutterTestGenerator extends BaseTestGenerator {
|
|
37
|
+
readonly framework: TestFramework;
|
|
38
|
+
/**
|
|
39
|
+
* Dart primitive types for type-aware value generation
|
|
40
|
+
*/
|
|
41
|
+
private static readonly DART_TYPE_DEFAULTS;
|
|
42
|
+
/**
|
|
43
|
+
* Generate complete Dart test file from analysis
|
|
44
|
+
*/
|
|
45
|
+
generateTests(context: TestGenerationContext): string;
|
|
46
|
+
/**
|
|
47
|
+
* Generate tests for a standalone function
|
|
48
|
+
*/
|
|
49
|
+
generateFunctionTests(fn: FunctionInfo, _testType: TestType): string;
|
|
50
|
+
/**
|
|
51
|
+
* Generate tests for a class, including dependency injection via Mockito
|
|
52
|
+
*/
|
|
53
|
+
generateClassTests(cls: ClassInfo, testType: TestType): string;
|
|
54
|
+
/**
|
|
55
|
+
* Generate stub tests when no AST analysis is available
|
|
56
|
+
*/
|
|
57
|
+
generateStubTests(context: TestGenerationContext): string;
|
|
58
|
+
/**
|
|
59
|
+
* Generate coverage-focused tests for specific lines
|
|
60
|
+
*/
|
|
61
|
+
generateCoverageTests(moduleName: string, importPath: string, lines: number[]): string;
|
|
62
|
+
/**
|
|
63
|
+
* Convert a ParsedFile (language-agnostic) to ICodeAnalysis for this generator
|
|
64
|
+
*/
|
|
65
|
+
static convertParsedFile(parsed: ParsedFile): CodeAnalysis;
|
|
66
|
+
/**
|
|
67
|
+
* Generate Dart import statements for a test file
|
|
68
|
+
*/
|
|
69
|
+
private generateDartImports;
|
|
70
|
+
/**
|
|
71
|
+
* Collect all types that need @GenerateMocks
|
|
72
|
+
*/
|
|
73
|
+
private collectMockClasses;
|
|
74
|
+
/**
|
|
75
|
+
* Determine if a type looks like a service/repository (should be mocked)
|
|
76
|
+
*/
|
|
77
|
+
private isDartServiceType;
|
|
78
|
+
/**
|
|
79
|
+
* Check if any class in the analysis looks like a Flutter Widget
|
|
80
|
+
*/
|
|
81
|
+
private hasWidgetLikeClasses;
|
|
82
|
+
/**
|
|
83
|
+
* Determine if a class is a Widget (by name convention or methods)
|
|
84
|
+
*/
|
|
85
|
+
private isWidgetClass;
|
|
86
|
+
/**
|
|
87
|
+
* Extract constructor dependencies that should be mocked
|
|
88
|
+
*/
|
|
89
|
+
private extractMockDependencies;
|
|
90
|
+
/**
|
|
91
|
+
* Generate tests for a class method
|
|
92
|
+
*/
|
|
93
|
+
private generateMethodTests;
|
|
94
|
+
/**
|
|
95
|
+
* Generate Dart-idiomatic test cases for a function
|
|
96
|
+
*/
|
|
97
|
+
private generateDartTestCases;
|
|
98
|
+
/**
|
|
99
|
+
* Generate a Dart test value based on parameter name and type
|
|
100
|
+
*/
|
|
101
|
+
private generateDartValue;
|
|
102
|
+
/**
|
|
103
|
+
* Indent a block of code by a given number of spaces
|
|
104
|
+
*/
|
|
105
|
+
private indentBlock;
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=flutter-test-generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flutter-test-generator.d.ts","sourceRoot":"","sources":["../../../../src/domains/test-generation/generators/flutter-test-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EACV,aAAa,EACb,QAAQ,EACR,YAAY,EACZ,SAAS,EACT,qBAAqB,EACrB,YAAY,EACb,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AAExE;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,oBAAqB,SAAQ,iBAAiB;IACzD,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAkB;IAEnD;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAWxC;IAMF;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,qBAAqB,GAAG,MAAM;IAsCrD;;OAEG;IACH,qBAAqB,CAAC,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,GAAG,MAAM;IAmBpE;;OAEG;IACH,kBAAkB,CAAC,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,GAAG,MAAM;IA2D9D;;OAEG;IACH,iBAAiB,CAAC,OAAO,EAAE,qBAAqB,GAAG,MAAM;IAiCzD;;OAEG;IACH,qBAAqB,CACnB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EAAE,GACd,MAAM;IA+BT;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,UAAU,GAAG,YAAY;IA4D1D;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA+B3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAgB1B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAazB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAI5B;;OAEG;IACH,OAAO,CAAC,aAAa;IAWrB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAa/B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAwF3B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA+F7B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAgCzB;;OAEG;IACH,OAAO,CAAC,WAAW;CAOpB"}
|