a2a-memory 0.11.5 → 0.12.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 (274) hide show
  1. package/LICENSE +7 -19
  2. package/README.md +1 -1
  3. package/dist/a2a/client.js +1 -252
  4. package/dist/a2a/discovery.js +1 -115
  5. package/dist/a2a/index.js +1 -8
  6. package/dist/a2a/types.js +1 -42
  7. package/dist/adapters/anthropic.js +1 -117
  8. package/dist/chunking/chunker.js +1 -163
  9. package/dist/claude/sync.d.ts +8 -2
  10. package/dist/claude/sync.js +1 -298
  11. package/dist/cli/commands/add.js +1 -80
  12. package/dist/cli/commands/claude-sync.d.ts +3 -3
  13. package/dist/cli/commands/claude-sync.js +1 -70
  14. package/dist/cli/commands/cleanup.js +1 -83
  15. package/dist/cli/commands/config.js +1 -79
  16. package/dist/cli/commands/edit.js +1 -69
  17. package/dist/cli/commands/embed.js +1 -92
  18. package/dist/cli/commands/extract.js +1 -103
  19. package/dist/cli/commands/health.js +1 -105
  20. package/dist/cli/commands/list.js +1 -46
  21. package/dist/cli/commands/migrate-chunks.js +1 -205
  22. package/dist/cli/commands/migrate-file-refs.js +1 -183
  23. package/dist/cli/commands/proficiency.js +1 -146
  24. package/dist/cli/commands/rm.js +1 -64
  25. package/dist/cli/commands/search.js +1 -90
  26. package/dist/cli/commands/setup-wizard.js +1 -387
  27. package/dist/cli/commands/setup.js +1 -170
  28. package/dist/cli/commands/skill.js +1 -151
  29. package/dist/cli/commands/status.js +1 -70
  30. package/dist/cli/commands/sync.js +1 -202
  31. package/dist/cli/commands/team.js +1 -142
  32. package/dist/cli/index.js +1 -87
  33. package/dist/config/manager.js +1 -372
  34. package/dist/db/database.d.ts +36 -0
  35. package/dist/db/database.js +1 -1400
  36. package/dist/embedding/e5-provider.js +1 -147
  37. package/dist/embedding/index.js +1 -34
  38. package/dist/embedding/local-provider.js +1 -157
  39. package/dist/embedding/openai-provider.js +1 -92
  40. package/dist/embedding/quantization.js +1 -89
  41. package/dist/extraction/dedup-manager.js +1 -161
  42. package/dist/extraction/emotion-filter.js +1 -33
  43. package/dist/extraction/extractor.d.ts +0 -3
  44. package/dist/extraction/extractor.js +1 -648
  45. package/dist/extraction/file-reference.js +1 -77
  46. package/dist/extraction/filter.js +1 -86
  47. package/dist/extraction/scorer.js +1 -142
  48. package/dist/extraction/similarity.js +1 -85
  49. package/dist/hooks/client-factory.js +1 -44
  50. package/dist/hooks/post-tool-use.js +1 -518
  51. package/dist/hooks/pre-compact.js +1 -209
  52. package/dist/hooks/session-end.js +1 -633
  53. package/dist/hooks/session-start.js +1 -549
  54. package/dist/hooks/shared.js +1 -110
  55. package/dist/hooks/stop.d.ts +21 -0
  56. package/dist/hooks/stop.js +1 -0
  57. package/dist/hooks/user-prompt-submit.js +1 -316
  58. package/dist/i18n/index.js +1 -2
  59. package/dist/i18n/messages.js +1 -150
  60. package/dist/index.d.ts +1 -1
  61. package/dist/index.js +1 -43
  62. package/dist/lifecycle/cleanup-scheduler.js +1 -137
  63. package/dist/lifecycle/cleanup.d.ts +1 -0
  64. package/dist/lifecycle/cleanup.js +1 -116
  65. package/dist/lifecycle/consolidation.d.ts +22 -0
  66. package/dist/lifecycle/consolidation.js +1 -0
  67. package/dist/lifecycle/index.d.ts +2 -0
  68. package/dist/lifecycle/index.js +1 -13
  69. package/dist/lifecycle/injection-flush.d.ts +24 -0
  70. package/dist/lifecycle/injection-flush.js +1 -0
  71. package/dist/lifecycle/quality-scorer.d.ts +5 -6
  72. package/dist/lifecycle/quality-scorer.js +1 -46
  73. package/dist/lifecycle/tiering.js +1 -246
  74. package/dist/llm/client.js +1 -226
  75. package/dist/llm/index.js +1 -5
  76. package/dist/proficiency/actr-engine.js +1 -106
  77. package/dist/proficiency/detection.js +1 -77
  78. package/dist/proficiency/index.js +1 -9
  79. package/dist/proficiency/tracker.js +1 -173
  80. package/dist/proficiency/types.js +1 -8
  81. package/dist/providers/adapters.js +1 -140
  82. package/dist/providers/detector.js +1 -57
  83. package/dist/search/adaptive-router.js +1 -93
  84. package/dist/search/index.js +1 -9
  85. package/dist/search/ranker.js +1 -171
  86. package/dist/search/reranker.js +1 -155
  87. package/dist/session/parser.js +1 -130
  88. package/dist/skill/evaluator.js +1 -509
  89. package/dist/skill/index.js +1 -7
  90. package/dist/skill/types.js +1 -7
  91. package/dist/sync/client.d.ts +7 -0
  92. package/dist/sync/client.js +1 -597
  93. package/dist/sync/encryption.js +1 -203
  94. package/dist/sync/index.js +1 -12
  95. package/dist/sync/queue.js +1 -214
  96. package/dist/sync/scheduler.js +1 -140
  97. package/dist/sync/synchronizer.js +1 -241
  98. package/dist/sync/team-synchronizer.js +1 -204
  99. package/dist/sync/vector-clock.js +1 -70
  100. package/dist/types/index.d.ts +13 -1
  101. package/dist/types/index.js +1 -132
  102. package/dist/utils/keychain.js +1 -170
  103. package/dist/utils/logger.js +1 -128
  104. package/package.json +15 -10
  105. package/dist/a2a/client.d.ts.map +0 -1
  106. package/dist/a2a/client.js.map +0 -1
  107. package/dist/a2a/discovery.d.ts.map +0 -1
  108. package/dist/a2a/discovery.js.map +0 -1
  109. package/dist/a2a/index.d.ts.map +0 -1
  110. package/dist/a2a/index.js.map +0 -1
  111. package/dist/a2a/types.d.ts.map +0 -1
  112. package/dist/a2a/types.js.map +0 -1
  113. package/dist/adapters/anthropic.d.ts.map +0 -1
  114. package/dist/adapters/anthropic.js.map +0 -1
  115. package/dist/chunking/chunker.d.ts.map +0 -1
  116. package/dist/chunking/chunker.js.map +0 -1
  117. package/dist/claude/sync.d.ts.map +0 -1
  118. package/dist/claude/sync.js.map +0 -1
  119. package/dist/cli/commands/add.d.ts.map +0 -1
  120. package/dist/cli/commands/add.js.map +0 -1
  121. package/dist/cli/commands/claude-sync.d.ts.map +0 -1
  122. package/dist/cli/commands/claude-sync.js.map +0 -1
  123. package/dist/cli/commands/cleanup.d.ts.map +0 -1
  124. package/dist/cli/commands/cleanup.js.map +0 -1
  125. package/dist/cli/commands/config.d.ts.map +0 -1
  126. package/dist/cli/commands/config.js.map +0 -1
  127. package/dist/cli/commands/edit.d.ts.map +0 -1
  128. package/dist/cli/commands/edit.js.map +0 -1
  129. package/dist/cli/commands/embed.d.ts.map +0 -1
  130. package/dist/cli/commands/embed.js.map +0 -1
  131. package/dist/cli/commands/extract.d.ts.map +0 -1
  132. package/dist/cli/commands/extract.js.map +0 -1
  133. package/dist/cli/commands/health.d.ts.map +0 -1
  134. package/dist/cli/commands/health.js.map +0 -1
  135. package/dist/cli/commands/list.d.ts.map +0 -1
  136. package/dist/cli/commands/list.js.map +0 -1
  137. package/dist/cli/commands/migrate-chunks.d.ts.map +0 -1
  138. package/dist/cli/commands/migrate-chunks.js.map +0 -1
  139. package/dist/cli/commands/migrate-file-refs.d.ts.map +0 -1
  140. package/dist/cli/commands/migrate-file-refs.js.map +0 -1
  141. package/dist/cli/commands/proficiency.d.ts.map +0 -1
  142. package/dist/cli/commands/proficiency.js.map +0 -1
  143. package/dist/cli/commands/rm.d.ts.map +0 -1
  144. package/dist/cli/commands/rm.js.map +0 -1
  145. package/dist/cli/commands/search.d.ts.map +0 -1
  146. package/dist/cli/commands/search.js.map +0 -1
  147. package/dist/cli/commands/setup-wizard.d.ts.map +0 -1
  148. package/dist/cli/commands/setup-wizard.js.map +0 -1
  149. package/dist/cli/commands/setup.d.ts.map +0 -1
  150. package/dist/cli/commands/setup.js.map +0 -1
  151. package/dist/cli/commands/skill.d.ts.map +0 -1
  152. package/dist/cli/commands/skill.js.map +0 -1
  153. package/dist/cli/commands/status.d.ts.map +0 -1
  154. package/dist/cli/commands/status.js.map +0 -1
  155. package/dist/cli/commands/sync.d.ts.map +0 -1
  156. package/dist/cli/commands/sync.js.map +0 -1
  157. package/dist/cli/commands/team.d.ts.map +0 -1
  158. package/dist/cli/commands/team.js.map +0 -1
  159. package/dist/cli/index.d.ts.map +0 -1
  160. package/dist/cli/index.js.map +0 -1
  161. package/dist/config/manager.d.ts.map +0 -1
  162. package/dist/config/manager.js.map +0 -1
  163. package/dist/db/database.d.ts.map +0 -1
  164. package/dist/db/database.js.map +0 -1
  165. package/dist/embedding/e5-provider.d.ts.map +0 -1
  166. package/dist/embedding/e5-provider.js.map +0 -1
  167. package/dist/embedding/index.d.ts.map +0 -1
  168. package/dist/embedding/index.js.map +0 -1
  169. package/dist/embedding/local-provider.d.ts.map +0 -1
  170. package/dist/embedding/local-provider.js.map +0 -1
  171. package/dist/embedding/openai-provider.d.ts.map +0 -1
  172. package/dist/embedding/openai-provider.js.map +0 -1
  173. package/dist/embedding/quantization.d.ts.map +0 -1
  174. package/dist/embedding/quantization.js.map +0 -1
  175. package/dist/extraction/dedup-manager.d.ts.map +0 -1
  176. package/dist/extraction/dedup-manager.js.map +0 -1
  177. package/dist/extraction/emotion-filter.d.ts.map +0 -1
  178. package/dist/extraction/emotion-filter.js.map +0 -1
  179. package/dist/extraction/extractor.d.ts.map +0 -1
  180. package/dist/extraction/extractor.js.map +0 -1
  181. package/dist/extraction/file-reference.d.ts.map +0 -1
  182. package/dist/extraction/file-reference.js.map +0 -1
  183. package/dist/extraction/filter.d.ts.map +0 -1
  184. package/dist/extraction/filter.js.map +0 -1
  185. package/dist/extraction/scorer.d.ts.map +0 -1
  186. package/dist/extraction/scorer.js.map +0 -1
  187. package/dist/extraction/similarity.d.ts.map +0 -1
  188. package/dist/extraction/similarity.js.map +0 -1
  189. package/dist/hooks/client-factory.d.ts.map +0 -1
  190. package/dist/hooks/client-factory.js.map +0 -1
  191. package/dist/hooks/post-tool-use.d.ts.map +0 -1
  192. package/dist/hooks/post-tool-use.js.map +0 -1
  193. package/dist/hooks/pre-compact.d.ts.map +0 -1
  194. package/dist/hooks/pre-compact.js.map +0 -1
  195. package/dist/hooks/session-end.d.ts.map +0 -1
  196. package/dist/hooks/session-end.js.map +0 -1
  197. package/dist/hooks/session-start.d.ts.map +0 -1
  198. package/dist/hooks/session-start.js.map +0 -1
  199. package/dist/hooks/shared.d.ts.map +0 -1
  200. package/dist/hooks/shared.js.map +0 -1
  201. package/dist/hooks/user-prompt-submit.d.ts.map +0 -1
  202. package/dist/hooks/user-prompt-submit.js.map +0 -1
  203. package/dist/i18n/index.d.ts.map +0 -1
  204. package/dist/i18n/index.js.map +0 -1
  205. package/dist/i18n/messages.d.ts.map +0 -1
  206. package/dist/i18n/messages.js.map +0 -1
  207. package/dist/index.d.ts.map +0 -1
  208. package/dist/index.js.map +0 -1
  209. package/dist/lifecycle/cleanup-scheduler.d.ts.map +0 -1
  210. package/dist/lifecycle/cleanup-scheduler.js.map +0 -1
  211. package/dist/lifecycle/cleanup.d.ts.map +0 -1
  212. package/dist/lifecycle/cleanup.js.map +0 -1
  213. package/dist/lifecycle/index.d.ts.map +0 -1
  214. package/dist/lifecycle/index.js.map +0 -1
  215. package/dist/lifecycle/quality-scorer.d.ts.map +0 -1
  216. package/dist/lifecycle/quality-scorer.js.map +0 -1
  217. package/dist/lifecycle/tiering.d.ts.map +0 -1
  218. package/dist/lifecycle/tiering.js.map +0 -1
  219. package/dist/llm/client.d.ts.map +0 -1
  220. package/dist/llm/client.js.map +0 -1
  221. package/dist/llm/index.d.ts.map +0 -1
  222. package/dist/llm/index.js.map +0 -1
  223. package/dist/proficiency/actr-engine.d.ts.map +0 -1
  224. package/dist/proficiency/actr-engine.js.map +0 -1
  225. package/dist/proficiency/detection.d.ts.map +0 -1
  226. package/dist/proficiency/detection.js.map +0 -1
  227. package/dist/proficiency/index.d.ts.map +0 -1
  228. package/dist/proficiency/index.js.map +0 -1
  229. package/dist/proficiency/tracker.d.ts.map +0 -1
  230. package/dist/proficiency/tracker.js.map +0 -1
  231. package/dist/proficiency/types.d.ts.map +0 -1
  232. package/dist/proficiency/types.js.map +0 -1
  233. package/dist/providers/adapters.d.ts.map +0 -1
  234. package/dist/providers/adapters.js.map +0 -1
  235. package/dist/providers/detector.d.ts.map +0 -1
  236. package/dist/providers/detector.js.map +0 -1
  237. package/dist/search/adaptive-router.d.ts.map +0 -1
  238. package/dist/search/adaptive-router.js.map +0 -1
  239. package/dist/search/index.d.ts.map +0 -1
  240. package/dist/search/index.js.map +0 -1
  241. package/dist/search/ranker.d.ts.map +0 -1
  242. package/dist/search/ranker.js.map +0 -1
  243. package/dist/search/reranker.d.ts.map +0 -1
  244. package/dist/search/reranker.js.map +0 -1
  245. package/dist/session/parser.d.ts.map +0 -1
  246. package/dist/session/parser.js.map +0 -1
  247. package/dist/skill/evaluator.d.ts.map +0 -1
  248. package/dist/skill/evaluator.js.map +0 -1
  249. package/dist/skill/index.d.ts.map +0 -1
  250. package/dist/skill/index.js.map +0 -1
  251. package/dist/skill/types.d.ts.map +0 -1
  252. package/dist/skill/types.js.map +0 -1
  253. package/dist/sync/client.d.ts.map +0 -1
  254. package/dist/sync/client.js.map +0 -1
  255. package/dist/sync/encryption.d.ts.map +0 -1
  256. package/dist/sync/encryption.js.map +0 -1
  257. package/dist/sync/index.d.ts.map +0 -1
  258. package/dist/sync/index.js.map +0 -1
  259. package/dist/sync/queue.d.ts.map +0 -1
  260. package/dist/sync/queue.js.map +0 -1
  261. package/dist/sync/scheduler.d.ts.map +0 -1
  262. package/dist/sync/scheduler.js.map +0 -1
  263. package/dist/sync/synchronizer.d.ts.map +0 -1
  264. package/dist/sync/synchronizer.js.map +0 -1
  265. package/dist/sync/team-synchronizer.d.ts.map +0 -1
  266. package/dist/sync/team-synchronizer.js.map +0 -1
  267. package/dist/sync/vector-clock.d.ts.map +0 -1
  268. package/dist/sync/vector-clock.js.map +0 -1
  269. package/dist/types/index.d.ts.map +0 -1
  270. package/dist/types/index.js.map +0 -1
  271. package/dist/utils/keychain.d.ts.map +0 -1
  272. package/dist/utils/keychain.js.map +0 -1
  273. package/dist/utils/logger.d.ts.map +0 -1
  274. package/dist/utils/logger.js.map +0 -1
