a2a-memory 0.11.5 → 0.11.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +7 -19
- package/README.md +1 -1
- package/dist/a2a/client.js +1 -252
- package/dist/a2a/discovery.js +1 -115
- package/dist/a2a/index.js +1 -8
- package/dist/a2a/types.js +1 -42
- package/dist/adapters/anthropic.js +1 -117
- package/dist/chunking/chunker.js +1 -163
- package/dist/claude/sync.js +1 -298
- package/dist/cli/commands/add.js +1 -80
- package/dist/cli/commands/claude-sync.js +1 -70
- package/dist/cli/commands/cleanup.js +1 -83
- package/dist/cli/commands/config.js +1 -79
- package/dist/cli/commands/edit.js +1 -69
- package/dist/cli/commands/embed.js +1 -92
- package/dist/cli/commands/extract.js +1 -103
- package/dist/cli/commands/health.js +1 -105
- package/dist/cli/commands/list.js +1 -46
- package/dist/cli/commands/migrate-chunks.js +1 -205
- package/dist/cli/commands/migrate-file-refs.js +1 -183
- package/dist/cli/commands/proficiency.js +1 -146
- package/dist/cli/commands/rm.js +1 -64
- package/dist/cli/commands/search.js +1 -90
- package/dist/cli/commands/setup-wizard.js +1 -387
- package/dist/cli/commands/setup.js +1 -170
- package/dist/cli/commands/skill.js +1 -151
- package/dist/cli/commands/status.js +1 -70
- package/dist/cli/commands/sync.js +1 -202
- package/dist/cli/commands/team.js +1 -142
- package/dist/cli/index.js +1 -87
- package/dist/config/manager.js +1 -372
- package/dist/db/database.js +1 -1400
- package/dist/embedding/e5-provider.js +1 -147
- package/dist/embedding/index.js +1 -34
- package/dist/embedding/local-provider.js +1 -157
- package/dist/embedding/openai-provider.js +1 -92
- package/dist/embedding/quantization.js +1 -89
- package/dist/extraction/dedup-manager.js +1 -161
- package/dist/extraction/emotion-filter.js +1 -33
- package/dist/extraction/extractor.js +1 -648
- package/dist/extraction/file-reference.js +1 -77
- package/dist/extraction/filter.js +1 -86
- package/dist/extraction/scorer.js +1 -142
- package/dist/extraction/similarity.js +1 -85
- package/dist/hooks/client-factory.js +1 -44
- package/dist/hooks/post-tool-use.js +1 -518
- package/dist/hooks/pre-compact.js +1 -209
- package/dist/hooks/session-end.js +1 -633
- package/dist/hooks/session-start.js +1 -549
- package/dist/hooks/shared.js +1 -110
- package/dist/hooks/user-prompt-submit.js +1 -316
- package/dist/i18n/index.js +1 -2
- package/dist/i18n/messages.js +1 -150
- package/dist/index.js +1 -43
- package/dist/lifecycle/cleanup-scheduler.js +1 -137
- package/dist/lifecycle/cleanup.js +1 -116
- package/dist/lifecycle/index.js +1 -13
- package/dist/lifecycle/quality-scorer.js +1 -46
- package/dist/lifecycle/tiering.js +1 -246
- package/dist/llm/client.js +1 -226
- package/dist/llm/index.js +1 -5
- package/dist/proficiency/actr-engine.js +1 -106
- package/dist/proficiency/detection.js +1 -77
- package/dist/proficiency/index.js +1 -9
- package/dist/proficiency/tracker.js +1 -173
- package/dist/proficiency/types.js +1 -8
- package/dist/providers/adapters.js +1 -140
- package/dist/providers/detector.js +1 -57
- package/dist/search/adaptive-router.js +1 -93
- package/dist/search/index.js +1 -9
- package/dist/search/ranker.js +1 -171
- package/dist/search/reranker.js +1 -155
- package/dist/session/parser.js +1 -130
- package/dist/skill/evaluator.js +1 -509
- package/dist/skill/index.js +1 -7
- package/dist/skill/types.js +1 -7
- package/dist/sync/client.js +1 -597
- package/dist/sync/encryption.js +1 -203
- package/dist/sync/index.js +1 -12
- package/dist/sync/queue.js +1 -214
- package/dist/sync/scheduler.js +1 -140
- package/dist/sync/synchronizer.js +1 -241
- package/dist/sync/team-synchronizer.js +1 -204
- package/dist/sync/vector-clock.js +1 -70
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.js +1 -132
- package/dist/utils/keychain.js +1 -170
- package/dist/utils/logger.js +1 -128
- package/package.json +14 -10
- package/dist/a2a/client.d.ts.map +0 -1
- package/dist/a2a/client.js.map +0 -1
- package/dist/a2a/discovery.d.ts.map +0 -1
- package/dist/a2a/discovery.js.map +0 -1
- package/dist/a2a/index.d.ts.map +0 -1
- package/dist/a2a/index.js.map +0 -1
- package/dist/a2a/types.d.ts.map +0 -1
- package/dist/a2a/types.js.map +0 -1
- package/dist/adapters/anthropic.d.ts.map +0 -1
- package/dist/adapters/anthropic.js.map +0 -1
- package/dist/chunking/chunker.d.ts.map +0 -1
- package/dist/chunking/chunker.js.map +0 -1
- package/dist/claude/sync.d.ts.map +0 -1
- package/dist/claude/sync.js.map +0 -1
- package/dist/cli/commands/add.d.ts.map +0 -1
- package/dist/cli/commands/add.js.map +0 -1
- package/dist/cli/commands/claude-sync.d.ts.map +0 -1
- package/dist/cli/commands/claude-sync.js.map +0 -1
- package/dist/cli/commands/cleanup.d.ts.map +0 -1
- package/dist/cli/commands/cleanup.js.map +0 -1
- package/dist/cli/commands/config.d.ts.map +0 -1
- package/dist/cli/commands/config.js.map +0 -1
- package/dist/cli/commands/edit.d.ts.map +0 -1
- package/dist/cli/commands/edit.js.map +0 -1
- package/dist/cli/commands/embed.d.ts.map +0 -1
- package/dist/cli/commands/embed.js.map +0 -1
- package/dist/cli/commands/extract.d.ts.map +0 -1
- package/dist/cli/commands/extract.js.map +0 -1
- package/dist/cli/commands/health.d.ts.map +0 -1
- package/dist/cli/commands/health.js.map +0 -1
- package/dist/cli/commands/list.d.ts.map +0 -1
- package/dist/cli/commands/list.js.map +0 -1
- package/dist/cli/commands/migrate-chunks.d.ts.map +0 -1
- package/dist/cli/commands/migrate-chunks.js.map +0 -1
- package/dist/cli/commands/migrate-file-refs.d.ts.map +0 -1
- package/dist/cli/commands/migrate-file-refs.js.map +0 -1
- package/dist/cli/commands/proficiency.d.ts.map +0 -1
- package/dist/cli/commands/proficiency.js.map +0 -1
- package/dist/cli/commands/rm.d.ts.map +0 -1
- package/dist/cli/commands/rm.js.map +0 -1
- package/dist/cli/commands/search.d.ts.map +0 -1
- package/dist/cli/commands/search.js.map +0 -1
- package/dist/cli/commands/setup-wizard.d.ts.map +0 -1
- package/dist/cli/commands/setup-wizard.js.map +0 -1
- package/dist/cli/commands/setup.d.ts.map +0 -1
- package/dist/cli/commands/setup.js.map +0 -1
- package/dist/cli/commands/skill.d.ts.map +0 -1
- package/dist/cli/commands/skill.js.map +0 -1
- package/dist/cli/commands/status.d.ts.map +0 -1
- package/dist/cli/commands/status.js.map +0 -1
- package/dist/cli/commands/sync.d.ts.map +0 -1
- package/dist/cli/commands/sync.js.map +0 -1
- package/dist/cli/commands/team.d.ts.map +0 -1
- package/dist/cli/commands/team.js.map +0 -1
- package/dist/cli/index.d.ts.map +0 -1
- package/dist/cli/index.js.map +0 -1
- package/dist/config/manager.d.ts.map +0 -1
- package/dist/config/manager.js.map +0 -1
- package/dist/db/database.d.ts.map +0 -1
- package/dist/db/database.js.map +0 -1
- package/dist/embedding/e5-provider.d.ts.map +0 -1
- package/dist/embedding/e5-provider.js.map +0 -1
- package/dist/embedding/index.d.ts.map +0 -1
- package/dist/embedding/index.js.map +0 -1
- package/dist/embedding/local-provider.d.ts.map +0 -1
- package/dist/embedding/local-provider.js.map +0 -1
- package/dist/embedding/openai-provider.d.ts.map +0 -1
- package/dist/embedding/openai-provider.js.map +0 -1
- package/dist/embedding/quantization.d.ts.map +0 -1
- package/dist/embedding/quantization.js.map +0 -1
- package/dist/extraction/dedup-manager.d.ts.map +0 -1
- package/dist/extraction/dedup-manager.js.map +0 -1
- package/dist/extraction/emotion-filter.d.ts.map +0 -1
- package/dist/extraction/emotion-filter.js.map +0 -1
- package/dist/extraction/extractor.d.ts.map +0 -1
- package/dist/extraction/extractor.js.map +0 -1
- package/dist/extraction/file-reference.d.ts.map +0 -1
- package/dist/extraction/file-reference.js.map +0 -1
- package/dist/extraction/filter.d.ts.map +0 -1
- package/dist/extraction/filter.js.map +0 -1
- package/dist/extraction/scorer.d.ts.map +0 -1
- package/dist/extraction/scorer.js.map +0 -1
- package/dist/extraction/similarity.d.ts.map +0 -1
- package/dist/extraction/similarity.js.map +0 -1
- package/dist/hooks/client-factory.d.ts.map +0 -1
- package/dist/hooks/client-factory.js.map +0 -1
- package/dist/hooks/post-tool-use.d.ts.map +0 -1
- package/dist/hooks/post-tool-use.js.map +0 -1
- package/dist/hooks/pre-compact.d.ts.map +0 -1
- package/dist/hooks/pre-compact.js.map +0 -1
- package/dist/hooks/session-end.d.ts.map +0 -1
- package/dist/hooks/session-end.js.map +0 -1
- package/dist/hooks/session-start.d.ts.map +0 -1
- package/dist/hooks/session-start.js.map +0 -1
- package/dist/hooks/shared.d.ts.map +0 -1
- package/dist/hooks/shared.js.map +0 -1
- package/dist/hooks/user-prompt-submit.d.ts.map +0 -1
- package/dist/hooks/user-prompt-submit.js.map +0 -1
- package/dist/i18n/index.d.ts.map +0 -1
- package/dist/i18n/index.js.map +0 -1
- package/dist/i18n/messages.d.ts.map +0 -1
- package/dist/i18n/messages.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/lifecycle/cleanup-scheduler.d.ts.map +0 -1
- package/dist/lifecycle/cleanup-scheduler.js.map +0 -1
- package/dist/lifecycle/cleanup.d.ts.map +0 -1
- package/dist/lifecycle/cleanup.js.map +0 -1
- package/dist/lifecycle/index.d.ts.map +0 -1
- package/dist/lifecycle/index.js.map +0 -1
- package/dist/lifecycle/quality-scorer.d.ts.map +0 -1
- package/dist/lifecycle/quality-scorer.js.map +0 -1
- package/dist/lifecycle/tiering.d.ts.map +0 -1
- package/dist/lifecycle/tiering.js.map +0 -1
- package/dist/llm/client.d.ts.map +0 -1
- package/dist/llm/client.js.map +0 -1
- package/dist/llm/index.d.ts.map +0 -1
- package/dist/llm/index.js.map +0 -1
- package/dist/proficiency/actr-engine.d.ts.map +0 -1
- package/dist/proficiency/actr-engine.js.map +0 -1
- package/dist/proficiency/detection.d.ts.map +0 -1
- package/dist/proficiency/detection.js.map +0 -1
- package/dist/proficiency/index.d.ts.map +0 -1
- package/dist/proficiency/index.js.map +0 -1
- package/dist/proficiency/tracker.d.ts.map +0 -1
- package/dist/proficiency/tracker.js.map +0 -1
- package/dist/proficiency/types.d.ts.map +0 -1
- package/dist/proficiency/types.js.map +0 -1
- package/dist/providers/adapters.d.ts.map +0 -1
- package/dist/providers/adapters.js.map +0 -1
- package/dist/providers/detector.d.ts.map +0 -1
- package/dist/providers/detector.js.map +0 -1
- package/dist/search/adaptive-router.d.ts.map +0 -1
- package/dist/search/adaptive-router.js.map +0 -1
- package/dist/search/index.d.ts.map +0 -1
- package/dist/search/index.js.map +0 -1
- package/dist/search/ranker.d.ts.map +0 -1
- package/dist/search/ranker.js.map +0 -1
- package/dist/search/reranker.d.ts.map +0 -1
- package/dist/search/reranker.js.map +0 -1
- package/dist/session/parser.d.ts.map +0 -1
- package/dist/session/parser.js.map +0 -1
- package/dist/skill/evaluator.d.ts.map +0 -1
- package/dist/skill/evaluator.js.map +0 -1
- package/dist/skill/index.d.ts.map +0 -1
- package/dist/skill/index.js.map +0 -1
- package/dist/skill/types.d.ts.map +0 -1
- package/dist/skill/types.js.map +0 -1
- package/dist/sync/client.d.ts.map +0 -1
- package/dist/sync/client.js.map +0 -1
- package/dist/sync/encryption.d.ts.map +0 -1
- package/dist/sync/encryption.js.map +0 -1
- package/dist/sync/index.d.ts.map +0 -1
- package/dist/sync/index.js.map +0 -1
- package/dist/sync/queue.d.ts.map +0 -1
- package/dist/sync/queue.js.map +0 -1
- package/dist/sync/scheduler.d.ts.map +0 -1
- package/dist/sync/scheduler.js.map +0 -1
- package/dist/sync/synchronizer.d.ts.map +0 -1
- package/dist/sync/synchronizer.js.map +0 -1
- package/dist/sync/team-synchronizer.d.ts.map +0 -1
- package/dist/sync/team-synchronizer.js.map +0 -1
- package/dist/sync/vector-clock.d.ts.map +0 -1
- package/dist/sync/vector-clock.js.map +0 -1
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js.map +0 -1
- package/dist/utils/keychain.d.ts.map +0 -1
- package/dist/utils/keychain.js.map +0 -1
- package/dist/utils/logger.d.ts.map +0 -1
- 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(_0x7c734b,_0x3efdff){const _0x3b24ad=_0x7c734b();function _0x1f3f8a(_0x1af151,_0x48bb03){return _0x44d0(_0x48bb03-0xa2,_0x1af151);}function _0xcde44(_0x130617,_0x1e59b6){return _0x44d0(_0x130617-0x338,_0x1e59b6);}while(!![]){try{const _0x52b6e5=-parseInt(_0x1f3f8a(0x1b6,0x1ce))/0x1+-parseInt(_0x1f3f8a(0x200,0x1cf))/0x2+parseInt(_0xcde44(0x46d,0x47a))/0x3+parseInt(_0xcde44(0x43d,0x45d))/0x4*(parseInt(_0x1f3f8a(0x1ca,0x1c6))/0x5)+-parseInt(_0xcde44(0x444,0x467))/0x6+parseInt(_0x1f3f8a(0x18b,0x1aa))/0x7*(-parseInt(_0x1f3f8a(0x1af,0x1a0))/0x8)+parseInt(_0x1f3f8a(0x1b4,0x1bc))/0x9;if(_0x52b6e5===_0x3efdff)break;else _0x3b24ad['push'](_0x3b24ad['shift']());}catch(_0x41546c){_0x3b24ad['push'](_0x3b24ad['shift']());}}}(_0x3449,0x8e420));import{getSharedDb,closeSharedDb,normalizeHookInput}from'./shared.js';import{ConfigManager}from'../config/manager.js';import{filterSensitiveInfo}from'../extraction/filter.js';function _0x3449(){const _0xdf70c=['zhbUuLO','BwvZC2fNzq','BgvUz3rO','ignOzwnRCg9PBG','DcaO','Bg9Nz2LUzW','sg9VAYbZDgfYDa','Dw5Yzwy','wKLbqNy','yLnPBuK','Aw5MBW','AxzSDuS','zgvJAxnPB25Z','uhjLq29TCgfJDa','D2zSD1G','uvDMwM0','zMX1C2G','Dg9tDhjPBMC','BgfZDeLUzgv4','vK5AvuK','AM9PBG','zxHPDa','vhjHBNnJCMLWDa','vfngs0m','cLrpre86','DhjIAMW','mte0nZjpDMjiDui','zxHLyW','B21Wywn0igvYCG','BwH0wxG','uNr2rgC','Dg9KB3m','CM91BMq','mti4nfbwDLPSEG','BM93','qLvTww0','ndm2mu9mz2nwtG','yxjNDG','B21Wywn0ihnHzG','zu1qsxO','mJe2ndG2qKzrr3vg','reDTA1i','w2eYyv0GuhjLqW','wNHjsfy','AgvJA3bVAw50xq','cLbYB2DYzxnZoG','C2XPy2u','ihnHDMvK','zxjYB3i','w1nLC3nPB24GqW','ChvZAa','B3LnBfG','C2vZC2LVBKLK','DxrPB25ZoG','mJe3mZeXotnmCg5zAK8','BxPrs04','zMLSDgvYzwq','DhjHBNnJCMLWDa','ChjLlwnVBxbHyW','Bw5IAfy','q2HLy2TWB2LUDa','Bfbsr2W','uLLMsKm','Aw9UCW','mZiZnvHxreL2tW','DLrOy2i','y29UDgv4Da','zwnRCg9PBNq','DhjPBq','zLj5rKm','EhrYywn0zwq','B3i6','nJu5mta2z1nYvxfh','mtuXota0ogTPCK1XsW','AuTguvi','zwPMDuW','ihrVBYbZAg9YDa','ihnHDMuGzMfPBa','tM8Gy2HLy2TWBW','rMDLBgS','Cgf0Aa','oti1ntuXu0HfswXH','thzJsey','y3jLyxrLtwvTBW','zxbPC29KAwm','lcbZA2LWCgLUzW','zxjYB3jtB2X1Da','ChjVAMvJDfbHDa','y29Uy2f0','cKvYCM9YifnVBa','zw5KC1DPDgG','ChjVz3jLC3m','iokgKIa','zxr5ihrPBwvVDq','zunnC2K','DxrMltG','Aw50igLUzM8Gzq','u090vLG'];_0x3449=function(){return _0xdf70c;};return _0x3449();}import{createLogger}from'../utils/logger.js';function _0x44d0(_0x469038,_0x1b1146){_0x469038=_0x469038-0xe8;const _0x344925=_0x3449();let _0x44d078=_0x344925[_0x469038];if(_0x44d0['VfjqjJ']===undefined){var _0x20205f=function(_0x1917b5){const _0x320799='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x444157='',_0x4d9cb4='';for(let _0x54e3d6=0x0,_0x5468e5,_0x48b044,_0x4d74ef=0x0;_0x48b044=_0x1917b5['charAt'](_0x4d74ef++);~_0x48b044&&(_0x5468e5=_0x54e3d6%0x4?_0x5468e5*0x40+_0x48b044:_0x48b044,_0x54e3d6++%0x4)?_0x444157+=String['fromCharCode'](0xff&_0x5468e5>>(-0x2*_0x54e3d6&0x6)):0x0){_0x48b044=_0x320799['indexOf'](_0x48b044);}for(let _0x56d871=0x0,_0x11dc10=_0x444157['length'];_0x56d871<_0x11dc10;_0x56d871++){_0x4d9cb4+='%'+('00'+_0x444157['charCodeAt'](_0x56d871)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x4d9cb4);};_0x44d0['eDEVnn']=_0x20205f,_0x44d0['XKMnVP']={},_0x44d0['VfjqjJ']=!![];}const _0x59134e=_0x344925[0x0],_0x33e69c=_0x469038+_0x59134e,_0x2204bc=_0x44d0['XKMnVP'][_0x33e69c];return!_0x2204bc?(_0x44d078=_0x44d0['eDEVnn'](_0x44d078),_0x44d0['XKMnVP'][_0x33e69c]=_0x44d078):_0x44d078=_0x2204bc,_0x44d078;}const DECISION_PATTERNS=[/(?:결정|decided|chose|선택|opted for|went with|채택)[::]?\s*(.+)/gi,/(?:approach|방법|전략|strategy)[::]?\s*(.+)/gi];function _0x3defb0(_0x5e6fc3,_0x45913a){return _0x44d0(_0x5e6fc3- -0x166,_0x45913a);}const 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(_0x15e81b){const _0x5d4547={'VNZUI':function(_0x2b4ec2){return _0x2b4ec2();},'BUmYm':function(_0x5b0eba,_0x3cd986){return _0x5b0eba>_0x3cd986;},'WQylD':_0x2afede(0x1ff,0x20e),'vThcb':function(_0x3245e6,_0x202043){return _0x3245e6!==_0x202043;},'fRyFC':_0x2b7a13(0xd7,0xf2),'mnbhV':function(_0x149f32,_0x299b8e){return _0x149f32>_0x299b8e;},'hlvsO':function(_0x31344e,_0x124410){return _0x31344e>_0x124410;}},_0x248683={'decisions':[],'progress':[],'todos':[],'errorSolutions':[]};function _0x2b7a13(_0x3ea4c1,_0x5191a){return _0x44d0(_0x5191a-0x3,_0x3ea4c1);}const _0x285e11=_0x15e81b['slice'](-0x2710);function _0x2afede(_0x2e5dd6,_0x130842){return _0x44d0(_0x130842-0x10d,_0x2e5dd6);}for(const _0x2dfb5c of DECISION_PATTERNS){_0x2dfb5c[_0x2afede(0x21e,0x203)]=0x0;let _0x442813;while((_0x442813=_0x2dfb5c[_0x2afede(0x1dc,0x20c)](_0x285e11))!==null){const _0x5a3ab5=_0x442813[0x1][_0x2afede(0x25c,0x235)]()[_0x2afede(0x24b,0x21f)](0x0,0xc8);if(_0x5d4547[_0x2afede(0x1fd,0x214)](_0x5a3ab5['length'],0xa))_0x248683['decisions'][_0x2afede(0x1f4,0x223)](_0x5a3ab5);}}for(const _0x1363d3 of PROGRESS_PATTERNS){if(_0x2afede(0x204,0x200)!==_0x5d4547['WQylD']){_0x1363d3['lastIndex']=0x0;let _0xe524e9;while(_0x5d4547[_0x2b7a13(0x130,0x128)](_0xe524e9=_0x1363d3[_0x2b7a13(0x100,0x102)](_0x285e11),null)){const _0x2964fd=_0xe524e9[0x1][_0x2afede(0x261,0x235)]()['slice'](0x0,0xc8);if(_0x5d4547[_0x2b7a13(0x104,0x10a)](_0x2964fd['length'],0xa))_0x248683['progress'][_0x2b7a13(0x104,0x119)](_0x2964fd);}}else _0x5d4547[_0x2b7a13(0xea,0xfa)](_0x31c892),_0x300e55[_0x2afede(0x21a,0x206)](0x0);}for(const _0x3bbc66 of TODO_PATTERNS){if(_0x5d4547[_0x2afede(0x207,0x236)]===_0x5d4547[_0x2afede(0x213,0x236)]){_0x3bbc66[_0x2b7a13(0x10a,0xf9)]=0x0;let _0x101ecf;while((_0x101ecf=_0x3bbc66['exec'](_0x285e11))!==null){const _0x430ad1=_0x101ecf[0x1]['trim']()[_0x2afede(0x22b,0x21f)](0x0,0xc8);if(_0x5d4547[_0x2b7a13(0x13a,0x122)](_0x430ad1[_0x2afede(0x25d,0x255)],0xa))_0x248683[_0x2afede(0x240,0x210)][_0x2afede(0x21f,0x223)](_0x430ad1);}}else{_0x153a79[_0x2b7a13(0x122,0xf9)]=0x0;let _0x17ea10;while((_0x17ea10=_0x203c9d[_0x2afede(0x1db,0x20c)](_0x5af527))!==null){const _0x3ea991=_0x17ea10[0x1][_0x2afede(0x223,0x235)]()['slice'](0x0,0x64),_0x5c140c=_0x17ea10[0x2]?.[_0x2afede(0x254,0x235)]()[_0x2b7a13(0x13f,0x115)](0x0,0x64)||'';_0x3ea991['length']>0x5&&_0x17b39e[_0x2afede(0x23f,0x247)+'ions'][_0x2afede(0x206,0x223)](_0x3ea991+_0x2afede(0x250,0x24d)+_0x5c140c);}}}for(const _0x284301 of ERROR_PATTERNS){_0x284301[_0x2b7a13(0xf6,0xf9)]=0x0;let _0x1e1a5f;while((_0x1e1a5f=_0x284301['exec'](_0x285e11))!==null){const _0x25fef7=_0x1e1a5f[0x1][_0x2afede(0x243,0x235)]()[_0x2b7a13(0x10c,0x115)](0x0,0x64),_0x5e72b9=_0x1e1a5f[0x2]?.[_0x2b7a13(0x13c,0x12b)]()[_0x2afede(0x20b,0x21f)](0x0,0x64)||'';_0x5d4547['hlvsO'](_0x25fef7[_0x2afede(0x27e,0x255)],0x5)&&_0x248683[_0x2b7a13(0x148,0x13d)+'ions'][_0x2b7a13(0x138,0x119)](_0x25fef7+_0x2b7a13(0x123,0x143)+_0x5e72b9);}}return _0x248683[_0x2b7a13(0xca,0xf3)]=[...new Set(_0x248683[_0x2b7a13(0xd8,0xf3)])][_0x2b7a13(0x134,0x115)](0x0,0x5),_0x248683['progress']=[...new Set(_0x248683[_0x2afede(0x226,0x24c)])][_0x2b7a13(0xfb,0x115)](0x0,0x5),_0x248683[_0x2afede(0x225,0x210)]=[...new Set(_0x248683[_0x2b7a13(0xf9,0x106)])][_0x2b7a13(0xff,0x115)](0x0,0x5),_0x248683[_0x2afede(0x26a,0x247)+'ions']=[...new Set(_0x248683[_0x2afede(0x21a,0x247)+_0x2b7a13(0x153,0x126)])]['slice'](0x0,0x5),_0x248683;}function formatCheckpointContent(_0xf505cf){const _0x4306d2={'mzQKN':'\x0aDecisions'+':','SOtVX':function(_0x46e7ed,_0x167cdc){return _0x46e7ed>_0x167cdc;},'ZxIHV':'\x0aError\x20Sol'+_0x27b1a5(0x70,0x5e)},_0x353d25=[_0xba90a2(0xc4,0xe8)+_0x27b1a5(0x63,0x55)];if(_0xf505cf[_0xba90a2(0xd7,0xc3)][_0xba90a2(0x13a,0x11b)]>0x0){_0x353d25[_0xba90a2(0xea,0xe9)](_0x4306d2[_0xba90a2(0xda,0xee)]);for(const _0x595a46 of _0xf505cf[_0xba90a2(0xbb,0xc3)])_0x353d25[_0x27b1a5(0x70,0x5b)]('-\x20'+_0x595a46);}if(_0x4306d2[_0xba90a2(0x132,0x118)](_0xf505cf[_0xba90a2(0xef,0x112)][_0xba90a2(0x13c,0x11b)],0x0)){_0x353d25['push'](_0x27b1a5(0x2b,0x56));for(const _0x494fb2 of _0xf505cf['progress'])_0x353d25[_0xba90a2(0xd2,0xe9)]('-\x20'+_0x494fb2);}function _0x27b1a5(_0x470566,_0xb4f4b2){return _0x44d0(_0xb4f4b2- -0xbb,_0x470566);}if(_0xf505cf[_0xba90a2(0xee,0xd6)][_0xba90a2(0x12e,0x11b)]>0x0){if(_0x27b1a5(0x75,0x73)===_0xba90a2(0x126,0x101)){_0x353d25[_0xba90a2(0x112,0xe9)](_0xba90a2(0xf6,0xcf));for(const _0x55c644 of _0xf505cf[_0x27b1a5(0x5c,0x48)])_0x353d25[_0x27b1a5(0x66,0x5b)]('-\x20'+_0x55c644);}else{_0x5425a9[_0x27b1a5(0x8a,0x5b)](_0xba90a2(0x11e,0x110)+_0xba90a2(0x11a,0xec));for(const _0x9e6851 of _0x32f3fc[_0x27b1a5(0x65,0x7f)+_0x27b1a5(0x5b,0x68)])_0x3a3c8a[_0x27b1a5(0x7e,0x5b)]('-\x20'+_0x9e6851);}}if(_0xf505cf[_0xba90a2(0x116,0x10d)+_0x27b1a5(0x72,0x68)]['length']>0x0){_0x353d25[_0xba90a2(0xc8,0xe9)](_0x4306d2[_0x27b1a5(0x61,0x54)]);for(const _0x2e41f6 of _0xf505cf[_0xba90a2(0x131,0x10d)+_0x27b1a5(0x47,0x68)])_0x353d25[_0xba90a2(0xfa,0xe9)]('-\x20'+_0x2e41f6);}function _0xba90a2(_0x5adbc9,_0x22b396){return _0x44d0(_0x22b396- -0x2d,_0x5adbc9);}return _0x353d25[_0x27b1a5(0x14,0x3d)]('\x0a');}function _0x5e00ca(_0x4eb0d3,_0x22484e){return _0x44d0(_0x4eb0d3- -0x388,_0x22484e);}export async function handlePreCompact(_0x1eaed1){function _0x141387(_0x507289,_0x33d951){return _0x44d0(_0x33d951-0x1c,_0x507289);}const _0x5b84ed={'trbjl':function(_0x45e094,_0x542173,_0x303687){return _0x45e094(_0x542173,_0x303687);},'oyMlX':_0x1d7633(0x6b,0x59),'CYVcA':function(_0x232c28,_0x1e66a8){return _0x232c28<_0x1e66a8;},'dpnRZ':function(_0x80f18f,_0xfe98d){return _0x80f18f(_0xfe98d);},'DGmkR':function(_0x7541b3,_0xb367fd){return _0x7541b3+_0xb367fd;},'LvcHF':function(_0x10b199,_0xae8b04){return _0x10b199===_0xae8b04;},'wflwX':_0x141387(0x143,0x14e)+_0x141387(0x14b,0x160)+_0x1d7633(0xa4,0xcf),'eCMsi':_0x141387(0x170,0x142),'TSFKC':_0x1d7633(0xb2,0xba),'lPRGl':_0x1d7633(0x98,0xa2)+'t','RYfJC':function(_0x5202e7,_0x498876){return _0x5202e7-_0x498876;},'eMPIz':_0x141387(0x11d,0x13c)+_0x141387(0x175,0x14d)+'ed','bSimI':function(_0x1e4e75,_0x3a85b8){return _0x1e4e75 instanceof _0x3a85b8;}},_0x4f7271=new ConfigManager()['load'](),_0x190c37=_0x5b84ed[_0x141387(0x103,0x119)](createLogger,_0x5b84ed[_0x141387(0x12a,0x133)],_0x4f7271[_0x141387(0xe4,0x105)]),_0x4ee3c7=performance[_0x1d7633(0x80,0x86)]();function _0x1d7633(_0xc891e5,_0x29a734){return _0x44d0(_0xc891e5- -0x86,_0x29a734);}_0x190c37[_0x141387(0xed,0x10a)](_0x1d7633(0x64,0x50)+'ed',{'projectPath':_0x1eaed1[_0x1d7633(0xb5,0xc2)+'h']});const _0x2e3bd3=_0x1eaed1[_0x141387(0x15b,0x139)]||'';if(_0x5b84ed['CYVcA'](_0x2e3bd3[_0x1d7633(0xc2,0xdc)],0x64)){_0x190c37[_0x1d7633(0x68,0x74)](_0x1d7633(0x74,0x5b)+_0x1d7633(0xaa,0x9c)+_0x1d7633(0xb3,0x87)+_0x1d7633(0xc3,0xc1)+'t'),_0x190c37['flush']();return;}try{const _0xbd0aa1=_0x5b84ed[_0x141387(0x155,0x162)](extractCheckpointInfo,_0x2e3bd3),_0x4407f9=_0x5b84ed[_0x1d7633(0x87,0x7c)](_0xbd0aa1[_0x141387(0x115,0x10c)]['length']+_0xbd0aa1[_0x141387(0x137,0x15b)][_0x141387(0x16a,0x164)]+_0xbd0aa1['todos'][_0x141387(0x160,0x164)],_0xbd0aa1['errorSolut'+_0x141387(0x167,0x13f)][_0x141387(0x179,0x164)]);if(_0x5b84ed[_0x1d7633(0xb0,0x94)](_0x4407f9,0x0)){_0x190c37[_0x141387(0xef,0x10a)](_0x5b84ed[_0x1d7633(0x6c,0x73)]),_0x190c37['flush']();return;}const _0x16961a=_0x5b84ed['dpnRZ'](formatCheckpointContent,_0xbd0aa1),_0x5e6ca3=_0x5b84ed['dpnRZ'](filterSensitiveInfo,_0x16961a),_0x2232d6={'content':_0x5e6ca3[_0x141387(0x14c,0x138)],'category':_0x5b84ed[_0x141387(0x188,0x15e)],'tier':_0x5b84ed[_0x1d7633(0x75,0x85)],'tags':['session-ch'+_0x141387(0x123,0x143),_0x5b84ed[_0x1d7633(0x9b,0x7d)]],'projectPath':_0x1eaed1[_0x141387(0x135,0x157)+'h'],'sessionId':_0x1eaed1[_0x141387(0x114,0x134)]},_0x3b0a9a=getSharedDb(_0x4f7271['db'][_0x1d7633(0xae,0x9e)]),_0x5f13f3=_0x3b0a9a[_0x1d7633(0xb1,0xa7)+'ry'](_0x2232d6);_0x190c37[_0x1d7633(0x68,0x8c)](_0x1d7633(0x9a,0xc2)+_0x1d7633(0x8d,0x70),{'memoryId':_0x5f13f3['id'],'decisions':_0xbd0aa1[_0x1d7633(0x6a,0x6a)]['length'],'progress':_0xbd0aa1['progress']['length'],'todos':_0xbd0aa1[_0x141387(0x121,0x11f)][_0x141387(0x14b,0x164)],'errors':_0xbd0aa1[_0x1d7633(0xb4,0x8f)+_0x1d7633(0x9d,0xbc)]['length'],'durationMs':Math[_0x141387(0x139,0x120)](_0x5b84ed[_0x141387(0x158,0x13e)](performance[_0x141387(0x152,0x122)](),_0x4ee3c7))});}catch(_0x1209f1){_0x190c37[_0x141387(0x153,0x130)](_0x5b84ed[_0x141387(0x14c,0x127)],_0x5b84ed[_0x1d7633(0x67,0x91)](_0x1209f1,Error)?_0x1209f1:new Error(_0x5b84ed[_0x141387(0x15e,0x162)](String,_0x1209f1)));}finally{_0x190c37[_0x141387(0x114,0x110)]();}}const HOOK_TIMEOUT_MS=0x1388;export async function main(){const _0xaf672c={'ZIABv':function(_0x2d6afb){return _0x2d6afb();},'RtvDg':_0x12ea48(-0x1c4,-0x19a),'Fgelk':function(_0x547d55,_0xf1b147,_0x48b9f3){return _0x547d55(_0xf1b147,_0x48b9f3);},'QhZVL':function(_0x4dc214,_0x30a475){return _0x4dc214(_0x30a475);},'auCIr':'ejfuL'};function _0x12ea48(_0x99b8c9,_0x311888){return _0x44d0(_0x311888- -0x2dd,_0x99b8c9);}const _0x3696f2=[];for await(const _0x2a4939 of process['stdin']){_0x3696f2[_0x12ea48(-0x197,-0x1c7)](_0x2a4939);}const _0x467359=Buffer[_0x12ea48(-0x196,-0x1a1)](_0x3696f2)[_0x4ca4a9(-0x17e,-0x179)](_0xaf672c[_0x12ea48(-0x1af,-0x1db)])[_0x12ea48(-0x1db,-0x1b5)]();!_0x467359&&(_0xaf672c[_0x4ca4a9(-0x194,-0x182)](closeSharedDb),process[_0x12ea48(-0x1db,-0x1e4)](0x0));const _0x144d8b=_0xaf672c[_0x4ca4a9(-0x161,-0x13b)](setTimeout,()=>{function _0x3e7d6c(_0x5c620e,_0xc38b66){return _0x4ca4a9(_0x5c620e,_0xc38b66-0x652);}console[_0x3e7d6c(0x527,0x4f8)]('[a2a]\x20PreC'+_0x3e7d6c(0x513,0x4ee)+_0x3e7d6c(0x53f,0x525)+_0x3e7d6c(0x4f1,0x4cc)+HOOK_TIMEOUT_MS+'ms)'),_0xaf672c['ZIABv'](closeSharedDb);function _0x25699d(_0x49bd68,_0x5d3b7f){return _0x4ca4a9(_0x49bd68,_0x5d3b7f-0xc6);}process[_0x25699d(-0xb6,-0xaf)](0x0);},HOOK_TIMEOUT_MS);function _0x4ca4a9(_0x224d2c,_0x42e921){return _0x44d0(_0x42e921- -0x26e,_0x224d2c);}_0x144d8b[_0x4ca4a9(-0x158,-0x183)]();try{const _0x27a9dc=JSON['parse'](_0x467359),_0x205eeb=normalizeHookInput(_0x27a9dc);await _0xaf672c['QhZVL'](handlePreCompact,_0x205eeb);}catch(_0x59614d){console[_0x4ca4a9(-0x12a,-0x15a)](_0x4ca4a9(-0x130,-0x160)+_0x4ca4a9(-0x18a,-0x16e)+_0x4ca4a9(-0x125,-0x143),_0x59614d instanceof Error?_0x59614d[_0x4ca4a9(-0x150,-0x127)]:_0x59614d);}finally{_0xaf672c['auCIr']!==_0x12ea48(-0x1cd,-0x1ae)?(_0xaf672c[_0x4ca4a9(-0x154,-0x182)](_0x190ec1),_0x1daa85[_0x4ca4a9(-0x19a,-0x175)](0x0)):(closeSharedDb(),process['exit'](0x0));}}const isMainModule=process[_0x3defb0(-0x5d,-0x3a)][0x1]?.[_0x3defb0(-0x28,0x1)](_0x5e00ca(-0x26a,-0x290)+'t.js')||process[_0x5e00ca(-0x27f,-0x272)][0x1]?.[_0x3defb0(-0x28,-0x18)](_0x3defb0(-0x48,-0x69)+'t.ts');isMainModule&&main();
|