agentic-qe 1.0.5 → 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 (383) 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-quality-analyzer.md +405 -0
  4. package/.claude/agents/qe-test-generator.md +7 -0
  5. package/.claude/agents/reasoning/agent.md +816 -0
  6. package/.claude/agents/reasoning/goal-planner.md +73 -0
  7. package/.claude/settings.json +21 -20
  8. package/.claude/skills/README.md +124 -0
  9. package/.claude/skills/agentdb-advanced/SKILL.md +550 -0
  10. package/.claude/skills/agentdb-learning/SKILL.md +545 -0
  11. package/.claude/skills/agentdb-memory-patterns/SKILL.md +339 -0
  12. package/.claude/skills/agentdb-optimization/SKILL.md +509 -0
  13. package/.claude/skills/agentdb-vector-search/SKILL.md +339 -0
  14. package/.claude/skills/agentic-quality-engineering/SKILL.md +604 -0
  15. package/.claude/skills/api-testing-patterns/SKILL.md +686 -0
  16. package/.claude/skills/bug-reporting-excellence/SKILL.md +632 -0
  17. package/.claude/skills/code-review-quality/SKILL.md +683 -0
  18. package/.claude/skills/consultancy-practices/SKILL.md +540 -0
  19. package/.claude/skills/context-driven-testing/SKILL.md +466 -0
  20. package/.claude/skills/exploratory-testing-advanced/SKILL.md +676 -0
  21. package/.claude/skills/flow-nexus-neural/SKILL.md +738 -0
  22. package/.claude/skills/flow-nexus-platform/SKILL.md +1157 -0
  23. package/.claude/skills/flow-nexus-swarm/SKILL.md +610 -0
  24. package/.claude/skills/github-code-review/SKILL.md +1140 -0
  25. package/.claude/skills/github-multi-repo/SKILL.md +874 -0
  26. package/.claude/skills/github-project-management/SKILL.md +1277 -0
  27. package/.claude/skills/github-release-management/SKILL.md +1081 -0
  28. package/.claude/skills/github-workflow-automation/SKILL.md +1065 -0
  29. package/.claude/skills/hive-mind-advanced/SKILL.md +712 -0
  30. package/.claude/skills/holistic-testing-pact/SKILL.md +225 -0
  31. package/.claude/skills/hooks-automation/SKILL.md +1201 -0
  32. package/.claude/skills/pair-programming/SKILL.md +1202 -0
  33. package/.claude/skills/performance-analysis/SKILL.md +563 -0
  34. package/.claude/skills/performance-testing/SKILL.md +662 -0
  35. package/.claude/skills/quality-metrics/SKILL.md +592 -0
  36. package/.claude/skills/reasoningbank-agentdb/SKILL.md +446 -0
  37. package/.claude/skills/reasoningbank-intelligence/SKILL.md +201 -0
  38. package/.claude/skills/refactoring-patterns/SKILL.md +778 -0
  39. package/.claude/skills/risk-based-testing/SKILL.md +721 -0
  40. package/.claude/skills/security-testing/SKILL.md +651 -0
  41. package/.claude/skills/skill-builder/SKILL.md +910 -0
  42. package/.claude/skills/sparc-methodology/SKILL.md +1115 -0
  43. package/.claude/skills/stream-chain/SKILL.md +563 -0
  44. package/.claude/skills/swarm-advanced/SKILL.md +973 -0
  45. package/.claude/skills/swarm-orchestration/SKILL.md +179 -0
  46. package/.claude/skills/tdd-london-chicago/SKILL.md +567 -0
  47. package/.claude/skills/technical-writing/SKILL.md +235 -0
  48. package/.claude/skills/test-automation-strategy/SKILL.md +842 -0
  49. package/.claude/skills/verification-quality/SKILL.md +649 -0
  50. package/.claude/skills/xp-practices/SKILL.md +671 -0
  51. package/.claude/statusline-command.sh +176 -0
  52. package/CHANGELOG.md +645 -1
  53. package/CONTRIBUTING.md +51 -0
  54. package/README.md +758 -162
  55. package/bin/aqe +90 -938
  56. package/config/improvement-loop.config.ts +323 -0
  57. package/config/neural-agent.config.ts +197 -0
  58. package/dist/adapters/MemoryStoreAdapter.d.ts +16 -16
  59. package/dist/adapters/MemoryStoreAdapter.d.ts.map +1 -1
  60. package/dist/adapters/MemoryStoreAdapter.js +22 -16
  61. package/dist/adapters/MemoryStoreAdapter.js.map +1 -1
  62. package/dist/agents/BaseAgent.d.ts +69 -0
  63. package/dist/agents/BaseAgent.d.ts.map +1 -1
  64. package/dist/agents/BaseAgent.js +382 -1
  65. package/dist/agents/BaseAgent.js.map +1 -1
  66. package/dist/agents/CoverageAnalyzerAgent.d.ts +69 -3
  67. package/dist/agents/CoverageAnalyzerAgent.d.ts.map +1 -1
  68. package/dist/agents/CoverageAnalyzerAgent.js +418 -51
  69. package/dist/agents/CoverageAnalyzerAgent.js.map +1 -1
  70. package/dist/agents/DeploymentReadinessAgent.d.ts.map +1 -1
  71. package/dist/agents/DeploymentReadinessAgent.js +13 -13
  72. package/dist/agents/DeploymentReadinessAgent.js.map +1 -1
  73. package/dist/agents/FlakyTestHunterAgent.d.ts +76 -4
  74. package/dist/agents/FlakyTestHunterAgent.d.ts.map +1 -1
  75. package/dist/agents/FlakyTestHunterAgent.js +375 -13
  76. package/dist/agents/FlakyTestHunterAgent.js.map +1 -1
  77. package/dist/agents/FleetCommanderAgent.d.ts.map +1 -1
  78. package/dist/agents/FleetCommanderAgent.js +2 -2
  79. package/dist/agents/FleetCommanderAgent.js.map +1 -1
  80. package/dist/agents/LearningAgent.d.ts +84 -0
  81. package/dist/agents/LearningAgent.d.ts.map +1 -0
  82. package/dist/agents/LearningAgent.js +197 -0
  83. package/dist/agents/LearningAgent.js.map +1 -0
  84. package/dist/agents/NeuralAgentExtension.d.ts +117 -0
  85. package/dist/agents/NeuralAgentExtension.d.ts.map +1 -0
  86. package/dist/agents/NeuralAgentExtension.js +288 -0
  87. package/dist/agents/NeuralAgentExtension.js.map +1 -0
  88. package/dist/agents/PerformanceTesterAgent.d.ts.map +1 -1
  89. package/dist/agents/PerformanceTesterAgent.js +4 -3
  90. package/dist/agents/PerformanceTesterAgent.js.map +1 -1
  91. package/dist/agents/ProductionIntelligenceAgent.js +7 -7
  92. package/dist/agents/ProductionIntelligenceAgent.js.map +1 -1
  93. package/dist/agents/QualityAnalyzerAgent.d.ts.map +1 -1
  94. package/dist/agents/QualityAnalyzerAgent.js +2 -2
  95. package/dist/agents/QualityAnalyzerAgent.js.map +1 -1
  96. package/dist/agents/QualityGateAgent.js +5 -5
  97. package/dist/agents/QualityGateAgent.js.map +1 -1
  98. package/dist/agents/RegressionRiskAnalyzerAgent.js +7 -7
  99. package/dist/agents/RegressionRiskAnalyzerAgent.js.map +1 -1
  100. package/dist/agents/RequirementsValidatorAgent.d.ts.map +1 -1
  101. package/dist/agents/RequirementsValidatorAgent.js +1 -1
  102. package/dist/agents/RequirementsValidatorAgent.js.map +1 -1
  103. package/dist/agents/SecurityScannerAgent.js +6 -6
  104. package/dist/agents/SecurityScannerAgent.js.map +1 -1
  105. package/dist/agents/TestExecutorAgent.d.ts.map +1 -1
  106. package/dist/agents/TestExecutorAgent.js +1 -3
  107. package/dist/agents/TestExecutorAgent.js.map +1 -1
  108. package/dist/agents/TestGeneratorAgent.d.ts +53 -2
  109. package/dist/agents/TestGeneratorAgent.d.ts.map +1 -1
  110. package/dist/agents/TestGeneratorAgent.js +372 -31
  111. package/dist/agents/TestGeneratorAgent.js.map +1 -1
  112. package/dist/agents/mixins/NeuralCapableMixin.d.ts +130 -0
  113. package/dist/agents/mixins/NeuralCapableMixin.d.ts.map +1 -0
  114. package/dist/agents/mixins/NeuralCapableMixin.js +358 -0
  115. package/dist/agents/mixins/NeuralCapableMixin.js.map +1 -0
  116. package/dist/agents/mixins/QUICCapableMixin.d.ts +34 -0
  117. package/dist/agents/mixins/QUICCapableMixin.d.ts.map +1 -0
  118. package/dist/agents/mixins/QUICCapableMixin.js +346 -0
  119. package/dist/agents/mixins/QUICCapableMixin.js.map +1 -0
  120. package/dist/cli/commands/agent/index.d.ts +5 -0
  121. package/dist/cli/commands/agent/index.d.ts.map +1 -1
  122. package/dist/cli/commands/agent/index.js +11 -6
  123. package/dist/cli/commands/agent/index.js.map +1 -1
  124. package/dist/cli/commands/agent/kill.d.ts +13 -0
  125. package/dist/cli/commands/agent/kill.d.ts.map +1 -0
  126. package/dist/cli/commands/agent/kill.js +65 -0
  127. package/dist/cli/commands/agent/kill.js.map +1 -0
  128. package/dist/cli/commands/agent/list.d.ts +19 -0
  129. package/dist/cli/commands/agent/list.d.ts.map +1 -0
  130. package/dist/cli/commands/agent/list.js +92 -0
  131. package/dist/cli/commands/agent/list.js.map +1 -0
  132. package/dist/cli/commands/agent/logs.d.ts +14 -0
  133. package/dist/cli/commands/agent/logs.d.ts.map +1 -0
  134. package/dist/cli/commands/agent/logs.js +77 -0
  135. package/dist/cli/commands/agent/logs.js.map +1 -0
  136. package/dist/cli/commands/agent/metrics.d.ts +21 -0
  137. package/dist/cli/commands/agent/metrics.d.ts.map +1 -0
  138. package/dist/cli/commands/agent/metrics.js +87 -0
  139. package/dist/cli/commands/agent/metrics.js.map +1 -0
  140. package/dist/cli/commands/agent/spawn.d.ts +28 -0
  141. package/dist/cli/commands/agent/spawn.d.ts.map +1 -0
  142. package/dist/cli/commands/agent/spawn.js +83 -0
  143. package/dist/cli/commands/agent/spawn.js.map +1 -0
  144. package/dist/cli/commands/improve/index.d.ts +70 -0
  145. package/dist/cli/commands/improve/index.d.ts.map +1 -0
  146. package/dist/cli/commands/improve/index.js +530 -0
  147. package/dist/cli/commands/improve/index.js.map +1 -0
  148. package/dist/cli/commands/init.d.ts +57 -0
  149. package/dist/cli/commands/init.d.ts.map +1 -1
  150. package/dist/cli/commands/init.js +1127 -42
  151. package/dist/cli/commands/init.js.map +1 -1
  152. package/dist/cli/commands/learn/index.d.ts +68 -0
  153. package/dist/cli/commands/learn/index.d.ts.map +1 -0
  154. package/dist/cli/commands/learn/index.js +431 -0
  155. package/dist/cli/commands/learn/index.js.map +1 -0
  156. package/dist/cli/commands/patterns/index.d.ts +75 -0
  157. package/dist/cli/commands/patterns/index.d.ts.map +1 -0
  158. package/dist/cli/commands/patterns/index.js +502 -0
  159. package/dist/cli/commands/patterns/index.js.map +1 -0
  160. package/dist/cli/commands/skills/index.d.ts +51 -0
  161. package/dist/cli/commands/skills/index.d.ts.map +1 -0
  162. package/dist/cli/commands/skills/index.js +364 -0
  163. package/dist/cli/commands/skills/index.js.map +1 -0
  164. package/dist/cli/index.js +458 -8
  165. package/dist/cli/index.js.map +1 -1
  166. package/dist/core/EventBus.d.ts +38 -0
  167. package/dist/core/EventBus.d.ts.map +1 -1
  168. package/dist/core/EventBus.js +176 -31
  169. package/dist/core/EventBus.js.map +1 -1
  170. package/dist/core/FleetManager.d.ts +35 -1
  171. package/dist/core/FleetManager.d.ts.map +1 -1
  172. package/dist/core/FleetManager.js +121 -45
  173. package/dist/core/FleetManager.js.map +1 -1
  174. package/dist/core/MemoryManager.d.ts +19 -1
  175. package/dist/core/MemoryManager.d.ts.map +1 -1
  176. package/dist/core/MemoryManager.js +25 -1
  177. package/dist/core/MemoryManager.js.map +1 -1
  178. package/dist/core/embeddings/EmbeddingCache.d.ts +134 -0
  179. package/dist/core/embeddings/EmbeddingCache.d.ts.map +1 -0
  180. package/dist/core/embeddings/EmbeddingCache.js +239 -0
  181. package/dist/core/embeddings/EmbeddingCache.js.map +1 -0
  182. package/dist/core/embeddings/EmbeddingGenerator.d.ts +224 -0
  183. package/dist/core/embeddings/EmbeddingGenerator.d.ts.map +1 -0
  184. package/dist/core/embeddings/EmbeddingGenerator.js +459 -0
  185. package/dist/core/embeddings/EmbeddingGenerator.js.map +1 -0
  186. package/dist/core/embeddings/index.d.ts +15 -0
  187. package/dist/core/embeddings/index.d.ts.map +1 -0
  188. package/dist/core/embeddings/index.js +22 -0
  189. package/dist/core/embeddings/index.js.map +1 -0
  190. package/dist/core/memory/AgentDBIntegration.d.ts +35 -0
  191. package/dist/core/memory/AgentDBIntegration.d.ts.map +1 -0
  192. package/dist/core/memory/AgentDBIntegration.js +75 -0
  193. package/dist/core/memory/AgentDBIntegration.js.map +1 -0
  194. package/dist/core/memory/AgentDBManager.d.ts +200 -0
  195. package/dist/core/memory/AgentDBManager.d.ts.map +1 -0
  196. package/dist/core/memory/AgentDBManager.js +263 -0
  197. package/dist/core/memory/AgentDBManager.js.map +1 -0
  198. package/dist/core/memory/AgentDBService.d.ts +160 -0
  199. package/dist/core/memory/AgentDBService.d.ts.map +1 -0
  200. package/dist/core/memory/AgentDBService.js +450 -0
  201. package/dist/core/memory/AgentDBService.js.map +1 -0
  202. package/dist/core/memory/RealAgentDBAdapter.d.ts +51 -0
  203. package/dist/core/memory/RealAgentDBAdapter.d.ts.map +1 -0
  204. package/dist/core/memory/RealAgentDBAdapter.js +230 -0
  205. package/dist/core/memory/RealAgentDBAdapter.js.map +1 -0
  206. package/dist/core/memory/ReasoningBankAdapter.d.ts +58 -0
  207. package/dist/core/memory/ReasoningBankAdapter.d.ts.map +1 -0
  208. package/dist/core/memory/ReasoningBankAdapter.js +80 -0
  209. package/dist/core/memory/ReasoningBankAdapter.js.map +1 -0
  210. package/dist/core/memory/SwarmMemoryManager.d.ts +79 -2
  211. package/dist/core/memory/SwarmMemoryManager.d.ts.map +1 -1
  212. package/dist/core/memory/SwarmMemoryManager.js +243 -52
  213. package/dist/core/memory/SwarmMemoryManager.js.map +1 -1
  214. package/dist/core/memory/index.d.ts +4 -0
  215. package/dist/core/memory/index.d.ts.map +1 -1
  216. package/dist/core/memory/index.js +9 -1
  217. package/dist/core/memory/index.js.map +1 -1
  218. package/dist/core/neural/NeuralTrainer.d.ts +137 -0
  219. package/dist/core/neural/NeuralTrainer.d.ts.map +1 -0
  220. package/dist/core/neural/NeuralTrainer.js +543 -0
  221. package/dist/core/neural/NeuralTrainer.js.map +1 -0
  222. package/dist/core/neural/index.d.ts +8 -0
  223. package/dist/core/neural/index.d.ts.map +1 -0
  224. package/dist/core/neural/index.js +24 -0
  225. package/dist/core/neural/index.js.map +1 -0
  226. package/dist/core/neural/types.d.ts +216 -0
  227. package/dist/core/neural/types.d.ts.map +1 -0
  228. package/dist/core/neural/types.js +8 -0
  229. package/dist/core/neural/types.js.map +1 -0
  230. package/dist/core/security/CertificateValidator.d.ts +130 -0
  231. package/dist/core/security/CertificateValidator.d.ts.map +1 -0
  232. package/dist/core/security/CertificateValidator.js +376 -0
  233. package/dist/core/security/CertificateValidator.js.map +1 -0
  234. package/dist/core/transport/QUICTransport.d.ts +62 -0
  235. package/dist/core/transport/QUICTransport.d.ts.map +1 -0
  236. package/dist/core/transport/QUICTransport.js +381 -0
  237. package/dist/core/transport/QUICTransport.js.map +1 -0
  238. package/dist/core/transport/SecureQUICTransport.d.ts +71 -0
  239. package/dist/core/transport/SecureQUICTransport.d.ts.map +1 -0
  240. package/dist/core/transport/SecureQUICTransport.js +253 -0
  241. package/dist/core/transport/SecureQUICTransport.js.map +1 -0
  242. package/dist/index.d.ts +10 -0
  243. package/dist/index.d.ts.map +1 -1
  244. package/dist/index.js +10 -0
  245. package/dist/index.js.map +1 -1
  246. package/dist/learning/AdvancedFeatureExtractor.d.ts +123 -0
  247. package/dist/learning/AdvancedFeatureExtractor.d.ts.map +1 -0
  248. package/dist/learning/AdvancedFeatureExtractor.js +423 -0
  249. package/dist/learning/AdvancedFeatureExtractor.js.map +1 -0
  250. package/dist/learning/FlakyFixRecommendations.d.ts +40 -0
  251. package/dist/learning/FlakyFixRecommendations.d.ts.map +1 -0
  252. package/dist/learning/FlakyFixRecommendations.js +247 -0
  253. package/dist/learning/FlakyFixRecommendations.js.map +1 -0
  254. package/dist/learning/FlakyPredictionModel.d.ts +67 -0
  255. package/dist/learning/FlakyPredictionModel.d.ts.map +1 -0
  256. package/dist/learning/FlakyPredictionModel.js +336 -0
  257. package/dist/learning/FlakyPredictionModel.js.map +1 -0
  258. package/dist/learning/FlakyTestDetector.d.ts +55 -0
  259. package/dist/learning/FlakyTestDetector.d.ts.map +1 -0
  260. package/dist/learning/FlakyTestDetector.js +237 -0
  261. package/dist/learning/FlakyTestDetector.js.map +1 -0
  262. package/dist/learning/ImprovementLoop.d.ts +133 -0
  263. package/dist/learning/ImprovementLoop.d.ts.map +1 -0
  264. package/dist/learning/ImprovementLoop.js +412 -0
  265. package/dist/learning/ImprovementLoop.js.map +1 -0
  266. package/dist/learning/ImprovementWorker.d.ts +83 -0
  267. package/dist/learning/ImprovementWorker.d.ts.map +1 -0
  268. package/dist/learning/ImprovementWorker.js +164 -0
  269. package/dist/learning/ImprovementWorker.js.map +1 -0
  270. package/dist/learning/LearningEngine.d.ts +144 -0
  271. package/dist/learning/LearningEngine.d.ts.map +1 -0
  272. package/dist/learning/LearningEngine.js +531 -0
  273. package/dist/learning/LearningEngine.js.map +1 -0
  274. package/dist/learning/NeuralPatternMatcher.d.ts +184 -0
  275. package/dist/learning/NeuralPatternMatcher.d.ts.map +1 -0
  276. package/dist/learning/NeuralPatternMatcher.js +702 -0
  277. package/dist/learning/NeuralPatternMatcher.js.map +1 -0
  278. package/dist/learning/NeuralTrainer.d.ts +209 -0
  279. package/dist/learning/NeuralTrainer.d.ts.map +1 -0
  280. package/dist/learning/NeuralTrainer.js +478 -0
  281. package/dist/learning/NeuralTrainer.js.map +1 -0
  282. package/dist/learning/PerformanceTracker.d.ts +118 -0
  283. package/dist/learning/PerformanceTracker.d.ts.map +1 -0
  284. package/dist/learning/PerformanceTracker.js +376 -0
  285. package/dist/learning/PerformanceTracker.js.map +1 -0
  286. package/dist/learning/StatisticalAnalysis.d.ts +47 -0
  287. package/dist/learning/StatisticalAnalysis.d.ts.map +1 -0
  288. package/dist/learning/StatisticalAnalysis.js +170 -0
  289. package/dist/learning/StatisticalAnalysis.js.map +1 -0
  290. package/dist/learning/SwarmIntegration.d.ts +107 -0
  291. package/dist/learning/SwarmIntegration.d.ts.map +1 -0
  292. package/dist/learning/SwarmIntegration.js +191 -0
  293. package/dist/learning/SwarmIntegration.js.map +1 -0
  294. package/dist/learning/index.d.ts +16 -0
  295. package/dist/learning/index.d.ts.map +1 -0
  296. package/dist/learning/index.js +32 -0
  297. package/dist/learning/index.js.map +1 -0
  298. package/dist/learning/types.d.ts +289 -0
  299. package/dist/learning/types.d.ts.map +1 -0
  300. package/dist/learning/types.js +25 -0
  301. package/dist/learning/types.js.map +1 -0
  302. package/dist/mcp/MCPToolRegistry.d.ts +34 -0
  303. package/dist/mcp/MCPToolRegistry.d.ts.map +1 -0
  304. package/dist/mcp/MCPToolRegistry.js +48 -0
  305. package/dist/mcp/MCPToolRegistry.js.map +1 -0
  306. package/dist/mcp/handlers/phase2/Phase2Tools.d.ts +175 -0
  307. package/dist/mcp/handlers/phase2/Phase2Tools.d.ts.map +1 -0
  308. package/dist/mcp/handlers/phase2/Phase2Tools.js +693 -0
  309. package/dist/mcp/handlers/phase2/Phase2Tools.js.map +1 -0
  310. package/dist/mcp/server.d.ts +4 -4
  311. package/dist/mcp/server.d.ts.map +1 -1
  312. package/dist/mcp/server.js +94 -0
  313. package/dist/mcp/server.js.map +1 -1
  314. package/dist/mcp/services/AgentRegistry.d.ts.map +1 -1
  315. package/dist/mcp/services/AgentRegistry.js +7 -1
  316. package/dist/mcp/services/AgentRegistry.js.map +1 -1
  317. package/dist/mcp/tools.d.ts +15 -0
  318. package/dist/mcp/tools.d.ts.map +1 -1
  319. package/dist/mcp/tools.js +17 -1
  320. package/dist/mcp/tools.js.map +1 -1
  321. package/dist/reasoning/CodeSignatureGenerator.d.ts +98 -0
  322. package/dist/reasoning/CodeSignatureGenerator.d.ts.map +1 -0
  323. package/dist/reasoning/CodeSignatureGenerator.js +427 -0
  324. package/dist/reasoning/CodeSignatureGenerator.js.map +1 -0
  325. package/dist/reasoning/PatternClassifier.d.ts +98 -0
  326. package/dist/reasoning/PatternClassifier.d.ts.map +1 -0
  327. package/dist/reasoning/PatternClassifier.js +345 -0
  328. package/dist/reasoning/PatternClassifier.js.map +1 -0
  329. package/dist/reasoning/PatternExtractor.d.ts +131 -0
  330. package/dist/reasoning/PatternExtractor.d.ts.map +1 -0
  331. package/dist/reasoning/PatternExtractor.js +539 -0
  332. package/dist/reasoning/PatternExtractor.js.map +1 -0
  333. package/dist/reasoning/PatternMemoryIntegration.d.ts +102 -0
  334. package/dist/reasoning/PatternMemoryIntegration.d.ts.map +1 -0
  335. package/dist/reasoning/PatternMemoryIntegration.js +336 -0
  336. package/dist/reasoning/PatternMemoryIntegration.js.map +1 -0
  337. package/dist/reasoning/QEReasoningBank.d.ts +121 -0
  338. package/dist/reasoning/QEReasoningBank.d.ts.map +1 -0
  339. package/dist/reasoning/QEReasoningBank.js +235 -0
  340. package/dist/reasoning/QEReasoningBank.js.map +1 -0
  341. package/dist/reasoning/TestTemplateCreator.d.ts +95 -0
  342. package/dist/reasoning/TestTemplateCreator.d.ts.map +1 -0
  343. package/dist/reasoning/TestTemplateCreator.js +535 -0
  344. package/dist/reasoning/TestTemplateCreator.js.map +1 -0
  345. package/dist/reasoning/index.d.ts +10 -0
  346. package/dist/reasoning/index.d.ts.map +1 -0
  347. package/dist/reasoning/index.js +31 -0
  348. package/dist/reasoning/index.js.map +1 -0
  349. package/dist/reasoning/types.d.ts +717 -0
  350. package/dist/reasoning/types.d.ts.map +1 -0
  351. package/dist/reasoning/types.js +57 -0
  352. package/dist/reasoning/types.js.map +1 -0
  353. package/dist/transport/QUICTransport.d.ts +340 -0
  354. package/dist/transport/QUICTransport.d.ts.map +1 -0
  355. package/dist/transport/QUICTransport.js +814 -0
  356. package/dist/transport/QUICTransport.js.map +1 -0
  357. package/dist/transport/UDPTransport.d.ts +348 -0
  358. package/dist/transport/UDPTransport.d.ts.map +1 -0
  359. package/dist/transport/UDPTransport.js +820 -0
  360. package/dist/transport/UDPTransport.js.map +1 -0
  361. package/dist/types/errors.d.ts +1 -1
  362. package/dist/types/index.d.ts +41 -0
  363. package/dist/types/index.d.ts.map +1 -1
  364. package/dist/types/index.js +2 -0
  365. package/dist/types/index.js.map +1 -1
  366. package/dist/types/pattern.types.d.ts +364 -0
  367. package/dist/types/pattern.types.d.ts.map +1 -0
  368. package/dist/types/pattern.types.js +60 -0
  369. package/dist/types/pattern.types.js.map +1 -0
  370. package/dist/types/quic.d.ts +339 -0
  371. package/dist/types/quic.d.ts.map +1 -0
  372. package/dist/types/quic.js +48 -0
  373. package/dist/types/quic.js.map +1 -0
  374. package/dist/utils/Config.js +1 -1
  375. package/dist/utils/Config.js.map +1 -1
  376. package/dist/utils/Database.d.ts +14 -0
  377. package/dist/utils/Database.d.ts.map +1 -1
  378. package/dist/utils/Database.js +51 -4
  379. package/dist/utils/Database.js.map +1 -1
  380. package/dist/utils/Logger.d.ts.map +1 -1
  381. package/dist/utils/Logger.js +111 -26
  382. package/dist/utils/Logger.js.map +1 -1
  383. package/package.json +54 -9
