agentic-qe 1.9.3 → 2.0.0

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 (271) hide show
  1. package/.claude/agents/qe-api-contract-validator.md +95 -1336
  2. package/.claude/agents/qe-chaos-engineer.md +152 -1211
  3. package/.claude/agents/qe-code-complexity.md +144 -707
  4. package/.claude/agents/qe-coverage-analyzer.md +147 -743
  5. package/.claude/agents/qe-deployment-readiness.md +143 -1496
  6. package/.claude/agents/qe-flaky-test-hunter.md +132 -1529
  7. package/.claude/agents/qe-fleet-commander.md +12 -12
  8. package/.claude/agents/qe-performance-tester.md +150 -886
  9. package/.claude/agents/qe-production-intelligence.md +155 -1396
  10. package/.claude/agents/qe-quality-analyzer.md +6 -6
  11. package/.claude/agents/qe-quality-gate.md +151 -648
  12. package/.claude/agents/qe-regression-risk-analyzer.md +132 -1150
  13. package/.claude/agents/qe-requirements-validator.md +149 -932
  14. package/.claude/agents/qe-security-scanner.md +157 -797
  15. package/.claude/agents/qe-test-data-architect.md +96 -1365
  16. package/.claude/agents/qe-test-executor.md +8 -8
  17. package/.claude/agents/qe-test-generator.md +145 -1540
  18. package/.claude/agents/qe-visual-tester.md +153 -1257
  19. package/.claude/agents/qx-partner.md +235 -0
  20. package/.claude/agents/subagents/qe-code-reviewer.md +40 -136
  21. package/.claude/agents/subagents/qe-coverage-gap-analyzer.md +40 -480
  22. package/.claude/agents/subagents/qe-data-generator.md +41 -125
  23. package/.claude/agents/subagents/qe-flaky-investigator.md +55 -411
  24. package/.claude/agents/subagents/qe-integration-tester.md +53 -141
  25. package/.claude/agents/subagents/qe-performance-validator.md +54 -130
  26. package/.claude/agents/subagents/qe-security-auditor.md +56 -114
  27. package/.claude/agents/subagents/qe-test-data-architect-sub.md +57 -548
  28. package/.claude/agents/subagents/qe-test-implementer.md +58 -551
  29. package/.claude/agents/subagents/qe-test-refactorer.md +65 -722
  30. package/.claude/agents/subagents/qe-test-writer.md +63 -726
  31. package/.claude/skills/skills-manifest.json +632 -0
  32. package/.claude/skills/testability-scoring/README.md +71 -0
  33. package/.claude/skills/testability-scoring/SKILL.md +611 -0
  34. package/.claude/skills/testability-scoring/resources/templates/config.template.js +84 -0
  35. package/.claude/skills/testability-scoring/resources/templates/testability-scoring.spec.template.js +532 -0
  36. package/.claude/skills/testability-scoring/scripts/generate-html-report.js +1007 -0
  37. package/.claude/skills/testability-scoring/scripts/run-assessment.sh +70 -0
  38. package/CHANGELOG.md +116 -0
  39. package/README.md +59 -7
  40. package/config/.env.otel.example +25 -0
  41. package/config/OTEL-QUICK-REFERENCE.md +137 -0
  42. package/config/README-OTEL.md +222 -0
  43. package/config/alerting-rules.yml +518 -0
  44. package/config/docker-compose.otel.yml +187 -0
  45. package/config/grafana/dashboards/agentic-qe-overview.json +286 -0
  46. package/config/grafana/provisioning/dashboards/dashboards.yml +19 -0
  47. package/config/grafana/provisioning/datasources/datasources.yml +53 -0
  48. package/config/otel-collector-config.yaml.example +145 -0
  49. package/config/prometheus.yml.example +106 -0
  50. package/dist/agents/QXPartnerAgent.d.ts +139 -0
  51. package/dist/agents/QXPartnerAgent.d.ts.map +1 -0
  52. package/dist/agents/QXPartnerAgent.js +769 -0
  53. package/dist/agents/QXPartnerAgent.js.map +1 -0
  54. package/dist/agents/index.d.ts +1 -0
  55. package/dist/agents/index.d.ts.map +1 -1
  56. package/dist/agents/index.js +82 -2
  57. package/dist/agents/index.js.map +1 -1
  58. package/dist/alerting/AlertManager.d.ts +120 -0
  59. package/dist/alerting/AlertManager.d.ts.map +1 -0
  60. package/dist/alerting/AlertManager.js +345 -0
  61. package/dist/alerting/AlertManager.js.map +1 -0
  62. package/dist/alerting/FeedbackRouter.d.ts +98 -0
  63. package/dist/alerting/FeedbackRouter.d.ts.map +1 -0
  64. package/dist/alerting/FeedbackRouter.js +331 -0
  65. package/dist/alerting/FeedbackRouter.js.map +1 -0
  66. package/dist/alerting/StrategyApplicator.d.ts +120 -0
  67. package/dist/alerting/StrategyApplicator.d.ts.map +1 -0
  68. package/dist/alerting/StrategyApplicator.js +299 -0
  69. package/dist/alerting/StrategyApplicator.js.map +1 -0
  70. package/dist/alerting/index.d.ts +68 -0
  71. package/dist/alerting/index.d.ts.map +1 -0
  72. package/dist/alerting/index.js +112 -0
  73. package/dist/alerting/index.js.map +1 -0
  74. package/dist/alerting/types.d.ts +118 -0
  75. package/dist/alerting/types.d.ts.map +1 -0
  76. package/dist/alerting/types.js +11 -0
  77. package/dist/alerting/types.js.map +1 -0
  78. package/dist/cli/commands/debug/agent.d.ts.map +1 -1
  79. package/dist/cli/commands/debug/agent.js +19 -6
  80. package/dist/cli/commands/debug/agent.js.map +1 -1
  81. package/dist/cli/commands/debug/health-check.js +20 -7
  82. package/dist/cli/commands/debug/health-check.js.map +1 -1
  83. package/dist/cli/commands/init-claude-md-template.d.ts +1 -0
  84. package/dist/cli/commands/init-claude-md-template.d.ts.map +1 -1
  85. package/dist/cli/commands/init-claude-md-template.js +4 -3
  86. package/dist/cli/commands/init-claude-md-template.js.map +1 -1
  87. package/dist/cli/commands/workflow/cancel.d.ts.map +1 -1
  88. package/dist/cli/commands/workflow/cancel.js +4 -3
  89. package/dist/cli/commands/workflow/cancel.js.map +1 -1
  90. package/dist/cli/commands/workflow/list.d.ts.map +1 -1
  91. package/dist/cli/commands/workflow/list.js +4 -3
  92. package/dist/cli/commands/workflow/list.js.map +1 -1
  93. package/dist/cli/commands/workflow/pause.d.ts.map +1 -1
  94. package/dist/cli/commands/workflow/pause.js +4 -3
  95. package/dist/cli/commands/workflow/pause.js.map +1 -1
  96. package/dist/cli/init/claude-config.d.ts.map +1 -1
  97. package/dist/cli/init/claude-config.js +13 -13
  98. package/dist/cli/init/claude-config.js.map +1 -1
  99. package/dist/cli/init/claude-md.d.ts.map +1 -1
  100. package/dist/cli/init/claude-md.js +44 -2
  101. package/dist/cli/init/claude-md.js.map +1 -1
  102. package/dist/cli/init/database-init.js +1 -1
  103. package/dist/cli/init/index.d.ts.map +1 -1
  104. package/dist/cli/init/index.js +13 -6
  105. package/dist/cli/init/index.js.map +1 -1
  106. package/dist/cli/init/skills.d.ts.map +1 -1
  107. package/dist/cli/init/skills.js +2 -1
  108. package/dist/cli/init/skills.js.map +1 -1
  109. package/dist/core/memory/AgentDBIntegration.d.ts +24 -6
  110. package/dist/core/memory/AgentDBIntegration.d.ts.map +1 -1
  111. package/dist/core/memory/AgentDBIntegration.js +66 -10
  112. package/dist/core/memory/AgentDBIntegration.js.map +1 -1
  113. package/dist/core/memory/IPatternStore.d.ts +209 -0
  114. package/dist/core/memory/IPatternStore.d.ts.map +1 -0
  115. package/dist/core/memory/IPatternStore.js +15 -0
  116. package/dist/core/memory/IPatternStore.js.map +1 -0
  117. package/dist/core/memory/MigrationTools.d.ts +192 -0
  118. package/dist/core/memory/MigrationTools.d.ts.map +1 -0
  119. package/dist/core/memory/MigrationTools.js +615 -0
  120. package/dist/core/memory/MigrationTools.js.map +1 -0
  121. package/dist/core/memory/NeuralEnhancement.d.ts +154 -0
  122. package/dist/core/memory/NeuralEnhancement.d.ts.map +1 -0
  123. package/dist/core/memory/NeuralEnhancement.js +598 -0
  124. package/dist/core/memory/NeuralEnhancement.js.map +1 -0
  125. package/dist/core/memory/PatternStoreFactory.d.ts +143 -0
  126. package/dist/core/memory/PatternStoreFactory.d.ts.map +1 -0
  127. package/dist/core/memory/PatternStoreFactory.js +370 -0
  128. package/dist/core/memory/PatternStoreFactory.js.map +1 -0
  129. package/dist/core/memory/RealAgentDBAdapter.d.ts +1 -0
  130. package/dist/core/memory/RealAgentDBAdapter.d.ts.map +1 -1
  131. package/dist/core/memory/RealAgentDBAdapter.js +28 -20
  132. package/dist/core/memory/RealAgentDBAdapter.js.map +1 -1
  133. package/dist/core/memory/RuVectorPatternStore.d.ts +198 -0
  134. package/dist/core/memory/RuVectorPatternStore.d.ts.map +1 -0
  135. package/dist/core/memory/RuVectorPatternStore.js +605 -0
  136. package/dist/core/memory/RuVectorPatternStore.js.map +1 -0
  137. package/dist/core/memory/SelfHealingMonitor.d.ts +186 -0
  138. package/dist/core/memory/SelfHealingMonitor.d.ts.map +1 -0
  139. package/dist/core/memory/SelfHealingMonitor.js +451 -0
  140. package/dist/core/memory/SelfHealingMonitor.js.map +1 -0
  141. package/dist/core/memory/SwarmMemoryManager.d.ts +62 -0
  142. package/dist/core/memory/SwarmMemoryManager.d.ts.map +1 -1
  143. package/dist/core/memory/SwarmMemoryManager.js +97 -0
  144. package/dist/core/memory/SwarmMemoryManager.js.map +1 -1
  145. package/dist/core/memory/UnifiedMemoryCoordinator.d.ts +341 -0
  146. package/dist/core/memory/UnifiedMemoryCoordinator.d.ts.map +1 -0
  147. package/dist/core/memory/UnifiedMemoryCoordinator.js +986 -0
  148. package/dist/core/memory/UnifiedMemoryCoordinator.js.map +1 -0
  149. package/dist/core/memory/index.d.ts +16 -0
  150. package/dist/core/memory/index.d.ts.map +1 -1
  151. package/dist/core/memory/index.js +58 -1
  152. package/dist/core/memory/index.js.map +1 -1
  153. package/dist/core/optimization/SwarmOptimizer.d.ts +185 -0
  154. package/dist/core/optimization/SwarmOptimizer.d.ts.map +1 -0
  155. package/dist/core/optimization/SwarmOptimizer.js +631 -0
  156. package/dist/core/optimization/SwarmOptimizer.js.map +1 -0
  157. package/dist/core/optimization/index.d.ts +9 -0
  158. package/dist/core/optimization/index.d.ts.map +1 -0
  159. package/dist/core/optimization/index.js +25 -0
  160. package/dist/core/optimization/index.js.map +1 -0
  161. package/dist/core/optimization/types.d.ts +53 -0
  162. package/dist/core/optimization/types.d.ts.map +1 -0
  163. package/dist/core/optimization/types.js +6 -0
  164. package/dist/core/optimization/types.js.map +1 -0
  165. package/dist/core/orchestration/PriorityQueue.d.ts +54 -0
  166. package/dist/core/orchestration/PriorityQueue.d.ts.map +1 -0
  167. package/dist/core/orchestration/PriorityQueue.js +122 -0
  168. package/dist/core/orchestration/PriorityQueue.js.map +1 -0
  169. package/dist/core/orchestration/WorkflowOrchestrator.d.ts +176 -0
  170. package/dist/core/orchestration/WorkflowOrchestrator.d.ts.map +1 -0
  171. package/dist/core/orchestration/WorkflowOrchestrator.js +813 -0
  172. package/dist/core/orchestration/WorkflowOrchestrator.js.map +1 -0
  173. package/dist/core/orchestration/index.d.ts +7 -0
  174. package/dist/core/orchestration/index.d.ts.map +1 -0
  175. package/dist/core/orchestration/index.js +11 -0
  176. package/dist/core/orchestration/index.js.map +1 -0
  177. package/dist/core/orchestration/types.d.ts +96 -0
  178. package/dist/core/orchestration/types.d.ts.map +1 -0
  179. package/dist/core/orchestration/types.js +6 -0
  180. package/dist/core/orchestration/types.js.map +1 -0
  181. package/dist/core/skills/DynamicSkillLoader.d.ts +96 -0
  182. package/dist/core/skills/DynamicSkillLoader.d.ts.map +1 -0
  183. package/dist/core/skills/DynamicSkillLoader.js +353 -0
  184. package/dist/core/skills/DynamicSkillLoader.js.map +1 -0
  185. package/dist/core/skills/types.d.ts +118 -0
  186. package/dist/core/skills/types.d.ts.map +1 -0
  187. package/dist/core/skills/types.js +7 -0
  188. package/dist/core/skills/types.js.map +1 -0
  189. package/dist/core/transport/QUICTransport.d.ts +320 -0
  190. package/dist/core/transport/QUICTransport.d.ts.map +1 -0
  191. package/dist/core/transport/QUICTransport.js +711 -0
  192. package/dist/core/transport/QUICTransport.js.map +1 -0
  193. package/dist/core/transport/index.d.ts +40 -0
  194. package/dist/core/transport/index.d.ts.map +1 -0
  195. package/dist/core/transport/index.js +46 -0
  196. package/dist/core/transport/index.js.map +1 -0
  197. package/dist/core/transport/quic-loader.d.ts +123 -0
  198. package/dist/core/transport/quic-loader.d.ts.map +1 -0
  199. package/dist/core/transport/quic-loader.js +293 -0
  200. package/dist/core/transport/quic-loader.js.map +1 -0
  201. package/dist/core/transport/quic.d.ts +154 -0
  202. package/dist/core/transport/quic.d.ts.map +1 -0
  203. package/dist/core/transport/quic.js +214 -0
  204. package/dist/core/transport/quic.js.map +1 -0
  205. package/dist/mcp/services/AgentRegistry.d.ts.map +1 -1
  206. package/dist/mcp/services/AgentRegistry.js +4 -1
  207. package/dist/mcp/services/AgentRegistry.js.map +1 -1
  208. package/dist/reasoning/RuVectorReasoningAdapter.d.ts +232 -0
  209. package/dist/reasoning/RuVectorReasoningAdapter.d.ts.map +1 -0
  210. package/dist/reasoning/RuVectorReasoningAdapter.js +585 -0
  211. package/dist/reasoning/RuVectorReasoningAdapter.js.map +1 -0
  212. package/dist/reasoning/index.d.ts +2 -0
  213. package/dist/reasoning/index.d.ts.map +1 -1
  214. package/dist/reasoning/index.js +6 -1
  215. package/dist/reasoning/index.js.map +1 -1
  216. package/dist/reporting/ResultAggregator.d.ts +107 -0
  217. package/dist/reporting/ResultAggregator.d.ts.map +1 -0
  218. package/dist/reporting/ResultAggregator.js +435 -0
  219. package/dist/reporting/ResultAggregator.js.map +1 -0
  220. package/dist/reporting/index.d.ts +48 -0
  221. package/dist/reporting/index.d.ts.map +1 -0
  222. package/dist/reporting/index.js +154 -0
  223. package/dist/reporting/index.js.map +1 -0
  224. package/dist/reporting/reporters/ControlLoopReporter.d.ts +128 -0
  225. package/dist/reporting/reporters/ControlLoopReporter.d.ts.map +1 -0
  226. package/dist/reporting/reporters/ControlLoopReporter.js +417 -0
  227. package/dist/reporting/reporters/ControlLoopReporter.js.map +1 -0
  228. package/dist/reporting/reporters/HumanReadableReporter.d.ts +140 -0
  229. package/dist/reporting/reporters/HumanReadableReporter.d.ts.map +1 -0
  230. package/dist/reporting/reporters/HumanReadableReporter.js +524 -0
  231. package/dist/reporting/reporters/HumanReadableReporter.js.map +1 -0
  232. package/dist/reporting/reporters/JSONReporter.d.ts +193 -0
  233. package/dist/reporting/reporters/JSONReporter.d.ts.map +1 -0
  234. package/dist/reporting/reporters/JSONReporter.js +324 -0
  235. package/dist/reporting/reporters/JSONReporter.js.map +1 -0
  236. package/dist/reporting/reporters/index.d.ts +14 -0
  237. package/dist/reporting/reporters/index.d.ts.map +1 -0
  238. package/dist/reporting/reporters/index.js +19 -0
  239. package/dist/reporting/reporters/index.js.map +1 -0
  240. package/dist/reporting/types.d.ts +427 -0
  241. package/dist/reporting/types.d.ts.map +1 -0
  242. package/dist/reporting/types.js +12 -0
  243. package/dist/reporting/types.js.map +1 -0
  244. package/dist/types/index.d.ts +2 -1
  245. package/dist/types/index.d.ts.map +1 -1
  246. package/dist/types/index.js +2 -0
  247. package/dist/types/index.js.map +1 -1
  248. package/dist/types/qx.d.ts +397 -0
  249. package/dist/types/qx.d.ts.map +1 -0
  250. package/dist/types/qx.js +71 -0
  251. package/dist/types/qx.js.map +1 -0
  252. package/dist/visualization/api/RestEndpoints.js +1 -1
  253. package/dist/visualization/api/RestEndpoints.js.map +1 -1
  254. package/dist/visualization/api/WebSocketServer.d.ts +44 -0
  255. package/dist/visualization/api/WebSocketServer.d.ts.map +1 -1
  256. package/dist/visualization/api/WebSocketServer.js +144 -23
  257. package/dist/visualization/api/WebSocketServer.js.map +1 -1
  258. package/dist/visualization/core/DataTransformer.d.ts +10 -0
  259. package/dist/visualization/core/DataTransformer.d.ts.map +1 -1
  260. package/dist/visualization/core/DataTransformer.js +60 -5
  261. package/dist/visualization/core/DataTransformer.js.map +1 -1
  262. package/dist/visualization/emit-event.d.ts +75 -0
  263. package/dist/visualization/emit-event.d.ts.map +1 -0
  264. package/dist/visualization/emit-event.js +213 -0
  265. package/dist/visualization/emit-event.js.map +1 -0
  266. package/dist/visualization/index.d.ts +1 -0
  267. package/dist/visualization/index.d.ts.map +1 -1
  268. package/dist/visualization/index.js +7 -1
  269. package/dist/visualization/index.js.map +1 -1
  270. package/docs/reference/skills.md +63 -1
  271. package/package.json +12 -4
