memento-mcp-server 1.16.1-a → 1.16.2-a

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (163) hide show
  1. package/dist/client/index.d.ts.map +1 -1
  2. package/dist/client/index.js +4 -3
  3. package/dist/client/index.js.map +1 -1
  4. package/dist/domains/anchor/services/anchor/anchor-interfaces.d.ts +2 -4
  5. package/dist/domains/anchor/services/anchor/anchor-interfaces.d.ts.map +1 -1
  6. package/dist/domains/anchor/services/anchor/anchor-interfaces.js.map +1 -1
  7. package/dist/domains/anchor/services/anchor/anchor-manager.d.ts +2 -2
  8. package/dist/domains/anchor/services/anchor/anchor-manager.d.ts.map +1 -1
  9. package/dist/domains/anchor/services/anchor/anchor-manager.js.map +1 -1
  10. package/dist/domains/anchor/services/anchor/anchor-search-service.d.ts +11 -34
  11. package/dist/domains/anchor/services/anchor/anchor-search-service.d.ts.map +1 -1
  12. package/dist/domains/anchor/services/anchor/anchor-search-service.js +66 -549
  13. package/dist/domains/anchor/services/anchor/anchor-search-service.js.map +1 -1
  14. package/dist/domains/anchor/services/anchor/database-types.d.ts +28 -0
  15. package/dist/domains/anchor/services/anchor/database-types.d.ts.map +1 -0
  16. package/dist/domains/anchor/services/anchor/database-types.js +6 -0
  17. package/dist/domains/anchor/services/anchor/database-types.js.map +1 -0
  18. package/dist/domains/anchor/services/anchor/embedding-types.d.ts +20 -0
  19. package/dist/domains/anchor/services/anchor/embedding-types.d.ts.map +1 -0
  20. package/dist/domains/anchor/services/anchor/embedding-types.js +6 -0
  21. package/dist/domains/anchor/services/anchor/embedding-types.js.map +1 -0
  22. package/dist/domains/anchor/services/anchor/fallback-search-service.d.ts +36 -0
  23. package/dist/domains/anchor/services/anchor/fallback-search-service.d.ts.map +1 -0
  24. package/dist/domains/anchor/services/anchor/fallback-search-service.js +85 -0
  25. package/dist/domains/anchor/services/anchor/fallback-search-service.js.map +1 -0
  26. package/dist/domains/anchor/services/anchor/fallback-strategy.d.ts +25 -0
  27. package/dist/domains/anchor/services/anchor/fallback-strategy.d.ts.map +1 -0
  28. package/dist/domains/anchor/services/anchor/fallback-strategy.js +35 -0
  29. package/dist/domains/anchor/services/anchor/fallback-strategy.js.map +1 -0
  30. package/dist/domains/anchor/services/anchor/local-search-service.d.ts +72 -0
  31. package/dist/domains/anchor/services/anchor/local-search-service.d.ts.map +1 -0
  32. package/dist/domains/anchor/services/anchor/local-search-service.js +129 -0
  33. package/dist/domains/anchor/services/anchor/local-search-service.js.map +1 -0
  34. package/dist/domains/anchor/services/anchor/n-hop-search-service.d.ts +90 -0
  35. package/dist/domains/anchor/services/anchor/n-hop-search-service.d.ts.map +1 -0
  36. package/dist/domains/anchor/services/anchor/n-hop-search-service.js +385 -0
  37. package/dist/domains/anchor/services/anchor/n-hop-search-service.js.map +1 -0
  38. package/dist/domains/anchor/services/anchor/n-hop-search-strategy.d.ts +24 -0
  39. package/dist/domains/anchor/services/anchor/n-hop-search-strategy.d.ts.map +1 -0
  40. package/dist/domains/anchor/services/anchor/n-hop-search-strategy.js +39 -0
  41. package/dist/domains/anchor/services/anchor/n-hop-search-strategy.js.map +1 -0
  42. package/dist/domains/anchor/services/anchor/query-filter-service.d.ts +52 -0
  43. package/dist/domains/anchor/services/anchor/query-filter-service.d.ts.map +1 -0
  44. package/dist/domains/anchor/services/anchor/query-filter-service.js +136 -0
  45. package/dist/domains/anchor/services/anchor/query-filter-service.js.map +1 -0
  46. package/dist/domains/anchor/services/anchor/query-filter-strategy.d.ts +24 -0
  47. package/dist/domains/anchor/services/anchor/query-filter-strategy.d.ts.map +1 -0
  48. package/dist/domains/anchor/services/anchor/query-filter-strategy.js +34 -0
  49. package/dist/domains/anchor/services/anchor/query-filter-strategy.js.map +1 -0
  50. package/dist/domains/anchor/services/anchor/search-strategy-interfaces.d.ts +52 -0
  51. package/dist/domains/anchor/services/anchor/search-strategy-interfaces.d.ts.map +1 -0
  52. package/dist/domains/anchor/services/anchor/search-strategy-interfaces.js +6 -0
  53. package/dist/domains/anchor/services/anchor/search-strategy-interfaces.js.map +1 -0
  54. package/dist/domains/anchor/services/anchor/vector-search-engine-types.d.ts +18 -0
  55. package/dist/domains/anchor/services/anchor/vector-search-engine-types.d.ts.map +1 -0
  56. package/dist/domains/anchor/services/anchor/vector-search-engine-types.js +11 -0
  57. package/dist/domains/anchor/services/anchor/vector-search-engine-types.js.map +1 -0
  58. package/dist/domains/memory/repositories/core-memory-database.interface.d.ts +47 -0
  59. package/dist/domains/memory/repositories/core-memory-database.interface.d.ts.map +1 -0
  60. package/dist/domains/memory/repositories/core-memory-database.interface.js +7 -0
  61. package/dist/domains/memory/repositories/core-memory-database.interface.js.map +1 -0
  62. package/dist/domains/memory/repositories/core-memory-repository.d.ts +7 -77
  63. package/dist/domains/memory/repositories/core-memory-repository.d.ts.map +1 -1
  64. package/dist/domains/memory/repositories/core-memory-repository.interface.d.ts +92 -0
  65. package/dist/domains/memory/repositories/core-memory-repository.interface.d.ts.map +1 -0
  66. package/dist/domains/memory/repositories/core-memory-repository.interface.js +6 -0
  67. package/dist/domains/memory/repositories/core-memory-repository.interface.js.map +1 -0
  68. package/dist/domains/memory/repositories/core-memory-repository.js +7 -259
  69. package/dist/domains/memory/repositories/core-memory-repository.js.map +1 -1
  70. package/dist/domains/memory/services/core-memory-cache-service.d.ts +55 -0
  71. package/dist/domains/memory/services/core-memory-cache-service.d.ts.map +1 -1
  72. package/dist/domains/memory/services/core-memory-cache-service.js +110 -8
  73. package/dist/domains/memory/services/core-memory-cache-service.js.map +1 -1
  74. package/dist/domains/memory/services/core-memory-service.d.ts +2 -2
  75. package/dist/domains/memory/services/core-memory-service.d.ts.map +1 -1
  76. package/dist/domains/memory/services/core-memory-service.js +43 -24
  77. package/dist/domains/memory/services/core-memory-service.js.map +1 -1
  78. package/dist/domains/memory/tools/recall-tool.d.ts.map +1 -1
  79. package/dist/domains/memory/tools/recall-tool.js +2 -2
  80. package/dist/domains/memory/tools/recall-tool.js.map +1 -1
  81. package/dist/domains/memory/tools/remember-tool.d.ts.map +1 -1
  82. package/dist/domains/memory/tools/remember-tool.js +2 -2
  83. package/dist/domains/memory/tools/remember-tool.js.map +1 -1
  84. package/dist/domains/monitoring/services/performance-monitor.d.ts +8 -0
  85. package/dist/domains/monitoring/services/performance-monitor.d.ts.map +1 -1
  86. package/dist/domains/monitoring/services/performance-monitor.js +16 -0
  87. package/dist/domains/monitoring/services/performance-monitor.js.map +1 -1
  88. package/dist/infrastructure/async-optimizer.d.ts.map +1 -1
  89. package/dist/infrastructure/async-optimizer.js +8 -7
  90. package/dist/infrastructure/async-optimizer.js.map +1 -1
  91. package/dist/infrastructure/database/adapters/sqlite-core-memory-adapter.d.ts +31 -0
  92. package/dist/infrastructure/database/adapters/sqlite-core-memory-adapter.d.ts.map +1 -0
  93. package/dist/infrastructure/database/adapters/sqlite-core-memory-adapter.js +112 -0
  94. package/dist/infrastructure/database/adapters/sqlite-core-memory-adapter.js.map +1 -0
  95. package/dist/infrastructure/database/database/init.d.ts.map +1 -1
  96. package/dist/infrastructure/database/database/init.js +23 -2
  97. package/dist/infrastructure/database/database/init.js.map +1 -1
  98. package/dist/infrastructure/database/database/migration/migrations/010-add-core-memory-version.d.ts +64 -0
  99. package/dist/infrastructure/database/database/migration/migrations/010-add-core-memory-version.d.ts.map +1 -0
  100. package/dist/infrastructure/database/database/migration/migrations/010-add-core-memory-version.js +174 -0
  101. package/dist/infrastructure/database/database/migration/migrations/010-add-core-memory-version.js.map +1 -0
  102. package/dist/infrastructure/database/database/migration/migrations/010-add-core-memory-version.sql +25 -0
  103. package/dist/infrastructure/database/database-lock-monitor.d.ts +105 -0
  104. package/dist/infrastructure/database/database-lock-monitor.d.ts.map +1 -0
  105. package/dist/infrastructure/database/database-lock-monitor.js +265 -0
  106. package/dist/infrastructure/database/database-lock-monitor.js.map +1 -0
  107. package/dist/infrastructure/database/factories/core-memory-repository.factory.d.ts +17 -0
  108. package/dist/infrastructure/database/factories/core-memory-repository.factory.d.ts.map +1 -0
  109. package/dist/infrastructure/database/factories/core-memory-repository.factory.js +43 -0
  110. package/dist/infrastructure/database/factories/core-memory-repository.factory.js.map +1 -0
  111. package/dist/infrastructure/database/repositories/core-memory-repository-sqlite.impl.d.ts +63 -0
  112. package/dist/infrastructure/database/repositories/core-memory-repository-sqlite.impl.d.ts.map +1 -0
  113. package/dist/infrastructure/database/repositories/core-memory-repository-sqlite.impl.js +281 -0
  114. package/dist/infrastructure/database/repositories/core-memory-repository-sqlite.impl.js.map +1 -0
  115. package/dist/infrastructure/database/wal-checkpoint-scheduler.d.ts +166 -0
  116. package/dist/infrastructure/database/wal-checkpoint-scheduler.d.ts.map +1 -0
  117. package/dist/infrastructure/database/wal-checkpoint-scheduler.js +285 -0
  118. package/dist/infrastructure/database/wal-checkpoint-scheduler.js.map +1 -0
  119. package/dist/npm-client/memento-client.d.ts.map +1 -1
  120. package/dist/npm-client/memento-client.js +5 -4
  121. package/dist/npm-client/memento-client.js.map +1 -1
  122. package/dist/npm-client/memory-manager.d.ts.map +1 -1
  123. package/dist/npm-client/memory-manager.js +4 -3
  124. package/dist/npm-client/memory-manager.js.map +1 -1
  125. package/dist/scripts/check-migration-status.d.ts.map +1 -1
  126. package/dist/scripts/check-migration-status.js +1 -0
  127. package/dist/scripts/check-migration-status.js.map +1 -1
  128. package/dist/server/bootstrap.d.ts +4 -0
  129. package/dist/server/bootstrap.d.ts.map +1 -1
  130. package/dist/server/bootstrap.js +27 -2
  131. package/dist/server/bootstrap.js.map +1 -1
  132. package/dist/server/http-server.d.ts.map +1 -1
  133. package/dist/server/http-server.js +59 -31
  134. package/dist/server/http-server.js.map +1 -1
  135. package/dist/server/index.js +32 -16
  136. package/dist/server/index.js.map +1 -1
  137. package/dist/server/simple-mcp-server.d.ts.map +1 -1
  138. package/dist/server/simple-mcp-server.js +15 -14
  139. package/dist/server/simple-mcp-server.js.map +1 -1
  140. package/dist/shared/config/environment.d.ts.map +1 -1
  141. package/dist/shared/config/environment.js +13 -1
  142. package/dist/shared/config/environment.js.map +1 -1
  143. package/dist/shared/config/index.d.ts.map +1 -1
  144. package/dist/shared/config/index.js +13 -1
  145. package/dist/shared/config/index.js.map +1 -1
  146. package/dist/shared/types/index.d.ts +10 -0
  147. package/dist/shared/types/index.d.ts.map +1 -1
  148. package/dist/tools/base-tool.d.ts.map +1 -1
  149. package/dist/tools/base-tool.js +5 -4
  150. package/dist/tools/base-tool.js.map +1 -1
  151. package/dist/tools/migrate-embeddings-tool.d.ts.map +1 -1
  152. package/dist/tools/migrate-embeddings-tool.js +2 -1
  153. package/dist/tools/migrate-embeddings-tool.js.map +1 -1
  154. package/dist/tools/tool-registry.d.ts.map +1 -1
  155. package/dist/tools/tool-registry.js +4 -3
  156. package/dist/tools/tool-registry.js.map +1 -1
  157. package/dist/workers/consolidation-score-worker.d.ts.map +1 -1
  158. package/dist/workers/consolidation-score-worker.js +5 -4
  159. package/dist/workers/consolidation-score-worker.js.map +1 -1
  160. package/package.json +1 -1
  161. package/scripts/check-file-sizes.ts +405 -0
  162. package/scripts/count-any-types.ts +375 -0
  163. package/scripts/count-console-logs.ts +451 -0
