a2a-memory 0.1.2 → 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.
Files changed (191) hide show
  1. package/README.md +262 -45
  2. package/dist/adapters/anthropic.d.ts +69 -0
  3. package/dist/adapters/anthropic.d.ts.map +1 -0
  4. package/dist/adapters/anthropic.js +116 -0
  5. package/dist/adapters/anthropic.js.map +1 -0
  6. package/dist/claude/sync.d.ts +57 -0
  7. package/dist/claude/sync.d.ts.map +1 -0
  8. package/dist/claude/sync.js +201 -0
  9. package/dist/claude/sync.js.map +1 -0
  10. package/dist/cli/commands/add.d.ts +8 -0
  11. package/dist/cli/commands/add.d.ts.map +1 -0
  12. package/dist/cli/commands/add.js +45 -0
  13. package/dist/cli/commands/add.js.map +1 -0
  14. package/dist/cli/commands/claude-sync.d.ts +11 -0
  15. package/dist/cli/commands/claude-sync.d.ts.map +1 -0
  16. package/dist/cli/commands/claude-sync.js +69 -0
  17. package/dist/cli/commands/claude-sync.js.map +1 -0
  18. package/dist/cli/commands/cleanup.d.ts +8 -0
  19. package/dist/cli/commands/cleanup.d.ts.map +1 -0
  20. package/dist/cli/commands/cleanup.js +82 -0
  21. package/dist/cli/commands/cleanup.js.map +1 -0
  22. package/dist/cli/commands/edit.d.ts +8 -0
  23. package/dist/cli/commands/edit.d.ts.map +1 -0
  24. package/dist/cli/commands/edit.js +66 -0
  25. package/dist/cli/commands/edit.js.map +1 -0
  26. package/dist/cli/commands/embed.d.ts +8 -0
  27. package/dist/cli/commands/embed.d.ts.map +1 -0
  28. package/dist/cli/commands/embed.js +93 -0
  29. package/dist/cli/commands/embed.js.map +1 -0
  30. package/dist/cli/commands/health.d.ts +8 -0
  31. package/dist/cli/commands/health.d.ts.map +1 -0
  32. package/dist/cli/commands/health.js +108 -0
  33. package/dist/cli/commands/health.js.map +1 -0
  34. package/dist/cli/commands/rm.d.ts +8 -0
  35. package/dist/cli/commands/rm.d.ts.map +1 -0
  36. package/dist/cli/commands/rm.js +60 -0
  37. package/dist/cli/commands/rm.js.map +1 -0
  38. package/dist/cli/commands/sync.d.ts.map +1 -1
  39. package/dist/cli/commands/sync.js +52 -0
  40. package/dist/cli/commands/sync.js.map +1 -1
  41. package/dist/cli/commands/team.d.ts +7 -0
  42. package/dist/cli/commands/team.d.ts.map +1 -0
  43. package/dist/cli/commands/team.js +144 -0
  44. package/dist/cli/commands/team.js.map +1 -0
  45. package/dist/cli/index.d.ts +5 -0
  46. package/dist/cli/index.d.ts.map +1 -1
  47. package/dist/cli/index.js +44 -1
  48. package/dist/cli/index.js.map +1 -1
  49. package/dist/config/manager.d.ts +16 -0
  50. package/dist/config/manager.d.ts.map +1 -1
  51. package/dist/config/manager.js +170 -5
  52. package/dist/config/manager.js.map +1 -1
  53. package/dist/db/database.d.ts +28 -3
  54. package/dist/db/database.d.ts.map +1 -1
  55. package/dist/db/database.js +291 -64
  56. package/dist/db/database.js.map +1 -1
  57. package/dist/embedding/index.d.ts +21 -0
  58. package/dist/embedding/index.d.ts.map +1 -0
  59. package/dist/embedding/index.js +29 -0
  60. package/dist/embedding/index.js.map +1 -0
  61. package/dist/embedding/local-provider.d.ts +40 -0
  62. package/dist/embedding/local-provider.d.ts.map +1 -0
  63. package/dist/embedding/local-provider.js +157 -0
  64. package/dist/embedding/local-provider.js.map +1 -0
  65. package/dist/embedding/openai-provider.d.ts +31 -0
  66. package/dist/embedding/openai-provider.d.ts.map +1 -0
  67. package/dist/embedding/openai-provider.js +92 -0
  68. package/dist/embedding/openai-provider.js.map +1 -0
  69. package/dist/embedding/quantization.d.ts +34 -0
  70. package/dist/embedding/quantization.d.ts.map +1 -0
  71. package/dist/embedding/quantization.js +89 -0
  72. package/dist/embedding/quantization.js.map +1 -0
  73. package/dist/extraction/extractor.d.ts +11 -1
  74. package/dist/extraction/extractor.d.ts.map +1 -1
  75. package/dist/extraction/extractor.js +63 -20
  76. package/dist/extraction/extractor.js.map +1 -1
  77. package/dist/extraction/filter.d.ts.map +1 -1
  78. package/dist/extraction/filter.js +25 -3
  79. package/dist/extraction/filter.js.map +1 -1
  80. package/dist/extraction/scorer.d.ts +2 -0
  81. package/dist/extraction/scorer.d.ts.map +1 -1
  82. package/dist/extraction/scorer.js +23 -1
  83. package/dist/extraction/scorer.js.map +1 -1
  84. package/dist/extraction/similarity.d.ts +25 -0
  85. package/dist/extraction/similarity.d.ts.map +1 -0
  86. package/dist/extraction/similarity.js +85 -0
  87. package/dist/extraction/similarity.js.map +1 -0
  88. package/dist/hooks/post-tool-use.d.ts.map +1 -1
  89. package/dist/hooks/post-tool-use.js +88 -53
  90. package/dist/hooks/post-tool-use.js.map +1 -1
  91. package/dist/hooks/session-end.d.ts +1 -0
  92. package/dist/hooks/session-end.d.ts.map +1 -1
  93. package/dist/hooks/session-end.js +173 -33
  94. package/dist/hooks/session-end.js.map +1 -1
  95. package/dist/hooks/session-start.d.ts +2 -2
  96. package/dist/hooks/session-start.d.ts.map +1 -1
  97. package/dist/hooks/session-start.js +172 -22
  98. package/dist/hooks/session-start.js.map +1 -1
  99. package/dist/hooks/shared.d.ts +18 -0
  100. package/dist/hooks/shared.d.ts.map +1 -0
  101. package/dist/hooks/shared.js +46 -0
  102. package/dist/hooks/shared.js.map +1 -0
  103. package/dist/i18n/index.d.ts +3 -0
  104. package/dist/i18n/index.d.ts.map +1 -0
  105. package/dist/i18n/index.js +2 -0
  106. package/dist/i18n/index.js.map +1 -0
  107. package/dist/i18n/messages.d.ts +82 -0
  108. package/dist/i18n/messages.d.ts.map +1 -0
  109. package/dist/i18n/messages.js +150 -0
  110. package/dist/i18n/messages.js.map +1 -0
  111. package/dist/index.d.ts +25 -5
  112. package/dist/index.d.ts.map +1 -1
  113. package/dist/index.js +20 -3
  114. package/dist/index.js.map +1 -1
  115. package/dist/lifecycle/cleanup.d.ts +25 -0
  116. package/dist/lifecycle/cleanup.d.ts.map +1 -0
  117. package/dist/lifecycle/cleanup.js +52 -0
  118. package/dist/lifecycle/cleanup.js.map +1 -0
  119. package/dist/lifecycle/index.d.ts +15 -0
  120. package/dist/lifecycle/index.d.ts.map +1 -0
  121. package/dist/lifecycle/index.js +12 -0
  122. package/dist/lifecycle/index.js.map +1 -0
  123. package/dist/lifecycle/quality-scorer.d.ts +19 -0
  124. package/dist/lifecycle/quality-scorer.d.ts.map +1 -0
  125. package/dist/lifecycle/quality-scorer.js +40 -0
  126. package/dist/lifecycle/quality-scorer.js.map +1 -0
  127. package/dist/lifecycle/tiering.d.ts +50 -0
  128. package/dist/lifecycle/tiering.d.ts.map +1 -0
  129. package/dist/lifecycle/tiering.js +235 -0
  130. package/dist/lifecycle/tiering.js.map +1 -0
  131. package/dist/llm/client.d.ts +37 -0
  132. package/dist/llm/client.d.ts.map +1 -0
  133. package/dist/llm/client.js +154 -0
  134. package/dist/llm/client.js.map +1 -0
  135. package/dist/llm/index.d.ts +6 -0
  136. package/dist/llm/index.d.ts.map +1 -0
  137. package/dist/llm/index.js +5 -0
  138. package/dist/llm/index.js.map +1 -0
  139. package/dist/search/index.d.ts +8 -0
  140. package/dist/search/index.d.ts.map +1 -0
  141. package/dist/search/index.js +7 -0
  142. package/dist/search/index.js.map +1 -0
  143. package/dist/search/ranker.d.ts +30 -0
  144. package/dist/search/ranker.d.ts.map +1 -0
  145. package/dist/search/ranker.js +91 -0
  146. package/dist/search/ranker.js.map +1 -0
  147. package/dist/sync/client.d.ts +103 -0
  148. package/dist/sync/client.d.ts.map +1 -1
  149. package/dist/sync/client.js +186 -6
  150. package/dist/sync/client.js.map +1 -1
  151. package/dist/sync/encryption.d.ts +72 -0
  152. package/dist/sync/encryption.d.ts.map +1 -0
  153. package/dist/sync/encryption.js +203 -0
  154. package/dist/sync/encryption.js.map +1 -0
  155. package/dist/sync/index.d.ts +9 -0
  156. package/dist/sync/index.d.ts.map +1 -1
  157. package/dist/sync/index.js +6 -0
  158. package/dist/sync/index.js.map +1 -1
  159. package/dist/sync/queue.d.ts +49 -0
  160. package/dist/sync/queue.d.ts.map +1 -0
  161. package/dist/sync/queue.js +112 -0
  162. package/dist/sync/queue.js.map +1 -0
  163. package/dist/sync/scheduler.d.ts +69 -0
  164. package/dist/sync/scheduler.d.ts.map +1 -0
  165. package/dist/sync/scheduler.js +140 -0
  166. package/dist/sync/scheduler.js.map +1 -0
  167. package/dist/sync/synchronizer.d.ts +19 -5
  168. package/dist/sync/synchronizer.d.ts.map +1 -1
  169. package/dist/sync/synchronizer.js +128 -70
  170. package/dist/sync/synchronizer.js.map +1 -1
  171. package/dist/sync/team-synchronizer.d.ts +43 -0
  172. package/dist/sync/team-synchronizer.d.ts.map +1 -0
  173. package/dist/sync/team-synchronizer.js +126 -0
  174. package/dist/sync/team-synchronizer.js.map +1 -0
  175. package/dist/sync/vector-clock.d.ts +23 -0
  176. package/dist/sync/vector-clock.d.ts.map +1 -0
  177. package/dist/sync/vector-clock.js +40 -0
  178. package/dist/sync/vector-clock.js.map +1 -0
  179. package/dist/types/index.d.ts +74 -2
  180. package/dist/types/index.d.ts.map +1 -1
  181. package/dist/types/index.js +56 -4
  182. package/dist/types/index.js.map +1 -1
  183. package/dist/utils/keychain.d.ts +50 -0
  184. package/dist/utils/keychain.d.ts.map +1 -0
  185. package/dist/utils/keychain.js +166 -0
  186. package/dist/utils/keychain.js.map +1 -0
  187. package/dist/utils/logger.d.ts +16 -0
  188. package/dist/utils/logger.d.ts.map +1 -0
  189. package/dist/utils/logger.js +118 -0
  190. package/dist/utils/logger.js.map +1 -0
  191. package/package.json +1 -1
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Hook 공유 유틸리티
3
+ * 프로세스 내 DB 싱글톤으로 중복 초기화 방지
4
+ */
5
+ import { MemoryDatabase } from '../db/database.js';
6
+ let _sharedDb = null;
7
+ let _sharedDbPath = null;
8
+ /**
9
+ * 프로세스 내 DB 싱글톤 조회/생성
10
+ */
11
+ export function getSharedDb(dbPath) {
12
+ if (_sharedDb && _sharedDbPath === dbPath) {
13
+ return _sharedDb;
14
+ }
15
+ if (_sharedDb) {
16
+ try {
17
+ _sharedDb.close();
18
+ }
19
+ catch { /* ignore */ }
20
+ }
21
+ _sharedDb = new MemoryDatabase(dbPath);
22
+ _sharedDbPath = dbPath;
23
+ _sharedDb.initialize();
24
+ return _sharedDb;
25
+ }
26
+ /**
27
+ * DB 종료 (프로세스 종료 시 호출)
28
+ */
29
+ export function closeSharedDb() {
30
+ if (_sharedDb) {
31
+ try {
32
+ _sharedDb.close();
33
+ }
34
+ catch { /* ignore */ }
35
+ _sharedDb = null;
36
+ _sharedDbPath = null;
37
+ }
38
+ }
39
+ /**
40
+ * 테스트용 리셋
41
+ */
42
+ export function resetSharedDb() {
43
+ _sharedDb = null;
44
+ _sharedDbPath = null;
45
+ }
46
+ //# sourceMappingURL=shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/hooks/shared.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,IAAI,SAAS,GAA0B,IAAI,CAAC;AAC5C,IAAI,aAAa,GAAkB,IAAI,CAAC;AAExC;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,MAAc;IACxC,IAAI,SAAS,IAAI,aAAa,KAAK,MAAM,EAAE,CAAC;QAC1C,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,SAAS,EAAE,CAAC;QACd,IAAI,CAAC;YAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;IACnD,CAAC;IACD,SAAS,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;IACvC,aAAa,GAAG,MAAM,CAAC;IACvB,SAAS,CAAC,UAAU,EAAE,CAAC;IACvB,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,IAAI,SAAS,EAAE,CAAC;QACd,IAAI,CAAC;YAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QACjD,SAAS,GAAG,IAAI,CAAC;QACjB,aAAa,GAAG,IAAI,CAAC;IACvB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,SAAS,GAAG,IAAI,CAAC;IACjB,aAAa,GAAG,IAAI,CAAC;AACvB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { t, setLocale, getLocale, detectLocale, getMessages } from './messages.js';
2
+ export type { Locale, Messages } from './messages.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/i18n/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACnF,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { t, setLocale, getLocale, detectLocale, getMessages } from './messages.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/i18n/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * i18n Messages
3
+ *
4
+ * CLI 메시지의 다국어 지원을 위한 메시지 번들.
5
+ * 지원 언어: en (English), ko (Korean)
6
+ */
7
+ export type Locale = 'en' | 'ko';
8
+ export interface Messages {
9
+ error: string;
10
+ success: string;
11
+ warning: string;
12
+ notFound: string;
13
+ done: string;
14
+ setupTitle: string;
15
+ setupComplete: string;
16
+ setupDbCreated: string;
17
+ setupHooksRegistered: string;
18
+ setupAlreadyDone: string;
19
+ statusTitle: string;
20
+ statusMemoryCount: string;
21
+ statusDbSize: string;
22
+ statusDbPath: string;
23
+ statusCategories: string;
24
+ statusNoMemories: string;
25
+ searchTitle: string;
26
+ searchNoResults: string;
27
+ searchResultCount: (count: number) => string;
28
+ listTitle: string;
29
+ listEmpty: string;
30
+ addTitle: string;
31
+ addSuccess: string;
32
+ editSuccess: string;
33
+ editNotFound: string;
34
+ rmSuccess: string;
35
+ rmNotFound: string;
36
+ syncTitle: string;
37
+ syncPushed: (count: number) => string;
38
+ syncPulled: (count: number) => string;
39
+ syncNoChanges: string;
40
+ syncWatchStarted: string;
41
+ syncWatchStopped: string;
42
+ extractTitle: string;
43
+ extractNoSessions: string;
44
+ extractComplete: (count: number) => string;
45
+ healthTitle: string;
46
+ healthDbOk: string;
47
+ healthDbError: string;
48
+ healthConfigOk: string;
49
+ cleanupTitle: string;
50
+ cleanupComplete: (count: number) => string;
51
+ cleanupNone: string;
52
+ embedTitle: string;
53
+ embedGenerated: (count: number) => string;
54
+ claudeSyncTitle: string;
55
+ claudeSyncNotFound: string;
56
+ claudeSyncFile: string;
57
+ claudeSyncSections: string;
58
+ claudeSyncCreated: string;
59
+ claudeSyncUpdated: string;
60
+ claudeSyncSkipped: string;
61
+ }
62
+ /**
63
+ * Set the current locale
64
+ */
65
+ export declare function setLocale(locale: Locale): void;
66
+ /**
67
+ * Get the current locale
68
+ */
69
+ export declare function getLocale(): Locale;
70
+ /**
71
+ * Get messages for the current locale
72
+ */
73
+ export declare function t(): Messages;
74
+ /**
75
+ * Get messages for a specific locale
76
+ */
77
+ export declare function getMessages(locale: Locale): Messages;
78
+ /**
79
+ * Detect locale from environment
80
+ */
81
+ export declare function detectLocale(): Locale;
82
+ //# sourceMappingURL=messages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/i18n/messages.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;AAEjC,MAAM,WAAW,QAAQ;IAEvB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IAGb,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,gBAAgB,EAAE,MAAM,CAAC;IAGzB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IAGzB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAG7C,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAGlB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IAGnB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IAGrB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IAGnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACtC,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACtC,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IAGzB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAG3C,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IAGvB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3C,WAAW,EAAE,MAAM,CAAC;IAGpB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAG1C,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AA8ID;;GAEG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAE9C;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED;;GAEG;AACH,wBAAgB,CAAC,IAAI,QAAQ,CAE5B;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAEpD;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAIrC"}
@@ -0,0 +1,150 @@
1
+ /**
2
+ * i18n Messages
3
+ *
4
+ * CLI 메시지의 다국어 지원을 위한 메시지 번들.
5
+ * 지원 언어: en (English), ko (Korean)
6
+ */
7
+ const en = {
8
+ error: 'Error',
9
+ success: 'Success',
10
+ warning: 'Warning',
11
+ notFound: 'Not found',
12
+ done: 'Done',
13
+ setupTitle: 'A2A Memory Setup',
14
+ setupComplete: 'Setup complete!',
15
+ setupDbCreated: 'Database created',
16
+ setupHooksRegistered: 'Claude Code hooks registered',
17
+ setupAlreadyDone: 'Already configured. Use --force to re-initialize.',
18
+ statusTitle: 'A2A Memory Status',
19
+ statusMemoryCount: 'Memories',
20
+ statusDbSize: 'DB Size',
21
+ statusDbPath: 'DB Path',
22
+ statusCategories: 'Categories',
23
+ statusNoMemories: 'No memories stored yet.',
24
+ searchTitle: 'Search Results',
25
+ searchNoResults: 'No results found.',
26
+ searchResultCount: (count) => `${count} result${count === 1 ? '' : 's'} found`,
27
+ listTitle: 'Memory List',
28
+ listEmpty: 'No memories match the criteria.',
29
+ addTitle: 'Add Memory',
30
+ addSuccess: 'Memory added successfully.',
31
+ editSuccess: 'Memory updated successfully.',
32
+ editNotFound: 'Memory not found.',
33
+ rmSuccess: 'Memory deleted.',
34
+ rmNotFound: 'Memory not found.',
35
+ syncTitle: 'Sync',
36
+ syncPushed: (count) => `Pushed ${count} memor${count === 1 ? 'y' : 'ies'}`,
37
+ syncPulled: (count) => `Pulled ${count} memor${count === 1 ? 'y' : 'ies'}`,
38
+ syncNoChanges: 'No changes to sync.',
39
+ syncWatchStarted: 'Watching for changes...',
40
+ syncWatchStopped: 'Sync watch stopped.',
41
+ extractTitle: 'Extract Memories',
42
+ extractNoSessions: 'No session files found.',
43
+ extractComplete: (count) => `Extracted ${count} memor${count === 1 ? 'y' : 'ies'}`,
44
+ healthTitle: 'A2A Memory Health Check',
45
+ healthDbOk: 'OK',
46
+ healthDbError: 'Error',
47
+ healthConfigOk: 'OK',
48
+ cleanupTitle: 'Memory Cleanup',
49
+ cleanupComplete: (count) => `Cleaned up ${count} memor${count === 1 ? 'y' : 'ies'}`,
50
+ cleanupNone: 'No memories to clean up.',
51
+ embedTitle: 'Embedding Management',
52
+ embedGenerated: (count) => `Generated ${count} embedding${count === 1 ? '' : 's'}`,
53
+ claudeSyncTitle: 'CLAUDE.md Sync',
54
+ claudeSyncNotFound: 'CLAUDE.md file not found.',
55
+ claudeSyncFile: 'File',
56
+ claudeSyncSections: 'Sections',
57
+ claudeSyncCreated: 'Created',
58
+ claudeSyncUpdated: 'Updated',
59
+ claudeSyncSkipped: 'Skipped (unchanged)',
60
+ };
61
+ const ko = {
62
+ error: '오류',
63
+ success: '성공',
64
+ warning: '경고',
65
+ notFound: '찾을 수 없음',
66
+ done: '완료',
67
+ setupTitle: 'A2A Memory 설정',
68
+ setupComplete: '설정이 완료되었습니다!',
69
+ setupDbCreated: '데이터베이스 생성됨',
70
+ setupHooksRegistered: 'Claude Code 훅 등록됨',
71
+ setupAlreadyDone: '이미 설정되어 있습니다. --force로 재초기화하세요.',
72
+ statusTitle: 'A2A Memory 상태',
73
+ statusMemoryCount: '메모리 수',
74
+ statusDbSize: 'DB 크기',
75
+ statusDbPath: 'DB 경로',
76
+ statusCategories: '카테고리',
77
+ statusNoMemories: '저장된 메모리가 없습니다.',
78
+ searchTitle: '검색 결과',
79
+ searchNoResults: '결과가 없습니다.',
80
+ searchResultCount: (count) => `${count}개 결과`,
81
+ listTitle: '메모리 목록',
82
+ listEmpty: '조건에 맞는 메모리가 없습니다.',
83
+ addTitle: '메모리 추가',
84
+ addSuccess: '메모리가 추가되었습니다.',
85
+ editSuccess: '메모리가 수정되었습니다.',
86
+ editNotFound: '메모리를 찾을 수 없습니다.',
87
+ rmSuccess: '메모리가 삭제되었습니다.',
88
+ rmNotFound: '메모리를 찾을 수 없습니다.',
89
+ syncTitle: '동기화',
90
+ syncPushed: (count) => `${count}개 메모리 푸시됨`,
91
+ syncPulled: (count) => `${count}개 메모리 풀됨`,
92
+ syncNoChanges: '동기화할 변경사항이 없습니다.',
93
+ syncWatchStarted: '변경사항 감시 중...',
94
+ syncWatchStopped: '동기화 감시가 중지되었습니다.',
95
+ extractTitle: '메모리 추출',
96
+ extractNoSessions: '세션 파일을 찾을 수 없습니다.',
97
+ extractComplete: (count) => `${count}개 메모리 추출됨`,
98
+ healthTitle: 'A2A Memory 상태 점검',
99
+ healthDbOk: '정상',
100
+ healthDbError: '오류',
101
+ healthConfigOk: '정상',
102
+ cleanupTitle: '메모리 정리',
103
+ cleanupComplete: (count) => `${count}개 메모리 정리됨`,
104
+ cleanupNone: '정리할 메모리가 없습니다.',
105
+ embedTitle: '임베딩 관리',
106
+ embedGenerated: (count) => `${count}개 임베딩 생성됨`,
107
+ claudeSyncTitle: 'CLAUDE.md 동기화',
108
+ claudeSyncNotFound: 'CLAUDE.md 파일을 찾을 수 없습니다.',
109
+ claudeSyncFile: '파일',
110
+ claudeSyncSections: '섹션 수',
111
+ claudeSyncCreated: '새로 추가',
112
+ claudeSyncUpdated: '업데이트',
113
+ claudeSyncSkipped: '스킵 (변경없음)',
114
+ };
115
+ const bundles = { en, ko };
116
+ let currentLocale = 'en';
117
+ /**
118
+ * Set the current locale
119
+ */
120
+ export function setLocale(locale) {
121
+ currentLocale = locale;
122
+ }
123
+ /**
124
+ * Get the current locale
125
+ */
126
+ export function getLocale() {
127
+ return currentLocale;
128
+ }
129
+ /**
130
+ * Get messages for the current locale
131
+ */
132
+ export function t() {
133
+ return bundles[currentLocale];
134
+ }
135
+ /**
136
+ * Get messages for a specific locale
137
+ */
138
+ export function getMessages(locale) {
139
+ return bundles[locale];
140
+ }
141
+ /**
142
+ * Detect locale from environment
143
+ */
144
+ export function detectLocale() {
145
+ const lang = process.env.LANG || process.env.LC_ALL || process.env.LANGUAGE || '';
146
+ if (lang.startsWith('ko'))
147
+ return 'ko';
148
+ return 'en';
149
+ }
150
+ //# sourceMappingURL=messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/i18n/messages.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,17 +1,37 @@
1
1
  /**
2
2
  * A2A Memory Plugin - Public API
3
3
  */
