@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.
@@ -1,4 +1,4 @@
1
- import { BRAIN_ENDPOINT, brainServerConfig, renderTomlServer, MARKER_END, MARKER_START, TOML_MARKER_END, TOML_MARKER_START } from './config.js';
1
+ import { brainServerConfig, renderTomlServer, MARKER_END, MARKER_START, TOML_MARKER_END, TOML_MARKER_START } from './config.js';
2
2
  export function hasManagedBlock(text, format) {
3
3
  return text.includes(format === 'toml' ? TOML_MARKER_START : MARKER_START);
4
4
  }
@@ -45,22 +45,30 @@ export function removeTomlBlock(existing) {
45
45
  return result.trim() ? result : undefined;
46
46
  }
47
47
  export function upsertJsonServer(existing, client, rootKey = 'mcpServers') {
48
- const source = existing?.trim() || `{\n "${rootKey}": {}\n}\n`;
48
+ const source = existing?.trim() ? existing : `{\n "${rootKey}": {}\n}\n`;
49
49
  const parsed = parseJsonc(source);
50
50
  const servers = parsed[rootKey];
51
51
  if (servers !== undefined && (typeof servers !== 'object' || servers === null || Array.isArray(servers))) {
52
52
  throw new Error(`${rootKey} must be an object.`);
53
53
  }
54
+ const root = rootObjectOpen(source);
55
+ const serverMap = servers !== undefined
56
+ ? findObjectPropertyObject(source, root, rootKey)
57
+ : undefined;
58
+ if (servers !== undefined && !serverMap)
59
+ throw new Error(`Could not locate the ${rootKey} object.`);
54
60
  const existingBrain = servers?.brain;
55
61
  if (existingBrain !== undefined && !isBrainConfig(existingBrain)) {
56
62
  throw new Error('Refusing to overwrite a manually-managed "brain" MCP server entry.');
57
63
  }
58
- if (existingBrain !== undefined)
59
- return source;
64
+ if (existingBrain !== undefined) {
65
+ if (serverMap)
66
+ findObjectPropertyObject(source, serverMap.valueOpen, 'brain');
67
+ return existing ?? source;
68
+ }
60
69
  if (servers !== undefined)
61
70
  return insertJsonServer(source, brainServerConfig(client), rootKey);
62
- const next = { ...parsed, [rootKey]: { brain: brainServerConfig(client) } };
63
- return `${JSON.stringify(next, null, 2)}\n`;
71
+ return insertJsonRootMap(source, rootKey, { brain: brainServerConfig(client) });
64
72
  }