@@ -1,263 +1,11 @@
1
1
  /**
2
2
  * Core Memory Repository
3
- * Core Memory 테이블에 대한 데이터베이스 접근 로직
3
+ *
4
+ * @deprecated 이 파일은 하위 호환성을 위해 유지됩니다.
5
+ * 새로운 코드는 core-memory-repository.interface.ts의 인터페이스를 사용하고
6
+ * Factory 패턴(createCoreMemoryRepository)을 통해 구현체를 생성하세요.
7
+ *
8
+ * 이 파일은 인터페이스와 타입만 re-export합니다.
4
9
  */
5
- import Database from 'better-sqlite3';
6
- export class CoreMemoryRepository {
7
- db;
8
- constructor(db) {
9
- this.db = db;
10
- }
11
- /**
12
- * Core Memory 생성
13
- */
14
- async create(input) {
15
- const { core_id, agent_id = 'default', key, value, always_load = false, origin_source = null } = input;
16
- this.db.prepare(`
17
- INSERT INTO core_memory (core_id, agent_id, key, value, always_load, origin_source)
18
- VALUES (?, ?, ?, ?, ?, ?)
19
- `).run(core_id, agent_id, key, value, always_load ? 1 : 0, origin_source);
20
- const result = await this.findById(core_id);
21
- if (!result) {
22
- throw new Error(`Failed to create core memory with id: ${core_id}`);
23
- }
24
- return result;
25
- }
26
- /**
27
- * ID로 Core Memory 조회
28
- */
29
- async findById(core_id) {
30
- const result = this.db.prepare(`
31
- SELECT
32
- core_id,
33
- agent_id,
34
- key,
35
- value,
36
- always_load,
37
- origin_source,
38
- created_at,
39
- updated_at
40
- FROM core_memory
41
- WHERE core_id = ?
42
- `).get(core_id);
43
- if (!result) {
44
- return null;
45
- }
46
- return {
47
- ...result,
48
- always_load: Boolean(result.always_load)
49
- };
50
- }
51
- /**
52
- * agent_id와 key로 Core Memory 조회
53
- */
54
- async findByKey(agent_id, key) {
55
- const result = this.db.prepare(`
56
- SELECT
57
- core_id,
58
- agent_id,
59
- key,
60
- value,
61
- always_load,
62
- origin_source,
63
- created_at,
64
- updated_at
65
- FROM core_memory
66
- WHERE agent_id = ? AND key = ?
67
- `).get(agent_id, key);
68
- if (!result) {
69
- return null;
70
- }
71
- return {
72
- ...result,
73
- always_load: Boolean(result.always_load)
74
- };
75
- }
76
- /**
77
- * agent_id로 모든 Core Memory 조회
78
- */
79
- async findByAgentId(agent_id) {
80
- const results = this.db.prepare(`
81
- SELECT
82
- core_id,
83
- agent_id,
84
- key,
85
- value,
86
- always_load,
87
- origin_source,
88
- created_at,
89
- updated_at
90
- FROM core_memory
91
- WHERE agent_id = ?
92
- ORDER BY created_at ASC
93
- `).all(agent_id);
94
- return results.map(result => ({
95
- ...result,
96
- always_load: Boolean(result.always_load)
97
- }));
98
- }
99
- /**
100
- * always_load=true인 Core Memory 조회
101
- */
102
- async findAlwaysLoad(agent_id) {
103
- const query = agent_id
104
- ? `
105
- SELECT
106
- core_id,
107
- agent_id,
108
- key,
109
- value,
110
- always_load,
111
- origin_source,
112
- created_at,
113
- updated_at
114
- FROM core_memory
115
- WHERE always_load = 1 AND agent_id = ?
116
- ORDER BY created_at ASC
117
- `
118
- : `
119
- SELECT
120
- core_id,
121
- agent_id,
122
- key,
123
- value,
124
- always_load,
125
- origin_source,
126
- created_at,
127
- updated_at
128
- FROM core_memory
129
- WHERE always_load = 1
130
- ORDER BY created_at ASC
131
- `;
132
- const results = agent_id
133
- ? this.db.prepare(query).all(agent_id)
134
- : this.db.prepare(query).all();
135
- return results.map(result => ({
136
- ...result,
137
- always_load: Boolean(result.always_load)
138
- }));
139
- }
140
- /**
141
- * Core Memory 업데이트
142
- */
143
- async update(core_id, input) {
144
- const updates = [];
145
- const values = [];
146
- if (input.value !== undefined) {
147
- updates.push('value = ?');
148
- values.push(input.value);
149
- }
150
- if (input.always_load !== undefined) {
151
- updates.push('always_load = ?');
152
- values.push(input.always_load ? 1 : 0);
153
- }
154
- if (input.origin_source !== undefined) {
155
- updates.push('origin_source = ?');
156
- values.push(input.origin_source);
157
- }
158
- if (updates.length === 0) {
159
- return this.findById(core_id);
160
- }
161
- values.push(core_id);
162
- this.db.prepare(`
163
- UPDATE core_memory
164
- SET ${updates.join(', ')}
165
- WHERE core_id = ?
166
- `).run(...values);
167
- return this.findById(core_id);
168
- }
169
- /**
170
- * agent_id와 key로 Core Memory 업데이트
171
- */
172
- async updateByKey(agent_id, key, input) {
173
- const updates = [];
174
- const values = [];
175
- if (input.value !== undefined) {
176
- updates.push('value = ?');
177
- values.push(input.value);
178
- }
179
- if (input.always_load !== undefined) {
180
- updates.push('always_load = ?');
181
- values.push(input.always_load ? 1 : 0);
182
- }
183
- if (input.origin_source !== undefined) {
184
- updates.push('origin_source = ?');
185
- values.push(input.origin_source);
186
- }
187
- if (updates.length === 0) {
188
- return this.findByKey(agent_id, key);
189
- }
190
- values.push(agent_id, key);
191
- this.db.prepare(`
192
- UPDATE core_memory
193
- SET ${updates.join(', ')}
194
- WHERE agent_id = ? AND key = ?
195
- `).run(...values);
196
- return this.findByKey(agent_id, key);
197
- }
198
- /**
199
- * Core Memory 삭제
200
- */
201
- async delete(core_id) {
202
- const result = this.db.prepare(`
203
- DELETE FROM core_memory
204
- WHERE core_id = ?
205
- `).run(core_id);
206
- return result.changes > 0;
207
- }
208
- /**
209
- * agent_id와 key로 Core Memory 삭제
210
- */
211
- async deleteByKey(agent_id, key) {
212
- const result = this.db.prepare(`
213
- DELETE FROM core_memory
214
- WHERE agent_id = ? AND key = ?
215
- `).run(agent_id, key);
216
- return result.changes > 0;
217
- }
218
- /**
219
- * agent_id로 모든 Core Memory 삭제
220
- */
221
- async deleteByAgentId(agent_id) {
222
- const result = this.db.prepare(`
223
- DELETE FROM core_memory
224
- WHERE agent_id = ?
225
- `).run(agent_id);
226
- return result.changes;
227
- }
228
- /**
229
- * 모든 Core Memory 조회 (관리용)
230
- */
231
- async findAll() {
232
- const results = this.db.prepare(`
233
- SELECT
234
- core_id,
235
- agent_id,
236
- key,
237
- value,
238
- always_load,
239
- origin_source,
240
- created_at,
241
- updated_at
242
- FROM core_memory
243
- ORDER BY agent_id, created_at ASC
244
- `).all();
245
- return results.map(result => ({
246
- ...result,
247
- always_load: Boolean(result.always_load)
248
- }));
249
- }
250
- /**
251
- * Core Memory 개수 조회
252
- */
253
- async count(agent_id) {
254
- const query = agent_id
255
- ? 'SELECT COUNT(*) as count FROM core_memory WHERE agent_id = ?'
256
- : 'SELECT COUNT(*) as count FROM core_memory';
257
- const result = agent_id
258
- ? this.db.prepare(query).get(agent_id)
259
- : this.db.prepare(query).get();
260
- return result.count;
261
- }
262
- }
10
+ export {};
263
11
  //# sourceMappingURL=core-memory-repository.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"core-memory-repository.js","sourceRoot":"","sources":["../../../../src/domains/memory/repositories/core-memory-repository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core-memory-repository.js","sourceRoot":"","sources":["../../../../src/domains/memory/repositories/core-memory-repository.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