4
- export type { Memory, MemoryCreateInput, MemorySearchOptions, MemorySearchResult, MemoryCategory, MemoryTier, SessionMessage, SessionContentBlock, SessionInfo, ExtractionResult, A2AConfig, HookContext, SessionStartContext, PostToolUseContext, SessionEndContext, SignificanceSignal, SignificanceResult, } from './types/index.js';
4
+ export type { Memory, MemoryCreateInput, MemorySearchOptions, MemorySearchResult, MemoryCategory, MemoryTier, SessionMessage, SessionContentBlock, SessionInfo, ExtractionResult, A2AConfig, TeamConfig, LLMConfig, EmbeddingConfig, LifecycleConfig, MemoryQuality, VectorClockState, HookContext, SessionStartContext, PostToolUseContext, SessionEndContext, SignificanceSignal, SignificanceResult, QuantizationLevel, } from './types/index.js';
5
5
  export { DEFAULT_CONFIG, SENSITIVE_PATTERNS } from './types/index.js';
6
6
  export { MemoryDatabase } from './db/database.js';
7
- export { ConfigManager } from './config/manager.js';
7
+ export { ConfigManager, generateNodeId, getConfigManager, resetConfigManager } from './config/manager.js';
8
8
  export { parseSessionFile, findSessionFiles, getSessionMessages } from './session/parser.js';
