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

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 (127) hide show
  1. package/assets/skills/memax-memory/SKILL.md +154 -0
  2. package/dist/commands/agent-sessions.d.ts +32 -0
  3. package/dist/commands/agent-sessions.d.ts.map +1 -0
  4. package/dist/commands/agent-sessions.js +761 -0
  5. package/dist/commands/agent-sessions.js.map +1 -0
  6. package/dist/commands/agent-sessions.test.d.ts +2 -0
  7. package/dist/commands/agent-sessions.test.d.ts.map +1 -0
  8. package/dist/commands/agent-sessions.test.js +82 -0
  9. package/dist/commands/agent-sessions.test.js.map +1 -0
  10. package/dist/commands/auth.d.ts +1 -0
  11. package/dist/commands/auth.d.ts.map +1 -1
  12. package/dist/commands/auth.js +14 -7
  13. package/dist/commands/auth.js.map +1 -1
  14. package/dist/commands/capture.d.ts +17 -0
  15. package/dist/commands/capture.d.ts.map +1 -0
  16. package/dist/commands/capture.js +61 -0
  17. package/dist/commands/capture.js.map +1 -0
  18. package/dist/commands/delete.d.ts +1 -1
  19. package/dist/commands/delete.d.ts.map +1 -1
  20. package/dist/commands/delete.js +22 -5
  21. package/dist/commands/delete.js.map +1 -1
  22. package/dist/commands/hub.d.ts +4 -0
  23. package/dist/commands/hub.d.ts.map +1 -0
  24. package/dist/commands/hub.js +53 -0
  25. package/dist/commands/hub.js.map +1 -0
  26. package/dist/commands/list.d.ts +2 -1
  27. package/dist/commands/list.d.ts.map +1 -1
  28. package/dist/commands/list.js +35 -8
  29. package/dist/commands/list.js.map +1 -1
  30. package/dist/commands/login.d.ts.map +1 -1
  31. package/dist/commands/login.js +27 -5
  32. package/dist/commands/login.js.map +1 -1
  33. package/dist/commands/mcp.d.ts.map +1 -1
  34. package/dist/commands/mcp.js +275 -42
  35. package/dist/commands/mcp.js.map +1 -1
  36. package/dist/commands/push.d.ts +4 -1
  37. package/dist/commands/push.d.ts.map +1 -1
  38. package/dist/commands/push.js +51 -11
  39. package/dist/commands/push.js.map +1 -1
  40. package/dist/commands/recall.d.ts +7 -0
  41. package/dist/commands/recall.d.ts.map +1 -1
  42. package/dist/commands/recall.js +164 -39
  43. package/dist/commands/recall.js.map +1 -1
  44. package/dist/commands/recall.test.d.ts +2 -0
  45. package/dist/commands/recall.test.d.ts.map +1 -0
  46. package/dist/commands/recall.test.js +31 -0
  47. package/dist/commands/recall.test.js.map +1 -0
  48. package/dist/commands/setup-hooks.d.ts +12 -0
  49. package/dist/commands/setup-hooks.d.ts.map +1 -0
  50. package/dist/commands/setup-hooks.js +193 -0
  51. package/dist/commands/setup-hooks.js.map +1 -0
  52. package/dist/commands/setup-instructions.d.ts +21 -0
  53. package/dist/commands/setup-instructions.d.ts.map +1 -0
  54. package/dist/commands/setup-instructions.js +172 -0
  55. package/dist/commands/setup-instructions.js.map +1 -0
  56. package/dist/commands/setup-mcp.d.ts +14 -0
  57. package/dist/commands/setup-mcp.d.ts.map +1 -0
  58. package/dist/commands/setup-mcp.js +278 -0
  59. package/dist/commands/setup-mcp.js.map +1 -0
  60. package/dist/commands/setup-types.d.ts +20 -0
  61. package/dist/commands/setup-types.d.ts.map +1 -0
  62. package/dist/commands/setup-types.js +60 -0
  63. package/dist/commands/setup-types.js.map +1 -0
  64. package/dist/commands/setup.d.ts +6 -1
  65. package/dist/commands/setup.d.ts.map +1 -1
  66. package/dist/commands/setup.js +146 -306
  67. package/dist/commands/setup.js.map +1 -1
  68. package/dist/commands/show.d.ts.map +1 -1
  69. package/dist/commands/show.js +10 -13
  70. package/dist/commands/show.js.map +1 -1
  71. package/dist/commands/sync.d.ts +33 -2
  72. package/dist/commands/sync.d.ts.map +1 -1
  73. package/dist/commands/sync.js +1066 -119
  74. package/dist/commands/sync.js.map +1 -1
  75. package/dist/commands/sync.test.d.ts +2 -0
  76. package/dist/commands/sync.test.d.ts.map +1 -0
  77. package/dist/commands/sync.test.js +130 -0
  78. package/dist/commands/sync.test.js.map +1 -0
  79. package/dist/commands/topic.d.ts +20 -0
  80. package/dist/commands/topic.d.ts.map +1 -0
  81. package/dist/commands/topic.js +87 -0
  82. package/dist/commands/topic.js.map +1 -0
  83. package/dist/index.js +131 -14
  84. package/dist/index.js.map +1 -1
  85. package/dist/lib/client.d.ts +7 -0
  86. package/dist/lib/client.d.ts.map +1 -0
  87. package/dist/lib/client.js +72 -0
  88. package/dist/lib/client.js.map +1 -0
  89. package/dist/lib/config.d.ts +42 -0
  90. package/dist/lib/config.d.ts.map +1 -1
  91. package/dist/lib/config.js +64 -1
  92. package/dist/lib/config.js.map +1 -1
  93. package/dist/lib/project-context.d.ts +50 -0
  94. package/dist/lib/project-context.d.ts.map +1 -0
  95. package/dist/lib/project-context.js +201 -0
  96. package/dist/lib/project-context.js.map +1 -0
  97. package/dist/lib/project-context.test.d.ts +2 -0
  98. package/dist/lib/project-context.test.d.ts.map +1 -0
  99. package/dist/lib/project-context.test.js +75 -0
  100. package/dist/lib/project-context.test.js.map +1 -0
  101. package/dist/lib/prompt.d.ts +7 -0
  102. package/dist/lib/prompt.d.ts.map +1 -0
  103. package/dist/lib/prompt.js +41 -0
  104. package/dist/lib/prompt.js.map +1 -0
  105. package/package.json +17 -13
  106. package/.vscode/mcp.json +0 -8
  107. package/dist/lib/api.d.ts +0 -4
  108. package/dist/lib/api.d.ts.map +0 -1
  109. package/dist/lib/api.js +0 -95
  110. package/dist/lib/api.js.map +0 -1
  111. package/src/commands/auth.ts +0 -92
  112. package/src/commands/config.ts +0 -27
  113. package/src/commands/delete.ts +0 -20
  114. package/src/commands/hook.ts +0 -243
  115. package/src/commands/list.ts +0 -38
  116. package/src/commands/login.ts +0 -162
  117. package/src/commands/mcp.ts +0 -357
  118. package/src/commands/push.ts +0 -82
  119. package/src/commands/recall.ts +0 -163
  120. package/src/commands/setup.ts +0 -682
  121. package/src/commands/show.ts +0 -35
  122. package/src/commands/sync.ts +0 -403
  123. package/src/index.ts +0 -192
  124. package/src/lib/api.ts +0 -110
  125. package/src/lib/config.ts +0 -61
  126. package/src/lib/credentials.ts +0 -42
  127. package/tsconfig.json +0 -9
