@brutalist/mcp 0.7.0 → 0.9.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 +22 -1
- package/dist/brutalist-server.d.ts +46 -16
- package/dist/brutalist-server.d.ts.map +1 -1
- package/dist/brutalist-server.js +223 -611
- package/dist/brutalist-server.js.map +1 -1
- package/dist/cli-agents.d.ts +11 -9
- package/dist/cli-agents.d.ts.map +1 -1
- package/dist/cli-agents.js +239 -155
- package/dist/cli-agents.js.map +1 -1
- package/dist/domains/argument-space.d.ts +9 -0
- package/dist/domains/argument-space.d.ts.map +1 -1
- package/dist/domains/argument-space.js +27 -20
- package/dist/domains/argument-space.js.map +1 -1
- package/dist/formatting/response-formatter.d.ts +43 -0
- package/dist/formatting/response-formatter.d.ts.map +1 -0
- package/dist/formatting/response-formatter.js +277 -0
- package/dist/formatting/response-formatter.js.map +1 -0
- package/dist/generators/tool-generator.d.ts.map +1 -1
- package/dist/generators/tool-generator.js +3 -1
- package/dist/generators/tool-generator.js.map +1 -1
- package/dist/handlers/tool-handler.d.ts +33 -0
- package/dist/handlers/tool-handler.d.ts.map +1 -0
- package/dist/handlers/tool-handler.js +299 -0
- package/dist/handlers/tool-handler.js.map +1 -0
- package/dist/registry/argument-spaces.js +17 -17
- package/dist/registry/argument-spaces.js.map +1 -1
- package/dist/transport/http-transport.d.ts +40 -0
- package/dist/transport/http-transport.d.ts.map +1 -0
- package/dist/transport/http-transport.js +182 -0
- package/dist/transport/http-transport.js.map +1 -0
- package/dist/types/tool-config.d.ts +3 -3
- package/dist/types/tool-config.js +2 -2
- package/dist/types/tool-config.js.map +1 -1
- package/dist/utils.d.ts +1 -1
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +13 -6
- package/dist/utils.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
import { logger } from '../logger.js';
|
|
2
|
+
import { ResponseChunker, createPaginationMetadata, formatPaginationStatus, estimateTokenCount, PAGINATION_DEFAULTS } from '../utils/pagination.js';
|
|
3
|
+
/**
|
|
4
|
+
* ResponseFormatter - Handles all response formatting logic
|
|
5
|
+
* Extracted from BrutalistServer to follow Single Responsibility Principle
|
|
6
|
+
*/
|
|
7
|
+
export class ResponseFormatter {
|
|
8
|
+
/**
|
|
9
|
+
* Format tool response with optional pagination
|
|
10
|
+
*/
|
|
11
|
+
formatToolResponse(result, verbose = false, paginationParams, contextId, explicitPaginationRequested = false) {
|
|
12
|
+
logger.info(`🔧 DEBUG: formatToolResponse called with synthesis length: ${result.synthesis?.length || 0}`);
|
|
13
|
+
logger.info(`🔧 DEBUG: result.success=${result.success}, responses.length=${result.responses?.length || 0}`);
|
|
14
|
+
logger.info(`🔧 DEBUG: pagination params:`, paginationParams);
|
|
15
|
+
logger.info(`🔧 DEBUG: explicitPaginationRequested=${explicitPaginationRequested}`);
|
|
16
|
+
// Get the primary content to paginate
|
|
17
|
+
let primaryContent = '';
|
|
18
|
+
if (result.synthesis) {
|
|
19
|
+
primaryContent = result.synthesis;
|
|
20
|
+
logger.info(`🔧 DEBUG: Using synthesis content (${primaryContent.length} characters)`);
|
|
21
|
+
}
|
|
22
|
+
else if (result.responses) {
|
|
23
|
+
const successfulResponses = result.responses.filter(r => r.success);
|
|
24
|
+
if (successfulResponses.length > 0) {
|
|
25
|
+
primaryContent = successfulResponses.map(r => r.output).join('\n\n---\n\n');
|
|
26
|
+
logger.info(`🔧 DEBUG: Using raw CLI output (${primaryContent.length} characters)`);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
// Estimate token count to determine if pagination is needed
|
|
30
|
+
const estimatedTokens = estimateTokenCount(primaryContent);
|
|
31
|
+
const maxTokensWithoutPagination = 25000;
|
|
32
|
+
const needsAutoPagination = estimatedTokens > maxTokensWithoutPagination;
|
|
33
|
+
// CRITICAL: Always apply pagination if content is too large, even if not explicitly requested
|
|
34
|
+
// This prevents MCP protocol errors when response exceeds client token limits
|
|
35
|
+
if (needsAutoPagination || explicitPaginationRequested) {
|
|
36
|
+
if (needsAutoPagination && !explicitPaginationRequested) {
|
|
37
|
+
logger.info(`🔧 AUTO-PAGINATING: ${estimatedTokens} tokens exceeds ${maxTokensWithoutPagination} limit - forcing first page`);
|
|
38
|
+
// Force pagination params to show first chunk (use token-based limit)
|
|
39
|
+
const forcedParams = {
|
|
40
|
+
offset: 0,
|
|
41
|
+
limit: PAGINATION_DEFAULTS.DEFAULT_LIMIT_TOKENS // Use token-based limit
|
|
42
|
+
};
|
|
43
|
+
return this.formatPaginatedResponse(primaryContent, forcedParams, result, verbose, contextId);
|
|
44
|
+
}
|
|
45
|
+
else if (paginationParams) {
|
|
46
|
+
logger.info(`🔧 DEBUG: Applying pagination (explicitly requested)`);
|
|
47
|
+
return this.formatPaginatedResponse(primaryContent, paginationParams, result, verbose, contextId);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
// Non-paginated response (only for content that fits within token limit)
|
|
51
|
+
if (primaryContent) {
|
|
52
|
+
logger.info(`🔧 DEBUG: Returning full response (${estimatedTokens} tokens < ${maxTokensWithoutPagination} limit)`);
|
|
53
|
+
// Include context_id even for non-paginated responses (for future pagination/caching)
|
|
54
|
+
let responseText = '';
|
|
55
|
+
if (contextId) {
|
|
56
|
+
responseText += `# Brutalist Analysis Results\n\n`;
|
|
57
|
+
responseText += `**🔑 Context ID:** ${contextId}\n\n`;
|
|
58
|
+
responseText += `---\n\n`;
|
|
59
|
+
responseText += primaryContent;
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
responseText = primaryContent;
|
|
63
|
+
}
|
|
64
|
+
return {
|
|
65
|
+
content: [{
|
|
66
|
+
type: "text",
|
|
67
|
+
text: responseText
|
|
68
|
+
}]
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
// Error handling - no successful content
|
|
72
|
+
return this.formatNoContentError(result);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Format paginated response with metadata and navigation
|
|
76
|
+
*/
|
|
77
|
+
formatPaginatedResponse(content, paginationParams, result, verbose, contextId) {
|
|
78
|
+
const offset = paginationParams.offset || 0;
|
|
79
|
+
// Convert character-based limit to token-based limit (1 token ≈ 4 chars)
|
|
80
|
+
const limitChars = paginationParams.limit || PAGINATION_DEFAULTS.DEFAULT_LIMIT;
|
|
81
|
+
const limitTokens = Math.ceil(limitChars / 4); // Convert chars to tokens
|
|
82
|
+
logger.info(`🔧 DEBUG: Paginating content - offset: ${offset}, limitChars: ${limitChars}, limitTokens: ${limitTokens}, total: ${content.length} chars`);
|
|
83
|
+
// Use ResponseChunker for intelligent boundary detection (TOKEN-BASED)
|
|
84
|
+
const chunker = new ResponseChunker(limitTokens, PAGINATION_DEFAULTS.CHUNK_OVERLAP_TOKENS);
|
|
85
|
+
const chunks = chunker.chunkText(content);
|
|
86
|
+
// Find the appropriate chunk based on offset
|
|
87
|
+
let targetChunk = chunks[0]; // Default to first chunk
|
|
88
|
+
let targetChunkIndex = 0;
|
|
89
|
+
for (let i = 0; i < chunks.length; i++) {
|
|
90
|
+
const chunk = chunks[i];
|
|
91
|
+
if (offset >= chunk.startOffset && offset < chunk.endOffset) {
|
|
92
|
+
targetChunk = chunk;
|
|
93
|
+
targetChunkIndex = i;
|
|
94
|
+
break;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
const chunkContent = targetChunk.content;
|
|
98
|
+
const actualOffset = targetChunk.startOffset;
|
|
99
|
+
const endOffset = targetChunk.endOffset;
|
|
100
|
+
// Create pagination metadata using actual chunk boundaries
|
|
101
|
+
const pagination = createPaginationMetadata(content.length, paginationParams, limitTokens, chunks, targetChunkIndex);
|
|
102
|
+
const statusLine = formatPaginationStatus(pagination);
|
|
103
|
+
// Estimate token usage for user awareness
|
|
104
|
+
const chunkTokens = estimateTokenCount(chunkContent);
|
|
105
|
+
const totalTokens = estimateTokenCount(content);
|
|
106
|
+
// Format response with pagination info
|
|
107
|
+
let paginatedText = this.buildPaginatedHeader(pagination, contextId, chunkTokens, totalTokens, offset, endOffset);
|
|
108
|
+
// Add the actual content chunk
|
|
109
|
+
paginatedText += chunkContent;
|
|
110
|
+
// Add footer
|
|
111
|
+
paginatedText += this.buildPaginatedFooter(pagination, contextId, endOffset, content.length);
|
|
112
|
+
// Add verbose execution details if requested
|
|
113
|
+
if (verbose && result.executionSummary) {
|
|
114
|
+
paginatedText += this.buildExecutionSummary(result.executionSummary);
|
|
115
|
+
}
|
|
116
|
+
logger.info(`🔧 DEBUG: Returning paginated chunk - ${chunkContent.length} chars (${chunkTokens} tokens)`);
|
|
117
|
+
return {
|
|
118
|
+
content: [{
|
|
119
|
+
type: "text",
|
|
120
|
+
text: paginatedText
|
|
121
|
+
}]
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Format error response with sanitized message
|
|
126
|
+
*/
|
|
127
|
+
formatErrorResponse(error) {
|
|
128
|
+
logger.error("Tool execution failed", error);
|
|
129
|
+
// Sanitize error message to prevent information leakage
|
|
130
|
+
let sanitizedMessage = "Analysis failed";
|
|
131
|
+
if (error instanceof Error) {
|
|
132
|
+
// Only expose safe, generic error types
|
|
133
|
+
if (error.message.includes('timeout') || error.message.includes('Timeout')) {
|
|
134
|
+
sanitizedMessage = "Analysis timed out - try reducing scope or increasing timeout";
|
|
135
|
+
}
|
|
136
|
+
else if (error.message.includes('ENOENT') || error.message.includes('no such file')) {
|
|
137
|
+
sanitizedMessage = "Target path not found - verify the path exists and is accessible";
|
|
138
|
+
}
|
|
139
|
+
else if (error.message.includes('EACCES') || error.message.includes('permission denied')) {
|
|
140
|
+
sanitizedMessage = "Permission denied - check file access";
|
|
141
|
+
}
|
|
142
|
+
else if (error.message.includes('No CLI agents available')) {
|
|
143
|
+
sanitizedMessage = "No CLI agents available for analysis";
|
|
144
|
+
}
|
|
145
|
+
else if (error.message.includes('resume') && error.message.includes('context_id')) {
|
|
146
|
+
// User-facing validation errors for resume/continuation feature
|
|
147
|
+
sanitizedMessage = error.message;
|
|
148
|
+
}
|
|
149
|
+
else if (error.message.includes('Context ID') && error.message.includes('not found')) {
|
|
150
|
+
// Context ID not found in cache
|
|
151
|
+
sanitizedMessage = error.message;
|
|
152
|
+
}
|
|
153
|
+
else if (error.message.includes('continuation') && error.message.includes('requires')) {
|
|
154
|
+
// Continuation validation errors
|
|
155
|
+
sanitizedMessage = error.message;
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
// Generic message for other errors to prevent path/info leakage
|
|
159
|
+
sanitizedMessage = "Analysis failed due to internal error";
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
return {
|
|
163
|
+
content: [{
|
|
164
|
+
type: "text",
|
|
165
|
+
text: `Brutalist MCP Error: ${sanitizedMessage}`
|
|
166
|
+
}]
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Extract full content from analysis result for caching
|
|
171
|
+
*/
|
|
172
|
+
extractFullContent(result) {
|
|
173
|
+
if (result.synthesis) {
|
|
174
|
+
return result.synthesis;
|
|
175
|
+
}
|
|
176
|
+
else if (result.responses && result.responses.length > 0) {
|
|
177
|
+
const successfulResponses = result.responses.filter(r => r.success);
|
|
178
|
+
if (successfulResponses.length > 0) {
|
|
179
|
+
let output = `${successfulResponses.length} AI critics have systematically demolished your work.\n\n`;
|
|
180
|
+
successfulResponses.forEach((response, index) => {
|
|
181
|
+
output += `## Critic ${index + 1}: ${response.agent.toUpperCase()}\n`;
|
|
182
|
+
output += `*Execution time: ${response.executionTime}ms*\n\n`;
|
|
183
|
+
output += response.output;
|
|
184
|
+
// Only add separator between critics, not after the last one
|
|
185
|
+
if (index < successfulResponses.length - 1) {
|
|
186
|
+
output += '\n\n---\n\n';
|
|
187
|
+
}
|
|
188
|
+
});
|
|
189
|
+
return output;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
return null;
|
|
193
|
+
}
|
|
194
|
+
// Private helper methods
|
|
195
|
+
formatNoContentError(result) {
|
|
196
|
+
let errorOutput = '';
|
|
197
|
+
if (result.responses) {
|
|
198
|
+
const failedResponses = result.responses.filter(r => !r.success);
|
|
199
|
+
if (failedResponses.length > 0) {
|
|
200
|
+
errorOutput = `❌ All CLI agents failed:\n` +
|
|
201
|
+
failedResponses.map(r => `- ${r.agent.toUpperCase()}: ${r.error}`).join('\n');
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
errorOutput = '❌ No CLI responses available';
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
else {
|
|
208
|
+
errorOutput = '❌ No analysis results';
|
|
209
|
+
}
|
|
210
|
+
return {
|
|
211
|
+
content: [{
|
|
212
|
+
type: "text",
|
|
213
|
+
text: errorOutput
|
|
214
|
+
}]
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
buildPaginatedHeader(pagination, contextId, chunkTokens, totalTokens, offset, endOffset) {
|
|
218
|
+
let header = `# Brutalist Analysis Results\n\n`;
|
|
219
|
+
const needsPagination = pagination.totalChunks > 1 || pagination.hasMore;
|
|
220
|
+
const isFirstRequest = offset === 0;
|
|
221
|
+
const statusLine = formatPaginationStatus(pagination);
|
|
222
|
+
// Always show context_id on first request for future pagination
|
|
223
|
+
if (isFirstRequest && contextId) {
|
|
224
|
+
header += `**🔑 Context ID:** ${contextId}\n`;
|
|
225
|
+
header += `**🔢 Token Estimate:** ~${totalTokens.toLocaleString()} tokens (total)\n\n`;
|
|
226
|
+
}
|
|
227
|
+
if (needsPagination) {
|
|
228
|
+
header += `**📊 Pagination Status:** ${statusLine}\n`;
|
|
229
|
+
if (!isFirstRequest && contextId) {
|
|
230
|
+
header += `**🔑 Context ID:** ${contextId}\n`;
|
|
231
|
+
}
|
|
232
|
+
header += `**🔢 Token Estimate:** ~${chunkTokens.toLocaleString()} tokens (chunk) / ~${totalTokens.toLocaleString()} tokens (total)\n\n`;
|
|
233
|
+
if (pagination.hasMore) {
|
|
234
|
+
if (contextId) {
|
|
235
|
+
header += `**⏭️ Continue Reading:** Use \`context_id: "${contextId}", offset: ${endOffset}\`\n\n`;
|
|
236
|
+
}
|
|
237
|
+
else {
|
|
238
|
+
header += `**⏭️ Continue Reading:** Use \`offset: ${endOffset}\` for next chunk\n\n`;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
header += `---\n\n`;
|
|
243
|
+
return header;
|
|
244
|
+
}
|
|
245
|
+
buildPaginatedFooter(pagination, contextId, endOffset, totalLength) {
|
|
246
|
+
const needsPagination = pagination.totalChunks > 1 || pagination.hasMore;
|
|
247
|
+
if (!needsPagination) {
|
|
248
|
+
return '';
|
|
249
|
+
}
|
|
250
|
+
let footer = `\n\n---\n\n`;
|
|
251
|
+
if (pagination.hasMore) {
|
|
252
|
+
footer += `📖 **End of chunk ${pagination.chunkIndex}/${pagination.totalChunks}**\n`;
|
|
253
|
+
if (contextId) {
|
|
254
|
+
footer += `🔄 To continue: Include \`context_id: "${contextId}"\` with \`offset: ${endOffset}\` in next request`;
|
|
255
|
+
}
|
|
256
|
+
else {
|
|
257
|
+
footer += `🔄 To continue: Use same tool with \`offset: ${endOffset}\``;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
else {
|
|
261
|
+
footer += `✅ **Complete analysis shown** (${totalLength.toLocaleString()} characters total)`;
|
|
262
|
+
}
|
|
263
|
+
return footer;
|
|
264
|
+
}
|
|
265
|
+
buildExecutionSummary(summary) {
|
|
266
|
+
if (!summary)
|
|
267
|
+
return '';
|
|
268
|
+
let text = `\n\n### Execution Summary\n`;
|
|
269
|
+
text += `- **CLI Agents:** ${summary.successfulCLIs}/${summary.totalCLIs} successful\n`;
|
|
270
|
+
text += `- **Total Time:** ${summary.totalExecutionTime}ms\n`;
|
|
271
|
+
if (summary.selectedCLI) {
|
|
272
|
+
text += `- **Selected CLI:** ${summary.selectedCLI}\n`;
|
|
273
|
+
}
|
|
274
|
+
return text;
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
//# sourceMappingURL=response-formatter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"response-formatter.js","sourceRoot":"","sources":["../../src/formatting/response-formatter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-generator.d.ts","sourceRoot":"","sources":["../../src/generators/tool-generator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,cAAc,EAAkB,MAAM,+BAA+B,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAuB,MAAM,8BAA8B,CAAC;AAClF,OAAO,EAAE,aAAa,EAAmC,MAAM,8BAA8B,CAAC;AAC9F,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,qBAAa,sBAAsB;IACjC;;OAEG;IACH,YAAY,CACV,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,aAAa,EACvB,QAAQ,EAAE,iBAAiB,GAC1B,UAAU;IA8Bb;;OAEG;IACH,oBAAoB,CAClB,OAAO,EAAE,cAAc,EAAE,EACzB,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,aAAa,EACvB,QAAQ,EAAE,iBAAiB,GAC1B,UAAU;IAQb;;OAEG;IACH,kBAAkB,CAChB,MAAM,EAAE,cAAc,EACtB,QAAQ,EAAE,aAAa,EAAE,EACzB,QAAQ,EAAE,aAAa,EACvB,UAAU,EAAE,iBAAiB,EAAE,GAC9B,UAAU,EAAE;IAcf,OAAO,CAAC,qBAAqB;IAM7B,OAAO,CAAC,mBAAmB;IAmC3B,OAAO,CAAC,iBAAiB;
|
|
1
|
+
{"version":3,"file":"tool-generator.d.ts","sourceRoot":"","sources":["../../src/generators/tool-generator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,cAAc,EAAkB,MAAM,+BAA+B,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAuB,MAAM,8BAA8B,CAAC;AAClF,OAAO,EAAE,aAAa,EAAmC,MAAM,8BAA8B,CAAC;AAC9F,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,qBAAa,sBAAsB;IACjC;;OAEG;IACH,YAAY,CACV,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,aAAa,EACvB,QAAQ,EAAE,iBAAiB,GAC1B,UAAU;IA8Bb;;OAEG;IACH,oBAAoB,CAClB,OAAO,EAAE,cAAc,EAAE,EACzB,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,aAAa,EACvB,QAAQ,EAAE,iBAAiB,GAC1B,UAAU;IAQb;;OAEG;IACH,kBAAkB,CAChB,MAAM,EAAE,cAAc,EACtB,QAAQ,EAAE,aAAa,EAAE,EACzB,QAAQ,EAAE,aAAa,EACvB,UAAU,EAAE,iBAAiB,EAAE,GAC9B,UAAU,EAAE;IAcf,OAAO,CAAC,qBAAqB;IAM7B,OAAO,CAAC,mBAAmB;IAmC3B,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,oBAAoB;IAK5B,OAAO,CAAC,uBAAuB;CAkBhC"}
|
|
@@ -91,7 +91,8 @@ export class BrutalistToolGenerator {
|
|
|
91
91
|
renderDescription(domain, persona, strategy) {
|
|
92
92
|
const toneDesc = this.describeTone(persona.tone);
|
|
93
93
|
const modeDesc = this.describeMode(strategy.mode);
|
|
94
|
-
|
|
94
|
+
// Combine the flavorful intro with the domain's detailed description
|
|
95
|
+
return `Deploy ${toneDesc} AI critics to ${modeDesc} your ${domain.name.toLowerCase()}. ${domain.description}.`;
|
|
95
96
|
}
|
|
96
97
|
describeTone(tone) {
|
|
97
98
|
switch (tone) {
|
|
@@ -111,6 +112,7 @@ export class BrutalistToolGenerator {
|
|
|
111
112
|
default: return 'analyze';
|
|
112
113
|
}
|
|
113
114
|
}
|
|
115
|
+
// NOTE: This method is now unused, as domain.description is directly injected
|
|
114
116
|
describeCapabilities(capabilities) {
|
|
115
117
|
const first = capabilities[0] || 'analyze';
|
|
116
118
|
return first.replace(/_/g, ' ');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-generator.js","sourceRoot":"","sources":["../../src/generators/tool-generator.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"tool-generator.js","sourceRoot":"","sources":["../../src/generators/tool-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { CLIAgentOrchestrator } from '../cli-agents.js';
|
|
2
|
+
import { ToolConfig } from '../types/tool-config.js';
|
|
3
|
+
import { BrutalistServerConfig } from '../types/brutalist.js';
|
|
4
|
+
import { ResponseCache } from '../utils/response-cache.js';
|
|
5
|
+
import { ResponseFormatter } from '../formatting/response-formatter.js';
|
|
6
|
+
/**
|
|
7
|
+
* ToolHandler - Handles roast tool execution with caching and pagination
|
|
8
|
+
* Extracted from BrutalistServer to follow Single Responsibility Principle
|
|
9
|
+
*/
|
|
10
|
+
export declare class ToolHandler {
|
|
11
|
+
private cliOrchestrator;
|
|
12
|
+
private responseCache;
|
|
13
|
+
private formatter;
|
|
14
|
+
private config;
|
|
15
|
+
private activeSessions;
|
|
16
|
+
private handleStreamingEvent;
|
|
17
|
+
private handleProgressUpdate;
|
|
18
|
+
private ensureSessionCapacity;
|
|
19
|
+
constructor(cliOrchestrator: CLIAgentOrchestrator, responseCache: ResponseCache, formatter: ResponseFormatter, config: BrutalistServerConfig, activeSessions: Map<string, {
|
|
20
|
+
startTime: number;
|
|
21
|
+
requestCount: number;
|
|
22
|
+
lastActivity: number;
|
|
23
|
+
}>, handleStreamingEvent: (event: any) => void, handleProgressUpdate: (progressToken: string | number, progress: number, total: number, message: string, sessionId?: string) => void, ensureSessionCapacity: () => void);
|
|
24
|
+
/**
|
|
25
|
+
* Unified handler for all roast tools - DRY principle
|
|
26
|
+
*/
|
|
27
|
+
handleRoastTool(config: ToolConfig, args: any, extra: any): Promise<any>;
|
|
28
|
+
/**
|
|
29
|
+
* Execute brutalist analysis with CLI orchestrator
|
|
30
|
+
*/
|
|
31
|
+
private executeBrutalistAnalysis;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=tool-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-handler.d.ts","sourceRoot":"","sources":["../../src/handlers/tool-handler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAuB,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAIL,qBAAqB,EACtB,MAAM,uBAAuB,CAAC;AAM/B,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAExE;;;GAGG;AACH,qBAAa,WAAW;IAEpB,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,oBAAoB;IAC5B,OAAO,CAAC,oBAAoB;IAO5B,OAAO,CAAC,qBAAqB;gBAjBrB,eAAe,EAAE,oBAAoB,EACrC,aAAa,EAAE,aAAa,EAC5B,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EAAE,qBAAqB,EAC7B,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE;QAClC,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC,EACM,oBAAoB,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,EAC1C,oBAAoB,EAAE,CAC5B,aAAa,EAAE,MAAM,GAAG,MAAM,EAC9B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,KACf,IAAI,EACD,qBAAqB,EAAE,MAAM,IAAI;IAG3C;;OAEG;IACU,eAAe,CAC1B,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,GAAG,EACT,KAAK,EAAE,GAAG,GACT,OAAO,CAAC,GAAG,CAAC;IAuQf;;OAEG;YACW,wBAAwB;CAwFvC"}
|