@brutalist/mcp 0.8.1 → 1.0.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.
Files changed (61) hide show
  1. package/README.md +34 -7
  2. package/dist/brutalist-server.d.ts +55 -16
  3. package/dist/brutalist-server.d.ts.map +1 -1
  4. package/dist/brutalist-server.js +550 -732
  5. package/dist/brutalist-server.js.map +1 -1
  6. package/dist/cli-agents.d.ts +9 -7
  7. package/dist/cli-agents.d.ts.map +1 -1
  8. package/dist/cli-agents.js +290 -202
  9. package/dist/cli-agents.js.map +1 -1
  10. package/dist/domains/argument-space.d.ts +12 -3
  11. package/dist/domains/argument-space.d.ts.map +1 -1
  12. package/dist/domains/argument-space.js +30 -23
  13. package/dist/domains/argument-space.js.map +1 -1
  14. package/dist/domains/critique-domain.d.ts +12 -0
  15. package/dist/domains/critique-domain.d.ts.map +1 -1
  16. package/dist/domains/critique-domain.js +12 -1
  17. package/dist/domains/critique-domain.js.map +1 -1
  18. package/dist/formatting/response-formatter.d.ts +43 -0
  19. package/dist/formatting/response-formatter.d.ts.map +1 -0
  20. package/dist/formatting/response-formatter.js +277 -0
  21. package/dist/formatting/response-formatter.js.map +1 -0
  22. package/dist/generators/tool-generator.d.ts.map +1 -1
  23. package/dist/generators/tool-generator.js +8 -6
  24. package/dist/generators/tool-generator.js.map +1 -1
  25. package/dist/handlers/tool-handler.d.ts +33 -0
  26. package/dist/handlers/tool-handler.d.ts.map +1 -0
  27. package/dist/handlers/tool-handler.js +307 -0
  28. package/dist/handlers/tool-handler.js.map +1 -0
  29. package/dist/registry/argument-spaces.js +17 -17
  30. package/dist/registry/argument-spaces.js.map +1 -1
  31. package/dist/registry/domains.d.ts +10 -0
  32. package/dist/registry/domains.d.ts.map +1 -1
  33. package/dist/registry/domains.js +153 -11
  34. package/dist/registry/domains.js.map +1 -1
  35. package/dist/system-prompts.d.ts +8 -0
  36. package/dist/system-prompts.d.ts.map +1 -0
  37. package/dist/system-prompts.js +596 -0
  38. package/dist/system-prompts.js.map +1 -0
  39. package/dist/tool-definitions.d.ts +20 -1
  40. package/dist/tool-definitions.d.ts.map +1 -1
  41. package/dist/tool-definitions.js +42 -213
  42. package/dist/tool-definitions.js.map +1 -1
  43. package/dist/tool-router.d.ts +12 -0
  44. package/dist/tool-router.d.ts.map +1 -0
  45. package/dist/tool-router.js +59 -0
  46. package/dist/tool-router.js.map +1 -0
  47. package/dist/transport/http-transport.d.ts +40 -0
  48. package/dist/transport/http-transport.d.ts.map +1 -0
  49. package/dist/transport/http-transport.js +182 -0
  50. package/dist/transport/http-transport.js.map +1 -0
  51. package/dist/types/brutalist.d.ts +1 -0
  52. package/dist/types/brutalist.d.ts.map +1 -1
  53. package/dist/types/tool-config.d.ts +4 -3
  54. package/dist/types/tool-config.d.ts.map +1 -1
  55. package/dist/types/tool-config.js +7 -6
  56. package/dist/types/tool-config.js.map +1 -1
  57. package/dist/utils.d.ts +1 -1
  58. package/dist/utils.d.ts.map +1 -1
  59. package/dist/utils.js +13 -6
  60. package/dist/utils.js.map +1 -1
  61. package/package.json +1 -1
package/README.md CHANGED
@@ -41,6 +41,27 @@ Choose your IDE:
41
41
  claude mcp add brutalist --scope user -- npx -y @brutalist/mcp@latest
42
42
  ```
43
43
 
44
+ **Codex:**
45
+ ```bash
46
+ # Install globally once to avoid npx startup chatter
47
+ npm i -g @brutalist/mcp
48
+ # Add MCP using the installed binary (clean stdio)
49
+ codex mcp add brutalist -- brutalist-mcp
50
+ ```
51
+
52
+ **Configuring `tool_timeout_sec` for Codex:**
53
+ The `tool_timeout_sec` parameter (defaulting to 60 seconds) for your Brutalist MCP server needs to be configured directly in your Codex configuration file at `~/.codex/config.toml`. It cannot be passed via the `codex mcp add` command directly.
54
+
55
+ To set a custom timeout (e.g., 5 minutes or 300 seconds), add or modify the `[mcp_servers.brutalist]` section in `~/.codex/config.toml` as follows:
56
+
57
+ ```toml
58
+ [mcp_servers.brutalist]
59
+ command = "brutalist-mcp" # Ensure this matches your installation command
60
+ args = [] # Depending on your setup, this might be empty or contain arguments
61
+ tool_timeout_sec = 300 # Set your desired timeout in seconds
62
+ ```
63
+
64
+
44
65
  **Cursor:**
45
66
  Add to `~/.cursor/mcp.json`:
46
67
  ```json