@@ -9,24 +9,75 @@
9
9
  */
10
10
  import type { CoreMemoryRecord } from '../repositories/core-memory-repository.js';
11
11
  import type { CoreMemoryCache } from './core-memory-service.js';
12
+ /**
13
+ * 캐시 엔트리 인터페이스
14
+ * 버전 정보와 캐시 시간을 포함합니다.
15
+ */
16
+ export interface CacheEntry {
17
+ record: CoreMemoryRecord;
18
+ cachedAt: number;
19
+ version: number;
20
+ }
21
+ /**
22
+ * 캐시 무효화 리스너 인터페이스
23
+ */
24
+ export interface CacheInvalidationListener {
25
+ /**
26
+ * 특정 키의 캐시가 무효화될 때 호출됨
27
+ */
28
+ onInvalidate(key: string, reason?: string): void;
29
+ /**
30
+ * 전체 캐시가 무효화될 때 호출됨
31
+ */
32
+ onInvalidateAll(reason?: string): void;
33
+ }
12
34
  /**
13
35
  * Core Memory Cache Service Implementation
14
36
  * always_load=true인 Core Memory 항목들을 메모리에 캐싱
37
+ * 버전 기반 캐시 무효화 지원
15
38
  */
16
39
  export declare class CoreMemoryCacheService implements CoreMemoryCache {
17
40
  private cache;
41
+ private listeners;
18
42
  /**
19
43
  * 항목을 캐시에 저장
44
+ * version=0인 경우 경고 로그 출력 (마이그레이션 미완료 가능성)
20
45
  */
21
46
  set(key: string, value: CoreMemoryRecord): void;
22
47
  /**
23
48
  * 캐시에서 항목 조회
24
49
  */
25
50
  get(key: string): CoreMemoryRecord | undefined;
51
+ /**
52
+ * 캐시에서 항목과 버전 정보 조회
53
+ */
54
+ getWithVersion(key: string): CacheEntry | undefined;
26
55
  /**
27
56
  * 캐시에서 항목 삭제
28
57
  */
29
58
  delete(key: string): boolean;
59
+ /**
60
+ * 버전 기반 캐시 무효화
61
+ * DB의 버전이 캐시의 버전보다 높으면 무효화
62
+ * version=0인 경우 항상 무효화 (마이그레이션 미완료로 간주)
63
+ */
64
+ invalidateByVersion(key: string, dbVersion: number): boolean;
65
+ /**
66
+ * 캐시 무효화 리스너 구독
67
+ */
68
+ subscribeInvalidation(listener: CacheInvalidationListener): void;
69
+ /**
70
+ * 캐시 무효화 리스너 구독 해제
71
+ */
72
+ unsubscribeInvalidation(listener: CacheInvalidationListener): void;
73
+ /**
74
+ * 특정 키 무효화 알림
75
+ */
76
+ private notifyInvalidate;
77
+ /**
78
+ * 전체 캐시 무효화 알림
79
+ */
80
+ private notifyInvalidateAll;
30
81
  /**
31
82
  * 캐시 전체 조회 (always_load=true인 항목들)
32
83
  */
@@ -63,6 +114,10 @@ export declare class CoreMemoryCacheService implements CoreMemoryCache {
63
114
  agentIds: string[];
64
115
  keys: string[];
65
116
  };
117
+ /**
118
+ * 캐시 무효화 (별칭, 리스너 알림 포함)
119
+ */
120
+ invalidate(key: string, reason?: string): boolean;
66
121
  }
