agentic-qe 3.8.7 → 3.8.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (229) hide show
  1. package/.claude/agents/n8n/n8n-base-agent.md +4 -35
  2. package/.claude/agents/n8n/n8n-bdd-scenario-tester.md +4 -25
  3. package/.claude/agents/n8n/n8n-chaos-tester.md +4 -26
  4. package/.claude/agents/n8n/n8n-ci-orchestrator.md +4 -27
  5. package/.claude/agents/n8n/n8n-compliance-validator.md +4 -25
  6. package/.claude/agents/n8n/n8n-expression-validator.md +4 -25
  7. package/.claude/agents/n8n/n8n-integration-test.md +4 -27
  8. package/.claude/agents/n8n/n8n-monitoring-validator.md +4 -26
  9. package/.claude/agents/n8n/n8n-node-validator.md +4 -25
  10. package/.claude/agents/n8n/n8n-performance-tester.md +4 -29
  11. package/.claude/agents/n8n/n8n-security-auditor.md +4 -26
  12. package/.claude/agents/n8n/n8n-trigger-test.md +4 -27
  13. package/.claude/agents/n8n/n8n-unit-tester.md +4 -25
  14. package/.claude/agents/n8n/n8n-version-comparator.md +4 -26
  15. package/.claude/agents/n8n/n8n-workflow-executor.md +4 -26
  16. package/.claude/agents/v3/qe-accessibility-auditor.md +21 -55
  17. package/.claude/agents/v3/qe-bdd-generator.md +23 -58
  18. package/.claude/agents/v3/qe-chaos-engineer.md +21 -54
  19. package/.claude/agents/v3/qe-code-complexity.md +21 -54
  20. package/.claude/agents/v3/qe-code-intelligence.md +21 -54
  21. package/.claude/agents/v3/qe-contract-validator.md +21 -53
  22. package/.claude/agents/v3/qe-coverage-specialist.md +23 -79
  23. package/.claude/agents/v3/qe-defect-predictor.md +23 -76
  24. package/.claude/agents/v3/qe-dependency-mapper.md +21 -53
  25. package/.claude/agents/v3/qe-deployment-advisor.md +21 -54
  26. package/.claude/agents/v3/qe-devils-advocate.md +212 -238
  27. package/.claude/agents/v3/qe-flaky-hunter.md +21 -53
  28. package/.claude/agents/v3/qe-fleet-commander.md +21 -54
  29. package/.claude/agents/v3/qe-gap-detector.md +23 -79
  30. package/.claude/agents/v3/qe-graphql-tester.md +21 -54
  31. package/.claude/agents/v3/qe-impact-analyzer.md +21 -53
  32. package/.claude/agents/v3/qe-integration-architect.md +2 -2
  33. package/.claude/agents/v3/qe-integration-tester.md +15 -36
  34. package/.claude/agents/v3/qe-kg-builder.md +21 -53
  35. package/.claude/agents/v3/qe-learning-coordinator.md +21 -51
  36. package/.claude/agents/v3/qe-load-tester.md +21 -55
  37. package/.claude/agents/v3/qe-message-broker-tester.md +345 -385
  38. package/.claude/agents/v3/qe-metrics-optimizer.md +21 -54
  39. package/.claude/agents/v3/qe-middleware-validator.md +389 -428
  40. package/.claude/agents/v3/qe-mutation-tester.md +21 -54
  41. package/.claude/agents/v3/qe-odata-contract-tester.md +443 -489
  42. package/.claude/agents/v3/qe-parallel-executor.md +21 -52
  43. package/.claude/agents/v3/qe-pattern-learner.md +23 -70
  44. package/.claude/agents/v3/qe-pentest-validator.md +322 -359
  45. package/.claude/agents/v3/qe-performance-tester.md +21 -54
  46. package/.claude/agents/v3/qe-product-factors-assessor.md +339 -376
  47. package/.claude/agents/v3/qe-property-tester.md +21 -53
  48. package/.claude/agents/v3/qe-quality-criteria-recommender.md +379 -410
  49. package/.claude/agents/v3/qe-quality-gate.md +17 -64
  50. package/.claude/agents/v3/qe-queen-coordinator.md +71 -121
  51. package/.claude/agents/v3/qe-qx-partner.md +23 -64
  52. package/.claude/agents/v3/qe-regression-analyzer.md +21 -54
  53. package/.claude/agents/v3/qe-requirements-validator.md +23 -66
  54. package/.claude/agents/v3/qe-responsive-tester.md +21 -54
  55. package/.claude/agents/v3/qe-retry-handler.md +21 -53
  56. package/.claude/agents/v3/qe-risk-assessor.md +23 -58
  57. package/.claude/agents/v3/qe-root-cause-analyzer.md +21 -53
  58. package/.claude/agents/v3/qe-sap-idoc-tester.md +371 -412
  59. package/.claude/agents/v3/qe-sap-rfc-tester.md +323 -362
  60. package/.claude/agents/v3/qe-security-auditor.md +21 -54
  61. package/.claude/agents/v3/qe-security-scanner.md +21 -58
  62. package/.claude/agents/v3/qe-soap-tester.md +307 -345
  63. package/.claude/agents/v3/qe-sod-analyzer.md +486 -533
  64. package/.claude/agents/v3/qe-tdd-specialist.md +17 -42
  65. package/.claude/agents/v3/qe-test-architect.md +23 -58
  66. package/.claude/agents/v3/qe-test-idea-rewriter.md +351 -375
  67. package/.claude/agents/v3/qe-transfer-specialist.md +21 -55
  68. package/.claude/agents/v3/qe-visual-tester.md +15 -37
  69. package/.claude/agents/v3/subagents/qe-code-reviewer.md +21 -54
  70. package/.claude/agents/v3/subagents/qe-integration-reviewer.md +21 -54
  71. package/.claude/agents/v3/subagents/qe-performance-reviewer.md +21 -54
  72. package/.claude/agents/v3/subagents/qe-security-reviewer.md +21 -54
  73. package/.claude/agents/v3/subagents/qe-tdd-green.md +21 -53
  74. package/.claude/agents/v3/subagents/qe-tdd-red.md +21 -53
  75. package/.claude/agents/v3/subagents/qe-tdd-refactor.md +21 -53
  76. package/.claude/skills/.validation/schemas/skill-eval.schema.json +5 -5
  77. package/.claude/skills/.validation/skill-validation-mcp-integration.md +32 -81
  78. package/.claude/skills/agentic-quality-engineering/SKILL.md +31 -60
  79. package/.claude/skills/iterative-loop/SKILL.md +2 -2
  80. package/.claude/skills/pair-programming/SKILL.md +2 -2
  81. package/.claude/skills/performance-testing/SKILL.md +1 -1
  82. package/.claude/skills/qcsd-cicd-swarm/steps/01-flag-detection.md +2 -2
  83. package/.claude/skills/qcsd-cicd-swarm/steps/07-learning-persistence.md +6 -6
  84. package/.claude/skills/qcsd-development-swarm/steps/01-flag-detection.md +2 -2
  85. package/.claude/skills/qcsd-development-swarm/steps/07-learning-persistence.md +6 -6
  86. package/.claude/skills/qcsd-ideation-swarm/steps/07-learning-persistence.md +6 -6
  87. package/.claude/skills/qcsd-production-swarm/steps/01-flag-detection.md +202 -206
  88. package/.claude/skills/qcsd-production-swarm/steps/07-learning-persistence.md +157 -185
  89. package/.claude/skills/qcsd-refinement-swarm/steps/01-flag-detection.md +87 -91
  90. package/.claude/skills/qcsd-refinement-swarm/steps/07-learning-persistence.md +49 -53
  91. package/.claude/skills/qe-chaos-resilience/SKILL.md +2 -2
  92. package/.claude/skills/qe-code-intelligence/SKILL.md +2 -2
  93. package/.claude/skills/qe-coverage-analysis/SKILL.md +2 -2
  94. package/.claude/skills/qe-defect-intelligence/SKILL.md +2 -2
  95. package/.claude/skills/qe-iterative-loop/SKILL.md +12 -12
  96. package/.claude/skills/qe-learning-optimization/SKILL.md +2 -2
  97. package/.claude/skills/qe-quality-assessment/SKILL.md +2 -2
  98. package/.claude/skills/qe-requirements-validation/SKILL.md +2 -2
  99. package/.claude/skills/qe-test-execution/SKILL.md +2 -2
  100. package/.claude/skills/qe-test-generation/SKILL.md +2 -2
  101. package/.claude/skills/qe-visual-accessibility/SKILL.md +2 -2
  102. package/.claude/skills/quality-metrics/SKILL.md +1 -1
  103. package/.claude/skills/security-testing/SKILL.md +1 -1
  104. package/.claude/skills/skills-manifest.json +1 -1
  105. package/.claude/skills/validation-pipeline/SKILL.md +2 -2
  106. package/.claude/skills/verification-quality/SKILL.md +2 -2
  107. package/CHANGELOG.md +31 -0
  108. package/assets/agents/v3/qe-accessibility-auditor.md +21 -55
  109. package/assets/agents/v3/qe-bdd-generator.md +23 -58
  110. package/assets/agents/v3/qe-chaos-engineer.md +21 -54
  111. package/assets/agents/v3/qe-code-complexity.md +21 -54
  112. package/assets/agents/v3/qe-code-intelligence.md +21 -54
  113. package/assets/agents/v3/qe-contract-validator.md +21 -53
  114. package/assets/agents/v3/qe-coverage-specialist.md +23 -79
  115. package/assets/agents/v3/qe-defect-predictor.md +23 -76
  116. package/assets/agents/v3/qe-dependency-mapper.md +21 -53
  117. package/assets/agents/v3/qe-deployment-advisor.md +21 -54
  118. package/assets/agents/v3/qe-devils-advocate.md +212 -238
  119. package/assets/agents/v3/qe-flaky-hunter.md +21 -53
  120. package/assets/agents/v3/qe-fleet-commander.md +21 -54
  121. package/assets/agents/v3/qe-gap-detector.md +23 -79
  122. package/assets/agents/v3/qe-graphql-tester.md +21 -54
  123. package/assets/agents/v3/qe-impact-analyzer.md +21 -53
  124. package/assets/agents/v3/qe-integration-architect.md +2 -2
  125. package/assets/agents/v3/qe-integration-tester.md +15 -36
  126. package/assets/agents/v3/qe-kg-builder.md +21 -53
  127. package/assets/agents/v3/qe-learning-coordinator.md +21 -51
  128. package/assets/agents/v3/qe-load-tester.md +21 -55
  129. package/assets/agents/v3/qe-message-broker-tester.md +345 -385
  130. package/assets/agents/v3/qe-metrics-optimizer.md +21 -54
  131. package/assets/agents/v3/qe-middleware-validator.md +389 -428
  132. package/assets/agents/v3/qe-mutation-tester.md +21 -54
  133. package/assets/agents/v3/qe-odata-contract-tester.md +443 -489
  134. package/assets/agents/v3/qe-parallel-executor.md +21 -52
  135. package/assets/agents/v3/qe-pattern-learner.md +23 -70
  136. package/assets/agents/v3/qe-pentest-validator.md +322 -359
  137. package/assets/agents/v3/qe-performance-tester.md +21 -54
  138. package/assets/agents/v3/qe-product-factors-assessor.md +339 -376
  139. package/assets/agents/v3/qe-property-tester.md +21 -53
  140. package/assets/agents/v3/qe-quality-criteria-recommender.md +379 -410
  141. package/assets/agents/v3/qe-quality-gate.md +17 -64
  142. package/assets/agents/v3/qe-queen-coordinator.md +71 -121
  143. package/assets/agents/v3/qe-qx-partner.md +23 -64
  144. package/assets/agents/v3/qe-regression-analyzer.md +21 -54
  145. package/assets/agents/v3/qe-requirements-validator.md +23 -66
  146. package/assets/agents/v3/qe-responsive-tester.md +21 -54
  147. package/assets/agents/v3/qe-retry-handler.md +21 -53
  148. package/assets/agents/v3/qe-risk-assessor.md +23 -58
  149. package/assets/agents/v3/qe-root-cause-analyzer.md +21 -53
  150. package/assets/agents/v3/qe-sap-idoc-tester.md +371 -412
  151. package/assets/agents/v3/qe-sap-rfc-tester.md +323 -362
  152. package/assets/agents/v3/qe-security-auditor.md +21 -54
  153. package/assets/agents/v3/qe-security-scanner.md +21 -58
  154. package/assets/agents/v3/qe-soap-tester.md +307 -345
  155. package/assets/agents/v3/qe-sod-analyzer.md +486 -533
  156. package/assets/agents/v3/qe-tdd-specialist.md +17 -42
  157. package/assets/agents/v3/qe-test-architect.md +23 -58
  158. package/assets/agents/v3/qe-test-idea-rewriter.md +351 -375
  159. package/assets/agents/v3/qe-transfer-specialist.md +21 -55
  160. package/assets/agents/v3/qe-visual-tester.md +15 -37
  161. package/assets/agents/v3/subagents/qe-code-reviewer.md +21 -54
  162. package/assets/agents/v3/subagents/qe-integration-reviewer.md +21 -54
  163. package/assets/agents/v3/subagents/qe-performance-reviewer.md +21 -54
  164. package/assets/agents/v3/subagents/qe-security-reviewer.md +21 -54
  165. package/assets/agents/v3/subagents/qe-tdd-green.md +21 -53
  166. package/assets/agents/v3/subagents/qe-tdd-red.md +21 -53
  167. package/assets/agents/v3/subagents/qe-tdd-refactor.md +21 -53
  168. package/assets/grammars/tree-sitter-c_sharp.wasm +0 -0
  169. package/assets/grammars/tree-sitter-java.wasm +0 -0
  170. package/assets/grammars/tree-sitter-python.wasm +0 -0
  171. package/assets/grammars/tree-sitter-rust.wasm +0 -0
  172. package/assets/grammars/tree-sitter-swift.wasm +0 -0
  173. package/assets/skills/.validation/schemas/skill-eval.schema.json +5 -5
  174. package/assets/skills/.validation/skill-validation-mcp-integration.md +32 -81
  175. package/assets/skills/agentic-quality-engineering/SKILL.md +31 -60
  176. package/assets/skills/pair-programming/SKILL.md +2 -2
  177. package/assets/skills/performance-testing/SKILL.md +1 -1
  178. package/assets/skills/qcsd-cicd-swarm/steps/01-flag-detection.md +2 -2
  179. package/assets/skills/qcsd-cicd-swarm/steps/07-learning-persistence.md +6 -6
  180. package/assets/skills/qcsd-development-swarm/steps/01-flag-detection.md +2 -2
  181. package/assets/skills/qcsd-development-swarm/steps/07-learning-persistence.md +6 -6
  182. package/assets/skills/qcsd-ideation-swarm/steps/07-learning-persistence.md +6 -6
  183. package/assets/skills/qcsd-production-swarm/steps/01-flag-detection.md +202 -206
  184. package/assets/skills/qcsd-production-swarm/steps/07-learning-persistence.md +157 -185
  185. package/assets/skills/qcsd-refinement-swarm/steps/01-flag-detection.md +87 -91
  186. package/assets/skills/qcsd-refinement-swarm/steps/07-learning-persistence.md +49 -53
  187. package/assets/skills/qe-chaos-resilience/SKILL.md +2 -2
  188. package/assets/skills/qe-code-intelligence/SKILL.md +2 -2
  189. package/assets/skills/qe-coverage-analysis/SKILL.md +2 -2
  190. package/assets/skills/qe-defect-intelligence/SKILL.md +2 -2
  191. package/assets/skills/qe-iterative-loop/SKILL.md +12 -12
  192. package/assets/skills/qe-learning-optimization/SKILL.md +2 -2
  193. package/assets/skills/qe-quality-assessment/SKILL.md +2 -2
  194. package/assets/skills/qe-requirements-validation/SKILL.md +2 -2
  195. package/assets/skills/qe-test-execution/SKILL.md +2 -2
  196. package/assets/skills/qe-test-generation/SKILL.md +2 -2
  197. package/assets/skills/qe-visual-accessibility/SKILL.md +2 -2
  198. package/assets/skills/quality-metrics/SKILL.md +1 -1
  199. package/assets/skills/security-testing/SKILL.md +1 -1
  200. package/assets/skills/validation-pipeline/SKILL.md +2 -2
  201. package/assets/skills/verification-quality/SKILL.md +2 -2
  202. package/dist/cli/bundle.js +5169 -4631
  203. package/dist/cli/commands/init.js +2 -0
  204. package/dist/cli/commands/memory.d.ts +11 -0
  205. package/dist/cli/commands/memory.js +333 -0
  206. package/dist/cli/commands/ruvector-commands.js +41 -1
  207. package/dist/cli/handlers/init-handler.d.ts +1 -0
  208. package/dist/cli/handlers/init-handler.js +18 -6
  209. package/dist/cli/index.js +2 -0
  210. package/dist/domains/code-intelligence/services/knowledge-graph.js +3 -0
  211. package/dist/domains/coverage-analysis/services/coverage-parser.d.ts +72 -4
  212. package/dist/domains/coverage-analysis/services/coverage-parser.js +559 -6
  213. package/dist/governance/proof-envelope-integration.js +10 -4
  214. package/dist/init/phases/08-mcp.js +10 -0
  215. package/dist/init/phases/phase-interface.d.ts +2 -0
  216. package/dist/integrations/coherence/engines/witness-adapter.d.ts +5 -5
  217. package/dist/integrations/coherence/engines/witness-adapter.js +10 -22
  218. package/dist/integrations/ruvector/coherence-gate.d.ts +14 -5
  219. package/dist/integrations/ruvector/coherence-gate.js +34 -6
  220. package/dist/learning/agent-routing.d.ts +7 -2
  221. package/dist/learning/agent-routing.js +17 -1
  222. package/dist/mcp/bundle.js +1087 -1086
  223. package/dist/mcp/tools/coverage-analysis/index.d.ts +12 -0
  224. package/dist/mcp/tools/coverage-analysis/index.js +27 -4
  225. package/dist/shared/parsers/multi-language-parser.d.ts +4 -1
  226. package/dist/shared/parsers/multi-language-parser.js +73 -1
  227. package/dist/shared/parsers/tree-sitter-wasm-parser.d.ts +32 -0
  228. package/dist/shared/parsers/tree-sitter-wasm-parser.js +1034 -0
  229. package/package.json +2 -1
