@brainmcp/brainmcp 0.1.0 → 0.1.2

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.
package/README.md ADDED
@@ -0,0 +1,132 @@
1
+ # `@brainmcp/brainmcp`
2
+
3
+ Safely configure [brain / brainmcp](https://www.brainmcp.ai) guidance and MCP connections for agent clients.
4
+
5
+ The binary name is `brainmcp`. Install it globally once, then configure all supported named hosts at **user scope** so the setup applies across projects—not just one repository.
6
+
7
+ Full client walkthroughs: [Quickstart](https://www.brainmcp.ai/docs/quickstart) · [Claude Code](https://www.brainmcp.ai/docs/connect-claude-code) · [Cursor](https://www.brainmcp.ai/docs/connect-cursor) · [Codex](https://www.brainmcp.ai/docs/connect-codex) · [VS Code](https://www.brainmcp.ai/docs/connect-vscode)
8
+
9
+ ## Quickstart — all projects, supported agents
10
+
11
+ Install the CLI on your PATH:
12
+
13
+ ```bash
14
+ npm install -g @brainmcp/brainmcp
15
+ ```
16
+
17
+ Preview one combined user-scope change for Claude Code, Cursor, Codex, and VS Code, then confirm once:
18
+
19
+ ```bash
20
+ brainmcp init --all --scope user
21
+ ```
22
+
23
+ Only pin a workspace at user scope when that same workspace should be the default in **every**
24
+ project. Otherwise omit it and use the OAuth authorization default or a project-scope override:
25
+
26
+ ```bash
27
+ brainmcp init --all --workspace <workspace-id> --scope user
28
+ ```
29
+
30
+ Complete OAuth in each client’s browser flow. No API keys or OAuth secrets are written to config files.
31
+
32
+ Verify:
33
+
34
+ ```bash
35
+ brainmcp doctor --client cursor --scope user
36
+ ```
37
+
38
+ Ask any connected agent: `use brain to give me an overview of the workspace`. In the [dashboard Connect view](https://dash.brainmcp.ai/connect), status should flip from *waiting for first call* to **Agent seen … ago**.
39
+
40
+ ### One-shot (copy/paste)
41
+
42
+ ```bash
43
+ npm install -g @brainmcp/brainmcp
44
+
45
+ # Preview one combined user-scope change, then confirm once:
46
+ brainmcp init --all --scope user
47
+ ```
48
+
49
+ `--all` intentionally excludes `generic`: an unknown client has no universal global config path. Prefer a maintained plugin when Claude Code or Cursor offers one; use the CLI when you want reviewable filesystem configuration or no plugin is available.
50
+
51
+ ## Project-local alternative
52
+
53
+ For a single repository only, omit `--scope user` (or pass `--scope project`) and run from that repo root. You can still use `npx` without a global install:
54
+
55
+ ```bash
56
+ npx @brainmcp/brainmcp init --client claude-code
57
+ ```
58
+
59
+ ## Commands
60
+
61
+ | Command | What it does |
62
+ | --- | --- |
63
+ | `init` | Preview and write MCP config + instruction file for a client |
64
+ | `init --all` | Preview one combined change for Claude Code, Cursor, Codex, and VS Code |
65
+ | `doctor` | Check placement, endpoint, managed markers, and OAuth discovery |
66
+ | `print` | Print the canonical config and guidance without writing |
67
+ | `remove` | Preview and remove BrainMCP-managed blocks |
68
+
69
+ Every mutation shows a diff and asks for confirmation unless you pass `--yes`.
70
+
71
+ ```text
72
+ brainmcp init [--client <client>] [--workspace <id>] [--scope project|user] [--yes]
73
+ brainmcp init --all [--workspace <id>] [--scope project|user] [--yes]
74
+ brainmcp doctor [--client <client>] [--workspace <id>] [--scope project|user]
75
+ brainmcp print [--client <client>] [--workspace <id>] [--scope project|user]
76
+ brainmcp remove [--client <client>] [--scope project|user] [--yes]
77
+ ```
78
+
79
+ ### Clients
80
+
81
+ | `--client` | User-scope paths (`--scope user`) | Project-scope paths (default) |
82
+ | --- | --- | --- |
83
+ | `claude-code` | `~/.claude.json`, `~/.claude/CLAUDE.md` | `.mcp.json`, `CLAUDE.md` |
84
+ | `cursor` | `~/.cursor/mcp.json`, `~/.cursor/rules/brainmcp-workspace.mdc` | `.cursor/mcp.json`, `.cursor/rules/brainmcp-workspace.mdc` |
85
+ | `codex` | `$CODEX_HOME/config.toml`, `$CODEX_HOME/AGENTS.md` (default `~/.codex`) | `.codex/config.toml`, `AGENTS.md` |
86
+ | `vscode` | Default VS Code profile `mcp.json`; `~/.copilot/instructions/brainmcp.instructions.md` | `.vscode/mcp.json`, `AGENTS.md` |
87
+ | `generic` | Conventional `~/.mcp.json`, `~/AGENTS.md` (only when your host recognizes them) | `.mcp.json`, `AGENTS.md` |
88
+
89
+ If you omit `--client`, the CLI detects a single obvious client from the project. Multiple matches require an explicit `--client`. VS Code user scope targets the platform’s default local profile; named profiles, Insiders, remote SSH, WSL, and dev containers need their own setup in that environment.
90
+
91
+ ### Scope
92
+
93
+ - `user` — write to the selected host’s supported per-user locations so brain is available across that host’s projects
94
+ - `project` (default) — write only under the current repository
95
+
96
+ ### Workspace
97
+
98
+ `--workspace <id>` embeds the workspace id in the managed guidance block so agents orient to that workspace. Prefer this at project scope. At user scope it affects every project for that host, so use it only for a genuinely global default. Without it, `brain_workspace_overview` may use the authorization’s default workspace; agents should call `brain_workspaces_list` when the target is unclear.
99
+
100
+ ## Examples
101
+
102
+ ```bash
103
+ # Global CLI + Cursor for all projects
104
+ npm install -g @brainmcp/brainmcp
105
+ brainmcp init --client cursor --scope user
106
+
107
+ # Codex user-scope with workspace pin
108
+ brainmcp init --client codex --workspace ws_abc --scope user
109
+
110
+ # Single-repo only (no global install required)
111
+ npx @brainmcp/brainmcp init --client vscode
112
+
113
+ # Preview / remove
114
+ brainmcp print --client vscode --scope user
115
+ brainmcp remove --client cursor --scope user --yes
116
+ ```
117
+
118
+ ## What gets written
119
+
120
+ - Canonical MCP endpoint: `https://mcp.brainmcp.ai/mcp` (server name `brain`)
121
+ - Managed instruction markers (`brainmcp:managed:start` / `end`) so later `init` / `remove` can update safely
122
+ - Backups for changed files; existing modes and symlinked dotfiles are preserved, and stale previews are refused
123
+ - No embedded OAuth secrets — tokens come from the browser consent flow
124
+
125
+ ## Requirements
126
+
127
+ - Node.js 22+
128
+ - A [brain](https://dash.brainmcp.ai) account and workspace for OAuth
129
+
130
+ ## License
131
+
132
+ MIT
@@ -150,6 +150,16 @@ export function renderClaudeMdBlock(options) {
150
150
  export function renderAgentsMdBlock(options) {
151
151
  return buildProjectInstructionBlock(options);
152
152
  }
153
+ export const VSCODE_USER_INSTRUCTIONS_FRONTMATTER = [
154
+ '---',
155
+ 'name: BrainMCP',
156
+ 'description: Use brain as persistent, reviewable memory across projects.',
157
+ 'applyTo: "**"',
158
+ '---',
159
+ ].join('\n');
160
+ export function renderVscodeUserInstructions(options) {
161
+ return `${VSCODE_USER_INSTRUCTIONS_FRONTMATTER}\n\n${buildProjectInstructionBlock(options)}`;
162
+ }
153
163
  export function renderCursorMdc(options) {
154
164
  const alwaysApply = options?.alwaysApply ?? true;
155
165
  return [
@@ -231,23 +241,74 @@ export function buildClaudeCodeStaticFallbackCommand() {
231
241
  }
232
242
  /** npm package name for the publishable setup CLI (`npx @brainmcp/brainmcp`). */
233
243
  export const BRAINMCP_CLI_PACKAGE = '@brainmcp/brainmcp';
244
+ /** Clients the CLI can configure. Run once per client you use. */
245
+ export const BRAINMCP_CLI_CLIENTS = [
246
+ 'claude-code',
247
+ 'cursor',
248
+ 'codex',
249
+ 'vscode',
250
+ 'generic',
251
+ ];
252
+ /** Named agent hosts configured by `brainmcp init --all`. */
253
+ export const BRAINMCP_GLOBAL_CLIENTS = [
254
+ 'claude-code',
255
+ 'cursor',
256
+ 'codex',
257
+ 'vscode',
258
+ ];
259
+ function brainmcpCliBinary(invoke = 'npx') {
260
+ return invoke === 'global' ? 'brainmcp' : `npx ${BRAINMCP_CLI_PACKAGE}`;
261
+ }
262
+ /** Install the CLI once on your PATH (`brainmcp` available in every shell). */
263
+ export function buildBrainmcpGlobalInstallCommand() {
264
+ return `npm install -g ${BRAINMCP_CLI_PACKAGE}`;
265
+ }
234
266
  export function buildBrainmcpInitCommand(options) {
235
- const parts = [`npx ${BRAINMCP_CLI_PACKAGE} init`];
236
- if (options?.client)
267
+ if (options?.all && options.client) {
268
+ throw new Error('buildBrainmcpInitCommand cannot combine client and all.');
269
+ }
270
+ const parts = [`${brainmcpCliBinary(options?.invoke)} init`];
271
+ if (options?.all)
272
+ parts.push('--all');
273
+ else if (options?.client)
237
274
  parts.push(`--client ${options.client}`);
238
275
  if (options?.workspaceId)
239
276
  parts.push(`--workspace ${options.workspaceId}`);
240
- parts.push('--yes');
277
+ if (options?.scope === 'user')
278
+ parts.push('--scope user');
279
+ if (options?.yes !== false)
280
+ parts.push('--yes');
241
281
  return parts.join(' ');
242
282
  }
243
283
  export function buildBrainmcpDoctorCommand(options) {
244
- const parts = [`npx ${BRAINMCP_CLI_PACKAGE} doctor`];
284
+ const parts = [`${brainmcpCliBinary(options?.invoke)} doctor`];
245
285
  if (options?.workspaceId)
246
286
  parts.push(`--workspace ${options.workspaceId}`);
247
287
  if (options?.client)
248
288
  parts.push(`--client ${options.client}`);
289
+ if (options?.scope === 'user')
290
+ parts.push('--scope user');
249
291
  return parts.join(' ');
250
292
  }
293
+ /**
294
+ * One-shot script: install the CLI globally, then configure every supported agent
295
+ * at user scope (host-specific per-user locations — all projects).
296
+ */
297
+ export function buildBrainmcpUserScopeSetupScript(options) {
298
+ const lines = [
299
+ buildBrainmcpGlobalInstallCommand(),
300
+ '',
301
+ '# Preview one combined user-scope change, then confirm once:',
302
+ buildBrainmcpInitCommand({
303
+ all: true,
304
+ workspaceId: options?.workspaceId,
305
+ scope: 'user',
306
+ invoke: 'global',
307
+ yes: false,
308
+ }),
309
+ ];
310
+ return lines.join('\n');
311
+ }
251
312
  export function buildServerInstructions() {
252
313
  return [
253
314
  'brain is this project\'s shared, persistent, reviewable memory MCP. It is also called brainmcp; every tool is prefixed brain_. When the user says "use brain", "check brain", "save this to brain", or "use brainmcp", they mean this server.',
@@ -5,6 +5,12 @@ export type CommandOptions = {
5
5
  workspace?: string;
6
6
  scope: Scope;
7
7
  yes: boolean;
8
+ /** Test/embedding override. The CLI defaults to `os.homedir()`. */
9
+ home?: string;
10
+ /** Test/embedding override. The CLI defaults to `process.env`. */
11
+ env?: NodeJS.ProcessEnv;
12
+ /** Test/embedding override. The CLI defaults to `process.platform`. */
13
+ platform?: NodeJS.Platform;
8
14
  fetch?: typeof fetch;
9
15
  confirm?: (message: string) => Promise<boolean>;
10
16
  output: (message: string) => void;
@@ -12,6 +18,7 @@ export type CommandOptions = {
12
18
  export declare function detectClients(root: string): Promise<ClientId[]>;
13
19
  export declare function chooseClient(options: CommandOptions): Promise<ClientId>;
14
20
  export declare function init(options: CommandOptions): Promise<void>;
21
+ export declare function initAll(options: CommandOptions): Promise<void>;
15
22
  export declare function remove(options: CommandOptions): Promise<void>;
16
23
  export declare function printConfig(options: CommandOptions): Promise<void>;
17
24
  export declare function doctor(options: CommandOptions): Promise<void>;
@@ -1,7 +1,7 @@
1
1
  import { homedir } from 'node:os';
2
2
  import { join, resolve } from 'node:path';
3
- import { BRAIN_MCP_ENDPOINT } from '../agent-config.js';
4
- import { clientLabel, renderGuidance, resolveWorkspace, targetFor } from '../lib/config.js';
3
+ import { BRAIN_MCP_ENDPOINT, BRAINMCP_GLOBAL_CLIENTS } from '../agent-config.js';
4
+ import { clientLabel, guidancePreamble, renderGuidance, resolveWorkspace, targetFor, } from '../lib/config.js';
5
5
  import { applyChanges, exists, readText, renderDiff, toAbsolute } from '../lib/files.js';
6
6
  import { parseJsonc, removeJsonServer, removeMarkdownBlock, removeTomlBlock, upsertJsonServer, upsertMarkdownBlock, upsertTomlBlock } from '../lib/managed.js';
7
7
  export async function detectClients(root) {
@@ -31,13 +31,19 @@ export async function chooseClient(options) {
31
31
  export async function init(options) {
32
32
  const client = await chooseClient(options);
33
33
  const workspace = resolveWorkspace(options.workspace);
34
- const changes = await plannedChanges(options.root, client, options.scope, workspace, 'init');
34
+ const changes = await plannedChanges(options, client, workspace, 'init');
35
35
  await previewAndApply(changes, options);
36
36
  options.output(`BrainMCP configured for ${clientLabel(client)}. OAuth is discovered at first client connection; no OAuth secret was written.`);
37
37
  }
38
+ export async function initAll(options) {
39
+ const workspace = resolveWorkspace(options.workspace);
40
+ const groups = await Promise.all(BRAINMCP_GLOBAL_CLIENTS.map((client) => plannedChanges(options, client, workspace, 'init')));
41
+ await previewAndApply(mergeFileChanges(groups.flat()), options);
42
+ options.output(`BrainMCP configured for ${BRAINMCP_GLOBAL_CLIENTS.map(clientLabel).join(', ')}. OAuth is completed separately in each client; no OAuth secret was written.`);
43
+ }
38
44
  export async function remove(options) {
39
45
  const client = await chooseClient(options);
40
- const changes = await plannedChanges(options.root, client, options.scope, undefined, 'remove');
46
+ const changes = await plannedChanges(options, client, undefined, 'remove');
41
47
  if (changes.every((change) => change.before === change.after)) {
42
48
  options.output('No BrainMCP-managed configuration found.');
43
49
  return;
@@ -48,12 +54,12 @@ export async function remove(options) {
48
54
  export async function printConfig(options) {
49
55
  const client = await chooseClient(options);
50
56
  const workspace = resolveWorkspace(options.workspace);
51
- const target = resolveTarget(options.root, targetFor(client, options.scope), options.scope);
52
- options.output(`# ${clientLabel(client)} (${options.scope} scope)\n\nMCP configuration: ${target.configPath}\n\n${target.format === 'toml' ? upsertTomlBlock(undefined, client) : upsertJsonServer(undefined, client, target.rootKey)}\nGuidance: ${target.guidancePath}\n\n${renderGuidance(client, workspace)}`);
57
+ const target = resolveTarget(options, targetFor(client, options.scope));
58
+ options.output(`# ${clientLabel(client)} (${options.scope} scope)\n\nMCP configuration: ${target.configPath}\n\n${target.format === 'toml' ? upsertTomlBlock(undefined, client) : upsertJsonServer(undefined, client, target.rootKey)}\nGuidance: ${target.guidancePath}\n\n${upsertGuidance(undefined, client, options.scope, workspace)}`);
53
59
  }
54
60
  export async function doctor(options) {
55
61
  const client = await chooseClient(options);
56
- const target = resolveTarget(options.root, targetFor(client, options.scope), options.scope);
62
+ const target = resolveTarget(options, targetFor(client, options.scope));
57
63
  const checks = [];
58
64
  const config = await readText(target.configPath);
59
65
  const guidance = await readText(target.guidancePath);
@@ -76,8 +82,17 @@ export async function doctor(options) {
76
82
  }
77
83
  if (guidance !== undefined) {
78
84
  const occurrences = (guidance.match(/brainmcp:managed:start/g) ?? []).length;
79
- checks.push(['managed guidance markers', occurrences === 1 || client === 'cursor', occurrences === 1 ? 'one managed block' : `${occurrences} managed blocks`]);
85
+ checks.push(['managed guidance markers', occurrences === 1, occurrences === 1 ? 'one managed block' : `${occurrences} managed blocks`]);
80
86
  checks.push(['workspace binding', !options.workspace || guidance.includes(`Workspace id: ${resolveWorkspace(options.workspace)}`), options.workspace ? 'requested workspace binding' : 'no workspace requested']);
87
+ if (client === 'vscode' && options.scope === 'user') {
88
+ checks.push([
89
+ 'user instruction frontmatter',
90
+ guidance.startsWith('---\n') &&
91
+ /^applyTo:\s*["']\*\*["']$/m.test(guidance) &&
92
+ guidance.includes('\n---\n'),
93
+ 'always-on VS Code user instruction',
94
+ ]);
95
+ }
81
96
  }
82
97
  const fetchImpl = options.fetch ?? fetch;
83
98
  try {
@@ -94,15 +109,13 @@ export async function doctor(options) {
94
109
  catch (error) {
95
110
  checks.push(['endpoint challenge', false, error instanceof Error ? error.message : String(error)]);
96
111
  }
97
- const duplicate = await duplicateGuidance(options.root);
98
- checks.push(['duplicate guidance', duplicate.length <= 1, duplicate.length ? duplicate.join(', ') : 'none found']);
99
112
  for (const [name, passed, detail] of checks)
100
113
  options.output(`${passed ? '✓' : '✗'} ${name}: ${detail}`);
101
114
  if (checks.some(([, passed]) => !passed))
102
115
  throw new Error('BrainMCP doctor found configuration issues.');
103
116
  }
104
- async function plannedChanges(root, client, scope, workspace, mode) {
105
- const target = resolveTarget(root, targetFor(client, scope), scope);
117
+ async function plannedChanges(options, client, workspace, mode) {
118
+ const target = resolveTarget(options, targetFor(client, options.scope));
106
119
  const [config, guidance] = await Promise.all([readText(target.configPath), readText(target.guidancePath)]);
107
120
  return [
108
121
  {
@@ -115,20 +128,87 @@ async function plannedChanges(root, client, scope, workspace, mode) {
115
128
  {
116
129
  path: target.guidancePath,
117
130
  before: guidance,
118
- after: mode === 'init' ? upsertMarkdownBlock(guidance, renderGuidance(client, workspace)) : removeMarkdownBlock(guidance),
131
+ after: mode === 'init'
132
+ ? upsertGuidance(guidance, client, options.scope, workspace)
133
+ : removeGuidance(guidance, client, options.scope),
119
134
  },
120
135
  ];
121
136
  }
122
- function resolveTarget(root, target, scope) {
123
- const base = scope === 'user' ? homedir() : root;
137
+ function resolveTarget(options, target) {
138
+ const home = options.home ?? homedir();
139
+ if (options.scope === 'user' && target.client === 'codex') {
140
+ const configuredCodexHome = (options.env ?? process.env).CODEX_HOME?.trim();
141
+ const codexHome = configuredCodexHome ? resolve(configuredCodexHome) : join(home, '.codex');
142
+ return {
143
+ ...target,
144
+ configPath: join(codexHome, 'config.toml'),
145
+ guidancePath: join(codexHome, 'AGENTS.md'),
146
+ format: target.configFormat,
147
+ rootKey: target.configRootKey,
148
+ };
149
+ }
150
+ const base = options.scope === 'user' ? home : options.root;
124
151
  return {
125
152
  ...target,
126
- configPath: toAbsolute(base, target.configPath),
153
+ configPath: options.scope === 'user' && target.client === 'vscode'
154
+ ? vscodeUserConfigPath(home, options.env ?? process.env, options.platform ?? process.platform)
155
+ : toAbsolute(base, target.configPath),
127
156
  guidancePath: toAbsolute(base, target.guidancePath),
128
157
  format: target.configFormat,
129
158
  rootKey: target.configRootKey,
130
159
  };
131
160
  }
161
+ function vscodeUserConfigPath(home, env, platform) {
162
+ if (platform === 'win32') {
163
+ return join(env.APPDATA?.trim() || join(home, 'AppData', 'Roaming'), 'Code', 'User', 'mcp.json');
164
+ }
165
+ if (platform === 'darwin') {
166
+ return join(home, 'Library', 'Application Support', 'Code', 'User', 'mcp.json');
167
+ }
168
+ return join(env.XDG_CONFIG_HOME?.trim() || join(home, '.config'), 'Code', 'User', 'mcp.json');
169
+ }
170
+ function upsertGuidance(existing, client, scope, workspace) {
171
+ const preamble = guidancePreamble(client, scope);
172
+ const normalized = preamble && existing
173
+ ? collapseGeneratedPreambles(existing, preamble)
174
+ : existing;
175
+ const managed = upsertMarkdownBlock(normalized, renderGuidance(client, workspace));
176
+ if (!preamble || normalized !== undefined)
177
+ return managed;
178
+ return `${preamble}\n\n${managed}`;
179
+ }
180
+ function removeGuidance(existing, client, scope) {
181
+ const preamble = guidancePreamble(client, scope);
182
+ const removed = removeMarkdownBlock(existing);
183
+ const normalized = preamble && removed
184
+ ? collapseGeneratedPreambles(removed, preamble)
185
+ : removed;
186
+ return preamble && normalized?.trim() === preamble.trim() ? undefined : normalized;
187
+ }
188
+ function collapseGeneratedPreambles(text, preamble) {
189
+ const prefix = `${preamble.trimEnd()}\n\n`;
190
+ let remainder = text;
191
+ let count = 0;
192
+ while (remainder.startsWith(prefix)) {
193
+ remainder = remainder.slice(prefix.length);
194
+ count += 1;
195
+ }
196
+ return count > 0 ? `${prefix}${remainder}` : text;
197
+ }
198
+ function mergeFileChanges(changes) {
199
+ const merged = new Map();
200
+ for (const change of changes) {
201
+ const previous = merged.get(change.path);
202
+ if (!previous) {
203
+ merged.set(change.path, change);
204
+ continue;
205
+ }
206
+ if (previous.before !== change.before || previous.after !== change.after) {
207
+ throw new Error(`Conflicting planned changes for ${change.path}. Configure clients individually.`);
208
+ }
209
+ }
210
+ return [...merged.values()];
211
+ }
132
212
  async function previewAndApply(changes, options) {
133
213
  const changed = changes.filter((change) => change.before !== change.after);
134
214
  if (!changed.length) {
@@ -140,14 +220,8 @@ async function previewAndApply(changes, options) {
140
220
  throw new Error('Aborted. Re-run with --yes after reviewing the preview.');
141
221
  }
142
222
  const backups = await applyChanges(changed);
143
- options.output(backups.length ? `Backups: ${backups.join(', ')}` : 'Applied new files atomically.');
144
- }
145
- async function duplicateGuidance(root) {
146
- const paths = ['CLAUDE.md', 'AGENTS.md', '.cursor/rules/brainmcp-workspace.mdc'];
147
- const matches = [];
148
- for (const path of paths)
149
- if ((await readText(join(root, path)))?.includes('brainmcp:managed:start'))
150
- matches.push(path);
151
- return matches;
223
+ options.output(backups.length
224
+ ? `Applied changes with atomic per-file writes. Backups: ${backups.join(', ')}`
225
+ : 'Applied changes with atomic per-file writes.');
152
226
  }
153
227
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAuB,MAAM,uBAAuB,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,gBAAgB,EAAE,SAAS,EAA6B,MAAM,kBAAkB,CAAC;AACvH,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAmB,MAAM,iBAAiB,CAAC;AAC1G,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,eAAe,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAa/J,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAY;IAC9C,MAAM,UAAU,GAAgC;QAC9C,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;QAC3C,CAAC,aAAa,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QAC3C,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC;QAC3C,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;KAC5C,CAAC;IACF,MAAM,QAAQ,GAAe,EAAE,CAAC;IAChC,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,UAAU,EAAE,CAAC;QACzC,IAAI,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACxI,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAuB;IACxD,IAAI,OAAO,CAAC,MAAM;QAAE,OAAO,OAAO,CAAC,MAAM,CAAC;IAC1C,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC,CAAC,CAAE,CAAC;IAC7C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC3C,MAAM,IAAI,KAAK,CAAC,8BAA8B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;AAClG,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,OAAuB;IAChD,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;IAC3C,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IAC7F,MAAM,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACxC,OAAO,CAAC,MAAM,CAAC,2BAA2B,WAAW,CAAC,MAAM,CAAC,gFAAgF,CAAC,CAAC;AACjJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,OAAuB;IAClD,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC/F,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9D,OAAO,CAAC,MAAM,CAAC,0CAA0C,CAAC,CAAC;QAC3D,OAAO;IACT,CAAC;IACD,MAAM,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACxC,OAAO,CAAC,MAAM,CAAC,4BAA4B,WAAW,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACnF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAuB;IACvD,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;IAC3C,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAC5F,OAAO,CAAC,MAAM,CAAC,KAAK,WAAW,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,KAAK,iCAAiC,MAAM,CAAC,UAAU,OAAO,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,eAAe,MAAM,CAAC,YAAY,OAAO,cAAc,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;AACrT,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,OAAuB;IAClD,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAC5F,MAAM,MAAM,GAAqC,EAAE,CAAC;IACpD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACjD,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAErD,MAAM,CAAC,IAAI,CAAC,CAAC,yBAAyB,EAAE,MAAM,KAAK,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IAC5H,MAAM,CAAC,IAAI,CAAC,CAAC,oBAAoB,EAAE,QAAQ,KAAK,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IAC/H,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;gBAC9B,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;gBAChC,MAAM,MAAM,GAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAyC,EAAE,KAAqC,CAAC;gBACpH,MAAM,CAAC,IAAI,CAAC,CAAC,mCAAmC,EAAE,MAAM,EAAE,GAAG,KAAK,kBAAkB,EAAE,MAAM,EAAE,GAAG,IAAI,sBAAsB,CAAC,CAAC,CAAC;YAChI,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,CAAC,mCAAmC,EAAE,2EAA2E,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC;YACnK,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,CAAC,mCAAmC,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACpH,CAAC;IACH,CAAC;IACD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,WAAW,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,yBAAyB,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QAC7E,MAAM,CAAC,IAAI,CAAC,CAAC,0BAA0B,EAAE,WAAW,KAAK,CAAC,IAAI,MAAM,KAAK,QAAQ,EAAE,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,WAAW,iBAAiB,CAAC,CAAC,CAAC;QAC/J,MAAM,CAAC,IAAI,CAAC,CAAC,mBAAmB,EAAE,CAAC,OAAO,CAAC,SAAS,IAAI,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC;IACpN,CAAC;IACD,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC;IACzC,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,gEAAgE,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC;QACjJ,MAAM,CAAC,IAAI,CAAC,CAAC,iBAAiB,EAAE,SAAS,CAAC,EAAE,EAAE,QAAQ,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC7E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,CAAC,iBAAiB,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAClG,CAAC;IACD,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,kBAAkB,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,qCAAqC,EAAE,EAAE,CAAC,CAAC;QACtH,MAAM,CAAC,IAAI,CAAC,CAAC,oBAAoB,EAAE,SAAS,CAAC,EAAE,IAAI,SAAS,CAAC,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,MAAM,KAAK,GAAG,EAAE,QAAQ,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACxI,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,CAAC,oBAAoB,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACrG,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,MAAM,CAAC,IAAI,CAAC,CAAC,oBAAoB,EAAE,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;IACnH,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,MAAM;QAAE,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC,CAAC;IACxG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;AAC3G,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,IAAY,EAAE,MAAgB,EAAE,KAAY,EAAE,SAA6B,EAAE,IAAuB;IAChI,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;IACpE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAC3G,OAAO;QACL;YACE,IAAI,EAAE,MAAM,CAAC,UAAU;YACvB,MAAM,EAAE,MAAM;YACd,KAAK,EAAE,IAAI,KAAK,MAAM;gBACpB,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC;gBAC/G,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC;SAClG;QACD;YACE,IAAI,EAAE,MAAM,CAAC,YAAY;YACzB,MAAM,EAAE,QAAQ;YAChB,KAAK,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,QAAQ,EAAE,cAAc,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,QAAQ,CAAC;SAC1H;KACF,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,IAAY,EAAE,MAAoC,EAAE,KAAY;IACrF,MAAM,IAAI,GAAG,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACjD,OAAO;QACL,GAAG,MAAM;QACT,UAAU,EAAE,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC;QAC/C,YAAY,EAAE,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,YAAY,CAAC;QACnD,MAAM,EAAE,MAAM,CAAC,YAAY;QAC3B,OAAO,EAAE,MAAM,CAAC,aAAa;KAC9B,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,OAAqB,EAAE,OAAuB;IAC3E,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3E,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,OAAO,CAAC,MAAM,CAAC,+CAA+C,CAAC,CAAC;QAChE,OAAO;IACT,CAAC;IACD,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IACrD,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC,sBAAsB,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QAChF,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC7E,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;IAC5C,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC;AACtG,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,IAAY;IAC3C,MAAM,KAAK,GAAG,CAAC,WAAW,EAAE,WAAW,EAAE,sCAAsC,CAAC,CAAC;IACjF,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,IAAI,IAAI,KAAK;QAAE,IAAI,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,wBAAwB,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzH,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,18 +1,20 @@
1
1
  #!/usr/bin/env node
2
2
  import { argv, cwd, stdin, stdout } from 'node:process';
3
3
  import { createInterface } from 'node:readline/promises';
4
- import { doctor, init, printConfig, remove } from './commands/index.js';
4
+ import { doctor, init, initAll, printConfig, remove } from './commands/index.js';
5
5
  import { assertClientId } from './lib/config.js';
6
- const HELP = `brainmcp — configure BrainMCP for an agent project
6
+ const HELP = `brainmcp — configure BrainMCP for agent projects
7
7
 
8
8
  Usage:
9
9
  brainmcp init [--client <client>] [--workspace <id>] [--scope project|user] [--yes]
10
+ brainmcp init --all [--workspace <id>] [--scope project|user] [--yes]
10
11
  brainmcp doctor [--client <client>] [--workspace <id>] [--scope project|user]
11
12
  brainmcp print [--client <client>] [--workspace <id>] [--scope project|user]
12
13
  brainmcp remove [--client <client>] [--scope project|user] [--yes]
13
14
 
14
15
  Clients: claude-code, cursor, codex, vscode, generic
15
- Project scope is the default. User scope is explicit and writes under your home directory.
16
+ --all configures Claude Code, Cursor, Codex, and VS Code (generic is client-specific).
17
+ Project scope is the default. User scope writes to each host's supported per-user locations.
16
18
  Every mutation previews a diff and needs confirmation unless --yes is supplied.`;
17
19
  async function main() {
18
20
  const [command, ...rawOptions] = argv.slice(2);
@@ -21,6 +23,10 @@ async function main() {
21
23
  return;
22
24
  }
23
25
  const values = parseOptions(rawOptions);
26
+ if (values.all && values.client)
27
+ throw new Error('Use either --all or --client, not both.');
28
+ if (values.all && command !== 'init')
29
+ throw new Error('--all is currently supported only by init.');
24
30
  const options = {
25
31
  root: values.root ?? cwd(),
26
32
  client: values.client,
@@ -32,7 +38,7 @@ async function main() {
32
38
  };
33
39
  switch (command) {
34
40
  case 'init':
35
- await init(options);
41
+ await (values.all ? initAll(options) : init(options));
36
42
  return;
37
43
  case 'doctor':
38
44
  await doctor(options);
@@ -48,11 +54,13 @@ async function main() {
48
54
  }
49
55
  }
50
56
  function parseOptions(args) {
51
- const result = { yes: false };
57
+ const result = { yes: false, all: false };
52
58
  for (let index = 0; index < args.length; index += 1) {
53
59
  const option = args[index];
54
60
  if (option === '--yes' || option === '-y')
55
61
  result.yes = true;
62
+ else if (option === '--all')
63
+ result.all = true;
56
64
  else if (option === '--client')
57
65
  result.client = assertClientId(readValue(args, ++index, option));
58
66
  else if (option === '--workspace')
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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"}
@@ -19,6 +19,7 @@ export declare const TOML_MARKER_END = "# brainmcp:managed:end";
19
19
  export declare function targetFor(client: ClientId, scope: Scope): ClientTarget;
20
20
  export declare function clientLabel(client: ClientId): string;
21
21
  export declare function resolveWorkspace(value: string | undefined): string | undefined;
22
+ export declare function guidancePreamble(client: ClientId, scope: Scope): string | undefined;
22
23
  export declare function renderGuidance(client: ClientId, workspaceId?: string): string;
23
24
  export declare function brainServerConfig(client: ClientId): Record<string, unknown>;
24
25
  export declare function renderTomlServer(client: ClientId): string;