universal-agent-memory 0.6.2 → 0.7.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/benchmarks/agents/naive-agent.d.ts +60 -0
- package/dist/benchmarks/agents/naive-agent.d.ts.map +1 -0
- package/dist/benchmarks/agents/naive-agent.js +144 -0
- package/dist/benchmarks/agents/naive-agent.js.map +1 -0
- package/dist/benchmarks/agents/uam-agent.d.ts +167 -0
- package/dist/benchmarks/agents/uam-agent.d.ts.map +1 -0
- package/dist/benchmarks/agents/uam-agent.js +386 -0
- package/dist/benchmarks/agents/uam-agent.js.map +1 -0
- package/dist/benchmarks/benchmark.d.ts +328 -0
- package/dist/benchmarks/benchmark.d.ts.map +1 -0
- package/dist/benchmarks/benchmark.js +104 -0
- package/dist/benchmarks/benchmark.js.map +1 -0
- package/dist/benchmarks/execution-verifier.d.ts +41 -0
- package/dist/benchmarks/execution-verifier.d.ts.map +1 -0
- package/dist/benchmarks/execution-verifier.js +342 -0
- package/dist/benchmarks/execution-verifier.js.map +1 -0
- package/dist/benchmarks/hierarchical-prompting.d.ts +37 -0
- package/dist/benchmarks/hierarchical-prompting.d.ts.map +1 -0
- package/dist/benchmarks/hierarchical-prompting.js +260 -0
- package/dist/benchmarks/hierarchical-prompting.js.map +1 -0
- package/dist/benchmarks/improved-benchmark.d.ts +88 -0
- package/dist/benchmarks/improved-benchmark.d.ts.map +1 -0
- package/dist/benchmarks/improved-benchmark.js +533 -0
- package/dist/benchmarks/improved-benchmark.js.map +1 -0
- package/dist/benchmarks/index.d.ts +10 -0
- package/dist/benchmarks/index.d.ts.map +1 -0
- package/dist/benchmarks/index.js +10 -0
- package/dist/benchmarks/index.js.map +1 -0
- package/dist/benchmarks/multi-turn-agent.d.ts +44 -0
- package/dist/benchmarks/multi-turn-agent.d.ts.map +1 -0
- package/dist/benchmarks/multi-turn-agent.js +235 -0
- package/dist/benchmarks/multi-turn-agent.js.map +1 -0
- package/dist/benchmarks/runner.d.ts +2 -0
- package/dist/benchmarks/runner.d.ts.map +1 -0
- package/dist/benchmarks/runner.js +2 -0
- package/dist/benchmarks/runner.js.map +1 -0
- package/dist/benchmarks/tasks.d.ts +19 -0
- package/dist/benchmarks/tasks.d.ts.map +1 -0
- package/dist/benchmarks/tasks.js +371 -0
- package/dist/benchmarks/tasks.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -1
- package/dist/memory/backends/qdrant-cloud.d.ts +1 -1
- package/dist/memory/backends/qdrant-cloud.d.ts.map +1 -1
- package/dist/memory/backends/qdrant-cloud.js +6 -4
- package/dist/memory/backends/qdrant-cloud.js.map +1 -1
- package/dist/memory/context-compressor.d.ts +66 -0
- package/dist/memory/context-compressor.d.ts.map +1 -0
- package/dist/memory/context-compressor.js +250 -0
- package/dist/memory/context-compressor.js.map +1 -0
- package/dist/memory/dynamic-retrieval.d.ts +26 -0
- package/dist/memory/dynamic-retrieval.d.ts.map +1 -0
- package/dist/memory/dynamic-retrieval.js +378 -0
- package/dist/memory/dynamic-retrieval.js.map +1 -0
- package/dist/memory/embeddings.d.ts +93 -0
- package/dist/memory/embeddings.d.ts.map +1 -0
- package/dist/memory/embeddings.js +391 -0
- package/dist/memory/embeddings.js.map +1 -0
- package/dist/memory/hierarchical-memory.d.ts +116 -0
- package/dist/memory/hierarchical-memory.d.ts.map +1 -0
- package/dist/memory/hierarchical-memory.js +299 -0
- package/dist/memory/hierarchical-memory.js.map +1 -0
- package/dist/memory/memory-consolidator.d.ts +88 -0
- package/dist/memory/memory-consolidator.d.ts.map +1 -0
- package/dist/memory/memory-consolidator.js +348 -0
- package/dist/memory/memory-consolidator.js.map +1 -0
- package/dist/memory/speculative-cache.d.ts +89 -0
- package/dist/memory/speculative-cache.d.ts.map +1 -0
- package/dist/memory/speculative-cache.js +259 -0
- package/dist/memory/speculative-cache.js.map +1 -0
- package/dist/memory/task-classifier.d.ts +33 -0
- package/dist/memory/task-classifier.d.ts.map +1 -0
- package/dist/memory/task-classifier.js +277 -0
- package/dist/memory/task-classifier.js.map +1 -0
- package/dist/utils/rate-limiter.d.ts +62 -0
- package/dist/utils/rate-limiter.d.ts.map +1 -0
- package/dist/utils/rate-limiter.js +150 -0
- package/dist/utils/rate-limiter.js.map +1 -0
- package/dist/utils/validate-json.d.ts +52 -0
- package/dist/utils/validate-json.d.ts.map +1 -0
- package/dist/utils/validate-json.js +99 -0
- package/dist/utils/validate-json.js.map +1 -0
- package/package.json +2 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dynamic-retrieval.js","sourceRoot":"","sources":["../../src/memory/dynamic-retrieval.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Embedding Service for UAM Memory System
|
|
3
|
+
*
|
|
4
|
+
* Provides text embedding generation for semantic memory retrieval.
|
|
5
|
+
* Supports multiple backends: OpenAI, local transformers, or simple TF-IDF fallback.
|
|
6
|
+
*/
|
|
7
|
+
export interface EmbeddingProvider {
|
|
8
|
+
name: string;
|
|
9
|
+
dimensions: number;
|
|
10
|
+
embed(text: string): Promise<number[]>;
|
|
11
|
+
embedBatch(texts: string[]): Promise<number[][]>;
|
|
12
|
+
isAvailable(): Promise<boolean>;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* OpenAI Embeddings Provider
|
|
16
|
+
* Uses text-embedding-3-small (1536 dimensions) or text-embedding-ada-002
|
|
17
|
+
*/
|
|
18
|
+
export declare class OpenAIEmbeddingProvider implements EmbeddingProvider {
|
|
19
|
+
name: string;
|
|
20
|
+
dimensions: number;
|
|
21
|
+
private apiKey;
|
|
22
|
+
private model;
|
|
23
|
+
constructor(apiKey?: string, model?: string);
|
|
24
|
+
isAvailable(): Promise<boolean>;
|
|
25
|
+
embed(text: string): Promise<number[]>;
|
|
26
|
+
embedBatch(texts: string[]): Promise<number[][]>;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Local Sentence Transformers Provider
|
|
30
|
+
* Uses Python sentence-transformers library for local embedding generation
|
|
31
|
+
*/
|
|
32
|
+
export declare class LocalEmbeddingProvider implements EmbeddingProvider {
|
|
33
|
+
name: string;
|
|
34
|
+
dimensions: number;
|
|
35
|
+
private model;
|
|
36
|
+
private pythonPath;
|
|
37
|
+
constructor(model?: string, pythonPath?: string);
|
|
38
|
+
isAvailable(): Promise<boolean>;
|
|
39
|
+
embed(text: string): Promise<number[]>;
|
|
40
|
+
embedBatch(texts: string[]): Promise<number[][]>;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Enhanced TF-IDF Fallback Provider with Word Vectors
|
|
44
|
+
* Improved keyword-based embeddings with semantic awareness
|
|
45
|
+
*/
|
|
46
|
+
export declare class TFIDFEmbeddingProvider implements EmbeddingProvider {
|
|
47
|
+
name: string;
|
|
48
|
+
dimensions: number;
|
|
49
|
+
private vocabulary;
|
|
50
|
+
private idfScores;
|
|
51
|
+
private documents;
|
|
52
|
+
private wordVectors;
|
|
53
|
+
constructor();
|
|
54
|
+
isAvailable(): Promise<boolean>;
|
|
55
|
+
embed(text: string): Promise<number[]>;
|
|
56
|
+
embedBatch(texts: string[]): Promise<number[][]>;
|
|
57
|
+
addDocument(text: string): void;
|
|
58
|
+
private tokenize;
|
|
59
|
+
private isStopWord;
|
|
60
|
+
private getBigrams;
|
|
61
|
+
private hashString;
|
|
62
|
+
private getTokenIndex;
|
|
63
|
+
private updateIDF;
|
|
64
|
+
private normalize;
|
|
65
|
+
/**
|
|
66
|
+
* Initialize semantic word clusters for domain-specific terms
|
|
67
|
+
* Words in the same cluster get similar vector contributions
|
|
68
|
+
*/
|
|
69
|
+
private initializeSemanticClusters;
|
|
70
|
+
private generateClusterVector;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Embedding Service - Main interface for UAM memory system
|
|
74
|
+
* Automatically selects best available provider
|
|
75
|
+
*/
|
|
76
|
+
export declare class EmbeddingService {
|
|
77
|
+
private provider;
|
|
78
|
+
private providers;
|
|
79
|
+
private cache;
|
|
80
|
+
private cacheMaxSize;
|
|
81
|
+
constructor();
|
|
82
|
+
initialize(): Promise<void>;
|
|
83
|
+
embed(text: string): Promise<number[]>;
|
|
84
|
+
embedBatch(texts: string[]): Promise<number[][]>;
|
|
85
|
+
cosineSimilarity(a: number[], b: number[]): number;
|
|
86
|
+
getDimensions(): number;
|
|
87
|
+
getProviderName(): string;
|
|
88
|
+
private getCacheKey;
|
|
89
|
+
}
|
|
90
|
+
export declare function getEmbeddingService(): EmbeddingService;
|
|
91
|
+
export declare function generateEmbedding(text: string): Promise<number[]>;
|
|
92
|
+
export declare function generateEmbeddings(texts: string[]): Promise<number[][]>;
|
|
93
|
+
//# sourceMappingURL=embeddings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embeddings.d.ts","sourceRoot":"","sources":["../../src/memory/embeddings.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,391 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Embedding Service for UAM Memory System
|
|
3
|
+
*
|
|
4
|
+
* Provides text embedding generation for semantic memory retrieval.
|
|
5
|
+
* Supports multiple backends: OpenAI, local transformers, or simple TF-IDF fallback.
|
|
6
|
+
*/
|
|
7
|
+
import { execSync } from 'child_process';
|
|
8
|
+
/**
|
|
9
|
+
* OpenAI Embeddings Provider
|
|
10
|
+
* Uses text-embedding-3-small (1536 dimensions) or text-embedding-ada-002
|
|
11
|
+
*/
|
|
12
|
+
export class OpenAIEmbeddingProvider {
|
|
13
|
+
name = 'openai';
|
|
14
|
+
dimensions = 1536;
|
|
15
|
+
apiKey;
|
|
16
|
+
model;
|
|
17
|
+
constructor(apiKey, model = 'text-embedding-3-small') {
|
|
18
|
+
this.apiKey = apiKey || process.env.OPENAI_API_KEY || '';
|
|
19
|
+
this.model = model;
|
|
20
|
+
}
|
|
21
|
+
async isAvailable() {
|
|
22
|
+
return !!this.apiKey;
|
|
23
|
+
}
|
|
24
|
+
async embed(text) {
|
|
25
|
+
const results = await this.embedBatch([text]);
|
|
26
|
+
return results[0];
|
|
27
|
+
}
|
|
28
|
+
async embedBatch(texts) {
|
|
29
|
+
if (!this.apiKey) {
|
|
30
|
+
throw new Error('OpenAI API key not configured');
|
|
31
|
+
}
|
|
32
|
+
const response = await fetch('https://api.openai.com/v1/embeddings', {
|
|
33
|
+
method: 'POST',
|
|
34
|
+
headers: {
|
|
35
|
+
'Authorization': `Bearer ${this.apiKey}`,
|
|
36
|
+
'Content-Type': 'application/json',
|
|
37
|
+
},
|
|
38
|
+
body: JSON.stringify({
|
|
39
|
+
model: this.model,
|
|
40
|
+
input: texts,
|
|
41
|
+
}),
|
|
42
|
+
});
|
|
43
|
+
if (!response.ok) {
|
|
44
|
+
throw new Error(`OpenAI API error: ${response.status} ${response.statusText}`);
|
|
45
|
+
}
|
|
46
|
+
const data = await response.json();
|
|
47
|
+
return data.data.map(d => d.embedding);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Local Sentence Transformers Provider
|
|
52
|
+
* Uses Python sentence-transformers library for local embedding generation
|
|
53
|
+
*/
|
|
54
|
+
export class LocalEmbeddingProvider {
|
|
55
|
+
name = 'local';
|
|
56
|
+
dimensions = 384;
|
|
57
|
+
model;
|
|
58
|
+
pythonPath;
|
|
59
|
+
constructor(model = 'all-MiniLM-L6-v2', pythonPath = 'python3') {
|
|
60
|
+
this.model = model;
|
|
61
|
+
this.pythonPath = pythonPath;
|
|
62
|
+
}
|
|
63
|
+
async isAvailable() {
|
|
64
|
+
try {
|
|
65
|
+
execSync(`${this.pythonPath} -c "from sentence_transformers import SentenceTransformer"`, {
|
|
66
|
+
stdio: 'pipe',
|
|
67
|
+
timeout: 10000,
|
|
68
|
+
});
|
|
69
|
+
return true;
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
return false;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
async embed(text) {
|
|
76
|
+
const results = await this.embedBatch([text]);
|
|
77
|
+
return results[0];
|
|
78
|
+
}
|
|
79
|
+
async embedBatch(texts) {
|
|
80
|
+
const escapedTexts = JSON.stringify(texts);
|
|
81
|
+
const script = `
|
|
82
|
+
import json
|
|
83
|
+
import sys
|
|
84
|
+
from sentence_transformers import SentenceTransformer
|
|
85
|
+
|
|
86
|
+
model = SentenceTransformer('${this.model}')
|
|
87
|
+
texts = json.loads('''${escapedTexts}''')
|
|
88
|
+
embeddings = model.encode(texts, convert_to_numpy=True)
|
|
89
|
+
print(json.dumps(embeddings.tolist()))
|
|
90
|
+
`;
|
|
91
|
+
try {
|
|
92
|
+
const result = execSync(`${this.pythonPath} -c "${script.replace(/"/g, '\\"')}"`, {
|
|
93
|
+
encoding: 'utf-8',
|
|
94
|
+
timeout: 60000,
|
|
95
|
+
maxBuffer: 50 * 1024 * 1024,
|
|
96
|
+
});
|
|
97
|
+
return JSON.parse(result.trim());
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
throw new Error(`Local embedding generation failed: ${error}`);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Enhanced TF-IDF Fallback Provider with Word Vectors
|
|
106
|
+
* Improved keyword-based embeddings with semantic awareness
|
|
107
|
+
*/
|
|
108
|
+
export class TFIDFEmbeddingProvider {
|
|
109
|
+
name = 'tfidf-enhanced';
|
|
110
|
+
dimensions = 384;
|
|
111
|
+
vocabulary = new Map();
|
|
112
|
+
idfScores = new Map();
|
|
113
|
+
documents = [];
|
|
114
|
+
wordVectors = new Map();
|
|
115
|
+
constructor() {
|
|
116
|
+
// Initialize semantic word clusters for better similarity
|
|
117
|
+
this.initializeSemanticClusters();
|
|
118
|
+
}
|
|
119
|
+
async isAvailable() {
|
|
120
|
+
return true; // Always available as fallback
|
|
121
|
+
}
|
|
122
|
+
async embed(text) {
|
|
123
|
+
const tokens = this.tokenize(text);
|
|
124
|
+
const vector = new Array(this.dimensions).fill(0);
|
|
125
|
+
// Combine TF-IDF with semantic clustering
|
|
126
|
+
for (const token of tokens) {
|
|
127
|
+
const idx = this.getTokenIndex(token);
|
|
128
|
+
const tf = tokens.filter(t => t === token).length / tokens.length;
|
|
129
|
+
const idf = this.idfScores.get(token) || Math.log(this.documents.length + 2);
|
|
130
|
+
// Base TF-IDF contribution
|
|
131
|
+
vector[idx % this.dimensions] += tf * idf;
|
|
132
|
+
// Add semantic cluster contribution
|
|
133
|
+
const wordVec = this.wordVectors.get(token);
|
|
134
|
+
if (wordVec) {
|
|
135
|
+
for (let i = 0; i < wordVec.length; i++) {
|
|
136
|
+
vector[i] += wordVec[i] * tf * 0.3; // Weighted semantic contribution
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
// Add n-gram features for better phrase matching
|
|
141
|
+
const bigrams = this.getBigrams(tokens);
|
|
142
|
+
for (const bigram of bigrams) {
|
|
143
|
+
const idx = this.hashString(bigram) % this.dimensions;
|
|
144
|
+
vector[idx] += 0.5;
|
|
145
|
+
}
|
|
146
|
+
return this.normalize(vector);
|
|
147
|
+
}
|
|
148
|
+
async embedBatch(texts) {
|
|
149
|
+
// Update IDF scores with new documents
|
|
150
|
+
this.updateIDF(texts);
|
|
151
|
+
return Promise.all(texts.map(t => this.embed(t)));
|
|
152
|
+
}
|
|
153
|
+
addDocument(text) {
|
|
154
|
+
this.documents.push(text);
|
|
155
|
+
this.updateIDF([text]);
|
|
156
|
+
}
|
|
157
|
+
tokenize(text) {
|
|
158
|
+
// Enhanced tokenization that handles code better
|
|
159
|
+
return text.toLowerCase()
|
|
160
|
+
.replace(/([a-z])([A-Z])/g, '$1 $2') // Split camelCase
|
|
161
|
+
.replace(/_/g, ' ') // Split snake_case
|
|
162
|
+
.replace(/[^\w\s-]/g, ' ')
|
|
163
|
+
.split(/\s+/)
|
|
164
|
+
.filter(t => t.length > 1 && !this.isStopWord(t));
|
|
165
|
+
}
|
|
166
|
+
isStopWord(token) {
|
|
167
|
+
const stopWords = new Set([
|
|
168
|
+
'the', 'a', 'an', 'is', 'are', 'was', 'were', 'be', 'been',
|
|
169
|
+
'being', 'have', 'has', 'had', 'do', 'does', 'did', 'will',
|
|
170
|
+
'would', 'could', 'should', 'may', 'might', 'must', 'shall',
|
|
171
|
+
'can', 'need', 'dare', 'ought', 'used', 'to', 'of', 'in',
|
|
172
|
+
'for', 'on', 'with', 'at', 'by', 'from', 'as', 'into',
|
|
173
|
+
'through', 'during', 'before', 'after', 'above', 'below',
|
|
174
|
+
'between', 'under', 'again', 'further', 'then', 'once',
|
|
175
|
+
'here', 'there', 'when', 'where', 'why', 'how', 'all',
|
|
176
|
+
'each', 'few', 'more', 'most', 'other', 'some', 'such',
|
|
177
|
+
'no', 'nor', 'not', 'only', 'own', 'same', 'so', 'than',
|
|
178
|
+
'too', 'very', 'just', 'and', 'but', 'if', 'or', 'because',
|
|
179
|
+
'until', 'while', 'this', 'that', 'these', 'those', 'it',
|
|
180
|
+
]);
|
|
181
|
+
return stopWords.has(token);
|
|
182
|
+
}
|
|
183
|
+
getBigrams(tokens) {
|
|
184
|
+
const bigrams = [];
|
|
185
|
+
for (let i = 0; i < tokens.length - 1; i++) {
|
|
186
|
+
bigrams.push(`${tokens[i]}_${tokens[i + 1]}`);
|
|
187
|
+
}
|
|
188
|
+
return bigrams;
|
|
189
|
+
}
|
|
190
|
+
hashString(str) {
|
|
191
|
+
let hash = 0;
|
|
192
|
+
for (let i = 0; i < str.length; i++) {
|
|
193
|
+
const char = str.charCodeAt(i);
|
|
194
|
+
hash = ((hash << 5) - hash) + char;
|
|
195
|
+
hash = hash & hash;
|
|
196
|
+
}
|
|
197
|
+
return Math.abs(hash);
|
|
198
|
+
}
|
|
199
|
+
getTokenIndex(token) {
|
|
200
|
+
if (!this.vocabulary.has(token)) {
|
|
201
|
+
this.vocabulary.set(token, this.vocabulary.size);
|
|
202
|
+
}
|
|
203
|
+
return this.vocabulary.get(token);
|
|
204
|
+
}
|
|
205
|
+
updateIDF(_newDocs) {
|
|
206
|
+
const tokenDocs = new Map();
|
|
207
|
+
for (let i = 0; i < this.documents.length; i++) {
|
|
208
|
+
const tokens = new Set(this.tokenize(this.documents[i]));
|
|
209
|
+
for (const token of tokens) {
|
|
210
|
+
if (!tokenDocs.has(token)) {
|
|
211
|
+
tokenDocs.set(token, new Set());
|
|
212
|
+
}
|
|
213
|
+
tokenDocs.get(token).add(i);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
for (const [token, docs] of tokenDocs) {
|
|
217
|
+
this.idfScores.set(token, Math.log((this.documents.length + 1) / (docs.size + 1)) + 1);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
normalize(vector) {
|
|
221
|
+
const magnitude = Math.sqrt(vector.reduce((sum, v) => sum + v * v, 0));
|
|
222
|
+
if (magnitude === 0)
|
|
223
|
+
return vector;
|
|
224
|
+
return vector.map(v => v / magnitude);
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Initialize semantic word clusters for domain-specific terms
|
|
228
|
+
* Words in the same cluster get similar vector contributions
|
|
229
|
+
*/
|
|
230
|
+
initializeSemanticClusters() {
|
|
231
|
+
const clusters = {
|
|
232
|
+
// Programming concepts
|
|
233
|
+
programming: ['code', 'function', 'class', 'method', 'variable', 'const', 'let', 'var', 'import', 'export', 'async', 'await', 'promise', 'callback'],
|
|
234
|
+
types: ['type', 'interface', 'enum', 'string', 'number', 'boolean', 'array', 'object', 'null', 'undefined'],
|
|
235
|
+
errors: ['error', 'exception', 'throw', 'catch', 'try', 'finally', 'bug', 'fix', 'debug', 'trace', 'stack'],
|
|
236
|
+
testing: ['test', 'spec', 'describe', 'it', 'expect', 'assert', 'mock', 'stub', 'spy', 'coverage'],
|
|
237
|
+
git: ['git', 'commit', 'push', 'pull', 'merge', 'branch', 'checkout', 'rebase', 'stash', 'diff'],
|
|
238
|
+
memory: ['memory', 'cache', 'store', 'retrieve', 'query', 'embed', 'vector', 'semantic', 'context'],
|
|
239
|
+
security: ['security', 'auth', 'token', 'secret', 'password', 'encrypt', 'decrypt', 'hash', 'salt'],
|
|
240
|
+
performance: ['performance', 'optimize', 'fast', 'slow', 'latency', 'throughput', 'cache', 'batch'],
|
|
241
|
+
database: ['database', 'sql', 'query', 'table', 'index', 'schema', 'migration', 'insert', 'update', 'delete'],
|
|
242
|
+
network: ['network', 'http', 'api', 'request', 'response', 'endpoint', 'url', 'fetch', 'axios'],
|
|
243
|
+
};
|
|
244
|
+
// Generate pseudo-random but consistent vectors for each cluster
|
|
245
|
+
for (const [clusterName, words] of Object.entries(clusters)) {
|
|
246
|
+
const clusterVector = this.generateClusterVector(clusterName);
|
|
247
|
+
for (const word of words) {
|
|
248
|
+
// Add slight variation for each word
|
|
249
|
+
const wordVector = clusterVector.map((v, i) => v + (this.hashString(word + i.toString()) % 100 - 50) / 500);
|
|
250
|
+
this.wordVectors.set(word, wordVector);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
generateClusterVector(seed) {
|
|
255
|
+
const vector = new Array(this.dimensions).fill(0);
|
|
256
|
+
const hash = this.hashString(seed);
|
|
257
|
+
// Create sparse activation pattern for this cluster
|
|
258
|
+
for (let i = 0; i < 20; i++) {
|
|
259
|
+
const idx = (hash + i * 17) % this.dimensions;
|
|
260
|
+
vector[idx] = ((hash + i) % 100) / 100;
|
|
261
|
+
}
|
|
262
|
+
return vector;
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Embedding Service - Main interface for UAM memory system
|
|
267
|
+
* Automatically selects best available provider
|
|
268
|
+
*/
|
|
269
|
+
export class EmbeddingService {
|
|
270
|
+
provider = null;
|
|
271
|
+
providers;
|
|
272
|
+
cache = new Map();
|
|
273
|
+
cacheMaxSize = 10000;
|
|
274
|
+
constructor() {
|
|
275
|
+
this.providers = [
|
|
276
|
+
new OpenAIEmbeddingProvider(),
|
|
277
|
+
new LocalEmbeddingProvider(),
|
|
278
|
+
new TFIDFEmbeddingProvider(),
|
|
279
|
+
];
|
|
280
|
+
}
|
|
281
|
+
async initialize() {
|
|
282
|
+
for (const provider of this.providers) {
|
|
283
|
+
if (await provider.isAvailable()) {
|
|
284
|
+
this.provider = provider;
|
|
285
|
+
console.log(`[EmbeddingService] Using provider: ${provider.name} (${provider.dimensions} dims)`);
|
|
286
|
+
return;
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
// Fallback to TF-IDF which is always available
|
|
290
|
+
this.provider = this.providers[this.providers.length - 1];
|
|
291
|
+
console.log(`[EmbeddingService] Fallback to TF-IDF provider`);
|
|
292
|
+
}
|
|
293
|
+
async embed(text) {
|
|
294
|
+
if (!this.provider) {
|
|
295
|
+
await this.initialize();
|
|
296
|
+
}
|
|
297
|
+
// Check cache
|
|
298
|
+
const cacheKey = this.getCacheKey(text);
|
|
299
|
+
if (this.cache.has(cacheKey)) {
|
|
300
|
+
return this.cache.get(cacheKey);
|
|
301
|
+
}
|
|
302
|
+
const embedding = await this.provider.embed(text);
|
|
303
|
+
// Update cache
|
|
304
|
+
if (this.cache.size >= this.cacheMaxSize) {
|
|
305
|
+
// Remove oldest entry
|
|
306
|
+
const firstKey = this.cache.keys().next().value;
|
|
307
|
+
if (firstKey !== undefined) {
|
|
308
|
+
this.cache.delete(firstKey);
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
this.cache.set(cacheKey, embedding);
|
|
312
|
+
return embedding;
|
|
313
|
+
}
|
|
314
|
+
async embedBatch(texts) {
|
|
315
|
+
if (!this.provider) {
|
|
316
|
+
await this.initialize();
|
|
317
|
+
}
|
|
318
|
+
const results = [];
|
|
319
|
+
const uncachedTexts = [];
|
|
320
|
+
const uncachedIndices = [];
|
|
321
|
+
// Check cache for each text
|
|
322
|
+
for (let i = 0; i < texts.length; i++) {
|
|
323
|
+
const cacheKey = this.getCacheKey(texts[i]);
|
|
324
|
+
if (this.cache.has(cacheKey)) {
|
|
325
|
+
results[i] = this.cache.get(cacheKey);
|
|
326
|
+
}
|
|
327
|
+
else {
|
|
328
|
+
uncachedTexts.push(texts[i]);
|
|
329
|
+
uncachedIndices.push(i);
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
// Generate embeddings for uncached texts
|
|
333
|
+
if (uncachedTexts.length > 0) {
|
|
334
|
+
const newEmbeddings = await this.provider.embedBatch(uncachedTexts);
|
|
335
|
+
for (let i = 0; i < uncachedTexts.length; i++) {
|
|
336
|
+
const idx = uncachedIndices[i];
|
|
337
|
+
results[idx] = newEmbeddings[i];
|
|
338
|
+
// Update cache
|
|
339
|
+
const cacheKey = this.getCacheKey(uncachedTexts[i]);
|
|
340
|
+
if (this.cache.size < this.cacheMaxSize) {
|
|
341
|
+
this.cache.set(cacheKey, newEmbeddings[i]);
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
return results;
|
|
346
|
+
}
|
|
347
|
+
cosineSimilarity(a, b) {
|
|
348
|
+
if (a.length !== b.length) {
|
|
349
|
+
throw new Error('Vectors must have same dimensions');
|
|
350
|
+
}
|
|
351
|
+
let dotProduct = 0;
|
|
352
|
+
let normA = 0;
|
|
353
|
+
let normB = 0;
|
|
354
|
+
for (let i = 0; i < a.length; i++) {
|
|
355
|
+
dotProduct += a[i] * b[i];
|
|
356
|
+
normA += a[i] * a[i];
|
|
357
|
+
normB += b[i] * b[i];
|
|
358
|
+
}
|
|
359
|
+
const denominator = Math.sqrt(normA) * Math.sqrt(normB);
|
|
360
|
+
if (denominator === 0)
|
|
361
|
+
return 0;
|
|
362
|
+
return dotProduct / denominator;
|
|
363
|
+
}
|
|
364
|
+
getDimensions() {
|
|
365
|
+
return this.provider?.dimensions || 384;
|
|
366
|
+
}
|
|
367
|
+
getProviderName() {
|
|
368
|
+
return this.provider?.name || 'uninitialized';
|
|
369
|
+
}
|
|
370
|
+
getCacheKey(text) {
|
|
371
|
+
// Simple hash for cache key
|
|
372
|
+
return text.slice(0, 500).toLowerCase().trim();
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
// Singleton instance
|
|
376
|
+
let embeddingServiceInstance = null;
|
|
377
|
+
export function getEmbeddingService() {
|
|
378
|
+
if (!embeddingServiceInstance) {
|
|
379
|
+
embeddingServiceInstance = new EmbeddingService();
|
|
380
|
+
}
|
|
381
|
+
return embeddingServiceInstance;
|
|
382
|
+
}
|
|
383
|
+
export async function generateEmbedding(text) {
|
|
384
|
+
const service = getEmbeddingService();
|
|
385
|
+
return service.embed(text);
|
|
386
|
+
}
|
|
387
|
+
export async function generateEmbeddings(texts) {
|
|
388
|
+
const service = getEmbeddingService();
|
|
389
|
+
return service.embedBatch(texts);
|
|
390
|
+
}
|
|
391
|
+
//# sourceMappingURL=embeddings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embeddings.js","sourceRoot":"","sources":["../../src/memory/embeddings.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hierarchical Memory System for UAM
|
|
3
|
+
*
|
|
4
|
+
* Implements hot/warm/cold memory tiering with automatic promotion/demotion.
|
|
5
|
+
* Based on MemGPT and R³Mem research for efficient memory management.
|
|
6
|
+
*/
|
|
7
|
+
export interface MemoryEntry {
|
|
8
|
+
id: string;
|
|
9
|
+
content: string;
|
|
10
|
+
type: 'action' | 'observation' | 'thought' | 'goal';
|
|
11
|
+
timestamp: string;
|
|
12
|
+
importance: number;
|
|
13
|
+
accessCount: number;
|
|
14
|
+
lastAccessed: string;
|
|
15
|
+
embedding?: number[];
|
|
16
|
+
compressed?: string;
|
|
17
|
+
tier?: 'hot' | 'warm' | 'cold';
|
|
18
|
+
}
|
|
19
|
+
export interface TieredMemory {
|
|
20
|
+
hot: MemoryEntry[];
|
|
21
|
+
warm: MemoryEntry[];
|
|
22
|
+
cold: MemoryEntry[];
|
|
23
|
+
}
|
|
24
|
+
export interface HierarchicalConfig {
|
|
25
|
+
hotMaxEntries: number;
|
|
26
|
+
warmMaxEntries: number;
|
|
27
|
+
coldMaxEntries: number;
|
|
28
|
+
hotMaxTokens: number;
|
|
29
|
+
decayRate: number;
|
|
30
|
+
promotionThreshold: number;
|
|
31
|
+
demotionThreshold: number;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Calculate effective importance with time decay
|
|
35
|
+
* Formula: effective_importance = importance × (decayRate ^ days_since_access)
|
|
36
|
+
*/
|
|
37
|
+
export declare function calculateEffectiveImportance(entry: MemoryEntry, decayRate?: number): number;
|
|
38
|
+
/**
|
|
39
|
+
* Hierarchical Memory Manager
|
|
40
|
+
*/
|
|
41
|
+
export declare class HierarchicalMemoryManager {
|
|
42
|
+
private config;
|
|
43
|
+
private memory;
|
|
44
|
+
private accessLog;
|
|
45
|
+
constructor(config?: Partial<HierarchicalConfig>);
|
|
46
|
+
/**
|
|
47
|
+
* Add a new memory entry
|
|
48
|
+
*/
|
|
49
|
+
add(entry: Omit<MemoryEntry, 'accessCount' | 'lastAccessed' | 'tier'>): void;
|
|
50
|
+
/**
|
|
51
|
+
* Access a memory (promote if accessed frequently)
|
|
52
|
+
*/
|
|
53
|
+
access(id: string): MemoryEntry | null;
|
|
54
|
+
/**
|
|
55
|
+
* Query memories with automatic tier traversal
|
|
56
|
+
*/
|
|
57
|
+
query(queryText: string, limit?: number): Promise<MemoryEntry[]>;
|
|
58
|
+
/**
|
|
59
|
+
* Get hot tier context (for inclusion in prompts)
|
|
60
|
+
*/
|
|
61
|
+
getHotContext(): {
|
|
62
|
+
entries: MemoryEntry[];
|
|
63
|
+
tokens: number;
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* Consolidate old memories into summaries
|
|
67
|
+
*/
|
|
68
|
+
consolidate(): Promise<void>;
|
|
69
|
+
/**
|
|
70
|
+
* Rebalance tiers based on importance and access patterns
|
|
71
|
+
*/
|
|
72
|
+
private rebalance;
|
|
73
|
+
/**
|
|
74
|
+
* Check and promote entry if accessed frequently
|
|
75
|
+
*/
|
|
76
|
+
private checkPromotion;
|
|
77
|
+
/**
|
|
78
|
+
* Find entry across all tiers
|
|
79
|
+
*/
|
|
80
|
+
private findEntry;
|
|
81
|
+
/**
|
|
82
|
+
* Simple text similarity (Jaccard on words)
|
|
83
|
+
*/
|
|
84
|
+
private textSimilarity;
|
|
85
|
+
/**
|
|
86
|
+
* Get stats about memory usage
|
|
87
|
+
*/
|
|
88
|
+
getStats(): {
|
|
89
|
+
hot: {
|
|
90
|
+
count: number;
|
|
91
|
+
tokens: number;
|
|
92
|
+
};
|
|
93
|
+
warm: {
|
|
94
|
+
count: number;
|
|
95
|
+
tokens: number;
|
|
96
|
+
};
|
|
97
|
+
cold: {
|
|
98
|
+
count: number;
|
|
99
|
+
tokens: number;
|
|
100
|
+
};
|
|
101
|
+
total: {
|
|
102
|
+
count: number;
|
|
103
|
+
tokens: number;
|
|
104
|
+
};
|
|
105
|
+
};
|
|
106
|
+
/**
|
|
107
|
+
* Export all memories (for persistence)
|
|
108
|
+
*/
|
|
109
|
+
export(): TieredMemory;
|
|
110
|
+
/**
|
|
111
|
+
* Import memories (for initialization)
|
|
112
|
+
*/
|
|
113
|
+
import(data: TieredMemory): void;
|
|
114
|
+
}
|
|
115
|
+
export declare function getHierarchicalMemoryManager(config?: Partial<HierarchicalConfig>): HierarchicalMemoryManager;
|
|
116
|
+
//# sourceMappingURL=hierarchical-memory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hierarchical-memory.d.ts","sourceRoot":"","sources":["../../src/memory/hierarchical-memory.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,QAAQ,GAAG,aAAa,GAAG,SAAS,GAAG,MAAM,CAAC;IACpD,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,WAAW,EAAE,CAAC;IACnB,IAAI,EAAE,WAAW,EAAE,CAAC;IACpB,IAAI,EAAE,WAAW,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAYD;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,WAAW,EAClB,SAAS,GAAE,MAAa,GACvB,MAAM,CAMR;AAED;;GAEG;AACH,qBAAa,yBAAyB;IACpC,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,SAAS,CAAoC;gBAEzC,MAAM,GAAE,OAAO,CAAC,kBAAkB,CAAM;IAKpD;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,aAAa,GAAG,cAAc,GAAG,MAAM,CAAC,GAAG,IAAI;IAgB5E;;OAEG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAoBtC;;OAEG;IACG,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAyDzE;;OAEG;IACH,aAAa,IAAI;QAAE,OAAO,EAAE,WAAW,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IAe3D;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAsClC;;OAEG;IACH,OAAO,CAAC,SAAS;IA4CjB;;OAEG;IACH,OAAO,CAAC,cAAc;IA0BtB;;OAEG;IACH,OAAO,CAAC,SAAS;IAQjB;;OAEG;IACH,OAAO,CAAC,cAAc;IAUtB;;OAEG;IACH,QAAQ,IAAI;QACV,GAAG,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;QACvC,IAAI,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;QACxC,IAAI,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;QACxC,KAAK,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;KAC1C;IAgBD;;OAEG;IACH,MAAM,IAAI,YAAY;IAItB;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;CAGjC;AAKD,wBAAgB,4BAA4B,CAC1C,MAAM,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,GACnC,yBAAyB,CAK3B"}
|