@@ -1,150 +1 @@
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
1
+ function _0xdacc(_0x428e5,_0x2386b8){_0x428e5=_0x428e5-0x76;const _0x5471ba=_0x5471();let _0xdacc10=_0x5471ba[_0x428e5];if(_0xdacc['nfkubK']===undefined){var _0x363e59=function(_0xedcb44){const _0x996977='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x1dfda5='',_0x5ce377='';for(let _0x4d315f=0x0,_0xff3c,_0x47bec9,_0x48b38d=0x0;_0x47bec9=_0xedcb44['charAt'](_0x48b38d++);~_0x47bec9&&(_0xff3c=_0x4d315f%0x4?_0xff3c*0x40+_0x47bec9:_0x47bec9,_0x4d315f++%0x4)?_0x1dfda5+=String['fromCharCode'](0xff&_0xff3c>>(-0x2*_0x4d315f&0x6)):0x0){_0x47bec9=_0x996977['indexOf'](_0x47bec9);}for(let _0x4f40b3=0x0,_0xd7a666=_0x1dfda5['length'];_0x4f40b3<_0xd7a666;_0x4f40b3++){_0x5ce377+='%'+('00'+_0x1dfda5['charCodeAt'](_0x4f40b3)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x5ce377);};_0xdacc['ggaHHX']=_0x363e59,_0xdacc['pTsYAL']={},_0xdacc['nfkubK']=!![];}const _0x497ab9=_0x5471ba[0x0],_0x1b1ae1=_0x428e5+_0x497ab9,_0x57b2af=_0xdacc['pTsYAL'][_0x1b1ae1];return!_0x57b2af?(_0xdacc10=_0xdacc['ggaHHX'](_0xdacc10),_0xdacc['pTsYAL'][_0x1b1ae1]=_0xdacc10):_0xdacc10=_0x57b2af,_0xdacc10;}(function(_0x3b9516,_0x35f35b){const _0x5bc34c=_0x3b9516();function _0x1272e9(_0x4aa76f,_0x17c739){return _0xdacc(_0x17c739-0x221,_0x4aa76f);}function _0x1493ea(_0x337ff4,_0x235a3c){return _0xdacc(_0x337ff4-0x30b,_0x235a3c);}while(!![]){try{const _0x3b0461=parseInt(_0x1493ea(0x3da,0x3f3))/0x1+-parseInt(_0x1272e9(0x2af,0x2c1))/0x2+-parseInt(_0x1493ea(0x3a9,0x393))/0x3+-parseInt(_0x1493ea(0x3c8,0x3c0))/0x4+parseInt(_0x1493ea(0x38b,0x3c2))/0x5*(-parseInt(_0x1272e9(0x2c6,0x2dc))/0x6)+parseInt(_0x1272e9(0x2b7,0x2dd))/0x7+parseInt(_0x1272e9(0x27f,0x29b))/0x8;if(_0x3b0461===_0x35f35b)break;else _0x5bc34c['push'](_0x5bc34c['shift']());}catch(_0x4cb2f5){_0x5bc34c['push'](_0x5bc34c['shift']());}}}(_0x5471,0x1fd51));const en={'error':'Error','success':_0x772804(0x1d4,0x1c5),'warning':'Warning','notFound':_0x772804(0x1c9,0x1c7),'done':_0x772804(0x1fa,0x1f3),'setupTitle':'A2A\x20Memory'+_0x772804(0x21a,0x1e4),'setupComplete':_0x772804(0x190,0x1b3)+_0x772804(0x196,0x1ca),'setupDbCreated':'Database\x20c'+_0x1b841f(0x39c,0x37b),'setupHooksRegistered':_0x1b841f(0x3a4,0x3cf)+'e\x20hooks\x20re'+'gistered','setupAlreadyDone':_0x772804(0x1d4,0x1fd)+_0x772804(0x221,0x20d)+'Use\x20--forc'+'e\x20to\x20re-in'+'itialize.','statusTitle':_0x772804(0x20c,0x1f8)+'\x20Status','statusMemoryCount':_0x1b841f(0x39e,0x3c0),'statusDbSize':_0x772804(0x226,0x204),'statusDbPath':_0x772804(0x249,0x219),'statusCategories':_0x772804(0x1c7,0x1cd),'statusNoMemories':'No\x20memorie'+'s\x20stored\x20y'+'et.','searchTitle':_0x1b841f(0x3bf,0x3ef)+'ults','searchNoResults':_0x772804(0x214,0x218)+'\x20found.','searchResultCount':_0x5e3f9c=>_0x5e3f9c+_0x1b841f(0x3a0,0x3ce)+(_0x5e3f9c===0x1?'':'s')+_0x772804(0x1b9,0x1e8),'listTitle':_0x772804(0x1c5,0x1f2)+'t','listEmpty':_0x772804(0x211,0x20f)+_0x772804(0x1f2,0x1f4)+_0x1b841f(0x3ba,0x3c4)+'.','addTitle':_0x772804(0x1f1,0x206),'addSuccess':'Memory\x20add'+_0x772804(0x19c,0x1cb)+'fully.','editSuccess':_0x1b841f(0x3b1,0x392)+_0x772804(0x1aa,0x1dc)+_0x1b841f(0x3d5,0x3c0),'editNotFound':_0x1b841f(0x389,0x396)+'\x20found.','rmSuccess':_0x772804(0x21d,0x20a)+_0x772804(0x1f2,0x1c0),'rmNotFound':_0x772804(0x19d,0x1bb)+_0x772804(0x1c9,0x1b6),'syncTitle':_0x1b841f(0x3da,0x40e),'syncPushed':_0x43c54c=>'Pushed\x20'+_0x43c54c+'\x20memor'+(_0x43c54c===0x1?'y':_0x1b841f(0x3e0,0x3dd)),'syncPulled':_0x4f510c=>_0x772804(0x1bb,0x1cf)+_0x4f510c+_0x1b841f(0x3e5,0x408)+(_0x4f510c===0x1?'y':'ies'),'syncNoChanges':_0x1b841f(0x3d3,0x3ae)+'\x20to\x20sync.','syncWatchStarted':_0x772804(0x208,0x1d9)+_0x772804(0x1fa,0x214)+_0x772804(0x1a5,0x1d5),'syncWatchStopped':'Sync\x20watch'+_0x1b841f(0x3e8,0x3df),'extractTitle':_0x772804(0x1f8,0x1df)+_0x1b841f(0x385,0x3a3),'extractNoSessions':_0x1b841f(0x3df,0x3c1)+_0x772804(0x187,0x1bc)+'nd.','extractComplete':_0x37f2c3=>_0x772804(0x1ec,0x1d4)+_0x37f2c3+_0x1b841f(0x3e5,0x3bf)+(_0x37f2c3===0x1?'y':_0x1b841f(0x3e0,0x3ea)),'healthTitle':'A2A\x20Memory'+_0x1b841f(0x3b5,0x3a1)+'eck','healthDbOk':'OK','healthDbError':'Error','healthConfigOk':'OK','cleanupTitle':_0x1b841f(0x3b0,0x3b4)+_0x772804(0x207,0x1d3),'cleanupComplete':_0x577e2e=>'Cleaned\x20up'+'\x20'+_0x577e2e+_0x772804(0x23a,0x217)+(_0x577e2e===0x1?'y':'ies'),'cleanupNone':_0x1b841f(0x3dd,0x3be)+_0x1b841f(0x3d6,0x402)+_0x1b841f(0x3ea,0x403),'embedTitle':_0x1b841f(0x387,0x39c)+_0x772804(0x1f6,0x1bf),'embedGenerated':_0xb8eeb3=>_0x772804(0x1e8,0x1d1)+_0xb8eeb3+_0x1b841f(0x3ec,0x3ce)+(_0xb8eeb3===0x1?'':'s'),'claudeSyncTitle':_0x1b841f(0x386,0x382)+_0x772804(0x242,0x20c),'claudeSyncNotFound':'CLAUDE.md\x20'+_0x1b841f(0x383,0x395)+_0x1b841f(0x3d9,0x3f0),'claudeSyncFile':_0x1b841f(0x3bd,0x3b7),'claudeSyncSections':'Sections','claudeSyncCreated':'Created','claudeSyncUpdated':_0x1b841f(0x3ac,0x3ab),'claudeSyncSkipped':_0x1b841f(0x392,0x387)+'nchanged)'};function _0x5471(){const _0x3bb94e=['B3iGy2HHBMDLCW','64Ui64UKlG','zEUHNcdSNQZSTiJQUldTMztTLzJSHlJSMPq','ig1LBw9Y','tM8GCMvZDwX0CW','reiGugf0Aa','ihn0B3bWzwqU','7kgW6Rg07jEqioUNNUUkLcdRQztRQQJRPQW','ihvWlG','6RcaioYxHUYkTEUlIoUlPc4','igvTyMvKzgLUzW','66Mu66QO66ASioYiMa','6RkW6Ro86RcaioYxHUYkTEUlIoUlPc4','67oa6Rk97ikS7zwTioQWKoYlNcdSPjeU','u2v0DxaGy29TCa','mta1mZu5mMLZu2vdDa','zMLSzsbUB3qGzG','igzVDw5KlG','Bw9YAwvZ','q0XbvurflM1Kia','rw1IzwrKAw5Nia','mJuWnJK1q1LVALrz','twvTB3j5ig5VDa','igzPBgvZigzVDq','7jEg7iQ164Ui64UKlG','reiG6Rk966gC','twfUywDLBwvUDa','zxrLzc4','66Mu66QO66AS6RcaioYiMoYGLEUqMoYxIoYkTq','reiG7ygS6RIW','7kca7j6L65cCioUPLoUQQoUMRoQWGcdSL4y','u2TPChbLzcaODq','u3vJy2vZCW','7lc+7j2eioYiMcdSL4BSNyW','tM90igzVDw5K','7ioi66gCioY2LoQWGa','7iIyioYxHUYkTEUlIoUlPc4','Bgv0zse','zwqGC3vJy2vZCW','6RcCioUPLoUQQoUMRcdSTPtSTPZRKkG','q2f0zwDVCMLLCW','CMvHDgvK','uhvSBgvKia','twvTB3jPzxm','r2vUzxjHDgvKia','ihjLC3vSDa','yw51Ca','rxH0CMfJDgvKia','lI4U','q2XHDwrLienVza','66Mu66QO66AS66w8ioYWVUYDHcdSIjGG','mJK1oti5ALbAsxrV','v2f0y2HPBMCGzG','nte3otuYCfr4vevO','64+z6RIW7zMuioQWKoYlNoQWGcdSPjhSP4a','yxrLzcbZDwnJzq','6RcCioYEHoUYOoUuQsdSG53SHlhRKkG','vxbKyxrLza','rxH0CMfJDcbnzq','6RcCioQYSoQZVa','66Mu66QO66AS6RcaioY2LoQWGoUqMoYxIoYkTq','twvTB3j5ienSzq','twvTB3j5ihvWza','ifnLDhvW','ioYePoYGLq','7yYm7j287j2eioYWVUYDHcdSIjGG7jEg','ieHLywX0AcbdAa','igzVDw5K','66Mu66QO66ASioYGLEUMRa','64Ui64UKlIaTlwzVCMm','zsdTM4uG65oX66gD65cO','zsbJCML0zxjPyq','66Mu66QO66ASioY2LoQWGa','66Mu66QO66ASioY2LoY2Na','rMLSzq','7lM07ywm6RoG66AS','u2vHCMnOifjLCW','twvTB3j5ieXPCW','rg9Uzq','CYbTyxrJAcb0Aa','nLjIELretq','mti4nJG3m3f3CwftCG','mti3ntqWu0jbBKr5','qtjbie1LBw9YEq','7jEf642W7j207yQ4','642W7j207ysW67kG7j207iQKioYdNEYeSEUqQa','7iQ164Ui64UKlG','64+z6RIW7zMu','qwXYzwfKEsbJBW','7j6e67kG65sPioQ0GoUMRa','ioYdGE2dNa','ioYdGE2dNcdSOjdQSOa','7j2066+4ioYePoYGLEUqMoYwTcdSNOJSIRu','7kcv66AS7zwGioUPLoUQQoUMRoQWGcdSL4y','64+z6RIW7zMu7zwGioUZGoQYVEYcRo2vREYDTa','reiGu2L6zq','tM8Gy2HHBMDLCW','qwrKie1LBw9YEq','C3nMDwXSEs4','CYb0BYbJBgvHBG','mJu0ndKWwgveDg1i','twvTB3j5igrLBa','B3vUzc4','u3LUyW','BMzPz3vYzwqUia','7iQK7yk1icJRS4dQSR3SL4BSNyWP','tM8GBwvTB3jPzq','6RcCioUPLoUQQoUMRcdTKOdRKkG','tM8GC2vZC2LVBG','AwvZ','7isK7kcv7j20ioYzHoUJJoUqMoYxIoYkTEUlIa'];_0x5471=function(){return _0x3bb94e;};return _0x5471();}function _0x1b841f(_0x35d981,_0x3d1c97){return _0xdacc(_0x35d981-0x308,_0x3d1c97);}function _0x772804(_0x27dc71,_0xee6116){return _0xdacc(_0xee6116-0x13a,_0x27dc71);}const ko={'error':'오류','success':'성공','warning':'경고','notFound':_0x1b841f(0x394,0x3c3),'done':'완료','setupTitle':_0x1b841f(0x3c6,0x3aa)+_0x1b841f(0x3b3,0x3bf),'setupComplete':_0x772804(0x215,0x213)+'다!','setupDbCreated':_0x772804(0x1eb,0x1fa),'setupHooksRegistered':_0x1b841f(0x3a4,0x3c2)+_0x1b841f(0x3b9,0x38c),'setupAlreadyDone':_0x772804(0x1e5,0x201)+_0x772804(0x1db,0x1ea)+_0x1b841f(0x3e4,0x3f6)+'.','statusTitle':_0x1b841f(0x3c6,0x3a5)+_0x1b841f(0x3cd,0x3ae),'statusMemoryCount':_0x772804(0x1dc,0x1b0),'statusDbSize':_0x772804(0x1a5,0x1c2),'statusDbPath':_0x1b841f(0x38c,0x38f),'statusCategories':_0x1b841f(0x3be,0x3b9),'statusNoMemories':_0x772804(0x1bd,0x1c3)+'습니다.','searchTitle':'검색\x20결과','searchNoResults':_0x772804(0x1bd,0x1b1),'searchResultCount':_0x326f09=>_0x326f09+_0x1b841f(0x3ae,0x387),'listTitle':'메모리\x20목록','listEmpty':_0x1b841f(0x3e9,0x413)+_0x772804(0x244,0x21d),'addTitle':_0x772804(0x219,0x1ed),'addSuccess':_0x772804(0x1ea,0x1e1)+_0x1b841f(0x3e3,0x410),'editSuccess':_0x772804(0x1f8,0x1c1)+'니다.','editNotFound':'메모리를\x20찾을\x20수\x20'+'없습니다.','rmSuccess':'메모리가\x20삭제되었습'+_0x1b841f(0x3e3,0x3c1),'rmNotFound':_0x772804(0x1b8,0x1d7)+_0x772804(0x1b7,0x1bd),'syncTitle':_0x1b841f(0x3ca,0x3e4),'syncPushed':_0x310298=>_0x310298+'개\x20메모리\x20푸시됨','syncPulled':_0x50c4b9=>_0x50c4b9+_0x1b841f(0x3de,0x402),'syncNoChanges':_0x1b841f(0x3d1,0x3df)+'\x20없습니다.','syncWatchStarted':_0x1b841f(0x380,0x3a5)+'..','syncWatchStopped':_0x772804(0x20f,0x1db)+'되었습니다.','extractTitle':_0x772804(0x1f9,0x1ee),'extractNoSessions':'세션\x20파일을\x20찾을\x20'+_0x1b841f(0x397,0x3b5),'extractComplete':_0x50ee61=>_0x50ee61+_0x1b841f(0x39a,0x391),'healthTitle':_0x772804(0x225,0x1f8)+_0x1b841f(0x3ce,0x3e4),'healthDbOk':'정상','healthDbError':'오류','healthConfigOk':'정상','cleanupTitle':_0x772804(0x214,0x1e9),'cleanupComplete':_0x1ec5a2=>_0x1ec5a2+'개\x20메모리\x20정리됨','cleanupNone':_0x772804(0x213,0x202)+_0x1b841f(0x3c9,0x397),'embedTitle':_0x1b841f(0x3cc,0x398),'embedGenerated':_0x4bc185=>_0x4bc185+_0x1b841f(0x3ab,0x380),'claudeSyncTitle':'CLAUDE.md\x20'+'동기화','claudeSyncNotFound':'CLAUDE.md\x20'+_0x1b841f(0x3b4,0x38b)+_0x1b841f(0x3c9,0x3bc),'claudeSyncFile':'파일','claudeSyncSections':'섹션\x20수','claudeSyncCreated':_0x772804(0x1e5,0x1c8),'claudeSyncUpdated':_0x1b841f(0x3c7,0x3eb),'claudeSyncSkipped':_0x772804(0x226,0x20e)},bundles={'en':en,'ko':ko};let currentLocale='en';export function setLocale(_0x538991){currentLocale=_0x538991;}export function getLocale(){return currentLocale;}export function t(){return bundles[currentLocale];}export function getMessages(_0x21e9d9){return bundles[_0x21e9d9];}export function detectLocale(){const _0xe95472=process.env.LANG||process.env.LC_ALL||process.env.LANGUAGE||'';if(_0xe95472['startsWith']('ko'))return'ko';return'en';}
package/dist/index.d.ts CHANGED
@@ -36,7 +36,7 @@ export type { HookLogger } from './utils/logger.js';
36
36
  export { createLogger } from './utils/logger.js';
37
37
  export type { KeychainStore } from './utils/keychain.js';
38
38
  export { createKeychainStore, getKeychainStore, resetKeychainStore } from './utils/keychain.js';
39
- export { syncClaudeMd, findClaudeMd, parseClaudeMd } from './claude/sync.js';
39
+ export { syncClaudeMd, findClaudeMd, findMarkdownFile, parseClaudeMd } from './claude/sync.js';
40
40
  export type { ClaudeSyncOptions, ClaudeSyncResult, SectionResult } from './claude/sync.js';
41
41
  export { t, setLocale, getLocale, detectLocale, getMessages } from './i18n/index.js';
42
42
  export type { Locale, Messages } from './i18n/index.js';
package/dist/index.js CHANGED
@@ -1,43 +1 @@
1
- /**
2
- * A2A Memory Plugin - Public API
3
- */
4
- export { DEFAULT_CONFIG, SENSITIVE_PATTERNS } from './types/index.js';
5
- // Core modules
6
- export { MemoryDatabase } from './db/database.js';
7
- export { ConfigManager, generateNodeId, getConfigManager, resetConfigManager } from './config/manager.js';
8
- export { parseSessionFile, findSessionFiles, getSessionMessages } from './session/parser.js';
9
- export { extractMemories, extractMemoriesWithLLM, summarizeSession } from './extraction/extractor.js';
10
- export { scoreSignificance } from './extraction/scorer.js';
11
- export { filterSensitiveInfo, isSensitivePath } from './extraction/filter.js';
12
- // Hooks
13
- export { handleSessionStart } from './hooks/session-start.js';
14
- export { handlePostToolUse } from './hooks/post-tool-use.js';
15
- export { handleSessionEnd } from './hooks/session-end.js';
16
- export { handleUserPromptSubmit, resetQueryCache } from './hooks/user-prompt-submit.js';
17
- export { handlePreCompact } from './hooks/pre-compact.js';
18
- export { getSharedDb, closeSharedDb, resetSharedDb, extractSearchKeywords } from './hooks/shared.js';
19
- // Sync
20
- export { A2AClient, MemorySynchronizer, SyncQueue, LocalVectorClock, TeamSynchronizer, SyncScheduler, mapCategory, mapTier, encryptContent, decryptContent, encryptEmbedding, decryptEmbedding, deriveKey, generateEncryptionKey, wrapEncryptedContent, unwrapEncryptedContent, isValidEncryptedPayload, } from './sync/index.js';
21
- // LLM
22
- export { createLLMClient, OpenAILLMClient, AnthropicLLMClient, NoOpLLMClient } from './llm/index.js';
23
- // Embedding
24
- export { createEmbeddingProvider, LocalEmbeddingProvider, OpenAIEmbeddingProvider, E5EmbeddingProvider, resetE5Pipeline, quantizeToFloat32, dequantizeFromFloat32, quantizeToInt8, dequantizeFromInt8, } from './embedding/index.js';
25
- // Search
26
- export { HybridRanker } from './search/index.js';
27
- export { AdaptiveRouter } from './search/adaptive-router.js';
28
- export { CrossEncoderReranker, resetRerankerPipeline } from './search/reranker.js';
29
- // Extraction - DedupManager
30
- export { DedupManager } from './extraction/dedup-manager.js';
31
- // Lifecycle
32
- export { scoreQuality, cleanupMemories, determineTier, rebalanceTiers, promoteOnAccess } from './lifecycle/index.js';
33
- export { createLogger } from './utils/logger.js';
34
- export { createKeychainStore, getKeychainStore, resetKeychainStore } from './utils/keychain.js';
35
- // Claude.md Sync
36
- export { syncClaudeMd, findClaudeMd, parseClaudeMd } from './claude/sync.js';
37
- // i18n
38
- export { t, setLocale, getLocale, detectLocale, getMessages } from './i18n/index.js';
39
- // Proficiency
40
- export { ACTREngine, ProficiencyTracker } from './proficiency/index.js';
41
- // Anthropic Adapter
42
- export { toAnthropicFormat, fromAnthropicFormat, toAnthropicBatch, fromAnthropicBatch, mapCategoryToAnthropicType, mapAnthropicTypeToCategory, } from './adapters/anthropic.js';
43
- //# sourceMappingURL=index.js.map
1
+ (function(_0x178971,_0x4f7dc2){function _0x4d2e6(_0x4d006a,_0x2edfa3){return _0x3517(_0x2edfa3- -0x14a,_0x4d006a);}var _0x5ae86c=_0x178971();function _0x5a70db(_0x2952c9,_0x4c312a){return _0x3517(_0x4c312a- -0xff,_0x2952c9);}while(!![]){try{var _0x17c225=-parseInt(_0x5a70db(-0x36,-0x34))/0x1*(-parseInt(_0x5a70db(-0x29,-0x2e))/0x2)+parseInt(_0x4d2e6(-0x70,-0x76))/0x3*(parseInt(_0x4d2e6(-0x7d,-0x7d))/0x4)+parseInt(_0x5a70db(-0x26,-0x2a))/0x5*(-parseInt(_0x5a70db(-0x35,-0x35))/0x6)+parseInt(_0x4d2e6(-0x78,-0x7a))/0x7*(-parseInt(_0x4d2e6(-0x77,-0x77))/0x8)+-parseInt(_0x4d2e6(-0x75,-0x78))/0x9+-parseInt(_0x5a70db(-0x39,-0x33))/0xa+-parseInt(_0x5a70db(-0x2b,-0x30))/0xb*(-parseInt(_0x4d2e6(-0x81,-0x7c))/0xc);if(_0x17c225===_0x4f7dc2)break;else _0x5ae86c['push'](_0x5ae86c['shift']());}catch(_0xaa6393){_0x5ae86c['push'](_0x5ae86c['shift']());}}}(_0x7236,0x76a9c));export{DEFAULT_CONFIG,SENSITIVE_PATTERNS}from'./types/index.js';export{MemoryDatabase}from'./db/database.js';export{ConfigManager,generateNodeId,getConfigManager,resetConfigManager}from'./config/manager.js';export{parseSessionFile,findSessionFiles,getSessionMessages}from'./session/parser.js';export{extractMemories,extractMemoriesWithLLM,summarizeSession}from'./extraction/extractor.js';export{scoreSignificance}from'./extraction/scorer.js';export{filterSensitiveInfo,isSensitivePath}from'./extraction/filter.js';export{handleSessionStart}from'./hooks/session-start.js';export{handlePostToolUse}from'./hooks/post-tool-use.js';export{handleSessionEnd}from'./hooks/session-end.js';export{handleUserPromptSubmit,resetQueryCache}from'./hooks/user-prompt-submit.js';export{handlePreCompact}from'./hooks/pre-compact.js';export{getSharedDb,closeSharedDb,resetSharedDb,extractSearchKeywords}from'./hooks/shared.js';export{A2AClient,MemorySynchronizer,SyncQueue,LocalVectorClock,TeamSynchronizer,SyncScheduler,mapCategory,mapTier,encryptContent,decryptContent,encryptEmbedding,decryptEmbedding,deriveKey,generateEncryptionKey,wrapEncryptedContent,unwrapEncryptedContent,isValidEncryptedPayload}from'./sync/index.js';export{createLLMClient,OpenAILLMClient,AnthropicLLMClient,NoOpLLMClient}from'./llm/index.js';function _0x3517(_0x54cc18,_0x4c6717){_0x54cc18=_0x54cc18-0xca;var _0x72360=_0x7236();var _0x3517f3=_0x72360[_0x54cc18];if(_0x3517['NWroKC']===undefined){var _0x444257=function(_0x26901e){var _0x4b08a4='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x28e985='',_0x521e45='';for(var _0x3a44ea=0x0,_0x2b81a8,_0x2264a1,_0x21ebd8=0x0;_0x2264a1=_0x26901e['charAt'](_0x21ebd8++);~_0x2264a1&&(_0x2b81a8=_0x3a44ea%0x4?_0x2b81a8*0x40+_0x2264a1:_0x2264a1,_0x3a44ea++%0x4)?_0x28e985+=String['fromCharCode'](0xff&_0x2b81a8>>(-0x2*_0x3a44ea&0x6)):0x0){_0x2264a1=_0x4b08a4['indexOf'](_0x2264a1);}for(var _0x288487=0x0,_0x431e52=_0x28e985['length'];_0x288487<_0x431e52;_0x288487++){_0x521e45+='%'+('00'+_0x28e985['charCodeAt'](_0x288487)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x521e45);};_0x3517['aZsPKe']=_0x444257,_0x3517['mRfvyP']={},_0x3517['NWroKC']=!![];}var _0x54c7e1=_0x72360[0x0],_0x5d1b2e=_0x54cc18+_0x54c7e1,_0x540e14=_0x3517['mRfvyP'][_0x5d1b2e];return!_0x540e14?(_0x3517f3=_0x3517['aZsPKe'](_0x3517f3),_0x3517['mRfvyP'][_0x5d1b2e]=_0x3517f3):_0x3517f3=_0x540e14,_0x3517f3;}export{createEmbeddingProvider,LocalEmbeddingProvider,OpenAIEmbeddingProvider,E5EmbeddingProvider,resetE5Pipeline,quantizeToFloat32,dequantizeFromFloat32,quantizeToInt8,dequantizeFromInt8}from'./embedding/index.js';export{HybridRanker}from'./search/index.js';export{AdaptiveRouter}from'./search/adaptive-router.js';export{CrossEncoderReranker,resetRerankerPipeline}from'./search/reranker.js';export{DedupManager}from'./extraction/dedup-manager.js';export{scoreQuality,cleanupMemories,determineTier,rebalanceTiers,promoteOnAccess}from'./lifecycle/index.js';function _0x7236(){var _0x5a9a81=['mtfMy0TlAhm','n0XiCwLgBa','mJq2yKn4v0PN','mJuYnJiWmvPjtK9pqG','mJe2odu1mKTOswfdrW','ndK3odjmBgX1rLm','mJbHtKvuuhC','mti3odK2CNPzyKjc','ntCWn1HdD3PNsG','mtq2mJaWmfnpDKjQyW','ntjmCMLks2S','ndiXodK5nNHIsM1Owa'];_0x7236=function(){return _0x5a9a81;};return _0x7236();}export{createLogger}from'./utils/logger.js';export{createKeychainStore,getKeychainStore,resetKeychainStore}from'./utils/keychain.js';export{syncClaudeMd,findClaudeMd,findMarkdownFile,parseClaudeMd}from'./claude/sync.js';export{t,setLocale,getLocale,detectLocale,getMessages}from'./i18n/index.js';export{ACTREngine,ProficiencyTracker}from'./proficiency/index.js';export{toAnthropicFormat,fromAnthropicFormat,toAnthropicBatch,fromAnthropicBatch,mapCategoryToAnthropicType,mapAnthropicTypeToCategory}from'./adapters/anthropic.js';
@@ -1,137 +1 @@
1
- /**
2
- * Cleanup Scheduler
3
- *
4
- * 주기적으로 cleanupMemories()를 실행하는 스케줄러.
5
- * SyncScheduler 패턴 기반.
6
- */
7
- import { cleanupMemories } from './cleanup.js';
8
- export class CleanupScheduler {
9
- db;
10
- config;
11
- options;
12
- logger;
13
- timer = null;
14
- running = false;
15
- cleaning = false;
16
- cleanupCount = 0;
17
- lastCleanupAt = null;
18
- lastResult = null;
19
- startedAt = null;
20
- constructor(db, config, options, logger) {
21
- this.db = db;
22
- this.config = config;
23
- this.options = options;
24
- this.logger = logger;
25
- }
26
- /**
27
- * 스케줄러 시작
28
- */
29
- async start() {
30
- if (this.running) {
31
- this.logger?.warn('CleanupScheduler already running');
32
- return;
33
- }
34
- if (this.options.intervalMs <= 0) {
35
- this.logger?.warn('CleanupScheduler disabled (intervalMs <= 0)');
36
- return;
37
- }
38
- this.running = true;
39
- this.startedAt = new Date();
40
- this.logger?.info('CleanupScheduler started', { intervalMs: this.options.intervalMs });
41
- // 시작 시 즉시 cleanup (옵트인)
42
- if (this.options.cleanupOnStart) {
43
- await this.tick();
44
- }
45
- this.timer = setInterval(() => {
46
- this.tick().catch((err) => {
47
- this.logger?.error('CleanupScheduler tick error', err instanceof Error ? err : new Error(String(err)));
48
- });
49
- }, this.options.intervalMs);
50
- // unref: Node.js 프로세스가 타이머 때문에 종료되지 않는 것을 방지
51
- if (this.timer && typeof this.timer === 'object' && 'unref' in this.timer) {
52
- this.timer.unref();
53
- }
54
- }
55
- /**
56
- * 스케줄러 중지
57
- */
58
- stop() {
59
- if (!this.running)
60
- return;
61
- if (this.timer) {
62
- clearInterval(this.timer);
63
- this.timer = null;
64
- }
65
- this.running = false;
66
- this.logger?.info('CleanupScheduler stopped', { cleanupCount: this.cleanupCount });
67
- }
68
- /**
69
- * 실행 중 여부
70
- */
71
- isRunning() {
72
- return this.running;
73
- }
74
- /**
75
- * 스케줄러 상태
76
- */
77
- getStatus() {
78
- let nextCleanupAt = null;
79
- if (this.running && this.lastCleanupAt) {
80
- const next = new Date(this.lastCleanupAt.getTime() + this.options.intervalMs);
81
- nextCleanupAt = next.toISOString();
82
- }
83
- else if (this.running && this.startedAt) {
84
- const next = new Date(this.startedAt.getTime() + this.options.intervalMs);
85
- nextCleanupAt = next.toISOString();
86
- }
87
- return {
88
- running: this.running,
89
- cleaning: this.cleaning,
90
- cleanupCount: this.cleanupCount,
91
- lastCleanupAt: this.lastCleanupAt?.toISOString() ?? null,
92
- lastResult: this.lastResult,
93
- intervalMs: this.options.intervalMs,
94
- nextCleanupAt,
95
- };
96
- }
97
- /**
98
- * 수동으로 즉시 cleanup 실행 (스케줄러 타이머와 무관)
99
- */
100
- async cleanupNow() {
101
- return this.tick();
102
- }
103
- /**
104
- * 한 번의 cleanup 사이클
105
- */
106
- async tick() {
107
- if (this.cleaning) {
108
- this.logger?.debug('Cleanup already in progress, skipping');
109
- return null;
110
- }
111
- this.cleaning = true;
112
- try {
113
- const result = cleanupMemories(this.db, this.config);
114
- this.cleanupCount++;
115
- this.lastCleanupAt = new Date();
116
- this.lastResult = result;
117
- this.logger?.info('Cleanup completed', {
118
- expired: result.expired,
119
- lowQuality: result.lowQuality,
120
- forced: result.forced,
121
- total: result.total,
122
- });
123
- this.options.onCleanup?.(result);
124
- return result;
125
- }
126
- catch (error) {
127
- const err = error instanceof Error ? error : new Error(String(error));
128
- this.logger?.error('Cleanup failed', err);
129
- this.options.onError?.(err);
130
- return null;
131
- }
132
- finally {
133
- this.cleaning = false;
134
- }
135
- }
136
- }
137
- //# sourceMappingURL=cleanup-scheduler.js.map
1
+ function _0x4868ef(_0x5aad1c,_0x41a783){return _0xe285(_0x5aad1c- -0xdb,_0x41a783);}function _0x2c1db4(_0x86af5,_0x47b270){return _0xe285(_0x47b270- -0x205,_0x86af5);}function _0xe285(_0x10eab2,_0x50a16c){_0x10eab2=_0x10eab2-0xaf;const _0x5a63a5=_0x5a63();let _0xe2852f=_0x5a63a5[_0x10eab2];if(_0xe285['LHKCQk']===undefined){var _0x35c855=function(_0x2e3a3f){const _0x43e67a='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x2dd4b6='',_0x11abe8='';for(let _0x166fbb=0x0,_0x7d80a7,_0x3f05f2,_0x30baef=0x0;_0x3f05f2=_0x2e3a3f['charAt'](_0x30baef++);~_0x3f05f2&&(_0x7d80a7=_0x166fbb%0x4?_0x7d80a7*0x40+_0x3f05f2:_0x3f05f2,_0x166fbb++%0x4)?_0x2dd4b6+=String['fromCharCode'](0xff&_0x7d80a7>>(-0x2*_0x166fbb&0x6)):0x0){_0x3f05f2=_0x43e67a['indexOf'](_0x3f05f2);}for(let _0x27c4fa=0x0,_0x4c116b=_0x2dd4b6['length'];_0x27c4fa<_0x4c116b;_0x27c4fa++){_0x11abe8+='%'+('00'+_0x2dd4b6['charCodeAt'](_0x27c4fa)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x11abe8);};_0xe285['UiHVAv']=_0x35c855,_0xe285['YVeXPz']={},_0xe285['LHKCQk']=!![];}const _0x111858=_0x5a63a5[0x0],_0x247c16=_0x10eab2+_0x111858,_0x2aa375=_0xe285['YVeXPz'][_0x247c16];return!_0x2aa375?(_0xe2852f=_0xe285['UiHVAv'](_0xe2852f),_0xe285['YVeXPz'][_0x247c16]=_0xe2852f):_0xe2852f=_0x2aa375,_0xe2852f;}(function(_0x3db709,_0x4cc07a){function _0x3ebf44(_0xf40232,_0x15ed13){return _0xe285(_0x15ed13- -0x2c4,_0xf40232);}function _0x245341(_0x4ad592,_0x42bce8){return _0xe285(_0x4ad592-0x302,_0x42bce8);}const _0x4fe2e1=_0x3db709();while(!![]){try{const _0x1a0ab2=parseInt(_0x3ebf44(-0x1d2,-0x1d3))/0x1+-parseInt(_0x245341(0x3ee,0x3f4))/0x2*(parseInt(_0x245341(0x3f0,0x3ef))/0x3)+-parseInt(_0x245341(0x3d4,0x3b2))/0x4*(parseInt(_0x3ebf44(-0x1cc,-0x1d4))/0x5)+parseInt(_0x3ebf44(-0x207,-0x1ec))/0x6*(parseInt(_0x3ebf44(-0x208,-0x1ef))/0x7)+parseInt(_0x3ebf44(-0x224,-0x204))/0x8+parseInt(_0x245341(0x3fa,0x409))/0x9+parseInt(_0x245341(0x3c1,0x3c4))/0xa;if(_0x1a0ab2===_0x4cc07a)break;else _0x4fe2e1['push'](_0x4fe2e1['shift']());}catch(_0x39e104){_0x4fe2e1['push'](_0x4fe2e1['shift']());}}}(_0x5a63,0x38cb7));import{cleanupMemories}from'./cleanup.js';function _0x5a63(){const _0x2fddfd=['y2XLyw51CenVDq','CM9NCMvZCYWGCW','q2XLyw51CfnJAa','B3b0Aw9UCW','B1LbEM0','z2v0vgLTzq','zwr1BgvYigfSCG','Cef0','rfPlsNq','C3rHCNrLzef0','B2jQzwn0','qwj5Dgy','C3rHCNq','z0zlyxa','AYbLCNjVCG','A2LWCgLUzW','zwr1BgvYihrPyW','odK3nJHtwK1erhO','y29UzMLN','ovjWAfzzCW','AwXLza','mtG0mgjWEMfYsa','mtyZmZvXDfrAA1O','y2f0y2G','AxnsDw5UAw5N','BwPfCfy','A3Lmree','CNvUBMLUzW','q2XLyw51CcbHBa','mtKZmtC4n1zjBNLmBq','ze1czxa','Dw5Yzwy','D2fYBG','q2XLyw51CcbMyq','DgLJAW','y2XLyw51Ce5VDW','zxj2ywXnCYa8pq','q2XLyw51CcbJBW','Aernu2C','zxHWAxjLza','Dg90ywW','AhrLuxi','BMjlsM4','C3rVCa','Bg9Nz2vY','Dg9ju09tDhjPBG','ywjSzwqGkgLUDa','BLHpsvu','Ag5xy1m','y2XLyw5PBMC','DgLTzxi','BgfZDfjLC3vSDa','zwr1BgvYigrPCW','mZaZote0mgPkCxb2zW','mtiWotG3mMrUruDNwG','DffWD0i','v2rhD3q','zwr1BgvYihn0BW','BxbSzxrLza','y2XLyw51Ce9UuW','ENfjwfy','ENznvKO','zM9Yy2vK','yMvwEwC','Aw50zxj2ywXnCW','Aw5MBW','DgfYDa','su5yteW','CMvHzhKGAw4GCa','zgvIDwC','zxjYB3i','zwr1BgvYihn0yq','ndq1mM15CxrlsG','uvzWy0O','z2v0u3rHDhvZ','mtq3sxfcCwjt','CNrLza','D1rTqMG','mJu5mJzQCgzSA0G','idaP','BgfZDenSzwfUDq'];_0x5a63=function(){return _0x2fddfd;};return _0x5a63();}export class CleanupScheduler{['db'];[_0x4868ef(0x12,0x1f)];[_0x4868ef(0x3,0x1c)];['logger'];[_0x2c1db4(-0x13c,-0x149)]=null;['running']=![];[_0x4868ef(-0x20,-0xe)]=![];[_0x4868ef(0x0,-0x10)+'nt']=0x0;[_0x2c1db4(-0x13b,-0x12b)+'pAt']=null;[_0x2c1db4(-0x167,-0x148)]=null;[_0x2c1db4(-0x141,-0x121)]=null;constructor(_0x50ccd3,_0x52056b,_0xee5b5,_0x4a070b){this['db']=_0x50ccd3,this[_0x461233(0xd3,0xce)]=_0x52056b;function _0x461233(_0x5d0a82,_0x11d402){return _0x4868ef(_0x5d0a82-0xc1,_0x11d402);}this['options']=_0xee5b5;function _0x2dd3e3(_0x194a97,_0x226710){return _0x4868ef(_0x226710- -0x19,_0x194a97);}this[_0x2dd3e3(-0x27,-0x3e)]=_0x4a070b;}async[_0x4868ef(0xc,0x10)](){const _0x3658d9={'wTmBh':function(_0x204d26,_0x11cfc2){return _0x204d26===_0x11cfc2;},'INXLL':_0x367ee2(0x136,0x12e),'Abytf':function(_0x5d5df3,_0x300840){return _0x5d5df3(_0x300840);},'nbKJn':_0x1c734f(-0x1b4,-0x1c3)+_0x1c734f(-0x1c8,-0x1e2)+_0x1c734f(-0x1e8,-0x1e8)+_0x1c734f(-0x19d,-0x1a1)+_0x367ee2(0x134,0x157),'ERXjf':function(_0x130022,_0x2f6d4d){return _0x130022!==_0x2f6d4d;},'zvMVJ':_0x367ee2(0x192,0x173),'DZKJt':function(_0x410401,_0x217846,_0x179dba){return _0x410401(_0x217846,_0x179dba);},'mjEpV':function(_0x3e4292,_0x2f82bb){return _0x3e4292===_0x2f82bb;},'YlCdH':_0x1c734f(-0x1d2,-0x1bb),'QVpcJ':function(_0x2c4292,_0x10d1b7){return _0x2c4292 in _0x10d1b7;},'PynUW':_0x367ee2(0x187,0x178)};function _0x1c734f(_0x317245,_0x1eb5e7){return _0x4868ef(_0x1eb5e7- -0x1c5,_0x317245);}if(this[_0x1c734f(-0x19d,-0x1aa)]){this[_0x367ee2(0x11e,0x134)]?.[_0x367ee2(0x175,0x179)](_0x367ee2(0x133,0x15b)+_0x367ee2(0x16d,0x15f)+'eady\x20runni'+'ng');return;}if(this[_0x1c734f(-0x1d5,-0x1c2)][_0x367ee2(0x16c,0x148)]<=0x0){this[_0x367ee2(0x11f,0x134)]?.['warn'](_0x3658d9[_0x1c734f(-0x1e3,-0x1ec)]);return;}this[_0x367ee2(0x174,0x174)]=!![],this[_0x1c734f(-0x1a9,-0x1bc)]=new Date();function _0x367ee2(_0x68c93c,_0x3731ae){return _0x4868ef(_0x3731ae-0x159,_0x68c93c);}this[_0x1c734f(-0x20f,-0x1ea)]?.[_0x1c734f(-0x1d6,-0x1d5)](_0x367ee2(0x17f,0x15b)+_0x1c734f(-0x1af,-0x1cf)+_0x367ee2(0x136,0x154),{'intervalMs':this[_0x1c734f(-0x1c4,-0x1c2)]['intervalMs']});if(this[_0x1c734f(-0x1b7,-0x1c2)][_0x367ee2(0x139,0x143)+_0x1c734f(-0x1ae,-0x1d4)]){if(_0x3658d9['ERXjf'](_0x3658d9[_0x367ee2(0x158,0x145)],_0x3658d9[_0x367ee2(0x169,0x145)]))return this['running'];else await this[_0x367ee2(0x164,0x17b)]();}this[_0x367ee2(0x140,0x13a)]=_0x3658d9[_0x367ee2(0x16a,0x161)](setInterval,()=>{function _0x3b6ca6(_0x5da7b5,_0x50e1c7){return _0x1c734f(_0x5da7b5,_0x50e1c7-0x2ce);}function _0x256ae6(_0x2497ce,_0x1fd1ac){return _0x1c734f(_0x1fd1ac,_0x2497ce-0x47c);}const _0x56284e={'zqIXV':function(_0x3e6406,_0x5c4b04){return _0x3e6406 instanceof _0x5c4b04;},'hteQr':function(_0x2e1fa9,_0x32d827){function _0x4cd216(_0x443a6f,_0x27f116){return _0xe285(_0x27f116- -0x171,_0x443a6f);}return _0x3658d9[_0x4cd216(-0xa7,-0x8b)](_0x2e1fa9,_0x32d827);}};this[_0x256ae6(0x2d9,0x2b9)]()[_0x256ae6(0x2ce,0x2c8)](_0xc852a3=>{function _0x3769db(_0x5c0475,_0x38b0a2){return _0x256ae6(_0x38b0a2-0x151,_0x5c0475);}function _0x189bac(_0x1ec1d3,_0x168306){return _0x256ae6(_0x168306-0x32,_0x1ec1d3);}_0x3658d9[_0x3769db(0x404,0x404)](_0x189bac(0x2fc,0x307),_0x3658d9[_0x189bac(0x2f0,0x2db)])?this[_0x3769db(0x3f5,0x3e3)]?.[_0x189bac(0x2df,0x2de)](_0x3769db(0x42a,0x40a)+'eduler\x20tic'+_0x3769db(0x438,0x416),_0x56284e[_0x189bac(0x2bc,0x2d4)](_0x135dc9,_0x161e9e)?_0x2fa244:new _0x393419(_0x56284e[_0x3769db(0x3ff,0x3e0)](_0x244da1,_0x299ad9))):this[_0x3769db(0x3ba,0x3e3)]?.[_0x3769db(0x3eb,0x3fd)](_0x3769db(0x40c,0x40a)+_0x3769db(0x427,0x418)+_0x3769db(0x409,0x416),_0xc852a3 instanceof Error?_0xc852a3:new Error(String(_0xc852a3)));});},this[_0x1c734f(-0x1ab,-0x1c2)][_0x367ee2(0x151,0x148)]),this[_0x367ee2(0x143,0x13a)]&&_0x3658d9[_0x1c734f(-0x197,-0x1ac)](typeof this[_0x1c734f(-0x1fa,-0x1e4)],_0x3658d9['YlCdH'])&&_0x3658d9[_0x1c734f(-0x1c0,-0x1cd)](_0x3658d9['PynUW'],this[_0x1c734f(-0x1df,-0x1e4)])&&this[_0x1c734f(-0x1cb,-0x1e4)][_0x1c734f(-0x184,-0x1a6)]();}[_0x2c1db4(-0x16d,-0x150)](){const _0xfb33d0={'gFKap':function(_0x227bdd,_0x136175){return _0x227bdd(_0x136175);},'hnWcS':_0x1e230f(0x34c,0x352)+_0x1418a6(-0x296,-0x279)+'pped'};if(!this[_0x1418a6(-0x243,-0x246)])return;function _0x1418a6(_0x469340,_0x1ce988){return _0x2c1db4(_0x469340,_0x1ce988- -0x137);}this[_0x1e230f(0x31b,0x331)]&&(_0xfb33d0[_0x1e230f(0x338,0x35d)](clearInterval,this['timer']),this[_0x1e230f(0x34b,0x331)]=null);this['running']=![];function _0x1e230f(_0x4b98ce,_0x32784f){return _0x2c1db4(_0x4b98ce,_0x32784f-0x47a);}this['logger']?.[_0x1e230f(0x341,0x340)](_0xfb33d0[_0x1418a6(-0x262,-0x282)],{'cleanupCount':this[_0x1e230f(0x371,0x350)+'nt']});}[_0x4868ef(0x18,0x26)](){return this['running'];}[_0x2c1db4(-0x11e,-0x131)](){function _0x4c48e5(_0x4b78c9,_0x2cacf8){return _0x4868ef(_0x4b78c9-0x316,_0x2cacf8);}const _0xce4bea={'nXOIU':function(_0x1f21b8,_0x4222c8){return _0x1f21b8+_0x4222c8;},'tQpwB':function(_0x20ac84,_0x367937){return _0x20ac84+_0x367937;},'WdGwt':function(_0x24593f,_0x59b4a9){return _0x24593f+_0x59b4a9;}};let _0x12094f=null;function _0xac7e98(_0x411906,_0x53cd49){return _0x4868ef(_0x53cd49- -0x2dd,_0x411906);}if(this['running']&&this[_0x4c48e5(0x315,0x310)+_0x4c48e5(0x31d,0x328)]){if(_0x4c48e5(0x31a,0x322)===_0x4c48e5(0x31a,0x326)){const _0x3b4cc2=new Date(_0xce4bea[_0x4c48e5(0x2fc,0x30c)](this['lastCleanu'+'pAt'][_0x4c48e5(0x31b,0x2fe)](),this[_0x4c48e5(0x319,0x32c)][_0xac7e98(-0x2cf,-0x2ee)]));_0x12094f=_0x3b4cc2[_0x4c48e5(0x2f2,0x315)+'g']();}else{let _0x34cc1f=null;if(this[_0x4c48e5(0x331,0x312)]&&this['lastCleanu'+_0xac7e98(-0x2bf,-0x2d6)]){const _0x3e5040=new _0x38d593(_0xce4bea[_0x4c48e5(0x2f4,0x309)](this[_0x4c48e5(0x315,0x2ee)+_0xac7e98(-0x2d6,-0x2d6)][_0xac7e98(-0x2b3,-0x2d8)](),this[_0x4c48e5(0x319,0x2f4)][_0x4c48e5(0x305,0x313)]));_0x34cc1f=_0x3e5040['toISOStrin'+'g']();}else{if(this[_0x4c48e5(0x331,0x31f)]&&this[_0x4c48e5(0x31f,0x31a)]){const _0x5c4256=new _0x54c0ab(_0xce4bea['nXOIU'](this['startedAt'][_0x4c48e5(0x31b,0x335)](),this[_0xac7e98(-0x301,-0x2da)][_0x4c48e5(0x305,0x31e)]));_0x34cc1f=_0x5c4256[_0x4c48e5(0x2f2,0x2fe)+'g']();}}return{'running':this[_0x4c48e5(0x331,0x321)],'cleaning':this[_0xac7e98(-0x317,-0x2fd)],'cleanupCount':this['cleanupCou'+'nt'],'lastCleanupAt':this[_0x4c48e5(0x315,0x337)+_0x4c48e5(0x31d,0x313)]?.[_0xac7e98(-0x301,-0x301)+'g']()??null,'lastResult':this[_0x4c48e5(0x2f8,0x2ef)],'intervalMs':this[_0x4c48e5(0x319,0x327)][_0x4c48e5(0x305,0x325)],'nextCleanupAt':_0x34cc1f};}}else{if(this[_0x4c48e5(0x331,0x31d)]&&this['startedAt']){const _0x3c7f11=new Date(_0xce4bea[_0xac7e98(-0x2ee,-0x2f6)](this[_0xac7e98(-0x2bf,-0x2d4)]['getTime'](),this[_0x4c48e5(0x319,0x335)][_0x4c48e5(0x305,0x311)]));_0x12094f=_0x3c7f11['toISOStrin'+'g']();}}return{'running':this[_0x4c48e5(0x331,0x328)],'cleaning':this[_0xac7e98(-0x2db,-0x2fd)],'cleanupCount':this[_0xac7e98(-0x2eb,-0x2dd)+'nt'],'lastCleanupAt':this[_0x4c48e5(0x315,0x2ed)+_0x4c48e5(0x31d,0x33c)]?.[_0x4c48e5(0x2f2,0x307)+'g']()??null,'lastResult':this['lastResult'],'intervalMs':this[_0x4c48e5(0x319,0x317)]['intervalMs'],'nextCleanupAt':_0x12094f};}async[_0x2c1db4(-0xf4,-0x107)](){function _0x4bda80(_0x4965d0,_0x2dc5ab){return _0x4868ef(_0x4965d0- -0x1ba,_0x2dc5ab);}return this[_0x4bda80(-0x198,-0x19e)]();}async['tick'](){function _0x14eb39(_0x2cf518,_0x2370a4){return _0x2c1db4(_0x2cf518,_0x2370a4-0x1b);}function _0xddadc6(_0x1f6edb,_0x11ba9b){return _0x2c1db4(_0x11ba9b,_0x1f6edb-0xd2);}const _0x3083e2={'beVyg':function(_0x113adc,_0x45d007,_0x1f21c4){return _0x113adc(_0x45d007,_0x1f21c4);}};if(this[_0xddadc6(-0x78,-0x55)])return this[_0xddadc6(-0x7d,-0xa5)]?.[_0x14eb39(-0xf3,-0x11b)](_0x14eb39(-0xd0,-0xf3)+_0xddadc6(-0x65,-0x6e)+_0x14eb39(-0x11a,-0x10e)+_0xddadc6(-0x49,-0x6b)),null;this[_0xddadc6(-0x78,-0x6d)]=!![];try{const _0x3e3acf=_0x3083e2[_0xddadc6(-0x6a,-0x8c)](cleanupMemories,this['db'],this['config']);return this[_0xddadc6(-0x58,-0x34)+'nt']++,this[_0x14eb39(-0xf0,-0x110)+_0xddadc6(-0x51,-0x79)]=new Date(),this[_0xddadc6(-0x76,-0x82)]=_0x3e3acf,this[_0xddadc6(-0x7d,-0x85)]?.['info'](_0x14eb39(-0x11a,-0x13b)+_0xddadc6(-0x6f,-0x86),{'expired':_0x3e3acf[_0xddadc6(-0x82,-0x64)],'lowQuality':_0x3e3acf['lowQuality'],'forced':_0x3e3acf[_0xddadc6(-0x6b,-0x59)],'total':_0x3e3acf[_0xddadc6(-0x81,-0x67)]}),this[_0x14eb39(-0xfd,-0x10c)]['onCleanup']?.(_0x3e3acf),_0x3e3acf;}catch(_0x36581d){const _0x2c7c92=_0x36581d instanceof Error?_0x36581d:new Error(String(_0x36581d));return this[_0xddadc6(-0x7d,-0x9f)]?.[_0xddadc6(-0x63,-0x87)](_0xddadc6(-0x37,-0x28)+_0x14eb39(-0x11c,-0xfb),_0x2c7c92),this[_0x14eb39(-0x10b,-0x10c)]['onError']?.(_0x2c7c92),null;}finally{this[_0xddadc6(-0x78,-0x96)]=![];}}}
@@ -9,6 +9,7 @@ export interface CleanupResult {
9
9
  expired: number;
10
10
  lowQuality: number;
11
11
  forced: number;
12
+ invalidated: number;
12
13
  total: number;
13
14
  }
14
15
  /**
@@ -1,116 +1 @@
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
- * 3. 여전히 초과 시 품질 최하위부터 강제 삭제 (skill 제외)
14
- *
15
- * @param db - 메모리 데이터베이스
16
- * @param config - 라이프사이클 설정
17
- * @param projectPath - 프로젝트 경로 (지정 시 해당 프로젝트만 정리)
18
- * @returns 정리 결과
19
- */
20
- export function cleanupMemories(db, config, projectPath) {
21
- let expired = 0;
22
- let lowQuality = 0;
23
- let forced = 0;
24
- // maxMemories 기준 결정
25
- const maxMemories = projectPath && config.maxMemoriesPerProject
26
- ? config.maxMemoriesPerProject
27
- : config.maxMemories;
28
- // 1. TTL 초과 메모리 삭제
29
- // 기준: last_accessed_at (없으면 updated_at) + tier별 차등
30
- // 면제: access_count >= 5, skill 카테고리 (DB 쿼리에서 제외됨)
31
- // Child(parentId 있는) 메모리는 개별 삭제 불가 — Parent 삭제 시 CASCADE로 처리
32
- if (config.ttlDays > 0) {
33
- // working/episodic: 기본 TTL (90일)
34
- const standardOld = db.getMemoriesOlderThan(config.ttlDays);
35
- // semantic: 2배 TTL (180일) — 승격된 지식은 더 오래 보존
36
- const semanticTtl = config.ttlDays * 2;
37
- const semanticOld = db.getMemoriesOlderThan(semanticTtl);
38
- // working/episodic만 기본 TTL 적용
39
- const standardFiltered = standardOld.filter((m) => m.tier !== 'semantic');
40
- // semantic은 2배 TTL 적용
41
- const semanticFiltered = semanticOld.filter((m) => m.tier === 'semantic');
42
- const allExpired = [...standardFiltered, ...semanticFiltered];
43
- const filtered = (projectPath
44
- ? allExpired.filter((m) => m.projectPath === projectPath)
45
- : allExpired).filter((m) => !m.parentId); // Child 제외: Parent 삭제 시 CASCADE
46
- for (const m of filtered) {
47
- if (m.chunkTotal != null) {
48
- // Parent (chunk 문서) → Children까지 일괄 삭제
49
- expired += db.deleteWithChildren(m.id);
50
- }
51
- else {
52
- // 독립 메모리 → 단건 삭제
53
- if (db.deleteMemory(m.id))
54
- expired++;
55
- }
56
- }
57
- }
58
- // 2. 메모리 개수 초과 시 품질 미달 메모리 삭제
59
- const currentCount = db.getMemoryCount(projectPath, true);
60
- if (currentCount > maxMemories) {
61
- const listOptions = projectPath
62
- ? { limit: currentCount, projectPath }
63
- : { limit: currentCount };
64
- const allMemories = db.listMemories(listOptions);
65
- const scoredMemories = allMemories.map((memory) => ({
66
- memory,
67
- quality: scoreQuality(memory, config),
68
- }));
69
- // 품질 미달 메모리 필터링 (skill 카테고리 및 Child 제외)
70
- const toDelete = scoredMemories
71
- .filter((item) => item.quality.overall < config.qualityThreshold)
72
- .filter((item) => item.memory.category !== 'skill')
73
- .filter((item) => !item.memory.parentId) // Child 제외: Parent 삭제 시 CASCADE
74
- .map((item) => item.memory);
75
- for (const m of toDelete) {
76
- if (m.chunkTotal != null) {
77
- lowQuality += db.deleteWithChildren(m.id);
78
- }
79
- else {
80
- if (db.deleteMemory(m.id))
81
- lowQuality++;
82
- }
83
- }
84
- }
85
- // 3. 여전히 초과 시 품질 최하위부터 강제 삭제 (skill 및 Child 제외)
86
- const remainingCount = db.getMemoryCount(projectPath, true);
87
- if (remainingCount > maxMemories) {
88
- const listOptions = projectPath
89
- ? { limit: remainingCount, projectPath }
90
- : { limit: remainingCount };
91
- const allMemories = db.listMemories(listOptions);
92
- const scored = allMemories
93
- .filter((m) => m.category !== 'skill')
94
- .filter((m) => !m.parentId) // Child 제외: Parent 삭제 시 CASCADE
95
- .map((m) => ({ memory: m, quality: scoreQuality(m, config).overall }))
96
- .sort((a, b) => a.quality - b.quality); // 낮은 품질 먼저
97
- const deleteCount = remainingCount - maxMemories;
98
- const toForceDelete = scored.slice(0, deleteCount);
99
- for (const s of toForceDelete) {
100
- if (s.memory.chunkTotal != null) {
101
- forced += db.deleteWithChildren(s.memory.id);
102
- }
103
- else {
104
- if (db.deleteMemory(s.memory.id))
105
- forced++;
106
- }
107
- }
108
- }
109
- return {
110
- expired,
111
- lowQuality,
112
- forced,
113
- total: expired + lowQuality + forced,
114
- };
115
- }
116
- //# sourceMappingURL=cleanup.js.map
1
+ function _0x445d(){const _0x1a02df=['nda0mdG0Bfrer0P4','mtqYnde3Cw5qq3DQ','ruTrtKy','C2TPBgW','CxvHBgL0Eq','zgvSzxrLv2L0Aa','Bwf4twvTB3jPzq','uvDbsgG','zMrlt1m','CxvHBgL0EvrOCG','BgLZDe1LBw9YAq','C29YDa','suHKwKK','y2fRwLy','q2HPBgrYzw4','mJbjyK1LBLy','sg9XCe0','DhrSrgf5CW','z2v0vgLTzq','y0jPsK8','DgLLCG','ChjVAMvJDfbHDa','BwfW','mZe0mZKWtKHAEff0','nZKZmdnrCgnLrMG','zgvSzxrLtwvTBW','z2v0twvTB3jPzq','ndGZndryA1H6rfK','zev6sLO','nZqZmtCZmKHZDwfdsW','ntG0seDVqMX3','nJLNrfrPzMm','mJDgs0zTC1G','B3vUDa','Aw52ywXPzef0','zMLSDgvY','C2vTyw50Awm','vMHgqvy','y2H1BMTuB3rHBa','y2f0zwDVCNK','ndm3ntKZmNf1rLbzqq','BwvTB3j5','C09SzgvYvgHHBG','Bgr5zgy','rxrszg0','CgfYzw50swq','uLrHy1i','t0DitNa','B3zLCMfSBa','C2XPy2u','zxnOB2XK'];_0x445d=function(){return _0x1a02df;};return _0x445d();}(function(_0x2c500e,_0x456d6e){const _0xfd9a99=_0x2c500e();function _0x273492(_0x3919e5,_0x5cd0b0){return _0x146d(_0x5cd0b0- -0x270,_0x3919e5);}function _0xab4a2a(_0x116ac4,_0x1d9a48){return _0x146d(_0x116ac4- -0x2a0,_0x1d9a48);}while(!![]){try{const _0x55dbd2=-parseInt(_0x273492(-0x150,-0x14d))/0x1+parseInt(_0x273492(-0x138,-0x133))/0x2*(-parseInt(_0xab4a2a(-0x15f,-0x14f))/0x3)+parseInt(_0x273492(-0x13e,-0x14e))/0x4*(-parseInt(_0xab4a2a(-0x16f,-0x16d))/0x5)+parseInt(_0x273492(-0x13e,-0x131))/0x6+parseInt(_0xab4a2a(-0x166,-0x15c))/0x7*(parseInt(_0x273492(-0x121,-0x130))/0x8)+parseInt(_0x273492(-0x138,-0x12e))/0x9*(parseInt(_0x273492(-0x149,-0x137))/0xa)+-parseInt(_0x273492(-0x114,-0x126))/0xb;if(_0x55dbd2===_0x456d6e)break;else _0xfd9a99['push'](_0xfd9a99['shift']());}catch(_0x4a2de3){_0xfd9a99['push'](_0xfd9a99['shift']());}}}(_0x445d,0xa10e7));import{scoreQuality}from'./quality-scorer.js';function _0x146d(_0x10dba2,_0x2f544f){_0x10dba2=_0x10dba2-0x11d;const _0x445dd9=_0x445d();let _0x146d02=_0x445dd9[_0x10dba2];if(_0x146d['MtsJaN']===undefined){var _0x42688d=function(_0x14f6a4){const _0x251230='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x16b5e8='',_0x328170='';for(let _0x2e8ad9=0x0,_0xe57496,_0x59aa3d,_0x1fa464=0x0;_0x59aa3d=_0x14f6a4['charAt'](_0x1fa464++);~_0x59aa3d&&(_0xe57496=_0x2e8ad9%0x4?_0xe57496*0x40+_0x59aa3d:_0x59aa3d,_0x2e8ad9++%0x4)?_0x16b5e8+=String['fromCharCode'](0xff&_0xe57496>>(-0x2*_0x2e8ad9&0x6)):0x0){_0x59aa3d=_0x251230['indexOf'](_0x59aa3d);}for(let _0x4b588d=0x0,_0x22faac=_0x16b5e8['length'];_0x4b588d<_0x22faac;_0x4b588d++){_0x328170+='%'+('00'+_0x16b5e8['charCodeAt'](_0x4b588d)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x328170);};_0x146d['wOmAHA']=_0x42688d,_0x146d['cPWUQx']={},_0x146d['MtsJaN']=!![];}const _0x4f43fe=_0x445dd9[0x0],_0x598bfd=_0x10dba2+_0x4f43fe,_0x368277=_0x146d['cPWUQx'][_0x598bfd];return!_0x368277?(_0x146d02=_0x146d['wOmAHA'](_0x146d02),_0x146d['cPWUQx'][_0x598bfd]=_0x146d02):_0x146d02=_0x368277,_0x146d02;}export function cleanupMemories(_0x226a12,_0x140608,_0x55ec46){const _0x3c5957={'fdKOS':function(_0x2e6478,_0x3062be){return _0x2e6478!=_0x3062be;},'cakZV':function(_0x5e38f7,_0x12e18b){return _0x5e38f7>=_0x12e18b;},'zVXCi':function(_0x15cc5f,_0x13cf3d){return _0x15cc5f/_0x13cf3d;},'ldydf':function(_0x4b1b94,_0x1c2822){return _0x4b1b94*_0x1c2822;},'EKQNF':function(_0x371d8d,_0x328138){return _0x371d8d>_0x328138;},'VhFAV':function(_0x51ab3f,_0x413011){return _0x51ab3f!==_0x413011;},'cBiJO':_0x5f39a3(0x2c1,0x2c9),'RTacR':function(_0x5ea423,_0x19ca50){return _0x5ea423>_0x19ca50;},'QWAHh':function(_0x222708,_0x28b252){return _0x222708-_0x28b252;},'dEzJZ':function(_0x82970d,_0x3c9951){return _0x82970d+_0x3c9951;}};let _0x22ee5b=0x0,_0x376789=0x0;function _0x4d1586(_0x5d020e,_0x555e1d){return _0x146d(_0x555e1d-0x2f9,_0x5d020e);}let _0xd5b328=0x0,_0x5c716c=0x0;function _0x5f39a3(_0x38f37c,_0xef83c){return _0x146d(_0x38f37c-0x173,_0xef83c);}try{const _0x40febf=_0x226a12['listMemori'+'es']({'limit':0x2710,'includeInvalid':!![]}),_0x49ab43=new Date();for(const _0x13aabf of _0x40febf){if(_0x13aabf['invalidAt']){const _0x465344=new Date(_0x13aabf[_0x4d1586(0x446,0x43d)]),_0x3ac927=_0x3c5957['zVXCi'](_0x49ab43[_0x5f39a3(0x2a7,0x295)]()-_0x465344[_0x4d1586(0x438,0x42d)](),_0x3c5957[_0x5f39a3(0x2c0,0x2d8)](0x3e8,0x3c)*0x3c*0x18);if(_0x3ac927>=0x1e){if(_0x226a12['deleteMemo'+'ry'](_0x13aabf['id']))_0x5c716c++;}}}}catch{}const _0x5103f5=_0x55ec46&&_0x140608[_0x5f39a3(0x29b,0x2b1)+'sPerProjec'+'t']?_0x140608[_0x5f39a3(0x29b,0x292)+'sPerProjec'+'t']:_0x140608[_0x4d1586(0x408,0x421)+'s'];if(_0x3c5957[_0x4d1586(0x431,0x41d)](_0x140608[_0x4d1586(0x418,0x42c)],0x0)){if(_0x3c5957[_0x5f39a3(0x2ba,0x2cb)](_0x4d1586(0x41d,0x427),_0x4d1586(0x41c,0x417))){const _0x32fedf=_0x226a12[_0x5f39a3(0x2af,0x2ad)+_0x5f39a3(0x2bf,0x2d7)](_0x140608['ttlDays']),_0x26a87b=_0x3c5957[_0x5f39a3(0x2c0,0x2bc)](_0x140608[_0x5f39a3(0x2a6,0x29f)],0x2),_0x17ee5e=_0x226a12[_0x4d1586(0x441,0x435)+_0x5f39a3(0x2bf,0x2d0)](_0x26a87b),_0x1bdc77=_0x32fedf[_0x4d1586(0x448,0x43e)](_0x4d6e5e=>_0x4d6e5e['tier']!==_0x5f39a3(0x2b9,0x2aa)),_0x4476ed=_0x17ee5e[_0x4d1586(0x424,0x43e)](_0x1dd826=>_0x1dd826[_0x5f39a3(0x2a9,0x2be)]===_0x5f39a3(0x2b9,0x2bc)),_0x3b79f8=[..._0x1bdc77,..._0x4476ed],_0x9d11e0=(_0x55ec46?_0x3b79f8[_0x5f39a3(0x2b8,0x2b2)](_0x25e166=>_0x25e166[_0x4d1586(0x445,0x430)+'h']===_0x55ec46):_0x3b79f8)[_0x5f39a3(0x2b8,0x2c6)](_0x419f74=>!_0x419f74['parentId']);for(const _0x1633c2 of _0x9d11e0){if(_0x3c5957[_0x5f39a3(0x2a8,0x299)]===_0x3c5957[_0x5f39a3(0x2a8,0x2c0)]){if(_0x1633c2['chunkTotal']!=null)_0x22ee5b+=_0x226a12[_0x4d1586(0x40e,0x420)+'Children'](_0x1633c2['id']);else{if(_0x226a12[_0x4d1586(0x438,0x434)+'ry'](_0x1633c2['id']))_0x22ee5b++;}}else{if(_0x3c5957[_0x4d1586(0x432,0x423)](_0xdc91a1[_0x5f39a3(0x2bb,0x2cf)],null))_0x24ed8d+=_0x37c31e[_0x4d1586(0x418,0x420)+'Children'](_0x326355['id']);else{if(_0x1fc73b[_0x5f39a3(0x2ae,0x299)+'ry'](_0x195247['id']))_0x63f67e++;}}}}else{const _0x3cbf42=_0x42cd2b?{'limit':_0x294135,'projectPath':_0x1d6878}:{'limit':_0x450603},_0x563922=_0x5e2d36[_0x5f39a3(0x29f,0x293)+'es'](_0x3cbf42),_0x9a950e=_0x563922[_0x4d1586(0x428,0x431)](_0x290d22=>({'memory':_0x290d22,'quality':_0x16e6b3(_0x290d22,_0x23b90b)})),_0x20e8b7=_0x9a950e['filter'](_0x1f228a=>_0x1f228a[_0x5f39a3(0x299,0x2a9)]['overall']<_0x537ced[_0x5f39a3(0x29e,0x2a7)+_0x4d1586(0x41e,0x41a)])[_0x4d1586(0x449,0x43e)](_0x870f6=>_0x870f6[_0x5f39a3(0x2be,0x2d4)][_0x4d1586(0x44b,0x442)]!==_0x5f39a3(0x298,0x2a4)&&_0x870f6[_0x5f39a3(0x2be,0x2cf)][_0x4d1586(0x42f,0x442)]!=='rule')[_0x5f39a3(0x2b8,0x2ca)](_0x1ee9e2=>!_0x1ee9e2[_0x5f39a3(0x2be,0x2a4)][_0x5f39a3(0x2c2,0x2c0)])[_0x4d1586(0x440,0x431)](_0x305852=>_0x305852[_0x5f39a3(0x2be,0x2c4)]);for(const _0x385772 of _0x20e8b7){if(_0x385772[_0x5f39a3(0x2bb,0x2bf)]!=null)_0x4bf8b9+=_0x19111f[_0x4d1586(0x42d,0x420)+_0x4d1586(0x431,0x429)](_0x385772['id']);else{if(_0x552bb0[_0x4d1586(0x429,0x434)+'ry'](_0x385772['id']))_0x59ca4e++;}}}}const _0x1168cb=_0x226a12['getMemoryC'+_0x5f39a3(0x2b6,0x2b2)](_0x55ec46,!![]);if(_0x1168cb>_0x5103f5){const _0x4f83fa=_0x55ec46?{'limit':_0x1168cb,'projectPath':_0x55ec46}:{'limit':_0x1168cb},_0x354c18=_0x226a12[_0x5f39a3(0x29f,0x2af)+'es'](_0x4f83fa),_0x4f3ee1=_0x354c18['map'](_0x7449bc=>({'memory':_0x7449bc,'quality':scoreQuality(_0x7449bc,_0x140608)})),_0x2b16e8=_0x4f3ee1[_0x4d1586(0x454,0x43e)](_0x5dff6a=>_0x5dff6a[_0x4d1586(0x425,0x41f)][_0x5f39a3(0x292,0x27a)]<_0x140608['qualityThr'+'eshold'])['filter'](_0x4b9e9b=>_0x4b9e9b[_0x5f39a3(0x2be,0x2cc)][_0x5f39a3(0x2bc,0x2c6)]!=='skill'&&_0x4b9e9b[_0x5f39a3(0x2be,0x2bd)][_0x5f39a3(0x2bc,0x2c7)]!=='rule')['filter'](_0x3c796b=>!_0x3c796b[_0x4d1586(0x452,0x444)]['parentId'])[_0x4d1586(0x438,0x431)](_0x20b2ba=>_0x20b2ba[_0x4d1586(0x43e,0x444)]);for(const _0x3944ae of _0x2b16e8){if(_0x3944ae[_0x4d1586(0x429,0x441)]!=null)_0x376789+=_0x226a12[_0x5f39a3(0x29a,0x2ab)+_0x4d1586(0x420,0x429)](_0x3944ae['id']);else{if(_0x226a12[_0x5f39a3(0x2ae,0x299)+'ry'](_0x3944ae['id']))_0x376789++;}}}const _0x14cfe2=_0x226a12['getMemoryC'+'ount'](_0x55ec46,!![]);if(_0x3c5957[_0x4d1586(0x3fc,0x416)](_0x14cfe2,_0x5103f5)){const _0x215fd5=_0x55ec46?{'limit':_0x14cfe2,'projectPath':_0x55ec46}:{'limit':_0x14cfe2},_0x1283a9=_0x226a12[_0x5f39a3(0x29f,0x2b5)+'es'](_0x215fd5),_0x563e33=_0x1283a9['filter'](_0x19922c=>_0x19922c[_0x4d1586(0x433,0x442)]!==_0x5f39a3(0x298,0x2a6)&&_0x19922c[_0x4d1586(0x432,0x442)]!=='rule')[_0x5f39a3(0x2b8,0x2b2)](_0x2bbd0c=>!_0x2bbd0c[_0x4d1586(0x42e,0x448)])[_0x4d1586(0x424,0x431)](_0x5b1fd5=>({'memory':_0x5b1fd5,'quality':scoreQuality(_0x5b1fd5,_0x140608)[_0x4d1586(0x41b,0x418)]}))[_0x5f39a3(0x2a0,0x2b7)]((_0x24370e,_0x20cddc)=>_0x24370e['quality']-_0x20cddc['quality']),_0x4b4f67=_0x3c5957[_0x4d1586(0x40c,0x422)](_0x14cfe2,_0x5103f5),_0x3cf5b5=_0x563e33[_0x4d1586(0x3ff,0x419)](0x0,_0x4b4f67);for(const _0x14db5a of _0x3cf5b5){if('EHPbG'===_0x4d1586(0x436,0x42b)){if(_0x2a5290[_0x4d1586(0x426,0x43d)]){const _0x154449=new _0x5d5b76(_0x1f58bf[_0x5f39a3(0x2b7,0x2bd)]),_0x163b3f=(_0x45cae3[_0x5f39a3(0x2a7,0x2a3)]()-_0x154449[_0x4d1586(0x43c,0x42d)]())/(0x3e8*0x3c*0x3c*0x18);if(_0x3c5957[_0x5f39a3(0x2a2,0x2b4)](_0x163b3f,0x1e)){if(_0xa1261a[_0x4d1586(0x41b,0x434)+'ry'](_0x1fd6d3['id']))_0x36c876++;}}}else{if(_0x14db5a[_0x5f39a3(0x2be,0x2ac)][_0x5f39a3(0x2bb,0x2b0)]!=null)_0xd5b328+=_0x226a12[_0x5f39a3(0x29a,0x286)+_0x5f39a3(0x2a3,0x298)](_0x14db5a[_0x5f39a3(0x2be,0x2aa)]['id']);else{if(_0x226a12[_0x5f39a3(0x2ae,0x2a3)+'ry'](_0x14db5a['memory']['id']))_0xd5b328++;}}}}return{'expired':_0x22ee5b,'lowQuality':_0x376789,'forced':_0xd5b328,'invalidated':_0x5c716c,'total':_0x3c5957[_0x4d1586(0x44b,0x437)](_0x22ee5b,_0x376789)+_0xd5b328+_0x5c716c};}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * ADR-017 L7: Auto Consolidation (Dream)
3
+ *
4
+ * 트리거: 24시간 경과 OR 5세션 이상
5
+ * 동작: 카테고리별 + 최근 30일 메모리에서 cosine > 0.9 쌍 병합
6
+ * 제한: O(n²) 방지를 위해 카테고리+기간 제한
7
+ */
8
+ import type { MemoryDatabase } from '../db/database.js';
9
+ export interface ConsolidationResult {
10
+ merged: number;
11
+ conflicts: number;
12
+ skipped: number;
13
+ }
14
+ /**
15
+ * 24시간 OR 5세션 경과 여부 확인
16
+ */
17
+ export declare function shouldConsolidate(db: MemoryDatabase, projectPath: string): boolean;
18
+ /**
19
+ * 카테고리별 cosine > 0.9 쌍 병합
20
+ */
21
+ export declare function runConsolidation(db: MemoryDatabase, projectPath: string): ConsolidationResult;
22
+ //# sourceMappingURL=consolidation.d.ts.map
@@ -0,0 +1 @@
1
+ (function(_0x25cdeb,_0x1456e3){const _0x1928e6=_0x25cdeb();function _0x1fe1fc(_0x2f35ef,_0x4a4893){return _0x5e35(_0x4a4893- -0x42,_0x2f35ef);}function _0x17d7b1(_0x16865f,_0x2ad180){return _0x5e35(_0x2ad180- -0x31c,_0x16865f);}while(!![]){try{const _0x33c316=parseInt(_0x17d7b1(-0x24c,-0x23e))/0x1+-parseInt(_0x1fe1fc(0x95,0x9b))/0x2*(parseInt(_0x17d7b1(-0x237,-0x248))/0x3)+-parseInt(_0x1fe1fc(0x6a,0x89))/0x4*(parseInt(_0x1fe1fc(0x9b,0x98))/0x5)+parseInt(_0x1fe1fc(0xbb,0xaa))/0x6*(-parseInt(_0x17d7b1(-0x25e,-0x245))/0x7)+-parseInt(_0x1fe1fc(0xc1,0xa5))/0x8+-parseInt(_0x17d7b1(-0x249,-0x23c))/0x9*(-parseInt(_0x17d7b1(-0x236,-0x234))/0xa)+parseInt(_0x17d7b1(-0x234,-0x246))/0xb;if(_0x33c316===_0x1456e3)break;else _0x1928e6['push'](_0x1928e6['shift']());}catch(_0x5c678b){_0x1928e6['push'](_0x1928e6['shift']());}}}(_0x31ea,0x2366e));import{cosineSimilarity}from'../extraction/similarity.js';import{createLogger}from'../utils/logger.js';const logger=createLogger(_0x56e08a(-0x2ef,-0x2d8)+'ion');function _0x56e08a(_0x5ed4e7,_0x4a765a){return _0x5e35(_0x5ed4e7- -0x3c8,_0x4a765a);}function _0x5e35(_0x2d47e9,_0x1e16bb){_0x2d47e9=_0x2d47e9-0xc3;const _0x31eadb=_0x31ea();let _0x5e356a=_0x31eadb[_0x2d47e9];if(_0x5e35['CRCEAt']===undefined){var _0x1a5a64=function(_0x5efb8f){const _0x48a25f='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x1283ce='',_0x4f305c='';for(let _0x3d3c88=0x0,_0xb3f25f,_0x2f45ce,_0x198987=0x0;_0x2f45ce=_0x5efb8f['charAt'](_0x198987++);~_0x2f45ce&&(_0xb3f25f=_0x3d3c88%0x4?_0xb3f25f*0x40+_0x2f45ce:_0x2f45ce,_0x3d3c88++%0x4)?_0x1283ce+=String['fromCharCode'](0xff&_0xb3f25f>>(-0x2*_0x3d3c88&0x6)):0x0){_0x2f45ce=_0x48a25f['indexOf'](_0x2f45ce);}for(let _0x16bcf1=0x0,_0x7cdab7=_0x1283ce['length'];_0x16bcf1<_0x7cdab7;_0x16bcf1++){_0x4f305c+='%'+('00'+_0x1283ce['charCodeAt'](_0x16bcf1)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x4f305c);};_0x5e35['RFcagN']=_0x1a5a64,_0x5e35['wGVyev']={},_0x5e35['CRCEAt']=!![];}const _0x1896c0=_0x31eadb[0x0],_0x5105d1=_0x2d47e9+_0x1896c0,_0x424037=_0x5e35['wGVyev'][_0x5105d1];return!_0x424037?(_0x5e356a=_0x5e35['RFcagN'](_0x5e356a),_0x5e35['wGVyev'][_0x5105d1]=_0x5e356a):_0x5e356a=_0x424037,_0x5e356a;}const MERGE_THRESHOLD=0.9,MAX_CANDIDATES_PER_CATEGORY=0x32,RECENT_DAYS=0x1e;export function shouldConsolidate(_0x5b8ff3,_0x12e4a4){function _0x123177(_0x22357e,_0x58ebf5){return _0x56e08a(_0x58ebf5-0x558,_0x22357e);}function _0x2163a0(_0x5d4b78,_0x3aa1ff){return _0x56e08a(_0x3aa1ff-0x500,_0x5d4b78);}const _0x4faed0={'frlpr':function(_0x491857,_0x32cb17){return _0x491857>_0x32cb17;},'AHScU':function(_0x5bb29e,_0x509495){return _0x5bb29e===_0x509495;}};try{const _0x3d8b26=_0x5b8ff3[_0x2163a0(0x20b,0x229)](_0x12e4a4);if(!_0x3d8b26)return![];const _0x1c30c0=_0x5b8ff3['getSession'+_0x123177(0x290,0x27d)](_0x12e4a4);if(_0x4faed0[_0x123177(0x28b,0x275)](_0x1c30c0,0x0)&&_0x4faed0['AHScU'](_0x1c30c0%0x5,0x0))return!![];return![];}catch{return![];}}export function runConsolidation(_0x7dd31f,_0x5968d8){function _0x38b575(_0x4feaaf,_0x4920a4){return _0x56e08a(_0x4920a4-0x413,_0x4feaaf);}const _0x4fec6b={'RvRYf':function(_0x291ef0,_0x4a33c0){return _0x291ef0===_0x4a33c0;},'zrvVk':function(_0x12c2ae,_0x41cb67){return _0x12c2ae%_0x41cb67;},'VBQIf':_0x3fd692(0x2bd,0x2c6)+'rn','qQDjU':_0x3fd692(0x2c3,0x2a6),'tNddF':'convention','gaYfa':function(_0x3f02f2,_0x4b7fba){return _0x3f02f2-_0x4b7fba;},'bIxou':function(_0x342bdd,_0x4c752c){return _0x342bdd*_0x4c752c;},'aNIsf':function(_0x14493c,_0x1f277f){return _0x14493c*_0x1f277f;},'VGHxs':function(_0x31db5e,_0x502d7f){return _0x31db5e<_0x502d7f;},'GZaAs':function(_0x78994,_0x25b777){return _0x78994<_0x25b777;},'enOIk':_0x3fd692(0x2d9,0x2d0),'YeqDd':function(_0xc8c5d1,_0x2f49f8){return _0xc8c5d1>=_0x2f49f8;},'YHbjq':function(_0x3415d2,_0x2cb7f9,_0x4d1112){return _0x3415d2(_0x2cb7f9,_0x4d1112);},'YCLbq':'Conflict\x20d'+_0x3fd692(0x2bb,0x2a6)+_0x3fd692(0x2c4,0x2bb)+'er','xRVaP':function(_0x206665,_0x5d1afd,_0x39beea){return _0x206665(_0x5d1afd,_0x39beea);},'bmhBy':function(_0x116d18,_0x46d7fe){return _0x116d18-_0x46d7fe;}};let _0x293e05=0x0,_0x114f7f=0x0,_0x374068=0x0;const _0x3200e8=[_0x3fd692(0x2e3,0x2e2)+_0x3fd692(0x2d2,0x2c5),_0x4fec6b['VBQIf'],_0x38b575(0x131,0x12e),_0x4fec6b[_0x3fd692(0x2f2,0x305)],_0x3fd692(0x2cf,0x2ec)+'owledge',_0x4fec6b[_0x3fd692(0x2f0,0x2e0)],_0x38b575(0x12b,0x145)];function _0x3fd692(_0x5c03dd,_0x2ee418){return _0x56e08a(_0x5c03dd-0x5bb,_0x2ee418);}const _0x2b0e73=new Date(_0x4fec6b[_0x3fd692(0x2e9,0x2cb)](Date[_0x38b575(0x14f,0x147)](),_0x4fec6b['bIxou'](_0x4fec6b['bIxou'](_0x4fec6b[_0x3fd692(0x2bf,0x2ba)](RECENT_DAYS,0x18),0x3c),0x3c)*0x3e8))[_0x3fd692(0x2ce,0x2e9)+'g']();for(const _0x3741cd of _0x3200e8){const _0x490205=_0x7dd31f['listMemori'+'es']({'category':_0x3741cd,'projectPath':_0x5968d8,'limit':MAX_CANDIDATES_PER_CATEGORY})[_0x38b575(0x125,0x120)](_0x21bcfe=>_0x21bcfe[_0x3fd692(0x2d7,0x2e7)]>=_0x2b0e73&&!_0x21bcfe[_0x38b575(0x101,0x110)]);if(_0x490205[_0x38b575(0x110,0x119)]<0x2)continue;const _0x510c64=_0x490205['map'](_0xed2ae2=>({'memory':_0xed2ae2,'embedding':_0x7dd31f[_0x3fd692(0x2e5,0x2dc)+'ng'](_0xed2ae2['id'])})),_0x19421e=new Set();for(let _0x316119=0x0;_0x4fec6b[_0x38b575(0x114,0x118)](_0x316119,_0x510c64[_0x3fd692(0x2c1,0x2a9)]);_0x316119++){if(_0x19421e[_0x3fd692(0x2e8,0x2f6)](_0x510c64[_0x316119][_0x38b575(0x11f,0x10f)]['id']))continue;const _0xc02a86=_0x510c64[_0x316119];if(!_0xc02a86[_0x3fd692(0x2f1,0x2e5)])continue;for(let _0x466ac5=_0x316119+0x1;_0x4fec6b['GZaAs'](_0x466ac5,_0x510c64[_0x3fd692(0x2c1,0x2bb)]);_0x466ac5++){if(_0x4fec6b[_0x3fd692(0x2de,0x2cb)]===_0x38b575(0x12b,0x131)){if(_0x19421e[_0x3fd692(0x2e8,0x2fb)](_0x510c64[_0x466ac5][_0x3fd692(0x2b7,0x2ab)]['id']))continue;const _0x160672=_0x510c64[_0x466ac5];if(!_0x160672[_0x3fd692(0x2f1,0x2ea)])continue;const _0x14785a=cosineSimilarity(_0xc02a86[_0x3fd692(0x2f1,0x2eb)],_0x160672[_0x38b575(0x14e,0x149)]);if(_0x14785a>=MERGE_THRESHOLD){const [_0x106157,_0x3798d4]=_0x4fec6b[_0x3fd692(0x2ba,0x2c0)](_0xc02a86[_0x38b575(0x11a,0x10f)]['updatedAt'],_0x160672['memory'][_0x3fd692(0x2d7,0x2ed)])?[_0xc02a86[_0x38b575(0x109,0x10f)],_0x160672['memory']]:[_0x160672[_0x3fd692(0x2b7,0x29a)],_0xc02a86[_0x38b575(0x10f,0x10f)]];if(_0x4fec6b[_0x38b575(0x129,0x123)](detectConflict,_0x106157[_0x3fd692(0x2bc,0x2c7)],_0x3798d4['content'])){_0x114f7f++,logger[_0x3fd692(0x2e2,0x2dd)](_0x4fec6b[_0x3fd692(0x2d5,0x2ec)],{'newerId':_0x106157['id'],'olderId':_0x3798d4['id'],'similarity':_0x14785a}),_0x7dd31f[_0x3fd692(0x2d4,0x2c9)+'ry'](_0x3798d4['id'],{'invalidAt':new Date()[_0x3fd692(0x2ce,0x2ca)+'g']()}),_0x19421e[_0x3fd692(0x2e7,0x300)](_0x3798d4['id']);continue;}const _0x2d13d7=_0x4fec6b['xRVaP'](mergeContents,_0x106157[_0x38b575(0x12f,0x114)],_0x3798d4[_0x3fd692(0x2bc,0x2c3)]);_0x7dd31f[_0x38b575(0x123,0x12c)+'ry'](_0x106157['id'],{'content':_0x2d13d7,'tags':[...new Set([..._0x106157['tags']||[],..._0x3798d4['tags']||[]])]}),_0x7dd31f[_0x3fd692(0x2d4,0x2f0)+'ry'](_0x3798d4['id'],{'invalidAt':new Date()['toISOStrin'+'g']()}),_0x19421e[_0x38b575(0x132,0x13f)](_0x3798d4['id']),_0x293e05++,logger[_0x38b575(0x13d,0x13a)](_0x3fd692(0x2eb,0x2f4)+_0x38b575(0x10a,0x111),{'targetId':_0x106157['id'],'sourceId':_0x3798d4['id'],'similarity':_0x14785a});}}else{const _0x2a2256=_0x21be25[_0x38b575(0x156,0x13c)](_0x1efbb5);if(!_0x2a2256)return![];const _0x31dbc6=_0xbdd9c3['getSession'+_0x3fd692(0x2e0,0x2e6)](_0x224dd7);if(_0x31dbc6>0x0&&BlcSIv['RvRYf'](BlcSIv[_0x38b575(0x10c,0x11d)](_0x31dbc6,0x5),0x0))return!![];return![];}}}_0x374068+=_0x4fec6b[_0x3fd692(0x2ec,0x2ea)](_0x4fec6b['gaYfa'](_0x490205[_0x3fd692(0x2c1,0x2c4)],_0x19421e[_0x3fd692(0x2c6,0x2c3)]),_0x293e05);}return{'merged':_0x293e05,'conflicts':_0x114f7f,'skipped':_0x374068};}function detectConflict(_0xeb4b1f,_0x40ce4a){function _0x75574a(_0x31d352,_0x385197){return _0x56e08a(_0x385197-0x779,_0x31d352);}const _0x3b295b=[/\bnot\b.*\binstead\b/i,/\bdon't\b.*\buse\b/i,/\b금지\b/,/\b사용하지\b/,/\bno longer\b/i,/\bdeprecated\b/i];for(const _0x1cd0e7 of _0x3b295b){if(_0x1cd0e7['test'](_0xeb4b1f)&&!_0x1cd0e7['test'](_0x40ce4a))return!![];if(_0x1cd0e7[_0xcdc552(0x92,0x9c)](_0x40ce4a)&&!_0x1cd0e7[_0x75574a(0x4a6,0x49a)](_0xeb4b1f))return!![];}function _0xcdc552(_0x76d346,_0x10b720){return _0x56e08a(_0x10b720-0x37b,_0x76d346);}return![];}function mergeContents(_0x1c8daa,_0x1bf409){const _0x3d5b66={'cQSqC':function(_0xc7932f,_0x46fa0f){return _0xc7932f===_0x46fa0f;}};function _0x2f9535(_0xa17258,_0x1f454a){return _0x56e08a(_0xa17258-0x486,_0x1f454a);}const _0x26ab77=new Set(_0x1c8daa[_0x651e17(0x35c,0x375)]('\x0a')[_0x2f9535(0x181,0x18e)](_0x956b75=>_0x956b75[_0x651e17(0x370,0x371)]())[_0x2f9535(0x193,0x183)](Boolean)),_0x3a84f7=_0x1bf409[_0x651e17(0x37a,0x375)]('\x0a')[_0x2f9535(0x181,0x193)](_0xdfd61=>_0xdfd61['trim']())['filter'](_0x204b7f=>_0x204b7f&&!_0x26ab77[_0x651e17(0x385,0x373)](_0x204b7f));function _0x651e17(_0x18085f,_0x26ce44){return _0x56e08a(_0x26ce44-0x646,_0x18085f);}if(_0x3d5b66[_0x2f9535(0x1a8,0x18b)](_0x3a84f7[_0x2f9535(0x18c,0x1a0)],0x0))return _0x1c8daa;const _0x2803ca=_0x1c8daa+('\x0a\x0a[Consoli'+_0x651e17(0x337,0x34d))+_0x3a84f7[_0x2f9535(0x1ac,0x1a4)]('\x0a');return _0x2803ca[_0x651e17(0x35d,0x379)](0x0,0x7d0);}function _0x31ea(){const _0xbcc790=['zNjSChi','DhLYyxK','mJuYodbVCLPvCxi','mtC3mfzvD1P0wG','DgvZDa','y1ftCum','zw5pswS','mtG2B3jUzffd','q291BNq','AM9PBG','Aw5MBW','zxjYB3jFC29SDq','z2v0u2vZC2LVBG','z2v0rw1IzwrKAq','DhjPBq','ywrK','AgfZ','z2fzzMe','C3bSAxq','twvTB3jPzxmGBq','yM1OqNK','BgvHCM5PBMC','C2XPy2u','BM93','De5Kzey','zw1IzwrKAw5N','CvfeALu','BwfW','BwvTB3j5','CgfYzw50swq','zxjNzwq','wwvXrgq','zxrLy3rLzcWGAW','y29UDgvUDa','y29Kzv9Wyxr0zq','ntzVv3Lkq1G','yu5jC2y','vKDiEhm','BgvUz3rO','zgf0zwrDcG','y29UDgv4Da','zwvWAw5Nig5LDW','ENj2vMS','C2L6zq','nZiXntbfA2zxsLu','zMLSDgvY','mJC1oda1mMTpvvnouW','ndC0nJDnr0nIBuO','wuHIANe','y29UC29SAwrHDa','nZC4ndvTEhbYyMi','Dg9ju09tDhjPBG','ChjVAMvJDf9RBG','mMHPB3Ddvq','mtu4mtq3wxbksxny','DgLVBG','otCZog1Hy3LgqG','DxbKyxrLtwvTBW','wunmyNe','zgvJAxnPB24','DxbKyxrLzef0'];_0x31ea=function(){return _0xbcc790;};return _0x31ea();}
@@ -14,4 +14,6 @@ export { CleanupScheduler } from './cleanup-scheduler.js';
14
14
  export type { CleanupSchedulerOptions, CleanupSchedulerStatus } from './cleanup-scheduler.js';
15
15
  export { determineTier, rebalanceTiers, promoteOnAccess } from './tiering.js';
16
16
  export type { TieringConfig, TieringResult, StorageTier } from '../types/index.js';
17
+ export { shouldConsolidate, runConsolidation } from './consolidation.js';
18
+ export type { ConsolidationResult } from './consolidation.js';
17
19
  //# sourceMappingURL=index.d.ts.map
@@ -1,13 +1 @@
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 { CleanupScheduler } from './cleanup-scheduler.js';
12
- export { determineTier, rebalanceTiers, promoteOnAccess } from './tiering.js';
13
- //# sourceMappingURL=index.js.map
1
+ function _0x1c01(){var _0x294d57=['mJjeqLbAsNq','mJq4nZjlA2Htuui','mJm1nJmYBunmseLw','nMrgvgfQrW','nJG5nda1nwXqDe9mBa','odq5nJKXmfbLs1fXDa','mZiXodyZn3DMvLrUCW','mZC5ntKZnxDiAufyCW','mZeYm05jrNPXuG','nZq3otmWv2XiswD2','nfrorKD2va'];_0x1c01=function(){return _0x294d57;};return _0x1c01();}(function(_0x54fdd5,_0x26269d){var _0x2cab70=_0x54fdd5();function _0x569131(_0x10950a,_0x341f7f){return _0x4d36(_0x10950a-0x14e,_0x341f7f);}function _0x33fda0(_0x218fdd,_0x24fd67){return _0x4d36(_0x24fd67-0x321,_0x218fdd);}while(!![]){try{var _0xe7396a=parseInt(_0x569131(0x28d,0x28c))/0x1*(parseInt(_0x33fda0(0x45c,0x45f))/0x2)+-parseInt(_0x569131(0x290,0x293))/0x3+-parseInt(_0x569131(0x289,0x28b))/0x4*(parseInt(_0x569131(0x291,0x28d))/0x5)+-parseInt(_0x569131(0x288,0x287))/0x6+-parseInt(_0x33fda0(0x45e,0x461))/0x7+parseInt(_0x569131(0x28b,0x28d))/0x8*(parseInt(_0x33fda0(0x458,0x45a))/0x9)+parseInt(_0x569131(0x28f,0x28c))/0xa*(parseInt(_0x33fda0(0x459,0x45d))/0xb);if(_0xe7396a===_0x26269d)break;else _0x2cab70['push'](_0x2cab70['shift']());}catch(_0x3f0cf8){_0x2cab70['push'](_0x2cab70['shift']());}}}(_0x1c01,0x84b1b));export{scoreQuality}from'./quality-scorer.js';export{cleanupMemories}from'./cleanup.js';export{CleanupScheduler}from'./cleanup-scheduler.js';export{determineTier,rebalanceTiers,promoteOnAccess}from'./tiering.js';function _0x4d36(_0x4f1646,_0x44f57d){_0x4f1646=_0x4f1646-0x139;var _0x1c0174=_0x1c01();var _0x4d36dd=_0x1c0174[_0x4f1646];if(_0x4d36['vvbXoS']===undefined){var _0x16db7a=function(_0x5f3ae7){var _0x5ac656='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x2f005b='',_0x4eb1b0='';for(var _0xa158d=0x0,_0xe63aa1,_0x2a388d,_0x47d9c3=0x0;_0x2a388d=_0x5f3ae7['charAt'](_0x47d9c3++);~_0x2a388d&&(_0xe63aa1=_0xa158d%0x4?_0xe63aa1*0x40+_0x2a388d:_0x2a388d,_0xa158d++%0x4)?_0x2f005b+=String['fromCharCode'](0xff&_0xe63aa1>>(-0x2*_0xa158d&0x6)):0x0){_0x2a388d=_0x5ac656['indexOf'](_0x2a388d);}for(var _0x5f01e8=0x0,_0x5dc30e=_0x2f005b['length'];_0x5f01e8<_0x5dc30e;_0x5f01e8++){_0x4eb1b0+='%'+('00'+_0x2f005b['charCodeAt'](_0x5f01e8)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x4eb1b0);};_0x4d36['BzzeWC']=_0x16db7a,_0x4d36['iQnXhW']={},_0x4d36['vvbXoS']=!![];}var _0x564b79=_0x1c0174[0x0],_0x2a86a8=_0x4f1646+_0x564b79,_0x1ab0de=_0x4d36['iQnXhW'][_0x2a86a8];return!_0x1ab0de?(_0x4d36dd=_0x4d36['BzzeWC'](_0x4d36dd),_0x4d36['iQnXhW'][_0x2a86a8]=_0x4d36dd):_0x4d36dd=_0x1ab0de,_0x4d36dd;}export{shouldConsolidate,runConsolidation}from'./consolidation.js';