@@ -1,11 +1,11 @@
1
1
  /**
2
2
  * Agentic QE v3 - Witness Engine Adapter
3
3
  *
4
- * Wraps the Prime Radiant WitnessEngine for Blake3 witness chain operations.
4
+ * Wraps the Prime Radiant WitnessEngine for SHA-256 witness chain operations.
5
5
  * Used for creating tamper-evident audit trails of agent decisions.
6
6
  *
7
- * Blake3 Witness Chains:
8
- * - Each decision is hashed with Blake3
7
+ * Witness Chains:
8
+ * - Each decision is hashed with SHA-256
9
9
  * - Hash includes reference to previous witness
10
10
  * - Creates immutable audit trail
11
11
  * - Enables deterministic replay
@@ -94,8 +94,8 @@ export declare class WitnessAdapter implements IWitnessAdapter {
94
94
  */
95
95
  private createFallbackEngine;
96
96
  /**
97
- * Compute a hash for witness creation
98
- * Uses a simple hash when crypto is not available
97
+ * Compute a SHA-256 hash for witness creation.
98
+ * Chains the previous hash into the computation for tamper-evidence.
99
99
  */
100
100
  private computeHash;
101
101
  /**
@@ -1,11 +1,11 @@
1
1
  /**
2
2
  * Agentic QE v3 - Witness Engine Adapter
3
3
  *
4
- * Wraps the Prime Radiant WitnessEngine for Blake3 witness chain operations.
4
+ * Wraps the Prime Radiant WitnessEngine for SHA-256 witness chain operations.
5
5
  * Used for creating tamper-evident audit trails of agent decisions.
6
6
  *
7
- * Blake3 Witness Chains:
8
- * - Each decision is hashed with Blake3
7
+ * Witness Chains:
8
+ * - Each decision is hashed with SHA-256
9
9
  * - Hash includes reference to previous witness
10
10
  * - Creates immutable audit trail
11
11
  * - Enables deterministic replay
@@ -13,7 +13,7 @@
13
13
  * @module integrations/coherence/engines/witness-adapter
14
14
  */
