@brutalist/mcp 0.1.1 ā 0.4.3
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 +209 -43
- package/dist/brutalist-server.d.ts +3 -3
- package/dist/brutalist-server.d.ts.map +1 -1
- package/dist/brutalist-server.js +376 -207
- package/dist/brutalist-server.js.map +1 -1
- package/dist/cli-agents.d.ts +57 -0
- package/dist/cli-agents.d.ts.map +1 -0
- package/dist/cli-agents.js +497 -0
- package/dist/cli-agents.js.map +1 -0
- package/dist/constants.d.ts +3 -9
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +4 -13
- package/dist/constants.js.map +1 -1
- package/dist/logger.js +2 -2
- package/dist/logger.js.map +1 -1
- package/dist/types/brutalist.d.ts +35 -15
- package/dist/types/brutalist.d.ts.map +1 -1
- package/dist/utils.d.ts +11 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +25 -0
- package/dist/utils.js.map +1 -0
- package/package.json +15 -8
- package/dist/model-fetcher.d.ts +0 -14
- package/dist/model-fetcher.d.ts.map +0 -1
- package/dist/model-fetcher.js +0 -71
- package/dist/model-fetcher.js.map +0 -1
- package/dist/openrouter.d.ts +0 -14
- package/dist/openrouter.d.ts.map +0 -1
- package/dist/openrouter.js +0 -123
- package/dist/openrouter.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"brutalist-server.js","sourceRoot":"","sources":["../src/brutalist-server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"brutalist-server.js","sourceRoot":"","sources":["../src/brutalist-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { CLIAgentResponse } from './types/brutalist.js';
|
|
2
|
+
export type BrutalistPromptType = 'code' | 'codebase' | 'architecture' | 'idea' | 'research' | 'data' | 'security' | 'product' | 'infrastructure' | 'debate' | 'dependencies' | 'fileStructure' | 'gitHistory' | 'testCoverage';
|
|
3
|
+
export declare const AVAILABLE_MODELS: {
|
|
4
|
+
readonly claude: {
|
|
5
|
+
readonly default: undefined;
|
|
6
|
+
readonly aliases: readonly ["opus", "sonnet", "haiku"];
|
|
7
|
+
readonly full: readonly ["claude-opus-4-1-20250805", "claude-sonnet-4-20250514"];
|
|
8
|
+
};
|
|
9
|
+
readonly codex: {
|
|
10
|
+
readonly default: "gpt-5";
|
|
11
|
+
readonly models: readonly ["gpt-5", "gpt-5-codex", "o3", "o3-mini", "o3-pro", "o4-mini"];
|
|
12
|
+
};
|
|
13
|
+
readonly gemini: {
|
|
14
|
+
readonly default: "gemini-2.5-flash";
|
|
15
|
+
readonly models: readonly ["gemini-2.5-flash", "gemini-2.5-pro", "gemini-2.5-flash-lite"];
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
export interface CLIAgentOptions {
|
|
19
|
+
workingDirectory?: string;
|
|
20
|
+
timeout?: number;
|
|
21
|
+
sandbox?: boolean;
|
|
22
|
+
preferredCLI?: 'claude' | 'codex' | 'gemini';
|
|
23
|
+
analysisType?: BrutalistPromptType;
|
|
24
|
+
models?: {
|
|
25
|
+
claude?: string;
|
|
26
|
+
codex?: string;
|
|
27
|
+
gemini?: string;
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
export interface CLIContext {
|
|
31
|
+
currentCLI?: 'claude' | 'codex' | 'gemini';
|
|
32
|
+
availableCLIs: ('claude' | 'codex' | 'gemini')[];
|
|
33
|
+
}
|
|
34
|
+
export declare class CLIAgentOrchestrator {
|
|
35
|
+
private defaultTimeout;
|
|
36
|
+
private defaultWorkingDir;
|
|
37
|
+
private cliContext;
|
|
38
|
+
private cliContextCached;
|
|
39
|
+
private cliContextCacheTime;
|
|
40
|
+
private readonly CLI_CACHE_TTL;
|
|
41
|
+
private runningCLIs;
|
|
42
|
+
private readonly MAX_CONCURRENT_CLIS;
|
|
43
|
+
constructor();
|
|
44
|
+
detectCLIContext(): Promise<CLIContext>;
|
|
45
|
+
private detectCurrentCLI;
|
|
46
|
+
selectSingleCLI(preferredCLI?: 'claude' | 'codex' | 'gemini', analysisType?: BrutalistPromptType): 'claude' | 'codex' | 'gemini';
|
|
47
|
+
private _executeCLI;
|
|
48
|
+
executeClaudeCode(userPrompt: string, systemPromptSpec: string, options?: CLIAgentOptions): Promise<CLIAgentResponse>;
|
|
49
|
+
executeCodex(userPrompt: string, systemPromptSpec: string, options?: CLIAgentOptions): Promise<CLIAgentResponse>;
|
|
50
|
+
executeGemini(userPrompt: string, systemPromptSpec: string, options?: CLIAgentOptions): Promise<CLIAgentResponse>;
|
|
51
|
+
executeSingleCLI(cli: 'claude' | 'codex' | 'gemini', userPrompt: string, systemPromptSpec: string, options?: CLIAgentOptions): Promise<CLIAgentResponse>;
|
|
52
|
+
private waitForAvailableSlot;
|
|
53
|
+
executeBrutalistAnalysis(analysisType: BrutalistPromptType, targetPath: string, systemPromptSpec: string, context?: string, options?: CLIAgentOptions): Promise<CLIAgentResponse[]>;
|
|
54
|
+
synthesizeBrutalistFeedback(responses: CLIAgentResponse[], analysisType: string): string;
|
|
55
|
+
private constructUserPrompt;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=cli-agents.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-agents.d.ts","sourceRoot":"","sources":["../src/cli-agents.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAQxD,MAAM,MAAM,mBAAmB,GAC3B,MAAM,GACN,UAAU,GACV,cAAc,GACd,MAAM,GACN,UAAU,GACV,MAAM,GACN,UAAU,GACV,SAAS,GACT,gBAAgB,GAChB,QAAQ,GACR,cAAc,GACd,eAAe,GACf,YAAY,GACZ,cAAc,CAAC;AASnB,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;CAcnB,CAAC;AA0GX,MAAM,WAAW,eAAe;IAC9B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;IAC7C,YAAY,CAAC,EAAE,mBAAmB,CAAC;IACnC,MAAM,CAAC,EAAE;QACP,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,UAAU;IACzB,UAAU,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;IAC3C,aAAa,EAAE,CAAC,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC,EAAE,CAAC;CAClD;AAED,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,cAAc,CAAW;IACjC,OAAO,CAAC,iBAAiB,CAAiB;IAC1C,OAAO,CAAC,UAAU,CAAqC;IACvD,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,mBAAmB,CAAK;IAChC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAU;IACxC,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAuB;;IAerD,gBAAgB,IAAI,OAAO,CAAC,UAAU,CAAC;IA4C7C,OAAO,CAAC,gBAAgB;IA2BxB,eAAe,CACb,YAAY,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,EAC5C,YAAY,CAAC,EAAE,mBAAmB,GACjC,QAAQ,GAAG,OAAO,GAAG,QAAQ;YAgDlB,WAAW;IAsFnB,iBAAiB,CACrB,UAAU,EAAE,MAAM,EAClB,gBAAgB,EAAE,MAAM,EACxB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,gBAAgB,CAAC;IAoBtB,YAAY,CAChB,UAAU,EAAE,MAAM,EAClB,gBAAgB,EAAE,MAAM,EACxB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,gBAAgB,CAAC;IAyBtB,aAAa,CACjB,UAAU,EAAE,MAAM,EAClB,gBAAgB,EAAE,MAAM,EACxB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,gBAAgB,CAAC;IAgCtB,gBAAgB,CACpB,GAAG,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,EAClC,UAAU,EAAE,MAAM,EAClB,gBAAgB,EAAE,MAAM,EACxB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,gBAAgB,CAAC;YA2Bd,oBAAoB;IAS5B,wBAAwB,CAC5B,YAAY,EAAE,mBAAmB,EACjC,UAAU,EAAE,MAAM,EAClB,gBAAgB,EAAE,MAAM,EACxB,OAAO,CAAC,EAAE,MAAM,EAChB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,gBAAgB,EAAE,CAAC;IA2E9B,2BAA2B,CAAC,SAAS,EAAE,gBAAgB,EAAE,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM;IA6BxF,OAAO,CAAC,mBAAmB;CA8B5B"}
|
|
@@ -0,0 +1,497 @@
|
|
|
1
|
+
import { spawn } from 'child_process';
|
|
2
|
+
import { logger } from './logger.js';
|
|
3
|
+
// Configurable timeouts and limits
|
|
4
|
+
const DEFAULT_TIMEOUT = parseInt(process.env.BRUTALIST_TIMEOUT || '300000', 10); // 5 minutes default
|
|
5
|
+
const CLI_CHECK_TIMEOUT = parseInt(process.env.BRUTALIST_CLI_CHECK_TIMEOUT || '5000', 10); // 5 seconds for CLI checks
|
|
6
|
+
const MAX_BUFFER_SIZE = parseInt(process.env.BRUTALIST_MAX_BUFFER || String(10 * 1024 * 1024), 10); // 10MB default
|
|
7
|
+
const MAX_CONCURRENT_CLIS = parseInt(process.env.BRUTALIST_MAX_CONCURRENT || '3', 10); // 3 concurrent CLIs
|
|
8
|
+
// Available models for each CLI
|
|
9
|
+
export const AVAILABLE_MODELS = {
|
|
10
|
+
claude: {
|
|
11
|
+
default: undefined, // Uses user's configured model
|
|
12
|
+
aliases: ['opus', 'sonnet', 'haiku'],
|
|
13
|
+
full: ['claude-opus-4-1-20250805', 'claude-sonnet-4-20250514']
|
|
14
|
+
},
|
|
15
|
+
codex: {
|
|
16
|
+
default: 'gpt-5', // Fast default reasoning
|
|
17
|
+
models: ['gpt-5', 'gpt-5-codex', 'o3', 'o3-mini', 'o3-pro', 'o4-mini']
|
|
18
|
+
},
|
|
19
|
+
gemini: {
|
|
20
|
+
default: 'gemini-2.5-flash', // Best price/performance
|
|
21
|
+
models: ['gemini-2.5-flash', 'gemini-2.5-pro', 'gemini-2.5-flash-lite']
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
// Safe command execution helper using spawn instead of exec to prevent command injection
|
|
25
|
+
async function spawnAsync(command, args, options = {}) {
|
|
26
|
+
return new Promise((resolve, reject) => {
|
|
27
|
+
// Use working directory as-is - let CLI tools handle their own sandboxing
|
|
28
|
+
const cwd = options.cwd || process.cwd();
|
|
29
|
+
const child = spawn(command, args, {
|
|
30
|
+
cwd: cwd,
|
|
31
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
32
|
+
shell: false, // CRITICAL: disable shell to prevent injection
|
|
33
|
+
detached: command !== 'gemini', // Disable detached for Gemini CLI to fix macOS sandbox issue
|
|
34
|
+
env: options.env || process.env
|
|
35
|
+
});
|
|
36
|
+
let stdout = '';
|
|
37
|
+
let stderr = '';
|
|
38
|
+
let timedOut = false;
|
|
39
|
+
let killed = false;
|
|
40
|
+
// Set up timeout with SIGKILL escalation
|
|
41
|
+
const timeoutMs = options.timeout || DEFAULT_TIMEOUT;
|
|
42
|
+
const timer = setTimeout(() => {
|
|
43
|
+
timedOut = true;
|
|
44
|
+
// First try SIGTERM
|
|
45
|
+
child.kill('SIGTERM');
|
|
46
|
+
// If still running after 5 seconds, escalate to SIGKILL
|
|
47
|
+
setTimeout(() => {
|
|
48
|
+
if (!killed) {
|
|
49
|
+
try {
|
|
50
|
+
if (command === 'gemini' || process.platform === 'win32') {
|
|
51
|
+
// Gemini runs non-detached, and Windows doesn't support process groups
|
|
52
|
+
child.kill('SIGKILL');
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
// Other CLIs on Unix-like systems: kill process group
|
|
56
|
+
process.kill(-child.pid, 'SIGKILL');
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
catch (e) {
|
|
60
|
+
// Process may have already exited
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}, 5000);
|
|
64
|
+
reject(new Error(`Command timed out after ${timeoutMs}ms: ${command} ${args.join(' ')}`));
|
|
65
|
+
}, timeoutMs);
|
|
66
|
+
// Collect output
|
|
67
|
+
// NOTE: maxBuffer (default 10MB) can lead to high memory usage if CLI agents produce large outputs.
|
|
68
|
+
// Consider making this configurable or dynamically adjusting based on expected output size.
|
|
69
|
+
child.stdout?.on('data', (data) => {
|
|
70
|
+
stdout += data.toString();
|
|
71
|
+
if (options.maxBuffer && stdout.length > options.maxBuffer) {
|
|
72
|
+
child.kill('SIGTERM');
|
|
73
|
+
reject(new Error(`stdout exceeded maxBuffer size: ${options.maxBuffer}`));
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
child.stderr?.on('data', (data) => {
|
|
77
|
+
stderr += data.toString();
|
|
78
|
+
// Apply same buffer limit to stderr to prevent DoS
|
|
79
|
+
if (options.maxBuffer && stderr.length > options.maxBuffer) {
|
|
80
|
+
child.kill('SIGTERM');
|
|
81
|
+
reject(new Error(`stderr exceeded maxBuffer size: ${options.maxBuffer}`));
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
// Handle completion
|
|
85
|
+
child.on('close', (code) => {
|
|
86
|
+
killed = true;
|
|
87
|
+
clearTimeout(timer);
|
|
88
|
+
if (!timedOut) {
|
|
89
|
+
if (code === 0) {
|
|
90
|
+
resolve({ stdout, stderr });
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
const error = new Error(`Command failed with exit code ${code}: ${command} ${args.join(' ')}`);
|
|
94
|
+
error.code = code || undefined;
|
|
95
|
+
error.stdout = stdout;
|
|
96
|
+
error.stderr = stderr;
|
|
97
|
+
reject(error);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
child.on('error', (error) => {
|
|
102
|
+
clearTimeout(timer);
|
|
103
|
+
reject(error);
|
|
104
|
+
});
|
|
105
|
+
// Send input if provided
|
|
106
|
+
if (options.input) {
|
|
107
|
+
child.stdin?.write(options.input);
|
|
108
|
+
child.stdin?.end();
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
export class CLIAgentOrchestrator {
|
|
113
|
+
defaultTimeout = 1500000; // 25 minutes - thorough analysis takes time
|
|
114
|
+
defaultWorkingDir = process.cwd();
|
|
115
|
+
cliContext = { availableCLIs: [] };
|
|
116
|
+
cliContextCached = false;
|
|
117
|
+
cliContextCacheTime = 0;
|
|
118
|
+
CLI_CACHE_TTL = 300000; // 5 minutes cache
|
|
119
|
+
runningCLIs = 0; // Track concurrent CLI executions
|
|
120
|
+
MAX_CONCURRENT_CLIS = MAX_CONCURRENT_CLIS; // Configurable concurrency limit
|
|
121
|
+
constructor() {
|
|
122
|
+
// Log configuration at startup
|
|
123
|
+
logger.info(`š§ Brutalist MCP Configuration:`);
|
|
124
|
+
logger.info(` - Default timeout: ${DEFAULT_TIMEOUT}ms`);
|
|
125
|
+
logger.info(` - CLI check timeout: ${CLI_CHECK_TIMEOUT}ms`);
|
|
126
|
+
logger.info(` - Max buffer size: ${MAX_BUFFER_SIZE} bytes`);
|
|
127
|
+
logger.info(` - Max concurrent CLIs: ${MAX_CONCURRENT_CLIS}`);
|
|
128
|
+
// Detect CLI context at startup and cache it
|
|
129
|
+
this.detectCLIContext().catch(error => {
|
|
130
|
+
logger.error("Failed to detect CLI context at startup:", error);
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
async detectCLIContext() {
|
|
134
|
+
// Return cached context if still valid
|
|
135
|
+
if (this.cliContextCached && Date.now() - this.cliContextCacheTime < this.CLI_CACHE_TTL) {
|
|
136
|
+
logger.debug('Using cached CLI context');
|
|
137
|
+
return this.cliContext;
|
|
138
|
+
}
|
|
139
|
+
const availableCLIs = [];
|
|
140
|
+
let currentCLI;
|
|
141
|
+
// Check for available CLIs
|
|
142
|
+
const cliChecks = [
|
|
143
|
+
{ name: 'claude', command: 'claude --version' },
|
|
144
|
+
{ name: 'codex', command: 'codex --version' },
|
|
145
|
+
{ name: 'gemini', command: 'gemini --version' }
|
|
146
|
+
];
|
|
147
|
+
const results = await Promise.allSettled(cliChecks.map(async (check) => {
|
|
148
|
+
try {
|
|
149
|
+
await spawnAsync(check.name, ['--version'], { timeout: CLI_CHECK_TIMEOUT });
|
|
150
|
+
logger.debug(`CLI available: ${check.name}`);
|
|
151
|
+
return check.name;
|
|
152
|
+
}
|
|
153
|
+
catch (error) {
|
|
154
|
+
logger.debug(`CLI not available: ${check.name}`);
|
|
155
|
+
return null;
|
|
156
|
+
}
|
|
157
|
+
}));
|
|
158
|
+
const detectedCLIs = results
|
|
159
|
+
.filter(result => result.status === 'fulfilled' && result.value !== null)
|
|
160
|
+
.map(result => result.value);
|
|
161
|
+
availableCLIs.push(...detectedCLIs);
|
|
162
|
+
// Detect current CLI context from environment or process
|
|
163
|
+
currentCLI = this.detectCurrentCLI();
|
|
164
|
+
this.cliContext = { currentCLI, availableCLIs };
|
|
165
|
+
this.cliContextCached = true;
|
|
166
|
+
this.cliContextCacheTime = Date.now();
|
|
167
|
+
return this.cliContext;
|
|
168
|
+
}
|
|
169
|
+
detectCurrentCLI() {
|
|
170
|
+
// Check environment variables that might indicate current CLI
|
|
171
|
+
if (process.env.CLAUDE_CODE_SESSION || process.env.CLAUDE_CONFIG_DIR) {
|
|
172
|
+
return 'claude';
|
|
173
|
+
}
|
|
174
|
+
if (process.env.CODEX_SESSION || process.env.OPENAI_CODEX_SESSION) {
|
|
175
|
+
return 'codex';
|
|
176
|
+
}
|
|
177
|
+
if (process.env.GEMINI_SESSION || process.env.GEMINI_API_KEY) {
|
|
178
|
+
return 'gemini';
|
|
179
|
+
}
|
|
180
|
+
// Check process parent/ancestry for CLI indicators
|
|
181
|
+
try {
|
|
182
|
+
const processInfo = process.env._;
|
|
183
|
+
if (processInfo?.includes('claude'))
|
|
184
|
+
return 'claude';
|
|
185
|
+
if (processInfo?.includes('codex'))
|
|
186
|
+
return 'codex';
|
|
187
|
+
if (processInfo?.includes('gemini'))
|
|
188
|
+
return 'gemini';
|
|
189
|
+
}
|
|
190
|
+
catch (error) {
|
|
191
|
+
logger.debug('Could not detect current CLI from process info');
|
|
192
|
+
}
|
|
193
|
+
return undefined;
|
|
194
|
+
}
|
|
195
|
+
selectSingleCLI(preferredCLI, analysisType) {
|
|
196
|
+
// 1. Honor explicit preference if available (allow even if current CLI to avoid blocking)
|
|
197
|
+
if (preferredCLI && this.cliContext.availableCLIs.includes(preferredCLI)) {
|
|
198
|
+
logger.info(`ā
Using preferred CLI: ${preferredCLI}`);
|
|
199
|
+
return preferredCLI;
|
|
200
|
+
}
|
|
201
|
+
// 2. Smart selection based on analysis type
|
|
202
|
+
const selectionRules = {
|
|
203
|
+
'code': ['claude', 'codex', 'gemini'],
|
|
204
|
+
'architecture': ['gemini', 'claude', 'codex'],
|
|
205
|
+
'research': ['claude', 'gemini', 'codex'],
|
|
206
|
+
'security': ['codex', 'claude', 'gemini'],
|
|
207
|
+
'data': ['gemini', 'claude', 'codex'],
|
|
208
|
+
'product': ['claude', 'gemini', 'codex'],
|
|
209
|
+
'infrastructure': ['gemini', 'codex', 'claude'],
|
|
210
|
+
'idea': ['claude', 'gemini', 'codex'],
|
|
211
|
+
'debate': ['claude', 'gemini', 'codex'],
|
|
212
|
+
'default': ['claude', 'gemini', 'codex']
|
|
213
|
+
};
|
|
214
|
+
const priority = selectionRules[analysisType || 'default'] || selectionRules.default;
|
|
215
|
+
// 3. Filter available CLIs, exclude current CLI only for auto-selection to prevent recursion
|
|
216
|
+
const currentCLI = this.cliContext.currentCLI;
|
|
217
|
+
const candidates = this.cliContext.availableCLIs.filter(cli => cli !== currentCLI);
|
|
218
|
+
// If no candidates after filtering, fall back to available CLIs (allow recursion if necessary)
|
|
219
|
+
const finalCandidates = candidates.length > 0 ? candidates : this.cliContext.availableCLIs;
|
|
220
|
+
if (finalCandidates.length === 0) {
|
|
221
|
+
throw new Error('No CLI agents available');
|
|
222
|
+
}
|
|
223
|
+
// 4. Select by priority
|
|
224
|
+
for (const cli of priority) {
|
|
225
|
+
if (finalCandidates.includes(cli)) {
|
|
226
|
+
const recursionWarning = candidates.length === 0 ? ' (allowing recursion)' : '';
|
|
227
|
+
logger.info(`šÆ Auto-selected ${cli} for ${analysisType || 'general'} analysis${recursionWarning}`);
|
|
228
|
+
return cli;
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
// Fallback to first available
|
|
232
|
+
logger.warn(`ā ļø Using fallback CLI: ${finalCandidates[0]}`);
|
|
233
|
+
return finalCandidates[0];
|
|
234
|
+
}
|
|
235
|
+
async _executeCLI(cliName, userPrompt, systemPromptSpec, options = {}, commandBuilder) {
|
|
236
|
+
const startTime = Date.now();
|
|
237
|
+
const workingDir = options.workingDirectory || this.defaultWorkingDir;
|
|
238
|
+
const timeout = options.timeout || this.defaultTimeout;
|
|
239
|
+
try {
|
|
240
|
+
logger.info(`š¤ Executing ${cliName.toUpperCase()} CLI`);
|
|
241
|
+
logger.debug(`${cliName.toUpperCase()} prompt`, { prompt: userPrompt.substring(0, 100) });
|
|
242
|
+
// WARNING: Claude CLI does not have a native --sandbox flag.
|
|
243
|
+
// If options.sandbox is true, it is assumed that the environment
|
|
244
|
+
// running this Brutalist MCP server provides the sandboxing (e.g., Docker, VM).
|
|
245
|
+
// Running Claude without external sandboxing can be a security risk.
|
|
246
|
+
if (cliName === 'claude' && options.sandbox) {
|
|
247
|
+
logger.warn("ā ļø Claude CLI requested with sandbox: true, but Claude CLI does not support native sandboxing. Ensure external sandboxing is in place.");
|
|
248
|
+
}
|
|
249
|
+
const { command, args, env, input } = commandBuilder(userPrompt, systemPromptSpec, options);
|
|
250
|
+
logger.info(`š Command: ${command} ${args.join(' ')}`);
|
|
251
|
+
logger.info(`š Working directory: ${workingDir}`);
|
|
252
|
+
logger.info(`ā±ļø Timeout: ${timeout}ms`);
|
|
253
|
+
if (input) {
|
|
254
|
+
logger.info(`š Using stdin for prompt (${input.length} characters)`);
|
|
255
|
+
}
|
|
256
|
+
const { stdout, stderr } = await spawnAsync(command, args, {
|
|
257
|
+
cwd: workingDir,
|
|
258
|
+
timeout: timeout,
|
|
259
|
+
maxBuffer: MAX_BUFFER_SIZE, // Configurable buffer for model outputs
|
|
260
|
+
env: env,
|
|
261
|
+
input: input
|
|
262
|
+
});
|
|
263
|
+
logger.info(`ā
${cliName.toUpperCase()} completed (${Date.now() - startTime}ms)`);
|
|
264
|
+
return {
|
|
265
|
+
agent: cliName,
|
|
266
|
+
success: true,
|
|
267
|
+
output: stdout,
|
|
268
|
+
error: stderr || undefined,
|
|
269
|
+
executionTime: Date.now() - startTime,
|
|
270
|
+
command: `${command} ${args.join(' ')}`,
|
|
271
|
+
workingDirectory: workingDir,
|
|
272
|
+
exitCode: 0
|
|
273
|
+
};
|
|
274
|
+
}
|
|
275
|
+
catch (error) {
|
|
276
|
+
const execError = error;
|
|
277
|
+
const exitCode = execError.code || -1;
|
|
278
|
+
// Detect rate limiting errors for Gemini
|
|
279
|
+
const isRateLimit = cliName === 'gemini' && (execError.stderr?.includes('429') ||
|
|
280
|
+
execError.message?.includes('rateLimitExceeded') ||
|
|
281
|
+
execError.stderr?.includes('rate limit'));
|
|
282
|
+
if (isRateLimit) {
|
|
283
|
+
logger.warn(`ā±ļø ${cliName.toUpperCase()} CLI hit rate limit (${Date.now() - startTime}ms)`);
|
|
284
|
+
}
|
|
285
|
+
else {
|
|
286
|
+
logger.error(`ā ${cliName.toUpperCase()} execution failed (${Date.now() - startTime}ms)`, {
|
|
287
|
+
error: "Redacted: See internal logs for full error details.",
|
|
288
|
+
exitCode,
|
|
289
|
+
stderr: "Redacted: See internal logs for full stderr output."
|
|
290
|
+
});
|
|
291
|
+
}
|
|
292
|
+
return {
|
|
293
|
+
agent: cliName,
|
|
294
|
+
success: false,
|
|
295
|
+
output: '',
|
|
296
|
+
error: error instanceof Error ? error.message : String(error),
|
|
297
|
+
executionTime: Date.now() - startTime,
|
|
298
|
+
command: `(redacted command for ${cliName})`,
|
|
299
|
+
workingDirectory: workingDir,
|
|
300
|
+
exitCode
|
|
301
|
+
};
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
async executeClaudeCode(userPrompt, systemPromptSpec, options = {}) {
|
|
305
|
+
return this._executeCLI('claude', userPrompt, systemPromptSpec, options, (userPrompt, systemPromptSpec, options) => {
|
|
306
|
+
const combinedPrompt = `${systemPromptSpec}\n\n${userPrompt}`;
|
|
307
|
+
const args = ['--print'];
|
|
308
|
+
// Use provided model or let Claude use its default
|
|
309
|
+
const model = options.models?.claude || AVAILABLE_MODELS.claude.default;
|
|
310
|
+
if (model) {
|
|
311
|
+
args.push('--model', model);
|
|
312
|
+
}
|
|
313
|
+
args.push(combinedPrompt);
|
|
314
|
+
return { command: 'claude', args };
|
|
315
|
+
});
|
|
316
|
+
}
|
|
317
|
+
async executeCodex(userPrompt, systemPromptSpec, options = {}) {
|
|
318
|
+
return this._executeCLI('codex', userPrompt, systemPromptSpec, { ...options, sandbox: true }, // Ensure sandbox is always true for Codex
|
|
319
|
+
(userPrompt, systemPromptSpec, options) => {
|
|
320
|
+
const combinedPrompt = `CONTEXT AND INSTRUCTIONS:\n${systemPromptSpec}\n\nANALYZE:\n${userPrompt}`;
|
|
321
|
+
const args = ['exec'];
|
|
322
|
+
// Use provided model or default to gpt-5
|
|
323
|
+
const model = options.models?.codex || AVAILABLE_MODELS.codex.default;
|
|
324
|
+
args.push('--model', model);
|
|
325
|
+
if (options.sandbox) {
|
|
326
|
+
args.push('--sandbox', 'read-only');
|
|
327
|
+
}
|
|
328
|
+
// Use stdin for the prompt instead of argv to avoid ARG_MAX limits
|
|
329
|
+
return {
|
|
330
|
+
command: 'codex',
|
|
331
|
+
args,
|
|
332
|
+
input: combinedPrompt
|
|
333
|
+
};
|
|
334
|
+
});
|
|
335
|
+
}
|
|
336
|
+
async executeGemini(userPrompt, systemPromptSpec, options = {}) {
|
|
337
|
+
return this._executeCLI('gemini', userPrompt, systemPromptSpec, { ...options, sandbox: true }, // Ensure sandbox is always true for Gemini
|
|
338
|
+
(userPrompt, systemPromptSpec, options) => {
|
|
339
|
+
const args = [];
|
|
340
|
+
// Use provided model or default to gemini-2.5-flash
|
|
341
|
+
const modelName = options.models?.gemini || AVAILABLE_MODELS.gemini.default;
|
|
342
|
+
args.push('--model', modelName);
|
|
343
|
+
if (options.sandbox) {
|
|
344
|
+
args.push('--sandbox');
|
|
345
|
+
}
|
|
346
|
+
const combinedPrompt = `${systemPromptSpec}\n\n${userPrompt}`;
|
|
347
|
+
args.push(combinedPrompt);
|
|
348
|
+
return {
|
|
349
|
+
command: 'gemini',
|
|
350
|
+
args: args,
|
|
351
|
+
env: {
|
|
352
|
+
...process.env,
|
|
353
|
+
TERM: 'dumb',
|
|
354
|
+
NO_COLOR: '1',
|
|
355
|
+
CI: 'true'
|
|
356
|
+
}
|
|
357
|
+
};
|
|
358
|
+
});
|
|
359
|
+
}
|
|
360
|
+
async executeSingleCLI(cli, userPrompt, systemPromptSpec, options = {}) {
|
|
361
|
+
// Wait for available slot to prevent resource exhaustion
|
|
362
|
+
await this.waitForAvailableSlot();
|
|
363
|
+
this.runningCLIs++;
|
|
364
|
+
logger.info(`šÆ Executing ${cli} (${this.runningCLIs}/${this.MAX_CONCURRENT_CLIS} slots used)`);
|
|
365
|
+
try {
|
|
366
|
+
switch (cli) {
|
|
367
|
+
case 'claude':
|
|
368
|
+
return await this.executeClaudeCode(userPrompt, systemPromptSpec, options);
|
|
369
|
+
case 'codex':
|
|
370
|
+
return await this.executeCodex(userPrompt, systemPromptSpec, { ...options, sandbox: true });
|
|
371
|
+
case 'gemini':
|
|
372
|
+
return await this.executeGemini(userPrompt, systemPromptSpec, { ...options, sandbox: true });
|
|
373
|
+
default:
|
|
374
|
+
throw new Error(`Unknown CLI: ${cli}`);
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
finally {
|
|
378
|
+
this.runningCLIs--;
|
|
379
|
+
logger.info(`ā
Released CLI slot (${this.runningCLIs}/${this.MAX_CONCURRENT_CLIS} slots used)`);
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
async waitForAvailableSlot() {
|
|
383
|
+
let waitTime = 100; // Start with 100ms wait time
|
|
384
|
+
while (this.runningCLIs >= this.MAX_CONCURRENT_CLIS) {
|
|
385
|
+
logger.info(`ā³ Waiting for available CLI slot (${this.runningCLIs}/${this.MAX_CONCURRENT_CLIS} in use). Next check in ${waitTime}ms...`);
|
|
386
|
+
await new Promise(resolve => setTimeout(resolve, waitTime));
|
|
387
|
+
waitTime = Math.min(waitTime * 2, 5000); // Exponential backoff, max 5 seconds
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
async executeBrutalistAnalysis(analysisType, targetPath, systemPromptSpec, context, options = {}) {
|
|
391
|
+
const userPrompt = this.constructUserPrompt(analysisType, targetPath, context);
|
|
392
|
+
// If preferred CLI is specified, use single CLI mode
|
|
393
|
+
if (options.preferredCLI) {
|
|
394
|
+
const selectedCLI = this.selectSingleCLI(options.preferredCLI, options.analysisType);
|
|
395
|
+
logger.info(`ā
Using preferred CLI: ${selectedCLI}`);
|
|
396
|
+
const response = await this.executeSingleCLI(selectedCLI, userPrompt, systemPromptSpec, options);
|
|
397
|
+
return [{
|
|
398
|
+
...response,
|
|
399
|
+
selectionMethod: 'user-specified',
|
|
400
|
+
analysisType
|
|
401
|
+
}];
|
|
402
|
+
}
|
|
403
|
+
// Multi-CLI execution (default behavior)
|
|
404
|
+
logger.info(`š Executing multi-CLI analysis`);
|
|
405
|
+
// Only exclude current CLI if we have other options
|
|
406
|
+
let availableCLIs = [...this.cliContext.availableCLIs];
|
|
407
|
+
if (this.cliContext.currentCLI && this.cliContext.availableCLIs.length > 1) {
|
|
408
|
+
// Exclude current CLI to prevent recursion, but only if we have alternatives
|
|
409
|
+
availableCLIs = availableCLIs.filter(cli => cli !== this.cliContext.currentCLI);
|
|
410
|
+
logger.info(`š Excluding current CLI (${this.cliContext.currentCLI}) to prevent recursion`);
|
|
411
|
+
}
|
|
412
|
+
else if (this.cliContext.currentCLI && this.cliContext.availableCLIs.length === 1) {
|
|
413
|
+
logger.warn(`ā ļø Only current CLI (${this.cliContext.currentCLI}) available - allowing with recursion guard`);
|
|
414
|
+
}
|
|
415
|
+
if (availableCLIs.length === 0) {
|
|
416
|
+
throw new Error('No CLI agents available for analysis');
|
|
417
|
+
}
|
|
418
|
+
logger.info(`š Available CLIs: ${availableCLIs.join(', ')}`);
|
|
419
|
+
// Execute all available CLIs in parallel with allSettled for better error handling
|
|
420
|
+
const promises = availableCLIs.map(async (cli) => {
|
|
421
|
+
try {
|
|
422
|
+
const response = await this.executeSingleCLI(cli, userPrompt, systemPromptSpec, options);
|
|
423
|
+
return {
|
|
424
|
+
...response,
|
|
425
|
+
selectionMethod: 'multi-cli',
|
|
426
|
+
analysisType
|
|
427
|
+
};
|
|
428
|
+
}
|
|
429
|
+
catch (error) {
|
|
430
|
+
logger.error(`ā ${cli} execution failed:`, error);
|
|
431
|
+
return {
|
|
432
|
+
agent: cli,
|
|
433
|
+
success: false,
|
|
434
|
+
output: '',
|
|
435
|
+
error: error instanceof Error ? error.message : String(error),
|
|
436
|
+
executionTime: 0,
|
|
437
|
+
selectionMethod: 'multi-cli',
|
|
438
|
+
analysisType
|
|
439
|
+
};
|
|
440
|
+
}
|
|
441
|
+
});
|
|
442
|
+
// Use allSettled to handle partial failures gracefully
|
|
443
|
+
const results = await Promise.allSettled(promises);
|
|
444
|
+
const responses = results
|
|
445
|
+
.filter(result => result.status === 'fulfilled')
|
|
446
|
+
.map(result => result.value);
|
|
447
|
+
logger.info(`ā
Multi-CLI analysis complete: ${responses.filter(r => r.success).length}/${responses.length} successful`);
|
|
448
|
+
return responses;
|
|
449
|
+
}
|
|
450
|
+
synthesizeBrutalistFeedback(responses, analysisType) {
|
|
451
|
+
const successfulResponses = responses.filter(r => r.success);
|
|
452
|
+
const failedResponses = responses.filter(r => !r.success);
|
|
453
|
+
if (successfulResponses.length === 0) {
|
|
454
|
+
return `# Brutalist Analysis Failed\n\nā All CLI agents failed to analyze\n${failedResponses.map(r => `- ${r.agent.toUpperCase()}: ${r.error}`).join('\n')}`;
|
|
455
|
+
}
|
|
456
|
+
let synthesis = `${successfulResponses.length} AI critics have systematically demolished your work.\n\n`;
|
|
457
|
+
successfulResponses.forEach((response, index) => {
|
|
458
|
+
synthesis += `## Critic ${index + 1}: ${response.agent.toUpperCase()}\n`;
|
|
459
|
+
synthesis += `*Execution time: ${response.executionTime}ms*\n\n`;
|
|
460
|
+
synthesis += response.output;
|
|
461
|
+
synthesis += '\n\n---\n\n';
|
|
462
|
+
});
|
|
463
|
+
if (failedResponses.length > 0) {
|
|
464
|
+
synthesis += `## Failed Critics\n`;
|
|
465
|
+
synthesis += `${failedResponses.length} critics failed to complete their destruction:\n`;
|
|
466
|
+
failedResponses.forEach(r => {
|
|
467
|
+
synthesis += `- **${r.agent.toUpperCase()}**: ${r.error}\n`;
|
|
468
|
+
});
|
|
469
|
+
synthesis += '\n';
|
|
470
|
+
}
|
|
471
|
+
return synthesis.trim();
|
|
472
|
+
}
|
|
473
|
+
constructUserPrompt(analysisType, targetPath, context) {
|
|
474
|
+
// Trust CLI tools to handle their own security
|
|
475
|
+
const sanitizedTargetPath = targetPath;
|
|
476
|
+
const sanitizedContext = context || 'No additional context provided';
|
|
477
|
+
const prompts = {
|
|
478
|
+
code: `Analyze the codebase at ${sanitizedTargetPath} for issues. Context: ${sanitizedContext}`,
|
|
479
|
+
codebase: `Analyze the codebase directory at ${sanitizedTargetPath} for security vulnerabilities, performance issues, and architectural problems. Context: ${sanitizedContext}`,
|
|
480
|
+
architecture: `Review the architecture: ${sanitizedTargetPath}. Find every scaling failure and cost explosion.`,
|
|
481
|
+
idea: `Analyze this idea: ${sanitizedTargetPath}. Find where imagination fails to become reality.`,
|
|
482
|
+
research: `Review this research: ${sanitizedTargetPath}. Find every methodological flaw and reproducibility issue.`,
|
|
483
|
+
data: `Analyze this data/model: ${sanitizedTargetPath}. Find every overfitting issue, bias, and correlation fallacy.`,
|
|
484
|
+
security: `Security audit of: ${sanitizedTargetPath}. Find every attack vector and vulnerability.`,
|
|
485
|
+
product: `Product review: ${sanitizedTargetPath}. Find every UX disaster and adoption barrier.`,
|
|
486
|
+
infrastructure: `Infrastructure review: ${sanitizedTargetPath}. Find every single point of failure.`,
|
|
487
|
+
debate: `Debate topic: ${sanitizedTargetPath}. Take opposing positions and argue until truth emerges.`,
|
|
488
|
+
fileStructure: `Analyze the directory structure at ${sanitizedTargetPath}. Find organizational disasters and naming failures.`,
|
|
489
|
+
dependencies: `Analyze dependencies at ${sanitizedTargetPath}. Find version conflicts and security vulnerabilities.`,
|
|
490
|
+
gitHistory: `Analyze git history at ${sanitizedTargetPath}. Find commit disasters and workflow failures.`,
|
|
491
|
+
testCoverage: `Analyze test coverage at ${sanitizedTargetPath}. Find testing gaps and quality issues.`
|
|
492
|
+
};
|
|
493
|
+
const specificPrompt = prompts[analysisType] || `Analyze ${sanitizedTargetPath} for ${analysisType} issues.`;
|
|
494
|
+
return `${specificPrompt} ${context ? `Context: ${sanitizedContext}` : ''}`;
|
|
495
|
+
}
|
|
496
|
+
}
|
|
497
|
+
//# sourceMappingURL=cli-agents.js.map
|