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,83 +1 @@
|
|
|
1
|
-
|
|
2
|
-
* Cleanup Command
|
|
3
|
-
*
|
|
4
|
-
* TTL 및 품질 기반 메모리 정리를 수행합니다.
|
|
5
|
-
*/
|
|
6
|
-
import { Command } from 'commander';
|
|
7
|
-
import chalk from 'chalk';
|
|
8
|
-
import ora from 'ora';
|
|
9
|
-
import { ConfigManager } from '../../config/manager.js';
|
|
10
|
-
import { MemoryDatabase } from '../../db/database.js';
|
|
11
|
-
import { cleanupMemories } from '../../lifecycle/cleanup.js';
|
|
12
|
-
import { scoreQuality } from '../../lifecycle/quality-scorer.js';
|
|
13
|
-
export function cleanupCommand() {
|
|
14
|
-
return new Command('cleanup')
|
|
15
|
-
.description('Cleanup old and low-quality memories')
|
|
16
|
-
.option('--dry-run', 'Show what would be deleted without actually deleting')
|
|
17
|
-
.option('--force', 'Skip confirmation prompt')
|
|
18
|
-
.action((options) => {
|
|
19
|
-
const configManager = new ConfigManager();
|
|
20
|
-
const config = configManager.load();
|
|
21
|
-
const db = new MemoryDatabase(config.db.path);
|
|
22
|
-
try {
|
|
23
|
-
db.initialize();
|
|
24
|
-
const lifecycleConfig = config.lifecycle ?? {
|
|
25
|
-
ttlDays: 90,
|
|
26
|
-
maxMemories: 1000,
|
|
27
|
-
cleanupOnSessionEnd: false,
|
|
28
|
-
qualityThreshold: 0.3,
|
|
29
|
-
};
|
|
30
|
-
// Dry-run 모드: 삭제 대상만 출력
|
|
31
|
-
if (options.dryRun) {
|
|
32
|
-
console.log(chalk.cyan('🔍 Dry-run mode: analyzing memories...\n'));
|
|
33
|
-
const toDeleteExpired = [];
|
|
34
|
-
const toDeleteLowQuality = [];
|
|
35
|
-
// TTL 초과 메모리
|
|
36
|
-
if (lifecycleConfig.ttlDays > 0) {
|
|
37
|
-
const oldMemories = db.getMemoriesOlderThan(lifecycleConfig.ttlDays);
|
|
38
|
-
toDeleteExpired.push(...oldMemories.map((m) => m.id));
|
|
39
|
-
}
|
|
40
|
-
// 품질 미달 메모리
|
|
41
|
-
const currentCount = db.getMemoryCount();
|
|
42
|
-
if (currentCount > lifecycleConfig.maxMemories) {
|
|
43
|
-
const allMemories = db.listMemories({ limit: currentCount });
|
|
44
|
-
const scoredMemories = allMemories.map((memory) => ({
|
|
45
|
-
memory,
|
|
46
|
-
quality: scoreQuality(memory, lifecycleConfig),
|
|
47
|
-
}));
|
|
48
|
-
const lowQualityMemories = scoredMemories
|
|
49
|
-
.filter((item) => item.quality.overall < lifecycleConfig.qualityThreshold)
|
|
50
|
-
.map((item) => item.memory.id);
|
|
51
|
-
toDeleteLowQuality.push(...lowQualityMemories);
|
|
52
|
-
}
|
|
53
|
-
console.log(chalk.yellow(`TTL expired (>${lifecycleConfig.ttlDays} days): ${toDeleteExpired.length}`));
|
|
54
|
-
console.log(chalk.yellow(`Low quality (<${lifecycleConfig.qualityThreshold}): ${toDeleteLowQuality.length}`));
|
|
55
|
-
console.log(chalk.yellow(`Total to delete: ${toDeleteExpired.length + toDeleteLowQuality.length}`));
|
|
56
|
-
if (toDeleteExpired.length + toDeleteLowQuality.length === 0) {
|
|
57
|
-
console.log(chalk.green('\n✓ No memories to clean up'));
|
|
58
|
-
}
|
|
59
|
-
return;
|
|
60
|
-
}
|
|
61
|
-
// 실제 정리 수행
|
|
62
|
-
if (!options.force) {
|
|
63
|
-
console.log(chalk.yellow('⚠️ This will delete old and low-quality memories.'));
|
|
64
|
-
console.log(chalk.yellow('Use --dry-run to preview or --force to skip this message.\n'));
|
|
65
|
-
}
|
|
66
|
-
const spinner = ora('Cleaning up memories...').start();
|
|
67
|
-
const result = cleanupMemories(db, lifecycleConfig);
|
|
68
|
-
spinner.succeed(chalk.green('✓ Cleanup complete'));
|
|
69
|
-
console.log(chalk.dim(` Expired (TTL): ${result.expired}`));
|
|
70
|
-
console.log(chalk.dim(` Low quality: ${result.lowQuality}`));
|
|
71
|
-
console.log(chalk.dim(` Total deleted: ${result.total}`));
|
|
72
|
-
}
|
|
73
|
-
catch (error) {
|
|
74
|
-
console.error(chalk.red('Error during cleanup:'), error);
|
|
75
|
-
// TODO: process.exit() → throw + 상위 핸들러로 리팩토링 (P3-3)
|
|
76
|
-
process.exit(1);
|
|
77
|
-
}
|
|
78
|
-
finally {
|
|
79
|
-
db.close();
|
|
80
|
-
}
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
//# sourceMappingURL=cleanup.js.map
|
|
1
|
+
(function(_0x57ac28,_0x1b2e5c){const _0x4c02e8=_0x57ac28();function _0x5515a5(_0x447d89,_0x31b4e6){return _0xf45d(_0x447d89- -0x14a,_0x31b4e6);}function _0x28e3c0(_0x16b937,_0x4200a1){return _0xf45d(_0x4200a1- -0x22f,_0x16b937);}while(!![]){try{const _0x436057=-parseInt(_0x28e3c0(-0x46,-0x31))/0x1+parseInt(_0x5515a5(0x93,0x99))/0x2+parseInt(_0x5515a5(0x81,0x90))/0x3*(-parseInt(_0x28e3c0(-0x6e,-0x48))/0x4)+parseInt(_0x28e3c0(-0xa3,-0x89))/0x5*(parseInt(_0x5515a5(0x73,0x88))/0x6)+parseInt(_0x5515a5(0x7c,0x6b))/0x7+-parseInt(_0x5515a5(0xb3,0xba))/0x8*(parseInt(_0x5515a5(0x8c,0xa2))/0x9)+parseInt(_0x5515a5(0x84,0x70))/0xa*(parseInt(_0x5515a5(0x8d,0x8a))/0xb);if(_0x436057===_0x1b2e5c)break;else _0x4c02e8['push'](_0x4c02e8['shift']());}catch(_0x4561f1){_0x4c02e8['push'](_0x4c02e8['shift']());}}}(_0x1309,0x6b78b));import{Command}from'commander';import _0x169401 from'chalk';import _0x5c0ddc from'ora';import{ConfigManager}from'../../config/manager.js';function _0xf45d(_0x236325,_0x20c79a){_0x236325=_0x236325-0x1a5;const _0x130907=_0x1309();let _0xf45d48=_0x130907[_0x236325];if(_0xf45d['uZlYOm']===undefined){var _0x563a0b=function(_0x5b4c92){const _0xf4eea5='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x972781='',_0x527970='';for(let _0x52fd45=0x0,_0x284d9c,_0x20254c,_0x29fc73=0x0;_0x20254c=_0x5b4c92['charAt'](_0x29fc73++);~_0x20254c&&(_0x284d9c=_0x52fd45%0x4?_0x284d9c*0x40+_0x20254c:_0x20254c,_0x52fd45++%0x4)?_0x972781+=String['fromCharCode'](0xff&_0x284d9c>>(-0x2*_0x52fd45&0x6)):0x0){_0x20254c=_0xf4eea5['indexOf'](_0x20254c);}for(let _0x111294=0x0,_0x18488a=_0x972781['length'];_0x111294<_0x18488a;_0x111294++){_0x527970+='%'+('00'+_0x972781['charCodeAt'](_0x111294)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x527970);};_0xf45d['qADoxE']=_0x563a0b,_0xf45d['VSQfGZ']={},_0xf45d['uZlYOm']=!![];}const _0x394ac6=_0x130907[0x0],_0x3f7ccf=_0x236325+_0x394ac6,_0x42a6be=_0xf45d['VSQfGZ'][_0x3f7ccf];return!_0x42a6be?(_0xf45d48=_0xf45d['qADoxE'](_0xf45d48),_0xf45d['VSQfGZ'][_0x3f7ccf]=_0xf45d48):_0xf45d48=_0x42a6be,_0xf45d48;}function _0x1309(){const _0x15a9a8=['DY1XDwfSAxr5ia','zwXLDgu6ia','B1bgALe','BwvTB3jPzxmU','Ce1uuKC','Dxn2v3C','Bg9Hza','4PYtienSzwfUDxaG','y3LHBG','zgLT','CMLLCYb0BYbJBa','CMvK','DhrSrgf5CW','D291BgqGyMuGza','EsaOpa','nMvAwgHbAq','BwfW','ChvZAa','qxP4y2y','u2HVDYb3Agf0ia','8j+uJsbeCNKTCNvUia','zM9Yy2u','vxnLic0Tzhj5lq','vfrmigv4CgLYzq','mtyYotC3nvvWvMTJAW','B3zLCMfSBa','CMLLCY4UlGO','BgvUz3rO','zgvZy3jPChrPBW','mtvdDxbbt2K','EwvSBg93','A2LWihrOAxmGBq','otK3mZaWqxjxzMzx','y2XVC2u','4PQG77IpicbuAgLZihDP','zxHWAxjLza','B2XKigfUzcbSBW','qKPLweC','y2XLyw51Ca','cUkCKYboBYbTzw1V','nJeYrKTLq05Z','ntvOAKnwv3K','EKHur20','zuziyLK','Bgv0zwq6ia','thz3wg0','zcbHBMqGBg93lq','otm3ndG4vfzyD3P6','CcbTzw1VCMLLCW','zxHPDa','zM9Yy2uGDg8GCW','CKXQsve','DMLLDYbVCIaTlq','C3rHCNq','CxvHBgL0EvrOCG','Ag91DcbHy3r1yq','C09SzgvYvgHHBG','mZCZotq4zxbfq3Lo','ls1KCNKTCNvU','BgLZDe1LBw9YAq','Bwf4twvTB3jPzq','Bg9N','Axr5oIa','z2v0twvTB3jPzq','q2XLyw51CcbVBa','B21WDa','C3vJy2vLza','zcaOpG','igrHExmPoIa','BgX5igrLBgv0Aq','lI4U','vg90ywWGDg8Gza','Eff3AfO','kfrutcK6ia','swrAD2e','BgWGzgvSzxrLia','C0XJzxm','zwXLDgvKihDPDa','txjICxm','odKXnJHpwhzcy2K','otaYnZLQDhPWA2q','CNvUihrVihbYzq','B3b0Aw9U','Cgf0Aa','mJC3odeZmfPMEKrjCG','zxnOB2XK','Bw9KztOGyw5HBa','rxjYB3iGzhvYAq','z2v0twvTB3j5qW','zhj5uNvU','zxnZywDLlGO','ExPPBMCGBwvTBW'];_0x1309=function(){return _0x15a9a8;};return _0x1309();}import{MemoryDatabase}from'../../db/database.js';import{cleanupMemories}from'../../lifecycle/cleanup.js';import{scoreQuality}from'../../lifecycle/quality-scorer.js';export function cleanupCommand(){function _0x3ab0f4(_0x4dc547,_0x488674){return _0xf45d(_0x4dc547- -0x7,_0x488674);}const _0x4a8449={'rLjIQ':_0x3ab0f4(0x1bb,0x1c0)+_0x58d6a9(-0x18f,-0x193)+_0x58d6a9(-0x17d,-0x18e)+_0x3ab0f4(0x1c1,0x1bc),'LvwXm':function(_0x3dfc5c,_0x3b7b35){return _0x3dfc5c>_0x3b7b35;},'BJeXG':function(_0xbc2be6,_0x465127){return _0xbc2be6+_0x465127;},'zHTGm':function(_0x4a914a,_0x529a4e){return _0x4a914a===_0x529a4e;},'pMTRG':function(_0x49c4f1,_0x2a8d31){return _0x49c4f1!==_0x2a8d31;},'eFHbY':_0x3ab0f4(0x1ac,0x193),'AddGU':_0x58d6a9(-0x141,-0x143),'Mrbqs':function(_0x3ff436,_0x44ceb7){return _0x3ff436(_0x44ceb7);},'gXHmV':function(_0x584f6e,_0xbb8d17,_0x1047d0){return _0x584f6e(_0xbb8d17,_0x1047d0);},'xQwhZ':_0x58d6a9(-0x1a3,-0x192)+'ng\x20cleanup'+':','oPFjQ':_0x58d6a9(-0x157,-0x167),'Azxcf':_0x58d6a9(-0x154,-0x14d)+_0x58d6a9(-0x16b,-0x15f)+'quality\x20me'+'mories','sLces':'--force'};function _0x58d6a9(_0x5bdf90,_0x4141db){return _0xf45d(_0x4141db- -0x33b,_0x5bdf90);}return new Command(_0x4a8449[_0x3ab0f4(0x1a9,0x1b8)])[_0x3ab0f4(0x1c3,0x1a0)+'n'](_0x4a8449[_0x58d6a9(-0x160,-0x17b)])[_0x3ab0f4(0x1f9,0x20c)](_0x3ab0f4(0x1e1,0x20e),_0x3ab0f4(0x1ba,0x19a)+_0x3ab0f4(0x1b4,0x1a0)+_0x58d6a9(-0x128,-0x140)+_0x3ab0f4(0x1de,0x1da)+_0x58d6a9(-0x14f,-0x148)+'ng')[_0x58d6a9(-0x147,-0x13b)](_0x4a8449[_0x3ab0f4(0x1f3,0x1eb)],'Skip\x20confi'+'rmation\x20pr'+_0x3ab0f4(0x1e8,0x1da))['action'](_0x254176=>{function _0x30fc40(_0x1a6edf,_0x5ba808){return _0x58d6a9(_0x5ba808,_0x1a6edf- -0x2);}const _0x195190=new ConfigManager();function _0x4ecccf(_0x115f2b,_0x3d3818){return _0x58d6a9(_0x3d3818,_0x115f2b-0x63f);}const _0x7a7b6c=_0x195190[_0x4ecccf(0x4b8,0x4af)](),_0x33528a=new MemoryDatabase(_0x7a7b6c['db'][_0x4ecccf(0x4a9,0x4a5)]);try{_0x33528a['initialize']();const _0x40e7fc=_0x7a7b6c['lifecycle']??{'ttlDays':0x5a,'maxMemories':0x3e8,'cleanupOnSessionEnd':![],'qualityThreshold':0.3};if(_0x254176[_0x30fc40(-0x192,-0x16c)]){console['log'](_0x169401[_0x30fc40(-0x187,-0x176)](_0x4a8449[_0x4ecccf(0x4e5,0x505)]));const _0x4dd14c=[],_0x5745ca=[];if(_0x40e7fc[_0x30fc40(-0x183,-0x181)]>0x0){const _0xbc7b8e=_0x33528a[_0x4ecccf(0x4f1,0x4c4)+_0x4ecccf(0x4ea,0x4d8)](_0x40e7fc[_0x4ecccf(0x4be,0x4d6)]);_0x4dd14c['push'](..._0xbc7b8e['map'](_0x5ff929=>_0x5ff929['id']));}const _0x3c88ef=_0x33528a[_0x30fc40(-0x193,-0x190)+'ount']();if(_0x4a8449[_0x4ecccf(0x4df,0x4ba)](_0x3c88ef,_0x40e7fc[_0x30fc40(-0x153,-0x17a)+'s'])){const _0x22f73c=_0x33528a[_0x4ecccf(0x4ed,0x50c)+'es']({'limit':_0x3c88ef}),_0x470335=_0x22f73c[_0x30fc40(-0x17f,-0x19f)](_0x5e1494=>({'memory':_0x5e1494,'quality':scoreQuality(_0x5e1494,_0x40e7fc)})),_0x4a77d8=_0x470335['filter'](_0x1805ac=>_0x1805ac['quality'][_0x30fc40(-0x176,-0x1a3)]<_0x40e7fc[_0x4ecccf(0x4e8,0x50f)+'eshold'])[_0x30fc40(-0x17f,-0x19e)](_0x34dcaa=>_0x34dcaa['memory']['id']);_0x5745ca[_0x4ecccf(0x4c3,0x4cd)](..._0x4a77d8);}console[_0x4ecccf(0x4ef,0x4e3)](_0x169401[_0x4ecccf(0x4d0,0x4e2)](_0x30fc40(-0x178,-0x199)+_0x30fc40(-0x14c,-0x15e)+_0x40e7fc['ttlDays']+_0x4ecccf(0x4f6,0x505)+_0x4dd14c[_0x4ecccf(0x4cd,0x4a9)])),console[_0x4ecccf(0x4ef,0x4e5)](_0x169401['yellow']('Low\x20qualit'+_0x30fc40(-0x181,-0x1a0)+_0x40e7fc[_0x30fc40(-0x159,-0x164)+_0x30fc40(-0x196,-0x176)]+'):\x20'+_0x5745ca[_0x30fc40(-0x174,-0x1a2)])),console['log'](_0x169401[_0x30fc40(-0x171,-0x15e)](_0x30fc40(-0x148,-0x15b)+_0x30fc40(-0x18e,-0x196)+_0x4a8449[_0x30fc40(-0x16a,-0x161)](_0x4dd14c[_0x30fc40(-0x174,-0x14e)],_0x5745ca[_0x30fc40(-0x174,-0x167)])));_0x4a8449[_0x4ecccf(0x4dc,0x4cf)](_0x4dd14c[_0x4ecccf(0x4cd,0x4c2)]+_0x5745ca['length'],0x0)&&console[_0x30fc40(-0x152,-0x16d)](_0x169401['green'](_0x4ecccf(0x4d9,0x4f0)+_0x30fc40(-0x185,-0x185)+'ean\x20up'));return;}!_0x254176[_0x30fc40(-0x17a,-0x171)]&&(_0x4a8449[_0x30fc40(-0x18b,-0x198)](_0x4a8449[_0x30fc40(-0x164,-0x161)],_0x4a8449['AddGU'])?(console[_0x4ecccf(0x4ef,0x4f6)](_0x169401[_0x30fc40(-0x171,-0x199)](_0x4ecccf(0x4d4,0x4f1)+_0x30fc40(-0x144,-0x147)+'old\x20and\x20lo'+_0x4ecccf(0x4b2,0x49c)+_0x30fc40(-0x18c,-0x1a7))),console[_0x30fc40(-0x152,-0x177)](_0x169401[_0x4ecccf(0x4d0,0x4ce)](_0x4ecccf(0x4c8,0x4d8)+_0x4ecccf(0x503,0x52c)+_0x4ecccf(0x4e6,0x508)+_0x4ecccf(0x4e4,0x4ea)+_0x4ecccf(0x4d1,0x4cf)+_0x30fc40(-0x191,-0x18c)))):(_0x24e81d['log'](_0x3167d1[_0x4ecccf(0x4d0,0x4d2)](_0x30fc40(-0x16d,-0x158)+_0x4ecccf(0x4fd,0x525)+_0x4ecccf(0x4d6,0x4c1)+_0x4ecccf(0x4b2,0x4d0)+_0x4ecccf(0x4b5,0x4a1))),_0x156599['log'](_0x47891d[_0x4ecccf(0x4d0,0x4f7)](_0x4ecccf(0x4c8,0x4cc)+_0x30fc40(-0x13e,-0x156)+'view\x20or\x20--'+_0x4ecccf(0x4e4,0x4e9)+'kip\x20this\x20m'+'essage.\x0a'))));const _0x321048=_0x4a8449[_0x30fc40(-0x141,-0x11a)](_0x5c0ddc,'Cleaning\x20u'+_0x4ecccf(0x4e2,0x4e1)+_0x30fc40(-0x149,-0x12e))[_0x4ecccf(0x4e7,0x4dd)](),_0x23ab9e=_0x4a8449['gXHmV'](cleanupMemories,_0x33528a,_0x40e7fc);_0x321048[_0x30fc40(-0x14d,-0x130)](_0x169401['green'](_0x30fc40(-0x188,-0x1ad)+'complete')),console[_0x30fc40(-0x152,-0x171)](_0x169401[_0x4ecccf(0x4bb,0x49b)]('\x20\x20Expired\x20'+_0x30fc40(-0x146,-0x136)+_0x23ab9e[_0x30fc40(-0x16c,-0x197)])),console[_0x30fc40(-0x152,-0x147)](_0x169401['dim']('\x20\x20Low\x20qual'+_0x30fc40(-0x151,-0x176)+_0x23ab9e['lowQuality'])),console['log'](_0x169401[_0x30fc40(-0x186,-0x165)]('\x20\x20Total\x20de'+_0x4ecccf(0x4de,0x4d5)+_0x23ab9e['total']));}catch(_0x563019){console['error'](_0x169401[_0x30fc40(-0x184,-0x186)](_0x4a8449[_0x30fc40(-0x147,-0x144)]),_0x563019),process[_0x4ecccf(0x4e3,0x4e1)](0x1);}finally{_0x33528a[_0x30fc40(-0x16e,-0x147)]();}});}
|
|
@@ -1,79 +1 @@
|
|
|
1
|
-
|
|
2
|
-
* Config Command
|
|
3
|
-
*/
|
|
4
|
-
import { Command } from 'commander';
|
|
5
|
-
import { z } from 'zod';
|
|
6
|
-
import { ConfigManager, ConfigSchema } from '../../config/manager.js';
|
|
7
|
-
export function configCommand() {
|
|
8
|
-
const cmd = new Command('config')
|
|
9
|
-
.description('Manage configuration');
|
|
10
|
-
cmd
|
|
11
|
-
.command('show')
|
|
12
|
-
.description('Show current configuration')
|
|
13
|
-
.action(() => {
|
|
14
|
-
const config = new ConfigManager().load();
|
|
15
|
-
console.log(JSON.stringify(config, null, 2));
|
|
16
|
-
});
|
|
17
|
-
cmd
|
|
18
|
-
.command('set <key> <value>')
|
|
19
|
-
.description('Set a configuration value (e.g., autoCapture.enabled true)')
|
|
20
|
-
.action((key, value) => {
|
|
21
|
-
const manager = new ConfigManager();
|
|
22
|
-
const config = manager.load();
|
|
23
|
-
const parts = key.split('.');
|
|
24
|
-
let target = config;
|
|
25
|
-
for (let i = 0; i < parts.length - 1; i++) {
|
|
26
|
-
if (typeof target[parts[i]] !== 'object' || target[parts[i]] === null) {
|
|
27
|
-
console.error(`Invalid config path: ${key}`);
|
|
28
|
-
// TODO: process.exit() → throw + 상위 핸들러로 리팩토링 (P3-3)
|
|
29
|
-
process.exit(1);
|
|
30
|
-
}
|
|
31
|
-
target = target[parts[i]];
|
|
32
|
-
}
|
|
33
|
-
const lastKey = parts[parts.length - 1];
|
|
34
|
-
const currentValue = target[lastKey];
|
|
35
|
-
// 존재하지 않는 키 차단
|
|
36
|
-
if (currentValue === undefined) {
|
|
37
|
-
console.error(`Unknown config key: ${key}`);
|
|
38
|
-
console.error('Use "a2a-memory config show" to see available keys.');
|
|
39
|
-
process.exit(1);
|
|
40
|
-
}
|
|
41
|
-
// 타입 변환
|
|
42
|
-
if (typeof currentValue === 'boolean') {
|
|
43
|
-
target[lastKey] = value === 'true';
|
|
44
|
-
}
|
|
45
|
-
else if (typeof currentValue === 'number') {
|
|
46
|
-
target[lastKey] = Number(value);
|
|
47
|
-
}
|
|
48
|
-
else {
|
|
49
|
-
target[lastKey] = value;
|
|
50
|
-
}
|
|
51
|
-
// 전체 config 검증 (enum 값 등)
|
|
52
|
-
try {
|
|
53
|
-
ConfigSchema.parse(config);
|
|
54
|
-
}
|
|
55
|
-
catch (err) {
|
|
56
|
-
if (err instanceof z.ZodError) {
|
|
57
|
-
console.error(`Invalid value for "${key}":`);
|
|
58
|
-
for (const issue of err.issues) {
|
|
59
|
-
console.error(` ${issue.path.join('.')}: ${issue.message}`);
|
|
60
|
-
}
|
|
61
|
-
// TODO: process.exit() → throw + 상위 핸들러로 리팩토링 (P3-3)
|
|
62
|
-
process.exit(1);
|
|
63
|
-
}
|
|
64
|
-
throw err;
|
|
65
|
-
}
|
|
66
|
-
manager.save(config);
|
|
67
|
-
console.log(`Set ${key} = ${target[lastKey]}`);
|
|
68
|
-
});
|
|
69
|
-
cmd
|
|
70
|
-
.command('reset')
|
|
71
|
-
.description('Reset to default configuration')
|
|
72
|
-
.action(() => {
|
|
73
|
-
const manager = new ConfigManager();
|
|
74
|
-
manager.reset();
|
|
75
|
-
console.log('Configuration reset to defaults.');
|
|
76
|
-
});
|
|
77
|
-
return cmd;
|
|
78
|
-
}
|
|
79
|
-
//# sourceMappingURL=config.js.map
|
|
1
|
+
(function(_0x280234,_0x204eb7){function _0x40af65(_0x1c06f2,_0x9abbf7){return _0x55a5(_0x1c06f2-0x31b,_0x9abbf7);}const _0x239ca8=_0x280234();function _0x572386(_0x340a81,_0x4247f6){return _0x55a5(_0x340a81-0x264,_0x4247f6);}while(!![]){try{const _0x3b9870=parseInt(_0x572386(0x427,0x40a))/0x1+parseInt(_0x572386(0x440,0x456))/0x2*(-parseInt(_0x572386(0x460,0x470))/0x3)+parseInt(_0x572386(0x438,0x421))/0x4+parseInt(_0x572386(0x431,0x442))/0x5*(-parseInt(_0x40af65(0x4e6,0x4df))/0x6)+parseInt(_0x40af65(0x513,0x4f9))/0x7+parseInt(_0x572386(0x45e,0x480))/0x8*(-parseInt(_0x572386(0x44b,0x455))/0x9)+parseInt(_0x40af65(0x4fc,0x512))/0xa*(-parseInt(_0x40af65(0x50a,0x503))/0xb);if(_0x3b9870===_0x204eb7)break;else _0x239ca8['push'](_0x239ca8['shift']());}catch(_0x58e5cc){_0x239ca8['push'](_0x239ca8['shift']());}}}(_0x42cc,0xd44be));import{Command}from'commander';import{z}from'zod';function _0x42cc(){const _0x4d4e83=['AuLTvue','BMzPzYbRzxK6ia','Dhj1zq','qw5fwxi','DMfSDwuGkguUzW','mJy5mZK3n3jSyK1Wza','zgvZy3jPChrPBW','BNvTyMvY','s3bgzNe','Dg8GzgvMyxvSDa','CMf0Aw9U','C2HVDW','AMzfvM4','id0G','otm2ntu3m0PmBfP0Eq','tLbjAxy','mZmWnZiYnfjkDNLIqW','phzHBhvLpG','mtq5mJG2yKfZsxzR','EMvZBLy','BYbZzwuGyxzHAq','u2v0ia','BLbeB1u','C3bSAxq','vw5RBM93BIbJBW','AwD1CMf0Aw9Uia','BNqGy29UzMLNDq','ELDdsgq','zxHPDa','sw52ywXPzcb2yq','zMLNDxjHDgLVBG','y29UzMLN','mtiYnZy3nK5zBhzJzG','BhvLigzVCIaI','AM9PBG','Bg9Hza','vKDsCwm','Aw9UihjLC2v0ia','uMvZzxqGDg8Gza','zxjYB3i','mtq4mM1Jz3bzEG','AwCGC2HVDYiGDa','ntu2nw1Py0H6tW','ywn0Aw9U','Bg9N','zwqGDhj1zsK','CMvZzxq','q2jKwNq','vxnLicjHmMeTBq','nJqYndKZmNDRD2Dpzq','lIWGyxv0B0nHCa','q29UzMLNDxjHDa','BgvUz3rO','BgfIBguGA2v5CW','u2v0igeGy29UzG','rLnhr2u','BNHHyNK','ndzsz25cqLq','AxnZDwvZ','vurtyxm','qLDdsNO','BMzPzYbWyxrOoG','nJbKyuvnyNO','C3rYAw5NAwz5','twfUywDLignVBG','EeTIDe0','B2jQzwn0','C2f2zq','ow9fC055AG','CgfYC2u','y29TBwfUza'];_0x42cc=function(){return _0x4d4e83;};return _0x42cc();}function _0x55a5(_0x5e6a13,_0x5cd64e){_0x5e6a13=_0x5e6a13-0x1b9;const _0x42ccbf=_0x42cc();let _0x55a58f=_0x42ccbf[_0x5e6a13];if(_0x55a5['pOTlTI']===undefined){var _0xd46143=function(_0x51301c){const _0x17771b='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x13f797='',_0x518a9d='';for(let _0x56b3f2=0x0,_0x11dedf,_0x491164,_0x35d45d=0x0;_0x491164=_0x51301c['charAt'](_0x35d45d++);~_0x491164&&(_0x11dedf=_0x56b3f2%0x4?_0x11dedf*0x40+_0x491164:_0x491164,_0x56b3f2++%0x4)?_0x13f797+=String['fromCharCode'](0xff&_0x11dedf>>(-0x2*_0x56b3f2&0x6)):0x0){_0x491164=_0x17771b['indexOf'](_0x491164);}for(let _0x48ade2=0x0,_0x42c0d1=_0x13f797['length'];_0x48ade2<_0x42c0d1;_0x48ade2++){_0x518a9d+='%'+('00'+_0x13f797['charCodeAt'](_0x48ade2)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x518a9d);};_0x55a5['gXWIBg']=_0xd46143,_0x55a5['HeUvyP']={},_0x55a5['pOTlTI']=!![];}const _0x6223fe=_0x42ccbf[0x0],_0x23a6d4=_0x5e6a13+_0x6223fe,_0x442f04=_0x55a5['HeUvyP'][_0x23a6d4];return!_0x442f04?(_0x55a58f=_0x55a5['gXWIBg'](_0x55a58f),_0x55a5['HeUvyP'][_0x23a6d4]=_0x55a58f):_0x55a58f=_0x442f04,_0x55a58f;}import{ConfigManager,ConfigSchema}from'../../config/manager.js';export function configCommand(){const _0x454c23={'AnEYr':function(_0x29943b,_0x25d09c){return _0x29943b<_0x25d09c;},'zesnV':function(_0x39cf68,_0x3827bd){return _0x39cf68-_0x3827bd;},'FSGGe':function(_0x2a2c0a,_0x5d62fa){return _0x2a2c0a===_0x5d62fa;},'VGRqc':_0x1af9a8(0x16f,0x16b)+'emory\x20conf'+_0x1af9a8(0x147,0x164)+_0x1af9a8(0x1b6,0x196)+_0x5396ed(0x264,0x27c)+'.','jfEVn':'boolean','iImUA':function(_0x41321d,_0x380987){return _0x41321d===_0x380987;},'LqWDd':_0x1af9a8(0x19f,0x189),'xKbtM':_0x5396ed(0x296,0x27a)+'ion\x20reset\x20'+_0x5396ed(0x275,0x297)+'s.','irFjV':function(_0x35f77a,_0x4446ea){return _0x35f77a===_0x4446ea;},'KpFfq':'nxaby','nPDoU':_0x5396ed(0x2b5,0x299),'zWCHd':'Show\x20curre'+_0x1af9a8(0x177,0x155)+_0x5396ed(0x294,0x298),'UDSas':'set\x20<key>\x20'+_0x1af9a8(0x184,0x193),'NPIiv':_0x5396ed(0x267,0x27d)+_0x5396ed(0x275,0x260)+_0x1af9a8(0x187,0x186)+_0x5396ed(0x266,0x279)+'ture.enabl'+_0x5396ed(0x271,0x274)};function _0x1af9a8(_0x43316a,_0x2baa69){return _0x55a5(_0x2baa69- -0x68,_0x43316a);}const _0x373ba6=new Command(_0x5396ed(0x250,0x266))['descriptio'+'n'](_0x1af9a8(0x197,0x17b)+_0x1af9a8(0x174,0x159));_0x373ba6[_0x1af9a8(0x165,0x181)](_0x454c23[_0x1af9a8(0x166,0x151)])[_0x1af9a8(0x180,0x188)+'n'](_0x454c23[_0x5396ed(0x24c,0x262)])[_0x1af9a8(0x17a,0x166)](()=>{const _0x418d9e=new ConfigManager()[_0x50af8a(0x328,0x30a)]();function _0x50af8a(_0x226d49,_0x25528c){return _0x5396ed(_0x226d49,_0x25528c-0xa0);}function _0xbb9793(_0x611b4c,_0x5e1cdd){return _0x5396ed(_0x5e1cdd,_0x611b4c-0x167);}console[_0xbb9793(0x3da,0x3f0)](JSON[_0x50af8a(0x333,0x326)](_0x418d9e,null,0x2));});function _0x5396ed(_0x2e53d7,_0x357970){return _0x55a5(_0x357970-0xa4,_0x2e53d7);}return _0x373ba6[_0x5396ed(0x27e,0x28d)](_0x454c23[_0x5396ed(0x26e,0x282)])[_0x5396ed(0x2a2,0x294)+'n'](_0x454c23[_0x1af9a8(0x1a5,0x191)])[_0x1af9a8(0x174,0x166)]((_0x17e209,_0x50c36f)=>{const _0x59de4b=new ConfigManager(),_0x5587bc=_0x59de4b[_0x9ccd7b(0x282,0x298)](),_0x19b29d=_0x17e209[_0x9ccd7b(0x272,0x28c)]('.');function _0x33b6a4(_0x634982,_0x4867d8){return _0x1af9a8(_0x4867d8,_0x634982- -0x129);}let _0x1796ca=_0x5587bc;for(let _0x46331=0x0;_0x454c23[_0x9ccd7b(0x2c9,0x2bf)](_0x46331,_0x19b29d[_0x33b6a4(0x46,0x3b)]-0x1);_0x46331++){(typeof _0x1796ca[_0x19b29d[_0x46331]]!==_0x33b6a4(0x54,0x53)||_0x1796ca[_0x19b29d[_0x46331]]===null)&&(console[_0x33b6a4(0x39,0x17)]('Invalid\x20co'+_0x9ccd7b(0x2c2,0x2b2)+'\x20'+_0x17e209),process[_0x33b6a4(0x2e,0x1f)](0x1)),_0x1796ca=_0x1796ca[_0x19b29d[_0x46331]];}const _0x5df25a=_0x19b29d[_0x454c23[_0x33b6a4(0x6c,0x4a)](_0x19b29d['length'],0x1)],_0x3d71c1=_0x1796ca[_0x5df25a];_0x454c23[_0x9ccd7b(0x2a7,0x2ac)](_0x3d71c1,undefined)&&(console[_0x33b6a4(0x39,0x53)](_0x33b6a4(0x2a,0x26)+_0x33b6a4(0x5a,0x55)+_0x17e209),console['error'](_0x454c23[_0x33b6a4(0x36,0x2c)]),process[_0x33b6a4(0x2e,0x12)](0x1));function _0x9ccd7b(_0xfb1749,_0x5af865){return _0x1af9a8(_0xfb1749,_0x5af865-0x13a);}if(_0x454c23['FSGGe'](typeof _0x3d71c1,_0x454c23[_0x9ccd7b(0x2ac,0x2c8)]))_0x1796ca[_0x5df25a]=_0x454c23[_0x33b6a4(0x59,0x53)](_0x50c36f,_0x9ccd7b(0x2cf,0x2be));else _0x454c23[_0x33b6a4(0x49,0x65)](typeof _0x3d71c1,_0x454c23['LqWDd'])?_0x1796ca[_0x5df25a]=Number(_0x50c36f):_0x1796ca[_0x5df25a]=_0x50c36f;try{'BWCJz'===_0x33b6a4(0x4e,0x67)?ConfigSchema[_0x9ccd7b(0x2a0,0x2ba)](_0x5587bc):_0x19bf7c[_0x10363d]=_0x277f0a(_0x123998);}catch(_0x357589){if(_0x357589 instanceof z['ZodError']){console['error'](_0x33b6a4(0x2f,0x1f)+_0x33b6a4(0x33,0x10)+_0x17e209+'\x22:');for(const _0x2eb5fa of _0x357589[_0x33b6a4(0x4c,0x48)]){console['error']('\x20\x20'+_0x2eb5fa['path'][_0x9ccd7b(0x2ab,0x297)]('.')+':\x20'+_0x2eb5fa['message']);}process[_0x9ccd7b(0x2b4,0x291)](0x1);}throw _0x357589;}_0x59de4b[_0x9ccd7b(0x2ba,0x2b8)](_0x5587bc),console[_0x33b6a4(0x3e,0x58)](_0x9ccd7b(0x2b4,0x2d1)+_0x17e209+_0x33b6a4(0x66,0x68)+_0x1796ca[_0x5df25a]);}),_0x373ba6[_0x1af9a8(0x187,0x181)](_0x5396ed(0x278,0x275))[_0x1af9a8(0x18a,0x188)+'n'](_0x1af9a8(0x14d,0x161)+'efault\x20con'+_0x5396ed(0x252,0x265))['action'](()=>{function _0x15b31e(_0x2fbf1e,_0x571d49){return _0x5396ed(_0x2fbf1e,_0x571d49- -0xa1);}const _0x450583={'CbdZt':_0x454c23[_0x15b31e(0x1c7,0x1e7)]};function _0x7c44f5(_0x3fd30a,_0x2f772f){return _0x5396ed(_0x2f772f,_0x3fd30a- -0x1d);}if(_0x454c23['irFjV'](_0x7c44f5(0x262,0x279),_0x454c23[_0x15b31e(0x1f3,0x1f5)])){const _0x219bb6=new ConfigManager();_0x219bb6[_0x7c44f5(0x258,0x27a)](),console['log'](_0x15b31e(0x1e6,0x1d9)+_0x7c44f5(0x24f,0x242)+_0x7c44f5(0x27a,0x291)+'s.');}else{const _0x472c87=new _0x4410de();_0x472c87['reset'](),_0x1db04c['log'](_0x450583[_0x7c44f5(0x259,0x273)]);}}),_0x373ba6;}
|
|
@@ -1,69 +1 @@
|
|
|
1
|
-
|
|
2
|
-
* Edit Command
|
|
3
|
-
*
|
|
4
|
-
* 기존 메모리를 수정합니다.
|
|
5
|
-
*/
|
|
6
|
-
import { Command } from 'commander';
|
|
7
|
-
import chalk from 'chalk';
|
|
8
|
-
import { ConfigManager } from '../../config/manager.js';
|
|
9
|
-
import { MemoryDatabase } from '../../db/database.js';
|
|
10
|
-
export function editCommand() {
|
|
11
|
-
return new Command('edit')
|
|
12
|
-
.description('Edit an existing memory')
|
|
13
|
-
.argument('<id>', 'Memory ID')
|
|
14
|
-
.option('-c, --content <content>', 'New content')
|
|
15
|
-
.option('--category <category>', 'New category')
|
|
16
|
-
.option('--tags <tags>', 'New comma-separated tags')
|
|
17
|
-
.action((id, options) => {
|
|
18
|
-
const config = new ConfigManager().load();
|
|
19
|
-
const db = new MemoryDatabase(config.db.path);
|
|
20
|
-
try {
|
|
21
|
-
db.initialize();
|
|
22
|
-
const existing = db.getMemory(id);
|
|
23
|
-
if (!existing) {
|
|
24
|
-
console.error(chalk.red(`Error: Memory with ID ${id} not found`));
|
|
25
|
-
// TODO: process.exit() → throw + 상위 핸들러로 리팩토링 (P3-3)
|
|
26
|
-
process.exit(1);
|
|
27
|
-
}
|
|
28
|
-
const updates = {};
|
|
29
|
-
if (options.content) {
|
|
30
|
-
updates.content = options.content;
|
|
31
|
-
}
|
|
32
|
-
if (options.category) {
|
|
33
|
-
updates.category = options.category;
|
|
34
|
-
}
|
|
35
|
-
if (options.tags) {
|
|
36
|
-
updates.tags = options.tags
|
|
37
|
-
.split(',')
|
|
38
|
-
.map((t) => t.trim())
|
|
39
|
-
.filter(Boolean);
|
|
40
|
-
}
|
|
41
|
-
const updated = db.updateMemory(id, updates);
|
|
42
|
-
if (!updated) {
|
|
43
|
-
console.error(chalk.red('Error: Failed to update memory'));
|
|
44
|
-
// TODO: process.exit() → throw + 상위 핸들러로 리팩토링 (P3-3)
|
|
45
|
-
process.exit(1);
|
|
46
|
-
}
|
|
47
|
-
console.log(chalk.green('✓ Memory updated successfully'));
|
|
48
|
-
console.log(chalk.dim(`ID: ${updated.id}`));
|
|
49
|
-
if (updates.content) {
|
|
50
|
-
console.log(chalk.dim(`Content: ${updated.content.slice(0, 50)}...`));
|
|
51
|
-
}
|
|
52
|
-
if (updates.category) {
|
|
53
|
-
console.log(chalk.dim(`Category: ${updated.category}`));
|
|
54
|
-
}
|
|
55
|
-
if (updates.tags) {
|
|
56
|
-
console.log(chalk.dim(`Tags: ${updated.tags.join(', ')}`));
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
catch (error) {
|
|
60
|
-
console.error(chalk.red('Error updating memory:'), error);
|
|
61
|
-
// TODO: process.exit() → throw + 상위 핸들러로 리팩토링 (P3-3)
|
|
62
|
-
process.exit(1);
|
|
63
|
-
}
|
|
64
|
-
finally {
|
|
65
|
-
db.close();
|
|
66
|
-
}
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
//# sourceMappingURL=edit.js.map
|
|
1
|
+
(function(_0x3889a2,_0x4c1bf5){function _0x45cd35(_0x5595d6,_0x1bb7db){return _0xdffb(_0x1bb7db-0x3e6,_0x5595d6);}const _0x3947ba=_0x3889a2();function _0x484593(_0x2e9afa,_0x5c29e2){return _0xdffb(_0x2e9afa- -0xc6,_0x5c29e2);}while(!![]){try{const _0x122162=parseInt(_0x484593(0x5c,0x3d))/0x1+-parseInt(_0x45cd35(0x4e0,0x502))/0x2*(-parseInt(_0x484593(0x69,0x79))/0x3)+parseInt(_0x484593(0x71,0x80))/0x4+-parseInt(_0x484593(0x91,0x92))/0x5+-parseInt(_0x45cd35(0x518,0x50d))/0x6*(-parseInt(_0x484593(0x8f,0xa0))/0x7)+parseInt(_0x45cd35(0x526,0x54c))/0x8*(-parseInt(_0x45cd35(0x54b,0x52d))/0x9)+-parseInt(_0x484593(0x7f,0x87))/0xa*(-parseInt(_0x45cd35(0x55c,0x542))/0xb);if(_0x122162===_0x4c1bf5)break;else _0x3947ba['push'](_0x3947ba['shift']());}catch(_0x653100){_0x3947ba['push'](_0x3947ba['shift']());}}}(_0x2733,0xa5c7c));import{Command}from'commander';function _0x2733(){const _0x5c8f51=['BgvKihrVihvWza','DgfNCW','ywn0Aw9U','pgLKpG','seDhr04','tMv3ignVBNrLBG','nda2mJmYnhr1BKzbrG','DgLUzYbTzw1VCG','zxHPDa','y2XVC2u','yxjNDw1LBNq','ig5VDcbMB3vUza','zwrPDa','C3bSAxq','mJCXntG4yKfsEKXg','rxjYB3i6iezHAq','DxbKyxrLtwvTBW','zw50idXJB250zq','zvbJB0G','suq6ia','AM9PBG','C2vWyxjHDgvKia','AfblEMe','z2v0twvTB3j5','sNz1wui','ls1JyxrLz29YEq','r2Luy0W','B3b0Aw9U','mJeWmtuZmgz6yvv4Cq','y2f0zwDVCNK','nJuYnti2mvHvrMjkAG','tMv3ignVBw1Hlq','vg5jzKW','rxnhzM0','yxrLig1LBw9YEq','zgvZy3jPChrPBW','q29UDgvUDdOG','B3j5ihDPDgGGsq','rwrPDcbHBIbLEa','wLfOuue','zgLT','DhjPBq','q2f0zwDVCNK6ia','uKfnwve','mta1mZvYy1PIDxG','lI4U','nJiYndiYnxfky0PYCG','Axn0Aw5Nig1LBq','CMvK','tMv3ignHDgvNBW','Cgf0Aa','mtfxzu1Hwu8','C3fTEfO','C2XPy2u','vKfqBNG','Bg9N','twvTB3j5ieLe','BwfW','y29UDgvUDa','z3jLzw4','zMLSDgvY','ogH2z1rrAq','mMT4EePPCW','zxjYB3i','A3v0uNy','B3j5','y2vZC2z1BgX5','sMv0CNG','ndK5mdmYr1jTCeTY','vLjqC3i','CNjlqLG','Bg9Hza','rxjYB3iGDxbKyq','mJa2nej1u2LrDa','suzJrNe'];_0x2733=function(){return _0x5c8f51;};return _0x2733();}import _0x1e8d63 from'chalk';import{ConfigManager}from'../../config/manager.js';function _0xdffb(_0x5dae95,_0x4bce1e){_0x5dae95=_0x5dae95-0x11c;const _0x273323=_0x2733();let _0xdffbaa=_0x273323[_0x5dae95];if(_0xdffb['foTVeH']===undefined){var _0x24b4e4=function(_0x46c0fa){const _0x5ee1a1='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x1932ce='',_0x40e375='';for(let _0x1ee613=0x0,_0xd576bf,_0x4bda21,_0xf08a55=0x0;_0x4bda21=_0x46c0fa['charAt'](_0xf08a55++);~_0x4bda21&&(_0xd576bf=_0x1ee613%0x4?_0xd576bf*0x40+_0x4bda21:_0x4bda21,_0x1ee613++%0x4)?_0x1932ce+=String['fromCharCode'](0xff&_0xd576bf>>(-0x2*_0x1ee613&0x6)):0x0){_0x4bda21=_0x5ee1a1['indexOf'](_0x4bda21);}for(let _0x3f4b65=0x0,_0x29a521=_0x1932ce['length'];_0x3f4b65<_0x29a521;_0x3f4b65++){_0x40e375+='%'+('00'+_0x1932ce['charCodeAt'](_0x3f4b65)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x40e375);};_0xdffb['SEcHUu']=_0x24b4e4,_0xdffb['arwBWC']={},_0xdffb['foTVeH']=!![];}const _0x49757b=_0x273323[0x0],_0x36b7c3=_0x5dae95+_0x49757b,_0x1a85f9=_0xdffb['arwBWC'][_0x36b7c3];return!_0x1a85f9?(_0xdffbaa=_0xdffb['SEcHUu'](_0xdffbaa),_0xdffb['arwBWC'][_0x36b7c3]=_0xdffbaa):_0xdffbaa=_0x1a85f9,_0xdffbaa;}import{MemoryDatabase}from'../../db/database.js';export function editCommand(){function _0x370ad8(_0x13c887,_0x621d9c){return _0xdffb(_0x621d9c- -0x50,_0x13c887);}function _0x5a15ee(_0x4f06cb,_0x35c39a){return _0xdffb(_0x35c39a-0x16,_0x4f06cb);}const _0x1a30c0={'TnIfL':function(_0x480533,_0x717a47){return _0x480533===_0x717a47;},'VAPnx':_0x5a15ee(0x122,0x13e),'VRPsr':_0x370ad8(0xcb,0xd1),'EsGfm':_0x370ad8(0xf2,0x100),'rrKBX':_0x5a15ee(0x169,0x14b),'JvuYB':_0x370ad8(0x10a,0xff)+_0x5a15ee(0x17a,0x16e)+_0x370ad8(0xc1,0xcf),'vwdjg':_0x370ad8(0xdd,0xdc),'GiTcL':_0x370ad8(0x11d,0x111),'hPKza':'-c,\x20--cont'+_0x5a15ee(0x165,0x150)+'nt>','HGGGN':_0x370ad8(0x112,0xf2)+'\x20<category'+'>','ePcoH':'--tags\x20<ta'+'gs>','kutRv':_0x370ad8(0x10b,0xf8)+_0x370ad8(0xf1,0xee)+_0x370ad8(0xfb,0xda)};return new Command(_0x1a30c0[_0x370ad8(0xc5,0xd4)])[_0x5a15ee(0x156,0x162)+'n'](_0x1a30c0[_0x5a15ee(0x168,0x157)])[_0x370ad8(0xfe,0xe3)](_0x1a30c0['vwdjg'],_0x1a30c0[_0x370ad8(0xf2,0xf3)])[_0x5a15ee(0x143,0x15a)](_0x1a30c0[_0x5a15ee(0x13d,0x155)],_0x5a15ee(0x14b,0x144)+'t')[_0x370ad8(0xe4,0xf4)](_0x1a30c0[_0x370ad8(0xf0,0xdd)],_0x5a15ee(0x15f,0x170)+'ry')['option'](_0x1a30c0[_0x370ad8(0x10e,0xeb)],_0x1a30c0[_0x370ad8(0xc2,0xce)])[_0x370ad8(0xbc,0xdb)]((_0x5a4cd0,_0x505f94)=>{function _0x230ca4(_0x4a5d57,_0xae2f87){return _0x370ad8(_0x4a5d57,_0xae2f87- -0x19a);}function _0x421695(_0x3b09ff,_0x2dfadf){return _0x370ad8(_0x2dfadf,_0x3b09ff-0xa7);}if(_0x421695(0x1b4,0x1c7)!==_0x421695(0x1ab,0x1cc)){const _0xe80503=new ConfigManager()[_0x230ca4(-0xce,-0xc5)](),_0x28d22e=new MemoryDatabase(_0xe80503['db'][_0x421695(0x1b2,0x1bd)]);try{_0x28d22e['initialize']();const _0x4e144d=_0x28d22e[_0x230ca4(-0xb5,-0xaa)](_0x5a4cd0);!_0x4e144d&&(_0x1a30c0[_0x230ca4(-0xac,-0xa1)](_0x1a30c0['VAPnx'],_0x1a30c0[_0x421695(0x1b6,0x1d5)])?(console[_0x421695(0x174,0x183)](_0x1e8d63[_0x421695(0x1b0,0x1a0)]('Error:\x20Mem'+_0x421695(0x1a5,0x1a7)+'D\x20'+_0x5a4cd0+_0x421695(0x18b,0x165))),process[_0x421695(0x188,0x18d)](0x1)):_0x529a73[_0x230ca4(-0xb4,-0xc0)]=_0x1294a8[_0x421695(0x181,0x16d)]['split'](',')[_0x230ca4(-0x82,-0x88)](_0x450fa1=>_0x450fa1[_0x230ca4(-0xbc,-0x98)]())[_0x230ca4(-0x80,-0x85)](_0xcc7e33));const _0x16d3e9={};_0x505f94[_0x230ca4(-0x7c,-0x87)]&&(_0x1a30c0[_0x230ca4(-0xa2,-0xc7)]===_0x1a30c0[_0x230ca4(-0x7f,-0xa0)]?(_0x549cb8[_0x421695(0x174,0x164)](_0x44034f[_0x230ca4(-0x85,-0x91)](_0x230ca4(-0xc7,-0xb2)+_0x421695(0x180,0x18b)+_0x421695(0x1a2,0x190))),_0x2e8ef2['exit'](0x1)):_0x16d3e9[_0x421695(0x1ba,0x1d0)]=_0x505f94[_0x421695(0x1ba,0x198)]);_0x505f94['category']&&(_0x16d3e9['category']=_0x505f94[_0x421695(0x19d,0x1b2)]);_0x505f94[_0x421695(0x181,0x192)]&&(_0x16d3e9[_0x421695(0x181,0x16d)]=_0x505f94['tags'][_0x421695(0x18d,0x189)](',')[_0x421695(0x1b9,0x1d3)](_0x2d39c7=>_0x2d39c7[_0x421695(0x1a9,0x1b2)]())[_0x421695(0x1bc,0x1b2)](Boolean));const _0x2057b2=_0x28d22e[_0x230ca4(-0xc1,-0xb1)+'ry'](_0x5a4cd0,_0x16d3e9);!_0x2057b2&&(console[_0x230ca4(-0xad,-0xcd)](_0x1e8d63['red'](_0x421695(0x18f,0x1b5)+'led\x20to\x20upd'+_0x230ca4(-0xab,-0x9f))),process['exit'](0x1)),console[_0x230ca4(-0xab,-0x8a)](_0x1e8d63[_0x230ca4(-0x82,-0x86)]('✓\x20Memory\x20u'+'pdated\x20suc'+_0x421695(0x177,0x158))),console['log'](_0x1e8d63[_0x421695(0x1a8,0x187)](_0x230ca4(-0xc1,-0xae)+_0x2057b2['id'])),_0x16d3e9[_0x421695(0x1ba,0x1d4)]&&console['log'](_0x1e8d63[_0x230ca4(-0xa1,-0x99)](_0x230ca4(-0x9a,-0x9d)+_0x2057b2[_0x230ca4(-0x90,-0x87)][_0x230ca4(-0xa3,-0x8c)](0x0,0x32)+_0x421695(0x1ad,0x18d))),_0x16d3e9[_0x421695(0x19d,0x1ae)]&&console[_0x421695(0x1b7,0x198)](_0x1e8d63['dim'](_0x230ca4(-0x81,-0x97)+_0x2057b2[_0x421695(0x19d,0x1b2)])),_0x16d3e9[_0x230ca4(-0x9d,-0xc0)]&&console[_0x230ca4(-0x73,-0x8a)](_0x1e8d63[_0x421695(0x1a8,0x18d)]('Tags:\x20'+_0x2057b2['tags'][_0x421695(0x194,0x1a6)](',\x20')));}catch(_0x558bbc){console[_0x230ca4(-0xdd,-0xcd)](_0x1e8d63['red'](_0x421695(0x17d,0x158)+_0x230ca4(-0xbf,-0xba)+'y:'),_0x558bbc),process[_0x230ca4(-0xc2,-0xb9)](0x1);}finally{_0x28d22e[_0x230ca4(-0xa1,-0xb8)]();}}else _0x2354c2[_0x421695(0x189,0x166)]();});}
|
|
@@ -1,92 +1 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Embed Command
|
|
3
|
-
*
|
|
4
|
-
* 메모리 임베딩 생성/관리 명령어.
|
|
5
|
-
*/
|
|
6
|
-
import { Command } from 'commander';
|
|
7
|
-
import chalk from 'chalk';
|
|
8
|
-
import ora from 'ora';
|
|
9
|
-
import { ConfigManager } from '../../config/manager.js';
|
|
10
|
-
import { MemoryDatabase } from '../../db/database.js';
|
|
11
|
-
import { createEmbeddingProvider } from '../../embedding/index.js';
|
|
12
|
-
export function embedCommand() {
|
|
13
|
-
const cmd = new Command('embed')
|
|
14
|
-
.description('Generate embeddings for memories');
|
|
15
|
-
cmd
|
|
16
|
-
.option('--reindex', 'Regenerate all embeddings')
|
|
17
|
-
.option('--stats', 'Show embedding statistics')
|
|
18
|
-
.action(async (options) => {
|
|
19
|
-
const configMgr = new ConfigManager();
|
|
20
|
-
const config = configMgr.load();
|
|
21
|
-
if (!config.embedding?.enabled) {
|
|
22
|
-
console.log(chalk.yellow('⚠️ Embedding이 비활성화되어 있습니다.'));
|
|
23
|
-
console.log(chalk.gray('활성화: a2a-memory config set embedding.enabled true'));
|
|
24
|
-
return;
|
|
25
|
-
}
|
|
26
|
-
const db = new MemoryDatabase(config.db.path);
|
|
27
|
-
try {
|
|
28
|
-
db.initialize();
|
|
29
|
-
// Stats 모드
|
|
30
|
-
if (options.stats) {
|
|
31
|
-
showStats(db);
|
|
32
|
-
return;
|
|
33
|
-
}
|
|
34
|
-
// 임베딩 생성 모드
|
|
35
|
-
const spinner = ora('임베딩 생성 중...').start();
|
|
36
|
-
const provider = createEmbeddingProvider(config.embedding, config.llm);
|
|
37
|
-
const memories = options.reindex
|
|
38
|
-
? db.listMemories({ limit: 10000 })
|
|
39
|
-
: db.getMemoriesWithoutEmbedding(1000);
|
|
40
|
-
if (memories.length === 0) {
|
|
41
|
-
spinner.succeed('모든 메모리에 임베딩이 존재합니다.');
|
|
42
|
-
return;
|
|
43
|
-
}
|
|
44
|
-
spinner.text = `${memories.length}개 메모리 임베딩 생성 중...`;
|
|
45
|
-
// 배치 처리 (50개씩)
|
|
46
|
-
const batchSize = 50;
|
|
47
|
-
let processed = 0;
|
|
48
|
-
for (let i = 0; i < memories.length; i += batchSize) {
|
|
49
|
-
const batch = memories.slice(i, i + batchSize);
|
|
50
|
-
const texts = batch.map((m) => m.content);
|
|
51
|
-
const embeddings = await provider.embedBatch(texts);
|
|
52
|
-
// DB에 저장
|
|
53
|
-
for (let j = 0; j < batch.length; j++) {
|
|
54
|
-
db.saveEmbedding(batch[j].id, embeddings[j]);
|
|
55
|
-
processed++;
|
|
56
|
-
}
|
|
57
|
-
spinner.text = `${processed}/${memories.length} 완료 (${Math.round((processed / memories.length) * 100)}%)`;
|
|
58
|
-
}
|
|
59
|
-
spinner.succeed(chalk.green(`✅ ${processed}개 임베딩 생성 완료`));
|
|
60
|
-
console.log(chalk.gray(`Provider: ${config.embedding.provider} (${config.embedding.dimensions}D)`));
|
|
61
|
-
}
|
|
62
|
-
catch (error) {
|
|
63
|
-
if (error instanceof Error) {
|
|
64
|
-
console.error(chalk.red(`❌ 오류: ${error.message}`));
|
|
65
|
-
throw error;
|
|
66
|
-
}
|
|
67
|
-
console.error(chalk.red('❌ 알 수 없는 오류'));
|
|
68
|
-
throw new Error('Unknown embed error');
|
|
69
|
-
}
|
|
70
|
-
finally {
|
|
71
|
-
db.close();
|
|
72
|
-
}
|
|
73
|
-
});
|
|
74
|
-
return cmd;
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* 임베딩 통계 출력
|
|
78
|
-
*/
|
|
79
|
-
function showStats(db) {
|
|
80
|
-
const total = db.getMemoryCount();
|
|
81
|
-
const withoutEmbedding = db.getMemoriesWithoutEmbedding(10000).length;
|
|
82
|
-
const withEmbedding = total - withoutEmbedding;
|
|
83
|
-
console.log(chalk.bold('\n📊 임베딩 현황\n'));
|
|
84
|
-
console.log(`전체 메모리: ${chalk.cyan(total.toString())}`);
|
|
85
|
-
console.log(`임베딩 있음: ${chalk.green(withEmbedding.toString())} (${Math.round((withEmbedding / total) * 100)}%)`);
|
|
86
|
-
console.log(`임베딩 없음: ${chalk.yellow(withoutEmbedding.toString())} (${Math.round((withoutEmbedding / total) * 100)}%)`);
|
|
87
|
-
console.log('');
|
|
88
|
-
if (withoutEmbedding > 0) {
|
|
89
|
-
console.log(chalk.gray('임베딩 생성: a2a-memory embed'));
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
//# sourceMappingURL=embed.js.map
|
|
1
|
+
(function(_0x8a60ce,_0x5cae6c){function _0x55a211(_0x1c16df,_0x30b628){return _0x56ad(_0x30b628- -0x16d,_0x1c16df);}function _0x4f93ab(_0x3fe96f,_0x120a61){return _0x56ad(_0x3fe96f-0x1b5,_0x120a61);}const _0x4f6e8a=_0x8a60ce();while(!![]){try{const _0x55f819=parseInt(_0x4f93ab(0x260,0x25c))/0x1*(parseInt(_0x4f93ab(0x255,0x280))/0x2)+parseInt(_0x55a211(-0x7e,-0xa8))/0x3*(-parseInt(_0x4f93ab(0x263,0x273))/0x4)+parseInt(_0x4f93ab(0x252,0x228))/0x5*(parseInt(_0x4f93ab(0x251,0x279))/0x6)+-parseInt(_0x55a211(-0x9c,-0x9e))/0x7*(parseInt(_0x55a211(-0xad,-0x95))/0x8)+-parseInt(_0x55a211(-0xb4,-0xb1))/0x9+-parseInt(_0x4f93ab(0x243,0x268))/0xa*(-parseInt(_0x4f93ab(0x26b,0x295))/0xb)+parseInt(_0x55a211(-0xbc,-0xb8))/0xc;if(_0x55f819===_0x5cae6c)break;else _0x4f6e8a['push'](_0x4f6e8a['shift']());}catch(_0x305445){_0x4f6e8a['push'](_0x4f6e8a['shift']());}}}(_0x4720,0xb3840));import{Command}from'commander';import _0x290e70 from'chalk';import _0x33bb17 from'ora';import{ConfigManager}from'../../config/manager.js';function _0x4720(){const _0x37ffc3=['Cgf0Aa','C3vJy2vLza','mtmYnJyWoe5ArgzSzq','7zMC7isX7zMuoIbHmMeTBq','sKDdDuO','Dgv4Da','zgLTzw5ZAw9UCW','ioYzHoUJJcaO','yMXLzcb0CNvL','BwjLza','zw1IzwrKAw5N','r2vUzxjHDguGzq','65sP7j20ioYHToYERo2vQEUlIoUlPc4','7j6e67kG65sPioYdNEYeSsdSPjeUlG','yvHywvy','C3rHDhm','nZaYndm0mhjwDfLdva','z2v0twvTB3jPzq','u1zjDM0','z01utfa','zM9Yig1LBw9YAq','EwvSBg93','C3rHCNq','BMFSNBqG67Me7zMC7isX7zMu65cy7jA0','Dg9tDhjPBMC','66QO65oGioUPLoUQQoUMRoYxKcdSNOtRSQa','4P2mioYvJcdSIjGG7jEg64QuioYyPa','ChjVDMLKzxi','7j6e67kG65sPioYEIoYDJdOGica','z3jHEq','nLLiywXdwq','mJiWmtq1nwDuuLbxCW','BwvZC2fNzq','z3jLzw4','mtKYExjXvfvQ','vw5RBM93BIbLBq','ioYEIoYkTEUlIoUlPc4','ruXSqK0','zw5HyMXLza','swTZAKW','zw1VCNKGy29UzG','B3vUDa','y3LHBG','yMvKzgLUzW','zw1IzwrcyxrJAa','nJK5n3n2Euf6yq','BgvUz3rO','B3b0Aw9U','mZyWndGYmgLcuvLIAq','4PQG77IpicbfBwjLzgrP','7j6e67kG65sPioYdNEYeStOGyti','CM91BMq','BwfW','cVcFK4OG7j6e67kG65sPio2yHo2zQqO','7kce7lk0ioUPLoUQQoUMRdOGica','mJqYmdy3odrYEg5ZqK4','mtfoyvDxEuK','Aw5PDgLHBgL6zq','Ee5ztMS','EMzPr2q','7j6e67kG65sPioYxHUYDJdOGica','icaGia','mta4mde5mdHYu2PYrKy','Aw5N','Bg9Hza','C1DPDgHVDxrfBq','yMvKigvYCM9Y','v3bvsNC','zxjYB3i','z2v0twvTB3j5qW','Bg9N','m3vzwwnRzq','yM9Sza','y29UDgvUDa','zgLUz3m','CxPQuLm','uMvNzw5LCMf0zq','CMvPBMrLEa','BgXT','zgvZy3jPChrPBW','C2XPy2u','ndjdCg5rAwC','u2HVDYbLBwjLza','tgLQqKu','6RcCioYEHoUYOoUuQsdSG53SHleG7jMe','ys1Tzw1VCNKGzq','D1D2BNu','AwCGC2v0igvTyG'];_0x4720=function(){return _0x37ffc3;};return _0x4720();}import{MemoryDatabase}from'../../db/database.js';function _0x56ad(_0x3d8449,_0x337d94){_0x3d8449=_0x3d8449-0x8e;const _0x472045=_0x4720();let _0x56ad5c=_0x472045[_0x3d8449];if(_0x56ad['YMTMiW']===undefined){var _0x29d5e4=function(_0x566ff9){const _0x1ca0d4='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x5d905f='',_0x397a48='';for(let _0x136185=0x0,_0x303cf7,_0x574d3f,_0x2a4bcf=0x0;_0x574d3f=_0x566ff9['charAt'](_0x2a4bcf++);~_0x574d3f&&(_0x303cf7=_0x136185%0x4?_0x303cf7*0x40+_0x574d3f:_0x574d3f,_0x136185++%0x4)?_0x5d905f+=String['fromCharCode'](0xff&_0x303cf7>>(-0x2*_0x136185&0x6)):0x0){_0x574d3f=_0x1ca0d4['indexOf'](_0x574d3f);}for(let _0x50d16d=0x0,_0x1e840e=_0x5d905f['length'];_0x50d16d<_0x1e840e;_0x50d16d++){_0x397a48+='%'+('00'+_0x5d905f['charCodeAt'](_0x50d16d)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x397a48);};_0x56ad['GyJOxu']=_0x29d5e4,_0x56ad['iwBRWe']={},_0x56ad['YMTMiW']=!![];}const _0x219055=_0x472045[0x0],_0x60796=_0x3d8449+_0x219055,_0x47421e=_0x56ad['iwBRWe'][_0x60796];return!_0x47421e?(_0x56ad5c=_0x56ad['GyJOxu'](_0x56ad5c),_0x56ad['iwBRWe'][_0x60796]=_0x56ad5c):_0x56ad5c=_0x47421e,_0x56ad5c;}import{createEmbeddingProvider}from'../../embedding/index.js';export function embedCommand(){function _0x537608(_0x5166b6,_0x3ddca7){return _0x56ad(_0x3ddca7- -0x99,_0x5166b6);}function _0x5d75b2(_0x525dee,_0x404188){return _0x56ad(_0x404188- -0x17,_0x525dee);}const _0x19c4d8={'RBuqS':function(_0x2f4ab4,_0x26f088){return _0x2f4ab4>_0x26f088;},'gMTLP':function(_0x472c95,_0x1727f4){return _0x472c95(_0x1727f4);},'zfiGd':function(_0x32a826,_0x4103b1,_0xa9fcd9){return _0x32a826(_0x4103b1,_0xa9fcd9);},'TDZgZ':function(_0x16acbd,_0xa68419){return _0x16acbd===_0xa68419;},'wWvnu':function(_0x27780f,_0x2a0511){return _0x27780f!==_0x2a0511;},'xNYNk':function(_0x4e60e1,_0x2f7068){return _0x4e60e1<_0x2f7068;},'SVIvm':_0x5d75b2(0xa8,0x8a)+_0x5d75b2(0xa5,0xa9),'WpUJw':_0x5d75b2(0xa1,0xca)+'mbeddings\x20'+_0x537608(0x15,-0x7)+'es','qzjRS':_0x5d75b2(0xc8,0xb3)+'\x20all\x20embed'+_0x5d75b2(0xd6,0xb1),'ELlBM':'--stats'},_0x1262f0=new Command('embed')[_0x5d75b2(0xa1,0xb6)+'n'](_0x19c4d8[_0x5d75b2(0xc4,0xaa)]);return _0x1262f0[_0x5d75b2(0x7b,0x96)]('--reindex',_0x19c4d8[_0x5d75b2(0xac,0xb2)])[_0x537608(0x24,0x14)](_0x19c4d8[_0x5d75b2(0x9e,0x8c)],_0x537608(0x1a,0x37)+'ding\x20stati'+'stics')['action'](async _0x3d22ba=>{function _0x28a526(_0x2eb1a0,_0x78cf46){return _0x5d75b2(_0x2eb1a0,_0x78cf46-0x3f1);}function _0x113ff5(_0x4c8aac,_0x3338e8){return _0x5d75b2(_0x3338e8,_0x4c8aac-0x129);}const _0x20ba13={'JXeEL':function(_0x43cc3d,_0x5c217e){return _0x43cc3d/_0x5c217e;},'jbzYr':function(_0xc0789a,_0x246946){return _0xc0789a*_0x246946;},'JGCuJ':function(_0x142409,_0x22576c){return _0x19c4d8['RBuqS'](_0x142409,_0x22576c);},'LijBE':_0x113ff5(0x1c2,0x1b7)+_0x28a526(0x4cd,0x4ad)+_0x28a526(0x4d2,0x4b9)},_0x27b760=new ConfigManager(),_0x2561d6=_0x27b760[_0x113ff5(0x1d0,0x1f3)]();if(!_0x2561d6['embedding']?.[_0x113ff5(0x1b6,0x1ca)]){console[_0x113ff5(0x1d6,0x1d3)](_0x290e70[_0x28a526(0x458,0x46d)](_0x28a526(0x4aa,0x489)+_0x28a526(0x45a,0x46f)+_0x28a526(0x494,0x47c))),console['log'](_0x290e70['gray'](_0x113ff5(0x1eb,0x1d7)+_0x28a526(0x470,0x480)+_0x28a526(0x496,0x4af)+'edding.ena'+_0x28a526(0x4cb,0x4b8)));return;}const _0x1f170e=new MemoryDatabase(_0x2561d6['db'][_0x113ff5(0x1e8,0x1e8)]);try{_0x1f170e[_0x113ff5(0x1c9,0x19e)]();if(_0x3d22ba[_0x28a526(0x4e4,0x4bf)]){showStats(_0x1f170e);return;}const _0x5243bc=_0x19c4d8[_0x113ff5(0x1a3,0x1a5)](_0x33bb17,_0x28a526(0x4b5,0x4bd)+'.')[_0x113ff5(0x1a6,0x181)](),_0x14e769=_0x19c4d8[_0x28a526(0x49d,0x493)](createEmbeddingProvider,_0x2561d6[_0x113ff5(0x1f2,0x1de)],_0x2561d6[_0x28a526(0x4a5,0x4a6)]),_0x1c361e=_0x3d22ba[_0x28a526(0x4be,0x4a5)]?_0x1f170e['listMemori'+'es']({'limit':0x2710}):_0x1f170e[_0x113ff5(0x1a1,0x1b2)+_0x28a526(0x4b0,0x499)+_0x113ff5(0x1bb,0x19f)](0x3e8);if(_0x19c4d8['TDZgZ'](_0x1c361e[_0x28a526(0x46a,0x486)],0x0)){if(_0x19c4d8[_0x113ff5(0x1e6,0x1f6)]('fruhm','KhWTa')){_0x5243bc[_0x28a526(0x49f,0x4b1)](_0x113ff5(0x1a9,0x17e)+_0x28a526(0x4b4,0x4bc));return;}else{const _0x3df1a2=_0xc2d67f[_0x113ff5(0x1d5,0x1ea)+_0x28a526(0x496,0x481)](),_0x368cfd=_0x5da95e[_0x28a526(0x447,0x469)+_0x28a526(0x4bd,0x499)+_0x113ff5(0x1bb,0x19e)](0x2710)[_0x113ff5(0x1be,0x1ad)],_0x4773c4=_0x3df1a2-_0x368cfd;_0x61dde1[_0x113ff5(0x1d6,0x1ed)](_0x5e8f7a[_0x28a526(0x4b8,0x4a0)](_0x113ff5(0x1c5,0x19f))),_0x30b074[_0x28a526(0x4c3,0x49e)]('전체\x20메모리:\x20\x20\x20'+_0x113ff5(0x1cd,0x1f6)+_0x107ce1['cyan'](_0x3df1a2['toString']())),_0x3b9738['log']('임베딩\x20있음:\x20\x20\x20'+_0x28a526(0x486,0x495)+_0xb4073d[_0x113ff5(0x1b1,0x18d)](_0x4773c4[_0x28a526(0x495,0x470)]())+'\x20('+_0x15e7c6[_0x113ff5(0x1c3,0x1b1)](_0x20ba13['JXeEL'](_0x4773c4,_0x3df1a2)*0x64)+'%)'),_0x3809b9[_0x113ff5(0x1d6,0x1ce)](_0x113ff5(0x1cc,0x1d3)+_0x28a526(0x491,0x495)+_0x381cbc['yellow'](_0x368cfd[_0x28a526(0x453,0x470)]())+'\x20('+_0x575f9c['round'](_0x20ba13['jbzYr'](_0x368cfd/_0x3df1a2,0x64))+'%)'),_0x1f2f8f[_0x113ff5(0x1d6,0x1d7)](''),_0x20ba13[_0x113ff5(0x1ec,0x1f7)](_0x368cfd,0x0)&&_0x5503dd['log'](_0x19c948[_0x113ff5(0x1ad,0x18a)](_0x20ba13[_0x113ff5(0x1e3,0x1c4)]));}}_0x5243bc['text']=_0x1c361e[_0x28a526(0x472,0x486)]+('개\x20메모리\x20임베딩\x20'+'생성\x20중...');const _0x29b33e=0x32;let _0x34f601=0x0;for(let _0x447f9f=0x0;_0x19c4d8[_0x113ff5(0x1ca,0x1c7)](_0x447f9f,_0x1c361e[_0x28a526(0x466,0x486)]);_0x447f9f+=_0x29b33e){const _0x1b68ee=_0x1c361e[_0x113ff5(0x1e0,0x1f5)](_0x447f9f,_0x447f9f+_0x29b33e),_0x50ec89=_0x1b68ee[_0x113ff5(0x1c4,0x1b6)](_0x416911=>_0x416911[_0x113ff5(0x1d9,0x1e9)]),_0x3c1edc=await _0x14e769[_0x28a526(0x496,0x484)](_0x50ec89);for(let _0x40567e=0x0;_0x40567e<_0x1b68ee['length'];_0x40567e++){_0x1f170e['saveEmbedd'+_0x113ff5(0x1cf,0x1e9)](_0x1b68ee[_0x40567e]['id'],_0x3c1edc[_0x40567e]),_0x34f601++;}_0x5243bc[_0x28a526(0x4d6,0x4b5)]=_0x34f601+'/'+_0x1c361e[_0x113ff5(0x1be,0x1d6)]+_0x113ff5(0x1ef,0x216)+Math[_0x28a526(0x49a,0x48b)](_0x34f601/_0x1c361e['length']*0x64)+'%)';}_0x5243bc[_0x113ff5(0x1e9,0x1d8)](_0x290e70['green']('✅\x20'+_0x34f601+(_0x113ff5(0x1e4,0x1e0)+'료'))),console[_0x113ff5(0x1d6,0x1c9)](_0x290e70[_0x28a526(0x453,0x475)]('Provider:\x20'+_0x2561d6[_0x113ff5(0x1f2,0x1d2)][_0x113ff5(0x1ab,0x19e)]+'\x20('+_0x2561d6['embedding'][_0x113ff5(0x1ee,0x1e7)]+'D)'));}catch(_0x4c4f21){if(_0x4c4f21 instanceof Error){console[_0x113ff5(0x1d4,0x1ff)](_0x290e70['red']('❌\x20오류:\x20'+_0x4c4f21[_0x28a526(0x47d,0x478)]));throw _0x4c4f21;}console[_0x28a526(0x498,0x49c)](_0x290e70['red'](_0x113ff5(0x1aa,0x1c2)+'류'));throw new Error(_0x19c4d8[_0x28a526(0x453,0x46a)]);}finally{_0x1f170e['close']();}}),_0x1262f0;}function showStats(_0x5c8953){const _0x5ac5fc={'aXXYV':_0xfde749(-0x100,-0xfd),'IksjL':function(_0x51be60,_0x1299e3){return _0x51be60*_0x1299e3;}};function _0x2c1a24(_0xbf37f8,_0x165e7b){return _0x56ad(_0xbf37f8- -0x226,_0x165e7b);}const _0x25472a=_0x5c8953[_0x2c1a24(-0x163,-0x13a)+_0x2c1a24(-0x17f,-0x193)](),_0x2898ed=_0x5c8953['getMemorie'+'sWithoutEm'+_0xfde749(-0xdc,-0x107)](0x2710)['length'],_0x585594=_0x25472a-_0x2898ed;console['log'](_0x290e70['bold'](_0x5ac5fc[_0xfde749(-0xcf,-0xcc)]));function _0xfde749(_0x3cbc00,_0x541179){return _0x56ad(_0x541179- -0x1b0,_0x3cbc00);}console['log'](_0x2c1a24(-0x172,-0x198)+_0xfde749(-0xca,-0xf5)+_0x290e70[_0x2c1a24(-0x17e,-0x182)](_0x25472a[_0x2c1a24(-0x190,-0x171)]())),console['log'](_0xfde749(-0x104,-0x116)+_0x2c1a24(-0x16b,-0x151)+_0x290e70[_0xfde749(-0x11b,-0x111)](_0x585594[_0xfde749(-0x123,-0x11a)]())+'\x20('+Math[_0xfde749(-0xeb,-0xff)](_0x5ac5fc[_0xfde749(-0xfa,-0x10b)](_0x585594/_0x25472a,0x64))+'%)'),console[_0x2c1a24(-0x162,-0x16a)](_0xfde749(-0x10c,-0xf6)+_0x2c1a24(-0x16b,-0x182)+_0x290e70[_0xfde749(-0xf3,-0x11d)](_0x2898ed[_0x2c1a24(-0x190,-0x1a8)]())+'\x20('+Math[_0x2c1a24(-0x175,-0x166)](_0x5ac5fc['IksjL'](_0x2898ed/_0x25472a,0x64))+'%)'),console[_0xfde749(-0xc0,-0xec)](''),_0x2898ed>0x0&&console[_0x2c1a24(-0x162,-0x149)](_0x290e70[_0x2c1a24(-0x18b,-0x1b1)](_0xfde749(-0x102,-0x100)+_0x2c1a24(-0x153,-0x16e)+_0xfde749(-0xb5,-0xd1)));}
|
|
@@ -1,103 +1 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Extract Command
|
|
3
|
-
*
|
|
4
|
-
* 기존 Claude Code 세션에서 메모리를 추출합니다.
|
|
5
|
-
*/
|
|
6
|
-
import { Command } from 'commander';
|
|
7
|
-
import chalk from 'chalk';
|
|
8
|
-
import ora from 'ora';
|
|
9
|
-
import { ConfigManager } from '../../config/manager.js';
|
|
10
|
-
import { MemoryDatabase } from '../../db/database.js';
|
|
11
|
-
import { findSessionFiles, parseSessionFile } from '../../session/parser.js';
|
|
12
|
-
import { extractMemories } from '../../extraction/extractor.js';
|
|
13
|
-
export function extractCommand() {
|
|
14
|
-
return new Command('extract')
|
|
15
|
-
.description('Extract memories from Claude Code sessions')
|
|
16
|
-
.option('-p, --project <path>', 'Specific project path')
|
|
17
|
-
.option('-l, --limit <n>', 'Max sessions to process', '10')
|
|
18
|
-
.option('--all', 'Process all sessions without limit')
|
|
19
|
-
.option('--dry-run', 'Show what would be extracted without saving')
|
|
20
|
-
.action((options) => {
|
|
21
|
-
const config = new ConfigManager().load();
|
|
22
|
-
const db = new MemoryDatabase(config.db.path);
|
|
23
|
-
try {
|
|
24
|
-
db.initialize();
|
|
25
|
-
const spinner = ora('Finding session files...').start();
|
|
26
|
-
const sessions = findSessionFiles(options.project);
|
|
27
|
-
if (sessions.length === 0) {
|
|
28
|
-
spinner.fail('No session files found.');
|
|
29
|
-
return;
|
|
30
|
-
}
|
|
31
|
-
spinner.succeed(`Found ${chalk.cyan(sessions.length)} session file(s)`);
|
|
32
|
-
const limit = options.all ? sessions.length : parseInt(options.limit, 10);
|
|
33
|
-
let totalExtracted = 0;
|
|
34
|
-
let totalFiltered = 0;
|
|
35
|
-
let processed = 0;
|
|
36
|
-
let skipped = 0;
|
|
37
|
-
const progressSpinner = ora({
|
|
38
|
-
text: 'Processing sessions...',
|
|
39
|
-
prefixText: chalk.dim(''),
|
|
40
|
-
}).start();
|
|
41
|
-
for (const session of sessions.slice(0, limit)) {
|
|
42
|
-
// 이미 처리된 세션 건너뛰기
|
|
43
|
-
const existing = db.getSession(session.sessionId);
|
|
44
|
-
if (existing) {
|
|
45
|
-
skipped++;
|
|
46
|
-
progressSpinner.text = `Processing... (${processed}/${limit}, skipped: ${skipped})`;
|
|
47
|
-
continue;
|
|
48
|
-
}
|
|
49
|
-
const messages = parseSessionFile(session.filePath);
|
|
50
|
-
if (messages.length === 0) {
|
|
51
|
-
skipped++;
|
|
52
|
-
progressSpinner.text = `Processing... (${processed}/${limit}, skipped: ${skipped})`;
|
|
53
|
-
continue;
|
|
54
|
-
}
|
|
55
|
-
const result = extractMemories(messages, session.projectPath);
|
|
56
|
-
if (options.dryRun) {
|
|
57
|
-
progressSpinner.stop();
|
|
58
|
-
console.log(chalk.dim(`\n[DRY RUN] Session: ${session.sessionId}`));
|
|
59
|
-
console.log(chalk.dim(` Messages: ${result.stats.totalMessages}`));
|
|
60
|
-
console.log(chalk.blue(` Would extract: ${result.memories.length} memories`));
|
|
61
|
-
console.log(chalk.yellow(` Would filter: ${result.stats.filteredSensitive} sensitive items`));
|
|
62
|
-
for (const m of result.memories) {
|
|
63
|
-
console.log(chalk.dim(` - [${m.category}] ${m.content.slice(0, 80)}...`));
|
|
64
|
-
}
|
|
65
|
-
progressSpinner.start();
|
|
66
|
-
}
|
|
67
|
-
else {
|
|
68
|
-
for (const memory of result.memories) {
|
|
69
|
-
db.createMemory({
|
|
70
|
-
...memory,
|
|
71
|
-
sessionId: session.sessionId,
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
db.saveSession(session.sessionId, session.projectPath, messages.length);
|
|
75
|
-
totalExtracted += result.memories.length;
|
|
76
|
-
totalFiltered += result.stats.filteredSensitive;
|
|
77
|
-
}
|
|
78
|
-
processed++;
|
|
79
|
-
progressSpinner.text = `Processing... (${processed}/${limit}, skipped: ${skipped})`;
|
|
80
|
-
}
|
|
81
|
-
progressSpinner.stop();
|
|
82
|
-
// 최종 요약
|
|
83
|
-
console.log(chalk.bold('\n📊 Extraction Summary:\n'));
|
|
84
|
-
if (options.dryRun) {
|
|
85
|
-
console.log(` ${chalk.dim('Mode:')} ${chalk.yellow('[DRY RUN]')}`);
|
|
86
|
-
console.log(` ${chalk.dim('Would process:')} ${chalk.cyan(processed)} sessions`);
|
|
87
|
-
console.log(` ${chalk.dim('Skipped:')} ${chalk.gray(skipped)} sessions (already processed)`);
|
|
88
|
-
}
|
|
89
|
-
else {
|
|
90
|
-
console.log(` ${chalk.dim('Total sessions:')} ${chalk.cyan(sessions.length)}`);
|
|
91
|
-
console.log(` ${chalk.dim('Processed:')} ${chalk.green(processed)}`);
|
|
92
|
-
console.log(` ${chalk.dim('Skipped:')} ${chalk.gray(skipped)} (already processed)`);
|
|
93
|
-
console.log(` ${chalk.dim('Extracted:')} ${chalk.green(totalExtracted)} memories`);
|
|
94
|
-
console.log(` ${chalk.dim('Filtered:')} ${chalk.yellow(totalFiltered)} sensitive items`);
|
|
95
|
-
}
|
|
96
|
-
console.log(); // 빈 줄
|
|
97
|
-
}
|
|
98
|
-
finally {
|
|
99
|
-
db.close();
|
|
100
|
-
}
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
//# sourceMappingURL=extract.js.map
|
|
1
|
+
(function(_0x501cf1,_0x1c6bdc){function _0x57a8dd(_0x3294a6,_0x9c46c7){return _0x381b(_0x9c46c7-0x232,_0x3294a6);}function _0x23a1a2(_0x5cadf3,_0x45ee1e){return _0x381b(_0x45ee1e-0x342,_0x5cadf3);}const _0x57bbf3=_0x501cf1();while(!![]){try{const _0x1d4f3a=parseInt(_0x57a8dd(0x3de,0x3e4))/0x1*(-parseInt(_0x57a8dd(0x3d1,0x39d))/0x2)+-parseInt(_0x57a8dd(0x41b,0x3fa))/0x3+-parseInt(_0x23a1a2(0x4e8,0x4c1))/0x4*(parseInt(_0x23a1a2(0x486,0x49f))/0x5)+-parseInt(_0x23a1a2(0x49c,0x4c8))/0x6+parseInt(_0x23a1a2(0x4b5,0x4b4))/0x7+-parseInt(_0x57a8dd(0x39c,0x3ca))/0x8+parseInt(_0x23a1a2(0x4e3,0x505))/0x9*(parseInt(_0x57a8dd(0x401,0x3c9))/0xa);if(_0x1d4f3a===_0x1c6bdc)break;else _0x57bbf3['push'](_0x57bbf3['shift']());}catch(_0x2abf76){_0x57bbf3['push'](_0x57bbf3['shift']());}}}(_0x3829,0x1ce8e));function _0x381b(_0x1a2523,_0x430cf5){_0x1a2523=_0x1a2523-0x145;const _0x3829b3=_0x3829();let _0x381bad=_0x3829b3[_0x1a2523];if(_0x381b['WTVXlK']===undefined){var _0x5884a2=function(_0x1af32e){const _0xe4ea44='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0xf3613c='',_0x2b5928='';for(let _0x29e3f7=0x0,_0x445e97,_0x1071f3,_0x472cf4=0x0;_0x1071f3=_0x1af32e['charAt'](_0x472cf4++);~_0x1071f3&&(_0x445e97=_0x29e3f7%0x4?_0x445e97*0x40+_0x1071f3:_0x1071f3,_0x29e3f7++%0x4)?_0xf3613c+=String['fromCharCode'](0xff&_0x445e97>>(-0x2*_0x29e3f7&0x6)):0x0){_0x1071f3=_0xe4ea44['indexOf'](_0x1071f3);}for(let _0x1d051a=0x0,_0x5aae50=_0xf3613c['length'];_0x1d051a<_0x5aae50;_0x1d051a++){_0x2b5928+='%'+('00'+_0xf3613c['charCodeAt'](_0x1d051a)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x2b5928);};_0x381b['iwblRM']=_0x5884a2,_0x381b['iznQnX']={},_0x381b['WTVXlK']=!![];}const _0x1126f0=_0x3829b3[0x0],_0x29b553=_0x1a2523+_0x1126f0,_0x10240a=_0x381b['iznQnX'][_0x29b553];return!_0x10240a?(_0x381bad=_0x381b['iwblRM'](_0x381bad),_0x381b['iznQnX'][_0x29b553]=_0x381bad):_0x381bad=_0x10240a,_0x381bad;}import{Command}from'commander';import _0x256dff from'chalk';import _0xd19f77 from'ora';import{ConfigManager}from'../../config/manager.js';import{MemoryDatabase}from'../../db/database.js';import{findSessionFiles,parseSessionFile}from'../../session/parser.js';import{extractMemories}from'../../extraction/extractor.js';export function extractCommand(){function _0x52b6d2(_0x2976cb,_0x311af8){return _0x381b(_0x311af8-0x10,_0x2976cb);}const _0x228e5e={'rgDRS':function(_0x37a9ca,_0x1d527d){return _0x37a9ca(_0x1d527d);},'djwFN':function(_0xc94dc4,_0x1445ac){return _0xc94dc4===_0x1445ac;},'hgqko':_0x430439(0x27d,0x272)+'\x20files\x20fou'+_0x430439(0x2da,0x2d8),'kiUgp':'Processing'+_0x430439(0x2d1,0x2c8)+'..','wqXkQ':function(_0x2f2ae1,_0x10d71c){return _0x2f2ae1===_0x10d71c;},'jUlds':_0x52b6d2(0x1da,0x1c1),'BwSwO':_0x52b6d2(0x178,0x171),'gPXkF':function(_0x24bca3,_0x2fd914,_0x284111){return _0x24bca3(_0x2fd914,_0x284111);},'UyqUT':'Ujxxe','YkNZd':_0x52b6d2(0x1ad,0x184),'PaUUB':function(_0x47a0e9,_0x56f678){return _0x47a0e9!==_0x56f678;},'fpFcA':_0x430439(0x280,0x244),'VSwGr':_0x52b6d2(0x1ce,0x1b7),'FGwuW':_0x430439(0x298,0x29e)+_0x430439(0x26c,0x252),'UbqDM':_0x430439(0x270,0x235),'AZOeR':'Total\x20sess'+_0x52b6d2(0x1b7,0x1c0),'qROuY':'bvEUg','lOeZk':_0x430439(0x293,0x2d0)+_0x430439(0x287,0x299),'IVbQK':_0x430439(0x279,0x25f)+'ns\x20to\x20proc'+'ess','NIwDr':_0x430439(0x265,0x284),'wStQW':_0x52b6d2(0x174,0x1a1)};function _0x430439(_0x552c03,_0x1bf371){return _0x381b(_0x552c03-0x116,_0x1bf371);}return new Command('extract')[_0x52b6d2(0x190,0x1b6)+'n'](_0x430439(0x25f,0x2a0)+_0x52b6d2(0x1c5,0x1b5)+_0x52b6d2(0x1b5,0x1ba)+'ode\x20sessio'+'ns')[_0x52b6d2(0x1b6,0x19e)]('-p,\x20--proj'+_0x52b6d2(0x126,0x15e),_0x430439(0x2b8,0x2f0)+_0x430439(0x282,0x248)+'h')[_0x430439(0x2a4,0x286)](_0x228e5e[_0x430439(0x261,0x276)],_0x228e5e['IVbQK'],'10')[_0x52b6d2(0x1aa,0x19e)](_0x228e5e[_0x430439(0x2a1,0x265)],_0x430439(0x2d4,0x2a1)+_0x430439(0x29d,0x2c5)+_0x430439(0x26b,0x274)+_0x52b6d2(0x194,0x185))[_0x430439(0x2a4,0x278)](_0x228e5e[_0x52b6d2(0x190,0x15c)],_0x52b6d2(0x177,0x175)+'would\x20be\x20e'+_0x430439(0x29f,0x288)+_0x430439(0x26e,0x22e)+_0x430439(0x2a5,0x2dc))[_0x430439(0x278,0x2a8)](_0x33510e=>{const _0x39ff1c=new ConfigManager()[_0x4c0120(0x4d3,0x50d)]();function _0x4c0120(_0x506a0b,_0x4be570){return _0x430439(_0x4be570-0x27b,_0x506a0b);}const _0x2a278c=new MemoryDatabase(_0x39ff1c['db'][_0x3e032f(-0x16e,-0x181)]);function _0x3e032f(_0x47a5c7,_0x34df58){return _0x430439(_0x47a5c7- -0x425,_0x34df58);}try{_0x2a278c['initialize']();const _0x1be099=_0x228e5e[_0x3e032f(-0x14f,-0x12c)](_0xd19f77,'Finding\x20se'+_0x4c0120(0x4eb,0x4d9)+'s...')['start'](),_0xe78146=_0x228e5e[_0x3e032f(-0x14f,-0x184)](findSessionFiles,_0x33510e[_0x4c0120(0x510,0x4f9)]);if(_0x228e5e[_0x4c0120(0x55d,0x53c)](_0xe78146['length'],0x0)){_0x1be099['fail'](_0x228e5e['hgqko']);return;}_0x1be099['succeed'](_0x3e032f(-0x160,-0x17e)+_0x256dff[_0x3e032f(-0x17d,-0x178)](_0xe78146[_0x4c0120(0x4fd,0x514)])+(_0x4c0120(0x54d,0x516)+_0x4c0120(0x509,0x524)));const _0x22a7f3=_0x33510e[_0x3e032f(-0x152,-0x153)]?_0xe78146[_0x4c0120(0x509,0x514)]:parseInt(_0x33510e[_0x4c0120(0x549,0x52d)],0xa);let _0x30eecd=0x0,_0x17d8ff=0x0,_0x1ab49e=0x0,_0x3b1ae5=0x0;const _0xefaa18=_0xd19f77({'text':_0x228e5e[_0x3e032f(-0x1a9,-0x1be)],'prefixText':_0x256dff[_0x3e032f(-0x19f,-0x184)]('')})['start']();for(const _0x1a4756 of _0xe78146[_0x3e032f(-0x183,-0x18a)](0x0,_0x22a7f3)){if(_0x228e5e['wqXkQ']('sJiYF',_0x4c0120(0x4e2,0x4e1))){for(const _0x1a4c18 of _0x347e95[_0x3e032f(-0x170,-0x178)]){_0x3a8277[_0x4c0120(0x533,0x556)+'ry']({..._0x1a4c18,'sessionId':_0x21cf95[_0x3e032f(-0x172,-0x152)]});}_0x2318a5['saveSessio'+'n'](_0x352f54[_0x3e032f(-0x172,-0x19e)],_0xadb8b1[_0x3e032f(-0x149,-0x12c)+'h'],_0x2dea8c[_0x3e032f(-0x18c,-0x192)]),_0xcf4ce8+=_0x99b114[_0x4c0120(0x536,0x530)][_0x4c0120(0x538,0x514)],_0x5bc0b1+=_0x680a3b[_0x3e032f(-0x194,-0x1ad)][_0x3e032f(-0x1b6,-0x1aa)+_0x3e032f(-0x15b,-0x11d)];}else{const _0x5a3526=_0x2a278c[_0x4c0120(0x584,0x54a)](_0x1a4756['sessionId']);if(_0x5a3526){_0x3b1ae5++,_0xefaa18[_0x4c0120(0x518,0x4ef)]=_0x4c0120(0x51e,0x549)+_0x4c0120(0x514,0x515)+_0x1ab49e+'/'+_0x22a7f3+(_0x4c0120(0x4ad,0x4e5)+'\x20')+_0x3b1ae5+')';continue;}const _0x3ae791=parseSessionFile(_0x1a4756[_0x4c0120(0x50a,0x4d8)]);if(_0x3ae791[_0x3e032f(-0x18c,-0x1c7)]===0x0){if(_0x228e5e[_0x4c0120(0x57e,0x54d)]!==_0x228e5e[_0x3e032f(-0x1be,-0x18b)]){_0x3b1ae5++,_0xefaa18[_0x4c0120(0x4f7,0x4ef)]=_0x4c0120(0x556,0x549)+'...\x20('+_0x1ab49e+'/'+_0x22a7f3+(_0x4c0120(0x501,0x4e5)+'\x20')+_0x3b1ae5+')';continue;}else _0x1f0e19[_0x3e032f(-0x185,-0x18f)]();}const _0x5d3b66=_0x228e5e[_0x3e032f(-0x18e,-0x1be)](extractMemories,_0x3ae791,_0x1a4756[_0x3e032f(-0x149,-0x17b)+'h']);if(_0x33510e[_0x4c0120(0x52b,0x527)]){if(_0x228e5e[_0x4c0120(0x573,0x53c)](_0x228e5e['UyqUT'],_0x4c0120(0x4fb,0x4db))){_0xefaa18[_0x3e032f(-0x1ab,-0x1ae)](),console[_0x4c0120(0x4fa,0x509)](_0x256dff[_0x4c0120(0x533,0x501)]('\x0a[DRY\x20RUN]'+_0x4c0120(0x501,0x52a)+_0x1a4756[_0x3e032f(-0x172,-0x1b0)])),console['log'](_0x256dff['dim'](_0x3e032f(-0x17b,-0x177)+':\x20'+_0x5d3b66[_0x3e032f(-0x194,-0x189)][_0x4c0120(0x4de,0x4de)+_0x4c0120(0x4df,0x51e)])),console[_0x3e032f(-0x197,-0x154)](_0x256dff[_0x3e032f(-0x163,-0x165)](_0x3e032f(-0x175,-0x1a5)+_0x4c0120(0x51f,0x52f)+_0x5d3b66[_0x4c0120(0x542,0x530)][_0x4c0120(0x548,0x514)]+_0x4c0120(0x566,0x535))),console['log'](_0x256dff[_0x4c0120(0x531,0x50b)](_0x4c0120(0x55a,0x52c)+'lter:\x20'+_0x5d3b66['stats']['filteredSe'+_0x3e032f(-0x15b,-0x16e)]+(_0x3e032f(-0x191,-0x161)+'\x20items')));for(const _0x55b49b of _0x5d3b66[_0x3e032f(-0x170,-0x1ad)]){if(_0x228e5e[_0x3e032f(-0x164,-0x1a1)]('wSedi',_0x228e5e[_0x4c0120(0x52f,0x53e)])){_0x2b5928['fail'](_0x3e032f(-0x1a8,-0x1ae)+_0x4c0120(0x52b,0x55c)+_0x3e032f(-0x14b,-0x161));return;}else console[_0x4c0120(0x537,0x509)](_0x256dff['dim']('\x20\x20\x20\x20-\x20['+_0x55b49b[_0x4c0120(0x534,0x534)]+']\x20'+_0x55b49b[_0x3e032f(-0x1c9,-0x208)][_0x3e032f(-0x183,-0x1b5)](0x0,0x50)+'...'));}_0xefaa18['start']();}else{const _0x4a9912=_0x3e032f(-0x146,-0x133)['split']('|');let _0x4b11ea=0x0;while(!![]){switch(_0x4a9912[_0x4b11ea++]){case'0':_0xbef5d1[_0x4c0120(0x4d4,0x509)]('\x20\x20'+_0x8e449[_0x4c0120(0x4fc,0x501)](_0x3e032f(-0x1a0,-0x19a)+_0x3e032f(-0x15f,-0x176))+'\x20\x20'+_0x233f33[_0x4c0120(0x527,0x523)](_0x2e1fc7[_0x3e032f(-0x18c,-0x178)]));continue;case'1':_0x31c336['log']('\x20\x20'+_0x463721[_0x4c0120(0x536,0x501)](_0x4c0120(0x539,0x531))+'\x20\x20\x20\x20\x20\x20\x20'+_0x3f83b[_0x3e032f(-0x15a,-0x170)](_0x57b40));continue;case'2':_0x1bab18[_0x4c0120(0x531,0x509)]('\x20\x20'+_0x116305[_0x4c0120(0x53c,0x501)](_0x4c0120(0x548,0x558))+_0x3e032f(-0x17a,-0x16b)+_0x280edd['green'](_0x58ce19)+_0x3e032f(-0x16b,-0x182));continue;case'3':_0x46a388[_0x4c0120(0x4dd,0x509)]('\x20\x20'+_0x410ebf[_0x3e032f(-0x19f,-0x1dc)](_0x4c0120(0x4c9,0x4eb))+_0x3e032f(-0x199,-0x1a9)+_0x3eab95[_0x4c0120(0x4af,0x4e8)](_0x497f1a)+(_0x3e032f(-0x19c,-0x1c9)+_0x3e032f(-0x161,-0x194)));continue;case'4':_0x1ed178[_0x4c0120(0x4f1,0x509)]('\x20\x20'+_0x29013f['dim'](_0x4c0120(0x52e,0x511))+_0x4c0120(0x4fd,0x53a)+_0x2186c6[_0x4c0120(0x4df,0x50b)](_0x460af7)+(_0x3e032f(-0x191,-0x1b1)+'\x20items'));continue;}break;}}}else{for(const _0xf2d278 of _0x5d3b66[_0x3e032f(-0x170,-0x179)]){_0x228e5e[_0x4c0120(0x523,0x539)](_0x228e5e[_0x4c0120(0x4d7,0x4ec)],_0x3e032f(-0x196,-0x165))?_0x2a278c[_0x3e032f(-0x14a,-0x14f)+'ry']({..._0xf2d278,'sessionId':_0x1a4756[_0x3e032f(-0x172,-0x135)]}):_0x3b68f6['log'](_0x2f50ee[_0x4c0120(0x50c,0x501)](_0x4c0120(0x510,0x4d6)+_0x2a4755[_0x3e032f(-0x16c,-0x153)]+']\x20'+_0x578638[_0x4c0120(0x502,0x4d7)][_0x3e032f(-0x183,-0x1a5)](0x0,0x50)+_0x3e032f(-0x1bc,-0x1eb)));}_0x2a278c[_0x4c0120(0x50b,0x54b)+'n'](_0x1a4756['sessionId'],_0x1a4756[_0x3e032f(-0x149,-0x16b)+'h'],_0x3ae791[_0x3e032f(-0x18c,-0x1cc)]),_0x30eecd+=_0x5d3b66[_0x3e032f(-0x170,-0x15a)][_0x3e032f(-0x18c,-0x1aa)],_0x17d8ff+=_0x5d3b66[_0x4c0120(0x505,0x50c)][_0x3e032f(-0x1b6,-0x1bd)+_0x3e032f(-0x15b,-0x14f)];}_0x1ab49e++,_0xefaa18[_0x4c0120(0x4f4,0x4ef)]=_0x3e032f(-0x157,-0x16f)+'...\x20('+_0x1ab49e+'/'+_0x22a7f3+(_0x4c0120(0x527,0x4e5)+'\x20')+_0x3b1ae5+')';}}_0xefaa18[_0x4c0120(0x4bf,0x4f5)](),console[_0x4c0120(0x501,0x509)](_0x256dff[_0x3e032f(-0x1af,-0x196)]('\x0a📊\x20Extract'+_0x4c0120(0x50d,0x4fe)+_0x3e032f(-0x159,-0x179)));if(_0x33510e[_0x3e032f(-0x179,-0x164)])console[_0x4c0120(0x502,0x509)]('\x20\x20'+_0x256dff[_0x4c0120(0x4fb,0x501)](_0x228e5e[_0x3e032f(-0x14d,-0x153)])+('\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+'\x20\x20')+_0x256dff[_0x4c0120(0x533,0x50b)]('[DRY\x20RUN]')),console[_0x4c0120(0x532,0x509)]('\x20\x20'+_0x256dff[_0x4c0120(0x4c6,0x501)](_0x228e5e[_0x3e032f(-0x1b3,-0x19c)])+'\x20\x20\x20'+_0x256dff[_0x4c0120(0x4fa,0x523)](_0x1ab49e)+_0x4c0120(0x528,0x4fa)),console[_0x3e032f(-0x197,-0x17b)]('\x20\x20'+_0x256dff['dim'](_0x228e5e[_0x3e032f(-0x17f,-0x14d)])+_0x4c0120(0x4c5,0x507)+_0x256dff[_0x3e032f(-0x1b8,-0x180)](_0x3b1ae5)+('\x20sessions\x20'+_0x3e032f(-0x14e,-0x178)+_0x3e032f(-0x158,-0x126)));else{const _0x4cdffd=_0x3e032f(-0x1a1,-0x188)[_0x4c0120(0x53a,0x544)]('|');let _0x2e44ed=0x0;while(!![]){switch(_0x4cdffd[_0x2e44ed++]){case'0':console['log']('\x20\x20'+_0x256dff[_0x3e032f(-0x19f,-0x1db)](_0x228e5e[_0x4c0120(0x56e,0x550)])+'\x20\x20'+_0x256dff['cyan'](_0xe78146[_0x4c0120(0x505,0x514)]));continue;case'1':console[_0x3e032f(-0x197,-0x188)]('\x20\x20'+_0x256dff[_0x3e032f(-0x19f,-0x1c3)](_0x4c0120(0x536,0x511))+_0x4c0120(0x50b,0x53a)+_0x256dff['yellow'](_0x17d8ff)+(_0x3e032f(-0x191,-0x190)+_0x3e032f(-0x1b0,-0x1e5)));continue;case'2':console['log']('\x20\x20'+_0x256dff[_0x4c0120(0x510,0x501)](_0x228e5e['UbqDM'])+'\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0x256dff[_0x3e032f(-0x1b8,-0x1ba)](_0x3b1ae5)+(_0x3e032f(-0x19c,-0x1d5)+'processed)'));continue;case'3':console[_0x4c0120(0x4d0,0x509)]('\x20\x20'+_0x256dff[_0x3e032f(-0x19f,-0x1cf)](_0x3e032f(-0x16f,-0x1a9))+_0x3e032f(-0x17a,-0x195)+_0x256dff[_0x4c0120(0x507,0x546)](_0x1ab49e));continue;case'4':console['log']('\x20\x20'+_0x256dff[_0x4c0120(0x53c,0x501)](_0x3e032f(-0x148,-0x143))+_0x3e032f(-0x17a,-0x170)+_0x256dff[_0x3e032f(-0x15a,-0x14b)](_0x30eecd)+_0x3e032f(-0x16b,-0x139));continue;}break;}}console['log']();}finally{_0x228e5e[_0x3e032f(-0x198,-0x1ce)]('rEAgW',_0x228e5e['qROuY'])?(_0x281b66[_0x4c0120(0x536,0x509)]('\x20\x20'+_0x4e193f[_0x3e032f(-0x19f,-0x1e1)](_0x3e032f(-0x168,-0x172))+(_0x3e032f(-0x145,-0x146)+'\x20\x20')+_0x52dcf9['yellow'](_0x4c0120(0x4e5,0x519))),_0x231b2b[_0x4c0120(0x53f,0x509)]('\x20\x20'+_0x5ea9f9[_0x4c0120(0x545,0x501)]('Would\x20proc'+_0x3e032f(-0x1b9,-0x1e8))+_0x4c0120(0x4e0,0x4e3)+_0x44fa50[_0x3e032f(-0x17d,-0x16f)](_0x46039a)+_0x4c0120(0x51b,0x4fa)),_0x519b9c[_0x3e032f(-0x197,-0x175)]('\x20\x20'+_0x421671[_0x3e032f(-0x19f,-0x1e1)]('Skipped:')+_0x4c0120(0x510,0x507)+_0x27d23a[_0x4c0120(0x4cc,0x4e8)](_0x54ac85)+('\x20sessions\x20'+'(already\x20p'+_0x3e032f(-0x158,-0x17a)))):_0x2a278c['close']();}});}function _0x3829(){const _0x3602cb=['mtC1nJu5mNfhshHluq','ifnLC3nPB246ia','icbxB3vSzcbLEa','icbxB3vSzcbMAq','BgLTAxq','C2vZC2LVBKLK','DhjHy3q6ia','BwvTB3jPzxm','uhjVy2vZC2vKoG','Cgf0Aa','u3bLy2LMAwmGCa','y2f0zwDVCNK','ig1LBw9YAwvZ','Bw9YAwvZigzYBW','zgvZy3jPChrPBW','tw9KztO','ugfvvui','icaGicaGica','BsbdBgf1zguGqW','zgP3rK4','yMX1zq','wwTowMq','ChjVy2vZC2vKkq','rM91BMqG','Aw9UCZO','thPxse0','otK4nZrmDfbrAwm','C3bSAxq','BNnPDgL2zq','z3jLzw4','EtOk','CM9JzxnZzwqP','uhjVy2vZC2LUzW','z2v0u2vZC2LVBG','C2f2zvnLC3nPBW','ihnLC3nPB25ZlG','ALvSzhm','ywXS','uhjVy2vZCYbHBa','qvPpzvi','CMDeuLm','kgfSCMvHzhKGCa','vLn3r3i','ote3ota3m1D2zNPprq','BMqU','y3jLyxrLtwvTBW','ChjVAMvJDfbHDa','rxH0CMfJDgvKoG','nty4odyWsLLxz3Pr','mhWXFdn8mNW0','icaGicaGicaGia','igzPBgvZigzVDq','icaGic0GwW','y29UDgvUDa','zMLSzvbHDgG','C3nPB24GzMLSzq','rxH0CMfJDcbTzq','vwP4Egu','Be9LwMS','D1n0uvC','Dg90ywXnzxnZyq','zwn0idXWyxrOpG','ls1HBgW','rg1wtgO','qNDtD08','icaG','lI4U','lcbZA2LWCgvKoG','ihDPDgHVDxqGBa','zxnZoG','z3jHEq','AxrOB3v0ihnHDG','zMLSDgvYzwrtzq','u2TPChbLzdO','zNbgy0e','rKD3DvC','odaYndvNALnpwvu','Dgv4Da','igL0zw1Z','yM9Sza','whbXEva','ywn0Aw9U','twf4ihnLC3nPBW','C3rVCa','u2HVDYb3Agf0ia','A2Lvz3a','tM8GC2vZC2LVBG','ChjVAMvJDa','ihnLC3nPB25Z','DfrXuM0','nhfUsNHUqG','CM9Qzwn0ihbHDa','Aw9Uifn1Bw1HCG','mhWZFdj8nhWX','vg90ywWGC2vZCW','zgLT','Dca8BJ4','nZK4mZvJv0fHAva','icHHBhjLywr5ia','tffSuNK','Aw1PDa','icaGicaGicaG','D3fyA1e','Bg9N','CuP2BeG','EwvSBg93','C3rHDhm','Bg9Hza','lwWSic0TBgLTAq','ihnLBNnPDgL2zq','mJbqu1b3Avi','rMLSDgvYzwq6','z1byA0y','v291BgqGChjVyW','BgvUz3rO','lI4UicG','ihnLC3nPB24GzG','mtm0mJiWnNLvzLbdyq','BcbZzxnZAw9UCW','w0rswsbsvu5D','EhrYywn0zwqGDW','y2XVC2u','tKL3rhi','C2XPy2u','z2vZ','B3b0Aw9U','Aw5N','vwjXre0','ls1KCNKTCNvU','y3LHBG','AwXLkhmP','icbnzxnZywDLCW','icaGicaGia','zhj5uNvU','mtbAwMn4Cue'];_0x3829=function(){return _0x3602cb;};return _0x3829();}
|