67
122
  /**
68
123
  * 전역 Core Memory Cache 인스턴스 가져오기
@@ -1 +1 @@
1
- {"version":3,"file":"core-memory-cache-service.d.ts","sourceRoot":"","sources":["../../../../src/domains/memory/services/core-memory-cache-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAClF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAEhE;;;GAGG;AACH,qBAAa,sBAAuB,YAAW,eAAe;IAC5D,OAAO,CAAC,KAAK,CAA4C;IAEzD;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG,IAAI;IAI/C;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAI9C;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI5B;;OAEG;IACH,MAAM,IAAI,gBAAgB,EAAE;IAI5B;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIzB;;OAEG;IACH,IAAI,IAAI,MAAM;IAId;;OAEG;IACH,IAAI,IAAI,MAAM,EAAE;IAIhB;;OAEG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,EAAE;IAMlD;;OAEG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAWzC;;OAEG;IACH,QAAQ,IAAI;QACV,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,IAAI,EAAE,MAAM,EAAE,CAAC;KAChB;CAYF;AAKD;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,sBAAsB,CAK3D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,sBAAsB,GAAG,IAAI,CAEtE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C"}
1
+ {"version":3,"file":"core-memory-cache-service.d.ts","sourceRoot":"","sources":["../../../../src/domains/memory/services/core-memory-cache-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAClF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAGhE;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,gBAAgB,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC;;OAEG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEjD;;OAEG;IACH,eAAe,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACxC;AAED;;;;GAIG;AACH,qBAAa,sBAAuB,YAAW,eAAe;IAC5D,OAAO,CAAC,KAAK,CAAsC;IACnD,OAAO,CAAC,SAAS,CAA6C;IAE9D;;;OAGG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG,IAAI;IAc/C;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAK9C;;OAEG;IACH,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAInD;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAS5B;;;;OAIG;IACH,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;IAuB5D;;OAEG;IACH,qBAAqB,CAAC,QAAQ,EAAE,yBAAyB,GAAG,IAAI;IAIhE;;OAEG;IACH,uBAAuB,CAAC,QAAQ,EAAE,yBAAyB,GAAG,IAAI;IAIlE;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAUxB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAU3B;;OAEG;IACH,MAAM,IAAI,gBAAgB,EAAE;IAI5B;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIzB;;OAEG;IACH,IAAI,IAAI,MAAM;IAId;;OAEG;IACH,IAAI,IAAI,MAAM,EAAE;IAIhB;;OAEG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,EAAE;IAMlD;;OAEG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAYzC;;OAEG;IACH,QAAQ,IAAI;QACV,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,IAAI,EAAE,MAAM,EAAE,CAAC;KAChB;IAaD;;OAEG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO;CAOlD;AAKD;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,sBAAsB,CAK3D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,sBAAsB,GAAG,IAAI,CAEtE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C"}
@@ -7,41 +7,130 @@
7
7
  * - TTL 없음: always_load=true인 항목은 영구적으로 메모리에 유지
8
8
  * - 빠른 조회: Map 기반 O(1) 조회 성능
9
9
  */