@@ -0,0 +1,598 @@
1
+ "use strict";
2
+ /**
3
+ * NeuralEnhancement - Neural Enhancement Layer for RuVector
4
+ *
5
+ * Implements AgentDB v2 neural capabilities:
6
+ * - Multi-head attention mechanism (8 heads) for query enhancement
7
+ * - Graph Neural Network layer for pattern relationship modeling
8
+ * - RL-based navigation for optimal traversal paths
9
+ * - Self-organizing capabilities for index maintenance
10
+ *
11
+ * @module core/memory/NeuralEnhancement
12
+ * @version 2.0.0
13
+ */
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.NeuralPatternStore = exports.NeuralEnhancementLayer = void 0;
16
+ /**
17
+ * Multi-head attention layer
18
+ */
19
+ class MultiHeadAttention {
20
+ constructor(heads, dim) {
21
+ this.heads = heads;
22
+ this.dim = dim;
23
+ this.headDim = Math.floor(dim / heads);
24
+ // Initialize weight matrices
25
+ this.wq = this.initWeights(heads, dim, this.headDim);
26
+ this.wk = this.initWeights(heads, dim, this.headDim);
27
+ this.wv = this.initWeights(heads, dim, this.headDim);
28
+ this.wo = this.initMatrix(dim, dim);
29
+ }
30
+ initWeights(heads, dim, headDim) {
31
+ const weights = [];
32
+ for (let h = 0; h < heads; h++) {
33
+ weights[h] = this.initMatrix(dim, headDim);
34
+ }
35
+ return weights;
36
+ }
37
+ initMatrix(rows, cols) {
38
+ const matrix = [];
39
+ const scale = Math.sqrt(2.0 / (rows + cols)); // Xavier initialization
40
+ for (let i = 0; i < rows; i++) {
41
+ matrix[i] = [];
42
+ for (let j = 0; j < cols; j++) {
43
+ matrix[i][j] = (Math.random() - 0.5) * 2 * scale;
44
+ }
45
+ }
46
+ return matrix;
47
+ }
48
+ matmul(a, w) {
49
+ const result = [];
50
+ for (let j = 0; j < w[0].length; j++) {
51
+ let sum = 0;
52
+ for (let i = 0; i < a.length; i++) {
53
+ sum += a[i] * w[i][j];
54
+ }
55
+ result[j] = sum;
56
+ }
57
+ return result;
58
+ }
59
+ dotProduct(a, b) {
60
+ let sum = 0;
61
+ for (let i = 0; i < a.length; i++) {
62
+ sum += a[i] * b[i];
63
+ }
64
+ return sum;
65
+ }
66
+ softmax(values) {
67
+ const max = Math.max(...values);
68
+ const exps = values.map(v => Math.exp(v - max));
69
+ const sum = exps.reduce((a, b) => a + b, 0);
70
+ return exps.map(e => e / sum);
71
+ }
72
+ /**
73
+ * Apply multi-head attention to query embedding
74
+ */
75
+ async forward(query, context) {
76
+ const headOutputs = [];
77
+ const allWeights = [];
78
+ // Process each attention head
79
+ for (let h = 0; h < this.heads; h++) {
80
+ // Project query, keys, values
81
+ const q = this.matmul(query, this.wq[h]);
82
+ const keys = context.map(c => this.matmul(c, this.wk[h]));
83
+ const values = context.map(c => this.matmul(c, this.wv[h]));
84
+ // Compute attention scores
85
+ const scale = 1.0 / Math.sqrt(this.headDim);
86
+ const scores = keys.map(k => this.dotProduct(q, k) * scale);
87
+ // Apply softmax to get attention weights
88
+ const weights = this.softmax(scores);
89
+ allWeights.push(weights);
90
+ // Weighted sum of values
91
+ const output = new Array(this.headDim).fill(0);
92
+ for (let i = 0; i < values.length; i++) {
93
+ for (let j = 0; j < this.headDim; j++) {
94
+ output[j] += weights[i] * values[i][j];
95
+ }
96
+ }
97
+ headOutputs.push(output);
98
+ }
99
+ // Concatenate head outputs
100
+ const concatenated = headOutputs.flat();
101
+ // Project back to original dimension
102
+ const finalOutput = this.matmul(concatenated, this.wo);
103
+ return {
104
+ output: finalOutput,
105
+ weights: allWeights,
106
+ };
107
+ }
108
+ }
109
+ /**
110
+ * Graph Neural Network layer
111
+ */
112
+ class GraphNeuralNetwork {
113
+ constructor() {
114
+ this.nodes = new Map();
115
+ this.adjacency = new Map();
116
+ }
117
+ /**
118
+ * Add a pattern to the graph
119
+ */
120
+ addNode(pattern) {
121
+ const features = this.extractFeatures(pattern);
122
+ this.nodes.set(pattern.id, {
123
+ id: pattern.id,
124
+ embedding: pattern.embedding,
125
+ features,
126
+ neighbors: new Map(),
127
+ });
128
+ }
129
+ /**
130
+ * Build edges based on similarity
131
+ */
132
+ buildEdges(patterns, threshold = 0.7) {
133
+ this.adjacency.clear();
134
+ for (let i = 0; i < patterns.length; i++) {
135
+ for (let j = i + 1; j < patterns.length; j++) {
136
+ const sim = this.cosineSimilarity(patterns[i].embedding, patterns[j].embedding);
137
+ if (sim > threshold) {
138
+ // Add bidirectional edge
139
+ this.addEdge(patterns[i].id, patterns[j].id, sim);
140
+ this.addEdge(patterns[j].id, patterns[i].id, sim);
141
+ }
142
+ }
143
+ }
144
+ // Update node neighbors
145
+ for (const [nodeId, edges] of this.adjacency.entries()) {
146
+ const node = this.nodes.get(nodeId);
147
+ if (node) {
148
+ node.neighbors = edges;
149
+ }
150
+ }
151
+ }
152
+ addEdge(from, to, weight) {
153
+ if (!this.adjacency.has(from)) {
154
+ this.adjacency.set(from, new Map());
155
+ }
156
+ this.adjacency.get(from).set(to, weight);
157
+ }
158
+ /**
159
+ * Extract node features from pattern
160
+ */
161
+ extractFeatures(pattern) {
162
+ return [
163
+ pattern.coverage || 0,
164
+ pattern.flakinessScore || 0,
165
+ pattern.usageCount || 0,
166
+ pattern.verdict === 'success' ? 1 : pattern.verdict === 'failure' ? -1 : 0,
167
+ ];
168
+ }
169
+ /**
170
+ * Aggregate neighbor information using message passing
171
+ */
172
+ async aggregateNeighbors(nodeId) {
173
+ const node = this.nodes.get(nodeId);
174
+ if (!node || node.neighbors.size === 0) {
175
+ return node ? node.embedding : [];
176
+ }
177
+ // Message passing: aggregate neighbor embeddings weighted by edge weights
178
+ const aggregated = new Array(node.embedding.length).fill(0);
179
+ let totalWeight = 0;
180
+ for (const [neighborId, weight] of node.neighbors.entries()) {
181
+ const neighbor = this.nodes.get(neighborId);
182
+ if (neighbor) {
183
+ for (let i = 0; i < aggregated.length; i++) {
184
+ aggregated[i] += weight * neighbor.embedding[i];
185
+ }
186
+ totalWeight += weight;
187
+ }
188
+ }
189
+ // Normalize
190
+ if (totalWeight > 0) {
191
+ for (let i = 0; i < aggregated.length; i++) {
192
+ aggregated[i] /= totalWeight;
193
+ }
194
+ }
195
+ return aggregated;
196
+ }
197
+ /**
198
+ * Get neighbor IDs for a node
199
+ */
200
+ getNeighbors(nodeId) {
201
+ const neighbors = this.adjacency.get(nodeId);
202
+ return neighbors ? Array.from(neighbors.keys()) : [];
203
+ }
204
+ cosineSimilarity(a, b) {
205
+ let dotProduct = 0;
206
+ let normA = 0;
207
+ let normB = 0;
208
+ for (let i = 0; i < a.length; i++) {
209
+ dotProduct += a[i] * b[i];
210
+ normA += a[i] * a[i];
211
+ normB += b[i] * b[i];
212
+ }
213
+ return dotProduct / (Math.sqrt(normA) * Math.sqrt(normB));
214
+ }
215
+ }
216
+ /**
217
+ * Q-Learning agent for optimal path navigation
218
+ */
219
+ class QLearningNavigator {
220
+ constructor(learningRate = 0.001, gamma = 0.95, epsilon = 0.1) {
221
+ this.qTable = new Map();
222
+ this.learningRate = learningRate;
223
+ this.gamma = gamma;
224
+ this.epsilon = epsilon;
225
+ }
226
+ /**
227
+ * Get Q-value for state-action pair
228
+ */
229
+ getQValue(state, action) {
230
+ const key = `${state}:${action}`;
231
+ const entry = this.qTable.get(key);
232
+ return entry ? entry.qValue : 0;
233
+ }
234
+ /**
235
+ * Update Q-value for state-action pair
236
+ */
237
+ updateQValue(state, action, reward, nextState, possibleActions) {
238
+ const key = `${state}:${action}`;
239
+ const currentQ = this.getQValue(state, action);
240
+ // Get max Q-value for next state
241
+ const maxNextQ = possibleActions.length > 0
242
+ ? Math.max(...possibleActions.map(a => this.getQValue(nextState, a)))
243
+ : 0;
244
+ // Q-learning update
245
+ const newQ = currentQ + this.learningRate * (reward + this.gamma * maxNextQ - currentQ);
246
+ const entry = this.qTable.get(key) || {
247
+ state,
248
+ action,
249
+ qValue: 0,
250
+ visitCount: 0,
251
+ };
252
+ entry.qValue = newQ;
253
+ entry.visitCount++;
254
+ this.qTable.set(key, entry);
255
+ }
256
+ /**
257
+ * Select next action using epsilon-greedy
258
+ */
259
+ selectAction(state, possibleActions) {
260
+ if (possibleActions.length === 0) {
261
+ throw new Error('No possible actions available');
262
+ }
263
+ // Epsilon-greedy exploration
264
+ if (Math.random() < this.epsilon) {
265
+ // Explore: random action
266
+ return possibleActions[Math.floor(Math.random() * possibleActions.length)];
267
+ }
268
+ // Exploit: best action
269
+ let bestAction = possibleActions[0];
270
+ let bestQ = this.getQValue(state, bestAction);
271
+ for (let i = 1; i < possibleActions.length; i++) {
272
+ const action = possibleActions[i];
273
+ const q = this.getQValue(state, action);
274
+ if (q > bestQ) {
275
+ bestQ = q;
276
+ bestAction = action;
277
+ }
278
+ }
279
+ return bestAction;
280
+ }
281
+ /**
282
+ * Train on trajectory
283
+ */
284
+ trainOnPath(path, reward, gnn) {
285
+ // Distribute reward along path
286
+ const rewardPerStep = reward / path.length;
287
+ for (let i = 0; i < path.length - 1; i++) {
288
+ const state = path[i];
289
+ const action = path[i + 1];
290
+ const nextState = path[i + 1];
291
+ const possibleActions = gnn.getNeighbors(state);
292
+ this.updateQValue(state, action, rewardPerStep, nextState, possibleActions);
293
+ }
294
+ }
295
+ /**
296
+ * Find optimal path from start to targets
297
+ */
298
+ findOptimalPath(start, targets, gnn, maxSteps = 20) {
299
+ const path = [start];
300
+ const visited = new Set([start]);
301
+ let current = start;
302
+ for (let step = 0; step < maxSteps; step++) {
303
+ if (targets.has(current)) {
304
+ break; // Reached target
305
+ }
306
+ const neighbors = gnn.getNeighbors(current);
307
+ const unvisited = neighbors.filter(n => !visited.has(n));
308
+ if (unvisited.length === 0) {
309
+ break; // No more moves
310
+ }
311
+ const next = this.selectAction(current, unvisited);
312
+ path.push(next);
313
+ visited.add(next);
314
+ current = next;
315
+ }
316
+ return path;
317
+ }
318
+ }
319
+ /**
320
+ * Neural Enhancement Layer
321
+ *
322
+ * Provides neural capabilities for RuVector pattern store:
323
+ * - Multi-head attention for query enhancement
324
+ * - Graph Neural Network for pattern relationships
325
+ * - Q-Learning for optimal search paths
326
+ */
327
+ class NeuralEnhancementLayer {
328
+ constructor(config) {
329
+ this.contextPatterns = [];
330
+ this.config = {
331
+ attentionHeads: config?.attentionHeads || 8,
332
+ embeddingDim: config?.embeddingDim || 384,
333
+ enableGNN: config?.enableGNN !== false,
334
+ enableRLNavigation: config?.enableRLNavigation !== false,
335
+ learningRate: config?.learningRate || 0.001,
336
+ gamma: config?.gamma || 0.95,
337
+ epsilon: config?.epsilon || 0.1,
338
+ };
339
+ this.attention = new MultiHeadAttention(this.config.attentionHeads, this.config.embeddingDim);
340
+ this.gnn = new GraphNeuralNetwork();
341
+ this.navigator = new QLearningNavigator(this.config.learningRate, this.config.gamma, this.config.epsilon);
342
+ }
343
+ /**
344
+ * Apply attention to query embedding
345
+ */
346
+ async enhanceQuery(embedding, contextPatterns) {
347
+ const context = contextPatterns || this.contextPatterns;
348
+ if (context.length === 0) {
349
+ // No context, return original embedding
350
+ return {
351
+ enhancedEmbedding: embedding,
352
+ attentionWeights: [],
353
+ confidence: 1.0,
354
+ };
355
+ }
356
+ const contextEmbeddings = context.map(p => p.embedding);
357
+ const { output, weights } = await this.attention.forward(embedding, contextEmbeddings);
358
+ // Calculate confidence as max attention weight
359
+ const maxWeights = weights.map(w => Math.max(...w));
360
+ const confidence = maxWeights.reduce((a, b) => a + b, 0) / maxWeights.length;
361
+ return {
362
+ enhancedEmbedding: output,
363
+ attentionWeights: weights,
364
+ confidence,
365
+ };
366
+ }
367
+ /**
368
+ * Build pattern relationship graph
369
+ */
370
+ async buildPatternGraph(patterns) {
371
+ this.contextPatterns = patterns;
372
+ if (!this.config.enableGNN) {
373
+ return;
374
+ }
375
+ // Add all patterns as nodes
376
+ for (const pattern of patterns) {
377
+ this.gnn.addNode(pattern);
378
+ }
379
+ // Build edges based on similarity
380
+ this.gnn.buildEdges(patterns, 0.7);
381
+ }
382
+ /**
383
+ * Find optimal traversal path using RL
384
+ */
385
+ async findOptimalPath(start, targets, k) {
386
+ if (!this.config.enableRLNavigation || this.contextPatterns.length === 0) {
387
+ // Fallback to simple similarity search
388
+ return this.fallbackSearch(start, targets, k);
389
+ }
390
+ // Find nearest pattern as starting point
391
+ const startPattern = this.findNearest(start, this.contextPatterns);
392
+ if (!startPattern) {
393
+ return [];
394
+ }
395
+ // Use RL to find path to targets
396
+ const targetIds = new Set(targets.map(t => t.id));
397
+ const path = this.navigator.findOptimalPath(startPattern.id, targetIds, this.gnn);
398
+ // Convert path to results
399
+ const results = [];
400
+ for (const id of path) {
401
+ const pattern = this.contextPatterns.find(p => p.id === id);
402
+ if (pattern) {
403
+ const score = this.cosineSimilarity(start, pattern.embedding);
404
+ results.push({ pattern, score });
405
+ }
406
+ }
407
+ return results.slice(0, k);
408
+ }
409
+ /**
410
+ * Train on feedback (success/failure)
411
+ */
412
+ async train(feedback) {
413
+ const startTime = Date.now();
414
+ let totalReward = 0;
415
+ let totalLoss = 0;
416
+ for (const fb of feedback) {
417
+ totalReward += fb.reward;
418
+ if (fb.path && fb.path.length > 1) {
419
+ // Train RL navigator
420
+ this.navigator.trainOnPath(fb.path, fb.reward, this.gnn);
421
+ // Calculate loss (for metrics)
422
+ const expectedReward = fb.reward;
423
+ const predictedReward = fb.reward > 0.5 ? 1.0 : 0.0;
424
+ totalLoss += Math.abs(expectedReward - predictedReward);
425
+ }
426
+ }
427
+ const duration = Date.now() - startTime;
428
+ return {
429
+ samplesProcessed: feedback.length,
430
+ averageReward: totalReward / feedback.length,
431
+ loss: totalLoss / feedback.length,
432
+ duration,
433
+ };
434
+ }
435
+ findNearest(query, patterns) {
436
+ if (patterns.length === 0)
437
+ return null;
438
+ let best = patterns[0];
439
+ let bestScore = this.cosineSimilarity(query, best.embedding);
440
+ for (let i = 1; i < patterns.length; i++) {
441
+ const score = this.cosineSimilarity(query, patterns[i].embedding);
442
+ if (score > bestScore) {
443
+ bestScore = score;
444
+ best = patterns[i];
445
+ }
446
+ }
447
+ return best;
448
+ }
449
+ fallbackSearch(query, targets, k) {
450
+ const results = targets.map(pattern => ({
451
+ pattern,
452
+ score: this.cosineSimilarity(query, pattern.embedding),
453
+ }));
454
+ results.sort((a, b) => b.score - a.score);
455
+ return results.slice(0, k);
456
+ }
457
+ cosineSimilarity(a, b) {
458
+ let dotProduct = 0;
459
+ let normA = 0;
460
+ let normB = 0;
461
+ for (let i = 0; i < a.length; i++) {
462
+ dotProduct += a[i] * b[i];
463
+ normA += a[i] * a[i];
464
+ normB += b[i] * b[i];
465
+ }
466
+ return dotProduct / (Math.sqrt(normA) * Math.sqrt(normB));
467
+ }
468
+ }
469
+ exports.NeuralEnhancementLayer = NeuralEnhancementLayer;
470
+ /**
471
+ * Neural Pattern Store - Enhanced pattern store with neural capabilities
472
+ *
473
+ * Wraps an existing IPatternStore with neural enhancements:
474
+ * - Attention-based query enhancement
475
+ * - GNN-based pattern relationships
476
+ * - RL-based optimal search paths
477
+ */
478
+ class NeuralPatternStore {
479
+ constructor(baseStore, neural) {
480
+ this.patterns = [];
481
+ this.baseStore = baseStore;
482
+ this.neural = neural;
483
+ }
484
+ async initialize() {
485
+ await this.baseStore.initialize();
486
+ await this.rebuildNeuralGraph();
487
+ }
488
+ async storePattern(pattern) {
489
+ await this.baseStore.storePattern(pattern);
490
+ this.patterns.push(pattern);
491
+ await this.rebuildNeuralGraph();
492
+ }
493
+ async storeBatch(patterns) {
494
+ await this.baseStore.storeBatch(patterns);
495
+ this.patterns.push(...patterns);
496
+ await this.rebuildNeuralGraph();
497
+ }
498
+ /**
499
+ * Enhanced search with neural capabilities
500
+ */
501
+ async searchSimilar(queryEmbedding, options) {
502
+ const useAttention = options?.useAttention !== false;
503
+ const useGNN = options?.useGNN !== false;
504
+ const k = options?.k || 5;
505
+ // Get base results from underlying store
506
+ const baseResults = await this.baseStore.searchSimilar(queryEmbedding, options);
507
+ if (!useAttention && !useGNN) {
508
+ return baseResults;
509
+ }
510
+ // Apply attention enhancement
511
+ let enhancedQuery = queryEmbedding;
512
+ if (useAttention && this.patterns.length > 0) {
513
+ const attention = await this.neural.enhanceQuery(queryEmbedding);
514
+ enhancedQuery = attention.enhancedEmbedding;
515
+ }
516
+ // Use RL-based navigation if enabled
517
+ if (useGNN && this.patterns.length > 0) {
518
+ const targetPatterns = baseResults.map(r => r.pattern);
519
+ return await this.neural.findOptimalPath(enhancedQuery, targetPatterns, k);
520
+ }
521
+ // Re-score with enhanced query
522
+ const reranked = baseResults.map(result => ({
523
+ pattern: result.pattern,
524
+ score: this.cosineSimilarity(enhancedQuery, result.pattern.embedding),
525
+ }));
526
+ reranked.sort((a, b) => b.score - a.score);
527
+ return reranked.slice(0, k);
528
+ }
529
+ async getPattern(id) {
530
+ return this.baseStore.getPattern(id);
531
+ }
532
+ async deletePattern(id) {
533
+ const result = await this.baseStore.deletePattern(id);
534
+ if (result) {
535
+ this.patterns = this.patterns.filter(p => p.id !== id);
536
+ await this.rebuildNeuralGraph();
537
+ }
538
+ return result;
539
+ }
540
+ async recordUsage(id) {
541
+ return this.baseStore.recordUsage(id);
542
+ }
543
+ async buildIndex() {
544
+ await this.baseStore.buildIndex();
545
+ await this.rebuildNeuralGraph();
546
+ }
547
+ async optimize() {
548
+ return this.baseStore.optimize();
549
+ }
550
+ async getStats() {
551
+ const baseStats = await this.baseStore.getStats();
552
+ return {
553
+ ...baseStats,
554
+ neuralEnhanced: true,
555
+ patternsInGraph: this.patterns.length,
556
+ };
557
+ }
558
+ async clear() {
559
+ await this.baseStore.clear();
560
+ this.patterns = [];
561
+ }
562
+ async shutdown() {
563
+ return this.baseStore.shutdown();
564
+ }
565
+ getImplementationInfo() {
566
+ return {
567
+ ...this.baseStore.getImplementationInfo(),
568
+ neuralLayer: {
569
+ enabled: true,
570
+ features: ['multi-head-attention', 'gnn', 'rl-navigation'],
571
+ },
572
+ };
573
+ }
574
+ /**
575
+ * Train neural layer on feedback
576
+ */
577
+ async trainNeural(feedback) {
578
+ return this.neural.train(feedback);
579
+ }
580
+ async rebuildNeuralGraph() {
581
+ if (this.patterns.length > 0) {
582
+ await this.neural.buildPatternGraph(this.patterns);
583
+ }
584
+ }
585
+ cosineSimilarity(a, b) {
586
+ let dotProduct = 0;
587
+ let normA = 0;
588
+ let normB = 0;
589
+ for (let i = 0; i < a.length; i++) {
590
+ dotProduct += a[i] * b[i];
591
+ normA += a[i] * a[i];
592
+ normB += b[i] * b[i];
593
+ }
594
+ return dotProduct / (Math.sqrt(normA) * Math.sqrt(normB));
595
+ }
596
+ }
597
+ exports.NeuralPatternStore = NeuralPatternStore;
598
+ //# sourceMappingURL=NeuralEnhancement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NeuralEnhancement.js","sourceRoot":"","sources":["../../../src/core/memory/NeuralEnhancement.ts"],"names":[],"mappings":"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"}