@@ -0,0 +1,172 @@
1
+ import chalk from "chalk";
2
+ import { readFileSync, writeFileSync, mkdirSync, existsSync, readdirSync, rmSync, } from "node:fs";
3
+ import { join, dirname } from "node:path";
4
+ import { fileURLToPath } from "node:url";
5
+ import { homedir } from "node:os";
6
+ import { createInterface } from "node:readline";
7
+ // --- Instruction block ---
8
+ export const MEMAX_INSTRUCTION_BLOCK = `
9
+ <!-- memax:start -->
10
+ ## Memax — Persistent Memory
11
+
12
+ You have access to Memax, a persistent cloud knowledge hub shared across all your AI agents.
13
+ Use it proactively — don't wait for the user to ask.
14
+
15
+ **At session start:** Use memax_recall to check for relevant context about the current project or task.
16
+ **During work:** When you discover important decisions, architecture details, debugging solutions,
17
+ or useful context — use memax_push to save them for future sessions.
18
+ **At session end:** Summarize key decisions, learnings, or context worth remembering and push them.
19
+
20
+ **What to remember:** Architecture decisions, API conventions, deployment processes, debugging
21
+ solutions, team preferences, project-specific knowledge. If you'd want to know it in a future
22
+ session, push it now.
23
+
24
+ **What NOT to remember:** Ephemeral task details, file contents (they're in git), obvious things.
25
+
26
+ Available tools: memax_recall (search), memax_push (save), memax_get (read full note),
27
+ memax_search (browse), memax_forget (delete outdated memories).
28
+ <!-- memax:end -->
29
+ `.trim();
30
+ // --- Instruction injection ---
31
+ export function injectInstructions(filePath) {
32
+ mkdirSync(dirname(filePath), { recursive: true });
33
+ let content = "";
34
+ if (existsSync(filePath)) {
35
+ content = readFileSync(filePath, "utf-8");
36
+ }
37
+ // Remove existing memax block (idempotent)
38
+ content = content.replace(/\n?<!-- memax:start -->[\s\S]*?<!-- memax:end -->\n?/, "");
39
+ // Append the block
40
+ content = content.trimEnd() + "\n\n" + MEMAX_INSTRUCTION_BLOCK + "\n";
41
+ writeFileSync(filePath, content);
42
+ }
43
+ export function removeInstructions(filePath) {
44
+ if (!existsSync(filePath))
45
+ return false;
46
+ const content = readFileSync(filePath, "utf-8");
47
+ const cleaned = content.replace(/\n?<!-- memax:start -->[\s\S]*?<!-- memax:end -->\n?/, "");
48
+ if (cleaned === content)
49
+ return false;
50
+ writeFileSync(filePath, cleaned.trimEnd() + "\n");
51
+ return true;
52
+ }
53
+ // --- Skills ---
54
+ /** Resolve the agent's global skills directory, or null if skills aren't supported. */
55
+ export function agentSkillsDir(agent) {
56
+ const home = homedir();
57
+ switch (agent.id) {
58
+ case "claude-code":
59
+ return join(home, ".claude", "skills");
60
+ case "codex":
61
+ return join(home, ".codex", "skills");
62
+ default:
63
+ return null;
64
+ }
65
+ }
66
+ /**
67
+ * Merge bundled skills from assets/skills/ into the agent's global skills directory.
68
+ * When a file already exists and differs, prompt the user to choose.
69
+ * Returns the number of skills installed/updated.
70
+ */
71
+ export async function installSkills(agent) {
72
+ const targetRoot = agentSkillsDir(agent);
73
+ if (!targetRoot)
74
+ return 0;
75
+ const sourceRoot = getSkillsAssetDir();
76
+ if (!existsSync(sourceRoot))
77
+ return 0;
78
+ const skillNames = readdirSync(sourceRoot, { withFileTypes: true })
79
+ .filter((d) => d.isDirectory())
80
+ .map((d) => d.name);
81
+ if (skillNames.length === 0)
82
+ return 0;
83
+ let installed = 0;
84
+ for (const skillName of skillNames) {
85
+ const srcDir = join(sourceRoot, skillName);
86
+ const dstDir = join(targetRoot, skillName);
87
+ const files = collectFiles(srcDir);
88
+ let skillChanged = false;
89
+ for (const relPath of files) {
90
+ const srcPath = join(srcDir, relPath);
91
+ const dstPath = join(dstDir, relPath);
92
+ const srcContent = readFileSync(srcPath, "utf-8");
93
+ if (existsSync(dstPath)) {
94
+ const dstContent = readFileSync(dstPath, "utf-8");
95
+ if (srcContent === dstContent)
96
+ continue; // identical — skip
97
+ // Conflict: ask the user
98
+ const action = await promptSkillConflict(agent.name, skillName, relPath);
99
+ if (action === "skip")
100
+ continue;
101
+ // action === "replace" → fall through to write
102
+ }
103
+ mkdirSync(dirname(dstPath), { recursive: true });
104
+ writeFileSync(dstPath, srcContent);
105
+ skillChanged = true;
106
+ }
107
+ if (skillChanged || !existsSync(dstDir)) {
108
+ // Ensure directory exists even if all files were skipped
109
+ mkdirSync(dstDir, { recursive: true });
110
+ installed++;
111
+ }
112
+ }
113
+ return installed;
114
+ }
115
+ /** Remove installed memax skills from the agent's global skills directory. */
116
+ export function removeSkills(agent) {
117
+ const targetRoot = agentSkillsDir(agent);
118
+ if (!targetRoot)
119
+ return false;
120
+ const sourceRoot = getSkillsAssetDir();
121
+ if (!existsSync(sourceRoot))
122
+ return false;
123
+ const skillNames = readdirSync(sourceRoot, { withFileTypes: true })
124
+ .filter((d) => d.isDirectory())
125
+ .map((d) => d.name);
126
+ let removed = false;
127
+ for (const skillName of skillNames) {
128
+ const skillDir = join(targetRoot, skillName);
129
+ if (existsSync(skillDir)) {
130
+ rmSync(skillDir, { recursive: true });
131
+ removed = true;
132
+ }
133
+ }
134
+ return removed;
135
+ }
136
+ /** Recursively collect all relative file paths under a directory. */
137
+ export function collectFiles(dir, base) {
138
+ const result = [];
139
+ for (const entry of readdirSync(dir, { withFileTypes: true })) {
140
+ const rel = base ? join(base, entry.name) : entry.name;
141
+ if (entry.isDirectory()) {
142
+ result.push(...collectFiles(join(dir, entry.name), rel));
143
+ }
144
+ else {
145
+ result.push(rel);
146
+ }
147
+ }
148
+ return result;
149
+ }
150
+ /** Ask the user what to do when a skill file conflicts. */
151
+ export function promptSkillConflict(agentName, skillName, filePath) {
152
+ return new Promise((resolve) => {
153
+ const rl = createInterface({
154
+ input: process.stdin,
155
+ output: process.stdout,
156
+ });
157
+ rl.question(chalk.yellow(` ${agentName}: skill "${skillName}/${filePath}" already exists and differs.\n` +
158
+ ` Replace with Memax version? [y/N] `), (answer) => {
159
+ rl.close();
160
+ resolve(answer.trim().toLowerCase() === "y" ? "replace" : "skip");
161
+ });
162
+ });
163
+ }
164
+ /** Resolve the bundled skills asset directory (assets/skills/). */
165
+ export function getSkillsAssetDir() {
166
+ // __dir is dist/commands/ (built) or src/commands/ (dev)
167
+ // Package root is two levels up: dist/commands/../../ = packages/cli/
168
+ const __dir = dirname(fileURLToPath(import.meta.url));
169
+ const pkgRoot = join(__dir, "..", "..");
170
+ return join(pkgRoot, "assets", "skills");
171
+ }
172
+ //# sourceMappingURL=setup-instructions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-instructions.js","sourceRoot":"","sources":["../../src/commands/setup-instructions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { type AgentDef, type MemaxBin } from "./setup-types.js";
2
+ export declare function getApiUrl(): string;
3
+ export declare function ensureApiKey(hubId?: string): Promise<string | undefined>;
4
+ export declare function setupMcpRemote(agent: AgentDef, apiKey: string): void;
5
+ export declare function setupMcp(agent: AgentDef, bin: MemaxBin): void;
6
+ export declare function setupMcpClaudeCode(bin: MemaxBin): void;
7
+ export declare function setupMcpToml(agent: AgentDef, bin: MemaxBin): void;
8
+ export declare function printMcpConfigs(local: boolean): Promise<void>;
9
+ export declare function removeMcpJson(agent: AgentDef): boolean;
10
+ export declare function removeMcpToml(agent: AgentDef): boolean;
11
+ export declare function getNestedKey(obj: Record<string, unknown>, key: string): Record<string, unknown> | undefined;
12
+ export declare function setNestedKey(obj: Record<string, unknown>, key: string, value: unknown): void;
13
+ export declare function deleteNestedKey(obj: Record<string, unknown>, key: string): void;
14
+ //# sourceMappingURL=setup-mcp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-mcp.d.ts","sourceRoot":"","sources":["../../src/commands/setup-mcp.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,QAAQ,EAGd,MAAM,kBAAkB,CAAC;AAI1B,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED,wBAAsB,YAAY,CAChC,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAa7B;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAiEpE;AAID,wBAAgB,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,GAAG,IAAI,CAmC7D;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI,CAsBtD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,GAAG,IAAI,CAsBjE;AAED,wBAAsB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CA6FnE;AAID,wBAAgB,aAAa,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAkBtD;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAetD;AAID,wBAAgB,YAAY,CAC1B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,GAAG,EAAE,MAAM,GACV,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAQrC;AAED,wBAAgB,YAAY,CAC1B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,OAAO,GACb,IAAI,CAUN;AAED,wBAAgB,eAAe,CAC7B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,GAAG,EAAE,MAAM,GACV,IAAI,CAQN"}
@@ -0,0 +1,278 @@
1
+ import chalk from "chalk";
2
+ import { readFileSync, writeFileSync, mkdirSync, existsSync } from "node:fs";
3
+ import { dirname } from "node:path";
4
+ import { execSync } from "node:child_process";
5
+ import { loadConfig } from "../lib/config.js";
6
+ import { commandExists, resolveMemaxBin, } from "./setup-types.js";
7
+ // --- Remote MCP setup ---
8
+ export function getApiUrl() {
9
+ return loadConfig().api_url;
10
+ }
11
+ export async function ensureApiKey(hubId) {
12
+ try {
13
+ const { getClient } = await import("../lib/client.js");
14
+ const name = hubId ? `mcp-setup-hub-${hubId.slice(0, 8)}` : "mcp-setup";
15
+ const result = await getClient().auth.createKey({
16
+ name,
17
+ hubId: hubId || undefined,
18
+ expiresInDays: 0,
19
+ });
20
+ return result.key;
21
+ }
22
+ catch {
23
+ return undefined;
24
+ }
25
+ }
26
+ export function setupMcpRemote(agent, apiKey) {
27
+ const mcpUrl = `${getApiUrl()}/mcp`;
28
+ // Claude Code uses its own CLI
29
+ if (agent.id === "claude-code") {
30
+ if (!commandExists("claude")) {
31
+ throw new Error("claude CLI not found in PATH");
32
+ }
33
+ try {
34
+ execSync("claude mcp remove memax", { stdio: "pipe" });
35
+ }
36
+ catch {
37
+ // Not installed yet
38
+ }
39
+ // Claude Code HTTP transport
40
+ execSync(`claude mcp add memax --transport http ${mcpUrl} --header "Authorization: Bearer ${apiKey}"`, { stdio: "pipe" });
41
+ return;
42
+ }
43
+ // Codex TOML
44
+ if (agent.format === "toml") {
45
+ mkdirSync(dirname(agent.configPath), { recursive: true });
46
+ let content = "";
47
+ if (existsSync(agent.configPath)) {
48
+ content = readFileSync(agent.configPath, "utf-8");
49
+ }
50
+ content = content.replace(/\[mcp_servers\.memax(?:\.\w+)*\][\s\S]*?(?=\n\[|$)/g, "");
51
+ content = content.trim();
52
+ if (content)
53
+ content += "\n\n";
54
+ content += `[mcp_servers.memax]\ntype = "url"\nurl = "${mcpUrl}"\n\n[mcp_servers.memax.headers]\nAuthorization = "Bearer ${apiKey}"\n`;
55
+ writeFileSync(agent.configPath, content);
56
+ return;
57
+ }
58
+ // JSON-based agents
59
+ mkdirSync(dirname(agent.configPath), { recursive: true });
60
+ let config = {};
61
+ if (existsSync(agent.configPath)) {
62
+ try {
63
+ config = JSON.parse(readFileSync(agent.configPath, "utf-8"));
64
+ }
65
+ catch {
66
+ // Start fresh
67
+ }
68
+ }
69
+ const servers = (getNestedKey(config, agent.mcpKey) ?? {});
70
+ // Copilot CLI uses "http", others use "url" or no type field
71
+ const mcpType = agent.id === "copilot" ? "http" : "url";
72
+ servers.memax = {
73
+ type: mcpType,
74
+ url: mcpUrl,
75
+ headers: {
76
+ Authorization: `Bearer ${apiKey}`,
77
+ },
78
+ };
79
+ setNestedKey(config, agent.mcpKey, servers);
80
+ writeFileSync(agent.configPath, JSON.stringify(config, null, 2) + "\n");
81
+ }
82
+ // --- Local MCP setup per agent ---
83
+ export function setupMcp(agent, bin) {
84
+ // Claude Code has its own CLI for MCP management
85
+ if (agent.id === "claude-code") {
86
+ setupMcpClaudeCode(bin);
87
+ return;
88
+ }
89
+ mkdirSync(dirname(agent.configPath), { recursive: true });
90
+ if (agent.format === "toml") {
91
+ setupMcpToml(agent, bin);
92
+ return;
93
+ }
94
+ // JSON-based agents
95
+ let config = {};
96
+ if (existsSync(agent.configPath)) {
97
+ try {
98
+ config = JSON.parse(readFileSync(agent.configPath, "utf-8"));
99
+ }
100
+ catch {
101
+ // Start fresh
102
+ }
103
+ }
104
+ const servers = (getNestedKey(config, agent.mcpKey) ?? {});
105
+ servers.memax = {
106
+ command: bin.command,
107
+ args: [...bin.args, "mcp", "serve", "--agent", agent.id],
108
+ };
109
+ setNestedKey(config, agent.mcpKey, servers);
110
+ writeFileSync(agent.configPath, JSON.stringify(config, null, 2) + "\n");
111
+ }
112
+ export function setupMcpClaudeCode(bin) {
113
+ // Claude Code uses its own CLI for MCP — settings.json mcpServers is ignored
114
+ if (!commandExists("claude")) {
115
+ throw new Error("claude CLI not found in PATH");
116
+ }
117
+ // Remove existing first (idempotent)
118
+ try {
119
+ execSync("claude mcp remove memax", { stdio: "pipe" });
120
+ }
121
+ catch {
122
+ // Not installed yet — fine
123
+ }
124
+ // claude mcp add <name> -- <command> [args...]
125
+ const allArgs = [...bin.args, "mcp", "serve", "--agent", "claude-code"];
126
+ const cmd = `claude mcp add memax -- ${bin.command} ${allArgs.join(" ")}`;
127
+ try {
128
+ execSync(cmd, { stdio: "pipe" });
129
+ }
130
+ catch (err) {
131
+ throw new Error(`claude mcp add failed: ${err.message}`);
132
+ }
133
+ }
134
+ export function setupMcpToml(agent, bin) {
135
+ // Codex uses TOML — append or update the memax section
136
+ let content = "";
137
+ if (existsSync(agent.configPath)) {
138
+ content = readFileSync(agent.configPath, "utf-8");
139
+ }
140
+ // Remove existing memax section if present
141
+ content = content.replace(/\[mcp_servers\.memax(?:\.\w+)*\][\s\S]*?(?=\n\[|$)/g, "");
142
+ const args = [...bin.args, "mcp", "serve", "--agent", agent.id]
143
+ .map((a) => `"${a}"`)
144
+ .join(", ");
145
+ content = content.trim();
146
+ if (content)
147
+ content += "\n\n";
148
+ content += `[mcp_servers.memax]\ncommand = "${bin.command}"\nargs = [${args}]\n`;
149
+ writeFileSync(agent.configPath, content);
150
+ }
151
+ export async function printMcpConfigs(local) {
152
+ const apiUrl = getApiUrl();
153
+ console.log(chalk.bold("\n Memax MCP Configuration\n"));
154
+ if (local) {
155
+ const bin = resolveMemaxBin();
156
+ const cmd = bin ? bin.command : "memax";
157
+ const args = bin ? [...bin.args, "mcp", "serve"] : ["mcp", "serve"];
158
+ console.log(chalk.gray(" Mode: local (stdio)\n"));
159
+ console.log(chalk.white(" For most agents (Claude Code, Cursor, Gemini, etc.):\n"));
160
+ console.log(JSON.stringify({
161
+ mcpServers: {
162
+ memax: { command: cmd, args },
163
+ },
164
+ }, null, 2)
165
+ .split("\n")
166
+ .map((l) => " " + l)
167
+ .join("\n"));
168
+ }
169
+ else {
170
+ let apiKey;
171
+ try {
172
+ apiKey = await ensureApiKey();
173
+ }
174
+ catch {
175
+ // Not logged in
176
+ }
177
+ const keyDisplay = apiKey ?? "mxk_your_api_key_here";
178
+ const mcpUrl = `${apiUrl}/mcp`;
179
+ console.log(chalk.gray(" Mode: remote server (recommended)\n"));
180
+ console.log(chalk.white(" For Claude Code:\n"));
181
+ console.log(chalk.gray(` claude mcp add memax --transport http ${mcpUrl} --header "Authorization: Bearer ${keyDisplay}"`));
182
+ console.log(chalk.white("\n For Cursor, Copilot, Gemini, Windsurf:\n"));
183
+ console.log(JSON.stringify({
184
+ mcpServers: {
185
+ memax: {
186
+ type: "url",
187
+ url: mcpUrl,
188
+ headers: {
189
+ Authorization: `Bearer ${keyDisplay}`,
190
+ },
191
+ },
192
+ },
193
+ }, null, 2)
194
+ .split("\n")
195
+ .map((l) => " " + l)
196
+ .join("\n"));
197
+ console.log(chalk.white("\n For Codex CLI (~/.codex/config.toml):\n"));
198
+ console.log(chalk.gray(` [mcp_servers.memax]`));
199
+ console.log(chalk.gray(` type = "url"`));
200
+ console.log(chalk.gray(` url = "${mcpUrl}"`));
201
+ console.log(chalk.gray(`\n [mcp_servers.memax.headers]`));
202
+ console.log(chalk.gray(` Authorization = "Bearer ${keyDisplay}"`));
203
+ if (apiKey) {
204
+ console.log(chalk.yellow("\n API key created: mcp-setup"));
205
+ console.log(chalk.gray(" Manage keys: memax auth list-keys"));
206
+ }
207
+ else {
208
+ console.log(chalk.yellow("\n Not logged in — replace mxk_your_api_key_here with a real key."));
209
+ console.log(chalk.gray(" Run: memax login && memax auth create-key --name mcp"));
210
+ }
211
+ }
212
+ console.log();
213
+ }
214
+ // --- Teardown helpers ---
215
+ export function removeMcpJson(agent) {
216
+ if (!existsSync(agent.configPath))
217
+ return false;
218
+ try {
219
+ const config = JSON.parse(readFileSync(agent.configPath, "utf-8"));
220
+ const servers = getNestedKey(config, agent.mcpKey);
221
+ if (!servers?.memax)
222
+ return false;
223
+ delete servers.memax;
224
+ if (Object.keys(servers).length === 0)
225
+ deleteNestedKey(config, agent.mcpKey);
226
+ writeFileSync(agent.configPath, JSON.stringify(config, null, 2) + "\n");
227
+ console.log(chalk.gray(` Removed MCP from ${agent.name}`));
228
+ return true;
229
+ }
230
+ catch {
231
+ return false;
232
+ }
233
+ }
234
+ export function removeMcpToml(agent) {
235
+ if (!existsSync(agent.configPath))
236
+ return false;
237
+ let content = readFileSync(agent.configPath, "utf-8");
238
+ const before = content;
239
+ content = content.replace(/\[mcp_servers\.memax(?:\.\w+)*\][\s\S]*?(?=\n\[|$)/g, "");
240
+ if (content === before)
241
+ return false;
242
+ writeFileSync(agent.configPath, content.trim() + "\n");
243
+ console.log(chalk.gray(` Removed MCP from ${agent.name}`));
244
+ return true;
245
+ }
246
+ // --- Nested key helpers for configs like openclaw's "mcp.servers" ---
247
+ export function getNestedKey(obj, key) {
248
+ const parts = key.split(".");
249
+ let current = obj;
250
+ for (const part of parts) {
251
+ if (current == null || typeof current !== "object")
252
+ return undefined;
253
+ current = current[part];
254
+ }
255
+ return current;
256
+ }
257
+ export function setNestedKey(obj, key, value) {
258
+ const parts = key.split(".");
259
+ let current = obj;
260
+ for (let i = 0; i < parts.length - 1; i++) {
261
+ if (!(parts[i] in current) || typeof current[parts[i]] !== "object") {
262
+ current[parts[i]] = {};
263
+ }
264
+ current = current[parts[i]];
265
+ }
266
+ current[parts[parts.length - 1]] = value;
267
+ }
268
+ export function deleteNestedKey(obj, key) {
269
+ const parts = key.split(".");
270
+ let current = obj;
271
+ for (let i = 0; i < parts.length - 1; i++) {
272
+ if (!(parts[i] in current) || typeof current[parts[i]] !== "object")
273
+ return;
274
+ current = current[parts[i]];
275
+ }
276
+ delete current[parts[parts.length - 1]];
277
+ }
278
+ //# sourceMappingURL=setup-mcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-mcp.js","sourceRoot":"","sources":["../../src/commands/setup-mcp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ export interface AgentDef {
2
+ name: string;
3
+ id: string;
4
+ configPath: string;
5
+ format: "json-mcpServers" | "json-servers" | "toml";
6
+ /** Key under which MCP servers live */
7
+ mcpKey: string;
8
+ hasHooks: boolean;
9
+ /** Global instruction file path (e.g. ~/.claude/CLAUDE.md) — null if none */
10
+ globalInstructionFile: string | null;
11
+ detect: () => boolean;
12
+ }
13
+ export interface MemaxBin {
14
+ command: string;
15
+ args: string[];
16
+ shell: string;
17
+ }
18
+ export declare function commandExists(cmd: string): boolean;
19
+ export declare function resolveMemaxBin(): MemaxBin | null;
20
+ //# sourceMappingURL=setup-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-types.d.ts","sourceRoot":"","sources":["../../src/commands/setup-types.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,iBAAiB,GAAG,cAAc,GAAG,MAAM,CAAC;IACpD,uCAAuC;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,6EAA6E;IAC7E,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,MAAM,EAAE,MAAM,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAID,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAQlD;AAED,wBAAgB,eAAe,IAAI,QAAQ,GAAG,IAAI,CA4CjD"}
@@ -0,0 +1,60 @@
1
+ import { existsSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { platform } from "node:os";
4
+ import { execSync } from "node:child_process";
5
+ // --- Shared utilities ---
6
+ export function commandExists(cmd) {
7
+ try {
8
+ const which = platform() === "win32" ? "where" : "which";
9
+ execSync(`${which} ${cmd}`, { stdio: "pipe" });
10
+ return true;
11
+ }
12
+ catch {
13
+ return false;
14
+ }
15
+ }
16
+ export function resolveMemaxBin() {
17
+ // 1. Global install — use absolute path so agents find it without shell PATH
18
+ if (commandExists("memax")) {
19
+ try {
20
+ const which = platform() === "win32" ? "where memax" : "which memax";
21
+ const absPath = execSync(which, { encoding: "utf-8", stdio: "pipe" })
22
+ .trim()
23
+ .split("\n")[0];
24
+ if (absPath) {
25
+ return { command: absPath, args: [], shell: absPath };
26
+ }
27
+ }
28
+ catch {
29
+ // fall through
30
+ }
31
+ return { command: "memax", args: [], shell: "memax" };
32
+ }
33
+ // 2. Local repo build (faster than npx, always up-to-date during dev)
34
+ const localBuild = join(process.cwd(), "packages", "cli", "dist", "index.js");
35
+ if (existsSync(localBuild)) {
36
+ return {
37
+ command: "node",
38
+ args: [localBuild],
39
+ shell: `node ${localBuild}`,
40
+ };
41
+ }
42
+ // 3. npx as last resort (slow startup — agents may timeout on first run)
43
+ try {
44
+ execSync("npx --yes memax-cli --version", {
45
+ encoding: "utf-8",
46
+ timeout: 15000,
47
+ stdio: "pipe",
48
+ });
49
+ return {
50
+ command: "npx",
51
+ args: ["-y", "memax-cli"],
52
+ shell: "npx -y memax-cli",
53
+ };
54
+ }
55
+ catch {
56
+ // npx failed
57
+ }
58
+ return null;
59
+ }
60
+ //# sourceMappingURL=setup-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-types.js","sourceRoot":"","sources":["../../src/commands/setup-types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAW,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAW,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAuB9C,2BAA2B;AAE3B,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,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,MAAM,UAAU,eAAe;IAC7B,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"}
@@ -1,13 +1,18 @@
1
+ import { type AgentDef, type MemaxBin } from "./setup-types.js";
2
+ export type { AgentDef, MemaxBin };
1
3
  interface SetupOptions {
2
4
  mcp?: boolean;
3
5
  hooks?: boolean;
6
+ instructions?: boolean;
4
7
  all?: boolean;
8
+ local?: boolean;
9
+ print?: boolean;
5
10
  only?: string;
6
11
  skip?: string;
12
+ hub?: string;
7
13
  }
8
14
  export declare function setupCommand(options: SetupOptions): Promise<void>;
9
15
  export declare function teardownCommand(options: {
10
16
  only?: string;
11
17
  }): Promise<void>;
12
- export {};
13
18
  //# sourceMappingURL=setup.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAwGA,UAAU,YAAY;IACpB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAkIvE;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,OAAO,CAAC,IAAI,CAAC,CAsDhB"}
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,QAAQ,EAGd,MAAM,kBAAkB,CAAC;AAkB1B,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AAgHnC,UAAU,YAAY;IACpB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA+NvE;AAID,wBAAsB,eAAe,CAAC,OAAO,EAAE;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,OAAO,CAAC,IAAI,CAAC,CAwEhB"}