agentic-qe 3.8.1 → 3.8.3
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/agents/v3/qe-security-scanner.md +2 -2
- package/.claude/commands/claude-flow-help.md +1 -1
- package/.claude/helpers/github-setup.sh +4 -4
- package/.claude/helpers/post-commit +1 -1
- package/.claude/helpers/pre-commit +1 -1
- package/.claude/helpers/quick-start.sh +4 -4
- package/.claude/helpers/setup-mcp.sh +3 -3
- package/.claude/helpers/statusline-v3.cjs +1 -1
- package/.claude/helpers/validation-pipeline.cjs +625 -0
- package/.claude/skills/README.md +29 -7
- package/.claude/skills/TRUST-TIERS.md +26 -10
- package/.claude/skills/a11y-ally/SKILL.md +10 -2
- package/.claude/skills/accessibility-testing/SKILL.md +2 -1
- package/.claude/skills/agentic-quality-engineering/SKILL.md +1 -2
- package/.claude/skills/api-testing-patterns/SKILL.md +8 -0
- package/.claude/skills/api-testing-patterns/config.json +14 -0
- package/.claude/skills/api-testing-patterns/templates/api-test-scaffold.md +87 -0
- package/.claude/skills/brutal-honesty-review/SKILL.md +0 -1
- package/.claude/skills/bug-reporting-excellence/SKILL.md +14 -1
- package/.claude/skills/cicd-pipeline-qe-orchestrator/SKILL.md +0 -1
- package/.claude/skills/code-review-quality/SKILL.md +14 -1
- package/.claude/skills/compatibility-testing/SKILL.md +1 -54
- package/.claude/skills/compliance-testing/SKILL.md +8 -1
- package/.claude/skills/compliance-testing/config.json +13 -0
- package/.claude/skills/consultancy-practices/SKILL.md +1 -33
- package/.claude/skills/context-driven-testing/SKILL.md +0 -42
- package/.claude/skills/contract-testing/SKILL.md +12 -0
- package/.claude/skills/contract-testing/config.json +13 -0
- package/.claude/skills/contract-testing/references/agent-commands.md +103 -0
- package/.claude/skills/contract-testing/references/provider-states.md +45 -0
- package/.claude/skills/coverage-drop-investigator/SKILL.md +90 -0
- package/.claude/skills/coverage-guard/SKILL.md +82 -0
- package/.claude/skills/coverage-guard/scripts/check-coverage.sh +42 -0
- package/.claude/skills/database-testing/SKILL.md +0 -10
- package/.claude/skills/debug-loop/SKILL.md +1 -1
- package/.claude/skills/e2e-flow-verifier/SKILL.md +78 -0
- package/.claude/skills/enterprise-integration-testing/SKILL.md +1 -1
- package/.claude/skills/exploratory-testing-advanced/SKILL.md +8 -1
- package/.claude/skills/exploratory-testing-advanced/references/heuristic-cheatsheet.md +48 -0
- package/.claude/skills/freeze-tests/SKILL.md +67 -0
- package/.claude/skills/freeze-tests/scripts/block-test-edits.sh +27 -0
- package/.claude/skills/holistic-testing-pact/SKILL.md +0 -1
- package/.claude/skills/iterative-loop/SKILL.md +6 -6
- package/.claude/skills/localization-testing/SKILL.md +0 -18
- package/.claude/skills/mobile-testing/SKILL.md +2 -50
- package/.claude/skills/mutation-testing/SKILL.md +26 -1
- package/.claude/skills/mutation-testing/config.json +14 -0
- package/.claude/skills/mutation-testing/references/mutation-operators.md +38 -0
- package/.claude/skills/mutation-testing/run-history.json +6 -0
- package/.claude/skills/n8n-expression-testing/SKILL.md +0 -1
- package/.claude/skills/n8n-integration-testing-patterns/SKILL.md +0 -1
- package/.claude/skills/n8n-security-testing/SKILL.md +0 -1
- package/.claude/skills/n8n-trigger-testing-strategies/SKILL.md +0 -1
- package/.claude/skills/n8n-workflow-testing-fundamentals/SKILL.md +0 -1
- package/.claude/skills/no-skip/SKILL.md +74 -0
- package/.claude/skills/no-skip/scripts/check-skips.sh +28 -0
- package/.claude/skills/pair-programming/SKILL.md +1 -1
- package/.claude/skills/pentest-validation/SKILL.md +2 -3
- package/.claude/skills/performance-testing/SKILL.md +21 -0
- package/.claude/skills/performance-testing/config.json +18 -0
- package/.claude/skills/performance-testing/references/k6-patterns.md +72 -0
- package/.claude/skills/performance-testing/run-history.json +6 -0
- package/.claude/skills/pr-review/SKILL.md +3 -3
- package/.claude/skills/qcsd-cicd-swarm/SKILL.md +1 -2
- package/.claude/skills/qcsd-development-swarm/SKILL.md +1 -2
- package/.claude/skills/qcsd-ideation-swarm/SKILL.md +1 -2
- package/.claude/skills/qcsd-production-swarm/SKILL.md +1 -2
- package/.claude/skills/qcsd-production-swarm/steps/01-flag-detection.md +1 -1
- package/.claude/skills/qcsd-production-swarm/steps/07-learning-persistence.md +2 -2
- package/.claude/skills/qcsd-refinement-swarm/SKILL.md +1 -2
- package/.claude/skills/qcsd-refinement-swarm/steps/01-flag-detection.md +1 -1
- package/.claude/skills/qe-chaos-resilience/SKILL.md +2 -3
- package/.claude/skills/qe-code-intelligence/SKILL.md +9 -2
- package/.claude/skills/qe-coverage-analysis/SKILL.md +28 -2
- package/.claude/skills/qe-coverage-analysis/run-history.json +6 -0
- package/.claude/skills/qe-defect-intelligence/SKILL.md +1 -2
- package/.claude/skills/qe-iterative-loop/SKILL.md +0 -1
- package/.claude/skills/qe-learning-optimization/SKILL.md +1 -2
- package/.claude/skills/qe-quality-assessment/SKILL.md +29 -3
- package/.claude/skills/qe-quality-assessment/run-history.json +6 -0
- package/.claude/skills/qe-requirements-validation/SKILL.md +1 -2
- package/.claude/skills/qe-test-execution/SKILL.md +9 -2
- package/.claude/skills/qe-test-generation/SKILL.md +15 -2
- package/.claude/skills/qe-test-generation/config.json +14 -0
- package/.claude/skills/qe-test-generation/templates/test-scaffold-jest.md +72 -0
- package/.claude/skills/qe-visual-accessibility/SKILL.md +1 -2
- package/.claude/skills/quality-metrics/SKILL.md +3 -78
- package/.claude/skills/refactoring-patterns/SKILL.md +0 -1
- package/.claude/skills/regression-testing/SKILL.md +13 -49
- package/.claude/skills/risk-based-testing/SKILL.md +6 -52
- package/.claude/skills/security-testing/SKILL.md +30 -0
- package/.claude/skills/security-testing/config.json +13 -0
- package/.claude/skills/security-testing/references/compliance-agent-commands.md +131 -0
- package/.claude/skills/security-testing/references/owasp-top-10.md +66 -0
- package/.claude/skills/security-testing/run-history.json +6 -0
- package/.claude/skills/security-testing/templates/security-report.md +44 -0
- package/.claude/skills/security-visual-testing/SKILL.md +0 -1
- package/.claude/skills/security-watch/SKILL.md +93 -0
- package/.claude/skills/security-watch/scripts/scan-security.sh +46 -0
- package/.claude/skills/sherlock-review/SKILL.md +0 -1
- package/.claude/skills/shift-left-testing/SKILL.md +16 -88
- package/.claude/skills/shift-right-testing/SKILL.md +0 -1
- package/.claude/skills/six-thinking-hats/SKILL.md +0 -1
- package/.claude/skills/skill-stats/SKILL.md +79 -0
- package/.claude/skills/skills-manifest.json +1 -1
- package/.claude/skills/strict-tdd/SKILL.md +72 -0
- package/.claude/skills/strict-tdd/scripts/enforce-red-phase.sh +36 -0
- package/.claude/skills/tdd-london-chicago/SKILL.md +8 -1
- package/.claude/skills/technical-writing/SKILL.md +0 -1
- package/.claude/skills/test-automation-strategy/SKILL.md +13 -65
- package/.claude/skills/test-data-management/SKILL.md +1 -105
- package/.claude/skills/test-design-techniques/SKILL.md +2 -152
- package/.claude/skills/test-environment-management/SKILL.md +0 -48
- package/.claude/skills/test-failure-investigator/SKILL.md +99 -0
- package/.claude/skills/test-metrics-dashboard/SKILL.md +97 -0
- package/.claude/skills/test-reporting-analytics/SKILL.md +0 -1
- package/.claude/skills/trust-tier-manifest.json +135 -61
- package/.claude/skills/validation-pipeline/SKILL.md +5 -6
- package/.claude/skills/verification-quality/SKILL.md +15 -1
- package/.claude/skills/visual-testing-advanced/SKILL.md +0 -1
- package/.claude/skills/xp-practices/SKILL.md +2 -110
- package/.opencode/agents/collective-intelligence-coordinator.yaml +52 -0
- package/.opencode/agents/ddd-domain-expert.yaml +49 -0
- package/.opencode/agents/memory-specialist.yaml +49 -0
- package/.opencode/agents/performance-engineer.yaml +53 -0
- package/.opencode/agents/qe-accessibility-auditor.yaml +118 -0
- package/.opencode/agents/qe-api-contract-validator.yaml +85 -0
- package/.opencode/agents/qe-bdd-generator.yaml +83 -0
- package/.opencode/agents/qe-chaos-engineer.yaml +114 -0
- package/.opencode/agents/qe-code-complexity.yaml +82 -0
- package/.opencode/agents/qe-code-intelligence.yaml +80 -0
- package/.opencode/agents/qe-coverage-analyzer.yaml +75 -0
- package/.opencode/agents/qe-defect-predictor.yaml +81 -0
- package/.opencode/agents/qe-dependency-mapper.yaml +81 -0
- package/.opencode/agents/qe-deployment-advisor.yaml +82 -0
- package/.opencode/agents/qe-devils-advocate.yaml +63 -0
- package/.opencode/agents/qe-flaky-hunter.yaml +116 -0
- package/.opencode/agents/qe-fleet-commander.yaml +83 -0
- package/.opencode/agents/qe-gap-detector.yaml +81 -0
- package/.opencode/agents/qe-graphql-tester.yaml +84 -0
- package/.opencode/agents/qe-impact-analyzer.yaml +81 -0
- package/.opencode/agents/qe-integration-architect.yaml +46 -0
- package/.opencode/agents/qe-integration-tester.yaml +84 -0
- package/.opencode/agents/qe-kg-builder.yaml +75 -0
- package/.opencode/agents/qe-learning-coordinator.yaml +82 -0
- package/.opencode/agents/qe-load-tester.yaml +84 -0
- package/.opencode/agents/qe-message-broker-tester.yaml +94 -0
- package/.opencode/agents/qe-metrics-optimizer.yaml +81 -0
- package/.opencode/agents/qe-middleware-validator.yaml +92 -0
- package/.opencode/agents/qe-mutation-tester.yaml +84 -0
- package/.opencode/agents/qe-odata-contract-tester.yaml +98 -0
- package/.opencode/agents/qe-parallel-executor.yaml +79 -0
- package/.opencode/agents/qe-pattern-learner.yaml +80 -0
- package/.opencode/agents/qe-pentest-validator.yaml +137 -0
- package/.opencode/agents/qe-performance-tester.yaml +83 -0
- package/.opencode/agents/qe-product-factors-assessor.yaml +116 -0
- package/.opencode/agents/qe-property-tester.yaml +82 -0
- package/.opencode/agents/qe-quality-criteria-recommender.yaml +111 -0
- package/.opencode/agents/qe-quality-gate.yaml +80 -0
- package/.opencode/agents/qe-queen-coordinator.yaml +59 -0
- package/.opencode/agents/qe-qx-partner.yaml +75 -0
- package/.opencode/agents/qe-regression-analyzer.yaml +90 -0
- package/.opencode/agents/qe-requirements-validator.yaml +111 -0
- package/.opencode/agents/qe-responsive-tester.yaml +85 -0
- package/.opencode/agents/qe-retry-handler.yaml +82 -0
- package/.opencode/agents/qe-risk-assessor.yaml +81 -0
- package/.opencode/agents/qe-root-cause-analyzer.yaml +82 -0
- package/.opencode/agents/qe-sap-idoc-tester.yaml +104 -0
- package/.opencode/agents/qe-sap-rfc-tester.yaml +94 -0
- package/.opencode/agents/qe-security-auditor.yaml +90 -0
- package/.opencode/agents/qe-security-scanner.yaml +80 -0
- package/.opencode/agents/qe-soap-tester.yaml +93 -0
- package/.opencode/agents/qe-sod-analyzer.yaml +96 -0
- package/.opencode/agents/qe-tdd-specialist.yaml +84 -0
- package/.opencode/agents/qe-test-generator.yaml +78 -0
- package/.opencode/agents/qe-test-idea-rewriter.yaml +88 -0
- package/.opencode/agents/qe-transfer-specialist.yaml +81 -0
- package/.opencode/agents/qe-visual-tester.yaml +82 -0
- package/.opencode/agents/security-architect.yaml +51 -0
- package/.opencode/agents/security-auditor.yaml +50 -0
- package/.opencode/permissions.yaml +74 -0
- package/.opencode/skills/qcsd-cicd-swarm.yaml +45 -0
- package/.opencode/skills/qcsd-development-swarm.yaml +45 -0
- package/.opencode/skills/qcsd-ideation-swarm.yaml +45 -0
- package/.opencode/skills/qcsd-production-swarm.yaml +45 -0
- package/.opencode/skills/qcsd-refinement-swarm.yaml +45 -0
- package/.opencode/skills/qe-a11y-ally.yaml +45 -0
- package/.opencode/skills/qe-accessibility-testing.yaml +45 -0
- package/.opencode/skills/qe-agentic-jujutsu.yaml +45 -0
- package/.opencode/skills/qe-agentic-quality-engineering.yaml +45 -0
- package/.opencode/skills/qe-api-testing-patterns.yaml +45 -0
- package/.opencode/skills/qe-aqe-v2-v3-migration.yaml +45 -0
- package/.opencode/skills/qe-brutal-honesty-review.yaml +45 -0
- package/.opencode/skills/qe-bug-reporting-excellence.yaml +45 -0
- package/.opencode/skills/qe-chaos-engineering-resilience.yaml +30 -0
- package/.opencode/skills/qe-chaos-resilience.yaml +45 -0
- package/.opencode/skills/qe-cicd-pipeline-qe-orchestrator.yaml +45 -0
- package/.opencode/skills/qe-code-intelligence.yaml +45 -0
- package/.opencode/skills/qe-code-review-quality.yaml +45 -0
- package/.opencode/skills/qe-compatibility-testing.yaml +35 -0
- package/.opencode/skills/qe-compliance-testing.yaml +35 -0
- package/.opencode/skills/qe-consultancy-practices.yaml +45 -0
- package/.opencode/skills/qe-context-driven-testing.yaml +45 -0
- package/.opencode/skills/qe-coverage-analysis.yaml +45 -0
- package/.opencode/skills/qe-database-testing.yaml +40 -0
- package/.opencode/skills/qe-debug-loop.yaml +45 -0
- package/.opencode/skills/qe-defect-intelligence.yaml +45 -0
- package/.opencode/skills/qe-enterprise-integration-testing.yaml +45 -0
- package/.opencode/skills/qe-exploratory-testing-advanced.yaml +45 -0
- package/.opencode/skills/qe-github-code-review.yaml +45 -0
- package/.opencode/skills/qe-github-multi-repo.yaml +45 -0
- package/.opencode/skills/qe-github-project-management.yaml +45 -0
- package/.opencode/skills/qe-github-release-management.yaml +45 -0
- package/.opencode/skills/qe-github-workflow-automation.yaml +45 -0
- package/.opencode/skills/qe-holistic-testing-pact.yaml +45 -0
- package/.opencode/skills/qe-iterative-loop.yaml +45 -0
- package/.opencode/skills/qe-learning-optimization.yaml +45 -0
- package/.opencode/skills/qe-localization-testing.yaml +40 -0
- package/.opencode/skills/qe-middleware-testing-patterns.yaml +45 -0
- package/.opencode/skills/qe-mobile-testing.yaml +35 -0
- package/.opencode/skills/qe-mutation-testing.yaml +35 -0
- package/.opencode/skills/qe-n8n-expression-testing.yaml +45 -0
- package/.opencode/skills/qe-n8n-integration-testing-patterns.yaml +45 -0
- package/.opencode/skills/qe-n8n-security-testing.yaml +45 -0
- package/.opencode/skills/qe-n8n-trigger-testing-strategies.yaml +45 -0
- package/.opencode/skills/qe-n8n-workflow-testing-fundamentals.yaml +45 -0
- package/.opencode/skills/qe-observability-testing-patterns.yaml +45 -0
- package/.opencode/skills/qe-pair-programming.yaml +45 -0
- package/.opencode/skills/qe-pentest-validation.yaml +45 -0
- package/.opencode/skills/qe-performance-analysis.yaml +45 -0
- package/.opencode/skills/qe-performance-testing.yaml +45 -0
- package/.opencode/skills/qe-pr-review.yaml +45 -0
- package/.opencode/skills/qe-quality-assessment.yaml +45 -0
- package/.opencode/skills/qe-quality-metrics.yaml +45 -0
- package/.opencode/skills/qe-refactoring-patterns.yaml +40 -0
- package/.opencode/skills/qe-regression-testing.yaml +40 -0
- package/.opencode/skills/qe-release.yaml +45 -0
- package/.opencode/skills/qe-requirements-validation.yaml +45 -0
- package/.opencode/skills/qe-risk-based-testing.yaml +45 -0
- package/.opencode/skills/qe-security-testing.yaml +45 -0
- package/.opencode/skills/qe-security-visual-testing.yaml +45 -0
- package/.opencode/skills/qe-sfdipot-product-factors.yaml +45 -0
- package/.opencode/skills/qe-sherlock-review.yaml +45 -0
- package/.opencode/skills/qe-shift-left-testing.yaml +45 -0
- package/.opencode/skills/qe-shift-right-testing.yaml +45 -0
- package/.opencode/skills/qe-six-thinking-hats.yaml +45 -0
- package/.opencode/skills/qe-skill-builder.yaml +45 -0
- package/.opencode/skills/qe-sparc-methodology.yaml +45 -0
- package/.opencode/skills/qe-stream-chain.yaml +45 -0
- package/.opencode/skills/qe-tdd-london-chicago.yaml +45 -0
- package/.opencode/skills/qe-technical-writing.yaml +45 -0
- package/.opencode/skills/qe-test-automation-strategy.yaml +35 -0
- package/.opencode/skills/qe-test-data-management.yaml +45 -0
- package/.opencode/skills/qe-test-design-techniques.yaml +40 -0
- package/.opencode/skills/qe-test-environment-management.yaml +40 -0
- package/.opencode/skills/qe-test-execution.yaml +45 -0
- package/.opencode/skills/qe-test-generation.yaml +45 -0
- package/.opencode/skills/qe-test-idea-rewriting.yaml +45 -0
- package/.opencode/skills/qe-test-reporting-analytics.yaml +45 -0
- package/.opencode/skills/qe-testability-scoring.yaml +45 -0
- package/.opencode/skills/qe-verification-quality.yaml +45 -0
- package/.opencode/skills/qe-visual-accessibility.yaml +45 -0
- package/.opencode/skills/qe-visual-testing-advanced.yaml +40 -0
- package/.opencode/skills/qe-wms-testing-patterns.yaml +45 -0
- package/.opencode/skills/qe-xp-practices.yaml +45 -0
- package/.opencode/tools/qe-defect-scan.ts +79 -0
- package/.opencode/tools/qe-fleet-status.ts +59 -0
- package/.opencode/tools/qe-full-audit.ts +81 -0
- package/.opencode/tools/qe-learning-report.ts +74 -0
- package/.opencode/tools/qe-test-and-verify.ts +97 -0
- package/CHANGELOG.md +50 -0
- package/README.md +5 -1
- package/assets/agents/v3/qe-security-scanner.md +2 -2
- package/assets/helpers/statusline-v3.cjs +1 -1
- package/assets/helpers/validation-pipeline.cjs +625 -0
- package/assets/skills/README.md +173 -0
- package/assets/skills/TRUST-TIERS.md +174 -0
- package/assets/skills/a11y-ally/SKILL.md +10 -2
- package/assets/skills/accessibility-testing/SKILL.md +2 -1
- package/assets/skills/agentic-quality-engineering/SKILL.md +1 -2
- package/assets/skills/api-testing-patterns/SKILL.md +8 -0
- package/assets/skills/api-testing-patterns/config.json +14 -0
- package/assets/skills/api-testing-patterns/templates/api-test-scaffold.md +87 -0
- package/assets/skills/brutal-honesty-review/SKILL.md +0 -1
- package/assets/skills/bug-reporting-excellence/SKILL.md +14 -1
- package/assets/skills/cicd-pipeline-qe-orchestrator/SKILL.md +0 -1
- package/assets/skills/code-review-quality/SKILL.md +14 -1
- package/assets/skills/compatibility-testing/SKILL.md +1 -54
- package/assets/skills/compliance-testing/SKILL.md +8 -1
- package/assets/skills/compliance-testing/config.json +13 -0
- package/assets/skills/consultancy-practices/SKILL.md +1 -33
- package/assets/skills/context-driven-testing/SKILL.md +0 -42
- package/assets/skills/contract-testing/SKILL.md +12 -0
- package/assets/skills/contract-testing/config.json +13 -0
- package/assets/skills/contract-testing/references/agent-commands.md +103 -0
- package/assets/skills/contract-testing/references/provider-states.md +45 -0
- package/assets/skills/coverage-drop-investigator/SKILL.md +90 -0
- package/assets/skills/coverage-guard/SKILL.md +82 -0
- package/assets/skills/coverage-guard/scripts/check-coverage.sh +42 -0
- package/assets/skills/database-testing/SKILL.md +0 -10
- package/assets/skills/debug-loop/SKILL.md +1 -1
- package/assets/skills/e2e-flow-verifier/SKILL.md +78 -0
- package/assets/skills/enterprise-integration-testing/SKILL.md +1 -1
- package/assets/skills/exploratory-testing-advanced/SKILL.md +8 -1
- package/assets/skills/exploratory-testing-advanced/references/heuristic-cheatsheet.md +48 -0
- package/assets/skills/freeze-tests/SKILL.md +67 -0
- package/assets/skills/freeze-tests/scripts/block-test-edits.sh +27 -0
- package/assets/skills/holistic-testing-pact/SKILL.md +0 -1
- package/assets/skills/localization-testing/SKILL.md +0 -18
- package/assets/skills/mobile-testing/SKILL.md +2 -50
- package/assets/skills/mutation-testing/SKILL.md +26 -1
- package/assets/skills/mutation-testing/config.json +14 -0
- package/assets/skills/mutation-testing/references/mutation-operators.md +38 -0
- package/assets/skills/mutation-testing/run-history.json +6 -0
- package/assets/skills/n8n-expression-testing/SKILL.md +0 -1
- package/assets/skills/n8n-integration-testing-patterns/SKILL.md +0 -1
- package/assets/skills/n8n-security-testing/SKILL.md +0 -1
- package/assets/skills/n8n-trigger-testing-strategies/SKILL.md +0 -1
- package/assets/skills/n8n-workflow-testing-fundamentals/SKILL.md +0 -1
- package/assets/skills/no-skip/SKILL.md +74 -0
- package/assets/skills/no-skip/scripts/check-skips.sh +28 -0
- package/assets/skills/pair-programming/SKILL.md +1 -1
- package/assets/skills/pentest-validation/SKILL.md +2 -3
- package/assets/skills/performance-testing/SKILL.md +21 -0
- package/assets/skills/performance-testing/config.json +18 -0
- package/assets/skills/performance-testing/references/k6-patterns.md +72 -0
- package/assets/skills/performance-testing/run-history.json +6 -0
- package/assets/skills/pr-review/SKILL.md +3 -3
- package/assets/skills/qcsd-cicd-swarm/SKILL.md +1 -2
- package/assets/skills/qcsd-development-swarm/SKILL.md +1 -2
- package/assets/skills/qcsd-ideation-swarm/SKILL.md +1 -2
- package/assets/skills/qcsd-production-swarm/SKILL.md +1 -2
- package/assets/skills/qcsd-production-swarm/steps/01-flag-detection.md +1 -1
- package/assets/skills/qcsd-production-swarm/steps/07-learning-persistence.md +2 -2
- package/assets/skills/qcsd-refinement-swarm/SKILL.md +1 -2
- package/assets/skills/qcsd-refinement-swarm/steps/01-flag-detection.md +1 -1
- package/assets/skills/qe-chaos-resilience/SKILL.md +2 -3
- package/assets/skills/qe-code-intelligence/SKILL.md +9 -2
- package/assets/skills/qe-coverage-analysis/SKILL.md +28 -2
- package/assets/skills/qe-coverage-analysis/run-history.json +6 -0
- package/assets/skills/qe-defect-intelligence/SKILL.md +1 -2
- package/assets/skills/qe-iterative-loop/SKILL.md +0 -1
- package/assets/skills/qe-learning-optimization/SKILL.md +1 -2
- package/assets/skills/qe-quality-assessment/SKILL.md +29 -3
- package/assets/skills/qe-quality-assessment/run-history.json +6 -0
- package/assets/skills/qe-requirements-validation/SKILL.md +1 -2
- package/assets/skills/qe-test-execution/SKILL.md +9 -2
- package/assets/skills/qe-test-generation/SKILL.md +15 -2
- package/assets/skills/qe-test-generation/config.json +14 -0
- package/assets/skills/qe-test-generation/templates/test-scaffold-jest.md +72 -0
- package/assets/skills/qe-visual-accessibility/SKILL.md +1 -2
- package/assets/skills/quality-metrics/SKILL.md +3 -78
- package/assets/skills/refactoring-patterns/SKILL.md +0 -1
- package/assets/skills/regression-testing/SKILL.md +13 -49
- package/assets/skills/risk-based-testing/SKILL.md +6 -52
- package/assets/skills/security-testing/SKILL.md +30 -0
- package/assets/skills/security-testing/config.json +13 -0
- package/assets/skills/security-testing/references/compliance-agent-commands.md +131 -0
- package/assets/skills/security-testing/references/owasp-top-10.md +66 -0
- package/assets/skills/security-testing/run-history.json +6 -0
- package/assets/skills/security-testing/templates/security-report.md +44 -0
- package/assets/skills/security-visual-testing/SKILL.md +0 -1
- package/assets/skills/security-watch/SKILL.md +93 -0
- package/assets/skills/security-watch/scripts/scan-security.sh +46 -0
- package/assets/skills/sherlock-review/SKILL.md +0 -1
- package/assets/skills/shift-left-testing/SKILL.md +16 -88
- package/assets/skills/shift-right-testing/SKILL.md +0 -1
- package/assets/skills/six-thinking-hats/SKILL.md +0 -1
- package/assets/skills/skill-stats/SKILL.md +79 -0
- package/assets/skills/strict-tdd/SKILL.md +72 -0
- package/assets/skills/strict-tdd/scripts/enforce-red-phase.sh +36 -0
- package/assets/skills/tdd-london-chicago/SKILL.md +8 -1
- package/assets/skills/technical-writing/SKILL.md +0 -1
- package/assets/skills/test-automation-strategy/SKILL.md +13 -65
- package/assets/skills/test-data-management/SKILL.md +1 -105
- package/assets/skills/test-design-techniques/SKILL.md +2 -152
- package/assets/skills/test-environment-management/SKILL.md +0 -48
- package/assets/skills/test-failure-investigator/SKILL.md +99 -0
- package/assets/skills/test-metrics-dashboard/SKILL.md +97 -0
- package/assets/skills/test-reporting-analytics/SKILL.md +0 -1
- package/assets/skills/trust-tier-manifest.json +135 -61
- package/assets/skills/validation-pipeline/SKILL.md +5 -6
- package/assets/skills/verification-quality/SKILL.md +15 -1
- package/assets/skills/visual-testing-advanced/SKILL.md +0 -1
- package/assets/skills/xp-practices/SKILL.md +2 -110
- package/dist/adapters/claude-flow/detect.d.ts +5 -0
- package/dist/adapters/claude-flow/detect.js +38 -18
- package/dist/adapters/claude-flow/model-router-bridge.js +4 -3
- package/dist/adapters/claude-flow/pretrain-bridge.js +5 -4
- package/dist/adapters/claude-flow/trajectory-bridge.js +5 -4
- package/dist/cli/bundle.js +262 -79
- package/dist/cli/commands/claude-flow-setup.js +4 -4
- package/dist/domains/learning-optimization/coordinator.d.ts +6 -1
- package/dist/domains/learning-optimization/coordinator.js +26 -4
- package/dist/domains/learning-optimization/plugin.d.ts +2 -0
- package/dist/domains/learning-optimization/plugin.js +2 -0
- package/dist/governance/adversarial-defense-integration.js +1 -0
- package/dist/governance/continue-gate-integration.d.ts +1 -0
- package/dist/governance/continue-gate-integration.js +1 -0
- package/dist/governance/deterministic-gateway-integration.d.ts +1 -0
- package/dist/governance/deterministic-gateway-integration.js +1 -0
- package/dist/governance/evolution-pipeline-integration.d.ts +1 -0
- package/dist/governance/evolution-pipeline-integration.js +1 -0
- package/dist/governance/memory-write-gate-integration.d.ts +1 -0
- package/dist/governance/memory-write-gate-integration.js +1 -0
- package/dist/governance/proof-envelope-integration.d.ts +1 -0
- package/dist/governance/proof-envelope-integration.js +1 -0
- package/dist/governance/shard-retriever-integration.d.ts +1 -0
- package/dist/governance/shard-retriever-integration.js +1 -0
- package/dist/governance/trust-accumulator-integration.d.ts +1 -0
- package/dist/governance/trust-accumulator-integration.js +1 -0
- package/dist/init/agents-installer.js +28 -1
- package/dist/init/enhancements/claude-flow-adapter.js +15 -2
- package/dist/init/init-wizard-hooks.js +3 -3
- package/dist/init/kiro-installer.js +10 -4
- package/dist/init/opencode-installer.d.ts +13 -1
- package/dist/init/opencode-installer.js +52 -14
- package/dist/init/phases/07-hooks.js +21 -7
- package/dist/init/settings-merge.d.ts +1 -1
- package/dist/init/settings-merge.js +12 -13
- package/dist/init/skills-installer.d.ts +10 -0
- package/dist/init/skills-installer.js +68 -6
- package/dist/integrations/ruvector/sona-persistence.d.ts +6 -0
- package/dist/integrations/ruvector/sona-persistence.js +26 -1
- package/dist/mcp/bundle.js +98 -37
- package/dist/mcp/entry.js +6 -6
- package/dist/migration/agent-compat.js +2 -2
- package/package.json +9 -4
- package/.claude/skills/aqe-v2-v3-migration/schemas/output.json +0 -513
- package/.claude/skills/aqe-v2-v3-migration/skill.md +0 -326
- package/.claude/skills/qe-contract-testing/SKILL.md +0 -224
- package/.claude/skills/qe-contract-testing/evals/qe-contract-testing.yaml +0 -513
- package/.claude/skills/qe-contract-testing/schemas/output.json +0 -295
- package/.claude/skills/qe-contract-testing/scripts/validate-config.json +0 -42
- package/.claude/skills/qe-security-compliance/SKILL.md +0 -261
- package/.claude/skills/qe-security-compliance/evals/qe-security-compliance.yaml +0 -595
- package/.claude/skills/qe-security-compliance/schemas/output.json +0 -498
- package/.claude/skills/qe-security-compliance/scripts/validate-config.json +0 -41
- package/assets/skills/aqe-v2-v3-migration/schemas/output.json +0 -513
- package/assets/skills/aqe-v2-v3-migration/skill.md +0 -326
- package/assets/skills/qe-contract-testing/SKILL.md +0 -224
- package/assets/skills/qe-contract-testing/evals/qe-contract-testing.yaml +0 -513
- package/assets/skills/qe-contract-testing/schemas/output.json +0 -295
- package/assets/skills/qe-contract-testing/scripts/validate-config.json +0 -42
- package/assets/skills/qe-security-compliance/SKILL.md +0 -261
- package/assets/skills/qe-security-compliance/evals/qe-security-compliance.yaml +0 -595
- package/assets/skills/qe-security-compliance/schemas/output.json +0 -498
- package/assets/skills/qe-security-compliance/scripts/validate-config.json +0 -41
package/dist/cli/bundle.js
CHANGED
|
@@ -22719,6 +22719,7 @@ import {
|
|
|
22719
22719
|
existsSync as existsSync30,
|
|
22720
22720
|
mkdirSync as mkdirSync13,
|
|
22721
22721
|
readdirSync as readdirSync13,
|
|
22722
|
+
readFileSync as readFileSync22,
|
|
22722
22723
|
writeFileSync as writeFileSync11,
|
|
22723
22724
|
copyFileSync as copyFileSync7
|
|
22724
22725
|
} from "fs";
|
|
@@ -22753,23 +22754,56 @@ var init_opencode_installer = __esm({
|
|
|
22753
22754
|
// Source Directory Detection
|
|
22754
22755
|
// ==========================================================================
|
|
22755
22756
|
/**
|
|
22756
|
-
* Find the source .opencode/ directory
|
|
22757
|
+
* Find the source .opencode/ directory containing agents/skills/tools to install.
|
|
22758
|
+
* Resolves relative to the package installation directory (not CWD) so that
|
|
22759
|
+
* globally-installed and bundled CLI paths all work correctly (#361).
|
|
22757
22760
|
*/
|
|
22758
22761
|
findSourceDir() {
|
|
22762
|
+
const targetDir = join34(this.projectRoot, ".opencode");
|
|
22759
22763
|
const possiblePaths = [
|
|
22760
|
-
//
|
|
22764
|
+
// From dist/init/ or src/init/ → package root .opencode/
|
|
22761
22765
|
join34(__dirname3, "../../.opencode"),
|
|
22762
|
-
// From
|
|
22763
|
-
join34(
|
|
22764
|
-
//
|
|
22765
|
-
|
|
22766
|
-
];
|
|
22766
|
+
// From dist/cli/ (bundle) → package root .opencode/
|
|
22767
|
+
join34(__dirname3, "../.opencode"),
|
|
22768
|
+
// require.resolve fallback: find the package root via its package.json
|
|
22769
|
+
this.resolveViaPackageJson()
|
|
22770
|
+
].filter((p74) => p74 !== null);
|
|
22767
22771
|
for (const path38 of possiblePaths) {
|
|
22768
|
-
if (
|
|
22772
|
+
if (path38 === targetDir) continue;
|
|
22773
|
+
if (this.isValidSourceDir(path38)) {
|
|
22769
22774
|
return path38;
|
|
22770
22775
|
}
|
|
22771
22776
|
}
|
|
22772
|
-
return join34(
|
|
22777
|
+
return possiblePaths[0] ?? join34(__dirname3, "../../.opencode");
|
|
22778
|
+
}
|
|
22779
|
+
/**
|
|
22780
|
+
* Try to find the package root via require.resolve on our own package.json,
|
|
22781
|
+
* then return <root>/.opencode. Returns null if resolution fails.
|
|
22782
|
+
*/
|
|
22783
|
+
resolveViaPackageJson() {
|
|
22784
|
+
try {
|
|
22785
|
+
let dir = __dirname3;
|
|
22786
|
+
for (let i58 = 0; i58 < 5; i58++) {
|
|
22787
|
+
const pkgPath = join34(dir, "package.json");
|
|
22788
|
+
if (existsSync30(pkgPath)) {
|
|
22789
|
+
const pkg = JSON.parse(readFileSync22(pkgPath, "utf-8"));
|
|
22790
|
+
if (pkg.name === "agentic-qe") {
|
|
22791
|
+
return join34(dir, ".opencode");
|
|
22792
|
+
}
|
|
22793
|
+
}
|
|
22794
|
+
dir = dirname9(dir);
|
|
22795
|
+
}
|
|
22796
|
+
} catch {
|
|
22797
|
+
}
|
|
22798
|
+
return null;
|
|
22799
|
+
}
|
|
22800
|
+
/**
|
|
22801
|
+
* Check if a directory is a valid source for OpenCode assets
|
|
22802
|
+
* (must exist and contain at least an agents/ or skills/ subdirectory)
|
|
22803
|
+
*/
|
|
22804
|
+
isValidSourceDir(dir) {
|
|
22805
|
+
if (!existsSync30(dir)) return false;
|
|
22806
|
+
return existsSync30(join34(dir, "agents")) || existsSync30(join34(dir, "skills"));
|
|
22773
22807
|
}
|
|
22774
22808
|
// ==========================================================================
|
|
22775
22809
|
// Installation
|
|
@@ -22948,9 +22982,8 @@ var init_opencode_installer = __esm({
|
|
|
22948
22982
|
mcp: {
|
|
22949
22983
|
"agentic-qe": {
|
|
22950
22984
|
type: "local",
|
|
22951
|
-
command: "npx",
|
|
22952
|
-
|
|
22953
|
-
env: {
|
|
22985
|
+
command: ["npx", "agentic-qe", "mcp"],
|
|
22986
|
+
environment: {
|
|
22954
22987
|
AQE_MEMORY_PATH: ".agentic-qe/memory.db",
|
|
22955
22988
|
AQE_V3_MODE: "true"
|
|
22956
22989
|
}
|
|
@@ -23009,16 +23042,21 @@ var init_kiro_installer = __esm({
|
|
|
23009
23042
|
// ==========================================================================
|
|
23010
23043
|
findOpenCodeDir() {
|
|
23011
23044
|
const possiblePaths = [
|
|
23045
|
+
// Development: src/init/ or dist/init/ -> project root
|
|
23012
23046
|
join35(__dirname4, "../../.opencode"),
|
|
23013
|
-
|
|
23014
|
-
join35(
|
|
23047
|
+
// NPM package location
|
|
23048
|
+
join35(__dirname4, "../../assets/opencode")
|
|
23015
23049
|
];
|
|
23016
23050
|
for (const p74 of possiblePaths) {
|
|
23017
|
-
if (existsSync31(p74)) {
|
|
23051
|
+
if (existsSync31(p74) && (existsSync31(join35(p74, "agents")) || existsSync31(join35(p74, "skills")))) {
|
|
23018
23052
|
return p74;
|
|
23019
23053
|
}
|
|
23020
23054
|
}
|
|
23021
|
-
|
|
23055
|
+
const cwdPath = join35(process.cwd(), ".opencode");
|
|
23056
|
+
if (existsSync31(cwdPath) && (existsSync31(join35(cwdPath, "agents")) || existsSync31(join35(cwdPath, "skills")))) {
|
|
23057
|
+
return cwdPath;
|
|
23058
|
+
}
|
|
23059
|
+
return possiblePaths[0];
|
|
23022
23060
|
}
|
|
23023
23061
|
// ==========================================================================
|
|
23024
23062
|
// Installation
|
|
@@ -62557,7 +62595,7 @@ var PersistentSONAEngine = class {
|
|
|
62557
62595
|
},
|
|
62558
62596
|
this.config.domain
|
|
62559
62597
|
);
|
|
62560
|
-
const saved = this.
|
|
62598
|
+
const saved = this._loadFisherMatrixUnsafe(this.config.domain);
|
|
62561
62599
|
if (saved) {
|
|
62562
62600
|
const engine = this.baseEngine.getThreeLoopEngine();
|
|
62563
62601
|
if (engine) {
|
|
@@ -63195,6 +63233,27 @@ var PersistentSONAEngine = class {
|
|
|
63195
63233
|
ewcLambda: row.ewc_lambda
|
|
63196
63234
|
};
|
|
63197
63235
|
}
|
|
63236
|
+
/**
|
|
63237
|
+
* Internal variant of loadFisherMatrix that skips ensureInitialized().
|
|
63238
|
+
* Used only during _doInitialize() when DB and statements are ready
|
|
63239
|
+
* but this.initialized has not been set yet.
|
|
63240
|
+
*/
|
|
63241
|
+
_loadFisherMatrixUnsafe(domain) {
|
|
63242
|
+
const stmt = this.prepared.get("getFisher");
|
|
63243
|
+
if (!stmt) return null;
|
|
63244
|
+
const row = stmt.get(domain);
|
|
63245
|
+
if (!row) return null;
|
|
63246
|
+
return {
|
|
63247
|
+
fisherDiagonal: this.bufferToFloat32(row.fisher_diagonal),
|
|
63248
|
+
optimalParams: this.bufferToFloat32(row.optimal_params),
|
|
63249
|
+
baseWeights: row.base_weights ? this.bufferToFloat32(row.base_weights) : null,
|
|
63250
|
+
dimension: row.dimension,
|
|
63251
|
+
taskBoundaries: row.task_boundaries,
|
|
63252
|
+
consolidationCycles: row.consolidation_cycles,
|
|
63253
|
+
requestCount: row.request_count,
|
|
63254
|
+
ewcLambda: row.ewc_lambda
|
|
63255
|
+
};
|
|
63256
|
+
}
|
|
63198
63257
|
/**
|
|
63199
63258
|
* Delete Fisher matrix for a domain.
|
|
63200
63259
|
*
|
|
@@ -122207,8 +122266,9 @@ var LearningOptimizationCoordinator = class extends BaseDomainCoordinator {
|
|
|
122207
122266
|
* QESONA (Self-Optimizing Neural Architecture) for pattern learning
|
|
122208
122267
|
* Provides <0.05ms pattern adaptation via @ruvector/sona
|
|
122209
122268
|
* Now uses PersistentSONAEngine to survive restarts
|
|
122269
|
+
* Nullable: init may fail (e.g. during `aqe init`) — coordinator degrades gracefully
|
|
122210
122270
|
*/
|
|
122211
|
-
sona;
|
|
122271
|
+
sona = null;
|
|
122212
122272
|
/**
|
|
122213
122273
|
* DreamScheduler for offline pattern consolidation and insight generation
|
|
122214
122274
|
* Wraps DreamEngine with automatic scheduling and trigger support
|
|
@@ -122220,7 +122280,7 @@ var LearningOptimizationCoordinator = class extends BaseDomainCoordinator {
|
|
|
122220
122280
|
/**
|
|
122221
122281
|
* Initialize the coordinator.
|
|
122222
122282
|
* CQ-002: Domain-specific initialization
|
|
122223
|
-
*
|
|
122283
|
+
* SONA init failure is non-fatal — coordinator degrades gracefully (#359).
|
|
122224
122284
|
*/
|
|
122225
122285
|
async onInitialize() {
|
|
122226
122286
|
try {
|
|
@@ -122234,7 +122294,8 @@ var LearningOptimizationCoordinator = class extends BaseDomainCoordinator {
|
|
|
122234
122294
|
console.log("[LearningOptimizationCoordinator] PersistentSONAEngine initialized for pattern learning");
|
|
122235
122295
|
} catch (error) {
|
|
122236
122296
|
console.error("[LearningOptimizationCoordinator] Failed to initialize PersistentSONAEngine:", error);
|
|
122237
|
-
|
|
122297
|
+
console.warn("[LearningOptimizationCoordinator] Continuing without SONA pattern persistence");
|
|
122298
|
+
this.sona = null;
|
|
122238
122299
|
}
|
|
122239
122300
|
if (this.config.enableDreamScheduler) {
|
|
122240
122301
|
try {
|
|
@@ -122604,6 +122665,7 @@ var LearningOptimizationCoordinator = class extends BaseDomainCoordinator {
|
|
|
122604
122665
|
*/
|
|
122605
122666
|
learnPattern(state3, action, outcome, patternType, domain, metadata) {
|
|
122606
122667
|
this.ensureInitialized();
|
|
122668
|
+
this.ensureSONAAvailable();
|
|
122607
122669
|
return this.sona.createPattern(state3, action, outcome, patternType, domain, metadata);
|
|
122608
122670
|
}
|
|
122609
122671
|
/**
|
|
@@ -122616,6 +122678,16 @@ var LearningOptimizationCoordinator = class extends BaseDomainCoordinator {
|
|
|
122616
122678
|
);
|
|
122617
122679
|
}
|
|
122618
122680
|
}
|
|
122681
|
+
/**
|
|
122682
|
+
* Ensure SONA engine is available (may be null if init failed gracefully).
|
|
122683
|
+
*/
|
|
122684
|
+
ensureSONAAvailable() {
|
|
122685
|
+
if (!this.sona) {
|
|
122686
|
+
throw new Error(
|
|
122687
|
+
"[LearningOptimizationCoordinator] SONA engine is not available. Pattern persistence failed during initialization."
|
|
122688
|
+
);
|
|
122689
|
+
}
|
|
122690
|
+
}
|
|
122619
122691
|
/**
|
|
122620
122692
|
* Adapt a pattern based on current context using QESONA.
|
|
122621
122693
|
* Leverages @ruvector/sona's HNSW-indexed pattern matching for <0.05ms adaptation.
|
|
@@ -122628,6 +122700,7 @@ var LearningOptimizationCoordinator = class extends BaseDomainCoordinator {
|
|
|
122628
122700
|
*/
|
|
122629
122701
|
async adaptPattern(state3, patternType, domain) {
|
|
122630
122702
|
this.ensureInitialized();
|
|
122703
|
+
this.ensureSONAAvailable();
|
|
122631
122704
|
return this.sona.adaptPattern(state3, patternType, domain);
|
|
122632
122705
|
}
|
|
122633
122706
|
/**
|
|
@@ -122638,6 +122711,7 @@ var LearningOptimizationCoordinator = class extends BaseDomainCoordinator {
|
|
|
122638
122711
|
*/
|
|
122639
122712
|
getSONAStats() {
|
|
122640
122713
|
this.ensureInitialized();
|
|
122714
|
+
this.ensureSONAAvailable();
|
|
122641
122715
|
return this.sona.getStats();
|
|
122642
122716
|
}
|
|
122643
122717
|
/**
|
|
@@ -122648,6 +122722,7 @@ var LearningOptimizationCoordinator = class extends BaseDomainCoordinator {
|
|
|
122648
122722
|
*/
|
|
122649
122723
|
getSONAPatterns() {
|
|
122650
122724
|
this.ensureInitialized();
|
|
122725
|
+
this.ensureSONAAvailable();
|
|
122651
122726
|
return this.sona.getAllPatterns();
|
|
122652
122727
|
}
|
|
122653
122728
|
/**
|
|
@@ -122659,6 +122734,7 @@ var LearningOptimizationCoordinator = class extends BaseDomainCoordinator {
|
|
|
122659
122734
|
*/
|
|
122660
122735
|
getSONAPatternsByType(type) {
|
|
122661
122736
|
this.ensureInitialized();
|
|
122737
|
+
this.ensureSONAAvailable();
|
|
122662
122738
|
return this.sona.getPatternsByType(type);
|
|
122663
122739
|
}
|
|
122664
122740
|
/**
|
|
@@ -122670,6 +122746,7 @@ var LearningOptimizationCoordinator = class extends BaseDomainCoordinator {
|
|
|
122670
122746
|
*/
|
|
122671
122747
|
getSONAPatternsByDomain(domain) {
|
|
122672
122748
|
this.ensureInitialized();
|
|
122749
|
+
this.ensureSONAAvailable();
|
|
122673
122750
|
return this.sona.getPatternsByDomain(domain);
|
|
122674
122751
|
}
|
|
122675
122752
|
/**
|
|
@@ -122684,6 +122761,7 @@ var LearningOptimizationCoordinator = class extends BaseDomainCoordinator {
|
|
|
122684
122761
|
*/
|
|
122685
122762
|
updateSONAPattern(patternId, success, quality) {
|
|
122686
122763
|
this.ensureInitialized();
|
|
122764
|
+
this.ensureSONAAvailable();
|
|
122687
122765
|
return this.sona.updatePattern(patternId, success, quality);
|
|
122688
122766
|
}
|
|
122689
122767
|
/**
|
|
@@ -122695,6 +122773,7 @@ var LearningOptimizationCoordinator = class extends BaseDomainCoordinator {
|
|
|
122695
122773
|
*/
|
|
122696
122774
|
forceSONALearning() {
|
|
122697
122775
|
this.ensureInitialized();
|
|
122776
|
+
this.ensureSONAAvailable();
|
|
122698
122777
|
return this.sona.forceLearn();
|
|
122699
122778
|
}
|
|
122700
122779
|
/**
|
|
@@ -122703,7 +122782,7 @@ var LearningOptimizationCoordinator = class extends BaseDomainCoordinator {
|
|
|
122703
122782
|
* @returns True if SONA is available
|
|
122704
122783
|
*/
|
|
122705
122784
|
isSONAAvailable() {
|
|
122706
|
-
return this.initialized;
|
|
122785
|
+
return this.initialized && this.sona !== null;
|
|
122707
122786
|
}
|
|
122708
122787
|
/**
|
|
122709
122788
|
* Export all QESONA patterns for persistence or transfer.
|
|
@@ -122713,6 +122792,7 @@ var LearningOptimizationCoordinator = class extends BaseDomainCoordinator {
|
|
|
122713
122792
|
*/
|
|
122714
122793
|
exportSONAPatterns() {
|
|
122715
122794
|
this.ensureInitialized();
|
|
122795
|
+
this.ensureSONAAvailable();
|
|
122716
122796
|
return this.sona.exportPatterns();
|
|
122717
122797
|
}
|
|
122718
122798
|
/**
|
|
@@ -122724,6 +122804,7 @@ var LearningOptimizationCoordinator = class extends BaseDomainCoordinator {
|
|
|
122724
122804
|
*/
|
|
122725
122805
|
importSONAPatterns(patterns) {
|
|
122726
122806
|
this.ensureInitialized();
|
|
122807
|
+
this.ensureSONAAvailable();
|
|
122727
122808
|
this.sona.importPatterns(patterns);
|
|
122728
122809
|
}
|
|
122729
122810
|
/**
|
|
@@ -122735,6 +122816,7 @@ var LearningOptimizationCoordinator = class extends BaseDomainCoordinator {
|
|
|
122735
122816
|
*/
|
|
122736
122817
|
async verifySONAPerformance(iterations = 100) {
|
|
122737
122818
|
this.ensureInitialized();
|
|
122819
|
+
this.ensureSONAAvailable();
|
|
122738
122820
|
return this.sona.verifyPerformance(iterations);
|
|
122739
122821
|
}
|
|
122740
122822
|
// ============================================================================
|
|
@@ -123443,6 +123525,8 @@ var LearningOptimizationPlugin = class extends BaseDomainPlugin {
|
|
|
123443
123525
|
*/
|
|
123444
123526
|
getAPI() {
|
|
123445
123527
|
const api = {
|
|
123528
|
+
// Availability check
|
|
123529
|
+
isSONAAvailable: () => this.coordinator?.isSONAAvailable() ?? false,
|
|
123446
123530
|
// Coordinator methods
|
|
123447
123531
|
runLearningCycle: this.runLearningCycle.bind(this),
|
|
123448
123532
|
optimizeAllStrategies: this.optimizeAllStrategies.bind(this),
|
|
@@ -139344,7 +139428,7 @@ var ALL_DOMAINS2 = [
|
|
|
139344
139428
|
"enterprise-integration"
|
|
139345
139429
|
];
|
|
139346
139430
|
function getAQEVersion() {
|
|
139347
|
-
return true ? "3.8.
|
|
139431
|
+
return true ? "3.8.3" : "3.0.0";
|
|
139348
139432
|
}
|
|
139349
139433
|
function createDefaultConfig(projectName, projectRoot) {
|
|
139350
139434
|
return {
|
|
@@ -140303,7 +140387,7 @@ function generateAqeEnvVars(config) {
|
|
|
140303
140387
|
AQE_V3_SUCCESS_RATE_THRESHOLD: String(config.learning?.qualityThreshold ?? 0.7)
|
|
140304
140388
|
};
|
|
140305
140389
|
}
|
|
140306
|
-
function generateV3SettingsSections(config) {
|
|
140390
|
+
function generateV3SettingsSections(config, projectRoot) {
|
|
140307
140391
|
const domains = config.domains?.enabled || [];
|
|
140308
140392
|
return {
|
|
140309
140393
|
aqe: {
|
|
@@ -140313,21 +140397,20 @@ function generateV3SettingsSections(config) {
|
|
|
140313
140397
|
},
|
|
140314
140398
|
statusLine: {
|
|
140315
140399
|
type: "command",
|
|
140316
|
-
command: 'node
|
|
140400
|
+
command: 'node .claude/helpers/statusline-v3.cjs 2>/dev/null || echo "\u258A Agentic QE v3"',
|
|
140317
140401
|
refreshMs: 5e3,
|
|
140318
140402
|
enabled: true
|
|
140319
140403
|
},
|
|
140320
|
-
permissions
|
|
140321
|
-
|
|
140322
|
-
|
|
140323
|
-
|
|
140324
|
-
|
|
140325
|
-
|
|
140326
|
-
|
|
140327
|
-
|
|
140328
|
-
|
|
140329
|
-
|
|
140330
|
-
},
|
|
140404
|
+
// permissions are union-merged in 07-hooks.ts — not set here to avoid overwriting user entries (#362)
|
|
140405
|
+
_aqePermissions: [
|
|
140406
|
+
"Bash(npx ruflo:*)",
|
|
140407
|
+
"Bash(npx @ruflo/cli:*)",
|
|
140408
|
+
"Bash(npx claude-flow:*)",
|
|
140409
|
+
"Bash(npx @claude-flow/cli:*)",
|
|
140410
|
+
"mcp__ruflo__:*",
|
|
140411
|
+
"mcp__claude-flow__:*",
|
|
140412
|
+
"mcp__agentic-qe__*"
|
|
140413
|
+
],
|
|
140331
140414
|
includeCoAuthoredBy: true,
|
|
140332
140415
|
v3Configuration: {
|
|
140333
140416
|
domains: {
|
|
@@ -140499,7 +140582,7 @@ async function configureHooks(projectRoot, config) {
|
|
|
140499
140582
|
...existingEnv,
|
|
140500
140583
|
...generateAqeEnvVars(config)
|
|
140501
140584
|
};
|
|
140502
|
-
const v3Sections = generateV3SettingsSections(config);
|
|
140585
|
+
const v3Sections = generateV3SettingsSections(config, projectRoot);
|
|
140503
140586
|
for (const [key, value] of Object.entries(v3Sections)) {
|
|
140504
140587
|
settings[key] = value;
|
|
140505
140588
|
}
|
|
@@ -140803,7 +140886,7 @@ Task({ prompt: "Run security audit", subagent_type: "qe-security-scanner", run_i
|
|
|
140803
140886
|
|
|
140804
140887
|
\`\`\`javascript
|
|
140805
140888
|
// STEP 1: Initialize Claude Flow swarm for coordination
|
|
140806
|
-
Bash("npx
|
|
140889
|
+
Bash("npx ruflo swarm init --topology hierarchical --max-agents 15")
|
|
140807
140890
|
|
|
140808
140891
|
// STEP 2: Initialize AQE Fleet for QE-specific work
|
|
140809
140892
|
mcp__agentic-qe__fleet_init({
|
|
@@ -140816,7 +140899,7 @@ Task({ prompt: "Analyze coverage gaps", subagent_type: "qe-coverage-specialist",
|
|
|
140816
140899
|
|
|
140817
140900
|
// STEP 4: Store learnings in both systems
|
|
140818
140901
|
mcp__agentic-qe__memory_store({ key: "pattern-1", value: "...", namespace: "qe-patterns", persist: true })
|
|
140819
|
-
Bash("npx
|
|
140902
|
+
Bash("npx ruflo memory store --key 'qe-pattern-1' --value '...' --namespace patterns")
|
|
140820
140903
|
\`\`\`
|
|
140821
140904
|
|
|
140822
140905
|
### Data Storage
|
|
@@ -140863,11 +140946,11 @@ import { join as join27, dirname as dirname8 } from "path";
|
|
|
140863
140946
|
|
|
140864
140947
|
// src/init/skills-installer.ts
|
|
140865
140948
|
init_error_utils();
|
|
140866
|
-
import { existsSync as existsSync19, mkdirSync as mkdirSync6, readdirSync as readdirSync9, statSync as statSync5, readFileSync as readFileSync16, writeFileSync as writeFileSync4, copyFileSync as copyFileSync4 } from "fs";
|
|
140949
|
+
import { existsSync as existsSync19, mkdirSync as mkdirSync6, readdirSync as readdirSync9, statSync as statSync5, readFileSync as readFileSync16, writeFileSync as writeFileSync4, copyFileSync as copyFileSync4, unlinkSync as unlinkSync4, rmdirSync as rmdirSync2 } from "fs";
|
|
140867
140950
|
import { join as join23, dirname as dirname5 } from "path";
|
|
140868
140951
|
import { fileURLToPath } from "url";
|
|
140869
140952
|
var V3_DOMAIN_SKILLS = [
|
|
140870
|
-
//
|
|
140953
|
+
// 10 DDD bounded context skills (qe-security-compliance merged into security-testing, qe-contract-testing merged into contract-testing)
|
|
140871
140954
|
"qe-test-generation",
|
|
140872
140955
|
// AI-powered test synthesis
|
|
140873
140956
|
"qe-test-execution",
|
|
@@ -140882,12 +140965,8 @@ var V3_DOMAIN_SKILLS = [
|
|
|
140882
140965
|
// BDD scenarios, acceptance criteria
|
|
140883
140966
|
"qe-code-intelligence",
|
|
140884
140967
|
// Knowledge graphs, 80% token reduction
|
|
140885
|
-
"qe-security-compliance",
|
|
140886
|
-
// OWASP, CVE detection
|
|
140887
140968
|
"pentest-validation",
|
|
140888
140969
|
// Graduated exploit validation (Shannon-inspired)
|
|
140889
|
-
"qe-contract-testing",
|
|
140890
|
-
// Pact, schema validation
|
|
140891
140970
|
"qe-visual-accessibility",
|
|
140892
140971
|
// Visual regression, WCAG
|
|
140893
140972
|
"qe-chaos-resilience",
|
|
@@ -140895,10 +140974,29 @@ var V3_DOMAIN_SKILLS = [
|
|
|
140895
140974
|
"qe-learning-optimization",
|
|
140896
140975
|
// Transfer learning, self-improvement
|
|
140897
140976
|
// V3 utilities
|
|
140898
|
-
"
|
|
140899
|
-
// Migration guide from v2 to v3
|
|
140900
|
-
"qe-iterative-loop"
|
|
140977
|
+
"qe-iterative-loop",
|
|
140901
140978
|
// QE iteration patterns
|
|
140979
|
+
// New skills (ADR-086 skill design standards)
|
|
140980
|
+
"strict-tdd",
|
|
140981
|
+
// On-demand hook: TDD enforcement
|
|
140982
|
+
"no-skip",
|
|
140983
|
+
// On-demand hook: prevent test skips
|
|
140984
|
+
"coverage-guard",
|
|
140985
|
+
// On-demand hook: coverage regression prevention
|
|
140986
|
+
"freeze-tests",
|
|
140987
|
+
// On-demand hook: block test edits during refactoring
|
|
140988
|
+
"security-watch",
|
|
140989
|
+
// On-demand hook: real-time security scanning
|
|
140990
|
+
"skill-stats",
|
|
140991
|
+
// Skill usage measurement
|
|
140992
|
+
"test-failure-investigator",
|
|
140993
|
+
// Runbook: test failure root cause
|
|
140994
|
+
"coverage-drop-investigator",
|
|
140995
|
+
// Runbook: coverage regression tracing
|
|
140996
|
+
"e2e-flow-verifier",
|
|
140997
|
+
// Product verification with Playwright
|
|
140998
|
+
"test-metrics-dashboard"
|
|
140999
|
+
// Test history and trend analysis
|
|
140902
141000
|
];
|
|
140903
141001
|
var EXCLUDED_SKILLS = [
|
|
140904
141002
|
// V3 internal development skills
|
|
@@ -140954,6 +141052,14 @@ var EXCLUDED_SKILLS = [
|
|
|
140954
141052
|
// Internal release workflow skill
|
|
140955
141053
|
"release"
|
|
140956
141054
|
];
|
|
141055
|
+
var DEPRECATED_SKILLS = [
|
|
141056
|
+
"qe-contract-testing",
|
|
141057
|
+
// Merged into contract-testing (ADR-086)
|
|
141058
|
+
"qe-security-compliance",
|
|
141059
|
+
// Merged into security-testing (ADR-086)
|
|
141060
|
+
"aqe-v2-v3-migration"
|
|
141061
|
+
// No longer needed
|
|
141062
|
+
];
|
|
140957
141063
|
var SkillsInstaller = class {
|
|
140958
141064
|
projectRoot;
|
|
140959
141065
|
options;
|
|
@@ -141023,6 +141129,7 @@ var SkillsInstaller = class {
|
|
|
141023
141129
|
const result = {
|
|
141024
141130
|
installed: [],
|
|
141025
141131
|
skipped: [],
|
|
141132
|
+
removed: [],
|
|
141026
141133
|
errors: [],
|
|
141027
141134
|
totalCount: 0,
|
|
141028
141135
|
skillsDir: join23(this.projectRoot, ".claude", "skills"),
|
|
@@ -141051,6 +141158,9 @@ var SkillsInstaller = class {
|
|
|
141051
141158
|
result.errors.push(`Failed to install ${skillName}: ${toErrorMessage(error)}`);
|
|
141052
141159
|
}
|
|
141053
141160
|
}
|
|
141161
|
+
if (this.options.overwrite) {
|
|
141162
|
+
result.removed = this.removeDeprecatedSkills(targetSkillsDir);
|
|
141163
|
+
}
|
|
141054
141164
|
result.validationInstalled = this.installValidationInfrastructure(targetSkillsDir);
|
|
141055
141165
|
await this.createSkillsIndex(targetSkillsDir, result.installed);
|
|
141056
141166
|
return result;
|
|
@@ -141085,6 +141195,46 @@ var SkillsInstaller = class {
|
|
|
141085
141195
|
return false;
|
|
141086
141196
|
}
|
|
141087
141197
|
}
|
|
141198
|
+
/**
|
|
141199
|
+
* Remove deprecated/merged skills from an existing installation.
|
|
141200
|
+
* Only runs during --upgrade to clean up stale skill directories.
|
|
141201
|
+
*/
|
|
141202
|
+
removeDeprecatedSkills(targetSkillsDir) {
|
|
141203
|
+
const removed = [];
|
|
141204
|
+
for (const skillName of DEPRECATED_SKILLS) {
|
|
141205
|
+
const skillDir = join23(targetSkillsDir, skillName);
|
|
141206
|
+
if (existsSync19(skillDir)) {
|
|
141207
|
+
try {
|
|
141208
|
+
this.removeDirectoryRecursive(skillDir);
|
|
141209
|
+
removed.push(skillName);
|
|
141210
|
+
} catch (error) {
|
|
141211
|
+
console.error(
|
|
141212
|
+
`[SkillsInstaller] Failed to remove deprecated skill ${skillName}:`,
|
|
141213
|
+
error instanceof Error ? error.message : error
|
|
141214
|
+
);
|
|
141215
|
+
}
|
|
141216
|
+
}
|
|
141217
|
+
}
|
|
141218
|
+
if (removed.length > 0) {
|
|
141219
|
+
console.debug(`[SkillsInstaller] Removed ${removed.length} deprecated skills: ${removed.join(", ")}`);
|
|
141220
|
+
}
|
|
141221
|
+
return removed;
|
|
141222
|
+
}
|
|
141223
|
+
/**
|
|
141224
|
+
* Remove a directory and all its contents recursively
|
|
141225
|
+
*/
|
|
141226
|
+
removeDirectoryRecursive(dirPath) {
|
|
141227
|
+
const entries = readdirSync9(dirPath, { withFileTypes: true });
|
|
141228
|
+
for (const entry of entries) {
|
|
141229
|
+
const fullPath = join23(dirPath, entry.name);
|
|
141230
|
+
if (entry.isDirectory()) {
|
|
141231
|
+
this.removeDirectoryRecursive(fullPath);
|
|
141232
|
+
} else {
|
|
141233
|
+
unlinkSync4(fullPath);
|
|
141234
|
+
}
|
|
141235
|
+
}
|
|
141236
|
+
rmdirSync2(dirPath);
|
|
141237
|
+
}
|
|
141088
141238
|
/**
|
|
141089
141239
|
* Get list of available skills from source directory
|
|
141090
141240
|
*/
|
|
@@ -141552,6 +141702,25 @@ ${capsSection}
|
|
|
141552
141702
|
}
|
|
141553
141703
|
|
|
141554
141704
|
// src/init/agents-installer.ts
|
|
141705
|
+
function bumpUpdatedDate(content) {
|
|
141706
|
+
const today = (/* @__PURE__ */ new Date()).toISOString().slice(0, 10);
|
|
141707
|
+
const fmMatch = content.match(/^---\n([\s\S]*?)\n---/);
|
|
141708
|
+
if (!fmMatch) return content;
|
|
141709
|
+
const fm = fmMatch[1];
|
|
141710
|
+
let newFm;
|
|
141711
|
+
if (/^updated:/m.test(fm)) {
|
|
141712
|
+
newFm = fm.replace(/^updated:.*$/m, `updated: ${today}`);
|
|
141713
|
+
} else if (/^created:/m.test(fm)) {
|
|
141714
|
+
newFm = fm.replace(/^(created:.*$)/m, `$1
|
|
141715
|
+
updated: ${today}`);
|
|
141716
|
+
} else {
|
|
141717
|
+
newFm = fm + `
|
|
141718
|
+
updated: ${today}`;
|
|
141719
|
+
}
|
|
141720
|
+
return content.replace(/^---\n[\s\S]*?\n---/, `---
|
|
141721
|
+
${newFm}
|
|
141722
|
+
---`);
|
|
141723
|
+
}
|
|
141555
141724
|
var V3_QE_AGENTS = [
|
|
141556
141725
|
// Test Generation Domain
|
|
141557
141726
|
"qe-test-architect",
|
|
@@ -141790,7 +141959,8 @@ var AgentsInstaller = class {
|
|
|
141790
141959
|
try {
|
|
141791
141960
|
const agentContent = readFileSync18(agentFile, "utf-8");
|
|
141792
141961
|
const { content: modifiedContent, applied } = applyOverlayToContent(agentContent, overlay);
|
|
141793
|
-
|
|
141962
|
+
const finalContent = bumpUpdatedDate(modifiedContent);
|
|
141963
|
+
writeFileSync5(agentFile, finalContent, "utf-8");
|
|
141794
141964
|
result.overlaysApplied.push(agentName);
|
|
141795
141965
|
const changes = [
|
|
141796
141966
|
...applied.replacedFields.map((f74) => `replaced:${f74}`),
|
|
@@ -143829,7 +143999,7 @@ var HooksPhase = class extends BasePhase {
|
|
|
143829
143999
|
settings = {};
|
|
143830
144000
|
}
|
|
143831
144001
|
}
|
|
143832
|
-
const aqeHooks = this.generateHooksConfig(config);
|
|
144002
|
+
const aqeHooks = this.generateHooksConfig(config, projectRoot);
|
|
143833
144003
|
const hookTypes = Object.keys(aqeHooks);
|
|
143834
144004
|
const existingHooks = settings.hooks || {};
|
|
143835
144005
|
const existingAqeDetected = this.hasExistingAqeHooks(existingHooks);
|
|
@@ -143842,9 +144012,20 @@ var HooksPhase = class extends BasePhase {
|
|
|
143842
144012
|
...existingEnv,
|
|
143843
144013
|
...generateAqeEnvVars(config)
|
|
143844
144014
|
};
|
|
143845
|
-
const v3Sections = generateV3SettingsSections(config);
|
|
144015
|
+
const v3Sections = generateV3SettingsSections(config, projectRoot);
|
|
143846
144016
|
for (const [key, value] of Object.entries(v3Sections)) {
|
|
143847
|
-
|
|
144017
|
+
if (key === "_aqePermissions") {
|
|
144018
|
+
const existingPerms = settings.permissions || {};
|
|
144019
|
+
const existingAllow = existingPerms.allow || [];
|
|
144020
|
+
const aqeEntries = value;
|
|
144021
|
+
const merged = [.../* @__PURE__ */ new Set([...existingAllow, ...aqeEntries])];
|
|
144022
|
+
settings.permissions = {
|
|
144023
|
+
...existingPerms,
|
|
144024
|
+
allow: merged
|
|
144025
|
+
};
|
|
144026
|
+
} else {
|
|
144027
|
+
settings[key] = value;
|
|
144028
|
+
}
|
|
143848
144029
|
}
|
|
143849
144030
|
let existingMcp = settings.enabledMcpjsonServers || [];
|
|
143850
144031
|
existingMcp = existingMcp.filter((s70) => s70 !== "aqe");
|
|
@@ -144126,7 +144307,7 @@ if (process.argv.includes('--json')) process.stdout.write(JSON.stringify(result)
|
|
|
144126
144307
|
* Uses `npx agentic-qe` for portability - works without global installation.
|
|
144127
144308
|
* All hooks use --json output for structured data and fail silently with continueOnError.
|
|
144128
144309
|
*/
|
|
144129
|
-
generateHooksConfig(_config) {
|
|
144310
|
+
generateHooksConfig(_config, _projectRoot) {
|
|
144130
144311
|
return {
|
|
144131
144312
|
PreToolUse: [
|
|
144132
144313
|
// File guardian — MUST be first to block before learning hooks run
|
|
@@ -144240,7 +144421,7 @@ if (process.argv.includes('--json')) process.stdout.write(JSON.stringify(result)
|
|
|
144240
144421
|
hooks: [
|
|
144241
144422
|
{
|
|
144242
144423
|
type: "command",
|
|
144243
|
-
command:
|
|
144424
|
+
command: "node .claude/helpers/brain-checkpoint.cjs verify --json",
|
|
144244
144425
|
timeout: 5e3,
|
|
144245
144426
|
continueOnError: true
|
|
144246
144427
|
}
|
|
@@ -144262,7 +144443,7 @@ if (process.argv.includes('--json')) process.stdout.write(JSON.stringify(result)
|
|
|
144262
144443
|
hooks: [
|
|
144263
144444
|
{
|
|
144264
144445
|
type: "command",
|
|
144265
|
-
command:
|
|
144446
|
+
command: "node .claude/helpers/brain-checkpoint.cjs export --json",
|
|
144266
144447
|
timeout: 6e4,
|
|
144267
144448
|
continueOnError: true
|
|
144268
144449
|
}
|
|
@@ -146864,7 +147045,7 @@ function checkMCPConfig(projectRoot) {
|
|
|
146864
147045
|
if (existsSync45(mcpJsonPath)) {
|
|
146865
147046
|
try {
|
|
146866
147047
|
const config = safeJsonParse(readFileSync37(mcpJsonPath, "utf-8"));
|
|
146867
|
-
if (config.mcpServers?.["claude-flow"]) {
|
|
147048
|
+
if (config.mcpServers?.["ruflo"] || config.mcpServers?.["claude-flow"]) {
|
|
146868
147049
|
return { available: true, method: "mcp-config" };
|
|
146869
147050
|
}
|
|
146870
147051
|
} catch {
|
|
@@ -146875,7 +147056,7 @@ function checkMCPConfig(projectRoot) {
|
|
|
146875
147056
|
try {
|
|
146876
147057
|
const settings = safeJsonParse(readFileSync37(settingsPath, "utf-8"));
|
|
146877
147058
|
const servers = settings.mcpServers || settings.mcp?.servers || {};
|
|
146878
|
-
if (servers["claude-flow"] || servers["@anthropic/claude-flow"]) {
|
|
147059
|
+
if (servers["ruflo"] || servers["claude-flow"] || servers["@anthropic/claude-flow"]) {
|
|
146879
147060
|
return { available: true, method: "mcp-config" };
|
|
146880
147061
|
}
|
|
146881
147062
|
} catch {
|
|
@@ -146889,7 +147070,7 @@ function checkPackageJson(projectRoot) {
|
|
|
146889
147070
|
try {
|
|
146890
147071
|
const pkg = safeJsonParse(readFileSync37(packageJsonPath, "utf-8"));
|
|
146891
147072
|
const deps = { ...pkg.dependencies, ...pkg.devDependencies };
|
|
146892
|
-
if (deps["@claude-flow/cli"] || deps["claude-flow"]) {
|
|
147073
|
+
if (deps["ruflo"] || deps["@claude-flow/cli"] || deps["claude-flow"]) {
|
|
146893
147074
|
return { available: true, method: "npm-dependency" };
|
|
146894
147075
|
}
|
|
146895
147076
|
} catch {
|
|
@@ -146897,17 +147078,19 @@ function checkPackageJson(projectRoot) {
|
|
|
146897
147078
|
return null;
|
|
146898
147079
|
}
|
|
146899
147080
|
function checkLocalBinary(projectRoot) {
|
|
146900
|
-
|
|
146901
|
-
|
|
146902
|
-
|
|
146903
|
-
|
|
146904
|
-
|
|
146905
|
-
|
|
146906
|
-
|
|
146907
|
-
|
|
146908
|
-
|
|
146909
|
-
|
|
146910
|
-
|
|
147081
|
+
for (const pkg of ["ruflo", "@claude-flow/cli"]) {
|
|
147082
|
+
try {
|
|
147083
|
+
const result = execSync6(`npx --no-install ${pkg} --version`, {
|
|
147084
|
+
encoding: "utf-8",
|
|
147085
|
+
timeout: 5e3,
|
|
147086
|
+
cwd: projectRoot,
|
|
147087
|
+
stdio: ["pipe", "pipe", "pipe"]
|
|
147088
|
+
// suppress stderr noise
|
|
147089
|
+
});
|
|
147090
|
+
const version2 = result.trim().match(/\d+\.\d+\.\d+[\w.-]*/)?.[0];
|
|
147091
|
+
return { available: true, method: "npx-cached", version: version2 };
|
|
147092
|
+
} catch {
|
|
147093
|
+
}
|
|
146911
147094
|
}
|
|
146912
147095
|
return null;
|
|
146913
147096
|
}
|
|
@@ -146921,8 +147104,8 @@ function getClaudeFlowNotFoundMessage() {
|
|
|
146921
147104
|
" - Codebase pretrain analysis",
|
|
146922
147105
|
"",
|
|
146923
147106
|
" To install later:",
|
|
146924
|
-
" npm install -g
|
|
146925
|
-
" claude mcp add
|
|
147107
|
+
" npm install -g ruflo",
|
|
147108
|
+
" claude mcp add ruflo -- npx -y ruflo@3.5.18",
|
|
146926
147109
|
" aqe init --auto --with-claude-flow"
|
|
146927
147110
|
].join("\n");
|
|
146928
147111
|
}
|
|
@@ -147010,10 +147193,10 @@ function updateMCPConfig(projectRoot) {
|
|
|
147010
147193
|
settings.mcpServers = {};
|
|
147011
147194
|
}
|
|
147012
147195
|
const servers = settings.mcpServers;
|
|
147013
|
-
if (!servers["claude-flow"]) {
|
|
147014
|
-
servers["
|
|
147196
|
+
if (!servers["ruflo"] && !servers["claude-flow"]) {
|
|
147197
|
+
servers["ruflo"] = {
|
|
147015
147198
|
command: "npx",
|
|
147016
|
-
args: ["@
|
|
147199
|
+
args: ["ruflo@3.5.18", "mcp"],
|
|
147017
147200
|
env: {}
|
|
147018
147201
|
};
|
|
147019
147202
|
}
|
|
@@ -147022,7 +147205,7 @@ function updateMCPConfig(projectRoot) {
|
|
|
147022
147205
|
async function runPretrainAnalysis(projectRoot, debug) {
|
|
147023
147206
|
try {
|
|
147024
147207
|
if (debug) console.log("[ClaudeFlow] Running pretrain analysis...");
|
|
147025
|
-
execSync7("npx --no-install
|
|
147208
|
+
execSync7("npx --no-install ruflo hooks pretrain --depth medium", {
|
|
147026
147209
|
encoding: "utf-8",
|
|
147027
147210
|
timeout: 12e4,
|
|
147028
147211
|
// 2 minutes
|
|
@@ -147632,7 +147815,7 @@ import chalk4 from "chalk";
|
|
|
147632
147815
|
|
|
147633
147816
|
// src/cli/config/cli-config.ts
|
|
147634
147817
|
init_safe_json();
|
|
147635
|
-
import { existsSync as existsSync47, readFileSync as readFileSync40, writeFileSync as writeFileSync27, mkdirSync as mkdirSync27, unlinkSync as
|
|
147818
|
+
import { existsSync as existsSync47, readFileSync as readFileSync40, writeFileSync as writeFileSync27, mkdirSync as mkdirSync27, unlinkSync as unlinkSync5 } from "fs";
|
|
147636
147819
|
import { join as join52 } from "path";
|
|
147637
147820
|
import { homedir as homedir2 } from "os";
|
|
147638
147821
|
var DEFAULT_CLI_CONFIG = {
|
|
@@ -149217,7 +149400,7 @@ function brainInfo(containerPath) {
|
|
|
149217
149400
|
|
|
149218
149401
|
// src/integrations/ruvector/brain-rvf-exporter.ts
|
|
149219
149402
|
init_rvf_native_adapter();
|
|
149220
|
-
import { existsSync as existsSync51, statSync as statSync8, unlinkSync as
|
|
149403
|
+
import { existsSync as existsSync51, statSync as statSync8, unlinkSync as unlinkSync6, writeFileSync as writeFileSync31 } from "fs";
|
|
149221
149404
|
import { resolve as resolve10 } from "path";
|
|
149222
149405
|
function exportBrainToRvf(db, options, sourceDbLabel = "memory.db") {
|
|
149223
149406
|
if (!isRvfNativeAvailable()) {
|
|
@@ -149227,9 +149410,9 @@ function exportBrainToRvf(db, options, sourceDbLabel = "memory.db") {
|
|
|
149227
149410
|
}
|
|
149228
149411
|
const outPath = resolve10(options.outputPath);
|
|
149229
149412
|
const dimension = options.dimension ?? 384;
|
|
149230
|
-
if (existsSync51(outPath))
|
|
149413
|
+
if (existsSync51(outPath)) unlinkSync6(outPath);
|
|
149231
149414
|
const idmapPath = `${outPath}.idmap.json`;
|
|
149232
|
-
if (existsSync51(idmapPath))
|
|
149415
|
+
if (existsSync51(idmapPath)) unlinkSync6(idmapPath);
|
|
149233
149416
|
const rvf = createRvfStore(outPath, dimension);
|
|
149234
149417
|
try {
|
|
149235
149418
|
const allTableData = {};
|
|
@@ -170052,7 +170235,7 @@ async function cleanupAndExit(code = 0) {
|
|
|
170052
170235
|
process.exit(code);
|
|
170053
170236
|
}
|
|
170054
170237
|
var program = new Command22();
|
|
170055
|
-
var VERSION = true ? "3.8.
|
|
170238
|
+
var VERSION = true ? "3.8.3" : "0.0.0-dev";
|
|
170056
170239
|
program.name("aqe").description("Agentic QE - Domain-Driven Quality Engineering").version(VERSION);
|
|
170057
170240
|
var registry2 = createCommandRegistry(context, cleanupAndExit, ensureInitialized, ensureInitializedStrict);
|
|
170058
170241
|
registry2.registerAll(program);
|