9
- export { extractMemories } from './extraction/extractor.js';
9
+ export { extractMemories, extractMemoriesWithLLM, summarizeSession } from './extraction/extractor.js';
10
10
  export { scoreSignificance } from './extraction/scorer.js';
11
11
  export { filterSensitiveInfo, isSensitivePath } from './extraction/filter.js';
12
12
  export { handleSessionStart } from './hooks/session-start.js';
13
13
  export { handlePostToolUse } from './hooks/post-tool-use.js';
14
14
  export { handleSessionEnd } from './hooks/session-end.js';
15
- export { A2AClient, MemorySynchronizer } from './sync/index.js';
16
- export type { A2AClientConfig, RemoteMemory, SyncResult } from './sync/index.js';
15
+ export { getSharedDb, closeSharedDb, resetSharedDb } from './hooks/shared.js';
16
+ export { A2AClient, MemorySynchronizer, SyncQueue, LocalVectorClock, TeamSynchronizer, SyncScheduler, mapCategory, mapTier, encryptContent, decryptContent, encryptEmbedding, decryptEmbedding, deriveKey, generateEncryptionKey, wrapEncryptedContent, unwrapEncryptedContent, isValidEncryptedPayload, } from './sync/index.js';
17
+ export type { A2AClientConfig, RemoteMemory, SyncResult, QueueFlushResult, FlushOptions, TeamSyncResult, TeamSyncStatus, SyncSchedulerOptions, SyncSchedulerStatus, EncryptedPayload, EncryptionConfig, KeyDerivationResult, } from './sync/index.js';
18
+ export { createLLMClient, OpenAILLMClient, AnthropicLLMClient, NoOpLLMClient } from './llm/index.js';
19
+ export type { LLMClient } from './llm/index.js';
20
+ export { createEmbeddingProvider, LocalEmbeddingProvider, OpenAIEmbeddingProvider, quantizeToFloat32, dequantizeFromFloat32, quantizeToInt8, dequantizeFromInt8, } from './embedding/index.js';
21
+ export type { EmbeddingProvider, QuantizationStats } from './embedding/index.js';
22
+ export { HybridRanker } from './search/index.js';
23
+ export type { RankedResult } from './search/index.js';
24
+ export { scoreQuality, cleanupMemories, determineTier, rebalanceTiers, promoteOnAccess } from './lifecycle/index.js';
25
+ export type { CleanupResult, TieringConfig, TieringResult, StorageTier } from './lifecycle/index.js';
26
+ export type { LogLevel, LoggingConfig } from './types/index.js';
27
+ export type { HookLogger } from './utils/logger.js';
28
+ export { createLogger } from './utils/logger.js';
29
+ export type { KeychainStore } from './utils/keychain.js';
30
+ export { createKeychainStore, getKeychainStore, resetKeychainStore } from './utils/keychain.js';
31
+ export { syncClaudeMd, findClaudeMd, parseClaudeMd } from './claude/sync.js';
32
+ export type { ClaudeSyncOptions, ClaudeSyncResult, SectionResult } from './claude/sync.js';
33
+ export { t, setLocale, getLocale, detectLocale, getMessages } from './i18n/index.js';
34
+ export type { Locale, Messages } from './i18n/index.js';
35
+ export { toAnthropicFormat, fromAnthropicFormat, toAnthropicBatch, fromAnthropicBatch, mapCategoryToAnthropicType, mapAnthropicTypeToCategory, } from './adapters/anthropic.js';
36
+ export type { AnthropicMemory, AnthropicMemoryListResponse } from './adapters/anthropic.js';
17
37
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,YAAY,EACV,MAAM,EACN,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EACd,UAAU,EACV,cAAc,EACd,mBAAmB,EACnB,WAAW,EACX,gBAAgB,EAChB,SAAS,EACT,WAAW,EACX,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAGtE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC7F,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAG9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG1D,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAChE,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -4,15 +4,32 @@
4
4
  export { DEFAULT_CONFIG, SENSITIVE_PATTERNS } from './types/index.js';
