@agntk/core 0.3.0 → 0.3.1
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/agent-v2.d.ts +48 -0
- package/dist/agent-v2.d.ts.map +1 -0
- package/dist/agent-v2.js +365 -0
- package/dist/agent-v2.js.map +1 -0
- package/dist/memory/engine.d.ts +130 -0
- package/dist/memory/engine.d.ts.map +1 -0
- package/dist/memory/engine.js +227 -0
- package/dist/memory/engine.js.map +1 -0
- package/dist/memory/vectra-store.d.ts +31 -0
- package/dist/memory/vectra-store.d.ts.map +1 -0
- package/dist/memory/vectra-store.js +122 -0
- package/dist/memory/vectra-store.js.map +1 -0
- package/dist/models.js +1 -1
- package/dist/models.js.map +1 -1
- package/dist/pool/index.d.ts +7 -0
- package/dist/pool/index.d.ts.map +1 -0
- package/dist/pool/index.js +6 -0
- package/dist/pool/index.js.map +1 -0
- package/dist/pool/specialist-pool.d.ts +59 -0
- package/dist/pool/specialist-pool.d.ts.map +1 -0
- package/dist/pool/specialist-pool.js +224 -0
- package/dist/pool/specialist-pool.js.map +1 -0
- package/dist/pool/tools.d.ts +63 -0
- package/dist/pool/tools.d.ts.map +1 -0
- package/dist/pool/tools.js +83 -0
- package/dist/pool/tools.js.map +1 -0
- package/dist/pool/types.d.ts +79 -0
- package/dist/pool/types.d.ts.map +1 -0
- package/dist/pool/types.js +5 -0
- package/dist/pool/types.js.map +1 -0
- package/dist/presets/index.d.ts +5 -0
- package/dist/presets/index.d.ts.map +1 -0
- package/dist/presets/index.js +5 -0
- package/dist/presets/index.js.map +1 -0
- package/dist/presets/role-registry.d.ts +41 -0
- package/dist/presets/role-registry.d.ts.map +1 -0
- package/dist/presets/role-registry.js +213 -0
- package/dist/presets/role-registry.js.map +1 -0
- package/dist/presets/roles.d.ts +105 -0
- package/dist/presets/roles.d.ts.map +1 -0
- package/dist/presets/roles.js +207 -0
- package/dist/presets/roles.js.map +1 -0
- package/dist/prompts/templates.d.ts +11 -0
- package/dist/prompts/templates.d.ts.map +1 -0
- package/dist/prompts/templates.js +115 -0
- package/dist/prompts/templates.js.map +1 -0
- package/dist/streaming/data-parts.d.ts +163 -0
- package/dist/streaming/data-parts.d.ts.map +1 -0
- package/dist/streaming/data-parts.js +14 -0
- package/dist/streaming/data-parts.js.map +1 -0
- package/dist/streaming/index.d.ts +8 -0
- package/dist/streaming/index.d.ts.map +1 -0
- package/dist/streaming/index.js +10 -0
- package/dist/streaming/index.js.map +1 -0
- package/dist/streaming/transient.d.ts +136 -0
- package/dist/streaming/transient.d.ts.map +1 -0
- package/dist/streaming/transient.js +201 -0
- package/dist/streaming/transient.js.map +1 -0
- package/dist/tools/factory.d.ts +109 -0
- package/dist/tools/factory.d.ts.map +1 -0
- package/dist/tools/factory.js +166 -0
- package/dist/tools/factory.js.map +1 -0
- package/dist/tools/provider.d.ts +97 -0
- package/dist/tools/provider.d.ts.map +1 -0
- package/dist/tools/provider.js +178 -0
- package/dist/tools/provider.js.map +1 -0
- package/dist/types/agent-v2.d.ts +83 -0
- package/dist/types/agent-v2.d.ts.map +1 -0
- package/dist/types/agent-v2.js +8 -0
- package/dist/types/agent-v2.js.map +1 -0
- package/dist/utils/logger.d.ts +35 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +149 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/workflow/builders/adapt.d.ts +20 -0
- package/dist/workflow/builders/adapt.d.ts.map +1 -0
- package/dist/workflow/builders/adapt.js +33 -0
- package/dist/workflow/builders/adapt.js.map +1 -0
- package/dist/workflow/builders/index.d.ts +8 -0
- package/dist/workflow/builders/index.d.ts.map +1 -0
- package/dist/workflow/builders/index.js +7 -0
- package/dist/workflow/builders/index.js.map +1 -0
- package/dist/workflow/builders/parallel.d.ts +25 -0
- package/dist/workflow/builders/parallel.d.ts.map +1 -0
- package/dist/workflow/builders/parallel.js +60 -0
- package/dist/workflow/builders/parallel.js.map +1 -0
- package/dist/workflow/builders/pipeline.d.ts +22 -0
- package/dist/workflow/builders/pipeline.d.ts.map +1 -0
- package/dist/workflow/builders/pipeline.js +48 -0
- package/dist/workflow/builders/pipeline.js.map +1 -0
- package/dist/workflow/builders/types.d.ts +54 -0
- package/dist/workflow/builders/types.d.ts.map +1 -0
- package/dist/workflow/builders/types.js +5 -0
- package/dist/workflow/builders/types.js.map +1 -0
- package/dist/workflow/durable-agent.d.ts +128 -0
- package/dist/workflow/durable-agent.d.ts.map +1 -0
- package/dist/workflow/durable-agent.js +323 -0
- package/dist/workflow/durable-agent.js.map +1 -0
- package/dist/workflow/schedulers.d.ts +231 -0
- package/dist/workflow/schedulers.d.ts.map +1 -0
- package/dist/workflow/schedulers.js +250 -0
- package/dist/workflow/schedulers.js.map +1 -0
- package/dist/workflow/team/create-team.d.ts +34 -0
- package/dist/workflow/team/create-team.d.ts.map +1 -0
- package/dist/workflow/team/create-team.js +242 -0
- package/dist/workflow/team/create-team.js.map +1 -0
- package/dist/workflow/team/index.d.ts +9 -0
- package/dist/workflow/team/index.d.ts.map +1 -0
- package/dist/workflow/team/index.js +8 -0
- package/dist/workflow/team/index.js.map +1 -0
- package/dist/workflow/team/machines.d.ts +152 -0
- package/dist/workflow/team/machines.d.ts.map +1 -0
- package/dist/workflow/team/machines.js +197 -0
- package/dist/workflow/team/machines.js.map +1 -0
- package/dist/workflow/team/task-board.d.ts +47 -0
- package/dist/workflow/team/task-board.d.ts.map +1 -0
- package/dist/workflow/team/task-board.js +111 -0
- package/dist/workflow/team/task-board.js.map +1 -0
- package/dist/workflow/team/tools.d.ts +66 -0
- package/dist/workflow/team/tools.d.ts.map +1 -0
- package/dist/workflow/team/tools.js +100 -0
- package/dist/workflow/team/tools.js.map +1 -0
- package/dist/workflow/team/types.d.ts +109 -0
- package/dist/workflow/team/types.d.ts.map +1 -0
- package/dist/workflow/team/types.js +5 -0
- package/dist/workflow/team/types.js.map +1 -0
- package/dist/workflow/templates.d.ts +71 -0
- package/dist/workflow/templates.d.ts.map +1 -0
- package/dist/workflow/templates.js +132 -0
- package/dist/workflow/templates.js.map +1 -0
- package/package.json +13 -13
- package/LICENSE +0 -22
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @agntk/core - Unified Memory Engine
|
|
3
|
+
*
|
|
4
|
+
* Single write path: remember() → LLM extraction → parallel writes to Vectra + Graph.
|
|
5
|
+
* Implements Mem0 ADD/UPDATE/DELETE/NOOP pattern with Hindsight 4-network taxonomy.
|
|
6
|
+
*
|
|
7
|
+
* Architecture:
|
|
8
|
+
* - VectorStore: Semantic similarity search (Vectra)
|
|
9
|
+
* - GraphStore: Structural relationships (Graphology via QueryPort)
|
|
10
|
+
* - ExtractionModel: LLM-powered fact extraction
|
|
11
|
+
* - ContradictionDetector: Write-time conflict detection
|
|
12
|
+
*/
|
|
13
|
+
import { createLogger } from '@agntk/logger';
|
|
14
|
+
import { extractFacts, } from './extraction.js';
|
|
15
|
+
const log = createLogger('@agntk/core:memory-engine');
|
|
16
|
+
// ============================================================================
|
|
17
|
+
// Implementation
|
|
18
|
+
// ============================================================================
|
|
19
|
+
/**
|
|
20
|
+
* Create a unified memory engine.
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```typescript
|
|
24
|
+
* const engine = createMemoryEngine({
|
|
25
|
+
* vectorStore: await createMemoryStore({ path: './.memory' }),
|
|
26
|
+
* graphStore: new GraphologyAdapter(),
|
|
27
|
+
* extractionModel: openai('gpt-4o-mini'),
|
|
28
|
+
* });
|
|
29
|
+
*
|
|
30
|
+
* // Single remember() does extraction + parallel writes
|
|
31
|
+
* const result = await engine.remember('TypeScript 5.3 supports import attributes');
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
export function createMemoryEngine(config) {
|
|
35
|
+
const { vectorStore, graphStore, extractionModel, contradictionDetector, defaultTopK = 5, defaultThreshold = 0.7, } = config;
|
|
36
|
+
return {
|
|
37
|
+
async remember(text, metadata) {
|
|
38
|
+
const writeId = generateWriteId();
|
|
39
|
+
const timestamp = new Date().toISOString();
|
|
40
|
+
log.debug('remember() — unified write path', { writeId, textLength: text.length });
|
|
41
|
+
// Step 1: Extract facts via LLM (if model provided)
|
|
42
|
+
let facts = [];
|
|
43
|
+
if (extractionModel) {
|
|
44
|
+
try {
|
|
45
|
+
const done = log.time('extraction');
|
|
46
|
+
const result = await extractFacts(text, { model: extractionModel });
|
|
47
|
+
facts = result.facts;
|
|
48
|
+
done();
|
|
49
|
+
log.info('Extraction complete', { factCount: facts.length });
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
log.warn('Extraction failed, continuing with raw text', { error: String(error) });
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
// Step 2: Check for contradictions against existing memories
|
|
56
|
+
let contradictionResult;
|
|
57
|
+
if (contradictionDetector && facts.length > 0) {
|
|
58
|
+
try {
|
|
59
|
+
contradictionResult = await detectContradictions(facts, vectorStore, contradictionDetector, graphStore, defaultTopK, defaultThreshold);
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
log.warn('Contradiction detection failed, continuing', { error: String(error) });
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
// Step 3: Determine operation type
|
|
66
|
+
const operation = contradictionResult ? 'UPDATE' : 'ADD';
|
|
67
|
+
// Step 4: Parallel writes to vector store + graph store
|
|
68
|
+
const writePromises = [];
|
|
69
|
+
let vectorStoreId;
|
|
70
|
+
let graphStoreId;
|
|
71
|
+
// Vector store: store the raw text + extracted facts as metadata
|
|
72
|
+
writePromises.push(vectorStore.remember(text, {
|
|
73
|
+
...metadata,
|
|
74
|
+
writeId,
|
|
75
|
+
timestamp,
|
|
76
|
+
operation,
|
|
77
|
+
networks: facts.map((f) => f.network),
|
|
78
|
+
factCount: facts.length,
|
|
79
|
+
facts: facts.map((f) => f.fact),
|
|
80
|
+
}).then((id) => { vectorStoreId = id; }));
|
|
81
|
+
// Graph store: create episode + link entities
|
|
82
|
+
if (graphStore && facts.length > 0) {
|
|
83
|
+
const episodeType = classifyEpisodeType(facts);
|
|
84
|
+
const entityNames = [...new Set(facts.flatMap((f) => f.entities.map((e) => e.name)))];
|
|
85
|
+
const relationshipStrings = facts.flatMap((f) => f.relationships.map((r) => `${r.from}-[${r.type}]->${r.to}`));
|
|
86
|
+
writePromises.push((async () => {
|
|
87
|
+
await graphStore.upsertEpisode({
|
|
88
|
+
id: writeId,
|
|
89
|
+
timestamp,
|
|
90
|
+
type: episodeType,
|
|
91
|
+
summary: facts.map((f) => f.fact).join('; '),
|
|
92
|
+
content: text,
|
|
93
|
+
entities: entityNames,
|
|
94
|
+
relationships: relationshipStrings,
|
|
95
|
+
});
|
|
96
|
+
graphStoreId = writeId;
|
|
97
|
+
// Link entities to the episode
|
|
98
|
+
for (const entityName of entityNames) {
|
|
99
|
+
await graphStore.linkEpisodeEntity(writeId, entityName);
|
|
100
|
+
}
|
|
101
|
+
})());
|
|
102
|
+
}
|
|
103
|
+
await Promise.all(writePromises);
|
|
104
|
+
log.info('Unified write complete', {
|
|
105
|
+
writeId,
|
|
106
|
+
operation,
|
|
107
|
+
factCount: facts.length,
|
|
108
|
+
vectorStoreId,
|
|
109
|
+
graphStoreId,
|
|
110
|
+
hasContradiction: !!contradictionResult,
|
|
111
|
+
});
|
|
112
|
+
return {
|
|
113
|
+
id: writeId,
|
|
114
|
+
operation,
|
|
115
|
+
facts,
|
|
116
|
+
vectorStoreId,
|
|
117
|
+
graphStoreId,
|
|
118
|
+
contradiction: contradictionResult,
|
|
119
|
+
};
|
|
120
|
+
},
|
|
121
|
+
async recall(query, options) {
|
|
122
|
+
return vectorStore.recall(query, {
|
|
123
|
+
topK: options?.topK ?? defaultTopK,
|
|
124
|
+
threshold: options?.threshold ?? defaultThreshold,
|
|
125
|
+
});
|
|
126
|
+
},
|
|
127
|
+
async queryKnowledge(query, limit = 10) {
|
|
128
|
+
if (!graphStore) {
|
|
129
|
+
log.debug('queryKnowledge called without graph store — returning empty');
|
|
130
|
+
return [];
|
|
131
|
+
}
|
|
132
|
+
const episodes = await graphStore.getEpisodesByQuery(query, limit);
|
|
133
|
+
return episodes.map((ep) => ({
|
|
134
|
+
id: ep.id ?? ep.properties?.id,
|
|
135
|
+
summary: ep.summary ?? ep.properties?.summary,
|
|
136
|
+
content: ep.content ?? ep.properties?.content,
|
|
137
|
+
timestamp: ep.timestamp ?? ep.properties?.timestamp,
|
|
138
|
+
type: ep.type ?? ep.properties?.type,
|
|
139
|
+
}));
|
|
140
|
+
},
|
|
141
|
+
async forget(id) {
|
|
142
|
+
return vectorStore.forget(id);
|
|
143
|
+
},
|
|
144
|
+
async count() {
|
|
145
|
+
return vectorStore.count();
|
|
146
|
+
},
|
|
147
|
+
async close() {
|
|
148
|
+
await vectorStore.close();
|
|
149
|
+
},
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
// ============================================================================
|
|
153
|
+
// Helpers
|
|
154
|
+
// ============================================================================
|
|
155
|
+
function generateWriteId() {
|
|
156
|
+
return `mem_${Date.now()}_${Math.random().toString(36).slice(2, 11)}`;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Classify the episode type based on the dominant memory network.
|
|
160
|
+
*/
|
|
161
|
+
function classifyEpisodeType(facts) {
|
|
162
|
+
const counts = {
|
|
163
|
+
world_fact: 0,
|
|
164
|
+
experience: 0,
|
|
165
|
+
entity_summary: 0,
|
|
166
|
+
belief: 0,
|
|
167
|
+
};
|
|
168
|
+
for (const fact of facts) {
|
|
169
|
+
counts[fact.network]++;
|
|
170
|
+
}
|
|
171
|
+
// Map network types to episode types
|
|
172
|
+
if (counts.experience > 0)
|
|
173
|
+
return 'action';
|
|
174
|
+
if (counts.belief > 0)
|
|
175
|
+
return 'decision';
|
|
176
|
+
if (counts.entity_summary > counts.world_fact)
|
|
177
|
+
return 'observation';
|
|
178
|
+
return 'learning';
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Check new facts against existing memories for contradictions.
|
|
182
|
+
*/
|
|
183
|
+
async function detectContradictions(newFacts, vectorStore, detector, graphStore, topK, threshold) {
|
|
184
|
+
// For each new world_fact or belief, check against similar existing memories
|
|
185
|
+
const checkableFacts = newFacts.filter((f) => f.network === 'world_fact' || f.network === 'belief');
|
|
186
|
+
for (const newFact of checkableFacts) {
|
|
187
|
+
const existing = await vectorStore.recall(newFact.fact, { topK, threshold });
|
|
188
|
+
for (const match of existing) {
|
|
189
|
+
const contradiction = detector.detect(match.item.text, newFact.fact, { id: match.item.id, source: 'memory', timestamp: match.item.timestamp.toISOString() }, { id: 'new', source: 'input', timestamp: new Date().toISOString() });
|
|
190
|
+
if (contradiction) {
|
|
191
|
+
log.info('Contradiction detected', {
|
|
192
|
+
existing: match.item.text.slice(0, 80),
|
|
193
|
+
new: newFact.fact.slice(0, 80),
|
|
194
|
+
});
|
|
195
|
+
// Store the contradiction in graph store if available
|
|
196
|
+
if (graphStore) {
|
|
197
|
+
try {
|
|
198
|
+
await graphStore.upsertContradiction({
|
|
199
|
+
id: contradiction.id,
|
|
200
|
+
detectedAt: contradiction.detectedAt,
|
|
201
|
+
resolution_winner: null,
|
|
202
|
+
resolution_reasoning: null,
|
|
203
|
+
factA_id: match.item.id,
|
|
204
|
+
factA_statement: match.item.text,
|
|
205
|
+
factA_source: 'memory',
|
|
206
|
+
factA_timestamp: match.item.timestamp.toISOString(),
|
|
207
|
+
factB_id: 'new',
|
|
208
|
+
factB_statement: newFact.fact,
|
|
209
|
+
factB_source: 'input',
|
|
210
|
+
factB_timestamp: new Date().toISOString(),
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
catch (error) {
|
|
214
|
+
log.warn('Failed to store contradiction in graph', { error: String(error) });
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
return {
|
|
218
|
+
id: contradiction.id,
|
|
219
|
+
existingFact: match.item.text,
|
|
220
|
+
newFact: newFact.fact,
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
return undefined;
|
|
226
|
+
}
|
|
227
|
+
//# sourceMappingURL=engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/memory/engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @agntk/core - Vectra Memory Store
|
|
3
|
+
*
|
|
4
|
+
* Portable in-memory vector database using Vectra.
|
|
5
|
+
* Zero native dependencies, file-based persistence.
|
|
6
|
+
*/
|
|
7
|
+
import type { MemoryOptions } from '../types/agent.js';
|
|
8
|
+
export interface MemoryItem {
|
|
9
|
+
id: string;
|
|
10
|
+
text: string;
|
|
11
|
+
metadata?: Record<string, unknown>;
|
|
12
|
+
timestamp: Date;
|
|
13
|
+
}
|
|
14
|
+
export interface MemorySearchResult {
|
|
15
|
+
item: MemoryItem;
|
|
16
|
+
score: number;
|
|
17
|
+
}
|
|
18
|
+
export interface MemoryStore {
|
|
19
|
+
remember: (text: string, metadata?: Record<string, unknown>) => Promise<string>;
|
|
20
|
+
recall: (query: string, options?: {
|
|
21
|
+
topK?: number;
|
|
22
|
+
threshold?: number;
|
|
23
|
+
}) => Promise<MemorySearchResult[]>;
|
|
24
|
+
forget: (id: string) => Promise<boolean>;
|
|
25
|
+
forgetAll: (filter?: (item: MemoryItem) => boolean) => Promise<number>;
|
|
26
|
+
count: () => Promise<number>;
|
|
27
|
+
close: () => Promise<void>;
|
|
28
|
+
}
|
|
29
|
+
export declare function createMemoryStore(options?: MemoryOptions): Promise<MemoryStore>;
|
|
30
|
+
export type { MemoryOptions };
|
|
31
|
+
//# sourceMappingURL=vectra-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vectra-store.d.ts","sourceRoot":"","sources":["../../src/memory/vectra-store.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAcH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAQpD,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAChF,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAC1G,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACzC,SAAS,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,OAAO,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACvE,KAAK,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7B,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AAqCD,wBAAsB,iBAAiB,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,CAkGzF;AAMD,YAAY,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @agntk/core - Vectra Memory Store
|
|
3
|
+
*
|
|
4
|
+
* Portable in-memory vector database using Vectra.
|
|
5
|
+
* Zero native dependencies, file-based persistence.
|
|
6
|
+
*/
|
|
7
|
+
import { LocalIndex } from 'vectra';
|
|
8
|
+
import * as path from 'node:path';
|
|
9
|
+
import * as fs from 'node:fs/promises';
|
|
10
|
+
import { createLogger } from '@agntk/logger';
|
|
11
|
+
import { getConfig } from '../config/index.js';
|
|
12
|
+
import { DEFAULT_EMBEDDING_URL, DEFAULT_EMBEDDING_MODEL, DEFAULT_MEMORY_PATH, DEFAULT_MEMORY_TOP_K, DEFAULT_MEMORY_SIMILARITY_THRESHOLD, } from '../constants.js';
|
|
13
|
+
const log = createLogger('@agntk/core:memory');
|
|
14
|
+
// ============================================================================
|
|
15
|
+
// Embedding - Using OpenAI directly
|
|
16
|
+
// ============================================================================
|
|
17
|
+
async function getEmbedding(text, modelName, embeddingUrl) {
|
|
18
|
+
const apiKey = process.env['OPENAI_API_KEY'];
|
|
19
|
+
if (!apiKey) {
|
|
20
|
+
throw new Error('OPENAI_API_KEY required for memory embeddings');
|
|
21
|
+
}
|
|
22
|
+
const url = embeddingUrl ?? DEFAULT_EMBEDDING_URL;
|
|
23
|
+
const response = await fetch(url, {
|
|
24
|
+
method: 'POST',
|
|
25
|
+
headers: {
|
|
26
|
+
'Content-Type': 'application/json',
|
|
27
|
+
'Authorization': `Bearer ${apiKey}`,
|
|
28
|
+
},
|
|
29
|
+
body: JSON.stringify({
|
|
30
|
+
model: modelName ?? DEFAULT_EMBEDDING_MODEL,
|
|
31
|
+
input: text,
|
|
32
|
+
}),
|
|
33
|
+
});
|
|
34
|
+
if (!response.ok) {
|
|
35
|
+
throw new Error(`Embedding failed: ${response.statusText}`);
|
|
36
|
+
}
|
|
37
|
+
const data = await response.json();
|
|
38
|
+
return data.data[0].embedding;
|
|
39
|
+
}
|
|
40
|
+
// ============================================================================
|
|
41
|
+
// Memory Store Implementation
|
|
42
|
+
// ============================================================================
|
|
43
|
+
export async function createMemoryStore(options = {}) {
|
|
44
|
+
// Merge with config values
|
|
45
|
+
const config = getConfig();
|
|
46
|
+
const memoryConfig = (config.memory ?? {});
|
|
47
|
+
const { path: storagePath = memoryConfig.path ?? DEFAULT_MEMORY_PATH, embedModel = memoryConfig.embedModel ?? DEFAULT_EMBEDDING_MODEL, topK = memoryConfig.topK ?? DEFAULT_MEMORY_TOP_K, similarityThreshold = memoryConfig.similarityThreshold ?? DEFAULT_MEMORY_SIMILARITY_THRESHOLD, } = options;
|
|
48
|
+
log.info('Creating memory store', { path: storagePath, embedModel, topK });
|
|
49
|
+
const absolutePath = path.resolve(storagePath);
|
|
50
|
+
await fs.mkdir(absolutePath, { recursive: true });
|
|
51
|
+
const index = new LocalIndex(absolutePath);
|
|
52
|
+
if (!await index.isIndexCreated()) {
|
|
53
|
+
await index.createIndex();
|
|
54
|
+
}
|
|
55
|
+
const store = {
|
|
56
|
+
async remember(text, metadata) {
|
|
57
|
+
const id = generateId();
|
|
58
|
+
const vector = await getEmbedding(text, embedModel);
|
|
59
|
+
await index.insertItem({
|
|
60
|
+
id,
|
|
61
|
+
vector,
|
|
62
|
+
metadata: { text, timestamp: new Date().toISOString(), ...metadata },
|
|
63
|
+
});
|
|
64
|
+
return id;
|
|
65
|
+
},
|
|
66
|
+
async recall(query, opts) {
|
|
67
|
+
const queryVector = await getEmbedding(query, embedModel);
|
|
68
|
+
const k = opts?.topK ?? topK;
|
|
69
|
+
const threshold = opts?.threshold ?? similarityThreshold;
|
|
70
|
+
const results = await index.queryItems(queryVector, k);
|
|
71
|
+
return results
|
|
72
|
+
.filter(r => r.score >= threshold)
|
|
73
|
+
.map(r => ({
|
|
74
|
+
item: {
|
|
75
|
+
id: r.item.id,
|
|
76
|
+
text: r.item.metadata?.text ?? '',
|
|
77
|
+
metadata: r.item.metadata,
|
|
78
|
+
timestamp: new Date(r.item.metadata?.timestamp ?? Date.now()),
|
|
79
|
+
},
|
|
80
|
+
score: r.score,
|
|
81
|
+
}));
|
|
82
|
+
},
|
|
83
|
+
async forget(id) {
|
|
84
|
+
try {
|
|
85
|
+
await index.deleteItem(id);
|
|
86
|
+
return true;
|
|
87
|
+
}
|
|
88
|
+
catch (_e) {
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
async forgetAll(filter) {
|
|
93
|
+
const items = await index.listItems();
|
|
94
|
+
let deleted = 0;
|
|
95
|
+
for (const item of items) {
|
|
96
|
+
const memoryItem = {
|
|
97
|
+
id: item.id,
|
|
98
|
+
text: item.metadata?.text ?? '',
|
|
99
|
+
metadata: item.metadata,
|
|
100
|
+
timestamp: new Date(item.metadata?.timestamp ?? Date.now()),
|
|
101
|
+
};
|
|
102
|
+
if (!filter || filter(memoryItem)) {
|
|
103
|
+
await index.deleteItem(item.id);
|
|
104
|
+
deleted++;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return deleted;
|
|
108
|
+
},
|
|
109
|
+
async count() {
|
|
110
|
+
const items = await index.listItems();
|
|
111
|
+
return items.length;
|
|
112
|
+
},
|
|
113
|
+
async close() {
|
|
114
|
+
// Vectra auto-persists
|
|
115
|
+
},
|
|
116
|
+
};
|
|
117
|
+
return store;
|
|
118
|
+
}
|
|
119
|
+
function generateId() {
|
|
120
|
+
return `mem_${Date.now()}_${Math.random().toString(36).slice(2, 11)}`;
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=vectra-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vectra-store.js","sourceRoot":"","sources":["../../src/memory/vectra-store.ts"],"names":[],"mappings":"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"}
|
package/dist/models.js
CHANGED
package/dist/models.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAGxF,MAAM,GAAG,GAAG,YAAY,CAAC,oBAAoB,CAAC,CAAC;AAa/C,MAAM,gBAAgB,GAAmC;IACvD,UAAU,EAAE;QACV,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,8BAA8B;QACvC,SAAS,EAAE,oBAAoB;KAChC;IACD,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,2BAA2B;QACtE,SAAS,EAAE,gBAAgB,EAAE,sDAAsD;KACpF;IACD,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,2BAA2B;QACpC,SAAS,EAAE,gBAAgB;KAC5B;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,4BAA4B;QACrC,SAAS,EAAE,kBAAkB;KAC9B;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Pool module barrel exports.
|
|
3
|
+
*/
|
|
4
|
+
export { SpecialistPool } from './specialist-pool.js';
|
|
5
|
+
export { createPoolTools, createSpawnSpecialistTool, createListSpecialistsTool } from './tools.js';
|
|
6
|
+
export type { SpecialistPoolConfig, SpecialistConfig, CachedSpecialist, ConversationMessage, SpecialistAgent, HistoryStrategy, } from './types.js';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pool/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAChG,YAAY,EACV,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,eAAe,GAChB,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pool/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview SpecialistPool — LRU+TTL cache of domain specialists.
|
|
3
|
+
*
|
|
4
|
+
* Spawns (or reuses) specialist agents keyed by domain name.
|
|
5
|
+
* Each specialist can have skills injected and maintains conversation history.
|
|
6
|
+
*/
|
|
7
|
+
import type { SpecialistPoolConfig, SpecialistConfig, CachedSpecialist } from './types.js';
|
|
8
|
+
export declare class SpecialistPool {
|
|
9
|
+
private cache;
|
|
10
|
+
private readonly maxAgents;
|
|
11
|
+
private readonly ttlMs;
|
|
12
|
+
private readonly defaultHistoryStrategy;
|
|
13
|
+
private readonly defaultWindowSize;
|
|
14
|
+
private readonly createAgent;
|
|
15
|
+
constructor(config: SpecialistPoolConfig);
|
|
16
|
+
/**
|
|
17
|
+
* Spawn or reuse a specialist for the given domain.
|
|
18
|
+
* Returns the cached specialist if not expired; otherwise creates a new one.
|
|
19
|
+
*/
|
|
20
|
+
spawn(config: SpecialistConfig): Promise<CachedSpecialist>;
|
|
21
|
+
/**
|
|
22
|
+
* Generate a response from a specialist, managing conversation history.
|
|
23
|
+
*/
|
|
24
|
+
generate(domain: string, prompt: string): Promise<string>;
|
|
25
|
+
/**
|
|
26
|
+
* List all cached specialists with their metadata.
|
|
27
|
+
*/
|
|
28
|
+
list(): Array<{
|
|
29
|
+
domain: string;
|
|
30
|
+
createdAt: number;
|
|
31
|
+
lastUsedAt: number;
|
|
32
|
+
useCount: number;
|
|
33
|
+
historyLength: number;
|
|
34
|
+
expired: boolean;
|
|
35
|
+
skills: string[];
|
|
36
|
+
}>;
|
|
37
|
+
/**
|
|
38
|
+
* Remove a specialist from the cache.
|
|
39
|
+
*/
|
|
40
|
+
remove(domain: string): boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Clear all cached specialists.
|
|
43
|
+
*/
|
|
44
|
+
clear(): void;
|
|
45
|
+
/**
|
|
46
|
+
* Get the current number of cached specialists.
|
|
47
|
+
*/
|
|
48
|
+
get size(): number;
|
|
49
|
+
/**
|
|
50
|
+
* Get a cached specialist by domain (without modifying LRU state).
|
|
51
|
+
*/
|
|
52
|
+
get(domain: string): CachedSpecialist | undefined;
|
|
53
|
+
private isExpired;
|
|
54
|
+
private evictIfNeeded;
|
|
55
|
+
private createSpecialist;
|
|
56
|
+
private buildContextualPrompt;
|
|
57
|
+
private getRelevantHistory;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=specialist-pool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"specialist-pool.d.ts","sourceRoot":"","sources":["../../src/pool/specialist-pool.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EACV,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAIjB,MAAM,SAAS,CAAC;AAmBjB,qBAAa,cAAc;IACzB,OAAO,CAAC,KAAK,CAAuC;IACpD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAkB;IACzD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAsC;gBAEtD,MAAM,EAAE,oBAAoB;IAkBxC;;;OAGG;IACG,KAAK,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA6BhE;;OAEG;IACG,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA6B/D;;OAEG;IACH,IAAI,IAAI,KAAK,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,aAAa,EAAE,MAAM,CAAC;QACtB,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC;IAYF;;OAEG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAQ/B;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAQjD,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,aAAa;YAsBP,gBAAgB;IAwC9B,OAAO,CAAC,qBAAqB;IAW7B,OAAO,CAAC,kBAAkB;CAsB3B"}
|