universal-agent-memory 0.6.3 → 0.7.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.
Files changed (51) hide show
  1. package/dist/benchmarks/benchmark.d.ts +12 -12
  2. package/dist/benchmarks/execution-verifier.d.ts.map +1 -1
  3. package/dist/benchmarks/execution-verifier.js +51 -10
  4. package/dist/benchmarks/execution-verifier.js.map +1 -1
  5. package/dist/bin/cli.js +4 -1
  6. package/dist/bin/cli.js.map +1 -1
  7. package/dist/cli/update.d.ts +3 -0
  8. package/dist/cli/update.d.ts.map +1 -1
  9. package/dist/cli/update.js +136 -11
  10. package/dist/cli/update.js.map +1 -1
  11. package/dist/index.d.ts +17 -2
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +16 -1
  14. package/dist/index.js.map +1 -1
  15. package/dist/memory/backends/qdrant-cloud.d.ts +12 -1
  16. package/dist/memory/backends/qdrant-cloud.d.ts.map +1 -1
  17. package/dist/memory/backends/qdrant-cloud.js +39 -3
  18. package/dist/memory/backends/qdrant-cloud.js.map +1 -1
  19. package/dist/memory/context-compressor.d.ts +66 -0
  20. package/dist/memory/context-compressor.d.ts.map +1 -0
  21. package/dist/memory/context-compressor.js +250 -0
  22. package/dist/memory/context-compressor.js.map +1 -0
  23. package/dist/memory/dynamic-retrieval.d.ts +62 -1
  24. package/dist/memory/dynamic-retrieval.d.ts.map +1 -1
  25. package/dist/memory/dynamic-retrieval.js +154 -32
  26. package/dist/memory/dynamic-retrieval.js.map +1 -1
  27. package/dist/memory/embeddings.d.ts +38 -4
  28. package/dist/memory/embeddings.d.ts.map +1 -1
  29. package/dist/memory/embeddings.js +173 -9
  30. package/dist/memory/embeddings.js.map +1 -1
  31. package/dist/memory/hierarchical-memory.d.ts +116 -0
  32. package/dist/memory/hierarchical-memory.d.ts.map +1 -0
  33. package/dist/memory/hierarchical-memory.js +299 -0
  34. package/dist/memory/hierarchical-memory.js.map +1 -0
  35. package/dist/memory/memory-consolidator.d.ts +124 -0
  36. package/dist/memory/memory-consolidator.d.ts.map +1 -0
  37. package/dist/memory/memory-consolidator.js +514 -0
  38. package/dist/memory/memory-consolidator.js.map +1 -0
  39. package/dist/memory/multi-view-memory.d.ts +134 -0
  40. package/dist/memory/multi-view-memory.d.ts.map +1 -0
  41. package/dist/memory/multi-view-memory.js +420 -0
  42. package/dist/memory/multi-view-memory.js.map +1 -0
  43. package/dist/memory/semantic-compression.d.ts +77 -0
  44. package/dist/memory/semantic-compression.d.ts.map +1 -0
  45. package/dist/memory/semantic-compression.js +344 -0
  46. package/dist/memory/semantic-compression.js.map +1 -0
  47. package/dist/memory/speculative-cache.d.ts +92 -0
  48. package/dist/memory/speculative-cache.d.ts.map +1 -0
  49. package/dist/memory/speculative-cache.js +261 -0
  50. package/dist/memory/speculative-cache.js.map +1 -0
  51. package/package.json +1 -1
