agentic-qe 1.1.0 → 1.2.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 (297) hide show
  1. package/.claude/agents/qe-coverage-analyzer.md +8 -0
  2. package/.claude/agents/qe-flaky-test-hunter.md +9 -1
  3. package/.claude/agents/qe-test-generator.md +7 -0
  4. package/.claude/agents/reasoning/agent.md +816 -0
  5. package/.claude/agents/reasoning/goal-planner.md +73 -0
  6. package/.claude/settings.json +21 -20
  7. package/.claude/skills/README.md +124 -0
  8. package/.claude/skills/agentdb-advanced/SKILL.md +550 -0
  9. package/.claude/skills/agentdb-learning/SKILL.md +545 -0
  10. package/.claude/skills/agentdb-memory-patterns/SKILL.md +339 -0
  11. package/.claude/skills/agentdb-optimization/SKILL.md +509 -0
  12. package/.claude/skills/agentdb-vector-search/SKILL.md +339 -0
  13. package/.claude/skills/agentic-quality-engineering/SKILL.md +604 -0
  14. package/.claude/skills/api-testing-patterns/SKILL.md +686 -0
  15. package/.claude/skills/bug-reporting-excellence/SKILL.md +632 -0
  16. package/.claude/skills/code-review-quality/SKILL.md +683 -0
  17. package/.claude/skills/consultancy-practices/SKILL.md +540 -0
  18. package/.claude/skills/context-driven-testing/SKILL.md +466 -0
  19. package/.claude/skills/exploratory-testing-advanced/SKILL.md +676 -0
  20. package/.claude/skills/flow-nexus-neural/SKILL.md +738 -0
  21. package/.claude/skills/flow-nexus-platform/SKILL.md +1157 -0
  22. package/.claude/skills/flow-nexus-swarm/SKILL.md +610 -0
  23. package/.claude/skills/github-code-review/SKILL.md +1140 -0
  24. package/.claude/skills/github-multi-repo/SKILL.md +874 -0
  25. package/.claude/skills/github-project-management/SKILL.md +1277 -0
  26. package/.claude/skills/github-release-management/SKILL.md +1081 -0
  27. package/.claude/skills/github-workflow-automation/SKILL.md +1065 -0
  28. package/.claude/skills/hive-mind-advanced/SKILL.md +712 -0
  29. package/.claude/skills/holistic-testing-pact/SKILL.md +225 -0
  30. package/.claude/skills/hooks-automation/SKILL.md +1201 -0
  31. package/.claude/skills/pair-programming/SKILL.md +1202 -0
  32. package/.claude/skills/performance-analysis/SKILL.md +563 -0
  33. package/.claude/skills/performance-testing/SKILL.md +662 -0
  34. package/.claude/skills/quality-metrics/SKILL.md +592 -0
  35. package/.claude/skills/reasoningbank-agentdb/SKILL.md +446 -0
  36. package/.claude/skills/reasoningbank-intelligence/SKILL.md +201 -0
  37. package/.claude/skills/refactoring-patterns/SKILL.md +778 -0
  38. package/.claude/skills/risk-based-testing/SKILL.md +721 -0
  39. package/.claude/skills/security-testing/SKILL.md +651 -0
  40. package/.claude/skills/skill-builder/SKILL.md +910 -0
  41. package/.claude/skills/sparc-methodology/SKILL.md +1115 -0
  42. package/.claude/skills/stream-chain/SKILL.md +563 -0
  43. package/.claude/skills/swarm-advanced/SKILL.md +973 -0
  44. package/.claude/skills/swarm-orchestration/SKILL.md +179 -0
  45. package/.claude/skills/tdd-london-chicago/SKILL.md +567 -0
  46. package/.claude/skills/technical-writing/SKILL.md +235 -0
  47. package/.claude/skills/test-automation-strategy/SKILL.md +842 -0
  48. package/.claude/skills/verification-quality/SKILL.md +649 -0
  49. package/.claude/skills/xp-practices/SKILL.md +671 -0
  50. package/.claude/statusline-command.sh +176 -0
  51. package/CHANGELOG.md +536 -1
  52. package/README.md +92 -3
  53. package/config/improvement-loop.config.ts +323 -0
  54. package/config/neural-agent.config.ts +197 -0
  55. package/dist/adapters/MemoryStoreAdapter.d.ts +16 -16
  56. package/dist/adapters/MemoryStoreAdapter.d.ts.map +1 -1
  57. package/dist/adapters/MemoryStoreAdapter.js +16 -16
  58. package/dist/adapters/MemoryStoreAdapter.js.map +1 -1
  59. package/dist/agents/BaseAgent.d.ts +69 -0
  60. package/dist/agents/BaseAgent.d.ts.map +1 -1
  61. package/dist/agents/BaseAgent.js +382 -1
  62. package/dist/agents/BaseAgent.js.map +1 -1
  63. package/dist/agents/CoverageAnalyzerAgent.d.ts +13 -2
  64. package/dist/agents/CoverageAnalyzerAgent.d.ts.map +1 -1
  65. package/dist/agents/CoverageAnalyzerAgent.js +105 -6
  66. package/dist/agents/CoverageAnalyzerAgent.js.map +1 -1
  67. package/dist/agents/DeploymentReadinessAgent.d.ts.map +1 -1
  68. package/dist/agents/DeploymentReadinessAgent.js +13 -13
  69. package/dist/agents/DeploymentReadinessAgent.js.map +1 -1
  70. package/dist/agents/FlakyTestHunterAgent.d.ts +28 -0
  71. package/dist/agents/FlakyTestHunterAgent.d.ts.map +1 -1
  72. package/dist/agents/FlakyTestHunterAgent.js +159 -4
  73. package/dist/agents/FlakyTestHunterAgent.js.map +1 -1
  74. package/dist/agents/FleetCommanderAgent.d.ts.map +1 -1
  75. package/dist/agents/FleetCommanderAgent.js +2 -2
  76. package/dist/agents/FleetCommanderAgent.js.map +1 -1
  77. package/dist/agents/LearningAgent.d.ts +14 -5
  78. package/dist/agents/LearningAgent.d.ts.map +1 -1
  79. package/dist/agents/LearningAgent.js +36 -16
  80. package/dist/agents/LearningAgent.js.map +1 -1
  81. package/dist/agents/NeuralAgentExtension.d.ts +117 -0
  82. package/dist/agents/NeuralAgentExtension.d.ts.map +1 -0
  83. package/dist/agents/NeuralAgentExtension.js +288 -0
  84. package/dist/agents/NeuralAgentExtension.js.map +1 -0
  85. package/dist/agents/PerformanceTesterAgent.d.ts.map +1 -1
  86. package/dist/agents/PerformanceTesterAgent.js +4 -3
  87. package/dist/agents/PerformanceTesterAgent.js.map +1 -1
  88. package/dist/agents/ProductionIntelligenceAgent.js +7 -7
  89. package/dist/agents/ProductionIntelligenceAgent.js.map +1 -1
  90. package/dist/agents/QualityAnalyzerAgent.d.ts.map +1 -1
  91. package/dist/agents/QualityAnalyzerAgent.js +2 -2
  92. package/dist/agents/QualityAnalyzerAgent.js.map +1 -1
  93. package/dist/agents/QualityGateAgent.js +5 -5
  94. package/dist/agents/QualityGateAgent.js.map +1 -1
  95. package/dist/agents/RegressionRiskAnalyzerAgent.js +7 -7
  96. package/dist/agents/RegressionRiskAnalyzerAgent.js.map +1 -1
  97. package/dist/agents/RequirementsValidatorAgent.d.ts.map +1 -1
  98. package/dist/agents/RequirementsValidatorAgent.js +1 -1
  99. package/dist/agents/RequirementsValidatorAgent.js.map +1 -1
  100. package/dist/agents/SecurityScannerAgent.js +6 -6
  101. package/dist/agents/SecurityScannerAgent.js.map +1 -1
  102. package/dist/agents/TestExecutorAgent.d.ts.map +1 -1
  103. package/dist/agents/TestExecutorAgent.js +1 -3
  104. package/dist/agents/TestExecutorAgent.js.map +1 -1
  105. package/dist/agents/TestGeneratorAgent.d.ts +15 -4
  106. package/dist/agents/TestGeneratorAgent.d.ts.map +1 -1
  107. package/dist/agents/TestGeneratorAgent.js +165 -43
  108. package/dist/agents/TestGeneratorAgent.js.map +1 -1
  109. package/dist/agents/mixins/NeuralCapableMixin.d.ts +130 -0
  110. package/dist/agents/mixins/NeuralCapableMixin.d.ts.map +1 -0
  111. package/dist/agents/mixins/NeuralCapableMixin.js +358 -0
  112. package/dist/agents/mixins/NeuralCapableMixin.js.map +1 -0
  113. package/dist/agents/mixins/QUICCapableMixin.d.ts +34 -0
  114. package/dist/agents/mixins/QUICCapableMixin.d.ts.map +1 -0
  115. package/dist/agents/mixins/QUICCapableMixin.js +346 -0
  116. package/dist/agents/mixins/QUICCapableMixin.js.map +1 -0
  117. package/dist/cli/commands/agent/index.d.ts +5 -0
  118. package/dist/cli/commands/agent/index.d.ts.map +1 -1
  119. package/dist/cli/commands/agent/index.js +11 -6
  120. package/dist/cli/commands/agent/index.js.map +1 -1
  121. package/dist/cli/commands/agent/kill.d.ts +13 -0
  122. package/dist/cli/commands/agent/kill.d.ts.map +1 -0
  123. package/dist/cli/commands/agent/kill.js +65 -0
  124. package/dist/cli/commands/agent/kill.js.map +1 -0
  125. package/dist/cli/commands/agent/list.d.ts +19 -0
  126. package/dist/cli/commands/agent/list.d.ts.map +1 -0
  127. package/dist/cli/commands/agent/list.js +92 -0
  128. package/dist/cli/commands/agent/list.js.map +1 -0
  129. package/dist/cli/commands/agent/logs.d.ts +14 -0
  130. package/dist/cli/commands/agent/logs.d.ts.map +1 -0
  131. package/dist/cli/commands/agent/logs.js +77 -0
  132. package/dist/cli/commands/agent/logs.js.map +1 -0
  133. package/dist/cli/commands/agent/metrics.d.ts +21 -0
  134. package/dist/cli/commands/agent/metrics.d.ts.map +1 -0
  135. package/dist/cli/commands/agent/metrics.js +87 -0
  136. package/dist/cli/commands/agent/metrics.js.map +1 -0
  137. package/dist/cli/commands/agent/spawn.d.ts +28 -0
  138. package/dist/cli/commands/agent/spawn.d.ts.map +1 -0
  139. package/dist/cli/commands/agent/spawn.js +83 -0
  140. package/dist/cli/commands/agent/spawn.js.map +1 -0
  141. package/dist/cli/commands/init.d.ts +24 -0
  142. package/dist/cli/commands/init.d.ts.map +1 -1
  143. package/dist/cli/commands/init.js +475 -7
  144. package/dist/cli/commands/init.js.map +1 -1
  145. package/dist/cli/commands/skills/index.d.ts +51 -0
  146. package/dist/cli/commands/skills/index.d.ts.map +1 -0
  147. package/dist/cli/commands/skills/index.js +364 -0
  148. package/dist/cli/commands/skills/index.js.map +1 -0
  149. package/dist/cli/index.js +92 -1
  150. package/dist/cli/index.js.map +1 -1
  151. package/dist/core/EventBus.d.ts +38 -0
  152. package/dist/core/EventBus.d.ts.map +1 -1
  153. package/dist/core/EventBus.js +176 -31
  154. package/dist/core/EventBus.js.map +1 -1
  155. package/dist/core/FleetManager.d.ts +35 -1
  156. package/dist/core/FleetManager.d.ts.map +1 -1
  157. package/dist/core/FleetManager.js +121 -45
  158. package/dist/core/FleetManager.js.map +1 -1
  159. package/dist/core/MemoryManager.d.ts +19 -1
  160. package/dist/core/MemoryManager.d.ts.map +1 -1
  161. package/dist/core/MemoryManager.js +25 -1
  162. package/dist/core/MemoryManager.js.map +1 -1
  163. package/dist/core/embeddings/EmbeddingCache.d.ts +134 -0
  164. package/dist/core/embeddings/EmbeddingCache.d.ts.map +1 -0
  165. package/dist/core/embeddings/EmbeddingCache.js +239 -0
  166. package/dist/core/embeddings/EmbeddingCache.js.map +1 -0
  167. package/dist/core/embeddings/EmbeddingGenerator.d.ts +224 -0
  168. package/dist/core/embeddings/EmbeddingGenerator.d.ts.map +1 -0
  169. package/dist/core/embeddings/EmbeddingGenerator.js +459 -0
  170. package/dist/core/embeddings/EmbeddingGenerator.js.map +1 -0
  171. package/dist/core/embeddings/index.d.ts +15 -0
  172. package/dist/core/embeddings/index.d.ts.map +1 -0
  173. package/dist/core/embeddings/index.js +22 -0
  174. package/dist/core/embeddings/index.js.map +1 -0
  175. package/dist/core/memory/AgentDBIntegration.d.ts +35 -0
  176. package/dist/core/memory/AgentDBIntegration.d.ts.map +1 -0
  177. package/dist/core/memory/AgentDBIntegration.js +75 -0
  178. package/dist/core/memory/AgentDBIntegration.js.map +1 -0
  179. package/dist/core/memory/AgentDBManager.d.ts +200 -0
  180. package/dist/core/memory/AgentDBManager.d.ts.map +1 -0
  181. package/dist/core/memory/AgentDBManager.js +263 -0
  182. package/dist/core/memory/AgentDBManager.js.map +1 -0
  183. package/dist/core/memory/AgentDBService.d.ts +160 -0
  184. package/dist/core/memory/AgentDBService.d.ts.map +1 -0
  185. package/dist/core/memory/AgentDBService.js +450 -0
  186. package/dist/core/memory/AgentDBService.js.map +1 -0
  187. package/dist/core/memory/RealAgentDBAdapter.d.ts +51 -0
  188. package/dist/core/memory/RealAgentDBAdapter.d.ts.map +1 -0
  189. package/dist/core/memory/RealAgentDBAdapter.js +230 -0
  190. package/dist/core/memory/RealAgentDBAdapter.js.map +1 -0
  191. package/dist/core/memory/ReasoningBankAdapter.d.ts +58 -0
  192. package/dist/core/memory/ReasoningBankAdapter.d.ts.map +1 -0
  193. package/dist/core/memory/ReasoningBankAdapter.js +80 -0
  194. package/dist/core/memory/ReasoningBankAdapter.js.map +1 -0
  195. package/dist/core/memory/SwarmMemoryManager.d.ts +75 -3
  196. package/dist/core/memory/SwarmMemoryManager.d.ts.map +1 -1
  197. package/dist/core/memory/SwarmMemoryManager.js +236 -52
  198. package/dist/core/memory/SwarmMemoryManager.js.map +1 -1
  199. package/dist/core/memory/index.d.ts +4 -0
  200. package/dist/core/memory/index.d.ts.map +1 -1
  201. package/dist/core/memory/index.js +9 -1
  202. package/dist/core/memory/index.js.map +1 -1
  203. package/dist/core/neural/NeuralTrainer.d.ts +137 -0
  204. package/dist/core/neural/NeuralTrainer.d.ts.map +1 -0
  205. package/dist/core/neural/NeuralTrainer.js +543 -0
  206. package/dist/core/neural/NeuralTrainer.js.map +1 -0
  207. package/dist/core/neural/index.d.ts +8 -0
  208. package/dist/core/neural/index.d.ts.map +1 -0
  209. package/dist/core/neural/index.js +24 -0
  210. package/dist/core/neural/index.js.map +1 -0
  211. package/dist/core/neural/types.d.ts +216 -0
  212. package/dist/core/neural/types.d.ts.map +1 -0
  213. package/dist/core/neural/types.js +8 -0
  214. package/dist/core/neural/types.js.map +1 -0
  215. package/dist/core/security/CertificateValidator.d.ts +130 -0
  216. package/dist/core/security/CertificateValidator.d.ts.map +1 -0
  217. package/dist/core/security/CertificateValidator.js +376 -0
  218. package/dist/core/security/CertificateValidator.js.map +1 -0
  219. package/dist/core/transport/QUICTransport.d.ts +62 -0
  220. package/dist/core/transport/QUICTransport.d.ts.map +1 -0
  221. package/dist/core/transport/QUICTransport.js +381 -0
  222. package/dist/core/transport/QUICTransport.js.map +1 -0
  223. package/dist/core/transport/SecureQUICTransport.d.ts +71 -0
  224. package/dist/core/transport/SecureQUICTransport.d.ts.map +1 -0
  225. package/dist/core/transport/SecureQUICTransport.js +253 -0
  226. package/dist/core/transport/SecureQUICTransport.js.map +1 -0
  227. package/dist/learning/AdvancedFeatureExtractor.d.ts +123 -0
  228. package/dist/learning/AdvancedFeatureExtractor.d.ts.map +1 -0
  229. package/dist/learning/AdvancedFeatureExtractor.js +423 -0
  230. package/dist/learning/AdvancedFeatureExtractor.js.map +1 -0
  231. package/dist/learning/FlakyPredictionModel.d.ts +11 -1
  232. package/dist/learning/FlakyPredictionModel.d.ts.map +1 -1
  233. package/dist/learning/FlakyPredictionModel.js +82 -35
  234. package/dist/learning/FlakyPredictionModel.js.map +1 -1
  235. package/dist/learning/FlakyTestDetector.d.ts +9 -0
  236. package/dist/learning/FlakyTestDetector.d.ts.map +1 -1
  237. package/dist/learning/FlakyTestDetector.js +28 -6
  238. package/dist/learning/FlakyTestDetector.js.map +1 -1
  239. package/dist/learning/ImprovementLoop.d.ts +16 -2
  240. package/dist/learning/ImprovementLoop.d.ts.map +1 -1
  241. package/dist/learning/ImprovementLoop.js +67 -8
  242. package/dist/learning/ImprovementLoop.js.map +1 -1
  243. package/dist/learning/ImprovementWorker.d.ts +83 -0
  244. package/dist/learning/ImprovementWorker.d.ts.map +1 -0
  245. package/dist/learning/ImprovementWorker.js +164 -0
  246. package/dist/learning/ImprovementWorker.js.map +1 -0
  247. package/dist/learning/NeuralPatternMatcher.d.ts +184 -0
  248. package/dist/learning/NeuralPatternMatcher.d.ts.map +1 -0
  249. package/dist/learning/NeuralPatternMatcher.js +702 -0
  250. package/dist/learning/NeuralPatternMatcher.js.map +1 -0
  251. package/dist/learning/NeuralTrainer.d.ts +209 -0
  252. package/dist/learning/NeuralTrainer.d.ts.map +1 -0
  253. package/dist/learning/NeuralTrainer.js +478 -0
  254. package/dist/learning/NeuralTrainer.js.map +1 -0
  255. package/dist/learning/index.d.ts +13 -7
  256. package/dist/learning/index.d.ts.map +1 -1
  257. package/dist/learning/index.js +27 -11
  258. package/dist/learning/index.js.map +1 -1
  259. package/dist/learning/types.d.ts +1 -0
  260. package/dist/learning/types.d.ts.map +1 -1
  261. package/dist/learning/types.js +16 -0
  262. package/dist/learning/types.js.map +1 -1
  263. package/dist/mcp/MCPToolRegistry.d.ts +34 -0
  264. package/dist/mcp/MCPToolRegistry.d.ts.map +1 -0
  265. package/dist/mcp/MCPToolRegistry.js +48 -0
  266. package/dist/mcp/MCPToolRegistry.js.map +1 -0
  267. package/dist/mcp/server.d.ts +4 -4
  268. package/dist/mcp/services/AgentRegistry.d.ts.map +1 -1
  269. package/dist/mcp/services/AgentRegistry.js +7 -1
  270. package/dist/mcp/services/AgentRegistry.js.map +1 -1
  271. package/dist/transport/QUICTransport.d.ts +340 -0
  272. package/dist/transport/QUICTransport.d.ts.map +1 -0
  273. package/dist/transport/QUICTransport.js +814 -0
  274. package/dist/transport/QUICTransport.js.map +1 -0
  275. package/dist/transport/UDPTransport.d.ts +348 -0
  276. package/dist/transport/UDPTransport.d.ts.map +1 -0
  277. package/dist/transport/UDPTransport.js +820 -0
  278. package/dist/transport/UDPTransport.js.map +1 -0
  279. package/dist/types/errors.d.ts +1 -1
  280. package/dist/types/index.d.ts +37 -0
  281. package/dist/types/index.d.ts.map +1 -1
  282. package/dist/types/index.js +2 -0
  283. package/dist/types/index.js.map +1 -1
  284. package/dist/types/quic.d.ts +339 -0
  285. package/dist/types/quic.d.ts.map +1 -0
  286. package/dist/types/quic.js +48 -0
  287. package/dist/types/quic.js.map +1 -0
  288. package/dist/utils/Config.js +1 -1
  289. package/dist/utils/Config.js.map +1 -1
  290. package/dist/utils/Database.d.ts +14 -0
  291. package/dist/utils/Database.d.ts.map +1 -1
  292. package/dist/utils/Database.js +51 -4
  293. package/dist/utils/Database.js.map +1 -1
  294. package/dist/utils/Logger.d.ts.map +1 -1
  295. package/dist/utils/Logger.js +111 -26
  296. package/dist/utils/Logger.js.map +1 -1
  297. package/package.json +30 -7
