@agentic-robotics/mcp 0.2.4 → 0.2.6
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/agentdb-engine.d.ts +78 -0
- package/dist/agentdb-engine.d.ts.map +1 -0
- package/dist/agentdb-engine.js +136 -0
- package/dist/agentdb-engine.js.map +1 -0
- package/dist/cli.js +3 -1
- package/dist/cli.js.map +1 -1
- package/dist/enhanced-memory-cli.d.ts +55 -0
- package/dist/enhanced-memory-cli.d.ts.map +1 -0
- package/dist/enhanced-memory-cli.js +183 -0
- package/dist/enhanced-memory-cli.js.map +1 -0
- package/dist/enhanced-memory.d.ts +29 -15
- package/dist/enhanced-memory.d.ts.map +1 -1
- package/dist/enhanced-memory.js +160 -229
- package/dist/enhanced-memory.js.map +1 -1
- package/dist/enhanced-server.js +1 -1
- package/dist/enhanced-server.js.map +1 -1
- package/dist/memory.d.ts +2 -0
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +43 -0
- package/dist/memory.js.map +1 -1
- package/package.json +5 -3
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-process AgentDB engine.
|
|
3
|
+
*
|
|
4
|
+
* Loads the optional `agentdb` package lazily and drives its ReflexionMemory and
|
|
5
|
+
* SkillLibrary controllers directly, instead of spawning `npx agentdb` per call.
|
|
6
|
+
* It writes the same `episodes` tables the agentdb CLI uses, so a database is
|
|
7
|
+
* readable from either side.
|
|
8
|
+
*/
|
|
9
|
+
import type { Episode, Memory } from './memory.js';
|
|
10
|
+
export interface RetrieveOptions {
|
|
11
|
+
minReward?: number;
|
|
12
|
+
onlySuccesses?: boolean;
|
|
13
|
+
onlyFailures?: boolean;
|
|
14
|
+
timeWindowDays?: number;
|
|
15
|
+
}
|
|
16
|
+
/** An episode as agentdb stores it, with the similarity of the match. */
|
|
17
|
+
export interface StoredEpisode {
|
|
18
|
+
task: string;
|
|
19
|
+
reward: number;
|
|
20
|
+
success: boolean;
|
|
21
|
+
critique: string;
|
|
22
|
+
metadata: Record<string, any>;
|
|
23
|
+
ts: number;
|
|
24
|
+
similarity?: number;
|
|
25
|
+
}
|
|
26
|
+
/** A skill as agentdb's SkillLibrary returns it, plus when it was last used. */
|
|
27
|
+
export interface StoredSkill {
|
|
28
|
+
id?: number;
|
|
29
|
+
name: string;
|
|
30
|
+
description: string;
|
|
31
|
+
successRate: number;
|
|
32
|
+
avgReward: number;
|
|
33
|
+
uses: number;
|
|
34
|
+
lastUsed: number;
|
|
35
|
+
metadata: Record<string, any>;
|
|
36
|
+
}
|
|
37
|
+
export interface SynthesizedContext {
|
|
38
|
+
summary: string;
|
|
39
|
+
keyInsights: string[];
|
|
40
|
+
recommendations: string[];
|
|
41
|
+
}
|
|
42
|
+
export interface ConsolidateOptions {
|
|
43
|
+
minAttempts: number;
|
|
44
|
+
minReward: number;
|
|
45
|
+
timeWindowDays: number;
|
|
46
|
+
}
|
|
47
|
+
export declare class InProcessAgentDB {
|
|
48
|
+
private readonly db;
|
|
49
|
+
private readonly reflexion;
|
|
50
|
+
private readonly skills;
|
|
51
|
+
private constructor();
|
|
52
|
+
/**
|
|
53
|
+
* Open `dbPath` with the agentdb library. Returns null when the optional
|
|
54
|
+
* `agentdb` package cannot be imported, so callers can fall back.
|
|
55
|
+
*/
|
|
56
|
+
static open(dbPath: string): Promise<InProcessAgentDB | null>;
|
|
57
|
+
storeEpisode(episode: Episode): Promise<number>;
|
|
58
|
+
retrieve(query: string, k: number, options?: RetrieveOptions): Promise<Memory[]>;
|
|
59
|
+
retrieveEpisodes(query: string, k: number, options?: RetrieveOptions): Promise<StoredEpisode[]>;
|
|
60
|
+
/** Summarise retrieved episodes with agentdb's ContextSynthesizer. */
|
|
61
|
+
synthesize(episodes: StoredEpisode[]): Promise<SynthesizedContext>;
|
|
62
|
+
searchSkills(query: string, k: number, minSuccessRate: number): Promise<StoredSkill[]>;
|
|
63
|
+
consolidateSkills(options: ConsolidateOptions): Promise<{
|
|
64
|
+
created: number;
|
|
65
|
+
updated: number;
|
|
66
|
+
}>;
|
|
67
|
+
/** Number of stored episodes and skills. */
|
|
68
|
+
counts(): {
|
|
69
|
+
episodes: number;
|
|
70
|
+
skills: number;
|
|
71
|
+
};
|
|
72
|
+
/** Rebuild indexes and reclaim free pages. */
|
|
73
|
+
optimize(): void;
|
|
74
|
+
/** Row counts in the same `name: N records` shape the agentdb CLI prints. */
|
|
75
|
+
stats(): string;
|
|
76
|
+
close(): Promise<void>;
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=agentdb-engine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentdb-engine.d.ts","sourceRoot":"","sources":["../src/agentdb-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAKnD,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,yEAAyE;AACzE,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,gFAAgF;AAChF,MAAM,WAAW,WAAW;IAC1B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;CACxB;AAKD,qBAAa,gBAAgB;IAEzB,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAHzB,OAAO;IAMP;;;OAGG;WACU,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAY7D,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAa/C,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAYpF,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAoBzG,sEAAsE;IAChE,UAAU,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAUlE,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAetF,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAQnG,4CAA4C;IAC5C,MAAM,IAAI;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IAM9C,8CAA8C;IAC9C,QAAQ,IAAI,IAAI;IAKhB,6EAA6E;IAC7E,KAAK,IAAI,MAAM;IAcT,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-process AgentDB engine.
|
|
3
|
+
*
|
|
4
|
+
* Loads the optional `agentdb` package lazily and drives its ReflexionMemory and
|
|
5
|
+
* SkillLibrary controllers directly, instead of spawning `npx agentdb` per call.
|
|
6
|
+
* It writes the same `episodes` tables the agentdb CLI uses, so a database is
|
|
7
|
+
* readable from either side.
|
|
8
|
+
*/
|
|
9
|
+
/** Embedding size used by agentdb's default model (Xenova/all-MiniLM-L6-v2). */
|
|
10
|
+
const VECTOR_DIMENSION = 384;
|
|
11
|
+
export class InProcessAgentDB {
|
|
12
|
+
db;
|
|
13
|
+
reflexion;
|
|
14
|
+
skills;
|
|
15
|
+
constructor(db, reflexion, skills) {
|
|
16
|
+
this.db = db;
|
|
17
|
+
this.reflexion = reflexion;
|
|
18
|
+
this.skills = skills;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Open `dbPath` with the agentdb library. Returns null when the optional
|
|
22
|
+
* `agentdb` package cannot be imported, so callers can fall back.
|
|
23
|
+
*/
|
|
24
|
+
static async open(dbPath) {
|
|
25
|
+
let mod;
|
|
26
|
+
try {
|
|
27
|
+
mod = await import('agentdb');
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
const db = new mod.AgentDB({ dbPath, vectorDimension: VECTOR_DIMENSION });
|
|
33
|
+
await db.initialize();
|
|
34
|
+
return new InProcessAgentDB(db, db.getController('reflexion'), db.getController('skills'));
|
|
35
|
+
}
|
|
36
|
+
async storeEpisode(episode) {
|
|
37
|
+
return this.reflexion.storeEpisode({
|
|
38
|
+
sessionId: episode.sessionId,
|
|
39
|
+
task: episode.taskName,
|
|
40
|
+
reward: episode.confidence,
|
|
41
|
+
success: episode.success,
|
|
42
|
+
critique: episode.outcome || '',
|
|
43
|
+
metadata: episode.strategy
|
|
44
|
+
? { ...episode.metadata, strategy: episode.strategy }
|
|
45
|
+
: episode.metadata,
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
async retrieve(query, k, options = {}) {
|
|
49
|
+
const episodes = await this.retrieveEpisodes(query, k, options);
|
|
50
|
+
return episodes.map((e) => ({
|
|
51
|
+
task: e.task,
|
|
52
|
+
confidence: e.reward,
|
|
53
|
+
success: e.success,
|
|
54
|
+
outcome: e.critique,
|
|
55
|
+
strategy: e.metadata.strategy,
|
|
56
|
+
timestamp: e.ts,
|
|
57
|
+
}));
|
|
58
|
+
}
|
|
59
|
+
async retrieveEpisodes(query, k, options = {}) {
|
|
60
|
+
const episodes = await this.reflexion.retrieveRelevant({
|
|
61
|
+
task: query,
|
|
62
|
+
k,
|
|
63
|
+
minReward: options.minReward,
|
|
64
|
+
onlySuccesses: options.onlySuccesses,
|
|
65
|
+
onlyFailures: options.onlyFailures,
|
|
66
|
+
timeWindowDays: options.timeWindowDays,
|
|
67
|
+
});
|
|
68
|
+
return episodes.map((e) => ({
|
|
69
|
+
task: e.task,
|
|
70
|
+
reward: e.reward,
|
|
71
|
+
success: Boolean(e.success),
|
|
72
|
+
critique: e.critique ?? '',
|
|
73
|
+
metadata: e.metadata ?? {},
|
|
74
|
+
ts: e.ts ?? 0,
|
|
75
|
+
similarity: e.similarity,
|
|
76
|
+
}));
|
|
77
|
+
}
|
|
78
|
+
/** Summarise retrieved episodes with agentdb's ContextSynthesizer. */
|
|
79
|
+
async synthesize(episodes) {
|
|
80
|
+
// A subpath export; the package's moduleResolution cannot see its types.
|
|
81
|
+
const spec = 'agentdb/controllers/ContextSynthesizer';
|
|
82
|
+
const { ContextSynthesizer } = await import(spec);
|
|
83
|
+
const ctx = ContextSynthesizer.synthesize(episodes.map((e) => ({ task: e.task, reward: e.reward, success: e.success, critique: e.critique, similarity: e.similarity })));
|
|
84
|
+
return { summary: ctx.summary, keyInsights: ctx.keyInsights, recommendations: ctx.recommendations };
|
|
85
|
+
}
|
|
86
|
+
async searchSkills(query, k, minSuccessRate) {
|
|
87
|
+
const skills = await this.skills.searchSkills({ task: query, k, minSuccessRate });
|
|
88
|
+
const lastUsed = this.db.database.prepare('SELECT last_used_at AS t FROM skills WHERE id = ?');
|
|
89
|
+
return skills.map((s) => ({
|
|
90
|
+
id: s.id,
|
|
91
|
+
name: s.name,
|
|
92
|
+
description: s.description ?? '',
|
|
93
|
+
successRate: s.successRate ?? 0,
|
|
94
|
+
avgReward: s.avgReward ?? 0,
|
|
95
|
+
uses: s.uses ?? 0,
|
|
96
|
+
lastUsed: s.id === undefined ? 0 : (lastUsed.get(s.id)?.t ?? 0),
|
|
97
|
+
metadata: s.metadata ?? {},
|
|
98
|
+
}));
|
|
99
|
+
}
|
|
100
|
+
async consolidateSkills(options) {
|
|
101
|
+
const result = await this.skills.consolidateEpisodesIntoSkills({
|
|
102
|
+
...options,
|
|
103
|
+
extractPatterns: true,
|
|
104
|
+
});
|
|
105
|
+
return { created: result.created, updated: result.updated };
|
|
106
|
+
}
|
|
107
|
+
/** Number of stored episodes and skills. */
|
|
108
|
+
counts() {
|
|
109
|
+
const count = (table) => this.db.database.prepare(`SELECT COUNT(*) AS n FROM ${table}`).get().n;
|
|
110
|
+
return { episodes: count('episodes'), skills: count('skills') };
|
|
111
|
+
}
|
|
112
|
+
/** Rebuild indexes and reclaim free pages. */
|
|
113
|
+
optimize() {
|
|
114
|
+
this.db.database.exec('REINDEX');
|
|
115
|
+
this.db.database.exec('VACUUM');
|
|
116
|
+
}
|
|
117
|
+
/** Row counts in the same `name: N records` shape the agentdb CLI prints. */
|
|
118
|
+
stats() {
|
|
119
|
+
const tables = ['episodes', 'skills', 'causal_edges'];
|
|
120
|
+
return tables
|
|
121
|
+
.map((table) => {
|
|
122
|
+
try {
|
|
123
|
+
const row = this.db.database.prepare(`SELECT COUNT(*) AS n FROM ${table}`).get();
|
|
124
|
+
return `${table}: ${row.n} records`;
|
|
125
|
+
}
|
|
126
|
+
catch {
|
|
127
|
+
return `${table}: N/A`;
|
|
128
|
+
}
|
|
129
|
+
})
|
|
130
|
+
.join('\n');
|
|
131
|
+
}
|
|
132
|
+
async close() {
|
|
133
|
+
await this.db.close();
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=agentdb-engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentdb-engine.js","sourceRoot":"","sources":["../src/agentdb-engine.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -2,11 +2,13 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* ROS3 MCP Server CLI
|
|
4
4
|
*/
|
|
5
|
+
import { readFileSync } from 'fs';
|
|
5
6
|
import { ROS3McpServer } from './server.js';
|
|
7
|
+
const { version } = JSON.parse(readFileSync(new URL('../package.json', import.meta.url), 'utf8'));
|
|
6
8
|
async function main() {
|
|
7
9
|
const server = new ROS3McpServer({
|
|
8
10
|
name: 'ros3-mcp-server',
|
|
9
|
-
version
|
|
11
|
+
version,
|
|
10
12
|
dbPath: process.env.AGENTDB_PATH || './ros3-agentdb.db',
|
|
11
13
|
});
|
|
12
14
|
// Handle graceful shutdown
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,KAAK,UAAU,IAAI;IACjB,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC;QAC/B,IAAI,EAAE,iBAAiB;QACvB,OAAO
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI fallback for EnhancedAgentDBMemory.
|
|
3
|
+
*
|
|
4
|
+
* Used only when the optional `agentdb` package cannot be imported in-process.
|
|
5
|
+
* Every call spawns `npx agentdb ...` (roughly 300 ms each).
|
|
6
|
+
*
|
|
7
|
+
* SECURITY: commands are spawned with argument arrays (no shell), so query,
|
|
8
|
+
* taskName, outcome, strategy and the like are never shell-interpolated.
|
|
9
|
+
*
|
|
10
|
+
* agentdb 3.x prints human-readable text, not JSON, for `reflexion retrieve`,
|
|
11
|
+
* `query` and `skill search`, so those lookups are best-effort and usually
|
|
12
|
+
* return nothing here. Stores, consolidation and the episode/skill counts work.
|
|
13
|
+
*/
|
|
14
|
+
import type { Episode, Memory, Skill } from './enhanced-memory.js';
|
|
15
|
+
export declare function cliInit(dbPath: string): Promise<void>;
|
|
16
|
+
export declare function cliStoreEpisode(dbPath: string, episode: Episode, critique?: string): Promise<void>;
|
|
17
|
+
export declare function cliRetrieve(dbPath: string, query: string, k: number, options: {
|
|
18
|
+
minReward?: number;
|
|
19
|
+
onlySuccesses?: boolean;
|
|
20
|
+
onlyFailures?: boolean;
|
|
21
|
+
synthesizeContext?: boolean;
|
|
22
|
+
enableReasoning?: boolean;
|
|
23
|
+
timeWindow?: number;
|
|
24
|
+
}): Promise<Memory[]>;
|
|
25
|
+
export declare function cliQuery(dbPath: string, query: string, options: {
|
|
26
|
+
k: number;
|
|
27
|
+
minConfidence: number;
|
|
28
|
+
domain?: string;
|
|
29
|
+
synthesizeReasoning: boolean;
|
|
30
|
+
}): Promise<{
|
|
31
|
+
memories: Memory[];
|
|
32
|
+
context?: string;
|
|
33
|
+
reasoning?: string;
|
|
34
|
+
}>;
|
|
35
|
+
export declare function cliConsolidate(dbPath: string, options: {
|
|
36
|
+
minAttempts: number;
|
|
37
|
+
minReward: number;
|
|
38
|
+
timeWindowDays: number;
|
|
39
|
+
}): Promise<number>;
|
|
40
|
+
export declare function cliSearchSkills(dbPath: string, query: string, options: {
|
|
41
|
+
k: number;
|
|
42
|
+
minSuccessRate: number;
|
|
43
|
+
sortBy: string;
|
|
44
|
+
}): Promise<Skill[]>;
|
|
45
|
+
/**
|
|
46
|
+
* Episode and skill counts. `agentdb db stats` does not list skills, so the
|
|
47
|
+
* file is read directly with better-sqlite3 (a dependency of this package);
|
|
48
|
+
* if that fails, the episode count comes from the CLI output.
|
|
49
|
+
*/
|
|
50
|
+
export declare function cliCounts(dbPath: string): Promise<{
|
|
51
|
+
episodes: number;
|
|
52
|
+
skills: number;
|
|
53
|
+
}>;
|
|
54
|
+
export declare function cliOptimize(dbPath: string): Promise<void>;
|
|
55
|
+
//# sourceMappingURL=enhanced-memory-cli.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enhanced-memory-cli.d.ts","sourceRoot":"","sources":["../src/enhanced-memory-cli.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AA+DnE,wBAAsB,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ3D;AAED,wBAAsB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAaxG;AAED,wBAAsB,WAAW,CAC/B,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,CAAC,EAAE,MAAM,EACT,OAAO,EAAE;IACP,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GACA,OAAO,CAAC,MAAM,EAAE,CAAC,CAUnB;AAED,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,OAAO,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,mBAAmB,EAAE,OAAO,CAAA;CAAE,GAC3F,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAkBvE;AAED,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,GAC1E,OAAO,CAAC,MAAM,CAAC,CAYjB;AAED,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,OAAO,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC7D,OAAO,CAAC,KAAK,EAAE,CAAC,CAWlB;AAED;;;;GAIG;AACH,wBAAsB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAe7F;AAED,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAI/D"}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI fallback for EnhancedAgentDBMemory.
|
|
3
|
+
*
|
|
4
|
+
* Used only when the optional `agentdb` package cannot be imported in-process.
|
|
5
|
+
* Every call spawns `npx agentdb ...` (roughly 300 ms each).
|
|
6
|
+
*
|
|
7
|
+
* SECURITY: commands are spawned with argument arrays (no shell), so query,
|
|
8
|
+
* taskName, outcome, strategy and the like are never shell-interpolated.
|
|
9
|
+
*
|
|
10
|
+
* agentdb 3.x prints human-readable text, not JSON, for `reflexion retrieve`,
|
|
11
|
+
* `query` and `skill search`, so those lookups are best-effort and usually
|
|
12
|
+
* return nothing here. Stores, consolidation and the episode/skill counts work.
|
|
13
|
+
*/
|
|
14
|
+
import { spawn } from 'child_process';
|
|
15
|
+
// The sql.js backend rewrites the whole file and refuses to save over a
|
|
16
|
+
// concurrent change, so CLI calls against one database are run one at a time.
|
|
17
|
+
const dbQueues = new Map();
|
|
18
|
+
// agentdb 3.x CLI calls `db.save()`, which only the sql.js backend implements;
|
|
19
|
+
// with native better-sqlite3 the write lands but the command exits 1. Force the
|
|
20
|
+
// sql.js backend so every CLI call reports its real status.
|
|
21
|
+
const agentdbEnv = (dbPath) => ({
|
|
22
|
+
AGENTDB_PATH: dbPath,
|
|
23
|
+
AGENTDB_FORCE_SQLJS: '1',
|
|
24
|
+
});
|
|
25
|
+
function run(dbPath, args) {
|
|
26
|
+
const next = (dbQueues.get(dbPath) ?? Promise.resolve())
|
|
27
|
+
.catch(() => undefined)
|
|
28
|
+
.then(() => spawnOnce('npx', ['agentdb', ...args], agentdbEnv(dbPath)));
|
|
29
|
+
dbQueues.set(dbPath, next);
|
|
30
|
+
return next;
|
|
31
|
+
}
|
|
32
|
+
function spawnOnce(cmd, args, env) {
|
|
33
|
+
return new Promise((resolve, reject) => {
|
|
34
|
+
const child = spawn(cmd, args, {
|
|
35
|
+
env: { ...process.env, ...env },
|
|
36
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
37
|
+
shell: false,
|
|
38
|
+
});
|
|
39
|
+
let stdout = '';
|
|
40
|
+
let stderr = '';
|
|
41
|
+
child.stdout.on('data', (d) => { stdout += d.toString(); });
|
|
42
|
+
child.stderr.on('data', (d) => { stderr += d.toString(); });
|
|
43
|
+
child.on('close', (code) => {
|
|
44
|
+
if (code !== 0 && code !== null) {
|
|
45
|
+
const err = new Error(stderr || `Process exited with code ${code}`);
|
|
46
|
+
err.code = code;
|
|
47
|
+
reject(err);
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
resolve({ stdout, stderr });
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
child.on('error', reject);
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
const stripAnsi = (s) => s.replace(/\x1b\[[0-9;]*m/g, '');
|
|
57
|
+
function firstJson(stdout) {
|
|
58
|
+
const line = stdout.trim().split('\n').find((l) => l.startsWith('[') || l.startsWith('{'));
|
|
59
|
+
return line ? JSON.parse(line) : undefined;
|
|
60
|
+
}
|
|
61
|
+
/** Reads `<table>: N records` from `agentdb db stats` output. */
|
|
62
|
+
function recordCount(text, table) {
|
|
63
|
+
const match = stripAnsi(text).match(new RegExp(`^\\s*${table}:\\s*(\\d+)\\s+records`, 'm'));
|
|
64
|
+
return match ? parseInt(match[1], 10) : 0;
|
|
65
|
+
}
|
|
66
|
+
export async function cliInit(dbPath) {
|
|
67
|
+
try {
|
|
68
|
+
await run(dbPath, ['init', dbPath, '--dimension', '768', '--preset', 'high-performance', '--enable-cache']);
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
if (!error.message.includes('already exists')) {
|
|
72
|
+
console.error('⚠️ AgentDB initialization warning:', error.message);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
export async function cliStoreEpisode(dbPath, episode, critique) {
|
|
77
|
+
const args = [
|
|
78
|
+
'reflexion', 'store',
|
|
79
|
+
episode.sessionId,
|
|
80
|
+
episode.taskName,
|
|
81
|
+
episode.confidence.toString(),
|
|
82
|
+
episode.success.toString(),
|
|
83
|
+
episode.outcome || '',
|
|
84
|
+
];
|
|
85
|
+
if (episode.strategy)
|
|
86
|
+
args.push('--strategy', episode.strategy);
|
|
87
|
+
if (episode.reasoning)
|
|
88
|
+
args.push('--reasoning', episode.reasoning);
|
|
89
|
+
if (critique)
|
|
90
|
+
args.push('--critique', critique);
|
|
91
|
+
await run(dbPath, args);
|
|
92
|
+
}
|
|
93
|
+
export async function cliRetrieve(dbPath, query, k, options) {
|
|
94
|
+
const args = ['reflexion', 'retrieve', query, '--k', String(k)];
|
|
95
|
+
if (options.minReward !== undefined)
|
|
96
|
+
args.push('--min-reward', String(options.minReward));
|
|
97
|
+
if (options.onlySuccesses)
|
|
98
|
+
args.push('--only-successes');
|
|
99
|
+
if (options.onlyFailures)
|
|
100
|
+
args.push('--only-failures');
|
|
101
|
+
if (options.synthesizeContext)
|
|
102
|
+
args.push('--synthesize-context');
|
|
103
|
+
if (options.enableReasoning)
|
|
104
|
+
args.push('--enable-causal-reasoning');
|
|
105
|
+
if (options.timeWindow)
|
|
106
|
+
args.push('--time-window', String(options.timeWindow));
|
|
107
|
+
const data = firstJson((await run(dbPath, args)).stdout);
|
|
108
|
+
return data === undefined ? [] : Array.isArray(data) ? data : [data];
|
|
109
|
+
}
|
|
110
|
+
export async function cliQuery(dbPath, query, options) {
|
|
111
|
+
const args = [
|
|
112
|
+
'query',
|
|
113
|
+
'--query', query,
|
|
114
|
+
'--k', String(options.k),
|
|
115
|
+
'--min-confidence', String(options.minConfidence),
|
|
116
|
+
'--synthesize-context',
|
|
117
|
+
'--format', 'json',
|
|
118
|
+
];
|
|
119
|
+
if (options.domain)
|
|
120
|
+
args.push('--domain', options.domain);
|
|
121
|
+
if (options.synthesizeReasoning)
|
|
122
|
+
args.push('--enable-causal-reasoning');
|
|
123
|
+
const data = firstJson((await run(dbPath, args)).stdout);
|
|
124
|
+
if (data === undefined)
|
|
125
|
+
return { memories: [] };
|
|
126
|
+
return {
|
|
127
|
+
memories: Array.isArray(data) ? data : [data],
|
|
128
|
+
context: data.context || data.summary,
|
|
129
|
+
reasoning: data.reasoning || data.causal_chain,
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
export async function cliConsolidate(dbPath, options) {
|
|
133
|
+
// The fourth positional is agentdb's extract-patterns flag.
|
|
134
|
+
const { stdout } = await run(dbPath, [
|
|
135
|
+
'skill', 'consolidate',
|
|
136
|
+
String(options.minAttempts),
|
|
137
|
+
String(options.minReward),
|
|
138
|
+
String(options.timeWindowDays),
|
|
139
|
+
'true',
|
|
140
|
+
]);
|
|
141
|
+
const text = stripAnsi(stdout);
|
|
142
|
+
const created = text.match(/Created\s+(\d+)/i) ?? text.match(/(\d+)\s+skills?\s+(?:created|consolidated)/i);
|
|
143
|
+
return created ? parseInt(created[1], 10) : 0;
|
|
144
|
+
}
|
|
145
|
+
export async function cliSearchSkills(dbPath, query, options) {
|
|
146
|
+
const data = firstJson((await run(dbPath, [
|
|
147
|
+
'skill', 'search', query,
|
|
148
|
+
'--k', String(options.k),
|
|
149
|
+
'--min-success-rate', String(options.minSuccessRate),
|
|
150
|
+
'--sort-by', options.sortBy,
|
|
151
|
+
'--format', 'json',
|
|
152
|
+
])).stdout);
|
|
153
|
+
return data === undefined ? [] : Array.isArray(data) ? data : [data];
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Episode and skill counts. `agentdb db stats` does not list skills, so the
|
|
157
|
+
* file is read directly with better-sqlite3 (a dependency of this package);
|
|
158
|
+
* if that fails, the episode count comes from the CLI output.
|
|
159
|
+
*/
|
|
160
|
+
export async function cliCounts(dbPath) {
|
|
161
|
+
await (dbQueues.get(dbPath) ?? Promise.resolve()).catch(() => undefined);
|
|
162
|
+
try {
|
|
163
|
+
const { default: Database } = await import('better-sqlite3');
|
|
164
|
+
const db = new Database(dbPath, { readonly: true, fileMustExist: true });
|
|
165
|
+
try {
|
|
166
|
+
const count = (table) => db.prepare(`SELECT COUNT(*) AS n FROM ${table}`).get().n;
|
|
167
|
+
return { episodes: count('episodes'), skills: count('skills') };
|
|
168
|
+
}
|
|
169
|
+
finally {
|
|
170
|
+
db.close();
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
catch {
|
|
174
|
+
const { stdout } = await run(dbPath, ['db', 'stats']);
|
|
175
|
+
return { episodes: recordCount(stdout, 'episodes'), skills: 0 };
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
export async function cliOptimize(dbPath) {
|
|
179
|
+
await run(dbPath, ['db', 'vacuum']);
|
|
180
|
+
await run(dbPath, ['db', 'reindex']);
|
|
181
|
+
await run(dbPath, ['db', 'optimize-vectors']);
|
|
182
|
+
}
|
|
183
|
+
//# sourceMappingURL=enhanced-memory-cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enhanced-memory-cli.js","sourceRoot":"","sources":["../src/enhanced-memory-cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Enhanced AgentDB Memory Integration
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* -
|
|
9
|
-
*
|
|
4
|
+
* Reflexion memory with self-critique, a skill library with semantic search,
|
|
5
|
+
* context synthesis and performance metrics.
|
|
6
|
+
*
|
|
7
|
+
* The optional `agentdb` package is imported lazily and driven in-process
|
|
8
|
+
* (see agentdb-engine.ts). Only when it cannot be imported does this class
|
|
9
|
+
* fall back to spawning the agentdb CLI (see enhanced-memory-cli.ts).
|
|
10
10
|
*/
|
|
11
11
|
export interface Episode {
|
|
12
12
|
sessionId: string;
|
|
@@ -46,18 +46,28 @@ export interface MemoryStats {
|
|
|
46
46
|
cacheHitRate: number;
|
|
47
47
|
dbSize: number;
|
|
48
48
|
}
|
|
49
|
+
type SortBy = 'success_rate' | 'avg_reward' | 'num_attempts' | 'last_used';
|
|
49
50
|
export declare class EnhancedAgentDBMemory {
|
|
50
51
|
private dbPath;
|
|
51
52
|
private initialized;
|
|
53
|
+
/** In-process agentdb; null means the CLI fallback is in use. */
|
|
54
|
+
private engine;
|
|
52
55
|
private performanceMetrics;
|
|
53
56
|
constructor(dbPath: string);
|
|
57
|
+
/** True when agentdb runs in this process, false when the CLI fallback is in use. */
|
|
58
|
+
get inProcess(): boolean;
|
|
54
59
|
initialize(): Promise<void>;
|
|
55
60
|
/**
|
|
56
|
-
* Store episode with full context and self-critique
|
|
61
|
+
* Store episode with full context and self-critique.
|
|
62
|
+
*
|
|
63
|
+
* In-process, `outcome` is stored as agentdb's critique (as AgentDBMemory
|
|
64
|
+
* does, so both classes read one database the same way); strategy,
|
|
65
|
+
* reasoning and the self-critique go into the episode metadata.
|
|
57
66
|
*/
|
|
58
67
|
storeEpisode(episode: Episode): Promise<void>;
|
|
59
68
|
/**
|
|
60
|
-
* Retrieve memories with semantic search
|
|
69
|
+
* Retrieve memories with semantic search.
|
|
70
|
+
* `synthesizeContext` and `enableReasoning` only affect the CLI fallback.
|
|
61
71
|
*/
|
|
62
72
|
retrieveMemories(query: string, k?: number, options?: {
|
|
63
73
|
minReward?: number;
|
|
@@ -68,7 +78,9 @@ export declare class EnhancedAgentDBMemory {
|
|
|
68
78
|
timeWindow?: number;
|
|
69
79
|
}): Promise<Memory[]>;
|
|
70
80
|
/**
|
|
71
|
-
* Query with
|
|
81
|
+
* Query with context synthesis. In-process, `context` is agentdb's
|
|
82
|
+
* ContextSynthesizer summary and `reasoning` its key insights and
|
|
83
|
+
* recommendations. `domain` has no in-process equivalent.
|
|
72
84
|
*/
|
|
73
85
|
queryWithContext(query: string, options?: {
|
|
74
86
|
k?: number;
|
|
@@ -81,7 +93,9 @@ export declare class EnhancedAgentDBMemory {
|
|
|
81
93
|
reasoning?: string;
|
|
82
94
|
}>;
|
|
83
95
|
/**
|
|
84
|
-
* Consolidate skills
|
|
96
|
+
* Consolidate successful episodes into skills. Returns the number of skills
|
|
97
|
+
* created. `enablePruning` is accepted for compatibility; agentdb has no
|
|
98
|
+
* skill pruning step in consolidation.
|
|
85
99
|
*/
|
|
86
100
|
consolidateSkills(options?: {
|
|
87
101
|
minAttempts?: number;
|
|
@@ -89,13 +103,11 @@ export declare class EnhancedAgentDBMemory {
|
|
|
89
103
|
timeWindowDays?: number;
|
|
90
104
|
enablePruning?: boolean;
|
|
91
105
|
}): Promise<number>;
|
|
92
|
-
/**
|
|
93
|
-
* Get skill library with semantic search
|
|
94
|
-
*/
|
|
106
|
+
/** Search the skill library semantically, then order by `sortBy`. */
|
|
95
107
|
searchSkills(query: string, options?: {
|
|
96
108
|
k?: number;
|
|
97
109
|
minSuccessRate?: number;
|
|
98
|
-
sortBy?:
|
|
110
|
+
sortBy?: SortBy;
|
|
99
111
|
}): Promise<Skill[]>;
|
|
100
112
|
/**
|
|
101
113
|
* Generate self-critique for an episode
|
|
@@ -106,7 +118,8 @@ export declare class EnhancedAgentDBMemory {
|
|
|
106
118
|
*/
|
|
107
119
|
getStats(): Promise<MemoryStats>;
|
|
108
120
|
/**
|
|
109
|
-
* Optimize database performance
|
|
121
|
+
* Optimize database performance: REINDEX and VACUUM in-process; the CLI
|
|
122
|
+
* fallback also runs agentdb's optimize-vectors.
|
|
110
123
|
*/
|
|
111
124
|
optimize(): Promise<void>;
|
|
112
125
|
/**
|
|
@@ -115,4 +128,5 @@ export declare class EnhancedAgentDBMemory {
|
|
|
115
128
|
clearMetrics(): void;
|
|
116
129
|
close(): Promise<void>;
|
|
117
130
|
}
|
|
131
|
+
export {};
|
|
118
132
|
//# sourceMappingURL=enhanced-memory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enhanced-memory.d.ts","sourceRoot":"","sources":["../src/enhanced-memory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"enhanced-memory.d.ts","sourceRoot":"","sources":["../src/enhanced-memory.ts"],"names":[],"mappings":"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"}
|