15
15
  import { WasmNotLoadedError, DEFAULT_COHERENCE_LOGGER } from '../types';
16
- import { secureRandom } from '../../../shared/utils/crypto-random.js';
16
+ import { createHash } from 'crypto';
17
17
  // ============================================================================
18
18
  // Witness Adapter Implementation
19
19
  // ============================================================================
@@ -131,28 +131,16 @@ export class WitnessAdapter {
131
131
  };
132
132
  }
133
133
  /**
134
- * Compute a hash for witness creation
135
- * Uses a simple hash when crypto is not available
134
+ * Compute a SHA-256 hash for witness creation.
135
+ * Chains the previous hash into the computation for tamper-evidence.
136
136
  */
137
137
  computeHash(data, previousHash) {
138
- // Simple hash implementation for environments without crypto
139
- // In production, this would use Blake3 or SHA-256
140
- let hash = 0;
141
- for (let i = 0; i < data.length; i++) {
142
- hash = ((hash << 5) - hash + data[i]) | 0;
143
- }
138
+ const hasher = createHash('sha256');
139
+ hasher.update(data);
144
140
  if (previousHash) {
145
- for (let i = 0; i < previousHash.length; i++) {
146
- hash = ((hash << 5) - hash + previousHash.charCodeAt(i)) | 0;
147
- }
141
+ hasher.update(previousHash, 'utf-8');
148
142
  }
149
- // Convert to hex string
150
- const unsignedHash = hash >>> 0;
151
- return unsignedHash.toString(16).padStart(8, '0') +
152
- '-' +
153
- Date.now().toString(16) +
154
- '-' +
155
- secureRandom().toString(16).slice(2, 10);
143
+ return hasher.digest('hex');
156
144
  }
