agentic-qe 2.3.3 → 2.3.5

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 (255) hide show
  1. package/CHANGELOG.md +122 -0
  2. package/README.md +1 -1
  3. package/dist/agents/ApiContractValidatorAgent.d.ts +5 -0
  4. package/dist/agents/ApiContractValidatorAgent.d.ts.map +1 -1
  5. package/dist/agents/ApiContractValidatorAgent.js +41 -0
  6. package/dist/agents/ApiContractValidatorAgent.js.map +1 -1
  7. package/dist/agents/BaseAgent.d.ts +10 -0
  8. package/dist/agents/BaseAgent.d.ts.map +1 -1
  9. package/dist/agents/BaseAgent.js +113 -0
  10. package/dist/agents/BaseAgent.js.map +1 -1
  11. package/dist/agents/CodeComplexityAnalyzerAgent.d.ts +5 -0
  12. package/dist/agents/CodeComplexityAnalyzerAgent.d.ts.map +1 -1
  13. package/dist/agents/CodeComplexityAnalyzerAgent.js +47 -0
  14. package/dist/agents/CodeComplexityAnalyzerAgent.js.map +1 -1
  15. package/dist/agents/CoverageAnalyzerAgent.d.ts +26 -0
  16. package/dist/agents/CoverageAnalyzerAgent.d.ts.map +1 -1
  17. package/dist/agents/CoverageAnalyzerAgent.js +149 -1
  18. package/dist/agents/CoverageAnalyzerAgent.js.map +1 -1
  19. package/dist/agents/DeploymentReadinessAgent.d.ts +5 -0
  20. package/dist/agents/DeploymentReadinessAgent.d.ts.map +1 -1
  21. package/dist/agents/DeploymentReadinessAgent.js +41 -0
  22. package/dist/agents/DeploymentReadinessAgent.js.map +1 -1
  23. package/dist/agents/FlakyTestHunterAgent.d.ts +5 -0
  24. package/dist/agents/FlakyTestHunterAgent.d.ts.map +1 -1
  25. package/dist/agents/FlakyTestHunterAgent.js +40 -0
  26. package/dist/agents/FlakyTestHunterAgent.js.map +1 -1
  27. package/dist/agents/FleetCommanderAgent.d.ts +5 -0
  28. package/dist/agents/FleetCommanderAgent.d.ts.map +1 -1
  29. package/dist/agents/FleetCommanderAgent.js +51 -0
  30. package/dist/agents/FleetCommanderAgent.js.map +1 -1
  31. package/dist/agents/PerformanceTesterAgent.d.ts +5 -0
  32. package/dist/agents/PerformanceTesterAgent.d.ts.map +1 -1
  33. package/dist/agents/PerformanceTesterAgent.js +44 -0
  34. package/dist/agents/PerformanceTesterAgent.js.map +1 -1
  35. package/dist/agents/ProductionIntelligenceAgent.d.ts +5 -0
  36. package/dist/agents/ProductionIntelligenceAgent.d.ts.map +1 -1
  37. package/dist/agents/ProductionIntelligenceAgent.js +46 -0
  38. package/dist/agents/ProductionIntelligenceAgent.js.map +1 -1
  39. package/dist/agents/QXPartnerAgent.js +52 -0
  40. package/dist/agents/QXPartnerAgent.js.map +1 -1
  41. package/dist/agents/QualityAnalyzerAgent.d.ts +5 -0
  42. package/dist/agents/QualityAnalyzerAgent.d.ts.map +1 -1
  43. package/dist/agents/QualityAnalyzerAgent.js +45 -0
  44. package/dist/agents/QualityAnalyzerAgent.js.map +1 -1
  45. package/dist/agents/QualityGateAgent.d.ts +40 -0
  46. package/dist/agents/QualityGateAgent.d.ts.map +1 -1
  47. package/dist/agents/QualityGateAgent.js +227 -1
  48. package/dist/agents/QualityGateAgent.js.map +1 -1
  49. package/dist/agents/RegressionRiskAnalyzerAgent.d.ts +5 -0
  50. package/dist/agents/RegressionRiskAnalyzerAgent.d.ts.map +1 -1
  51. package/dist/agents/RegressionRiskAnalyzerAgent.js +46 -0
  52. package/dist/agents/RegressionRiskAnalyzerAgent.js.map +1 -1
  53. package/dist/agents/RequirementsValidatorAgent.d.ts +5 -0
  54. package/dist/agents/RequirementsValidatorAgent.d.ts.map +1 -1
  55. package/dist/agents/RequirementsValidatorAgent.js +42 -0
  56. package/dist/agents/RequirementsValidatorAgent.js.map +1 -1
  57. package/dist/agents/SecurityScannerAgent.d.ts +5 -0
  58. package/dist/agents/SecurityScannerAgent.d.ts.map +1 -1
  59. package/dist/agents/SecurityScannerAgent.js +39 -0
  60. package/dist/agents/SecurityScannerAgent.js.map +1 -1
  61. package/dist/agents/TestDataArchitectAgent.d.ts +5 -0
  62. package/dist/agents/TestDataArchitectAgent.d.ts.map +1 -1
  63. package/dist/agents/TestDataArchitectAgent.js +46 -0
  64. package/dist/agents/TestDataArchitectAgent.js.map +1 -1
  65. package/dist/agents/TestExecutorAgent.d.ts +5 -0
  66. package/dist/agents/TestExecutorAgent.d.ts.map +1 -1
  67. package/dist/agents/TestExecutorAgent.js +48 -0
  68. package/dist/agents/TestExecutorAgent.js.map +1 -1
  69. package/dist/agents/TestGeneratorAgent.d.ts +5 -0
  70. package/dist/agents/TestGeneratorAgent.d.ts.map +1 -1
  71. package/dist/agents/TestGeneratorAgent.js +36 -0
  72. package/dist/agents/TestGeneratorAgent.js.map +1 -1
  73. package/dist/agents/lifecycle/AgentLifecycleManager.d.ts.map +1 -1
  74. package/dist/agents/lifecycle/AgentLifecycleManager.js +5 -2
  75. package/dist/agents/lifecycle/AgentLifecycleManager.js.map +1 -1
  76. package/dist/cli/commands/dream/index.d.ts +50 -0
  77. package/dist/cli/commands/dream/index.d.ts.map +1 -0
  78. package/dist/cli/commands/dream/index.js +282 -0
  79. package/dist/cli/commands/dream/index.js.map +1 -0
  80. package/dist/cli/commands/learn/index.d.ts +31 -5
  81. package/dist/cli/commands/learn/index.d.ts.map +1 -1
  82. package/dist/cli/commands/learn/index.js +183 -50
  83. package/dist/cli/commands/learn/index.js.map +1 -1
  84. package/dist/cli/commands/transfer/index.d.ts +55 -0
  85. package/dist/cli/commands/transfer/index.d.ts.map +1 -0
  86. package/dist/cli/commands/transfer/index.js +317 -0
  87. package/dist/cli/commands/transfer/index.js.map +1 -0
  88. package/dist/cli/index.js +224 -3
  89. package/dist/cli/index.js.map +1 -1
  90. package/dist/cli/init/index.d.ts.map +1 -1
  91. package/dist/cli/init/index.js +12 -4
  92. package/dist/cli/init/index.js.map +1 -1
  93. package/dist/cli/init/learning-init.d.ts +39 -0
  94. package/dist/cli/init/learning-init.d.ts.map +1 -0
  95. package/dist/cli/init/learning-init.js +239 -0
  96. package/dist/cli/init/learning-init.js.map +1 -0
  97. package/dist/core/memory/HNSWVectorMemory.js +1 -1
  98. package/dist/learning/baselines/BaselineCollector.d.ts +178 -0
  99. package/dist/learning/baselines/BaselineCollector.d.ts.map +1 -0
  100. package/dist/learning/baselines/BaselineCollector.js +398 -0
  101. package/dist/learning/baselines/BaselineCollector.js.map +1 -0
  102. package/dist/learning/baselines/StandardTaskSuite.d.ts +88 -0
  103. package/dist/learning/baselines/StandardTaskSuite.d.ts.map +1 -0
  104. package/dist/learning/baselines/StandardTaskSuite.js +801 -0
  105. package/dist/learning/baselines/StandardTaskSuite.js.map +1 -0
  106. package/dist/learning/baselines/index.d.ts +10 -0
  107. package/dist/learning/baselines/index.d.ts.map +1 -0
  108. package/dist/learning/baselines/index.js +15 -0
  109. package/dist/learning/baselines/index.js.map +1 -0
  110. package/dist/learning/capture/ExecutionRecorder.d.ts +97 -0
  111. package/dist/learning/capture/ExecutionRecorder.d.ts.map +1 -0
  112. package/dist/learning/capture/ExecutionRecorder.js +195 -0
  113. package/dist/learning/capture/ExecutionRecorder.js.map +1 -0
  114. package/dist/learning/capture/ExperienceCapture.d.ts +177 -0
  115. package/dist/learning/capture/ExperienceCapture.d.ts.map +1 -0
  116. package/dist/learning/capture/ExperienceCapture.js +432 -0
  117. package/dist/learning/capture/ExperienceCapture.js.map +1 -0
  118. package/dist/learning/capture/ExperienceExtractor.d.ts +219 -0
  119. package/dist/learning/capture/ExperienceExtractor.d.ts.map +1 -0
  120. package/dist/learning/capture/ExperienceExtractor.js +536 -0
  121. package/dist/learning/capture/ExperienceExtractor.js.map +1 -0
  122. package/dist/learning/capture/ExperienceStore.d.ts +196 -0
  123. package/dist/learning/capture/ExperienceStore.d.ts.map +1 -0
  124. package/dist/learning/capture/ExperienceStore.js +453 -0
  125. package/dist/learning/capture/ExperienceStore.js.map +1 -0
  126. package/dist/learning/capture/index.d.ts +12 -0
  127. package/dist/learning/capture/index.d.ts.map +1 -0
  128. package/dist/learning/capture/index.js +17 -0
  129. package/dist/learning/capture/index.js.map +1 -0
  130. package/dist/learning/dashboard/MetricsDashboard.d.ts +63 -0
  131. package/dist/learning/dashboard/MetricsDashboard.d.ts.map +1 -0
  132. package/dist/learning/dashboard/MetricsDashboard.js +230 -0
  133. package/dist/learning/dashboard/MetricsDashboard.js.map +1 -0
  134. package/dist/learning/dashboard/index.d.ts +7 -0
  135. package/dist/learning/dashboard/index.d.ts.map +1 -0
  136. package/dist/learning/dashboard/index.js +23 -0
  137. package/dist/learning/dashboard/index.js.map +1 -0
  138. package/dist/learning/dream/ConceptGraph.d.ts +160 -0
  139. package/dist/learning/dream/ConceptGraph.d.ts.map +1 -0
  140. package/dist/learning/dream/ConceptGraph.js +445 -0
  141. package/dist/learning/dream/ConceptGraph.js.map +1 -0
  142. package/dist/learning/dream/DreamEngine.d.ts +150 -0
  143. package/dist/learning/dream/DreamEngine.d.ts.map +1 -0
  144. package/dist/learning/dream/DreamEngine.js +551 -0
  145. package/dist/learning/dream/DreamEngine.js.map +1 -0
  146. package/dist/learning/dream/InsightGenerator.d.ts +152 -0
  147. package/dist/learning/dream/InsightGenerator.d.ts.map +1 -0
  148. package/dist/learning/dream/InsightGenerator.js +463 -0
  149. package/dist/learning/dream/InsightGenerator.js.map +1 -0
  150. package/dist/learning/dream/SpreadingActivation.d.ts +138 -0
  151. package/dist/learning/dream/SpreadingActivation.d.ts.map +1 -0
  152. package/dist/learning/dream/SpreadingActivation.js +320 -0
  153. package/dist/learning/dream/SpreadingActivation.js.map +1 -0
  154. package/dist/learning/dream/index.d.ts +14 -0
  155. package/dist/learning/dream/index.d.ts.map +1 -0
  156. package/dist/learning/dream/index.js +22 -0
  157. package/dist/learning/dream/index.js.map +1 -0
  158. package/dist/learning/metrics/AlertManager.d.ts +107 -0
  159. package/dist/learning/metrics/AlertManager.d.ts.map +1 -0
  160. package/dist/learning/metrics/AlertManager.js +246 -0
  161. package/dist/learning/metrics/AlertManager.js.map +1 -0
  162. package/dist/learning/metrics/LearningMetrics.d.ts +184 -0
  163. package/dist/learning/metrics/LearningMetrics.d.ts.map +1 -0
  164. package/dist/learning/metrics/LearningMetrics.js +754 -0
  165. package/dist/learning/metrics/LearningMetrics.js.map +1 -0
  166. package/dist/learning/metrics/MetricsCollector.d.ts +108 -0
  167. package/dist/learning/metrics/MetricsCollector.d.ts.map +1 -0
  168. package/dist/learning/metrics/MetricsCollector.js +240 -0
  169. package/dist/learning/metrics/MetricsCollector.js.map +1 -0
  170. package/dist/learning/metrics/MetricsStore.d.ts +149 -0
  171. package/dist/learning/metrics/MetricsStore.d.ts.map +1 -0
  172. package/dist/learning/metrics/MetricsStore.js +502 -0
  173. package/dist/learning/metrics/MetricsStore.js.map +1 -0
  174. package/dist/learning/metrics/TrendAnalyzer.d.ts +85 -0
  175. package/dist/learning/metrics/TrendAnalyzer.d.ts.map +1 -0
  176. package/dist/learning/metrics/TrendAnalyzer.js +210 -0
  177. package/dist/learning/metrics/TrendAnalyzer.js.map +1 -0
  178. package/dist/learning/metrics/index.d.ts +13 -0
  179. package/dist/learning/metrics/index.d.ts.map +1 -0
  180. package/dist/learning/metrics/index.js +39 -0
  181. package/dist/learning/metrics/index.js.map +1 -0
  182. package/dist/learning/scheduler/IdleDetector.d.ts +126 -0
  183. package/dist/learning/scheduler/IdleDetector.d.ts.map +1 -0
  184. package/dist/learning/scheduler/IdleDetector.js +281 -0
  185. package/dist/learning/scheduler/IdleDetector.js.map +1 -0
  186. package/dist/learning/scheduler/SleepCycle.d.ts +150 -0
  187. package/dist/learning/scheduler/SleepCycle.d.ts.map +1 -0
  188. package/dist/learning/scheduler/SleepCycle.js +506 -0
  189. package/dist/learning/scheduler/SleepCycle.js.map +1 -0
  190. package/dist/learning/scheduler/SleepScheduler.d.ts +133 -0
  191. package/dist/learning/scheduler/SleepScheduler.d.ts.map +1 -0
  192. package/dist/learning/scheduler/SleepScheduler.js +301 -0
  193. package/dist/learning/scheduler/SleepScheduler.js.map +1 -0
  194. package/dist/learning/scheduler/TimeBasedTrigger.d.ts +108 -0
  195. package/dist/learning/scheduler/TimeBasedTrigger.d.ts.map +1 -0
  196. package/dist/learning/scheduler/TimeBasedTrigger.js +222 -0
  197. package/dist/learning/scheduler/TimeBasedTrigger.js.map +1 -0
  198. package/dist/learning/scheduler/index.d.ts +16 -0
  199. package/dist/learning/scheduler/index.d.ts.map +1 -0
  200. package/dist/learning/scheduler/index.js +23 -0
  201. package/dist/learning/scheduler/index.js.map +1 -0
  202. package/dist/learning/synthesis/ClusteringEngine.d.ts +122 -0
  203. package/dist/learning/synthesis/ClusteringEngine.d.ts.map +1 -0
  204. package/dist/learning/synthesis/ClusteringEngine.js +356 -0
  205. package/dist/learning/synthesis/ClusteringEngine.js.map +1 -0
  206. package/dist/learning/synthesis/PatternSynthesis.d.ts +162 -0
  207. package/dist/learning/synthesis/PatternSynthesis.d.ts.map +1 -0
  208. package/dist/learning/synthesis/PatternSynthesis.js +479 -0
  209. package/dist/learning/synthesis/PatternSynthesis.js.map +1 -0
  210. package/dist/learning/synthesis/index.d.ts +10 -0
  211. package/dist/learning/synthesis/index.d.ts.map +1 -0
  212. package/dist/learning/synthesis/index.js +14 -0
  213. package/dist/learning/synthesis/index.js.map +1 -0
  214. package/dist/learning/transfer/CompatibilityScorer.d.ts +115 -0
  215. package/dist/learning/transfer/CompatibilityScorer.d.ts.map +1 -0
  216. package/dist/learning/transfer/CompatibilityScorer.js +319 -0
  217. package/dist/learning/transfer/CompatibilityScorer.js.map +1 -0
  218. package/dist/learning/transfer/TransferProtocol.d.ts +172 -0
  219. package/dist/learning/transfer/TransferProtocol.d.ts.map +1 -0
  220. package/dist/learning/transfer/TransferProtocol.js +611 -0
  221. package/dist/learning/transfer/TransferProtocol.js.map +1 -0
  222. package/dist/learning/transfer/TransferPrototype.d.ts +93 -0
  223. package/dist/learning/transfer/TransferPrototype.d.ts.map +1 -0
  224. package/dist/learning/transfer/TransferPrototype.js +433 -0
  225. package/dist/learning/transfer/TransferPrototype.js.map +1 -0
  226. package/dist/learning/transfer/TransferRegistry.d.ts +245 -0
  227. package/dist/learning/transfer/TransferRegistry.d.ts.map +1 -0
  228. package/dist/learning/transfer/TransferRegistry.js +410 -0
  229. package/dist/learning/transfer/TransferRegistry.js.map +1 -0
  230. package/dist/learning/transfer/TransferValidator.d.ts +140 -0
  231. package/dist/learning/transfer/TransferValidator.d.ts.map +1 -0
  232. package/dist/learning/transfer/TransferValidator.js +413 -0
  233. package/dist/learning/transfer/TransferValidator.js.map +1 -0
  234. package/dist/learning/transfer/index.d.ts +14 -0
  235. package/dist/learning/transfer/index.d.ts.map +1 -0
  236. package/dist/learning/transfer/index.js +22 -0
  237. package/dist/learning/transfer/index.js.map +1 -0
  238. package/dist/mcp/handlers/task-orchestrate.d.ts +11 -0
  239. package/dist/mcp/handlers/task-orchestrate.d.ts.map +1 -1
  240. package/dist/mcp/handlers/task-orchestrate.js +297 -4
  241. package/dist/mcp/handlers/task-orchestrate.js.map +1 -1
  242. package/dist/mcp/handlers/test/test-generate-enhanced.d.ts +26 -2
  243. package/dist/mcp/handlers/test/test-generate-enhanced.d.ts.map +1 -1
  244. package/dist/mcp/handlers/test/test-generate-enhanced.js +159 -27
  245. package/dist/mcp/handlers/test/test-generate-enhanced.js.map +1 -1
  246. package/dist/mcp/server-instructions.d.ts +1 -1
  247. package/dist/mcp/server-instructions.js +1 -1
  248. package/dist/mcp/server.d.ts.map +1 -1
  249. package/dist/mcp/server.js +2 -1
  250. package/dist/mcp/server.js.map +1 -1
  251. package/dist/mcp/services/AgentRegistry.d.ts +6 -1
  252. package/dist/mcp/services/AgentRegistry.d.ts.map +1 -1
  253. package/dist/mcp/services/AgentRegistry.js +34 -3
  254. package/dist/mcp/services/AgentRegistry.js.map +1 -1
  255. package/package.json +5 -2