@@ -194,22 +215,28 @@ Features:
194
215
 
195
216
  | Tool | Purpose |
196
217
  |------|---------|
218
+ | `roast` | **Unified tool** - use `domain` parameter to select analysis type |
219
+ | `brutalist_discover` | Find the best tool for your intent using natural language |
197
220
  | `roast_cli_debate` | Multi-agent discussion from different perspectives |
198
221
  | `cli_agent_roster` | Show available CLI agents on your system |
199
222
 
223
+ > **Tip:** Use the unified `roast` tool with a domain parameter for a leaner schema, or use `brutalist_discover` to find the right tool based on your intent.
224
+
225
+ See [docs/pagination.md](docs/pagination.md) for detailed pagination documentation.
226
+
200
227
  ## Advanced Usage
201
228
 
202
229
  ### Choose Specific CLI Agents
203
230
 
204
231
  ```bash
205
- # Use a specific agent
206
- roast_codebase(targetPath="/src", preferredCLI="claude")
232
+ # Use specific agents (subset selection)
233
+ roast(domain="codebase", target="/src", clis=["claude", "gemini"])
207
234
 
208
- # System automatically selects best agent for task
209
- roast_security "/auth/module" # Typically uses Codex
235
+ # Use a single agent
236
+ roast(domain="codebase", target="/src", clis=["claude"])
210
237
 
211
- # Multi-agent analysis (default)
212
- roast_idea "..." # All available agents provide perspectives
238
+ # Multi-agent analysis (default - all available)
239
+ roast(domain="idea", target="...") # All available agents provide perspectives
213
240
  ```
214
241
 
215
242
  ### Agent Strengths
@@ -232,4 +259,4 @@ Getting multiple viewpoints helps identify issues that a single perspective migh
232
259
  ---
233
260
 
234
261
  **License:** MIT
235
- **Issues:** https://github.com/ejmockler/brutalist-mcp/issues
262
+ **Issues:** https://github.com/ejmockler/brutalist-mcp/issues
@@ -1,40 +1,79 @@
1
1
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
2
  import { BrutalistServerConfig } from './types/brutalist.js';
3
+ /**
4
+ * BrutalistServer - Composition root for the Brutalist MCP Server
5
+ *
6
+ * This class has been refactored to follow the Single Responsibility Principle.
7
+ * Responsibilities are now delegated to specialized modules:
8
+ * - ResponseFormatter: Handles all response formatting and pagination
9
+ * - HttpTransport: Manages HTTP server and CORS
10
+ * - ToolHandler: Handles roast tool execution, caching, and conversation continuation
11
+ */
3
12
  export declare class BrutalistServer {
4
13
  server: McpServer;
5
14
  config: BrutalistServerConfig;
6
15
  private cliOrchestrator;
7
- private httpTransport?;
8
16
  private responseCache;
9
- private actualPort?;
10
- private httpServer?;
11
- private shutdownHandler?;
17
+ private formatter;
18
+ private toolHandler;
19
+ private httpTransport?;
12
20
  private activeSessions;
21
+ private readonly MAX_SESSIONS;
22
+ private readonly SESSION_TTL_MS;
23
+ private sessionCleanupTimer?;
13
24
  constructor(config?: BrutalistServerConfig);
14
- private handleStreamingEvent;
15
- private handleProgressUpdate;
16
25
  start(): Promise<void>;
17
26
  private startStdioServer;
18
27
  private startHttpServer;
19
28
  getActualPort(): number | undefined;
20
29
  stop(): Promise<void>;
30
+ /**
31
+ * Clean up stale sessions that exceed TTL
32
+ */
33
+ private cleanupStaleSessions;
34
+ /**
35
+ * Ensure session capacity doesn't exceed MAX_SESSIONS
36
+ * Evicts oldest sessions when capacity is reached
37
+ */
38
+ ensureSessionCapacity(): void;
21
39
  cleanup(): void;
40
+ /**
41
+ * Handle streaming events from CLI agents
42
+ */
43
+ private handleStreamingEvent;
44
+ /**
45
+ * Handle progress updates from CLI agents
46
+ */
47
+ private handleProgressUpdate;
48
+ /**
49
+ * Register all MCP tools
50
+ *
51
+ * TOOL REDUCTION STRATEGY: Only expose 4 gateway tools instead of 15.
52
+ * The unified `roast` tool with domain parameter replaces all 11 roast_* tools.
53
+ * This reduces cognitive load for AI agents while maintaining full functionality.
54
+ */
22
55
  private registerTools;
56
+ /**
57
+ * Register special tools (debate, roster, unified roast)
58
+ */
23
59
  private registerSpecialTools;
24
60
  /**
25
- * Unified handler for all roast tools - DRY principle
61
+ * Handle unified roast tool - routes to appropriate domain handler
62
+ */
63
+ private handleUnifiedRoast;
64
+ /**
65
+ * Handle debate tool execution with constitutional position anchoring.
66
+ * Uses 2 randomly selected agents (or user-specified) with explicit PRO/CON positions.
67
+ */
68
+ private handleDebateToolExecution;
69
+ /**
70
+ * Execute CLI debate with constitutional position anchoring.
71
+ * 2 agents, explicit PRO/CON positions, context compression between rounds.
26
72
  */
27
- private handleRoastTool;
28
73
  private executeCLIDebate;
29
- private synthesizeDebate;
30
- private executeBrutalistAnalysis;
31
74
  /**
32
- * Extract full content from analysis result for caching
75
+ * Synthesize debate results into formatted output
33
76
  */
34
- private extractFullContent;
35
- private formatToolResponse;
36
- private formatPaginatedResponse;
37
- private formatErrorResponse;
38
- private handleToolExecution;
77
+ private synthesizeDebate;
39
78
  }