10
+ import { logger } from '../../../shared/utils/logger.js';
10
11
  /**
11
12
  * Core Memory Cache Service Implementation
12
13
  * always_load=true인 Core Memory 항목들을 메모리에 캐싱
14
+ * 버전 기반 캐시 무효화 지원
13
15
  */
14
16
  export class CoreMemoryCacheService {
15
17
  cache = new Map();
18
+ listeners = new Set();
16
19
  /**
17
20
  * 항목을 캐시에 저장
21
+ * version=0인 경우 경고 로그 출력 (마이그레이션 미완료 가능성)
18
22
  */
19
23
  set(key, value) {
20
- this.cache.set(key, value);
24
+ // version=0인 경우 경고 로그 출력
25
+ if (value.version === 0) {
26
+ logger.warn(`CoreMemoryCacheService: version=0인 항목이 캐시에 저장됨 (key: ${key}). 마이그레이션이 완료되지 않았을 수 있습니다.`);
27
+ }
28
+ const entry = {
29
+ record: value,
30
+ cachedAt: Date.now(),
31
+ version: value.version
32
+ };
33
+ this.cache.set(key, entry);
21
34
  }
22
35
  /**
23
36
  * 캐시에서 항목 조회
24
37
  */
25
38
  get(key) {
39
+ const entry = this.cache.get(key);
40
+ return entry ? entry.record : undefined;
41
+ }
42
+ /**
43
+ * 캐시에서 항목과 버전 정보 조회
44
+ */
45
+ getWithVersion(key) {
26
46
  return this.cache.get(key);
27
47
  }
28
48
  /**
29
49
  * 캐시에서 항목 삭제
30
50
  */
31
51
  delete(key) {
32
- return this.cache.delete(key);
52
+ const deleted = this.cache.delete(key);
53
+ if (deleted) {
54
+ // 리스너에게 알림
55
+ this.notifyInvalidate(key, 'delete');
56
+ }
57
+ return deleted;
58
+ }
59
+ /**
60
+ * 버전 기반 캐시 무효화
61
+ * DB의 버전이 캐시의 버전보다 높으면 무효화
62
+ * version=0인 경우 항상 무효화 (마이그레이션 미완료로 간주)
63
+ */
64
+ invalidateByVersion(key, dbVersion) {
65
+ const entry = this.cache.get(key);
66
+ if (!entry) {
67
+ return false; // 캐시에 없음
68
+ }
69
+ // version=0인 경우 항상 무효화
70
+ if (entry.version === 0) {
71
+ this.cache.delete(key);
72
+ this.notifyInvalidate(key, 'version_zero');
73
+ return true;
74
+ }
75
+ // DB 버전이 캐시 버전보다 높으면 무효화
76
+ if (dbVersion > entry.version) {
77
+ this.cache.delete(key);
78
+ this.notifyInvalidate(key, `version_mismatch: cache=${entry.version}, db=${dbVersion}`);
79
+ return true;
80
+ }
81
+ return false; // 무효화되지 않음
82
+ }
83
+ /**
84
+ * 캐시 무효화 리스너 구독
85
+ */
86
+ subscribeInvalidation(listener) {
87
+ this.listeners.add(listener);
88
+ }
89
+ /**
90
+ * 캐시 무효화 리스너 구독 해제
91
+ */
92
+ unsubscribeInvalidation(listener) {
93
+ this.listeners.delete(listener);
94
+ }
95
+ /**
96
+ * 특정 키 무효화 알림
97
+ */
98
+ notifyInvalidate(key, reason) {
99
+ for (const listener of this.listeners) {
100
+ try {
101
+ listener.onInvalidate(key, reason);
102
+ }
103
+ catch (error) {
104
+ logger.error(`CacheInvalidationListener.onInvalidate 오류: ${error instanceof Error ? error.message : String(error)}`);
105
+ }
106
+ }
107
+ }
108
+ /**
109
+ * 전체 캐시 무효화 알림
110
+ */
111
+ notifyInvalidateAll(reason) {
112
+ for (const listener of this.listeners) {
113
+ try {
114
+ listener.onInvalidateAll(reason);
115
+ }
116
+ catch (error) {
117
+ logger.error(`CacheInvalidationListener.onInvalidateAll 오류: ${error instanceof Error ? error.message : String(error)}`);
118
+ }
119
+ }
33
120
  }
34
121
  /**
35
122
  * 캐시 전체 조회 (always_load=true인 항목들)
36
123
  */
37
124
  getAll() {
38
- return Array.from(this.cache.values());
125
+ return Array.from(this.cache.values()).map(entry => entry.record);
39
126
  }
40
127
  /**
41
128
  * 캐시 무효화
42
129
  */
43
130
  clear() {
44
131
  this.cache.clear();
132
+ // 리스너에게 알림
133
+ this.notifyInvalidateAll('clear');
45
134
  }
46
135
  /**
47
136
  * 캐시에 항목이 있는지 확인
@@ -65,16 +154,19 @@ export class CoreMemoryCacheService {
65
154
  * agent_id로 필터링된 항목 조회
66
155
  */
67
156
  getByAgentId(agent_id) {
68
- return Array.from(this.cache.values()).filter(record => record.agent_id === agent_id);
157
+ return Array.from(this.cache.values())
158
+ .filter(entry => entry.record.agent_id === agent_id)
159
+ .map(entry => entry.record);
69
160
  }
70
161
  /**
71
162
  * agent_id로 필터링된 항목 삭제
72
163
  */
73
164
  deleteByAgentId(agent_id) {
74
165
  let deletedCount = 0;
75
- for (const [key, record] of this.cache.entries()) {
76
- if (record.agent_id === agent_id) {
166
+ for (const [key, entry] of this.cache.entries()) {
167
+ if (entry.record.agent_id === agent_id) {
77
168
  this.cache.delete(key);
169
+ this.notifyInvalidate(key, `deleteByAgentId: ${agent_id}`);
78
170
  deletedCount++;
79
171
  }
80
172
  }
@@ -85,8 +177,8 @@ export class CoreMemoryCacheService {
85
177
  */
86
178
  getStats() {
87
179
  const agentIds = new Set();
88
- for (const record of this.cache.values()) {
89
- agentIds.add(record.agent_id);
180
+ for (const entry of this.cache.values()) {
181
+ agentIds.add(entry.record.agent_id);
90
182
  }
91
183
  return {
92
184
  size: this.cache.size,
@@ -94,6 +186,16 @@ export class CoreMemoryCacheService {
94
186
  keys: Array.from(this.cache.keys())
95
187
  };
96
188
  }
189
+ /**
190
+ * 캐시 무효화 (별칭, 리스너 알림 포함)
191
+ */
192
+ invalidate(key, reason) {
193
+ const deleted = this.cache.delete(key);
194
+ if (deleted) {
195
+ this.notifyInvalidate(key, reason);
196
+ }
197
+ return deleted;
198
+ }
97
199
  }
98
200
  // 싱글톤 인스턴스
99
201
  let cacheInstance = null;
@@ -1 +1 @@
1
- {"version":3,"file":"core-memory-cache-service.js","sourceRoot":"","sources":["../../../../src/domains/memory/services/core-memory-cache-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core-memory-cache-service.js","sourceRoot":"","sources":["../../../../src/domains/memory/services/core-memory-cache-service.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@
7
7
  * - 의존성 역전: Repository에 의존
8
8
  * - 캐시 연동: always_load=true인 항목은 캐시에 유지
9
9
  */
10
- import { CoreMemoryRepository, type CoreMemoryRecord } from '../repositories/core-memory-repository.js';
10
+ import type { CoreMemoryRepository, CoreMemoryRecord } from '../repositories/core-memory-repository.interface.js';
11
11
  export interface CoreMemoryCache {
12
12
  /**
13
13
  * 항목을 캐시에 저장
@@ -66,7 +66,7 @@ export declare class CoreMemoryService {
66
66
  */
67
67
  findById(core_id: string): Promise<CoreMemoryRecord | null>;
68
68
  /**
69
- * agent_id와 key로 Core Memory 조회 (캐시 우선)
69
+ * agent_id와 key로 Core Memory 조회 (캐시 우선, 버전 비교)
70
70
  */
71
71
  findByKey(agent_id: string, key: string): Promise<CoreMemoryRecord | null>;
72
72
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"core-memory-service.d.ts","sourceRoot":"","sources":["../../../../src/domains/memory/services/core-memory-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core-memory-service.d.ts","sourceRoot":"","sources":["../../../../src/domains/memory/services/core-memory-service.ts"],"names":[],"mappings":"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"}