claude-memory-store 0.1.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 (158) hide show
  1. package/README.md +364 -0
  2. package/dist/acknowledgement.d.ts +14 -0
  3. package/dist/acknowledgement.d.ts.map +1 -0
  4. package/dist/acknowledgement.js +55 -0
  5. package/dist/acknowledgement.js.map +1 -0
  6. package/dist/atlas/client.d.ts +9 -0
  7. package/dist/atlas/client.d.ts.map +1 -0
  8. package/dist/atlas/client.js +64 -0
  9. package/dist/atlas/client.js.map +1 -0
  10. package/dist/atlas/embeddings.d.ts +18 -0
  11. package/dist/atlas/embeddings.d.ts.map +1 -0
  12. package/dist/atlas/embeddings.js +56 -0
  13. package/dist/atlas/embeddings.js.map +1 -0
  14. package/dist/atlas/indexes.d.ts +4 -0
  15. package/dist/atlas/indexes.d.ts.map +1 -0
  16. package/dist/atlas/indexes.js +78 -0
  17. package/dist/atlas/indexes.js.map +1 -0
  18. package/dist/atlas/vector.d.ts +17 -0
  19. package/dist/atlas/vector.d.ts.map +1 -0
  20. package/dist/atlas/vector.js +61 -0
  21. package/dist/atlas/vector.js.map +1 -0
  22. package/dist/bin/claude-memory.d.ts +3 -0
  23. package/dist/bin/claude-memory.d.ts.map +1 -0
  24. package/dist/bin/claude-memory.js +648 -0
  25. package/dist/bin/claude-memory.js.map +1 -0
  26. package/dist/bin/mcp-server.d.ts +3 -0
  27. package/dist/bin/mcp-server.d.ts.map +1 -0
  28. package/dist/bin/mcp-server.js +165 -0
  29. package/dist/bin/mcp-server.js.map +1 -0
  30. package/dist/cache/command-cache.d.ts +12 -0
  31. package/dist/cache/command-cache.d.ts.map +1 -0
  32. package/dist/cache/command-cache.js +63 -0
  33. package/dist/cache/command-cache.js.map +1 -0
  34. package/dist/cleanup.d.ts +8 -0
  35. package/dist/cleanup.d.ts.map +1 -0
  36. package/dist/cleanup.js +22 -0
  37. package/dist/cleanup.js.map +1 -0
  38. package/dist/config.d.ts +10 -0
  39. package/dist/config.d.ts.map +1 -0
  40. package/dist/config.js +97 -0
  41. package/dist/config.js.map +1 -0
  42. package/dist/detector.d.ts +20 -0
  43. package/dist/detector.d.ts.map +1 -0
  44. package/dist/detector.js +92 -0
  45. package/dist/detector.js.map +1 -0
  46. package/dist/editor/file-editor.d.ts +7 -0
  47. package/dist/editor/file-editor.d.ts.map +1 -0
  48. package/dist/editor/file-editor.js +73 -0
  49. package/dist/editor/file-editor.js.map +1 -0
  50. package/dist/editor/tui.d.ts +11 -0
  51. package/dist/editor/tui.d.ts.map +1 -0
  52. package/dist/editor/tui.js +75 -0
  53. package/dist/editor/tui.js.map +1 -0
  54. package/dist/hooks/post-tool-use.d.ts +11 -0
  55. package/dist/hooks/post-tool-use.d.ts.map +1 -0
  56. package/dist/hooks/post-tool-use.js +36 -0
  57. package/dist/hooks/post-tool-use.js.map +1 -0
  58. package/dist/hooks/pre-tool-use.d.ts +5 -0
  59. package/dist/hooks/pre-tool-use.d.ts.map +1 -0
  60. package/dist/hooks/pre-tool-use.js +103 -0
  61. package/dist/hooks/pre-tool-use.js.map +1 -0
  62. package/dist/hooks/startup.d.ts +25 -0
  63. package/dist/hooks/startup.d.ts.map +1 -0
  64. package/dist/hooks/startup.js +62 -0
  65. package/dist/hooks/startup.js.map +1 -0
  66. package/dist/hooks/stop.d.ts +39 -0
  67. package/dist/hooks/stop.d.ts.map +1 -0
  68. package/dist/hooks/stop.js +102 -0
  69. package/dist/hooks/stop.js.map +1 -0
  70. package/dist/index.d.ts +35 -0
  71. package/dist/index.d.ts.map +1 -0
  72. package/dist/index.js +166 -0
  73. package/dist/index.js.map +1 -0
  74. package/dist/memory/commands.d.ts +15 -0
  75. package/dist/memory/commands.d.ts.map +1 -0
  76. package/dist/memory/commands.js +55 -0
  77. package/dist/memory/commands.js.map +1 -0
  78. package/dist/memory/developer.d.ts +17 -0
  79. package/dist/memory/developer.d.ts.map +1 -0
  80. package/dist/memory/developer.js +233 -0
  81. package/dist/memory/developer.js.map +1 -0
  82. package/dist/memory/project.d.ts +25 -0
  83. package/dist/memory/project.d.ts.map +1 -0
  84. package/dist/memory/project.js +341 -0
  85. package/dist/memory/project.js.map +1 -0
  86. package/dist/memory/threads.d.ts +10 -0
  87. package/dist/memory/threads.d.ts.map +1 -0
  88. package/dist/memory/threads.js +57 -0
  89. package/dist/memory/threads.js.map +1 -0
  90. package/dist/memory/working.d.ts +16 -0
  91. package/dist/memory/working.d.ts.map +1 -0
  92. package/dist/memory/working.js +80 -0
  93. package/dist/memory/working.js.map +1 -0
  94. package/dist/natural-language/intent.d.ts +4 -0
  95. package/dist/natural-language/intent.d.ts.map +1 -0
  96. package/dist/natural-language/intent.js +169 -0
  97. package/dist/natural-language/intent.js.map +1 -0
  98. package/dist/natural-language/parser.d.ts +5 -0
  99. package/dist/natural-language/parser.d.ts.map +1 -0
  100. package/dist/natural-language/parser.js +63 -0
  101. package/dist/natural-language/parser.js.map +1 -0
  102. package/dist/natural-language/router.d.ts +9 -0
  103. package/dist/natural-language/router.d.ts.map +1 -0
  104. package/dist/natural-language/router.js +171 -0
  105. package/dist/natural-language/router.js.map +1 -0
  106. package/dist/project-id.d.ts +5 -0
  107. package/dist/project-id.d.ts.map +1 -0
  108. package/dist/project-id.js +78 -0
  109. package/dist/project-id.js.map +1 -0
  110. package/dist/slash-commands/edit.d.ts +10 -0
  111. package/dist/slash-commands/edit.d.ts.map +1 -0
  112. package/dist/slash-commands/edit.js +312 -0
  113. package/dist/slash-commands/edit.js.map +1 -0
  114. package/dist/slash-commands/memory.d.ts +3 -0
  115. package/dist/slash-commands/memory.d.ts.map +1 -0
  116. package/dist/slash-commands/memory.js +69 -0
  117. package/dist/slash-commands/memory.js.map +1 -0
  118. package/dist/slash-commands/recall.d.ts +2 -0
  119. package/dist/slash-commands/recall.d.ts.map +1 -0
  120. package/dist/slash-commands/recall.js +81 -0
  121. package/dist/slash-commands/recall.js.map +1 -0
  122. package/dist/slash-commands/remember.d.ts +2 -0
  123. package/dist/slash-commands/remember.d.ts.map +1 -0
  124. package/dist/slash-commands/remember.js +21 -0
  125. package/dist/slash-commands/remember.js.map +1 -0
  126. package/dist/slash-commands/stats.d.ts +2 -0
  127. package/dist/slash-commands/stats.d.ts.map +1 -0
  128. package/dist/slash-commands/stats.js +55 -0
  129. package/dist/slash-commands/stats.js.map +1 -0
  130. package/dist/slash-commands/threads.d.ts +4 -0
  131. package/dist/slash-commands/threads.d.ts.map +1 -0
  132. package/dist/slash-commands/threads.js +36 -0
  133. package/dist/slash-commands/threads.js.map +1 -0
  134. package/dist/startup/conversation.d.ts +17 -0
  135. package/dist/startup/conversation.d.ts.map +1 -0
  136. package/dist/startup/conversation.js +78 -0
  137. package/dist/startup/conversation.js.map +1 -0
  138. package/dist/startup/feature-search.d.ts +9 -0
  139. package/dist/startup/feature-search.d.ts.map +1 -0
  140. package/dist/startup/feature-search.js +62 -0
  141. package/dist/startup/feature-search.js.map +1 -0
  142. package/dist/startup/injector.d.ts +4 -0
  143. package/dist/startup/injector.d.ts.map +1 -0
  144. package/dist/startup/injector.js +190 -0
  145. package/dist/startup/injector.js.map +1 -0
  146. package/dist/summarizer.d.ts +15 -0
  147. package/dist/summarizer.d.ts.map +1 -0
  148. package/dist/summarizer.js +92 -0
  149. package/dist/summarizer.js.map +1 -0
  150. package/dist/types.d.ts +151 -0
  151. package/dist/types.d.ts.map +1 -0
  152. package/dist/types.js +3 -0
  153. package/dist/types.js.map +1 -0
  154. package/dist/utils.d.ts +5 -0
  155. package/dist/utils.d.ts.map +1 -0
  156. package/dist/utils.js +16 -0
  157. package/dist/utils.js.map +1 -0
  158. package/package.json +67 -0