40
79
  //# sourceMappingURL=brutalist-server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"brutalist-server.d.ts","sourceRoot":"","sources":["../src/brutalist-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAUpE,OAAO,EACL,qBAAqB,EAKtB,MAAM,sBAAsB,CAAC;AAc9B,qBAAa,eAAe;IACnB,MAAM,EAAE,SAAS,CAAC;IAClB,MAAM,EAAE,qBAAqB,CAAC;IACrC,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,aAAa,CAAC,CAAgC;IACtD,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,UAAU,CAAC,CAAS;IAC5B,OAAO,CAAC,UAAU,CAAC,CAAM;IACzB,OAAO,CAAC,eAAe,CAAC,CAAa;IAErC,OAAO,CAAC,cAAc,CAIjB;gBAEO,MAAM,GAAE,qBAA0B;IA0C9C,OAAO,CAAC,oBAAoB,CAkE1B;IAEF,OAAO,CAAC,oBAAoB,CAsC1B;IAEI,KAAK;YAeG,gBAAgB;YAMhB,eAAe;IAmItB,aAAa,IAAI,MAAM,GAAG,SAAS;IAK7B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAc3B,OAAO,IAAI,IAAI;IAOtB,OAAO,CAAC,aAAa;IAoBrB,OAAO,CAAC,oBAAoB;IAoG5B;;OAEG;YACW,eAAe;YAsOf,gBAAgB;IAkK9B,OAAO,CAAC,gBAAgB;YA0FV,wBAAwB;IA0FtC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAwB1B,OAAO,CAAC,kBAAkB;IA6F1B,OAAO,CAAC,uBAAuB;IAuH/B,OAAO,CAAC,mBAAmB;YA8Bb,mBAAmB;CAUlC"}
1
+ {"version":3,"file":"brutalist-server.d.ts","sourceRoot":"","sources":["../src/brutalist-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOpE,OAAO,EACL,qBAAqB,EAGtB,MAAM,sBAAsB,CAAC;AAgB9B;;;;;;;;GAQG;AACH,qBAAa,eAAe;IACnB,MAAM,EAAE,SAAS,CAAC;IAClB,MAAM,EAAE,qBAAqB,CAAC;IAGrC,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,aAAa,CAAgB;IAGrC,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,aAAa,CAAC,CAAgB;IAGtC,OAAO,CAAC,cAAc,CAIjB;IAGL,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAuB;IACtD,OAAO,CAAC,mBAAmB,CAAC,CAAiB;gBAEjC,MAAM,GAAE,qBAA0B;IA2DxC,KAAK;YAeG,gBAAgB;YAMhB,eAAe;IActB,aAAa,IAAI,MAAM,GAAG,SAAS;IAK7B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAMlC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAc5B;;;OAGG;IACI,qBAAqB,IAAI,IAAI;IAc7B,OAAO,IAAI,IAAI;IAUtB;;OAEG;IACH,OAAO,CAAC,oBAAoB,CAgE1B;IAEF;;OAEG;IACH,OAAO,CAAC,oBAAoB,CAsC1B;IAEF;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;IASrB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA+M5B;;OAEG;YACW,kBAAkB;IAiEhC;;;OAGG;YACW,yBAAyB;IA2LvC;;;OAGG;YACW,gBAAgB;IAwN9B;;OAEG;IACH,OAAO,CAAC,gBAAgB;CA8FzB"}