memax-cli 0.1.0-alpha.2 → 0.1.0-alpha.3

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.
@@ -0,0 +1,531 @@
1
+ import chalk from "chalk";
2
+ import { readFileSync, writeFileSync, mkdirSync, existsSync, chmodSync, } from "node:fs";
3
+ import { join, dirname } from "node:path";
4
+ import { homedir, platform } from "node:os";
5
+ import { execSync } from "node:child_process";
6
+ function getAgents() {
7
+ const home = homedir();
8
+ const isWin = platform() === "win32";
9
+ return [
10
+ {
11
+ name: "Claude Code",
12
+ id: "claude-code",
13
+ configPath: join(home, ".claude", "settings.json"),
14
+ format: "json-mcpServers",
15
+ mcpKey: "mcpServers",
16
+ hasHooks: true,
17
+ detect: () => existsSync(join(home, ".claude")) || commandExists("claude"),
18
+ },
19
+ {
20
+ name: "Cursor",
21
+ id: "cursor",
22
+ configPath: join(home, ".cursor", "mcp.json"),
23
+ format: "json-mcpServers",
24
+ mcpKey: "mcpServers",
25
+ hasHooks: false,
26
+ detect: () => existsSync(join(home, ".cursor")) || commandExists("cursor"),
27
+ },
28
+ {
29
+ name: "Windsurf",
30
+ id: "windsurf",
31
+ configPath: join(home, ".codeium", "windsurf", "mcp_config.json"),
32
+ format: "json-mcpServers",
33
+ mcpKey: "mcpServers",
34
+ hasHooks: false,
35
+ detect: () => existsSync(join(home, ".codeium", "windsurf")) ||
36
+ commandExists("windsurf"),
37
+ },
38
+ {
39
+ name: "Gemini CLI",
40
+ id: "gemini",
41
+ configPath: join(home, ".gemini", "settings.json"),
42
+ format: "json-mcpServers",
43
+ mcpKey: "mcpServers",
44
+ hasHooks: true,
45
+ detect: () => existsSync(join(home, ".gemini")) || commandExists("gemini"),
46
+ },
47
+ {
48
+ name: "GitHub Copilot CLI",
49
+ id: "copilot",
50
+ configPath: join(home, ".copilot", "mcp-config.json"),
51
+ format: "json-mcpServers",
52
+ mcpKey: "mcpServers",
53
+ hasHooks: false,
54
+ detect: () => existsSync(join(home, ".copilot")) || commandExists("gh copilot"),
55
+ },
56
+ {
57
+ name: "Copilot (VS Code)",
58
+ id: "vscode",
59
+ configPath: join(".vscode", "mcp.json"), // project-level
60
+ format: "json-servers",
61
+ mcpKey: "servers",
62
+ hasHooks: false,
63
+ detect: () => existsSync(".vscode") || commandExists("code"),
64
+ },
65
+ {
66
+ name: "Codex CLI",
67
+ id: "codex",
68
+ configPath: join(home, ".codex", "config.toml"),
69
+ format: "toml",
70
+ mcpKey: "mcp_servers",
71
+ hasHooks: false,
72
+ detect: () => existsSync(join(home, ".codex")) || commandExists("codex"),
73
+ },
74
+ ];
75
+ }
76
+ export async function setupCommand(options) {
77
+ const enableMcp = options.all || options.mcp;
78
+ const enableHooks = options.all || options.hooks;
79
+ if (!enableMcp && !enableHooks) {
80
+ printUsage();
81
+ return;
82
+ }
83
+ // Resolve memax binary
84
+ const memaxBin = resolveMemaxBin();
85
+ if (!memaxBin) {
86
+ console.error(chalk.red("\n Could not find memax binary.\n Install globally: npm install -g memax-cli@alpha\n"));
87
+ process.exit(1);
88
+ }
89
+ // Filter agents
90
+ const allAgents = getAgents();
91
+ const onlySet = options.only
92
+ ? new Set(options.only.split(",").map((s) => s.trim().toLowerCase()))
93
+ : null;
94
+ const skipSet = options.skip
95
+ ? new Set(options.skip.split(",").map((s) => s.trim().toLowerCase()))
96
+ : new Set();
97
+ const agents = allAgents.filter((a) => {
98
+ if (skipSet.has(a.id))
99
+ return false;
100
+ if (onlySet)
101
+ return onlySet.has(a.id);
102
+ return a.detect();
103
+ });
104
+ if (agents.length === 0) {
105
+ console.log(chalk.yellow("\n No supported AI agents detected.\n"));
106
+ console.log(chalk.gray(" Supported agents:"));
107
+ for (const a of allAgents) {
108
+ console.log(chalk.gray(` • ${a.name} (--only ${a.id})`));
109
+ }
110
+ console.log(chalk.gray("\n Use --only to force setup for a specific agent.\n"));
111
+ return;
112
+ }
113
+ console.log(chalk.bold("\n Memax Setup\n"));
114
+ const results = [];
115
+ for (const agent of agents) {
116
+ const changes = [];
117
+ // MCP setup
118
+ if (enableMcp) {
119
+ try {
120
+ setupMcp(agent, memaxBin);
121
+ changes.push("MCP server");
122
+ }
123
+ catch (err) {
124
+ console.log(chalk.red(` ✗ ${agent.name}: MCP setup failed — ${err.message}`));
125
+ }
126
+ }
127
+ // Hook setup (only for agents that support it)
128
+ if (enableHooks && agent.hasHooks) {
129
+ try {
130
+ setupHooks(agent, memaxBin);
131
+ changes.push("Context injection hook");
132
+ }
133
+ catch (err) {
134
+ console.log(chalk.red(` ✗ ${agent.name}: Hook setup failed — ${err.message}`));
135
+ }
136
+ }
137
+ if (changes.length > 0) {
138
+ results.push({ agent: agent.name, changes });
139
+ }
140
+ }
141
+ // Print summary
142
+ if (results.length === 0) {
143
+ console.log(chalk.yellow(" No changes made.\n"));
144
+ return;
145
+ }
146
+ console.log(chalk.green(" Configured:\n"));
147
+ for (const r of results) {
148
+ console.log(chalk.white(` ${r.agent}`));
149
+ for (const c of r.changes) {
150
+ console.log(chalk.gray(` ✓ ${c}`));
151
+ }
152
+ }
153
+ console.log(chalk.gray("\n MCP tools available to all configured agents:"));
154
+ console.log(chalk.gray(" • memax_recall — semantic search your knowledge"));
155
+ console.log(chalk.gray(" • memax_push — save knowledge from sessions"));
156
+ console.log(chalk.gray(" • memax_get — read full note by ID"));
157
+ console.log(chalk.gray(" • memax_search — browse notes by category"));
158
+ if (enableHooks) {
159
+ const hookAgents = results.filter((r) => r.changes.includes("Context injection hook"));
160
+ if (hookAgents.length > 0) {
161
+ console.log(chalk.gray(`\n Hooks installed for: ${hookAgents.map((r) => r.agent).join(", ")}`));
162
+ console.log(chalk.gray(" Every prompt gets relevant context injected automatically."));
163
+ }
164
+ }
165
+ console.log(chalk.gray("\n Restart your agents for changes to take effect.\n"));
166
+ }
167
+ export async function teardownCommand(options) {
168
+ const allAgents = getAgents();
169
+ const onlySet = options.only
170
+ ? new Set(options.only.split(",").map((s) => s.trim().toLowerCase()))
171
+ : null;
172
+ const agents = onlySet
173
+ ? allAgents.filter((a) => onlySet.has(a.id))
174
+ : allAgents;
175
+ let removed = false;
176
+ for (const agent of agents) {
177
+ try {
178
+ // Claude Code uses its own CLI
179
+ if (agent.id === "claude-code") {
180
+ if (commandExists("claude")) {
181
+ try {
182
+ execSync("claude mcp remove memax", { stdio: "pipe" });
183
+ console.log(chalk.gray(` Removed MCP from ${agent.name}`));
184
+ removed = true;
185
+ }
186
+ catch {
187
+ // Not installed
188
+ }
189
+ }
190
+ if (agent.hasHooks && existsSync(agent.configPath)) {
191
+ if (removeHooks(agent))
192
+ removed = true;
193
+ }
194
+ continue;
195
+ }
196
+ if (!existsSync(agent.configPath))
197
+ continue;
198
+ if (agent.format === "toml") {
199
+ if (removeMcpToml(agent))
200
+ removed = true;
201
+ }
202
+ else {
203
+ if (removeMcpJson(agent))
204
+ removed = true;
205
+ }
206
+ if (agent.hasHooks && removeHooks(agent))
207
+ removed = true;
208
+ }
209
+ catch {
210
+ // Skip agents we can't clean up
211
+ }
212
+ }
213
+ if (!removed) {
214
+ console.log(chalk.yellow("\n No Memax integrations found to remove.\n"));
215
+ return;
216
+ }
217
+ console.log(chalk.green("\n Memax integrations removed.\n Restart your agents for changes to take effect.\n"));
218
+ }
219
+ // --- MCP setup per agent ---
220
+ function setupMcp(agent, bin) {
221
+ // Claude Code has its own CLI for MCP management
222
+ if (agent.id === "claude-code") {
223
+ setupMcpClaudeCode(bin);
224
+ return;
225
+ }
226
+ mkdirSync(dirname(agent.configPath), { recursive: true });
227
+ if (agent.format === "toml") {
228
+ setupMcpToml(agent, bin);
229
+ return;
230
+ }
231
+ // JSON-based agents
232
+ let config = {};
233
+ if (existsSync(agent.configPath)) {
234
+ try {
235
+ config = JSON.parse(readFileSync(agent.configPath, "utf-8"));
236
+ }
237
+ catch {
238
+ // Start fresh
239
+ }
240
+ }
241
+ const servers = (config[agent.mcpKey] ?? {});
242
+ servers.memax = {
243
+ command: bin.command,
244
+ args: [...bin.args, "mcp", "serve"],
245
+ };
246
+ config[agent.mcpKey] = servers;
247
+ writeFileSync(agent.configPath, JSON.stringify(config, null, 2) + "\n");
248
+ }
249
+ function setupMcpClaudeCode(bin) {
250
+ // Claude Code uses its own CLI for MCP — settings.json mcpServers is ignored
251
+ if (!commandExists("claude")) {
252
+ throw new Error("claude CLI not found in PATH");
253
+ }
254
+ // Remove existing first (idempotent)
255
+ try {
256
+ execSync("claude mcp remove memax", { stdio: "pipe" });
257
+ }
258
+ catch {
259
+ // Not installed yet — fine
260
+ }
261
+ // claude mcp add <name> -- <command> [args...]
262
+ const allArgs = [...bin.args, "mcp", "serve"];
263
+ const cmd = `claude mcp add memax -- ${bin.command} ${allArgs.join(" ")}`;
264
+ try {
265
+ execSync(cmd, { stdio: "pipe" });
266
+ }
267
+ catch (err) {
268
+ throw new Error(`claude mcp add failed: ${err.message}`);
269
+ }
270
+ }
271
+ function setupMcpToml(agent, bin) {
272
+ // Codex uses TOML — append or update the memax section
273
+ let content = "";
274
+ if (existsSync(agent.configPath)) {
275
+ content = readFileSync(agent.configPath, "utf-8");
276
+ }
277
+ // Remove existing memax section if present
278
+ content = content.replace(/\[mcp_servers\.memax\][\s\S]*?(?=\n\[|$)/, "");
279
+ const args = [...bin.args, "mcp", "serve"].map((a) => `"${a}"`).join(", ");
280
+ content = content.trim();
281
+ if (content)
282
+ content += "\n\n";
283
+ content += `[mcp_servers.memax]\ncommand = "${bin.command}"\nargs = [${args}]\n`;
284
+ writeFileSync(agent.configPath, content);
285
+ }
286
+ // --- Hook setup ---
287
+ function setupHooks(agent, bin) {
288
+ if (agent.id === "claude-code") {
289
+ setupClaudeCodeHooks(agent, bin);
290
+ }
291
+ else if (agent.id === "gemini") {
292
+ setupGeminiHooks(agent, bin);
293
+ }
294
+ }
295
+ function setupClaudeCodeHooks(agent, bin) {
296
+ const hookScript = writeHookScript(bin);
297
+ let config = {};
298
+ if (existsSync(agent.configPath)) {
299
+ try {
300
+ config = JSON.parse(readFileSync(agent.configPath, "utf-8"));
301
+ }
302
+ catch {
303
+ // Start fresh
304
+ }
305
+ }
306
+ const hooks = (config.hooks ?? {});
307
+ // Remove existing memax hooks
308
+ if (hooks["UserPromptSubmit"]) {
309
+ hooks["UserPromptSubmit"] = hooks["UserPromptSubmit"].filter((h) => !h.hooks?.some((hh) => hh.command?.includes("memax")));
310
+ }
311
+ hooks["UserPromptSubmit"] = [
312
+ ...(hooks["UserPromptSubmit"] ?? []),
313
+ {
314
+ matcher: "",
315
+ hooks: [{ type: "command", command: hookScript, timeout: 30 }],
316
+ },
317
+ ];
318
+ config.hooks = hooks;
319
+ writeFileSync(agent.configPath, JSON.stringify(config, null, 2) + "\n");
320
+ }
321
+ function setupGeminiHooks(agent, bin) {
322
+ const hookScript = writeHookScript(bin);
323
+ let config = {};
324
+ if (existsSync(agent.configPath)) {
325
+ try {
326
+ config = JSON.parse(readFileSync(agent.configPath, "utf-8"));
327
+ }
328
+ catch {
329
+ // Start fresh
330
+ }
331
+ }
332
+ const hooks = (config.hooks ?? {});
333
+ // Remove existing memax hooks from both old ("Startup") and correct event
334
+ for (const event of ["Startup", "BeforeAgent"]) {
335
+ if (hooks[event]) {
336
+ hooks[event] = hooks[event].filter((h) => !h.hooks?.some((hh) => hh.command?.includes("memax")));
337
+ if (hooks[event].length === 0)
338
+ delete hooks[event];
339
+ }
340
+ }
341
+ // BeforeAgent fires after user submits a prompt — equivalent to Claude Code's PrePromptSubmit
342
+ hooks["BeforeAgent"] = [
343
+ ...(hooks["BeforeAgent"] ?? []),
344
+ {
345
+ matcher: "",
346
+ hooks: [{ type: "command", command: hookScript, timeout: 30 }],
347
+ },
348
+ ];
349
+ config.hooks = hooks;
350
+ writeFileSync(agent.configPath, JSON.stringify(config, null, 2) + "\n");
351
+ }
352
+ // --- Teardown helpers ---
353
+ function removeMcpJson(agent) {
354
+ if (!existsSync(agent.configPath))
355
+ return false;
356
+ try {
357
+ const config = JSON.parse(readFileSync(agent.configPath, "utf-8"));
358
+ const servers = config[agent.mcpKey];
359
+ if (!servers?.memax)
360
+ return false;
361
+ delete servers.memax;
362
+ if (Object.keys(servers).length === 0)
363
+ delete config[agent.mcpKey];
364
+ writeFileSync(agent.configPath, JSON.stringify(config, null, 2) + "\n");
365
+ console.log(chalk.gray(` Removed MCP from ${agent.name}`));
366
+ return true;
367
+ }
368
+ catch {
369
+ return false;
370
+ }
371
+ }
372
+ function removeMcpToml(agent) {
373
+ if (!existsSync(agent.configPath))
374
+ return false;
375
+ let content = readFileSync(agent.configPath, "utf-8");
376
+ const before = content;
377
+ content = content.replace(/\[mcp_servers\.memax\][\s\S]*?(?=\n\[|$)/, "");
378
+ if (content === before)
379
+ return false;
380
+ writeFileSync(agent.configPath, content.trim() + "\n");
381
+ console.log(chalk.gray(` Removed MCP from ${agent.name}`));
382
+ return true;
383
+ }
384
+ function removeHooks(agent) {
385
+ if (!existsSync(agent.configPath))
386
+ return false;
387
+ try {
388
+ const config = JSON.parse(readFileSync(agent.configPath, "utf-8"));
389
+ const hooks = config.hooks;
390
+ if (!hooks)
391
+ return false;
392
+ let removed = false;
393
+ for (const event of Object.keys(hooks)) {
394
+ const before = hooks[event].length;
395
+ hooks[event] = hooks[event].filter((h) => !h.command?.includes("memax") &&
396
+ !h.hooks?.some((hh) => hh.command?.includes("memax")));
397
+ if (hooks[event].length < before)
398
+ removed = true;
399
+ if (hooks[event].length === 0)
400
+ delete hooks[event];
401
+ }
402
+ if (Object.keys(hooks).length === 0)
403
+ delete config.hooks;
404
+ if (removed) {
405
+ writeFileSync(agent.configPath, JSON.stringify(config, null, 2) + "\n");
406
+ console.log(chalk.gray(` Removed hooks from ${agent.name}`));
407
+ }
408
+ return removed;
409
+ }
410
+ catch {
411
+ return false;
412
+ }
413
+ }
414
+ function resolveMemaxBin() {
415
+ // 1. Global install — use absolute path so agents find it without shell PATH
416
+ if (commandExists("memax")) {
417
+ try {
418
+ const which = platform() === "win32" ? "where memax" : "which memax";
419
+ const absPath = execSync(which, { encoding: "utf-8", stdio: "pipe" })
420
+ .trim()
421
+ .split("\n")[0];
422
+ if (absPath) {
423
+ return { command: absPath, args: [], shell: absPath };
424
+ }
425
+ }
426
+ catch {
427
+ // fall through
428
+ }
429
+ return { command: "memax", args: [], shell: "memax" };
430
+ }
431
+ // 2. Local repo build (faster than npx, always up-to-date during dev)
432
+ const localBuild = join(process.cwd(), "packages", "cli", "dist", "index.js");
433
+ if (existsSync(localBuild)) {
434
+ return {
435
+ command: "node",
436
+ args: [localBuild],
437
+ shell: `node ${localBuild}`,
438
+ };
439
+ }
440
+ // 3. npx as last resort (slow startup — agents may timeout on first run)
441
+ try {
442
+ execSync("npx --yes memax-cli --version", {
443
+ encoding: "utf-8",
444
+ timeout: 15000,
445
+ stdio: "pipe",
446
+ });
447
+ return {
448
+ command: "npx",
449
+ args: ["-y", "memax-cli"],
450
+ shell: "npx -y memax-cli",
451
+ };
452
+ }
453
+ catch {
454
+ // npx failed
455
+ }
456
+ return null;
457
+ }
458
+ function commandExists(cmd) {
459
+ try {
460
+ const which = platform() === "win32" ? "where" : "which";
461
+ execSync(`${which} ${cmd}`, { stdio: "pipe" });
462
+ return true;
463
+ }
464
+ catch {
465
+ return false;
466
+ }
467
+ }
468
+ function writeHookScript(bin) {
469
+ const hooksDir = join(homedir(), ".memax", "hooks");
470
+ mkdirSync(hooksDir, { recursive: true });
471
+ const isWindows = platform() === "win32";
472
+ const scriptName = isWindows ? "context-inject.cmd" : "context-inject.sh";
473
+ const scriptPath = join(hooksDir, scriptName);
474
+ if (isWindows) {
475
+ writeFileSync(scriptPath, WIN_HOOK.replace(/\$MEMAX/g, bin.shell));
476
+ }
477
+ else {
478
+ writeFileSync(scriptPath, UNIX_HOOK.replace(/\$MEMAX/g, bin.shell));
479
+ chmodSync(scriptPath, 0o755);
480
+ }
481
+ return scriptPath;
482
+ }
483
+ function printUsage() {
484
+ const agents = getAgents();
485
+ const detected = agents.filter((a) => a.detect());
486
+ console.log(chalk.bold("\n Memax Setup — Configure AI Agent Integrations\n"));
487
+ if (detected.length > 0) {
488
+ console.log(chalk.gray(" Detected agents:"));
489
+ for (const a of detected) {
490
+ const hookNote = a.hasHooks ? " (MCP + hooks)" : " (MCP)";
491
+ console.log(chalk.white(` • ${a.name}${hookNote}`));
492
+ }
493
+ console.log();
494
+ }
495
+ console.log(chalk.gray(" Usage:\n"));
496
+ console.log(chalk.gray(" memax setup --mcp MCP tools for all detected agents"));
497
+ console.log(chalk.gray(" memax setup --all MCP + hooks (where supported)"));
498
+ console.log(chalk.gray(" memax setup --mcp --only claude-code,cursor"));
499
+ console.log(chalk.gray(" memax setup --all --skip codex"));
500
+ console.log(chalk.gray(" memax teardown Remove all integrations\n"));
501
+ console.log(chalk.gray(" Supported agents:"));
502
+ for (const a of agents) {
503
+ const status = a.detect()
504
+ ? chalk.green("detected")
505
+ : chalk.gray("not found");
506
+ console.log(chalk.gray(` ${a.id.padEnd(14)} ${a.name.padEnd(20)} ${status}`));
507
+ }
508
+ console.log();
509
+ }
510
+ const UNIX_HOOK = `#!/bin/bash
511
+ # Memax context injection — installed by: memax setup --hooks
512
+ set -e
513
+ INPUT=$(cat)
514
+ PROMPT=$(echo "$INPUT" | jq -r '.prompt // empty')
515
+ CWD=$(echo "$INPUT" | jq -r '.cwd // empty')
516
+ if [ -z "$PROMPT" ] || [ \${#PROMPT} -lt 10 ]; then exit 0; fi
517
+ case "$PROMPT" in [Yy]|[Yy]es|[Nn]|[Nn]o|ok|OK|sure|Sure|thanks|Thanks|y|n) exit 0 ;; esac
518
+ if [ -n "$CWD" ]; then cd "$CWD" 2>/dev/null || true; fi
519
+ CONTEXT=$($MEMAX recall "$PROMPT" --hook --limit 5 --max-tokens 3000 2>/dev/null) || exit 0
520
+ if [ -n "$CONTEXT" ] && [ "$CONTEXT" != "<memax-context>" ]; then echo "$CONTEXT"; fi
521
+ exit 0
522
+ `;
523
+ const WIN_HOOK = `@echo off
524
+ REM Memax context injection — installed by: memax setup --hooks
525
+ set /p INPUT=
526
+ for /f "tokens=*" %%a in ('echo %INPUT% ^| jq -r ".prompt // empty"') do set PROMPT=%%a
527
+ if "%PROMPT%"=="" exit /b 0
528
+ $MEMAX recall "%PROMPT%" --hook --limit 5 --max-tokens 3000 2>nul
529
+ exit /b 0
530
+ `;
531
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACL,YAAY,EACZ,aAAa,EACb,SAAS,EACT,UAAU,EACV,SAAS,GACV,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAe9C,SAAS,SAAS;IAChB,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,MAAM,KAAK,GAAG,QAAQ,EAAE,KAAK,OAAO,CAAC;IAErC,OAAO;QACL;YACE,IAAI,EAAE,aAAa;YACnB,EAAE,EAAE,aAAa;YACjB,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,eAAe,CAAC;YAClD,MAAM,EAAE,iBAAiB;YACzB,MAAM,EAAE,YAAY;YACpB,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,GAAG,EAAE,CACX,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,IAAI,aAAa,CAAC,QAAQ,CAAC;SAC/D;QACD;YACE,IAAI,EAAE,QAAQ;YACd,EAAE,EAAE,QAAQ;YACZ,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC;YAC7C,MAAM,EAAE,iBAAiB;YACzB,MAAM,EAAE,YAAY;YACpB,QAAQ,EAAE,KAAK;YACf,MAAM,EAAE,GAAG,EAAE,CACX,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,IAAI,aAAa,CAAC,QAAQ,CAAC;SAC/D;QACD;YACE,IAAI,EAAE,UAAU;YAChB,EAAE,EAAE,UAAU;YACd,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,iBAAiB,CAAC;YACjE,MAAM,EAAE,iBAAiB;YACzB,MAAM,EAAE,YAAY;YACpB,QAAQ,EAAE,KAAK;YACf,MAAM,EAAE,GAAG,EAAE,CACX,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;gBAC9C,aAAa,CAAC,UAAU,CAAC;SAC5B;QACD;YACE,IAAI,EAAE,YAAY;YAClB,EAAE,EAAE,QAAQ;YACZ,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,eAAe,CAAC;YAClD,MAAM,EAAE,iBAAiB;YACzB,MAAM,EAAE,YAAY;YACpB,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,GAAG,EAAE,CACX,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,IAAI,aAAa,CAAC,QAAQ,CAAC;SAC/D;QACD;YACE,IAAI,EAAE,oBAAoB;YAC1B,EAAE,EAAE,SAAS;YACb,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,iBAAiB,CAAC;YACrD,MAAM,EAAE,iBAAiB;YACzB,MAAM,EAAE,YAAY;YACpB,QAAQ,EAAE,KAAK;YACf,MAAM,EAAE,GAAG,EAAE,CACX,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,IAAI,aAAa,CAAC,YAAY,CAAC;SACpE;QACD;YACE,IAAI,EAAE,mBAAmB;YACzB,EAAE,EAAE,QAAQ;YACZ,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE,gBAAgB;YACzD,MAAM,EAAE,cAAc;YACtB,MAAM,EAAE,SAAS;YACjB,QAAQ,EAAE,KAAK;YACf,MAAM,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC;SAC7D;QACD;YACE,IAAI,EAAE,WAAW;YACjB,EAAE,EAAE,OAAO;YACX,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,aAAa,CAAC;YAC/C,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,aAAa;YACrB,QAAQ,EAAE,KAAK;YACf,MAAM,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC;SACzE;KACF,CAAC;AACJ,CAAC;AAYD,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAqB;IACtD,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IAC7C,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC;IAEjD,IAAI,CAAC,SAAS,IAAI,CAAC,WAAW,EAAE,CAAC;QAC/B,UAAU,EAAE,CAAC;QACb,OAAO;IACT,CAAC;IAED,uBAAuB;IACvB,MAAM,QAAQ,GAAG,eAAe,EAAE,CAAC;IACnC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CACP,wFAAwF,CACzF,CACF,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,gBAAgB;IAChB,MAAM,SAAS,GAAG,SAAS,EAAE,CAAC;IAC9B,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI;QAC1B,CAAC,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;QACrE,CAAC,CAAC,IAAI,CAAC;IACT,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI;QAC1B,CAAC,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;QACrE,CAAC,CAAC,IAAI,GAAG,EAAU,CAAC;IAEtB,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QACpC,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAAE,OAAO,KAAK,CAAC;QACpC,IAAI,OAAO;YAAE,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACtC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,wCAAwC,CAAC,CAAC,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;QAC/C,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC9D,CAAC;QACD,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CAAC,uDAAuD,CAAC,CACpE,CAAC;QACF,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAE7C,MAAM,OAAO,GAA2C,EAAE,CAAC;IAE3D,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAa,EAAE,CAAC;QAE7B,YAAY;QACZ,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC;gBACH,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;gBAC1B,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC7B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CACP,OAAO,KAAK,CAAC,IAAI,wBAAyB,GAAa,CAAC,OAAO,EAAE,CAClE,CACF,CAAC;YACJ,CAAC;QACH,CAAC;QAED,+CAA+C;QAC/C,IAAI,WAAW,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YAClC,IAAI,CAAC;gBACH,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;gBAC5B,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;YACzC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CACP,OAAO,KAAK,CAAC,IAAI,yBAA0B,GAAa,CAAC,OAAO,EAAE,CACnE,CACF,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAED,gBAAgB;IAChB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC;QAClD,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAC5C,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACzC,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC,CAAC;IAC7E,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAClE,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC,CAAC;IAC7E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC,CAAC;IACrE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC,CAAC;IAEzE,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACtC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAC7C,CAAC;QACF,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CACR,4BAA4B,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACxE,CACF,CAAC;YACF,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CACR,8DAA8D,CAC/D,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CAAC,uDAAuD,CAAC,CACpE,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAErC;IACC,MAAM,SAAS,GAAG,SAAS,EAAE,CAAC;IAC9B,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI;QAC1B,CAAC,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;QACrE,CAAC,CAAC,IAAI,CAAC;IAET,MAAM,MAAM,GAAG,OAAO;QACpB,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC5C,CAAC,CAAC,SAAS,CAAC;IAEd,IAAI,OAAO,GAAG,KAAK,CAAC;IAEpB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,+BAA+B;YAC/B,IAAI,KAAK,CAAC,EAAE,KAAK,aAAa,EAAE,CAAC;gBAC/B,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC5B,IAAI,CAAC;wBACH,QAAQ,CAAC,yBAAyB,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;wBACvD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;wBAC5D,OAAO,GAAG,IAAI,CAAC;oBACjB,CAAC;oBAAC,MAAM,CAAC;wBACP,gBAAgB;oBAClB,CAAC;gBACH,CAAC;gBACD,IAAI,KAAK,CAAC,QAAQ,IAAI,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;oBACnD,IAAI,WAAW,CAAC,KAAK,CAAC;wBAAE,OAAO,GAAG,IAAI,CAAC;gBACzC,CAAC;gBACD,SAAS;YACX,CAAC;YAED,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC;gBAAE,SAAS;YAE5C,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC5B,IAAI,aAAa,CAAC,KAAK,CAAC;oBAAE,OAAO,GAAG,IAAI,CAAC;YAC3C,CAAC;iBAAM,CAAC;gBACN,IAAI,aAAa,CAAC,KAAK,CAAC;oBAAE,OAAO,GAAG,IAAI,CAAC;YAC3C,CAAC;YACD,IAAI,KAAK,CAAC,QAAQ,IAAI,WAAW,CAAC,KAAK,CAAC;gBAAE,OAAO,GAAG,IAAI,CAAC;QAC3D,CAAC;QAAC,MAAM,CAAC;YACP,gCAAgC;QAClC,CAAC;IACH,CAAC;IAED,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,8CAA8C,CAAC,CAAC,CAAC;QAC1E,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CACT,sFAAsF,CACvF,CACF,CAAC;AACJ,CAAC;AAED,8BAA8B;AAE9B,SAAS,QAAQ,CAAC,KAAe,EAAE,GAAa;IAC9C,iDAAiD;IACjD,IAAI,KAAK,CAAC,EAAE,KAAK,aAAa,EAAE,CAAC;QAC/B,kBAAkB,CAAC,GAAG,CAAC,CAAC;QACxB,OAAO;IACT,CAAC;IAED,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE1D,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC5B,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACzB,OAAO;IACT,CAAC;IAED,oBAAoB;IACpB,IAAI,MAAM,GAA4B,EAAE,CAAC;IACzC,IAAI,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;QACjC,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;QAC/D,CAAC;QAAC,MAAM,CAAC;YACP,cAAc;QAChB,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAA4B,CAAC;IACxE,OAAO,CAAC,KAAK,GAAG;QACd,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC;KACpC,CAAC;IACF,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC;IAE/B,aAAa,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAa;IACvC,6EAA6E;IAC7E,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,CAAC;IAED,qCAAqC;IACrC,IAAI,CAAC;QACH,QAAQ,CAAC,yBAAyB,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IACzD,CAAC;IAAC,MAAM,CAAC;QACP,2BAA2B;IAC7B,CAAC;IAED,+CAA+C;IAC/C,MAAM,OAAO,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAC9C,MAAM,GAAG,GAAG,2BAA2B,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IAE1E,IAAI,CAAC;QACH,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,0BAA2B,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IACtE,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,KAAe,EAAE,GAAa;IAClD,uDAAuD;IACvD,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;QACjC,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;IAED,2CAA2C;IAC3C,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,0CAA0C,EAAE,EAAE,CAAC,CAAC;IAE1E,MAAM,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE3E,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IACzB,IAAI,OAAO;QAAE,OAAO,IAAI,MAAM,CAAC;IAC/B,OAAO,IAAI,mCAAmC,GAAG,CAAC,OAAO,cAAc,IAAI,KAAK,CAAC;IAEjF,aAAa,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AAC3C,CAAC;AAED,qBAAqB;AAErB,SAAS,UAAU,CAAC,KAAe,EAAE,GAAa;IAChD,IAAI,KAAK,CAAC,EAAE,KAAK,aAAa,EAAE,CAAC;QAC/B,oBAAoB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACnC,CAAC;SAAM,IAAI,KAAK,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;QACjC,gBAAgB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC/B,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAe,EAAE,GAAa;IAC1D,MAAM,UAAU,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IAExC,IAAI,MAAM,GAA4B,EAAE,CAAC;IACzC,IAAI,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;QACjC,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;QAC/D,CAAC;QAAC,MAAM,CAAC;YACP,cAAc;QAChB,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAA8B,CAAC;IAEhE,8BAA8B;IAC9B,IAAI,KAAK,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAC9B,KAAK,CAAC,kBAAkB,CAAC,GACvB,KAAK,CAAC,kBAAkB,CAGzB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACzE,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,GAAG;QAC1B,GAAG,CAAE,KAAK,CAAC,kBAAkB,CAAe,IAAI,EAAE,CAAC;QACnD;YACE,OAAO,EAAE,EAAE;YACX,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;SAC/D;KACF,CAAC;IAEF,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,aAAa,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAe,EAAE,GAAa;IACtD,MAAM,UAAU,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IAExC,IAAI,MAAM,GAA4B,EAAE,CAAC;IACzC,IAAI,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;QACjC,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;QAC/D,CAAC;QAAC,MAAM,CAAC;YACP,cAAc;QAChB,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAA8B,CAAC;IAEhE,0EAA0E;IAC1E,KAAK,MAAM,KAAK,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,EAAE,CAAC;QAC/C,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YACjB,KAAK,CAAC,KAAK,CAAC,GACV,KAAK,CAAC,KAAK,CACZ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACvE,IAAK,KAAK,CAAC,KAAK,CAAe,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED,8FAA8F;IAC9F,KAAK,CAAC,aAAa,CAAC,GAAG;QACrB,GAAG,CAAE,KAAK,CAAC,aAAa,CAAe,IAAI,EAAE,CAAC;QAC9C;YACE,OAAO,EAAE,EAAE;YACX,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;SAC/D;KACF,CAAC;IAEF,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,aAAa,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AAC1E,CAAC;AAED,2BAA2B;AAE3B,SAAS,aAAa,CAAC,KAAe;IACpC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC;QAAE,OAAO,KAAK,CAAC;IAEhD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;QACnE,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAwC,CAAC;QAC5E,IAAI,CAAC,OAAO,EAAE,KAAK;YAAE,OAAO,KAAK,CAAC;QAElC,OAAO,OAAO,CAAC,KAAK,CAAC;QACrB,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAEnE,aAAa,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QACxE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC5D,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,KAAe;IACpC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC;QAAE,OAAO,KAAK,CAAC;IAEhD,IAAI,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,OAAO,CAAC;IACvB,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,0CAA0C,EAAE,EAAE,CAAC,CAAC;IAE1E,IAAI,OAAO,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC;IAErC,aAAa,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC5D,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,WAAW,CAAC,KAAe;IAClC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC;QAAE,OAAO,KAAK,CAAC;IAEhD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;QACnE,MAAM,KAAK,GAAG,MAAM,CAAC,KAA8C,CAAC;QACpE,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QAEzB,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACvC,MAAM,MAAM,GAAI,KAAK,CAAC,KAAK,CAAe,CAAC,MAAM,CAAC;YAClD,KAAK,CAAC,KAAK,CAAC,GACV,KAAK,CAAC,KAAK,CAIZ,CAAC,MAAM,CACN,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC;gBAC7B,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CACxD,CAAC;YACF,IAAK,KAAK,CAAC,KAAK,CAAe,CAAC,MAAM,GAAG,MAAM;gBAAE,OAAO,GAAG,IAAI,CAAC;YAChE,IAAK,KAAK,CAAC,KAAK,CAAe,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC;QACpE,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,MAAM,CAAC,KAAK,CAAC;QACzD,IAAI,OAAO,EAAE,CAAC;YACZ,aAAa,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YACxE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAChE,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAUD,SAAS,eAAe;IACtB,6EAA6E;IAC7E,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,QAAQ,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC;YACrE,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;iBAClE,IAAI,EAAE;iBACN,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAClB,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;YACxD,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,eAAe;QACjB,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IACxD,CAAC;IAED,sEAAsE;IACtE,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IAC9E,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,OAAO;YACL,OAAO,EAAE,MAAM;YACf,IAAI,EAAE,CAAC,UAAU,CAAC;YAClB,KAAK,EAAE,QAAQ,UAAU,EAAE;SAC5B,CAAC;IACJ,CAAC;IAED,yEAAyE;IACzE,IAAI,CAAC;QACH,QAAQ,CAAC,+BAA+B,EAAE;YACxC,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,MAAM;SACd,CAAC,CAAC;QACH,OAAO;YACL,OAAO,EAAE,KAAK;YACd,IAAI,EAAE,CAAC,IAAI,EAAE,WAAW,CAAC;YACzB,KAAK,EAAE,kBAAkB;SAC1B,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,aAAa;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,aAAa,CAAC,GAAW;IAChC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,QAAQ,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;QACzD,QAAQ,CAAC,GAAG,KAAK,IAAI,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,GAAa;IACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACpD,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEzC,MAAM,SAAS,GAAG,QAAQ,EAAE,KAAK,OAAO,CAAC;IACzC,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,mBAAmB,CAAC;IAC1E,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAE9C,IAAI,SAAS,EAAE,CAAC;QACd,aAAa,CAAC,UAAU,EAAE,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IACrE,CAAC;SAAM,CAAC;QACN,aAAa,CAAC,UAAU,EAAE,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QACpE,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,UAAU;IACjB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IAElD,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAClE,CAAC;IAEF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;QAC9C,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC;YAC1D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;IACtC,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CACR,kEAAkE,CACnE,CACF,CAAC;IACF,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAC3E,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC,CAAC;IAC3E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC,CAAC;IAC9D,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CAAC,0DAA0D,CAAC,CACvE,CAAC;IAEF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAC/C,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE;YACvB,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC;YACzB,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC5B,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,MAAM,EAAE,CAAC,CACpE,CAAC;IACJ,CAAC;IACD,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC;AAED,MAAM,SAAS,GAAG;;;;;;;;;;;;CAYjB,CAAC;AAEF,MAAM,QAAQ,GAAG;;;;;;;CAOhB,CAAC"}
package/dist/index.js CHANGED
@@ -1,5 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import { Command } from "commander";
3
+ import { readFileSync } from "node:fs";
4
+ import { fileURLToPath } from "node:url";
5
+ import { join, dirname } from "node:path";
3
6
  import { pushCommand } from "./commands/push.js";
4
7
  import { recallCommand } from "./commands/recall.js";
5
8
  import { listCommand } from "./commands/list.js";
@@ -11,11 +14,14 @@ import { configGetCommand, configSetCommand } from "./commands/config.js";
11
14
  import { loginCommand, logoutCommand, whoamiCommand, } from "./commands/login.js";
12
15
  import { createKeyCommand, listKeysCommand, revokeKeyCommand, } from "./commands/auth.js";
13
16
  import { registerMcpCommand } from "./commands/mcp.js";
17
+ import { setupCommand, teardownCommand } from "./commands/setup.js";
18
+ const __dirname = dirname(fileURLToPath(import.meta.url));
19
+ const pkg = JSON.parse(readFileSync(join(__dirname, "..", "package.json"), "utf-8"));
14
20
  const program = new Command();
15
21
  program
16
22
  .name("memax")
17
23
  .description("Universal context & memory hub for AI agents")
18
- .version("0.0.1");
24
+ .version(pkg.version);
19
25
  // --- Core commands ---
20
26
  program
21
27
  .command("push")
@@ -68,7 +74,21 @@ syncCmd
68
74
  .command("agents")
69
75
  .description("Sync native AI agent memory files to Memax")
70
76
  .action(syncAgentMemoryCommand);
71
- // --- Agent hooks ---
77
+ // --- Agent integration setup ---
78
+ program
79
+ .command("setup")
80
+ .description("Set up AI agent integrations (auto-detects installed agents)")
81
+ .option("--mcp", "Enable MCP server (agent tools)")
82
+ .option("--hooks", "Enable context injection hooks")
83
+ .option("--all", "Enable both MCP and hooks")
84
+ .option("--only <agents>", "Only configure these agents (comma-separated)")
85
+ .option("--skip <agents>", "Skip these agents (comma-separated)")
86
+ .action(setupCommand);
87
+ program
88
+ .command("teardown")
89
+ .description("Remove Memax integrations from agents")
90
+ .option("--only <agents>", "Only remove from these agents (comma-separated)")
91
+ .action(teardownCommand);
72
92
  program
73
93
  .command("hook <action> <agent>")
74
94
  .description("Manage agent hooks (install/uninstall claude-code)")
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "memax-cli",
3
- "version": "0.1.0-alpha.2",
3
+ "version": "0.1.0-alpha.3",
4
4
  "description": "CLI for Memax — universal context & memory hub for AI agents",
5
5
  "type": "module",
6
6
  "bin": {
@@ -40,5 +40,5 @@
40
40
  "claude-code",
41
41
  "agent"
42
42
  ],
43
- "license": "MIT"
43
+ "license": "UNLICENSED"
44
44
  }
@@ -71,8 +71,11 @@ export async function loginCommand(): Promise<void> {
71
71
  reject(new Error("No authorization code received from callback."));
72
72
  }
73
73
 
74
- // Close the server after handling the callback
75
- setTimeout(() => server.close(), 500);
74
+ // Close the server and force-kill connections so the process exits
75
+ setTimeout(() => {
76
+ server.close();
77
+ server.closeAllConnections();
78
+ }, 500);
76
79
  }
77
80
  });
78
81