5
5
  // Core modules
6
6
  export { MemoryDatabase } from './db/database.js';
7
- export { ConfigManager } from './config/manager.js';
7
+ export { ConfigManager, generateNodeId, getConfigManager, resetConfigManager } from './config/manager.js';
8
8
  export { parseSessionFile, findSessionFiles, getSessionMessages } from './session/parser.js';
9
- export { extractMemories } from './extraction/extractor.js';
9
+ export { extractMemories, extractMemoriesWithLLM, summarizeSession } from './extraction/extractor.js';
10
10
  export { scoreSignificance } from './extraction/scorer.js';
11
11
  export { filterSensitiveInfo, isSensitivePath } from './extraction/filter.js';
12
12
  // Hooks
13
13
  export { handleSessionStart } from './hooks/session-start.js';
14
14
  export { handlePostToolUse } from './hooks/post-tool-use.js';
15
15
  export { handleSessionEnd } from './hooks/session-end.js';
16
+ export { getSharedDb, closeSharedDb, resetSharedDb } from './hooks/shared.js';
16
17
  // Sync
17
- export { A2AClient, MemorySynchronizer } from './sync/index.js';
18
+ export { A2AClient, MemorySynchronizer, SyncQueue, LocalVectorClock, TeamSynchronizer, SyncScheduler, mapCategory, mapTier, encryptContent, decryptContent, encryptEmbedding, decryptEmbedding, deriveKey, generateEncryptionKey, wrapEncryptedContent, unwrapEncryptedContent, isValidEncryptedPayload, } from './sync/index.js';
19
+ // LLM
20
+ export { createLLMClient, OpenAILLMClient, AnthropicLLMClient, NoOpLLMClient } from './llm/index.js';
21
+ // Embedding
22
+ export { createEmbeddingProvider, LocalEmbeddingProvider, OpenAIEmbeddingProvider, quantizeToFloat32, dequantizeFromFloat32, quantizeToInt8, dequantizeFromInt8, } from './embedding/index.js';
23
+ // Search
24
+ export { HybridRanker } from './search/index.js';
25
+ // Lifecycle
26
+ export { scoreQuality, cleanupMemories, determineTier, rebalanceTiers, promoteOnAccess } from './lifecycle/index.js';
27
+ export { createLogger } from './utils/logger.js';
28
+ export { createKeychainStore, getKeychainStore, resetKeychainStore } from './utils/keychain.js';
29
+ // Claude.md Sync
30
+ export { syncClaudeMd, findClaudeMd, parseClaudeMd } from './claude/sync.js';
31
+ // i18n
32
+ export { t, setLocale, getLocale, detectLocale, getMessages } from './i18n/index.js';
33
+ // Anthropic Adapter
34
+ export { toAnthropicFormat, fromAnthropicFormat, toAnthropicBatch, fromAnthropicBatch, mapCategoryToAnthropicType, mapAnthropicTypeToCategory, } from './adapters/anthropic.js';
18
35
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAuBH,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtE,eAAe;AACf,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC7F,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9E,QAAQ;AACR,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,OAAO;AACP,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AA8BH,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtE,eAAe;AACf,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC1G,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC7F,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AACtG,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9E,QAAQ;AACR,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAE9E,OAAO;AACP,OAAO,EACL,SAAS,EAAE,kBAAkB,EAAE,SAAS,EACxC,gBAAgB,EAAE,gBAAgB,EAAE,aAAa,EACjD,WAAW,EAAE,OAAO,EACpB,cAAc,EAAE,cAAc,EAC9B,gBAAgB,EAAE,gBAAgB,EAClC,SAAS,EAAE,qBAAqB,EAChC,oBAAoB,EAAE,sBAAsB,EAC5C,uBAAuB,GACxB,MAAM,iBAAiB,CAAC;AASzB,MAAM;AACN,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAGrG,YAAY;AACZ,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,EACvB,iBAAiB,EACjB,qBAAqB,EACrB,cAAc,EACd,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAG9B,SAAS;AACT,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,YAAY;AACZ,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAMrH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAIjD,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEhG,iBAAiB;AACjB,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAG7E,OAAO;AACP,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAGrF,oBAAoB;AACpB,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,0BAA0B,EAC1B,0BAA0B,GAC3B,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Memory Cleanup
3
+ *
4
+ * TTL 및 품질 기반 메모리 정리를 수행합니다.
5
+ */
6
+ import type { LifecycleConfig } from '../types/index.js';
7
+ import type { MemoryDatabase } from '../db/database.js';
8
+ export interface CleanupResult {
9
+ expired: number;
10
+ lowQuality: number;
11
+ total: number;
12
+ }
13
+ /**
14
+ * TTL 및 품질 기반 메모리 정리를 수행합니다.
15
+ *
16
+ * 정리 순서:
17
+ * 1. TTL 초과 메모리 삭제 (ttlDays > 0인 경우)
18
+ * 2. 메모리 개수 초과 시 품질 미달 메모리 삭제
19
+ *
20
+ * @param db - 메모리 데이터베이스
21
+ * @param config - 라이프사이클 설정
22
+ * @returns 정리 결과
23
+ */
24
+ export declare function cleanupMemories(db: MemoryDatabase, config: LifecycleConfig): CleanupResult;
25
+ //# sourceMappingURL=cleanup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cleanup.d.ts","sourceRoot":"","sources":["../../src/lifecycle/cleanup.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGxD,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAC7B,EAAE,EAAE,cAAc,EAClB,MAAM,EAAE,eAAe,GACtB,aAAa,CAsCf"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Memory Cleanup
3
+ *
4
+ * TTL 및 품질 기반 메모리 정리를 수행합니다.
5
+ */
6
+ import { scoreQuality } from './quality-scorer.js';
7
+ /**
8
+ * TTL 및 품질 기반 메모리 정리를 수행합니다.
9
+ *
10
+ * 정리 순서:
11
+ * 1. TTL 초과 메모리 삭제 (ttlDays > 0인 경우)
12
+ * 2. 메모리 개수 초과 시 품질 미달 메모리 삭제
13
+ *
14
+ * @param db - 메모리 데이터베이스
15
+ * @param config - 라이프사이클 설정
16
+ * @returns 정리 결과
17
+ */
18
+ export function cleanupMemories(db, config) {
19
+ let expired = 0;
20
+ let lowQuality = 0;
21
+ // 1. TTL 초과 메모리 삭제
22
+ if (config.ttlDays > 0) {
23
+ const oldMemories = db.getMemoriesOlderThan(config.ttlDays);
24
+ if (oldMemories.length > 0) {
25
+ const ids = oldMemories.map((m) => m.id);
26
+ expired = db.deleteMemories(ids);
27
+ }
28
+ }
29
+ // 2. 메모리 개수 초과 시 품질 미달 메모리 삭제
30
+ const currentCount = db.getMemoryCount();
31
+ if (currentCount > config.maxMemories) {
32
+ // 모든 메모리의 품질 점수 계산
33
+ const allMemories = db.listMemories({ limit: currentCount });
34
+ const scoredMemories = allMemories.map((memory) => ({
35
+ memory,
36
+ quality: scoreQuality(memory, config),
37
+ }));
38
+ // 품질 미달 메모리 필터링
39
+ const toDelete = scoredMemories
40
+ .filter((item) => item.quality.overall < config.qualityThreshold)
41
+ .map((item) => item.memory.id);
42
+ if (toDelete.length > 0) {
43
+ lowQuality = db.deleteMemories(toDelete);
44
+ }
45
+ }
46
+ return {
47
+ expired,
48
+ lowQuality,
49
+ total: expired + lowQuality,
50
+ };
51
+ }
52
+ //# sourceMappingURL=cleanup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cleanup.js","sourceRoot":"","sources":["../../src/lifecycle/cleanup.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAQnD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,eAAe,CAC7B,EAAkB,EAClB,MAAuB;IAEvB,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,mBAAmB;IACnB,IAAI,MAAM,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,WAAW,GAAG,EAAE,CAAC,oBAAoB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC5D,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACzC,OAAO,GAAG,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAED,8BAA8B;IAC9B,MAAM,YAAY,GAAG,EAAE,CAAC,cAAc,EAAE,CAAC;IACzC,IAAI,YAAY,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QACtC,mBAAmB;QACnB,MAAM,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;QAC7D,MAAM,cAAc,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAClD,MAAM;YACN,OAAO,EAAE,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC;SACtC,CAAC,CAAC,CAAC;QAEJ,gBAAgB;QAChB,MAAM,QAAQ,GAAG,cAAc;aAC5B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC;aAChE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAEjC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,UAAU,GAAG,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,OAAO;QACL,OAAO;QACP,UAAU;QACV,KAAK,EAAE,OAAO,GAAG,UAAU;KAC5B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Lifecycle Module
3
+ *
4
+ * 메모리 라이프사이클 관리:
5
+ * - 품질 점수 계산
6
+ * - TTL 및 품질 기반 정리
7
+ * - 메모리 티어링 (Hot/Warm/Cold)
8
+ */
9
+ export { scoreQuality } from './quality-scorer.js';
10
+ export type { MemoryQuality } from '../types/index.js';
11
+ export { cleanupMemories } from './cleanup.js';
12
+ export type { CleanupResult } from './cleanup.js';
13
+ export { determineTier, rebalanceTiers, promoteOnAccess } from './tiering.js';
14
+ export type { TieringConfig, TieringResult, StorageTier } from '../types/index.js';
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lifecycle/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC9E,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Lifecycle Module
3
+ *
4
+ * 메모리 라이프사이클 관리:
5
+ * - 품질 점수 계산
6
+ * - TTL 및 품질 기반 정리
7
+ * - 메모리 티어링 (Hot/Warm/Cold)
8
+ */
9
+ export { scoreQuality } from './quality-scorer.js';
10
+ export { cleanupMemories } from './cleanup.js';
11
+ export { determineTier, rebalanceTiers, promoteOnAccess } from './tiering.js';
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lifecycle/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Memory Quality Scorer
3
+ *
4
+ * 메모리 품질 점수를 계산합니다.
5
+ * - relevance: 검색 빈도 기반 (access_count)
6
+ * - freshness: 시간 기반 감쇠 (exponential decay)
7
+ * - usage: 접근 횟수 정규화
8
+ * - overall: 가중 평균 (0.4 * relevance + 0.3 * freshness + 0.3 * usage)
9
+ */
10
+ import type { Memory, MemoryQuality, LifecycleConfig } from '../types/index.js';
11
+ /**
12
+ * 메모리의 품질 점수를 계산합니다.
13
+ *
14
+ * @param memory - 평가할 메모리
15
+ * @param _config - 라이프사이클 설정 (현재는 미사용, 향후 확장용)
16
+ * @returns 품질 점수 객체 (0~1 범위)
17
+ */
18
+ export declare function scoreQuality(memory: Memory, _config: LifecycleConfig): MemoryQuality;
19
+ //# sourceMappingURL=quality-scorer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quality-scorer.d.ts","sourceRoot":"","sources":["../../src/lifecycle/quality-scorer.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEhF;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,aAAa,CA0BpF"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Memory Quality Scorer
3
+ *
4
+ * 메모리 품질 점수를 계산합니다.
5
+ * - relevance: 검색 빈도 기반 (access_count)
6
+ * - freshness: 시간 기반 감쇠 (exponential decay)
7
+ * - usage: 접근 횟수 정규화
8
+ * - overall: 가중 평균 (0.4 * relevance + 0.3 * freshness + 0.3 * usage)
9
+ */
10
+ /**
11
+ * 메모리의 품질 점수를 계산합니다.
12
+ *
13
+ * @param memory - 평가할 메모리
14
+ * @param _config - 라이프사이클 설정 (현재는 미사용, 향후 확장용)
15
+ * @returns 품질 점수 객체 (0~1 범위)
16
+ */
17
+ export function scoreQuality(memory, _config) {
18
+ // 1. Relevance: 검색 빈도 기반 (access_count / 10으로 정규화, 최대 1.0)
19
+ const relevance = Math.min(1.0, memory.accessCount / 10);
20
+ // 2. Freshness: 시간 기반 감쇠 (exponential decay)
21
+ // freshness = exp(-lambda * daysSinceUpdate)
22
+ // lambda = 0.01 (100일 후 약 0.37)
23
+ const lambda = 0.01;
24
+ const updatedAt = new Date(memory.updatedAt);
25
+ const now = new Date();
26
+ const daysSinceUpdate = (now.getTime() - updatedAt.getTime()) / (1000 * 60 * 60 * 24);
27
+ const freshness = Math.exp(-lambda * daysSinceUpdate);
28
+ // 3. Usage: access_count를 정규화 (relevance와 동일 로직)
29
+ const usage = Math.min(1.0, memory.accessCount / 10);
30
+ // 4. Overall: 가중 평균
31
+ // 40% relevance + 30% freshness + 30% usage
32
+ const overall = 0.4 * relevance + 0.3 * freshness + 0.3 * usage;
33
+ return {
34
+ relevance,
35
+ freshness,
36
+ usage,
37
+ overall,
38
+ };
39
+ }
40
+ //# sourceMappingURL=quality-scorer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quality-scorer.js","sourceRoot":"","sources":["../../src/lifecycle/quality-scorer.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,MAAc,EAAE,OAAwB;IACnE,2DAA2D;IAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC;IAEzD,6CAA6C;IAC7C,6CAA6C;IAC7C,gCAAgC;IAChC,MAAM,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC7C,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,eAAe,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IACtF,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,eAAe,CAAC,CAAC;IAEtD,iDAAiD;IACjD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC;IAErD,oBAAoB;IACpB,4CAA4C;IAC5C,MAAM,OAAO,GAAG,GAAG,GAAG,SAAS,GAAG,GAAG,GAAG,SAAS,GAAG,GAAG,GAAG,KAAK,CAAC;IAEhE,OAAO;QACL,SAAS;QACT,SAAS;QACT,KAAK;QACL,OAAO;KACR,CAAC;AACJ,CAAC"}