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.
- 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.d.ts +8 -2
- package/dist/claude/sync.js +1 -298
- package/dist/cli/commands/add.js +1 -80
- package/dist/cli/commands/claude-sync.d.ts +3 -3
- 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.d.ts +36 -0
- 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.d.ts +0 -3
- 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/stop.d.ts +21 -0
- package/dist/hooks/stop.js +1 -0
- 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.d.ts +1 -1
- package/dist/index.js +1 -43
- package/dist/lifecycle/cleanup-scheduler.js +1 -137
- package/dist/lifecycle/cleanup.d.ts +1 -0
- package/dist/lifecycle/cleanup.js +1 -116
- package/dist/lifecycle/consolidation.d.ts +22 -0
- package/dist/lifecycle/consolidation.js +1 -0
- package/dist/lifecycle/index.d.ts +2 -0
- package/dist/lifecycle/index.js +1 -13
- package/dist/lifecycle/injection-flush.d.ts +24 -0
- package/dist/lifecycle/injection-flush.js +1 -0
- package/dist/lifecycle/quality-scorer.d.ts +5 -6
- 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.d.ts +7 -0
- 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 +13 -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 +15 -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(_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();
|