squish-memory 0.7.3 → 0.8.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/core/embeddings.d.ts.map +1 -1
- package/dist/core/embeddings.js +6 -3
- package/dist/core/embeddings.js.map +1 -1
- package/dist/core/memory/consolidation.d.ts +51 -0
- package/dist/core/memory/consolidation.d.ts.map +1 -0
- package/dist/core/memory/consolidation.js +312 -0
- package/dist/core/memory/consolidation.js.map +1 -0
- package/dist/core/memory/hybrid-search.d.ts +25 -0
- package/dist/core/memory/hybrid-search.d.ts.map +1 -0
- package/dist/core/memory/hybrid-search.js +336 -0
- package/dist/core/memory/hybrid-search.js.map +1 -0
- package/dist/core/memory/importance.d.ts +68 -0
- package/dist/core/memory/importance.d.ts.map +1 -0
- package/dist/core/memory/importance.js +325 -0
- package/dist/core/memory/importance.js.map +1 -0
- package/dist/core/memory/memories.d.ts +1 -1
- package/dist/core/memory/memories.d.ts.map +1 -1
- package/dist/core/memory/memories.js +26 -2
- package/dist/core/memory/memories.js.map +1 -1
- package/dist/db/bootstrap.d.ts.map +1 -1
- package/dist/db/bootstrap.js +123 -56
- package/dist/db/bootstrap.js.map +1 -1
- package/dist/drizzle/schema-sqlite.d.ts.map +1 -1
- package/dist/drizzle/schema-sqlite.js +12 -0
- package/dist/drizzle/schema-sqlite.js.map +1 -1
- package/dist/index.d.ts +6 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +195 -4
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embeddings.d.ts","sourceRoot":"","sources":["../../core/embeddings.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;AAiCnG,wBAAsB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"embeddings.d.ts","sourceRoot":"","sources":["../../core/embeddings.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;AAiCnG,wBAAsB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAgE1E;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,EAAE,EAChB,SAAS,GAAE,MAAW,GACrB,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAuCjC;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAK1E"}
|
package/dist/core/embeddings.js
CHANGED
|
@@ -75,9 +75,12 @@ export async function getEmbedding(input) {
|
|
|
75
75
|
result = getLocalEmbedding(input);
|
|
76
76
|
}
|
|
77
77
|
else {
|
|
78
|
-
// Auto mode:
|
|
79
|
-
|
|
80
|
-
if (
|
|
78
|
+
// Auto mode: use local TF-IDF by default (fast, no API needed)
|
|
79
|
+
// Only try external providers if explicitly configured
|
|
80
|
+
if (config.openAiApiKey) {
|
|
81
|
+
result = await getOpenAiEmbedding(input);
|
|
82
|
+
}
|
|
83
|
+
if (!result && config.ollamaUrl) {
|
|
81
84
|
result = await getOllamaEmbedding(input);
|
|
82
85
|
}
|
|
83
86
|
if (!result) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embeddings.js","sourceRoot":"","sources":["../../core/embeddings.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"embeddings.js","sourceRoot":"","sources":["../../core/embeddings.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory Consolidation System
|
|
3
|
+
*
|
|
4
|
+
* Implements experience replay and memory consolidation for Squish.
|
|
5
|
+
* Based on research from ReMe (Memory Replay) and LIGHT framework.
|
|
6
|
+
*
|
|
7
|
+
* Consolidation process:
|
|
8
|
+
* 1. Find clusters of old, low-importance memories
|
|
9
|
+
* 2. Group related memories by similarity
|
|
10
|
+
* 3. Summarize each cluster using extractive summarization
|
|
11
|
+
* 4. Create consolidated memory with summary
|
|
12
|
+
* 5. Mark originals as consolidated (not deleted - reversible)
|
|
13
|
+
*/
|
|
14
|
+
export interface ConsolidationOptions {
|
|
15
|
+
projectId: string;
|
|
16
|
+
minAge?: number;
|
|
17
|
+
maxImportance?: number;
|
|
18
|
+
minClusterSize?: number;
|
|
19
|
+
similarityThreshold?: number;
|
|
20
|
+
limit?: number;
|
|
21
|
+
}
|
|
22
|
+
export interface ConsolidationResult {
|
|
23
|
+
consolidatedMemoryId: string;
|
|
24
|
+
sourceMemoryIds: string[];
|
|
25
|
+
clusterSize: number;
|
|
26
|
+
summary: string;
|
|
27
|
+
}
|
|
28
|
+
export interface ClusterResult {
|
|
29
|
+
memories: any[];
|
|
30
|
+
similarity: number;
|
|
31
|
+
representativeId: string;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Main consolidation function - consolidates low-importance old memories
|
|
35
|
+
*/
|
|
36
|
+
export declare function consolidateMemories(options: ConsolidationOptions): Promise<ConsolidationResult[]>;
|
|
37
|
+
/**
|
|
38
|
+
* Reverse consolidation - restore original memories
|
|
39
|
+
* This allows undoing consolidation if needed
|
|
40
|
+
*/
|
|
41
|
+
export declare function reverseConsolidation(consolidatedMemoryId: string): Promise<void>;
|
|
42
|
+
/**
|
|
43
|
+
* Get consolidation statistics for a project
|
|
44
|
+
*/
|
|
45
|
+
export declare function getConsolidationStats(projectId: string): Promise<{
|
|
46
|
+
totalMemories: number;
|
|
47
|
+
consolidatedMemories: number;
|
|
48
|
+
consolidationsCreated: number;
|
|
49
|
+
avgClusterSize: number;
|
|
50
|
+
}>;
|
|
51
|
+
//# sourceMappingURL=consolidation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consolidation.d.ts","sourceRoot":"","sources":["../../../core/memory/consolidation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAaH,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,GAAG,EAAE,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,mBAAmB,EAAE,CAAC,CA8ChC;AAoND;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,oBAAoB,EAAE,MAAM,GAC3B,OAAO,CAAC,IAAI,CAAC,CAyCf;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IACT,aAAa,EAAE,MAAM,CAAC;IACtB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC,CAsCD"}
|
|
@@ -0,0 +1,312 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory Consolidation System
|
|
3
|
+
*
|
|
4
|
+
* Implements experience replay and memory consolidation for Squish.
|
|
5
|
+
* Based on research from ReMe (Memory Replay) and LIGHT framework.
|
|
6
|
+
*
|
|
7
|
+
* Consolidation process:
|
|
8
|
+
* 1. Find clusters of old, low-importance memories
|
|
9
|
+
* 2. Group related memories by similarity
|
|
10
|
+
* 3. Summarize each cluster using extractive summarization
|
|
11
|
+
* 4. Create consolidated memory with summary
|
|
12
|
+
* 5. Mark originals as consolidated (not deleted - reversible)
|
|
13
|
+
*/
|
|
14
|
+
import { eq, inArray } from 'drizzle-orm';
|
|
15
|
+
import { createDatabaseClient } from '../database.js';
|
|
16
|
+
import { getDb } from '../../db/index.js';
|
|
17
|
+
import { getSchema } from '../../db/schema.js';
|
|
18
|
+
import { cosineSimilarity } from './importance.js';
|
|
19
|
+
import { getLowImportanceMemories } from './importance.js';
|
|
20
|
+
import { rememberMemory } from './memories.js';
|
|
21
|
+
import { logger } from '../logger.js';
|
|
22
|
+
/**
|
|
23
|
+
* Main consolidation function - consolidates low-importance old memories
|
|
24
|
+
*/
|
|
25
|
+
export async function consolidateMemories(options) {
|
|
26
|
+
const { projectId, minAge = 90, maxImportance = 30, minClusterSize = 3, similarityThreshold = 0.7, limit = 100, } = options;
|
|
27
|
+
// Get low-importance, old memories
|
|
28
|
+
const candidates = await getLowImportanceMemories(projectId, {
|
|
29
|
+
minAge,
|
|
30
|
+
maxImportance,
|
|
31
|
+
limit,
|
|
32
|
+
});
|
|
33
|
+
if (candidates.length < minClusterSize) {
|
|
34
|
+
logger.debug('Not enough memories to consolidate', {
|
|
35
|
+
count: candidates.length,
|
|
36
|
+
minClusterSize,
|
|
37
|
+
});
|
|
38
|
+
return [];
|
|
39
|
+
}
|
|
40
|
+
// Cluster memories by similarity
|
|
41
|
+
const clusters = await clusterMemoriesBySimilarity(candidates, {
|
|
42
|
+
minClusterSize,
|
|
43
|
+
similarityThreshold,
|
|
44
|
+
});
|
|
45
|
+
logger.info(`Found ${clusters.length} memory clusters for consolidation`);
|
|
46
|
+
const results = [];
|
|
47
|
+
// Consolidate each cluster
|
|
48
|
+
for (const cluster of clusters) {
|
|
49
|
+
try {
|
|
50
|
+
const result = await consolidateCluster(cluster);
|
|
51
|
+
results.push(result);
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
logger.error('Failed to consolidate cluster', error);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return results;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Cluster memories by similarity using a simple greedy algorithm
|
|
61
|
+
*/
|
|
62
|
+
async function clusterMemoriesBySimilarity(memories, options = {}) {
|
|
63
|
+
const { minClusterSize = 3, similarityThreshold = 0.7 } = options;
|
|
64
|
+
const clustered = new Set();
|
|
65
|
+
const clusters = [];
|
|
66
|
+
for (const memory of memories) {
|
|
67
|
+
if (clustered.has(memory.id))
|
|
68
|
+
continue;
|
|
69
|
+
// Find similar memories
|
|
70
|
+
const similar = [memory];
|
|
71
|
+
const similarities = [1];
|
|
72
|
+
for (const other of memories) {
|
|
73
|
+
if (other.id === memory.id)
|
|
74
|
+
continue;
|
|
75
|
+
if (clustered.has(other.id))
|
|
76
|
+
continue;
|
|
77
|
+
// Calculate similarity using embeddings
|
|
78
|
+
const sim = await calculateMemorySimilarity(memory, other);
|
|
79
|
+
if (sim >= similarityThreshold) {
|
|
80
|
+
similar.push(other);
|
|
81
|
+
similarities.push(sim);
|
|
82
|
+
clustered.add(other.id);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
clustered.add(memory.id);
|
|
86
|
+
// Only keep clusters that meet minimum size
|
|
87
|
+
if (similar.length >= minClusterSize) {
|
|
88
|
+
const avgSimilarity = similarities.reduce((a, b) => a + b, 0) / similarities.length;
|
|
89
|
+
clusters.push({
|
|
90
|
+
memories: similar,
|
|
91
|
+
similarity: avgSimilarity,
|
|
92
|
+
representativeId: memory.id,
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return clusters;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Calculate similarity between two memories using their embeddings
|
|
100
|
+
*/
|
|
101
|
+
async function calculateMemorySimilarity(memory1, memory2) {
|
|
102
|
+
let embedding1 = parseEmbedding(memory1.embedding) ?? parseEmbedding(memory1.embedding_json);
|
|
103
|
+
let embedding2 = parseEmbedding(memory2.embedding) ?? parseEmbedding(memory2.embedding_json);
|
|
104
|
+
if (!embedding1 || !embedding2) {
|
|
105
|
+
// Fallback to text similarity if embeddings not available
|
|
106
|
+
return textSimilarity(memory1.content, memory2.content);
|
|
107
|
+
}
|
|
108
|
+
return cosineSimilarity(embedding1, embedding2);
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Parse embedding from storage
|
|
112
|
+
*/
|
|
113
|
+
function parseEmbedding(embeddingData) {
|
|
114
|
+
if (!embeddingData)
|
|
115
|
+
return null;
|
|
116
|
+
if (Array.isArray(embeddingData))
|
|
117
|
+
return embeddingData;
|
|
118
|
+
if (typeof embeddingData === 'string') {
|
|
119
|
+
try {
|
|
120
|
+
return JSON.parse(embeddingData);
|
|
121
|
+
}
|
|
122
|
+
catch {
|
|
123
|
+
return null;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
if (Buffer.isBuffer(embeddingData)) {
|
|
127
|
+
try {
|
|
128
|
+
const floatArray = new Float32Array(embeddingData.buffer || embeddingData);
|
|
129
|
+
return Array.from(floatArray);
|
|
130
|
+
}
|
|
131
|
+
catch {
|
|
132
|
+
return null;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
return null;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Simple text similarity as fallback (Jaccard similarity of word sets)
|
|
139
|
+
*/
|
|
140
|
+
function textSimilarity(text1, text2) {
|
|
141
|
+
const words1 = new Set(text1.toLowerCase().split(/\s+/).filter(w => w.length > 2));
|
|
142
|
+
const words2 = new Set(text2.toLowerCase().split(/\s+/).filter(w => w.length > 2));
|
|
143
|
+
if (words1.size === 0 && words2.size === 0)
|
|
144
|
+
return 1;
|
|
145
|
+
if (words1.size === 0 || words2.size === 0)
|
|
146
|
+
return 0;
|
|
147
|
+
const intersection = new Set([...words1].filter(w => words2.has(w)));
|
|
148
|
+
const union = new Set([...words1, ...words2]);
|
|
149
|
+
return intersection.size / union.size;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Consolidate a cluster of memories into a single summary memory
|
|
153
|
+
*/
|
|
154
|
+
async function consolidateCluster(cluster) {
|
|
155
|
+
const { memories } = cluster;
|
|
156
|
+
const sourceMemoryIds = memories.map((m) => m.id);
|
|
157
|
+
// Generate extractive summary
|
|
158
|
+
const summary = generateExtractiveSummary(memories);
|
|
159
|
+
// Create consolidated memory
|
|
160
|
+
const consolidated = await rememberMemory({
|
|
161
|
+
content: summary,
|
|
162
|
+
type: 'context',
|
|
163
|
+
metadata: {
|
|
164
|
+
consolidatedFrom: sourceMemoryIds,
|
|
165
|
+
consolidatedAt: new Date().toISOString(),
|
|
166
|
+
clusterSize: memories.length,
|
|
167
|
+
avgSimilarity: cluster.similarity,
|
|
168
|
+
},
|
|
169
|
+
tags: ['consolidated'],
|
|
170
|
+
});
|
|
171
|
+
// Mark originals as consolidated
|
|
172
|
+
const db = createDatabaseClient(await getDb());
|
|
173
|
+
const schema = await getSchema();
|
|
174
|
+
await db
|
|
175
|
+
.update(schema.memories)
|
|
176
|
+
.set({
|
|
177
|
+
isConsolidated: 1,
|
|
178
|
+
consolidatedInto: consolidated.id,
|
|
179
|
+
consolidatedAt: new Date(),
|
|
180
|
+
})
|
|
181
|
+
.where(inArray(schema.memories.id, sourceMemoryIds));
|
|
182
|
+
logger.info('Consolidated memory cluster', {
|
|
183
|
+
consolidatedId: consolidated.id,
|
|
184
|
+
sourceCount: memories.length,
|
|
185
|
+
sourceIds: sourceMemoryIds,
|
|
186
|
+
});
|
|
187
|
+
return {
|
|
188
|
+
consolidatedMemoryId: consolidated.id,
|
|
189
|
+
sourceMemoryIds,
|
|
190
|
+
clusterSize: memories.length,
|
|
191
|
+
summary,
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Generate extractive summary from a cluster of memories
|
|
196
|
+
* Uses text processing without requiring an LLM
|
|
197
|
+
*/
|
|
198
|
+
function generateExtractiveSummary(memories) {
|
|
199
|
+
// Group by memory type
|
|
200
|
+
const byType = new Map();
|
|
201
|
+
for (const m of memories) {
|
|
202
|
+
const type = m.type ?? 'observation';
|
|
203
|
+
if (!byType.has(type)) {
|
|
204
|
+
byType.set(type, []);
|
|
205
|
+
}
|
|
206
|
+
byType.get(type).push(m);
|
|
207
|
+
}
|
|
208
|
+
const summaryParts = [];
|
|
209
|
+
// Add header with count
|
|
210
|
+
summaryParts.push(`Consolidated from ${memories.length} memories:`);
|
|
211
|
+
// Summarize each type
|
|
212
|
+
for (const [type, typeMemories] of byType.entries()) {
|
|
213
|
+
if (typeMemories.length === 1) {
|
|
214
|
+
summaryParts.push(`\n- ${type}: ${truncate(typeMemories[0].content, 100)}`);
|
|
215
|
+
}
|
|
216
|
+
else {
|
|
217
|
+
summaryParts.push(`\n- ${type}s (${typeMemories.length}):`);
|
|
218
|
+
// Extract key phrases from each memory
|
|
219
|
+
for (const m of typeMemories.slice(0, 3)) {
|
|
220
|
+
summaryParts.push(` - ${truncate(m.content, 80)}`);
|
|
221
|
+
}
|
|
222
|
+
if (typeMemories.length > 3) {
|
|
223
|
+
summaryParts.push(` - ...and ${typeMemories.length - 3} more`);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
return summaryParts.join('\n');
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Truncate text to maximum length
|
|
231
|
+
*/
|
|
232
|
+
function truncate(text, maxLength) {
|
|
233
|
+
if (text.length <= maxLength)
|
|
234
|
+
return text;
|
|
235
|
+
return text.substring(0, maxLength - 3) + '...';
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Reverse consolidation - restore original memories
|
|
239
|
+
* This allows undoing consolidation if needed
|
|
240
|
+
*/
|
|
241
|
+
export async function reverseConsolidation(consolidatedMemoryId) {
|
|
242
|
+
const db = createDatabaseClient(await getDb());
|
|
243
|
+
const schema = await getSchema();
|
|
244
|
+
// Get the consolidated memory
|
|
245
|
+
const consolidated = await db
|
|
246
|
+
.select()
|
|
247
|
+
.from(schema.memories)
|
|
248
|
+
.where(eq(schema.memories.id, consolidatedMemoryId))
|
|
249
|
+
.limit(1);
|
|
250
|
+
if (consolidated.length === 0) {
|
|
251
|
+
throw new Error(`Consolidated memory not found: ${consolidatedMemoryId}`);
|
|
252
|
+
}
|
|
253
|
+
const metadata = consolidated[0].metadata;
|
|
254
|
+
const sourceIds = metadata?.consolidatedFrom;
|
|
255
|
+
if (!sourceIds || sourceIds.length === 0) {
|
|
256
|
+
throw new Error('No source memories found in consolidated memory metadata');
|
|
257
|
+
}
|
|
258
|
+
// Restore original memories
|
|
259
|
+
await db
|
|
260
|
+
.update(schema.memories)
|
|
261
|
+
.set({
|
|
262
|
+
isConsolidated: 0,
|
|
263
|
+
consolidatedInto: null,
|
|
264
|
+
consolidatedAt: null,
|
|
265
|
+
})
|
|
266
|
+
.where(inArray(schema.memories.id, sourceIds));
|
|
267
|
+
// Delete the consolidated memory
|
|
268
|
+
await db
|
|
269
|
+
.delete(schema.memories)
|
|
270
|
+
.where(eq(schema.memories.id, consolidatedMemoryId));
|
|
271
|
+
logger.info('Reversed consolidation', {
|
|
272
|
+
consolidatedId: consolidatedMemoryId,
|
|
273
|
+
restoredCount: sourceIds.length,
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Get consolidation statistics for a project
|
|
278
|
+
*/
|
|
279
|
+
export async function getConsolidationStats(projectId) {
|
|
280
|
+
const db = createDatabaseClient(await getDb());
|
|
281
|
+
const schema = await getSchema();
|
|
282
|
+
// Get all memories for project
|
|
283
|
+
const memories = await db
|
|
284
|
+
.select()
|
|
285
|
+
.from(schema.memories)
|
|
286
|
+
.where(eq(schema.memories.projectId, projectId))
|
|
287
|
+
.all();
|
|
288
|
+
const totalMemories = memories.length;
|
|
289
|
+
const consolidatedMemories = memories.filter((m) => m.isConsolidated).length;
|
|
290
|
+
// Get consolidation summaries (memories created by consolidation)
|
|
291
|
+
const consolidations = memories.filter((m) => {
|
|
292
|
+
const metadata = m.metadata;
|
|
293
|
+
return metadata?.consolidatedFrom && Array.isArray(metadata.consolidatedFrom);
|
|
294
|
+
});
|
|
295
|
+
const consolidationsCreated = consolidations.length;
|
|
296
|
+
// Calculate average cluster size
|
|
297
|
+
let totalClusterSize = 0;
|
|
298
|
+
for (const m of consolidations) {
|
|
299
|
+
const metadata = m.metadata;
|
|
300
|
+
totalClusterSize += metadata?.clusterSize || 0;
|
|
301
|
+
}
|
|
302
|
+
const avgClusterSize = consolidationsCreated > 0
|
|
303
|
+
? totalClusterSize / consolidationsCreated
|
|
304
|
+
: 0;
|
|
305
|
+
return {
|
|
306
|
+
totalMemories,
|
|
307
|
+
consolidatedMemories,
|
|
308
|
+
consolidationsCreated,
|
|
309
|
+
avgClusterSize,
|
|
310
|
+
};
|
|
311
|
+
}
|
|
312
|
+
//# sourceMappingURL=consolidation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consolidation.js","sourceRoot":"","sources":["../../../core/memory/consolidation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAAE,EAAE,EAAE,OAAO,EAAO,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAwBtC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAA6B;IAE7B,MAAM,EACJ,SAAS,EACT,MAAM,GAAG,EAAE,EACX,aAAa,GAAG,EAAE,EAClB,cAAc,GAAG,CAAC,EAClB,mBAAmB,GAAG,GAAG,EACzB,KAAK,GAAG,GAAG,GACZ,GAAG,OAAO,CAAC;IAEZ,mCAAmC;IACnC,MAAM,UAAU,GAAG,MAAM,wBAAwB,CAAC,SAAS,EAAE;QAC3D,MAAM;QACN,aAAa;QACb,KAAK;KACN,CAAC,CAAC;IAEH,IAAI,UAAU,CAAC,MAAM,GAAG,cAAc,EAAE,CAAC;QACvC,MAAM,CAAC,KAAK,CAAC,oCAAoC,EAAE;YACjD,KAAK,EAAE,UAAU,CAAC,MAAM;YACxB,cAAc;SACf,CAAC,CAAC;QACH,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,iCAAiC;IACjC,MAAM,QAAQ,GAAG,MAAM,2BAA2B,CAAC,UAAU,EAAE;QAC7D,cAAc;QACd,mBAAmB;KACpB,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CAAC,SAAS,QAAQ,CAAC,MAAM,oCAAoC,CAAC,CAAC;IAE1E,MAAM,OAAO,GAA0B,EAAE,CAAC;IAE1C,2BAA2B;IAC3B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,CAAC;YACjD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,2BAA2B,CACxC,QAAe,EACf,UAGI,EAAE;IAEN,MAAM,EAAE,cAAc,GAAG,CAAC,EAAE,mBAAmB,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC;IAElE,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IACpC,MAAM,QAAQ,GAAoB,EAAE,CAAC;IAErC,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;QAC9B,IAAI,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAAE,SAAS;QAEvC,wBAAwB;QACxB,MAAM,OAAO,GAAU,CAAC,MAAM,CAAC,CAAC;QAChC,MAAM,YAAY,GAAa,CAAC,CAAC,CAAC,CAAC;QAEnC,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;YAC7B,IAAI,KAAK,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE;gBAAE,SAAS;YACrC,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBAAE,SAAS;YAEtC,wCAAwC;YACxC,MAAM,GAAG,GAAG,MAAM,yBAAyB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAC3D,IAAI,GAAG,IAAI,mBAAmB,EAAE,CAAC;gBAC/B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACpB,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACvB,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;QAED,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAEzB,4CAA4C;QAC5C,IAAI,OAAO,CAAC,MAAM,IAAI,cAAc,EAAE,CAAC;YACrC,MAAM,aAAa,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC;YACpF,QAAQ,CAAC,IAAI,CAAC;gBACZ,QAAQ,EAAE,OAAc;gBACxB,UAAU,EAAE,aAAa;gBACzB,gBAAgB,EAAE,MAAM,CAAC,EAAE;aAC5B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,yBAAyB,CACtC,OAAY,EACZ,OAAY;IAEZ,IAAI,UAAU,GAAG,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,cAAc,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC7F,IAAI,UAAU,GAAG,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,cAAc,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAE7F,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,EAAE,CAAC;QAC/B,0DAA0D;QAC1D,OAAO,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO,gBAAgB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AAClD,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,aAAkB;IACxC,IAAI,CAAC,aAAa;QAAE,OAAO,IAAI,CAAC;IAEhC,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC;QAAE,OAAO,aAAa,CAAC;IAEvD,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE,CAAC;QACtC,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QACnC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,IAAI,YAAY,CAAC,aAAa,CAAC,MAAM,IAAI,aAAa,CAAC,CAAC;YAC3E,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAChC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,KAAa,EAAE,KAAa;IAClD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IACnF,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IAEnF,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACrD,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAErD,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrE,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;IAE9C,OAAO,YAAY,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,kBAAkB,CAAC,OAAsB;IACtD,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IAC7B,MAAM,eAAe,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAEvD,8BAA8B;IAC9B,MAAM,OAAO,GAAG,yBAAyB,CAAC,QAAQ,CAAC,CAAC;IAEpD,6BAA6B;IAC7B,MAAM,YAAY,GAAG,MAAM,cAAc,CAAC;QACxC,OAAO,EAAE,OAAO;QAChB,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE;YACR,gBAAgB,EAAE,eAAe;YACjC,cAAc,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACxC,WAAW,EAAE,QAAQ,CAAC,MAAM;YAC5B,aAAa,EAAE,OAAO,CAAC,UAAU;SAClC;QACD,IAAI,EAAE,CAAC,cAAc,CAAC;KACvB,CAAC,CAAC;IAEH,iCAAiC;IACjC,MAAM,EAAE,GAAG,oBAAoB,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;IAEjC,MAAM,EAAE;SACL,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;SACvB,GAAG,CAAC;QACH,cAAc,EAAE,CAAC;QACjB,gBAAgB,EAAE,YAAY,CAAC,EAAE;QACjC,cAAc,EAAE,IAAI,IAAI,EAAE;KAC3B,CAAC;SACD,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC;IAEvD,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE;QACzC,cAAc,EAAE,YAAY,CAAC,EAAE;QAC/B,WAAW,EAAE,QAAQ,CAAC,MAAM;QAC5B,SAAS,EAAE,eAAe;KAC3B,CAAC,CAAC;IAEH,OAAO;QACL,oBAAoB,EAAE,YAAY,CAAC,EAAE;QACrC,eAAe;QACf,WAAW,EAAE,QAAQ,CAAC,MAAM;QAC5B,OAAO;KACR,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,yBAAyB,CAAC,QAAe;IAChD,uBAAuB;IACvB,MAAM,MAAM,GAAG,IAAI,GAAG,EAAiB,CAAC;IACxC,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,aAAa,CAAC;QACrC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACtB,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACvB,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM,YAAY,GAAa,EAAE,CAAC;IAElC,wBAAwB;IACxB,YAAY,CAAC,IAAI,CAAC,qBAAqB,QAAQ,CAAC,MAAM,YAAY,CAAC,CAAC;IAEpE,sBAAsB;IACtB,KAAK,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;QACpD,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,YAAY,CAAC,IAAI,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QAC9E,CAAC;aAAM,CAAC;YACN,YAAY,CAAC,IAAI,CAAC,OAAO,IAAI,MAAM,YAAY,CAAC,MAAM,IAAI,CAAC,CAAC;YAC5D,uCAAuC;YACvC,KAAK,MAAM,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;gBACzC,YAAY,CAAC,IAAI,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;YACtD,CAAC;YACD,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5B,YAAY,CAAC,IAAI,CAAC,cAAc,YAAY,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC;YAClE,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,SAAS,QAAQ,CAAC,IAAY,EAAE,SAAiB;IAC/C,IAAI,IAAI,CAAC,MAAM,IAAI,SAAS;QAAE,OAAO,IAAI,CAAC;IAC1C,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;AAClD,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,oBAA4B;IAE5B,MAAM,EAAE,GAAG,oBAAoB,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;IAEjC,8BAA8B;IAC9B,MAAM,YAAY,GAAG,MAAM,EAAE;SAC1B,MAAM,EAAE;SACR,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;SACrB,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,oBAAoB,CAAC,CAAC;SACnD,KAAK,CAAC,CAAC,CAAC,CAAC;IAEZ,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,kCAAkC,oBAAoB,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED,MAAM,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,QAAe,CAAC;IACjD,MAAM,SAAS,GAAG,QAAQ,EAAE,gBAAwC,CAAC;IAErE,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;IAC9E,CAAC;IAED,4BAA4B;IAC5B,MAAM,EAAE;SACL,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;SACvB,GAAG,CAAC;QACH,cAAc,EAAE,CAAC;QACjB,gBAAgB,EAAE,IAAI;QACtB,cAAc,EAAE,IAAI;KACrB,CAAC;SACD,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;IAEjD,iCAAiC;IACjC,MAAM,EAAE;SACL,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;SACvB,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,oBAAoB,CAAC,CAAC,CAAC;IAEvD,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;QACpC,cAAc,EAAE,oBAAoB;QACpC,aAAa,EAAE,SAAS,CAAC,MAAM;KAChC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,SAAiB;IAOjB,MAAM,EAAE,GAAG,oBAAoB,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;IAEjC,+BAA+B;IAC/B,MAAM,QAAQ,GAAG,MAAM,EAAE;SACtB,MAAM,EAAE;SACR,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;SACrB,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;SAC/C,GAAG,EAAE,CAAC;IAET,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC;IACtC,MAAM,oBAAoB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC;IAElF,kEAAkE;IAClE,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE;QAChD,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAe,CAAC;QACnC,OAAO,QAAQ,EAAE,gBAAgB,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IAChF,CAAC,CAAC,CAAC;IAEH,MAAM,qBAAqB,GAAG,cAAc,CAAC,MAAM,CAAC;IAEpD,iCAAiC;IACjC,IAAI,gBAAgB,GAAG,CAAC,CAAC;IACzB,KAAK,MAAM,CAAC,IAAI,cAAc,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAe,CAAC;QACnC,gBAAgB,IAAI,QAAQ,EAAE,WAAW,IAAI,CAAC,CAAC;IACjD,CAAC;IACD,MAAM,cAAc,GAAG,qBAAqB,GAAG,CAAC;QAC9C,CAAC,CAAC,gBAAgB,GAAG,qBAAqB;QAC1C,CAAC,CAAC,CAAC,CAAC;IAEN,OAAO;QACL,aAAa;QACb,oBAAoB;QACpB,qBAAqB;QACrB,cAAc;KACf,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hybrid Search - Combines BM25 keyword search with vector semantic search
|
|
3
|
+
* Uses Reciprocal Rank Fusion (RRF) for intelligent result merging
|
|
4
|
+
*
|
|
5
|
+
* Based on research showing 40-60% improvement over pure vector search:
|
|
6
|
+
* - BM25 excels at exact keyword matches
|
|
7
|
+
* - Vector search captures semantic similarity
|
|
8
|
+
* - RRF merges both without score calibration issues
|
|
9
|
+
*/
|
|
10
|
+
import type { SearchResult, SearchInput } from './memories.js';
|
|
11
|
+
export interface HybridSearchOptions {
|
|
12
|
+
limit?: number;
|
|
13
|
+
project?: string;
|
|
14
|
+
type?: string;
|
|
15
|
+
tags?: string[];
|
|
16
|
+
/** Weight for BM25 results (0-1), default 0.5 */
|
|
17
|
+
bm25Weight?: number;
|
|
18
|
+
/** Weight for vector results (0-1), default 0.5 */
|
|
19
|
+
vectorWeight?: number;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Main hybrid search function - combines BM25 and vector search with RRF
|
|
23
|
+
*/
|
|
24
|
+
export declare function hybridSearch(input: SearchInput, options?: HybridSearchOptions): Promise<SearchResult[]>;
|
|
25
|
+
//# sourceMappingURL=hybrid-search.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hybrid-search.d.ts","sourceRoot":"","sources":["../../../core/memory/hybrid-search.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAe/D,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,iDAAiD;IACjD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mDAAmD;IACnD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AASD;;GAEG;AACH,wBAAsB,YAAY,CAChC,KAAK,EAAE,WAAW,EAClB,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,YAAY,EAAE,CAAC,CAiBzB"}
|