agentic-qe 3.7.7 → 3.7.9
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/helpers/statusline-v3.cjs +13 -1
- package/.claude/skills/debug-loop/SKILL.md +1 -1
- 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/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/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/pr-review/SKILL.md +1 -1
- 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/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/skills-manifest.json +1 -1
- package/.claude/skills/trust-tier-manifest.json +78 -7
- package/CHANGELOG.md +39 -0
- package/README.md +36 -0
- 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/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/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/debug-loop/SKILL.md +1 -1
- 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/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/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/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/scripts/validate-config.json +12 -0
- package/assets/skills/pr-review/SKILL.md +1 -1
- 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/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/security-visual-testing/scripts/validate-config.json +45 -0
- 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/testability-scoring/SKILL.md +5 -0
- package/assets/skills/testability-scoring/evals/testability-scoring.yaml +814 -0
- package/assets/skills/testability-scoring/schemas/output.json +606 -0
- package/assets/skills/testability-scoring/scripts/validate-config.json +42 -0
- package/assets/skills/trust-tier-manifest.json +2404 -0
- 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/dist/benchmarks/performance-benchmarks.js +1 -1
- package/dist/cli/bundle.js +10154 -2421
- 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/migrate.js +2 -2
- package/dist/coordination/complexity-composition/index.d.ts +2 -0
- package/dist/coordination/complexity-composition/index.d.ts.map +1 -0
- package/dist/coordination/complexity-composition/index.js +2 -0
- package/dist/coordination/complexity-composition/index.js.map +1 -0
- package/dist/coordination/complexity-composition/team-composer.d.ts +72 -0
- package/dist/coordination/complexity-composition/team-composer.d.ts.map +1 -0
- package/dist/coordination/complexity-composition/team-composer.js +221 -0
- package/dist/coordination/complexity-composition/team-composer.js.map +1 -0
- package/dist/coordination/consensus/consensus-engine.d.ts +10 -1
- package/dist/coordination/consensus/consensus-engine.d.ts.map +1 -1
- package/dist/coordination/consensus/consensus-engine.js +31 -1
- package/dist/coordination/consensus/consensus-engine.js.map +1 -1
- package/dist/coordination/consensus/index.d.ts +1 -0
- package/dist/coordination/consensus/index.d.ts.map +1 -1
- package/dist/coordination/consensus/index.js +4 -0
- package/dist/coordination/consensus/index.js.map +1 -1
- package/dist/coordination/consensus/interfaces.d.ts +5 -0
- package/dist/coordination/consensus/interfaces.d.ts.map +1 -1
- package/dist/coordination/consensus/interfaces.js +1 -0
- package/dist/coordination/consensus/interfaces.js.map +1 -1
- package/dist/coordination/consensus/sycophancy-scorer.d.ts +62 -0
- package/dist/coordination/consensus/sycophancy-scorer.d.ts.map +1 -0
- package/dist/coordination/consensus/sycophancy-scorer.js +200 -0
- package/dist/coordination/consensus/sycophancy-scorer.js.map +1 -0
- package/dist/coordination/constants.d.ts +1 -1
- package/dist/coordination/constants.js +1 -1
- package/dist/coordination/fleet-tiers/tier-selector.d.ts +20 -0
- package/dist/coordination/fleet-tiers/tier-selector.d.ts.map +1 -1
- package/dist/coordination/fleet-tiers/tier-selector.js +31 -0
- package/dist/coordination/fleet-tiers/tier-selector.js.map +1 -1
- package/dist/coordination/fleet-tiers/types.d.ts +2 -0
- package/dist/coordination/fleet-tiers/types.d.ts.map +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/blind-review/blind-review-orchestrator.d.ts +65 -0
- package/dist/domains/test-generation/blind-review/blind-review-orchestrator.d.ts.map +1 -0
- package/dist/domains/test-generation/blind-review/blind-review-orchestrator.js +189 -0
- package/dist/domains/test-generation/blind-review/blind-review-orchestrator.js.map +1 -0
- package/dist/domains/test-generation/blind-review/index.d.ts +2 -0
- package/dist/domains/test-generation/blind-review/index.d.ts.map +1 -0
- package/dist/domains/test-generation/blind-review/index.js +2 -0
- package/dist/domains/test-generation/blind-review/index.js.map +1 -0
- 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/gates/index.d.ts +2 -0
- package/dist/domains/test-generation/gates/index.d.ts.map +1 -0
- package/dist/domains/test-generation/gates/index.js +2 -0
- package/dist/domains/test-generation/gates/index.js.map +1 -0
- package/dist/domains/test-generation/gates/test-quality-gate.d.ts +85 -0
- package/dist/domains/test-generation/gates/test-quality-gate.d.ts.map +1 -0
- package/dist/domains/test-generation/gates/test-quality-gate.js +320 -0
- package/dist/domains/test-generation/gates/test-quality-gate.js.map +1 -0
- 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 +14 -2
- package/dist/domains/test-generation/interfaces.d.ts.map +1 -1
- package/dist/domains/test-generation/pattern-injection/edge-case-injector.d.ts +68 -0
- package/dist/domains/test-generation/pattern-injection/edge-case-injector.d.ts.map +1 -0
- package/dist/domains/test-generation/pattern-injection/edge-case-injector.js +225 -0
- package/dist/domains/test-generation/pattern-injection/edge-case-injector.js.map +1 -0
- package/dist/domains/test-generation/pattern-injection/index.d.ts +2 -0
- package/dist/domains/test-generation/pattern-injection/index.d.ts.map +1 -0
- package/dist/domains/test-generation/pattern-injection/index.js +2 -0
- package/dist/domains/test-generation/pattern-injection/index.js.map +1 -0
- 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 +16 -0
- package/dist/domains/test-generation/services/test-generator.d.ts.map +1 -1
- package/dist/domains/test-generation/services/test-generator.js +116 -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 +2 -2
- 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/agentic-flow/reasoning-bank/experience-replay.d.ts +8 -2
- package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.d.ts.map +1 -1
- package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.js +62 -38
- package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.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/experience-capture.d.ts +12 -2
- package/dist/learning/experience-capture.d.ts.map +1 -1
- package/dist/learning/experience-capture.js +28 -35
- package/dist/learning/experience-capture.js.map +1 -1
- package/dist/learning/experience-consolidation.d.ts +74 -0
- package/dist/learning/experience-consolidation.d.ts.map +1 -0
- package/dist/learning/experience-consolidation.js +403 -0
- package/dist/learning/experience-consolidation.js.map +1 -0
- package/dist/learning/token-tracker.js +1 -1
- package/dist/learning/token-tracker.js.map +1 -1
- package/dist/mcp/bundle.js +9453 -1166
- package/dist/routing/calibration/ema-calibrator.d.ts +93 -0
- package/dist/routing/calibration/ema-calibrator.d.ts.map +1 -0
- package/dist/routing/calibration/ema-calibrator.js +140 -0
- package/dist/routing/calibration/ema-calibrator.js.map +1 -0
- package/dist/routing/calibration/index.d.ts +2 -0
- package/dist/routing/calibration/index.d.ts.map +1 -0
- package/dist/routing/calibration/index.js +2 -0
- package/dist/routing/calibration/index.js.map +1 -0
- package/dist/routing/escalation/auto-escalation-tracker.d.ts +62 -0
- package/dist/routing/escalation/auto-escalation-tracker.d.ts.map +1 -0
- package/dist/routing/escalation/auto-escalation-tracker.js +116 -0
- package/dist/routing/escalation/auto-escalation-tracker.js.map +1 -0
- package/dist/routing/escalation/index.d.ts +2 -0
- package/dist/routing/escalation/index.d.ts.map +1 -0
- package/dist/routing/escalation/index.js +2 -0
- package/dist/routing/escalation/index.js.map +1 -0
- package/dist/routing/index.d.ts +4 -0
- package/dist/routing/index.d.ts.map +1 -1
- package/dist/routing/index.js +4 -0
- package/dist/routing/index.js.map +1 -1
- package/dist/routing/qe-agent-registry.js +4 -4
- package/dist/routing/qe-agent-registry.js.map +1 -1
- package/dist/routing/routing-config.d.ts +4 -0
- package/dist/routing/routing-config.d.ts.map +1 -1
- package/dist/routing/routing-config.js +2 -0
- package/dist/routing/routing-config.js.map +1 -1
- package/dist/routing/routing-feedback.d.ts +35 -2
- package/dist/routing/routing-feedback.d.ts.map +1 -1
- package/dist/routing/routing-feedback.js +97 -3
- package/dist/routing/routing-feedback.js.map +1 -1
- package/dist/routing/types.d.ts +7 -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 +1232 -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/dist/workers/workers/learning-consolidation.d.ts.map +1 -1
- package/dist/workers/workers/learning-consolidation.js +32 -0
- package/dist/workers/workers/learning-consolidation.js.map +1 -1
- package/package.json +1 -1
- package/scripts/prepare-assets.sh +8 -2
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* All types and interfaces for the test-generation domain
|
|
4
4
|
*/
|
|
5
5
|
import { Result } from '../../shared/types';
|
|
6
|
+
import type { TestQualityGateResult } from './gates/index.js';
|
|
6
7
|
export interface ITestGenerationAPI {
|
|
7
8
|
/** Generate tests for source files */
|
|
8
9
|
generateTests(request: IGenerateTestsRequest): Promise<Result<IGeneratedTests, Error>>;
|
|
@@ -18,9 +19,13 @@ export interface ITestGenerationAPI {
|
|
|
18
19
|
export interface IGenerateTestsRequest {
|
|
19
20
|
sourceFiles: string[];
|
|
20
21
|
testType: 'unit' | 'integration' | 'e2e';
|
|
21
|
-
framework
|
|
22
|
+
framework?: TestFramework;
|
|
23
|
+
language?: SupportedLanguage;
|
|
22
24
|
coverageTarget?: number;
|
|
23
25
|
patterns?: string[];
|
|
26
|
+
projectRoot?: string;
|
|
27
|
+
compileValidation?: boolean;
|
|
28
|
+
maxCompileRetries?: number;
|
|
24
29
|
}
|
|
25
30
|
export interface IGeneratedTests {
|
|
26
31
|
tests: IGeneratedTest[];
|
|
@@ -35,8 +40,14 @@ export interface IGeneratedTest {
|
|
|
35
40
|
testCode: string;
|
|
36
41
|
type: 'unit' | 'integration' | 'e2e';
|
|
37
42
|
assertions: number;
|
|
43
|
+
language?: SupportedLanguage;
|
|
44
|
+
framework?: TestFramework;
|
|
45
|
+
compilationValidated?: boolean;
|
|
46
|
+
compilationErrors?: string[];
|
|
38
47
|
/** ADR-051: Whether test was enhanced by LLM */
|
|
39
48
|
llmEnhanced?: boolean;
|
|
49
|
+
/** Test quality gate validation result (loki-mode Gates 8 & 9) */
|
|
50
|
+
qualityGateResult?: TestQualityGateResult;
|
|
40
51
|
}
|
|
41
52
|
export interface ITDDRequest {
|
|
42
53
|
feature: string;
|
|
@@ -94,7 +105,8 @@ export interface IPattern {
|
|
|
94
105
|
/**
|
|
95
106
|
* Supported test frameworks
|
|
96
107
|
*/
|
|
97
|
-
export type TestFramework
|
|
108
|
+
export type { TestFramework, SupportedLanguage } from '../../shared/types/test-frameworks.js';
|
|
109
|
+
import type { TestFramework, SupportedLanguage } from '../../shared/types/test-frameworks.js';
|
|
98
110
|
/**
|
|
99
111
|
* Types of tests that can be generated
|
|
100
112
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/domains/test-generation/interfaces.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/domains/test-generation/interfaces.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Edge Case Injector - Pre-task Pattern Injection
|
|
3
|
+
* Inspired by loki-mode compound learning loop
|
|
4
|
+
*
|
|
5
|
+
* Queries historical edge-case patterns from the MemoryBackend that
|
|
6
|
+
* caught real bugs in similar code, formats them as prompt context,
|
|
7
|
+
* and injects them before test generation LLM calls.
|
|
8
|
+
*
|
|
9
|
+
* This creates a continuously improving test generation system where
|
|
10
|
+
* patterns discovered in past testing inform future test generation.
|
|
11
|
+
*/
|
|
12
|
+
import type { MemoryBackend } from '../../../kernel/interfaces.js';
|
|
13
|
+
export interface EdgeCaseInjectionConfig {
|
|
14
|
+
/** Number of patterns to inject (default: 3) */
|
|
15
|
+
topN: number;
|
|
16
|
+
/** Minimum pattern confidence to include (default: 0.5) */
|
|
17
|
+
minConfidence: number;
|
|
18
|
+
/** Namespace for pattern search (default: 'aqe/v3/domains/test-generation') */
|
|
19
|
+
namespace: string;
|
|
20
|
+
}
|
|
21
|
+
export declare const DEFAULT_INJECTION_CONFIG: EdgeCaseInjectionConfig;
|
|
22
|
+
export interface InjectionContext {
|
|
23
|
+
/** Formatted prompt context string to prepend to LLM prompt */
|
|
24
|
+
promptContext: string;
|
|
25
|
+
/** Number of patterns injected */
|
|
26
|
+
patternsUsed: number;
|
|
27
|
+
/** Total patterns considered before filtering */
|
|
28
|
+
totalConsidered: number;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Extract searchable keywords from source code.
|
|
32
|
+
* Pulls function names, class names, import identifiers, and
|
|
33
|
+
* common code patterns for pattern matching.
|
|
34
|
+
*/
|
|
35
|
+
export declare function extractKeywords(sourceCode: string): string[];
|
|
36
|
+
export declare class EdgeCaseInjector {
|
|
37
|
+
private readonly memory;
|
|
38
|
+
private readonly config;
|
|
39
|
+
constructor(memory: MemoryBackend, config?: Partial<EdgeCaseInjectionConfig>);
|
|
40
|
+
/**
|
|
41
|
+
* Get injection context for a source file being tested.
|
|
42
|
+
* Searches memory for historical edge-case patterns relevant to the code,
|
|
43
|
+
* filters and ranks them, then formats as prompt context.
|
|
44
|
+
*
|
|
45
|
+
* @param sourceCode - The source code being tested
|
|
46
|
+
* @param domain - Optional domain hint for filtering (e.g., 'test-generation')
|
|
47
|
+
* @returns InjectionContext with formatted prompt and stats
|
|
48
|
+
*/
|
|
49
|
+
getInjectionContext(sourceCode: string, domain?: string): Promise<InjectionContext>;
|
|
50
|
+
/**
|
|
51
|
+
* Search memory backend for relevant patterns using keywords and domain.
|
|
52
|
+
*/
|
|
53
|
+
private searchPatterns;
|
|
54
|
+
/**
|
|
55
|
+
* Parse a retrieved memory entry into a RetrievedPattern.
|
|
56
|
+
* Handles various storage formats gracefully.
|
|
57
|
+
*/
|
|
58
|
+
private parsePattern;
|
|
59
|
+
/**
|
|
60
|
+
* Format selected patterns into a prompt context string.
|
|
61
|
+
*/
|
|
62
|
+
private formatPromptContext;
|
|
63
|
+
/**
|
|
64
|
+
* Infer a short tag from pattern name when no tags are available.
|
|
65
|
+
*/
|
|
66
|
+
private inferTag;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=edge-case-injector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edge-case-injector.d.ts","sourceRoot":"","sources":["../../../../src/domains/test-generation/pattern-injection/edge-case-injector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAMnE,MAAM,WAAW,uBAAuB;IACtC,gDAAgD;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,aAAa,EAAE,MAAM,CAAC;IACtB,+EAA+E;IAC/E,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,wBAAwB,EAAE,uBAItC,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAC/B,+DAA+D;IAC/D,aAAa,EAAE,MAAM,CAAC;IACtB,kCAAkC;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,iDAAiD;IACjD,eAAe,EAAE,MAAM,CAAC;CACzB;AAmBD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAoD5D;AAMD,qBAAa,gBAAgB;IAIzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAHzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0B;gBAG9B,MAAM,EAAE,aAAa,EACtC,MAAM,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC;IAK3C;;;;;;;;OAQG;IACG,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA0CzF;;OAEG;YACW,cAAc;IA2C5B;;;OAGG;IACH,OAAO,CAAC,YAAY;IAgBpB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAa3B;;OAEG;IACH,OAAO,CAAC,QAAQ;CAUjB"}
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Edge Case Injector - Pre-task Pattern Injection
|
|
3
|
+
* Inspired by loki-mode compound learning loop
|
|
4
|
+
*
|
|
5
|
+
* Queries historical edge-case patterns from the MemoryBackend that
|
|
6
|
+
* caught real bugs in similar code, formats them as prompt context,
|
|
7
|
+
* and injects them before test generation LLM calls.
|
|
8
|
+
*
|
|
9
|
+
* This creates a continuously improving test generation system where
|
|
10
|
+
* patterns discovered in past testing inform future test generation.
|
|
11
|
+
*/
|
|
12
|
+
export const DEFAULT_INJECTION_CONFIG = {
|
|
13
|
+
topN: 3,
|
|
14
|
+
minConfidence: 0.5,
|
|
15
|
+
namespace: 'aqe/v3/domains/test-generation',
|
|
16
|
+
};
|
|
17
|
+
// ============================================================================
|
|
18
|
+
// Keyword Extraction
|
|
19
|
+
// ============================================================================
|
|
20
|
+
/**
|
|
21
|
+
* Extract searchable keywords from source code.
|
|
22
|
+
* Pulls function names, class names, import identifiers, and
|
|
23
|
+
* common code patterns for pattern matching.
|
|
24
|
+
*/
|
|
25
|
+
export function extractKeywords(sourceCode) {
|
|
26
|
+
const keywords = new Set();
|
|
27
|
+
// Common tokens to exclude
|
|
28
|
+
const noise = new Set([
|
|
29
|
+
'const', 'let', 'var', 'function', 'class', 'import', 'export',
|
|
30
|
+
'return', 'this', 'new', 'async', 'await', 'from', 'type',
|
|
31
|
+
'interface', 'string', 'number', 'boolean', 'void', 'null',
|
|
32
|
+
'undefined', 'true', 'false', 'map', 'filter', 'reduce',
|
|
33
|
+
'forEach', 'push', 'pop', 'length', 'toString', 'valueOf',
|
|
34
|
+
'constructor',
|
|
35
|
+
]);
|
|
36
|
+
// Function declarations: function foo(
|
|
37
|
+
const funcDecl = sourceCode.matchAll(/function\s+([a-zA-Z_$][a-zA-Z0-9_$]*)/g);
|
|
38
|
+
for (const m of funcDecl)
|
|
39
|
+
keywords.add(m[1]);
|
|
40
|
+
// Arrow/const functions: const foo =
|
|
41
|
+
const constFn = sourceCode.matchAll(/(?:const|let|var)\s+([a-zA-Z_$][a-zA-Z0-9_$]*)\s*=/g);
|
|
42
|
+
for (const m of constFn)
|
|
43
|
+
keywords.add(m[1]);
|
|
44
|
+
// Class declarations: class Foo
|
|
45
|
+
const classDef = sourceCode.matchAll(/class\s+([a-zA-Z_$][a-zA-Z0-9_$]*)/g);
|
|
46
|
+
for (const m of classDef)
|
|
47
|
+
keywords.add(m[1]);
|
|
48
|
+
// Import names: import { X, Y } from or import X from
|
|
49
|
+
const importNames = sourceCode.matchAll(/import\s+(?:\{([^}]+)\}|([a-zA-Z_$][a-zA-Z0-9_$]*))\s+from/g);
|
|
50
|
+
for (const m of importNames) {
|
|
51
|
+
const namedImports = m[1];
|
|
52
|
+
const defaultImport = m[2];
|
|
53
|
+
if (namedImports) {
|
|
54
|
+
for (const name of namedImports.split(',')) {
|
|
55
|
+
const clean = name.trim().split(/\s+as\s+/).pop()?.trim();
|
|
56
|
+
if (clean && /^[a-zA-Z_$]/.test(clean))
|
|
57
|
+
keywords.add(clean);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
if (defaultImport)
|
|
61
|
+
keywords.add(defaultImport);
|
|
62
|
+
}
|
|
63
|
+
// Method declarations inside classes: async login(, register(
|
|
64
|
+
const methodDecl = sourceCode.matchAll(/(?:async\s+)?([a-zA-Z_$][a-zA-Z0-9_$]*)\s*\([^)]*\)\s*(?::\s*\S+\s*)?{/g);
|
|
65
|
+
for (const m of methodDecl) {
|
|
66
|
+
if (m[1].length > 2 && !noise.has(m[1]))
|
|
67
|
+
keywords.add(m[1]);
|
|
68
|
+
}
|
|
69
|
+
// Method calls: .methodName(
|
|
70
|
+
const methods = sourceCode.matchAll(/\.([a-zA-Z_$][a-zA-Z0-9_$]*)\s*\(/g);
|
|
71
|
+
for (const m of methods) {
|
|
72
|
+
if (m[1].length > 2)
|
|
73
|
+
keywords.add(m[1]);
|
|
74
|
+
}
|
|
75
|
+
return Array.from(keywords).filter(k => !noise.has(k) && k.length > 1);
|
|
76
|
+
}
|
|
77
|
+
// ============================================================================
|
|
78
|
+
// Edge Case Injector
|
|
79
|
+
// ============================================================================
|
|
80
|
+
export class EdgeCaseInjector {
|
|
81
|
+
memory;
|
|
82
|
+
config;
|
|
83
|
+
constructor(memory, config) {
|
|
84
|
+
this.memory = memory;
|
|
85
|
+
this.config = { ...DEFAULT_INJECTION_CONFIG, ...config };
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Get injection context for a source file being tested.
|
|
89
|
+
* Searches memory for historical edge-case patterns relevant to the code,
|
|
90
|
+
* filters and ranks them, then formats as prompt context.
|
|
91
|
+
*
|
|
92
|
+
* @param sourceCode - The source code being tested
|
|
93
|
+
* @param domain - Optional domain hint for filtering (e.g., 'test-generation')
|
|
94
|
+
* @returns InjectionContext with formatted prompt and stats
|
|
95
|
+
*/
|
|
96
|
+
async getInjectionContext(sourceCode, domain) {
|
|
97
|
+
const emptyResult = { promptContext: '', patternsUsed: 0, totalConsidered: 0 };
|
|
98
|
+
try {
|
|
99
|
+
const keywords = extractKeywords(sourceCode);
|
|
100
|
+
const retrieved = await this.searchPatterns(keywords, domain);
|
|
101
|
+
if (retrieved.length === 0)
|
|
102
|
+
return emptyResult;
|
|
103
|
+
const totalConsidered = retrieved.length;
|
|
104
|
+
// Filter by minimum confidence
|
|
105
|
+
const filtered = retrieved.filter(p => p.confidence >= this.config.minConfidence);
|
|
106
|
+
// Sort by relevance heuristic: successRate * 0.5 + confidence * 0.3 + log(usageCount+1) * 0.2
|
|
107
|
+
filtered.sort((a, b) => {
|
|
108
|
+
const scoreA = a.successRate * 0.5 + a.confidence * 0.3 + Math.log(a.usageCount + 1) / 10 * 0.2;
|
|
109
|
+
const scoreB = b.successRate * 0.5 + b.confidence * 0.3 + Math.log(b.usageCount + 1) / 10 * 0.2;
|
|
110
|
+
return scoreB - scoreA;
|
|
111
|
+
});
|
|
112
|
+
// Take topN
|
|
113
|
+
const selected = filtered.slice(0, this.config.topN);
|
|
114
|
+
if (selected.length === 0) {
|
|
115
|
+
return { promptContext: '', patternsUsed: 0, totalConsidered };
|
|
116
|
+
}
|
|
117
|
+
const promptContext = this.formatPromptContext(selected);
|
|
118
|
+
return {
|
|
119
|
+
promptContext,
|
|
120
|
+
patternsUsed: selected.length,
|
|
121
|
+
totalConsidered,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
catch (error) {
|
|
125
|
+
// Non-blocking: injection failure should never break test generation
|
|
126
|
+
console.warn('[EdgeCaseInjector] Failed to get injection context:', error);
|
|
127
|
+
return emptyResult;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Search memory backend for relevant patterns using keywords and domain.
|
|
132
|
+
*/
|
|
133
|
+
async searchPatterns(keywords, domain) {
|
|
134
|
+
const patterns = [];
|
|
135
|
+
// Build search queries from keywords and domain
|
|
136
|
+
const searchQueries = [];
|
|
137
|
+
if (domain) {
|
|
138
|
+
searchQueries.push(`edge-case:${domain}:*`);
|
|
139
|
+
searchQueries.push(`pattern:${domain}:*`);
|
|
140
|
+
}
|
|
141
|
+
for (const keyword of keywords.slice(0, 5)) {
|
|
142
|
+
searchQueries.push(`edge-case:*${keyword}*`);
|
|
143
|
+
searchQueries.push(`pattern:*${keyword}*`);
|
|
144
|
+
}
|
|
145
|
+
// Also search the configured namespace
|
|
146
|
+
searchQueries.push(`${this.config.namespace}:*`);
|
|
147
|
+
const seenKeys = new Set();
|
|
148
|
+
for (const query of searchQueries) {
|
|
149
|
+
try {
|
|
150
|
+
const keys = await this.memory.search(query, 10);
|
|
151
|
+
for (const key of keys) {
|
|
152
|
+
if (seenKeys.has(key))
|
|
153
|
+
continue;
|
|
154
|
+
seenKeys.add(key);
|
|
155
|
+
try {
|
|
156
|
+
const value = await this.memory.get(key);
|
|
157
|
+
if (!value || typeof value !== 'object')
|
|
158
|
+
continue;
|
|
159
|
+
const pattern = this.parsePattern(key, value);
|
|
160
|
+
if (pattern)
|
|
161
|
+
patterns.push(pattern);
|
|
162
|
+
}
|
|
163
|
+
catch {
|
|
164
|
+
// Skip individual pattern retrieval failures
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
catch {
|
|
169
|
+
// Skip individual search failures
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
return patterns;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Parse a retrieved memory entry into a RetrievedPattern.
|
|
176
|
+
* Handles various storage formats gracefully.
|
|
177
|
+
*/
|
|
178
|
+
parsePattern(key, value) {
|
|
179
|
+
const name = typeof value.name === 'string' ? value.name : key.split(':').pop() || key;
|
|
180
|
+
const description = typeof value.description === 'string' ? value.description : '';
|
|
181
|
+
const confidence = typeof value.confidence === 'number' ? value.confidence : 0.5;
|
|
182
|
+
const successRate = typeof value.successRate === 'number' ? value.successRate :
|
|
183
|
+
typeof value.success_rate === 'number' ? value.success_rate : 0;
|
|
184
|
+
const usageCount = typeof value.usageCount === 'number' ? value.usageCount :
|
|
185
|
+
typeof value.usage_count === 'number' ? value.usage_count : 0;
|
|
186
|
+
const tags = Array.isArray(value.tags) ? value.tags.filter((t) => typeof t === 'string') : [];
|
|
187
|
+
// Must have at least a name or description to be useful
|
|
188
|
+
if (!name && !description)
|
|
189
|
+
return null;
|
|
190
|
+
return { key, name, description, confidence, successRate, usageCount, tags };
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Format selected patterns into a prompt context string.
|
|
194
|
+
*/
|
|
195
|
+
formatPromptContext(patterns) {
|
|
196
|
+
const lines = ['## Historical Edge Cases (from patterns that caught real bugs):'];
|
|
197
|
+
for (let i = 0; i < patterns.length; i++) {
|
|
198
|
+
const p = patterns[i];
|
|
199
|
+
const tag = p.tags.length > 0 ? p.tags[0] : this.inferTag(p);
|
|
200
|
+
const desc = p.description || p.name;
|
|
201
|
+
lines.push(`${i + 1}. [${tag}] ${desc}`);
|
|
202
|
+
}
|
|
203
|
+
return lines.join('\n');
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Infer a short tag from pattern name when no tags are available.
|
|
207
|
+
*/
|
|
208
|
+
inferTag(pattern) {
|
|
209
|
+
const name = pattern.name.toLowerCase();
|
|
210
|
+
if (name.includes('null') || name.includes('undefined'))
|
|
211
|
+
return 'null-check';
|
|
212
|
+
if (name.includes('empty') || name.includes('boundary') || name.includes('zero'))
|
|
213
|
+
return 'boundary';
|
|
214
|
+
if (name.includes('async') || name.includes('promise') || name.includes('reject'))
|
|
215
|
+
return 'async-error';
|
|
216
|
+
if (name.includes('error') || name.includes('throw') || name.includes('exception'))
|
|
217
|
+
return 'error-handling';
|
|
218
|
+
if (name.includes('type') || name.includes('cast') || name.includes('coerce'))
|
|
219
|
+
return 'type-safety';
|
|
220
|
+
if (name.includes('concurr') || name.includes('race') || name.includes('parallel'))
|
|
221
|
+
return 'concurrency';
|
|
222
|
+
return 'edge-case';
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
//# sourceMappingURL=edge-case-injector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edge-case-injector.js","sourceRoot":"","sources":["../../../../src/domains/test-generation/pattern-injection/edge-case-injector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/domains/test-generation/pattern-injection/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,KAAK,uBAAuB,EAC5B,KAAK,gBAAgB,EACrB,wBAAwB,GACzB,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/domains/test-generation/pattern-injection/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,eAAe,EAGf,wBAAwB,GACzB,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Language-Aware LLM Prompts (M1.10)
|
|
3
|
+
* Per-language prompt configurations for LLM-enhanced test generation.
|
|
4
|
+
*/
|
|
5
|
+
import type { SupportedLanguage } from '../../../shared/types/test-frameworks.js';
|
|
6
|
+
/**
|
|
7
|
+
* Language-specific prompt configuration
|
|
8
|
+
*/
|
|
9
|
+
export interface LanguagePromptConfig {
|
|
10
|
+
/** System context describing the language ecosystem */
|
|
11
|
+
systemContext: string;
|
|
12
|
+
/** Coding conventions for this language */
|
|
13
|
+
conventions: string[];
|
|
14
|
+
/** Preferred assertion style */
|
|
15
|
+
assertionStyle: string;
|
|
16
|
+
/** Preferred mocking approach */
|
|
17
|
+
mockingStyle: string;
|
|
18
|
+
/** Code fence language identifier */
|
|
19
|
+
codeFenceLanguage: string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Per-language prompt configurations
|
|
23
|
+
*/
|
|
24
|
+
export declare const LANGUAGE_PROMPTS: Record<SupportedLanguage, LanguagePromptConfig>;
|
|
25
|
+
/**
|
|
26
|
+
* Get the prompt configuration for a language
|
|
27
|
+
*/
|
|
28
|
+
export declare function getPromptConfig(language: SupportedLanguage): LanguagePromptConfig;
|
|
29
|
+
//# sourceMappingURL=language-prompts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"language-prompts.d.ts","sourceRoot":"","sources":["../../../../src/domains/test-generation/prompts/language-prompts.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAElF;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,uDAAuD;IACvD,aAAa,EAAE,MAAM,CAAC;IACtB,2CAA2C;IAC3C,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,gCAAgC;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,iCAAiC;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,qCAAqC;IACrC,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAiI5E,CAAC;AAEF;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,iBAAiB,GAAG,oBAAoB,CAEjF"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Language-Aware LLM Prompts (M1.10)
|
|
3
|
+
* Per-language prompt configurations for LLM-enhanced test generation.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Per-language prompt configurations
|
|
7
|
+
*/
|
|
8
|
+
export const LANGUAGE_PROMPTS = {
|
|
9
|
+
typescript: {
|
|
10
|
+
systemContext: 'TypeScript with strict typing, ESM modules, and modern ES2022+ features.',
|
|
11
|
+
conventions: [
|
|
12
|
+
'Use strict TypeScript types — avoid `any`',
|
|
13
|
+
'Use `import type` for type-only imports',
|
|
14
|
+
'Prefer `const` assertions and branded types',
|
|
15
|
+
'Use async/await over raw Promises',
|
|
16
|
+
],
|
|
17
|
+
assertionStyle: 'expect(value).toBe(expected) — Vitest/Jest matchers',
|
|
18
|
+
mockingStyle: 'vi.mock() / jest.mock() with typed mocks',
|
|
19
|
+
codeFenceLanguage: 'typescript',
|
|
20
|
+
},
|
|
21
|
+
javascript: {
|
|
22
|
+
systemContext: 'JavaScript with ES2022+ features, CommonJS or ESM modules.',
|
|
23
|
+
conventions: [
|
|
24
|
+
'Use const/let, never var',
|
|
25
|
+
'Use arrow functions for callbacks',
|
|
26
|
+
'Prefer template literals for string interpolation',
|
|
27
|
+
],
|
|
28
|
+
assertionStyle: 'expect(value).toBe(expected) — Jest matchers',
|
|
29
|
+
mockingStyle: 'jest.mock() with manual mock implementations',
|
|
30
|
+
codeFenceLanguage: 'javascript',
|
|
31
|
+
},
|
|
32
|
+
python: {
|
|
33
|
+
systemContext: 'Python 3.10+ with type hints, dataclasses, and async support.',
|
|
34
|
+
conventions: [
|
|
35
|
+
'Follow PEP 8 naming (snake_case for functions, PascalCase for classes)',
|
|
36
|
+
'Use type hints on all function signatures',
|
|
37
|
+
'Use `pytest` fixtures for setup/teardown',
|
|
38
|
+
'Use `@pytest.mark.asyncio` for async tests',
|
|
39
|
+
],
|
|
40
|
+
assertionStyle: 'assert value == expected — plain assert with pytest',
|
|
41
|
+
mockingStyle: 'unittest.mock.patch / pytest-mock fixtures',
|
|
42
|
+
codeFenceLanguage: 'python',
|
|
43
|
+
},
|
|
44
|
+
java: {
|
|
45
|
+
systemContext: 'Java 17+ with records, sealed classes, and pattern matching.',
|
|
46
|
+
conventions: [
|
|
47
|
+
'Use JUnit 5 @Test and @DisplayName annotations',
|
|
48
|
+
'Use AssertJ fluent assertions (assertThat)',
|
|
49
|
+
'Follow given-when-then structure in test methods',
|
|
50
|
+
'Use @ExtendWith(MockitoExtension.class) for dependency injection',
|
|
51
|
+
],
|
|
52
|
+
assertionStyle: 'assertThat(value).isEqualTo(expected) — AssertJ',
|
|
53
|
+
mockingStyle: 'Mockito @Mock, @InjectMocks, when().thenReturn()',
|
|
54
|
+
codeFenceLanguage: 'java',
|
|
55
|
+
},
|
|
56
|
+
csharp: {
|
|
57
|
+
systemContext: 'C# 11+ with nullable reference types, records, and async streams.',
|
|
58
|
+
conventions: [
|
|
59
|
+
'Use xUnit [Fact] and [Theory] attributes',
|
|
60
|
+
'Use FluentAssertions for readable assertions',
|
|
61
|
+
'Follow Arrange-Act-Assert pattern',
|
|
62
|
+
'Use Moq for interface mocking',
|
|
63
|
+
],
|
|
64
|
+
assertionStyle: 'value.Should().Be(expected) — FluentAssertions',
|
|
65
|
+
mockingStyle: 'new Mock<IService>().Setup(x => x.Method()).Returns(value)',
|
|
66
|
+
codeFenceLanguage: 'csharp',
|
|
67
|
+
},
|
|
68
|
+
go: {
|
|
69
|
+
systemContext: 'Go 1.21+ with generics, error wrapping, and context propagation.',
|
|
70
|
+
conventions: [
|
|
71
|
+
'Use table-driven tests with t.Run subtests',
|
|
72
|
+
'Always check both value and error returns',
|
|
73
|
+
'Use testify/assert for assertions (or standard testing)',
|
|
74
|
+
'Mock interfaces with struct implementations',
|
|
75
|
+
],
|
|
76
|
+
assertionStyle: 'assert.Equal(t, expected, actual) — testify',
|
|
77
|
+
mockingStyle: 'Interface-based mock structs',
|
|
78
|
+
codeFenceLanguage: 'go',
|
|
79
|
+
},
|
|
80
|
+
rust: {
|
|
81
|
+
systemContext: 'Rust with ownership, borrowing, lifetimes, and trait-based generics.',
|
|
82
|
+
conventions: [
|
|
83
|
+
'Place tests in #[cfg(test)] mod tests { use super::*; }',
|
|
84
|
+
'Use assert!, assert_eq!, assert_ne! macros',
|
|
85
|
+
'Use #[should_panic(expected = "...")] for panic tests',
|
|
86
|
+
'Use #[tokio::test] for async tests',
|
|
87
|
+
],
|
|
88
|
+
assertionStyle: 'assert_eq!(value, expected) — standard macros',
|
|
89
|
+
mockingStyle: 'mockall crate with #[automock] on traits',
|
|
90
|
+
codeFenceLanguage: 'rust',
|
|
91
|
+
},
|
|
92
|
+
swift: {
|
|
93
|
+
systemContext: 'Swift 5.10+ with Swift Testing framework, actors, and structured concurrency.',
|
|
94
|
+
conventions: [
|
|
95
|
+
'Use @Test attribute with description strings',
|
|
96
|
+
'Use #expect() macro for assertions',
|
|
97
|
+
'Use @Suite for grouping related tests',
|
|
98
|
+
'Protocol-based mocking (manual stubs)',
|
|
99
|
+
],
|
|
100
|
+
assertionStyle: '#expect(value == expected) — Swift Testing macros',
|
|
101
|
+
mockingStyle: 'Protocol conformance with manual mock implementations',
|
|
102
|
+
codeFenceLanguage: 'swift',
|
|
103
|
+
},
|
|
104
|
+
kotlin: {
|
|
105
|
+
systemContext: 'Kotlin with coroutines, null safety, extension functions, and sealed classes.',
|
|
106
|
+
conventions: [
|
|
107
|
+
'Use backtick test names: `should return user when id is valid`',
|
|
108
|
+
'Use MockK @MockK and coEvery for coroutine mocking',
|
|
109
|
+
'Use runTest { } for coroutine test wrappers',
|
|
110
|
+
'Use Turbine for Flow testing',
|
|
111
|
+
],
|
|
112
|
+
assertionStyle: 'value shouldBe expected — Kotest matchers or JUnit assertEquals',
|
|
113
|
+
mockingStyle: 'MockK coEvery { service.call() } returns result',
|
|
114
|
+
codeFenceLanguage: 'kotlin',
|
|
115
|
+
},
|
|
116
|
+
dart: {
|
|
117
|
+
systemContext: 'Dart 3+ with null safety, records, and sealed classes. Flutter widgets.',
|
|
118
|
+
conventions: [
|
|
119
|
+
'Use test() for unit tests, testWidgets() for widget tests',
|
|
120
|
+
'Use group() for test organization',
|
|
121
|
+
'Use @GenerateMocks for mockito code generation',
|
|
122
|
+
'Route Widget subclasses to testWidgets with pumpWidget',
|
|
123
|
+
],
|
|
124
|
+
assertionStyle: 'expect(value, equals(expected)) — matcher-based',
|
|
125
|
+
mockingStyle: '@GenerateMocks([ServiceClass]) + when(mock.method()).thenReturn(value)',
|
|
126
|
+
codeFenceLanguage: 'dart',
|
|
127
|
+
},
|
|
128
|
+
};
|
|
129
|
+
/**
|
|
130
|
+
* Get the prompt configuration for a language
|
|
131
|
+
*/
|
|
132
|
+
export function getPromptConfig(language) {
|
|
133
|
+
return LANGUAGE_PROMPTS[language];
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=language-prompts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"language-prompts.js","sourceRoot":"","sources":["../../../../src/domains/test-generation/prompts/language-prompts.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAoBH;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAoD;IAC/E,UAAU,EAAE;QACV,aAAa,EAAE,0EAA0E;QACzF,WAAW,EAAE;YACX,2CAA2C;YAC3C,yCAAyC;YACzC,6CAA6C;YAC7C,mCAAmC;SACpC;QACD,cAAc,EAAE,qDAAqD;QACrE,YAAY,EAAE,0CAA0C;QACxD,iBAAiB,EAAE,YAAY;KAChC;IAED,UAAU,EAAE;QACV,aAAa,EAAE,4DAA4D;QAC3E,WAAW,EAAE;YACX,0BAA0B;YAC1B,mCAAmC;YACnC,mDAAmD;SACpD;QACD,cAAc,EAAE,8CAA8C;QAC9D,YAAY,EAAE,8CAA8C;QAC5D,iBAAiB,EAAE,YAAY;KAChC;IAED,MAAM,EAAE;QACN,aAAa,EAAE,+DAA+D;QAC9E,WAAW,EAAE;YACX,wEAAwE;YACxE,2CAA2C;YAC3C,0CAA0C;YAC1C,4CAA4C;SAC7C;QACD,cAAc,EAAE,qDAAqD;QACrE,YAAY,EAAE,4CAA4C;QAC1D,iBAAiB,EAAE,QAAQ;KAC5B;IAED,IAAI,EAAE;QACJ,aAAa,EAAE,8DAA8D;QAC7E,WAAW,EAAE;YACX,gDAAgD;YAChD,4CAA4C;YAC5C,kDAAkD;YAClD,kEAAkE;SACnE;QACD,cAAc,EAAE,iDAAiD;QACjE,YAAY,EAAE,kDAAkD;QAChE,iBAAiB,EAAE,MAAM;KAC1B;IAED,MAAM,EAAE;QACN,aAAa,EAAE,mEAAmE;QAClF,WAAW,EAAE;YACX,0CAA0C;YAC1C,8CAA8C;YAC9C,mCAAmC;YACnC,+BAA+B;SAChC;QACD,cAAc,EAAE,gDAAgD;QAChE,YAAY,EAAE,4DAA4D;QAC1E,iBAAiB,EAAE,QAAQ;KAC5B;IAED,EAAE,EAAE;QACF,aAAa,EAAE,kEAAkE;QACjF,WAAW,EAAE;YACX,4CAA4C;YAC5C,2CAA2C;YAC3C,yDAAyD;YACzD,6CAA6C;SAC9C;QACD,cAAc,EAAE,6CAA6C;QAC7D,YAAY,EAAE,8BAA8B;QAC5C,iBAAiB,EAAE,IAAI;KACxB;IAED,IAAI,EAAE;QACJ,aAAa,EAAE,sEAAsE;QACrF,WAAW,EAAE;YACX,yDAAyD;YACzD,4CAA4C;YAC5C,uDAAuD;YACvD,oCAAoC;SACrC;QACD,cAAc,EAAE,+CAA+C;QAC/D,YAAY,EAAE,0CAA0C;QACxD,iBAAiB,EAAE,MAAM;KAC1B;IAED,KAAK,EAAE;QACL,aAAa,EAAE,+EAA+E;QAC9F,WAAW,EAAE;YACX,8CAA8C;YAC9C,oCAAoC;YACpC,uCAAuC;YACvC,uCAAuC;SACxC;QACD,cAAc,EAAE,mDAAmD;QACnE,YAAY,EAAE,uDAAuD;QACrE,iBAAiB,EAAE,OAAO;KAC3B;IAED,MAAM,EAAE;QACN,aAAa,EAAE,+EAA+E;QAC9F,WAAW,EAAE;YACX,gEAAgE;YAChE,oDAAoD;YACpD,6CAA6C;YAC7C,8BAA8B;SAC/B;QACD,cAAc,EAAE,iEAAiE;QACjF,YAAY,EAAE,iDAAiD;QAC/D,iBAAiB,EAAE,QAAQ;KAC5B;IAED,IAAI,EAAE;QACJ,aAAa,EAAE,yEAAyE;QACxF,WAAW,EAAE;YACX,2DAA2D;YAC3D,mCAAmC;YACnC,gDAAgD;YAChD,wDAAwD;SACzD;QACD,cAAc,EAAE,iDAAiD;QACjE,YAAY,EAAE,wEAAwE;QACtF,iBAAiB,EAAE,MAAM;KAC1B;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,QAA2B;IACzD,OAAO,gBAAgB,CAAC,QAAQ,CAAC,CAAC;AACpC,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compilation Validation Loop (ADR-077)
|
|
3
|
+
* Optional compile-check for generated tests with graceful fallback.
|
|
4
|
+
*/
|
|
5
|
+
import type { SupportedLanguage } from '../../../shared/types/test-frameworks.js';
|
|
6
|
+
/**
|
|
7
|
+
* Compilation error details
|
|
8
|
+
*/
|
|
9
|
+
export interface CompilationError {
|
|
10
|
+
message: string;
|
|
11
|
+
line?: number;
|
|
12
|
+
column?: number;
|
|
13
|
+
file?: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Result of compilation validation
|
|
17
|
+
*/
|
|
18
|
+
export interface ValidationResult {
|
|
19
|
+
compiles: boolean;
|
|
20
|
+
errors: CompilationError[];
|
|
21
|
+
suggestions: string[];
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Compilation validator interface
|
|
25
|
+
*/
|
|
26
|
+
export interface ICompilationValidator {
|
|
27
|
+
validate(code: string, language: SupportedLanguage, projectPath?: string): Promise<ValidationResult>;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Compilation validator with per-language support.
|
|
31
|
+
* Writes generated test code to a temp file, runs the language's compile/check
|
|
32
|
+
* command, and parses any errors into structured results with suggestions.
|
|
33
|
+
*/
|
|
34
|
+
export declare class CompilationValidator implements ICompilationValidator {
|
|
35
|
+
validate(code: string, language: SupportedLanguage, projectPath?: string): Promise<ValidationResult>;
|
|
36
|
+
private isCommandNotFound;
|
|
37
|
+
private getStderr;
|
|
38
|
+
private parseErrors;
|
|
39
|
+
private generateSuggestions;
|
|
40
|
+
}
|
|
41
|
+
/** Singleton instance */
|
|
42
|
+
export declare const compilationValidator: CompilationValidator;
|
|
43
|
+
//# sourceMappingURL=compilation-validator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compilation-validator.d.ts","sourceRoot":"","sources":["../../../../src/domains/test-generation/services/compilation-validator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAElF;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;CACtG;AAcD;;;;GAIG;AACH,qBAAa,oBAAqB,YAAW,qBAAqB;IAC1D,QAAQ,CACZ,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,iBAAiB,EAC3B,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,gBAAgB,CAAC;IA+D5B,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,WAAW;IAuBnB,OAAO,CAAC,mBAAmB;CAkB5B;AAED,yBAAyB;AACzB,eAAO,MAAM,oBAAoB,sBAA6B,CAAC"}
|