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,209 +1 @@
1
- /**
2
- * PreCompact Hook
3
- *
4
- * Claude Code 컨텍스트 윈도우 압축 직전 실행됩니다.
5
- * 장기 세션에서 초기 중요 정보가 압축으로 유실되는 것을 방지합니다.
6
- *
7
- * 동작:
8
- * 1. 현재 transcript에서 핵심 결정/진행 상태/미완료 작업 추출
9
- * 2. "session_checkpoint" 카테고리로 DB 저장
10
- * 3. UserPromptSubmit에서 checkpoint 메모리 우선 주입
11
- */
12
- import { getSharedDb, closeSharedDb, normalizeHookInput } from './shared.js';
13
- import { ConfigManager } from '../config/manager.js';
14
- import { filterSensitiveInfo } from '../extraction/filter.js';
15
- import { createLogger } from '../utils/logger.js';
16
- // ============================================================
17
- // Checkpoint Extraction
18
- // ============================================================
19
- /** 핵심 정보 패턴 */
20
- const DECISION_PATTERNS = [
21
- /(?:결정|decided|chose|선택|opted for|went with|채택)[::]?\s*(.+)/gi,
22
- /(?:approach|방법|전략|strategy)[::]?\s*(.+)/gi,
23
- ];
24
- const PROGRESS_PATTERNS = [
25
- /(?:완료|completed|done|finished|구현|implemented)[::]?\s*(.+)/gi,
26
- /(?:진행 중|in progress|working on|작업 중)[::]?\s*(.+)/gi,
27
- ];
28
- const TODO_PATTERNS = [
29
- /(?:TODO|해야 할|남은 작업|remaining|next step|다음)[::]?\s*(.+)/gi,
30
- /(?:미완료|not yet|pending|아직|남겨둔)[::]?\s*(.+)/gi,
31
- ];
32
- const ERROR_PATTERNS = [
33
- /(?:에러|error|bug|이슈|issue|문제)[::]?\s*(.+?)(?:→|->|해결|fixed|resolved)\s*(.+)/gi,
34
- ];
35
- /**
36
- * transcript에서 핵심 정보 추출
37
- */
38
- function extractCheckpointInfo(transcript) {
39
- const info = {
40
- decisions: [],
41
- progress: [],
42
- todos: [],
43
- errorSolutions: [],
44
- };
45
- // 최근 부분만 분석 (너무 긴 transcript 방지)
46
- const recentText = transcript.slice(-10000);
47
- for (const pattern of DECISION_PATTERNS) {
48
- pattern.lastIndex = 0;
49
- let match;
50
- while ((match = pattern.exec(recentText)) !== null) {
51
- const text = match[1].trim().slice(0, 200);
52
- if (text.length > 10)
53
- info.decisions.push(text);
54
- }
55
- }
56
- for (const pattern of PROGRESS_PATTERNS) {
57
- pattern.lastIndex = 0;
58
- let match;
59
- while ((match = pattern.exec(recentText)) !== null) {
60
- const text = match[1].trim().slice(0, 200);
61
- if (text.length > 10)
62
- info.progress.push(text);
63
- }
64
- }
65
- for (const pattern of TODO_PATTERNS) {
66
- pattern.lastIndex = 0;
67
- let match;
68
- while ((match = pattern.exec(recentText)) !== null) {
69
- const text = match[1].trim().slice(0, 200);
70
- if (text.length > 10)
71
- info.todos.push(text);
72
- }
73
- }
74
- for (const pattern of ERROR_PATTERNS) {
75
- pattern.lastIndex = 0;
76
- let match;
77
- while ((match = pattern.exec(recentText)) !== null) {
78
- const problem = match[1].trim().slice(0, 100);
79
- const solution = match[2]?.trim().slice(0, 100) || '';
80
- if (problem.length > 5) {
81
- info.errorSolutions.push(`${problem} → ${solution}`);
82
- }
83
- }
84
- }
85
- // 중복 제거
86
- info.decisions = [...new Set(info.decisions)].slice(0, 5);
87
- info.progress = [...new Set(info.progress)].slice(0, 5);
88
- info.todos = [...new Set(info.todos)].slice(0, 5);
89
- info.errorSolutions = [...new Set(info.errorSolutions)].slice(0, 5);
90
- return info;
91
- }
92
- /**
93
- * CheckpointInfo를 메모리 콘텐츠로 포맷
94
- */
95
- function formatCheckpointContent(info) {
96
- const parts = ['[Session Checkpoint]'];
97
- if (info.decisions.length > 0) {
98
- parts.push('\nDecisions:');
99
- for (const d of info.decisions)
100
- parts.push(`- ${d}`);
101
- }
102
- if (info.progress.length > 0) {
103
- parts.push('\nProgress:');
104
- for (const p of info.progress)
105
- parts.push(`- ${p}`);
106
- }
107
- if (info.todos.length > 0) {
108
- parts.push('\nTODO:');
109
- for (const t of info.todos)
110
- parts.push(`- ${t}`);
111
- }
112
- if (info.errorSolutions.length > 0) {
113
- parts.push('\nError Solutions:');
114
- for (const e of info.errorSolutions)
115
- parts.push(`- ${e}`);
116
- }
117
- return parts.join('\n');
118
- }
119
- // ============================================================
120
- // Core Logic
121
- // ============================================================
122
- export async function handlePreCompact(context) {
123
- const config = new ConfigManager().load();
124
- const logger = createLogger('PreCompact', config.logging);
125
- const startTime = performance.now();
126
- logger.info('Hook started', { projectPath: context.projectPath });
127
- const transcript = context.transcript || '';
128
- if (transcript.length < 100) {
129
- logger.info('Transcript too short, skipping checkpoint');
130
- logger.flush();
131
- return;
132
- }
133
- try {
134
- const info = extractCheckpointInfo(transcript);
135
- // 추출된 정보가 없으면 스킵
136
- const totalItems = info.decisions.length + info.progress.length +
137
- info.todos.length + info.errorSolutions.length;
138
- if (totalItems === 0) {
139
- logger.info('No checkpoint info extracted');
140
- logger.flush();
141
- return;
142
- }
143
- const content = formatCheckpointContent(info);
144
- const filtered = filterSensitiveInfo(content);
145
- const input = {
146
- content: filtered.filtered,
147
- category: 'context',
148
- tier: 'episodic',
149
- tags: ['session-checkpoint', 'pre-compact'],
150
- projectPath: context.projectPath,
151
- sessionId: context.sessionId,
152
- };
153
- const db = getSharedDb(config.db.path);
154
- const created = db.createMemory(input);
155
- logger.info('Checkpoint saved', {
156
- memoryId: created.id,
157
- decisions: info.decisions.length,
158
- progress: info.progress.length,
159
- todos: info.todos.length,
160
- errors: info.errorSolutions.length,
161
- durationMs: Math.round(performance.now() - startTime),
162
- });
163
- }
164
- catch (err) {
165
- logger.error('Checkpoint save failed', err instanceof Error ? err : new Error(String(err)));
166
- }
167
- finally {
168
- logger.flush();
169
- }
170
- }
171
- // ============================================================
172
- // CLI Entrypoint
173
- // ============================================================
174
- const HOOK_TIMEOUT_MS = 5_000;
175
- export async function main() {
176
- const chunks = [];
177
- for await (const chunk of process.stdin) {
178
- chunks.push(chunk);
179
- }
180
- const input = Buffer.concat(chunks).toString('utf-8').trim();
181
- if (!input) {
182
- closeSharedDb();
183
- process.exit(0);
184
- }
185
- const safetyTimer = setTimeout(() => {
186
- console.error(`[a2a] PreCompact safety timeout (${HOOK_TIMEOUT_MS}ms)`);
187
- closeSharedDb();
188
- process.exit(0);
189
- }, HOOK_TIMEOUT_MS);
190
- safetyTimer.unref();
191
- try {
192
- const raw = JSON.parse(input);
193
- const context = normalizeHookInput(raw);
194
- await handlePreCompact(context);
195
- }
196
- catch (err) {
197
- console.error('[a2a] PreCompact error:', err instanceof Error ? err.message : err);
198
- }
199
- finally {
200
- closeSharedDb();
201
- process.exit(0);
202
- }
203
- }
204
- const isMainModule = process.argv[1]?.endsWith('pre-compact.js') ||
205
- process.argv[1]?.endsWith('pre-compact.ts');
206
- if (isMainModule) {
207
- main();
208
- }
209
- //# sourceMappingURL=pre-compact.js.map
1
+ (function(_0x3f434b,_0x5296c0){function _0x2a735d(_0x31dc4d,_0x5e7948){return _0x2f8f(_0x5e7948-0x31b,_0x31dc4d);}function _0x46c5ba(_0x1a23ac,_0x3bf329){return _0x2f8f(_0x3bf329- -0x2c5,_0x1a23ac);}const _0x1f44c9=_0x3f434b();while(!![]){try{const _0xb5782c=-parseInt(_0x46c5ba(-0x149,-0x11c))/0x1*(parseInt(_0x2a735d(0x49e,0x48e))/0x2)+-parseInt(_0x46c5ba(-0x127,-0x123))/0x3*(-parseInt(_0x46c5ba(-0x105,-0x11d))/0x4)+parseInt(_0x46c5ba(-0x12f,-0x126))/0x5+-parseInt(_0x2a735d(0x4b3,0x4ad))/0x6*(-parseInt(_0x2a735d(0x496,0x4b0))/0x7)+parseInt(_0x2a735d(0x4cc,0x49b))/0x8+-parseInt(_0x2a735d(0x4be,0x491))/0x9+-parseInt(_0x2a735d(0x4ce,0x4c8))/0xa*(parseInt(_0x2a735d(0x4e5,0x4ee))/0xb);if(_0xb5782c===_0x5296c0)break;else _0x1f44c9['push'](_0x1f44c9['shift']());}catch(_0x26fac5){_0x1f44c9['push'](_0x1f44c9['shift']());}}}(_0x1f83,0x7608d));import{getSharedDb,closeSharedDb,normalizeHookInput}from'./shared.js';function _0x2f8f(_0x29724f,_0x446142){_0x29724f=_0x29724f-0x170;const _0x1f83bb=_0x1f83();let _0x2f8fed=_0x1f83bb[_0x29724f];if(_0x2f8f['ivxpKE']===undefined){var _0x5127b0=function(_0x3cba82){const _0x400543='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x48bf5a='',_0x2164de='';for(let _0x16d692=0x0,_0x460967,_0x10e5e5,_0xb543ac=0x0;_0x10e5e5=_0x3cba82['charAt'](_0xb543ac++);~_0x10e5e5&&(_0x460967=_0x16d692%0x4?_0x460967*0x40+_0x10e5e5:_0x10e5e5,_0x16d692++%0x4)?_0x48bf5a+=String['fromCharCode'](0xff&_0x460967>>(-0x2*_0x16d692&0x6)):0x0){_0x10e5e5=_0x400543['indexOf'](_0x10e5e5);}for(let _0x37f198=0x0,_0x504f7d=_0x48bf5a['length'];_0x37f198<_0x504f7d;_0x37f198++){_0x2164de+='%'+('00'+_0x48bf5a['charCodeAt'](_0x37f198)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x2164de);};_0x2f8f['EpJxsV']=_0x5127b0,_0x2f8f['LHIWOt']={},_0x2f8f['ivxpKE']=!![];}const _0x357a05=_0x1f83bb[0x0],_0x41448d=_0x29724f+_0x357a05,_0x40e76b=_0x2f8f['LHIWOt'][_0x41448d];return!_0x40e76b?(_0x2f8fed=_0x2f8f['EpJxsV'](_0x2f8fed),_0x2f8f['LHIWOt'][_0x41448d]=_0x2f8fed):_0x2f8fed=_0x40e76b,_0x2f8fed;}import{ConfigManager}from'../config/manager.js';import{filterSensitiveInfo}from'../extraction/filter.js';import{createLogger}from'../utils/logger.js';function _0x1f83(){const _0x19ddd6=['zMLSDgvYzwq','zhrNquK','mJi3otm2mfrlDu5cvq','cKvYCM9YifnVBa','DxrPB25ZoG','Aw9UCW','BguVAw5Qzwn0Aq','Dc5QCW','q3Lns3G','DxbKyxrLza','B24TzMX1C2GUAG','q2HLy2TWB2LUDa','BgvUz3rO','vuHrrvm','lwnVBxbHy3qP','AM9PBG','BM93','vNrOqvK','ChjLlwnVBxbHyW','ihnHDMvK','nda0mtC5ogz3tuP3vq','ChjVz3jLC3m','DxrMltG','n3rytePlEa','Eu1Js2i','y29Uy2f0','zgvJAxnPB25Z','w2eYyv0GuhjLqW','B3i6','uvnry0K','yxjNDG','Aw50igLUzM8Gzq','Bxror3u','otK0mta1vNDgtevc','suj0ALi','lcbZA2LWCgLUzW','m2XHvhvpvW','rNrMz1q','Dc50CW','zxr5ihrPBwvVDq','y3nwA2O','q3fwD3O','mZi5mZy5mNfIzK9WCG','ntm0n2PMzMz3vG','zxjYB3jtB2X1Da','EhrYywn0zwq','B21Wywn0ihnHzG','ntq4mdaWmeLmzwLdsa','vhjHBNnJCMLWDa','Dg9KB3m','CgfYC2u','BwvZC2fNzq','y29UDgv4Da','sg9VAYbZDgfYDa','AgvJA3bVAw50xq','tM8Gy2HLy2TWBW','zMX1C2GGkhbYzq','AxvhwxG','Dg9tDhjPBMC','zMX1C2GGC2TPCa','zxjYB3i','Aw5MBW','y0fWC2W','wg1YreO','ihnHDMuGzMfPBa','Bgv0DNq','rMPwwKO','vvPAEvG','AgPzC1G','wgXWuNG','zw5KC1DPDgG','BxmP','swvhvMe','D2fYBG','AgDdq0S','veLcAwG','C2vZC2LVBKLK','Bg9Nz2LUzW','yMftrxi','AuHkwgK','BNzVBxq','wwLZv28','zMX1C2G','ChvZAa','iokgKIa','mtfly3jWtMu','w1nLC3nPB24GqW','C3rKAw4','zxHPDa','DhjHBNnJCMLWDa','AwzTv0K','BKDUqNK','seTZBNm','DhjPBq','zxHLyW','ChjVAMvJDfbHDa','C2vZC2LVBI1JAa','C2XPy2u','B0Xir3a','q0LJsw4','uhjLq29TCgfJDa','sw5Qzwn0Aw9Uia','Bw5Xug0','zxbPC29KAwm','CM91BMq','CgvK','mtGYDM9zu3vS','y3jLyxrLtwvTBW','Dw5Yzwy','nde2ndC1ou9eBw52tW','ignOzwnRCg9PBG','BgfZDeLUzgv4','Ahz0s1y','ihrVBYbZAg9YDa','cLbYB2DYzxnZoG','AMLIqu4','D3zorLe'];_0x1f83=function(){return _0x19ddd6;};return _0x1f83();}const DECISION_PATTERNS=[/(?:결정|decided|chose|선택|opted for|went with|채택)[::]?\s*(.+)/gi,/(?:approach|방법|전략|strategy)[::]?\s*(.+)/gi],PROGRESS_PATTERNS=[/(?:완료|completed|done|finished|구현|implemented)[::]?\s*(.+)/gi,/(?:진행 중|in progress|working on|작업 중)[::]?\s*(.+)/gi],TODO_PATTERNS=[/(?:TODO|해야 할|남은 작업|remaining|next step|다음)[::]?\s*(.+)/gi,/(?:미완료|not yet|pending|아직|남겨둔)[::]?\s*(.+)/gi],ERROR_PATTERNS=[/(?:에러|error|bug|이슈|issue|문제)[::]?\s*(.+?)(?:→|->|해결|fixed|resolved)\s*(.+)/gi];function extractCheckpointInfo(_0x14cb23){const _0x3b24a1={'mnqPm':function(_0x55f694,_0x4a8a78){return _0x55f694!==_0x4a8a78;},'oLHGp':function(_0x21f84,_0x54cfd0){return _0x21f84>_0x54cfd0;},'hgCCK':function(_0x2552ff,_0x1abb40){return _0x2552ff>_0x1abb40;},'CIcIn':function(_0xfbbd3d,_0x19ae39){return _0xfbbd3d!==_0x19ae39;},'XlpRx':function(_0x245b22,_0x35c56b){return _0x245b22>_0x35c56b;},'nvomt':function(_0x39a6a6,_0x37d5dd){return _0x39a6a6!==_0x37d5dd;}};function _0x29387c(_0x25e847,_0x535e2f){return _0x2f8f(_0x535e2f- -0x161,_0x25e847);}const _0x58cbf6={'decisions':[],'progress':[],'todos':[],'errorSolutions':[]},_0x428ad3=_0x14cb23['slice'](-0x2710);for(const _0x2a45b1 of DECISION_PATTERNS){_0x2a45b1['lastIndex']=0x0;let _0x17c390;while(_0x3b24a1[_0x8105ed(0x28,0x1c)](_0x17c390=_0x2a45b1[_0x8105ed(0x46,0x14)](_0x428ad3),null)){const _0x4ac2bf=_0x17c390[0x1][_0x8105ed(-0x12,0x13)]()[_0x8105ed(0x11,0x17)](0x0,0xc8);if(_0x3b24a1[_0x8105ed(-0xe,0x18)](_0x4ac2bf['length'],0xa))_0x58cbf6[_0x8105ed(-0x4b,-0x30)][_0x29387c(0x54,0x70)](_0x4ac2bf);}}for(const _0x3d1556 of PROGRESS_PATTERNS){_0x3d1556[_0x29387c(0x33,0x17)]=0x0;let _0x8ef39;while((_0x8ef39=_0x3d1556[_0x8105ed(0x19,0x14)](_0x428ad3))!==null){const _0x17b9e0=_0x8ef39[0x1][_0x8105ed(0xc,0x13)]()[_0x8105ed(-0x4,0x17)](0x0,0xc8);if(_0x3b24a1[_0x8105ed(0x39,0x0)](_0x17b9e0[_0x29387c(0x2f,0x29)],0xa))_0x58cbf6[_0x29387c(0x2,0x32)][_0x8105ed(0x3f,0x9)](_0x17b9e0);}}for(const _0x2cef0e of TODO_PATTERNS){_0x2cef0e['lastIndex']=0x0;let _0x2d101e;while(_0x3b24a1[_0x8105ed(0x11,0x19)](_0x2d101e=_0x2cef0e[_0x29387c(0x56,0x7b)](_0x428ad3),null)){const _0x40789e=_0x2d101e[0x1][_0x8105ed(0x49,0x13)]()[_0x29387c(0x58,0x7e)](0x0,0xc8);if(_0x3b24a1[_0x8105ed(0x11,-0x5)](_0x40789e[_0x8105ed(-0x17,-0x3e)],0xa))_0x58cbf6[_0x29387c(0x46,0x4e)]['push'](_0x40789e);}}for(const _0x27baec of ERROR_PATTERNS){_0x27baec[_0x8105ed(-0x81,-0x50)]=0x0;let _0x38edf4;while(_0x3b24a1[_0x29387c(0x57,0x6d)](_0x38edf4=_0x27baec['exec'](_0x428ad3),null)){const _0x23ed48=_0x38edf4[0x1][_0x8105ed(-0x12,0x13)]()[_0x8105ed(0x22,0x17)](0x0,0x64),_0x3a8357=_0x38edf4[0x2]?.[_0x29387c(0x92,0x7a)]()['slice'](0x0,0x64)||'';_0x23ed48['length']>0x5&&_0x58cbf6[_0x8105ed(-0x37,-0x1e)+_0x29387c(0x2f,0x22)][_0x29387c(0x6f,0x70)](_0x23ed48+_0x8105ed(0x27,0xa)+_0x3a8357);}}_0x58cbf6[_0x8105ed(-0x4b,-0x30)]=[...new Set(_0x58cbf6['decisions'])][_0x8105ed(0xd,0x17)](0x0,0x5);function _0x8105ed(_0x50f7f1,_0x19cac6){return _0x2f8f(_0x19cac6- -0x1c8,_0x50f7f1);}return _0x58cbf6[_0x29387c(0x29,0x32)]=[...new Set(_0x58cbf6[_0x29387c(0x61,0x32)])]['slice'](0x0,0x5),_0x58cbf6[_0x8105ed(0x20,-0x19)]=[...new Set(_0x58cbf6['todos'])]['slice'](0x0,0x5),_0x58cbf6[_0x8105ed(-0x20,-0x1e)+'ions']=[...new Set(_0x58cbf6[_0x8105ed(-0x3e,-0x1e)+_0x8105ed(-0x74,-0x45)])][_0x8105ed(-0x9,0x17)](0x0,0x5),_0x58cbf6;}function formatCheckpointContent(_0x337a45){const _0x52f11b={'XmrDJ':_0x1fb94f(0x1b2,0x1ab)+_0x1da766(0x45c,0x42a),'yMcKb':function(_0x12d351,_0x56bce4){return _0x12d351>_0x56bce4;},'ueZIR':function(_0x3288eb,_0x4e7f72){return _0x3288eb>_0x4e7f72;},'hjYsX':_0x1fb94f(0x188,0x152),'FjVZJ':function(_0xe0f43a,_0x3cbe3a){return _0xe0f43a!==_0x3cbe3a;},'baSEr':'\x0aTODO:','CqVwz':_0x1da766(0x429,0x412)+_0x1fb94f(0x17b,0x159)},_0x3dd9aa=[_0x52f11b[_0x1da766(0x465,0x496)]];if(_0x52f11b[_0x1da766(0x43e,0x426)](_0x337a45[_0x1fb94f(0x14f,0x16f)][_0x1da766(0x432,0x460)],0x0)){_0x3dd9aa[_0x1fb94f(0x180,0x1a8)]('\x0aDecisions'+':');for(const _0x65be70 of _0x337a45[_0x1fb94f(0x1a7,0x16f)])_0x3dd9aa['push']('-\x20'+_0x65be70);}if(_0x52f11b['ueZIR'](_0x337a45[_0x1da766(0x43b,0x450)][_0x1da766(0x432,0x413)],0x0)){_0x3dd9aa[_0x1fb94f(0x1a1,0x1a8)](_0x52f11b[_0x1fb94f(0x186,0x199)]);for(const _0x416527 of _0x337a45[_0x1da766(0x43b,0x429)])_0x3dd9aa[_0x1da766(0x479,0x43f)]('-\x20'+_0x416527);}if(_0x337a45[_0x1fb94f(0x1af,0x186)][_0x1fb94f(0x188,0x161)]>0x0){if(_0x52f11b[_0x1da766(0x468,0x48c)](_0x1fb94f(0x1e4,0x1b0),'EKpua')){_0x3dd9aa[_0x1da766(0x479,0x470)](_0x52f11b[_0x1da766(0x474,0x4a6)]);for(const _0x41a678 of _0x337a45['todos'])_0x3dd9aa['push']('-\x20'+_0x41a678);}else _0x1b5992[_0x1da766(0x463,0x486)](_0x1da766(0x48b,0x480)+'flush\x20(pre'+_0x1fb94f(0x198,0x163),{'updated':_0x1b2f77[_0x1fb94f(0x179,0x15e)]});}function _0x1fb94f(_0x421cc5,_0x5830bf){return _0x2f8f(_0x5830bf- -0x29,_0x421cc5);}if(_0x337a45[_0x1da766(0x452,0x44e)+_0x1fb94f(0x156,0x15a)][_0x1fb94f(0x175,0x161)]>0x0){_0x3dd9aa[_0x1fb94f(0x1bf,0x1a8)](_0x52f11b[_0x1fb94f(0x183,0x17e)]);for(const _0x18f187 of _0x337a45['errorSolut'+_0x1fb94f(0x17d,0x15a)])_0x3dd9aa[_0x1da766(0x479,0x499)]('-\x20'+_0x18f187);}function _0x1da766(_0x19db3c,_0x3cafc2){return _0x2f8f(_0x19db3c-0x2a8,_0x3cafc2);}return _0x3dd9aa[_0x1fb94f(0x19d,0x164)]('\x0a');}export async function handlePreCompact(_0x210989){const _0x32d6ba={'UHQES':function(_0x3dbc6c,_0x5c63bd){return _0x3dbc6c!==_0x5c63bd;},'iHJXi':_0x417c69(0x329,0x31d),'NCBGj':_0x417c69(0x316,0x2ee)+'ed','hvtKV':function(_0xc0a1b4,_0x1fe390){return _0xc0a1b4<_0x1fe390;},'QSQcI':function(_0x18da21,_0x5a3615){return _0x18da21+_0x5a3615;},'mtNGu':function(_0x3e3e14,_0x3f0064){return _0x3e3e14===_0x3f0064;},'VXITR':'IeGVa','cApsl':_0x3501dc(0x207,0x1d4)+_0x417c69(0x2e8,0x2d8)+_0x417c69(0x2ce,0x2e6),'HKsns':function(_0x477a4c,_0x5569b6){return _0x477a4c(_0x5569b6);},'DHrmI':_0x417c69(0x297,0x2ab),'dtgAI':_0x417c69(0x304,0x2cb)+'t','csVkj':'Checkpoint'+_0x3501dc(0x1e3,0x1ba),'iuGYx':'wvNFQ','letvt':function(_0x543b0c,_0x2e3fa8,_0x3e0687,_0x6bf7d){return _0x543b0c(_0x2e3fa8,_0x3e0687,_0x6bf7d);},'FtfgT':function(_0x472776,_0x561850){return _0x472776>_0x561850;},'VthAY':_0x3501dc(0x213,0x1e3),'bxxKU':_0x417c69(0x2e1,0x2db),'orkIc':_0x417c69(0x2ad,0x2c4)+_0x3501dc(0x210,0x20c)+'ed'},_0xcb111a=new ConfigManager()['load'](),_0x201c14=createLogger(_0x32d6ba[_0x417c69(0x2e0,0x308)],_0xcb111a[_0x3501dc(0x21d,0x1f3)]),_0x1daaf6=performance[_0x3501dc(0x1e0,0x1eb)]();_0x201c14['info'](_0x32d6ba['NCBGj'],{'projectPath':_0x210989['projectPat'+'h']});const _0x32ae4a=_0x210989[_0x3501dc(0x229,0x231)]||'';function _0x3501dc(_0x77ab25,_0x218fc6){return _0x2f8f(_0x77ab25-0x52,_0x218fc6);}if(_0x32d6ba[_0x417c69(0x29a,0x2b4)](_0x32ae4a[_0x417c69(0x2b8,0x2c5)],0x64)){_0x201c14[_0x3501dc(0x20d,0x1f1)](_0x3501dc(0x200,0x1f6)+_0x3501dc(0x1cc,0x1ce)+_0x417c69(0x2c6,0x2dc)+'\x20checkpoin'+'t'),_0x201c14[_0x417c69(0x2d1,0x30b)]();return;}function _0x417c69(_0x3c170c,_0x4f2f59){return _0x2f8f(_0x4f2f59-0x13b,_0x3c170c);}try{const _0x7ba914=extractCheckpointInfo(_0x32ae4a),_0x120ca0=_0x32d6ba['QSQcI'](_0x32d6ba[_0x3501dc(0x1ed,0x1eb)](_0x32d6ba['QSQcI'](_0x7ba914[_0x417c69(0x2b0,0x2d3)][_0x3501dc(0x1dc,0x20f)],_0x7ba914['progress'][_0x3501dc(0x1dc,0x1bc)]),_0x7ba914[_0x417c69(0x31f,0x2ea)][_0x417c69(0x2c0,0x2c5)]),_0x7ba914[_0x3501dc(0x1fc,0x1dd)+_0x417c69(0x284,0x2be)][_0x3501dc(0x1dc,0x1cf)]);if(_0x32d6ba[_0x417c69(0x2fb,0x2d9)](_0x120ca0,0x0)){if(_0x32d6ba['VXITR']===_0x3501dc(0x218,0x232)){_0x201c14[_0x3501dc(0x20d,0x21d)](_0x32d6ba[_0x417c69(0x308,0x2f7)]),_0x201c14[_0x3501dc(0x222,0x200)]();return;}else{_0x12adb2[_0x3501dc(0x20d,0x217)]('Transcript'+_0x417c69(0x2a9,0x2b5)+',\x20skipping'+_0x3501dc(0x1c9,0x1b7)+'t'),_0x515b2c[_0x3501dc(0x222,0x222)]();return;}}const _0x2af5cf=_0x32d6ba[_0x417c69(0x345,0x315)](formatCheckpointContent,_0x7ba914),_0x49839e=filterSensitiveInfo(_0x2af5cf),_0x5ea2f={'content':_0x49839e[_0x417c69(0x2e6,0x2b9)],'category':_0x417c69(0x311,0x2ed),'tier':_0x32d6ba['DHrmI'],'tags':[_0x417c69(0x2f4,0x319)+'eckpoint',_0x32d6ba[_0x417c69(0x2f0,0x2ba)]],'projectPath':_0x210989[_0x417c69(0x349,0x318)+'h'],'sessionId':_0x210989['sessionId']},_0x11da93=getSharedDb(_0xcb111a['db']['path']),_0x5d7827=_0x11da93[_0x417c69(0x2e9,0x2af)+'ry'](_0x5ea2f);_0x201c14['info'](_0x32d6ba[_0x3501dc(0x1f8,0x229)],{'memoryId':_0x5d7827['id'],'decisions':_0x7ba914['decisions'][_0x417c69(0x2ae,0x2c5)],'progress':_0x7ba914['progress'][_0x3501dc(0x1dc,0x209)],'todos':_0x7ba914[_0x3501dc(0x201,0x1e7)][_0x3501dc(0x1dc,0x201)],'errors':_0x7ba914[_0x3501dc(0x1fc,0x1c6)+_0x3501dc(0x1d5,0x20a)]['length'],'durationMs':Math[_0x417c69(0x2a6,0x2ac)](performance[_0x417c69(0x2c7,0x2c9)]()-_0x1daaf6)});try{if(_0x417c69(0x27f,0x2b8)===_0x32d6ba[_0x417c69(0x2d7,0x2f2)]){const {flushInjectionEffectiveness:_0x15af94}=await import('../lifecyc'+_0x417c69(0x2b4,0x2bf)+_0x3501dc(0x1da,0x1bf)+'s'),_0x1d029f=_0x32d6ba[_0x3501dc(0x211,0x23f)](_0x15af94,_0x11da93,_0x210989[_0x3501dc(0x21c,0x1fc)],_0x201c14);_0x32d6ba[_0x417c69(0x2a5,0x2de)](_0x1d029f[_0x417c69(0x293,0x2c2)],0x0)&&_0x201c14[_0x3501dc(0x20d,0x247)](_0x3501dc(0x235,0x250)+_0x417c69(0x2d4,0x2f1)+_0x417c69(0x2fd,0x2c7),{'updated':_0x1d029f['updated']});}else _0x8486e1['flush']();}catch(_0x37626a){_0x201c14[_0x417c69(0x316,0x302)](_0x3501dc(0x235,0x244)+_0x3501dc(0x20b,0x22c)+_0x3501dc(0x1c4,0x1b5),{'error':_0x37626a instanceof Error?_0x37626a[_0x417c69(0x2cd,0x2ec)]:String(_0x37626a)});}}catch(_0x48e1e6){if(_0x32d6ba[_0x417c69(0x2a0,0x2ca)]!==_0x32d6ba['bxxKU'])_0x201c14[_0x417c69(0x2c5,0x2f5)](_0x32d6ba['orkIc'],_0x48e1e6 instanceof Error?_0x48e1e6:new Error(_0x32d6ba[_0x417c69(0x31e,0x315)](String,_0x48e1e6)));else{_0x58661f[_0x3501dc(0x1ca,0x1e6)]=0x0;let _0x2f43ec;while(gWfUTu[_0x417c69(0x2e9,0x2c6)](_0x2f43ec=_0x5e9fcf['exec'](_0xe6b5a0),null)){const _0x407c97=_0x2f43ec[0x1]['trim']()[_0x3501dc(0x231,0x21d)](0x0,0xc8);if(_0x407c97[_0x417c69(0x2c7,0x2c5)]>0xa)_0x3b5b2b['progress']['push'](_0x407c97);}}}finally{_0x201c14['flush']();}}const HOOK_TIMEOUT_MS=0x1388;function _0x21d706(_0xb8cea6,_0x4a798c){return _0x2f8f(_0x4a798c- -0x346,_0xb8cea6);}export async function main(){function _0x6b8bfc(_0x3f560d,_0x38d711){return _0x2f8f(_0x3f560d- -0x26c,_0x38d711);}const _0x4448b4={'jibAN':function(_0xdb27c9){return _0xdb27c9();},'CyMKx':_0x5994e2(0x48c,0x486),'ifmWI':function(_0x479386,_0x5b4b08){return _0x479386(_0x5b4b08);},'TIBih':_0x5994e2(0x491,0x4b3)+'ompact\x20err'+_0x5994e2(0x492,0x487),'YisWo':function(_0xf7418f,_0x1ce937){return _0xf7418f instanceof _0x1ce937;}},_0x3f39b4=[];for await(const _0xfc459f of process[_0x5994e2(0x4cd,0x4c3)]){_0x3f39b4[_0x5994e2(0x4c9,0x4b8)](_0xfc459f);}const _0x230a3d=Buffer[_0x6b8bfc(-0xd5,-0xb6)](_0x3f39b4)[_0x5994e2(0x4b0,0x49e)](_0x4448b4[_0x5994e2(0x47e,0x4a5)])[_0x5994e2(0x4d3,0x4dd)]();!_0x230a3d&&(_0x4448b4[_0x5994e2(0x474,0x49b)](closeSharedDb),process[_0x6b8bfc(-0x96,-0xbf)](0x0));function _0x5994e2(_0x1a265b,_0x200bce){return _0x2f8f(_0x1a265b-0x2f8,_0x200bce);}const _0x23a5ea=setTimeout(()=>{console['error'](_0x7addcf(0x294,0x26e)+_0xa81d49(0xf3,0xfe)+_0xa81d49(0xfb,0xf7)+'t\x20('+HOOK_TIMEOUT_MS+_0xa81d49(0x124,0x117));function _0x7addcf(_0x40287e,_0x24e059){return _0x6b8bfc(_0x40287e-0x367,_0x24e059);}function _0xa81d49(_0x5330fd,_0x4517d0){return _0x6b8bfc(_0x4517d0-0x1be,_0x5330fd);}_0x4448b4[_0xa81d49(0xf3,0xce)](closeSharedDb),process[_0x7addcf(0x2d1,0x2ce)](0x0);},HOOK_TIMEOUT_MS);_0x23a5ea[_0x6b8bfc(-0xf7,-0x10e)]();try{const _0x594341=JSON[_0x6b8bfc(-0xbc,-0x98)](_0x230a3d),_0x1437ba=_0x4448b4[_0x5994e2(0x4d0,0x4eb)](normalizeHookInput,_0x594341);await handlePreCompact(_0x1437ba);}catch(_0x3c47df){console[_0x5994e2(0x4b2,0x4c0)](_0x4448b4[_0x6b8bfc(-0xa3,-0x6c)],_0x4448b4[_0x5994e2(0x4c7,0x4b8)](_0x3c47df,Error)?_0x3c47df[_0x5994e2(0x4a9,0x4a7)]:_0x3c47df);}finally{closeSharedDb(),process[_0x5994e2(0x4ce,0x4c3)](0x0);}}const isMainModule=process['argv'][0x1]?.[_0x21d706(-0x177,-0x182)](_0x39221a(0x542,0x558)+_0x21d706(-0x1f9,-0x1c1))||process[_0x39221a(0x54e,0x567)][0x1]?.[_0x21d706(-0x173,-0x182)](_0x39221a(0x542,0x52d)+_0x39221a(0x556,0x54f));function _0x39221a(_0x338c31,_0x122f57){return _0x2f8f(_0x338c31-0x3b2,_0x122f57);}isMainModule&&main();