vesper-memory 0.5.4 → 0.6.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/CHANGELOG.md +22 -0
- package/README.md +6 -6
- package/config/sqlite-schema.sql +31 -0
- package/dist/cli.js +6 -49
- package/dist/cli.js.map +1 -1
- package/dist/consolidation/pipeline.d.ts +25 -6
- package/dist/consolidation/pipeline.d.ts.map +1 -1
- package/dist/consolidation/pipeline.js +310 -67
- package/dist/consolidation/pipeline.js.map +1 -1
- package/dist/memory-layers/semantic-memory.d.ts +8 -3
- package/dist/memory-layers/semantic-memory.d.ts.map +1 -1
- package/dist/memory-layers/semantic-memory.js +110 -50
- package/dist/memory-layers/semantic-memory.js.map +1 -1
- package/dist/memory-layers/skill-library.d.ts +9 -9
- package/dist/memory-layers/skill-library.d.ts.map +1 -1
- package/dist/memory-layers/skill-library.js +85 -56
- package/dist/memory-layers/skill-library.js.map +1 -1
- package/dist/memory-layers/working-memory.d.ts +2 -2
- package/dist/memory-layers/working-memory.d.ts.map +1 -1
- package/dist/memory-layers/working-memory.js +57 -47
- package/dist/memory-layers/working-memory.js.map +1 -1
- package/dist/retrieval/hybrid-search.d.ts.map +1 -1
- package/dist/retrieval/hybrid-search.js +10 -5
- package/dist/retrieval/hybrid-search.js.map +1 -1
- package/dist/retrieval/index-outbox.d.ts +50 -0
- package/dist/retrieval/index-outbox.d.ts.map +1 -0
- package/dist/retrieval/index-outbox.js +225 -0
- package/dist/retrieval/index-outbox.js.map +1 -0
- package/dist/retrieval/memory-retriever.d.ts +123 -0
- package/dist/retrieval/memory-retriever.d.ts.map +1 -0
- package/dist/retrieval/memory-retriever.js +723 -0
- package/dist/retrieval/memory-retriever.js.map +1 -0
- package/dist/router/smart-router.js +18 -18
- package/dist/server-wrapper.js +0 -0
- package/dist/server.d.ts +9 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +859 -355
- package/dist/server.js.map +1 -1
- package/dist/utils/claude-mcp-config.d.ts +3 -0
- package/dist/utils/claude-mcp-config.d.ts.map +1 -0
- package/dist/utils/claude-mcp-config.js +42 -0
- package/dist/utils/claude-mcp-config.js.map +1 -0
- package/dist/utils/monitoring.d.ts +1 -0
- package/dist/utils/monitoring.d.ts.map +1 -1
- package/dist/utils/monitoring.js +1 -0
- package/dist/utils/monitoring.js.map +1 -1
- package/dist/utils/paths.d.ts +13 -1
- package/dist/utils/paths.d.ts.map +1 -1
- package/dist/utils/paths.js +24 -0
- package/dist/utils/paths.js.map +1 -1
- package/dist/utils/validation.d.ts +14 -2
- package/dist/utils/validation.d.ts.map +1 -1
- package/dist/utils/validation.js +64 -48
- package/dist/utils/validation.js.map +1 -1
- package/docker-compose.yml +3 -3
- package/package.json +7 -4
- package/scripts/README.md +1 -1
- package/scripts/health-check.sh +8 -4
- package/scripts/init-qdrant.ts +42 -60
- package/scripts/test-mcp-server.sh +2 -2
- package/dist/config/rate-limits.d.ts +0 -76
- package/dist/config/rate-limits.d.ts.map +0 -1
- package/dist/config/rate-limits.js +0 -161
- package/dist/config/rate-limits.js.map +0 -1
- package/dist/middleware/auth.d.ts +0 -287
- package/dist/middleware/auth.d.ts.map +0 -1
- package/dist/middleware/auth.js +0 -610
- package/dist/middleware/auth.js.map +0 -1
- package/dist/monitoring/health.d.ts +0 -241
- package/dist/monitoring/health.d.ts.map +0 -1
- package/dist/monitoring/health.js +0 -649
- package/dist/monitoring/health.js.map +0 -1
- package/dist/monitoring/metrics.d.ts +0 -153
- package/dist/monitoring/metrics.d.ts.map +0 -1
- package/dist/monitoring/metrics.js +0 -349
- package/dist/monitoring/metrics.js.map +0 -1
- package/dist/security/rate-limit-middleware.d.ts +0 -119
- package/dist/security/rate-limit-middleware.d.ts.map +0 -1
- package/dist/security/rate-limit-middleware.js +0 -193
- package/dist/security/rate-limit-middleware.js.map +0 -1
|
@@ -15,34 +15,43 @@ export class WorkingMemoryLayer {
|
|
|
15
15
|
this.redis = redis;
|
|
16
16
|
this.MAX_CONVERSATIONS = maxConversations;
|
|
17
17
|
}
|
|
18
|
-
async store(memory, namespace =
|
|
18
|
+
async store(memory, namespace = "default") {
|
|
19
19
|
const key = `${namespace}:working:${memory.conversationId}`;
|
|
20
20
|
const listKey = `${namespace}:working:recent`;
|
|
21
21
|
const ttl = this.TTL_DAYS * 24 * 60 * 60;
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
//
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
|
|
22
|
+
// Projection replays must be idempotent. This script atomically writes the
|
|
23
|
+
// value, removes any prior list occurrence, promotes the ID, and returns
|
|
24
|
+
// only entries evicted by the bounded recent-list policy.
|
|
25
|
+
const script = `
|
|
26
|
+
redis.call('SETEX', KEYS[1], ARGV[1], ARGV[2])
|
|
27
|
+
redis.call('LREM', KEYS[2], 0, ARGV[3])
|
|
28
|
+
redis.call('LPUSH', KEYS[2], ARGV[3])
|
|
29
|
+
local evicted = redis.call('LRANGE', KEYS[2], ARGV[4], -1)
|
|
30
|
+
redis.call('LTRIM', KEYS[2], 0, ARGV[4] - 1)
|
|
31
|
+
return evicted
|
|
32
|
+
`;
|
|
33
|
+
const toEvict = (await this.redis.eval(script, 2, key, listKey, String(ttl), JSON.stringify(memory), memory.conversationId, String(this.MAX_CONVERSATIONS)));
|
|
28
34
|
// Delete evicted conversation data
|
|
29
35
|
for (const id of toEvict) {
|
|
30
|
-
|
|
36
|
+
if (id !== memory.conversationId) {
|
|
37
|
+
await this.redis.del(`${namespace}:working:${id}`);
|
|
38
|
+
}
|
|
31
39
|
}
|
|
32
40
|
}
|
|
33
|
-
async search(query, limit = 3, namespace =
|
|
41
|
+
async search(query, limit = 3, namespace = "default") {
|
|
34
42
|
const listKey = `${namespace}:working:recent`;
|
|
35
43
|
const recentIds = await this.redis.lrange(listKey, 0, this.MAX_CONVERSATIONS - 1);
|
|
36
44
|
const results = [];
|
|
37
|
-
const
|
|
38
|
-
|
|
45
|
+
const queryWords = query.toLowerCase().trim().split(/\s+/).filter(Boolean);
|
|
46
|
+
if (queryWords.length === 0)
|
|
47
|
+
return [];
|
|
39
48
|
for (const id of recentIds) {
|
|
40
49
|
const data = await this.redis.get(`${namespace}:working:${id}`);
|
|
41
50
|
if (!data)
|
|
42
51
|
continue;
|
|
43
52
|
const memory = JSON.parse(data);
|
|
44
53
|
const textLower = memory.fullText.toLowerCase();
|
|
45
|
-
const matchCount = queryWords.filter(word => textLower.includes(word)).length;
|
|
54
|
+
const matchCount = queryWords.filter((word) => textLower.includes(word)).length;
|
|
46
55
|
const similarity = matchCount / queryWords.length;
|
|
47
56
|
if (similarity > 0.3) {
|
|
48
57
|
results.push({ memory, similarity });
|
|
@@ -50,7 +59,7 @@ export class WorkingMemoryLayer {
|
|
|
50
59
|
}
|
|
51
60
|
return results.sort((a, b) => b.similarity - a.similarity).slice(0, limit);
|
|
52
61
|
}
|
|
53
|
-
async getRecent(limit = 5, namespace =
|
|
62
|
+
async getRecent(limit = 5, namespace = "default") {
|
|
54
63
|
const listKey = `${namespace}:working:recent`;
|
|
55
64
|
const recentIds = await this.redis.lrange(listKey, 0, limit - 1);
|
|
56
65
|
const memories = [];
|
|
@@ -61,18 +70,19 @@ export class WorkingMemoryLayer {
|
|
|
61
70
|
}
|
|
62
71
|
return memories;
|
|
63
72
|
}
|
|
64
|
-
async getAll(limit, namespace =
|
|
73
|
+
async getAll(limit, namespace = "default") {
|
|
65
74
|
return this.getRecent(limit || this.MAX_CONVERSATIONS, namespace);
|
|
66
75
|
}
|
|
67
|
-
async get(conversationId, namespace =
|
|
76
|
+
async get(conversationId, namespace = "default") {
|
|
68
77
|
const data = await this.redis.get(`${namespace}:working:${conversationId}`);
|
|
69
78
|
return data ? JSON.parse(data) : null;
|
|
70
79
|
}
|
|
71
|
-
async delete(conversationId, namespace =
|
|
80
|
+
async delete(conversationId, namespace = "default") {
|
|
72
81
|
await this.redis.del(`${namespace}:working:${conversationId}`);
|
|
73
|
-
|
|
82
|
+
// Remove every legacy duplicate left by pre-idempotency projection replay.
|
|
83
|
+
await this.redis.lrem(`${namespace}:working:recent`, 0, conversationId);
|
|
74
84
|
}
|
|
75
|
-
async searchByEntities(entities, limit = 3, namespace =
|
|
85
|
+
async searchByEntities(entities, limit = 3, namespace = "default") {
|
|
76
86
|
const listKey = `${namespace}:working:recent`;
|
|
77
87
|
const recentIds = await this.redis.lrange(listKey, 0, this.MAX_CONVERSATIONS - 1);
|
|
78
88
|
const results = [];
|
|
@@ -81,7 +91,7 @@ export class WorkingMemoryLayer {
|
|
|
81
91
|
if (!data)
|
|
82
92
|
continue;
|
|
83
93
|
const memory = JSON.parse(data);
|
|
84
|
-
const matchedEntities = entities.filter(entity => memory.keyEntities.some(ke => ke.toLowerCase() === entity.toLowerCase()));
|
|
94
|
+
const matchedEntities = entities.filter((entity) => memory.keyEntities.some((ke) => ke.toLowerCase() === entity.toLowerCase()));
|
|
85
95
|
const similarity = matchedEntities.length / entities.length;
|
|
86
96
|
if (similarity > 0) {
|
|
87
97
|
results.push({ memory, similarity, matchedEntities });
|
|
@@ -89,7 +99,7 @@ export class WorkingMemoryLayer {
|
|
|
89
99
|
}
|
|
90
100
|
return results.sort((a, b) => b.similarity - a.similarity).slice(0, limit);
|
|
91
101
|
}
|
|
92
|
-
async searchByTopics(topics, limit = 3, namespace =
|
|
102
|
+
async searchByTopics(topics, limit = 3, namespace = "default") {
|
|
93
103
|
const listKey = `${namespace}:working:recent`;
|
|
94
104
|
const recentIds = await this.redis.lrange(listKey, 0, this.MAX_CONVERSATIONS - 1);
|
|
95
105
|
const results = [];
|
|
@@ -98,7 +108,7 @@ export class WorkingMemoryLayer {
|
|
|
98
108
|
if (!data)
|
|
99
109
|
continue;
|
|
100
110
|
const memory = JSON.parse(data);
|
|
101
|
-
const matchedTopics = topics.filter(topic => memory.topics.some(t => t.toLowerCase() === topic.toLowerCase()));
|
|
111
|
+
const matchedTopics = topics.filter((topic) => memory.topics.some((t) => t.toLowerCase() === topic.toLowerCase()));
|
|
102
112
|
const similarity = matchedTopics.length / topics.length;
|
|
103
113
|
if (similarity > 0) {
|
|
104
114
|
results.push({ memory, similarity, matchedTopics });
|
|
@@ -106,7 +116,7 @@ export class WorkingMemoryLayer {
|
|
|
106
116
|
}
|
|
107
117
|
return results.sort((a, b) => b.similarity - a.similarity).slice(0, limit);
|
|
108
118
|
}
|
|
109
|
-
async getStats(namespace =
|
|
119
|
+
async getStats(namespace = "default") {
|
|
110
120
|
const listKey = `${namespace}:working:recent`;
|
|
111
121
|
const recentIds = await this.redis.lrange(listKey, 0, this.MAX_CONVERSATIONS - 1);
|
|
112
122
|
const memories = [];
|
|
@@ -120,16 +130,16 @@ export class WorkingMemoryLayer {
|
|
|
120
130
|
totalConversations: 0,
|
|
121
131
|
oldestConversation: null,
|
|
122
132
|
newestConversation: null,
|
|
123
|
-
totalTextSize: 0
|
|
133
|
+
totalTextSize: 0,
|
|
124
134
|
};
|
|
125
135
|
}
|
|
126
|
-
const timestamps = memories.map(m => new Date(m.timestamp));
|
|
136
|
+
const timestamps = memories.map((m) => new Date(m.timestamp));
|
|
127
137
|
const totalTextSize = memories.reduce((sum, m) => sum + m.fullText.length, 0);
|
|
128
138
|
return {
|
|
129
139
|
totalConversations: memories.length,
|
|
130
|
-
oldestConversation: new Date(Math.min(...timestamps.map(d => d.getTime()))),
|
|
131
|
-
newestConversation: new Date(Math.max(...timestamps.map(d => d.getTime()))),
|
|
132
|
-
totalTextSize
|
|
140
|
+
oldestConversation: new Date(Math.min(...timestamps.map((d) => d.getTime()))),
|
|
141
|
+
newestConversation: new Date(Math.max(...timestamps.map((d) => d.getTime()))),
|
|
142
|
+
totalTextSize,
|
|
133
143
|
};
|
|
134
144
|
}
|
|
135
145
|
/**
|
|
@@ -137,14 +147,14 @@ export class WorkingMemoryLayer {
|
|
|
137
147
|
*
|
|
138
148
|
* Uses SCAN instead of KEYS to avoid blocking Redis server.
|
|
139
149
|
*/
|
|
140
|
-
async clear(namespace =
|
|
141
|
-
let cursor =
|
|
150
|
+
async clear(namespace = "default") {
|
|
151
|
+
let cursor = "0";
|
|
142
152
|
const keysToDelete = [];
|
|
143
153
|
do {
|
|
144
|
-
const [nextCursor, keys] = await this.redis.scan(cursor,
|
|
154
|
+
const [nextCursor, keys] = await this.redis.scan(cursor, "MATCH", `${namespace}:working:*`, "COUNT", 100);
|
|
145
155
|
cursor = nextCursor;
|
|
146
156
|
keysToDelete.push(...keys);
|
|
147
|
-
} while (cursor !==
|
|
157
|
+
} while (cursor !== "0");
|
|
148
158
|
const BATCH_SIZE = 100;
|
|
149
159
|
for (let i = 0; i < keysToDelete.length; i += BATCH_SIZE) {
|
|
150
160
|
const batch = keysToDelete.slice(i, i + BATCH_SIZE);
|
|
@@ -156,7 +166,7 @@ export class WorkingMemoryLayer {
|
|
|
156
166
|
/**
|
|
157
167
|
* Cache a loaded skill in working memory
|
|
158
168
|
*/
|
|
159
|
-
async cacheSkill(skill, ttl = 3600, namespace =
|
|
169
|
+
async cacheSkill(skill, ttl = 3600, namespace = "default") {
|
|
160
170
|
const key = `${namespace}:skill:cache:${skill.id}`;
|
|
161
171
|
const cached = {
|
|
162
172
|
skill,
|
|
@@ -165,12 +175,12 @@ export class WorkingMemoryLayer {
|
|
|
165
175
|
ttl,
|
|
166
176
|
};
|
|
167
177
|
await this.redis.setex(key, ttl, JSON.stringify(cached));
|
|
168
|
-
console.
|
|
178
|
+
console.error(`[WorkingMemory] Cached skill: ${skill.name} (${skill.id}) for ${ttl}s`);
|
|
169
179
|
}
|
|
170
180
|
/**
|
|
171
181
|
* Get a cached skill from working memory
|
|
172
182
|
*/
|
|
173
|
-
async getCachedSkill(skillId, namespace =
|
|
183
|
+
async getCachedSkill(skillId, namespace = "default") {
|
|
174
184
|
const key = `${namespace}:skill:cache:${skillId}`;
|
|
175
185
|
const data = await this.redis.get(key);
|
|
176
186
|
if (!data) {
|
|
@@ -182,49 +192,49 @@ export class WorkingMemoryLayer {
|
|
|
182
192
|
if (ttl > 0) {
|
|
183
193
|
await this.redis.setex(key, ttl, JSON.stringify(cached));
|
|
184
194
|
}
|
|
185
|
-
console.
|
|
195
|
+
console.error(`[WorkingMemory] Skill cache hit: ${cached.skill.name} ` +
|
|
186
196
|
`(access count: ${cached.access_count}, TTL: ${ttl}s)`);
|
|
187
197
|
return cached;
|
|
188
198
|
}
|
|
189
199
|
/**
|
|
190
200
|
* Invalidate a cached skill
|
|
191
201
|
*/
|
|
192
|
-
async invalidateSkillCache(skillId, namespace =
|
|
202
|
+
async invalidateSkillCache(skillId, namespace = "default") {
|
|
193
203
|
const key = `${namespace}:skill:cache:${skillId}`;
|
|
194
204
|
await this.redis.del(key);
|
|
195
|
-
console.
|
|
205
|
+
console.error(`[WorkingMemory] Invalidated skill cache: ${skillId}`);
|
|
196
206
|
}
|
|
197
207
|
/**
|
|
198
208
|
* Get all cached skill IDs
|
|
199
209
|
*/
|
|
200
|
-
async getCachedSkillIds(namespace =
|
|
210
|
+
async getCachedSkillIds(namespace = "default") {
|
|
201
211
|
const pattern = `${namespace}:skill:cache:*`;
|
|
202
|
-
let cursor =
|
|
212
|
+
let cursor = "0";
|
|
203
213
|
const skillIds = [];
|
|
204
214
|
do {
|
|
205
|
-
const [nextCursor, keys] = await this.redis.scan(cursor,
|
|
215
|
+
const [nextCursor, keys] = await this.redis.scan(cursor, "MATCH", pattern, "COUNT", 100);
|
|
206
216
|
cursor = nextCursor;
|
|
207
217
|
for (const key of keys) {
|
|
208
|
-
const skillId = key.replace(`${namespace}:skill:cache:`,
|
|
218
|
+
const skillId = key.replace(`${namespace}:skill:cache:`, "");
|
|
209
219
|
skillIds.push(skillId);
|
|
210
220
|
}
|
|
211
|
-
} while (cursor !==
|
|
221
|
+
} while (cursor !== "0");
|
|
212
222
|
return skillIds;
|
|
213
223
|
}
|
|
214
224
|
/**
|
|
215
225
|
* Clear all cached skills for a namespace
|
|
216
226
|
*/
|
|
217
|
-
async clearSkillCache(namespace =
|
|
218
|
-
let cursor =
|
|
227
|
+
async clearSkillCache(namespace = "default") {
|
|
228
|
+
let cursor = "0";
|
|
219
229
|
const keysToDelete = [];
|
|
220
230
|
do {
|
|
221
|
-
const [nextCursor, keys] = await this.redis.scan(cursor,
|
|
231
|
+
const [nextCursor, keys] = await this.redis.scan(cursor, "MATCH", `${namespace}:skill:cache:*`, "COUNT", 100);
|
|
222
232
|
cursor = nextCursor;
|
|
223
233
|
keysToDelete.push(...keys);
|
|
224
|
-
} while (cursor !==
|
|
234
|
+
} while (cursor !== "0");
|
|
225
235
|
if (keysToDelete.length > 0) {
|
|
226
236
|
await this.redis.del(...keysToDelete);
|
|
227
|
-
console.
|
|
237
|
+
console.error(`[WorkingMemory] Cleared ${keysToDelete.length} cached skills`);
|
|
228
238
|
}
|
|
229
239
|
}
|
|
230
240
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"working-memory.js","sourceRoot":"","sources":["../../src/memory-layers/working-memory.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAeH,MAAM,OAAO,kBAAkB;IACrB,KAAK,CAAQ;IACJ,iBAAiB,CAAS;IAC1B,QAAQ,GAAG,CAAC,CAAC;IAE9B,YAAY,KAAY,EAAE,mBAA2B,CAAC;QACpD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,MAAqB,EAAE,YAAoB,SAAS;QAC9D,MAAM,GAAG,GAAG,GAAG,SAAS,YAAY,MAAM,CAAC,cAAc,EAAE,CAAC;QAC5D,MAAM,OAAO,GAAG,GAAG,SAAS,iBAAiB,CAAC;QAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;QAEzC,
|
|
1
|
+
{"version":3,"file":"working-memory.js","sourceRoot":"","sources":["../../src/memory-layers/working-memory.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hybrid-search.d.ts","sourceRoot":"","sources":["../../src/retrieval/hybrid-search.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAKH;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,IAAI,EAAE,MAAM,CAAC;CACd;AAWD;;;;;GAKG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,UAAU,CAAS;IAE3B;;;;;;;OAOG;gBAED,SAAS,GAAE,MAAgC,EAC3C,cAAc,GAAE,MAAyB,EACzC,UAAU,GAAE,MAAa,EACzB,MAAM,CAAC,EAAE,MAAM;IAmBjB;;;;;;;OAOG;IACG,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"hybrid-search.d.ts","sourceRoot":"","sources":["../../src/retrieval/hybrid-search.ts"],"names":[],"mappings":"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"}
|
|
@@ -60,7 +60,7 @@ export class HybridSearchEngine {
|
|
|
60
60
|
const collections = await this.client.getCollections();
|
|
61
61
|
const collectionExists = collections.collections.some((c) => c.name === this.collectionName);
|
|
62
62
|
if (collectionExists) {
|
|
63
|
-
console.
|
|
63
|
+
console.error(`Collection '${this.collectionName}' already exists`);
|
|
64
64
|
return;
|
|
65
65
|
}
|
|
66
66
|
// Create new collection with dense vector index
|
|
@@ -70,7 +70,7 @@ export class HybridSearchEngine {
|
|
|
70
70
|
distance: "Cosine",
|
|
71
71
|
},
|
|
72
72
|
});
|
|
73
|
-
console.
|
|
73
|
+
console.error(`Created collection '${this.collectionName}' with ${this.vectorSize}-dim vectors`);
|
|
74
74
|
// TODO: Phase 2 - Add sparse vector index
|
|
75
75
|
// TODO: Phase 2 - Add BM25 index
|
|
76
76
|
}
|
|
@@ -93,8 +93,9 @@ export class HybridSearchEngine {
|
|
|
93
93
|
// Validate vector dimensions and values (SEC-005)
|
|
94
94
|
validateVector(queryVector, this.vectorSize);
|
|
95
95
|
try {
|
|
96
|
-
|
|
97
|
-
|
|
96
|
+
// Qdrant client >= 1.17 removed `search`; `query` is the universal API.
|
|
97
|
+
const { points: searchResults } = await this.client.query(this.collectionName, {
|
|
98
|
+
query: queryVector,
|
|
98
99
|
limit: topK,
|
|
99
100
|
with_payload: true,
|
|
100
101
|
with_vector: false,
|
|
@@ -160,6 +161,10 @@ export class HybridSearchEngine {
|
|
|
160
161
|
* @returns Fused results sorted by RRF score
|
|
161
162
|
*/
|
|
162
163
|
static rrfFusion(denseResults, sparseResults = [], bm25Results = [], k = 60) {
|
|
164
|
+
// A single ranked list does not need rank fusion. Preserve the dense
|
|
165
|
+
// similarity in the compatibility `fusedScore` field so callers receive a
|
|
166
|
+
// meaningful score instead of the near-constant 1 / (k + rank) values.
|
|
167
|
+
const denseOnly = sparseResults.length === 0 && bm25Results.length === 0;
|
|
163
168
|
// Create a map to accumulate scores
|
|
164
169
|
const resultMap = new Map();
|
|
165
170
|
// Process dense results
|
|
@@ -168,7 +173,7 @@ export class HybridSearchEngine {
|
|
|
168
173
|
resultMap.set(result.id, {
|
|
169
174
|
id: result.id,
|
|
170
175
|
denseScore: result.score,
|
|
171
|
-
fusedScore: rrfScore,
|
|
176
|
+
fusedScore: denseOnly ? result.score : rrfScore,
|
|
172
177
|
payload: result.payload,
|
|
173
178
|
rank: 0, // Will be set after final sort
|
|
174
179
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hybrid-search.js","sourceRoot":"","sources":["../../src/retrieval/hybrid-search.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAmDhF;;;;;GAKG;AACH,MAAM,OAAO,kBAAkB;IACrB,MAAM,CAAe;IACrB,cAAc,CAAS;IACvB,UAAU,CAAS;IAE3B;;;;;;;OAOG;IACH,YACE,YAAoB,uBAAuB,EAC3C,iBAAyB,gBAAgB,EACzC,aAAqB,IAAI,EACzB,MAAe;QAEf,kEAAkE;QAClE,IAAI,CAAC,cAAc,GAAG,sBAAsB,CAAC,cAAc,CAAC,CAAC;QAC7D,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAE7B,MAAM,YAAY,GAAmE;YACnF,GAAG,EAAE,SAAS;YACd,kBAAkB,EAAE,KAAK,EAAE,wCAAwC;SACpE,CAAC;QAEF,0BAA0B;QAC1B,IAAI,MAAM,EAAE,CAAC;YACX,YAAY,CAAC,MAAM,GAAG,MAAM,CAAC;QAC/B,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,IAAI,YAAY,CAAC,YAAY,CAAC,CAAC;IAC/C,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,oBAAoB;QACxB,IAAI,CAAC;YACH,6BAA6B;YAC7B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;YACvD,MAAM,gBAAgB,GAAG,WAAW,CAAC,WAAW,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"hybrid-search.js","sourceRoot":"","sources":["../../src/retrieval/hybrid-search.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAmDhF;;;;;GAKG;AACH,MAAM,OAAO,kBAAkB;IACrB,MAAM,CAAe;IACrB,cAAc,CAAS;IACvB,UAAU,CAAS;IAE3B;;;;;;;OAOG;IACH,YACE,YAAoB,uBAAuB,EAC3C,iBAAyB,gBAAgB,EACzC,aAAqB,IAAI,EACzB,MAAe;QAEf,kEAAkE;QAClE,IAAI,CAAC,cAAc,GAAG,sBAAsB,CAAC,cAAc,CAAC,CAAC;QAC7D,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAE7B,MAAM,YAAY,GAAmE;YACnF,GAAG,EAAE,SAAS;YACd,kBAAkB,EAAE,KAAK,EAAE,wCAAwC;SACpE,CAAC;QAEF,0BAA0B;QAC1B,IAAI,MAAM,EAAE,CAAC;YACX,YAAY,CAAC,MAAM,GAAG,MAAM,CAAC;QAC/B,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,IAAI,YAAY,CAAC,YAAY,CAAC,CAAC;IAC/C,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,oBAAoB;QACxB,IAAI,CAAC;YACH,6BAA6B;YAC7B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;YACvD,MAAM,gBAAgB,GAAG,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,cAAc,CAAC,CAAC;YAE7F,IAAI,gBAAgB,EAAE,CAAC;gBACrB,OAAO,CAAC,KAAK,CAAC,eAAe,IAAI,CAAC,cAAc,kBAAkB,CAAC,CAAC;gBACpE,OAAO;YACT,CAAC;YAED,gDAAgD;YAChD,MAAM,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,EAAE;gBACtD,OAAO,EAAE;oBACP,IAAI,EAAE,IAAI,CAAC,UAAU;oBACrB,QAAQ,EAAE,QAAQ;iBACnB;aACF,CAAC,CAAC;YAEH,OAAO,CAAC,KAAK,CACX,uBAAuB,IAAI,CAAC,cAAc,UAAU,IAAI,CAAC,UAAU,cAAc,CAClF,CAAC;YAEF,0CAA0C;YAC1C,iCAAiC;QACnC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CACX,kCAAkC,EAClC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAC/C,CAAC;YACF,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,WAAW,CACf,WAAqB,EACrB,OAAe,CAAC,EAChB,MAAgC;QAEhC,kDAAkD;QAClD,cAAc,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAE7C,IAAI,CAAC;YACH,wEAAwE;YACxE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE;gBAC7E,KAAK,EAAE,WAAW;gBAClB,KAAK,EAAE,IAAI;gBACX,YAAY,EAAE,IAAI;gBAClB,WAAW,EAAE,KAAK;gBAClB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC9B,CAAC,CAAC;YAEH,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gBACpC,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;gBACrB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,SAAS;aACrC,CAAC,CAAC,CAAC;QACN,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACtF,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,YAAY,CAChB,kBAA0C,EAC1C,QAAgB,CAAC;QAEjB,OAAO,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;QAC5D,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,UAAU,CAAC,UAAkB,EAAE,QAAgB,CAAC;QACpD,OAAO,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;QAC1D,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACH,MAAM,CAAC,SAAS,CACd,YAAiC,EACjC,gBAAsC,EAAE,EACxC,cAAkC,EAAE,EACpC,IAAY,EAAE;QAEd,qEAAqE;QACrE,0EAA0E;QAC1E,uEAAuE;QACvE,MAAM,SAAS,GAAG,aAAa,CAAC,MAAM,KAAK,CAAC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,CAAC;QAEzE,oCAAoC;QACpC,MAAM,SAAS,GAAG,IAAI,GAAG,EAA8B,CAAC;QAExD,wBAAwB;QACxB,YAAY,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YACrC,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;YACrC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE;gBACvB,EAAE,EAAE,MAAM,CAAC,EAAE;gBACb,UAAU,EAAE,MAAM,CAAC,KAAK;gBACxB,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ;gBAC/C,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,IAAI,EAAE,CAAC,EAAE,+BAA+B;aACzC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,yBAAyB;QACzB,aAAa,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YACtC,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;YACrC,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC1C,IAAI,QAAQ,EAAE,CAAC;gBACb,QAAQ,CAAC,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC;gBACpC,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC;YAClC,CAAC;iBAAM,CAAC;gBACN,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE;oBACvB,EAAE,EAAE,MAAM,CAAC,EAAE;oBACb,WAAW,EAAE,MAAM,CAAC,KAAK;oBACzB,UAAU,EAAE,QAAQ;oBACpB,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,IAAI,EAAE,CAAC;iBACR,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,uBAAuB;QACvB,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YACpC,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;YACrC,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC1C,IAAI,QAAQ,EAAE,CAAC;gBACb,QAAQ,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC;gBAClC,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC;YAClC,CAAC;iBAAM,CAAC;gBACN,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE;oBACvB,EAAE,EAAE,MAAM,CAAC,EAAE;oBACb,SAAS,EAAE,MAAM,CAAC,KAAK;oBACvB,UAAU,EAAE,QAAQ;oBACpB,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,IAAI,EAAE,CAAC;iBACR,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,uCAAuC;QACvC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;aACzC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC;aAC3C,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YACrB,MAAM,CAAC,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC;YACxB,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CAAC;QAEL,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACH,KAAK,CAAC,YAAY,CAChB,WAAqB,EACrB,OAAe,CAAC,EAChB,MAAgC;QAEhC,6BAA6B;QAC7B,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAEvE,oCAAoC;QACpC,0EAA0E;QAC1E,8DAA8D;QAE9D,2BAA2B;QAC3B,MAAM,KAAK,GAAG,kBAAkB,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAEzD,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,YAAY,CAChB,EAAU,EACV,MAAgB,EAChB,OAAiC;QAEjC,kDAAkD;QAClD,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAExC,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE;gBAC5C,IAAI,EAAE,IAAI,EAAE,wEAAwE;gBACpF,MAAM,EAAE;oBACN;wBACE,EAAE,EAAE,EAAE;wBACN,MAAM,EAAE,MAAM;wBACd,OAAO,EAAE,OAAO,IAAI,EAAE;qBACvB;iBACF;aACF,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAC1F,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,YAAY,CAAC,EAAU;QAC3B,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE;gBAC5C,IAAI,EAAE,IAAI,EAAE,iDAAiD;gBAC7D,MAAM,EAAE,CAAC,EAAE,CAAC;aACb,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAC1F,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,kBAAkB;QACtB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAClE,OAAO;gBACL,WAAW,EAAE,IAAI,CAAC,YAAY;gBAC9B,mBAAmB,EAAE,IAAI,CAAC,qBAAqB;gBAC/C,aAAa,EAAE,IAAI,CAAC,cAAc;gBAClC,MAAM,EAAE,IAAI,CAAC,MAAM;aACpB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CACX,iCAAiC,EACjC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAC/C,CAAC;YACF,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,SAAkB,EAClB,cAAuB,EACvB,UAAmB,EACnB,MAAe;IAEf,MAAM,MAAM,GAAG,IAAI,kBAAkB,CAAC,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IACrF,MAAM,MAAM,CAAC,oBAAoB,EAAE,CAAC;IACpC,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { EmbeddingClient } from "../embeddings/client.js";
|
|
2
|
+
import type { WorkingMemoryLayer } from "../memory-layers/working-memory.js";
|
|
3
|
+
import type { HybridSearchEngine } from "./hybrid-search.js";
|
|
4
|
+
export type IndexOperation = "upsert" | "delete";
|
|
5
|
+
export type IndexState = "indexed" | "pending";
|
|
6
|
+
export interface IndexMutation {
|
|
7
|
+
memoryId: string;
|
|
8
|
+
operation: IndexOperation;
|
|
9
|
+
namespace: string;
|
|
10
|
+
content?: string;
|
|
11
|
+
memoryType?: string;
|
|
12
|
+
metadata?: Record<string, unknown>;
|
|
13
|
+
agentId?: string;
|
|
14
|
+
taskId?: string;
|
|
15
|
+
createdAt: number;
|
|
16
|
+
}
|
|
17
|
+
export interface IndexDrainStats {
|
|
18
|
+
examined: number;
|
|
19
|
+
completed: number;
|
|
20
|
+
pending: number;
|
|
21
|
+
errors: string[];
|
|
22
|
+
}
|
|
23
|
+
export declare function initializeIndexOutboxSchema(db: any): void;
|
|
24
|
+
/**
|
|
25
|
+
* Keeps Redis and Qdrant as rebuildable projections of canonical SQLite rows.
|
|
26
|
+
* Enqueue methods are synchronous so callers can include them in a SQLite
|
|
27
|
+
* transaction. Draining is best-effort and may be retried safely.
|
|
28
|
+
*/
|
|
29
|
+
export declare class IndexOutboxProcessor {
|
|
30
|
+
private readonly db;
|
|
31
|
+
private readonly dependencies;
|
|
32
|
+
private activeDrain?;
|
|
33
|
+
private readonly desiredQdrantProjection;
|
|
34
|
+
private readonly desiredRedisProjection;
|
|
35
|
+
constructor(db: any, dependencies: {
|
|
36
|
+
embeddingClient?: EmbeddingClient;
|
|
37
|
+
hybridSearch?: HybridSearchEngine;
|
|
38
|
+
workingMemory?: WorkingMemoryLayer;
|
|
39
|
+
projectionConfig?: {
|
|
40
|
+
qdrant: boolean;
|
|
41
|
+
redis: boolean;
|
|
42
|
+
};
|
|
43
|
+
});
|
|
44
|
+
enqueue(mutation: IndexMutation): void;
|
|
45
|
+
getState(memoryId: string): IndexState;
|
|
46
|
+
getPendingCount(): number;
|
|
47
|
+
drain(limit?: number): Promise<IndexDrainStats>;
|
|
48
|
+
private performDrain;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=index-outbox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-outbox.d.ts","sourceRoot":"","sources":["../../src/retrieval/index-outbox.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE7D,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,QAAQ,CAAC;AACjD,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;AAE/C,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,cAAc,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAkBD,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,wBAAgB,2BAA2B,CAAC,EAAE,EAAE,GAAG,GAAG,IAAI,CA8BzD;AAED;;;;GAIG;AACH,qBAAa,oBAAoB;IAM7B,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAN/B,OAAO,CAAC,WAAW,CAAC,CAA2B;IAC/C,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAU;IAClD,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAU;gBAG9B,EAAE,EAAE,GAAG,EACP,YAAY,EAAE;QAC7B,eAAe,CAAC,EAAE,eAAe,CAAC;QAClC,YAAY,CAAC,EAAE,kBAAkB,CAAC;QAClC,aAAa,CAAC,EAAE,kBAAkB,CAAC;QACnC,gBAAgB,CAAC,EAAE;YAAE,MAAM,EAAE,OAAO,CAAC;YAAC,KAAK,EAAE,OAAO,CAAA;SAAE,CAAC;KACxD;IASH,OAAO,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI;IAmDtC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU;IAKtC,eAAe,IAAI,MAAM;IAOzB,KAAK,CAAC,KAAK,GAAE,MAAY,GAAG,OAAO,CAAC,eAAe,CAAC;YAStC,YAAY;CAyH3B"}
|