@@ -0,0 +1,648 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ const commander_1 = require("commander");
38
+ const client_js_1 = require("../atlas/client.js");
39
+ const indexes_js_1 = require("../atlas/indexes.js");
40
+ const config_js_1 = require("../config.js");
41
+ const project_id_js_1 = require("../project-id.js");
42
+ const startup_js_1 = require("../hooks/startup.js");
43
+ const pre_tool_use_js_1 = require("../hooks/pre-tool-use.js");
44
+ const post_tool_use_js_1 = require("../hooks/post-tool-use.js");
45
+ const stop_js_1 = require("../hooks/stop.js");
46
+ const memory_js_1 = require("../slash-commands/memory.js");
47
+ const recall_js_1 = require("../slash-commands/recall.js");
48
+ const remember_js_1 = require("../slash-commands/remember.js");
49
+ const threads_js_1 = require("../slash-commands/threads.js");
50
+ const stats_js_1 = require("../slash-commands/stats.js");
51
+ const edit_js_1 = require("../slash-commands/edit.js");
52
+ const working_js_1 = require("../memory/working.js");
53
+ const project_js_1 = require("../memory/project.js");
54
+ const client_js_2 = require("../atlas/client.js");
55
+ const readline = __importStar(require("node:readline"));
56
+ const fs = __importStar(require("node:fs"));
57
+ const os = __importStar(require("node:os"));
58
+ const path = __importStar(require("node:path"));
59
+ process.on('unhandledRejection', (reason, promise) => {
60
+ console.error('Unhandled Rejection at:', promise, 'reason:', reason);
61
+ process.exit(1);
62
+ });
63
+ process.on('uncaughtException', (error) => {
64
+ console.error('Uncaught Exception:', error);
65
+ process.exit(1);
66
+ });
67
+ const program = new commander_1.Command();
68
+ program
69
+ .name('claude-memory')
70
+ .description('Persistent memory for Claude Code. Powered by MongoDB Atlas.')
71
+ .version('0.1.0');
72
+ // ─── Init ────────────────────────────────────────────────────────────────────
73
+ program
74
+ .command('init')
75
+ .description('Initialize Claude Memory with your Atlas connection string')
76
+ .action(async () => {
77
+ console.log('\nWelcome to Claude Memory.\n');
78
+ console.log('Persistent memory for Claude Code. Powered entirely by MongoDB Atlas.\n');
79
+ const rl = readline.createInterface({
80
+ input: process.stdin,
81
+ output: process.stdout,
82
+ });
83
+ const ask = (q) => new Promise((resolve) => rl.question(q, resolve));
84
+ try {
85
+ let uri = '';
86
+ // Check for existing Atlas URI: env var first, then .env file
87
+ const envUri = process.env.CLAUDE_MEMORY_ATLAS_URI;
88
+ let dotenvUri = '';
89
+ if (!envUri) {
90
+ try {
91
+ const envPath = path.join(process.cwd(), '.env');
92
+ if (fs.existsSync(envPath)) {
93
+ const envContent = fs.readFileSync(envPath, 'utf-8');
94
+ const match = envContent.match(/^CLAUDE_MEMORY_ATLAS_URI\s*=\s*(.+)$/m);
95
+ if (match)
96
+ dotenvUri = match[1].trim().replace(/^['"]|['"]$/g, '');
97
+ }
98
+ }
99
+ catch {
100
+ // .env read failed — no problem
101
+ }
102
+ }
103
+ const detectedUri = envUri || dotenvUri;
104
+ if (detectedUri) {
105
+ const source = envUri ? 'environment variable' : '.env file';
106
+ console.log(`Found Atlas URI in ${source}.\n`);
107
+ const useExisting = await ask(`Use this connection? (y/n)\n> `);
108
+ if (useExisting.toLowerCase() === 'y') {
109
+ uri = detectedUri;
110
+ }
111
+ }
112
+ if (!uri) {
113
+ const hasAccount = await ask('Do you have a MongoDB Atlas account?\n(y) Yes -- I have a connection string\n(n) No -- create one now (free, no credit card required)\n\n> ');
114
+ if (hasAccount.toLowerCase() === 'n') {
115
+ console.log('\nCreate your free Atlas account:');
116
+ console.log('https://cloud.mongodb.com/register\n');
117
+ console.log('Free M0 cluster. No credit card. Never expires.\n');
118
+ console.log('Once created:');
119
+ console.log('1. Click "Connect" on your cluster');
120
+ console.log('2. Choose "Drivers"');
121
+ console.log('3. Copy your connection string\n');
122
+ }
123
+ uri = await ask('Paste your connection string here:\n> ');
124
+ }
125
+ if (!uri.trim()) {
126
+ console.log('\nNo connection string provided. Exiting.');
127
+ rl.close();
128
+ process.exit(1);
129
+ }
130
+ console.log('\nTesting connection...');
131
+ const ok = await (0, client_js_1.testConnection)(uri.trim());
132
+ if (!ok) {
133
+ console.log('Connection failed. Please check your connection string and try again.');
134
+ rl.close();
135
+ process.exit(1);
136
+ }
137
+ console.log('Connected.\n');
138
+ console.log('Creating claude_memory database...');
139
+ const db = await (0, client_js_1.connect)(uri.trim());
140
+ console.log('Creating indexes...');
141
+ await (0, indexes_js_1.createIndexes)(db);
142
+ console.log('Setting up Atlas Search and Automated Embedding...');
143
+ await (0, indexes_js_1.createVectorSearchIndex)(db);
144
+ // Save config
145
+ (0, config_js_1.saveConfig)({
146
+ atlas_uri: uri.trim(),
147
+ team_memory: false,
148
+ memory_ttl_days: 30,
149
+ });
150
+ console.log(`Config saved to ${(0, config_js_1.getConfigPath)()}\n`);
151
+ // Install Claude Code hooks
152
+ console.log('Installing Claude Code hooks...');
153
+ installHooks();
154
+ // Install MCP server
155
+ console.log('Registering MCP server...');
156
+ installMcpServer();
157
+ // Install skill file
158
+ console.log('Installing skill file...');
159
+ installSkillFile();
160
+ // Install CLAUDE.md instructions
161
+ console.log('Adding memory instructions to CLAUDE.md...');
162
+ installClaudeMdInstructions();
163
+ console.log('\nDone. Claude Memory is ready.\n');
164
+ console.log('Your session memories are stored in MongoDB Atlas.');
165
+ console.log('Free tier. No credit card. No other dependencies. Yours forever.\n');
166
+ console.log('Integration installed:');
167
+ console.log(' - Hooks: startup, pre-tool-use, post-tool-use, stop');
168
+ console.log(' - MCP server: recall, remember, memory_threads, memory_stats');
169
+ console.log(' - Skill file: /recall, /remember, /threads, /stats');
170
+ console.log(' - CLAUDE.md: memory instructions for Claude\n');
171
+ await (0, client_js_2.disconnect)();
172
+ }
173
+ finally {
174
+ rl.close();
175
+ }
176
+ });
177
+ // ─── Hook Commands (called by Claude Code hooks) ────────────────────────────
178
+ program
179
+ .command('hook:startup')
180
+ .description('Run the startup hook (called by Claude Code)')
181
+ .action(async () => {
182
+ try {
183
+ const result = await (0, startup_js_1.startup)();
184
+ console.log(result.banner);
185
+ }
186
+ catch (err) {
187
+ // Fail silently — never block Claude Code
188
+ }
189
+ finally {
190
+ await (0, client_js_2.disconnect)();
191
+ }
192
+ });
193
+ program
194
+ .command('hook:pre-tool-use')
195
+ .description('Run the pre-tool-use hook (called by Claude Code)')
196
+ .argument('[prompt]', 'The user prompt')
197
+ .action(async (prompt) => {
198
+ if (!prompt) {
199
+ // Read from stdin
200
+ prompt = fs.readFileSync(0, 'utf-8').trim();
201
+ }
202
+ if (!prompt)
203
+ return;
204
+ try {
205
+ const injection = await (0, pre_tool_use_js_1.preToolUse)(prompt);
206
+ if (injection) {
207
+ console.log(injection);
208
+ }
209
+ }
210
+ catch {
211
+ // Fail silently
212
+ }
213
+ finally {
214
+ await (0, client_js_2.disconnect)();
215
+ }
216
+ });
217
+ program
218
+ .command('hook:post-tool-use')
219
+ .description('Run the post-tool-use hook (called by Claude Code)')
220
+ .argument('[prompt]', 'The conversation content')
221
+ .action(async (prompt) => {
222
+ if (!prompt) {
223
+ prompt = fs.readFileSync(0, 'utf-8').trim();
224
+ }
225
+ if (!prompt)
226
+ return;
227
+ try {
228
+ const result = await (0, post_tool_use_js_1.processMemoryCommand)(prompt);
229
+ if (result) {
230
+ console.log(result);
231
+ }
232
+ }
233
+ catch {
234
+ // Fail silently
235
+ }
236
+ finally {
237
+ await (0, client_js_2.disconnect)();
238
+ }
239
+ });
240
+ program
241
+ .command('hook:stop')
242
+ .description('Run the stop hook (called by Claude Code at session end)')
243
+ .action(async () => {
244
+ try {
245
+ // Read session data from stdin (JSON)
246
+ const input = fs.readFileSync(0, 'utf-8').trim();
247
+ const data = JSON.parse(input || '{}');
248
+ const result = await (0, stop_js_1.sessionEnd)({
249
+ files_touched: data.files_touched || [],
250
+ current_state: data.current_state || '',
251
+ next_steps: data.next_steps || [],
252
+ blockers: data.blockers || [],
253
+ session_cost_usd: data.session_cost_usd || 0,
254
+ session_duration_ms: data.session_duration_ms || 0,
255
+ feature_context: data.feature_context || '',
256
+ });
257
+ if (result.workingSaved) {
258
+ console.log('[MEMORY] Working memory saved.');
259
+ }
260
+ }
261
+ catch {
262
+ // Fail silently
263
+ }
264
+ finally {
265
+ await (0, client_js_2.disconnect)();
266
+ }
267
+ });
268
+ // ─── Slash Commands ──────────────────────────────────────────────────────────
269
+ program
270
+ .command('memory')
271
+ .description('Show current memory context summary')
272
+ .action(async () => {
273
+ try {
274
+ await (0, client_js_1.connect)();
275
+ console.log(await (0, memory_js_1.memoryCommand)());
276
+ }
277
+ catch (err) {
278
+ console.error(`Error: ${err instanceof Error ? err.message : String(err)}`);
279
+ }
280
+ finally {
281
+ await (0, client_js_2.disconnect)();
282
+ }
283
+ });
284
+ program
285
+ .command('commands')
286
+ .description('Show all verified commands')
287
+ .action(async () => {
288
+ try {
289
+ await (0, client_js_1.connect)();
290
+ console.log(await (0, memory_js_1.memoryCommandsCommand)());
291
+ }
292
+ catch (err) {
293
+ console.error(`Error: ${err instanceof Error ? err.message : String(err)}`);
294
+ }
295
+ finally {
296
+ await (0, client_js_2.disconnect)();
297
+ }
298
+ });
299
+ program
300
+ .command('threads')
301
+ .description('Show all open threads')
302
+ .action(async () => {
303
+ try {
304
+ await (0, client_js_1.connect)();
305
+ console.log(await (0, threads_js_1.threadsCommand)());
306
+ }
307
+ catch (err) {
308
+ console.error(`Error: ${err instanceof Error ? err.message : String(err)}`);
309
+ }
310
+ finally {
311
+ await (0, client_js_2.disconnect)();
312
+ }
313
+ });
314
+ program
315
+ .command('recall')
316
+ .description('Surface everything about a topic')
317
+ .argument('<topic>', 'The topic to recall')
318
+ .action(async (topic) => {
319
+ try {
320
+ await (0, client_js_1.connect)();
321
+ console.log(await (0, recall_js_1.recallCommand)(topic));
322
+ }
323
+ catch (err) {
324
+ console.error(`Error: ${err instanceof Error ? err.message : String(err)}`);
325
+ }
326
+ finally {
327
+ await (0, client_js_2.disconnect)();
328
+ }
329
+ });
330
+ program
331
+ .command('remember')
332
+ .description('Store something to memory immediately')
333
+ .argument('<content...>', 'What to remember')
334
+ .option('--developer', 'Store as developer preference (cross-project)')
335
+ .action(async (contentParts, opts) => {
336
+ try {
337
+ await (0, client_js_1.connect)();
338
+ const content = contentParts.join(' ');
339
+ console.log(await (0, remember_js_1.rememberCommand)(content, opts.developer));
340
+ }
341
+ catch (err) {
342
+ console.error(`Error: ${err instanceof Error ? err.message : String(err)}`);
343
+ }
344
+ finally {
345
+ await (0, client_js_2.disconnect)();
346
+ }
347
+ });
348
+ program
349
+ .command('stats')
350
+ .description('Show memory statistics')
351
+ .action(async () => {
352
+ try {
353
+ await (0, client_js_1.connect)();
354
+ console.log(await (0, stats_js_1.statsCommand)());
355
+ }
356
+ catch (err) {
357
+ console.error(`Error: ${err instanceof Error ? err.message : String(err)}`);
358
+ }
359
+ finally {
360
+ await (0, client_js_2.disconnect)();
361
+ }
362
+ });
363
+ program
364
+ .command('edit')
365
+ .description('Edit memory')
366
+ .option('--file', 'Open in $EDITOR instead of TUI')
367
+ .option('--developer', 'Edit developer memory only')
368
+ .action(async (opts) => {
369
+ try {
370
+ await (0, client_js_1.connect)();
371
+ if (opts.file) {
372
+ console.log(await (0, edit_js_1.editFileMode)(opts.developer));
373
+ }
374
+ else {
375
+ console.log(await (0, edit_js_1.editTuiMode)());
376
+ }
377
+ }
378
+ catch (err) {
379
+ console.error(`Error: ${err instanceof Error ? err.message : String(err)}`);
380
+ }
381
+ finally {
382
+ await (0, client_js_2.disconnect)();
383
+ }
384
+ });
385
+ program
386
+ .command('clear')
387
+ .description('Clear memory')
388
+ .option('--working', 'Clear working memory only')
389
+ .option('--all', 'Clear all memory for this project')
390
+ .action(async (opts) => {
391
+ const rl = readline.createInterface({
392
+ input: process.stdin,
393
+ output: process.stdout,
394
+ });
395
+ try {
396
+ await (0, client_js_1.connect)();
397
+ if (opts.all) {
398
+ const answer = await new Promise((resolve) => rl.question('Clear ALL memory for this project? This cannot be undone. (y/n) > ', resolve));
399
+ if (answer.toLowerCase() === 'y') {
400
+ await (0, project_js_1.clearAllMemory)();
401
+ console.log('[MEMORY] All project memory cleared.');
402
+ }
403
+ else {
404
+ console.log('Cancelled.');
405
+ }
406
+ }
407
+ else if (opts.working) {
408
+ const answer = await new Promise((resolve) => rl.question('Clear working memory for this project? (y/n) > ', resolve));
409
+ if (answer.toLowerCase() === 'y') {
410
+ const count = await (0, working_js_1.clearWorkingMemory)();
411
+ console.log(`[MEMORY] ${count} working memory entries cleared.`);
412
+ }
413
+ else {
414
+ console.log('Cancelled.');
415
+ }
416
+ }
417
+ else {
418
+ console.log('Specify --working or --all');
419
+ }
420
+ }
421
+ catch (err) {
422
+ console.error(`Error: ${err instanceof Error ? err.message : String(err)}`);
423
+ }
424
+ finally {
425
+ rl.close();
426
+ await (0, client_js_2.disconnect)();
427
+ }
428
+ });
429
+ program
430
+ .command('info')
431
+ .description('Show current project and developer identifiers')
432
+ .action(() => {
433
+ console.log(`Project ID: ${(0, project_id_js_1.getProjectId)()}`);
434
+ console.log(`Project Name: ${(0, project_id_js_1.getProjectName)()}`);
435
+ console.log(`Developer ID: ${(0, project_id_js_1.getDeveloperId)()}`);
436
+ console.log(`Config: ${(0, config_js_1.getConfigPath)()}`);
437
+ });
438
+ // ─── Hook Installation ──────────────────────────────────────────────────────
439
+ function installHooks() {
440
+ const claudeDir = path.join(os.homedir(), '.claude');
441
+ const settingsPath = path.join(claudeDir, 'settings.json');
442
+ // Ensure .claude directory exists
443
+ if (!fs.existsSync(claudeDir)) {
444
+ fs.mkdirSync(claudeDir, { recursive: true });
445
+ }
446
+ // Backup existing settings before modifying
447
+ if (fs.existsSync(settingsPath)) {
448
+ const backupPath = settingsPath + '.backup';
449
+ fs.copyFileSync(settingsPath, backupPath);
450
+ }
451
+ // Load or create settings
452
+ let settings = {};
453
+ if (fs.existsSync(settingsPath)) {
454
+ try {
455
+ settings = JSON.parse(fs.readFileSync(settingsPath, 'utf-8'));
456
+ }
457
+ catch {
458
+ settings = {};
459
+ }
460
+ }
461
+ // Ensure hooks object exists
462
+ if (!settings.hooks) {
463
+ settings.hooks = {};
464
+ }
465
+ // Add startup hook
466
+ if (!settings.hooks.SessionStart) {
467
+ settings.hooks.SessionStart = [];
468
+ }
469
+ const startupHook = {
470
+ matcher: '',
471
+ hooks: [
472
+ {
473
+ type: 'command',
474
+ command: 'claude-memory hook:startup',
475
+ },
476
+ ],
477
+ };
478
+ // Only add if not already present
479
+ const hasStartup = settings.hooks.SessionStart.some((h) => h.hooks?.some((hh) => hh.command?.includes('claude-memory')));
480
+ if (!hasStartup) {
481
+ settings.hooks.SessionStart.push(startupHook);
482
+ }
483
+ // Add PreToolUse hook
484
+ if (!settings.hooks.PreToolUse) {
485
+ settings.hooks.PreToolUse = [];
486
+ }
487
+ const preToolHook = {
488
+ matcher: '',
489
+ hooks: [
490
+ {
491
+ type: 'command',
492
+ command: 'claude-memory hook:pre-tool-use',
493
+ },
494
+ ],
495
+ };
496
+ const hasPreTool = settings.hooks.PreToolUse.some((h) => h.hooks?.some((hh) => hh.command?.includes('claude-memory')));
497
+ if (!hasPreTool) {
498
+ settings.hooks.PreToolUse.push(preToolHook);
499
+ }
500
+ // Add PostToolUse hook
501
+ if (!settings.hooks.PostToolUse) {
502
+ settings.hooks.PostToolUse = [];
503
+ }
504
+ const postToolHook = {
505
+ matcher: '',
506
+ hooks: [
507
+ {
508
+ type: 'command',
509
+ command: 'claude-memory hook:post-tool-use',
510
+ },
511
+ ],
512
+ };
513
+ const hasPostTool = settings.hooks.PostToolUse.some((h) => h.hooks?.some((hh) => hh.command?.includes('claude-memory')));
514
+ if (!hasPostTool) {
515
+ settings.hooks.PostToolUse.push(postToolHook);
516
+ }
517
+ // Add Stop hook
518
+ if (!settings.hooks.Stop) {
519
+ settings.hooks.Stop = [];
520
+ }
521
+ const stopHook = {
522
+ matcher: '',
523
+ hooks: [
524
+ {
525
+ type: 'command',
526
+ command: 'claude-memory hook:stop',
527
+ },
528
+ ],
529
+ };
530
+ const hasStop = settings.hooks.Stop.some((h) => h.hooks?.some((hh) => hh.command?.includes('claude-memory')));
531
+ if (!hasStop) {
532
+ settings.hooks.Stop.push(stopHook);
533
+ }
534
+ fs.writeFileSync(settingsPath, JSON.stringify(settings, null, 2), 'utf-8');
535
+ console.log(`Hooks installed to ${settingsPath}`);
536
+ }
537
+ function installMcpServer() {
538
+ // Find the compiled MCP server path relative to this binary
539
+ const mcpServerPath = path.resolve(__dirname, 'mcp-server.js');
540
+ // Register via ~/.claude.json (user scope)
541
+ const claudeJsonPath = path.join(os.homedir(), '.claude.json');
542
+ let claudeJson = {};
543
+ if (fs.existsSync(claudeJsonPath)) {
544
+ try {
545
+ claudeJson = JSON.parse(fs.readFileSync(claudeJsonPath, 'utf-8'));
546
+ }
547
+ catch {
548
+ claudeJson = {};
549
+ }
550
+ }
551
+ if (!claudeJson.mcpServers) {
552
+ claudeJson.mcpServers = {};
553
+ }
554
+ // Only add if not already present
555
+ if (!claudeJson.mcpServers['claude-memory']) {
556
+ claudeJson.mcpServers['claude-memory'] = {
557
+ command: 'node',
558
+ args: [mcpServerPath],
559
+ };
560
+ fs.writeFileSync(claudeJsonPath, JSON.stringify(claudeJson, null, 2), 'utf-8');
561
+ console.log(`MCP server registered in ${claudeJsonPath}`);
562
+ }
563
+ else {
564
+ // Update the path in case it changed
565
+ claudeJson.mcpServers['claude-memory'].args = [mcpServerPath];
566
+ fs.writeFileSync(claudeJsonPath, JSON.stringify(claudeJson, null, 2), 'utf-8');
567
+ console.log(`MCP server path updated in ${claudeJsonPath}`);
568
+ }
569
+ }
570
+ function installSkillFile() {
571
+ const skillDir = path.join(os.homedir(), '.claude', 'skills', 'memory');
572
+ const skillPath = path.join(skillDir, 'SKILL.md');
573
+ if (!fs.existsSync(skillDir)) {
574
+ fs.mkdirSync(skillDir, { recursive: true });
575
+ }
576
+ const skillContent = `---
577
+ name: memory
578
+ description: Access persistent memory — recall past decisions, store learnings, view open threads, check stats. Memory persists across sessions and projects via MongoDB Atlas.
579
+ ---
580
+
581
+ # Persistent Memory Commands
582
+
583
+ ## /recall <topic>
584
+ Search memory for stored decisions, patterns, commands, or context related to a topic.
585
+
586
+ ## /remember <text>
587
+ Store an important decision, pattern, or learning. Auto-classifies: "never/avoid" → avoid rule, "always use/pattern" → pattern, "architecture/database" → architecture.
588
+
589
+ ## /threads
590
+ View all open threads — unresolved issues, deferred tasks, items to watch.
591
+
592
+ ## /stats
593
+ Show memory statistics — document counts, session history, cost tracking.
594
+ `;
595
+ fs.writeFileSync(skillPath, skillContent, 'utf-8');
596
+ console.log(`Skill file installed to ${skillPath}`);
597
+ }
598
+ function installClaudeMdInstructions() {
599
+ const claudeMdPath = path.join(os.homedir(), '.claude', 'CLAUDE.md');
600
+ const marker = '## Persistent Memory Store';
601
+ // Check if instructions already exist
602
+ if (fs.existsSync(claudeMdPath)) {
603
+ const existing = fs.readFileSync(claudeMdPath, 'utf-8');
604
+ if (existing.includes(marker)) {
605
+ console.log('Memory instructions already in CLAUDE.md — skipping.');
606
+ return;
607
+ }
608
+ }
609
+ const instructions = `
610
+ ---
611
+
612
+ ${marker}
613
+
614
+ You have access to a persistent memory system powered by MongoDB Atlas. It stores architecture decisions, patterns, avoid rules, verified commands, open threads, and developer preferences across ALL sessions.
615
+
616
+ **Memory is always available.** The hooks inject relevant context automatically before every tool call. You can also actively query memory:
617
+
618
+ - Use the \`recall\` MCP tool to search memory about any topic
619
+ - Use the \`remember\` MCP tool to store important decisions or learnings
620
+ - Use the \`memory_threads\` MCP tool to see unresolved items
621
+ - Use the \`memory_stats\` MCP tool to see what's stored
622
+
623
+ **When to actively query memory:**
624
+ - Before starting a new task, check if there's prior context about the feature area
625
+ - When the developer asks about deploy processes, database configs, or project conventions
626
+ - When you're unsure about a project pattern — memory may have the answer
627
+
628
+ **When to actively store to memory:**
629
+ - When the developer makes an important architecture decision
630
+ - When a deploy process, database config, or integration is explained
631
+ - When the developer says "remember this" or "always do X" / "never do Y"
632
+ `;
633
+ if (fs.existsSync(claudeMdPath)) {
634
+ // Append to existing file
635
+ fs.appendFileSync(claudeMdPath, instructions, 'utf-8');
636
+ }
637
+ else {
638
+ // Create new file
639
+ const claudeDir = path.join(os.homedir(), '.claude');
640
+ if (!fs.existsSync(claudeDir)) {
641
+ fs.mkdirSync(claudeDir, { recursive: true });
642
+ }
643
+ fs.writeFileSync(claudeMdPath, `# Global CLAUDE.md\n\n${instructions}`, 'utf-8');
644
+ }
645
+ console.log(`Memory instructions added to ${claudeMdPath}`);
646
+ }
647
+ program.parse();
648
+ //# sourceMappingURL=claude-memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-memory.js","sourceRoot":"","sources":["../../src/bin/claude-memory.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,yCAAoC;AACpC,kDAA6D;AAC7D,oDAA6E;AAC7E,4CAAsF;AACtF,oDAAgF;AAChF,oDAAwF;AACxF,8DAAsD;AACtD,gEAAiE;AACjE,8CAA6F;AAC7F,2DAAmF;AACnF,2DAA4D;AAC5D,+DAAgE;AAChE,6DAAoG;AACpG,yDAA0D;AAC1D,uDAAsE;AACtE,qDAA0D;AAC1D,qDAAsD;AACtD,kDAAgD;AAChD,wDAA0C;AAC1C,4CAA8B;AAC9B,4CAA8B;AAC9B,gDAAkC;AAElC,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;IACnD,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,KAAK,EAAE,EAAE;IACxC,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;IAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,eAAe,CAAC;KACrB,WAAW,CAAC,8DAA8D,CAAC;KAC3E,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,gFAAgF;AAEhF,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,4DAA4D,CAAC;KACzE,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,yEAAyE,CAAC,CAAC;IAEvF,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;QAClC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,CAAC,CAAS,EAAmB,EAAE,CACzC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IAEpD,IAAI,CAAC;QACH,IAAI,GAAG,GAAG,EAAE,CAAC;QAEb,8DAA8D;QAC9D,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC;QACnD,IAAI,SAAS,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;gBACjD,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC3B,MAAM,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBACrD,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;oBACxE,IAAI,KAAK;wBAAE,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;gBACrE,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,gCAAgC;YAClC,CAAC;QACH,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,IAAI,SAAS,CAAC;QACxC,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,WAAW,CAAC;YAC7D,OAAO,CAAC,GAAG,CAAC,sBAAsB,MAAM,KAAK,CAAC,CAAC;YAC/C,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,gCAAgC,CAAC,CAAC;YAChE,IAAI,WAAW,CAAC,WAAW,EAAE,KAAK,GAAG,EAAE,CAAC;gBACtC,GAAG,GAAG,WAAW,CAAC;YACpB,CAAC;QACH,CAAC;QAED,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,UAAU,GAAG,MAAM,GAAG,CAC1B,6IAA6I,CAC9I,CAAC;YAEF,IAAI,UAAU,CAAC,WAAW,EAAE,KAAK,GAAG,EAAE,CAAC;gBACrC,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;gBACjD,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;gBACpD,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;gBACjE,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;gBAC7B,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;gBAClD,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;gBACnC,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;YAClD,CAAC;YAED,GAAG,GAAG,MAAM,GAAG,CAAC,wCAAwC,CAAC,CAAC;QAC5D,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;YACzD,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QACvC,MAAM,EAAE,GAAG,MAAM,IAAA,0BAAc,EAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,OAAO,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAC;YACrF,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAE5B,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;QAClD,MAAM,EAAE,GAAG,MAAM,IAAA,mBAAO,EAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QAErC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACnC,MAAM,IAAA,0BAAa,EAAC,EAAE,CAAC,CAAC;QAExB,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;QAClE,MAAM,IAAA,oCAAuB,EAAC,EAAE,CAAC,CAAC;QAElC,cAAc;QACd,IAAA,sBAAU,EAAC;YACT,SAAS,EAAE,GAAG,CAAC,IAAI,EAAE;YACrB,WAAW,EAAE,KAAK;YAClB,eAAe,EAAE,EAAE;SACpB,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAA,yBAAa,GAAE,IAAI,CAAC,CAAC;QAEpD,4BAA4B;QAC5B,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;QAC/C,YAAY,EAAE,CAAC;QAEf,qBAAqB;QACrB,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QACzC,gBAAgB,EAAE,CAAC;QAEnB,qBAAqB;QACrB,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;QACxC,gBAAgB,EAAE,CAAC;QAEnB,iCAAiC;QACjC,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;QAC1D,2BAA2B,EAAE,CAAC;QAE9B,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;QAClE,OAAO,CAAC,GAAG,CAAC,oEAAoE,CAAC,CAAC;QAClF,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;QACrE,OAAO,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC;QAC9E,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;QAE/D,MAAM,IAAA,sBAAU,GAAE,CAAC;IACrB,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,+EAA+E;AAE/E,OAAO;KACJ,OAAO,CAAC,cAAc,CAAC;KACvB,WAAW,CAAC,8CAA8C,CAAC;KAC3D,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,IAAA,oBAAO,GAAE,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,0CAA0C;IAC5C,CAAC;YAAS,CAAC;QACT,MAAM,IAAA,sBAAU,GAAE,CAAC;IACrB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,mBAAmB,CAAC;KAC5B,WAAW,CAAC,mDAAmD,CAAC;KAChE,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC;KACvC,MAAM,CAAC,KAAK,EAAE,MAAe,EAAE,EAAE;IAChC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,kBAAkB;QAClB,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9C,CAAC;IACD,IAAI,CAAC,MAAM;QAAE,OAAO;IAEpB,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,IAAA,4BAAU,EAAC,MAAM,CAAC,CAAC;QAC3C,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,gBAAgB;IAClB,CAAC;YAAS,CAAC;QACT,MAAM,IAAA,sBAAU,GAAE,CAAC;IACrB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,oBAAoB,CAAC;KAC7B,WAAW,CAAC,oDAAoD,CAAC;KACjE,QAAQ,CAAC,UAAU,EAAE,0BAA0B,CAAC;KAChD,MAAM,CAAC,KAAK,EAAE,MAAe,EAAE,EAAE;IAChC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9C,CAAC;IACD,IAAI,CAAC,MAAM;QAAE,OAAO;IAEpB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,IAAA,uCAAoB,EAAC,MAAM,CAAC,CAAC;QAClD,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,gBAAgB;IAClB,CAAC;YAAS,CAAC;QACT,MAAM,IAAA,sBAAU,GAAE,CAAC;IACrB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,WAAW,CAAC;KACpB,WAAW,CAAC,0DAA0D,CAAC;KACvE,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,IAAI,CAAC;QACH,sCAAsC;QACtC,MAAM,KAAK,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QACjD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC;QAEvC,MAAM,MAAM,GAAG,MAAM,IAAA,oBAAU,EAAC;YAC9B,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,EAAE;YACvC,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,EAAE;YACvC,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,EAAE;YACjC,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE;YAC7B,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,IAAI,CAAC;YAC5C,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,IAAI,CAAC;YAClD,eAAe,EAAE,IAAI,CAAC,eAAe,IAAI,EAAE;SAC5C,CAAC,CAAC;QAEH,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,gBAAgB;IAClB,CAAC;YAAS,CAAC;QACT,MAAM,IAAA,sBAAU,GAAE,CAAC;IACrB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,gFAAgF;AAEhF,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,qCAAqC,CAAC;KAClD,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,IAAI,CAAC;QACH,MAAM,IAAA,mBAAO,GAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,MAAM,IAAA,yBAAa,GAAE,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC9E,CAAC;YAAS,CAAC;QACT,MAAM,IAAA,sBAAU,GAAE,CAAC;IACrB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,4BAA4B,CAAC;KACzC,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,IAAI,CAAC;QACH,MAAM,IAAA,mBAAO,GAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,MAAM,IAAA,iCAAqB,GAAE,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC9E,CAAC;YAAS,CAAC;QACT,MAAM,IAAA,sBAAU,GAAE,CAAC;IACrB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,uBAAuB,CAAC;KACpC,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,IAAI,CAAC;QACH,MAAM,IAAA,mBAAO,GAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,MAAM,IAAA,2BAAc,GAAE,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC9E,CAAC;YAAS,CAAC;QACT,MAAM,IAAA,sBAAU,GAAE,CAAC;IACrB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,kCAAkC,CAAC;KAC/C,QAAQ,CAAC,SAAS,EAAE,qBAAqB,CAAC;KAC1C,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,EAAE;IAC9B,IAAI,CAAC;QACH,MAAM,IAAA,mBAAO,GAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,MAAM,IAAA,yBAAa,EAAC,KAAK,CAAC,CAAC,CAAC;IAC1C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC9E,CAAC;YAAS,CAAC;QACT,MAAM,IAAA,sBAAU,GAAE,CAAC;IACrB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,uCAAuC,CAAC;KACpD,QAAQ,CAAC,cAAc,EAAE,kBAAkB,CAAC;KAC5C,MAAM,CAAC,aAAa,EAAE,+CAA+C,CAAC;KACtE,MAAM,CAAC,KAAK,EAAE,YAAsB,EAAE,IAA6B,EAAE,EAAE;IACtE,IAAI,CAAC;QACH,MAAM,IAAA,mBAAO,GAAE,CAAC;QAChB,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,MAAM,IAAA,6BAAe,EAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAC9D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC9E,CAAC;YAAS,CAAC;QACT,MAAM,IAAA,sBAAU,GAAE,CAAC;IACrB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,wBAAwB,CAAC;KACrC,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,IAAI,CAAC;QACH,MAAM,IAAA,mBAAO,GAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,MAAM,IAAA,uBAAY,GAAE,CAAC,CAAC;IACpC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC9E,CAAC;YAAS,CAAC;QACT,MAAM,IAAA,sBAAU,GAAE,CAAC;IACrB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,aAAa,CAAC;KAC1B,MAAM,CAAC,QAAQ,EAAE,gCAAgC,CAAC;KAClD,MAAM,CAAC,aAAa,EAAE,4BAA4B,CAAC;KACnD,MAAM,CAAC,KAAK,EAAE,IAA6C,EAAE,EAAE;IAC9D,IAAI,CAAC;QACH,MAAM,IAAA,mBAAO,GAAE,CAAC;QAChB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,MAAM,IAAA,sBAAY,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QAClD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,MAAM,IAAA,qBAAW,GAAE,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC9E,CAAC;YAAS,CAAC;QACT,MAAM,IAAA,sBAAU,GAAE,CAAC;IACrB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,cAAc,CAAC;KAC3B,MAAM,CAAC,WAAW,EAAE,2BAA2B,CAAC;KAChD,MAAM,CAAC,OAAO,EAAE,mCAAmC,CAAC;KACpD,MAAM,CAAC,KAAK,EAAE,IAA0C,EAAE,EAAE;IAC3D,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;QAClC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,IAAA,mBAAO,GAAE,CAAC;QAEhB,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACb,MAAM,MAAM,GAAG,MAAM,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,EAAE,CACnD,EAAE,CAAC,QAAQ,CACT,oEAAoE,EACpE,OAAO,CACR,CACF,CAAC;YACF,IAAI,MAAM,CAAC,WAAW,EAAE,KAAK,GAAG,EAAE,CAAC;gBACjC,MAAM,IAAA,2BAAc,GAAE,CAAC;gBACvB,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;YACtD,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;aAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACxB,MAAM,MAAM,GAAG,MAAM,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,EAAE,CACnD,EAAE,CAAC,QAAQ,CACT,iDAAiD,EACjD,OAAO,CACR,CACF,CAAC;YACF,IAAI,MAAM,CAAC,WAAW,EAAE,KAAK,GAAG,EAAE,CAAC;gBACjC,MAAM,KAAK,GAAG,MAAM,IAAA,+BAAkB,GAAE,CAAC;gBACzC,OAAO,CAAC,GAAG,CAAC,YAAY,KAAK,kCAAkC,CAAC,CAAC;YACnE,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC9E,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAA,sBAAU,GAAE,CAAC;IACrB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,gDAAgD,CAAC;KAC7D,MAAM,CAAC,GAAG,EAAE;IACX,OAAO,CAAC,GAAG,CAAC,eAAe,IAAA,4BAAY,GAAE,EAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAA,8BAAc,GAAE,EAAE,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAA,8BAAc,GAAE,EAAE,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,WAAW,IAAA,yBAAa,GAAE,EAAE,CAAC,CAAC;AAC5C,CAAC,CAAC,CAAC;AAEL,+EAA+E;AAE/E,SAAS,YAAY;IACnB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;IACrD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;IAE3D,kCAAkC;IAClC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,4CAA4C;IAC5C,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAChC,MAAM,UAAU,GAAG,YAAY,GAAG,SAAS,CAAC;QAC5C,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;IAC5C,CAAC;IAED,0BAA0B;IAC1B,IAAI,QAAQ,GAAQ,EAAE,CAAC;IACvB,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAChC,IAAI,CAAC;YACH,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;QAChE,CAAC;QAAC,MAAM,CAAC;YACP,QAAQ,GAAG,EAAE,CAAC;QAChB,CAAC;IACH,CAAC;IAED,6BAA6B;IAC7B,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACpB,QAAQ,CAAC,KAAK,GAAG,EAAE,CAAC;IACtB,CAAC;IAED,mBAAmB;IACnB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QACjC,QAAQ,CAAC,KAAK,CAAC,YAAY,GAAG,EAAE,CAAC;IACnC,CAAC;IACD,MAAM,WAAW,GAAG;QAClB,OAAO,EAAE,EAAE;QACX,KAAK,EAAE;YACL;gBACE,IAAI,EAAE,SAAkB;gBACxB,OAAO,EAAE,4BAA4B;aACtC;SACF;KACF,CAAC;IACF,kCAAkC;IAClC,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CACjD,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,EAAO,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC,CAC9E,CAAC;IACF,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAChD,CAAC;IAED,sBAAsB;IACtB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QAC/B,QAAQ,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC;IACjC,CAAC;IACD,MAAM,WAAW,GAAG;QAClB,OAAO,EAAE,EAAE;QACX,KAAK,EAAE;YACL;gBACE,IAAI,EAAE,SAAkB;gBACxB,OAAO,EAAE,iCAAiC;aAC3C;SACF;KACF,CAAC;IACF,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAC/C,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,EAAO,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC,CAC9E,CAAC;IACF,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC9C,CAAC;IAED,uBAAuB;IACvB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QAChC,QAAQ,CAAC,KAAK,CAAC,WAAW,GAAG,EAAE,CAAC;IAClC,CAAC;IACD,MAAM,YAAY,GAAG;QACnB,OAAO,EAAE,EAAE;QACX,KAAK,EAAE;YACL;gBACE,IAAI,EAAE,SAAkB;gBACxB,OAAO,EAAE,kCAAkC;aAC5C;SACF;KACF,CAAC;IACF,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CACjD,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,EAAO,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC,CAC9E,CAAC;IACF,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAChD,CAAC;IAED,gBAAgB;IAChB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACzB,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC;IAC3B,CAAC;IACD,MAAM,QAAQ,GAAG;QACf,OAAO,EAAE,EAAE;QACX,KAAK,EAAE;YACL;gBACE,IAAI,EAAE,SAAkB;gBACxB,OAAO,EAAE,yBAAyB;aACnC;SACF;KACF,CAAC;IACF,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CACtC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,EAAO,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC,CAC9E,CAAC;IACF,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC;IAED,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAC3E,OAAO,CAAC,GAAG,CAAC,sBAAsB,YAAY,EAAE,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,gBAAgB;IACvB,4DAA4D;IAC5D,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;IAE/D,2CAA2C;IAC3C,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,cAAc,CAAC,CAAC;IAC/D,IAAI,UAAU,GAAQ,EAAE,CAAC;IACzB,IAAI,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QAClC,IAAI,CAAC;YACH,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC;QACpE,CAAC;QAAC,MAAM,CAAC;YACP,UAAU,GAAG,EAAE,CAAC;QAClB,CAAC;IACH,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;QAC3B,UAAU,CAAC,UAAU,GAAG,EAAE,CAAC;IAC7B,CAAC;IAED,kCAAkC;IAClC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QAC5C,UAAU,CAAC,UAAU,CAAC,eAAe,CAAC,GAAG;YACvC,OAAO,EAAE,MAAM;YACf,IAAI,EAAE,CAAC,aAAa,CAAC;SACtB,CAAC;QACF,EAAE,CAAC,aAAa,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAC/E,OAAO,CAAC,GAAG,CAAC,4BAA4B,cAAc,EAAE,CAAC,CAAC;IAC5D,CAAC;SAAM,CAAC;QACN,qCAAqC;QACrC,UAAU,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC;QAC9D,EAAE,CAAC,aAAa,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAC/E,OAAO,CAAC,GAAG,CAAC,8BAA8B,cAAc,EAAE,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB;IACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACxE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAElD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;CAkBtB,CAAC;IAEA,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,2BAA2B,SAAS,EAAE,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,2BAA2B;IAClC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;IACrE,MAAM,MAAM,GAAG,4BAA4B,CAAC;IAE5C,sCAAsC;IACtC,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACxD,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC;YACpE,OAAO;QACT,CAAC;IACH,CAAC;IAED,MAAM,YAAY,GAAG;;;EAGrB,MAAM;;;;;;;;;;;;;;;;;;;;CAoBP,CAAC;IAEA,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAChC,0BAA0B;QAC1B,EAAE,CAAC,cAAc,CAAC,YAAY,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;SAAM,CAAC;QACN,kBAAkB;QAClB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;QACrD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9B,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/C,CAAC;QACD,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,yBAAyB,YAAY,EAAE,EAAE,OAAO,CAAC,CAAC;IACnF,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,gCAAgC,YAAY,EAAE,CAAC,CAAC;AAC9D,CAAC;AAED,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=mcp-server.d.ts.map