@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 +132 -0
- package/dist/agent-config.js +65 -4
- package/dist/commands/index.d.ts +7 -0
- package/dist/commands/index.js +99 -25
- package/dist/commands/index.js.map +1 -1
- package/dist/index.js +13 -5
- package/dist/index.js.map +1 -1
- package/dist/lib/config.d.ts +1 -0
- package/dist/lib/config.js +29 -13
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/files.js +75 -10
- package/dist/lib/files.js.map +1 -1
- package/dist/lib/managed.js +356 -15
- package/dist/lib/managed.js.map +1 -1
- package/dist/types/agent-config-stub.d.ts +10 -0
- package/dist/types/agent-config-stub.js +13 -0
- package/dist/types/agent-config-stub.js.map +1 -1
- package/package.json +3 -3
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
|
package/dist/agent-config.js
CHANGED
|
@@ -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
|
-
|
|
236
|
-
|
|
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
|
-
|
|
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 = [
|
|
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.',
|
package/dist/commands/index.d.ts
CHANGED
|
@@ -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>;
|
package/dist/commands/index.js
CHANGED
|
@@ -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
|
|
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
|
|
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
|
|
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${
|
|
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
|
|
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
|
|
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(
|
|
105
|
-
const target = resolveTarget(
|
|
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'
|
|
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(
|
|
123
|
-
const
|
|
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:
|
|
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
|
|
144
|
-
}
|
|
145
|
-
|
|
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":"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"}
|
|
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,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACpF,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,SAAS,GAGV,MAAM,kBAAkB,CAAC;AAC1B,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;AAmB/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,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IACzE,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,OAAO,CAAC,OAAuB;IACnD,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAC9B,uBAAuB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAC5F,CAAC;IACF,MAAM,eAAe,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;IAChE,OAAO,CAAC,MAAM,CACZ,2BAA2B,uBAAuB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,8EAA8E,CAC7J,CAAC;AACJ,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,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC3E,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,EAAE,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IACxE,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,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;AAC/U,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,EAAE,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IACxE,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,EAAE,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,WAAW,iBAAiB,CAAC,CAAC,CAAC;QACxI,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;QAClN,IAAI,MAAM,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;YACpD,MAAM,CAAC,IAAI,CAAC;gBACV,8BAA8B;gBAC9B,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC;oBAC1B,4BAA4B,CAAC,IAAI,CAAC,QAAQ,CAAC;oBAC3C,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAC9B,oCAAoC;aACrC,CAAC,CAAC;QACL,CAAC;IACH,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,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,CAC3B,OAAuB,EACvB,MAAgB,EAChB,SAA6B,EAC7B,IAAuB;IAEvB,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IACxE,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;gBACpB,CAAC,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC;gBAC5D,CAAC,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC;SACpD;KACF,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,OAAuB,EAAE,MAAoC;IAClF,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,EAAE,CAAC;IACvC,IAAI,OAAO,CAAC,KAAK,KAAK,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QAC1D,MAAM,mBAAmB,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC;QAC5E,MAAM,SAAS,GAAG,mBAAmB,CAAC,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC5F,OAAO;YACL,GAAG,MAAM;YACT,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC;YAC1C,YAAY,EAAE,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC;YAC1C,MAAM,EAAE,MAAM,CAAC,YAAY;YAC3B,OAAO,EAAE,MAAM,CAAC,aAAa;SAC9B,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;IAC5D,OAAO;QACL,GAAG,MAAM;QACT,UAAU,EACR,OAAO,CAAC,KAAK,KAAK,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ;YACpD,CAAC,CAAC,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC;YAC9F,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC;QACzC,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,SAAS,oBAAoB,CAC3B,IAAY,EACZ,GAAsB,EACtB,QAAyB;IAEzB,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IACnG,CAAC;IACD,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IAClF,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;AAChG,CAAC;AAED,SAAS,cAAc,CACrB,QAA4B,EAC5B,MAAgB,EAChB,KAAY,EACZ,SAA6B;IAE7B,MAAM,QAAQ,GAAG,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACjD,MAAM,UAAU,GAAG,QAAQ,IAAI,QAAQ;QACrC,CAAC,CAAC,0BAA0B,CAAC,QAAQ,EAAE,QAAQ,CAAC;QAChD,CAAC,CAAC,QAAQ,CAAC;IACb,MAAM,OAAO,GAAG,mBAAmB,CAAC,UAAU,EAAE,cAAc,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;IACnF,IAAI,CAAC,QAAQ,IAAI,UAAU,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC;IAC1D,OAAO,GAAG,QAAQ,OAAO,OAAO,EAAE,CAAC;AACrC,CAAC;AAED,SAAS,cAAc,CACrB,QAA4B,EAC5B,MAAgB,EAChB,KAAY;IAEZ,MAAM,QAAQ,GAAG,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACjD,MAAM,OAAO,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,QAAQ,IAAI,OAAO;QACpC,CAAC,CAAC,0BAA0B,CAAC,OAAO,EAAE,QAAQ,CAAC;QAC/C,CAAC,CAAC,OAAO,CAAC;IACZ,OAAO,QAAQ,IAAI,UAAU,EAAE,IAAI,EAAE,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC;AACrF,CAAC;AAED,SAAS,0BAA0B,CAAC,IAAY,EAAE,QAAgB;IAChE,MAAM,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAC3C,IAAI,SAAS,GAAG,IAAI,CAAC;IACrB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,OAAO,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACpC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC3C,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IACD,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACpD,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAqB;IAC7C,MAAM,MAAM,GAAG,IAAI,GAAG,EAAsB,CAAC;IAC7C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAChC,SAAS;QACX,CAAC;QACD,IAAI,QAAQ,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,IAAI,QAAQ,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC;YACzE,MAAM,IAAI,KAAK,CAAC,mCAAmC,MAAM,CAAC,IAAI,mCAAmC,CAAC,CAAC;QACrG,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;AAC9B,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,CACZ,OAAO,CAAC,MAAM;QACZ,CAAC,CAAC,yDAAyD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QAC/E,CAAC,CAAC,8CAA8C,CACnD,CAAC;AACJ,CAAC"}
|
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
|
|
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
|
-
|
|
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":";AACA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAY,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAuB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/config.d.ts
CHANGED
|
@@ -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;
|