65
73
  export function removeJsonServer(existing, rootKey = 'mcpServers') {
66
74
  if (existing === undefined)
@@ -79,31 +87,54 @@ export function removeJsonServer(existing, rootKey = 'mcpServers') {
79
87
  const next = { ...parsed, [rootKey]: servers };
80
88
  if (Object.keys(next).length === 1 && Object.keys(servers).length === 0)
81
89
  return undefined;
82
- return `${JSON.stringify(next, null, 2)}\n`;
90
+ const root = rootObjectOpen(existing);
91
+ const serverMap = findObjectPropertyObject(existing, root, rootKey);
92
+ if (!serverMap)
93
+ throw new Error(`Could not locate the ${rootKey} object.`);
94
+ return removeObjectProperty(existing, serverMap.valueOpen, 'brain');
83
95
  }
84
96
  export function parseJsonc(source) {
85
97
  try {
86
- return JSON.parse(source.replace(/\/\*[\s\S]*?\*\//g, '').replace(/(^|[^:])\/\/.*$/gm, '$1').replace(/,\s*([}\]])/g, '$1'));
98
+ const parsed = JSON.parse(removeTrailingCommas(stripJsonComments(source)));
99
+ if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {
100
+ throw new Error('the root value must be an object');
101
+ }
102
+ return parsed;
87
103
  }
88
104
  catch (error) {
89
105
  throw new Error(`Invalid JSON/JSONC configuration: ${error instanceof Error ? error.message : String(error)}`);
90
106
  }
91
107
  }
92
108
  function isBrainConfig(value) {
93
- return typeof value === 'object' && value !== null && value.url === BRAIN_ENDPOINT;
109
+ if (typeof value !== 'object' || value === null || Array.isArray(value))
110
+ return false;
111
+ return ['claude-code', 'cursor', 'vscode', 'generic'].some((client) => sameJsonValue(value, brainServerConfig(client)));
112
+ }
113
+ function sameJsonValue(left, right) {
114
+ if (left === right)
115
+ return true;
116
+ if (typeof left !== 'object' || left === null || Array.isArray(left) ||
117
+ typeof right !== 'object' || right === null || Array.isArray(right))
118
+ return false;
119
+ const leftRecord = left;
120
+ const rightRecord = right;
121
+ const leftKeys = Object.keys(leftRecord).sort();
122
+ const rightKeys = Object.keys(rightRecord).sort();
123
+ return leftKeys.length === rightKeys.length &&
124
+ leftKeys.every((key, index) => key === rightKeys[index] && sameJsonValue(leftRecord[key], rightRecord[key]));
94
125
  }
95
126
  function escapeRegex(value) {
96
127
  return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
97
128
  }
98
129
  /** Adds a server without reformatting existing JSONC comments or sibling entries. */
99
130
  function insertJsonServer(source, server, rootKey) {
100
- const match = new RegExp(`"${rootKey}"\\s*:\\s*\\{`).exec(source);
101
- if (!match)
131
+ const root = rootObjectOpen(source);
132
+ const property = findObjectPropertyObject(source, root, rootKey);
133
+ if (!property)
102
134
  throw new Error(`Could not locate the ${rootKey} object.`);
103
- const open = source.indexOf('{', match.index);
104
- const close = matchingBrace(source, open);
135
+ const { valueOpen: open, valueClose: close } = property;
105
136
  const inner = source.slice(open + 1, close);
106
- const baseIndent = source.match(new RegExp(`\\n(\\s+)"${rootKey}"`))?.[1] ?? '';
137
+ const baseIndent = lineIndentAt(source, property.keyStart);
107
138
  const entryIndent = `${baseIndent} `;
108
139
  const rendered = `"brain": ${JSON.stringify(server, null, 2).replace(/\n/g, `\n${entryIndent}`)}`;
109
140
  if (!inner.trim())
@@ -112,12 +143,312 @@ function insertJsonServer(source, server, rootKey) {
112
143
  const comma = source.slice(open + 1, end).trimEnd().endsWith(',') ? '' : ',';
113
144
  return `${source.slice(0, end)}${comma}\n${entryIndent}${rendered}${source.slice(end)}`;
114
145
  }
146
+ /** Adds a missing top-level server map without reformatting unrelated app state or JSONC comments. */
147
+ function insertJsonRootMap(source, rootKey, value) {
148
+ const open = rootObjectOpen(source);
149
+ const close = matchingBrace(source, open);
150
+ const inner = source.slice(open + 1, close);
151
+ const firstEntry = skipJsoncTrivia(source, open + 1, close);
152
+ const entryIndent = firstEntry < close && source[firstEntry] === '"'
153
+ ? lineIndentAt(source, firstEntry) || ' '
154
+ : `${lineIndentAt(source, open)} `;
155
+ const rendered = `"${rootKey}": ${JSON.stringify(value, null, 2).replace(/\n/g, `\n${entryIndent}`)}`;
156
+ if (!inner.trim()) {
157
+ return `${source.slice(0, open + 1)}\n${entryIndent}${rendered}\n${source.slice(close)}`;
158
+ }
159
+ const end = open + 1 + inner.search(/\s*$/);
160
+ const comma = source.slice(open + 1, end).trimEnd().endsWith(',') ? '' : ',';
161
+ return `${source.slice(0, end)}${comma}\n${entryIndent}${rendered}${source.slice(end)}`;
162
+ }
163
+ /** Finds an object-valued property at the current object's top level, ignoring strings/comments. */
164
+ function findObjectPropertyObject(source, objectOpen, propertyName) {
165
+ const objectClose = matchingBrace(source, objectOpen);
166
+ let found;
167
+ let index = objectOpen + 1;
168
+ while (index < objectClose) {
169
+ index = skipJsoncTrivia(source, index, objectClose);
170
+ if (index >= objectClose)
171
+ return found;
172
+ if (source[index] === ',') {
173
+ index += 1;
174
+ continue;
175
+ }
176
+ if (source[index] !== '"')
177
+ throw new Error('Invalid JSON/JSONC object property.');
178
+ const keyStart = index;
179
+ const keyEnd = jsonStringEnd(source, keyStart);
180
+ const key = JSON.parse(source.slice(keyStart, keyEnd + 1));
181
+ const colon = skipJsoncTrivia(source, keyEnd + 1, objectClose);
182
+ if (source[colon] !== ':')
183
+ throw new Error('Invalid JSON/JSONC object property.');
184
+ const valueOpen = skipJsoncTrivia(source, colon + 1, objectClose);
185
+ if (key === propertyName) {
186
+ if (source[valueOpen] !== '{')
187
+ throw new Error(`${propertyName} must be an object.`);
188
+ if (found)
189
+ throw new Error(`Duplicate ${propertyName} properties are ambiguous; remove the duplicate before continuing.`);
190
+ found = { keyStart, valueOpen, valueClose: matchingBrace(source, valueOpen) };
191
+ }
192
+ const delimiter = valueDelimiter(source, valueOpen, objectClose);
193
+ if (delimiter >= objectClose)
194
+ return found;
195
+ index = delimiter + 1;
196
+ }
197
+ return found;
198
+ }
199
+ /** Removes one top-level object property without reformatting its siblings or their comments. */
200
+ function removeObjectProperty(source, objectOpen, propertyName) {
201
+ const property = findObjectPropertyObject(source, objectOpen, propertyName);
202
+ if (!property)
203
+ throw new Error(`Could not locate the ${propertyName} object.`);
204
+ const objectClose = matchingBrace(source, objectOpen);
205
+ const next = skipJsoncTrivia(source, property.valueClose + 1, objectClose);
206
+ if (source[next] === ',') {
207
+ return `${source.slice(0, property.keyStart)}${source.slice(next + 1)}`;
208
+ }
209
+ const previousComma = previousTopLevelComma(source, objectOpen, property.keyStart);
210
+ if (previousComma >= 0) {
211
+ return `${source.slice(0, previousComma)}${source.slice(property.valueClose + 1)}`;
212
+ }
213
+ return `${source.slice(0, property.keyStart)}${source.slice(property.valueClose + 1)}`;
214
+ }
215
+ function rootObjectOpen(source) {
216
+ const open = skipJsoncTrivia(source, 0, source.length);
217
+ if (source[open] !== '{')
218
+ throw new Error('Could not locate the root configuration object.');
219
+ return open;
220
+ }
221
+ function lineIndentAt(source, index) {
222
+ const lineStart = source.lastIndexOf('\n', index - 1) + 1;
223
+ return source.slice(lineStart, index).match(/^[\t ]*/)?.[0] ?? '';
224
+ }
225
+ function jsonStringEnd(source, start) {
226
+ let escaped = false;
227
+ for (let index = start + 1; index < source.length; index += 1) {
228
+ const character = source[index];
229
+ if (escaped)
230
+ escaped = false;
231
+ else if (character === '\\')
232
+ escaped = true;
233
+ else if (character === '"')
234
+ return index;
235
+ }
236
+ throw new Error('Unterminated JSON string.');
237
+ }
238
+ function valueDelimiter(source, start, objectClose) {
239
+ let objectDepth = 0;
240
+ let arrayDepth = 0;
241
+ for (let index = start; index <= objectClose; index += 1) {
242
+ const character = source[index];
243
+ const next = source[index + 1];
244
+ if (character === '"') {
245
+ index = jsonStringEnd(source, index);
246
+ continue;
247
+ }
248
+ if (character === '/' && next === '/') {
249
+ index = source.indexOf('\n', index + 2);
250
+ if (index < 0 || index > objectClose)
251
+ return objectClose;
252
+ continue;
253
+ }
254
+ if (character === '/' && next === '*') {
255
+ const end = source.indexOf('*/', index + 2);
256
+ if (end < 0)
257
+ throw new Error('Unterminated JSONC block comment.');
258
+ index = end + 1;
259
+ continue;
260
+ }
261
+ if (index === objectClose && objectDepth === 0 && arrayDepth === 0)
262
+ return index;
263
+ if (character === '{')
264
+ objectDepth += 1;
265
+ else if (character === '}')
266
+ objectDepth -= 1;
267
+ else if (character === '[')
268
+ arrayDepth += 1;
269
+ else if (character === ']')
270
+ arrayDepth -= 1;
271
+ else if (character === ',' && objectDepth === 0 && arrayDepth === 0)
272
+ return index;
273
+ }
274
+ throw new Error('Unterminated JSON/JSONC property value.');
275
+ }
276
+ function previousTopLevelComma(source, objectOpen, before) {
277
+ let objectDepth = 0;
278
+ let arrayDepth = 0;
279
+ let comma = -1;
280
+ for (let index = objectOpen + 1; index < before; index += 1) {
281
+ const character = source[index];
282
+ const next = source[index + 1];
283
+ if (character === '"') {
284
+ index = jsonStringEnd(source, index);
285
+ continue;
286
+ }
287
+ if (character === '/' && next === '/') {
288
+ const end = source.indexOf('\n', index + 2);
289
+ if (end < 0 || end >= before)
290
+ break;
291
+ index = end;
292
+ continue;
293
+ }
294
+ if (character === '/' && next === '*') {
295
+ const end = source.indexOf('*/', index + 2);
296
+ if (end < 0)
297
+ throw new Error('Unterminated JSONC block comment.');
298
+ index = end + 1;
299
+ continue;
300
+ }
301
+ if (character === '{')
302
+ objectDepth += 1;
303
+ else if (character === '}')
304
+ objectDepth -= 1;
305
+ else if (character === '[')
306
+ arrayDepth += 1;
307
+ else if (character === ']')
308
+ arrayDepth -= 1;
309
+ else if (character === ',' && objectDepth === 0 && arrayDepth === 0)
310
+ comma = index;
311
+ }
312
+ return comma;
313
+ }
314
+ function skipJsoncTrivia(source, start, limit) {
315
+ let index = start;
316
+ while (index < limit) {
317
+ if (/\s/.test(source[index])) {
318
+ index += 1;
319
+ continue;
320
+ }
321
+ if (source[index] === '/' && source[index + 1] === '/') {
322
+ const end = source.indexOf('\n', index + 2);
323
+ index = end < 0 ? limit : end + 1;
324
+ continue;
325
+ }
326
+ if (source[index] === '/' && source[index + 1] === '*') {
327
+ const end = source.indexOf('*/', index + 2);
328
+ if (end < 0)
329
+ throw new Error('Unterminated JSONC block comment.');
330
+ index = end + 2;
331
+ continue;
332
+ }
333
+ break;
334
+ }
335
+ return index;
336
+ }
337
+ function stripJsonComments(source) {
338
+ let output = '';
339
+ let quoted = false;
340
+ let escaped = false;
341
+ let lineComment = false;
342
+ let blockComment = false;
343
+ for (let index = 0; index < source.length; index += 1) {
344
+ const character = source[index];
345
+ const next = source[index + 1];
346
+ if (index === 0 && character === '\uFEFF') {
347
+ output += ' ';
348
+ continue;
349
+ }
350
+ if (lineComment) {
351
+ output += character === '\n' ? '\n' : ' ';
352
+ if (character === '\n')
353
+ lineComment = false;
354
+ continue;
355
+ }
356
+ if (blockComment) {
357
+ if (character === '*' && next === '/') {
358
+ output += ' ';
359
+ blockComment = false;
360
+ index += 1;
361
+ }
362
+ else {
363
+ output += character === '\n' ? '\n' : ' ';
364
+ }
365
+ continue;
366
+ }
367
+ if (quoted) {
368
+ output += character;
369
+ if (escaped)
370
+ escaped = false;
371
+ else if (character === '\\')
372
+ escaped = true;
373
+ else if (character === '"')
374
+ quoted = false;
375
+ continue;
376
+ }
377
+ if (character === '"') {
378
+ quoted = true;
379
+ output += character;
380
+ }
381
+ else if (character === '/' && next === '/') {
382
+ output += ' ';
383
+ lineComment = true;
384
+ index += 1;
385
+ }
386
+ else if (character === '/' && next === '*') {
387
+ output += ' ';
388
+ blockComment = true;
389
+ index += 1;
390
+ }
391
+ else {
392
+ output += character;
393
+ }
394
+ }
395
+ if (blockComment)
396
+ throw new Error('Unterminated JSONC block comment.');
397
+ return output;
398
+ }
399
+ function removeTrailingCommas(source) {
400
+ let output = '';
401
+ let quoted = false;
402
+ let escaped = false;
403
+ for (let index = 0; index < source.length; index += 1) {
404
+ const character = source[index];
405
+ if (quoted) {
406
+ output += character;
407
+ if (escaped)
408
+ escaped = false;
409
+ else if (character === '\\')
410
+ escaped = true;
411
+ else if (character === '"')
412
+ quoted = false;
413
+ continue;
414
+ }
415
+ if (character === '"') {
416
+ quoted = true;
417
+ output += character;
418
+ continue;
419
+ }
420
+ if (character === ',') {
421
+ let next = index + 1;
422
+ while (next < source.length && /\s/.test(source[next]))
423
+ next += 1;
424
+ if (source[next] === '}' || source[next] === ']')
425
+ continue;
426
+ }
427
+ output += character;
428
+ }
429
+ return output;
430
+ }
115
431
  function matchingBrace(source, open) {
116
432
  let depth = 0;
117
433
  let quote = false;
118
434
  let escaped = false;
435
+ let lineComment = false;
436
+ let blockComment = false;
119
437
  for (let index = open; index < source.length; index += 1) {
120
438
  const character = source[index];
439
+ const next = source[index + 1];
440
+ if (lineComment) {
441
+ if (character === '\n')
442
+ lineComment = false;
443
+ continue;
444
+ }
445
+ if (blockComment) {
446
+ if (character === '*' && next === '/') {
447
+ blockComment = false;
448
+ index += 1;
449
+ }
450
+ continue;
451
+ }
121
452
  if (quote) {
122
453
  if (escaped)
123
454
  escaped = false;
@@ -127,6 +458,16 @@ function matchingBrace(source, open) {
127
458
  quote = false;
128
459
  continue;
129
460
  }
461
+ if (character === '/' && next === '/') {
462
+ lineComment = true;
463
+ index += 1;
464
+ continue;
465
+ }
466
+ if (character === '/' && next === '*') {
467
+ blockComment = true;
468
+ index += 1;
469
+ continue;
470
+ }
130
471
  if (character === '"')
131
472
  quote = true;
132
473
  else if (character === '{')
@@ -134,6 +475,6 @@ function matchingBrace(source, open) {
134
475
  else if (character === '}' && --depth === 0)
135
476
  return index;
136
477
  }
137
- throw new Error('Unterminated mcpServers object.');
478
+ throw new Error('Unterminated JSON object.');
138
479
  }
139
480
  //# sourceMappingURL=managed.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"managed.js","sourceRoot":"","sources":["../../src/lib/managed.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"managed.js","sourceRoot":"","sources":["../../src/lib/managed.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,9 @@
1
1
  /** Emit stub — replaced by bundled agent-config.js after `tsc`. */
2
2
  export type McpClientProfileId = 'claude-code' | 'cursor' | 'codex' | 'vscode' | 'generic';
3
3
  export declare const BRAIN_MCP_ENDPOINT = "https://mcp.brainmcp.ai/mcp";
4
+ export declare const BRAINMCP_GLOBAL_CLIENTS: readonly ["claude-code", "cursor", "codex", "vscode"];
4
5
  export declare const GUIDANCE_VERSION = "2026.07.10";
6
+ export declare const VSCODE_USER_INSTRUCTIONS_FRONTMATTER = "";
5
7
  export declare const MCP_CLIENT_PROFILES: Record<McpClientProfileId, {
6
8
  id: McpClientProfileId;
7
9
  label: string;
@@ -26,6 +28,14 @@ export declare function buildClaudeCodeMcpAddCommand(): string;
26
28
  export declare function buildBrainmcpInitCommand(_options?: {
27
29
  workspaceId?: string;
28
30
  client?: McpClientProfileId;
31
+ all?: boolean;
32
+ scope?: 'project' | 'user';
33
+ invoke?: 'npx' | 'global';
34
+ yes?: boolean;
35
+ }): string;
36
+ export declare function buildBrainmcpGlobalInstallCommand(): string;
37
+ export declare function buildBrainmcpUserScopeSetupScript(_options?: {
38
+ workspaceId?: string;
29
39
  }): string;
30
40
  export declare function buildAgentSkillMarkdown(_options?: {
31
41
  workspaceId?: string;
@@ -1,5 +1,12 @@
1
1
  export const BRAIN_MCP_ENDPOINT = 'https://mcp.brainmcp.ai/mcp';
2
+ export const BRAINMCP_GLOBAL_CLIENTS = [
3
+ 'claude-code',
4
+ 'cursor',
5
+ 'codex',
6
+ 'vscode',
7
+ ];
2
8
  export const GUIDANCE_VERSION = '2026.07.10';
9
+ export const VSCODE_USER_INSTRUCTIONS_FRONTMATTER = '';
3
10
  export const MCP_CLIENT_PROFILES = {};
4
11
  export function buildProjectInstructionBlock(_options) {
5
12
  return '';
@@ -16,6 +23,12 @@ export function buildClaudeCodeMcpAddCommand() {
16
23
  export function buildBrainmcpInitCommand(_options) {
17
24
  return '';
18
25
  }
26
+ export function buildBrainmcpGlobalInstallCommand() {
27
+ return '';
28
+ }
29
+ export function buildBrainmcpUserScopeSetupScript(_options) {
30
+ return '';
31
+ }
19
32
  export function buildAgentSkillMarkdown(_options) {
20
33
  return '';
21
34
  }
@@ -1 +1 @@
1
- {"version":3,"file":"agent-config-stub.js","sourceRoot":"","sources":["../../src/types/agent-config-stub.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,MAAM,kBAAkB,GAAG,6BAA6B,CAAC;AAChE,MAAM,CAAC,MAAM,gBAAgB,GAAG,YAAY,CAAC;AAC7C,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAWlC,CAAC;AAEF,MAAM,UAAU,4BAA4B,CAAC,QAG5C;IACC,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAA0D;IACxF,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,QAAqC;IACtE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,4BAA4B;IAC1C,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,QAGxC;IACC,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,QAAmC;IACzE,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,OAAO,EAAE,CAAC;AACZ,CAAC"}
1
+ {"version":3,"file":"agent-config-stub.js","sourceRoot":"","sources":["../../src/types/agent-config-stub.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,MAAM,kBAAkB,GAAG,6BAA6B,CAAC;AAChE,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,aAAa;IACb,QAAQ;IACR,OAAO;IACP,QAAQ;CACwC,CAAC;AACnD,MAAM,CAAC,MAAM,gBAAgB,GAAG,YAAY,CAAC;AAC7C,MAAM,CAAC,MAAM,oCAAoC,GAAG,EAAE,CAAC;AACvD,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAWlC,CAAC;AAEF,MAAM,UAAU,4BAA4B,CAAC,QAG5C;IACC,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAA0D;IACxF,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,QAAqC;IACtE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,4BAA4B;IAC1C,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,QAOxC;IACC,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,iCAAiC;IAC/C,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,iCAAiC,CAAC,QAAmC;IACnF,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,QAAmC;IACzE,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,OAAO,EAAE,CAAC;AACZ,CAAC"}
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@brainmcp/brainmcp",
3
- "version": "0.1.0",
4
- "description": "Safely configure BrainMCP project guidance and MCP connections",
3
+ "version": "0.1.2",
4
+ "description": "Safely configure BrainMCP guidance and MCP connections across agent projects",
5
5
  "type": "module",
6
6
  "bin": {
7
- "brainmcp": "./dist/index.js"
7
+ "brainmcp": "dist/index.js"
8
8
  },
9
9
  "files": [
10
10
  "dist"