@@ -0,0 +1,611 @@
1
+ "use strict";
2
+ /**
3
+ * TransferProtocol - Full cross-agent pattern transfer implementation
4
+ *
5
+ * Extends TransferPrototype with stricter thresholds, validation,
6
+ * and registry tracking for production use.
7
+ *
8
+ * Part of the Nightly-Learner Phase 2 implementation.
9
+ *
10
+ * @version 1.0.0
11
+ * @module src/learning/transfer/TransferProtocol
12
+ */
13
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ var desc = Object.getOwnPropertyDescriptor(m, k);
16
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
+ desc = { enumerable: true, get: function() { return m[k]; } };
18
+ }
19
+ Object.defineProperty(o, k2, desc);
20
+ }) : (function(o, m, k, k2) {
21
+ if (k2 === undefined) k2 = k;
22
+ o[k2] = m[k];
23
+ }));
24
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
26
+ }) : function(o, v) {
27
+ o["default"] = v;
28
+ });
29
+ var __importStar = (this && this.__importStar) || (function () {
30
+ var ownKeys = function(o) {
31
+ ownKeys = Object.getOwnPropertyNames || function (o) {
32
+ var ar = [];
33
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
34
+ return ar;
35
+ };
36
+ return ownKeys(o);
37
+ };
38
+ return function (mod) {
39
+ if (mod && mod.__esModule) return mod;
40
+ var result = {};
41
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
42
+ __setModuleDefault(result, mod);
43
+ return result;
44
+ };
45
+ })();
46
+ var __importDefault = (this && this.__importDefault) || function (mod) {
47
+ return (mod && mod.__esModule) ? mod : { "default": mod };
48
+ };
49
+ Object.defineProperty(exports, "__esModule", { value: true });
50
+ exports.TransferProtocol = void 0;
51
+ const events_1 = require("events");
52
+ const better_sqlite3_1 = __importDefault(require("better-sqlite3"));
53
+ const path = __importStar(require("path"));
54
+ const Logger_1 = require("../../utils/Logger");
55
+ const SecureRandom_1 = require("../../utils/SecureRandom");
56
+ const TransferPrototype_1 = require("./TransferPrototype");
57
+ /**
58
+ * TransferProtocol manages cross-agent pattern transfer with validation
59
+ *
60
+ * @example
61
+ * ```typescript
62
+ * const protocol = new TransferProtocol({ compatibilityThreshold: 0.5 });
63
+ *
64
+ * const request = await protocol.createRequest({
65
+ * sourceAgent: 'test-generator',
66
+ * targetAgent: 'coverage-analyzer',
67
+ * patternIds: ['pattern-1', 'pattern-2'],
68
+ * priority: 'high',
69
+ * reason: 'Share test optimization patterns',
70
+ * });
71
+ *
72
+ * const result = await protocol.executeTransfer(request);
73
+ * console.log(`Transferred ${result.patternsTransferred} patterns`);
74
+ * ```
75
+ */
76
+ class TransferProtocol extends events_1.EventEmitter {
77
+ constructor(config) {
78
+ super();
79
+ this.logger = Logger_1.Logger.getInstance();
80
+ this.config = {
81
+ dbPath: config?.dbPath || path.join(process.cwd(), '.agentic-qe', 'memory.db'),
82
+ compatibilityThreshold: config?.compatibilityThreshold ?? 0.5, // Stricter than prototype
83
+ enableValidation: config?.enableValidation ?? true,
84
+ maxPatternsPerTransfer: config?.maxPatternsPerTransfer ?? 50,
85
+ debug: config?.debug ?? false,
86
+ };
87
+ this.db = new better_sqlite3_1.default(this.config.dbPath);
88
+ this.prototype = new TransferPrototype_1.TransferPrototype(this.config.dbPath);
89
+ this.initializeSchema();
90
+ this.initializeAgentDomains();
91
+ }
92
+ /**
93
+ * Initialize database schema
94
+ */
95
+ initializeSchema() {
96
+ this.db.exec(`
97
+ CREATE TABLE IF NOT EXISTS transfer_requests (
98
+ id TEXT PRIMARY KEY,
99
+ source_agent TEXT NOT NULL,
100
+ target_agent TEXT NOT NULL,
101
+ pattern_ids TEXT NOT NULL,
102
+ priority TEXT NOT NULL,
103
+ reason TEXT NOT NULL,
104
+ requested_at INTEGER NOT NULL,
105
+ requested_by TEXT,
106
+ status TEXT NOT NULL DEFAULT 'pending',
107
+ result TEXT,
108
+ completed_at INTEGER
109
+ );
110
+
111
+ CREATE TABLE IF NOT EXISTS transfer_registry (
112
+ id TEXT PRIMARY KEY,
113
+ pattern_id TEXT NOT NULL,
114
+ source_agent TEXT NOT NULL,
115
+ target_agent TEXT NOT NULL,
116
+ transfer_id TEXT NOT NULL,
117
+ compatibility_score REAL NOT NULL,
118
+ validation_passed INTEGER,
119
+ transferred_at INTEGER NOT NULL,
120
+ status TEXT NOT NULL,
121
+ FOREIGN KEY (transfer_id) REFERENCES transfer_requests(id)
122
+ );
123
+
124
+ CREATE INDEX IF NOT EXISTS idx_transfer_req_status ON transfer_requests(status);
125
+ CREATE INDEX IF NOT EXISTS idx_transfer_req_source ON transfer_requests(source_agent);
126
+ CREATE INDEX IF NOT EXISTS idx_transfer_reg_pattern ON transfer_registry(pattern_id);
127
+ CREATE INDEX IF NOT EXISTS idx_transfer_reg_target ON transfer_registry(target_agent);
128
+ `);
129
+ }
130
+ /**
131
+ * Initialize agent domain definitions
132
+ */
133
+ initializeAgentDomains() {
134
+ this.agentDomains = new Map([
135
+ ['test-generator', {
136
+ agentType: 'test-generator',
137
+ capabilities: ['test-generation', 'code-analysis', 'pattern-matching', 'assertion-generation'],
138
+ frameworks: ['jest', 'mocha', 'vitest', 'pytest', 'playwright'],
139
+ taskTypes: ['unit-test', 'integration-test', 'e2e-test', 'component-test'],
140
+ }],
141
+ ['coverage-analyzer', {
142
+ agentType: 'coverage-analyzer',
143
+ capabilities: ['coverage-analysis', 'gap-detection', 'report-generation', 'branch-analysis'],
144
+ frameworks: ['istanbul', 'c8', 'jest-coverage', 'nyc'],
145
+ taskTypes: ['coverage-analysis', 'gap-detection', 'coverage-report', 'branch-coverage'],
146
+ }],
147
+ ['performance-tester', {
148
+ agentType: 'performance-tester',
149
+ capabilities: ['load-testing', 'benchmark', 'profiling', 'bottleneck-detection'],
150
+ frameworks: ['k6', 'artillery', 'autocannon', 'lighthouse'],
151
+ taskTypes: ['load-test', 'stress-test', 'benchmark', 'performance-audit'],
152
+ }],
153
+ ['security-scanner', {
154
+ agentType: 'security-scanner',
155
+ capabilities: ['vulnerability-scan', 'dependency-audit', 'code-analysis', 'secret-detection'],
156
+ frameworks: ['snyk', 'owasp', 'eslint-security', 'trivy'],
157
+ taskTypes: ['security-scan', 'dependency-check', 'compliance', 'penetration-test'],
158
+ }],
159
+ ['flaky-test-hunter', {
160
+ agentType: 'flaky-test-hunter',
161
+ capabilities: ['flaky-detection', 'test-analysis', 'stability-scoring', 'retry-optimization'],
162
+ frameworks: ['jest', 'mocha', 'playwright', 'cypress'],
163
+ taskTypes: ['flaky-detection', 'test-stability', 'retry-analysis', 'quarantine-management'],
164
+ }],
165
+ ['quality-gate', {
166
+ agentType: 'quality-gate',
167
+ capabilities: ['quality-check', 'threshold-validation', 'gate-evaluation', 'metric-aggregation'],
168
+ frameworks: ['sonarqube', 'custom-gates', 'eslint', 'prettier'],
169
+ taskTypes: ['quality-gate', 'deployment-check', 'release-validation', 'code-review'],
170
+ }],
171
+ ]);
172
+ }
173
+ /**
174
+ * Create a transfer request
175
+ */
176
+ async createRequest(params) {
177
+ const request = {
178
+ id: `transfer-${Date.now()}-${SecureRandom_1.SecureRandom.randomString(8, 'alphanumeric')}`,
179
+ sourceAgent: params.sourceAgent,
180
+ targetAgent: params.targetAgent,
181
+ patternIds: params.patternIds.slice(0, this.config.maxPatternsPerTransfer),
182
+ priority: params.priority || 'medium',
183
+ reason: params.reason,
184
+ requestedAt: new Date(),
185
+ requestedBy: params.requestedBy,
186
+ };
187
+ // Store request
188
+ this.db.prepare(`
189
+ INSERT INTO transfer_requests
190
+ (id, source_agent, target_agent, pattern_ids, priority, reason, requested_at, requested_by, status)
191
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, 'pending')
192
+ `).run(request.id, request.sourceAgent, request.targetAgent, JSON.stringify(request.patternIds), request.priority, request.reason, request.requestedAt.getTime(), request.requestedBy || null);
193
+ this.logger.info('[TransferProtocol] Request created', {
194
+ id: request.id,
195
+ source: request.sourceAgent,
196
+ target: request.targetAgent,
197
+ patterns: request.patternIds.length,
198
+ });
199
+ this.emit('request:created', request);
200
+ return request;
201
+ }
202
+ /**
203
+ * Execute a transfer request
204
+ */
205
+ async executeTransfer(request) {
206
+ const startTime = Date.now();
207
+ this.logger.info('[TransferProtocol] Executing transfer', {
208
+ id: request.id,
209
+ source: request.sourceAgent,
210
+ target: request.targetAgent,
211
+ });
212
+ const details = [];
213
+ let patternsTransferred = 0;
214
+ let patternsSkipped = 0;
215
+ let patternsRejected = 0;
216
+ // Update request status
217
+ this.db.prepare(`UPDATE transfer_requests SET status = 'executing' WHERE id = ?`)
218
+ .run(request.id);
219
+ // Process each pattern
220
+ for (const patternId of request.patternIds) {
221
+ const pattern = await this.getPattern(patternId);
222
+ if (!pattern) {
223
+ details.push({
224
+ patternId,
225
+ status: 'skipped',
226
+ reason: 'Pattern not found',
227
+ compatibilityScore: 0,
228
+ });
229
+ patternsSkipped++;
230
+ continue;
231
+ }
232
+ // Calculate compatibility
233
+ const compatibility = this.calculateCompatibility(pattern, request.sourceAgent, request.targetAgent);
234
+ if (compatibility.score < this.config.compatibilityThreshold) {
235
+ details.push({
236
+ patternId,
237
+ status: 'rejected',
238
+ reason: compatibility.reason || 'Below compatibility threshold',
239
+ compatibilityScore: compatibility.score,
240
+ });
241
+ patternsRejected++;
242
+ continue;
243
+ }
244
+ // Perform transfer
245
+ const transferSuccess = await this.performTransfer(pattern, request.targetAgent);
246
+ // Validate if enabled
247
+ let validationResult;
248
+ if (this.config.enableValidation && transferSuccess) {
249
+ validationResult = await this.validateTransfer(pattern, request.targetAgent);
250
+ }
251
+ const status = transferSuccess
252
+ ? (validationResult?.passed !== false ? 'transferred' : 'rejected')
253
+ : 'rejected';
254
+ details.push({
255
+ patternId,
256
+ status,
257
+ compatibilityScore: compatibility.score,
258
+ validationResult,
259
+ reason: status === 'rejected' ? (validationResult?.tests[0]?.message || 'Transfer failed') : undefined,
260
+ });
261
+ if (status === 'transferred') {
262
+ patternsTransferred++;
263
+ this.registerTransfer(patternId, request, compatibility.score, validationResult?.passed ?? true);
264
+ }
265
+ else {
266
+ patternsRejected++;
267
+ }
268
+ }
269
+ const duration = Date.now() - startTime;
270
+ const totalProcessed = patternsTransferred + patternsSkipped + patternsRejected;
271
+ const successRate = totalProcessed > 0 ? patternsTransferred / totalProcessed : 0;
272
+ const validationPassed = successRate >= 0.7; // Phase 2 target: 70%
273
+ const result = {
274
+ requestId: request.id,
275
+ sourceAgent: request.sourceAgent,
276
+ targetAgent: request.targetAgent,
277
+ patternsTransferred,
278
+ patternsSkipped,
279
+ patternsRejected,
280
+ successRate,
281
+ details,
282
+ duration,
283
+ validationPassed,
284
+ };
285
+ // Update request with result
286
+ this.db.prepare(`
287
+ UPDATE transfer_requests
288
+ SET status = ?, result = ?, completed_at = ?
289
+ WHERE id = ?
290
+ `).run(validationPassed ? 'completed' : 'partial', JSON.stringify(result), Date.now(), request.id);
291
+ this.logger.info('[TransferProtocol] Transfer complete', {
292
+ id: request.id,
293
+ transferred: patternsTransferred,
294
+ skipped: patternsSkipped,
295
+ rejected: patternsRejected,
296
+ successRate: (successRate * 100).toFixed(1) + '%',
297
+ validationPassed,
298
+ });
299
+ this.emit('transfer:complete', result);
300
+ return result;
301
+ }
302
+ /**
303
+ * Get a pattern from the database
304
+ */
305
+ async getPattern(patternId) {
306
+ // Try patterns table (actual schema: id, pattern, confidence, agent_id, domain)
307
+ let row = this.db.prepare(`
308
+ SELECT id, pattern as content, domain as type, confidence, metadata as context, agent_id
309
+ FROM patterns WHERE id = ?
310
+ `).get(patternId);
311
+ if (row) {
312
+ return {
313
+ id: row.id,
314
+ type: row.type || 'general',
315
+ content: row.content,
316
+ confidence: row.confidence || 0.7,
317
+ context: row.context,
318
+ agentId: row.agent_id,
319
+ };
320
+ }
321
+ // Try synthesized_patterns table
322
+ row = this.db.prepare(`
323
+ SELECT id, type, description as content, confidence, agent_types, task_types
324
+ FROM synthesized_patterns WHERE id = ?
325
+ `).get(patternId);
326
+ if (row) {
327
+ return {
328
+ id: row.id,
329
+ type: row.type || 'general',
330
+ content: row.content,
331
+ confidence: row.confidence || 0.7,
332
+ context: JSON.stringify({ agentTypes: row.agent_types, taskTypes: row.task_types }),
333
+ };
334
+ }
335
+ return null;
336
+ }
337
+ /**
338
+ * Calculate compatibility between pattern and target agent
339
+ */
340
+ calculateCompatibility(pattern, sourceAgent, targetAgent) {
341
+ const sourceDomain = this.agentDomains.get(sourceAgent);
342
+ const targetDomain = this.agentDomains.get(targetAgent);
343
+ if (!sourceDomain || !targetDomain) {
344
+ return { score: 0.3, reason: 'Unknown agent domain' };
345
+ }
346
+ // Factor weights
347
+ const CAPABILITY_WEIGHT = 0.35;
348
+ const FRAMEWORK_WEIGHT = 0.25;
349
+ const TASK_WEIGHT = 0.25;
350
+ const QUALITY_WEIGHT = 0.15;
351
+ // Calculate overlaps with semantic similarity
352
+ const capabilityScore = this.calculateOverlapWithSemantic(sourceDomain.capabilities, targetDomain.capabilities);
353
+ const frameworkScore = this.calculateOverlapWithSemantic(sourceDomain.frameworks, targetDomain.frameworks);
354
+ const taskScore = this.calculateOverlapWithSemantic(sourceDomain.taskTypes, targetDomain.taskTypes);
355
+ const qualityScore = pattern.confidence || 0.7;
356
+ const score = capabilityScore * CAPABILITY_WEIGHT +
357
+ frameworkScore * FRAMEWORK_WEIGHT +
358
+ taskScore * TASK_WEIGHT +
359
+ qualityScore * QUALITY_WEIGHT;
360
+ if (this.config.debug) {
361
+ this.logger.debug('[TransferProtocol] Compatibility breakdown', {
362
+ source: sourceAgent,
363
+ target: targetAgent,
364
+ capability: (capabilityScore * 100).toFixed(1) + '%',
365
+ framework: (frameworkScore * 100).toFixed(1) + '%',
366
+ task: (taskScore * 100).toFixed(1) + '%',
367
+ quality: (qualityScore * 100).toFixed(1) + '%',
368
+ total: (score * 100).toFixed(1) + '%',
369
+ });
370
+ }
371
+ let reason;
372
+ if (score < this.config.compatibilityThreshold) {
373
+ if (capabilityScore < 0.4)
374
+ reason = 'Low capability overlap';
375
+ else if (frameworkScore < 0.3)
376
+ reason = 'Incompatible frameworks';
377
+ else if (taskScore < 0.3)
378
+ reason = 'Task types not applicable';
379
+ else
380
+ reason = 'Pattern not generalizable';
381
+ }
382
+ return { score: Math.min(1, Math.max(0, score)), reason };
383
+ }
384
+ /**
385
+ * Calculate overlap with semantic similarity
386
+ */
387
+ calculateOverlapWithSemantic(set1, set2) {
388
+ if (set1.length === 0 || set2.length === 0)
389
+ return 0;
390
+ // Exact match (Jaccard)
391
+ const intersection = set1.filter(item => set2.includes(item));
392
+ const union = [...new Set([...set1, ...set2])];
393
+ const exactScore = intersection.length / union.length;
394
+ // Semantic similarity
395
+ const semanticScore = this.semanticSimilarity(set1, set2);
396
+ return exactScore * 0.4 + semanticScore * 0.6;
397
+ }
398
+ /**
399
+ * Calculate semantic similarity between sets
400
+ * Uses expanded concept groups to capture related capabilities
401
+ */
402
+ semanticSimilarity(set1, set2) {
403
+ // Expanded concept groups that capture test-related concepts
404
+ const conceptGroups = {
405
+ 'analysis': ['analysis', 'detection', 'scanning', 'audit', 'check', 'stability', 'scoring', 'pattern'],
406
+ 'testing': ['test', 'testing', 'benchmark', 'validation', 'flaky', 'retry', 'unit', 'integration', 'e2e', 'component'],
407
+ 'generation': ['generation', 'generator', 'creating', 'assertion'],
408
+ 'quality': ['quality', 'gate', 'threshold', 'metric', 'coverage', 'gap'],
409
+ 'security': ['security', 'vulnerability', 'compliance', 'audit'],
410
+ 'performance': ['performance', 'load', 'stress', 'profiling', 'optimization'],
411
+ 'code': ['code', 'pattern', 'matching', 'analysis'],
412
+ };
413
+ const getGroups = (items) => {
414
+ const groups = new Set();
415
+ for (const item of items) {
416
+ const lower = item.toLowerCase();
417
+ for (const [group, keywords] of Object.entries(conceptGroups)) {
418
+ if (keywords.some(kw => lower.includes(kw))) {
419
+ groups.add(group);
420
+ }
421
+ }
422
+ }
423
+ return groups;
424
+ };
425
+ const groups1 = getGroups(set1);
426
+ const groups2 = getGroups(set2);
427
+ if (groups1.size === 0 || groups2.size === 0)
428
+ return 0.3;
429
+ const groupIntersection = [...groups1].filter(g => groups2.has(g));
430
+ const groupUnion = new Set([...groups1, ...groups2]);
431
+ // Boost score for having any overlap, since having shared concept groups is significant
432
+ const jaccard = groupIntersection.length / groupUnion.size;
433
+ return Math.max(0.3, jaccard + (groupIntersection.length > 0 ? 0.2 : 0));
434
+ }
435
+ /**
436
+ * Perform the actual pattern transfer
437
+ */
438
+ async performTransfer(pattern, targetAgent) {
439
+ try {
440
+ // Copy pattern to target agent's context
441
+ const newPatternId = `${pattern.id}-${targetAgent}-${Date.now()}`;
442
+ const now = Date.now();
443
+ // Modify content slightly to avoid UNIQUE constraint on pattern column
444
+ // Append transfer metadata to content to make it unique
445
+ const transferredContent = `${pattern.content} [transferred from ${pattern.agentId || 'unknown'} to ${targetAgent}]`;
446
+ // Use actual patterns table schema: id, pattern, confidence, metadata, agent_id, domain
447
+ this.db.prepare(`
448
+ INSERT INTO patterns
449
+ (id, pattern, confidence, metadata, agent_id, domain, created_at)
450
+ VALUES (?, ?, ?, ?, ?, ?, ?)
451
+ `).run(newPatternId, transferredContent, pattern.confidence * 0.9, // Slight confidence reduction for transferred patterns
452
+ JSON.stringify({
453
+ transferredFrom: pattern.id,
454
+ originalAgent: pattern.agentId,
455
+ originalContent: pattern.content,
456
+ transferDate: new Date().toISOString(),
457
+ }), targetAgent, pattern.type || 'general', now);
458
+ return true;
459
+ }
460
+ catch (error) {
461
+ this.logger.warn('[TransferProtocol] Transfer failed', { pattern: pattern.id, error });
462
+ return false;
463
+ }
464
+ }
465
+ /**
466
+ * Validate a transferred pattern
467
+ */
468
+ async validateTransfer(pattern, targetAgent) {
469
+ const tests = [];
470
+ // Test 1: Pattern exists in target context (column is 'pattern' not 'content')
471
+ const exists = this.db.prepare(`
472
+ SELECT COUNT(*) as count FROM patterns
473
+ WHERE agent_id = ? AND pattern LIKE ?
474
+ `).get(targetAgent, `%${pattern.content.substring(0, 50)}%`);
475
+ tests.push({
476
+ name: 'Pattern Existence',
477
+ passed: exists.count > 0,
478
+ score: exists.count > 0 ? 1.0 : 0,
479
+ message: exists.count > 0 ? 'Pattern stored' : 'Pattern not found',
480
+ });
481
+ // Test 2: Confidence preserved
482
+ const preservedConfidence = pattern.confidence * 0.9 >= 0.5;
483
+ tests.push({
484
+ name: 'Confidence Threshold',
485
+ passed: preservedConfidence,
486
+ score: preservedConfidence ? 1.0 : 0.5,
487
+ message: preservedConfidence ? 'Confidence acceptable' : 'Confidence below threshold',
488
+ });
489
+ // Test 3: No duplicate transfers
490
+ const duplicates = this.db.prepare(`
491
+ SELECT COUNT(*) as count FROM transfer_registry
492
+ WHERE pattern_id = ? AND target_agent = ?
493
+ `).get(pattern.id, targetAgent);
494
+ tests.push({
495
+ name: 'No Duplicates',
496
+ passed: duplicates.count === 0,
497
+ score: duplicates.count === 0 ? 1.0 : 0.5,
498
+ message: duplicates.count === 0 ? 'First transfer' : 'Previously transferred',
499
+ });
500
+ const overallScore = tests.reduce((sum, t) => sum + t.score, 0) / tests.length;
501
+ const passed = overallScore >= 0.7;
502
+ return { passed, tests, overallScore };
503
+ }
504
+ /**
505
+ * Register a successful transfer
506
+ */
507
+ registerTransfer(patternId, request, compatibilityScore, validationPassed) {
508
+ const id = `reg-${Date.now()}-${SecureRandom_1.SecureRandom.randomString(6, 'alphanumeric')}`;
509
+ this.db.prepare(`
510
+ INSERT INTO transfer_registry
511
+ (id, pattern_id, source_agent, target_agent, transfer_id, compatibility_score, validation_passed, transferred_at, status)
512
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, 'active')
513
+ `).run(id, patternId, request.sourceAgent, request.targetAgent, request.id, compatibilityScore, validationPassed ? 1 : 0, Date.now());
514
+ }
515
+ /**
516
+ * Get transfer statistics
517
+ */
518
+ getStats() {
519
+ const requests = this.db.prepare(`
520
+ SELECT COUNT(*) as count FROM transfer_requests
521
+ `).get();
522
+ const results = this.db.prepare(`
523
+ SELECT result FROM transfer_requests WHERE result IS NOT NULL
524
+ `).all();
525
+ let successfulTransfers = 0;
526
+ let failedTransfers = 0;
527
+ let totalCompatibility = 0;
528
+ let compatibilityCount = 0;
529
+ const byAgentPair = new Map();
530
+ for (const row of results) {
531
+ if (!row.result)
532
+ continue;
533
+ const result = JSON.parse(row.result);
534
+ successfulTransfers += result.patternsTransferred;
535
+ failedTransfers += result.patternsRejected + result.patternsSkipped;
536
+ const pairKey = `${result.sourceAgent}->${result.targetAgent}`;
537
+ const pair = byAgentPair.get(pairKey) || { success: 0, fail: 0 };
538
+ pair.success += result.patternsTransferred;
539
+ pair.fail += result.patternsRejected;
540
+ byAgentPair.set(pairKey, pair);
541
+ for (const detail of result.details) {
542
+ if (detail.compatibilityScore > 0) {
543
+ totalCompatibility += detail.compatibilityScore;
544
+ compatibilityCount++;
545
+ }
546
+ }
547
+ }
548
+ return {
549
+ totalRequests: requests.count,
550
+ successfulTransfers,
551
+ failedTransfers,
552
+ overallSuccessRate: (successfulTransfers + failedTransfers) > 0
553
+ ? successfulTransfers / (successfulTransfers + failedTransfers)
554
+ : 0,
555
+ byAgentPair,
556
+ averageCompatibilityScore: compatibilityCount > 0
557
+ ? totalCompatibility / compatibilityCount
558
+ : 0,
559
+ };
560
+ }
561
+ /**
562
+ * Get pending transfer requests
563
+ */
564
+ getPendingRequests() {
565
+ const rows = this.db.prepare(`
566
+ SELECT * FROM transfer_requests WHERE status = 'pending' ORDER BY
567
+ CASE priority WHEN 'high' THEN 1 WHEN 'medium' THEN 2 ELSE 3 END,
568
+ requested_at ASC
569
+ `).all();
570
+ return rows.map(row => ({
571
+ id: row.id,
572
+ sourceAgent: row.source_agent,
573
+ targetAgent: row.target_agent,
574
+ patternIds: JSON.parse(row.pattern_ids),
575
+ priority: row.priority,
576
+ reason: row.reason,
577
+ requestedAt: new Date(row.requested_at),
578
+ requestedBy: row.requested_by,
579
+ }));
580
+ }
581
+ /**
582
+ * Broadcast a pattern to all compatible agents
583
+ */
584
+ async broadcastPattern(patternId, sourceAgent) {
585
+ const results = [];
586
+ for (const [agentType] of this.agentDomains) {
587
+ if (agentType === sourceAgent)
588
+ continue;
589
+ const request = await this.createRequest({
590
+ sourceAgent,
591
+ targetAgent: agentType,
592
+ patternIds: [patternId],
593
+ priority: 'low',
594
+ reason: 'Pattern broadcast',
595
+ });
596
+ const result = await this.executeTransfer(request);
597
+ results.push(result);
598
+ }
599
+ return results;
600
+ }
601
+ /**
602
+ * Close database connection
603
+ */
604
+ close() {
605
+ this.prototype.close();
606
+ this.db.close();
607
+ }
608
+ }
609
+ exports.TransferProtocol = TransferProtocol;
610
+ exports.default = TransferProtocol;
611
+ //# sourceMappingURL=TransferProtocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TransferProtocol.js","sourceRoot":"","sources":["../../../src/learning/transfer/TransferProtocol.ts"],"names":[],"mappings":"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"}