@brutalist/mcp 1.3.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/brutalist-server.d.ts +1 -1
- package/dist/brutalist-server.d.ts.map +1 -1
- package/dist/brutalist-server.js +54 -25
- package/dist/brutalist-server.js.map +1 -1
- package/dist/cli-agents.d.ts +4 -1
- package/dist/cli-agents.d.ts.map +1 -1
- package/dist/cli-agents.js +130 -14
- package/dist/cli-agents.js.map +1 -1
- package/dist/formatting/response-formatter.d.ts.map +1 -1
- package/dist/formatting/response-formatter.js +27 -0
- package/dist/formatting/response-formatter.js.map +1 -1
- package/dist/handlers/tool-handler.d.ts +1 -1
- package/dist/handlers/tool-handler.d.ts.map +1 -1
- package/dist/handlers/tool-handler.js +5 -4
- package/dist/handlers/tool-handler.js.map +1 -1
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -1
- package/dist/logger.d.ts +23 -0
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +166 -0
- package/dist/logger.js.map +1 -1
- package/dist/mcp-registry.d.ts +38 -0
- package/dist/mcp-registry.d.ts.map +1 -0
- package/dist/mcp-registry.js +145 -0
- package/dist/mcp-registry.js.map +1 -0
- package/dist/system-prompts.d.ts +2 -1
- package/dist/system-prompts.d.ts.map +1 -1
- package/dist/system-prompts.js +23 -2
- package/dist/system-prompts.js.map +1 -1
- package/dist/test-utils/server-harness.js +1 -1
- package/dist/test-utils/server-harness.js.map +1 -1
- package/dist/types/tool-config.js +1 -1
- package/dist/types/tool-config.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { BrutalistServer } from './brutalist-server.js';
|
|
3
|
+
import { logger } from './logger.js';
|
|
4
|
+
// Graceful shutdown on stdio disconnect — the MCP SDK throws "Not connected"
|
|
5
|
+
// when the parent process closes the pipe. This is normal during shutdown.
|
|
6
|
+
process.on('uncaughtException', (error) => {
|
|
7
|
+
if (error.message === 'Not connected') {
|
|
8
|
+
logger.shutdown();
|
|
9
|
+
process.exit(0);
|
|
10
|
+
}
|
|
11
|
+
console.error("Uncaught exception:", error instanceof Error ? error.message : String(error));
|
|
12
|
+
logger.shutdown();
|
|
13
|
+
process.exit(1);
|
|
14
|
+
});
|
|
3
15
|
async function main() {
|
|
4
16
|
try {
|
|
5
17
|
// Check if HTTP mode is requested via environment variable or command line
|
|
@@ -17,11 +29,13 @@ async function main() {
|
|
|
17
29
|
}
|
|
18
30
|
catch (error) {
|
|
19
31
|
console.error("Fatal error:", error instanceof Error ? error.message : String(error));
|
|
32
|
+
logger.shutdown();
|
|
20
33
|
process.exit(1);
|
|
21
34
|
}
|
|
22
35
|
}
|
|
23
36
|
main().catch((error) => {
|
|
24
37
|
console.error("Unhandled exception:", error instanceof Error ? error.message : String(error));
|
|
38
|
+
logger.shutdown();
|
|
25
39
|
process.exit(1);
|
|
26
40
|
});
|
|
27
41
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,6EAA6E;AAC7E,2EAA2E;AAC3E,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,KAAK,EAAE,EAAE;IACxC,IAAI,KAAK,CAAC,OAAO,KAAK,eAAe,EAAE,CAAC;QACtC,MAAM,CAAC,QAAQ,EAAE,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7F,MAAM,CAAC,QAAQ,EAAE,CAAC;IAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC;QACH,2EAA2E;QAC3E,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACzF,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAEtF,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;YACjC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;YACrC,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QAEH,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,sDAAsD,IAAI,EAAE,CAAC,CAAC;YAC1E,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;QAC1E,CAAC;QAED,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACtF,MAAM,CAAC,QAAQ,EAAE,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9F,MAAM,CAAC,QAAQ,EAAE,CAAC;IAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/dist/logger.d.ts
CHANGED
|
@@ -1,12 +1,35 @@
|
|
|
1
1
|
export declare class Logger {
|
|
2
2
|
private static instance;
|
|
3
3
|
private debugMode;
|
|
4
|
+
private fileEnabled;
|
|
5
|
+
private logDir;
|
|
6
|
+
private logFilePath;
|
|
7
|
+
private maxFileSize;
|
|
8
|
+
private maxFiles;
|
|
9
|
+
private fileLogLevel;
|
|
10
|
+
private currentFileSize;
|
|
11
|
+
private rotating;
|
|
12
|
+
private pid;
|
|
4
13
|
private constructor();
|
|
5
14
|
static getInstance(): Logger;
|
|
6
15
|
info(message: string, data?: any): void;
|
|
7
16
|
warn(message: string, data?: any): void;
|
|
8
17
|
error(message: string, error?: Error | any): void;
|
|
9
18
|
debug(message: string, data?: any): void;
|
|
19
|
+
/** No-op kept for API compatibility. Writes are synchronous, nothing to flush. */
|
|
20
|
+
shutdown(): void;
|
|
21
|
+
private initFileLogging;
|
|
22
|
+
private writeToFile;
|
|
23
|
+
/**
|
|
24
|
+
* Size-based ring rotation.
|
|
25
|
+
*
|
|
26
|
+
* brutalist.log → brutalist.1.log
|
|
27
|
+
* brutalist.1.log → brutalist.2.log
|
|
28
|
+
* …
|
|
29
|
+
* brutalist.{max}.log → deleted
|
|
30
|
+
*/
|
|
31
|
+
private rotate;
|
|
32
|
+
private disableFileLogging;
|
|
10
33
|
}
|
|
11
34
|
export declare const logger: Logger;
|
|
12
35
|
//# sourceMappingURL=logger.d.ts.map
|
package/dist/logger.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAwCA,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAS;IAChC,OAAO,CAAC,SAAS,CAAU;IAG3B,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,WAAW,CAA2B;IAC9C,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,YAAY,CAA2B;IAC/C,OAAO,CAAC,eAAe,CAAa;IACpC,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,GAAG,CAAuB;IAElC,OAAO;IAKP,MAAM,CAAC,WAAW,IAAI,MAAM;IAW5B,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI;IAKvC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI;IAKvC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,GAAG,GAAG,IAAI;IAejD,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI;IASxC,kFAAkF;IAClF,QAAQ,IAAI,IAAI;IAQhB,OAAO,CAAC,eAAe;IA6CvB,OAAO,CAAC,WAAW;IA4BnB;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM;IAiCd,OAAO,CAAC,kBAAkB;CAK3B;AAED,eAAO,MAAM,MAAM,QAAuB,CAAC"}
|
package/dist/logger.js
CHANGED
|
@@ -1,8 +1,45 @@
|
|
|
1
|
+
import { appendFileSync, statSync, renameSync, unlinkSync, mkdirSync, existsSync, openSync, closeSync } from 'fs';
|
|
2
|
+
import { join } from 'path';
|
|
3
|
+
import { homedir } from 'os';
|
|
4
|
+
/**
|
|
5
|
+
* Production logger with optional size-rotated file output.
|
|
6
|
+
*
|
|
7
|
+
* Stderr output (human-readable) is always active — this is the MCP-safe
|
|
8
|
+
* channel since stdout is reserved for protocol messages.
|
|
9
|
+
*
|
|
10
|
+
* File output (NDJSON) is opt-in via BRUTALIST_LOG_FILE=true.
|
|
11
|
+
* Files are written to ~/.brutalist-mcp/logs/ by default and capped
|
|
12
|
+
* via size-based ring rotation so disk usage never exceeds
|
|
13
|
+
* MAX_SIZE × (MAX_FILES + 1).
|
|
14
|
+
*
|
|
15
|
+
* Uses synchronous file writes (appendFileSync) so every log line
|
|
16
|
+
* survives crashes — essential for post-mortem debugging.
|
|
17
|
+
*
|
|
18
|
+
* Environment variables:
|
|
19
|
+
* BRUTALIST_LOG_FILE – "true" to enable file logging
|
|
20
|
+
* BRUTALIST_LOG_DIR – override log directory
|
|
21
|
+
* BRUTALIST_LOG_MAX_SIZE – max MB per file (default 5)
|
|
22
|
+
* BRUTALIST_LOG_MAX_FILES – rotated files to keep (default 3)
|
|
23
|
+
* BRUTALIST_LOG_LEVEL – minimum file log level (default "info")
|
|
24
|
+
*/
|
|
25
|
+
const LOG_LEVELS = { debug: 0, info: 1, warn: 2, error: 3 };
|
|
26
|
+
const LOG_FILENAME = 'brutalist.log';
|
|
1
27
|
export class Logger {
|
|
2
28
|
static instance;
|
|
3
29
|
debugMode;
|
|
30
|
+
// File logging state
|
|
31
|
+
fileEnabled = false;
|
|
32
|
+
logDir = '';
|
|
33
|
+
logFilePath = '';
|
|
34
|
+
maxFileSize = 5 * 1024 * 1024; // 5 MB
|
|
35
|
+
maxFiles = 3;
|
|
36
|
+
fileLogLevel = LOG_LEVELS.info;
|
|
37
|
+
currentFileSize = 0;
|
|
38
|
+
rotating = false;
|
|
39
|
+
pid = process.pid;
|
|
4
40
|
constructor() {
|
|
5
41
|
this.debugMode = process.env.DEBUG === 'true' || process.env.NODE_ENV === 'development';
|
|
42
|
+
this.initFileLogging();
|
|
6
43
|
}
|
|
7
44
|
static getInstance() {
|
|
8
45
|
if (!Logger.instance) {
|
|
@@ -10,22 +47,151 @@ export class Logger {
|
|
|
10
47
|
}
|
|
11
48
|
return Logger.instance;
|
|
12
49
|
}
|
|
50
|
+
// ---------------------------------------------------------------------------
|
|
51
|
+
// Public API — unchanged signatures, all call sites continue to work
|
|
52
|
+
// ---------------------------------------------------------------------------
|
|
13
53
|
info(message, data) {
|
|
14
54
|
console.error(`[BRUTALIST MCP] INFO: ${message}`, data ? JSON.stringify(data) : '');
|
|
55
|
+
this.writeToFile('info', message, data);
|
|
15
56
|
}
|
|
16
57
|
warn(message, data) {
|
|
17
58
|
console.error(`[BRUTALIST MCP] WARN: ${message}`, data ? JSON.stringify(data) : '');
|
|
59
|
+
this.writeToFile('warn', message, data);
|
|
18
60
|
}
|
|
19
61
|
error(message, error) {
|
|
20
62
|
console.error(`[BRUTALIST MCP] ERROR: ${message}`, error instanceof Error ? error.message : error);
|
|
21
63
|
if (this.debugMode && error instanceof Error && error.stack) {
|
|
22
64
|
console.error(error.stack);
|
|
23
65
|
}
|
|
66
|
+
// File output always gets the full error shape for post-mortem debugging
|
|
67
|
+
const fileData = error instanceof Error
|
|
68
|
+
? { message: error.message, stack: error.stack, name: error.name }
|
|
69
|
+
: error;
|
|
70
|
+
this.writeToFile('error', message, fileData);
|
|
24
71
|
}
|
|
25
72
|
debug(message, data) {
|
|
26
73
|
if (this.debugMode) {
|
|
27
74
|
console.error(`[BRUTALIST MCP] DEBUG: ${message}`, data ? JSON.stringify(data) : '');
|
|
28
75
|
}
|
|
76
|
+
// File always receives debug lines if the configured level allows it,
|
|
77
|
+
// regardless of the stderr debug gate
|
|
78
|
+
this.writeToFile('debug', message, data);
|
|
79
|
+
}
|
|
80
|
+
/** No-op kept for API compatibility. Writes are synchronous, nothing to flush. */
|
|
81
|
+
shutdown() {
|
|
82
|
+
// All writes use appendFileSync — every line is already on disk.
|
|
83
|
+
}
|
|
84
|
+
// ---------------------------------------------------------------------------
|
|
85
|
+
// File logging internals
|
|
86
|
+
// ---------------------------------------------------------------------------
|
|
87
|
+
initFileLogging() {
|
|
88
|
+
const enabled = process.env.BRUTALIST_LOG_FILE === 'true';
|
|
89
|
+
const isSubprocess = process.env.BRUTALIST_SUBPROCESS === '1';
|
|
90
|
+
if (!enabled || isSubprocess)
|
|
91
|
+
return;
|
|
92
|
+
try {
|
|
93
|
+
this.logDir = process.env.BRUTALIST_LOG_DIR
|
|
94
|
+
|| join(homedir(), '.brutalist-mcp', 'logs');
|
|
95
|
+
const maxSizeMB = Number(process.env.BRUTALIST_LOG_MAX_SIZE) || 5;
|
|
96
|
+
this.maxFileSize = maxSizeMB * 1024 * 1024;
|
|
97
|
+
this.maxFiles = Number(process.env.BRUTALIST_LOG_MAX_FILES) || 3;
|
|
98
|
+
const levelStr = (process.env.BRUTALIST_LOG_LEVEL || 'info').toLowerCase();
|
|
99
|
+
this.fileLogLevel = LOG_LEVELS[levelStr] ?? LOG_LEVELS.info;
|
|
100
|
+
// Ensure directory exists
|
|
101
|
+
mkdirSync(this.logDir, { recursive: true });
|
|
102
|
+
this.logFilePath = join(this.logDir, LOG_FILENAME);
|
|
103
|
+
// Measure existing file so we rotate correctly
|
|
104
|
+
if (existsSync(this.logFilePath)) {
|
|
105
|
+
try {
|
|
106
|
+
this.currentFileSize = statSync(this.logFilePath).size;
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
this.currentFileSize = 0;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
// Touch the file so appendFileSync doesn't fail on first write
|
|
114
|
+
const fd = openSync(this.logFilePath, 'a');
|
|
115
|
+
closeSync(fd);
|
|
116
|
+
}
|
|
117
|
+
this.fileEnabled = true;
|
|
118
|
+
}
|
|
119
|
+
catch (err) {
|
|
120
|
+
// Never let logging prevent the server from starting
|
|
121
|
+
console.error(`[BRUTALIST MCP] WARN: File logging init failed: ${err instanceof Error ? err.message : err}`);
|
|
122
|
+
this.fileEnabled = false;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
writeToFile(level, message, data) {
|
|
126
|
+
if (!this.fileEnabled)
|
|
127
|
+
return;
|
|
128
|
+
if (LOG_LEVELS[level] < this.fileLogLevel)
|
|
129
|
+
return;
|
|
130
|
+
try {
|
|
131
|
+
const entry = {
|
|
132
|
+
ts: new Date().toISOString(),
|
|
133
|
+
level,
|
|
134
|
+
msg: message,
|
|
135
|
+
...(data !== undefined && { data }),
|
|
136
|
+
pid: this.pid
|
|
137
|
+
};
|
|
138
|
+
const line = JSON.stringify(entry) + '\n';
|
|
139
|
+
const lineBytes = Buffer.byteLength(line);
|
|
140
|
+
// Rotate before writing if this line would exceed the cap
|
|
141
|
+
if (this.currentFileSize + lineBytes > this.maxFileSize) {
|
|
142
|
+
this.rotate();
|
|
143
|
+
}
|
|
144
|
+
appendFileSync(this.logFilePath, line);
|
|
145
|
+
this.currentFileSize += lineBytes;
|
|
146
|
+
}
|
|
147
|
+
catch {
|
|
148
|
+
this.disableFileLogging('write failure');
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Size-based ring rotation.
|
|
153
|
+
*
|
|
154
|
+
* brutalist.log → brutalist.1.log
|
|
155
|
+
* brutalist.1.log → brutalist.2.log
|
|
156
|
+
* …
|
|
157
|
+
* brutalist.{max}.log → deleted
|
|
158
|
+
*/
|
|
159
|
+
rotate() {
|
|
160
|
+
if (this.rotating)
|
|
161
|
+
return;
|
|
162
|
+
this.rotating = true;
|
|
163
|
+
try {
|
|
164
|
+
// Shift existing rotated files
|
|
165
|
+
for (let i = this.maxFiles - 1; i >= 1; i--) {
|
|
166
|
+
const src = join(this.logDir, `brutalist.${i}.log`);
|
|
167
|
+
const dst = join(this.logDir, `brutalist.${i + 1}.log`);
|
|
168
|
+
if (existsSync(src)) {
|
|
169
|
+
renameSync(src, dst);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
// Drop the oldest file if it exists
|
|
173
|
+
const oldest = join(this.logDir, `brutalist.${this.maxFiles}.log`);
|
|
174
|
+
if (existsSync(oldest)) {
|
|
175
|
+
unlinkSync(oldest);
|
|
176
|
+
}
|
|
177
|
+
// Current → .1
|
|
178
|
+
if (existsSync(this.logFilePath)) {
|
|
179
|
+
renameSync(this.logFilePath, join(this.logDir, 'brutalist.1.log'));
|
|
180
|
+
}
|
|
181
|
+
this.currentFileSize = 0;
|
|
182
|
+
}
|
|
183
|
+
catch (err) {
|
|
184
|
+
this.disableFileLogging(`rotation failed: ${err instanceof Error ? err.message : err}`);
|
|
185
|
+
}
|
|
186
|
+
finally {
|
|
187
|
+
this.rotating = false;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
disableFileLogging(reason) {
|
|
191
|
+
if (!this.fileEnabled)
|
|
192
|
+
return;
|
|
193
|
+
this.fileEnabled = false;
|
|
194
|
+
console.error(`[BRUTALIST MCP] WARN: File logging disabled (${reason})`);
|
|
29
195
|
}
|
|
30
196
|
}
|
|
31
197
|
export const logger = Logger.getInstance();
|
package/dist/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,MAAM;IACT,MAAM,CAAC,QAAQ,CAAS;IACxB,SAAS,CAAU;IAE3B;QACE,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Server Registry — manages which MCP servers are available to spawned CLI agents.
|
|
3
|
+
*
|
|
4
|
+
* Brutalist generates per-CLI MCP configurations from this registry so that
|
|
5
|
+
* adversarial agents can use tools (e.g. Playwright) for evidence-backed
|
|
6
|
+
* analysis while remaining unable to modify the codebase.
|
|
7
|
+
*/
|
|
8
|
+
export interface MCPServerSpec {
|
|
9
|
+
command: string;
|
|
10
|
+
args: string[];
|
|
11
|
+
env?: Record<string, string>;
|
|
12
|
+
}
|
|
13
|
+
/** Resolve server specs by name from the registry. Unknown names are skipped with a warning. */
|
|
14
|
+
export declare function resolveServers(names: string[]): Record<string, MCPServerSpec>;
|
|
15
|
+
/** Return all registered server names (for discovery / cli_agent_roster). */
|
|
16
|
+
export declare function listRegisteredServers(): string[];
|
|
17
|
+
/**
|
|
18
|
+
* Write a temporary Claude MCP config file and return its path.
|
|
19
|
+
* Caller is responsible for cleanup via `cleanupTempConfig`.
|
|
20
|
+
*/
|
|
21
|
+
export declare function writeClaudeMCPConfig(servers: Record<string, MCPServerSpec>, sessionId: string): Promise<string>;
|
|
22
|
+
/** Remove a temp config file. Swallows errors (file may already be gone). */
|
|
23
|
+
export declare function cleanupTempConfig(filepath: string): Promise<void>;
|
|
24
|
+
/**
|
|
25
|
+
* Build a TOML-compatible value string for Codex's `-c mcp_servers=...` flag.
|
|
26
|
+
* This **replaces** Codex's configured servers entirely (excluding brutalist).
|
|
27
|
+
*
|
|
28
|
+
* Codex parses the value as TOML, so we produce an inline-table representation:
|
|
29
|
+
* {playwright={command="npx", args=["@playwright/mcp@latest"]}}
|
|
30
|
+
*/
|
|
31
|
+
export declare function buildCodexMCPOverride(servers: Record<string, MCPServerSpec>): string;
|
|
32
|
+
/**
|
|
33
|
+
* Ensure the requested MCP servers are configured in Gemini CLI.
|
|
34
|
+
* Runs `gemini mcp list` to check, then `gemini mcp add` for missing ones.
|
|
35
|
+
* Idempotent — safe to call on every invocation.
|
|
36
|
+
*/
|
|
37
|
+
export declare function ensureGeminiMCPServers(servers: Record<string, MCPServerSpec>): Promise<void>;
|
|
38
|
+
//# sourceMappingURL=mcp-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-registry.d.ts","sourceRoot":"","sources":["../src/mcp-registry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAaH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAyCD,gGAAgG;AAChG,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAc7E;AAED,6EAA6E;AAC7E,wBAAgB,qBAAqB,IAAI,MAAM,EAAE,CAEhD;AAID;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,EACtC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,CAiBjB;AAED,6EAA6E;AAC7E,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOvE;AAID;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,MAAM,CAMpF;AAID;;;;GAIG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,GACrC,OAAO,CAAC,IAAI,CAAC,CA+Bf"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Server Registry — manages which MCP servers are available to spawned CLI agents.
|
|
3
|
+
*
|
|
4
|
+
* Brutalist generates per-CLI MCP configurations from this registry so that
|
|
5
|
+
* adversarial agents can use tools (e.g. Playwright) for evidence-backed
|
|
6
|
+
* analysis while remaining unable to modify the codebase.
|
|
7
|
+
*/
|
|
8
|
+
import { promises as fs } from 'fs';
|
|
9
|
+
import path from 'path';
|
|
10
|
+
import os from 'os';
|
|
11
|
+
import { exec } from 'child_process';
|
|
12
|
+
import { promisify } from 'util';
|
|
13
|
+
import { logger } from './logger.js';
|
|
14
|
+
const execAsync = promisify(exec);
|
|
15
|
+
// ── Registry ───────────────────────────────────────────────────────────────
|
|
16
|
+
/** Built-in known MCP servers. Extend this as new integrations are added. */
|
|
17
|
+
const BUILTIN_SERVERS = {
|
|
18
|
+
playwright: {
|
|
19
|
+
command: 'npx',
|
|
20
|
+
args: ['@playwright/mcp@latest'],
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Merge built-in servers with user-defined servers from the
|
|
25
|
+
* `BRUTALIST_MCP_SERVERS` env var (JSON object keyed by server name).
|
|
26
|
+
*/
|
|
27
|
+
function loadRegistry() {
|
|
28
|
+
const registry = { ...BUILTIN_SERVERS };
|
|
29
|
+
const envServers = process.env.BRUTALIST_MCP_SERVERS;
|
|
30
|
+
if (envServers) {
|
|
31
|
+
try {
|
|
32
|
+
const parsed = JSON.parse(envServers);
|
|
33
|
+
for (const [name, spec] of Object.entries(parsed)) {
|
|
34
|
+
if (spec?.command) {
|
|
35
|
+
registry[name] = spec;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
catch (e) {
|
|
40
|
+
logger.warn('Failed to parse BRUTALIST_MCP_SERVERS env var:', e);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return registry;
|
|
44
|
+
}
|
|
45
|
+
/** Resolve server specs by name from the registry. Unknown names are skipped with a warning. */
|
|
46
|
+
export function resolveServers(names) {
|
|
47
|
+
const registry = loadRegistry();
|
|
48
|
+
const resolved = {};
|
|
49
|
+
for (const name of names) {
|
|
50
|
+
const spec = registry[name];
|
|
51
|
+
if (spec) {
|
|
52
|
+
resolved[name] = spec;
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
logger.warn(`MCP server "${name}" not found in registry — skipping`);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return resolved;
|
|
59
|
+
}
|
|
60
|
+
/** Return all registered server names (for discovery / cli_agent_roster). */
|
|
61
|
+
export function listRegisteredServers() {
|
|
62
|
+
return Object.keys(loadRegistry());
|
|
63
|
+
}
|
|
64
|
+
// ── Claude: temp JSON config file ──────────────────────────────────────────
|
|
65
|
+
/**
|
|
66
|
+
* Write a temporary Claude MCP config file and return its path.
|
|
67
|
+
* Caller is responsible for cleanup via `cleanupTempConfig`.
|
|
68
|
+
*/
|
|
69
|
+
export async function writeClaudeMCPConfig(servers, sessionId) {
|
|
70
|
+
const config = { mcpServers: {} };
|
|
71
|
+
for (const [name, spec] of Object.entries(servers)) {
|
|
72
|
+
config.mcpServers[name] = {
|
|
73
|
+
command: spec.command,
|
|
74
|
+
args: spec.args,
|
|
75
|
+
...(spec.env && { env: spec.env }),
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
const tmpDir = os.tmpdir();
|
|
79
|
+
const filename = `brutalist-mcp-${sessionId}-${Date.now()}.json`;
|
|
80
|
+
const filepath = path.join(tmpDir, filename);
|
|
81
|
+
await fs.writeFile(filepath, JSON.stringify(config, null, 2), 'utf-8');
|
|
82
|
+
logger.info(`Wrote Claude MCP config: ${filepath}`);
|
|
83
|
+
return filepath;
|
|
84
|
+
}
|
|
85
|
+
/** Remove a temp config file. Swallows errors (file may already be gone). */
|
|
86
|
+
export async function cleanupTempConfig(filepath) {
|
|
87
|
+
try {
|
|
88
|
+
await fs.unlink(filepath);
|
|
89
|
+
logger.info(`Cleaned up MCP config: ${filepath}`);
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
// Already removed or never created — fine
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
// ── Codex: -c config override string ───────────────────────────────────────
|
|
96
|
+
/**
|
|
97
|
+
* Build a TOML-compatible value string for Codex's `-c mcp_servers=...` flag.
|
|
98
|
+
* This **replaces** Codex's configured servers entirely (excluding brutalist).
|
|
99
|
+
*
|
|
100
|
+
* Codex parses the value as TOML, so we produce an inline-table representation:
|
|
101
|
+
* {playwright={command="npx", args=["@playwright/mcp@latest"]}}
|
|
102
|
+
*/
|
|
103
|
+
export function buildCodexMCPOverride(servers) {
|
|
104
|
+
const entries = Object.entries(servers).map(([name, spec]) => {
|
|
105
|
+
const args = spec.args.map(a => `"${a}"`).join(', ');
|
|
106
|
+
return `${name}={command="${spec.command}", args=[${args}]}`;
|
|
107
|
+
});
|
|
108
|
+
return `{${entries.join(', ')}}`;
|
|
109
|
+
}
|
|
110
|
+
// ── Gemini: ensure servers are pre-configured ──────────────────────────────
|
|
111
|
+
/**
|
|
112
|
+
* Ensure the requested MCP servers are configured in Gemini CLI.
|
|
113
|
+
* Runs `gemini mcp list` to check, then `gemini mcp add` for missing ones.
|
|
114
|
+
* Idempotent — safe to call on every invocation.
|
|
115
|
+
*/
|
|
116
|
+
export async function ensureGeminiMCPServers(servers) {
|
|
117
|
+
let existingNames;
|
|
118
|
+
try {
|
|
119
|
+
const { stdout } = await execAsync('gemini mcp list', { timeout: 10_000 });
|
|
120
|
+
// Parse the table output — server names are in the first column
|
|
121
|
+
existingNames = new Set(stdout.split('\n')
|
|
122
|
+
.filter(line => line.trim() && !line.startsWith('Name') && !line.startsWith('Loaded'))
|
|
123
|
+
.map(line => line.split(/\s+/)[0])
|
|
124
|
+
.filter(Boolean));
|
|
125
|
+
}
|
|
126
|
+
catch {
|
|
127
|
+
logger.warn('Could not list Gemini MCP servers — skipping pre-configuration');
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
for (const [name, spec] of Object.entries(servers)) {
|
|
131
|
+
if (existingNames.has(name)) {
|
|
132
|
+
logger.info(`Gemini MCP server "${name}" already configured`);
|
|
133
|
+
continue;
|
|
134
|
+
}
|
|
135
|
+
try {
|
|
136
|
+
const args = spec.args.map(a => `"${a}"`).join(' ');
|
|
137
|
+
await execAsync(`gemini mcp add ${name} ${spec.command} ${args}`, { timeout: 15_000 });
|
|
138
|
+
logger.info(`Added Gemini MCP server: ${name}`);
|
|
139
|
+
}
|
|
140
|
+
catch (e) {
|
|
141
|
+
logger.warn(`Failed to add Gemini MCP server "${name}":`, e);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=mcp-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-registry.js","sourceRoot":"","sources":["../src/mcp-registry.ts"],"names":[],"mappings":"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"}
|
package/dist/system-prompts.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ export declare const SYSTEM_PROMPTS: Record<BrutalistPromptType, string>;
|
|
|
3
3
|
/**
|
|
4
4
|
* Get the system prompt for a given analysis type.
|
|
5
5
|
* Falls back to a generic brutal prompt if type is not found.
|
|
6
|
+
* When mcpServers is provided, appends MCP tool-usage instructions.
|
|
6
7
|
*/
|
|
7
|
-
export declare function getSystemPrompt(analysisType: BrutalistPromptType): string;
|
|
8
|
+
export declare function getSystemPrompt(analysisType: BrutalistPromptType, mcpServers?: string[]): string;
|
|
8
9
|
//# sourceMappingURL=system-prompts.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system-prompts.d.ts","sourceRoot":"","sources":["../src/system-prompts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAyEtD,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,mBAAmB,EAAE,MAAM,CA0gB9D,CAAC;
|
|
1
|
+
{"version":3,"file":"system-prompts.d.ts","sourceRoot":"","sources":["../src/system-prompts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAyEtD,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,mBAAmB,EAAE,MAAM,CA0gB9D,CAAC;AAmBF;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,YAAY,EAAE,mBAAmB,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAiChG"}
|
package/dist/system-prompts.js
CHANGED
|
@@ -567,12 +567,29 @@ ANALYTICAL PROTOCOL:
|
|
|
567
567
|
|
|
568
568
|
</system_prompt>`
|
|
569
569
|
};
|
|
570
|
+
/**
|
|
571
|
+
* When MCP servers are enabled, append tool-usage instructions to the base prompt.
|
|
572
|
+
* Keeps the read-only codebase constraint but tells the agent about available MCP tools.
|
|
573
|
+
*/
|
|
574
|
+
function appendMCPInstructions(basePrompt, mcpServers) {
|
|
575
|
+
return basePrompt + `
|
|
576
|
+
|
|
577
|
+
<external_tool_access>
|
|
578
|
+
EXTERNAL TOOL ACCESS:
|
|
579
|
+
You have access to MCP tools for gathering evidence. Available servers: ${mcpServers.join(', ')}.
|
|
580
|
+
- USE these tools to verify claims and gather concrete evidence for your analysis
|
|
581
|
+
- You MUST NOT modify the codebase — your role is analysis only
|
|
582
|
+
- Back your critique with evidence from tool use where possible
|
|
583
|
+
- MCP tools allow observation and interaction (e.g., browser testing, API queries) — not code modification
|
|
584
|
+
</external_tool_access>`;
|
|
585
|
+
}
|
|
570
586
|
/**
|
|
571
587
|
* Get the system prompt for a given analysis type.
|
|
572
588
|
* Falls back to a generic brutal prompt if type is not found.
|
|
589
|
+
* When mcpServers is provided, appends MCP tool-usage instructions.
|
|
573
590
|
*/
|
|
574
|
-
export function getSystemPrompt(analysisType) {
|
|
575
|
-
|
|
591
|
+
export function getSystemPrompt(analysisType, mcpServers) {
|
|
592
|
+
const basePrompt = SYSTEM_PROMPTS[analysisType] || buildPrompt({
|
|
576
593
|
domain: 'generic_critique',
|
|
577
594
|
role: 'Brutal Critic',
|
|
578
595
|
persona: 'A ruthless critic who has seen every failure mode. You find what\'s broken before it breaks.',
|
|
@@ -599,5 +616,9 @@ export function getSystemPrompt(analysisType) {
|
|
|
599
616
|
'Always find what\'s broken'
|
|
600
617
|
]
|
|
601
618
|
});
|
|
619
|
+
if (mcpServers && mcpServers.length > 0) {
|
|
620
|
+
return appendMCPInstructions(basePrompt, mcpServers);
|
|
621
|
+
}
|
|
622
|
+
return basePrompt;
|
|
602
623
|
}
|
|
603
624
|
//# sourceMappingURL=system-prompts.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system-prompts.js","sourceRoot":"","sources":["../src/system-prompts.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"system-prompts.js","sourceRoot":"","sources":["../src/system-prompts.ts"],"names":[],"mappings":"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"}
|
|
@@ -167,7 +167,7 @@ export class ServerHarness {
|
|
|
167
167
|
}
|
|
168
168
|
// Additional server cleanup if needed
|
|
169
169
|
if (this.server) {
|
|
170
|
-
this.server.cleanup();
|
|
170
|
+
await this.server.cleanup();
|
|
171
171
|
}
|
|
172
172
|
const stopTime = Date.now() - stopStart;
|
|
173
173
|
logger.info(`ServerHarness: Server stopped in ${stopTime}ms`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-harness.js","sourceRoot":"","sources":["../../src/test-utils/server-harness.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"server-harness.js","sourceRoot":"","sources":["../../src/test-utils/server-harness.ts"],"names":[],"mappings":"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"}
|