157
145
  /**
158
146
  * Check if the adapter is initialized
@@ -10,12 +10,13 @@
10
10
  * - Retrieval (~10ms): Full word-frequency coherence computation
11
11
  *
12
12
  * Implements ITransferCoherenceGate for cross-domain transfer validation.
13
- * Uses Blake3 hash-chained witness records for audit trail.
13
+ * Uses SHA-256 hash-chained witness records for audit trail.
14
14
  *
15
15
  * @module integrations/ruvector/coherence-gate
16
16
  * @see ADR-083-coherence-gated-agent-actions.md
17
17
  */
18
18
  import type { ITransferCoherenceGate, CoherenceValidation } from './transfer-coherence-stub.js';
19
+ import type { WitnessChain as GovernanceWitnessChain } from '../../governance/witness-chain.js';
19
20
  /**
20
21
  * Reset the CohomologyEngine loader state (for testing).
21
22
  */
@@ -148,7 +149,16 @@ export declare class CoherenceGate implements ITransferCoherenceGate {
148
149
  private witnessChain;
149
150
  private lastWitnessHash;
150
151
  private nativeAvailable;
152
+ /** Optional governance witness chain for SQLite persistence */
153
+ private governanceChain;
151
154
  constructor(threshold?: number);
155
+ /**
156
+ * Attach a governance WitnessChain (or PersistentWitnessChain) for
157
+ * durable persistence of coherence decisions. When attached, every
158
+ * validation is appended to the governance chain in addition to the
159
+ * in-memory witness array.
160
+ */
161
+ setGovernanceChain(chain: GovernanceWitnessChain): void;
152
162
  /**
153
163
  * Compute coherence energy for a test artifact.
154
164
  *
@@ -271,12 +281,11 @@ export declare class CoherenceGate implements ITransferCoherenceGate {
271
281
  */
272
282
  private buildFailureReason;
273
283
  /**
274
- * Create a Blake3-style hash-chained witness record.
275
- * Falls back to SHA-256 when Blake3 is unavailable.
284
+ * Create a SHA-256 hash-chained witness record.
276
285
  */
277
286
  private createWitnessRecord;
278
287
  /**
279
- * Hash content using SHA-256 (Blake3 fallback).
288
+ * Hash content using SHA-256.
280
289
  */
281
290
  private hashContent;
282
291
  /**
@@ -298,7 +307,7 @@ export declare class CoherenceGate implements ITransferCoherenceGate {
298
307
  * @param threshold - Coherence energy threshold (default: 0.4)
299
308
  * @returns A new CoherenceGate instance
300
309
  */
301
- export declare function createCoherenceGate(threshold?: number): CoherenceGate;
310
+ export declare function createCoherenceGate(threshold?: number, governanceChain?: GovernanceWitnessChain): CoherenceGate;
302
311
  /**
303
312
  * Create a transfer coherence gate.
304
313
  *
@@ -10,7 +10,7 @@
10
10
  * - Retrieval (~10ms): Full word-frequency coherence computation
11
11
  *
12
12
  * Implements ITransferCoherenceGate for cross-domain transfer validation.
13
- * Uses Blake3 hash-chained witness records for audit trail.
13
+ * Uses SHA-256 hash-chained witness records for audit trail.
14
14
  *
15
15
  * @module integrations/ruvector/coherence-gate
16
16
  * @see ADR-083-coherence-gated-agent-actions.md
@@ -97,9 +97,20 @@ export class CoherenceGate {
97
97
  witnessChain = [];
98
98
  lastWitnessHash = '0'.repeat(64);
99
99
  nativeAvailable = null;
100
+ /** Optional governance witness chain for SQLite persistence */
101
+ governanceChain = null;
100
102
  constructor(threshold = DEFAULT_COHERENCE_THRESHOLD) {
101
103
  this.threshold = threshold;
102
104
  }
105
+ /**
106
+ * Attach a governance WitnessChain (or PersistentWitnessChain) for
107
+ * durable persistence of coherence decisions. When attached, every
108
+ * validation is appended to the governance chain in addition to the
109
+ * in-memory witness array.
110
+ */
111
+ setGovernanceChain(chain) {
112
+ this.governanceChain = chain;
113
+ }
103
114
  // ==========================================================================
104
115
  // Core API
105
116
  // ==========================================================================
@@ -531,8 +542,7 @@ export class CoherenceGate {
531
542
  return parts.join(' ');
532
543
  }
533
544
  /**
534
- * Create a Blake3-style hash-chained witness record.
535
- * Falls back to SHA-256 when Blake3 is unavailable.
545
+ * Create a SHA-256 hash-chained witness record.
536
546
  */
537
547
  createWitnessRecord(artifact, energy, threshold, passed) {
538
548
  const id = randomUUID();
@@ -556,11 +566,25 @@ export class CoherenceGate {
556
566
  if (flags.useWitnessChain) {
557
567
  this.witnessChain.push(record);
558
568
  this.lastWitnessHash = record.recordHash;
569
+ // Persist to governance chain if attached
570
+ if (this.governanceChain) {
571
+ try {
572
+ const governanceDecision = {
573
+ type: 'coherence-gate',
574
+ decision: passed ? 'PASS' : 'FAIL',
575
+ context: { energy, threshold, artifactHash: record.artifactHash },
576
+ };
577
+ this.governanceChain.appendWitness(governanceDecision);
578
+ }
579
+ catch (err) {
580
+ logger.debug('Failed to persist to governance chain', { error: String(err) });
581
+ }
582
+ }
559
583
  }
560
584
  return record;
561
585
  }
562
586
  /**
563
- * Hash content using SHA-256 (Blake3 fallback).
587
+ * Hash content using SHA-256.
564
588
  */
565
589
  hashContent(content) {
566
590
  return createHash('sha256').update(content).digest('hex');
@@ -616,8 +640,12 @@ export class CoherenceGate {
616
640
  * @param threshold - Coherence energy threshold (default: 0.4)
617
641
  * @returns A new CoherenceGate instance
618
642
  */
619
- export function createCoherenceGate(threshold) {
620
- return new CoherenceGate(threshold);
643
+ export function createCoherenceGate(threshold, governanceChain) {
644
+ const gate = new CoherenceGate(threshold);
645
+ if (governanceChain) {
646
+ gate.setGovernanceChain(governanceChain);
647
+ }
648
+ return gate;
621
649
  }
622
650
  /**
623
651
  * Create a transfer coherence gate.
@@ -7,12 +7,14 @@
7
7
  */
8
8
  import type { QEDomain } from './qe-patterns.js';
9
9
  /**
10
- * Profile describing an agent's domains, capabilities, and performance.
10
+ * Profile describing an agent's domains, capabilities, performance, and language expertise.
11
11
  */
12
12
  export interface AgentCapabilityProfile {
13
13
  domains: QEDomain[];
14
14
  capabilities: string[];
15
15
  performanceScore: number;
16
+ /** Languages this agent has expertise in (for language-aware routing) */
17
+ languages?: string[];
16
18
  }
17
19
  /**
18
20
  * Static mapping of QE agent types to their capability profiles.
@@ -33,6 +35,8 @@ export interface RoutingWeights {
33
35
  similarity: number;
34
36
  performance: number;
35
37
  capabilities: number;
38
+ /** Weight for language match boost (default: 1.0) */
39
+ language?: number;
36
40
  }
37
41
  /**
38
42
  * Calculate agent scores for a routing request.
@@ -42,9 +46,10 @@ export interface RoutingWeights {
42
46
  * @param agentDomainPatternCounts - Map from agent type to number of matching patterns
43
47
  * @param routingWeights - Weights for the scoring components
44
48
  * @param agentCapabilities - Agent capability map (defaults to AGENT_CAPABILITIES)
49
+ * @param requestLanguage - Optional language to boost agents with matching language expertise
45
50
  * @returns Sorted array of scored agents (highest score first)
46
51
  */
47
- export declare function calculateAgentScores(detectedDomains: QEDomain[], requestCapabilities: string[] | undefined, agentDomainPatternCounts: Map<string, number>, routingWeights: RoutingWeights, agentCapabilities?: Record<string, AgentCapabilityProfile>): ScoredAgent[];
52
+ export declare function calculateAgentScores(detectedDomains: QEDomain[], requestCapabilities: string[] | undefined, agentDomainPatternCounts: Map<string, number>, routingWeights: RoutingWeights, agentCapabilities?: Record<string, AgentCapabilityProfile>, requestLanguage?: string): ScoredAgent[];
48
53
  /**
49
54
  * Domain compatibility matrix for cross-domain pattern transfer.
50
55
  * Maps each domain to its related domains (same as TransferSpecialistService).
@@ -16,21 +16,25 @@ export const AGENT_CAPABILITIES = {
16
16
  domains: ['test-generation'],
17
17
  capabilities: ['test-generation', 'tdd', 'bdd', 'unit-test', 'integration-test'],
18
18
  performanceScore: 0.85,
19
+ languages: ['typescript', 'javascript', 'python', 'java', 'csharp', 'go', 'rust', 'swift', 'kotlin', 'dart'],
19
20
  },
20
21
  'qe-coverage-analyzer': {
21
22
  domains: ['coverage-analysis'],
22
23
  capabilities: ['coverage-analysis', 'gap-detection', 'risk-scoring'],
23
24
  performanceScore: 0.92,
25
+ languages: ['typescript', 'javascript', 'python', 'java', 'csharp', 'go', 'rust', 'swift', 'kotlin', 'dart'],
24
26
  },
25
27
  'qe-coverage-specialist': {
26
28
  domains: ['coverage-analysis'],
27
29
  capabilities: ['sublinear-analysis', 'branch-coverage', 'mutation-testing'],
28
30
  performanceScore: 0.88,
31
+ languages: ['typescript', 'javascript'],
29
32
  },
30
33
  'qe-test-architect': {
31
34
  domains: ['test-generation', 'coverage-analysis'],
32
35
  capabilities: ['test-strategy', 'test-pyramid', 'architecture'],
33
36
  performanceScore: 0.9,
37
+ languages: ['typescript', 'javascript', 'python', 'java', 'csharp', 'go', 'rust', 'swift', 'kotlin', 'dart'],
34
38
  },
35
39
  'qe-api-contract-validator': {
36
40
  domains: ['contract-testing'],
@@ -76,9 +80,10 @@ export const AGENT_CAPABILITIES = {
76
80
  * @param agentDomainPatternCounts - Map from agent type to number of matching patterns
77
81
  * @param routingWeights - Weights for the scoring components
78
82
  * @param agentCapabilities - Agent capability map (defaults to AGENT_CAPABILITIES)
83
+ * @param requestLanguage - Optional language to boost agents with matching language expertise
79
84
  * @returns Sorted array of scored agents (highest score first)
80
85
  */
81
- export function calculateAgentScores(detectedDomains, requestCapabilities, agentDomainPatternCounts, routingWeights, agentCapabilities = AGENT_CAPABILITIES) {
86
+ export function calculateAgentScores(detectedDomains, requestCapabilities, agentDomainPatternCounts, routingWeights, agentCapabilities = AGENT_CAPABILITIES, requestLanguage) {
82
87
  const agentScores = [];
83
88
  for (const [agentType, profile] of Object.entries(agentCapabilities)) {
84
89
  let score = 0;
@@ -105,6 +110,17 @@ export function calculateAgentScores(detectedDomains, requestCapabilities, agent
105
110
  // Historical performance (0-0.3)
106
111
  score += profile.performanceScore * 0.3 * routingWeights.performance;
107
112
  reasoning.push(`Performance score: ${(profile.performanceScore * 100).toFixed(0)}%`);
113
+ // Language match boost (0-0.15)
114
+ if (requestLanguage && profile.languages && profile.languages.length > 0) {
115
+ const langWeight = routingWeights.language ?? 1.0;
116
+ const langLower = requestLanguage.toLowerCase();
117
+ const hasLanguage = profile.languages.some(l => l.toLowerCase() === langLower);
118
+ if (hasLanguage) {
119
+ const langBoost = 0.15 * langWeight;
120
+ score += langBoost;
121
+ reasoning.push(`Language match: ${requestLanguage}`);
122
+ }
123
+ }
108
124
  // Pattern similarity boost
109
125
  const patternCount = agentDomainPatternCounts.get(agentType) || 0;
110
126
  if (patternCount > 0) {