agentic-qe 2.3.3 → 2.3.4
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.
- package/CHANGELOG.md +97 -0
- package/README.md +1 -1
- package/dist/agents/BaseAgent.d.ts +10 -0
- package/dist/agents/BaseAgent.d.ts.map +1 -1
- package/dist/agents/BaseAgent.js +113 -0
- package/dist/agents/BaseAgent.js.map +1 -1
- package/dist/cli/commands/dream/index.d.ts +50 -0
- package/dist/cli/commands/dream/index.d.ts.map +1 -0
- package/dist/cli/commands/dream/index.js +282 -0
- package/dist/cli/commands/dream/index.js.map +1 -0
- package/dist/cli/commands/learn/index.d.ts +31 -5
- package/dist/cli/commands/learn/index.d.ts.map +1 -1
- package/dist/cli/commands/learn/index.js +183 -50
- package/dist/cli/commands/learn/index.js.map +1 -1
- package/dist/cli/commands/transfer/index.d.ts +55 -0
- package/dist/cli/commands/transfer/index.d.ts.map +1 -0
- package/dist/cli/commands/transfer/index.js +317 -0
- package/dist/cli/commands/transfer/index.js.map +1 -0
- package/dist/cli/index.js +156 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init/index.d.ts.map +1 -1
- package/dist/cli/init/index.js +12 -4
- package/dist/cli/init/index.js.map +1 -1
- package/dist/cli/init/learning-init.d.ts +39 -0
- package/dist/cli/init/learning-init.d.ts.map +1 -0
- package/dist/cli/init/learning-init.js +239 -0
- package/dist/cli/init/learning-init.js.map +1 -0
- package/dist/core/memory/HNSWVectorMemory.js +1 -1
- package/dist/learning/baselines/BaselineCollector.d.ts +178 -0
- package/dist/learning/baselines/BaselineCollector.d.ts.map +1 -0
- package/dist/learning/baselines/BaselineCollector.js +398 -0
- package/dist/learning/baselines/BaselineCollector.js.map +1 -0
- package/dist/learning/baselines/StandardTaskSuite.d.ts +88 -0
- package/dist/learning/baselines/StandardTaskSuite.d.ts.map +1 -0
- package/dist/learning/baselines/StandardTaskSuite.js +801 -0
- package/dist/learning/baselines/StandardTaskSuite.js.map +1 -0
- package/dist/learning/baselines/index.d.ts +10 -0
- package/dist/learning/baselines/index.d.ts.map +1 -0
- package/dist/learning/baselines/index.js +15 -0
- package/dist/learning/baselines/index.js.map +1 -0
- package/dist/learning/capture/ExecutionRecorder.d.ts +97 -0
- package/dist/learning/capture/ExecutionRecorder.d.ts.map +1 -0
- package/dist/learning/capture/ExecutionRecorder.js +195 -0
- package/dist/learning/capture/ExecutionRecorder.js.map +1 -0
- package/dist/learning/capture/ExperienceCapture.d.ts +177 -0
- package/dist/learning/capture/ExperienceCapture.d.ts.map +1 -0
- package/dist/learning/capture/ExperienceCapture.js +432 -0
- package/dist/learning/capture/ExperienceCapture.js.map +1 -0
- package/dist/learning/capture/index.d.ts +12 -0
- package/dist/learning/capture/index.d.ts.map +1 -0
- package/dist/learning/capture/index.js +17 -0
- package/dist/learning/capture/index.js.map +1 -0
- package/dist/learning/dashboard/MetricsDashboard.d.ts +63 -0
- package/dist/learning/dashboard/MetricsDashboard.d.ts.map +1 -0
- package/dist/learning/dashboard/MetricsDashboard.js +230 -0
- package/dist/learning/dashboard/MetricsDashboard.js.map +1 -0
- package/dist/learning/dashboard/index.d.ts +7 -0
- package/dist/learning/dashboard/index.d.ts.map +1 -0
- package/dist/learning/dashboard/index.js +23 -0
- package/dist/learning/dashboard/index.js.map +1 -0
- package/dist/learning/dream/ConceptGraph.d.ts +160 -0
- package/dist/learning/dream/ConceptGraph.d.ts.map +1 -0
- package/dist/learning/dream/ConceptGraph.js +445 -0
- package/dist/learning/dream/ConceptGraph.js.map +1 -0
- package/dist/learning/dream/DreamEngine.d.ts +150 -0
- package/dist/learning/dream/DreamEngine.d.ts.map +1 -0
- package/dist/learning/dream/DreamEngine.js +551 -0
- package/dist/learning/dream/DreamEngine.js.map +1 -0
- package/dist/learning/dream/InsightGenerator.d.ts +152 -0
- package/dist/learning/dream/InsightGenerator.d.ts.map +1 -0
- package/dist/learning/dream/InsightGenerator.js +463 -0
- package/dist/learning/dream/InsightGenerator.js.map +1 -0
- package/dist/learning/dream/SpreadingActivation.d.ts +138 -0
- package/dist/learning/dream/SpreadingActivation.d.ts.map +1 -0
- package/dist/learning/dream/SpreadingActivation.js +320 -0
- package/dist/learning/dream/SpreadingActivation.js.map +1 -0
- package/dist/learning/dream/index.d.ts +14 -0
- package/dist/learning/dream/index.d.ts.map +1 -0
- package/dist/learning/dream/index.js +22 -0
- package/dist/learning/dream/index.js.map +1 -0
- package/dist/learning/metrics/AlertManager.d.ts +107 -0
- package/dist/learning/metrics/AlertManager.d.ts.map +1 -0
- package/dist/learning/metrics/AlertManager.js +246 -0
- package/dist/learning/metrics/AlertManager.js.map +1 -0
- package/dist/learning/metrics/LearningMetrics.d.ts +184 -0
- package/dist/learning/metrics/LearningMetrics.d.ts.map +1 -0
- package/dist/learning/metrics/LearningMetrics.js +754 -0
- package/dist/learning/metrics/LearningMetrics.js.map +1 -0
- package/dist/learning/metrics/MetricsCollector.d.ts +108 -0
- package/dist/learning/metrics/MetricsCollector.d.ts.map +1 -0
- package/dist/learning/metrics/MetricsCollector.js +240 -0
- package/dist/learning/metrics/MetricsCollector.js.map +1 -0
- package/dist/learning/metrics/MetricsStore.d.ts +149 -0
- package/dist/learning/metrics/MetricsStore.d.ts.map +1 -0
- package/dist/learning/metrics/MetricsStore.js +502 -0
- package/dist/learning/metrics/MetricsStore.js.map +1 -0
- package/dist/learning/metrics/TrendAnalyzer.d.ts +85 -0
- package/dist/learning/metrics/TrendAnalyzer.d.ts.map +1 -0
- package/dist/learning/metrics/TrendAnalyzer.js +210 -0
- package/dist/learning/metrics/TrendAnalyzer.js.map +1 -0
- package/dist/learning/metrics/index.d.ts +13 -0
- package/dist/learning/metrics/index.d.ts.map +1 -0
- package/dist/learning/metrics/index.js +39 -0
- package/dist/learning/metrics/index.js.map +1 -0
- package/dist/learning/scheduler/IdleDetector.d.ts +126 -0
- package/dist/learning/scheduler/IdleDetector.d.ts.map +1 -0
- package/dist/learning/scheduler/IdleDetector.js +281 -0
- package/dist/learning/scheduler/IdleDetector.js.map +1 -0
- package/dist/learning/scheduler/SleepCycle.d.ts +150 -0
- package/dist/learning/scheduler/SleepCycle.d.ts.map +1 -0
- package/dist/learning/scheduler/SleepCycle.js +506 -0
- package/dist/learning/scheduler/SleepCycle.js.map +1 -0
- package/dist/learning/scheduler/SleepScheduler.d.ts +131 -0
- package/dist/learning/scheduler/SleepScheduler.d.ts.map +1 -0
- package/dist/learning/scheduler/SleepScheduler.js +299 -0
- package/dist/learning/scheduler/SleepScheduler.js.map +1 -0
- package/dist/learning/scheduler/TimeBasedTrigger.d.ts +108 -0
- package/dist/learning/scheduler/TimeBasedTrigger.d.ts.map +1 -0
- package/dist/learning/scheduler/TimeBasedTrigger.js +222 -0
- package/dist/learning/scheduler/TimeBasedTrigger.js.map +1 -0
- package/dist/learning/scheduler/index.d.ts +16 -0
- package/dist/learning/scheduler/index.d.ts.map +1 -0
- package/dist/learning/scheduler/index.js +23 -0
- package/dist/learning/scheduler/index.js.map +1 -0
- package/dist/learning/synthesis/PatternSynthesis.d.ts +162 -0
- package/dist/learning/synthesis/PatternSynthesis.d.ts.map +1 -0
- package/dist/learning/synthesis/PatternSynthesis.js +479 -0
- package/dist/learning/synthesis/PatternSynthesis.js.map +1 -0
- package/dist/learning/synthesis/index.d.ts +10 -0
- package/dist/learning/synthesis/index.d.ts.map +1 -0
- package/dist/learning/synthesis/index.js +14 -0
- package/dist/learning/synthesis/index.js.map +1 -0
- package/dist/learning/transfer/CompatibilityScorer.d.ts +115 -0
- package/dist/learning/transfer/CompatibilityScorer.d.ts.map +1 -0
- package/dist/learning/transfer/CompatibilityScorer.js +319 -0
- package/dist/learning/transfer/CompatibilityScorer.js.map +1 -0
- package/dist/learning/transfer/TransferProtocol.d.ts +172 -0
- package/dist/learning/transfer/TransferProtocol.d.ts.map +1 -0
- package/dist/learning/transfer/TransferProtocol.js +611 -0
- package/dist/learning/transfer/TransferProtocol.js.map +1 -0
- package/dist/learning/transfer/TransferPrototype.d.ts +93 -0
- package/dist/learning/transfer/TransferPrototype.d.ts.map +1 -0
- package/dist/learning/transfer/TransferPrototype.js +433 -0
- package/dist/learning/transfer/TransferPrototype.js.map +1 -0
- package/dist/learning/transfer/TransferValidator.d.ts +140 -0
- package/dist/learning/transfer/TransferValidator.d.ts.map +1 -0
- package/dist/learning/transfer/TransferValidator.js +413 -0
- package/dist/learning/transfer/TransferValidator.js.map +1 -0
- package/dist/learning/transfer/index.d.ts +14 -0
- package/dist/learning/transfer/index.d.ts.map +1 -0
- package/dist/learning/transfer/index.js +22 -0
- package/dist/learning/transfer/index.js.map +1 -0
- package/dist/mcp/handlers/test/test-generate-enhanced.d.ts +26 -2
- package/dist/mcp/handlers/test/test-generate-enhanced.d.ts.map +1 -1
- package/dist/mcp/handlers/test/test-generate-enhanced.js +159 -27
- package/dist/mcp/handlers/test/test-generate-enhanced.js.map +1 -1
- package/dist/mcp/server-instructions.d.ts +1 -1
- package/dist/mcp/server-instructions.js +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +2 -1
- package/dist/mcp/server.js.map +1 -1
- 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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"}
|