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
|
@@ -21,7 +21,7 @@ import { CoverageVectorMetadata } from './hnsw-index';
|
|
|
21
21
|
* Configuration for coverage embedding generation
|
|
22
22
|
*/
|
|
23
23
|
export interface CoverageEmbedderConfig {
|
|
24
|
-
/** Number of dimensions for the embedding (default:
|
|
24
|
+
/** Number of dimensions for the embedding (default: 384) */
|
|
25
25
|
dimensions: number;
|
|
26
26
|
/** Include file path features in embedding */
|
|
27
27
|
includePathFeatures: boolean;
|
|
@@ -18,7 +18,7 @@ const DEFAULT_CONFIG = {
|
|
|
18
18
|
// ============================================================================
|
|
19
19
|
export class GapDetectorService {
|
|
20
20
|
static DEFAULT_MIN_COVERAGE = 80;
|
|
21
|
-
static VECTOR_DIMENSION =
|
|
21
|
+
static VECTOR_DIMENSION = 384;
|
|
22
22
|
memory;
|
|
23
23
|
config;
|
|
24
24
|
llmRouter;
|
|
@@ -15,7 +15,7 @@ const ALL_CATEGORIES = [
|
|
|
15
15
|
'missing-integration-contract', 'absent-edge-case', 'missing-security-check',
|
|
16
16
|
];
|
|
17
17
|
const DEFAULT_CONFIG = {
|
|
18
|
-
dimensions:
|
|
18
|
+
dimensions: 384, minConfidence: 0.3, maxGaps: 50,
|
|
19
19
|
riskWeight: 0.6, distanceWeight: 0.4,
|
|
20
20
|
namespace: 'ghost-surface', idealSurfaceDecay: 0.95,
|
|
21
21
|
};
|
|
@@ -23,7 +23,7 @@ import { MemoryBackend } from '../../../kernel/interfaces';
|
|
|
23
23
|
* HNSW index configuration options
|
|
24
24
|
*/
|
|
25
25
|
export interface HNSWIndexConfig {
|
|
26
|
-
/** Number of dimensions for vectors (default:
|
|
26
|
+
/** Number of dimensions for vectors (default: 384) */
|
|
27
27
|
dimensions: number;
|
|
28
28
|
/** Number of neighbors per node (default: 16) */
|
|
29
29
|
M: number;
|
|
@@ -237,7 +237,7 @@ export declare class HNSWIndex implements IHNSWIndex {
|
|
|
237
237
|
clear(): Promise<void>;
|
|
238
238
|
/**
|
|
239
239
|
* Validate and auto-resize vectors to match HNSW configured dimensions.
|
|
240
|
-
* Fix #279: Prevents Rust WASM panic when
|
|
240
|
+
* Fix #279: Prevents Rust WASM panic when mismatched-dim embeddings are
|
|
241
241
|
* passed to a mismatched-dim HNSW index.
|
|
242
242
|
*
|
|
243
243
|
* Note: ProgressiveHnswBackend also handles dimension auto-resize internally,
|
|
@@ -24,7 +24,7 @@ import { secureRandom } from '../../../shared/utils/crypto-random.js';
|
|
|
24
24
|
* Default HNSW configuration optimized for coverage analysis
|
|
25
25
|
*/
|
|
26
26
|
export const DEFAULT_HNSW_CONFIG = {
|
|
27
|
-
dimensions:
|
|
27
|
+
dimensions: 384,
|
|
28
28
|
M: 16,
|
|
29
29
|
efConstruction: 200,
|
|
30
30
|
efSearch: 100,
|
|
@@ -252,7 +252,7 @@ export class HNSWIndex {
|
|
|
252
252
|
// ============================================================================
|
|
253
253
|
/**
|
|
254
254
|
* Validate and auto-resize vectors to match HNSW configured dimensions.
|
|
255
|
-
* Fix #279: Prevents Rust WASM panic when
|
|
255
|
+
* Fix #279: Prevents Rust WASM panic when mismatched-dim embeddings are
|
|
256
256
|
* passed to a mismatched-dim HNSW index.
|
|
257
257
|
*
|
|
258
258
|
* Note: ProgressiveHnswBackend also handles dimension auto-resize internally,
|
|
@@ -364,7 +364,7 @@ export function createHNSWIndex(memory, config) {
|
|
|
364
364
|
* @returns Benchmark results including backend type
|
|
365
365
|
*/
|
|
366
366
|
export async function benchmarkHNSW(index, vectorCount = 10000, searchCount = 1000) {
|
|
367
|
-
const dimensions =
|
|
367
|
+
const dimensions = 384;
|
|
368
368
|
const startInsert = performance.now();
|
|
369
369
|
// Insert vectors
|
|
370
370
|
for (let i = 0; i < vectorCount; i++) {
|
|
@@ -36,7 +36,7 @@ export interface SublinearAnalyzerConfig {
|
|
|
36
36
|
autoIndex: boolean;
|
|
37
37
|
/** Batch size for bulk operations (default: 100) */
|
|
38
38
|
batchSize: number;
|
|
39
|
-
/** Vector dimensions for embeddings (default:
|
|
39
|
+
/** Vector dimensions for embeddings (default: 384) */
|
|
40
40
|
dimensions: number;
|
|
41
41
|
}
|
|
42
42
|
/**
|
|
@@ -30,7 +30,7 @@ export const DEFAULT_ANALYZER_CONFIG = {
|
|
|
30
30
|
maxResults: 100,
|
|
31
31
|
autoIndex: true,
|
|
32
32
|
batchSize: 100,
|
|
33
|
-
dimensions:
|
|
33
|
+
dimensions: 384,
|
|
34
34
|
};
|
|
35
35
|
// ============================================================================
|
|
36
36
|
// Sublinear Coverage Analyzer Implementation
|
|
@@ -16,7 +16,7 @@ const DEFAULT_CONFIG = {
|
|
|
16
16
|
enableAutoTraining: true,
|
|
17
17
|
trainingInterval: 10,
|
|
18
18
|
contextLength: 10,
|
|
19
|
-
embeddingDim:
|
|
19
|
+
embeddingDim: 384,
|
|
20
20
|
};
|
|
21
21
|
// ============================================================================
|
|
22
22
|
// Test Prioritizer Service
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Blind Review Orchestrator for Test Generation
|
|
3
|
+
* Inspired by loki-mode blind review pattern
|
|
4
|
+
*
|
|
5
|
+
* Runs N independent test generation passes in parallel with varied
|
|
6
|
+
* temperatures, then deduplicates using Jaccard similarity on tokenized
|
|
7
|
+
* assertions to maximize test diversity.
|
|
8
|
+
*/
|
|
9
|
+
import { Result } from '../../../shared/types/index.js';
|
|
10
|
+
import type { ITestGenerationService } from '../services/test-generator.js';
|
|
11
|
+
import type { IGenerateTestsRequest, IGeneratedTest } from '../interfaces.js';
|
|
12
|
+
export interface BlindReviewConfig {
|
|
13
|
+
/** Number of independent reviewers to run in parallel */
|
|
14
|
+
reviewerCount: number;
|
|
15
|
+
/** Jaccard similarity threshold for deduplication (0-1) */
|
|
16
|
+
deduplicationThreshold: number;
|
|
17
|
+
/** Timeout per reviewer in milliseconds */
|
|
18
|
+
timeoutMs: number;
|
|
19
|
+
/** Whether to vary temperatures across reviewers */
|
|
20
|
+
varyTemperatures: boolean;
|
|
21
|
+
/** Temperature values for each reviewer */
|
|
22
|
+
temperatures: number[];
|
|
23
|
+
}
|
|
24
|
+
export interface ReviewerOutput {
|
|
25
|
+
reviewerId: string;
|
|
26
|
+
tests: IGeneratedTest[];
|
|
27
|
+
durationMs: number;
|
|
28
|
+
}
|
|
29
|
+
export interface BlindReviewStats {
|
|
30
|
+
totalGenerated: number;
|
|
31
|
+
afterDedup: number;
|
|
32
|
+
uniquenessScore: number;
|
|
33
|
+
}
|
|
34
|
+
export interface BlindReviewResult {
|
|
35
|
+
mergedTests: IGeneratedTest[];
|
|
36
|
+
reviewerOutputs: ReviewerOutput[];
|
|
37
|
+
stats: BlindReviewStats;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Tokenize code into a set of meaningful tokens.
|
|
41
|
+
* Strips whitespace, splits on non-alphanumeric boundaries,
|
|
42
|
+
* and filters tokens shorter than 3 characters.
|
|
43
|
+
*/
|
|
44
|
+
export declare function tokenize(code: string): Set<string>;
|
|
45
|
+
/**
|
|
46
|
+
* Compute Jaccard similarity between two token sets.
|
|
47
|
+
* Returns 0 if both sets are empty.
|
|
48
|
+
*/
|
|
49
|
+
export declare function jaccardSimilarity(a: Set<string>, b: Set<string>): number;
|
|
50
|
+
/**
|
|
51
|
+
* Deduplicate tests using Jaccard similarity on tokenized test code.
|
|
52
|
+
* Groups tests by target file, then within each group keeps the
|
|
53
|
+
* test with the most assertions from each similarity cluster.
|
|
54
|
+
*/
|
|
55
|
+
export declare function deduplicateTests(tests: IGeneratedTest[], threshold: number): IGeneratedTest[];
|
|
56
|
+
export declare class BlindReviewOrchestrator {
|
|
57
|
+
private readonly service;
|
|
58
|
+
constructor(service: ITestGenerationService);
|
|
59
|
+
/**
|
|
60
|
+
* Run blind review: N independent generation passes in parallel,
|
|
61
|
+
* then deduplicate and merge results.
|
|
62
|
+
*/
|
|
63
|
+
generateWithBlindReview(request: IGenerateTestsRequest, config?: Partial<BlindReviewConfig>): Promise<Result<BlindReviewResult, Error>>;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=blind-review-orchestrator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blind-review-orchestrator.d.ts","sourceRoot":"","sources":["../../../../src/domains/test-generation/blind-review/blind-review-orchestrator.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,MAAM,EAAW,MAAM,gCAAgC,CAAC;AACjE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,KAAK,EACV,qBAAqB,EACrB,cAAc,EACf,MAAM,kBAAkB,CAAC;AAM1B,MAAM,WAAW,iBAAiB;IAChC,yDAAyD;IACzD,aAAa,EAAE,MAAM,CAAC;IACtB,2DAA2D;IAC3D,sBAAsB,EAAE,MAAM,CAAC;IAC/B,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,gBAAgB,EAAE,OAAO,CAAC;IAC1B,2CAA2C;IAC3C,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAcD,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,eAAe,EAAE,cAAc,EAAE,CAAC;IAClC,KAAK,EAAE,gBAAgB,CAAC;CACzB;AAMD;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAOlD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,CAexE;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,cAAc,EAAE,EACvB,SAAS,EAAE,MAAM,GAChB,cAAc,EAAE,CA+ClB;AA6BD,qBAAa,uBAAuB;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,sBAAsB;IAE5D;;;OAGG;IACG,uBAAuB,CAC3B,OAAO,EAAE,qBAAqB,EAC9B,MAAM,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAClC,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;CAqF7C"}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Blind Review Orchestrator for Test Generation
|
|
3
|
+
* Inspired by loki-mode blind review pattern
|
|
4
|
+
*
|
|
5
|
+
* Runs N independent test generation passes in parallel with varied
|
|
6
|
+
* temperatures, then deduplicates using Jaccard similarity on tokenized
|
|
7
|
+
* assertions to maximize test diversity.
|
|
8
|
+
*/
|
|
9
|
+
import { ok, err } from '../../../shared/types/index.js';
|
|
10
|
+
const DEFAULT_CONFIG = {
|
|
11
|
+
reviewerCount: 3,
|
|
12
|
+
deduplicationThreshold: 0.8,
|
|
13
|
+
timeoutMs: 30000,
|
|
14
|
+
varyTemperatures: true,
|
|
15
|
+
temperatures: [0.2, 0.5, 0.8],
|
|
16
|
+
};
|
|
17
|
+
// ============================================================================
|
|
18
|
+
// Tokenization & Jaccard Similarity
|
|
19
|
+
// ============================================================================
|
|
20
|
+
/**
|
|
21
|
+
* Tokenize code into a set of meaningful tokens.
|
|
22
|
+
* Strips whitespace, splits on non-alphanumeric boundaries,
|
|
23
|
+
* and filters tokens shorter than 3 characters.
|
|
24
|
+
*/
|
|
25
|
+
export function tokenize(code) {
|
|
26
|
+
return new Set(code
|
|
27
|
+
.replace(/\s+/g, ' ')
|
|
28
|
+
.split(/[^a-zA-Z0-9_]+/)
|
|
29
|
+
.filter((t) => t.length > 2));
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Compute Jaccard similarity between two token sets.
|
|
33
|
+
* Returns 0 if both sets are empty.
|
|
34
|
+
*/
|
|
35
|
+
export function jaccardSimilarity(a, b) {
|
|
36
|
+
if (a.size === 0 && b.size === 0)
|
|
37
|
+
return 0;
|
|
38
|
+
let intersectionSize = 0;
|
|
39
|
+
const smaller = a.size <= b.size ? a : b;
|
|
40
|
+
const larger = a.size <= b.size ? b : a;
|
|
41
|
+
for (const token of smaller) {
|
|
42
|
+
if (larger.has(token)) {
|
|
43
|
+
intersectionSize++;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
const unionSize = a.size + b.size - intersectionSize;
|
|
47
|
+
return unionSize === 0 ? 0 : intersectionSize / unionSize;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Deduplicate tests using Jaccard similarity on tokenized test code.
|
|
51
|
+
* Groups tests by target file, then within each group keeps the
|
|
52
|
+
* test with the most assertions from each similarity cluster.
|
|
53
|
+
*/
|
|
54
|
+
export function deduplicateTests(tests, threshold) {
|
|
55
|
+
if (tests.length === 0)
|
|
56
|
+
return [];
|
|
57
|
+
// Group by source file
|
|
58
|
+
const bySource = new Map();
|
|
59
|
+
for (const test of tests) {
|
|
60
|
+
const key = test.sourceFile || '__ungrouped__';
|
|
61
|
+
const group = bySource.get(key) || [];
|
|
62
|
+
group.push(test);
|
|
63
|
+
bySource.set(key, group);
|
|
64
|
+
}
|
|
65
|
+
const deduplicated = [];
|
|
66
|
+
for (const group of bySource.values()) {
|
|
67
|
+
const tokenSets = group.map((t) => tokenize(t.testCode));
|
|
68
|
+
const used = new Set();
|
|
69
|
+
for (let i = 0; i < group.length; i++) {
|
|
70
|
+
if (used.has(i))
|
|
71
|
+
continue;
|
|
72
|
+
// Start a cluster with this test
|
|
73
|
+
const cluster = [i];
|
|
74
|
+
used.add(i);
|
|
75
|
+
for (let j = i + 1; j < group.length; j++) {
|
|
76
|
+
if (used.has(j))
|
|
77
|
+
continue;
|
|
78
|
+
const similarity = jaccardSimilarity(tokenSets[i], tokenSets[j]);
|
|
79
|
+
if (similarity >= threshold) {
|
|
80
|
+
cluster.push(j);
|
|
81
|
+
used.add(j);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
// Keep the test with the most assertions from the cluster
|
|
85
|
+
let best = cluster[0];
|
|
86
|
+
for (const idx of cluster) {
|
|
87
|
+
if (group[idx].assertions > group[best].assertions) {
|
|
88
|
+
best = idx;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
deduplicated.push(group[best]);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return deduplicated;
|
|
95
|
+
}
|
|
96
|
+
// ============================================================================
|
|
97
|
+
// Orchestrator
|
|
98
|
+
// ============================================================================
|
|
99
|
+
/**
|
|
100
|
+
* Wraps a promise with a timeout. Rejects if the promise does not
|
|
101
|
+
* settle within the given number of milliseconds.
|
|
102
|
+
*/
|
|
103
|
+
function withTimeout(promise, ms) {
|
|
104
|
+
return new Promise((resolve, reject) => {
|
|
105
|
+
const timer = setTimeout(() => reject(new Error(`Reviewer timed out after ${ms}ms`)), ms);
|
|
106
|
+
promise.then((value) => {
|
|
107
|
+
clearTimeout(timer);
|
|
108
|
+
resolve(value);
|
|
109
|
+
}, (reason) => {
|
|
110
|
+
clearTimeout(timer);
|
|
111
|
+
reject(reason);
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
export class BlindReviewOrchestrator {
|
|
116
|
+
service;
|
|
117
|
+
constructor(service) {
|
|
118
|
+
this.service = service;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Run blind review: N independent generation passes in parallel,
|
|
122
|
+
* then deduplicate and merge results.
|
|
123
|
+
*/
|
|
124
|
+
async generateWithBlindReview(request, config) {
|
|
125
|
+
const cfg = { ...DEFAULT_CONFIG, ...config };
|
|
126
|
+
if (cfg.reviewerCount < 1) {
|
|
127
|
+
return err(new Error('reviewerCount must be at least 1'));
|
|
128
|
+
}
|
|
129
|
+
// Launch N parallel reviewers with varied temperatures
|
|
130
|
+
const reviewerPromises = Array.from({ length: cfg.reviewerCount }, (_, i) => {
|
|
131
|
+
const reviewerId = `reviewer-${i}`;
|
|
132
|
+
const start = Date.now();
|
|
133
|
+
// Vary the request per reviewer: each gets a different temperature
|
|
134
|
+
// to encourage diverse test generation outputs
|
|
135
|
+
const reviewerRequest = { ...request };
|
|
136
|
+
if (cfg.varyTemperatures && cfg.temperatures.length > 0) {
|
|
137
|
+
const temperature = cfg.temperatures[i % cfg.temperatures.length];
|
|
138
|
+
// Attach temperature hint as pattern metadata that the generator can use
|
|
139
|
+
reviewerRequest.patterns = [
|
|
140
|
+
...(request.patterns ?? []),
|
|
141
|
+
`__blind_review_temperature:${temperature}`,
|
|
142
|
+
];
|
|
143
|
+
}
|
|
144
|
+
const genPromise = this.service
|
|
145
|
+
.generateTests(reviewerRequest)
|
|
146
|
+
.then((result) => {
|
|
147
|
+
const durationMs = Date.now() - start;
|
|
148
|
+
if (result.success) {
|
|
149
|
+
return {
|
|
150
|
+
reviewerId,
|
|
151
|
+
tests: result.value.tests,
|
|
152
|
+
durationMs,
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
return { reviewerId, tests: [], durationMs };
|
|
156
|
+
});
|
|
157
|
+
return withTimeout(genPromise, cfg.timeoutMs).catch(() => ({
|
|
158
|
+
reviewerId,
|
|
159
|
+
tests: [],
|
|
160
|
+
durationMs: Date.now() - start,
|
|
161
|
+
}));
|
|
162
|
+
});
|
|
163
|
+
const reviewerOutputs = await Promise.allSettled(reviewerPromises);
|
|
164
|
+
// Collect fulfilled results
|
|
165
|
+
const outputs = reviewerOutputs
|
|
166
|
+
.filter((r) => r.status === 'fulfilled')
|
|
167
|
+
.map((r) => r.value);
|
|
168
|
+
// Gather all tests
|
|
169
|
+
const allTests = outputs.flatMap((o) => o.tests);
|
|
170
|
+
if (allTests.length === 0) {
|
|
171
|
+
return err(new Error('All reviewers failed to generate tests'));
|
|
172
|
+
}
|
|
173
|
+
// Deduplicate
|
|
174
|
+
const mergedTests = deduplicateTests(allTests, cfg.deduplicationThreshold);
|
|
175
|
+
const totalGenerated = allTests.length;
|
|
176
|
+
const afterDedup = mergedTests.length;
|
|
177
|
+
const uniquenessScore = totalGenerated === 0 ? 0 : afterDedup / totalGenerated;
|
|
178
|
+
return ok({
|
|
179
|
+
mergedTests,
|
|
180
|
+
reviewerOutputs: outputs,
|
|
181
|
+
stats: {
|
|
182
|
+
totalGenerated,
|
|
183
|
+
afterDedup,
|
|
184
|
+
uniquenessScore,
|
|
185
|
+
},
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
//# sourceMappingURL=blind-review-orchestrator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blind-review-orchestrator.js","sourceRoot":"","sources":["../../../../src/domains/test-generation/blind-review/blind-review-orchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/domains/test-generation/blind-review/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,QAAQ,EACR,iBAAiB,EACjB,gBAAgB,EAChB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,cAAc,GACpB,MAAM,gCAAgC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/domains/test-generation/blind-review/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,QAAQ,EACR,iBAAiB,EACjB,gBAAgB,GAKjB,MAAM,gCAAgC,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rust Context Builder
|
|
3
|
+
* Builds test context with ownership-aware patterns for Rust test generation.
|
|
4
|
+
*
|
|
5
|
+
* Determines which crate dependencies (tokio, mockall) are needed and
|
|
6
|
+
* whether `use super::*` should be emitted for inline test modules.
|
|
7
|
+
*
|
|
8
|
+
* @module test-generation/context
|
|
9
|
+
*/
|
|
10
|
+
export interface RustTestContext {
|
|
11
|
+
/** Whether to emit `use super::*;` (true for inline test modules) */
|
|
12
|
+
useSuper: boolean;
|
|
13
|
+
/** Whether async functions require `#[tokio::test]` */
|
|
14
|
+
needsTokio: boolean;
|
|
15
|
+
/** Whether trait mocking via mockall is needed */
|
|
16
|
+
needsMockall: boolean;
|
|
17
|
+
/** List of trait names that need `#[automock]` */
|
|
18
|
+
traitMocks: string[];
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Build a RustTestContext from a list of parsed function signatures.
|
|
22
|
+
*
|
|
23
|
+
* @param functions - Array of function metadata (name, isAsync, decorators)
|
|
24
|
+
* @returns Context object describing crate/feature requirements
|
|
25
|
+
*/
|
|
26
|
+
export declare function buildRustTestContext(functions: Array<{
|
|
27
|
+
name: string;
|
|
28
|
+
isAsync: boolean;
|
|
29
|
+
decorators: string[];
|
|
30
|
+
}>): RustTestContext;
|
|
31
|
+
//# sourceMappingURL=rust-context-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rust-context-builder.d.ts","sourceRoot":"","sources":["../../../../src/domains/test-generation/context/rust-context-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,WAAW,eAAe;IAC9B,qEAAqE;IACrE,QAAQ,EAAE,OAAO,CAAC;IAClB,uDAAuD;IACvD,UAAU,EAAE,OAAO,CAAC;IACpB,kDAAkD;IAClD,YAAY,EAAE,OAAO,CAAC;IACtB,kDAAkD;IAClD,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,GACzE,eAAe,CAWjB"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rust Context Builder
|
|
3
|
+
* Builds test context with ownership-aware patterns for Rust test generation.
|
|
4
|
+
*
|
|
5
|
+
* Determines which crate dependencies (tokio, mockall) are needed and
|
|
6
|
+
* whether `use super::*` should be emitted for inline test modules.
|
|
7
|
+
*
|
|
8
|
+
* @module test-generation/context
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Build a RustTestContext from a list of parsed function signatures.
|
|
12
|
+
*
|
|
13
|
+
* @param functions - Array of function metadata (name, isAsync, decorators)
|
|
14
|
+
* @returns Context object describing crate/feature requirements
|
|
15
|
+
*/
|
|
16
|
+
export function buildRustTestContext(functions) {
|
|
17
|
+
const needsTokio = functions.some((f) => f.isAsync);
|
|
18
|
+
// Full trait analysis would require AST inspection; stubbed for now
|
|
19
|
+
const needsMockall = false;
|
|
20
|
+
return {
|
|
21
|
+
useSuper: true,
|
|
22
|
+
needsTokio,
|
|
23
|
+
needsMockall,
|
|
24
|
+
traitMocks: [],
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=rust-context-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rust-context-builder.js","sourceRoot":"","sources":["../../../../src/domains/test-generation/context/rust-context-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAaH;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAClC,SAA0E;IAE1E,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACpD,oEAAoE;IACpE,MAAM,YAAY,GAAG,KAAK,CAAC;IAE3B,OAAO;QACL,QAAQ,EAAE,IAAI;QACd,UAAU;QACV,YAAY;QACZ,UAAU,EAAE,EAAE;KACf,CAAC;AACJ,CAAC"}
|
|
@@ -149,7 +149,7 @@ export class TestGenerationCoordinator extends BaseDomainCoordinator {
|
|
|
149
149
|
try {
|
|
150
150
|
this.decisionTransformer = new DecisionTransformerAlgorithm({
|
|
151
151
|
contextLength: 10,
|
|
152
|
-
embeddingDim:
|
|
152
|
+
embeddingDim: 384,
|
|
153
153
|
});
|
|
154
154
|
// Note: DecisionTransformer will auto-initialize on first predict() call
|
|
155
155
|
console.log('[TestGenerationCoordinator] DecisionTransformer created for test case selection');
|
|
@@ -300,7 +300,7 @@ export class TestGenerationCoordinator extends BaseDomainCoordinator {
|
|
|
300
300
|
if (this.config.publishEvents) {
|
|
301
301
|
await this.publishTestSuiteCreated(result.value, request);
|
|
302
302
|
for (const test of result.value.tests) {
|
|
303
|
-
await this.publishTestGenerated(test, request.framework);
|
|
303
|
+
await this.publishTestGenerated(test, request.framework ?? 'vitest');
|
|
304
304
|
}
|
|
305
305
|
}
|
|
306
306
|
// Learn from successful generation using QESONA
|
|
@@ -444,7 +444,7 @@ export class TestGenerationCoordinator extends BaseDomainCoordinator {
|
|
|
444
444
|
name: `test-generator-${workflowId.slice(0, 8)}`,
|
|
445
445
|
domain: 'test-generation',
|
|
446
446
|
type: 'generator',
|
|
447
|
-
capabilities: ['test-generation', request.testType, request.framework],
|
|
447
|
+
capabilities: ['test-generation', request.testType, request.framework ?? 'vitest'],
|
|
448
448
|
config: {
|
|
449
449
|
workflowId,
|
|
450
450
|
sourceFiles: request.sourceFiles,
|