@@ -0,0 +1,134 @@
1
+ /**
2
+ * Embedding Cache - LRU cache for embedding vectors
3
+ *
4
+ * Features:
5
+ * - LRU eviction policy
6
+ * - Separate namespaces for text and code
7
+ * - Memory-efficient storage
8
+ * - Cache statistics
9
+ *
10
+ * Performance:
11
+ * - Get: O(1)
12
+ * - Set: O(1)
13
+ * - Memory: ~4KB per 1000 cached embeddings (256D)
14
+ *
15
+ * @module EmbeddingCache
16
+ */
17
+ /**
18
+ * Cache statistics
19
+ */
20
+ export interface CacheStats {
21
+ /** Text embeddings cached */
22
+ textCount: number;
23
+ /** Code embeddings cached */
24
+ codeCount: number;
25
+ /** Total entries */
26
+ totalCount: number;
27
+ /** Cache hits */
28
+ hits: number;
29
+ /** Cache misses */
30
+ misses: number;
31
+ /** Hit rate percentage */
32
+ hitRate: number;
33
+ /** Memory usage in bytes */
34
+ memoryUsage: number;
35
+ /** Maximum capacity */
36
+ maxSize: number;
37
+ }
38
+ /**
39
+ * Embedding Cache
40
+ *
41
+ * LRU cache for storing embedding vectors with separate namespaces
42
+ * for text and code embeddings.
43
+ */
44
+ export declare class EmbeddingCache {
45
+ private maxSize;
46
+ private textCache;
47
+ private codeCache;
48
+ private hits;
49
+ private misses;
50
+ /**
51
+ * Create a new embedding cache
52
+ *
53
+ * @param maxSize - Maximum number of entries per namespace (default: 10000)
54
+ */
55
+ constructor(maxSize?: number);
56
+ /**
57
+ * Get cached embedding
58
+ *
59
+ * @param key - Cache key
60
+ * @param type - Namespace ('text' | 'code')
61
+ * @returns Cached embedding or null
62
+ */
63
+ get(key: string, type?: 'text' | 'code'): number[] | null;
64
+ /**
65
+ * Set cached embedding
66
+ *
67
+ * @param key - Cache key
68
+ * @param embedding - Vector embedding
69
+ * @param type - Namespace ('text' | 'code')
70
+ */
71
+ set(key: string, embedding: number[], type?: 'text' | 'code'): void;
72
+ /**
73
+ * Check if key exists
74
+ *
75
+ * @param key - Cache key
76
+ * @param type - Namespace
77
+ * @returns True if key exists
78
+ */
79
+ has(key: string, type?: 'text' | 'code'): boolean;
80
+ /**
81
+ * Delete cached entry
82
+ *
83
+ * @param key - Cache key
84
+ * @param type - Namespace
85
+ * @returns True if deleted
86
+ */
87
+ delete(key: string, type?: 'text' | 'code'): boolean;
88
+ /**
89
+ * Clear cache
90
+ *
91
+ * @param type - Type to clear ('text' | 'code' | 'all')
92
+ */
93
+ clear(type?: 'text' | 'code' | 'all'): void;
94
+ /**
95
+ * Evict least recently used entry
96
+ *
97
+ * @param cache - Cache to evict from
98
+ */
99
+ private evictLRU;
100
+ /**
101
+ * Get cache statistics
102
+ *
103
+ * @returns Cache stats
104
+ */
105
+ getStats(): CacheStats;
106
+ /**
107
+ * Get most frequently accessed entries
108
+ *
109
+ * @param type - Namespace
110
+ * @param limit - Number of entries to return
111
+ * @returns Array of [key, accessCount] tuples
112
+ */
113
+ getMostAccessed(type?: 'text' | 'code', limit?: number): Array<[string, number]>;
114
+ /**
115
+ * Get cache size in bytes
116
+ *
117
+ * @param type - Namespace ('text' | 'code' | 'all')
118
+ * @returns Memory usage in bytes
119
+ */
120
+ getSize(type?: 'text' | 'code' | 'all'): number;
121
+ /**
122
+ * Optimize cache by removing least used entries
123
+ *
124
+ * @param threshold - Minimum access count to keep
125
+ * @param type - Namespace ('text' | 'code' | 'all')
126
+ * @returns Number of entries removed
127
+ */
128
+ optimize(threshold?: number, type?: 'text' | 'code' | 'all'): number;
129
+ /**
130
+ * Reset statistics
131
+ */
132
+ resetStats(): void;
133
+ }
134
+ //# sourceMappingURL=EmbeddingCache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EmbeddingCache.d.ts","sourceRoot":"","sources":["../../../src/core/embeddings/EmbeddingCache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAmBH;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;IAElB,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;IAElB,oBAAoB;IACpB,UAAU,EAAE,MAAM,CAAC;IAEnB,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;IAEb,mBAAmB;IACnB,MAAM,EAAE,MAAM,CAAC;IAEf,0BAA0B;IAC1B,OAAO,EAAE,MAAM,CAAC;IAEhB,4BAA4B;IAC5B,WAAW,EAAE,MAAM,CAAC;IAEpB,uBAAuB;IACvB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;GAKG;AACH,qBAAa,cAAc;IAWb,OAAO,CAAC,OAAO;IAV3B,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,MAAM,CAAa;IAE3B;;;;OAIG;gBACiB,OAAO,GAAE,MAAc;IAK3C;;;;;;OAMG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,GAAG,MAAe,GAAG,MAAM,EAAE,GAAG,IAAI;IAqBjE;;;;;;OAMG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,IAAI,GAAE,MAAM,GAAG,MAAe,GAAG,IAAI;IAoB3E;;;;;;OAMG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,GAAG,MAAe,GAAG,OAAO;IAKzD;;;;;;OAMG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,GAAG,MAAe,GAAG,OAAO;IAK5D;;;;OAIG;IACH,KAAK,CAAC,IAAI,GAAE,MAAM,GAAG,MAAM,GAAG,KAAa,GAAG,IAAI;IAalD;;;;OAIG;IACH,OAAO,CAAC,QAAQ;IAQhB;;;;OAIG;IACH,QAAQ,IAAI,UAAU;IA4BtB;;;;;;OAMG;IACH,eAAe,CAAC,IAAI,GAAE,MAAM,GAAG,MAAe,EAAE,KAAK,GAAE,MAAW,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAU5F;;;;;OAKG;IACH,OAAO,CAAC,IAAI,GAAE,MAAM,GAAG,MAAM,GAAG,KAAa,GAAG,MAAM;IAkBtD;;;;;;OAMG;IACH,QAAQ,CAAC,SAAS,GAAE,MAAU,EAAE,IAAI,GAAE,MAAM,GAAG,MAAM,GAAG,KAAa,GAAG,MAAM;IA0B9E;;OAEG;IACH,UAAU,IAAI,IAAI;CAInB"}
@@ -0,0 +1,239 @@
1
+ "use strict";
2
+ /**
3
+ * Embedding Cache - LRU cache for embedding vectors
4
+ *
5
+ * Features:
6
+ * - LRU eviction policy
7
+ * - Separate namespaces for text and code
8
+ * - Memory-efficient storage
9
+ * - Cache statistics
10
+ *
11
+ * Performance:
12
+ * - Get: O(1)
13
+ * - Set: O(1)
14
+ * - Memory: ~4KB per 1000 cached embeddings (256D)
15
+ *
16
+ * @module EmbeddingCache
17
+ */
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.EmbeddingCache = void 0;
20
+ /**
21
+ * Embedding Cache
22
+ *
23
+ * LRU cache for storing embedding vectors with separate namespaces
24
+ * for text and code embeddings.
25
+ */
26
+ class EmbeddingCache {
27
+ /**
28
+ * Create a new embedding cache
29
+ *
30
+ * @param maxSize - Maximum number of entries per namespace (default: 10000)
31
+ */
32
+ constructor(maxSize = 10000) {
33
+ this.maxSize = maxSize;
34
+ this.hits = 0;
35
+ this.misses = 0;
36
+ this.textCache = new Map();
37
+ this.codeCache = new Map();
38
+ }
39
+ /**
40
+ * Get cached embedding
41
+ *
42
+ * @param key - Cache key
43
+ * @param type - Namespace ('text' | 'code')
44
+ * @returns Cached embedding or null
45
+ */
46
+ get(key, type = 'text') {
47
+ const cache = type === 'text' ? this.textCache : this.codeCache;
48
+ const entry = cache.get(key);
49
+ if (entry) {
50
+ // Update access stats
51
+ entry.lastAccess = Date.now();
52
+ entry.accessCount++;
53
+ // Move to end (most recently used)
54
+ cache.delete(key);
55
+ cache.set(key, entry);
56
+ this.hits++;
57
+ return entry.embedding;
58
+ }
59
+ this.misses++;
60
+ return null;
61
+ }
62
+ /**
63
+ * Set cached embedding
64
+ *
65
+ * @param key - Cache key
66
+ * @param embedding - Vector embedding
67
+ * @param type - Namespace ('text' | 'code')
68
+ */
69
+ set(key, embedding, type = 'text') {
70
+ const cache = type === 'text' ? this.textCache : this.codeCache;
71
+ // Check if we need to evict
72
+ if (cache.size >= this.maxSize && !cache.has(key)) {
73
+ this.evictLRU(cache);
74
+ }
75
+ // Calculate entry size (rough estimate)
76
+ const size = embedding.length * 8 + key.length * 2 + 24; // 8 bytes per number, 2 per char, 24 overhead
77
+ // Store entry
78
+ cache.set(key, {
79
+ embedding: [...embedding], // Clone array
80
+ lastAccess: Date.now(),
81
+ accessCount: 0,
82
+ size
83
+ });
84
+ }
85
+ /**
86
+ * Check if key exists
87
+ *
88
+ * @param key - Cache key
89
+ * @param type - Namespace
90
+ * @returns True if key exists
91
+ */
92
+ has(key, type = 'text') {
93
+ const cache = type === 'text' ? this.textCache : this.codeCache;
94
+ return cache.has(key);
95
+ }
96
+ /**
97
+ * Delete cached entry
98
+ *
99
+ * @param key - Cache key
100
+ * @param type - Namespace
101
+ * @returns True if deleted
102
+ */
103
+ delete(key, type = 'text') {
104
+ const cache = type === 'text' ? this.textCache : this.codeCache;
105
+ return cache.delete(key);
106
+ }
107
+ /**
108
+ * Clear cache
109
+ *
110
+ * @param type - Type to clear ('text' | 'code' | 'all')
111
+ */
112
+ clear(type = 'all') {
113
+ if (type === 'text' || type === 'all') {
114
+ this.textCache.clear();
115
+ }
116
+ if (type === 'code' || type === 'all') {
117
+ this.codeCache.clear();
118
+ }
119
+ if (type === 'all') {
120
+ this.hits = 0;
121
+ this.misses = 0;
122
+ }
123
+ }
124
+ /**
125
+ * Evict least recently used entry
126
+ *
127
+ * @param cache - Cache to evict from
128
+ */
129
+ evictLRU(cache) {
130
+ // First entry is the least recently used (Map maintains insertion order)
131
+ const firstKey = cache.keys().next().value;
132
+ if (firstKey) {
133
+ cache.delete(firstKey);
134
+ }
135
+ }
136
+ /**
137
+ * Get cache statistics
138
+ *
139
+ * @returns Cache stats
140
+ */
141
+ getStats() {
142
+ const textCount = this.textCache.size;
143
+ const codeCount = this.codeCache.size;
144
+ const totalCount = textCount + codeCount;
145
+ const totalRequests = this.hits + this.misses;
146
+ const hitRate = totalRequests > 0 ? (this.hits / totalRequests) * 100 : 0;
147
+ // Calculate memory usage
148
+ let memoryUsage = 0;
149
+ for (const entry of this.textCache.values()) {
150
+ memoryUsage += entry.size;
151
+ }
152
+ for (const entry of this.codeCache.values()) {
153
+ memoryUsage += entry.size;
154
+ }
155
+ return {
156
+ textCount,
157
+ codeCount,
158
+ totalCount,
159
+ hits: this.hits,
160
+ misses: this.misses,
161
+ hitRate,
162
+ memoryUsage,
163
+ maxSize: this.maxSize * 2 // Total max size (both namespaces)
164
+ };
165
+ }
166
+ /**
167
+ * Get most frequently accessed entries
168
+ *
169
+ * @param type - Namespace
170
+ * @param limit - Number of entries to return
171
+ * @returns Array of [key, accessCount] tuples
172
+ */
173
+ getMostAccessed(type = 'text', limit = 10) {
174
+ const cache = type === 'text' ? this.textCache : this.codeCache;
175
+ const entries = Array.from(cache.entries());
176
+ return entries
177
+ .sort((a, b) => b[1].accessCount - a[1].accessCount)
178
+ .slice(0, limit)
179
+ .map(([key, entry]) => [key, entry.accessCount]);
180
+ }
181
+ /**
182
+ * Get cache size in bytes
183
+ *
184
+ * @param type - Namespace ('text' | 'code' | 'all')
185
+ * @returns Memory usage in bytes
186
+ */
187
+ getSize(type = 'all') {
188
+ let size = 0;
189
+ if (type === 'text' || type === 'all') {
190
+ for (const entry of this.textCache.values()) {
191
+ size += entry.size;
192
+ }
193
+ }
194
+ if (type === 'code' || type === 'all') {
195
+ for (const entry of this.codeCache.values()) {
196
+ size += entry.size;
197
+ }
198
+ }
199
+ return size;
200
+ }
201
+ /**
202
+ * Optimize cache by removing least used entries
203
+ *
204
+ * @param threshold - Minimum access count to keep
205
+ * @param type - Namespace ('text' | 'code' | 'all')
206
+ * @returns Number of entries removed
207
+ */
208
+ optimize(threshold = 1, type = 'all') {
209
+ let removed = 0;
210
+ const optimizeCache = (cache) => {
211
+ const toRemove = [];
212
+ for (const [key, entry] of cache.entries()) {
213
+ if (entry.accessCount < threshold) {
214
+ toRemove.push(key);
215
+ }
216
+ }
217
+ for (const key of toRemove) {
218
+ cache.delete(key);
219
+ removed++;
220
+ }
221
+ };
222
+ if (type === 'text' || type === 'all') {
223
+ optimizeCache(this.textCache);
224
+ }
225
+ if (type === 'code' || type === 'all') {
226
+ optimizeCache(this.codeCache);
227
+ }
228
+ return removed;
229
+ }
230
+ /**
231
+ * Reset statistics
232
+ */
233
+ resetStats() {
234
+ this.hits = 0;
235
+ this.misses = 0;
236
+ }
237
+ }
238
+ exports.EmbeddingCache = EmbeddingCache;
239
+ //# sourceMappingURL=EmbeddingCache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EmbeddingCache.js","sourceRoot":"","sources":["../../../src/core/embeddings/EmbeddingCache.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,224 @@
1
+ /**
2
+ * Embedding Generator - Convert patterns into vector embeddings
3
+ *
4
+ * Features:
5
+ * - Phase 1 (Simple): Hash-based embeddings for quick start
6
+ * - Phase 2 (ML): Transformers.js for production embeddings
7
+ * - Caching for performance optimization
8
+ * - Batch processing support
9
+ * - Graceful fallback if ML models unavailable
10
+ *
11
+ * Models:
12
+ * - Text: "Xenova/all-MiniLM-L6-v2" (384 dimensions)
13
+ * - Code: "microsoft/codebert-base" (768 dimensions)
14
+ *
15
+ * Performance:
16
+ * - Hash-based: ~50µs per embedding
17
+ * - ML-based: ~5-10ms per embedding (cached)
18
+ * - Batch: ~2ms per embedding (10+ texts)
19
+ *
20
+ * @module EmbeddingGenerator
21
+ */
22
+ /**
23
+ * Embedding generation options
24
+ */
25
+ export interface EmbeddingOptions {
26
+ /** Use ML-based embeddings (default: true) */
27
+ useML?: boolean;
28
+ /** Cache embeddings for performance (default: true) */
29
+ useCache?: boolean;
30
+ /** Normalize embeddings to unit length (default: true) */
31
+ normalize?: boolean;
32
+ /** Language for code embeddings (e.g., 'typescript', 'python') */
33
+ language?: string;
34
+ /** Model to use ('text' | 'code') */
35
+ model?: 'text' | 'code';
36
+ /** Target dimension (for hash-based only) */
37
+ dimension?: number;
38
+ }
39
+ /**
40
+ * Embedding result
41
+ */
42
+ export interface EmbeddingResult {
43
+ /** Vector embedding */
44
+ embedding: number[];
45
+ /** Embedding dimension */
46
+ dimension: number;
47
+ /** Method used ('hash' | 'ml') */
48
+ method: 'hash' | 'ml';
49
+ /** Generation time in milliseconds */
50
+ generationTime: number;
51
+ /** Whether result was cached */
52
+ cached: boolean;
53
+ /** Model name used */
54
+ model: string;
55
+ }
56
+ /**
57
+ * Batch embedding result
58
+ */
59
+ export interface BatchEmbeddingResult {
60
+ /** Array of embeddings */
61
+ embeddings: number[][];
62
+ /** Total generation time */
63
+ totalTime: number;
64
+ /** Average time per embedding */
65
+ avgTime: number;
66
+ /** Number of cache hits */
67
+ cacheHits: number;
68
+ /** Method used */
69
+ method: 'hash' | 'ml';
70
+ }
71
+ /**
72
+ * Embedding Generator
73
+ *
74
+ * Provides both simple hash-based and ML-based embedding generation
75
+ * with intelligent fallback and caching.
76
+ */
77
+ export declare class EmbeddingGenerator {
78
+ private cacheSize;
79
+ private autoInitML;
80
+ private cache;
81
+ private mlAvailable;
82
+ private pipeline;
83
+ private codePipeline;
84
+ private initPromise;
85
+ private readonly TEXT_MODEL;
86
+ private readonly CODE_MODEL;
87
+ private readonly TEXT_DIMENSION;
88
+ private readonly CODE_DIMENSION;
89
+ private readonly DEFAULT_HASH_DIMENSION;
90
+ /**
91
+ * Create a new embedding generator
92
+ *
93
+ * @param cacheSize - Maximum number of cached embeddings (default: 10000)
94
+ * @param autoInitML - Automatically initialize ML models (default: false)
95
+ */
96
+ constructor(cacheSize?: number, autoInitML?: boolean);
97
+ /**
98
+ * Initialize ML models
99
+ *
100
+ * Lazy-loads Transformers.js models for production embeddings.
101
+ * Falls back to hash-based if models unavailable.
102
+ */
103
+ initializeML(): Promise<void>;
104
+ /**
105
+ * Initialize code embedding model
106
+ *
107
+ * Separate initialization for code model to avoid loading if not needed.
108
+ */
109
+ initializeCodeModel(): Promise<void>;
110
+ /**
111
+ * Generate text embedding
112
+ *
113
+ * @param text - Text to embed
114
+ * @param options - Embedding options
115
+ * @returns Embedding result with vector and metadata
116
+ */
117
+ generateTextEmbedding(text: string, options?: EmbeddingOptions): Promise<EmbeddingResult>;
118
+ /**
119
+ * Generate code embedding
120
+ *
121
+ * @param code - Code to embed
122
+ * @param language - Programming language
123
+ * @param options - Embedding options
124
+ * @returns Embedding result
125
+ */
126
+ generateCodeEmbedding(code: string, language: string, options?: EmbeddingOptions): Promise<EmbeddingResult>;
127
+ /**
128
+ * Generate batch text embeddings
129
+ *
130
+ * More efficient than generating one at a time.
131
+ *
132
+ * @param texts - Array of texts to embed
133
+ * @param options - Embedding options
134
+ * @returns Batch embedding result
135
+ */
136
+ generateBatchTextEmbeddings(texts: string[], options?: EmbeddingOptions): Promise<BatchEmbeddingResult>;
137
+ /**
138
+ * Generate hash-based embedding
139
+ *
140
+ * Fast, deterministic embedding using cryptographic hashing.
141
+ * Suitable for testing and development.
142
+ *
143
+ * @param text - Text to embed
144
+ * @param dimension - Target dimension (default: 256)
145
+ * @param salt - Optional salt for different embeddings (default: '')
146
+ * @returns Vector embedding
147
+ */
148
+ generateHashEmbedding(text: string, dimension?: number, salt?: string): number[];
149
+ /**
150
+ * Generate ML-based text embedding
151
+ *
152
+ * Uses Transformers.js for production-quality embeddings.
153
+ *
154
+ * @param text - Text to embed
155
+ * @returns Vector embedding
156
+ */
157
+ private generateMLTextEmbedding;
158
+ /**
159
+ * Generate ML-based code embedding
160
+ *
161
+ * Uses CodeBERT for code-specific embeddings.
162
+ *
163
+ * @param code - Code to embed
164
+ * @param language - Programming language
165
+ * @returns Vector embedding
166
+ */
167
+ private generateMLCodeEmbedding;
168
+ /**
169
+ * Normalize embedding to unit length
170
+ *
171
+ * @param embedding - Vector to normalize
172
+ * @returns Normalized vector
173
+ */
174
+ private normalizeEmbedding;
175
+ /**
176
+ * Get cached embedding
177
+ *
178
+ * @param key - Cache key
179
+ * @param type - Embedding type ('text' | 'code')
180
+ * @returns Cached embedding or null
181
+ */
182
+ getCachedEmbedding(key: string, type?: 'text' | 'code'): number[] | null;
183
+ /**
184
+ * Cache embedding manually
185
+ *
186
+ * @param key - Cache key
187
+ * @param embedding - Vector embedding
188
+ * @param type - Embedding type
189
+ */
190
+ cacheEmbedding(key: string, embedding: number[], type?: 'text' | 'code'): void;
191
+ /**
192
+ * Clear cache
193
+ *
194
+ * @param type - Type to clear ('text' | 'code' | 'all')
195
+ */
196
+ clearCache(type?: 'text' | 'code' | 'all'): void;
197
+ /**
198
+ * Get cache statistics
199
+ *
200
+ * @returns Cache stats
201
+ */
202
+ getCacheStats(): import("./EmbeddingCache").CacheStats;
203
+ /**
204
+ * Check if ML models are available
205
+ *
206
+ * @returns True if ML models initialized
207
+ */
208
+ isMLAvailable(): boolean;
209
+ /**
210
+ * Get model information
211
+ *
212
+ * @returns Model info
213
+ */
214
+ getModelInfo(): {
215
+ textModel: string;
216
+ codeModel: string;
217
+ textDimension: number;
218
+ codeDimension: number;
219
+ hashDimension: number;
220
+ mlAvailable: boolean;
221
+ cacheSize: number;
222
+ };
223
+ }
224
+ //# sourceMappingURL=EmbeddingGenerator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EmbeddingGenerator.d.ts","sourceRoot":"","sources":["../../../src/core/embeddings/EmbeddingGenerator.ts"],"names":[],"mappings":"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"}