@@ -3,14 +3,17 @@ import { getEmbeddingService } from '../embeddings.js';
3
3
  export class QdrantCloudBackend {
4
4
  client;
5
5
  collection;
6
+ vectorSize;
7
+ collectionVerified = false;
6
8
  constructor(config) {
7
9
  const apiKey = config.apiKey || process.env.QDRANT_API_KEY;
8
10
  const url = config.url || process.env.QDRANT_URL;
9
- if (!url || !apiKey) {
10
- throw new Error('Qdrant Cloud URL and API key required (QDRANT_URL and QDRANT_API_KEY env vars or config)');
11
+ if (!url) {
12
+ throw new Error('Qdrant URL required (QDRANT_URL env var or config)');
11
13
  }
12
14
  this.client = new QdrantClient({ url, apiKey });
13
15
  this.collection = config.collection;
16
+ this.vectorSize = config.vectorSize || 768; // Default to Ollama's nomic-embed-text size
14
17
  }
15
18
  async isConfigured() {
16
19
  try {
@@ -101,13 +104,46 @@ export class QdrantCloudBackend {
101
104
  return ids.length;
102
105
  }
103
106
  async ensureCollection() {
107
+ if (this.collectionVerified)
108
+ return;
104
109
  const collections = await this.client.getCollections();
105
110
  const exists = collections.collections.some((c) => c.name === this.collection);
106
111
  if (!exists) {
112
+ // Create collection with correct vector size
107
113
  await this.client.createCollection(this.collection, {
108
- vectors: { size: 384, distance: 'Cosine' },
114
+ vectors: { size: this.vectorSize, distance: 'Cosine' },
109
115
  });
116
+ this.collectionVerified = true;
117
+ return;
110
118
  }
119
+ // Check if existing collection has correct dimensions
120
+ const collectionInfo = await this.client.getCollection(this.collection);
121
+ const currentSize = collectionInfo.config?.params?.vectors?.size;
122
+ if (currentSize && currentSize !== this.vectorSize) {
123
+ // Create new collection with correct dimensions (append suffix)
124
+ const newCollectionName = `${this.collection}_v${this.vectorSize}`;
125
+ const newExists = collections.collections.some((c) => c.name === newCollectionName);
126
+ if (!newExists) {
127
+ await this.client.createCollection(newCollectionName, {
128
+ vectors: { size: this.vectorSize, distance: 'Cosine' },
129
+ });
130
+ console.log(`[Qdrant] Created new collection ${newCollectionName} with ${this.vectorSize} dimensions`);
131
+ }
132
+ this.collection = newCollectionName;
133
+ }
134
+ this.collectionVerified = true;
135
+ }
136
+ /**
137
+ * Get the actual collection name being used (may differ from config if dimension mismatch)
138
+ */
139
+ getCollectionName() {
140
+ return this.collection;
141
+ }
142
+ /**
143
+ * Get vector dimensions
144
+ */
145
+ getVectorSize() {
146
+ return this.vectorSize;
111
147
  }
112
148
  }
113
149
  //# sourceMappingURL=qdrant-cloud.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"qdrant-cloud.js","sourceRoot":"","sources":["../../../src/memory/backends/qdrant-cloud.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"qdrant-cloud.js","sourceRoot":"","sources":["../../../src/memory/backends/qdrant-cloud.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Context Compression Module for UAM
3
+ *
4
+ * Implements semantic compression to reduce token usage while preserving meaning.
5
+ * Based on Acon (Agent Context Optimization) and AgentCompress research.
6
+ */
7
+ export interface CompressionResult {
8
+ original: string;
9
+ compressed: string;
10
+ originalTokens: number;
11
+ compressedTokens: number;
12
+ tokenReduction: number;
13
+ preservedSemantics: number;
14
+ }
15
+ export interface CompressorConfig {
16
+ maxTokens: number;
17
+ minSemanticPreservation: number;
18
+ compressionLevel: 'light' | 'medium' | 'aggressive';
19
+ }
20
+ /**
21
+ * Estimate token count (rough approximation: ~4 chars per token)
22
+ */
23
+ export declare function estimateTokens(text: string): number;
24
+ /**
25
+ * Compress a single memory entry
26
+ */
27
+ export declare function compressMemoryEntry(content: string, config?: Partial<CompressorConfig>): CompressionResult;
28
+ /**
29
+ * Compress multiple memories into a consolidated context
30
+ */
31
+ export declare function compressMemoryBatch(memories: Array<{
32
+ content: string;
33
+ type: string;
34
+ importance?: number;
35
+ }>, config?: Partial<CompressorConfig>): CompressionResult;
36
+ /**
37
+ * Summarize old memories into a single compressed entry
38
+ */
39
+ export declare function summarizeMemories(memories: Array<{
40
+ content: string;
41
+ timestamp: string;
42
+ type: string;
43
+ }>, maxOutputTokens?: number): string;
44
+ /**
45
+ * Context budget manager
46
+ */
47
+ export declare class ContextBudget {
48
+ private maxTokens;
49
+ private usedTokens;
50
+ private sections;
51
+ constructor(maxTokens?: number);
52
+ allocate(section: string, content: string): {
53
+ content: string;
54
+ tokens: number;
55
+ truncated: boolean;
56
+ };
57
+ remaining(): number;
58
+ usage(): {
59
+ total: number;
60
+ used: number;
61
+ remaining: number;
62
+ sections: Record<string, number>;
63
+ };
64
+ reset(): void;
65
+ }
66
+ //# sourceMappingURL=context-compressor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-compressor.d.ts","sourceRoot":"","sources":["../../src/memory/context-compressor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,uBAAuB,EAAE,MAAM,CAAC;IAChC,gBAAgB,EAAE,OAAO,GAAG,QAAQ,GAAG,YAAY,CAAC;CACrD;AAQD;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,GAAE,OAAO,CAAC,gBAAgB,CAAM,GAAG,iBAAiB,CAqE9G;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,KAAK,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,EACvE,MAAM,GAAE,OAAO,CAAC,gBAAgB,CAAM,GACrC,iBAAiB,CA+CnB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,KAAK,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,EACrE,eAAe,GAAE,MAAY,GAC5B,MAAM,CAoCR;AAgED;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,QAAQ,CAAkC;gBAEtC,SAAS,GAAE,MAAc;IAIrC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE;IAsBnG,SAAS,IAAI,MAAM;IAInB,KAAK,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE;IAS7F,KAAK,IAAI,IAAI;CAId"}
@@ -0,0 +1,250 @@
1
+ /**
2
+ * Context Compression Module for UAM
3
+ *
4
+ * Implements semantic compression to reduce token usage while preserving meaning.
5
+ * Based on Acon (Agent Context Optimization) and AgentCompress research.
6
+ */
7
+ const DEFAULT_CONFIG = {
8
+ maxTokens: 2000,
9
+ minSemanticPreservation: 0.85,
10
+ compressionLevel: 'medium',
11
+ };
12
+ /**
13
+ * Estimate token count (rough approximation: ~4 chars per token)
14
+ */
15
+ export function estimateTokens(text) {
16
+ return Math.ceil(text.length / 4);
17
+ }
18
+ /**
19
+ * Compress a single memory entry
20
+ */
21
+ export function compressMemoryEntry(content, config = {}) {
22
+ const cfg = { ...DEFAULT_CONFIG, ...config };
23
+ const originalTokens = estimateTokens(content);
24
+ if (originalTokens <= cfg.maxTokens / 4) {
25
+ return {
26
+ original: content,
27
+ compressed: content,
28
+ originalTokens,
29
+ compressedTokens: originalTokens,
30
+ tokenReduction: 0,
31
+ preservedSemantics: 1.0,
32
+ };
33
+ }
34
+ let compressed = content;
35
+ // Level 1: Remove redundant whitespace and formatting
36
+ compressed = compressed.replace(/\s+/g, ' ').trim();
37
+ compressed = compressed.replace(/\n{3,}/g, '\n\n');
38
+ // Level 2: Remove common filler phrases
39
+ if (cfg.compressionLevel !== 'light') {
40
+ const fillerPatterns = [
41
+ /\b(basically|essentially|actually|really|very|quite|somewhat|rather)\b/gi,
42
+ /\b(in order to)\b/gi,
43
+ /\b(it is worth noting that|it should be noted that)\b/gi,
44
+ /\b(as a matter of fact|in fact)\b/gi,
45
+ /\b(at the end of the day)\b/gi,
46
+ /\b(the fact that)\b/gi,
47
+ /\b(in this case|in that case)\b/gi,
48
+ ];
49
+ for (const pattern of fillerPatterns) {
50
+ compressed = compressed.replace(pattern, '');
51
+ }
52
+ }
53
+ // Level 3: Aggressive - truncate to key sentences
54
+ if (cfg.compressionLevel === 'aggressive') {
55
+ const sentences = compressed.split(/(?<=[.!?])\s+/);
56
+ const maxSentences = Math.max(3, Math.ceil(sentences.length * 0.4));
57
+ // Keep first sentence (context), middle sentences (key info), last sentence (conclusion)
58
+ if (sentences.length > maxSentences) {
59
+ const first = sentences.slice(0, 1);
60
+ const middle = sentences.slice(1, -1).slice(0, maxSentences - 2);
61
+ const last = sentences.slice(-1);
62
+ compressed = [...first, ...middle, ...last].join(' ');
63
+ }
64
+ }
65
+ // Clean up artifacts
66
+ compressed = compressed.replace(/\s{2,}/g, ' ').trim();
67
+ const compressedTokens = estimateTokens(compressed);
68
+ const tokenReduction = 1 - (compressedTokens / originalTokens);
69
+ // Estimate semantic preservation (based on compression ratio - rough heuristic)
70
+ const preservedSemantics = Math.max(0.7, 1 - (tokenReduction * 0.3));
71
+ return {
72
+ original: content,
73
+ compressed,
74
+ originalTokens,
75
+ compressedTokens,
76
+ tokenReduction,
77
+ preservedSemantics,
78
+ };
79
+ }
80
+ /**
81
+ * Compress multiple memories into a consolidated context
82
+ */
83
+ export function compressMemoryBatch(memories, config = {}) {
84
+ const cfg = { ...DEFAULT_CONFIG, ...config };
85
+ // Sort by importance (descending)
86
+ const sorted = [...memories].sort((a, b) => (b.importance || 5) - (a.importance || 5));
87
+ // Group by type for structured output
88
+ const grouped = {};
89
+ for (const mem of sorted) {
90
+ const type = mem.type || 'general';
91
+ if (!grouped[type])
92
+ grouped[type] = [];
93
+ grouped[type].push(mem.content);
94
+ }
95
+ // Build consolidated context
96
+ const sections = [];
97
+ const typeOrder = ['goal', 'action', 'observation', 'thought'];
98
+ for (const type of typeOrder) {
99
+ if (grouped[type] && grouped[type].length > 0) {
100
+ const compressed = grouped[type].map(c => compressMemoryEntry(c, cfg).compressed);
101
+ sections.push(`[${type.toUpperCase()}]\n${compressed.join('\n')}`);
102
+ }
103
+ }
104
+ // Add remaining types
105
+ for (const type of Object.keys(grouped)) {
106
+ if (!typeOrder.includes(type)) {
107
+ const compressed = grouped[type].map(c => compressMemoryEntry(c, cfg).compressed);
108
+ sections.push(`[${type.toUpperCase()}]\n${compressed.join('\n')}`);
109
+ }
110
+ }
111
+ const original = memories.map(m => m.content).join('\n');
112
+ const compressed = sections.join('\n\n');
113
+ const originalTokens = estimateTokens(original);
114
+ const compressedTokens = estimateTokens(compressed);
115
+ return {
116
+ original,
117
+ compressed,
118
+ originalTokens,
119
+ compressedTokens,
120
+ tokenReduction: 1 - (compressedTokens / originalTokens),
121
+ preservedSemantics: 0.9, // Batch compression preserves structure
122
+ };
123
+ }
124
+ /**
125
+ * Summarize old memories into a single compressed entry
126
+ */
127
+ export function summarizeMemories(memories, maxOutputTokens = 500) {
128
+ if (memories.length === 0)
129
+ return '';
130
+ // Group by type
131
+ const byType = {};
132
+ for (const mem of memories) {
133
+ if (!byType[mem.type])
134
+ byType[mem.type] = [];
135
+ byType[mem.type].push(mem.content);
136
+ }
137
+ // Create summary sections
138
+ const summaryParts = [];
139
+ for (const [type, contents] of Object.entries(byType)) {
140
+ // Deduplicate similar content
141
+ const unique = deduplicateContent(contents);
142
+ // Compress each unique entry
143
+ const compressed = unique.map(c => {
144
+ const result = compressMemoryEntry(c, { compressionLevel: 'aggressive' });
145
+ return result.compressed;
146
+ });
147
+ // Limit to most important entries
148
+ const maxPerType = Math.max(2, Math.floor(maxOutputTokens / (Object.keys(byType).length * 50)));
149
+ const limited = compressed.slice(0, maxPerType);
150
+ if (limited.length > 0) {
151
+ summaryParts.push(`${type}: ${limited.join('; ')}`);
152
+ }
153
+ }
154
+ const dateRange = getDateRange(memories.map(m => m.timestamp));
155
+ const header = `[Summary ${dateRange}]`;
156
+ return `${header}\n${summaryParts.join('\n')}`;
157
+ }
158
+ /**
159
+ * Deduplicate content using simple similarity check
160
+ */
161
+ function deduplicateContent(contents, threshold = 0.8) {
162
+ const unique = [];
163
+ for (const content of contents) {
164
+ const normalizedNew = content.toLowerCase().replace(/\s+/g, ' ').trim();
165
+ let isDuplicate = false;
166
+ for (const existing of unique) {
167
+ const normalizedExisting = existing.toLowerCase().replace(/\s+/g, ' ').trim();
168
+ const similarity = jaccardSimilarity(normalizedNew, normalizedExisting);
169
+ if (similarity > threshold) {
170
+ isDuplicate = true;
171
+ break;
172
+ }
173
+ }
174
+ if (!isDuplicate) {
175
+ unique.push(content);
176
+ }
177
+ }
178
+ return unique;
179
+ }
180
+ /**
181
+ * Calculate Jaccard similarity between two strings
182
+ */
183
+ function jaccardSimilarity(a, b) {
184
+ const setA = new Set(a.split(/\s+/));
185
+ const setB = new Set(b.split(/\s+/));
186
+ const intersection = new Set([...setA].filter(x => setB.has(x)));
187
+ const union = new Set([...setA, ...setB]);
188
+ return intersection.size / union.size;
189
+ }
190
+ /**
191
+ * Get date range string
192
+ */
193
+ function getDateRange(timestamps) {
194
+ if (timestamps.length === 0)
195
+ return 'unknown';
196
+ const dates = timestamps.map(t => new Date(t)).filter(d => !isNaN(d.getTime()));
197
+ if (dates.length === 0)
198
+ return 'unknown';
199
+ const min = new Date(Math.min(...dates.map(d => d.getTime())));
200
+ const max = new Date(Math.max(...dates.map(d => d.getTime())));
201
+ const formatDate = (d) => d.toISOString().split('T')[0];
202
+ if (formatDate(min) === formatDate(max)) {
203
+ return formatDate(min);
204
+ }
205
+ return `${formatDate(min)} to ${formatDate(max)}`;
206
+ }
207
+ /**
208
+ * Context budget manager
209
+ */
210
+ export class ContextBudget {
211
+ maxTokens;
212
+ usedTokens = 0;
213
+ sections = new Map();
214
+ constructor(maxTokens = 12000) {
215
+ this.maxTokens = maxTokens;
216
+ }
217
+ allocate(section, content) {
218
+ const tokens = estimateTokens(content);
219
+ const available = this.maxTokens - this.usedTokens;
220
+ if (tokens <= available) {
221
+ this.usedTokens += tokens;
222
+ this.sections.set(section, tokens);
223
+ return { content, tokens, truncated: false };
224
+ }
225
+ // Need to truncate
226
+ const targetTokens = Math.floor(available * 0.9);
227
+ const targetChars = targetTokens * 4;
228
+ const truncated = content.slice(0, targetChars) + '... [truncated]';
229
+ const actualTokens = estimateTokens(truncated);
230
+ this.usedTokens += actualTokens;
231
+ this.sections.set(section, actualTokens);
232
+ return { content: truncated, tokens: actualTokens, truncated: true };
233
+ }
234
+ remaining() {
235
+ return this.maxTokens - this.usedTokens;
236
+ }
237
+ usage() {
238
+ return {
239
+ total: this.maxTokens,
240
+ used: this.usedTokens,
241
+ remaining: this.remaining(),
242
+ sections: Object.fromEntries(this.sections),
243
+ };
244
+ }
245
+ reset() {
246
+ this.usedTokens = 0;
247
+ this.sections.clear();
248
+ }
249
+ }
250
+ //# sourceMappingURL=context-compressor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-compressor.js","sourceRoot":"","sources":["../../src/memory/context-compressor.ts"],"names":[],"mappings":"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"}
@@ -3,8 +3,54 @@
3
3
  *
4
4
  * Retrieves relevant memories based on task content, not static context.
5
5
  * Implements semantic search with fallback to keyword matching.
6
+ *
7
+ * Features:
8
+ * - Adaptive retrieval depth based on query complexity
9
+ * - Context budget management to prevent overflow
10
+ * - Speculative prefetch for common patterns
6
11
  */
7
12
  import { type TaskClassification } from './task-classifier.js';
13
+ /**
14
+ * Query complexity levels for adaptive retrieval
15
+ */
16
+ export type QueryComplexity = 'simple' | 'moderate' | 'complex';
17
+ /**
18
+ * Retrieval depth configuration
19
+ */
20
+ export interface RetrievalDepthConfig {
21
+ simple: {
22
+ shortTerm: number;
23
+ sessionMem: number;
24
+ longTerm: number;
25
+ patterns: number;
26
+ };
27
+ moderate: {
28
+ shortTerm: number;
29
+ sessionMem: number;
30
+ longTerm: number;
31
+ patterns: number;
32
+ };
33
+ complex: {
34
+ shortTerm: number;
35
+ sessionMem: number;
36
+ longTerm: number;
37
+ patterns: number;
38
+ };
39
+ }
40
+ /**
41
+ * Measure query complexity to determine retrieval depth
42
+ * Based on SimpleMem's adaptive query-aware retrieval
43
+ */
44
+ export declare function measureQueryComplexity(query: string): QueryComplexity;
45
+ /**
46
+ * Get retrieval limits based on query complexity
47
+ */
48
+ export declare function getRetrievalDepth(complexity: QueryComplexity, config?: RetrievalDepthConfig): {
49
+ shortTerm: number;
50
+ sessionMem: number;
51
+ longTerm: number;
52
+ patterns: number;
53
+ };
8
54
  export interface RetrievedMemory {
9
55
  content: string;
10
56
  type: 'lesson' | 'gotcha' | 'pattern' | 'context' | 'example';
@@ -18,9 +64,24 @@ export interface DynamicMemoryContext {
18
64
  gotchas: string[];
19
65
  projectContext: string;
20
66
  formattedContext: string;
67
+ queryComplexity: QueryComplexity;
68
+ tokenBudget: {
69
+ used: number;
70
+ remaining: number;
71
+ total: number;
72
+ };
73
+ compressionStats?: {
74
+ ratio: number;
75
+ sourceTokens: number;
76
+ compressedTokens: number;
77
+ };
21
78
  }
22
79
  /**
23
80
  * Main function to retrieve task-specific memory context
81
+ * Now with adaptive retrieval depth and context budget management
24
82
  */
25
- export declare function retrieveDynamicMemoryContext(taskInstruction: string, projectRoot?: string): Promise<DynamicMemoryContext>;
83
+ export declare function retrieveDynamicMemoryContext(taskInstruction: string, projectRoot?: string, options?: {
84
+ maxTokens?: number;
85
+ useSemanticCompression?: boolean;
86
+ }): Promise<DynamicMemoryContext>;
26
87
  //# sourceMappingURL=dynamic-retrieval.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dynamic-retrieval.d.ts","sourceRoot":"","sources":["../../src/memory/dynamic-retrieval.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAgE,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE7H,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IAC9D,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,cAAc,EAAE,kBAAkB,CAAC;IACnC,gBAAgB,EAAE,eAAe,EAAE,CAAC;IACpC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,wBAAsB,4BAA4B,CAChD,eAAe,EAAE,MAAM,EACvB,WAAW,GAAE,MAAsB,GAClC,OAAO,CAAC,oBAAoB,CAAC,CAgD/B"}
1
+ {"version":3,"file":"dynamic-retrieval.d.ts","sourceRoot":"","sources":["../../src/memory/dynamic-retrieval.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,EAAgE,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAI7H;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;AAEhE;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IACtF,QAAQ,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IACxF,OAAO,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;CACxF;AAQD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,CAiDrE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,eAAe,EAC3B,MAAM,GAAE,oBAA+C,GACtD;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAE/E;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IAC9D,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,cAAc,EAAE,kBAAkB,CAAC;IACnC,gBAAgB,EAAE,eAAe,EAAE,CAAC;IACpC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,eAAe,CAAC;IACjC,WAAW,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAChE,gBAAgB,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE,CAAC;CACtF;AAED;;;GAGG;AACH,wBAAsB,4BAA4B,CAChD,eAAe,EAAE,MAAM,EACvB,WAAW,GAAE,MAAsB,EACnC,OAAO,GAAE;IACP,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAC7B,GACL,OAAO,CAAC,oBAAoB,CAAC,CAuG/B"}