a2a-memory 0.11.4 → 0.11.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (262) hide show
  1. package/LICENSE +7 -19
  2. package/README.md +1 -1
  3. package/dist/a2a/client.js +1 -252
  4. package/dist/a2a/discovery.js +1 -115
  5. package/dist/a2a/index.js +1 -8
  6. package/dist/a2a/types.js +1 -42
  7. package/dist/adapters/anthropic.js +1 -117
  8. package/dist/chunking/chunker.js +1 -163
  9. package/dist/claude/sync.js +1 -294
  10. package/dist/cli/commands/add.js +1 -80
  11. package/dist/cli/commands/claude-sync.js +1 -70
  12. package/dist/cli/commands/cleanup.js +1 -83
  13. package/dist/cli/commands/config.js +1 -73
  14. package/dist/cli/commands/edit.js +1 -69
  15. package/dist/cli/commands/embed.js +1 -92
  16. package/dist/cli/commands/extract.js +1 -103
  17. package/dist/cli/commands/health.js +1 -105
  18. package/dist/cli/commands/list.js +1 -49
  19. package/dist/cli/commands/migrate-chunks.js +1 -205
  20. package/dist/cli/commands/migrate-file-refs.js +1 -183
  21. package/dist/cli/commands/proficiency.js +1 -146
  22. package/dist/cli/commands/rm.js +1 -64
  23. package/dist/cli/commands/search.js +1 -89
  24. package/dist/cli/commands/setup-wizard.js +1 -387
  25. package/dist/cli/commands/setup.js +1 -170
  26. package/dist/cli/commands/skill.js +1 -151
  27. package/dist/cli/commands/status.js +1 -70
  28. package/dist/cli/commands/sync.js +1 -202
  29. package/dist/cli/commands/team.js +1 -142
  30. package/dist/cli/index.js +1 -87
  31. package/dist/config/manager.js +1 -372
  32. package/dist/db/database.d.ts +10 -1
  33. package/dist/db/database.js +1 -1367
  34. package/dist/embedding/e5-provider.js +1 -147
  35. package/dist/embedding/index.js +1 -34
  36. package/dist/embedding/local-provider.js +1 -157
  37. package/dist/embedding/openai-provider.js +1 -92
  38. package/dist/embedding/quantization.js +1 -89
  39. package/dist/extraction/dedup-manager.js +1 -161
  40. package/dist/extraction/emotion-filter.js +1 -33
  41. package/dist/extraction/extractor.js +1 -642
  42. package/dist/extraction/file-reference.js +1 -77
  43. package/dist/extraction/filter.js +1 -85
  44. package/dist/extraction/scorer.js +1 -142
  45. package/dist/extraction/similarity.js +1 -85
  46. package/dist/hooks/client-factory.js +1 -44
  47. package/dist/hooks/post-tool-use.js +1 -470
  48. package/dist/hooks/pre-compact.js +1 -209
  49. package/dist/hooks/session-end.d.ts +1 -0
  50. package/dist/hooks/session-end.js +1 -623
  51. package/dist/hooks/session-start.js +1 -549
  52. package/dist/hooks/shared.js +1 -110
  53. package/dist/hooks/user-prompt-submit.js +1 -316
  54. package/dist/i18n/index.js +1 -2
  55. package/dist/i18n/messages.js +1 -150
  56. package/dist/index.js +1 -43
  57. package/dist/lifecycle/cleanup-scheduler.js +1 -137
  58. package/dist/lifecycle/cleanup.js +1 -116
  59. package/dist/lifecycle/index.js +1 -13
  60. package/dist/lifecycle/quality-scorer.js +1 -46
  61. package/dist/lifecycle/tiering.js +1 -246
  62. package/dist/llm/client.js +1 -226
  63. package/dist/llm/index.js +1 -5
  64. package/dist/proficiency/actr-engine.js +1 -106
  65. package/dist/proficiency/detection.js +1 -77
  66. package/dist/proficiency/index.js +1 -9
  67. package/dist/proficiency/tracker.js +1 -173
  68. package/dist/proficiency/types.js +1 -8
  69. package/dist/providers/adapters.js +1 -140
  70. package/dist/providers/detector.js +1 -57
  71. package/dist/search/adaptive-router.js +1 -93
  72. package/dist/search/index.js +1 -9
  73. package/dist/search/ranker.js +1 -171
  74. package/dist/search/reranker.js +1 -155
  75. package/dist/session/parser.js +1 -130
  76. package/dist/skill/evaluator.js +1 -509
  77. package/dist/skill/index.js +1 -7
  78. package/dist/skill/types.js +1 -7
  79. package/dist/sync/client.d.ts +1 -0
  80. package/dist/sync/client.js +1 -597
  81. package/dist/sync/encryption.js +1 -203
  82. package/dist/sync/index.js +1 -12
  83. package/dist/sync/queue.js +1 -199
  84. package/dist/sync/scheduler.js +1 -140
  85. package/dist/sync/synchronizer.js +1 -241
  86. package/dist/sync/team-synchronizer.js +1 -204
  87. package/dist/sync/vector-clock.js +1 -70
  88. package/dist/types/index.d.ts +2 -1
  89. package/dist/types/index.js +1 -131
  90. package/dist/utils/keychain.js +1 -170
  91. package/dist/utils/logger.js +1 -128
  92. package/package.json +14 -10
  93. package/dist/a2a/client.d.ts.map +0 -1
  94. package/dist/a2a/client.js.map +0 -1
  95. package/dist/a2a/discovery.d.ts.map +0 -1
  96. package/dist/a2a/discovery.js.map +0 -1
  97. package/dist/a2a/index.d.ts.map +0 -1
  98. package/dist/a2a/index.js.map +0 -1
  99. package/dist/a2a/types.d.ts.map +0 -1
  100. package/dist/a2a/types.js.map +0 -1
  101. package/dist/adapters/anthropic.d.ts.map +0 -1
  102. package/dist/adapters/anthropic.js.map +0 -1
  103. package/dist/chunking/chunker.d.ts.map +0 -1
  104. package/dist/chunking/chunker.js.map +0 -1
  105. package/dist/claude/sync.d.ts.map +0 -1
  106. package/dist/claude/sync.js.map +0 -1
  107. package/dist/cli/commands/add.d.ts.map +0 -1
  108. package/dist/cli/commands/add.js.map +0 -1
  109. package/dist/cli/commands/claude-sync.d.ts.map +0 -1
  110. package/dist/cli/commands/claude-sync.js.map +0 -1
  111. package/dist/cli/commands/cleanup.d.ts.map +0 -1
  112. package/dist/cli/commands/cleanup.js.map +0 -1
  113. package/dist/cli/commands/config.d.ts.map +0 -1
  114. package/dist/cli/commands/config.js.map +0 -1
  115. package/dist/cli/commands/edit.d.ts.map +0 -1
  116. package/dist/cli/commands/edit.js.map +0 -1
  117. package/dist/cli/commands/embed.d.ts.map +0 -1
  118. package/dist/cli/commands/embed.js.map +0 -1
  119. package/dist/cli/commands/extract.d.ts.map +0 -1
  120. package/dist/cli/commands/extract.js.map +0 -1
  121. package/dist/cli/commands/health.d.ts.map +0 -1
  122. package/dist/cli/commands/health.js.map +0 -1
  123. package/dist/cli/commands/list.d.ts.map +0 -1
  124. package/dist/cli/commands/list.js.map +0 -1
  125. package/dist/cli/commands/migrate-chunks.d.ts.map +0 -1
  126. package/dist/cli/commands/migrate-chunks.js.map +0 -1
  127. package/dist/cli/commands/migrate-file-refs.d.ts.map +0 -1
  128. package/dist/cli/commands/migrate-file-refs.js.map +0 -1
  129. package/dist/cli/commands/proficiency.d.ts.map +0 -1
  130. package/dist/cli/commands/proficiency.js.map +0 -1
  131. package/dist/cli/commands/rm.d.ts.map +0 -1
  132. package/dist/cli/commands/rm.js.map +0 -1
  133. package/dist/cli/commands/search.d.ts.map +0 -1
  134. package/dist/cli/commands/search.js.map +0 -1
  135. package/dist/cli/commands/setup-wizard.d.ts.map +0 -1
  136. package/dist/cli/commands/setup-wizard.js.map +0 -1
  137. package/dist/cli/commands/setup.d.ts.map +0 -1
  138. package/dist/cli/commands/setup.js.map +0 -1
  139. package/dist/cli/commands/skill.d.ts.map +0 -1
  140. package/dist/cli/commands/skill.js.map +0 -1
  141. package/dist/cli/commands/status.d.ts.map +0 -1
  142. package/dist/cli/commands/status.js.map +0 -1
  143. package/dist/cli/commands/sync.d.ts.map +0 -1
  144. package/dist/cli/commands/sync.js.map +0 -1
  145. package/dist/cli/commands/team.d.ts.map +0 -1
  146. package/dist/cli/commands/team.js.map +0 -1
  147. package/dist/cli/index.d.ts.map +0 -1
  148. package/dist/cli/index.js.map +0 -1
  149. package/dist/config/manager.d.ts.map +0 -1
  150. package/dist/config/manager.js.map +0 -1
  151. package/dist/db/database.d.ts.map +0 -1
  152. package/dist/db/database.js.map +0 -1
  153. package/dist/embedding/e5-provider.d.ts.map +0 -1
  154. package/dist/embedding/e5-provider.js.map +0 -1
  155. package/dist/embedding/index.d.ts.map +0 -1
  156. package/dist/embedding/index.js.map +0 -1
  157. package/dist/embedding/local-provider.d.ts.map +0 -1
  158. package/dist/embedding/local-provider.js.map +0 -1
  159. package/dist/embedding/openai-provider.d.ts.map +0 -1
  160. package/dist/embedding/openai-provider.js.map +0 -1
  161. package/dist/embedding/quantization.d.ts.map +0 -1
  162. package/dist/embedding/quantization.js.map +0 -1
  163. package/dist/extraction/dedup-manager.d.ts.map +0 -1
  164. package/dist/extraction/dedup-manager.js.map +0 -1
  165. package/dist/extraction/emotion-filter.d.ts.map +0 -1
  166. package/dist/extraction/emotion-filter.js.map +0 -1
  167. package/dist/extraction/extractor.d.ts.map +0 -1
  168. package/dist/extraction/extractor.js.map +0 -1
  169. package/dist/extraction/file-reference.d.ts.map +0 -1
  170. package/dist/extraction/file-reference.js.map +0 -1
  171. package/dist/extraction/filter.d.ts.map +0 -1
  172. package/dist/extraction/filter.js.map +0 -1
  173. package/dist/extraction/scorer.d.ts.map +0 -1
  174. package/dist/extraction/scorer.js.map +0 -1
  175. package/dist/extraction/similarity.d.ts.map +0 -1
  176. package/dist/extraction/similarity.js.map +0 -1
  177. package/dist/hooks/client-factory.d.ts.map +0 -1
  178. package/dist/hooks/client-factory.js.map +0 -1
  179. package/dist/hooks/post-tool-use.d.ts.map +0 -1
  180. package/dist/hooks/post-tool-use.js.map +0 -1
  181. package/dist/hooks/pre-compact.d.ts.map +0 -1
  182. package/dist/hooks/pre-compact.js.map +0 -1
  183. package/dist/hooks/session-end.d.ts.map +0 -1
  184. package/dist/hooks/session-end.js.map +0 -1
  185. package/dist/hooks/session-start.d.ts.map +0 -1
  186. package/dist/hooks/session-start.js.map +0 -1
  187. package/dist/hooks/shared.d.ts.map +0 -1
  188. package/dist/hooks/shared.js.map +0 -1
  189. package/dist/hooks/user-prompt-submit.d.ts.map +0 -1
  190. package/dist/hooks/user-prompt-submit.js.map +0 -1
  191. package/dist/i18n/index.d.ts.map +0 -1
  192. package/dist/i18n/index.js.map +0 -1
  193. package/dist/i18n/messages.d.ts.map +0 -1
  194. package/dist/i18n/messages.js.map +0 -1
  195. package/dist/index.d.ts.map +0 -1
  196. package/dist/index.js.map +0 -1
  197. package/dist/lifecycle/cleanup-scheduler.d.ts.map +0 -1
  198. package/dist/lifecycle/cleanup-scheduler.js.map +0 -1
  199. package/dist/lifecycle/cleanup.d.ts.map +0 -1
  200. package/dist/lifecycle/cleanup.js.map +0 -1
  201. package/dist/lifecycle/index.d.ts.map +0 -1
  202. package/dist/lifecycle/index.js.map +0 -1
  203. package/dist/lifecycle/quality-scorer.d.ts.map +0 -1
  204. package/dist/lifecycle/quality-scorer.js.map +0 -1
  205. package/dist/lifecycle/tiering.d.ts.map +0 -1
  206. package/dist/lifecycle/tiering.js.map +0 -1
  207. package/dist/llm/client.d.ts.map +0 -1
  208. package/dist/llm/client.js.map +0 -1
  209. package/dist/llm/index.d.ts.map +0 -1
  210. package/dist/llm/index.js.map +0 -1
  211. package/dist/proficiency/actr-engine.d.ts.map +0 -1
  212. package/dist/proficiency/actr-engine.js.map +0 -1
  213. package/dist/proficiency/detection.d.ts.map +0 -1
  214. package/dist/proficiency/detection.js.map +0 -1
  215. package/dist/proficiency/index.d.ts.map +0 -1
  216. package/dist/proficiency/index.js.map +0 -1
  217. package/dist/proficiency/tracker.d.ts.map +0 -1
  218. package/dist/proficiency/tracker.js.map +0 -1
  219. package/dist/proficiency/types.d.ts.map +0 -1
  220. package/dist/proficiency/types.js.map +0 -1
  221. package/dist/providers/adapters.d.ts.map +0 -1
  222. package/dist/providers/adapters.js.map +0 -1
  223. package/dist/providers/detector.d.ts.map +0 -1
  224. package/dist/providers/detector.js.map +0 -1
  225. package/dist/search/adaptive-router.d.ts.map +0 -1
  226. package/dist/search/adaptive-router.js.map +0 -1
  227. package/dist/search/index.d.ts.map +0 -1
  228. package/dist/search/index.js.map +0 -1
  229. package/dist/search/ranker.d.ts.map +0 -1
  230. package/dist/search/ranker.js.map +0 -1
  231. package/dist/search/reranker.d.ts.map +0 -1
  232. package/dist/search/reranker.js.map +0 -1
  233. package/dist/session/parser.d.ts.map +0 -1
  234. package/dist/session/parser.js.map +0 -1
  235. package/dist/skill/evaluator.d.ts.map +0 -1
  236. package/dist/skill/evaluator.js.map +0 -1
  237. package/dist/skill/index.d.ts.map +0 -1
  238. package/dist/skill/index.js.map +0 -1
  239. package/dist/skill/types.d.ts.map +0 -1
  240. package/dist/skill/types.js.map +0 -1
  241. package/dist/sync/client.d.ts.map +0 -1
  242. package/dist/sync/client.js.map +0 -1
  243. package/dist/sync/encryption.d.ts.map +0 -1
  244. package/dist/sync/encryption.js.map +0 -1
  245. package/dist/sync/index.d.ts.map +0 -1
  246. package/dist/sync/index.js.map +0 -1
  247. package/dist/sync/queue.d.ts.map +0 -1
  248. package/dist/sync/queue.js.map +0 -1
  249. package/dist/sync/scheduler.d.ts.map +0 -1
  250. package/dist/sync/scheduler.js.map +0 -1
  251. package/dist/sync/synchronizer.d.ts.map +0 -1
  252. package/dist/sync/synchronizer.js.map +0 -1
  253. package/dist/sync/team-synchronizer.d.ts.map +0 -1
  254. package/dist/sync/team-synchronizer.js.map +0 -1
  255. package/dist/sync/vector-clock.d.ts.map +0 -1
  256. package/dist/sync/vector-clock.js.map +0 -1
  257. package/dist/types/index.d.ts.map +0 -1
  258. package/dist/types/index.js.map +0 -1
  259. package/dist/utils/keychain.d.ts.map +0 -1
  260. package/dist/utils/keychain.js.map +0 -1
  261. package/dist/utils/logger.d.ts.map +0 -1
  262. 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(_0x35da5d,_0x480e28){const _0x433804=_0x35da5d();function _0x49786f(_0x192f0f,_0x122591){return _0x29ec(_0x192f0f- -0x110,_0x122591);}function _0x2824ff(_0x4839d9,_0x4e4df3){return _0x29ec(_0x4839d9- -0x2a2,_0x4e4df3);}while(!![]){try{const _0x37d480=parseInt(_0x49786f(0xe5,0xf4))/0x1+parseInt(_0x49786f(0x9a,0x7d))/0x2*(parseInt(_0x2824ff(-0xbc,-0xbb))/0x3)+parseInt(_0x49786f(0xb8,0xcd))/0x4+-parseInt(_0x49786f(0xe0,0xbb))/0x5+parseInt(_0x49786f(0xd2,0x105))/0x6+-parseInt(_0x49786f(0xb2,0xca))/0x7+-parseInt(_0x49786f(0xe8,0xf8))/0x8;if(_0x37d480===_0x480e28)break;else _0x433804['push'](_0x433804['shift']());}catch(_0x7c6b01){_0x433804['push'](_0x433804['shift']());}}}(_0x1aa8,0xde8b1));function _0x29ec(_0x4a5bc0,_0x240fe0){_0x4a5bc0=_0x4a5bc0-0x1aa;const _0x1aa88f=_0x1aa8();let _0x29ec30=_0x1aa88f[_0x4a5bc0];if(_0x29ec['helqna']===undefined){var _0xb4c156=function(_0x4971ff){const _0x48b13f='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x1ab04f='',_0x213782='';for(let _0x4581a7=0x0,_0x159337,_0x5efd9f,_0x17b8fe=0x0;_0x5efd9f=_0x4971ff['charAt'](_0x17b8fe++);~_0x5efd9f&&(_0x159337=_0x4581a7%0x4?_0x159337*0x40+_0x5efd9f:_0x5efd9f,_0x4581a7++%0x4)?_0x1ab04f+=String['fromCharCode'](0xff&_0x159337>>(-0x2*_0x4581a7&0x6)):0x0){_0x5efd9f=_0x48b13f['indexOf'](_0x5efd9f);}for(let _0x18bc7a=0x0,_0x407d14=_0x1ab04f['length'];_0x18bc7a<_0x407d14;_0x18bc7a++){_0x213782+='%'+('00'+_0x1ab04f['charCodeAt'](_0x18bc7a)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x213782);};_0x29ec['GbHtPY']=_0xb4c156,_0x29ec['gXlvvG']={},_0x29ec['helqna']=!![];}const _0x521e47=_0x1aa88f[0x0],_0x4a78f2=_0x4a5bc0+_0x521e47,_0x54325c=_0x29ec['gXlvvG'][_0x4a78f2];return!_0x54325c?(_0x29ec30=_0x29ec['GbHtPY'](_0x29ec30),_0x29ec['gXlvvG'][_0x4a78f2]=_0x29ec30):_0x29ec30=_0x54325c,_0x29ec30;}import{Command}from'commander';import _0x4cf7f4 from'chalk';import _0x182995 from'ora';import{ConfigManager}from'../../config/manager.js';import{MemoryDatabase}from'../../db/database.js';import{cleanupMemories}from'../../lifecycle/cleanup.js';import{scoreQuality}from'../../lifecycle/quality-scorer.js';function _0x1aa8(){const _0x342b7a=['CMvK','BgLMzwn5y2XL','zMLSDgvY','zxjYB3i','zxHPDa','CxvHBgL0Eq','8j+uJsbeCNKTCNvUia','B3b0Aw9U','DMLLDYbVCIaTlq','lI4U','ChvZAa','CNvUihrVihbYzq','Bwf4twvTB3jPzq','Bg93uxvHBgL0Eq','y3LHBG','cUkCKYboBYbTzw1V','zhj5uNvU','qxjczNq','mJu4ndC1me1Sy3P1Ca','C09SzgvYvgHHBG','BgLZDe1LBw9YAq','zM9Yy2u','EM96Bee','rxjYB3iGzhvYAq','mZe2oteXnKfYC3zNtq','CM1HDgLVBIbWCG','kfrutcK6ia','C3vJy2vLza','zwfUihvW','q2XLyw5PBMCGDq','BgvUz3rO','CMLLCYb0BYbJBa','4PYtienSzwfUDxaG','icbuB3rHBcbKzq','tg93ihf1ywXPDa','vxnLic0Tzhj5lq','whHoueG','BMCGy2XLyw51Ca','Cgf0Aa','y2XLyw51Ca','CNbgsNi','Axr5oIa','CcbTzw1VCMLLCW','zgvZy3jPChrPBW','BwfW','B2XKigfUzcbSBW','DhrSrgf5CW','zcaOpG','Bgv0zwq6ia','B21WDa','mJqYmde5mg55DMDiAq','rfHbuem','wM9urvu','ktOG','mJa1otGWCwLvueDh','zgLT','rwr2v2S','igrHExmPoIa','q2XLyw51CcbVBa','z3jLzw4','DKzJvfe','AxL6zuK','icbmB3CGCxvHBa','ywn0Aw9U','mJGYmdK5nuH1rwDQzq','B3vUDa','Bg9N','Dg90ywW','BwvTB3j5','mteZotaYmeXjBfb2sW','4PQG77IpicbuAgLZihDP','ls1MB3jJzq','mtyWmde1odrsrxfmDve','y2XVC2u','icbfEhbPCMvKia','yNHAAK4','CxvHBgL0EvrOCG','Euz6yK8','zxnZywDLlGO','zxnOB2XK','u2HVDYb3Agf0ia','zwXLDgu6ia','EwvSBg93','D0H3zKG','A2LWihrOAxmGBq','vg90ywWGDg8Gza','z2v0twvTB3j5qW','z2v0twvTB3jPzq','EsaOpa','zcbHBMqGBg93lq','D291BgqGyMuGza','vvj2C3m','Bw9KztOGyw5HBa','zxHWAxjLza','BwvTB3jPzxmU','zhrIz3y','ndrLsu9srfG','zM9Yy2uGDg8GCW','Aw5PDgLHBgL6zq','CgjisLy','B3zLCMfSBa','zwXLDgvKihDPDa'];_0x1aa8=function(){return _0x342b7a;};return _0x1aa8();}export function cleanupCommand(){const _0x3ba7d7={'EdvWk':_0x182481(0x5a2,0x5c4)+'ll\x20delete\x20'+_0x182481(0x5c7,0x5ab)+'w-quality\x20'+_0x2b58e6(0x487,0x473),'iyzeI':function(_0x31489a,_0x2fde6a){return _0x31489a>_0x2fde6a;},'ZoTEU':_0x182481(0x5c3,0x5a2),'yFzbO':function(_0xdb11b5,_0x38242d){return _0xdb11b5===_0x38242d;},'wHwfH':_0x182481(0x587,0x594),'vFcTQ':function(_0x2927fb,_0x43560f){return _0x2927fb(_0x43560f);},'rpFJr':function(_0x47536e,_0x3a37ad,_0x5afa44){return _0x47536e(_0x3a37ad,_0x5afa44);},'URvss':_0x2b58e6(0x428,0x42c)+_0x2b58e6(0x45f,0x43a)+':','bxZjN':_0x182481(0x583,0x5a5),'ArBft':_0x182481(0x593,0x5b8)+_0x182481(0x5fe,0x5d7)+'quality\x20me'+'mories','jFKBl':'--dry-run','DXAPC':_0x2b58e6(0x432,0x45c),'LwGHq':'Skip\x20confi'+_0x182481(0x5b9,0x597)+_0x182481(0x57d,0x5af)};function _0x2b58e6(_0x2a2ce1,_0x3b4fbb){return _0x29ec(_0x3b4fbb-0x265,_0x2a2ce1);}function _0x182481(_0x45f075,_0x1317a7){return _0x29ec(_0x1317a7-0x3ce,_0x45f075);}return new Command(_0x3ba7d7[_0x2b58e6(0x456,0x460)])[_0x2b58e6(0x444,0x440)+'n'](_0x3ba7d7[_0x182481(0x56b,0x58f)])['option'](_0x3ba7d7['jFKBl'],_0x182481(0x5de,0x5ce)+_0x182481(0x5cf,0x5d8)+_0x2b58e6(0x433,0x414)+'hout\x20actua'+'lly\x20deleti'+'ng')[_0x182481(0x577,0x585)](_0x3ba7d7[_0x182481(0x584,0x5b1)],_0x3ba7d7['LwGHq'])[_0x2b58e6(0x487,0x454)](_0x38d11b=>{function _0x2241e8(_0x59990f,_0x3a558b){return _0x2b58e6(_0x59990f,_0x3a558b- -0x34a);}function _0x2e13d0(_0x3d4aea,_0x499e2f){return _0x2b58e6(_0x499e2f,_0x3d4aea- -0x2ac);}const _0x3e0e24={'pbHJV':_0x3ba7d7[_0x2241e8(0x11f,0x103)],'dtbgv':_0x2e13d0(0x18c,0x16a)+_0x2241e8(0xf5,0xd6)+_0x2241e8(0xf5,0xd3)+'force\x20to\x20s'+_0x2e13d0(0x1bd,0x19d)+_0x2e13d0(0x1b7,0x187)},_0x981fc=new ConfigManager(),_0x31e022=_0x981fc['load'](),_0x1a97f9=new MemoryDatabase(_0x31e022['db'][_0x2e13d0(0x18f,0x188)]);try{_0x1a97f9[_0x2e13d0(0x165,0x141)]();const _0x1effb2=_0x31e022[_0x2241e8(0xa2,0xcc)]??{'ttlDays':0x5a,'maxMemories':0x3e8,'cleanupOnSessionEnd':![],'qualityThreshold':0.3};if(_0x38d11b[_0x2241e8(0x100,0xdb)]){console[_0x2241e8(0x103,0x10d)](_0x4cf7f4[_0x2e13d0(0x177,0x199)](_0x2241e8(0xba,0xd1)+_0x2241e8(0x11d,0x127)+'yzing\x20memo'+'ries...\x0a'));const _0x286ca1=[],_0x48112e=[];if(_0x3ba7d7[_0x2241e8(0x12f,0x108)](_0x1effb2['ttlDays'],0x0)){const _0x1b0239=_0x1a97f9[_0x2e13d0(0x1c0,0x190)+_0x2241e8(0xf7,0xde)](_0x1effb2[_0x2241e8(0x10f,0xf9)]);_0x286ca1['push'](..._0x1b0239[_0x2e13d0(0x195,0x18f)](_0x52f95b=>_0x52f95b['id']));}const _0x104b4a=_0x1a97f9[_0x2241e8(0x117,0x121)+_0x2241e8(0xed,0x10c)]();if(_0x3ba7d7['iyzeI'](_0x104b4a,_0x1effb2[_0x2e13d0(0x175,0x175)+'s'])){if(_0x3ba7d7[_0x2e13d0(0x19d,0x185)]===_0x3ba7d7['ZoTEU']){const _0x11a383=_0x1a97f9['listMemori'+'es']({'limit':_0x104b4a}),_0x1d8b63=_0x11a383[_0x2e13d0(0x195,0x198)](_0x133704=>({'memory':_0x133704,'quality':scoreQuality(_0x133704,_0x1effb2)})),_0x2f111d=_0x1d8b63[_0x2e13d0(0x16b,0x151)](_0x568ddd=>_0x568ddd[_0x2241e8(0xd9,0xd0)][_0x2e13d0(0x167,0x183)]<_0x1effb2[_0x2e13d0(0x1b5,0x1d4)+_0x2241e8(0x10f,0x11a)])[_0x2241e8(0xc9,0xf7)](_0x622ca6=>_0x622ca6[_0x2241e8(0x119,0x10f)]['id']);_0x48112e[_0x2e13d0(0x173,0x153)](..._0x2f111d);}else{const _0x442cd7=_0x223638[_0x2241e8(0xd0,0xdf)+'es']({'limit':_0x4241cd}),_0x2c8b5f=_0x442cd7[_0x2241e8(0x119,0xf7)](_0x5c4884=>({'memory':_0x5c4884,'quality':_0x153a32(_0x5c4884,_0x2af365)})),_0x27abb0=_0x2c8b5f[_0x2e13d0(0x16b,0x18e)](_0x582c3d=>_0x582c3d[_0x2e13d0(0x16e,0x187)]['overall']<_0x4770eb['qualityThr'+_0x2e13d0(0x1b8,0x1dd)])[_0x2241e8(0x117,0xf7)](_0x56161d=>_0x56161d[_0x2e13d0(0x1ad,0x198)]['id']);_0x51880f[_0x2e13d0(0x173,0x180)](..._0x27abb0);}}console[_0x2e13d0(0x1ab,0x1ad)](_0x4cf7f4[_0x2241e8(0xff,0x11d)]('TTL\x20expire'+_0x2241e8(0x12c,0xfa)+_0x1effb2[_0x2241e8(0x108,0xf9)]+_0x2e13d0(0x1a2,0x188)+_0x286ca1[_0x2241e8(0x11c,0xe9)])),console[_0x2241e8(0xde,0x10d)](_0x4cf7f4['yellow'](_0x2241e8(0xe7,0xed)+_0x2e13d0(0x1c1,0x1e8)+_0x1effb2[_0x2e13d0(0x1b5,0x1b5)+_0x2e13d0(0x1b8,0x1ad)]+_0x2241e8(0xf7,0x100)+_0x48112e['length'])),console['log'](_0x4cf7f4['yellow'](_0x2241e8(0x146,0x120)+_0x2241e8(0x14f,0x11c)+(_0x286ca1[_0x2241e8(0xff,0xe9)]+_0x48112e[_0x2241e8(0xff,0xe9)])));_0x286ca1[_0x2241e8(0x103,0xe9)]+_0x48112e[_0x2e13d0(0x187,0x1a6)]===0x0&&console[_0x2241e8(0x126,0x10d)](_0x4cf7f4[_0x2e13d0(0x1a4,0x180)](_0x2241e8(0xb6,0xda)+_0x2241e8(0x115,0xea)+_0x2241e8(0x10a,0xe7)));return;}!_0x38d11b[_0x2241e8(0xe4,0xe0)]&&(_0x3ba7d7[_0x2e13d0(0x1b6,0x1af)](_0x3ba7d7[_0x2e13d0(0x1bc,0x1bd)],_0x2241e8(0x10e,0xe1))?(console['log'](_0x4cf7f4[_0x2241e8(0x143,0x11d)](_0x3ba7d7[_0x2241e8(0x12d,0x103)])),console[_0x2241e8(0x110,0x10d)](_0x4cf7f4['yellow']('Use\x20--dry-'+_0x2241e8(0xac,0xd6)+_0x2241e8(0xb3,0xd3)+_0x2241e8(0xa6,0xc6)+_0x2241e8(0x14f,0x11f)+_0x2241e8(0xf3,0x119)))):(_0x12b92c[_0x2e13d0(0x1ab,0x1a1)](_0x17b27a[_0x2e13d0(0x1bb,0x1d2)](_0x3e0e24[_0x2241e8(0xe9,0xc8)])),_0x5eeb4d[_0x2241e8(0x13d,0x10d)](_0x3544fc[_0x2241e8(0x129,0x11d)](_0x3e0e24[_0x2e13d0(0x1c8,0x1e6)]))));const _0x3f4815=_0x3ba7d7[_0x2e13d0(0x1a5,0x1ac)](_0x182995,_0x2e13d0(0x186,0x156)+_0x2241e8(0x104,0xf5)+_0x2e13d0(0x172,0x173))['start'](),_0x18a84c=_0x3ba7d7[_0x2e13d0(0x191,0x196)](cleanupMemories,_0x1a97f9,_0x1effb2);_0x3f4815[_0x2241e8(0xd9,0xe6)](_0x4cf7f4[_0x2e13d0(0x1a4,0x1b9)](_0x2241e8(0x10a,0xeb)+'complete')),console[_0x2241e8(0x132,0x10d)](_0x4cf7f4[_0x2e13d0(0x1a0,0x1be)](_0x2e13d0(0x1b3,0x1dd)+_0x2241e8(0xc5,0xe5)+_0x18a84c[_0x2241e8(0x145,0x128)])),console['log'](_0x4cf7f4['dim'](_0x2e13d0(0x1a7,0x195)+_0x2e13d0(0x192,0x199)+_0x18a84c[_0x2241e8(0xc9,0xd8)])),console['log'](_0x4cf7f4[_0x2241e8(0xd2,0x102)](_0x2e13d0(0x18a,0x16a)+_0x2241e8(0xf6,0xfb)+_0x18a84c[_0x2e13d0(0x1ac,0x199)]));}catch(_0x2d040b){console[_0x2241e8(0xf1,0xce)](_0x4cf7f4[_0x2e13d0(0x169,0x142)](_0x3ba7d7[_0x2241e8(0x141,0x126)]),_0x2d040b),process[_0x2e13d0(0x16d,0x186)](0x1);}finally{_0x1a97f9[_0x2241e8(0x12d,0x114)]();}});}
@@ -1,73 +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 (typeof currentValue === 'boolean') {
37
- target[lastKey] = value === 'true';
38
- }
39
- else if (typeof currentValue === 'number') {
40
- target[lastKey] = Number(value);
41
- }
42
- else {
43
- target[lastKey] = value;
44
- }
45
- // 전체 config 검증 (enum 값 등)
46
- try {
47
- ConfigSchema.parse(config);
48
- }
49
- catch (err) {
50
- if (err instanceof z.ZodError) {
51
- console.error(`Invalid value for "${key}":`);
52
- for (const issue of err.issues) {
53
- console.error(` ${issue.path.join('.')}: ${issue.message}`);
54
- }
55
- // TODO: process.exit() → throw + 상위 핸들러로 리팩토링 (P3-3)
56
- process.exit(1);
57
- }
58
- throw err;
59
- }
60
- manager.save(config);
61
- console.log(`Set ${key} = ${target[lastKey]}`);
62
- });
63
- cmd
64
- .command('reset')
65
- .description('Reset to default configuration')
66
- .action(() => {
67
- const manager = new ConfigManager();
68
- manager.reset();
69
- console.log('Configuration reset to defaults.');
70
- });
71
- return cmd;
72
- }
73
- //# sourceMappingURL=config.js.map
1
+ (function(_0x1653d1,_0x438b2e){function _0x30cabc(_0x5546e8,_0x4ef741){return _0x2cfd(_0x4ef741-0xf8,_0x5546e8);}function _0x184e10(_0x5d0f86,_0x492b37){return _0x2cfd(_0x5d0f86- -0x37b,_0x492b37);}const _0x13a462=_0x1653d1();while(!![]){try{const _0x1446c1=-parseInt(_0x184e10(-0x20f,-0x229))/0x1*(-parseInt(_0x30cabc(0x26c,0x27e))/0x2)+-parseInt(_0x184e10(-0x203,-0x205))/0x3+-parseInt(_0x30cabc(0x268,0x26d))/0x4*(parseInt(_0x30cabc(0x272,0x286))/0x5)+-parseInt(_0x184e10(-0x1f9,-0x1db))/0x6+-parseInt(_0x30cabc(0x298,0x289))/0x7+-parseInt(_0x30cabc(0x29d,0x285))/0x8+parseInt(_0x184e10(-0x1dc,-0x1e4))/0x9;if(_0x1446c1===_0x438b2e)break;else _0x13a462['push'](_0x13a462['shift']());}catch(_0x336767){_0x13a462['push'](_0x13a462['shift']());}}}(_0x4b97,0x7f294));function _0x2cfd(_0x3e7c0b,_0x4237d3){_0x3e7c0b=_0x3e7c0b-0x160;const _0x4b97b9=_0x4b97();let _0x2cfd94=_0x4b97b9[_0x3e7c0b];if(_0x2cfd['CnsrIg']===undefined){var _0x270ab5=function(_0x29df88){const _0x21996e='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x2ae0af='',_0x418c77='';for(let _0x5563e1=0x0,_0x2a230f,_0x102587,_0x2443b5=0x0;_0x102587=_0x29df88['charAt'](_0x2443b5++);~_0x102587&&(_0x2a230f=_0x5563e1%0x4?_0x2a230f*0x40+_0x102587:_0x102587,_0x5563e1++%0x4)?_0x2ae0af+=String['fromCharCode'](0xff&_0x2a230f>>(-0x2*_0x5563e1&0x6)):0x0){_0x102587=_0x21996e['indexOf'](_0x102587);}for(let _0x1960d8=0x0,_0x203185=_0x2ae0af['length'];_0x1960d8<_0x203185;_0x1960d8++){_0x418c77+='%'+('00'+_0x2ae0af['charCodeAt'](_0x1960d8)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x418c77);};_0x2cfd['aunjqi']=_0x270ab5,_0x2cfd['GTVOPc']={},_0x2cfd['CnsrIg']=!![];}const _0x310d3f=_0x4b97b9[0x0],_0x5276a0=_0x3e7c0b+_0x310d3f,_0x2968b2=_0x2cfd['GTVOPc'][_0x5276a0];return!_0x2968b2?(_0x2cfd94=_0x2cfd['aunjqi'](_0x2cfd94),_0x2cfd['GTVOPc'][_0x5276a0]=_0x2cfd94):_0x2cfd94=_0x2968b2,_0x2cfd94;}import{Command}from'commander';import{z}from'zod';function _0x4b97(){const _0x53966d=['Bg9N','ELboyKu','ntG3mta0yNbdyKji','DhvYzs5LBMfIBa','sw52ywXPzcbJBW','yujmuuO','u2HVDYbJDxjYzq','Aw9UihjLC2v0ia','zxjYB3i','AM9PBG','vgf2vgW','B2jQzwn0','zgvZy3jPChrPBW','zMLNDxjHDgLVBG','C2v0idXRzxK+ia','DwfLvK8','mtKYnty1nJjlB1jPvxe','DMfSDwuGkguUzW','lIWGyxv0B0nHCa','CgfYC2u','uurOs2W','Ce5guNO','CMf0Aw9U','q29UzMLNDxjHDa','sw52ywXPzcb2yq','BMzPzYbRzxK6ia','C3bSAxq','zwzHDwX0ignVBG','zxHPDa','ExvIqKK','sfbet0K','nJG0ntjqEerYzw4','zw1VCNKGy29UzG','Axf5A0q','ywn0Aw9U','q0jduxe','Cgf0Aa','zwqGDhj1zsK','Dg8GzgvMyxvSDa','BwvZC2fNzq','oda4wwDYvg5f','Bg9Hza','y29TBwfUza','mtK5mJKWm2rpsxnRvG','phzHBhvLpG','y29UzMLN','vw5RBM93BIbJBW','AMDWrvG','BMzPzYbWyxrOoG','wM9KrxjYB3i','BgvUz3rO','id0G','wuTushi','ntK5mJmYnKfeyxbYCW','BNvTyMvY','AwCGC2HVDYiGDa','sgvSv08','mtjmrMj0qwi','C2f2zq','CMvZzxq','z2Xpq20','BMXRBMy','twfUywDLignVBG','sgj0Bfy','mtKYnZC3nLD5DvjSra','mtaZme9NB2LxCq'];_0x4b97=function(){return _0x53966d;};return _0x4b97();}import{ConfigManager,ConfigSchema}from'../../config/manager.js';export function configCommand(){const _0xb093a1={'glOCm':_0x56e709(0x39e,0x3bb),'HelWO':'Use\x20\x22a2a-m'+_0x489c11(0x532,0x525)+_0x489c11(0x551,0x53c)+'o\x20see\x20avai'+'lable\x20keys'+'.','HPDOI':function(_0x4a0542,_0xbb774f){return _0x4a0542<_0xbb774f;},'xaiyL':function(_0xd13dc,_0x1f23ed){return _0xd13dc-_0x1f23ed;},'uaeVO':function(_0x42a691,_0x4b011b){return _0x42a691-_0x4b011b;},'RpcdG':function(_0xafd56,_0x3a371c){return _0xafd56===_0x3a371c;},'TavTl':function(_0x233935,_0x5f0487){return _0x233935===_0x5f0487;},'JeJDU':'boolean','QDhKl':function(_0x1a46f7,_0x9373){return _0x1a46f7!==_0x9373;},'qUEWt':_0x56e709(0x3ba,0x3a7),'JyIIP':_0x489c11(0x528,0x53b),'FongQ':function(_0x26597f,_0x260c79){return _0x26597f(_0x260c79);},'HbtlV':function(_0x1316f5,_0x2c2af7){return _0x1316f5!==_0x2c2af7;},'nlknf':_0x56e709(0x3b8,0x39b),'xewIP':function(_0x38afd4,_0x1a6f9b){return _0x38afd4 instanceof _0x1a6f9b;},'aBLQJ':_0x56e709(0x3a4,0x3a5),'pNFRz':_0x56e709(0x3aa,0x3b6)+_0x489c11(0x552,0x554),'yubBI':_0x489c11(0x542,0x54d)+'nt\x20configu'+_0x56e709(0x3ac,0x38e)};function _0x56e709(_0x55c433,_0x534f31){return _0x2cfd(_0x534f31-0x22b,_0x55c433);}function _0x489c11(_0x249239,_0x4db514){return _0x2cfd(_0x4db514-0x3b8,_0x249239);}const _0x2296dd=new Command(_0xb093a1[_0x56e709(0x3c5,0x3bf)])['descriptio'+'n'](_0xb093a1[_0x56e709(0x38b,0x38d)]);return _0x2296dd[_0x56e709(0x3bd,0x3a2)]('show')[_0x56e709(0x3c7,0x3c6)+'n'](_0xb093a1[_0x56e709(0x39e,0x395)])[_0x489c11(0x517,0x527)](()=>{function _0x3999ec(_0x173f4c,_0x3410e2){return _0x56e709(_0x3410e2,_0x173f4c- -0x206);}function _0x382fba(_0x3bdc39,_0x1d0162){return _0x56e709(_0x3bdc39,_0x1d0162- -0x513);}if(_0x3999ec(0x1b5,0x1b6)!==_0xb093a1[_0x3999ec(0x1ae,0x1bd)])_0x1ef83e[_0x382fba(-0x18d,-0x188)](_0x4dd985);else{const _0x58ec6a=new ConfigManager()[_0x3999ec(0x19b,0x1b0)]();console['log'](JSON['stringify'](_0x58ec6a,null,0x2));}}),_0x2296dd[_0x489c11(0x521,0x52f)](_0x489c11(0x55b,0x555)+_0x489c11(0x54d,0x531))['descriptio'+'n']('Set\x20a\x20conf'+'iguration\x20'+_0x56e709(0x3ae,0x3cb)+_0x489c11(0x568,0x559)+_0x56e709(0x3a3,0x3bd)+_0x56e709(0x3be,0x39d))[_0x56e709(0x39f,0x39a)]((_0x157273,_0x175477)=>{const _0x13dc8a={'iqykD':_0xb093a1['HelWO']};function _0x831cc1(_0xc5563,_0x595d09){return _0x56e709(_0x595d09,_0xc5563- -0x137);}const _0x25c753=new ConfigManager(),_0x3929e0=_0x25c753[_0x16195e(0x190,0x19b)](),_0x5a477e=_0x157273[_0x831cc1(0x25b,0x25e)]('.');let _0x2de7e9=_0x3929e0;for(let _0xa691c0=0x0;_0xb093a1[_0x16195e(0x16f,0x190)](_0xa691c0,_0xb093a1['xaiyL'](_0x5a477e[_0x16195e(0x1af,0x1a4)],0x1));_0xa691c0++){(typeof _0x2de7e9[_0x5a477e[_0xa691c0]]!==_0x831cc1(0x28e,0x26f)||_0x2de7e9[_0x5a477e[_0xa691c0]]===null)&&(console['error'](_0x16195e(0x1aa,0x1b8)+_0x16195e(0x1b6,0x1a2)+'\x20'+_0x157273),process['exit'](0x1)),_0x2de7e9=_0x2de7e9[_0x5a477e[_0xa691c0]];}const _0x212d3f=_0x5a477e[_0xb093a1[_0x831cc1(0x292,0x299)](_0x5a477e['length'],0x1)],_0x5ef825=_0x2de7e9[_0x212d3f];_0xb093a1['RpcdG'](_0x5ef825,undefined)&&(console[_0x16195e(0x19e,0x1bc)](_0x16195e(0x1ab,0x1a0)+_0x831cc1(0x25a,0x25d)+_0x157273),console[_0x16195e(0x1cc,0x1bc)](_0xb093a1[_0x831cc1(0x279,0x28b)]),process[_0x831cc1(0x25d,0x23d)](0x1));if(_0xb093a1[_0x831cc1(0x28d,0x2a2)](typeof _0x5ef825,_0xb093a1['JeJDU']))_0xb093a1[_0x16195e(0x18a,0x186)](_0xb093a1['qUEWt'],_0x16195e(0x181,0x1a1))?(_0x4c27ec[_0x16195e(0x1cc,0x1bc)]('Unknown\x20co'+'nfig\x20key:\x20'+_0x2145d6),_0x31485a[_0x831cc1(0x28b,0x26a)](_0x13dc8a[_0x16195e(0x179,0x193)]),_0x1449f7[_0x831cc1(0x25d,0x252)](0x1)):_0x2de7e9[_0x212d3f]=_0x175477==='true';else typeof _0x5ef825===_0xb093a1['JyIIP']?_0x2de7e9[_0x212d3f]=_0xb093a1['FongQ'](Number,_0x175477):_0x2de7e9[_0x212d3f]=_0x175477;try{_0xb093a1[_0x16195e(0x198,0x1b1)](_0x16195e(0x1bf,0x1a6),_0xb093a1[_0x831cc1(0x27e,0x28a)])?ConfigSchema[_0x831cc1(0x254,0x240)](_0x3929e0):((typeof _0x548795[_0x21a5e7[_0x14abd5]]!==_0x16195e(0x1d1,0x1bf)||_0x487aba[_0x27bef5[_0x571a8d]]===null)&&(_0x211172[_0x831cc1(0x28b,0x27d)](_0x16195e(0x1d2,0x1b8)+_0x16195e(0x19e,0x1a2)+'\x20'+_0x37885d),_0xa45d17[_0x831cc1(0x25d,0x271)](0x1)),_0x4a035b=_0x29f07a[_0x2b7734[_0x50b97a]]);}catch(_0x7e1834){if(_0xb093a1['xewIP'](_0x7e1834,z[_0x16195e(0x184,0x1a3)])){console[_0x16195e(0x1bf,0x1bc)](_0x16195e(0x1a0,0x18a)+'lue\x20for\x20\x22'+_0x157273+'\x22:');for(const _0xe1086a of _0x7e1834['issues']){console['error']('\x20\x20'+_0xe1086a[_0x831cc1(0x265,0x247)][_0x831cc1(0x28c,0x275)]('.')+':\x20'+_0xe1086a[_0x831cc1(0x268,0x252)]);}process[_0x831cc1(0x25d,0x24b)](0x1);}throw _0x7e1834;}_0x25c753[_0x16195e(0x1b6,0x1ac)](_0x3929e0);function _0x16195e(_0x434e56,_0x4cdf41){return _0x56e709(_0x434e56,_0x4cdf41- -0x206);}console[_0x16195e(0x1cf,0x1b4)]('Set\x20'+_0x157273+_0x16195e(0x1b9,0x1a5)+_0x2de7e9[_0x212d3f]);}),_0x2296dd[_0x56e709(0x3bf,0x3a2)](_0x489c11(0x54f,0x540))[_0x56e709(0x3e2,0x3c6)+'n']('Reset\x20to\x20d'+_0x56e709(0x3a0,0x393)+_0x56e709(0x3e1,0x3c7))['action'](()=>{function _0x538f40(_0x4481ab,_0x6411eb){return _0x56e709(_0x4481ab,_0x6411eb- -0x3da);}const _0x134d9f=new ConfigManager();_0x134d9f[_0x538f40(-0x1f,-0x27)]();function _0x1b038c(_0x51c782,_0x284b01){return _0x56e709(_0x51c782,_0x284b01- -0x86);}console[_0x1b038c(0x354,0x334)](_0x538f40(-0x35,-0x4b)+_0x1b038c(0x35b,0x33b)+_0x538f40(-0x1b,-0x3c)+'s.');}),_0x2296dd;}
@@ -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 _0x46de(_0x81abbe,_0x408354){_0x81abbe=_0x81abbe-0xbd;const _0x54f32a=_0x54f3();let _0x46de69=_0x54f32a[_0x81abbe];if(_0x46de['LDBpkX']===undefined){var _0x254388=function(_0x76c72e){const _0x12b84e='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x1486eb='',_0x35d7cb='';for(let _0x573797=0x0,_0x1d19f0,_0x86aa8f,_0x10de98=0x0;_0x86aa8f=_0x76c72e['charAt'](_0x10de98++);~_0x86aa8f&&(_0x1d19f0=_0x573797%0x4?_0x1d19f0*0x40+_0x86aa8f:_0x86aa8f,_0x573797++%0x4)?_0x1486eb+=String['fromCharCode'](0xff&_0x1d19f0>>(-0x2*_0x573797&0x6)):0x0){_0x86aa8f=_0x12b84e['indexOf'](_0x86aa8f);}for(let _0x1c0344=0x0,_0x47f547=_0x1486eb['length'];_0x1c0344<_0x47f547;_0x1c0344++){_0x35d7cb+='%'+('00'+_0x1486eb['charCodeAt'](_0x1c0344)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x35d7cb);};_0x46de['yyZbVG']=_0x254388,_0x46de['Nipezz']={},_0x46de['LDBpkX']=!![];}const _0x283d0a=_0x54f32a[0x0],_0x1714aa=_0x81abbe+_0x283d0a,_0x54e893=_0x46de['Nipezz'][_0x1714aa];return!_0x54e893?(_0x46de69=_0x46de['yyZbVG'](_0x46de69),_0x46de['Nipezz'][_0x1714aa]=_0x46de69):_0x46de69=_0x54e893,_0x46de69;}(function(_0x370c74,_0x37b959){function _0x2bee0e(_0x5e28e8,_0x25d156){return _0x46de(_0x25d156- -0x152,_0x5e28e8);}function _0x4e853e(_0x4e07ea,_0x3c9d6e){return _0x46de(_0x4e07ea- -0x19a,_0x3c9d6e);}const _0x252f6a=_0x370c74();while(!![]){try{const _0x5a5e90=parseInt(_0x2bee0e(-0x41,-0x50))/0x1*(-parseInt(_0x4e853e(-0xda,-0xdc))/0x2)+parseInt(_0x4e853e(-0xb6,-0xd7))/0x3*(parseInt(_0x4e853e(-0xb0,-0x92))/0x4)+-parseInt(_0x2bee0e(-0x73,-0x77))/0x5+parseInt(_0x2bee0e(-0x5c,-0x5b))/0x6*(parseInt(_0x2bee0e(-0x6c,-0x8b))/0x7)+parseInt(_0x2bee0e(-0x64,-0x64))/0x8+parseInt(_0x2bee0e(-0x97,-0x89))/0x9*(-parseInt(_0x4e853e(-0xd2,-0xb1))/0xa)+parseInt(_0x2bee0e(-0x4e,-0x6a))/0xb;if(_0x5a5e90===_0x37b959)break;else _0x252f6a['push'](_0x252f6a['shift']());}catch(_0x47f8f6){_0x252f6a['push'](_0x252f6a['shift']());}}}(_0x54f3,0x467d0));import{Command}from'commander';import _0x1be96b from'chalk';import{ConfigManager}from'../../config/manager.js';function _0x54f3(){const _0x4e7b6c=['y29UDgvUDa','mtq4vxjXqLDi','zwrPDa','zw50idXJB250zq','B3b0Aw9U','nJqWnJe2CMXirNzJ','suq6ia','AM9PBG','lwmSic0Ty29UDa','CMvK','y2f0zwDVCNK','BgvKihrVihvWza','Bg9N','Cgf0Aa','mtjuuvz3t3O','z3jLzw4','DxbKyxrLtwvTBW','ELzkA3G','twvTB3j5ieLe','DgfNCW','tMv3ignVBNrLBG','y2vZC2z1BgX5','yxrLig1LBw9YEq','DhjPBq','lI4U','mM5RD0fwwG','Aw5PDgLHBgL6zq','CgrHDgvKihn1yW','ls1JyxrLz29YEq','zxHPDa','qMLLtLO','mZyXnZmWufzjBM1Q','q29UDgvUDdOG','zgLT','zgvZy3jPChrPBW','u3nLv2e','vMLjC2y','EKrxz3K','mty5nZaZmw9kELbQta','mZeWmtmWyu1PzwDM','otL3AwvMq1a','sMLpvwG','q2f0zwDVCNK6ia','z3m+','uw5XCvG','zxjYB3i','tgfQBMe','vgfNCZOG','tMv3ignVBw1Hlq','ywn0Aw9U','idXJyxrLz29YEq','4PYtie1LBw9YEsb1','B3j5','tMv3ignHDgvNBW','C2XPy2u','Axn0Aw5Nig1LBq','rxjYB3iGDxbKyq','B3j5ihDPDgGGsq','mJeXnZG5nwjAEuLuAa','rxjYB3i6iezHAq','D0TPDfK','y2XVC2u','Bg9Hza','zgzkBxq','rxjYB3i6ie1LBq','qNrdtKO','DgLUzYbTzw1VCG','mtmWodzmBeTmsva','z2v0twvTB3j5','qwXwBwO','BwfW','nZu3nZe4nurnEezrBa'];_0x54f3=function(){return _0x4e7b6c;};return _0x54f3();}import{MemoryDatabase}from'../../db/database.js';export function editCommand(){const _0x1c7812={'zVJkx':function(_0x5be073,_0x2488a7){return _0x5be073!==_0x2488a7;},'CWQAN':_0x58dcd9(-0x286,-0x297),'ndBRK':_0x29bb71(0x3be,0x3a1)+_0x29bb71(0x3a4,0x3b9)+_0x58dcd9(-0x257,-0x278),'zDWgy':_0x29bb71(0x37e,0x399)+_0x29bb71(0x3dc,0x3c9)+_0x29bb71(0x3db,0x3c3),'FWlDE':function(_0xe15f26,_0x420af1){return _0xe15f26!==_0x420af1;},'Lajna':_0x58dcd9(-0x2bd,-0x2b3),'QnqqX':_0x58dcd9(-0x2ae,-0x29e)+_0x29bb71(0x397,0x3a8)+'y:','BieNZ':_0x58dcd9(-0x2a3,-0x29a),'XIUwS':'Edit\x20an\x20ex'+_0x58dcd9(-0x2b0,-0x29f)+_0x29bb71(0x3be,0x39a),'AlVmj':_0x29bb71(0x3ca,0x3c0),'JiOUh':_0x29bb71(0x3b3,0x3c2)+'t','BtCNJ':'--tags\x20<ta'+_0x29bb71(0x39c,0x391)};function _0x58dcd9(_0x1eee89,_0x21df37){return _0x46de(_0x21df37- -0x377,_0x1eee89);}function _0x29bb71(_0x33db49,_0x93d59a){return _0x46de(_0x93d59a-0x2c5,_0x33db49);}return new Command(_0x29bb71(0x3c1,0x3b0))[_0x29bb71(0x388,0x388)+'n'](_0x1c7812['XIUwS'])['argument']('<id>',_0x1c7812[_0x29bb71(0x396,0x3ab)])[_0x58dcd9(-0x2a2,-0x28a)](_0x58dcd9(-0x283,-0x286)+_0x58dcd9(-0x279,-0x28b)+'nt>',_0x1c7812[_0x29bb71(0x376,0x38f)])[_0x58dcd9(-0x2aa,-0x28a)](_0x29bb71(0x37a,0x382)+_0x29bb71(0x3ab,0x398)+'>',_0x29bb71(0x3a0,0x39b)+'ry')[_0x29bb71(0x38e,0x3b2)](_0x1c7812[_0x29bb71(0x3bb,0x3a7)],_0x58dcd9(-0x2af,-0x2a6)+'separated\x20'+_0x58dcd9(-0x285,-0x27b))[_0x29bb71(0x396,0x397)]((_0x4e2ea6,_0x351177)=>{function _0x298eda(_0x1da076,_0x4ae503){return _0x29bb71(_0x1da076,_0x4ae503-0x2d);}const _0x13c4ce=new ConfigManager()[_0x298eda(0x3db,0x3d1)](),_0x41207c=new MemoryDatabase(_0x13c4ce['db'][_0x298eda(0x3e4,0x3e8)]);function _0x100a19(_0x372687,_0x56f532){return _0x29bb71(_0x372687,_0x56f532- -0x699);}try{_0x41207c[_0x298eda(0x3df,0x3f5)]();const _0xf1022e=_0x41207c[_0x100a19(-0x2e1,-0x2ef)](_0x4e2ea6);!_0xf1022e&&(_0x1c7812[_0x298eda(0x3df,0x3ec)](_0x1c7812['CWQAN'],_0x298eda(0x3a3,0x3b7))?(console[_0x298eda(0x3a9,0x3c0)](_0x1be96b[_0x298eda(0x3de,0x3e4)](_0x100a19(-0x300,-0x2f3)+_0x298eda(0x3bb,0x3cc)+'D\x20'+_0x4e2ea6+'\x20not\x20found')),process[_0x298eda(0x39f,0x3b0)](0x1)):(_0x274da1[_0x100a19(-0x2f3,-0x306)](_0x43bd01['red']('Error\x20upda'+_0x298eda(0x3d4,0x3d5)+'y:'),_0x2a8b59),_0x1bcd50['exit'](0x1)));const _0x50bdbd={};_0x351177['content']&&(_0x50bdbd['content']=_0x351177[_0x298eda(0x3c5,0x3db)]);_0x351177['category']&&(_0x50bdbd['category']=_0x351177[_0x298eda(0x3dd,0x3e5)]);_0x351177[_0x298eda(0x3cf,0x3ee)]&&(_0x50bdbd[_0x298eda(0x3d2,0x3ee)]=_0x351177[_0x298eda(0x40d,0x3ee)]['split'](',')[_0x298eda(0x3c3,0x3d9)](_0x191e15=>_0x191e15[_0x100a19(-0x2cc,-0x2d4)]())['filter'](Boolean));const _0x430cf2=_0x41207c[_0x100a19(-0x2e6,-0x2db)+'ry'](_0x4e2ea6,_0x50bdbd);!_0x430cf2&&(console[_0x298eda(0x3e2,0x3c0)](_0x1be96b[_0x100a19(-0x304,-0x2e2)](_0x1c7812['ndBRK'])),process[_0x298eda(0x3be,0x3b0)](0x1)),console['log'](_0x1be96b[_0x100a19(-0x2fc,-0x2dc)](_0x1c7812[_0x100a19(-0x2fe,-0x30e)])),console[_0x100a19(-0x2c6,-0x2df)](_0x1be96b[_0x298eda(0x3b8,0x3b4)](_0x100a19(-0x2f9,-0x2e5)+_0x430cf2['id'])),_0x50bdbd[_0x100a19(-0x2da,-0x2eb)]&&console[_0x100a19(-0x2f4,-0x2df)](_0x1be96b['dim'](_0x298eda(0x3cd,0x3b3)+_0x430cf2['content'][_0x100a19(-0x2ed,-0x2fd)](0x0,0x32)+_0x298eda(0x412,0x3f3))),_0x50bdbd[_0x298eda(0x3f3,0x3e5)]&&(_0x1c7812['FWlDE'](_0x1c7812[_0x298eda(0x3a4,0x3c1)],_0x1c7812['Lajna'])?_0x3e75b6[_0x298eda(0x3ea,0x3e7)](_0x37409c['dim'](_0x298eda(0x3c2,0x3bd)+_0x275839[_0x298eda(0x3d9,0x3e5)])):console[_0x100a19(-0x2f1,-0x2df)](_0x1be96b['dim'](_0x298eda(0x3da,0x3bd)+_0x430cf2[_0x100a19(-0x2f6,-0x2e1)]))),_0x50bdbd[_0x100a19(-0x2d3,-0x2d8)]&&console[_0x100a19(-0x2f4,-0x2df)](_0x1be96b['dim'](_0x100a19(-0x318,-0x304)+_0x430cf2['tags'][_0x100a19(-0x308,-0x2e4)](',\x20')));}catch(_0xa25686){console[_0x100a19(-0x318,-0x306)](_0x1be96b[_0x298eda(0x3c1,0x3e4)](_0x1c7812[_0x298eda(0x3da,0x3bf)]),_0xa25686),process[_0x298eda(0x3c2,0x3b0)](0x1);}finally{_0x1c7812[_0x298eda(0x3aa,0x3b1)]===_0x1c7812[_0x298eda(0x3b8,0x3b1)]?_0x41207c[_0x298eda(0x3d7,0x3d0)]():_0x2de2eb[_0x100a19(-0x2d9,-0x2df)](_0x5e182b['dim']('Tags:\x20'+_0x53e79a[_0x298eda(0x3df,0x3ee)]['join'](',\x20')));}});}
@@ -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(_0x29026f,_0x152321){function _0x1c3f16(_0x34f73a,_0x6f0f99){return _0x3285(_0x6f0f99- -0x3d7,_0x34f73a);}const _0x42634a=_0x29026f();function _0x24bd23(_0x2912b9,_0x344ccc){return _0x3285(_0x2912b9- -0x160,_0x344ccc);}while(!![]){try{const _0x1d33cf=-parseInt(_0x1c3f16(-0x2db,-0x305))/0x1+-parseInt(_0x24bd23(-0x45,-0x5f))/0x2*(parseInt(_0x1c3f16(-0x309,-0x2f6))/0x3)+-parseInt(_0x24bd23(-0x7e,-0x52))/0x4*(parseInt(_0x1c3f16(-0x2bc,-0x2d9))/0x5)+parseInt(_0x1c3f16(-0x2db,-0x2e1))/0x6+-parseInt(_0x1c3f16(-0x2b4,-0x2d6))/0x7+parseInt(_0x1c3f16(-0x2ca,-0x2e6))/0x8+-parseInt(_0x1c3f16(-0x2df,-0x2c0))/0x9*(-parseInt(_0x1c3f16(-0x2c9,-0x2ba))/0xa);if(_0x1d33cf===_0x152321)break;else _0x42634a['push'](_0x42634a['shift']());}catch(_0xc4c990){_0x42634a['push'](_0x42634a['shift']());}}}(_0x29f4,0xa59f5));import{Command}from'commander';function _0x3285(_0x5ab405,_0x22c5f8){_0x5ab405=_0x5ab405-0xc9;const _0x29f440=_0x29f4();let _0x328506=_0x29f440[_0x5ab405];if(_0x3285['yPqWws']===undefined){var _0x3a6dce=function(_0x2aad02){const _0x209cb5='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x42ba83='',_0x5cc71e='';for(let _0x2b8a35=0x0,_0x2ca7d2,_0x3c4d0a,_0x5bd7e1=0x0;_0x3c4d0a=_0x2aad02['charAt'](_0x5bd7e1++);~_0x3c4d0a&&(_0x2ca7d2=_0x2b8a35%0x4?_0x2ca7d2*0x40+_0x3c4d0a:_0x3c4d0a,_0x2b8a35++%0x4)?_0x42ba83+=String['fromCharCode'](0xff&_0x2ca7d2>>(-0x2*_0x2b8a35&0x6)):0x0){_0x3c4d0a=_0x209cb5['indexOf'](_0x3c4d0a);}for(let _0x21a357=0x0,_0x54675d=_0x42ba83['length'];_0x21a357<_0x54675d;_0x21a357++){_0x5cc71e+='%'+('00'+_0x42ba83['charCodeAt'](_0x21a357)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x5cc71e);};_0x3285['RuUIHF']=_0x3a6dce,_0x3285['AwPtlC']={},_0x3285['yPqWws']=!![];}const _0x1cf650=_0x29f440[0x0],_0x14e383=_0x5ab405+_0x1cf650,_0x2b3d3b=_0x3285['AwPtlC'][_0x14e383];return!_0x2b3d3b?(_0x328506=_0x3285['RuUIHF'](_0x328506),_0x3285['AwPtlC'][_0x14e383]=_0x328506):_0x328506=_0x2b3d3b,_0x328506;}import _0x58f1aa from'chalk';import _0x347e07 from'ora';import{ConfigManager}from'../../config/manager.js';function _0x29f4(){const _0x5b9c08=['yMvKigvYCM9Y','B3b0Aw9U','BgXT','wfblwM0','nJK4mdq1CKH4q0Lx','uMvNzw5LCMf0zq','z2v0twvTB3j5qW','Dg9tDhjPBMC','CMvPBMrLEa','EMXPAuW','DfHlCKi','qK9LALG','t3vHD2q','4PQG77IpicbfBwjLzgrP','y2XVC2u','yMXLzcb0CNvL','z3jLzw4','BMFSNBqG67Me7zMC7isX7zMu65cy7jA0','zw1IzwrcyxrJAa','m09Wvgz5tG','nZGXnZmYzMfOzhfh','CM91BMq','C2XPy2u','zw1Izwq','A0fMuK8','ls1YzwLUzgv4','zw1VCNKGy29UzG','6RcCioUPLoUQQoUMRcdSNOtRSQdRLkKG','y3LHBG','icaGia','DMXouMK','C3rHDhm','7j6e67kG65sPioYEIoYDJdOGica','r2vUzxjHDguGzq','Bg9Hza','mJi4mJi1nLPiuMfutG','vw5RBM93BIbLBq','B3vUDa','u2HVDYbLBwjLza','C3vJy2vLza','nZGZmZKZmhz4ruj1rq','BgvUz3rO','rK9ty1C','CMvK','C3rPy3m','65sP7j20ioYHToYERo2vQEUlIoUlPc4','BgfSDei','zwrKAw5NlMvUyq','mZbSBNfXCeO','tKz4BKO','ls1ZDgf0CW','nZiWnJiYvxrrAxL5','ys1Tzw1VCNKGzq','cVcFK4OG7j6e67kG65sPio2yHo2zQqO','yMHWB3O','EwvSBg93','igfSBcbLBwjLza','ywn0Aw9U','4P2mioYvJcdSIjGG7jEg64QuioYyPa','ExjdrNm','tuLAAhi','AwCGC2v0igvTyG','Bg9N','AeTfqKm','zgLTzw5ZAw9UCW','7kce7lk0ioUPLoUQQoUMRdOGica','zxjYB3i','CefUvwC','7j6e67kG65sPioYxHUYDJdOGica','ioYzHoUJJcaO','BwjLza','BwjLzgrPBMDZia','z3jHEq','mtG5ENH4D2Xu','4P2mioYyPoULMdOG','yMvKzgLUzW','C3rHCNq','mtKXmtCYngLkz29lrq','C1DPDgHVDxrfBq','otyWndmWwMHyAhPh','BwfW','De1bAeW','C2f2zuvTyMvKza','zw1IzwrKAw5N','zgLUzYbZDgf0Aq','ioYEIoYkTEUlIoUlPc4','zw5HyMXLza','Aw5PDgLHBgL6zq','z2v0twvTB3jPzq','yM9Sza','7zMC7isX7zMuoIbHmMeTBq','BwvZC2fNzq','CwDNrvy','zM9Yig1LBw9YAq'];_0x29f4=function(){return _0x5b9c08;};return _0x29f4();}import{MemoryDatabase}from'../../db/database.js';import{createEmbeddingProvider}from'../../embedding/index.js';export function embedCommand(){function _0x2f965b(_0x389d5c,_0x560ca4){return _0x3285(_0x560ca4-0x12d,_0x389d5c);}const _0x53dd3c={'pAnUg':'임베딩\x20생성\x20중..'+'.','mGcXs':'모든\x20메모리에\x20임베'+_0x273160(0x4b4,0x495),'kAfRO':function(_0x37356b,_0x4f55e8){return _0x37356b+_0x4f55e8;},'XPKZm':function(_0x488af6,_0x1d2f55){return _0x488af6*_0x1d2f55;},'NFxnJ':function(_0x319fa4,_0xbafd9a){return _0x319fa4/_0xbafd9a;},'BOejX':_0x2f965b(0x200,0x219),'qggEV':_0x2f965b(0x244,0x235)+'류','FOScW':_0x2f965b(0x213,0x21f)+_0x273160(0x487,0x46c),'DbJog':_0x2f965b(0x233,0x212),'yrCFs':_0x2f965b(0x212,0x214),'zliiL':_0x273160(0x48c,0x48c)+_0x273160(0x4bf,0x4ce)+'dings','laltB':_0x273160(0x4b9,0x4dd)},_0x1fc98f=new Command(_0x53dd3c['DbJog'])['descriptio'+'n'](_0x273160(0x4a8,0x4ab)+_0x2f965b(0x238,0x242)+_0x273160(0x486,0x475)+'es');_0x1fc98f[_0x273160(0x488,0x462)](_0x53dd3c[_0x2f965b(0x261,0x236)],_0x53dd3c[_0x273160(0x490,0x475)])['option'](_0x53dd3c[_0x2f965b(0x203,0x229)],_0x273160(0x4ad,0x4b4)+_0x273160(0x4db,0x4c9)+_0x273160(0x4b3,0x4e0))[_0x2f965b(0x23c,0x234)](async _0x4cbf07=>{const _0x338133={'hKEBC':function(_0x129383,_0xbd6c8){return _0x129383(_0xbd6c8);}},_0x5aea29=new ConfigManager();function _0x26f655(_0x314e7f,_0x5afae9){return _0x2f965b(_0x5afae9,_0x314e7f- -0x2ca);}function _0x3573eb(_0x16b24a,_0x145e78){return _0x2f965b(_0x16b24a,_0x145e78- -0x1b2);}const _0x44fb46=_0x5aea29[_0x3573eb(0x58,0x6b)]();if(!_0x44fb46[_0x26f655(-0x7c,-0x8c)]?.[_0x3573eb(0xc3,0x9f)]){console[_0x3573eb(0x6c,0x87)](_0x58f1aa['yellow'](_0x3573eb(0x69,0x56)+_0x3573eb(0x64,0x5a)+_0x3573eb(0xb8,0x9e))),console[_0x3573eb(0x8b,0x87)](_0x58f1aa[_0x3573eb(0x76,0x91)](_0x26f655(-0xd3,-0xc0)+_0x3573eb(0x5e,0x63)+_0x3573eb(0x6e,0x86)+_0x3573eb(0x85,0x78)+_0x26f655(-0xc0,-0xb9)));return;}const _0x1b27f9=new MemoryDatabase(_0x44fb46['db']['path']);try{_0x1b27f9[_0x26f655(-0x78,-0x61)]();if(_0x4cbf07[_0x3573eb(0x8b,0x68)]){showStats(_0x1b27f9);return;}const _0x51955b=_0x347e07(_0x53dd3c[_0x26f655(-0x8c,-0xb4)])[_0x26f655(-0x83,-0x9e)](),_0x448b22=createEmbeddingProvider(_0x44fb46[_0x26f655(-0x7c,-0x83)],_0x44fb46[_0x26f655(-0xcd,-0xf1)]),_0x531dc7=_0x4cbf07[_0x26f655(-0xc7,-0xba)]?_0x1b27f9['listMemori'+'es']({'limit':0x2710}):_0x1b27f9[_0x26f655(-0x77,-0x6e)+_0x3573eb(0x6b,0x97)+'bedding'](0x3e8);if(_0x531dc7[_0x3573eb(0x7a,0x72)]===0x0){_0x51955b['succeed'](_0x53dd3c['mGcXs']);return;}_0x51955b['text']=_0x531dc7[_0x26f655(-0xa6,-0xd0)]+(_0x26f655(-0xb4,-0xe2)+'생성\x20중...');const _0x53fabb=0x32;let _0x56910a=0x0;for(let _0x3c9c62=0x0;_0x3c9c62<_0x531dc7[_0x26f655(-0xa6,-0xc1)];_0x3c9c62+=_0x53fabb){const _0x236c2f=_0x531dc7[_0x3573eb(0x72,0x5f)](_0x3c9c62,_0x53dd3c[_0x26f655(-0xb7,-0xda)](_0x3c9c62,_0x53fabb)),_0x2e8a7e=_0x236c2f[_0x26f655(-0x7f,-0x8e)](_0x4854cf=>_0x4854cf['content']),_0x1d3a86=await _0x448b22[_0x26f655(-0xbd,-0xa1)](_0x2e8a7e);for(let _0x13680e=0x0;_0x13680e<_0x236c2f[_0x3573eb(0x75,0x72)];_0x13680e++){_0x1b27f9[_0x3573eb(0x7a,0x9b)+'ing'](_0x236c2f[_0x13680e]['id'],_0x1d3a86[_0x13680e]),_0x56910a++;}_0x51955b['text']=_0x56910a+'/'+_0x531dc7[_0x26f655(-0xa6,-0xc8)]+_0x26f655(-0x8a,-0x9d)+Math['round'](_0x53dd3c[_0x26f655(-0xcc,-0xe9)](_0x53dd3c[_0x26f655(-0x9e,-0xa5)](_0x56910a,_0x531dc7['length']),0x64))+'%)';}_0x51955b[_0x3573eb(0x55,0x70)](_0x58f1aa[_0x3573eb(0x5c,0x59)]('✅\x20'+_0x56910a+('개\x20임베딩\x20생성\x20완'+'료'))),console[_0x3573eb(0xb6,0x87)](_0x58f1aa[_0x3573eb(0x8c,0x91)]('Provider:\x20'+_0x44fb46['embedding']['provider']+'\x20('+_0x44fb46[_0x3573eb(0x86,0x9c)][_0x3573eb(0x7f,0x89)]+'D)'));}catch(_0xdf685d){if(_0xdf685d instanceof Error){if(_0x26f655(-0x7e,-0xa4)===_0x53dd3c[_0x26f655(-0xc4,-0xd2)]){_0x338133[_0x3573eb(0x90,0x88)](_0x5d2f08,_0x1e4323);return;}else{console[_0x26f655(-0x8d,-0xba)](_0x58f1aa['red'](_0x26f655(-0x85,-0x63)+_0xdf685d[_0x26f655(-0xd2,-0xc4)]));throw _0xdf685d;}}console[_0x26f655(-0x8d,-0x78)](_0x58f1aa[_0x26f655(-0xa4,-0x8e)](_0x53dd3c[_0x26f655(-0xd1,-0xf3)]));throw new Error(_0x53dd3c[_0x3573eb(0x67,0x73)]);}finally{_0x1b27f9[_0x3573eb(0x78,0x57)]();}});function _0x273160(_0x2cb3d3,_0x258d7d){return _0x3285(_0x2cb3d3-0x3b9,_0x258d7d);}return _0x1fc98f;}function showStats(_0x13e440){const _0x56f5a5={'MIZhr':function(_0x557e30,_0x48186b){return _0x557e30/_0x48186b;},'qyitx':function(_0x387f67,_0x5231c1){return _0x387f67>_0x5231c1;},'yBbmr':function(_0x4ad813,_0x4d66d3){return _0x4ad813/_0x4d66d3;},'Ouawd':function(_0x4f9b30,_0x53dec0){return _0x4f9b30>_0x53dec0;},'zlgYq':function(_0x43054d,_0x4f38b2){return _0x43054d===_0x4f38b2;},'bhpoz':_0x10706f(0x39f,0x3af)},_0xab5e7a=_0x13e440[_0x10706f(0x39b,0x37e)+_0x10706f(0x3ba,0x3c4)](),_0x45245d=_0x13e440[_0x43c7bf(0x36d,0x34f)+'sWithoutEm'+_0x43c7bf(0x360,0x384)](0x2710)[_0x43c7bf(0x33e,0x315)],_0xd855ea=_0xab5e7a-_0x45245d;function _0x10706f(_0xc175a5,_0x1a8153){return _0x3285(_0xc175a5-0x2c7,_0x1a8153);}console[_0x43c7bf(0x353,0x357)](_0x58f1aa[_0x10706f(0x390,0x38c)](_0x43c7bf(0x34a,0x363)));function _0x43c7bf(_0x17de44,_0x21ad7c){return _0x3285(_0x17de44-0x247,_0x21ad7c);}console[_0x10706f(0x3d3,0x3f5)](_0x10706f(0x3d6,0x3f7)+_0x10706f(0x3b2,0x3b0)+_0x58f1aa['cyan'](_0xab5e7a[_0x43c7bf(0x31c,0x331)]())),console[_0x43c7bf(0x353,0x36f)](_0x10706f(0x3b5,0x398)+_0x43c7bf(0x332,0x345)+_0x58f1aa[_0x43c7bf(0x325,0x351)](_0xd855ea[_0x10706f(0x39c,0x398)]())+'\x20('+Math[_0x10706f(0x3aa,0x3b5)](_0x56f5a5['yBbmr'](_0xd855ea,_0xab5e7a)*0x64)+'%)'),console[_0x43c7bf(0x353,0x35a)](_0x10706f(0x3d9,0x402)+_0x10706f(0x3b2,0x3d7)+_0x58f1aa[_0x43c7bf(0x34c,0x37a)](_0x45245d['toString']())+'\x20('+Math[_0x43c7bf(0x32a,0x34d)](_0x45245d/_0xab5e7a*0x64)+'%)'),console['log']('');if(_0x56f5a5[_0x43c7bf(0x321,0x321)](_0x45245d,0x0)){if(_0x56f5a5['zlgYq'](_0x56f5a5[_0x43c7bf(0x34b,0x351)],_0x43c7bf(0x31f,0x318)))console[_0x10706f(0x3d3,0x3d5)](_0x58f1aa[_0x43c7bf(0x35d,0x386)]('임베딩\x20생성:\x20a2'+_0x10706f(0x3c9,0x3c4)+_0x10706f(0x3db,0x3b0)));else{const _0x3739ac=_0x1b4bdb[_0x10706f(0x39b,0x37a)+_0x10706f(0x3ba,0x3ab)](),_0x5b3532=_0x23d880[_0x43c7bf(0x36d,0x373)+'sWithoutEm'+'bedding'](0x2710)['length'],_0x50209a=_0x3739ac-_0x5b3532;_0x369a66[_0x43c7bf(0x353,0x352)](_0x3e2470[_0x43c7bf(0x310,0x2ee)](_0x10706f(0x3ca,0x3a6))),_0x1deb11[_0x43c7bf(0x353,0x34c)](_0x10706f(0x3d6,0x3b6)+_0x43c7bf(0x332,0x328)+_0xc8c391[_0x43c7bf(0x331,0x358)](_0x3739ac[_0x10706f(0x39c,0x3a6)]())),_0x426cb3[_0x43c7bf(0x353,0x33d)](_0x43c7bf(0x335,0x34c)+_0x10706f(0x3b2,0x3e0)+_0x4dea25['green'](_0x50209a[_0x10706f(0x39c,0x37f)]())+'\x20('+_0x1ac9c7[_0x10706f(0x3aa,0x3b5)](_0x56f5a5[_0x43c7bf(0x351,0x35a)](_0x50209a,_0x3739ac)*0x64)+'%)'),_0x5279d0[_0x43c7bf(0x353,0x376)]('임베딩\x20없음:\x20\x20\x20'+'\x20\x20\x20\x20'+_0x2ca29f['yellow'](_0x5b3532[_0x10706f(0x39c,0x36d)]())+'\x20('+_0xe2859f[_0x10706f(0x3aa,0x3d7)](_0x5b3532/_0x3739ac*0x64)+'%)'),_0x49e85e[_0x10706f(0x3d3,0x3de)](''),_0x56f5a5['qyitx'](_0x5b3532,0x0)&&_0x5331e0['log'](_0x417f10[_0x43c7bf(0x35d,0x37b)]('임베딩\x20생성:\x20a2'+_0x43c7bf(0x349,0x339)+'mbed'));}}}
@@ -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(_0x5e7692,_0xc622d7){function _0x40936d(_0x15454c,_0x2b3666){return _0xa0e8(_0x15454c-0x2d7,_0x2b3666);}function _0x2bc95e(_0x3a9ae5,_0x5057b9){return _0xa0e8(_0x5057b9-0x140,_0x3a9ae5);}const _0x22e1df=_0x5e7692();while(!![]){try{const _0x1cad95=-parseInt(_0x2bc95e(0x2e7,0x30c))/0x1+-parseInt(_0x2bc95e(0x33b,0x312))/0x2+parseInt(_0x40936d(0x4d4,0x503))/0x3*(-parseInt(_0x40936d(0x4d9,0x4cc))/0x4)+-parseInt(_0x2bc95e(0x2ee,0x30e))/0x5*(parseInt(_0x2bc95e(0x308,0x322))/0x6)+parseInt(_0x40936d(0x4f7,0x50a))/0x7*(parseInt(_0x2bc95e(0x395,0x35f))/0x8)+-parseInt(_0x2bc95e(0x30c,0x30f))/0x9+parseInt(_0x40936d(0x4cf,0x4ba))/0xa*(parseInt(_0x40936d(0x493,0x470))/0xb);if(_0x1cad95===_0xc622d7)break;else _0x22e1df['push'](_0x22e1df['shift']());}catch(_0x301b6d){_0x22e1df['push'](_0x22e1df['shift']());}}}(_0x249f,0xb922a));import{Command}from'commander';function _0xa0e8(_0x4d6b93,_0x4a8097){_0x4d6b93=_0x4d6b93-0x1bb;const _0x249fd5=_0x249f();let _0xa0e8d=_0x249fd5[_0x4d6b93];if(_0xa0e8['zWRbYd']===undefined){var _0x3d361a=function(_0x433f22){const _0x1b0611='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x3cd284='',_0x3aadc2='';for(let _0x59e281=0x0,_0x3ad5ce,_0x183975,_0x285fc0=0x0;_0x183975=_0x433f22['charAt'](_0x285fc0++);~_0x183975&&(_0x3ad5ce=_0x59e281%0x4?_0x3ad5ce*0x40+_0x183975:_0x183975,_0x59e281++%0x4)?_0x3cd284+=String['fromCharCode'](0xff&_0x3ad5ce>>(-0x2*_0x59e281&0x6)):0x0){_0x183975=_0x1b0611['indexOf'](_0x183975);}for(let _0x105e26=0x0,_0x1ff911=_0x3cd284['length'];_0x105e26<_0x1ff911;_0x105e26++){_0x3aadc2+='%'+('00'+_0x3cd284['charCodeAt'](_0x105e26)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x3aadc2);};_0xa0e8['DxsRJh']=_0x3d361a,_0xa0e8['TNkXmS']={},_0xa0e8['zWRbYd']=!![];}const _0x485523=_0x249fd5[0x0],_0x1f238c=_0x4d6b93+_0x485523,_0x3be7d2=_0xa0e8['TNkXmS'][_0x1f238c];return!_0x3be7d2?(_0xa0e8d=_0xa0e8['DxsRJh'](_0xa0e8d),_0xa0e8['TNkXmS'][_0x1f238c]=_0xa0e8d):_0xa0e8d=_0x3be7d2,_0xa0e8d;}import _0x5e291b from'chalk';import _0x50fd58 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';function _0x249f(){const _0xc2e615=['DwL5EMC','u3bLy2LMAwmGCa','C3rHCNq','z3jLzw4','BMqU','uKPfqxy','u2HVDYb3Agf0ia','icaGicaGica','Cgf0Aa','ifnLC3nPB246ia','Bg9Hza','z2v0u2vZC2LVBG','EhrYywn0zwqGDW','mte5mtiYzNPYs2jJ','r2jUt2q','nJqWEgLVzvHt','ntqZmZeWmMTczhDfCa','y29UDgvUDa','BgvUz3rO','nJmXmJrVuMHdBuS','icbnzxnZywDLCW','zffbAuy','lxaSic0TChjVAG','icaGicaGicaG','CM9JzxnZzwqP','EwvSBg93','igzPBgvZigzVDq','zu5fDxe','ywn0Aw9U','ihnLC3nPB24GzG','cVcFK4OGrxH0CMfJDa','tM8GC2vZC2LVBG','lcbZA2LWCgvKoG','BgLTAxq','r3ffwhm','ntG5mdHgy1HrwxC','qKHMsgy','BwvTB3jPzxm','ig1LBw9YAwvZ','zxnZ','B3b0Aw9U','Dg90ywXnzxnZyq','z3jHEq','q0nMrgK','icaG','Bw9YAwvZigzYBW','Dca8BJ4','rxH0CMfJDgvKoG','BhrLCJOG','zgvZy3jPChrPBW','twf4ihnLC3nPBW','BNmGDg8GChjVyW','cLTeuLKGuLvoxq','rM91BMqG','icbxB3vSzcbLEa','icaGic0GwW','zgLT','mtiZotqZmJbLvxrozvy','icbxB3vSzcbMAq','B2rLihnLC3nPBW','lwWSic0TBgLTAq','CM9Qzwn0ihbHDa','mJGWmtfXvxzrz0C','uhjVy2vZC2vKoG','Dgv4Da','kgfSCMvHzhKGCa','z2vZ','mtq4BgfrEKTy','BsbdBgf1zguGqW','Aw1PDa','C3rHDhm','C3nPB24GzMLSzq','lI4U','yKrWvNu','icaGicaGia','zMLSDgvYzwrtzq','Bg9N','ihnLC3nPB25ZlG','ihnLC3nPB25Zia','zMLSzvbHDgG','yM9Sza','ChjVy2vZC2vKkq','vwzyEwS','yMX1zq','C3rVCa','lI4UicG','C2f2zvnLC3nPBW','uhjVy2vZC2LUzW','BcbZzxnZAw9UCW','rMLUzgLUzYbZzq','zhj5uNvU','zMfPBa','igL0zw1Z','C2vZC2LVBKLK','Aw9UCZO','D291BgqGyMuGzq','mJy5mJblvvLYsNG','mtmYm0LNqvHHCa','ChjVAMvJDfbHDa','C2XPy2u','ihDPDgHVDxqGBa','ls1KCNKTCNvU','y2f0zwDVCNK','ihnLBNnPDgL2zq','rxH0CMfJDcbTzq','y3LHBG','C3vJy2vLza','mJjrDNHvqM8','Aw5N','zxnZoG'];_0x249f=function(){return _0xc2e615;};return _0x249f();}export function extractCommand(){const _0x3834cf={'CCfDi':function(_0x249e57,_0x5611d4){return _0x249e57===_0x5611d4;},'GbnOd':_0x4e0fe9(0x202,0x22e)+_0x58d78c(0x4e6,0x514)+_0x58d78c(0x4d0,0x4e8),'bDpVu':function(_0x302d20,_0x575c00){return _0x302d20(_0x575c00);},'uiyzg':function(_0x10a820,_0x2039b2,_0x537fca){return _0x10a820(_0x2039b2,_0x537fca);},'EGuLY':_0x58d78c(0x4ea,0x50c)+'ion\x20Summar'+'y:\x0a','QZrmN':'[DRY\x20RUN]','RJEAv':'Skipped:','BHfHf':'Total\x20sess'+_0x4e0fe9(0x280,0x26d),'pgILA':_0x4e0fe9(0x249,0x23e),'wJrWx':'Filtered:','GqEXs':_0x4e0fe9(0x24b,0x277)+_0x58d78c(0x4f9,0x4c9)+_0x4e0fe9(0x24f,0x253)+_0x4e0fe9(0x237,0x24a)+'ns','eNEuq':_0x4e0fe9(0x230,0x210)+_0x58d78c(0x509,0x518)+'h','dQAiF':_0x4e0fe9(0x23e,0x24b)+_0x58d78c(0x4fa,0x4ee),'eyTJC':_0x58d78c(0x4fe,0x516)+_0x4e0fe9(0x22f,0x242)+_0x4e0fe9(0x256,0x236),'UfXyk':'--all'};function _0x58d78c(_0x1a1e30,_0x2c4c29){return _0xa0e8(_0x1a1e30-0x30d,_0x2c4c29);}function _0x4e0fe9(_0x6db985,_0x4b5418){return _0xa0e8(_0x4b5418-0x50,_0x6db985);}return new Command('extract')[_0x58d78c(0x4fd,0x4f4)+'n'](_0x3834cf[_0x4e0fe9(0x24b,0x231)])[_0x4e0fe9(0x23f,0x237)](_0x4e0fe9(0x24c,0x225)+'ect\x20<path>',_0x3834cf[_0x58d78c(0x4e7,0x4f9)])[_0x58d78c(0x4f4,0x51e)](_0x3834cf[_0x4e0fe9(0x214,0x224)],_0x3834cf['eyTJC'],'10')[_0x58d78c(0x4f4,0x4cc)](_0x3834cf[_0x4e0fe9(0x23a,0x261)],'Process\x20al'+_0x4e0fe9(0x263,0x267)+_0x58d78c(0x530,0x548)+_0x4e0fe9(0x25f,0x254))[_0x58d78c(0x4f4,0x501)](_0x4e0fe9(0x24d,0x274),_0x4e0fe9(0x1fa,0x215)+_0x4e0fe9(0x246,0x26e)+_0x4e0fe9(0x1fc,0x21b)+'ithout\x20sav'+_0x4e0fe9(0x220,0x20d))[_0x58d78c(0x4e8,0x4b1)](_0x4ee69d=>{function _0xea0c9b(_0x5509f7,_0x106d73){return _0x4e0fe9(_0x5509f7,_0x106d73-0x45);}function _0x263419(_0x484f65,_0xf1af7a){return _0x4e0fe9(_0x484f65,_0xf1af7a- -0x345);}const _0x2fcd3f=new ConfigManager()[_0x263419(-0x13e,-0x12c)](),_0x234aad=new MemoryDatabase(_0x2fcd3f['db'][_0x263419(-0xfe,-0x12e)]);try{_0x234aad['initialize']();const _0x2a7bb7=_0x50fd58(_0x263419(-0xf1,-0xdd)+_0xea0c9b(0x2b8,0x29b)+'s...')[_0x263419(-0x107,-0x134)](),_0x1bd688=findSessionFiles(_0x4ee69d['project']);if(_0x3834cf[_0x263419(-0x12c,-0x10b)](_0x1bd688[_0xea0c9b(0x252,0x266)],0x0)){_0x2a7bb7[_0x263419(-0xee,-0xdb)](_0x3834cf[_0x263419(-0x108,-0x128)]);return;}_0x2a7bb7[_0x263419(-0x170,-0x13a)](_0x263419(-0xf5,-0x101)+_0x5e291b['cyan'](_0x1bd688[_0x263419(-0x12e,-0x124)])+(_0x263419(-0x133,-0x119)+'ile(s)'));const _0x1d5503=_0x4ee69d['all']?_0x1bd688[_0xea0c9b(0x27c,0x266)]:parseInt(_0x4ee69d[_0xea0c9b(0x255,0x275)],0xa);let _0x16659b=0x0,_0x42e174=0x0,_0x50f2f7=0x0,_0x320609=0x0;const _0x58bdbf=_0x3834cf[_0xea0c9b(0x279,0x29d)](_0x50fd58,{'text':_0xea0c9b(0x27b,0x2ab)+_0xea0c9b(0x296,0x2a1)+'..','prefixText':_0x5e291b['dim']('')})[_0xea0c9b(0x22d,0x256)]();for(const _0x5c7555 of _0x1bd688[_0x263419(-0xe0,-0xd3)](0x0,_0x1d5503)){const _0x4489df=_0x234aad[_0xea0c9b(0x24a,0x25f)](_0x5c7555['sessionId']);if(_0x4489df){_0x320609++,_0x58bdbf[_0xea0c9b(0x2c3,0x294)]=_0xea0c9b(0x2bc,0x2ab)+_0xea0c9b(0x276,0x2a9)+_0x50f2f7+'/'+_0x1d5503+(_0xea0c9b(0x2a8,0x274)+'\x20')+_0x320609+')';continue;}const _0x24d31b=parseSessionFile(_0x5c7555[_0xea0c9b(0x26d,0x2a3)]);if(_0x3834cf[_0xea0c9b(0x266,0x27f)](_0x24d31b[_0xea0c9b(0x26b,0x266)],0x0)){_0x320609++,_0x58bdbf[_0x263419(-0xd4,-0xf6)]=_0x263419(-0xd8,-0xdf)+_0x263419(-0xfd,-0xe1)+_0x50f2f7+'/'+_0x1d5503+(_0x263419(-0x128,-0x116)+'\x20')+_0x320609+')';continue;}const _0x4ca6fc=_0x3834cf[_0xea0c9b(0x268,0x254)](extractMemories,_0x24d31b,_0x5c7555[_0x263419(-0xc4,-0xd4)+'h']);if(_0x4ee69d[_0xea0c9b(0x2cd,0x2ae)]){_0x58bdbf['stop'](),console[_0x263419(-0xcf,-0xea)](_0x5e291b['dim'](_0xea0c9b(0x2b5,0x288)+_0x263419(-0x155,-0x12d)+_0x5c7555[_0xea0c9b(0x2af,0x2b1)])),console[_0xea0c9b(0x270,0x2a0)](_0x5e291b['dim'](_0x263419(-0x13d,-0x122)+':\x20'+_0x4ca6fc['stats'][_0x263419(-0x12c,-0x10d)+_0x263419(-0xc4,-0xf4)])),console[_0x263419(-0x104,-0xea)](_0x5e291b[_0xea0c9b(0x294,0x2a7)](_0xea0c9b(0x2ae,0x28a)+'tract:\x20'+_0x4ca6fc[_0x263419(-0x11d,-0x111)][_0xea0c9b(0x285,0x266)]+_0x263419(-0x125,-0x110))),console[_0x263419(-0x106,-0xea)](_0x5e291b[_0xea0c9b(0x29e,0x26d)](_0x263419(-0x115,-0xfc)+_0xea0c9b(0x281,0x284)+_0x4ca6fc[_0xea0c9b(0x2cc,0x29a)][_0xea0c9b(0x296,0x29f)+'nsitive']+('\x20sensitive'+_0xea0c9b(0x2a1,0x2b0))));for(const _0x4e8dbf of _0x4ca6fc[_0x263419(-0x11f,-0x111)]){console[_0xea0c9b(0x2b1,0x2a0)](_0x5e291b['dim'](_0x263419(-0xf3,-0xff)+_0x4e8dbf[_0xea0c9b(0x294,0x2ba)]+']\x20'+_0x4e8dbf[_0x263419(-0xf3,-0x125)][_0x263419(-0xee,-0xd3)](0x0,0x50)+_0x263419(-0x122,-0xee)));}_0x58bdbf[_0xea0c9b(0x28a,0x256)]();}else{for(const _0x7d9099 of _0x4ca6fc['memories']){_0x234aad['createMemo'+'ry']({..._0x7d9099,'sessionId':_0x5c7555['sessionId']});}_0x234aad[_0xea0c9b(0x2de,0x2aa)+'n'](_0x5c7555[_0xea0c9b(0x27a,0x2b1)],_0x5c7555[_0xea0c9b(0x2bc,0x2b6)+'h'],_0x24d31b[_0xea0c9b(0x267,0x266)]),_0x16659b+=_0x4ca6fc[_0x263419(-0x144,-0x111)][_0xea0c9b(0x26d,0x266)],_0x42e174+=_0x4ca6fc[_0xea0c9b(0x28d,0x29a)]['filteredSe'+'nsitive'];}_0x50f2f7++,_0x58bdbf[_0xea0c9b(0x2a7,0x294)]=_0xea0c9b(0x2d9,0x2ab)+_0xea0c9b(0x2a5,0x2a9)+_0x50f2f7+'/'+_0x1d5503+(',\x20skipped:'+'\x20')+_0x320609+')';}_0x58bdbf[_0x263419(-0xcd,-0xe2)](),console['log'](_0x5e291b[_0xea0c9b(0x279,0x2a4)](_0x3834cf['EGuLY'])),_0x4ee69d['dryRun']?(console['log']('\x20\x20'+_0x5e291b[_0xea0c9b(0x291,0x28c)]('Mode:')+('\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+'\x20\x20')+_0x5e291b[_0x263419(-0xed,-0x11d)](_0x3834cf['QZrmN'])),console[_0xea0c9b(0x2c6,0x2a0)]('\x20\x20'+_0x5e291b[_0x263419(-0xce,-0xfe)]('Would\x20proc'+_0xea0c9b(0x25d,0x253))+_0xea0c9b(0x28a,0x280)+_0x5e291b[_0xea0c9b(0x2c7,0x2bd)](_0x50f2f7)+'\x20sessions'),console[_0x263419(-0x115,-0xea)]('\x20\x20'+_0x5e291b[_0x263419(-0x11d,-0xfe)](_0x3834cf[_0x263419(-0x111,-0x131)])+_0xea0c9b(0x296,0x26b)+_0x5e291b['gray'](_0x320609)+(_0xea0c9b(0x2c6,0x2a2)+_0x263419(-0x10d,-0xf5)+_0xea0c9b(0x23d,0x26c)))):(console[_0x263419(-0xb4,-0xea)]('\x20\x20'+_0x5e291b[_0x263419(-0xd3,-0xfe)](_0x3834cf[_0x263419(-0xe3,-0x112)])+'\x20\x20'+_0x5e291b[_0x263419(-0xc4,-0xcd)](_0x1bd688['length'])),console['log']('\x20\x20'+_0x5e291b[_0x263419(-0xfe,-0xfe)](_0x263419(-0xf2,-0xf7))+_0x263419(-0xc8,-0xec)+_0x5e291b[_0xea0c9b(0x255,0x257)](_0x50f2f7)),console[_0x263419(-0x103,-0xea)]('\x20\x20'+_0x5e291b[_0xea0c9b(0x2ba,0x28c)]('Skipped:')+_0xea0c9b(0x29b,0x26b)+_0x5e291b[_0xea0c9b(0x260,0x27e)](_0x320609)+('\x20(already\x20'+_0x263419(-0xcb,-0xe5))),console[_0x263419(-0xf6,-0xea)]('\x20\x20'+_0x5e291b['dim'](_0x3834cf['pgILA'])+_0xea0c9b(0x2b4,0x29e)+_0x5e291b['green'](_0x16659b)+_0x263419(-0x122,-0x110)),console[_0xea0c9b(0x2c7,0x2a0)]('\x20\x20'+_0x5e291b[_0x263419(-0xf4,-0xfe)](_0x3834cf['wJrWx'])+_0xea0c9b(0x254,0x25b)+_0x5e291b[_0xea0c9b(0x27a,0x26d)](_0x42e174)+(_0xea0c9b(0x2f1,0x2bb)+_0x263419(-0xe6,-0xda)))),console['log']();}finally{_0x234aad['close']();}});}