@@ -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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"}
@@ -0,0 +1,459 @@
1
+ "use strict";
2
+ /**
3
+ * Embedding Generator - Convert patterns into vector embeddings
4
+ *
5
+ * Features:
6
+ * - Phase 1 (Simple): Hash-based embeddings for quick start
7
+ * - Phase 2 (ML): Transformers.js for production embeddings
8
+ * - Caching for performance optimization
9
+ * - Batch processing support
10
+ * - Graceful fallback if ML models unavailable
11
+ *
12
+ * Models:
13
+ * - Text: "Xenova/all-MiniLM-L6-v2" (384 dimensions)
14
+ * - Code: "microsoft/codebert-base" (768 dimensions)
15
+ *
16
+ * Performance:
17
+ * - Hash-based: ~50µs per embedding
18
+ * - ML-based: ~5-10ms per embedding (cached)
19
+ * - Batch: ~2ms per embedding (10+ texts)
20
+ *
21
+ * @module EmbeddingGenerator
22
+ */
23
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
24
+ if (k2 === undefined) k2 = k;
25
+ var desc = Object.getOwnPropertyDescriptor(m, k);
26
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
27
+ desc = { enumerable: true, get: function() { return m[k]; } };
28
+ }
29
+ Object.defineProperty(o, k2, desc);
30
+ }) : (function(o, m, k, k2) {
31
+ if (k2 === undefined) k2 = k;
32
+ o[k2] = m[k];
33
+ }));
34
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
35
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
36
+ }) : function(o, v) {
37
+ o["default"] = v;
38
+ });
39
+ var __importStar = (this && this.__importStar) || (function () {
40
+ var ownKeys = function(o) {
41
+ ownKeys = Object.getOwnPropertyNames || function (o) {
42
+ var ar = [];
43
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
44
+ return ar;
45
+ };
46
+ return ownKeys(o);
47
+ };
48
+ return function (mod) {
49
+ if (mod && mod.__esModule) return mod;
50
+ var result = {};
51
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
52
+ __setModuleDefault(result, mod);
53
+ return result;
54
+ };
55
+ })();
56
+ Object.defineProperty(exports, "__esModule", { value: true });
57
+ exports.EmbeddingGenerator = void 0;
58
+ const crypto_1 = require("crypto");
59
+ const EmbeddingCache_1 = require("./EmbeddingCache");
60
+ /**
61
+ * Embedding Generator
62
+ *
63
+ * Provides both simple hash-based and ML-based embedding generation
64
+ * with intelligent fallback and caching.
65
+ */
66
+ class EmbeddingGenerator {
67
+ /**
68
+ * Create a new embedding generator
69
+ *
70
+ * @param cacheSize - Maximum number of cached embeddings (default: 10000)
71
+ * @param autoInitML - Automatically initialize ML models (default: false)
72
+ */
73
+ constructor(cacheSize = 10000, autoInitML = false) {
74
+ this.cacheSize = cacheSize;
75
+ this.autoInitML = autoInitML;
76
+ this.mlAvailable = false;
77
+ this.pipeline = null;
78
+ this.codePipeline = null;
79
+ this.initPromise = null;
80
+ // Model configurations
81
+ this.TEXT_MODEL = 'Xenova/all-MiniLM-L6-v2';
82
+ this.CODE_MODEL = 'microsoft/codebert-base';
83
+ this.TEXT_DIMENSION = 384;
84
+ this.CODE_DIMENSION = 768;
85
+ this.DEFAULT_HASH_DIMENSION = 256;
86
+ this.cache = new EmbeddingCache_1.EmbeddingCache(cacheSize);
87
+ // Auto-initialize ML models if requested
88
+ if (autoInitML) {
89
+ this.initPromise = this.initializeML().catch((error) => {
90
+ console.warn('ML initialization failed, falling back to hash-based:', error.message);
91
+ this.mlAvailable = false;
92
+ });
93
+ }
94
+ }
95
+ /**
96
+ * Initialize ML models
97
+ *
98
+ * Lazy-loads Transformers.js models for production embeddings.
99
+ * Falls back to hash-based if models unavailable.
100
+ */
101
+ async initializeML() {
102
+ if (this.mlAvailable) {
103
+ return;
104
+ }
105
+ try {
106
+ // Dynamic import to avoid bundling if not needed
107
+ const { pipeline } = await Promise.resolve().then(() => __importStar(require('@xenova/transformers')));
108
+ // Initialize text embedding pipeline
109
+ this.pipeline = await pipeline('feature-extraction', this.TEXT_MODEL);
110
+ console.log(`✓ ML text model loaded: ${this.TEXT_MODEL} (${this.TEXT_DIMENSION}D)`);
111
+ this.mlAvailable = true;
112
+ }
113
+ catch (error) {
114
+ console.warn('ML models not available, using hash-based embeddings:', error.message);
115
+ this.mlAvailable = false;
116
+ throw error;
117
+ }
118
+ }
119
+ /**
120
+ * Initialize code embedding model
121
+ *
122
+ * Separate initialization for code model to avoid loading if not needed.
123
+ */
124
+ async initializeCodeModel() {
125
+ if (this.codePipeline) {
126
+ return;
127
+ }
128
+ try {
129
+ const { pipeline } = await Promise.resolve().then(() => __importStar(require('@xenova/transformers')));
130
+ this.codePipeline = await pipeline('feature-extraction', this.CODE_MODEL);
131
+ console.log(`✓ ML code model loaded: ${this.CODE_MODEL} (${this.CODE_DIMENSION}D)`);
132
+ }
133
+ catch (error) {
134
+ console.warn('Code model not available:', error.message);
135
+ throw error;
136
+ }
137
+ }
138
+ /**
139
+ * Generate text embedding
140
+ *
141
+ * @param text - Text to embed
142
+ * @param options - Embedding options
143
+ * @returns Embedding result with vector and metadata
144
+ */
145
+ async generateTextEmbedding(text, options = {}) {
146
+ const startTime = Date.now();
147
+ const { useML = true, useCache = true, normalize = true, dimension = this.DEFAULT_HASH_DIMENSION } = options;
148
+ // Check cache first
149
+ if (useCache) {
150
+ const cached = this.cache.get(text, 'text');
151
+ if (cached) {
152
+ return {
153
+ embedding: cached,
154
+ dimension: cached.length,
155
+ method: cached.length === dimension ? 'hash' : 'ml',
156
+ generationTime: Date.now() - startTime,
157
+ cached: true,
158
+ model: cached.length === this.TEXT_DIMENSION ? this.TEXT_MODEL : 'hash'
159
+ };
160
+ }
161
+ }
162
+ let embedding;
163
+ let method;
164
+ let modelName;
165
+ // Try ML-based embedding first if available
166
+ if (useML && this.mlAvailable && this.pipeline) {
167
+ try {
168
+ embedding = await this.generateMLTextEmbedding(text);
169
+ method = 'ml';
170
+ modelName = this.TEXT_MODEL;
171
+ }
172
+ catch (error) {
173
+ console.warn('ML embedding failed, falling back to hash:', error);
174
+ embedding = this.generateHashEmbedding(text, dimension);
175
+ method = 'hash';
176
+ modelName = 'hash';
177
+ }
178
+ }
179
+ else {
180
+ // Use hash-based embedding
181
+ embedding = this.generateHashEmbedding(text, dimension);
182
+ method = 'hash';
183
+ modelName = 'hash';
184
+ }
185
+ // Normalize if requested
186
+ if (normalize && method === 'hash') {
187
+ embedding = this.normalizeEmbedding(embedding);
188
+ }
189
+ // Cache result
190
+ if (useCache) {
191
+ this.cache.set(text, embedding, 'text');
192
+ }
193
+ return {
194
+ embedding,
195
+ dimension: embedding.length,
196
+ method,
197
+ generationTime: Date.now() - startTime,
198
+ cached: false,
199
+ model: modelName
200
+ };
201
+ }
202
+ /**
203
+ * Generate code embedding
204
+ *
205
+ * @param code - Code to embed
206
+ * @param language - Programming language
207
+ * @param options - Embedding options
208
+ * @returns Embedding result
209
+ */
210
+ async generateCodeEmbedding(code, language, options = {}) {
211
+ const startTime = Date.now();
212
+ const { useML = true, useCache = true, normalize = true, dimension = this.DEFAULT_HASH_DIMENSION } = options;
213
+ // Cache key includes language
214
+ const cacheKey = `${language}:${code}`;
215
+ // Check cache first
216
+ if (useCache) {
217
+ const cached = this.cache.get(cacheKey, 'code');
218
+ if (cached) {
219
+ return {
220
+ embedding: cached,
221
+ dimension: cached.length,
222
+ method: cached.length === dimension ? 'hash' : 'ml',
223
+ generationTime: Date.now() - startTime,
224
+ cached: true,
225
+ model: cached.length === this.CODE_DIMENSION ? this.CODE_MODEL : 'hash'
226
+ };
227
+ }
228
+ }
229
+ let embedding;
230
+ let method;
231
+ let modelName;
232
+ // Try ML-based code embedding
233
+ if (useML && this.mlAvailable) {
234
+ try {
235
+ if (!this.codePipeline) {
236
+ await this.initializeCodeModel();
237
+ }
238
+ embedding = await this.generateMLCodeEmbedding(code, language);
239
+ method = 'ml';
240
+ modelName = this.CODE_MODEL;
241
+ }
242
+ catch (error) {
243
+ console.warn('ML code embedding failed, falling back to hash:', error);
244
+ embedding = this.generateHashEmbedding(code, dimension);
245
+ method = 'hash';
246
+ modelName = 'hash';
247
+ }
248
+ }
249
+ else {
250
+ // Use hash-based embedding with language as salt for differentiation
251
+ embedding = this.generateHashEmbedding(code, dimension, language);
252
+ method = 'hash';
253
+ modelName = 'hash';
254
+ }
255
+ // Normalize if requested
256
+ if (normalize && method === 'hash') {
257
+ embedding = this.normalizeEmbedding(embedding);
258
+ }
259
+ // Cache result
260
+ if (useCache) {
261
+ this.cache.set(cacheKey, embedding, 'code');
262
+ }
263
+ return {
264
+ embedding,
265
+ dimension: embedding.length,
266
+ method,
267
+ generationTime: Date.now() - startTime,
268
+ cached: false,
269
+ model: modelName
270
+ };
271
+ }
272
+ /**
273
+ * Generate batch text embeddings
274
+ *
275
+ * More efficient than generating one at a time.
276
+ *
277
+ * @param texts - Array of texts to embed
278
+ * @param options - Embedding options
279
+ * @returns Batch embedding result
280
+ */
281
+ async generateBatchTextEmbeddings(texts, options = {}) {
282
+ const startTime = Date.now();
283
+ const { useML = true, useCache = true } = options;
284
+ const embeddings = [];
285
+ let cacheHits = 0;
286
+ let method = 'hash';
287
+ // Process each text
288
+ for (const text of texts) {
289
+ const result = await this.generateTextEmbedding(text, {
290
+ ...options,
291
+ useML,
292
+ useCache
293
+ });
294
+ embeddings.push(result.embedding);
295
+ if (result.cached) {
296
+ cacheHits++;
297
+ }
298
+ if (result.method === 'ml') {
299
+ method = 'ml';
300
+ }
301
+ }
302
+ const totalTime = Date.now() - startTime;
303
+ return {
304
+ embeddings,
305
+ totalTime,
306
+ avgTime: texts.length > 0 ? totalTime / texts.length : 0,
307
+ cacheHits,
308
+ method
309
+ };
310
+ }
311
+ /**
312
+ * Generate hash-based embedding
313
+ *
314
+ * Fast, deterministic embedding using cryptographic hashing.
315
+ * Suitable for testing and development.
316
+ *
317
+ * @param text - Text to embed
318
+ * @param dimension - Target dimension (default: 256)
319
+ * @param salt - Optional salt for different embeddings (default: '')
320
+ * @returns Vector embedding
321
+ */
322
+ generateHashEmbedding(text, dimension = this.DEFAULT_HASH_DIMENSION, salt = '') {
323
+ const embedding = new Array(dimension);
324
+ // Use multiple hash passes for better distribution
325
+ const passes = Math.ceil(dimension / 32); // SHA-256 produces 32 bytes
326
+ for (let pass = 0; pass < passes; pass++) {
327
+ const hash = (0, crypto_1.createHash)('sha256')
328
+ .update(`${salt}:${pass}:${text}`)
329
+ .digest();
330
+ const startIdx = pass * 32;
331
+ const endIdx = Math.min(startIdx + 32, dimension);
332
+ for (let i = startIdx; i < endIdx; i++) {
333
+ // Convert byte to [-1, 1] range
334
+ embedding[i] = (hash[i - startIdx] / 127.5) - 1;
335
+ }
336
+ }
337
+ return embedding;
338
+ }
339
+ /**
340
+ * Generate ML-based text embedding
341
+ *
342
+ * Uses Transformers.js for production-quality embeddings.
343
+ *
344
+ * @param text - Text to embed
345
+ * @returns Vector embedding
346
+ */
347
+ async generateMLTextEmbedding(text) {
348
+ if (!this.pipeline) {
349
+ throw new Error('ML pipeline not initialized');
350
+ }
351
+ // Wait for initialization if in progress
352
+ if (this.initPromise) {
353
+ await this.initPromise;
354
+ }
355
+ // Generate embedding using transformer
356
+ const result = await this.pipeline(text, {
357
+ pooling: 'mean',
358
+ normalize: true
359
+ });
360
+ // Convert to regular array
361
+ return Array.from(result.data);
362
+ }
363
+ /**
364
+ * Generate ML-based code embedding
365
+ *
366
+ * Uses CodeBERT for code-specific embeddings.
367
+ *
368
+ * @param code - Code to embed
369
+ * @param language - Programming language
370
+ * @returns Vector embedding
371
+ */
372
+ async generateMLCodeEmbedding(code, language) {
373
+ if (!this.codePipeline) {
374
+ throw new Error('Code pipeline not initialized');
375
+ }
376
+ // Prepend language token for context
377
+ const input = `[${language}] ${code}`;
378
+ const result = await this.codePipeline(input, {
379
+ pooling: 'mean',
380
+ normalize: true
381
+ });
382
+ return Array.from(result.data);
383
+ }
384
+ /**
385
+ * Normalize embedding to unit length
386
+ *
387
+ * @param embedding - Vector to normalize
388
+ * @returns Normalized vector
389
+ */
390
+ normalizeEmbedding(embedding) {
391
+ const magnitude = Math.sqrt(embedding.reduce((sum, val) => sum + val * val, 0));
392
+ if (magnitude === 0) {
393
+ return embedding;
394
+ }
395
+ return embedding.map(val => val / magnitude);
396
+ }
397
+ /**
398
+ * Get cached embedding
399
+ *
400
+ * @param key - Cache key
401
+ * @param type - Embedding type ('text' | 'code')
402
+ * @returns Cached embedding or null
403
+ */
404
+ getCachedEmbedding(key, type = 'text') {
405
+ return this.cache.get(key, type);
406
+ }
407
+ /**
408
+ * Cache embedding manually
409
+ *
410
+ * @param key - Cache key
411
+ * @param embedding - Vector embedding
412
+ * @param type - Embedding type
413
+ */
414
+ cacheEmbedding(key, embedding, type = 'text') {
415
+ this.cache.set(key, embedding, type);
416
+ }
417
+ /**
418
+ * Clear cache
419
+ *
420
+ * @param type - Type to clear ('text' | 'code' | 'all')
421
+ */
422
+ clearCache(type = 'all') {
423
+ this.cache.clear(type);
424
+ }
425
+ /**
426
+ * Get cache statistics
427
+ *
428
+ * @returns Cache stats
429
+ */
430
+ getCacheStats() {
431
+ return this.cache.getStats();
432
+ }
433
+ /**
434
+ * Check if ML models are available
435
+ *
436
+ * @returns True if ML models initialized
437
+ */
438
+ isMLAvailable() {
439
+ return this.mlAvailable;
440
+ }
441
+ /**
442
+ * Get model information
443
+ *
444
+ * @returns Model info
445
+ */
446
+ getModelInfo() {
447
+ return {
448
+ textModel: this.TEXT_MODEL,
449
+ codeModel: this.CODE_MODEL,
450
+ textDimension: this.TEXT_DIMENSION,
451
+ codeDimension: this.CODE_DIMENSION,
452
+ hashDimension: this.DEFAULT_HASH_DIMENSION,
453
+ mlAvailable: this.mlAvailable,
454
+ cacheSize: this.cacheSize
455
+ };
456
+ }
457
+ }
458
+ exports.EmbeddingGenerator = EmbeddingGenerator;
459
+ //# sourceMappingURL=EmbeddingGenerator.js.map