@agentic-robotics/mcp 0.1.3 → 0.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.
- package/dist/benchmark.d.ts +97 -0
- package/dist/benchmark.d.ts.map +1 -0
- package/dist/benchmark.js +330 -0
- package/dist/benchmark.js.map +1 -0
- package/dist/cli.d.ts +6 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +79 -0
- package/dist/cli.js.map +1 -0
- package/dist/enhanced-memory.d.ts +118 -0
- package/dist/enhanced-memory.d.ts.map +1 -0
- package/dist/enhanced-memory.js +296 -0
- package/dist/enhanced-memory.js.map +1 -0
- package/dist/enhanced-server.d.ts +122 -0
- package/dist/enhanced-server.d.ts.map +1 -0
- package/dist/enhanced-server.js +361 -0
- package/dist/enhanced-server.js.map +1 -0
- package/dist/flow-orchestrator.d.ts +75 -0
- package/dist/flow-orchestrator.d.ts.map +1 -0
- package/dist/flow-orchestrator.js +350 -0
- package/dist/flow-orchestrator.js.map +1 -0
- package/dist/hybrid-benchmark.d.ts +44 -0
- package/dist/hybrid-benchmark.d.ts.map +1 -0
- package/dist/hybrid-benchmark.js +232 -0
- package/dist/hybrid-benchmark.js.map +1 -0
- package/dist/hybrid-memory.d.ts +81 -0
- package/dist/hybrid-memory.d.ts.map +1 -0
- package/dist/hybrid-memory.js +296 -0
- package/dist/hybrid-memory.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/interface.d.ts +38 -0
- package/dist/interface.d.ts.map +1 -0
- package/dist/interface.js +75 -0
- package/dist/interface.js.map +1 -0
- package/dist/memory.d.ts +52 -0
- package/dist/memory.d.ts.map +1 -0
- package/dist/memory.js +230 -0
- package/dist/memory.js.map +1 -0
- package/dist/optimized-benchmark.d.ts +74 -0
- package/dist/optimized-benchmark.d.ts.map +1 -0
- package/dist/optimized-benchmark.js +231 -0
- package/dist/optimized-benchmark.js.map +1 -0
- package/dist/server.d.ts +55 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +147 -0
- package/dist/server.js.map +1 -0
- package/package.json +3 -2
- package/src/enhanced-server.ts +1 -1
- package/src/flow-orchestrator.ts +177 -117
- package/src/hybrid-memory.ts +2 -2
- package/src/memory.ts +171 -52
- package/src/optimized-benchmark.ts +0 -302
- package/src/optimized-memory.ts +0 -271
package/dist/memory.js
ADDED
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AgentDB Reflexion Memory Integration
|
|
3
|
+
*
|
|
4
|
+
* Enables robot learning from past experiences with secure command execution
|
|
5
|
+
* SECURITY: Uses spawn() with argument arrays to prevent command injection
|
|
6
|
+
*/
|
|
7
|
+
import { spawn } from 'child_process';
|
|
8
|
+
/**
|
|
9
|
+
* Helper to safely spawn a command and capture output
|
|
10
|
+
* Prevents command injection by using spawn with argument array
|
|
11
|
+
*/
|
|
12
|
+
function spawnAsync(command, args, env) {
|
|
13
|
+
return new Promise((resolve, reject) => {
|
|
14
|
+
const child = spawn(command, args, {
|
|
15
|
+
env: { ...process.env, ...env },
|
|
16
|
+
shell: false, // Critical: disable shell interpretation
|
|
17
|
+
});
|
|
18
|
+
let stdout = '';
|
|
19
|
+
let stderr = '';
|
|
20
|
+
child.stdout?.on('data', (data) => {
|
|
21
|
+
stdout += data.toString();
|
|
22
|
+
});
|
|
23
|
+
child.stderr?.on('data', (data) => {
|
|
24
|
+
stderr += data.toString();
|
|
25
|
+
});
|
|
26
|
+
child.on('close', (code) => {
|
|
27
|
+
resolve({ stdout, stderr, code: code || 0 });
|
|
28
|
+
});
|
|
29
|
+
child.on('error', (error) => {
|
|
30
|
+
reject(error);
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
export class AgentDBMemory {
|
|
35
|
+
dbPath;
|
|
36
|
+
initialized = false;
|
|
37
|
+
constructor(dbPath) {
|
|
38
|
+
// Validate dbPath to prevent path traversal
|
|
39
|
+
if (!dbPath || dbPath.includes('..') || dbPath.includes(';') || dbPath.includes('|')) {
|
|
40
|
+
throw new Error('Invalid database path');
|
|
41
|
+
}
|
|
42
|
+
this.dbPath = dbPath;
|
|
43
|
+
}
|
|
44
|
+
async initialize() {
|
|
45
|
+
if (this.initialized)
|
|
46
|
+
return;
|
|
47
|
+
try {
|
|
48
|
+
// Initialize AgentDB database - use spawn with argument array for security
|
|
49
|
+
const { stdout, stderr, code } = await spawnAsync('npx', [
|
|
50
|
+
'agentdb',
|
|
51
|
+
'init',
|
|
52
|
+
this.dbPath,
|
|
53
|
+
'--dimension',
|
|
54
|
+
'768',
|
|
55
|
+
'--preset',
|
|
56
|
+
'medium',
|
|
57
|
+
]);
|
|
58
|
+
if (code === 0 || stderr.includes('already exists')) {
|
|
59
|
+
console.error('AgentDB initialized:', this.dbPath);
|
|
60
|
+
this.initialized = true;
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
throw new Error(`Initialization failed: ${stderr}`);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
// Database might already exist
|
|
68
|
+
if (error.message?.includes('already exists')) {
|
|
69
|
+
this.initialized = true;
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
throw new Error(`Failed to initialize AgentDB: ${error.message}`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
async storeEpisode(episode) {
|
|
77
|
+
if (!this.initialized) {
|
|
78
|
+
throw new Error('AgentDB not initialized. Call initialize() first.');
|
|
79
|
+
}
|
|
80
|
+
try {
|
|
81
|
+
// Use spawn with argument array to prevent command injection
|
|
82
|
+
const { code, stderr } = await spawnAsync('npx', [
|
|
83
|
+
'agentdb',
|
|
84
|
+
'reflexion',
|
|
85
|
+
'store',
|
|
86
|
+
episode.sessionId,
|
|
87
|
+
episode.taskName,
|
|
88
|
+
episode.confidence.toString(),
|
|
89
|
+
episode.success.toString(),
|
|
90
|
+
episode.outcome || '',
|
|
91
|
+
], { AGENTDB_PATH: this.dbPath });
|
|
92
|
+
if (code !== 0) {
|
|
93
|
+
throw new Error(`Command failed: ${stderr}`);
|
|
94
|
+
}
|
|
95
|
+
console.error(`Stored episode: ${episode.taskName} (success: ${episode.success})`);
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
const errorMsg = `Failed to store episode "${episode.taskName}": ${error.message}`;
|
|
99
|
+
console.error('Error storing episode:', errorMsg);
|
|
100
|
+
throw new Error(errorMsg); // Throw instead of silently failing
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
async retrieveMemories(query, k = 5, options = {}) {
|
|
104
|
+
if (!this.initialized) {
|
|
105
|
+
throw new Error('AgentDB not initialized. Call initialize() first.');
|
|
106
|
+
}
|
|
107
|
+
// Build safe argument array
|
|
108
|
+
const args = ['agentdb', 'reflexion', 'retrieve', query, '--k', k.toString()];
|
|
109
|
+
if (options.minReward !== undefined) {
|
|
110
|
+
args.push('--min-reward', options.minReward.toString());
|
|
111
|
+
}
|
|
112
|
+
if (options.onlySuccesses) {
|
|
113
|
+
args.push('--only-successes');
|
|
114
|
+
}
|
|
115
|
+
if (options.onlyFailures) {
|
|
116
|
+
args.push('--only-failures');
|
|
117
|
+
}
|
|
118
|
+
if (options.synthesizeContext) {
|
|
119
|
+
args.push('--synthesize-context');
|
|
120
|
+
}
|
|
121
|
+
try {
|
|
122
|
+
const { stdout, code, stderr } = await spawnAsync('npx', args, {
|
|
123
|
+
AGENTDB_PATH: this.dbPath,
|
|
124
|
+
});
|
|
125
|
+
if (code !== 0) {
|
|
126
|
+
throw new Error(`Command failed: ${stderr}`);
|
|
127
|
+
}
|
|
128
|
+
// Parse JSON output
|
|
129
|
+
const lines = stdout.trim().split('\n');
|
|
130
|
+
const jsonLine = lines.find((line) => line.startsWith('[') || line.startsWith('{'));
|
|
131
|
+
if (jsonLine) {
|
|
132
|
+
const data = JSON.parse(jsonLine);
|
|
133
|
+
return Array.isArray(data) ? data : [data];
|
|
134
|
+
}
|
|
135
|
+
return [];
|
|
136
|
+
}
|
|
137
|
+
catch (error) {
|
|
138
|
+
// Throw error instead of silently returning empty array
|
|
139
|
+
throw new Error(`Failed to retrieve memories for query "${query}": ${error.message}`);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
async queryWithContext(query, options = {}) {
|
|
143
|
+
if (!this.initialized) {
|
|
144
|
+
throw new Error('AgentDB not initialized. Call initialize() first.');
|
|
145
|
+
}
|
|
146
|
+
const { k = 5, minConfidence = 0.0, domain } = options;
|
|
147
|
+
// Build safe argument array
|
|
148
|
+
const args = [
|
|
149
|
+
'agentdb',
|
|
150
|
+
'query',
|
|
151
|
+
'--query',
|
|
152
|
+
query,
|
|
153
|
+
'--k',
|
|
154
|
+
k.toString(),
|
|
155
|
+
'--min-confidence',
|
|
156
|
+
minConfidence.toString(),
|
|
157
|
+
];
|
|
158
|
+
if (domain) {
|
|
159
|
+
args.push('--domain', domain);
|
|
160
|
+
}
|
|
161
|
+
args.push('--synthesize-context', '--format', 'json');
|
|
162
|
+
try {
|
|
163
|
+
const { stdout, code, stderr } = await spawnAsync('npx', args, {
|
|
164
|
+
AGENTDB_PATH: this.dbPath,
|
|
165
|
+
});
|
|
166
|
+
if (code !== 0) {
|
|
167
|
+
throw new Error(`Command failed: ${stderr}`);
|
|
168
|
+
}
|
|
169
|
+
const lines = stdout.trim().split('\n');
|
|
170
|
+
const jsonLine = lines.find((line) => line.startsWith('[') || line.startsWith('{'));
|
|
171
|
+
if (jsonLine) {
|
|
172
|
+
const data = JSON.parse(jsonLine);
|
|
173
|
+
return {
|
|
174
|
+
memories: Array.isArray(data) ? data : [data],
|
|
175
|
+
context: data.context || data.summary,
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
return { memories: [] };
|
|
179
|
+
}
|
|
180
|
+
catch (error) {
|
|
181
|
+
// Throw error instead of silently returning empty array
|
|
182
|
+
throw new Error(`Failed to query with context "${query}": ${error.message}`);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
async consolidateSkills(options = {}) {
|
|
186
|
+
if (!this.initialized) {
|
|
187
|
+
throw new Error('AgentDB not initialized. Call initialize() first.');
|
|
188
|
+
}
|
|
189
|
+
const { minAttempts = 3, minReward = 0.7, timeWindowDays = 7 } = options;
|
|
190
|
+
try {
|
|
191
|
+
const { code, stderr } = await spawnAsync('npx', [
|
|
192
|
+
'agentdb',
|
|
193
|
+
'skill',
|
|
194
|
+
'consolidate',
|
|
195
|
+
minAttempts.toString(),
|
|
196
|
+
minReward.toString(),
|
|
197
|
+
timeWindowDays.toString(),
|
|
198
|
+
'true',
|
|
199
|
+
], { AGENTDB_PATH: this.dbPath });
|
|
200
|
+
if (code !== 0) {
|
|
201
|
+
throw new Error(`Command failed: ${stderr}`);
|
|
202
|
+
}
|
|
203
|
+
console.error('Skills consolidated from successful episodes');
|
|
204
|
+
}
|
|
205
|
+
catch (error) {
|
|
206
|
+
throw new Error(`Failed to consolidate skills: ${error.message}`);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
async getStats() {
|
|
210
|
+
if (!this.initialized) {
|
|
211
|
+
throw new Error('AgentDB not initialized. Call initialize() first.');
|
|
212
|
+
}
|
|
213
|
+
try {
|
|
214
|
+
const { stdout, code, stderr } = await spawnAsync('npx', ['agentdb', 'db', 'stats'], {
|
|
215
|
+
AGENTDB_PATH: this.dbPath,
|
|
216
|
+
});
|
|
217
|
+
if (code !== 0) {
|
|
218
|
+
throw new Error(`Command failed: ${stderr}`);
|
|
219
|
+
}
|
|
220
|
+
return { stats: stdout.trim() };
|
|
221
|
+
}
|
|
222
|
+
catch (error) {
|
|
223
|
+
throw new Error(`Failed to get stats: ${error.message}`);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
async close() {
|
|
227
|
+
this.initialized = false;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
//# sourceMappingURL=memory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Optimized Benchmark Suite
|
|
3
|
+
*
|
|
4
|
+
* Uses JavaScript APIs directly for accurate performance measurement
|
|
5
|
+
*/
|
|
6
|
+
interface BenchmarkResult {
|
|
7
|
+
name: string;
|
|
8
|
+
iterations: number;
|
|
9
|
+
totalTime: number;
|
|
10
|
+
avgTime: number;
|
|
11
|
+
minTime: number;
|
|
12
|
+
maxTime: number;
|
|
13
|
+
opsPerSec: number;
|
|
14
|
+
p50: number;
|
|
15
|
+
p95: number;
|
|
16
|
+
p99: number;
|
|
17
|
+
}
|
|
18
|
+
interface BenchmarkSuite {
|
|
19
|
+
agentdb: {
|
|
20
|
+
storeEpisode: BenchmarkResult;
|
|
21
|
+
retrieveMemories: BenchmarkResult;
|
|
22
|
+
queryWithContext: BenchmarkResult;
|
|
23
|
+
consolidateSkills: BenchmarkResult;
|
|
24
|
+
searchSkills: BenchmarkResult;
|
|
25
|
+
};
|
|
26
|
+
overall: {
|
|
27
|
+
totalTime: number;
|
|
28
|
+
timestamp: string;
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
export declare class OptimizedBenchmark {
|
|
32
|
+
private memory;
|
|
33
|
+
constructor();
|
|
34
|
+
initialize(): Promise<void>;
|
|
35
|
+
/**
|
|
36
|
+
* Run complete benchmark suite
|
|
37
|
+
*/
|
|
38
|
+
runAll(): Promise<BenchmarkSuite>;
|
|
39
|
+
/**
|
|
40
|
+
* Benchmark: Store Episode (JS API)
|
|
41
|
+
*/
|
|
42
|
+
private benchmarkStoreEpisode;
|
|
43
|
+
/**
|
|
44
|
+
* Benchmark: Retrieve Memories (JS API)
|
|
45
|
+
*/
|
|
46
|
+
private benchmarkRetrieveMemories;
|
|
47
|
+
/**
|
|
48
|
+
* Benchmark: Query with Context (JS API)
|
|
49
|
+
*/
|
|
50
|
+
private benchmarkQueryWithContext;
|
|
51
|
+
/**
|
|
52
|
+
* Benchmark: Consolidate Skills (JS API)
|
|
53
|
+
*/
|
|
54
|
+
private benchmarkConsolidateSkills;
|
|
55
|
+
/**
|
|
56
|
+
* Benchmark: Search Skills (JS API)
|
|
57
|
+
*/
|
|
58
|
+
private benchmarkSearchSkills;
|
|
59
|
+
/**
|
|
60
|
+
* Calculate statistics from timing data
|
|
61
|
+
*/
|
|
62
|
+
private calculateStats;
|
|
63
|
+
/**
|
|
64
|
+
* Print benchmark result
|
|
65
|
+
*/
|
|
66
|
+
private printResult;
|
|
67
|
+
/**
|
|
68
|
+
* Export results to JSON
|
|
69
|
+
*/
|
|
70
|
+
exportResults(suite: BenchmarkSuite, filename: string): Promise<void>;
|
|
71
|
+
close(): Promise<void>;
|
|
72
|
+
}
|
|
73
|
+
export {};
|
|
74
|
+
//# sourceMappingURL=optimized-benchmark.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"optimized-benchmark.d.ts","sourceRoot":"","sources":["../src/optimized-benchmark.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAED,UAAU,cAAc;IACtB,OAAO,EAAE;QACP,YAAY,EAAE,eAAe,CAAC;QAC9B,gBAAgB,EAAE,eAAe,CAAC;QAClC,gBAAgB,EAAE,eAAe,CAAC;QAClC,iBAAiB,EAAE,eAAe,CAAC;QACnC,YAAY,EAAE,eAAe,CAAC;KAC/B,CAAC;IACF,OAAO,EAAE;QACP,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAyB;;IAMjC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAMjC;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,cAAc,CAAC;IAwDvC;;OAEG;YACW,qBAAqB;IA0BnC;;OAEG;YACW,yBAAyB;IA6BvC;;OAEG;YACW,yBAAyB;IAoBvC;;OAEG;YACW,0BAA0B;IAqBxC;;OAEG;YACW,qBAAqB;IAoBnC;;OAEG;IACH,OAAO,CAAC,cAAc;IAkBtB;;OAEG;IACH,OAAO,CAAC,WAAW;IAUnB;;OAEG;IACG,aAAa,CAAC,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMrE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B"}
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Optimized Benchmark Suite
|
|
3
|
+
*
|
|
4
|
+
* Uses JavaScript APIs directly for accurate performance measurement
|
|
5
|
+
*/
|
|
6
|
+
import { OptimizedAgentDBMemory } from './optimized-memory.js';
|
|
7
|
+
export class OptimizedBenchmark {
|
|
8
|
+
memory;
|
|
9
|
+
constructor() {
|
|
10
|
+
this.memory = new OptimizedAgentDBMemory('./optimized-benchmark.db');
|
|
11
|
+
}
|
|
12
|
+
async initialize() {
|
|
13
|
+
console.log('🏁 Initializing optimized benchmark suite...\n');
|
|
14
|
+
await this.memory.initialize();
|
|
15
|
+
console.log('✅ Benchmark suite ready\n');
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Run complete benchmark suite
|
|
19
|
+
*/
|
|
20
|
+
async runAll() {
|
|
21
|
+
const suiteStartTime = Date.now();
|
|
22
|
+
console.log('┌─────────────────────────────────────────────────────────┐');
|
|
23
|
+
console.log('│ Optimized Integration Benchmark Suite │');
|
|
24
|
+
console.log('│ AgentDB JavaScript API Performance Test │');
|
|
25
|
+
console.log('└─────────────────────────────────────────────────────────┘\n');
|
|
26
|
+
// AgentDB Benchmarks with JS API
|
|
27
|
+
console.log('📊 AGENTDB BENCHMARKS (JS API)\n');
|
|
28
|
+
const storeEpisode = await this.benchmarkStoreEpisode(1000);
|
|
29
|
+
this.printResult('Store Episode', storeEpisode);
|
|
30
|
+
const retrieveMemories = await this.benchmarkRetrieveMemories(500);
|
|
31
|
+
this.printResult('Retrieve Memories', retrieveMemories);
|
|
32
|
+
const queryWithContext = await this.benchmarkQueryWithContext(300);
|
|
33
|
+
this.printResult('Query with Context', queryWithContext);
|
|
34
|
+
const consolidateSkills = await this.benchmarkConsolidateSkills(10);
|
|
35
|
+
this.printResult('Consolidate Skills', consolidateSkills);
|
|
36
|
+
const searchSkills = await this.benchmarkSearchSkills(200);
|
|
37
|
+
this.printResult('Search Skills', searchSkills);
|
|
38
|
+
const totalTime = Date.now() - suiteStartTime;
|
|
39
|
+
console.log('\n┌─────────────────────────────────────────────────────────┐');
|
|
40
|
+
console.log('│ BENCHMARK COMPLETE │');
|
|
41
|
+
console.log(`│ Total Time: ${(totalTime / 1000).toFixed(2)}s │`);
|
|
42
|
+
console.log('└─────────────────────────────────────────────────────────┘\n');
|
|
43
|
+
// Print performance metrics
|
|
44
|
+
const metrics = this.memory.getMetrics();
|
|
45
|
+
console.log('📈 PERFORMANCE METRICS\n');
|
|
46
|
+
console.log(` Store Operations: ${metrics.storeCount}`);
|
|
47
|
+
console.log(` Avg Store Time: ${metrics.avgStoreTime.toFixed(3)}ms`);
|
|
48
|
+
console.log(` Retrieve Operations: ${metrics.retrieveCount}`);
|
|
49
|
+
console.log(` Avg Retrieve Time: ${metrics.avgRetrieveTime.toFixed(3)}ms\n`);
|
|
50
|
+
return {
|
|
51
|
+
agentdb: {
|
|
52
|
+
storeEpisode,
|
|
53
|
+
retrieveMemories,
|
|
54
|
+
queryWithContext,
|
|
55
|
+
consolidateSkills,
|
|
56
|
+
searchSkills,
|
|
57
|
+
},
|
|
58
|
+
overall: {
|
|
59
|
+
totalTime,
|
|
60
|
+
timestamp: new Date().toISOString(),
|
|
61
|
+
},
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Benchmark: Store Episode (JS API)
|
|
66
|
+
*/
|
|
67
|
+
async benchmarkStoreEpisode(iterations) {
|
|
68
|
+
const times = [];
|
|
69
|
+
for (let i = 0; i < iterations; i++) {
|
|
70
|
+
const episode = {
|
|
71
|
+
sessionId: `bench-${i}`,
|
|
72
|
+
taskName: 'navigation',
|
|
73
|
+
confidence: Math.random(),
|
|
74
|
+
success: Math.random() > 0.3,
|
|
75
|
+
outcome: 'Completed navigation task',
|
|
76
|
+
strategy: 'adaptive_planning',
|
|
77
|
+
metadata: { x: i, y: i * 2, latency: Math.random() * 100 },
|
|
78
|
+
};
|
|
79
|
+
const start = performance.now();
|
|
80
|
+
await this.memory.storeEpisode(episode);
|
|
81
|
+
times.push(performance.now() - start);
|
|
82
|
+
if (i % 100 === 0 && i > 0) {
|
|
83
|
+
process.stderr.write(` Progress: ${i}/${iterations}\r`);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return this.calculateStats('Store Episode', times);
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Benchmark: Retrieve Memories (JS API)
|
|
90
|
+
*/
|
|
91
|
+
async benchmarkRetrieveMemories(iterations) {
|
|
92
|
+
const times = [];
|
|
93
|
+
const queries = [
|
|
94
|
+
'navigation task',
|
|
95
|
+
'object detection',
|
|
96
|
+
'path planning',
|
|
97
|
+
'sensor fusion',
|
|
98
|
+
'motor control',
|
|
99
|
+
];
|
|
100
|
+
for (let i = 0; i < iterations; i++) {
|
|
101
|
+
const query = queries[i % queries.length];
|
|
102
|
+
const start = performance.now();
|
|
103
|
+
await this.memory.retrieveMemories(query, 5, {
|
|
104
|
+
onlySuccesses: true,
|
|
105
|
+
synthesizeContext: true,
|
|
106
|
+
});
|
|
107
|
+
times.push(performance.now() - start);
|
|
108
|
+
if (i % 50 === 0 && i > 0) {
|
|
109
|
+
process.stderr.write(` Progress: ${i}/${iterations}\r`);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return this.calculateStats('Retrieve Memories', times);
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Benchmark: Query with Context (JS API)
|
|
116
|
+
*/
|
|
117
|
+
async benchmarkQueryWithContext(iterations) {
|
|
118
|
+
const times = [];
|
|
119
|
+
for (let i = 0; i < iterations; i++) {
|
|
120
|
+
const start = performance.now();
|
|
121
|
+
await this.memory.queryWithContext('warehouse navigation', {
|
|
122
|
+
k: 10,
|
|
123
|
+
minConfidence: 0.5,
|
|
124
|
+
synthesizeReasoning: true,
|
|
125
|
+
});
|
|
126
|
+
times.push(performance.now() - start);
|
|
127
|
+
if (i % 30 === 0 && i > 0) {
|
|
128
|
+
process.stderr.write(` Progress: ${i}/${iterations}\r`);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
return this.calculateStats('Query with Context', times);
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Benchmark: Consolidate Skills (JS API)
|
|
135
|
+
*/
|
|
136
|
+
async benchmarkConsolidateSkills(iterations) {
|
|
137
|
+
const times = [];
|
|
138
|
+
for (let i = 0; i < iterations; i++) {
|
|
139
|
+
const start = performance.now();
|
|
140
|
+
await this.memory.consolidateSkills({
|
|
141
|
+
minAttempts: 3,
|
|
142
|
+
minReward: 0.7,
|
|
143
|
+
timeWindowDays: 7,
|
|
144
|
+
enablePruning: true,
|
|
145
|
+
});
|
|
146
|
+
times.push(performance.now() - start);
|
|
147
|
+
if (i % 2 === 0 && i > 0) {
|
|
148
|
+
process.stderr.write(` Progress: ${i}/${iterations}\r`);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
return this.calculateStats('Consolidate Skills', times);
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Benchmark: Search Skills (JS API)
|
|
155
|
+
*/
|
|
156
|
+
async benchmarkSearchSkills(iterations) {
|
|
157
|
+
const times = [];
|
|
158
|
+
for (let i = 0; i < iterations; i++) {
|
|
159
|
+
const start = performance.now();
|
|
160
|
+
await this.memory.searchSkills('navigation', {
|
|
161
|
+
k: 5,
|
|
162
|
+
minSuccessRate: 0.5,
|
|
163
|
+
sortBy: 'success_rate',
|
|
164
|
+
});
|
|
165
|
+
times.push(performance.now() - start);
|
|
166
|
+
if (i % 20 === 0 && i > 0) {
|
|
167
|
+
process.stderr.write(` Progress: ${i}/${iterations}\r`);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
return this.calculateStats('Search Skills', times);
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Calculate statistics from timing data
|
|
174
|
+
*/
|
|
175
|
+
calculateStats(name, times) {
|
|
176
|
+
const sorted = [...times].sort((a, b) => a - b);
|
|
177
|
+
const total = times.reduce((a, b) => a + b, 0);
|
|
178
|
+
return {
|
|
179
|
+
name,
|
|
180
|
+
iterations: times.length,
|
|
181
|
+
totalTime: total,
|
|
182
|
+
avgTime: total / times.length,
|
|
183
|
+
minTime: sorted[0],
|
|
184
|
+
maxTime: sorted[sorted.length - 1],
|
|
185
|
+
opsPerSec: (times.length / total) * 1000,
|
|
186
|
+
p50: sorted[Math.floor(sorted.length * 0.50)],
|
|
187
|
+
p95: sorted[Math.floor(sorted.length * 0.95)],
|
|
188
|
+
p99: sorted[Math.floor(sorted.length * 0.99)],
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Print benchmark result
|
|
193
|
+
*/
|
|
194
|
+
printResult(name, result) {
|
|
195
|
+
console.log(`${name}:`);
|
|
196
|
+
console.log(` Iterations: ${result.iterations.toLocaleString()}`);
|
|
197
|
+
console.log(` Avg Time: ${result.avgTime.toFixed(3)}ms`);
|
|
198
|
+
console.log(` Min/Max: ${result.minTime.toFixed(3)}ms / ${result.maxTime.toFixed(3)}ms`);
|
|
199
|
+
console.log(` p50/p95/p99: ${result.p50.toFixed(3)}ms / ${result.p95.toFixed(3)}ms / ${result.p99.toFixed(3)}ms`);
|
|
200
|
+
console.log(` Ops/sec: ${result.opsPerSec.toFixed(0)}`);
|
|
201
|
+
console.log('');
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Export results to JSON
|
|
205
|
+
*/
|
|
206
|
+
async exportResults(suite, filename) {
|
|
207
|
+
const fs = await import('fs/promises');
|
|
208
|
+
await fs.writeFile(filename, JSON.stringify(suite, null, 2));
|
|
209
|
+
console.log(`📁 Results exported to ${filename}`);
|
|
210
|
+
}
|
|
211
|
+
async close() {
|
|
212
|
+
await this.memory.close();
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
// CLI entry point
|
|
216
|
+
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
217
|
+
const benchmark = new OptimizedBenchmark();
|
|
218
|
+
try {
|
|
219
|
+
await benchmark.initialize();
|
|
220
|
+
const results = await benchmark.runAll();
|
|
221
|
+
await benchmark.exportResults(results, './optimized-benchmark-results.json');
|
|
222
|
+
}
|
|
223
|
+
catch (error) {
|
|
224
|
+
console.error('❌ Benchmark failed:', error);
|
|
225
|
+
process.exit(1);
|
|
226
|
+
}
|
|
227
|
+
finally {
|
|
228
|
+
await benchmark.close();
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
//# sourceMappingURL=optimized-benchmark.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"optimized-benchmark.js","sourceRoot":"","sources":["../src/optimized-benchmark.ts"],"names":[],"mappings":"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"}
|
package/dist/server.d.ts
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ROS3 MCP Server implementation - Simplified version
|
|
3
|
+
*/
|
|
4
|
+
export interface ROS3McpServerConfig {
|
|
5
|
+
name?: string;
|
|
6
|
+
version?: string;
|
|
7
|
+
dbPath?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare class ROS3McpServer {
|
|
10
|
+
private ros3;
|
|
11
|
+
private memory;
|
|
12
|
+
private name;
|
|
13
|
+
private version;
|
|
14
|
+
constructor(config?: ROS3McpServerConfig);
|
|
15
|
+
start(): Promise<void>;
|
|
16
|
+
stop(): Promise<void>;
|
|
17
|
+
moveRobot(params: {
|
|
18
|
+
x: number;
|
|
19
|
+
y: number;
|
|
20
|
+
z: number;
|
|
21
|
+
roll: number;
|
|
22
|
+
pitch: number;
|
|
23
|
+
yaw: number;
|
|
24
|
+
speed?: number;
|
|
25
|
+
frame?: 'base' | 'world';
|
|
26
|
+
}): Promise<string>;
|
|
27
|
+
getPose(): Promise<string>;
|
|
28
|
+
getStatus(): Promise<string>;
|
|
29
|
+
readLidar(params: {
|
|
30
|
+
filter?: string;
|
|
31
|
+
max_points?: number;
|
|
32
|
+
}): Promise<string>;
|
|
33
|
+
detectObjects(params: {
|
|
34
|
+
camera: string;
|
|
35
|
+
confidence_threshold?: number;
|
|
36
|
+
}): Promise<string>;
|
|
37
|
+
queryMemory(params: {
|
|
38
|
+
query: string;
|
|
39
|
+
k?: number;
|
|
40
|
+
only_successes?: boolean;
|
|
41
|
+
min_confidence?: number;
|
|
42
|
+
}): Promise<string>;
|
|
43
|
+
consolidateSkills(params?: {
|
|
44
|
+
min_attempts?: number;
|
|
45
|
+
min_reward?: number;
|
|
46
|
+
time_window_days?: number;
|
|
47
|
+
}): Promise<string>;
|
|
48
|
+
getMemoryStats(): Promise<string>;
|
|
49
|
+
getInfo(): {
|
|
50
|
+
name: string;
|
|
51
|
+
version: string;
|
|
52
|
+
tools: string[];
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,IAAI,CAAgB;IAC5B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,OAAO,CAAS;gBAEZ,MAAM,GAAE,mBAAwB;IAiBtC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAMrB,SAAS,CAAC,MAAM,EAAE;QACtB,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;KAC1B,GAAG,OAAO,CAAC,MAAM,CAAC;IAgCb,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAK1B,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAK5B,SAAS,CAAC,MAAM,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAuB5E,aAAa,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,oBAAoB,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAuBzF,WAAW,CAAC,MAAM,EAAE;QACxB,KAAK,EAAE,MAAM,CAAC;QACd,CAAC,CAAC,EAAE,MAAM,CAAC;QACX,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,GAAG,OAAO,CAAC,MAAM,CAAC;IAYb,iBAAiB,CAAC,MAAM,CAAC,EAAE;QAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,GAAG,OAAO,CAAC,MAAM,CAAC;IAYb,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAMvC,OAAO;;;;;CAgBR"}
|