memax-cli 0.1.0-alpha.9 → 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 (197) hide show
  1. package/assets/skills/memax-memory/SKILL.md +173 -0
  2. package/dist/commands/agent-configs.d.ts +41 -0
  3. package/dist/commands/agent-configs.d.ts.map +1 -0
  4. package/dist/commands/agent-configs.js +1290 -0
  5. package/dist/commands/agent-configs.js.map +1 -0
  6. package/dist/commands/agent-configs.test.d.ts +2 -0
  7. package/dist/commands/agent-configs.test.d.ts.map +1 -0
  8. package/dist/commands/agent-configs.test.js +122 -0
  9. package/dist/commands/agent-configs.test.js.map +1 -0
  10. package/dist/commands/agent-sessions.d.ts +74 -0
  11. package/dist/commands/agent-sessions.d.ts.map +1 -0
  12. package/dist/commands/agent-sessions.js +1513 -0
  13. package/dist/commands/agent-sessions.js.map +1 -0
  14. package/dist/commands/agent-sessions.test.d.ts +2 -0
  15. package/dist/commands/agent-sessions.test.d.ts.map +1 -0
  16. package/dist/commands/agent-sessions.test.js +255 -0
  17. package/dist/commands/agent-sessions.test.js.map +1 -0
  18. package/dist/commands/agents.d.ts +3 -0
  19. package/dist/commands/agents.d.ts.map +1 -0
  20. package/dist/commands/agents.js +36 -0
  21. package/dist/commands/agents.js.map +1 -0
  22. package/dist/commands/ask.d.ts +15 -0
  23. package/dist/commands/ask.d.ts.map +1 -0
  24. package/dist/commands/ask.js +483 -0
  25. package/dist/commands/ask.js.map +1 -0
  26. package/dist/commands/auth.d.ts +7 -0
  27. package/dist/commands/auth.d.ts.map +1 -1
  28. package/dist/commands/auth.js +103 -8
  29. package/dist/commands/auth.js.map +1 -1
  30. package/dist/commands/capture.d.ts +19 -0
  31. package/dist/commands/capture.d.ts.map +1 -0
  32. package/dist/commands/capture.js +69 -0
  33. package/dist/commands/capture.js.map +1 -0
  34. package/dist/commands/config.d.ts +2 -0
  35. package/dist/commands/config.d.ts.map +1 -1
  36. package/dist/commands/config.js +13 -0
  37. package/dist/commands/config.js.map +1 -1
  38. package/dist/commands/delete.d.ts +2 -0
  39. package/dist/commands/delete.d.ts.map +1 -1
  40. package/dist/commands/delete.js +15 -18
  41. package/dist/commands/delete.js.map +1 -1
  42. package/dist/commands/dreams.d.ts +22 -0
  43. package/dist/commands/dreams.d.ts.map +1 -0
  44. package/dist/commands/dreams.js +251 -0
  45. package/dist/commands/dreams.js.map +1 -0
  46. package/dist/commands/dreams.test.d.ts +2 -0
  47. package/dist/commands/dreams.test.d.ts.map +1 -0
  48. package/dist/commands/dreams.test.js +39 -0
  49. package/dist/commands/dreams.test.js.map +1 -0
  50. package/dist/commands/hook.d.ts +2 -0
  51. package/dist/commands/hook.d.ts.map +1 -1
  52. package/dist/commands/hook.js +25 -103
  53. package/dist/commands/hook.js.map +1 -1
  54. package/dist/commands/hub.d.ts +37 -0
  55. package/dist/commands/hub.d.ts.map +1 -0
  56. package/dist/commands/hub.js +347 -0
  57. package/dist/commands/hub.js.map +1 -0
  58. package/dist/commands/hub.test.d.ts +2 -0
  59. package/dist/commands/hub.test.d.ts.map +1 -0
  60. package/dist/commands/hub.test.js +62 -0
  61. package/dist/commands/hub.test.js.map +1 -0
  62. package/dist/commands/import.d.ts +13 -0
  63. package/dist/commands/import.d.ts.map +1 -0
  64. package/dist/commands/import.js +257 -0
  65. package/dist/commands/import.js.map +1 -0
  66. package/dist/commands/import.test.d.ts +2 -0
  67. package/dist/commands/import.test.d.ts.map +1 -0
  68. package/dist/commands/import.test.js +11 -0
  69. package/dist/commands/import.test.js.map +1 -0
  70. package/dist/commands/list.d.ts +9 -2
  71. package/dist/commands/list.d.ts.map +1 -1
  72. package/dist/commands/list.js +118 -9
  73. package/dist/commands/list.js.map +1 -1
  74. package/dist/commands/list.test.d.ts +2 -0
  75. package/dist/commands/list.test.d.ts.map +1 -0
  76. package/dist/commands/list.test.js +20 -0
  77. package/dist/commands/list.test.js.map +1 -0
  78. package/dist/commands/login.d.ts +7 -1
  79. package/dist/commands/login.d.ts.map +1 -1
  80. package/dist/commands/login.js +81 -20
  81. package/dist/commands/login.js.map +1 -1
  82. package/dist/commands/mcp.d.ts.map +1 -1
  83. package/dist/commands/mcp.js +386 -65
  84. package/dist/commands/mcp.js.map +1 -1
  85. package/dist/commands/push.d.ts +6 -1
  86. package/dist/commands/push.d.ts.map +1 -1
  87. package/dist/commands/push.js +42 -8
  88. package/dist/commands/push.js.map +1 -1
  89. package/dist/commands/recall.d.ts +11 -1
  90. package/dist/commands/recall.d.ts.map +1 -1
  91. package/dist/commands/recall.js +228 -41
  92. package/dist/commands/recall.js.map +1 -1
  93. package/dist/commands/recall.test.d.ts +2 -0
  94. package/dist/commands/recall.test.d.ts.map +1 -0
  95. package/dist/commands/recall.test.js +31 -0
  96. package/dist/commands/recall.test.js.map +1 -0
  97. package/dist/commands/setup-hooks.d.ts +13 -0
  98. package/dist/commands/setup-hooks.d.ts.map +1 -0
  99. package/dist/commands/setup-hooks.js +193 -0
  100. package/dist/commands/setup-hooks.js.map +1 -0
  101. package/dist/commands/setup-instructions.d.ts +21 -0
  102. package/dist/commands/setup-instructions.d.ts.map +1 -0
  103. package/dist/commands/setup-instructions.js +172 -0
  104. package/dist/commands/setup-instructions.js.map +1 -0
  105. package/dist/commands/setup-mcp.d.ts +40 -0
  106. package/dist/commands/setup-mcp.d.ts.map +1 -0
  107. package/dist/commands/setup-mcp.js +414 -0
  108. package/dist/commands/setup-mcp.js.map +1 -0
  109. package/dist/commands/setup-types.d.ts +33 -0
  110. package/dist/commands/setup-types.d.ts.map +1 -0
  111. package/dist/commands/setup-types.js +60 -0
  112. package/dist/commands/setup-types.js.map +1 -0
  113. package/dist/commands/setup.d.ts +10 -1
  114. package/dist/commands/setup.d.ts.map +1 -1
  115. package/dist/commands/setup.js +216 -534
  116. package/dist/commands/setup.js.map +1 -1
  117. package/dist/commands/show.d.ts +5 -1
  118. package/dist/commands/show.d.ts.map +1 -1
  119. package/dist/commands/show.js +36 -14
  120. package/dist/commands/show.js.map +1 -1
  121. package/dist/commands/topic.d.ts +32 -0
  122. package/dist/commands/topic.d.ts.map +1 -0
  123. package/dist/commands/topic.js +265 -0
  124. package/dist/commands/topic.js.map +1 -0
  125. package/dist/commands/topic.test.d.ts +2 -0
  126. package/dist/commands/topic.test.d.ts.map +1 -0
  127. package/dist/commands/topic.test.js +114 -0
  128. package/dist/commands/topic.test.js.map +1 -0
  129. package/dist/index.js +35 -144
  130. package/dist/index.js.map +1 -1
  131. package/dist/lib/client.d.ts +10 -0
  132. package/dist/lib/client.d.ts.map +1 -0
  133. package/dist/lib/client.js +104 -0
  134. package/dist/lib/client.js.map +1 -0
  135. package/dist/lib/client.test.d.ts +2 -0
  136. package/dist/lib/client.test.d.ts.map +1 -0
  137. package/dist/lib/client.test.js +44 -0
  138. package/dist/lib/client.test.js.map +1 -0
  139. package/dist/lib/config.d.ts +43 -0
  140. package/dist/lib/config.d.ts.map +1 -1
  141. package/dist/lib/config.js +72 -1
  142. package/dist/lib/config.js.map +1 -1
  143. package/dist/lib/credentials.d.ts +3 -0
  144. package/dist/lib/credentials.d.ts.map +1 -1
  145. package/dist/lib/credentials.js +24 -2
  146. package/dist/lib/credentials.js.map +1 -1
  147. package/dist/lib/hubs.d.ts +7 -0
  148. package/dist/lib/hubs.d.ts.map +1 -0
  149. package/dist/lib/hubs.js +33 -0
  150. package/dist/lib/hubs.js.map +1 -0
  151. package/dist/lib/hubs.test.d.ts +2 -0
  152. package/dist/lib/hubs.test.d.ts.map +1 -0
  153. package/dist/lib/hubs.test.js +58 -0
  154. package/dist/lib/hubs.test.js.map +1 -0
  155. package/dist/lib/project-context.d.ts +56 -0
  156. package/dist/lib/project-context.d.ts.map +1 -0
  157. package/dist/lib/project-context.js +225 -0
  158. package/dist/lib/project-context.js.map +1 -0
  159. package/dist/lib/project-context.test.d.ts +2 -0
  160. package/dist/lib/project-context.test.d.ts.map +1 -0
  161. package/dist/lib/project-context.test.js +75 -0
  162. package/dist/lib/project-context.test.js.map +1 -0
  163. package/dist/lib/prompt.d.ts +7 -0
  164. package/dist/lib/prompt.d.ts.map +1 -0
  165. package/dist/lib/prompt.js +41 -0
  166. package/dist/lib/prompt.js.map +1 -0
  167. package/dist/lib/trash.d.ts +6 -0
  168. package/dist/lib/trash.d.ts.map +1 -0
  169. package/dist/lib/trash.js +28 -0
  170. package/dist/lib/trash.js.map +1 -0
  171. package/package.json +17 -13
  172. package/.vscode/mcp.json +0 -8
  173. package/dist/commands/sync.d.ts +0 -12
  174. package/dist/commands/sync.d.ts.map +0 -1
  175. package/dist/commands/sync.js +0 -414
  176. package/dist/commands/sync.js.map +0 -1
  177. package/dist/lib/api.d.ts +0 -4
  178. package/dist/lib/api.d.ts.map +0 -1
  179. package/dist/lib/api.js +0 -95
  180. package/dist/lib/api.js.map +0 -1
  181. package/src/commands/auth.ts +0 -92
  182. package/src/commands/config.ts +0 -27
  183. package/src/commands/delete.ts +0 -58
  184. package/src/commands/hook.ts +0 -243
  185. package/src/commands/list.ts +0 -38
  186. package/src/commands/login.ts +0 -164
  187. package/src/commands/mcp.ts +0 -405
  188. package/src/commands/push.ts +0 -137
  189. package/src/commands/recall.ts +0 -163
  190. package/src/commands/setup.ts +0 -1077
  191. package/src/commands/show.ts +0 -35
  192. package/src/commands/sync.ts +0 -506
  193. package/src/index.ts +0 -213
  194. package/src/lib/api.ts +0 -110
  195. package/src/lib/config.ts +0 -61
  196. package/src/lib/credentials.ts +0 -42
  197. package/tsconfig.json +0 -9
