a2a-memory 0.11.5 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (274) hide show
  1. package/LICENSE +7 -19
  2. package/README.md +1 -1
  3. package/dist/a2a/client.js +1 -252
  4. package/dist/a2a/discovery.js +1 -115
  5. package/dist/a2a/index.js +1 -8
  6. package/dist/a2a/types.js +1 -42
  7. package/dist/adapters/anthropic.js +1 -117
  8. package/dist/chunking/chunker.js +1 -163
  9. package/dist/claude/sync.d.ts +8 -2
  10. package/dist/claude/sync.js +1 -298
  11. package/dist/cli/commands/add.js +1 -80
  12. package/dist/cli/commands/claude-sync.d.ts +3 -3
  13. package/dist/cli/commands/claude-sync.js +1 -70
  14. package/dist/cli/commands/cleanup.js +1 -83
  15. package/dist/cli/commands/config.js +1 -79
  16. package/dist/cli/commands/edit.js +1 -69
  17. package/dist/cli/commands/embed.js +1 -92
  18. package/dist/cli/commands/extract.js +1 -103
  19. package/dist/cli/commands/health.js +1 -105
  20. package/dist/cli/commands/list.js +1 -46
  21. package/dist/cli/commands/migrate-chunks.js +1 -205
  22. package/dist/cli/commands/migrate-file-refs.js +1 -183
  23. package/dist/cli/commands/proficiency.js +1 -146
  24. package/dist/cli/commands/rm.js +1 -64
  25. package/dist/cli/commands/search.js +1 -90
  26. package/dist/cli/commands/setup-wizard.js +1 -387
  27. package/dist/cli/commands/setup.js +1 -170
  28. package/dist/cli/commands/skill.js +1 -151
  29. package/dist/cli/commands/status.js +1 -70
  30. package/dist/cli/commands/sync.js +1 -202
  31. package/dist/cli/commands/team.js +1 -142
  32. package/dist/cli/index.js +1 -87
  33. package/dist/config/manager.js +1 -372
  34. package/dist/db/database.d.ts +36 -0
  35. package/dist/db/database.js +1 -1400
  36. package/dist/embedding/e5-provider.js +1 -147
  37. package/dist/embedding/index.js +1 -34
  38. package/dist/embedding/local-provider.js +1 -157
  39. package/dist/embedding/openai-provider.js +1 -92
  40. package/dist/embedding/quantization.js +1 -89
  41. package/dist/extraction/dedup-manager.js +1 -161
  42. package/dist/extraction/emotion-filter.js +1 -33
  43. package/dist/extraction/extractor.d.ts +0 -3
  44. package/dist/extraction/extractor.js +1 -648
  45. package/dist/extraction/file-reference.js +1 -77
  46. package/dist/extraction/filter.js +1 -86
  47. package/dist/extraction/scorer.js +1 -142
  48. package/dist/extraction/similarity.js +1 -85
  49. package/dist/hooks/client-factory.js +1 -44
  50. package/dist/hooks/post-tool-use.js +1 -518
  51. package/dist/hooks/pre-compact.js +1 -209
  52. package/dist/hooks/session-end.js +1 -633
  53. package/dist/hooks/session-start.js +1 -549
  54. package/dist/hooks/shared.js +1 -110
  55. package/dist/hooks/stop.d.ts +21 -0
  56. package/dist/hooks/stop.js +1 -0
  57. package/dist/hooks/user-prompt-submit.js +1 -316
  58. package/dist/i18n/index.js +1 -2
  59. package/dist/i18n/messages.js +1 -150
  60. package/dist/index.d.ts +1 -1
  61. package/dist/index.js +1 -43
  62. package/dist/lifecycle/cleanup-scheduler.js +1 -137
  63. package/dist/lifecycle/cleanup.d.ts +1 -0
  64. package/dist/lifecycle/cleanup.js +1 -116
  65. package/dist/lifecycle/consolidation.d.ts +22 -0
  66. package/dist/lifecycle/consolidation.js +1 -0
  67. package/dist/lifecycle/index.d.ts +2 -0
  68. package/dist/lifecycle/index.js +1 -13
  69. package/dist/lifecycle/injection-flush.d.ts +24 -0
  70. package/dist/lifecycle/injection-flush.js +1 -0
  71. package/dist/lifecycle/quality-scorer.d.ts +5 -6
  72. package/dist/lifecycle/quality-scorer.js +1 -46
  73. package/dist/lifecycle/tiering.js +1 -246
  74. package/dist/llm/client.js +1 -226
  75. package/dist/llm/index.js +1 -5
  76. package/dist/proficiency/actr-engine.js +1 -106
  77. package/dist/proficiency/detection.js +1 -77
  78. package/dist/proficiency/index.js +1 -9
  79. package/dist/proficiency/tracker.js +1 -173
  80. package/dist/proficiency/types.js +1 -8
  81. package/dist/providers/adapters.js +1 -140
  82. package/dist/providers/detector.js +1 -57
  83. package/dist/search/adaptive-router.js +1 -93
  84. package/dist/search/index.js +1 -9
  85. package/dist/search/ranker.js +1 -171
  86. package/dist/search/reranker.js +1 -155
  87. package/dist/session/parser.js +1 -130
  88. package/dist/skill/evaluator.js +1 -509
  89. package/dist/skill/index.js +1 -7
  90. package/dist/skill/types.js +1 -7
  91. package/dist/sync/client.d.ts +7 -0
  92. package/dist/sync/client.js +1 -597
  93. package/dist/sync/encryption.js +1 -203
  94. package/dist/sync/index.js +1 -12
  95. package/dist/sync/queue.js +1 -214
  96. package/dist/sync/scheduler.js +1 -140
  97. package/dist/sync/synchronizer.js +1 -241
  98. package/dist/sync/team-synchronizer.js +1 -204
  99. package/dist/sync/vector-clock.js +1 -70
  100. package/dist/types/index.d.ts +13 -1
  101. package/dist/types/index.js +1 -132
  102. package/dist/utils/keychain.js +1 -170
  103. package/dist/utils/logger.js +1 -128
  104. package/package.json +15 -10
  105. package/dist/a2a/client.d.ts.map +0 -1
  106. package/dist/a2a/client.js.map +0 -1
  107. package/dist/a2a/discovery.d.ts.map +0 -1
  108. package/dist/a2a/discovery.js.map +0 -1
  109. package/dist/a2a/index.d.ts.map +0 -1
  110. package/dist/a2a/index.js.map +0 -1
  111. package/dist/a2a/types.d.ts.map +0 -1
  112. package/dist/a2a/types.js.map +0 -1
  113. package/dist/adapters/anthropic.d.ts.map +0 -1
  114. package/dist/adapters/anthropic.js.map +0 -1
  115. package/dist/chunking/chunker.d.ts.map +0 -1
  116. package/dist/chunking/chunker.js.map +0 -1
  117. package/dist/claude/sync.d.ts.map +0 -1
  118. package/dist/claude/sync.js.map +0 -1
  119. package/dist/cli/commands/add.d.ts.map +0 -1
  120. package/dist/cli/commands/add.js.map +0 -1
  121. package/dist/cli/commands/claude-sync.d.ts.map +0 -1
  122. package/dist/cli/commands/claude-sync.js.map +0 -1
  123. package/dist/cli/commands/cleanup.d.ts.map +0 -1
  124. package/dist/cli/commands/cleanup.js.map +0 -1
  125. package/dist/cli/commands/config.d.ts.map +0 -1
  126. package/dist/cli/commands/config.js.map +0 -1
  127. package/dist/cli/commands/edit.d.ts.map +0 -1
  128. package/dist/cli/commands/edit.js.map +0 -1
  129. package/dist/cli/commands/embed.d.ts.map +0 -1
  130. package/dist/cli/commands/embed.js.map +0 -1
  131. package/dist/cli/commands/extract.d.ts.map +0 -1
  132. package/dist/cli/commands/extract.js.map +0 -1
  133. package/dist/cli/commands/health.d.ts.map +0 -1
  134. package/dist/cli/commands/health.js.map +0 -1
  135. package/dist/cli/commands/list.d.ts.map +0 -1
  136. package/dist/cli/commands/list.js.map +0 -1
  137. package/dist/cli/commands/migrate-chunks.d.ts.map +0 -1
  138. package/dist/cli/commands/migrate-chunks.js.map +0 -1
  139. package/dist/cli/commands/migrate-file-refs.d.ts.map +0 -1
  140. package/dist/cli/commands/migrate-file-refs.js.map +0 -1
  141. package/dist/cli/commands/proficiency.d.ts.map +0 -1
  142. package/dist/cli/commands/proficiency.js.map +0 -1
  143. package/dist/cli/commands/rm.d.ts.map +0 -1
  144. package/dist/cli/commands/rm.js.map +0 -1
  145. package/dist/cli/commands/search.d.ts.map +0 -1
  146. package/dist/cli/commands/search.js.map +0 -1
  147. package/dist/cli/commands/setup-wizard.d.ts.map +0 -1
  148. package/dist/cli/commands/setup-wizard.js.map +0 -1
  149. package/dist/cli/commands/setup.d.ts.map +0 -1
  150. package/dist/cli/commands/setup.js.map +0 -1
  151. package/dist/cli/commands/skill.d.ts.map +0 -1
  152. package/dist/cli/commands/skill.js.map +0 -1
  153. package/dist/cli/commands/status.d.ts.map +0 -1
  154. package/dist/cli/commands/status.js.map +0 -1
  155. package/dist/cli/commands/sync.d.ts.map +0 -1
  156. package/dist/cli/commands/sync.js.map +0 -1
  157. package/dist/cli/commands/team.d.ts.map +0 -1
  158. package/dist/cli/commands/team.js.map +0 -1
  159. package/dist/cli/index.d.ts.map +0 -1
  160. package/dist/cli/index.js.map +0 -1
  161. package/dist/config/manager.d.ts.map +0 -1
  162. package/dist/config/manager.js.map +0 -1
  163. package/dist/db/database.d.ts.map +0 -1
  164. package/dist/db/database.js.map +0 -1
  165. package/dist/embedding/e5-provider.d.ts.map +0 -1
  166. package/dist/embedding/e5-provider.js.map +0 -1
  167. package/dist/embedding/index.d.ts.map +0 -1
  168. package/dist/embedding/index.js.map +0 -1
  169. package/dist/embedding/local-provider.d.ts.map +0 -1
  170. package/dist/embedding/local-provider.js.map +0 -1
  171. package/dist/embedding/openai-provider.d.ts.map +0 -1
  172. package/dist/embedding/openai-provider.js.map +0 -1
  173. package/dist/embedding/quantization.d.ts.map +0 -1
  174. package/dist/embedding/quantization.js.map +0 -1
  175. package/dist/extraction/dedup-manager.d.ts.map +0 -1
  176. package/dist/extraction/dedup-manager.js.map +0 -1
  177. package/dist/extraction/emotion-filter.d.ts.map +0 -1
  178. package/dist/extraction/emotion-filter.js.map +0 -1
  179. package/dist/extraction/extractor.d.ts.map +0 -1
  180. package/dist/extraction/extractor.js.map +0 -1
  181. package/dist/extraction/file-reference.d.ts.map +0 -1
  182. package/dist/extraction/file-reference.js.map +0 -1
  183. package/dist/extraction/filter.d.ts.map +0 -1
  184. package/dist/extraction/filter.js.map +0 -1
  185. package/dist/extraction/scorer.d.ts.map +0 -1
  186. package/dist/extraction/scorer.js.map +0 -1
  187. package/dist/extraction/similarity.d.ts.map +0 -1
  188. package/dist/extraction/similarity.js.map +0 -1
  189. package/dist/hooks/client-factory.d.ts.map +0 -1
  190. package/dist/hooks/client-factory.js.map +0 -1
  191. package/dist/hooks/post-tool-use.d.ts.map +0 -1
  192. package/dist/hooks/post-tool-use.js.map +0 -1
  193. package/dist/hooks/pre-compact.d.ts.map +0 -1
  194. package/dist/hooks/pre-compact.js.map +0 -1
  195. package/dist/hooks/session-end.d.ts.map +0 -1
  196. package/dist/hooks/session-end.js.map +0 -1
  197. package/dist/hooks/session-start.d.ts.map +0 -1
  198. package/dist/hooks/session-start.js.map +0 -1
  199. package/dist/hooks/shared.d.ts.map +0 -1
  200. package/dist/hooks/shared.js.map +0 -1
  201. package/dist/hooks/user-prompt-submit.d.ts.map +0 -1
  202. package/dist/hooks/user-prompt-submit.js.map +0 -1
  203. package/dist/i18n/index.d.ts.map +0 -1
  204. package/dist/i18n/index.js.map +0 -1
  205. package/dist/i18n/messages.d.ts.map +0 -1
  206. package/dist/i18n/messages.js.map +0 -1
  207. package/dist/index.d.ts.map +0 -1
  208. package/dist/index.js.map +0 -1
  209. package/dist/lifecycle/cleanup-scheduler.d.ts.map +0 -1
  210. package/dist/lifecycle/cleanup-scheduler.js.map +0 -1
  211. package/dist/lifecycle/cleanup.d.ts.map +0 -1
  212. package/dist/lifecycle/cleanup.js.map +0 -1
  213. package/dist/lifecycle/index.d.ts.map +0 -1
  214. package/dist/lifecycle/index.js.map +0 -1
  215. package/dist/lifecycle/quality-scorer.d.ts.map +0 -1
  216. package/dist/lifecycle/quality-scorer.js.map +0 -1
  217. package/dist/lifecycle/tiering.d.ts.map +0 -1
  218. package/dist/lifecycle/tiering.js.map +0 -1
  219. package/dist/llm/client.d.ts.map +0 -1
  220. package/dist/llm/client.js.map +0 -1
  221. package/dist/llm/index.d.ts.map +0 -1
  222. package/dist/llm/index.js.map +0 -1
  223. package/dist/proficiency/actr-engine.d.ts.map +0 -1
  224. package/dist/proficiency/actr-engine.js.map +0 -1
  225. package/dist/proficiency/detection.d.ts.map +0 -1
  226. package/dist/proficiency/detection.js.map +0 -1
  227. package/dist/proficiency/index.d.ts.map +0 -1
  228. package/dist/proficiency/index.js.map +0 -1
  229. package/dist/proficiency/tracker.d.ts.map +0 -1
  230. package/dist/proficiency/tracker.js.map +0 -1
  231. package/dist/proficiency/types.d.ts.map +0 -1
  232. package/dist/proficiency/types.js.map +0 -1
  233. package/dist/providers/adapters.d.ts.map +0 -1
  234. package/dist/providers/adapters.js.map +0 -1
  235. package/dist/providers/detector.d.ts.map +0 -1
  236. package/dist/providers/detector.js.map +0 -1
  237. package/dist/search/adaptive-router.d.ts.map +0 -1
  238. package/dist/search/adaptive-router.js.map +0 -1
  239. package/dist/search/index.d.ts.map +0 -1
  240. package/dist/search/index.js.map +0 -1
  241. package/dist/search/ranker.d.ts.map +0 -1
  242. package/dist/search/ranker.js.map +0 -1
  243. package/dist/search/reranker.d.ts.map +0 -1
  244. package/dist/search/reranker.js.map +0 -1
  245. package/dist/session/parser.d.ts.map +0 -1
  246. package/dist/session/parser.js.map +0 -1
  247. package/dist/skill/evaluator.d.ts.map +0 -1
  248. package/dist/skill/evaluator.js.map +0 -1
  249. package/dist/skill/index.d.ts.map +0 -1
  250. package/dist/skill/index.js.map +0 -1
  251. package/dist/skill/types.d.ts.map +0 -1
  252. package/dist/skill/types.js.map +0 -1
  253. package/dist/sync/client.d.ts.map +0 -1
  254. package/dist/sync/client.js.map +0 -1
  255. package/dist/sync/encryption.d.ts.map +0 -1
  256. package/dist/sync/encryption.js.map +0 -1
  257. package/dist/sync/index.d.ts.map +0 -1
  258. package/dist/sync/index.js.map +0 -1
  259. package/dist/sync/queue.d.ts.map +0 -1
  260. package/dist/sync/queue.js.map +0 -1
  261. package/dist/sync/scheduler.d.ts.map +0 -1
  262. package/dist/sync/scheduler.js.map +0 -1
  263. package/dist/sync/synchronizer.d.ts.map +0 -1
  264. package/dist/sync/synchronizer.js.map +0 -1
  265. package/dist/sync/team-synchronizer.d.ts.map +0 -1
  266. package/dist/sync/team-synchronizer.js.map +0 -1
  267. package/dist/sync/vector-clock.d.ts.map +0 -1
  268. package/dist/sync/vector-clock.js.map +0 -1
  269. package/dist/types/index.d.ts.map +0 -1
  270. package/dist/types/index.js.map +0 -1
  271. package/dist/utils/keychain.d.ts.map +0 -1
  272. package/dist/utils/keychain.js.map +0 -1
  273. package/dist/utils/logger.d.ts.map +0 -1
  274. package/dist/utils/logger.js.map +0 -1
