family-ai-agent 1.0.6 → 1.0.7
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/.letta/settings.local.json +3 -0
- package/dist/database/adapters/base-adapter.d.ts +81 -0
- package/dist/database/adapters/base-adapter.d.ts.map +1 -0
- package/dist/database/adapters/base-adapter.js +105 -0
- package/dist/database/adapters/base-adapter.js.map +1 -0
- package/dist/database/adapters/index.d.ts +49 -0
- package/dist/database/adapters/index.d.ts.map +1 -0
- package/dist/database/adapters/index.js +200 -0
- package/dist/database/adapters/index.js.map +1 -0
- package/dist/database/adapters/postgres-adapter.d.ts +75 -0
- package/dist/database/adapters/postgres-adapter.d.ts.map +1 -0
- package/dist/database/adapters/postgres-adapter.js +225 -0
- package/dist/database/adapters/postgres-adapter.js.map +1 -0
- package/dist/database/adapters/sqlite-adapter.d.ts +72 -0
- package/dist/database/adapters/sqlite-adapter.d.ts.map +1 -0
- package/dist/database/adapters/sqlite-adapter.js +368 -0
- package/dist/database/adapters/sqlite-adapter.js.map +1 -0
- package/dist/database/cache/cache-keys.d.ts +180 -0
- package/dist/database/cache/cache-keys.d.ts.map +1 -0
- package/dist/database/cache/cache-keys.js +107 -0
- package/dist/database/cache/cache-keys.js.map +1 -0
- package/dist/database/cache/index.d.ts +24 -0
- package/dist/database/cache/index.d.ts.map +1 -0
- package/dist/database/cache/index.js +34 -0
- package/dist/database/cache/index.js.map +1 -0
- package/dist/database/cache/query-cache.d.ts +67 -0
- package/dist/database/cache/query-cache.d.ts.map +1 -0
- package/dist/database/cache/query-cache.js +177 -0
- package/dist/database/cache/query-cache.js.map +1 -0
- package/dist/database/client.d.ts +63 -4
- package/dist/database/client.d.ts.map +1 -1
- package/dist/database/client.js +147 -59
- package/dist/database/client.js.map +1 -1
- package/dist/database/db-config.d.ts +104 -0
- package/dist/database/db-config.d.ts.map +1 -0
- package/dist/database/db-config.js +167 -0
- package/dist/database/db-config.js.map +1 -0
- package/dist/database/drizzle/index.d.ts +42 -0
- package/dist/database/drizzle/index.d.ts.map +1 -0
- package/dist/database/drizzle/index.js +48 -0
- package/dist/database/drizzle/index.js.map +1 -0
- package/dist/database/drizzle/schema/audit.d.ts +533 -0
- package/dist/database/drizzle/schema/audit.d.ts.map +1 -0
- package/dist/database/drizzle/schema/audit.js +71 -0
- package/dist/database/drizzle/schema/audit.js.map +1 -0
- package/dist/database/drizzle/schema/checkpoints.d.ts +665 -0
- package/dist/database/drizzle/schema/checkpoints.d.ts.map +1 -0
- package/dist/database/drizzle/schema/checkpoints.js +110 -0
- package/dist/database/drizzle/schema/checkpoints.js.map +1 -0
- package/dist/database/drizzle/schema/conversations.d.ts +449 -0
- package/dist/database/drizzle/schema/conversations.d.ts.map +1 -0
- package/dist/database/drizzle/schema/conversations.js +91 -0
- package/dist/database/drizzle/schema/conversations.js.map +1 -0
- package/dist/database/drizzle/schema/documents.d.ts +600 -0
- package/dist/database/drizzle/schema/documents.d.ts.map +1 -0
- package/dist/database/drizzle/schema/documents.js +100 -0
- package/dist/database/drizzle/schema/documents.js.map +1 -0
- package/dist/database/drizzle/schema/index.d.ts +3084 -0
- package/dist/database/drizzle/schema/index.d.ts.map +1 -0
- package/dist/database/drizzle/schema/index.js +46 -0
- package/dist/database/drizzle/schema/index.js.map +1 -0
- package/dist/database/drizzle/schema/memories.d.ts +435 -0
- package/dist/database/drizzle/schema/memories.d.ts.map +1 -0
- package/dist/database/drizzle/schema/memories.js +73 -0
- package/dist/database/drizzle/schema/memories.js.map +1 -0
- package/dist/database/drizzle/schema/tasks.d.ts +565 -0
- package/dist/database/drizzle/schema/tasks.d.ts.map +1 -0
- package/dist/database/drizzle/schema/tasks.js +84 -0
- package/dist/database/drizzle/schema/tasks.js.map +1 -0
- package/dist/database/health/circuit-breaker.d.ts +81 -0
- package/dist/database/health/circuit-breaker.d.ts.map +1 -0
- package/dist/database/health/circuit-breaker.js +184 -0
- package/dist/database/health/circuit-breaker.js.map +1 -0
- package/dist/database/health/health-monitor.d.ts +69 -0
- package/dist/database/health/health-monitor.d.ts.map +1 -0
- package/dist/database/health/health-monitor.js +174 -0
- package/dist/database/health/health-monitor.js.map +1 -0
- package/dist/database/health/index.d.ts +27 -0
- package/dist/database/health/index.d.ts.map +1 -0
- package/dist/database/health/index.js +23 -0
- package/dist/database/health/index.js.map +1 -0
- package/dist/database/index.d.ts +16 -0
- package/dist/database/index.d.ts.map +1 -0
- package/dist/database/index.js +41 -0
- package/dist/database/index.js.map +1 -0
- package/dist/database/migrations/index.d.ts +34 -0
- package/dist/database/migrations/index.d.ts.map +1 -0
- package/dist/database/migrations/index.js +45 -0
- package/dist/database/migrations/index.js.map +1 -0
- package/dist/database/migrations/migrator.d.ts +77 -0
- package/dist/database/migrations/migrator.d.ts.map +1 -0
- package/dist/database/migrations/migrator.js +258 -0
- package/dist/database/migrations/migrator.js.map +1 -0
- package/dist/database/migrations/versions/001_initial.d.ts +9 -0
- package/dist/database/migrations/versions/001_initial.d.ts.map +1 -0
- package/dist/database/migrations/versions/001_initial.js +183 -0
- package/dist/database/migrations/versions/001_initial.js.map +1 -0
- package/dist/database/types.d.ts +255 -0
- package/dist/database/types.d.ts.map +1 -0
- package/dist/database/types.js +8 -0
- package/dist/database/types.js.map +1 -0
- package/dist/database/vector/embedding-cache.d.ts +92 -0
- package/dist/database/vector/embedding-cache.d.ts.map +1 -0
- package/dist/database/vector/embedding-cache.js +185 -0
- package/dist/database/vector/embedding-cache.js.map +1 -0
- package/dist/database/vector/hnsw-index.d.ts +111 -0
- package/dist/database/vector/hnsw-index.d.ts.map +1 -0
- package/dist/database/vector/hnsw-index.js +337 -0
- package/dist/database/vector/hnsw-index.js.map +1 -0
- package/dist/database/vector/index.d.ts +75 -0
- package/dist/database/vector/index.d.ts.map +1 -0
- package/dist/database/vector/index.js +213 -0
- package/dist/database/vector/index.js.map +1 -0
- package/dist/database/vector/similarity.d.ts +67 -0
- package/dist/database/vector/similarity.d.ts.map +1 -0
- package/dist/database/vector/similarity.js +176 -0
- package/dist/database/vector/similarity.js.map +1 -0
- package/package.json +6 -3
- package/src/database/adapters/base-adapter.ts +171 -0
- package/src/database/adapters/index.ts +224 -0
- package/src/database/adapters/postgres-adapter.ts +285 -0
- package/src/database/adapters/sqlite-adapter.ts +420 -0
- package/src/database/cache/cache-keys.ts +150 -0
- package/src/database/cache/index.ts +44 -0
- package/src/database/cache/query-cache.ts +213 -0
- package/src/database/client.ts +166 -64
- package/src/database/db-config.ts +194 -0
- package/src/database/drizzle/index.ts +66 -0
- package/src/database/drizzle/schema/audit.ts +127 -0
- package/src/database/drizzle/schema/checkpoints.ts +164 -0
- package/src/database/drizzle/schema/conversations.ts +138 -0
- package/src/database/drizzle/schema/documents.ts +157 -0
- package/src/database/drizzle/schema/index.ts +139 -0
- package/src/database/drizzle/schema/memories.ts +127 -0
- package/src/database/drizzle/schema/tasks.ts +129 -0
- package/src/database/health/circuit-breaker.ts +214 -0
- package/src/database/health/health-monitor.ts +224 -0
- package/src/database/health/index.ts +41 -0
- package/src/database/index.ts +157 -0
- package/src/database/migrations/index.ts +52 -0
- package/src/database/migrations/migrator.ts +325 -0
- package/src/database/migrations/versions/001_initial.ts +198 -0
- package/src/database/types.ts +324 -0
- package/src/database/vector/embedding-cache.ts +234 -0
- package/src/database/vector/hnsw-index.ts +452 -0
- package/src/database/vector/index.ts +292 -0
- package/src/database/vector/similarity.ts +198 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite-adapter.js","sourceRoot":"","sources":["../../../src/database/adapters/sqlite-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cache Key Generation
|
|
3
|
+
*
|
|
4
|
+
* Utilities for generating consistent cache keys.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Generate a cache key from operation, table, and parameters
|
|
8
|
+
*/
|
|
9
|
+
export declare function generateCacheKey(operation: string, table: string, params: Record<string, unknown>): string;
|
|
10
|
+
/**
|
|
11
|
+
* Cache key generators for common operations
|
|
12
|
+
*/
|
|
13
|
+
export declare const cacheKeys: {
|
|
14
|
+
/**
|
|
15
|
+
* Get conversation by thread ID
|
|
16
|
+
*/
|
|
17
|
+
conversation: (threadId: string) => string;
|
|
18
|
+
/**
|
|
19
|
+
* Get conversation by ID
|
|
20
|
+
*/
|
|
21
|
+
conversationById: (id: string) => string;
|
|
22
|
+
/**
|
|
23
|
+
* List messages for a conversation
|
|
24
|
+
*/
|
|
25
|
+
messages: (conversationId: string, limit: number, offset: number) => string;
|
|
26
|
+
/**
|
|
27
|
+
* Get document by ID
|
|
28
|
+
*/
|
|
29
|
+
document: (id: string) => string;
|
|
30
|
+
/**
|
|
31
|
+
* List documents for a user
|
|
32
|
+
*/
|
|
33
|
+
userDocuments: (userId: string, limit: number, offset: number) => string;
|
|
34
|
+
/**
|
|
35
|
+
* Get memory by ID
|
|
36
|
+
*/
|
|
37
|
+
memory: (id: string) => string;
|
|
38
|
+
/**
|
|
39
|
+
* List recent memories for a user
|
|
40
|
+
*/
|
|
41
|
+
userMemories: (userId: string, limit: number) => string;
|
|
42
|
+
/**
|
|
43
|
+
* Vector search results
|
|
44
|
+
*/
|
|
45
|
+
vectorSearch: (embeddingHash: string, options: Record<string, unknown>) => string;
|
|
46
|
+
/**
|
|
47
|
+
* Task by ID
|
|
48
|
+
*/
|
|
49
|
+
task: (id: string) => string;
|
|
50
|
+
/**
|
|
51
|
+
* List tasks for a user
|
|
52
|
+
*/
|
|
53
|
+
userTasks: (userId: string, status: string, limit: number) => string;
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* Invalidation patterns for write operations
|
|
57
|
+
*/
|
|
58
|
+
export declare const invalidationPatterns: {
|
|
59
|
+
/**
|
|
60
|
+
* Invalidate all conversation-related cache
|
|
61
|
+
*/
|
|
62
|
+
conversation: (conversationId: string) => RegExp;
|
|
63
|
+
/**
|
|
64
|
+
* Invalidate all message-related cache for a conversation
|
|
65
|
+
*/
|
|
66
|
+
messages: (conversationId: string) => RegExp;
|
|
67
|
+
/**
|
|
68
|
+
* Invalidate all document-related cache
|
|
69
|
+
*/
|
|
70
|
+
document: (documentId: string) => RegExp;
|
|
71
|
+
/**
|
|
72
|
+
* Invalidate user's document list
|
|
73
|
+
*/
|
|
74
|
+
userDocuments: (userId: string) => string;
|
|
75
|
+
/**
|
|
76
|
+
* Invalidate all memory-related cache
|
|
77
|
+
*/
|
|
78
|
+
memory: (memoryId: string) => RegExp;
|
|
79
|
+
/**
|
|
80
|
+
* Invalidate user's memory list
|
|
81
|
+
*/
|
|
82
|
+
userMemories: (userId: string) => string;
|
|
83
|
+
/**
|
|
84
|
+
* Invalidate all vector search results
|
|
85
|
+
*/
|
|
86
|
+
vectorSearchAll: () => string;
|
|
87
|
+
/**
|
|
88
|
+
* Invalidate all task-related cache
|
|
89
|
+
*/
|
|
90
|
+
task: (taskId: string) => RegExp;
|
|
91
|
+
/**
|
|
92
|
+
* Invalidate user's task list
|
|
93
|
+
*/
|
|
94
|
+
userTasks: (userId: string) => string;
|
|
95
|
+
};
|
|
96
|
+
declare const _default: {
|
|
97
|
+
generateCacheKey: typeof generateCacheKey;
|
|
98
|
+
cacheKeys: {
|
|
99
|
+
/**
|
|
100
|
+
* Get conversation by thread ID
|
|
101
|
+
*/
|
|
102
|
+
conversation: (threadId: string) => string;
|
|
103
|
+
/**
|
|
104
|
+
* Get conversation by ID
|
|
105
|
+
*/
|
|
106
|
+
conversationById: (id: string) => string;
|
|
107
|
+
/**
|
|
108
|
+
* List messages for a conversation
|
|
109
|
+
*/
|
|
110
|
+
messages: (conversationId: string, limit: number, offset: number) => string;
|
|
111
|
+
/**
|
|
112
|
+
* Get document by ID
|
|
113
|
+
*/
|
|
114
|
+
document: (id: string) => string;
|
|
115
|
+
/**
|
|
116
|
+
* List documents for a user
|
|
117
|
+
*/
|
|
118
|
+
userDocuments: (userId: string, limit: number, offset: number) => string;
|
|
119
|
+
/**
|
|
120
|
+
* Get memory by ID
|
|
121
|
+
*/
|
|
122
|
+
memory: (id: string) => string;
|
|
123
|
+
/**
|
|
124
|
+
* List recent memories for a user
|
|
125
|
+
*/
|
|
126
|
+
userMemories: (userId: string, limit: number) => string;
|
|
127
|
+
/**
|
|
128
|
+
* Vector search results
|
|
129
|
+
*/
|
|
130
|
+
vectorSearch: (embeddingHash: string, options: Record<string, unknown>) => string;
|
|
131
|
+
/**
|
|
132
|
+
* Task by ID
|
|
133
|
+
*/
|
|
134
|
+
task: (id: string) => string;
|
|
135
|
+
/**
|
|
136
|
+
* List tasks for a user
|
|
137
|
+
*/
|
|
138
|
+
userTasks: (userId: string, status: string, limit: number) => string;
|
|
139
|
+
};
|
|
140
|
+
invalidationPatterns: {
|
|
141
|
+
/**
|
|
142
|
+
* Invalidate all conversation-related cache
|
|
143
|
+
*/
|
|
144
|
+
conversation: (conversationId: string) => RegExp;
|
|
145
|
+
/**
|
|
146
|
+
* Invalidate all message-related cache for a conversation
|
|
147
|
+
*/
|
|
148
|
+
messages: (conversationId: string) => RegExp;
|
|
149
|
+
/**
|
|
150
|
+
* Invalidate all document-related cache
|
|
151
|
+
*/
|
|
152
|
+
document: (documentId: string) => RegExp;
|
|
153
|
+
/**
|
|
154
|
+
* Invalidate user's document list
|
|
155
|
+
*/
|
|
156
|
+
userDocuments: (userId: string) => string;
|
|
157
|
+
/**
|
|
158
|
+
* Invalidate all memory-related cache
|
|
159
|
+
*/
|
|
160
|
+
memory: (memoryId: string) => RegExp;
|
|
161
|
+
/**
|
|
162
|
+
* Invalidate user's memory list
|
|
163
|
+
*/
|
|
164
|
+
userMemories: (userId: string) => string;
|
|
165
|
+
/**
|
|
166
|
+
* Invalidate all vector search results
|
|
167
|
+
*/
|
|
168
|
+
vectorSearchAll: () => string;
|
|
169
|
+
/**
|
|
170
|
+
* Invalidate all task-related cache
|
|
171
|
+
*/
|
|
172
|
+
task: (taskId: string) => RegExp;
|
|
173
|
+
/**
|
|
174
|
+
* Invalidate user's task list
|
|
175
|
+
*/
|
|
176
|
+
userTasks: (userId: string) => string;
|
|
177
|
+
};
|
|
178
|
+
};
|
|
179
|
+
export default _default;
|
|
180
|
+
//# sourceMappingURL=cache-keys.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache-keys.d.ts","sourceRoot":"","sources":["../../../src/database/cache/cache-keys.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,MAAM,CAOR;AAED;;GAEG;AACH,eAAO,MAAM,SAAS;IACpB;;OAEG;6BACsB,MAAM,KAAG,MAAM;IAGxC;;OAEG;2BACoB,MAAM,KAAG,MAAM;IAGtC;;OAEG;+BACwB,MAAM,SAAS,MAAM,UAAU,MAAM,KAAG,MAAM;IAGzE;;OAEG;mBACY,MAAM,KAAG,MAAM;IAG9B;;OAEG;4BACqB,MAAM,SAAS,MAAM,UAAU,MAAM,KAAG,MAAM;IAGtE;;OAEG;iBACU,MAAM,KAAG,MAAM;IAG5B;;OAEG;2BACoB,MAAM,SAAS,MAAM,KAAG,MAAM;IAGrD;;OAEG;kCAEc,MAAM,WACZ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC/B,MAAM;IAGT;;OAEG;eACQ,MAAM,KAAG,MAAM;IAG1B;;OAEG;wBACiB,MAAM,UAAU,MAAM,SAAS,MAAM,KAAG,MAAM;CAEnE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB;IAC/B;;OAEG;mCAC4B,MAAM,KAAG,MAAM;IAG9C;;OAEG;+BACwB,MAAM,KAAG,MAAM;IAG1C;;OAEG;2BACoB,MAAM,KAAG,MAAM;IAGtC;;OAEG;4BACqB,MAAM,KAAG,MAAM;IAEvC;;OAEG;uBACgB,MAAM,KAAG,MAAM;IAGlC;;OAEG;2BACoB,MAAM,KAAG,MAAM;IAGtC;;OAEG;2BACkB,MAAM;IAE3B;;OAEG;mBACY,MAAM,KAAG,MAAM;IAE9B;;OAEG;wBACiB,MAAM,KAAG,MAAM;CACpC,CAAC;;;;QArHA;;WAEG;iCACsB,MAAM,KAAG,MAAM;QAGxC;;WAEG;+BACoB,MAAM,KAAG,MAAM;QAGtC;;WAEG;mCACwB,MAAM,SAAS,MAAM,UAAU,MAAM,KAAG,MAAM;QAGzE;;WAEG;uBACY,MAAM,KAAG,MAAM;QAG9B;;WAEG;gCACqB,MAAM,SAAS,MAAM,UAAU,MAAM,KAAG,MAAM;QAGtE;;WAEG;qBACU,MAAM,KAAG,MAAM;QAG5B;;WAEG;+BACoB,MAAM,SAAS,MAAM,KAAG,MAAM;QAGrD;;WAEG;sCAEc,MAAM,WACZ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC/B,MAAM;QAGT;;WAEG;mBACQ,MAAM,KAAG,MAAM;QAG1B;;WAEG;4BACiB,MAAM,UAAU,MAAM,SAAS,MAAM,KAAG,MAAM;;;QAQlE;;WAEG;uCAC4B,MAAM,KAAG,MAAM;QAG9C;;WAEG;mCACwB,MAAM,KAAG,MAAM;QAG1C;;WAEG;+BACoB,MAAM,KAAG,MAAM;QAGtC;;WAEG;gCACqB,MAAM,KAAG,MAAM;QAEvC;;WAEG;2BACgB,MAAM,KAAG,MAAM;QAGlC;;WAEG;+BACoB,MAAM,KAAG,MAAM;QAGtC;;WAEG;+BACkB,MAAM;QAE3B;;WAEG;uBACY,MAAM,KAAG,MAAM;QAE9B;;WAEG;4BACiB,MAAM,KAAG,MAAM;;;AAGrC,wBAIE"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cache Key Generation
|
|
3
|
+
*
|
|
4
|
+
* Utilities for generating consistent cache keys.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Generate a cache key from operation, table, and parameters
|
|
8
|
+
*/
|
|
9
|
+
export function generateCacheKey(operation, table, params) {
|
|
10
|
+
const sortedParams = Object.keys(params)
|
|
11
|
+
.sort()
|
|
12
|
+
.map((key) => `${key}:${JSON.stringify(params[key])}`)
|
|
13
|
+
.join('|');
|
|
14
|
+
return `${operation}:${table}:${sortedParams}`;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Cache key generators for common operations
|
|
18
|
+
*/
|
|
19
|
+
export const cacheKeys = {
|
|
20
|
+
/**
|
|
21
|
+
* Get conversation by thread ID
|
|
22
|
+
*/
|
|
23
|
+
conversation: (threadId) => generateCacheKey('get', 'conversations', { threadId }),
|
|
24
|
+
/**
|
|
25
|
+
* Get conversation by ID
|
|
26
|
+
*/
|
|
27
|
+
conversationById: (id) => generateCacheKey('get', 'conversations', { id }),
|
|
28
|
+
/**
|
|
29
|
+
* List messages for a conversation
|
|
30
|
+
*/
|
|
31
|
+
messages: (conversationId, limit, offset) => generateCacheKey('list', 'messages', { conversationId, limit, offset }),
|
|
32
|
+
/**
|
|
33
|
+
* Get document by ID
|
|
34
|
+
*/
|
|
35
|
+
document: (id) => generateCacheKey('get', 'documents', { id }),
|
|
36
|
+
/**
|
|
37
|
+
* List documents for a user
|
|
38
|
+
*/
|
|
39
|
+
userDocuments: (userId, limit, offset) => generateCacheKey('list', 'documents', { userId, limit, offset }),
|
|
40
|
+
/**
|
|
41
|
+
* Get memory by ID
|
|
42
|
+
*/
|
|
43
|
+
memory: (id) => generateCacheKey('get', 'long_term_memories', { id }),
|
|
44
|
+
/**
|
|
45
|
+
* List recent memories for a user
|
|
46
|
+
*/
|
|
47
|
+
userMemories: (userId, limit) => generateCacheKey('list', 'long_term_memories', { userId, limit }),
|
|
48
|
+
/**
|
|
49
|
+
* Vector search results
|
|
50
|
+
*/
|
|
51
|
+
vectorSearch: (embeddingHash, options) => generateCacheKey('search', 'embeddings', { hash: embeddingHash, ...options }),
|
|
52
|
+
/**
|
|
53
|
+
* Task by ID
|
|
54
|
+
*/
|
|
55
|
+
task: (id) => generateCacheKey('get', 'tasks', { id }),
|
|
56
|
+
/**
|
|
57
|
+
* List tasks for a user
|
|
58
|
+
*/
|
|
59
|
+
userTasks: (userId, status, limit) => generateCacheKey('list', 'tasks', { userId, status, limit }),
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* Invalidation patterns for write operations
|
|
63
|
+
*/
|
|
64
|
+
export const invalidationPatterns = {
|
|
65
|
+
/**
|
|
66
|
+
* Invalidate all conversation-related cache
|
|
67
|
+
*/
|
|
68
|
+
conversation: (conversationId) => new RegExp(`conversations.*${conversationId}`),
|
|
69
|
+
/**
|
|
70
|
+
* Invalidate all message-related cache for a conversation
|
|
71
|
+
*/
|
|
72
|
+
messages: (conversationId) => new RegExp(`messages.*${conversationId}`),
|
|
73
|
+
/**
|
|
74
|
+
* Invalidate all document-related cache
|
|
75
|
+
*/
|
|
76
|
+
document: (documentId) => new RegExp(`documents.*${documentId}`),
|
|
77
|
+
/**
|
|
78
|
+
* Invalidate user's document list
|
|
79
|
+
*/
|
|
80
|
+
userDocuments: (userId) => `list:documents:userId:"${userId}"`,
|
|
81
|
+
/**
|
|
82
|
+
* Invalidate all memory-related cache
|
|
83
|
+
*/
|
|
84
|
+
memory: (memoryId) => new RegExp(`long_term_memories.*${memoryId}`),
|
|
85
|
+
/**
|
|
86
|
+
* Invalidate user's memory list
|
|
87
|
+
*/
|
|
88
|
+
userMemories: (userId) => `list:long_term_memories:userId:"${userId}"`,
|
|
89
|
+
/**
|
|
90
|
+
* Invalidate all vector search results
|
|
91
|
+
*/
|
|
92
|
+
vectorSearchAll: () => 'search:embeddings',
|
|
93
|
+
/**
|
|
94
|
+
* Invalidate all task-related cache
|
|
95
|
+
*/
|
|
96
|
+
task: (taskId) => new RegExp(`tasks.*${taskId}`),
|
|
97
|
+
/**
|
|
98
|
+
* Invalidate user's task list
|
|
99
|
+
*/
|
|
100
|
+
userTasks: (userId) => `list:tasks:userId:"${userId}"`,
|
|
101
|
+
};
|
|
102
|
+
export default {
|
|
103
|
+
generateCacheKey,
|
|
104
|
+
cacheKeys,
|
|
105
|
+
invalidationPatterns,
|
|
106
|
+
};
|
|
107
|
+
//# sourceMappingURL=cache-keys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache-keys.js","sourceRoot":"","sources":["../../../src/database/cache/cache-keys.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cache Layer Exports
|
|
3
|
+
*
|
|
4
|
+
* Central export for query caching functionality.
|
|
5
|
+
*/
|
|
6
|
+
export { QueryCache } from './query-cache.js';
|
|
7
|
+
export { generateCacheKey, cacheKeys, invalidationPatterns, } from './cache-keys.js';
|
|
8
|
+
import { QueryCache } from './query-cache.js';
|
|
9
|
+
import type { QueryCacheOptions } from '../types.js';
|
|
10
|
+
/**
|
|
11
|
+
* Get the global query cache instance
|
|
12
|
+
*/
|
|
13
|
+
export declare function getQueryCache(options?: Partial<QueryCacheOptions>): QueryCache;
|
|
14
|
+
/**
|
|
15
|
+
* Reset the global cache instance
|
|
16
|
+
*/
|
|
17
|
+
export declare function resetQueryCache(): void;
|
|
18
|
+
declare const _default: {
|
|
19
|
+
QueryCache: typeof QueryCache;
|
|
20
|
+
getQueryCache: typeof getQueryCache;
|
|
21
|
+
resetQueryCache: typeof resetQueryCache;
|
|
22
|
+
};
|
|
23
|
+
export default _default;
|
|
24
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/database/cache/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACL,gBAAgB,EAChB,SAAS,EACT,oBAAoB,GACrB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAKrD;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,UAAU,CAK9E;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAKtC;;;;;;AAED,wBAIE"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cache Layer Exports
|
|
3
|
+
*
|
|
4
|
+
* Central export for query caching functionality.
|
|
5
|
+
*/
|
|
6
|
+
export { QueryCache } from './query-cache.js';
|
|
7
|
+
export { generateCacheKey, cacheKeys, invalidationPatterns, } from './cache-keys.js';
|
|
8
|
+
import { QueryCache } from './query-cache.js';
|
|
9
|
+
// Singleton cache instance
|
|
10
|
+
let cacheInstance = null;
|
|
11
|
+
/**
|
|
12
|
+
* Get the global query cache instance
|
|
13
|
+
*/
|
|
14
|
+
export function getQueryCache(options) {
|
|
15
|
+
if (!cacheInstance) {
|
|
16
|
+
cacheInstance = new QueryCache(options);
|
|
17
|
+
}
|
|
18
|
+
return cacheInstance;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Reset the global cache instance
|
|
22
|
+
*/
|
|
23
|
+
export function resetQueryCache() {
|
|
24
|
+
if (cacheInstance) {
|
|
25
|
+
cacheInstance.clear();
|
|
26
|
+
cacheInstance = null;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export default {
|
|
30
|
+
QueryCache,
|
|
31
|
+
getQueryCache,
|
|
32
|
+
resetQueryCache,
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/database/cache/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACL,gBAAgB,EAChB,SAAS,EACT,oBAAoB,GACrB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,2BAA2B;AAC3B,IAAI,aAAa,GAAsB,IAAI,CAAC;AAE5C;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,OAAoC;IAChE,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,aAAa,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,aAAa,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,IAAI,aAAa,EAAE,CAAC;QAClB,aAAa,CAAC,KAAK,EAAE,CAAC;QACtB,aAAa,GAAG,IAAI,CAAC;IACvB,CAAC;AACH,CAAC;AAED,eAAe;IACb,UAAU;IACV,aAAa;IACb,eAAe;CAChB,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Query Cache
|
|
3
|
+
*
|
|
4
|
+
* LRU cache for database query results.
|
|
5
|
+
* Improves performance by avoiding redundant queries.
|
|
6
|
+
*/
|
|
7
|
+
import type { CacheStats, QueryCacheOptions } from '../types.js';
|
|
8
|
+
/**
|
|
9
|
+
* LRU query cache
|
|
10
|
+
*/
|
|
11
|
+
export declare class QueryCache {
|
|
12
|
+
private cache;
|
|
13
|
+
private options;
|
|
14
|
+
private hitCount;
|
|
15
|
+
private missCount;
|
|
16
|
+
constructor(options?: Partial<QueryCacheOptions>);
|
|
17
|
+
/**
|
|
18
|
+
* Get value from cache
|
|
19
|
+
*/
|
|
20
|
+
get<T>(key: string): T | undefined;
|
|
21
|
+
/**
|
|
22
|
+
* Set value in cache
|
|
23
|
+
*/
|
|
24
|
+
set<T>(key: string, value: T, ttlMs?: number): void;
|
|
25
|
+
/**
|
|
26
|
+
* Check if key exists (without updating access)
|
|
27
|
+
*/
|
|
28
|
+
has(key: string): boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Delete key from cache
|
|
31
|
+
*/
|
|
32
|
+
delete(key: string): boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Invalidate entries matching a pattern
|
|
35
|
+
*/
|
|
36
|
+
invalidate(pattern: string | RegExp): number;
|
|
37
|
+
/**
|
|
38
|
+
* Clear all entries
|
|
39
|
+
*/
|
|
40
|
+
clear(): void;
|
|
41
|
+
/**
|
|
42
|
+
* Evict least recently used entry
|
|
43
|
+
*/
|
|
44
|
+
private evictLRU;
|
|
45
|
+
/**
|
|
46
|
+
* Remove expired entries
|
|
47
|
+
*/
|
|
48
|
+
prune(): number;
|
|
49
|
+
/**
|
|
50
|
+
* Get cache statistics
|
|
51
|
+
*/
|
|
52
|
+
getStats(): CacheStats;
|
|
53
|
+
/**
|
|
54
|
+
* Get cache size
|
|
55
|
+
*/
|
|
56
|
+
get size(): number;
|
|
57
|
+
/**
|
|
58
|
+
* Reset statistics
|
|
59
|
+
*/
|
|
60
|
+
resetStats(): void;
|
|
61
|
+
/**
|
|
62
|
+
* Get or set pattern - fetch from cache or execute function and cache result
|
|
63
|
+
*/
|
|
64
|
+
getOrSet<T>(key: string, fn: () => Promise<T>, ttlMs?: number): Promise<T>;
|
|
65
|
+
}
|
|
66
|
+
export default QueryCache;
|
|
67
|
+
//# sourceMappingURL=query-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-cache.d.ts","sourceRoot":"","sources":["../../../src/database/cache/query-cache.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAc,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAa7E;;GAEG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,KAAK,CAA+C;IAC5D,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,SAAS,CAAa;gBAElB,OAAO,GAAE,OAAO,CAAC,iBAAiB,CAAM;IAIpD;;OAEG;IACH,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAwBlC;;OAEG;IACH,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAiBnD;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAUzB;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI5B;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM;IAqB5C;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,OAAO,CAAC,QAAQ;IAOhB;;OAEG;IACH,KAAK,IAAI,MAAM;IAkBf;;OAEG;IACH,QAAQ,IAAI,UAAU;IAYtB;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,UAAU,IAAI,IAAI;IAKlB;;OAEG;IACG,QAAQ,CAAC,CAAC,EACd,GAAG,EAAE,MAAM,EACX,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,CAAC,CAAC;CAUd;AAED,eAAe,UAAU,CAAC"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Query Cache
|
|
3
|
+
*
|
|
4
|
+
* LRU cache for database query results.
|
|
5
|
+
* Improves performance by avoiding redundant queries.
|
|
6
|
+
*/
|
|
7
|
+
import { createLogger } from '../../utils/logger.js';
|
|
8
|
+
const logger = createLogger('QueryCache');
|
|
9
|
+
/**
|
|
10
|
+
* Default cache options
|
|
11
|
+
*/
|
|
12
|
+
const DEFAULT_OPTIONS = {
|
|
13
|
+
maxSize: 1000,
|
|
14
|
+
defaultTtlMs: 300000, // 5 minutes
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* LRU query cache
|
|
18
|
+
*/
|
|
19
|
+
export class QueryCache {
|
|
20
|
+
cache = new Map();
|
|
21
|
+
options;
|
|
22
|
+
hitCount = 0;
|
|
23
|
+
missCount = 0;
|
|
24
|
+
constructor(options = {}) {
|
|
25
|
+
this.options = { ...DEFAULT_OPTIONS, ...options };
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Get value from cache
|
|
29
|
+
*/
|
|
30
|
+
get(key) {
|
|
31
|
+
const entry = this.cache.get(key);
|
|
32
|
+
if (!entry) {
|
|
33
|
+
this.missCount++;
|
|
34
|
+
return undefined;
|
|
35
|
+
}
|
|
36
|
+
// Check expiration
|
|
37
|
+
if (Date.now() > entry.expiresAt) {
|
|
38
|
+
this.cache.delete(key);
|
|
39
|
+
this.missCount++;
|
|
40
|
+
return undefined;
|
|
41
|
+
}
|
|
42
|
+
// Update access metadata and move to end for LRU
|
|
43
|
+
entry.hits++;
|
|
44
|
+
this.cache.delete(key);
|
|
45
|
+
this.cache.set(key, entry);
|
|
46
|
+
this.hitCount++;
|
|
47
|
+
return entry.value;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Set value in cache
|
|
51
|
+
*/
|
|
52
|
+
set(key, value, ttlMs) {
|
|
53
|
+
// Evict oldest if at capacity
|
|
54
|
+
if (this.cache.size >= this.options.maxSize && !this.cache.has(key)) {
|
|
55
|
+
this.evictLRU();
|
|
56
|
+
}
|
|
57
|
+
const entry = {
|
|
58
|
+
value,
|
|
59
|
+
expiresAt: Date.now() + (ttlMs ?? this.options.defaultTtlMs),
|
|
60
|
+
hits: 0,
|
|
61
|
+
};
|
|
62
|
+
// Delete first to ensure it's at the end
|
|
63
|
+
this.cache.delete(key);
|
|
64
|
+
this.cache.set(key, entry);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Check if key exists (without updating access)
|
|
68
|
+
*/
|
|
69
|
+
has(key) {
|
|
70
|
+
const entry = this.cache.get(key);
|
|
71
|
+
if (!entry)
|
|
72
|
+
return false;
|
|
73
|
+
if (Date.now() > entry.expiresAt) {
|
|
74
|
+
this.cache.delete(key);
|
|
75
|
+
return false;
|
|
76
|
+
}
|
|
77
|
+
return true;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Delete key from cache
|
|
81
|
+
*/
|
|
82
|
+
delete(key) {
|
|
83
|
+
return this.cache.delete(key);
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Invalidate entries matching a pattern
|
|
87
|
+
*/
|
|
88
|
+
invalidate(pattern) {
|
|
89
|
+
let count = 0;
|
|
90
|
+
for (const key of this.cache.keys()) {
|
|
91
|
+
const matches = typeof pattern === 'string'
|
|
92
|
+
? key.includes(pattern)
|
|
93
|
+
: pattern.test(key);
|
|
94
|
+
if (matches) {
|
|
95
|
+
this.cache.delete(key);
|
|
96
|
+
count++;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
if (count > 0) {
|
|
100
|
+
logger.debug('Cache invalidated', { pattern: String(pattern), count });
|
|
101
|
+
}
|
|
102
|
+
return count;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Clear all entries
|
|
106
|
+
*/
|
|
107
|
+
clear() {
|
|
108
|
+
this.cache.clear();
|
|
109
|
+
logger.debug('Cache cleared');
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Evict least recently used entry
|
|
113
|
+
*/
|
|
114
|
+
evictLRU() {
|
|
115
|
+
const firstKey = this.cache.keys().next().value;
|
|
116
|
+
if (firstKey) {
|
|
117
|
+
this.cache.delete(firstKey);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Remove expired entries
|
|
122
|
+
*/
|
|
123
|
+
prune() {
|
|
124
|
+
const now = Date.now();
|
|
125
|
+
let count = 0;
|
|
126
|
+
for (const [key, entry] of this.cache.entries()) {
|
|
127
|
+
if (now > entry.expiresAt) {
|
|
128
|
+
this.cache.delete(key);
|
|
129
|
+
count++;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
if (count > 0) {
|
|
133
|
+
logger.debug('Cache pruned', { removed: count });
|
|
134
|
+
}
|
|
135
|
+
return count;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Get cache statistics
|
|
139
|
+
*/
|
|
140
|
+
getStats() {
|
|
141
|
+
const totalRequests = this.hitCount + this.missCount;
|
|
142
|
+
return {
|
|
143
|
+
size: this.cache.size,
|
|
144
|
+
maxSize: this.options.maxSize,
|
|
145
|
+
hitCount: this.hitCount,
|
|
146
|
+
missCount: this.missCount,
|
|
147
|
+
hitRate: totalRequests > 0 ? this.hitCount / totalRequests : 0,
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Get cache size
|
|
152
|
+
*/
|
|
153
|
+
get size() {
|
|
154
|
+
return this.cache.size;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Reset statistics
|
|
158
|
+
*/
|
|
159
|
+
resetStats() {
|
|
160
|
+
this.hitCount = 0;
|
|
161
|
+
this.missCount = 0;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Get or set pattern - fetch from cache or execute function and cache result
|
|
165
|
+
*/
|
|
166
|
+
async getOrSet(key, fn, ttlMs) {
|
|
167
|
+
const cached = this.get(key);
|
|
168
|
+
if (cached !== undefined) {
|
|
169
|
+
return cached;
|
|
170
|
+
}
|
|
171
|
+
const result = await fn();
|
|
172
|
+
this.set(key, result, ttlMs);
|
|
173
|
+
return result;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
export default QueryCache;
|
|
177
|
+
//# sourceMappingURL=query-cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-cache.js","sourceRoot":"","sources":["../../../src/database/cache/query-cache.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,MAAM,MAAM,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;AAE1C;;GAEG;AACH,MAAM,eAAe,GAAsB;IACzC,OAAO,EAAE,IAAI;IACb,YAAY,EAAE,MAAM,EAAE,YAAY;CACnC,CAAC;AAEF;;GAEG;AACH,MAAM,OAAO,UAAU;IACb,KAAK,GAAqC,IAAI,GAAG,EAAE,CAAC;IACpD,OAAO,CAAoB;IAC3B,QAAQ,GAAW,CAAC,CAAC;IACrB,SAAS,GAAW,CAAC,CAAC;IAE9B,YAAY,UAAsC,EAAE;QAClD,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,eAAe,EAAE,GAAG,OAAO,EAAE,CAAC;IACpD,CAAC;IAED;;OAEG;IACH,GAAG,CAAI,GAAW;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAElC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,mBAAmB;QACnB,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACvB,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,iDAAiD;QACjD,KAAK,CAAC,IAAI,EAAE,CAAC;QACb,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAE3B,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,OAAO,KAAK,CAAC,KAAU,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,GAAG,CAAI,GAAW,EAAE,KAAQ,EAAE,KAAc;QAC1C,8BAA8B;QAC9B,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACpE,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,CAAC;QAED,MAAM,KAAK,GAAkB;YAC3B,KAAK;YACL,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;YAC5D,IAAI,EAAE,CAAC;SACR,CAAC;QAEF,yCAAyC;QACzC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,GAAW;QACb,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QACzB,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACvB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,GAAW;QAChB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,OAAwB;QACjC,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YACpC,MAAM,OAAO,GACX,OAAO,OAAO,KAAK,QAAQ;gBACzB,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC;gBACvB,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAExB,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACvB,KAAK,EAAE,CAAC;YACV,CAAC;QACH,CAAC;QAED,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,MAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QACzE,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACK,QAAQ;QACd,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;QAChD,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;YAChD,IAAI,GAAG,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;gBAC1B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACvB,KAAK,EAAE,CAAC;YACV,CAAC;QACH,CAAC;QAED,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,MAAM,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QACnD,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;QAErD,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;YACrB,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;YAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,OAAO,EAAE,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;SAC/D,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,UAAU;QACR,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CACZ,GAAW,EACX,EAAoB,EACpB,KAAc;QAEd,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAI,GAAG,CAAC,CAAC;QAChC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,EAAE,EAAE,CAAC;QAC1B,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QAC7B,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAED,eAAe,UAAU,CAAC"}
|