@@ -0,0 +1,414 @@
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 { getLocalAgentKey, saveLocalAgentKey } from "../lib/credentials.js";
7
+ import { resolveHubID } from "../lib/hubs.js";
8
+ import { commandExists, resolveMemaxBin, } from "./setup-types.js";
9
+ // --- Remote MCP setup ---
10
+ export function getApiUrl() {
11
+ return loadConfig().api_url;
12
+ }
13
+ /**
14
+ * Sets up MCP with OAuth discovery (no API key in config).
15
+ *
16
+ * The MCP client discovers auth endpoints via .well-known/oauth-protected-resource
17
+ * and .well-known/oauth-authorization-server, then completes the OAuth flow in
18
+ * the user's browser when it first connects. Agent identity is auto-detected
19
+ * from the OAuth client_name.
20
+ *
21
+ * Each agent gets its own config shape via agent.remoteEntry() — some use
22
+ * { type: "url" }, some use { type: "http" }, some use { httpUrl }, etc.
23
+ */
24
+ export function setupMcpOAuth(agent) {
25
+ const mcpUrl = `${getApiUrl()}/mcp`;
26
+ // Claude Code uses its own CLI
27
+ if (agent.id === "claude-code") {
28
+ if (!commandExists("claude")) {
29
+ throw new Error("claude CLI not found in PATH");
30
+ }
31
+ try {
32
+ execSync("claude mcp remove memax --scope user", { stdio: "pipe" });
33
+ }
34
+ catch {
35
+ // Not installed yet
36
+ }
37
+ // Claude Code HTTP transport — no auth header, OAuth auto-discovery
38
+ // --scope user so it's available across all projects
39
+ execSync(`claude mcp add memax --transport http ${mcpUrl} --scope user`, {
40
+ stdio: "pipe",
41
+ });
42
+ return;
43
+ }
44
+ // Codex TOML
45
+ if (agent.format === "toml") {
46
+ mkdirSync(dirname(agent.configPath), { recursive: true });
47
+ let content = "";
48
+ if (existsSync(agent.configPath)) {
49
+ content = readFileSync(agent.configPath, "utf-8");
50
+ }
51
+ content = content.replace(/\[mcp_servers\.memax(?:\.\w+)*\][\s\S]*?(?=\n\[|$)/g, "");
52
+ content = content.trim();
53
+ if (content)
54
+ content += "\n\n";
55
+ content += `[mcp_servers.memax]\ntype = "url"\nurl = "${mcpUrl}"\n`;
56
+ writeFileSync(agent.configPath, content);
57
+ return;
58
+ }
59
+ // JSON-based agents — per-agent config shape, no auth header
60
+ writeRemoteJsonConfig(agent, mcpUrl);
61
+ }
62
+ export async function ensureApiKey(hubId, agentName, opts = {}) {
63
+ try {
64
+ const resolvedHubID = hubId ? await resolveHubID(hubId) : undefined;
65
+ if (hubId && !resolvedHubID) {
66
+ return undefined;
67
+ }
68
+ if (resolvedHubID && opts.agentSync) {
69
+ return undefined;
70
+ }
71
+ const { getClient } = await import("../lib/client.js");
72
+ const name = agentName
73
+ ? `mcp-${agentName}${resolvedHubID ? `-hub-${resolvedHubID.slice(0, 8)}` : ""}`
74
+ : resolvedHubID
75
+ ? `mcp-setup-hub-${resolvedHubID.slice(0, 8)}`
76
+ : "mcp-setup";
77
+ const scopes = ["read"];
78
+ if (!opts.readOnly)
79
+ scopes.push("write");
80
+ if (opts.allowOrganize)
81
+ scopes.push("organize");
82
+ if (opts.allowDelete)
83
+ scopes.push("delete");
84
+ if (opts.agentSync)
85
+ scopes.push("agent-sync");
86
+ const result = await getClient().auth.createKey({
87
+ name,
88
+ hubId: resolvedHubID,
89
+ agentName: agentName || undefined,
90
+ expiresInDays: 90,
91
+ scopes,
92
+ trustLevel: resolvedHubID ? "standard" : "elevated",
93
+ });
94
+ return result.key;
95
+ }
96
+ catch {
97
+ return undefined;
98
+ }
99
+ }
100
+ export async function ensureLocalAgentKey(agentName) {
101
+ const existing = getLocalAgentKey(agentName);
102
+ if (existing) {
103
+ return existing;
104
+ }
105
+ const created = await ensureApiKey(undefined, agentName);
106
+ if (!created) {
107
+ return undefined;
108
+ }
109
+ console.log(chalk.yellow(` Creating new local key for ${agentName}. If you had a previous key, revoke it from Memax Settings.`));
110
+ saveLocalAgentKey(agentName, created);
111
+ return created;
112
+ }
113
+ export function setupMcpRemote(agent, apiKey) {
114
+ const mcpUrl = `${getApiUrl()}/mcp`;
115
+ const authHeaders = { Authorization: `Bearer ${apiKey}` };
116
+ // Claude Code uses its own CLI
117
+ if (agent.id === "claude-code") {
118
+ if (!commandExists("claude")) {
119
+ throw new Error("claude CLI not found in PATH");
120
+ }
121
+ try {
122
+ execSync("claude mcp remove memax --scope user", { stdio: "pipe" });
123
+ }
124
+ catch {
125
+ // Not installed yet
126
+ }
127
+ // --scope user so it's available across all projects
128
+ execSync(`claude mcp add memax --transport http ${mcpUrl} --header "Authorization: Bearer ${apiKey}" --scope user`, { stdio: "pipe" });
129
+ return;
130
+ }
131
+ // Codex TOML
132
+ if (agent.format === "toml") {
133
+ mkdirSync(dirname(agent.configPath), { recursive: true });
134
+ let content = "";
135
+ if (existsSync(agent.configPath)) {
136
+ content = readFileSync(agent.configPath, "utf-8");
137
+ }
138
+ content = content.replace(/\[mcp_servers\.memax(?:\.\w+)*\][\s\S]*?(?=\n\[|$)/g, "");
139
+ content = content.trim();
140
+ if (content)
141
+ content += "\n\n";
142
+ content += `[mcp_servers.memax]\ntype = "url"\nurl = "${mcpUrl}"\n\n[mcp_servers.memax.headers]\nAuthorization = "Bearer ${apiKey}"\n`;
143
+ writeFileSync(agent.configPath, content);
144
+ return;
145
+ }
146
+ // JSON-based agents — per-agent config shape with auth headers
147
+ writeRemoteJsonConfig(agent, mcpUrl, authHeaders);
148
+ }
149
+ /**
150
+ * Shared JSON config writer for remote MCP. Uses agent.remoteEntry() to
151
+ * produce the correct schema shape for each agent.
152
+ */
153
+ function writeRemoteJsonConfig(agent, mcpUrl, authHeaders) {
154
+ mkdirSync(dirname(agent.configPath), { recursive: true });
155
+ let config = {};
156
+ if (existsSync(agent.configPath)) {
157
+ try {
158
+ config = JSON.parse(readFileSync(agent.configPath, "utf-8"));
159
+ }
160
+ catch {
161
+ // Start fresh
162
+ }
163
+ }
164
+ const servers = (getNestedKey(config, agent.mcpKey) ?? {});
165
+ servers.memax = agent.remoteEntry(mcpUrl, authHeaders);
166
+ setNestedKey(config, agent.mcpKey, servers);
167
+ writeFileSync(agent.configPath, JSON.stringify(config, null, 2) + "\n");
168
+ }
169
+ // --- Local MCP setup per agent ---
170
+ export function setupMcp(agent, bin) {
171
+ // Claude Code has its own CLI for MCP management
172
+ if (agent.id === "claude-code") {
173
+ setupMcpClaudeCode(bin);
174
+ return;
175
+ }
176
+ mkdirSync(dirname(agent.configPath), { recursive: true });
177
+ if (agent.format === "toml") {
178
+ setupMcpToml(agent, bin);
179
+ return;
180
+ }
181
+ // JSON-based agents
182
+ let config = {};
183
+ if (existsSync(agent.configPath)) {
184
+ try {
185
+ config = JSON.parse(readFileSync(agent.configPath, "utf-8"));
186
+ }
187
+ catch {
188
+ // Start fresh
189
+ }
190
+ }
191
+ const servers = (getNestedKey(config, agent.mcpKey) ?? {});
192
+ const allArgs = [...bin.args, "mcp", "serve", "--agent", agent.id];
193
+ servers.memax = agent.localEntry
194
+ ? agent.localEntry(bin.command, allArgs)
195
+ : { command: bin.command, args: allArgs };
196
+ setNestedKey(config, agent.mcpKey, servers);
197
+ writeFileSync(agent.configPath, JSON.stringify(config, null, 2) + "\n");
198
+ }
199
+ export function setupMcpClaudeCode(bin) {
200
+ // Claude Code uses its own CLI for MCP — settings.json mcpServers is ignored
201
+ if (!commandExists("claude")) {
202
+ throw new Error("claude CLI not found in PATH");
203
+ }
204
+ // Remove existing first (idempotent)
205
+ try {
206
+ execSync("claude mcp remove memax --scope user", { stdio: "pipe" });
207
+ }
208
+ catch {
209
+ // Not installed yet — fine
210
+ }
211
+ // claude mcp add <name> -- <command> [args...]
212
+ // --scope user so it's available across all projects
213
+ const allArgs = [...bin.args, "mcp", "serve", "--agent", "claude-code"];
214
+ const cmd = `claude mcp add memax --scope user -- ${bin.command} ${allArgs.join(" ")}`;
215
+ try {
216
+ execSync(cmd, { stdio: "pipe" });
217
+ }
218
+ catch (err) {
219
+ throw new Error(`claude mcp add failed: ${err.message}`);
220
+ }
221
+ }
222
+ export function setupMcpToml(agent, bin) {
223
+ // Codex uses TOML — append or update the memax section
224
+ let content = "";
225
+ if (existsSync(agent.configPath)) {
226
+ content = readFileSync(agent.configPath, "utf-8");
227
+ }
228
+ // Remove existing memax section if present
229
+ content = content.replace(/\[mcp_servers\.memax(?:\.\w+)*\][\s\S]*?(?=\n\[|$)/g, "");
230
+ const args = [...bin.args, "mcp", "serve", "--agent", agent.id]
231
+ .map((a) => `"${a}"`)
232
+ .join(", ");
233
+ content = content.trim();
234
+ if (content)
235
+ content += "\n\n";
236
+ content += `[mcp_servers.memax]\ncommand = "${bin.command}"\nargs = [${args}]\n`;
237
+ writeFileSync(agent.configPath, content);
238
+ }
239
+ export async function printMcpConfigs(opts) {
240
+ const mcpUrl = `${getApiUrl()}/mcp`;
241
+ const indent = (json) => JSON.stringify(json, null, 2)
242
+ .split("\n")
243
+ .map((l) => " " + l)
244
+ .join("\n");
245
+ console.log(chalk.bold("\n Memax MCP Configuration\n"));
246
+ if (opts.local) {
247
+ const bin = resolveMemaxBin();
248
+ const cmd = bin ? bin.command : "memax";
249
+ const baseArgs = bin ? [...bin.args, "mcp", "serve"] : ["mcp", "serve"];
250
+ console.log(chalk.gray(" Mode: local (stdio)\n"));
251
+ console.log(chalk.gray(" Note: add --agent <name> for agent identity attribution.\n" +
252
+ " Example: memax mcp serve --agent claude-code\n"));
253
+ // Include --agent placeholder so manual setups get attribution
254
+ const args = [...baseArgs, "--agent", "<agent-id>"];
255
+ console.log(chalk.white(" For most agents (Claude Code, Cursor, Gemini, etc.):\n"));
256
+ console.log(indent({ mcpServers: { memax: { command: cmd, args } } }));
257
+ console.log(chalk.white("\n For Copilot CLI:\n"));
258
+ console.log(indent({
259
+ mcpServers: {
260
+ memax: { command: cmd, args, tools: [{ type: "function" }] },
261
+ },
262
+ }));
263
+ console.log(chalk.white("\n For VS Code (.vscode/mcp.json):\n"));
264
+ console.log(indent({ servers: { memax: { command: cmd, args } } }));
265
+ console.log(chalk.white("\n For OpenCode:\n"));
266
+ console.log(indent({ mcp: { memax: { type: "local", command: cmd, args } } }));
267
+ }
268
+ else if (opts.apiKey) {
269
+ let apiKey;
270
+ try {
271
+ apiKey = await ensureApiKey(opts.hub, undefined, {
272
+ readOnly: opts.readOnly,
273
+ allowDelete: opts.allowDelete,
274
+ allowOrganize: opts.allowOrganize,
275
+ agentSync: opts.agentSync,
276
+ });
277
+ }
278
+ catch {
279
+ // Not logged in
280
+ }
281
+ const keyDisplay = apiKey ?? "mxk_your_api_key_here";
282
+ const authHeaders = { Authorization: `Bearer ${keyDisplay}` };
283
+ console.log(chalk.gray(" Mode: remote server (API key)\n"));
284
+ console.log(chalk.white(" For Claude Code:\n"));
285
+ console.log(chalk.gray(` claude mcp add memax --transport http ${mcpUrl} --header "Authorization: Bearer ${keyDisplay}" --scope user`));
286
+ console.log(chalk.white("\n For Cursor, Windsurf:\n"));
287
+ console.log(indent({
288
+ mcpServers: {
289
+ memax: { type: "url", url: mcpUrl, headers: authHeaders },
290
+ },
291
+ }));
292
+ console.log(chalk.white("\n For Gemini CLI:\n"));
293
+ console.log(indent({
294
+ mcpServers: { memax: { httpUrl: mcpUrl, headers: authHeaders } },
295
+ }));
296
+ console.log(chalk.white("\n For Copilot CLI:\n"));
297
+ console.log(indent({
298
+ mcpServers: {
299
+ memax: {
300
+ type: "http",
301
+ url: mcpUrl,
302
+ tools: [{ type: "function" }],
303
+ headers: authHeaders,
304
+ },
305
+ },
306
+ }));
307
+ console.log(chalk.white("\n For VS Code (.vscode/mcp.json):\n"));
308
+ console.log(indent({
309
+ servers: { memax: { type: "http", url: mcpUrl, headers: authHeaders } },
310
+ }));
311
+ console.log(chalk.white("\n For Codex CLI (~/.codex/config.toml):\n"));
312
+ console.log(chalk.gray(` [mcp_servers.memax]`));
313
+ console.log(chalk.gray(` type = "url"`));
314
+ console.log(chalk.gray(` url = "${mcpUrl}"`));
315
+ console.log(chalk.gray(`\n [mcp_servers.memax.headers]`));
316
+ console.log(chalk.gray(` Authorization = "Bearer ${keyDisplay}"`));
317
+ if (apiKey) {
318
+ console.log(chalk.yellow("\n API key created: mcp-setup"));
319
+ }
320
+ else {
321
+ console.log(chalk.yellow("\n Not logged in — replace mxk_your_api_key_here with a real key."));
322
+ console.log(chalk.gray(" Run: memax login && memax auth create-key --name mcp"));
323
+ }
324
+ }
325
+ else {
326
+ console.log(chalk.gray(" Mode: remote server (OAuth — recommended)\n"));
327
+ console.log(chalk.white(" For Claude Code:\n"));
328
+ console.log(chalk.gray(` claude mcp add memax --transport http ${mcpUrl} --scope user`));
329
+ console.log(chalk.gray(" (OAuth auto-discovery — authenticates via browser)\n"));
330
+ console.log(chalk.white(" For Cursor, Windsurf:\n"));
331
+ console.log(indent({ mcpServers: { memax: { type: "url", url: mcpUrl } } }));
332
+ console.log(chalk.white("\n For Gemini CLI:\n"));
333
+ console.log(indent({ mcpServers: { memax: { httpUrl: mcpUrl } } }));
334
+ console.log(chalk.white("\n For Copilot CLI:\n"));
335
+ console.log(indent({
336
+ mcpServers: {
337
+ memax: { type: "http", url: mcpUrl, tools: [{ type: "function" }] },
338
+ },
339
+ }));
340
+ console.log(chalk.white("\n For VS Code (.vscode/mcp.json):\n"));
341
+ console.log(indent({ servers: { memax: { type: "http", url: mcpUrl } } }));
342
+ console.log(chalk.white("\n For Codex CLI (~/.codex/config.toml):\n"));
343
+ console.log(chalk.gray(` [mcp_servers.memax]`));
344
+ console.log(chalk.gray(` type = "url"`));
345
+ console.log(chalk.gray(` url = "${mcpUrl}"`));
346
+ console.log(chalk.gray("\n All agents authenticate via OAuth when they first connect.\n For API key mode: memax setup --print --api-key"));
347
+ }
348
+ console.log();
349
+ }
350
+ // --- Teardown helpers ---
351
+ export function removeMcpJson(agent) {
352
+ if (!existsSync(agent.configPath))
353
+ return false;
354
+ try {
355
+ const config = JSON.parse(readFileSync(agent.configPath, "utf-8"));
356
+ const servers = getNestedKey(config, agent.mcpKey);
357
+ if (!servers?.memax)
358
+ return false;
359
+ delete servers.memax;
360
+ if (Object.keys(servers).length === 0)
361
+ deleteNestedKey(config, agent.mcpKey);
362
+ writeFileSync(agent.configPath, JSON.stringify(config, null, 2) + "\n");
363
+ console.log(chalk.gray(` Removed MCP from ${agent.name}`));
364
+ return true;
365
+ }
366
+ catch {
367
+ return false;
368
+ }
369
+ }
370
+ export function removeMcpToml(agent) {
371
+ if (!existsSync(agent.configPath))
372
+ return false;
373
+ let content = readFileSync(agent.configPath, "utf-8");
374
+ const before = content;
375
+ content = content.replace(/\[mcp_servers\.memax(?:\.\w+)*\][\s\S]*?(?=\n\[|$)/g, "");
376
+ if (content === before)
377
+ return false;
378
+ writeFileSync(agent.configPath, content.trim() + "\n");
379
+ console.log(chalk.gray(` Removed MCP from ${agent.name}`));
380
+ return true;
381
+ }
382
+ // --- Nested key helpers for configs like openclaw's "mcp.servers" ---
383
+ export function getNestedKey(obj, key) {
384
+ const parts = key.split(".");
385
+ let current = obj;
386
+ for (const part of parts) {
387
+ if (current == null || typeof current !== "object")
388
+ return undefined;
389
+ current = current[part];
390
+ }
391
+ return current;
392
+ }
393
+ export function setNestedKey(obj, key, value) {
394
+ const parts = key.split(".");
395
+ let current = obj;
396
+ for (let i = 0; i < parts.length - 1; i++) {
397
+ if (!(parts[i] in current) || typeof current[parts[i]] !== "object") {
398
+ current[parts[i]] = {};
399
+ }
400
+ current = current[parts[i]];
401
+ }
402
+ current[parts[parts.length - 1]] = value;
403
+ }
404
+ export function deleteNestedKey(obj, key) {
405
+ const parts = key.split(".");
406
+ let current = obj;
407
+ for (let i = 0; i < parts.length - 1; i++) {
408
+ if (!(parts[i] in current) || typeof current[parts[i]] !== "object")
409
+ return;
410
+ current = current[parts[i]];
411
+ }
412
+ delete current[parts[parts.length - 1]];
413
+ }
414
+ //# 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,33 @@
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
+ * Returns the correct MCP server entry shape for this agent's remote config.
14
+ * Each agent has its own schema expectations for remote/HTTP MCP servers.
15
+ * The `authHeaders` param is undefined for OAuth mode (agent handles auth)
16
+ * or an object with Authorization header for API key mode.
17
+ */
18
+ remoteEntry: (mcpUrl: string, authHeaders?: Record<string, string>) => Record<string, unknown>;
19
+ /**
20
+ * Returns the correct MCP server entry shape for local stdio mode.
21
+ * Most agents use { command, args }, but some (OpenCode) need a type field.
22
+ * If undefined, the default { command, args } shape is used.
23
+ */
24
+ localEntry?: (command: string, args: string[]) => Record<string, unknown>;
25
+ }
26
+ export interface MemaxBin {
27
+ command: string;
28
+ args: string[];
29
+ shell: string;
30
+ }
31
+ export declare function commandExists(cmd: string): boolean;
32
+ export declare function resolveMemaxBin(): MemaxBin | null;
33
+ //# 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;IACtB;;;;;OAKG;IACH,WAAW,EAAE,CACX,MAAM,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KACjC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7B;;;;OAIG;IACH,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC3E;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. Local repo build (preferred during dev so setup/hooks use the same CLI code being tested)
18
+ const localBuild = join(process.cwd(), "packages", "cli", "dist", "index.js");
19
+ if (existsSync(localBuild)) {
20
+ return {
21
+ command: "node",
22
+ args: [localBuild],
23
+ shell: `node ${localBuild}`,
24
+ };
25
+ }
26
+ // 2. Global install — use absolute path so agents find it without shell PATH
27
+ if (commandExists("memax")) {
28
+ try {
29
+ const which = platform() === "win32" ? "where memax" : "which memax";
30
+ const absPath = execSync(which, { encoding: "utf-8", stdio: "pipe" })
31
+ .trim()
32
+ .split("\n")[0];
33
+ if (absPath) {
34
+ return { command: absPath, args: [], shell: absPath };
35
+ }
36
+ }
37
+ catch {
38
+ // fall through
39
+ }
40
+ return { command: "memax", args: [], shell: "memax" };
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;AAuC9C,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,+FAA+F;IAC/F,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,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,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,16 +1,25 @@
1
+ import { Command } from "commander";
2
+ import { type AgentDef, type MemaxBin } from "./setup-types.js";
3
+ export type { AgentDef, MemaxBin };
1
4
  interface SetupOptions {
2
5
  mcp?: boolean;
3
6
  hooks?: boolean;
4
7
  instructions?: boolean;
5
8
  all?: boolean;
6
9
  local?: boolean;
10
+ apiKey?: boolean;
7
11
  print?: boolean;
8
12
  only?: string;
9
13
  skip?: string;
14
+ hub?: string;
15
+ readOnly?: boolean;
16
+ allowDelete?: boolean;
17
+ allowOrganize?: boolean;
18
+ agentSync?: boolean;
10
19
  }
11
20
  export declare function setupCommand(options: SetupOptions): Promise<void>;
12
21
  export declare function teardownCommand(options: {
13
22
  only?: string;
14
23
  }): Promise<void>;
15
- export {};
24
+ export declare function registerSetupCommands(program: Command): void;
16
25
  //# sourceMappingURL=setup.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAyIA,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;CACf;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAoLvE;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,OAAO,CAAC,IAAI,CAAC,CAoEhB"}
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,QAAQ,EAGd,MAAM,kBAAkB,CAAC;AAoB1B,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AAyKnC,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,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAqSvE;AAID,wBAAsB,eAAe,CAAC,OAAO,EAAE;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,OAAO,CAAC,IAAI,CAAC,CAkFhB;AAuED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwC5D"}