@agentic-qe/v3 3.0.0-alpha.6 → 3.0.0-alpha.8
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/assets/agents/v3/subagents/v3-qe-code-reviewer.md +339 -0
- package/assets/agents/v3/subagents/v3-qe-integration-reviewer.md +344 -0
- package/assets/agents/v3/subagents/v3-qe-performance-reviewer.md +351 -0
- package/assets/agents/v3/subagents/v3-qe-security-reviewer.md +374 -0
- package/assets/agents/v3/subagents/v3-qe-tdd-green.md +334 -0
- package/assets/agents/v3/subagents/v3-qe-tdd-red.md +329 -0
- package/assets/agents/v3/subagents/v3-qe-tdd-refactor.md +361 -0
- package/assets/agents/v3/v3-qe-accessibility-auditor.md +266 -0
- package/assets/agents/v3/v3-qe-bdd-generator.md +279 -0
- package/assets/agents/v3/v3-qe-chaos-engineer.md +265 -0
- package/assets/agents/v3/v3-qe-code-complexity.md +298 -0
- package/assets/agents/v3/v3-qe-code-intelligence.md +262 -0
- package/assets/agents/v3/v3-qe-contract-validator.md +267 -0
- package/assets/agents/v3/v3-qe-coverage-specialist.md +227 -0
- package/assets/agents/v3/v3-qe-defect-predictor.md +251 -0
- package/assets/agents/v3/v3-qe-dependency-mapper.md +277 -0
- package/assets/agents/v3/v3-qe-deployment-advisor.md +275 -0
- package/assets/agents/v3/v3-qe-flaky-hunter.md +248 -0
- package/assets/agents/v3/v3-qe-fleet-commander.md +293 -0
- package/assets/agents/v3/v3-qe-gap-detector.md +260 -0
- package/assets/agents/v3/v3-qe-graphql-tester.md +308 -0
- package/assets/agents/v3/v3-qe-impact-analyzer.md +299 -0
- package/assets/agents/v3/v3-qe-integration-tester.md +238 -0
- package/assets/agents/v3/v3-qe-kg-builder.md +273 -0
- package/assets/agents/v3/v3-qe-learning-coordinator.md +226 -0
- package/assets/agents/v3/v3-qe-load-tester.md +280 -0
- package/assets/agents/v3/v3-qe-metrics-optimizer.md +300 -0
- package/assets/agents/v3/v3-qe-mutation-tester.md +301 -0
- package/assets/agents/v3/v3-qe-parallel-executor.md +240 -0
- package/assets/agents/v3/v3-qe-pattern-learner.md +271 -0
- package/assets/agents/v3/v3-qe-performance-tester.md +262 -0
- package/assets/agents/v3/v3-qe-property-tester.md +247 -0
- package/assets/agents/v3/v3-qe-quality-gate.md +218 -0
- package/assets/agents/v3/v3-qe-queen-coordinator.md +214 -0
- package/assets/agents/v3/v3-qe-qx-partner.md +313 -0
- package/assets/agents/v3/v3-qe-regression-analyzer.md +322 -0
- package/assets/agents/v3/v3-qe-requirements-validator.md +360 -0
- package/assets/agents/v3/v3-qe-responsive-tester.md +311 -0
- package/assets/agents/v3/v3-qe-retry-handler.md +256 -0
- package/assets/agents/v3/v3-qe-risk-assessor.md +273 -0
- package/assets/agents/v3/v3-qe-root-cause-analyzer.md +286 -0
- package/assets/agents/v3/v3-qe-security-auditor.md +299 -0
- package/assets/agents/v3/v3-qe-security-scanner.md +235 -0
- package/assets/agents/v3/v3-qe-tdd-specialist.md +239 -0
- package/assets/agents/v3/v3-qe-test-architect.md +233 -0
- package/assets/agents/v3/v3-qe-transfer-specialist.md +295 -0
- package/assets/agents/v3/v3-qe-visual-tester.md +232 -0
- package/assets/skills/accessibility-testing/SKILL.md +216 -0
- package/assets/skills/agentdb-advanced/SKILL.md +550 -0
- package/assets/skills/agentdb-learning/SKILL.md +545 -0
- package/assets/skills/agentdb-memory-patterns/SKILL.md +339 -0
- package/assets/skills/agentdb-optimization/SKILL.md +509 -0
- package/assets/skills/agentdb-vector-search/SKILL.md +339 -0
- package/assets/skills/agentic-jujutsu/SKILL.md +645 -0
- package/assets/skills/agentic-quality-engineering/SKILL.md +335 -0
- package/assets/skills/api-testing-patterns/SKILL.md +294 -0
- package/assets/skills/aqe-v2-v3-migration/skill.md +322 -0
- package/assets/skills/brutal-honesty-review/README.md +218 -0
- package/assets/skills/brutal-honesty-review/SKILL.md +235 -0
- package/assets/skills/brutal-honesty-review/resources/assessment-rubrics.md +295 -0
- package/assets/skills/brutal-honesty-review/resources/review-template.md +102 -0
- package/assets/skills/brutal-honesty-review/scripts/assess-code.sh +179 -0
- package/assets/skills/brutal-honesty-review/scripts/assess-tests.sh +223 -0
- package/assets/skills/bug-reporting-excellence/SKILL.md +225 -0
- package/assets/skills/chaos-engineering-resilience/SKILL.md +158 -0
- package/assets/skills/cicd-pipeline-qe-orchestrator/README.md +304 -0
- package/assets/skills/cicd-pipeline-qe-orchestrator/SKILL.md +315 -0
- package/assets/skills/cicd-pipeline-qe-orchestrator/resources/workflows/microservice-pipeline.md +239 -0
- package/assets/skills/cicd-pipeline-qe-orchestrator/resources/workflows/mobile-pipeline.md +375 -0
- package/assets/skills/cicd-pipeline-qe-orchestrator/resources/workflows/monolith-pipeline.md +268 -0
- package/assets/skills/code-review-quality/SKILL.md +227 -0
- package/assets/skills/compatibility-testing/SKILL.md +205 -0
- package/assets/skills/compliance-testing/SKILL.md +225 -0
- package/assets/skills/consultancy-practices/SKILL.md +202 -0
- package/assets/skills/context-driven-testing/SKILL.md +196 -0
- package/assets/skills/contract-testing/SKILL.md +222 -0
- package/assets/skills/database-testing/SKILL.md +244 -0
- package/assets/skills/exploratory-testing-advanced/SKILL.md +201 -0
- package/assets/skills/flow-nexus-neural/SKILL.md +738 -0
- package/assets/skills/flow-nexus-platform/SKILL.md +1157 -0
- package/assets/skills/flow-nexus-swarm/SKILL.md +610 -0
- package/assets/skills/github-code-review/SKILL.md +1140 -0
- package/assets/skills/github-multi-repo/SKILL.md +874 -0
- package/assets/skills/github-project-management/SKILL.md +1277 -0
- package/assets/skills/github-release-management/SKILL.md +1081 -0
- package/assets/skills/github-workflow-automation/SKILL.md +1065 -0
- package/assets/skills/hive-mind-advanced/SKILL.md +712 -0
- package/assets/skills/holistic-testing-pact/SKILL.md +171 -0
- package/assets/skills/hooks-automation/SKILL.md +1201 -0
- package/assets/skills/localization-testing/SKILL.md +221 -0
- package/assets/skills/mobile-testing/SKILL.md +219 -0
- package/assets/skills/mutation-testing/SKILL.md +229 -0
- package/assets/skills/n8n-expression-testing/SKILL.md +434 -0
- package/assets/skills/n8n-integration-testing-patterns/SKILL.md +540 -0
- package/assets/skills/n8n-security-testing/SKILL.md +599 -0
- package/assets/skills/n8n-trigger-testing-strategies/SKILL.md +541 -0
- package/assets/skills/n8n-workflow-testing-fundamentals/SKILL.md +447 -0
- package/assets/skills/pair-programming/SKILL.md +1202 -0
- package/assets/skills/performance-analysis/SKILL.md +563 -0
- package/assets/skills/performance-testing/SKILL.md +310 -0
- package/assets/skills/quality-metrics/SKILL.md +225 -0
- package/assets/skills/reasoningbank-agentdb/SKILL.md +446 -0
- package/assets/skills/reasoningbank-intelligence/SKILL.md +201 -0
- package/assets/skills/refactoring-patterns/SKILL.md +205 -0
- package/assets/skills/regression-testing/SKILL.md +227 -0
- package/assets/skills/risk-based-testing/SKILL.md +206 -0
- package/assets/skills/security-testing/SKILL.md +306 -0
- package/assets/skills/sherlock-review/SKILL.md +250 -0
- package/assets/skills/shift-left-testing/SKILL.md +225 -0
- package/assets/skills/shift-right-testing/SKILL.md +227 -0
- package/assets/skills/six-thinking-hats/README.md +190 -0
- package/assets/skills/six-thinking-hats/SKILL.md +280 -0
- package/assets/skills/six-thinking-hats/resources/examples/api-testing-example.md +345 -0
- package/assets/skills/six-thinking-hats/resources/templates/solo-session-template.md +167 -0
- package/assets/skills/six-thinking-hats/resources/templates/team-session-template.md +336 -0
- package/assets/skills/skill-builder/SKILL.md +910 -0
- package/assets/skills/sparc-methodology/SKILL.md +1115 -0
- package/assets/skills/stream-chain/SKILL.md +563 -0
- package/assets/skills/swarm-advanced/SKILL.md +973 -0
- package/assets/skills/swarm-orchestration/SKILL.md +179 -0
- package/assets/skills/tdd-london-chicago/SKILL.md +244 -0
- package/assets/skills/technical-writing/SKILL.md +178 -0
- package/assets/skills/test-automation-strategy/SKILL.md +230 -0
- package/assets/skills/test-data-management/SKILL.md +270 -0
- package/assets/skills/test-design-techniques/SKILL.md +244 -0
- package/assets/skills/test-environment-management/SKILL.md +243 -0
- package/assets/skills/test-reporting-analytics/SKILL.md +214 -0
- package/assets/skills/testability-scoring/README.md +71 -0
- package/assets/skills/testability-scoring/SKILL.md +346 -0
- package/assets/skills/testability-scoring/resources/templates/config.template.js +84 -0
- package/assets/skills/testability-scoring/resources/templates/testability-scoring.spec.template.js +532 -0
- package/assets/skills/testability-scoring/scripts/generate-html-report.js +1007 -0
- package/assets/skills/testability-scoring/scripts/run-assessment.sh +70 -0
- package/assets/skills/v3-qe-chaos-resilience/SKILL.md +238 -0
- package/assets/skills/v3-qe-code-intelligence/SKILL.md +209 -0
- package/assets/skills/v3-qe-contract-testing/SKILL.md +218 -0
- package/assets/skills/v3-qe-coverage-analysis/SKILL.md +187 -0
- package/assets/skills/v3-qe-defect-intelligence/SKILL.md +205 -0
- package/assets/skills/v3-qe-learning-optimization/SKILL.md +238 -0
- package/assets/skills/v3-qe-quality-assessment/SKILL.md +213 -0
- package/assets/skills/v3-qe-requirements-validation/SKILL.md +248 -0
- package/assets/skills/v3-qe-test-execution/SKILL.md +182 -0
- package/assets/skills/v3-qe-test-generation/SKILL.md +141 -0
- package/assets/skills/v3-qe-visual-accessibility/SKILL.md +242 -0
- package/assets/skills/verification-quality/SKILL.md +649 -0
- package/assets/skills/visual-testing-advanced/SKILL.md +219 -0
- package/assets/skills/xp-practices/SKILL.md +229 -0
- package/dist/cli/bundle.js +23 -13
- package/dist/init/agents-installer.js +4 -4
- package/dist/init/agents-installer.js.map +1 -1
- package/dist/init/init-wizard.d.ts.map +1 -1
- package/dist/init/init-wizard.js +15 -5
- package/dist/init/init-wizard.js.map +1 -1
- package/dist/init/skills-installer.js +4 -4
- package/dist/init/skills-installer.js.map +1 -1
- package/package.json +7 -1
- package/docs/analysis/V3-INIT-REQUIREMENTS-ANALYSIS.md +0 -352
- package/implementation/README.md +0 -90
- package/implementation/adrs/ADR-030-coherence-gated-quality-gates.md +0 -312
- package/implementation/adrs/ADR-031-strange-loop-self-awareness.md +0 -484
- package/implementation/adrs/ADR-032-time-crystal-scheduling.md +0 -530
- package/implementation/adrs/ADR-033-early-exit-testing.md +0 -634
- package/implementation/adrs/ADR-034-neural-topology-optimizer.md +0 -589
- package/implementation/adrs/ADR-035-causal-discovery.md +0 -610
- package/implementation/adrs/ADR-036-result-persistence.md +0 -326
- package/implementation/adrs/ADR-037-v3-qe-agent-naming.md +0 -105
- package/implementation/adrs/ADR-038-v3-qe-memory-unification.md +0 -154
- package/implementation/adrs/ADR-039-v3-qe-mcp-optimization.md +0 -179
- package/implementation/adrs/ADR-040-v3-qe-agentic-flow-integration.md +0 -240
- package/implementation/adrs/ADR-041-v3-qe-cli-enhancement.md +0 -296
- package/implementation/adrs/ADR-042-v3-qe-token-tracking-integration.md +0 -517
- package/implementation/adrs/v3-adrs.md +0 -2783
- package/implementation/planning/AQE-V3-MASTER-PLAN.md +0 -815
- package/security-scan-report-2026-01-11.md +0 -410
- package/security-verification-report-2026-01-11.md +0 -278
- package/src/benchmarks/performance-benchmarks.ts +0 -646
- package/src/benchmarks/run-benchmarks.ts +0 -324
- package/src/causal-discovery/causal-graph.ts +0 -450
- package/src/causal-discovery/discovery-engine.ts +0 -438
- package/src/causal-discovery/index.ts +0 -117
- package/src/causal-discovery/types.ts +0 -456
- package/src/causal-discovery/weight-matrix.ts +0 -453
- package/src/cli/commands/qe-tools.ts +0 -634
- package/src/cli/index.ts +0 -1976
- package/src/compatibility/agent-mapper.ts +0 -291
- package/src/compatibility/cli-adapter.ts +0 -277
- package/src/compatibility/config-migrator.ts +0 -334
- package/src/compatibility/index.ts +0 -112
- package/src/compatibility/mcp-adapter.ts +0 -248
- package/src/compatibility/types.ts +0 -156
- package/src/coordination/claims/claim-repository.ts +0 -636
- package/src/coordination/claims/claim-service.ts +0 -675
- package/src/coordination/claims/handoff-manager.ts +0 -535
- package/src/coordination/claims/index.ts +0 -276
- package/src/coordination/claims/interfaces.ts +0 -687
- package/src/coordination/claims/work-stealing.ts +0 -436
- package/src/coordination/cross-domain-router.ts +0 -492
- package/src/coordination/index.ts +0 -127
- package/src/coordination/interfaces.ts +0 -691
- package/src/coordination/protocol-executor.ts +0 -760
- package/src/coordination/protocols/code-intelligence-index.ts +0 -855
- package/src/coordination/protocols/defect-investigation.ts +0 -1184
- package/src/coordination/protocols/index.ts +0 -11
- package/src/coordination/protocols/learning-consolidation.ts +0 -1181
- package/src/coordination/protocols/morning-sync.ts +0 -1055
- package/src/coordination/protocols/quality-gate.ts +0 -1566
- package/src/coordination/protocols/security-audit.ts +0 -1587
- package/src/coordination/queen-coordinator.ts +0 -1176
- package/src/coordination/result-saver.ts +0 -780
- package/src/coordination/task-executor.ts +0 -1146
- package/src/coordination/workflow-orchestrator.ts +0 -1917
- package/src/domains/chaos-resilience/coordinator.ts +0 -1032
- package/src/domains/chaos-resilience/index.ts +0 -143
- package/src/domains/chaos-resilience/interfaces.ts +0 -659
- package/src/domains/chaos-resilience/plugin.ts +0 -691
- package/src/domains/chaos-resilience/services/chaos-engineer.ts +0 -1097
- package/src/domains/chaos-resilience/services/index.ts +0 -19
- package/src/domains/chaos-resilience/services/load-tester.ts +0 -799
- package/src/domains/chaos-resilience/services/performance-profiler.ts +0 -792
- package/src/domains/code-intelligence/coordinator.ts +0 -631
- package/src/domains/code-intelligence/index.ts +0 -86
- package/src/domains/code-intelligence/interfaces.ts +0 -162
- package/src/domains/code-intelligence/plugin.ts +0 -451
- package/src/domains/code-intelligence/services/impact-analyzer.ts +0 -567
- package/src/domains/code-intelligence/services/index.ts +0 -26
- package/src/domains/code-intelligence/services/knowledge-graph.ts +0 -1067
- package/src/domains/code-intelligence/services/semantic-analyzer.ts +0 -901
- package/src/domains/contract-testing/coordinator.ts +0 -1038
- package/src/domains/contract-testing/index.ts +0 -122
- package/src/domains/contract-testing/interfaces.ts +0 -458
- package/src/domains/contract-testing/plugin.ts +0 -746
- package/src/domains/contract-testing/services/api-compatibility.ts +0 -748
- package/src/domains/contract-testing/services/contract-validator.ts +0 -1700
- package/src/domains/contract-testing/services/index.ts +0 -19
- package/src/domains/contract-testing/services/schema-validator.ts +0 -1102
- package/src/domains/coverage-analysis/coordinator.ts +0 -485
- package/src/domains/coverage-analysis/index.ts +0 -114
- package/src/domains/coverage-analysis/interfaces.ts +0 -142
- package/src/domains/coverage-analysis/plugin.ts +0 -172
- package/src/domains/coverage-analysis/services/coverage-analyzer.ts +0 -449
- package/src/domains/coverage-analysis/services/coverage-embedder.ts +0 -733
- package/src/domains/coverage-analysis/services/coverage-parser.ts +0 -753
- package/src/domains/coverage-analysis/services/gap-detector.ts +0 -592
- package/src/domains/coverage-analysis/services/hnsw-index.ts +0 -728
- package/src/domains/coverage-analysis/services/index.ts +0 -61
- package/src/domains/coverage-analysis/services/risk-scorer.ts +0 -540
- package/src/domains/coverage-analysis/services/sublinear-analyzer.ts +0 -747
- package/src/domains/defect-intelligence/coordinator.ts +0 -635
- package/src/domains/defect-intelligence/index.ts +0 -83
- package/src/domains/defect-intelligence/interfaces.ts +0 -152
- package/src/domains/defect-intelligence/plugin.ts +0 -483
- package/src/domains/defect-intelligence/services/causal-root-cause-analyzer.ts +0 -494
- package/src/domains/defect-intelligence/services/defect-predictor.ts +0 -852
- package/src/domains/defect-intelligence/services/index.ts +0 -37
- package/src/domains/defect-intelligence/services/pattern-learner.ts +0 -738
- package/src/domains/defect-intelligence/services/root-cause-analyzer.ts +0 -637
- package/src/domains/domain-interface.ts +0 -77
- package/src/domains/index.ts +0 -23
- package/src/domains/learning-optimization/coordinator.ts +0 -1215
- package/src/domains/learning-optimization/index.ts +0 -127
- package/src/domains/learning-optimization/interfaces.ts +0 -570
- package/src/domains/learning-optimization/plugin.ts +0 -851
- package/src/domains/learning-optimization/services/index.ts +0 -29
- package/src/domains/learning-optimization/services/learning-coordinator.ts +0 -972
- package/src/domains/learning-optimization/services/metrics-optimizer.ts +0 -915
- package/src/domains/learning-optimization/services/production-intel.ts +0 -971
- package/src/domains/learning-optimization/services/transfer-specialist.ts +0 -723
- package/src/domains/quality-assessment/coherence/gate-controller.ts +0 -549
- package/src/domains/quality-assessment/coherence/index.ts +0 -211
- package/src/domains/quality-assessment/coherence/lambda-calculator.ts +0 -384
- package/src/domains/quality-assessment/coherence/partition-detector.ts +0 -469
- package/src/domains/quality-assessment/coherence/types.ts +0 -384
- package/src/domains/quality-assessment/coordinator.ts +0 -605
- package/src/domains/quality-assessment/index.ts +0 -97
- package/src/domains/quality-assessment/interfaces.ts +0 -152
- package/src/domains/quality-assessment/plugin.ts +0 -496
- package/src/domains/quality-assessment/services/coherence-gate.ts +0 -358
- package/src/domains/quality-assessment/services/deployment-advisor.ts +0 -571
- package/src/domains/quality-assessment/services/index.ts +0 -34
- package/src/domains/quality-assessment/services/quality-analyzer.ts +0 -670
- package/src/domains/quality-assessment/services/quality-gate.ts +0 -384
- package/src/domains/requirements-validation/coordinator.ts +0 -812
- package/src/domains/requirements-validation/index.ts +0 -92
- package/src/domains/requirements-validation/interfaces.ts +0 -303
- package/src/domains/requirements-validation/plugin.ts +0 -576
- package/src/domains/requirements-validation/services/bdd-scenario-writer.ts +0 -676
- package/src/domains/requirements-validation/services/index.ts +0 -20
- package/src/domains/requirements-validation/services/requirements-validator.ts +0 -559
- package/src/domains/requirements-validation/services/testability-scorer.ts +0 -639
- package/src/domains/security-compliance/coordinator.ts +0 -757
- package/src/domains/security-compliance/index.ts +0 -120
- package/src/domains/security-compliance/interfaces.ts +0 -434
- package/src/domains/security-compliance/plugin.ts +0 -509
- package/src/domains/security-compliance/services/compliance-validator.ts +0 -1226
- package/src/domains/security-compliance/services/index.ts +0 -31
- package/src/domains/security-compliance/services/security-auditor.ts +0 -2227
- package/src/domains/security-compliance/services/security-scanner.ts +0 -2354
- package/src/domains/security-compliance/services/semgrep-integration.ts +0 -289
- package/src/domains/test-execution/coordinator.ts +0 -426
- package/src/domains/test-execution/index.ts +0 -76
- package/src/domains/test-execution/interfaces.ts +0 -119
- package/src/domains/test-execution/plugin.ts +0 -208
- package/src/domains/test-execution/services/flaky-detector.ts +0 -1240
- package/src/domains/test-execution/services/index.ts +0 -8
- package/src/domains/test-execution/services/retry-handler.ts +0 -820
- package/src/domains/test-execution/services/test-executor.ts +0 -885
- package/src/domains/test-generation/coordinator.ts +0 -656
- package/src/domains/test-generation/index.ts +0 -77
- package/src/domains/test-generation/interfaces.ts +0 -118
- package/src/domains/test-generation/plugin.ts +0 -397
- package/src/domains/test-generation/services/index.ts +0 -23
- package/src/domains/test-generation/services/pattern-matcher.ts +0 -1725
- package/src/domains/test-generation/services/test-generator.ts +0 -2750
- package/src/domains/visual-accessibility/coordinator.ts +0 -860
- package/src/domains/visual-accessibility/index.ts +0 -116
- package/src/domains/visual-accessibility/interfaces.ts +0 -435
- package/src/domains/visual-accessibility/plugin.ts +0 -568
- package/src/domains/visual-accessibility/services/accessibility-tester.ts +0 -982
- package/src/domains/visual-accessibility/services/axe-core-audit.ts +0 -630
- package/src/domains/visual-accessibility/services/index.ts +0 -28
- package/src/domains/visual-accessibility/services/responsive-tester.ts +0 -934
- package/src/domains/visual-accessibility/services/visual-tester.ts +0 -458
- package/src/early-exit/early-exit-controller.ts +0 -490
- package/src/early-exit/early-exit-decision.ts +0 -391
- package/src/early-exit/index.ts +0 -115
- package/src/early-exit/quality-signal.ts +0 -389
- package/src/early-exit/speculative-executor.ts +0 -505
- package/src/early-exit/types.ts +0 -407
- package/src/feedback/coverage-learner.ts +0 -456
- package/src/feedback/feedback-loop.ts +0 -426
- package/src/feedback/index.ts +0 -72
- package/src/feedback/pattern-promotion.ts +0 -373
- package/src/feedback/quality-score-calculator.ts +0 -334
- package/src/feedback/test-outcome-tracker.ts +0 -450
- package/src/feedback/types.ts +0 -497
- package/src/index.ts +0 -224
- package/src/init/agents-installer.ts +0 -536
- package/src/init/index.ts +0 -80
- package/src/init/init-wizard.ts +0 -1061
- package/src/init/project-analyzer.ts +0 -696
- package/src/init/self-configurator.ts +0 -488
- package/src/init/skills-installer.ts +0 -467
- package/src/init/types.ts +0 -432
- package/src/integrations/ruvector/ast-complexity.ts +0 -470
- package/src/integrations/ruvector/coverage-router.ts +0 -594
- package/src/integrations/ruvector/diff-risk-classifier.ts +0 -759
- package/src/integrations/ruvector/fallback.ts +0 -942
- package/src/integrations/ruvector/graph-boundaries.ts +0 -809
- package/src/integrations/ruvector/index.ts +0 -363
- package/src/integrations/ruvector/interfaces.ts +0 -609
- package/src/integrations/ruvector/q-learning-router.ts +0 -550
- package/src/kernel/agent-coordinator.ts +0 -165
- package/src/kernel/agentdb-backend.ts +0 -504
- package/src/kernel/event-bus.ts +0 -129
- package/src/kernel/hybrid-backend.ts +0 -538
- package/src/kernel/index.ts +0 -28
- package/src/kernel/interfaces.ts +0 -257
- package/src/kernel/kernel.ts +0 -285
- package/src/kernel/memory-backend.ts +0 -169
- package/src/kernel/memory-factory.ts +0 -293
- package/src/kernel/plugin-loader.ts +0 -179
- package/src/learning/index.ts +0 -219
- package/src/learning/pattern-store.ts +0 -990
- package/src/learning/qe-guidance.ts +0 -832
- package/src/learning/qe-hooks.ts +0 -644
- package/src/learning/qe-patterns.ts +0 -449
- package/src/learning/qe-reasoning-bank.ts +0 -951
- package/src/learning/real-embeddings.ts +0 -277
- package/src/learning/real-qe-reasoning-bank.ts +0 -833
- package/src/learning/sqlite-persistence.ts +0 -554
- package/src/mcp/entry.ts +0 -59
- package/src/mcp/handlers/agent-handlers.ts +0 -285
- package/src/mcp/handlers/core-handlers.ts +0 -317
- package/src/mcp/handlers/domain-handlers.ts +0 -1444
- package/src/mcp/handlers/index.ts +0 -57
- package/src/mcp/handlers/memory-handlers.ts +0 -338
- package/src/mcp/handlers/task-handlers.ts +0 -363
- package/src/mcp/index.ts +0 -30
- package/src/mcp/metrics/index.ts +0 -14
- package/src/mcp/metrics/metrics-collector.ts +0 -503
- package/src/mcp/protocol-server.ts +0 -752
- package/src/mcp/security/cve-prevention.ts +0 -742
- package/src/mcp/security/index.ts +0 -356
- package/src/mcp/security/oauth21-provider.ts +0 -821
- package/src/mcp/security/rate-limiter.ts +0 -615
- package/src/mcp/security/sampling-server.ts +0 -662
- package/src/mcp/security/schema-validator.ts +0 -855
- package/src/mcp/server.ts +0 -657
- package/src/mcp/tool-registry.ts +0 -391
- package/src/mcp/tools/base.ts +0 -399
- package/src/mcp/tools/chaos-resilience/inject.ts +0 -699
- package/src/mcp/tools/code-intelligence/analyze.ts +0 -745
- package/src/mcp/tools/contract-testing/validate.ts +0 -708
- package/src/mcp/tools/coverage-analysis/index.ts +0 -770
- package/src/mcp/tools/defect-intelligence/predict.ts +0 -466
- package/src/mcp/tools/index.ts +0 -214
- package/src/mcp/tools/learning-optimization/optimize.ts +0 -772
- package/src/mcp/tools/quality-assessment/evaluate.ts +0 -385
- package/src/mcp/tools/registry.ts +0 -248
- package/src/mcp/tools/requirements-validation/validate.ts +0 -394
- package/src/mcp/tools/security-compliance/scan.ts +0 -365
- package/src/mcp/tools/test-execution/execute.ts +0 -291
- package/src/mcp/tools/test-generation/generate.ts +0 -544
- package/src/mcp/tools/visual-accessibility/index.ts +0 -791
- package/src/mcp/transport/index.ts +0 -31
- package/src/mcp/transport/stdio.ts +0 -318
- package/src/mcp/types.ts +0 -543
- package/src/neural-optimizer/index.ts +0 -111
- package/src/neural-optimizer/replay-buffer.ts +0 -455
- package/src/neural-optimizer/swarm-topology.ts +0 -508
- package/src/neural-optimizer/topology-optimizer.ts +0 -828
- package/src/neural-optimizer/types.ts +0 -481
- package/src/neural-optimizer/value-network.ts +0 -351
- package/src/optimization/auto-tuner.ts +0 -817
- package/src/optimization/index.ts +0 -77
- package/src/optimization/metric-collectors.ts +0 -474
- package/src/optimization/qe-workers.ts +0 -704
- package/src/optimization/tuning-algorithm.ts +0 -401
- package/src/optimization/types.ts +0 -314
- package/src/routing/index.ts +0 -51
- package/src/routing/qe-agent-registry.ts +0 -963
- package/src/routing/qe-task-router.ts +0 -564
- package/src/routing/routing-feedback.ts +0 -365
- package/src/routing/types.ts +0 -406
- package/src/shared/embeddings/embedding-cache.ts +0 -157
- package/src/shared/embeddings/index.ts +0 -50
- package/src/shared/embeddings/nomic-embedder.ts +0 -404
- package/src/shared/embeddings/ollama-client.ts +0 -195
- package/src/shared/embeddings/types.ts +0 -147
- package/src/shared/entities/agent.ts +0 -141
- package/src/shared/entities/base-entity.ts +0 -79
- package/src/shared/entities/index.ts +0 -6
- package/src/shared/events/domain-events.ts +0 -259
- package/src/shared/events/index.ts +0 -5
- package/src/shared/git/git-analyzer.ts +0 -656
- package/src/shared/git/index.ts +0 -11
- package/src/shared/http/http-client.ts +0 -420
- package/src/shared/http/index.ts +0 -13
- package/src/shared/index.ts +0 -41
- package/src/shared/io/file-reader.ts +0 -525
- package/src/shared/io/index.ts +0 -25
- package/src/shared/llm/cache.ts +0 -473
- package/src/shared/llm/circuit-breaker.ts +0 -369
- package/src/shared/llm/cost-tracker.ts +0 -460
- package/src/shared/llm/index.ts +0 -140
- package/src/shared/llm/interfaces.ts +0 -629
- package/src/shared/llm/provider-manager.ts +0 -685
- package/src/shared/llm/providers/claude.ts +0 -524
- package/src/shared/llm/providers/index.ts +0 -8
- package/src/shared/llm/providers/ollama.ts +0 -575
- package/src/shared/llm/providers/openai.ts +0 -609
- package/src/shared/metrics/code-metrics.ts +0 -520
- package/src/shared/metrics/index.ts +0 -23
- package/src/shared/metrics/system-metrics.ts +0 -353
- package/src/shared/parsers/index.ts +0 -6
- package/src/shared/parsers/typescript-parser.ts +0 -841
- package/src/shared/security/compliance-patterns.ts +0 -666
- package/src/shared/security/index.ts +0 -30
- package/src/shared/security/osv-client.ts +0 -468
- package/src/shared/types/index.ts +0 -150
- package/src/shared/value-objects/index.ts +0 -273
- package/src/strange-loop/healing-controller.ts +0 -833
- package/src/strange-loop/index.ts +0 -104
- package/src/strange-loop/self-model.ts +0 -494
- package/src/strange-loop/strange-loop.ts +0 -446
- package/src/strange-loop/swarm-observer.ts +0 -448
- package/src/strange-loop/topology-analyzer.ts +0 -565
- package/src/strange-loop/types.ts +0 -640
- package/src/time-crystal/default-phases.ts +0 -520
- package/src/time-crystal/index.ts +0 -164
- package/src/time-crystal/oscillator.ts +0 -425
- package/src/time-crystal/phase-executor.ts +0 -521
- package/src/time-crystal/scheduler.ts +0 -1025
- package/src/time-crystal/test-runner.ts +0 -787
- package/src/time-crystal/types.ts +0 -421
- package/src/workers/base-worker.ts +0 -304
- package/src/workers/daemon.ts +0 -264
- package/src/workers/index.ts +0 -119
- package/src/workers/interfaces.ts +0 -393
- package/src/workers/worker-manager.ts +0 -424
- package/src/workers/workers/compliance-checker.ts +0 -445
- package/src/workers/workers/coverage-tracker.ts +0 -344
- package/src/workers/workers/defect-predictor.ts +0 -375
- package/src/workers/workers/flaky-detector.ts +0 -390
- package/src/workers/workers/index.ts +0 -17
- package/src/workers/workers/learning-consolidation.ts +0 -442
- package/src/workers/workers/performance-baseline.ts +0 -434
- package/src/workers/workers/quality-gate.ts +0 -419
- package/src/workers/workers/regression-monitor.ts +0 -357
- package/src/workers/workers/security-scan.ts +0 -349
- package/src/workers/workers/test-health.ts +0 -359
- package/tests/integration/code-intelligence/knowledge-graph-real.test.ts +0 -540
- package/tests/integration/coordination/cross-domain-router.test.ts +0 -403
- package/tests/integration/coordination/protocol-executor.test.ts +0 -454
- package/tests/integration/coordination/workflow-orchestrator.test.ts +0 -418
- package/tests/integration/feedback/feedback-loop-integration.test.ts +0 -560
- package/tests/integration/migration/v2-to-v3-migration.test.ts +0 -471
- package/tests/integration/parsers/typescript-parser.test.ts +0 -463
- package/tests/integration/security/vulnerability-detection.test.ts +0 -628
- package/tests/integration/test-execution/coordinator.test.ts +0 -410
- package/tests/integration/test-generation/coordinator.test.ts +0 -361
- package/tests/mocks/index.ts +0 -228
- package/tests/time-crystal/default-phases.test.ts +0 -476
- package/tests/time-crystal/oscillator.test.ts +0 -541
- package/tests/time-crystal/phase-executor.test.ts +0 -653
- package/tests/time-crystal/scheduler.test.ts +0 -626
- package/tests/time-crystal/test-runner.test.ts +0 -594
- package/tests/unit/causal-discovery/causal-graph.test.ts +0 -504
- package/tests/unit/causal-discovery/causal-root-cause-analyzer.test.ts +0 -347
- package/tests/unit/causal-discovery/discovery-engine.test.ts +0 -435
- package/tests/unit/causal-discovery/weight-matrix.test.ts +0 -328
- package/tests/unit/cli/cli.test.ts +0 -341
- package/tests/unit/cli/commands.test.ts +0 -414
- package/tests/unit/cli/init-command.test.ts +0 -274
- package/tests/unit/cli/migrate-command.test.ts +0 -396
- package/tests/unit/coordination/claims/claim-service.test.ts +0 -949
- package/tests/unit/coordination/claims/handoff-manager.test.ts +0 -773
- package/tests/unit/coordination/claims/work-stealing.test.ts +0 -492
- package/tests/unit/coordination/queen-coordinator.test.ts +0 -966
- package/tests/unit/coordination/result-saver.test.ts +0 -653
- package/tests/unit/coordination/task-executor.test.ts +0 -810
- package/tests/unit/domains/chaos-resilience/chaos-engineer.test.ts +0 -484
- package/tests/unit/domains/chaos-resilience/load-tester.test.ts +0 -559
- package/tests/unit/domains/chaos-resilience/performance-profiler.test.ts +0 -490
- package/tests/unit/domains/code-intelligence/impact-analyzer.test.ts +0 -560
- package/tests/unit/domains/code-intelligence/knowledge-graph.test.ts +0 -460
- package/tests/unit/domains/code-intelligence/semantic-analyzer.test.ts +0 -584
- package/tests/unit/domains/contract-testing/api-compatibility.test.ts +0 -483
- package/tests/unit/domains/contract-testing/contract-validator.test.ts +0 -370
- package/tests/unit/domains/contract-testing/schema-validator.test.ts +0 -610
- package/tests/unit/domains/coverage-analysis/coverage-embedder.test.ts +0 -298
- package/tests/unit/domains/coverage-analysis/hnsw-index.test.ts +0 -292
- package/tests/unit/domains/coverage-analysis/sublinear-analyzer.test.ts +0 -506
- package/tests/unit/domains/defect-intelligence/defect-predictor.test.ts +0 -370
- package/tests/unit/domains/defect-intelligence/pattern-learner.test.ts +0 -546
- package/tests/unit/domains/defect-intelligence/root-cause-analyzer.test.ts +0 -534
- package/tests/unit/domains/learning-optimization/learning-coordinator.test.ts +0 -541
- package/tests/unit/domains/learning-optimization/metrics-optimizer.test.ts +0 -552
- package/tests/unit/domains/learning-optimization/production-intel.test.ts +0 -589
- package/tests/unit/domains/learning-optimization/transfer-specialist.test.ts +0 -453
- package/tests/unit/domains/quality-assessment/coherence-gate.test.ts +0 -1006
- package/tests/unit/domains/quality-assessment/deployment-advisor.test.ts +0 -515
- package/tests/unit/domains/quality-assessment/quality-analyzer.test.ts +0 -401
- package/tests/unit/domains/quality-assessment/quality-gate.test.ts +0 -324
- package/tests/unit/domains/requirements-validation/bdd-scenario-writer.test.ts +0 -479
- package/tests/unit/domains/requirements-validation/requirements-validator.test.ts +0 -452
- package/tests/unit/domains/requirements-validation/testability-scorer.test.ts +0 -505
- package/tests/unit/domains/security-compliance/compliance-validator.test.ts +0 -500
- package/tests/unit/domains/security-compliance/security-auditor.test.ts +0 -498
- package/tests/unit/domains/security-compliance/security-scanner.test.ts +0 -412
- package/tests/unit/domains/visual-accessibility/accessibility-tester.test.ts +0 -432
- package/tests/unit/domains/visual-accessibility/responsive-tester.test.ts +0 -506
- package/tests/unit/domains/visual-accessibility/visual-tester.test.ts +0 -412
- package/tests/unit/early-exit/early-exit-controller.test.ts +0 -548
- package/tests/unit/early-exit/early-exit-decision.test.ts +0 -617
- package/tests/unit/early-exit/index.test.ts +0 -254
- package/tests/unit/early-exit/quality-signal.test.ts +0 -589
- package/tests/unit/early-exit/speculative-executor.test.ts +0 -453
- package/tests/unit/feedback/coverage-learner.test.ts +0 -288
- package/tests/unit/feedback/feedback-loop.test.ts +0 -458
- package/tests/unit/feedback/pattern-promotion.test.ts +0 -390
- package/tests/unit/feedback/quality-score-calculator.test.ts +0 -364
- package/tests/unit/feedback/test-outcome-tracker.test.ts +0 -243
- package/tests/unit/init/init-wizard.test.ts +0 -881
- package/tests/unit/init/project-analyzer.test.ts +0 -807
- package/tests/unit/init/self-configurator.test.ts +0 -493
- package/tests/unit/integrations/ruvector/ast-complexity.test.ts +0 -240
- package/tests/unit/integrations/ruvector/coverage-router.test.ts +0 -366
- package/tests/unit/integrations/ruvector/diff-risk-classifier.test.ts +0 -340
- package/tests/unit/integrations/ruvector/graph-boundaries.test.ts +0 -355
- package/tests/unit/integrations/ruvector/q-learning-router.test.ts +0 -314
- package/tests/unit/kernel/agent-coordinator.test.ts +0 -220
- package/tests/unit/kernel/event-bus.test.ts +0 -197
- package/tests/unit/learning/qe-reasoning-bank.test.ts +0 -666
- package/tests/unit/learning/real-qe-reasoning-bank.benchmark.test.ts +0 -415
- package/tests/unit/mcp/mcp-server.test.ts +0 -544
- package/tests/unit/mcp/metrics/metrics-collector.test.ts +0 -340
- package/tests/unit/mcp/security/cve-prevention.test.ts +0 -512
- package/tests/unit/mcp/security/oauth21-provider.test.ts +0 -624
- package/tests/unit/mcp/security/rate-limiter.test.ts +0 -410
- package/tests/unit/mcp/security/sampling-server.test.ts +0 -420
- package/tests/unit/mcp/security/schema-validator.test.ts +0 -494
- package/tests/unit/mcp/tools/base.test.ts +0 -336
- package/tests/unit/mcp/tools/domain-tools.test.ts +0 -759
- package/tests/unit/mcp/tools/registry.test.ts +0 -240
- package/tests/unit/neural-optimizer/replay-buffer.test.ts +0 -403
- package/tests/unit/neural-optimizer/swarm-topology.test.ts +0 -473
- package/tests/unit/neural-optimizer/topology-optimizer.test.ts +0 -595
- package/tests/unit/neural-optimizer/value-network.test.ts +0 -343
- package/tests/unit/optimization/auto-tuner.test.ts +0 -506
- package/tests/unit/optimization/metric-collectors.test.ts +0 -352
- package/tests/unit/optimization/qe-workers.test.ts +0 -407
- package/tests/unit/optimization/tuning-algorithm.test.ts +0 -467
- package/tests/unit/routing/qe-agent-registry.test.ts +0 -229
- package/tests/unit/routing/qe-task-router.test.ts +0 -390
- package/tests/unit/routing/routing-feedback.test.ts +0 -339
- package/tests/unit/shared/embeddings/nomic-embedder.test.ts +0 -419
- package/tests/unit/shared/http/http-client.test.ts +0 -719
- package/tests/unit/shared/io/file-reader.test.ts +0 -511
- package/tests/unit/shared/llm/cache.test.ts +0 -391
- package/tests/unit/shared/llm/circuit-breaker.test.ts +0 -293
- package/tests/unit/shared/llm/cost-tracker.test.ts +0 -431
- package/tests/unit/shared/llm/provider-manager.test.ts +0 -550
- package/tests/unit/shared/llm/providers.test.ts +0 -532
- package/tests/unit/shared/parsers/typescript-parser.test.ts +0 -693
- package/tests/unit/shared/value-objects.test.ts +0 -184
- package/tests/unit/strange-loop/strange-loop.test.ts +0 -1170
- package/tests/unit/workers/base-worker.test.ts +0 -341
- package/tests/unit/workers/daemon.test.ts +0 -291
- package/tests/unit/workers/worker-manager.test.ts +0 -284
- package/tsconfig.json +0 -32
- package/vitest.config.ts +0 -27
|
@@ -1,855 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Agentic QE v3 - Code Intelligence Index Protocol
|
|
3
|
-
* Cross-domain coordination for knowledge graph indexing
|
|
4
|
-
*
|
|
5
|
-
* Triggers: Code change, hourly, manual, git-commit
|
|
6
|
-
* Participants: Code Intelligence, Semantic Analyzer, Dependency Mapper
|
|
7
|
-
* Actions: Update KG, analyze impact, index dependencies
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
import { v4 as uuidv4 } from 'uuid';
|
|
11
|
-
import {
|
|
12
|
-
Result,
|
|
13
|
-
ok,
|
|
14
|
-
err,
|
|
15
|
-
DomainName,
|
|
16
|
-
Severity,
|
|
17
|
-
} from '../../shared/types';
|
|
18
|
-
import { createEvent } from '../../shared/events/domain-events';
|
|
19
|
-
import { QEKernel } from '../../kernel/interfaces';
|
|
20
|
-
import {
|
|
21
|
-
CodeIntelligenceAPI,
|
|
22
|
-
IndexRequest,
|
|
23
|
-
IndexResult,
|
|
24
|
-
ImpactAnalysis,
|
|
25
|
-
DependencyMap,
|
|
26
|
-
} from '../../domains/code-intelligence/interfaces';
|
|
27
|
-
import { GitAnalyzer } from '../../shared/git';
|
|
28
|
-
import { listFiles } from '../../shared/io';
|
|
29
|
-
|
|
30
|
-
// ============================================================================
|
|
31
|
-
// Protocol Types
|
|
32
|
-
// ============================================================================
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* Trigger types for indexing
|
|
36
|
-
*/
|
|
37
|
-
export type IndexTriggerType =
|
|
38
|
-
| 'code-change' // Incremental index of changed files
|
|
39
|
-
| 'hourly' // Scheduled refresh of hot paths
|
|
40
|
-
| 'manual' // Full reindex on demand
|
|
41
|
-
| 'git-commit'; // Post-commit hook integration
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* Index trigger configuration
|
|
45
|
-
*/
|
|
46
|
-
export interface IndexTrigger {
|
|
47
|
-
type: IndexTriggerType;
|
|
48
|
-
files?: string[]; // Specific files (for code-change, git-commit)
|
|
49
|
-
commitHash?: string; // Git commit reference
|
|
50
|
-
branch?: string; // Git branch
|
|
51
|
-
paths?: string[]; // Paths to scan (for manual full reindex)
|
|
52
|
-
hotPathsOnly?: boolean; // For hourly refresh
|
|
53
|
-
correlationId?: string; // For tracking
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
* Protocol execution result
|
|
58
|
-
*/
|
|
59
|
-
export interface IndexProtocolResult {
|
|
60
|
-
protocolId: string;
|
|
61
|
-
trigger: IndexTrigger;
|
|
62
|
-
indexResult: IndexResult;
|
|
63
|
-
impactAnalysis?: ImpactAnalysis;
|
|
64
|
-
dependencyMap?: DependencyMap;
|
|
65
|
-
notifiedDomains: DomainName[];
|
|
66
|
-
duration: number;
|
|
67
|
-
timestamp: Date;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
/**
|
|
71
|
-
* Protocol configuration
|
|
72
|
-
*/
|
|
73
|
-
export interface IndexProtocolConfig {
|
|
74
|
-
/** Enable impact analysis for changes */
|
|
75
|
-
analyzeImpact: boolean;
|
|
76
|
-
/** Enable dependency graph updates */
|
|
77
|
-
updateDependencies: boolean;
|
|
78
|
-
/** Domains to notify of changes */
|
|
79
|
-
notifyDomains: DomainName[];
|
|
80
|
-
/** Maximum files per incremental index */
|
|
81
|
-
maxIncrementalFiles: number;
|
|
82
|
-
/** Hot paths for hourly refresh */
|
|
83
|
-
hotPaths: string[];
|
|
84
|
-
/** Languages to index */
|
|
85
|
-
languages: string[];
|
|
86
|
-
/** Include test files in index */
|
|
87
|
-
includeTests: boolean;
|
|
88
|
-
/** Memory namespace for protocol state */
|
|
89
|
-
namespace: string;
|
|
90
|
-
/** Track last index time per trigger type */
|
|
91
|
-
trackIndexHistory: boolean;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
const DEFAULT_CONFIG: IndexProtocolConfig = {
|
|
95
|
-
analyzeImpact: true,
|
|
96
|
-
updateDependencies: true,
|
|
97
|
-
notifyDomains: [
|
|
98
|
-
'test-generation',
|
|
99
|
-
'coverage-analysis',
|
|
100
|
-
'defect-intelligence',
|
|
101
|
-
],
|
|
102
|
-
maxIncrementalFiles: 500,
|
|
103
|
-
hotPaths: [
|
|
104
|
-
'src/core/**',
|
|
105
|
-
'src/api/**',
|
|
106
|
-
'src/domains/**',
|
|
107
|
-
'lib/**',
|
|
108
|
-
],
|
|
109
|
-
languages: ['typescript', 'javascript', 'python'],
|
|
110
|
-
includeTests: true,
|
|
111
|
-
namespace: 'coordination:code-index-protocol',
|
|
112
|
-
trackIndexHistory: true,
|
|
113
|
-
};
|
|
114
|
-
|
|
115
|
-
// ============================================================================
|
|
116
|
-
// Protocol Events
|
|
117
|
-
// ============================================================================
|
|
118
|
-
|
|
119
|
-
export const CodeIndexProtocolEvents = {
|
|
120
|
-
CodeIndexStarted: 'coordination.CodeIndexStarted',
|
|
121
|
-
KnowledgeGraphUpdated: 'coordination.KnowledgeGraphUpdated',
|
|
122
|
-
ImpactAnalysisCompleted: 'coordination.ImpactAnalysisCompleted',
|
|
123
|
-
DependenciesIndexed: 'coordination.DependenciesIndexed',
|
|
124
|
-
CodeIndexCompleted: 'coordination.CodeIndexCompleted',
|
|
125
|
-
DomainNotified: 'coordination.DomainNotified',
|
|
126
|
-
} as const;
|
|
127
|
-
|
|
128
|
-
export interface CodeIndexStartedPayload {
|
|
129
|
-
protocolId: string;
|
|
130
|
-
trigger: IndexTrigger;
|
|
131
|
-
fileCount: number;
|
|
132
|
-
startTime: Date;
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
export interface ProtocolKnowledgeGraphUpdatedPayload {
|
|
136
|
-
protocolId: string;
|
|
137
|
-
nodesCreated: number;
|
|
138
|
-
edgesCreated: number;
|
|
139
|
-
filesIndexed: number;
|
|
140
|
-
duration: number;
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
export interface ImpactAnalysisCompletedPayload {
|
|
144
|
-
protocolId: string;
|
|
145
|
-
changedFiles: string[];
|
|
146
|
-
directImpact: number;
|
|
147
|
-
transitiveImpact: number;
|
|
148
|
-
impactedTests: number;
|
|
149
|
-
riskLevel: Severity;
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
export interface DependenciesIndexedPayload {
|
|
153
|
-
protocolId: string;
|
|
154
|
-
totalNodes: number;
|
|
155
|
-
totalEdges: number;
|
|
156
|
-
cyclesDetected: number;
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
export interface CodeIndexCompletedPayload {
|
|
160
|
-
protocolId: string;
|
|
161
|
-
trigger: IndexTrigger;
|
|
162
|
-
success: boolean;
|
|
163
|
-
filesIndexed: number;
|
|
164
|
-
duration: number;
|
|
165
|
-
notifiedDomains: DomainName[];
|
|
166
|
-
error?: string;
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
export interface DomainNotifiedPayload {
|
|
170
|
-
protocolId: string;
|
|
171
|
-
domain: DomainName;
|
|
172
|
-
notificationType: string;
|
|
173
|
-
filesAffecting: string[];
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
// ============================================================================
|
|
177
|
-
// Protocol Interface
|
|
178
|
-
// ============================================================================
|
|
179
|
-
|
|
180
|
-
export interface ICodeIntelligenceIndexProtocol {
|
|
181
|
-
/** Execute the protocol with given trigger */
|
|
182
|
-
execute(trigger: IndexTrigger): Promise<Result<IndexProtocolResult, Error>>;
|
|
183
|
-
|
|
184
|
-
/** Detect files changed since last index */
|
|
185
|
-
detectChanges(): Promise<Result<string[], Error>>;
|
|
186
|
-
|
|
187
|
-
/** Update knowledge graph with new/changed files */
|
|
188
|
-
updateKnowledgeGraph(files: string[]): Promise<Result<IndexResult, Error>>;
|
|
189
|
-
|
|
190
|
-
/** Analyze impact of changes */
|
|
191
|
-
analyzeImpact(changedFiles: string[]): Promise<Result<ImpactAnalysis, Error>>;
|
|
192
|
-
|
|
193
|
-
/** Index/update dependency graph */
|
|
194
|
-
indexDependencies(files: string[]): Promise<Result<DependencyMap, Error>>;
|
|
195
|
-
|
|
196
|
-
/** Notify affected domains of relevant changes */
|
|
197
|
-
notifyAffectedDomains(
|
|
198
|
-
impactAnalysis: ImpactAnalysis,
|
|
199
|
-
changedFiles: string[]
|
|
200
|
-
): Promise<Result<DomainName[], Error>>;
|
|
201
|
-
|
|
202
|
-
/** Get protocol statistics */
|
|
203
|
-
getStats(): ProtocolStats;
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
export interface ProtocolStats {
|
|
207
|
-
totalExecutions: number;
|
|
208
|
-
lastExecution?: Date;
|
|
209
|
-
lastExecutionByTrigger: Record<IndexTriggerType, Date | undefined>;
|
|
210
|
-
averageDuration: number;
|
|
211
|
-
successRate: number;
|
|
212
|
-
totalFilesIndexed: number;
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
// ============================================================================
|
|
216
|
-
// Protocol Implementation
|
|
217
|
-
// ============================================================================
|
|
218
|
-
|
|
219
|
-
/**
|
|
220
|
-
* Code Intelligence Index Protocol
|
|
221
|
-
* Coordinates code indexing across domains
|
|
222
|
-
*/
|
|
223
|
-
export class CodeIntelligenceIndexProtocol implements ICodeIntelligenceIndexProtocol {
|
|
224
|
-
private readonly config: IndexProtocolConfig;
|
|
225
|
-
private readonly gitAnalyzer: GitAnalyzer;
|
|
226
|
-
private executionCount = 0;
|
|
227
|
-
private totalDuration = 0;
|
|
228
|
-
private successCount = 0;
|
|
229
|
-
private totalFilesIndexed = 0;
|
|
230
|
-
private lastExecution?: Date;
|
|
231
|
-
private lastExecutionByTrigger: Record<IndexTriggerType, Date | undefined> = {
|
|
232
|
-
'code-change': undefined,
|
|
233
|
-
hourly: undefined,
|
|
234
|
-
manual: undefined,
|
|
235
|
-
'git-commit': undefined,
|
|
236
|
-
};
|
|
237
|
-
|
|
238
|
-
constructor(
|
|
239
|
-
private readonly kernel: QEKernel,
|
|
240
|
-
config: Partial<IndexProtocolConfig> = {}
|
|
241
|
-
) {
|
|
242
|
-
this.config = { ...DEFAULT_CONFIG, ...config };
|
|
243
|
-
this.gitAnalyzer = new GitAnalyzer({ enableCache: true });
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
// ============================================================================
|
|
247
|
-
// Public API
|
|
248
|
-
// ============================================================================
|
|
249
|
-
|
|
250
|
-
/**
|
|
251
|
-
* Execute the indexing protocol based on trigger type
|
|
252
|
-
*/
|
|
253
|
-
async execute(trigger: IndexTrigger): Promise<Result<IndexProtocolResult, Error>> {
|
|
254
|
-
const protocolId = uuidv4();
|
|
255
|
-
const startTime = Date.now();
|
|
256
|
-
const notifiedDomains: DomainName[] = [];
|
|
257
|
-
|
|
258
|
-
try {
|
|
259
|
-
// Publish start event
|
|
260
|
-
await this.publishEvent(CodeIndexProtocolEvents.CodeIndexStarted, {
|
|
261
|
-
protocolId,
|
|
262
|
-
trigger,
|
|
263
|
-
fileCount: trigger.files?.length ?? 0,
|
|
264
|
-
startTime: new Date(),
|
|
265
|
-
} satisfies CodeIndexStartedPayload);
|
|
266
|
-
|
|
267
|
-
// Determine files to index based on trigger type
|
|
268
|
-
const filesToIndex = await this.resolveFilesToIndex(trigger);
|
|
269
|
-
if (!filesToIndex.success) {
|
|
270
|
-
return err(filesToIndex.error);
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
const files = filesToIndex.value;
|
|
274
|
-
if (files.length === 0) {
|
|
275
|
-
// No files to index
|
|
276
|
-
const result: IndexProtocolResult = {
|
|
277
|
-
protocolId,
|
|
278
|
-
trigger,
|
|
279
|
-
indexResult: {
|
|
280
|
-
filesIndexed: 0,
|
|
281
|
-
nodesCreated: 0,
|
|
282
|
-
edgesCreated: 0,
|
|
283
|
-
duration: 0,
|
|
284
|
-
errors: [],
|
|
285
|
-
},
|
|
286
|
-
notifiedDomains: [],
|
|
287
|
-
duration: Date.now() - startTime,
|
|
288
|
-
timestamp: new Date(),
|
|
289
|
-
};
|
|
290
|
-
|
|
291
|
-
await this.publishCompletedEvent(protocolId, trigger, true, result, notifiedDomains);
|
|
292
|
-
this.updateStats(true, result.duration, 0);
|
|
293
|
-
return ok(result);
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
// Step 1: Update Knowledge Graph
|
|
297
|
-
const indexResult = await this.updateKnowledgeGraph(files);
|
|
298
|
-
if (!indexResult.success) {
|
|
299
|
-
await this.publishCompletedEvent(protocolId, trigger, false, undefined, [], indexResult.error.message);
|
|
300
|
-
this.updateStats(false, Date.now() - startTime, 0);
|
|
301
|
-
return err(indexResult.error);
|
|
302
|
-
}
|
|
303
|
-
|
|
304
|
-
await this.publishEvent(CodeIndexProtocolEvents.KnowledgeGraphUpdated, {
|
|
305
|
-
protocolId,
|
|
306
|
-
nodesCreated: indexResult.value.nodesCreated,
|
|
307
|
-
edgesCreated: indexResult.value.edgesCreated,
|
|
308
|
-
filesIndexed: indexResult.value.filesIndexed,
|
|
309
|
-
duration: indexResult.value.duration,
|
|
310
|
-
} satisfies ProtocolKnowledgeGraphUpdatedPayload);
|
|
311
|
-
|
|
312
|
-
// Step 2: Analyze Impact (if enabled and relevant trigger)
|
|
313
|
-
let impactAnalysis: ImpactAnalysis | undefined;
|
|
314
|
-
if (this.config.analyzeImpact && this.shouldAnalyzeImpact(trigger)) {
|
|
315
|
-
const impactResult = await this.analyzeImpact(files);
|
|
316
|
-
if (impactResult.success) {
|
|
317
|
-
impactAnalysis = impactResult.value;
|
|
318
|
-
|
|
319
|
-
await this.publishEvent(CodeIndexProtocolEvents.ImpactAnalysisCompleted, {
|
|
320
|
-
protocolId,
|
|
321
|
-
changedFiles: files,
|
|
322
|
-
directImpact: impactAnalysis.directImpact.length,
|
|
323
|
-
transitiveImpact: impactAnalysis.transitiveImpact.length,
|
|
324
|
-
impactedTests: impactAnalysis.impactedTests.length,
|
|
325
|
-
riskLevel: impactAnalysis.riskLevel,
|
|
326
|
-
} satisfies ImpactAnalysisCompletedPayload);
|
|
327
|
-
}
|
|
328
|
-
}
|
|
329
|
-
|
|
330
|
-
// Step 3: Update Dependency Graph (if enabled)
|
|
331
|
-
let dependencyMap: DependencyMap | undefined;
|
|
332
|
-
if (this.config.updateDependencies) {
|
|
333
|
-
const depResult = await this.indexDependencies(files);
|
|
334
|
-
if (depResult.success) {
|
|
335
|
-
dependencyMap = depResult.value;
|
|
336
|
-
|
|
337
|
-
await this.publishEvent(CodeIndexProtocolEvents.DependenciesIndexed, {
|
|
338
|
-
protocolId,
|
|
339
|
-
totalNodes: dependencyMap.metrics.totalNodes,
|
|
340
|
-
totalEdges: dependencyMap.metrics.totalEdges,
|
|
341
|
-
cyclesDetected: dependencyMap.cycles.length,
|
|
342
|
-
} satisfies DependenciesIndexedPayload);
|
|
343
|
-
}
|
|
344
|
-
}
|
|
345
|
-
|
|
346
|
-
// Step 4: Notify affected domains
|
|
347
|
-
if (impactAnalysis && this.config.notifyDomains.length > 0) {
|
|
348
|
-
const notifyResult = await this.notifyAffectedDomains(impactAnalysis, files);
|
|
349
|
-
if (notifyResult.success) {
|
|
350
|
-
notifiedDomains.push(...notifyResult.value);
|
|
351
|
-
}
|
|
352
|
-
}
|
|
353
|
-
|
|
354
|
-
const duration = Date.now() - startTime;
|
|
355
|
-
const result: IndexProtocolResult = {
|
|
356
|
-
protocolId,
|
|
357
|
-
trigger,
|
|
358
|
-
indexResult: indexResult.value,
|
|
359
|
-
impactAnalysis,
|
|
360
|
-
dependencyMap,
|
|
361
|
-
notifiedDomains,
|
|
362
|
-
duration,
|
|
363
|
-
timestamp: new Date(),
|
|
364
|
-
};
|
|
365
|
-
|
|
366
|
-
// Publish completion event
|
|
367
|
-
await this.publishCompletedEvent(protocolId, trigger, true, result, notifiedDomains);
|
|
368
|
-
|
|
369
|
-
// Store protocol result
|
|
370
|
-
await this.storeProtocolResult(result);
|
|
371
|
-
|
|
372
|
-
// Update statistics
|
|
373
|
-
this.updateStats(true, duration, indexResult.value.filesIndexed);
|
|
374
|
-
|
|
375
|
-
return ok(result);
|
|
376
|
-
} catch (error) {
|
|
377
|
-
const errorObj = error instanceof Error ? error : new Error(String(error));
|
|
378
|
-
await this.publishCompletedEvent(protocolId, trigger, false, undefined, [], errorObj.message);
|
|
379
|
-
this.updateStats(false, Date.now() - startTime, 0);
|
|
380
|
-
return err(errorObj);
|
|
381
|
-
}
|
|
382
|
-
}
|
|
383
|
-
|
|
384
|
-
/**
|
|
385
|
-
* Detect changed files since last index
|
|
386
|
-
*/
|
|
387
|
-
async detectChanges(): Promise<Result<string[], Error>> {
|
|
388
|
-
try {
|
|
389
|
-
const lastIndexTime = await this.getLastIndexTime();
|
|
390
|
-
const changedFiles: string[] = [];
|
|
391
|
-
|
|
392
|
-
// Check memory for pending changes
|
|
393
|
-
const pendingKeys = await this.kernel.memory.search(
|
|
394
|
-
'code-intelligence:pending-index:*',
|
|
395
|
-
100
|
|
396
|
-
);
|
|
397
|
-
|
|
398
|
-
for (const key of pendingKeys) {
|
|
399
|
-
const pending = await this.kernel.memory.get<{
|
|
400
|
-
files: string[];
|
|
401
|
-
timestamp: string;
|
|
402
|
-
}>(key);
|
|
403
|
-
|
|
404
|
-
if (pending && pending.files) {
|
|
405
|
-
const pendingTime = new Date(pending.timestamp);
|
|
406
|
-
if (!lastIndexTime || pendingTime > lastIndexTime) {
|
|
407
|
-
changedFiles.push(...pending.files);
|
|
408
|
-
}
|
|
409
|
-
}
|
|
410
|
-
}
|
|
411
|
-
|
|
412
|
-
// Check for git changes using GitAnalyzer integration
|
|
413
|
-
// First, get uncommitted changes (staged + unstaged)
|
|
414
|
-
const uncommittedFiles = await this.gitAnalyzer.getUncommittedFiles();
|
|
415
|
-
if (uncommittedFiles.length > 0) {
|
|
416
|
-
changedFiles.push(...uncommittedFiles);
|
|
417
|
-
}
|
|
418
|
-
|
|
419
|
-
// Then, get committed changes since last index
|
|
420
|
-
const gitChanges = await this.detectGitChanges(lastIndexTime);
|
|
421
|
-
if (gitChanges.success) {
|
|
422
|
-
changedFiles.push(...gitChanges.value);
|
|
423
|
-
}
|
|
424
|
-
|
|
425
|
-
// Deduplicate
|
|
426
|
-
const uniqueFiles = [...new Set(changedFiles)];
|
|
427
|
-
|
|
428
|
-
return ok(uniqueFiles);
|
|
429
|
-
} catch (error) {
|
|
430
|
-
return err(error instanceof Error ? error : new Error(String(error)));
|
|
431
|
-
}
|
|
432
|
-
}
|
|
433
|
-
|
|
434
|
-
/**
|
|
435
|
-
* Update knowledge graph with files
|
|
436
|
-
*/
|
|
437
|
-
async updateKnowledgeGraph(files: string[]): Promise<Result<IndexResult, Error>> {
|
|
438
|
-
try {
|
|
439
|
-
const codeIntelligence = this.kernel.getDomainAPI<CodeIntelligenceAPI>('code-intelligence');
|
|
440
|
-
if (!codeIntelligence) {
|
|
441
|
-
return err(new Error('Code intelligence domain not available'));
|
|
442
|
-
}
|
|
443
|
-
|
|
444
|
-
const request: IndexRequest = {
|
|
445
|
-
paths: files,
|
|
446
|
-
incremental: true,
|
|
447
|
-
includeTests: this.config.includeTests,
|
|
448
|
-
languages: this.config.languages,
|
|
449
|
-
};
|
|
450
|
-
|
|
451
|
-
return codeIntelligence.index(request);
|
|
452
|
-
} catch (error) {
|
|
453
|
-
return err(error instanceof Error ? error : new Error(String(error)));
|
|
454
|
-
}
|
|
455
|
-
}
|
|
456
|
-
|
|
457
|
-
/**
|
|
458
|
-
* Analyze impact of changed files
|
|
459
|
-
*/
|
|
460
|
-
async analyzeImpact(changedFiles: string[]): Promise<Result<ImpactAnalysis, Error>> {
|
|
461
|
-
try {
|
|
462
|
-
const codeIntelligence = this.kernel.getDomainAPI<CodeIntelligenceAPI>('code-intelligence');
|
|
463
|
-
if (!codeIntelligence) {
|
|
464
|
-
return err(new Error('Code intelligence domain not available'));
|
|
465
|
-
}
|
|
466
|
-
|
|
467
|
-
return codeIntelligence.analyzeImpact({
|
|
468
|
-
changedFiles,
|
|
469
|
-
depth: 5,
|
|
470
|
-
includeTests: true,
|
|
471
|
-
});
|
|
472
|
-
} catch (error) {
|
|
473
|
-
return err(error instanceof Error ? error : new Error(String(error)));
|
|
474
|
-
}
|
|
475
|
-
}
|
|
476
|
-
|
|
477
|
-
/**
|
|
478
|
-
* Index dependencies for files
|
|
479
|
-
*/
|
|
480
|
-
async indexDependencies(files: string[]): Promise<Result<DependencyMap, Error>> {
|
|
481
|
-
try {
|
|
482
|
-
const codeIntelligence = this.kernel.getDomainAPI<CodeIntelligenceAPI>('code-intelligence');
|
|
483
|
-
if (!codeIntelligence) {
|
|
484
|
-
return err(new Error('Code intelligence domain not available'));
|
|
485
|
-
}
|
|
486
|
-
|
|
487
|
-
return codeIntelligence.mapDependencies({
|
|
488
|
-
files,
|
|
489
|
-
direction: 'both',
|
|
490
|
-
depth: 3,
|
|
491
|
-
});
|
|
492
|
-
} catch (error) {
|
|
493
|
-
return err(error instanceof Error ? error : new Error(String(error)));
|
|
494
|
-
}
|
|
495
|
-
}
|
|
496
|
-
|
|
497
|
-
/**
|
|
498
|
-
* Notify domains affected by changes
|
|
499
|
-
*/
|
|
500
|
-
async notifyAffectedDomains(
|
|
501
|
-
impactAnalysis: ImpactAnalysis,
|
|
502
|
-
changedFiles: string[]
|
|
503
|
-
): Promise<Result<DomainName[], Error>> {
|
|
504
|
-
const notifiedDomains: DomainName[] = [];
|
|
505
|
-
|
|
506
|
-
try {
|
|
507
|
-
for (const domain of this.config.notifyDomains) {
|
|
508
|
-
const notification = this.buildDomainNotification(domain, impactAnalysis, changedFiles);
|
|
509
|
-
if (notification) {
|
|
510
|
-
await this.publishDomainNotification(domain, notification);
|
|
511
|
-
notifiedDomains.push(domain);
|
|
512
|
-
}
|
|
513
|
-
}
|
|
514
|
-
|
|
515
|
-
return ok(notifiedDomains);
|
|
516
|
-
} catch (error) {
|
|
517
|
-
return err(error instanceof Error ? error : new Error(String(error)));
|
|
518
|
-
}
|
|
519
|
-
}
|
|
520
|
-
|
|
521
|
-
/**
|
|
522
|
-
* Get protocol statistics
|
|
523
|
-
*/
|
|
524
|
-
getStats(): ProtocolStats {
|
|
525
|
-
return {
|
|
526
|
-
totalExecutions: this.executionCount,
|
|
527
|
-
lastExecution: this.lastExecution,
|
|
528
|
-
lastExecutionByTrigger: { ...this.lastExecutionByTrigger },
|
|
529
|
-
averageDuration:
|
|
530
|
-
this.executionCount > 0 ? this.totalDuration / this.executionCount : 0,
|
|
531
|
-
successRate:
|
|
532
|
-
this.executionCount > 0 ? this.successCount / this.executionCount : 0,
|
|
533
|
-
totalFilesIndexed: this.totalFilesIndexed,
|
|
534
|
-
};
|
|
535
|
-
}
|
|
536
|
-
|
|
537
|
-
// ============================================================================
|
|
538
|
-
// Private Helper Methods
|
|
539
|
-
// ============================================================================
|
|
540
|
-
|
|
541
|
-
private async resolveFilesToIndex(trigger: IndexTrigger): Promise<Result<string[], Error>> {
|
|
542
|
-
switch (trigger.type) {
|
|
543
|
-
case 'code-change':
|
|
544
|
-
// Use provided files or detect changes
|
|
545
|
-
if (trigger.files && trigger.files.length > 0) {
|
|
546
|
-
return ok(trigger.files.slice(0, this.config.maxIncrementalFiles));
|
|
547
|
-
}
|
|
548
|
-
return this.detectChanges();
|
|
549
|
-
|
|
550
|
-
case 'git-commit':
|
|
551
|
-
// Use files from commit
|
|
552
|
-
if (trigger.files && trigger.files.length > 0) {
|
|
553
|
-
return ok(trigger.files);
|
|
554
|
-
}
|
|
555
|
-
// Fall back to detecting git changes
|
|
556
|
-
return this.detectGitCommitFiles(trigger.commitHash);
|
|
557
|
-
|
|
558
|
-
case 'hourly':
|
|
559
|
-
// Refresh hot paths only
|
|
560
|
-
if (trigger.hotPathsOnly) {
|
|
561
|
-
return this.resolveHotPaths();
|
|
562
|
-
}
|
|
563
|
-
// Otherwise detect any accumulated changes
|
|
564
|
-
return this.detectChanges();
|
|
565
|
-
|
|
566
|
-
case 'manual':
|
|
567
|
-
// Full reindex - use provided paths or default
|
|
568
|
-
const paths = trigger.paths || ['src/**', 'lib/**'];
|
|
569
|
-
return this.resolveGlobPatterns(paths);
|
|
570
|
-
|
|
571
|
-
default:
|
|
572
|
-
return err(new Error(`Unknown trigger type: ${(trigger as IndexTrigger).type}`));
|
|
573
|
-
}
|
|
574
|
-
}
|
|
575
|
-
|
|
576
|
-
private shouldAnalyzeImpact(trigger: IndexTrigger): boolean {
|
|
577
|
-
// Only analyze impact for change-based triggers
|
|
578
|
-
return trigger.type === 'code-change' || trigger.type === 'git-commit';
|
|
579
|
-
}
|
|
580
|
-
|
|
581
|
-
private async detectGitChanges(since?: Date): Promise<Result<string[], Error>> {
|
|
582
|
-
try {
|
|
583
|
-
const changedFiles = await this.gitAnalyzer.getChangedFiles(since);
|
|
584
|
-
// Filter to only include configured languages
|
|
585
|
-
const filteredFiles = changedFiles.filter((f) => this.isRelevantFile(f));
|
|
586
|
-
return ok(filteredFiles);
|
|
587
|
-
} catch (error) {
|
|
588
|
-
return err(error instanceof Error ? error : new Error(String(error)));
|
|
589
|
-
}
|
|
590
|
-
}
|
|
591
|
-
|
|
592
|
-
private async detectGitCommitFiles(commitHash?: string): Promise<Result<string[], Error>> {
|
|
593
|
-
if (!commitHash) {
|
|
594
|
-
return ok([]);
|
|
595
|
-
}
|
|
596
|
-
try {
|
|
597
|
-
const commitFiles = await this.gitAnalyzer.getCommitFiles(commitHash);
|
|
598
|
-
// Filter to only include configured languages
|
|
599
|
-
const filteredFiles = commitFiles.filter((f) => this.isRelevantFile(f));
|
|
600
|
-
return ok(filteredFiles);
|
|
601
|
-
} catch (error) {
|
|
602
|
-
return err(error instanceof Error ? error : new Error(String(error)));
|
|
603
|
-
}
|
|
604
|
-
}
|
|
605
|
-
|
|
606
|
-
private async resolveHotPaths(): Promise<Result<string[], Error>> {
|
|
607
|
-
try {
|
|
608
|
-
const allFiles: string[] = [];
|
|
609
|
-
|
|
610
|
-
for (const pattern of this.config.hotPaths) {
|
|
611
|
-
const result = await listFiles(pattern);
|
|
612
|
-
if (result.success) {
|
|
613
|
-
allFiles.push(...result.value);
|
|
614
|
-
}
|
|
615
|
-
}
|
|
616
|
-
|
|
617
|
-
// Filter and deduplicate
|
|
618
|
-
const filteredFiles = allFiles.filter((f) => this.isRelevantFile(f));
|
|
619
|
-
return ok([...new Set(filteredFiles)]);
|
|
620
|
-
} catch (error) {
|
|
621
|
-
return err(error instanceof Error ? error : new Error(String(error)));
|
|
622
|
-
}
|
|
623
|
-
}
|
|
624
|
-
|
|
625
|
-
private async resolveGlobPatterns(patterns: string[]): Promise<Result<string[], Error>> {
|
|
626
|
-
try {
|
|
627
|
-
const allFiles: string[] = [];
|
|
628
|
-
|
|
629
|
-
for (const pattern of patterns) {
|
|
630
|
-
const result = await listFiles(pattern);
|
|
631
|
-
if (result.success) {
|
|
632
|
-
allFiles.push(...result.value);
|
|
633
|
-
}
|
|
634
|
-
}
|
|
635
|
-
|
|
636
|
-
// Filter and deduplicate
|
|
637
|
-
const filteredFiles = allFiles.filter((f) => this.isRelevantFile(f));
|
|
638
|
-
return ok([...new Set(filteredFiles)]);
|
|
639
|
-
} catch (error) {
|
|
640
|
-
return err(error instanceof Error ? error : new Error(String(error)));
|
|
641
|
-
}
|
|
642
|
-
}
|
|
643
|
-
|
|
644
|
-
private isRelevantFile(filePath: string): boolean {
|
|
645
|
-
// Filter by configured languages
|
|
646
|
-
const ext = filePath.split('.').pop()?.toLowerCase() || '';
|
|
647
|
-
const languageExtensions: Record<string, string[]> = {
|
|
648
|
-
typescript: ['ts', 'tsx'],
|
|
649
|
-
javascript: ['js', 'jsx', 'mjs', 'cjs'],
|
|
650
|
-
python: ['py', 'pyw'],
|
|
651
|
-
};
|
|
652
|
-
|
|
653
|
-
for (const lang of this.config.languages) {
|
|
654
|
-
const exts = languageExtensions[lang] || [];
|
|
655
|
-
if (exts.includes(ext)) {
|
|
656
|
-
// Optionally exclude test files if not configured
|
|
657
|
-
if (!this.config.includeTests && this.isTestFile(filePath)) {
|
|
658
|
-
return false;
|
|
659
|
-
}
|
|
660
|
-
return true;
|
|
661
|
-
}
|
|
662
|
-
}
|
|
663
|
-
return false;
|
|
664
|
-
}
|
|
665
|
-
|
|
666
|
-
private buildDomainNotification(
|
|
667
|
-
domain: DomainName,
|
|
668
|
-
impact: ImpactAnalysis,
|
|
669
|
-
changedFiles: string[]
|
|
670
|
-
): DomainNotification | null {
|
|
671
|
-
switch (domain) {
|
|
672
|
-
case 'test-generation':
|
|
673
|
-
// Notify about files needing new tests
|
|
674
|
-
const filesNeedingTests = changedFiles.filter(
|
|
675
|
-
(f) => !this.isTestFile(f) && !impact.impactedTests.some((t) => this.isTestForFile(t, f))
|
|
676
|
-
);
|
|
677
|
-
if (filesNeedingTests.length === 0) return null;
|
|
678
|
-
return {
|
|
679
|
-
type: 'files-need-tests',
|
|
680
|
-
files: filesNeedingTests,
|
|
681
|
-
priority: this.mapRiskToPriority(impact.riskLevel),
|
|
682
|
-
recommendations: ['Generate unit tests for new/changed files'],
|
|
683
|
-
};
|
|
684
|
-
|
|
685
|
-
case 'coverage-analysis':
|
|
686
|
-
// Notify about coverage gap changes
|
|
687
|
-
return {
|
|
688
|
-
type: 'coverage-affected',
|
|
689
|
-
files: changedFiles,
|
|
690
|
-
impactedFiles: [
|
|
691
|
-
...impact.directImpact.map((i) => i.file),
|
|
692
|
-
...impact.transitiveImpact.map((i) => i.file),
|
|
693
|
-
],
|
|
694
|
-
priority: this.mapRiskToPriority(impact.riskLevel),
|
|
695
|
-
recommendations: ['Re-analyze coverage for impacted files'],
|
|
696
|
-
};
|
|
697
|
-
|
|
698
|
-
case 'defect-intelligence':
|
|
699
|
-
// Notify for regression risk assessment
|
|
700
|
-
const highRiskFiles = [
|
|
701
|
-
...impact.directImpact.filter((i) => i.riskScore >= 0.7),
|
|
702
|
-
...impact.transitiveImpact.filter((i) => i.riskScore >= 0.7),
|
|
703
|
-
];
|
|
704
|
-
if (highRiskFiles.length === 0 && impact.riskLevel === 'info') return null;
|
|
705
|
-
return {
|
|
706
|
-
type: 'regression-risk',
|
|
707
|
-
files: changedFiles,
|
|
708
|
-
highRiskFiles: highRiskFiles.map((f) => f.file),
|
|
709
|
-
riskLevel: impact.riskLevel,
|
|
710
|
-
priority: this.mapRiskToPriority(impact.riskLevel),
|
|
711
|
-
recommendations: impact.recommendations,
|
|
712
|
-
};
|
|
713
|
-
|
|
714
|
-
default:
|
|
715
|
-
return null;
|
|
716
|
-
}
|
|
717
|
-
}
|
|
718
|
-
|
|
719
|
-
private async publishDomainNotification(
|
|
720
|
-
domain: DomainName,
|
|
721
|
-
notification: DomainNotification
|
|
722
|
-
): Promise<void> {
|
|
723
|
-
const event = createEvent(
|
|
724
|
-
`coordination.${domain}.IndexNotification`,
|
|
725
|
-
'code-intelligence',
|
|
726
|
-
notification
|
|
727
|
-
);
|
|
728
|
-
await this.kernel.eventBus.publish(event);
|
|
729
|
-
}
|
|
730
|
-
|
|
731
|
-
private async publishEvent<T>(eventType: string, payload: T): Promise<void> {
|
|
732
|
-
const event = createEvent(eventType, 'code-intelligence', payload);
|
|
733
|
-
await this.kernel.eventBus.publish(event);
|
|
734
|
-
}
|
|
735
|
-
|
|
736
|
-
private async publishCompletedEvent(
|
|
737
|
-
protocolId: string,
|
|
738
|
-
trigger: IndexTrigger,
|
|
739
|
-
success: boolean,
|
|
740
|
-
result?: IndexProtocolResult,
|
|
741
|
-
notifiedDomains: DomainName[] = [],
|
|
742
|
-
error?: string
|
|
743
|
-
): Promise<void> {
|
|
744
|
-
const payload: CodeIndexCompletedPayload = {
|
|
745
|
-
protocolId,
|
|
746
|
-
trigger,
|
|
747
|
-
success,
|
|
748
|
-
filesIndexed: result?.indexResult.filesIndexed ?? 0,
|
|
749
|
-
duration: result?.duration ?? 0,
|
|
750
|
-
notifiedDomains,
|
|
751
|
-
error,
|
|
752
|
-
};
|
|
753
|
-
|
|
754
|
-
await this.publishEvent(CodeIndexProtocolEvents.CodeIndexCompleted, payload);
|
|
755
|
-
}
|
|
756
|
-
|
|
757
|
-
private async storeProtocolResult(result: IndexProtocolResult): Promise<void> {
|
|
758
|
-
if (!this.config.trackIndexHistory) return;
|
|
759
|
-
|
|
760
|
-
const key = `${this.config.namespace}:result:${result.protocolId}`;
|
|
761
|
-
await this.kernel.memory.set(key, result, {
|
|
762
|
-
namespace: this.config.namespace,
|
|
763
|
-
ttl: 86400 * 7, // Keep for 7 days
|
|
764
|
-
});
|
|
765
|
-
|
|
766
|
-
// Update last index time for trigger type
|
|
767
|
-
await this.kernel.memory.set(
|
|
768
|
-
`${this.config.namespace}:last-index:${result.trigger.type}`,
|
|
769
|
-
{ timestamp: result.timestamp.toISOString() },
|
|
770
|
-
{ namespace: this.config.namespace, persist: true }
|
|
771
|
-
);
|
|
772
|
-
}
|
|
773
|
-
|
|
774
|
-
private async getLastIndexTime(): Promise<Date | undefined> {
|
|
775
|
-
const lastIndex = await this.kernel.memory.get<{ timestamp: string }>(
|
|
776
|
-
`${this.config.namespace}:last-index:code-change`
|
|
777
|
-
);
|
|
778
|
-
return lastIndex ? new Date(lastIndex.timestamp) : undefined;
|
|
779
|
-
}
|
|
780
|
-
|
|
781
|
-
private updateStats(success: boolean, duration: number, filesIndexed: number): void {
|
|
782
|
-
this.executionCount++;
|
|
783
|
-
this.totalDuration += duration;
|
|
784
|
-
this.totalFilesIndexed += filesIndexed;
|
|
785
|
-
this.lastExecution = new Date();
|
|
786
|
-
|
|
787
|
-
if (success) {
|
|
788
|
-
this.successCount++;
|
|
789
|
-
}
|
|
790
|
-
}
|
|
791
|
-
|
|
792
|
-
private isTestFile(path: string): boolean {
|
|
793
|
-
const testPatterns = [
|
|
794
|
-
/\.test\.[tj]sx?$/,
|
|
795
|
-
/\.spec\.[tj]sx?$/,
|
|
796
|
-
/_test\.[tj]sx?$/,
|
|
797
|
-
/test_.*\.py$/,
|
|
798
|
-
/.*_test\.py$/,
|
|
799
|
-
/.*_test\.go$/,
|
|
800
|
-
];
|
|
801
|
-
return testPatterns.some((p) => p.test(path));
|
|
802
|
-
}
|
|
803
|
-
|
|
804
|
-
private isTestForFile(testPath: string, sourcePath: string): boolean {
|
|
805
|
-
const sourceBaseName = this.getBaseName(sourcePath);
|
|
806
|
-
const testBaseName = this.getBaseName(testPath);
|
|
807
|
-
return testBaseName.includes(sourceBaseName);
|
|
808
|
-
}
|
|
809
|
-
|
|
810
|
-
private getBaseName(path: string): string {
|
|
811
|
-
const fileName = path.split(/[/\\]/).pop() || path;
|
|
812
|
-
return fileName.replace(/\.[^.]+$/, '').replace(/\.(test|spec)$/, '');
|
|
813
|
-
}
|
|
814
|
-
|
|
815
|
-
private mapRiskToPriority(risk: Severity): 'low' | 'medium' | 'high' | 'critical' {
|
|
816
|
-
switch (risk) {
|
|
817
|
-
case 'critical':
|
|
818
|
-
return 'critical';
|
|
819
|
-
case 'high':
|
|
820
|
-
return 'high';
|
|
821
|
-
case 'medium':
|
|
822
|
-
return 'medium';
|
|
823
|
-
default:
|
|
824
|
-
return 'low';
|
|
825
|
-
}
|
|
826
|
-
}
|
|
827
|
-
}
|
|
828
|
-
|
|
829
|
-
// ============================================================================
|
|
830
|
-
// Helper Types
|
|
831
|
-
// ============================================================================
|
|
832
|
-
|
|
833
|
-
interface DomainNotification {
|
|
834
|
-
type: string;
|
|
835
|
-
files: string[];
|
|
836
|
-
impactedFiles?: string[];
|
|
837
|
-
highRiskFiles?: string[];
|
|
838
|
-
riskLevel?: Severity;
|
|
839
|
-
priority: 'low' | 'medium' | 'high' | 'critical';
|
|
840
|
-
recommendations: string[];
|
|
841
|
-
}
|
|
842
|
-
|
|
843
|
-
// ============================================================================
|
|
844
|
-
// Factory Function
|
|
845
|
-
// ============================================================================
|
|
846
|
-
|
|
847
|
-
/**
|
|
848
|
-
* Create a Code Intelligence Index Protocol instance
|
|
849
|
-
*/
|
|
850
|
-
export function createCodeIntelligenceIndexProtocol(
|
|
851
|
-
kernel: QEKernel,
|
|
852
|
-
config?: Partial<IndexProtocolConfig>
|
|
853
|
-
): ICodeIntelligenceIndexProtocol {
|
|
854
|
-
return new CodeIntelligenceIndexProtocol(kernel, config);
|
|
855
|
-
}
|