@@ -1,105 +1 @@
1
- /**
2
- * Health Check Command
3
- *
4
- * DB, Config, Logs 상태를 확인합니다.
5
- */
6
- import { Command } from 'commander';
7
- import chalk from 'chalk';
8
- import { existsSync, statSync, readFileSync } from 'node:fs';
9
- import { join } from 'node:path';
10
- import { homedir } from 'node:os';
11
- import { getConfigManager } from '../../config/manager.js';
12
- import { MemoryDatabase } from '../../db/database.js';
13
- function resolvePath(p) {
14
- if (p.startsWith('~')) {
15
- return p.replace('~', homedir());
16
- }
17
- return p;
18
- }
19
- function formatSize(bytes) {
20
- const mb = bytes / (1024 * 1024);
21
- return `${mb.toFixed(1)} MB`;
22
- }
23
- export function healthCommand() {
24
- return new Command('health')
25
- .description('Check A2A Memory system health')
26
- .action(async () => {
27
- console.log(chalk.cyan.bold('\n📊 A2A Memory Health Check\n'));
28
- const configManager = getConfigManager();
29
- const config = configManager.load();
30
- // DB Health
31
- console.log(chalk.bold('DB:'));
32
- const dbPath = resolvePath(config.db.path);
33
- if (!existsSync(dbPath)) {
34
- console.log(` Path: ${dbPath}`);
35
- console.log(` ${chalk.red('✗')} Not initialized`);
36
- }
37
- else {
38
- const dbStats = statSync(dbPath);
39
- console.log(` Path: ${dbPath}`);
40
- console.log(` Size: ${formatSize(dbStats.size)}`);
41
- // DB Integrity Check
42
- try {
43
- const db = new MemoryDatabase(config.db.path);
44
- const isOk = db.getIntegrityStatus();
45
- console.log(` Integrity: ${isOk ? chalk.green('✅ OK') : chalk.red('❌ FAILED')}`);
46
- // Memory Count
47
- const memories = db.listMemories({ limit: 999999 });
48
- console.log(` Memories: ${memories.length}`);
49
- // Pending Sync Count
50
- const pendingCount = db.getPendingSyncCount();
51
- console.log(` Pending sync: ${pendingCount}`);
52
- db.close();
53
- }
54
- catch (err) {
55
- console.log(` ${chalk.red('✗')} Error checking DB: ${err instanceof Error ? err.message : String(err)}`);
56
- }
57
- }
58
- // Config Health
59
- console.log(chalk.bold('\nConfig:'));
60
- console.log(` Mode: ${config.mode}`);
61
- console.log(` Auto-capture: ${config.autoCapture.enabled ? chalk.green('enabled') : chalk.gray('disabled')}`);
62
- console.log(` Auto-inject: ${config.autoInject.enabled ? chalk.green('enabled') : chalk.gray('disabled')}`);
63
- console.log(` Embedding: ${config.embedding?.provider} (${config.embedding?.dimensions}D)`);
64
- // Logs Health
65
- console.log(chalk.bold('\nLogs:'));
66
- if (!config.logging?.enabled) {
67
- console.log(` ${chalk.gray('Logging disabled')}`);
68
- }
69
- else {
70
- const logPath = join(resolvePath(config.logging.outputDir), 'hooks.log');
71
- if (!existsSync(logPath)) {
72
- console.log(` Path: ${logPath}`);
73
- console.log(` ${chalk.gray('No logs yet')}`);
74
- }
75
- else {
76
- const logStats = statSync(logPath);
77
- console.log(` Path: ${logPath}`);
78
- console.log(` Size: ${formatSize(logStats.size)}`);
79
- // Recent Errors Count (last 24h)
80
- try {
81
- const content = readFileSync(logPath, 'utf-8');
82
- const lines = content.split('\n').filter(Boolean);
83
- const now = Date.now();
84
- const oneDayAgo = now - 24 * 60 * 60 * 1000;
85
- const recentErrors = lines.filter(line => {
86
- try {
87
- const parsed = JSON.parse(line);
88
- const timestamp = new Date(parsed.ts).getTime();
89
- return parsed.level === 'error' && timestamp >= oneDayAgo;
90
- }
91
- catch {
92
- return false;
93
- }
94
- }).length;
95
- console.log(` Recent errors: ${recentErrors} (last 24h)`);
96
- }
97
- catch (err) {
98
- console.log(` ${chalk.yellow('⚠')} Error reading logs: ${err instanceof Error ? err.message : String(err)}`);
99
- }
100
- }
101
- }
102
- console.log('');
103
- });
104
- }
105
- //# sourceMappingURL=health.js.map
1
+ (function(_0xd1dabf,_0xb2ff1f){function _0x21d78d(_0x2b5bdf,_0x5734e3){return _0x1243(_0x2b5bdf-0x39f,_0x5734e3);}const _0x542c5a=_0xd1dabf();function _0x576f69(_0x10d5c5,_0x22dde3){return _0x1243(_0x10d5c5- -0x1f,_0x22dde3);}while(!![]){try{const _0x2cc55f=parseInt(_0x576f69(0x107,0xfd))/0x1*(parseInt(_0x21d78d(0x509,0x509))/0x2)+-parseInt(_0x21d78d(0x4be,0x4b6))/0x3*(-parseInt(_0x21d78d(0x4c8,0x4e4))/0x4)+-parseInt(_0x576f69(0x118,0x120))/0x5*(parseInt(_0x576f69(0x11e,0x144))/0x6)+-parseInt(_0x576f69(0x108,0x132))/0x7*(parseInt(_0x21d78d(0x4c7,0x4c2))/0x8)+parseInt(_0x576f69(0x126,0x14d))/0x9*(parseInt(_0x576f69(0x122,0x148))/0xa)+parseInt(_0x576f69(0x152,0x14e))/0xb*(parseInt(_0x21d78d(0x4fd,0x51d))/0xc)+-parseInt(_0x576f69(0x140,0x136))/0xd;if(_0x2cc55f===_0xb2ff1f)break;else _0x542c5a['push'](_0x542c5a['shift']());}catch(_0x5cea7b){_0x542c5a['push'](_0x542c5a['shift']());}}}(_0x1c1d,0x67191));import{Command}from'commander';import _0x50c2b8 from'chalk';import{existsSync,statSync,readFileSync}from'node:fs';import{join}from'node:path';import{homedir}from'node:os';import{getConfigManager}from'../../config/manager.js';function _0x1243(_0x1f89e2,_0x30f923){_0x1f89e2=_0x1f89e2-0x111;const _0x1c1dbf=_0x1c1d();let _0x1243f2=_0x1c1dbf[_0x1f89e2];if(_0x1243['URcVfD']===undefined){var _0x33dcd3=function(_0x3f4b16){const _0x8d8ab6='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x4b8e08='',_0x446a6a='';for(let _0xc22ce0=0x0,_0x480887,_0x3024b3,_0x52cc10=0x0;_0x3024b3=_0x3f4b16['charAt'](_0x52cc10++);~_0x3024b3&&(_0x480887=_0xc22ce0%0x4?_0x480887*0x40+_0x3024b3:_0x3024b3,_0xc22ce0++%0x4)?_0x4b8e08+=String['fromCharCode'](0xff&_0x480887>>(-0x2*_0xc22ce0&0x6)):0x0){_0x3024b3=_0x8d8ab6['indexOf'](_0x3024b3);}for(let _0xd9ed27=0x0,_0x259b14=_0x4b8e08['length'];_0xd9ed27<_0x259b14;_0xd9ed27++){_0x446a6a+='%'+('00'+_0x4b8e08['charCodeAt'](_0xd9ed27)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x446a6a);};_0x1243['vdNpGR']=_0x33dcd3,_0x1243['HVTzaw']={},_0x1243['URcVfD']=!![];}const _0x38ac3b=_0x1c1dbf[0x0],_0x5346bf=_0x1f89e2+_0x38ac3b,_0x596553=_0x1243['HVTzaw'][_0x5346bf];return!_0x596553?(_0x1243f2=_0x1243['vdNpGR'](_0x1243f2),_0x1243['HVTzaw'][_0x5346bf]=_0x1243f2):_0x1243f2=_0x596553,_0x1243f2;}import{MemoryDatabase}from'../../db/database.js';function _0x1c1d(){const _0x52038b=['q2HLy2SGqtjbia','zgLTzw5ZAw9UCW','z0nHAhm','zwn0oIa','u1jTtNC','Bgv2zwW','zMLSDgvY','nJyWsfnKvvHX','ntG1odiXnM1csLP4zG','B3j5ieHLywX0Aa','rK9VvNe','Cgf0Aa','zZOG','CMvK','cKnVBMzPzZO','icbfBwjLzgrPBG','Au9rz1a','ze1juNq','DgvTigHLywX0Aa','mtu1ndmZohjSDuvetq','ve92swK','C3bSAxq','qvrvEfi','C3rHCNrZv2L0Aa','icbqyxrOoIa','ievYCM9YihjLyq','mti2nZG2uM5mr29k','EeXdBgi','EtOG','z2v0vgLTzq','icbtAxPLoIa','y2TPBMCGrei6ia','CfPHBNa','qK9lu20','CNjVCNm6ia','BgvUz3rO','t2H5Cu8','CgfYC2u','zgLZywjSzwq','icbbDxrVlwLUAG','icbnzw1VCMLLCW','DhLtDgf0Dxm','Bw9Kzq','y2XVC2u','cVcFK4OGqtjbie1LBq','yM9Sza','odmXmJi1zMrfyu5o','twvTB3j5ihn5CW','ywXPEMvK','BgLZDe1LBw9YAq','z3jLzw4','zw1IzwrKAw5N','uhLRsNK','mxL0v2LABW','ntG3ndu0n3n1vMLYvG','ogDuvwvYsG','ogTSuwTTwa','DhvYztOG','CMvWBgfJzq','zgLUzYbSB2DZoG','ievYCM9YignOzq','ienOzwnRcG','BgL3s1O','icbszwnLBNqGzq','ChjVDMLKzxi','4PYfie9l','AgvHBhrO','qwf3zva','uhHlA2K','AxvNCwy','mZGWnw9Ky3zWtW','qKroExu','qxfSrKi','cKXVz3m6','rLbiqxK','zhjeEKu','mJm0mgHcrNbSDa','rhD6BKK','wvnZsum','4P2miezbsuXfra','mtq1nJeWDNPLsMPh','D2rjrfq','rei6','Bg9N','mJDSAw56zg4','sezmveK','z3jHEq','ie5VDcbPBML0Aq','BwvZC2fNzq','icbnB2rLoIa','zw5HyMXLza','EwvSBg93','BM93','AvzdwMK','icbbDxrVlwnHCa','tM8GBg9NCYb5zq','Dg9gAxHLza','zgvZy3jPChrPBW','z2v0ugvUzgLUzW','yxv0B0nHChr1CG','icbqzw5KAw5Nia','u3LUy0nVDw50'];_0x1c1d=function(){return _0x52038b;};return _0x1c1d();}function resolvePath(_0x368b8a){function _0x1fd488(_0x55426,_0x50ca4c){return _0x1243(_0x55426- -0x1a3,_0x50ca4c);}function _0x585720(_0x26b787,_0xc43ed2){return _0x1243(_0x26b787-0xd7,_0xc43ed2);}if(_0x368b8a[_0x585720(0x245,0x272)]('~'))return _0x368b8a[_0x585720(0x202,0x1fe)]('~',homedir());return _0x368b8a;}function formatSize(_0x2dba47){const _0x3fdcdd={'DwznI':function(_0x5e1a76,_0x4fa73f){return _0x5e1a76/_0x4fa73f;},'cqYpf':function(_0x38b27e,_0x4c74f2){return _0x38b27e*_0x4c74f2;}};function _0x1cb9a4(_0x413239,_0x30cb1b){return _0x1243(_0x413239-0xf4,_0x30cb1b);}const _0x3952f4=_0x3fdcdd[_0x33567d(0x203,0x226)](_0x2dba47,_0x3fdcdd['cqYpf'](0x400,0x400));function _0x33567d(_0x105923,_0x261c4f){return _0x1243(_0x261c4f-0xe8,_0x105923);}return _0x3952f4[_0x1cb9a4(0x245,0x218)](0x1)+'\x20MB';}export function healthCommand(){function _0x383fa9(_0x41c061,_0x5a8e7d){return _0x1243(_0x41c061-0x378,_0x5a8e7d);}const _0x362c26={'liwKZ':function(_0x6ebac2){return _0x6ebac2();},'PxKki':_0x571129(0x169,0x146)+_0x383fa9(0x4d8,0x4f4)+_0x383fa9(0x4a6,0x498),'HFLTI':_0x571129(0x19b,0x16c),'BOKSm':function(_0x33963f,_0x3a137c){return _0x33963f(_0x3a137c);},'FPHAy':_0x383fa9(0x489,0x469),'dMIRt':function(_0x4d8cd4,_0x19f281){return _0x4d8cd4(_0x19f281);},'xLClb':function(_0x11a67c,_0x3d1a02){return _0x11a67c===_0x3d1a02;},'AaweP':_0x383fa9(0x4ba,0x48b),'gCahs':_0x571129(0x190,0x161),'pxnpY':function(_0xd92d2a,_0x4594db){return _0xd92d2a(_0x4594db);},'PykJy':'enabled','yYfNF':_0x571129(0x131,0x140),'iugqf':_0x571129(0x196,0x163),'drDzE':'Logging\x20di'+'sabled','iVCZi':function(_0x2d26f6,_0x3eecaa){return _0x2d26f6(_0x3eecaa);},'TOvIi':'hooks.log','iOQgP':_0x571129(0x159,0x179)+'t','FOoVq':function(_0x16a1fb,_0x2e3d8a){return _0x16a1fb(_0x2e3d8a);},'fXoDy':function(_0x49126a,_0x493648){return _0x49126a(_0x493648);},'ATUxR':'utf-8','SRmNw':function(_0x6160c2,_0x3e8285){return _0x6160c2*_0x3e8285;},'vIFeg':function(_0x3539d9,_0x2c54cd){return _0x3539d9*_0x2c54cd;},'OhyqO':_0x571129(0x188,0x180)+_0x383fa9(0x498,0x4af)+_0x383fa9(0x4e1,0x4b1)};function _0x571129(_0xbd7cea,_0x46a048){return _0x1243(_0x46a048-0x29,_0xbd7cea);}return new Command(_0x571129(0x13c,0x15c))[_0x383fa9(0x4ca,0x4c5)+'n'](_0x362c26[_0x383fa9(0x48d,0x46e)])['action'](async()=>{const _0x1e8315={'YSsIC':function(_0x45ac02,_0x3ce5e1){return _0x45ac02===_0x3ce5e1;},'nHZEA':'error'};function _0x19f307(_0x1327de,_0x6b9079){return _0x383fa9(_0x6b9079- -0x42b,_0x1327de);}console[_0x31c7a4(0x389,0x362)](_0x50c2b8['cyan'][_0x31c7a4(0x334,0x33c)](_0x362c26[_0x19f307(0xa5,0x82)]));const _0x3a6455=getConfigManager(),_0x24467d=_0x3a6455['load']();console[_0x19f307(0xa7,0x91)](_0x50c2b8['bold'](_0x362c26[_0x31c7a4(0x359,0x364)]));const _0x3c2442=resolvePath(_0x24467d['db'][_0x31c7a4(0x365,0x380)]);if(!_0x362c26[_0x19f307(0x8b,0x5f)](existsSync,_0x3c2442))console[_0x31c7a4(0x389,0x362)](_0x31c7a4(0x367,0x38d)+_0x3c2442),console[_0x19f307(0xa5,0x91)]('\x20\x20'+_0x50c2b8[_0x31c7a4(0x394,0x382)]('✗')+(_0x31c7a4(0x343,0x366)+_0x31c7a4(0x35b,0x33f)));else{if(_0x362c26[_0x19f307(0x5d,0x88)]===_0x362c26['FPHAy']){const _0x59f32=_0x362c26['dMIRt'](statSync,_0x3c2442);console[_0x19f307(0x96,0x91)](_0x19f307(0xca,0xbc)+_0x3c2442),console[_0x31c7a4(0x362,0x362)](_0x31c7a4(0x36b,0x393)+formatSize(_0x59f32['size']));try{if(_0x362c26[_0x31c7a4(0x35d,0x390)](_0x362c26[_0x31c7a4(0x356,0x352)],_0x362c26[_0x19f307(0xbc,0xa6)])){if(_0x3024b3[_0x19f307(0x88,0xbb)]('~'))return _0x58cd15[_0x31c7a4(0x340,0x349)]('~',GaLpZK[_0x19f307(0xad,0x7c)](_0x57561d));return _0x259b14;}else{const _0x14c662=new MemoryDatabase(_0x24467d['db']['path']),_0x4cb9d=_0x14c662['getIntegri'+_0x31c7a4(0x346,0x338)]();console[_0x31c7a4(0x334,0x362)]('\x20\x20Integrit'+_0x19f307(0x9a,0xc0)+(_0x4cb9d?_0x50c2b8[_0x19f307(0x82,0x70)](_0x19f307(0xb0,0x7f)):_0x50c2b8[_0x19f307(0x85,0xb1)](_0x19f307(0x64,0x8d))));const _0x44b3a7=_0x14c662[_0x31c7a4(0x35b,0x340)+'es']({'limit':0xf423f});console['log'](_0x31c7a4(0x324,0x337)+':\x20'+_0x44b3a7[_0x31c7a4(0x339,0x332)]);const _0xaa12e8=_0x14c662[_0x31c7a4(0x358,0x371)+_0x31c7a4(0x36e,0x374)]();console['log'](_0x31c7a4(0x371,0x373)+'sync:\x20'+_0xaa12e8),_0x14c662[_0x19f307(0x37,0x69)]();}}catch(_0x265b9d){console[_0x19f307(0xb7,0x91)]('\x20\x20'+_0x50c2b8[_0x19f307(0xbd,0xb1)]('✗')+(_0x31c7a4(0x363,0x34b)+_0x19f307(0xe5,0xc3))+(_0x265b9d instanceof Error?_0x265b9d['message']:_0x362c26['pxnpY'](String,_0x265b9d)));}}else _0x971323[_0x19f307(0x8b,0x91)]('\x20\x20'+_0x4a989b[_0x31c7a4(0x393,0x36a)]('⚠')+('\x20Error\x20rea'+_0x19f307(0x60,0x79)+'\x20')+(_0x340187 instanceof _0x58a78b?_0x4533b8[_0x31c7a4(0x367,0x367)]:_0x10a056(_0x2e7bea)));}console[_0x19f307(0xba,0x91)](_0x50c2b8['bold'](_0x31c7a4(0x35c,0x383))),console[_0x31c7a4(0x344,0x362)](_0x19f307(0xaa,0x97)+_0x24467d[_0x31c7a4(0x31a,0x339)]);function _0x31c7a4(_0x35ba83,_0x58d47c){return _0x383fa9(_0x58d47c- -0x15a,_0x35ba83);}console[_0x19f307(0x67,0x91)](_0x31c7a4(0x394,0x36d)+_0x31c7a4(0x33d,0x348)+(_0x24467d[_0x31c7a4(0x35c,0x372)+'e'][_0x19f307(0xbf,0x98)]?_0x50c2b8[_0x31c7a4(0x373,0x341)](_0x362c26[_0x31c7a4(0x376,0x343)]):_0x50c2b8[_0x31c7a4(0x343,0x365)](_0x362c26['yYfNF']))),console['log'](_0x19f307(0x63,0x65)+_0x31c7a4(0x37b,0x378)+(_0x24467d['autoInject'][_0x31c7a4(0x364,0x369)]?_0x50c2b8[_0x19f307(0x81,0x70)](_0x362c26['PykJy']):_0x50c2b8[_0x31c7a4(0x347,0x365)]('disabled'))),console[_0x19f307(0xbf,0x91)](_0x19f307(0x9d,0xb3)+_0x19f307(0xa8,0xb0)+_0x24467d['embedding']?.[_0x19f307(0x4b,0x7e)]+'\x20('+_0x24467d[_0x19f307(0xa0,0x71)]?.[_0x31c7a4(0x35a,0x376)]+'D)'),console['log'](_0x50c2b8['bold'](_0x362c26[_0x19f307(0x93,0x83)]));if(!_0x24467d['logging']?.[_0x19f307(0x90,0x98)]){if(_0x19f307(0x5c,0x86)===_0x31c7a4(0x343,0x357))console[_0x31c7a4(0x34b,0x362)]('\x20\x20'+_0x50c2b8[_0x19f307(0x94,0x94)](_0x362c26[_0x19f307(0x71,0x89)]));else return![];}else{const _0x4e06d3=join(_0x362c26[_0x31c7a4(0x395,0x36c)](resolvePath,_0x24467d['logging']['outputDir']),_0x362c26[_0x19f307(0xa0,0xb8)]);if(!_0x362c26[_0x31c7a4(0x37a,0x386)](existsSync,_0x4e06d3))console[_0x31c7a4(0x337,0x362)](_0x31c7a4(0x388,0x38d)+_0x4e06d3),console['log']('\x20\x20'+_0x50c2b8['gray'](_0x362c26[_0x31c7a4(0x3b1,0x385)]));else{const _0x44e77f=_0x362c26[_0x31c7a4(0x373,0x37f)](statSync,_0x4e06d3);console['log']('\x20\x20Path:\x20'+_0x4e06d3),console['log'](_0x19f307(0xda,0xc2)+_0x362c26['fXoDy'](formatSize,_0x44e77f['size']));try{const _0x3f9327=readFileSync(_0x4e06d3,_0x362c26[_0x31c7a4(0x3be,0x38b)]),_0x1c8899=_0x3f9327[_0x19f307(0xe3,0xb9)]('\x0a')['filter'](Boolean),_0x3c2ac4=Date[_0x31c7a4(0x36f,0x36b)](),_0x54da98=_0x3c2ac4-_0x362c26[_0x31c7a4(0x3a7,0x379)](_0x362c26['vIFeg'](0x18,0x3c),0x3c)*0x3e8,_0x5bce5f=_0x1c8899[_0x19f307(0xc6,0xaa)](_0x4326cb=>{function _0x2c577b(_0x506769,_0x118356){return _0x19f307(_0x118356,_0x506769- -0x2d2);}function _0x2a1d28(_0x17e419,_0x25c2c1){return _0x19f307(_0x17e419,_0x25c2c1- -0xc5);}try{const _0x56e8a5=JSON[_0x2a1d28(-0x86,-0x62)](_0x4326cb),_0x1f34ef=new Date(_0x56e8a5['ts'])[_0x2a1d28(-0x22,-0x4)]();return _0x1e8315[_0x2c577b(-0x246,-0x229)](_0x56e8a5[_0x2a1d28(-0xd,-0x1c)],_0x1e8315['nHZEA'])&&_0x1f34ef>=_0x54da98;}catch{return![];}})['length'];console[_0x31c7a4(0x38f,0x362)](_0x31c7a4(0x371,0x34e)+_0x19f307(0x35,0x60)+_0x5bce5f+('\x20(last\x2024h'+')'));}catch(_0x5cf277){console['log']('\x20\x20'+_0x50c2b8[_0x19f307(0x82,0x99)]('⚠')+(_0x31c7a4(0x385,0x38e)+_0x31c7a4(0x358,0x34a)+'\x20')+(_0x5cf277 instanceof Error?_0x5cf277[_0x31c7a4(0x354,0x367)]:String(_0x5cf277)));}}}console[_0x19f307(0xae,0x91)]('');});}
@@ -1,46 +1 @@
1
- /**
2
- * List Command
3
- */
4
- import { Command } from 'commander';
5
- import { ConfigManager } from '../../config/manager.js';
6
- import { MemoryDatabase } from '../../db/database.js';
7
- export function listCommand() {
8
- return new Command('list')
9
- .description('List memories')
10
- .option('-l, --limit <n>', 'Max results', '20')
11
- .option('-o, --offset <n>', 'Offset', '0')
12
- .option('-c, --category <category>', 'Filter by category')
13
- .option('-t, --tier <tier>', 'Filter by tier')
14
- .option('-p, --project <path>', 'Filter by project path')
15
- .action((options) => {
16
- const config = new ConfigManager().load();
17
- const db = new MemoryDatabase(config.db.path);
18
- try {
19
- db.initialize();
20
- const parsedLimit = parseInt(options.limit, 10);
21
- const limit = Number.isNaN(parsedLimit) || parsedLimit < 1 ? 20 : parsedLimit;
22
- const parsedOffset = parseInt(options.offset, 10);
23
- const offset = Number.isNaN(parsedOffset) || parsedOffset < 0 ? 0 : parsedOffset;
24
- const category = options.category;
25
- const tier = options.tier;
26
- const projectPath = options.project;
27
- const memories = db.listMemories({ limit, offset, category, tier, projectPath });
28
- const totalForFilter = db.countMemories({ category, tier, projectPath });
29
- if (memories.length === 0) {
30
- console.log('No memories found.');
31
- return;
32
- }
33
- console.log(`Showing ${offset + 1}-${offset + memories.length} of ${totalForFilter} memories:\n`);
34
- for (const m of memories) {
35
- console.log(`[${m.category}] ${m.id.slice(0, 8)}... | ${m.tier} | ${m.tags.join(', ')}`);
36
- console.log(` ${m.content.slice(0, 120)}${m.content.length > 120 ? '...' : ''}`);
37
- console.log(` Created: ${m.createdAt} | Access: ${m.accessCount}`);
38
- console.log('');
39
- }
40
- }
41
- finally {
42
- db.close();
43
- }
44
- });
45
- }
46
- //# sourceMappingURL=list.js.map
1
+ (function(_0x54d4e7,_0x210983){const _0xc6d9c4=_0x54d4e7();function _0x2690fd(_0x4e0183,_0x3b1bf7){return _0x2a33(_0x3b1bf7-0x38f,_0x4e0183);}function _0x5032d8(_0x3c354d,_0x58fd98){return _0x2a33(_0x58fd98-0x2c5,_0x3c354d);}while(!![]){try{const _0x1799f5=parseInt(_0x2690fd(0x472,0x469))/0x1*(parseInt(_0x2690fd(0x453,0x46b))/0x2)+parseInt(_0x5032d8(0x3cb,0x3b7))/0x3+-parseInt(_0x2690fd(0x474,0x485))/0x4*(-parseInt(_0x5032d8(0x3d5,0x3c7))/0x5)+parseInt(_0x5032d8(0x3d3,0x3c3))/0x6+-parseInt(_0x5032d8(0x39b,0x3a3))/0x7+-parseInt(_0x2690fd(0x46c,0x467))/0x8+parseInt(_0x5032d8(0x3db,0x3c8))/0x9*(-parseInt(_0x5032d8(0x3c6,0x3be))/0xa);if(_0x1799f5===_0x210983)break;else _0xc6d9c4['push'](_0xc6d9c4['shift']());}catch(_0x17de7e){_0xc6d9c4['push'](_0xc6d9c4['shift']());}}}(_0x4d72,0xcbb05));function _0x4d72(){const _0x111f1c=['lI4U','y291BNrnzw1VCG','tM8GBwvTB3jPzq','zwn0idXWyxrOpG','vhHhAw0','EeLhrKW','uhbUEK0','Aw5PDgLHBgL6zq','Dca8BJ4','BgvUz3rO','rMLSDgvYigj5ia','z29YEt4','Bg9N','ChjVAMvJDa','mZu3otK0ofnVreDhAq','Axnoyu4','lxaSic0TChjVAG','lwmSic0Ty2f0zq','mtm1mdaXmLjcuhbnvq','ywn0Aw9U','BgLZDa','mZuWBgz2t3Ls','lI4UihWG','icbdCMvHDgvKoG','B3b0Aw9U','B2zMC2v0','mJy2mtG0Bur2uMrk','DgLLCG','idX0AwvYpG','u2HVD2LUzYa','mtvOCKnSEum','mZCXn1P1C0nUwa','C2XPy2u','ihWG','y29UDgvUDa','y2f0zwDVCNK','ig1LBw9YAwvZoG','CuDMANe','nJm1mdi4offvuMvTsq','ihWGqwnJzxnZoG','ndC5zgjizfn1','t2zMC2v0','nda4nMHxCLfkqG','ig9Mia','mteXmdm2ntjHrhjpzgm','AwvZ','twf4ihjLC3vSDa','A3PhCMO','tgLZDcbTzw1VCG','lxqSic0TDgLLCG'];_0x4d72=function(){return _0x111f1c;};return _0x4d72();}import{Command}from'commander';import{ConfigManager}from'../../config/manager.js';function _0x2a33(_0x490b69,_0x5f73c){_0x490b69=_0x490b69-0xd4;const _0x4d728b=_0x4d72();let _0x2a33e1=_0x4d728b[_0x490b69];if(_0x2a33['lKdOrd']===undefined){var _0x44671c=function(_0x5e98b3){const _0x4ea0fa='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x506848='',_0x184bc3='';for(let _0x4d0589=0x0,_0x551559,_0x492802,_0x2cba05=0x0;_0x492802=_0x5e98b3['charAt'](_0x2cba05++);~_0x492802&&(_0x551559=_0x4d0589%0x4?_0x551559*0x40+_0x492802:_0x492802,_0x4d0589++%0x4)?_0x506848+=String['fromCharCode'](0xff&_0x551559>>(-0x2*_0x4d0589&0x6)):0x0){_0x492802=_0x4ea0fa['indexOf'](_0x492802);}for(let _0x23052f=0x0,_0x59a8fc=_0x506848['length'];_0x23052f<_0x59a8fc;_0x23052f++){_0x184bc3+='%'+('00'+_0x506848['charCodeAt'](_0x23052f)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x184bc3);};_0x2a33['wddMWM']=_0x44671c,_0x2a33['wacCHW']={},_0x2a33['lKdOrd']=!![];}const _0x5b31cf=_0x4d728b[0x0],_0x34d578=_0x490b69+_0x5b31cf,_0xdd7cce=_0x2a33['wacCHW'][_0x34d578];return!_0xdd7cce?(_0x2a33e1=_0x2a33['wddMWM'](_0x2a33e1),_0x2a33['wacCHW'][_0x34d578]=_0x2a33e1):_0x2a33e1=_0xdd7cce,_0x2a33e1;}import{MemoryDatabase}from'../../db/database.js';export function listCommand(){function _0x446f91(_0x34404b,_0xa1b902){return _0x2a33(_0x34404b- -0x352,_0xa1b902);}const _0x5d094a={'xIGFL':function(_0x4270ec,_0x4fad8b,_0x14a680){return _0x4270ec(_0x4fad8b,_0x14a680);},'qGfjq':function(_0xeb3803,_0x4d0e95){return _0xeb3803<_0x4d0e95;},'rheZg':function(_0x4befb8,_0x526e52){return _0x4befb8>_0x526e52;},'PpnzM':'-o,\x20--offs'+'et\x20<n>','TxGim':_0x446f91(-0x277,-0x26f),'kzGrj':_0x313fca(-0x13c,-0x14f)+'project\x20pa'+'th'};function _0x313fca(_0x425c99,_0x1cea91){return _0x2a33(_0x1cea91- -0x23d,_0x425c99);}return new Command(_0x313fca(-0x140,-0x145))['descriptio'+'n'](_0x446f91(-0x270,-0x280)+_0x313fca(-0x168,-0x15e))[_0x313fca(-0x12c,-0x141)]('-l,\x20--limi'+_0x446f91(-0x266,-0x274),_0x313fca(-0x171,-0x15d)+'s','20')[_0x446f91(-0x256,-0x25e)](_0x5d094a[_0x313fca(-0x15f,-0x153)],_0x5d094a[_0x446f91(-0x26a,-0x266)],'0')[_0x446f91(-0x256,-0x26c)](_0x446f91(-0x25d,-0x26a)+'gory\x20<cate'+_0x446f91(-0x263,-0x253),'Filter\x20by\x20'+'category')[_0x446f91(-0x256,-0x245)](_0x313fca(-0x158,-0x15a)+_0x313fca(-0x14b,-0x13d),_0x313fca(-0x162,-0x14f)+_0x313fca(-0x134,-0x13e))[_0x313fca(-0x143,-0x141)](_0x446f91(-0x25e,-0x250)+_0x446f91(-0x26b,-0x25d),_0x5d094a[_0x313fca(-0x151,-0x15c)])[_0x313fca(-0x14d,-0x146)](_0x18cf34=>{function _0x364ef4(_0x31002a,_0x39f95a){return _0x313fca(_0x31002a,_0x39f95a-0x477);}const _0xa07898=new ConfigManager()['load'](),_0xe1f172=new MemoryDatabase(_0xa07898['db']['path']);function _0x3e9271(_0x30a6c6,_0x5b978d){return _0x313fca(_0x5b978d,_0x30a6c6- -0x15b);}try{_0xe1f172[_0x364ef4(0x330,0x325)]();const _0x42581d=_0x5d094a[_0x3e9271(-0x2af,-0x29a)](parseInt,_0x18cf34['limit'],0xa),_0x4faab5=Number[_0x3e9271(-0x2a5,-0x2a1)](_0x42581d)||_0x42581d<0x1?0x14:_0x42581d,_0x421dbc=parseInt(_0x18cf34[_0x364ef4(0x31e,0x337)],0xa),_0x53fcf8=Number['isNaN'](_0x421dbc)||_0x5d094a[_0x3e9271(-0x2c1,-0x2ad)](_0x421dbc,0x0)?0x0:_0x421dbc,_0x41a761=_0x18cf34[_0x3e9271(-0x2c3,-0x2c4)],_0x1364ef=_0x18cf34['tier'],_0x4b91a8=_0x18cf34[_0x3e9271(-0x2a7,-0x29a)],_0x5e614e=_0xe1f172['listMemori'+'es']({'limit':_0x4faab5,'offset':_0x53fcf8,'category':_0x41a761,'tier':_0x1364ef,'projectPath':_0x4b91a8}),_0x352426=_0xe1f172[_0x364ef4(0x330,0x31f)+_0x3e9271(-0x2b9,-0x2ca)]({'category':_0x41a761,'tier':_0x1364ef,'projectPath':_0x4b91a8});if(_0x5e614e[_0x3e9271(-0x2ab,-0x2ab)]===0x0){console[_0x364ef4(0x31a,0x32a)](_0x3e9271(-0x2b2,-0x29c)+'s\x20found.');return;}console[_0x364ef4(0x32c,0x32a)](_0x3e9271(-0x297,-0x2aa)+(_0x53fcf8+0x1)+'-'+(_0x53fcf8+_0x5e614e[_0x364ef4(0x31d,0x327)])+_0x3e9271(-0x2bb,-0x2a8)+_0x352426+(_0x3e9271(-0x2c2,-0x2af)+'\x0a'));for(const _0x273197 of _0x5e614e){console[_0x3e9271(-0x2a8,-0x2b6)]('['+_0x273197[_0x364ef4(0x309,0x30f)]+']\x20'+_0x273197['id'][_0x364ef4(0x327,0x33e)](0x0,0x8)+_0x364ef4(0x339,0x334)+_0x273197[_0x3e9271(-0x299,-0x283)]+_0x3e9271(-0x293,-0x287)+_0x273197['tags']['join'](',\x20')),console['log']('\x20\x20'+_0x273197[_0x364ef4(0x2fe,0x30e)][_0x3e9271(-0x294,-0x29b)](0x0,0x78)+(_0x5d094a['rheZg'](_0x273197[_0x3e9271(-0x2c4,-0x2bb)][_0x364ef4(0x32e,0x327)],0x78)?_0x364ef4(0x309,0x31e):'')),console[_0x3e9271(-0x2a8,-0x290)](_0x3e9271(-0x29d,-0x29f)+'\x20'+_0x273197['createdAt']+(_0x364ef4(0x329,0x313)+'\x20')+_0x273197['accessCoun'+'t']),console[_0x3e9271(-0x2a8,-0x298)]('');}}finally{_0xe1f172['close']();}});}
@@ -1,205 +1 @@
1
- /**
2
- * Migrate-Chunks Command
3
- *
4
- * 레거시 claude-md-sync 메모리(독립 섹션)를 Parent-Child 구조로 마이그레이션합니다.
5
- *
6
- * 동작:
7
- * 1. claude-md-sync 태그 + section:* 태그 + parent_id=NULL인 레거시 메모리 탐색
8
- * 2. source 파일별로 그룹핑
9
- * 3. 원본 파일 읽기 → Parent 생성
10
- * 4. 섹션 재파싱 → Children 생성
11
- * 5. 레거시 메모리 삭제 (tombstone + sync 상태 보존)
12
- */
13
- import { Command } from 'commander';
14
- import chalk from 'chalk';
15
- import { existsSync, readFileSync } from 'node:fs';
16
- import { createHash } from 'node:crypto';
17
- import { ConfigManager } from '../../config/manager.js';
18
- import { MemoryDatabase } from '../../db/database.js';
19
- import { parseClaudeMd, findClaudeMd } from '../../claude/sync.js';
20
- const CLAUDE_MD_TAG = 'claude-md-sync';
21
- /**
22
- * 레거시 claude-md-sync 메모리를 탐색하여 파일별로 그룹핑
23
- */
24
- function findLegacyGroups(db, projectPath) {
25
- // claude-md-sync 태그를 가진 모든 메모리 조회
26
- const allSyncMemories = db.findMemoriesByTag(CLAUDE_MD_TAG);
27
- // 레거시 조건: parent_id=NULL + section:* 태그 보유 + source:* 태그 없음 (또는 있어도 chunk_total 없음)
28
- const legacyMemories = allSyncMemories.filter(m => !m.parentId &&
29
- !m.chunkTotal &&
30
- m.tags.some(t => t.startsWith('section:')));
31
- if (legacyMemories.length === 0)
32
- return [];
33
- // source:* 태그 기반 그룹핑
34
- const groups = new Map();
35
- for (const m of legacyMemories) {
36
- const sourceTag = m.tags.find(t => t.startsWith('source:'));
37
- const filename = sourceTag ? sourceTag.slice(7) : 'CLAUDE.md';
38
- const list = groups.get(filename) ?? [];
39
- list.push(m);
40
- groups.set(filename, list);
41
- }
42
- // 파일 경로 추정
43
- const result = [];
44
- for (const [filename, memories] of groups) {
45
- let filePath = null;
46
- // projectPath 기반 탐색
47
- if (projectPath) {
48
- const candidates = [
49
- `${projectPath}/${filename}`,
50
- `${projectPath}/.claude/${filename}`,
51
- ];
52
- filePath = candidates.find(p => existsSync(p)) ?? null;
53
- }
54
- // 기본 CLAUDE.md 탐색
55
- if (!filePath && filename === 'CLAUDE.md') {
56
- filePath = findClaudeMd(projectPath);
57
- }
58
- result.push({ filename, memories, filePath });
59
- }
60
- return result;
61
- }
62
- /**
63
- * 단일 그룹 마이그레이션 실행
64
- */
65
- function migrateGroup(db, group, options) {
66
- if (!group.filePath) {
67
- return { created: 0, deleted: 0, parentId: null };
68
- }
69
- const content = readFileSync(group.filePath, 'utf-8');
70
- const sections = parseClaudeMd(content);
71
- if (sections.length === 0) {
72
- return { created: 0, deleted: 0, parentId: null };
73
- }
74
- if (options.dryRun) {
75
- return {
76
- created: sections.length + 1, // Parent + Children
77
- deleted: group.memories.length,
78
- parentId: null,
79
- };
80
- }
81
- // sync 상태 보존 (레거시 메모리의 remoteId 수집)
82
- const syncMap = new Map();
83
- for (const m of group.memories) {
84
- const status = db.getSyncStatus(m.id);
85
- if (status?.remoteId) {
86
- const sectionTag = m.tags.find(t => t.startsWith('section:'));
87
- if (sectionTag) {
88
- syncMap.set(sectionTag, status.remoteId);
89
- }
90
- }
91
- }
92
- // 레거시 메모리 삭제 (tombstone 포함)
93
- for (const m of group.memories) {
94
- db.deleteMemory(m.id);
95
- }
96
- // Parent-Child 생성
97
- const contentHash = createHash('sha256').update(content).digest('hex').slice(0, 16);
98
- const projectPath = options.projectPath ?? process.cwd();
99
- const parentTags = [CLAUDE_MD_TAG, `source:${group.filename}`, `hash:${contentHash}`];
100
- const childInputs = sections.map((section) => {
101
- const sectionHash = createHash('sha256').update(section.content).digest('hex').slice(0, 16);
102
- return {
103
- content: `[CLAUDE.md: ${section.title}]\nSource: ${group.filename}\n\n${section.content}`,
104
- category: classifySection(section.title),
105
- tier: 'semantic',
106
- tags: [CLAUDE_MD_TAG, `section:${section.title}`, `hash:${sectionHash}`, `source:${group.filename}`],
107
- projectPath,
108
- };
109
- });
110
- const parentId = db.createMemoryWithChunks({
111
- content,
112
- category: 'project_knowledge',
113
- tier: 'semantic',
114
- tags: parentTags,
115
- projectPath,
116
- }, childInputs);
117
- // sync 상태 복원: Children에 이전 remoteId 매핑
118
- if (syncMap.size > 0) {
119
- const children = db.getChildChunks(parentId);
120
- for (const child of children) {
121
- const sectionTag = child.tags.find(t => t.startsWith('section:'));
122
- if (sectionTag && syncMap.has(sectionTag)) {
123
- db.setSyncStatus(child.id, syncMap.get(sectionTag), 'pending');
124
- }
125
- }
126
- }
127
- return {
128
- created: sections.length + 1,
129
- deleted: group.memories.length,
130
- parentId,
131
- };
132
- }
133
- /**
134
- * 섹션 제목으로 카테고리 분류 (sync.ts와 동일 로직)
135
- */
136
- function classifySection(title) {
137
- const lower = title.toLowerCase();
138
- if (lower.includes('convention') || lower.includes('규칙') || lower.includes('rule') ||
139
- lower.includes('스타일') || lower.includes('style') || lower.includes('패턴') ||
140
- lower.includes('pattern') || lower.includes('원칙'))
141
- return 'convention';
142
- if (lower.includes('결정') || lower.includes('decision') || lower.includes('선택') ||
143
- lower.includes('why') || lower.includes('이유'))
144
- return 'decision';
145
- if (lower.includes('에러') || lower.includes('error') || lower.includes('문제') ||
146
- lower.includes('trouble') || lower.includes('fix') || lower.includes('해결'))
147
- return 'error_solution';
148
- if (lower.includes('학습') || lower.includes('learning') || lower.includes('배운'))
149
- return 'learning';
150
- return 'project_knowledge';
151
- }
152
- export function migrateChunksCommand() {
153
- return new Command('migrate-chunks')
154
- .description('Migrate legacy claude-md-sync memories to Parent-Child pattern')
155
- .option('--dry-run', 'Show what would be migrated without writing')
156
- .option('-p, --project <path>', 'Project path (for CLAUDE.md lookup)')
157
- .action(async (options) => {
158
- const config = new ConfigManager().load();
159
- const db = new MemoryDatabase(config.db.path);
160
- try {
161
- db.initialize();
162
- const groups = findLegacyGroups(db, options.project);
163
- if (groups.length === 0) {
164
- console.log(chalk.green('\n✓ No legacy memories to migrate. Already using Parent-Child pattern.\n'));
165
- return;
166
- }
167
- const prefix = options.dryRun ? chalk.cyan('[DRY RUN] ') : '';
168
- console.log(chalk.bold(`\n${prefix}📦 Migrate-Chunks: Legacy → Parent-Child\n`));
169
- let totalCreated = 0;
170
- let totalDeleted = 0;
171
- for (const group of groups) {
172
- console.log(chalk.dim(`─── ${group.filename} (${group.memories.length} legacy memories) ───`));
173
- if (!group.filePath) {
174
- console.log(chalk.yellow(` ⚠️ Source file not found. Skipping.`));
175
- console.log(chalk.dim(` Use --project <path> to specify project root.\n`));
176
- continue;
177
- }
178
- console.log(chalk.dim(` Source: ${group.filePath}`));
179
- const result = migrateGroup(db, group, {
180
- dryRun: options.dryRun ?? false,
181
- projectPath: options.project,
182
- });
183
- if (result.parentId) {
184
- console.log(chalk.green(` ✓ Parent: ${result.parentId}`));
185
- }
186
- console.log(chalk.dim(` Created: ${result.created} | Deleted: ${result.deleted}\n`));
187
- totalCreated += result.created;
188
- totalDeleted += result.deleted;
189
- }
190
- console.log(chalk.bold('Summary:'));
191
- console.log(` ${chalk.green(`Created: ${totalCreated}`)} | ${chalk.red(`Deleted: ${totalDeleted}`)}`);
192
- console.log();
193
- }
194
- catch (error) {
195
- if (error instanceof Error) {
196
- console.error(chalk.red(`\n❌ Migration error: ${error.message}\n`));
197
- }
198
- process.exit(1);
199
- }
200
- finally {
201
- db.close();
202
- }
203
- });
204
- }
205
- //# sourceMappingURL=migrate-chunks.js.map
1
+ (function(_0x18e509,_0x43fbdc){function _0x587a8f(_0x1de434,_0x3e3a92){return _0x869c(_0x1de434- -0x206,_0x3e3a92);}const _0xeaeec6=_0x18e509();function _0x2968b7(_0x2d0e0f,_0x383a63){return _0x869c(_0x2d0e0f- -0x279,_0x383a63);}while(!![]){try{const _0xd4ae18=parseInt(_0x587a8f(-0x157,-0x109))/0x1*(parseInt(_0x2968b7(-0x1d9,-0x200))/0x2)+-parseInt(_0x2968b7(-0x19c,-0x15e))/0x3+-parseInt(_0x2968b7(-0x1be,-0x1b1))/0x4*(-parseInt(_0x587a8f(-0x11d,-0xd9))/0x5)+-parseInt(_0x2968b7(-0x1e6,-0x1d2))/0x6*(-parseInt(_0x2968b7(-0x15d,-0x1aa))/0x7)+parseInt(_0x587a8f(-0x121,-0x15a))/0x8*(-parseInt(_0x2968b7(-0x178,-0x19c))/0x9)+-parseInt(_0x2968b7(-0x1d2,-0x187))/0xa*(-parseInt(_0x587a8f(-0xf2,-0xe6))/0xb)+-parseInt(_0x2968b7(-0x1e0,-0x1f9))/0xc;if(_0xd4ae18===_0x43fbdc)break;else _0xeaeec6['push'](_0xeaeec6['shift']());}catch(_0x4a5de6){_0xeaeec6['push'](_0xeaeec6['shift']());}}}(_0x25e8,0xcac62));import{Command}from'commander';import _0x1948b5 from'chalk';function _0x25e8(){const _0x3ad5b5=['C2HHmJu2','runAwNC','Ad4GDg8GC3bLyW','icbtB3vYy2u6ia','xqPtB3vYy2u6ia','Esb1C2LUzYbqyq','zxjYB3i','AgfZAdO','zs1Tzc1ZEw5Jia','C2vJDgLVBJO','vxnjuMO','y3LHBG','B2T1CcK','DgL0Bgu','y2XVC2u','yNPlywG','y29UDMvUDgLVBG','tMzgsK4','otbVuwrHwgy','zMLSzvbHDgG','EwvSBg93','r2LUqKq','C3rHCNrZv2L0Aa','DhvZ','odaZntK0ngHquKfiuG','AKDju00','AM9PBG','w0rswsbsvu5Dia','zsbMAwXLig5VDa','icbdCMvHDgvKoG','Aezsuwq','oteYsgL1sgvi','vePSqvK','zMLSzw5HBwu','Dg9mB3DLCKnHCW','ugz5D0G','u3vTBwfYEtO','zxjYB3jFC29SDq','ndC5otbiB09mEfa','Cg1trem','y3KGBwvTB3jPzq','AgfZ','BwvZC2fNzq','q0XbvurflM1K','DhjVDwjSzq','icbvC2uGls1WCG','mZq2owrss3futq','C29Tzq','DvPdAMS','zMLUza','z3jLzw4','zxncEvrHzW','y29UDgvUDa','C2XPy2u','twLNCMf0zsbSzq','BwfW','CMvTB3rLswq','DgvZDa','odrlswH6qMC','cUkCKYboBYbSzwDH','vK11sLa','BwLNCMf0zs1JAa','DxrMltG','u2z2t0K','Aw5N','q3jLyxrLzdOG','Agv4','Bg9Hza','C2v0u3LUy1n0yq','ChvZAa','DgfNCW','CNvSzq','yvbKwNq','DgHVDxqGD3jPDa','7iQK7yoa7j28','ugvqve8','4Psa4Psa4Psaia','Bw9YAwvZksdILidILia','B3b0Aw9U','CYb0BYbTAwDYyq','BKTizvy','Dw5RCW','zgLNzxn0','q1jWrfi','igzVDw5KlIbtAW','BgvUz3rO','C2v0','s1vZwNy','ls1KCNKTCNvU','yM9Sza','BgvHCM5PBMC','Aw5PDgLHBgL6zq','mZC3mtqYm0HktermvW','B3DSzwrNzq','Cgf0DgvYBG','zgXOt1i','zgvSzxrLza','uhjVAMvJDcbWyq','Aw5JBhvKzxm','cUkDJcbnAwDYyxrP','odGYngjntvrtzG','CMvK','vLD6zhK','icdINjmGugfYzw50','mtu5mtvLzenLvge','zwn0idXWyxrOpG','C2vTyw50Awm','zw50lunOAwXKcG','qvv4z1C','DgGGkgzVCIbdta','yvzvzwG','rgvSzxrLzdOG','C3LUyW','B24GzxjYB3i6ia','zgLT','AgLSzcbWyxr0zq','Awz5ihbYB2PLyW','zxHPDa','zg5jrge','y2H1BMTuB3rHBa','igXLz2fJEsbTzq','ChjVAMvJDf9RBG','lY5JBgf1zguV','y3DK','8j+tPIbnAwDYyxrLlq','z2fJEsdIHPiGugfY','zhj5uNvU','u2HVDYb3Agf0ia','nte0ohHnBKDmsq','Bg9N','C291CMnLoG','z2v0','qvvers5TzcbSBW','zgvJAxnPB24','AvPHs1G','B2PLy3qGphbHDa','CgjruLK','ChjVAMvJDa','CMvUDc1dAgLSza','BwvTB3jPzxmGDa','zMLUze1LBw9YAq','zgvZy3jPChrPBW','BwvTB3jPzxm','Bwf0y2G','D2H5','DcbYB290lGO','CgfYzw50swq','mtu1mxztA1DkqW','DguUiefSCMvHza','zMLSDgvY','zgvSzxrLtwvTBW','AwDYyxrLzcb3Aq','C3bSAxq','q2H1BMTZoIbmzq','icdIMQdVUi8GifnVDxjJ','ndK2mdi3BMzOqLPk','Be9QwK0','y2XHDwrLlw1Klq'];_0x25e8=function(){return _0x3ad5b5;};return _0x25e8();}import{existsSync,readFileSync}from'node:fs';import{createHash}from'node:crypto';import{ConfigManager}from'../../config/manager.js';import{MemoryDatabase}from'../../db/database.js';import{parseClaudeMd,findClaudeMd}from'../../claude/sync.js';const CLAUDE_MD_TAG=_0x5894c1(-0x100,-0x14d)+_0x52eae9(0x3f6,0x3e6);function _0x52eae9(_0x4ef3b5,_0x17e029){return _0x869c(_0x17e029-0x2f5,_0x4ef3b5);}function findLegacyGroups(_0x5a4315,_0x3fa435){const _0x20193f={'pbQRY':function(_0x1ff029,_0x1d3f16){return _0x1ff029(_0x1d3f16);}},_0x2cc522=_0x5a4315[_0x3a1871(-0xd0,-0x98)+_0x44a00c(-0xee,-0xa1)](CLAUDE_MD_TAG);function _0x44a00c(_0x44ca92,_0x250fef){return _0x52eae9(_0x250fef,_0x44ca92- -0x497);}function _0x3a1871(_0x360391,_0x38f06a){return _0x52eae9(_0x38f06a,_0x360391- -0x4d2);}const _0x440d08=_0x2cc522[_0x3a1871(-0xc7,-0xfa)](_0x4e9e39=>!_0x4e9e39['parentId']&&!_0x4e9e39[_0x44a00c(-0xaa,-0xa5)]&&_0x4e9e39[_0x3a1871(-0x116,-0xd7)][_0x3a1871(-0x12d,-0x14f)](_0x5ace1b=>_0x5ace1b[_0x44a00c(-0x10b,-0x11d)](_0x3a1871(-0x153,-0x17b))));if(_0x440d08[_0x3a1871(-0x107,-0xe6)]===0x0)return[];const _0x1700e3=new Map();for(const _0x113968 of _0x440d08){const _0x376f85=_0x113968[_0x44a00c(-0xdb,-0xce)][_0x44a00c(-0xf0,-0xb7)](_0x2a99f7=>_0x2a99f7['startsWith'](_0x44a00c(-0x9f,-0x97))),_0x1c9b58=_0x376f85?_0x376f85[_0x44a00c(-0xec,-0xde)](0x7):_0x44a00c(-0xf6,-0xe9),_0x42d4ca=_0x1700e3[_0x44a00c(-0x9e,-0xe2)](_0x1c9b58)??[];_0x42d4ca[_0x3a1871(-0x117,-0xcf)](_0x113968),_0x1700e3['set'](_0x1c9b58,_0x42d4ca);}const _0x123deb=[];for(const [_0x2417b1,_0x55d100]of _0x1700e3){let _0x4905e9=null;if(_0x3fa435){const _0x3b4352=[_0x3fa435+'/'+_0x2417b1,_0x3fa435+_0x44a00c(-0xa7,-0xd2)+_0x2417b1];_0x4905e9=_0x3b4352['find'](_0x44a3d4=>existsSync(_0x44a3d4))??null;}!_0x4905e9&&_0x2417b1===_0x44a00c(-0xf6,-0xe4)&&(_0x4905e9=_0x20193f[_0x3a1871(-0xd4,-0xcf)](findClaudeMd,_0x3fa435)),_0x123deb[_0x44a00c(-0xdc,-0xda)]({'filename':_0x2417b1,'memories':_0x55d100,'filePath':_0x4905e9});}return _0x123deb;}function migrateGroup(_0x376daa,_0x3d55bc,_0x1a2bfe){const _0x459fd3={'dlhOR':function(_0x30b823,_0x4a8491){return _0x30b823 instanceof _0x4a8491;},'lQqzN':function(_0x11b989,_0x207c47){return _0x11b989(_0x207c47);},'lOjZM':_0x76879c(0x92,0x5a),'xbNXY':function(_0x55867b,_0x18f478,_0x528ae8){return _0x55867b(_0x18f478,_0x528ae8);},'uZCjk':'semantic','pmSDC':function(_0x295e3e,_0x45763c){return _0x295e3e===_0x45763c;},'ECZZw':function(_0x2c4f03,_0x53f3c6){return _0x2c4f03(_0x53f3c6);},'jGISM':_0x76879c(0x50,0x58),'dnIDa':function(_0x452257,_0x394dfc){return _0x452257>_0x394dfc;},'qjcHC':'pending','SfvOI':function(_0x20197f,_0x242928){return _0x20197f+_0x242928;}};if(!_0x3d55bc[_0x76879c(0x63,0x7d)]){if(_0x459fd3[_0x534119(-0x1f6,-0x237)](_0x76879c(0xa3,0x6b),_0x76879c(0xa0,0x51)))_0x459fd3[_0x76879c(0xaf,0xaa)](_0x584d06,_0x6eae86)&&_0x28a19e[_0x534119(-0x217,-0x203)](_0x112654[_0x534119(-0x1b8,-0x1ee)](_0x76879c(0xb3,0xc2)+'on\x20error:\x20'+_0x579caa['message']+'\x0a')),_0xc34aea[_0x76879c(0xc5,0xfc)](0x1);else return{'created':0x0,'deleted':0x0,'parentId':null};}const _0x2b52d5=_0x459fd3['xbNXY'](readFileSync,_0x3d55bc[_0x534119(-0x20a,-0x1f8)],_0x534119(-0x1df,-0x1c3)),_0x1b14f4=_0x459fd3[_0x76879c(0x51,0x64)](parseClaudeMd,_0x2b52d5);if(_0x1b14f4[_0x534119(-0x1c8,-0x1de)]===0x0)return{'created':0x0,'deleted':0x0,'parentId':null};function _0x534119(_0x40517a,_0x1f751c){return _0x52eae9(_0x1f751c,_0x40517a- -0x593);}if(_0x1a2bfe['dryRun'])return{'created':_0x1b14f4[_0x534119(-0x1c8,-0x1ef)]+0x1,'deleted':_0x3d55bc[_0x534119(-0x18f,-0x1af)][_0x76879c(0xa5,0x56)],'parentId':null};const _0x4653ea=new Map();function _0x76879c(_0x1a64e2,_0x57e39b){return _0x52eae9(_0x57e39b,_0x1a64e2- -0x326);}for(const _0xafb212 of _0x3d55bc['memories']){const _0x1c3edb=_0x376daa['getSyncSta'+_0x534119(-0x206,-0x253)](_0xafb212['id']);if(_0x1c3edb?.[_0x76879c(0x88,0x7b)]){const _0x59f5cd=_0xafb212[_0x534119(-0x1d7,-0x197)][_0x534119(-0x1ec,-0x224)](_0xe5ce62=>_0xe5ce62['startsWith'](_0x76879c(0x59,0x39)));_0x59f5cd&&_0x4653ea[_0x534119(-0x1c7,-0x18f)](_0x59f5cd,_0x1c3edb[_0x534119(-0x1e5,-0x1d2)]);}}for(const _0x43a5ef of _0x3d55bc[_0x534119(-0x18f,-0x1b7)]){_0x376daa[_0x534119(-0x187,-0x14d)+'ry'](_0x43a5ef['id']);}const _0x29af19=createHash(_0x459fd3[_0x534119(-0x204,-0x1e7)])['update'](_0x2b52d5)[_0x76879c(0xa2,0xa4)](_0x459fd3[_0x76879c(0xec,0xc2)])[_0x76879c(0x85,0x9d)](0x0,0x10),_0x8a5939=_0x1a2bfe['projectPat'+'h']??process[_0x534119(-0x1a2,-0x15e)](),_0x1c7403=[CLAUDE_MD_TAG,'source:'+_0x3d55bc[_0x76879c(0x71,0x81)],'hash:'+_0x29af19],_0x8ddb76=_0x1b14f4[_0x76879c(0x87,0x4a)](_0x399747=>{function _0x3d426d(_0x2bdbe9,_0x2a4703){return _0x534119(_0x2bdbe9-0x5bd,_0x2a4703);}function _0x20107d(_0x4af277,_0x1f6d5a){return _0x534119(_0x1f6d5a-0x5da,_0x4af277);}const _0x1fa670=_0x459fd3['lQqzN'](createHash,_0x3d426d(0x3a0,0x3ba))['update'](_0x399747[_0x20107d(0x403,0x3f1)])[_0x20107d(0x3f2,0x40f)](_0x459fd3[_0x20107d(0x439,0x459)])['slice'](0x0,0x10);return{'content':'[CLAUDE.md'+':\x20'+_0x399747[_0x20107d(0x3cb,0x3ca)]+_0x3d426d(0x3a4,0x3c2)+_0x3d55bc[_0x3d426d(0x3c1,0x3e7)]+'\x0a\x0a'+_0x399747['content'],'category':_0x459fd3['xbNXY'](classifySection,_0x399747[_0x3d426d(0x3ad,0x3ef)],_0x399747[_0x3d426d(0x3d4,0x3f1)]),'tier':_0x459fd3[_0x3d426d(0x3d0,0x41e)],'tags':[CLAUDE_MD_TAG,_0x20107d(0x37f,0x3c6)+_0x399747[_0x3d426d(0x3ad,0x39c)],_0x20107d(0x3f2,0x3c4)+_0x1fa670,_0x3d426d(0x422,0x467)+_0x3d55bc[_0x20107d(0x3fa,0x3de)]],'projectPath':_0x8a5939};}),_0x528576=_0x376daa['createMemo'+'ryWithChun'+'ks']({'content':_0x2b52d5,'category':_0x534119(-0x1a4,-0x1c3)+'owledge','tier':_0x534119(-0x1b3,-0x169),'tags':_0x1c7403,'projectPath':_0x8a5939},_0x8ddb76);if(_0x459fd3[_0x534119(-0x1a7,-0x1ab)](_0x4653ea['size'],0x0)){const _0x4824e4=_0x376daa['getChildCh'+_0x534119(-0x1cc,-0x180)](_0x528576);for(const _0x3ee591 of _0x4824e4){const _0x585ea8=_0x3ee591[_0x76879c(0x96,0xa8)][_0x76879c(0x81,0x8a)](_0x1e3309=>_0x1e3309[_0x76879c(0x66,0x77)](_0x534119(-0x214,-0x1f7)));_0x585ea8&&_0x4653ea[_0x76879c(0x79,0xbf)](_0x585ea8)&&_0x376daa[_0x76879c(0x94,0xc6)+_0x76879c(0x67,0x8c)](_0x3ee591['id'],_0x4653ea[_0x76879c(0xd3,0x118)](_0x585ea8),_0x459fd3['qjcHC']);}}return{'created':_0x459fd3[_0x76879c(0x8f,0xcd)](_0x1b14f4['length'],0x1),'deleted':_0x3d55bc['memories'][_0x76879c(0xa5,0x8b)],'parentId':_0x528576};}function _0x869c(_0x507b25,_0x47b0d0){_0x507b25=_0x507b25-0x80;const _0x25e8a7=_0x25e8();let _0x869ce4=_0x25e8a7[_0x507b25];if(_0x869c['QvKvHs']===undefined){var _0x236105=function(_0x19dac0){const _0x5707a6='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x17680e='',_0x540e9b='';for(let _0x313c80=0x0,_0x3cbbe5,_0xe31cd,_0x514f74=0x0;_0xe31cd=_0x19dac0['charAt'](_0x514f74++);~_0xe31cd&&(_0x3cbbe5=_0x313c80%0x4?_0x3cbbe5*0x40+_0xe31cd:_0xe31cd,_0x313c80++%0x4)?_0x17680e+=String['fromCharCode'](0xff&_0x3cbbe5>>(-0x2*_0x313c80&0x6)):0x0){_0xe31cd=_0x5707a6['indexOf'](_0xe31cd);}for(let _0x42a25e=0x0,_0x19b6c0=_0x17680e['length'];_0x42a25e<_0x19b6c0;_0x42a25e++){_0x540e9b+='%'+('00'+_0x17680e['charCodeAt'](_0x42a25e)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x540e9b);};_0x869c['YkUftS']=_0x236105,_0x869c['gkSwrx']={},_0x869c['QvKvHs']=!![];}const _0x414144=_0x25e8a7[0x0],_0x2deca1=_0x507b25+_0x414144,_0x25164c=_0x869c['gkSwrx'][_0x2deca1];return!_0x25164c?(_0x869ce4=_0x869c['YkUftS'](_0x869ce4),_0x869c['gkSwrx'][_0x2deca1]=_0x869ce4):_0x869ce4=_0x25164c,_0x869ce4;}function _0x5894c1(_0x115e83,_0x560d64){return _0x869c(_0x115e83- -0x180,_0x560d64);}function classifySection(_0x4590ae,_0x2b78d9){const _0x252e88={'FbuMY':_0x369a4d(-0x2c1,-0x299),'VMuJP':_0x369a4d(-0x2be,-0x2ab),'PfywH':'style','AUxgW':_0x369a4d(-0x2aa,-0x2da),'kyThu':_0x369a4d(-0x2f8,-0x307),'hyuqH':_0x369a4d(-0x278,-0x2b9),'UsIRj':'fix','bzKah':_0x369a4d(-0x2e3,-0x2ce)+'tion','KUsZv':_0x3a467f(0x267,0x25e),'TJlAY':_0x369a4d(-0x28f,-0x28b)+_0x3a467f(0x273,0x261)};function _0x369a4d(_0x54b0fa,_0x903d0d){return _0x5894c1(_0x54b0fa- -0x209,_0x903d0d);}const _0x149e0d=_0x4590ae[_0x369a4d(-0x2e6,-0x2ca)+'e'](),_0x4fca62=_0x2b78d9?_0x2b78d9[_0x3a467f(0x2c1,0x29c)]('\x0a')[_0x369a4d(-0x2d3,-0x30d)](0x0,0x5)[_0x369a4d(-0x2ee,-0x339)]('\x20')[_0x3a467f(0x235,0x226)+'e']():'',_0x6bbd02=/금지|절대|must not|never|mandatory/,_0x416014=_0x6bbd02[_0x369a4d(-0x2cf,-0x2ff)](_0x149e0d),_0x1bf648=(_0x4fca62[_0x3a467f(0x255,0x293)](/금지|절대|must not|never|mandatory|필수|반드시|always/g)||[])[_0x3a467f(0x236,0x259)];if(_0x416014||_0x1bf648>=0x2)return _0x252e88['FbuMY'];function _0x3a467f(_0x1b6d23,_0x575e9c){return _0x5894c1(_0x575e9c-0x303,_0x1b6d23);}if(_0x149e0d['includes'](_0x3a467f(0x1dd,0x214))||_0x149e0d[_0x369a4d(-0x2a6,-0x27a)]('규칙')||_0x149e0d[_0x369a4d(-0x2a6,-0x27f)](_0x369a4d(-0x2c1,-0x30e))||_0x149e0d[_0x3a467f(0x23c,0x266)](_0x252e88[_0x3a467f(0x273,0x240)])||_0x149e0d['includes'](_0x252e88[_0x3a467f(0x1f4,0x227)])||_0x149e0d[_0x3a467f(0x25d,0x266)]('패턴')||_0x149e0d[_0x369a4d(-0x2a6,-0x2ae)](_0x252e88[_0x3a467f(0x22c,0x270)])||_0x149e0d[_0x3a467f(0x281,0x266)]('원칙'))return _0x252e88['kyThu'];if(_0x149e0d[_0x369a4d(-0x2a6,-0x2b8)]('결정')||_0x149e0d[_0x3a467f(0x221,0x266)](_0x369a4d(-0x283,-0x2b1))||_0x149e0d['includes']('선택')||_0x149e0d[_0x369a4d(-0x2a6,-0x2e4)](_0x252e88['hyuqH'])||_0x149e0d['includes']('이유'))return _0x369a4d(-0x283,-0x23a);if(_0x149e0d[_0x369a4d(-0x2a6,-0x2f1)]('에러')||_0x149e0d[_0x3a467f(0x29f,0x266)]('error')||_0x149e0d['includes']('문제')||_0x149e0d[_0x369a4d(-0x2a6,-0x2a0)](_0x3a467f(0x202,0x230))||_0x149e0d[_0x3a467f(0x22d,0x266)](_0x252e88[_0x369a4d(-0x2fe,-0x2b6)])||_0x149e0d[_0x369a4d(-0x2a6,-0x282)]('해결'))return _0x252e88[_0x369a4d(-0x2f9,-0x31f)];if(_0x149e0d[_0x369a4d(-0x2a6,-0x268)]('학습')||_0x149e0d[_0x369a4d(-0x2a6,-0x285)](_0x252e88[_0x369a4d(-0x2b1,-0x2c8)])||_0x149e0d[_0x369a4d(-0x2a6,-0x2d0)]('배운'))return _0x3a467f(0x2a4,0x25e);return _0x252e88[_0x3a467f(0x22c,0x224)];}export function migrateChunksCommand(){function _0x321a0d(_0x118111,_0x1f3544){return _0x5894c1(_0x118111-0x243,_0x1f3544);}const _0x22853e={'GinBD':function(_0x8f09d7,_0x336cd7,_0x5dc3a4){return _0x8f09d7(_0x336cd7,_0x5dc3a4);},'NfFJN':function(_0x5668d2,_0x154aa3){return _0x5668d2===_0x154aa3;},'aVUeh':'aPdZt','VWzdy':_0x16d188(-0x30d,-0x2e9)+_0x321a0d(0x195,0x167),'iZaKX':_0x321a0d(0x19c,0x167),'hFRQd':'-p,\x20--proj'+_0x321a0d(0x1ad,0x176),'PePTO':_0x321a0d(0x1a5,0x1af)+_0x16d188(-0x2dd,-0x2f0)+_0x16d188(-0x2c6,-0x2f9)+_0x321a0d(0x150,0x138)};function _0x16d188(_0x101f19,_0x26d28b){return _0x5894c1(_0x101f19- -0x24b,_0x26d28b);}return new Command(_0x22853e[_0x16d188(-0x2e4,-0x325)])[_0x16d188(-0x2bd,-0x2b3)+'n'](_0x321a0d(0x17a,0x19d)+'gacy\x20claud'+_0x16d188(-0x342,-0x36b)+_0x16d188(-0x2bf,-0x2cb)+'o\x20Parent-C'+_0x16d188(-0x2d7,-0x316)+'rn')['option'](_0x22853e[_0x321a0d(0x1ca,0x17e)],_0x321a0d(0x1c3,0x1b5)+'would\x20be\x20m'+_0x321a0d(0x1db,0x1f2)+_0x16d188(-0x301,-0x2f4)+_0x16d188(-0x30a,-0x2d1))[_0x321a0d(0x192,0x1af)](_0x22853e[_0x321a0d(0x162,0x185)],_0x22853e[_0x16d188(-0x2ff,-0x2c7)])['action'](async _0x85ad97=>{const _0x4fa404=new ConfigManager()[_0x1b0e47(-0x2e1,-0x2c8)](),_0x542151=new MemoryDatabase(_0x4fa404['db']['path']);function _0x1b0e47(_0x377b88,_0x5ef677){return _0x16d188(_0x377b88-0x26,_0x5ef677);}function _0x274837(_0x12861d,_0x31e3a8){return _0x16d188(_0x31e3a8-0x224,_0x12861d);}try{_0x542151[_0x274837(-0xef,-0xcb)]();const _0x1944b4=_0x22853e[_0x1b0e47(-0x30f,-0x2d0)](findLegacyGroups,_0x542151,_0x85ad97[_0x274837(-0x50,-0x9d)]);if(_0x22853e['NfFJN'](_0x1944b4[_0x1b0e47(-0x2cf,-0x2d3)],0x0)){console[_0x274837(-0xe3,-0xa5)](_0x1948b5['green'](_0x1b0e47(-0x2e9,-0x2b3)+_0x274837(-0xce,-0xfe)+_0x274837(-0xca,-0xd7)+_0x274837(-0x7d,-0x92)+_0x1b0e47(-0x31f,-0x30f)+_0x274837(-0x97,-0x9c)+'\x20pattern.\x0a'));return;}const _0x110830=_0x85ad97['dryRun']?_0x1948b5[_0x1b0e47(-0x319,-0x301)](_0x274837(-0x15a,-0x10b)):'';console[_0x1b0e47(-0x2a3,-0x28f)](_0x1948b5[_0x1b0e47(-0x2cb,-0x2d3)]('\x0a'+_0x110830+(_0x274837(-0xbb,-0xaa)+_0x1b0e47(-0x28b,-0x2cd)+_0x1b0e47(-0x2a7,-0x25d)+_0x274837(-0xf8,-0xbb))));let _0x473409=0x0,_0x79f44d=0x0;for(const _0xe4ebe9 of _0x1944b4){if(_0x22853e[_0x1b0e47(-0x313,-0x34c)](_0x274837(-0x9b,-0xde),_0x22853e[_0x274837(-0x87,-0xb8)])){console[_0x274837(-0xd0,-0xa5)](_0x1948b5['dim'](_0x274837(-0x11f,-0xda)+_0xe4ebe9[_0x274837(-0xfd,-0x105)]+'\x20('+_0xe4ebe9[_0x274837(-0xb9,-0x98)]['length']+(_0x274837(-0xc4,-0xae)+_0x274837(-0xd2,-0xd9)+'─')));if(!_0xe4ebe9[_0x274837(-0x130,-0x113)]){console[_0x274837(-0x98,-0xa5)](_0x1948b5[_0x1b0e47(-0x310,-0x312)](_0x274837(-0x8b,-0x8c)+_0x274837(-0x11c,-0x10a)+_0x1b0e47(-0x2d0,-0x287)+'ipping.')),console['log'](_0x1948b5[_0x1b0e47(-0x2b2,-0x288)](_0x274837(-0xd8,-0xf9)+_0x1b0e47(-0x29d,-0x29f)+_0x274837(-0xe5,-0x124)+_0x1b0e47(-0x2b0,-0x2bd)+_0x274837(-0x62,-0x95)));continue;}console['log'](_0x1948b5[_0x1b0e47(-0x2b2,-0x2a1)](_0x274837(-0x149,-0x123)+_0xe4ebe9[_0x1b0e47(-0x311,-0x318)]));const _0x495cc8=migrateGroup(_0x542151,_0xe4ebe9,{'dryRun':_0x85ad97[_0x1b0e47(-0x2a6,-0x2eb)]??![],'projectPath':_0x85ad97[_0x1b0e47(-0x29b,-0x2ac)]});_0x495cc8[_0x274837(-0x96,-0x94)]&&console['log'](_0x1948b5['green'](_0x1b0e47(-0x2bd,-0x30c)+':\x20'+_0x495cc8[_0x1b0e47(-0x292,-0x252)])),console[_0x1b0e47(-0x2a3,-0x296)](_0x1948b5['dim'](_0x274837(-0x128,-0x109)+'\x20'+_0x495cc8['created']+('\x20|\x20Deleted'+':\x20')+_0x495cc8[_0x1b0e47(-0x2c4,-0x2f7)]+'\x0a')),_0x473409+=_0x495cc8['created'],_0x79f44d+=_0x495cc8[_0x1b0e47(-0x2c4,-0x2cb)];}else _0x12c2ca['set'](_0x3c8af1,_0x2d4a92[_0x1b0e47(-0x2ec,-0x307)]);}console[_0x1b0e47(-0x2a3,-0x269)](_0x1948b5['bold'](_0x274837(-0x13b,-0x102))),console['log']('\x20\x20'+_0x1948b5[_0x1b0e47(-0x2f2,-0x2a7)](_0x274837(-0xdf,-0xe5)+_0x473409)+'\x20|\x20'+_0x1948b5[_0x1b0e47(-0x2bf,-0x290)](_0x274837(-0xd3,-0xb7)+_0x79f44d)),console[_0x274837(-0x66,-0xa5)]();}catch(_0x4c187c){_0x4c187c instanceof Error&&console[_0x1b0e47(-0x31e,-0x323)](_0x1948b5[_0x1b0e47(-0x2bf,-0x2ac)]('\x0a❌\x20Migrati'+_0x1b0e47(-0x2b3,-0x2c0)+_0x4c187c[_0x274837(-0xf2,-0xfc)]+'\x0a')),process[_0x274837(-0xa0,-0xb1)](0x1);}finally{_0x542151[_0x274837(-0x11b,-0x118)]();}});}