@timmeck/brain 3.12.1 → 3.14.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.
@@ -5,17 +5,21 @@ import { registerAdvancedResearchToolsDirect } from './advanced-research-tools.j
5
5
  import { registerDreamToolsDirect } from './dream-tools.js';
6
6
  import { registerConsciousnessToolsDirect } from './consciousness-tools.js';
7
7
  import { registerPredictionToolsDirect } from './prediction-tools.js';
8
+ import { registerResponderToolsDirect } from './responder-tools.js';
9
+ import { registerScanToolsDirect } from './scan-tools.js';
8
10
  import { registerPromptsDirect } from './prompts.js';
9
11
  export class McpHttpServer {
10
12
  inner;
11
13
  constructor(port, router) {
12
- this.inner = new CoreMcpHttpServer(port, router, { name: 'brain', version: '3.12.1' }, (server, _r) => {
14
+ this.inner = new CoreMcpHttpServer(port, router, { name: 'brain', version: '3.14.0' }, (server, _r) => {
13
15
  registerToolsDirect(server, router);
14
16
  registerResearchToolsDirect(server, router);
15
17
  registerAdvancedResearchToolsDirect(server, router);
16
18
  registerDreamToolsDirect(server, router);
17
19
  registerConsciousnessToolsDirect(server, router);
18
20
  registerPredictionToolsDirect(server, router);
21
+ registerResponderToolsDirect(server, router);
22
+ registerScanToolsDirect(server, router);
19
23
  registerPromptsDirect(server, router);
20
24
  });
21
25
  }
@@ -1 +1 @@
1
- {"version":3,"file":"http-server.js","sourceRoot":"","sources":["../../src/mcp/http-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAEzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,mCAAmC,EAAE,MAAM,8BAA8B,CAAC;AACnF,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,gCAAgC,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,EAAE,6BAA6B,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAErD,MAAM,OAAO,aAAa;IAChB,KAAK,CAAoB;IAEjC,YAAY,IAAY,EAAE,MAAiB;QACzC,IAAI,CAAC,KAAK,GAAG,IAAI,iBAAiB,CAChC,IAAI,EACJ,MAAM,EACN,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,EACpC,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;YACb,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACpC,2BAA2B,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC5C,mCAAmC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACpD,wBAAwB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACzC,gCAAgC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACjD,6BAA6B,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC9C,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACxC,CAAC,CACF,CAAC;IACJ,CAAC;IAED,KAAK,KAAW,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACrC,IAAI,KAAW,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACnC,cAAc,KAAa,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;CACjE"}
1
+ {"version":3,"file":"http-server.js","sourceRoot":"","sources":["../../src/mcp/http-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAEzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,mCAAmC,EAAE,MAAM,8BAA8B,CAAC;AACnF,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,gCAAgC,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,EAAE,6BAA6B,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAErD,MAAM,OAAO,aAAa;IAChB,KAAK,CAAoB;IAEjC,YAAY,IAAY,EAAE,MAAiB;QACzC,IAAI,CAAC,KAAK,GAAG,IAAI,iBAAiB,CAChC,IAAI,EACJ,MAAM,EACN,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,EACpC,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;YACb,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACpC,2BAA2B,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC5C,mCAAmC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACpD,wBAAwB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACzC,gCAAgC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACjD,6BAA6B,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC9C,4BAA4B,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC7C,uBAAuB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACxC,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACxC,CAAC,CACF,CAAC;IACJ,CAAC;IAED,KAAK,KAAW,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACrC,IAAI,KAAW,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACnC,cAAc,KAAa,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;CACjE"}
@@ -0,0 +1,7 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import type { IpcClient } from '@timmeck/brain-core';
3
+ import type { IpcRouter } from '../ipc/router.js';
4
+ /** Register responder tools using IPC client (for stdio MCP transport) */
5
+ export declare function registerResponderTools(server: McpServer, ipc: IpcClient): void;
6
+ /** Register responder tools using router directly (for HTTP MCP transport inside daemon) */
7
+ export declare function registerResponderToolsDirect(server: McpServer, router: IpcRouter): void;
@@ -0,0 +1,51 @@
1
+ import { z } from 'zod';
2
+ function textResult(data) {
3
+ const text = typeof data === 'string' ? data : JSON.stringify(data, null, 2);
4
+ return { content: [{ type: 'text', text }] };
5
+ }
6
+ /** Register responder tools using IPC client (for stdio MCP transport) */
7
+ export function registerResponderTools(server, ipc) {
8
+ registerResponderToolsWithCaller(server, (method, params) => ipc.request(method, params));
9
+ }
10
+ /** Register responder tools using router directly (for HTTP MCP transport inside daemon) */
11
+ export function registerResponderToolsDirect(server, router) {
12
+ registerResponderToolsWithCaller(server, (method, params) => router.handle(method, params));
13
+ }
14
+ function registerResponderToolsWithCaller(server, call) {
15
+ server.tool('brain_responder_status', 'Get the AutoResponder status — shows how many anomalies Brain has automatically responded to, success rate, and recent actions.', {}, async () => {
16
+ const result = await call('responder.status');
17
+ const lines = [
18
+ `AutoResponder Status`,
19
+ ` Enabled: ${result.enabled}`,
20
+ ` Total Responses: ${result.total_responses}`,
21
+ ` Successful: ${result.successful}`,
22
+ ` Reverted: ${result.reverted}`,
23
+ ` Success Rate: ${((result.success_rate ?? 0) * 100).toFixed(1)}%`,
24
+ ` Rules: ${result.rules_count}`,
25
+ ];
26
+ if (result.recent?.length > 0) {
27
+ lines.push('', 'Recent Actions:');
28
+ for (const r of result.recent) {
29
+ lines.push(` [${r.action}] ${r.description}`);
30
+ }
31
+ }
32
+ return textResult(lines.join('\n'));
33
+ });
34
+ server.tool('brain_responder_history', 'Get history of automatic responses Brain has taken in reaction to anomalies.', {
35
+ limit: z.number().optional().describe('Max entries to return (default: 20)'),
36
+ }, async (params) => {
37
+ const result = await call('responder.history', { limit: params.limit ?? 20 });
38
+ if (!result?.length)
39
+ return textResult('No auto-responses recorded yet.');
40
+ const lines = result.map((r) => `[${new Date(r.timestamp).toISOString().substring(0, 19)}] ${r.action}: ${r.description}${r.reverted ? ' (REVERTED)' : ''}`);
41
+ return textResult(lines.join('\n'));
42
+ });
43
+ server.tool('brain_responder_rules', 'List the active response rules that Brain uses to automatically react to anomalies.', {}, async () => {
44
+ const result = await call('responder.rules');
45
+ if (!result?.length)
46
+ return textResult('No response rules configured.');
47
+ const lines = result.map((r, i) => `${i + 1}. [${r.action}] ${r.description}\n Pattern: /${r.metric_pattern}/ | Min Severity: ${r.min_severity}${r.strategy ? ` | Strategy: ${r.strategy}.${r.parameter}` : ''}`);
48
+ return textResult(lines.join('\n\n'));
49
+ });
50
+ }
51
+ //# sourceMappingURL=responder-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"responder-tools.js","sourceRoot":"","sources":["../../src/mcp/responder-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import type { IpcClient } from '@timmeck/brain-core';
3
+ import type { IpcRouter } from '../ipc/router.js';
4
+ /** Register scan tools using IPC client (for stdio MCP transport) */
5
+ export declare function registerScanTools(server: McpServer, ipc: IpcClient): void;
6
+ /** Register scan tools using router directly (for HTTP MCP transport inside daemon) */
7
+ export declare function registerScanToolsDirect(server: McpServer, router: IpcRouter): void;
@@ -0,0 +1,82 @@
1
+ import { z } from 'zod';
2
+ function textResult(data) {
3
+ const text = typeof data === 'string' ? data : JSON.stringify(data, null, 2);
4
+ return { content: [{ type: 'text', text }] };
5
+ }
6
+ /** Register scan tools using IPC client (for stdio MCP transport) */
7
+ export function registerScanTools(server, ipc) {
8
+ registerScanToolsWithCaller(server, (method, params) => ipc.request(method, params));
9
+ }
10
+ /** Register scan tools using router directly (for HTTP MCP transport inside daemon) */
11
+ export function registerScanToolsDirect(server, router) {
12
+ registerScanToolsWithCaller(server, (method, params) => router.handle(method, params));
13
+ }
14
+ function registerScanToolsWithCaller(server, call) {
15
+ // ═══════════════════════════════════════════════════════════════════
16
+ // Smart Project Import — Learn from real project history
17
+ // ═══════════════════════════════════════════════════════════════════
18
+ server.tool('brain_scan_project', 'Smart-scan a project directory: extracts errors + solutions from Git history (fix commits), log files, and build output. Makes Brain instantly knowledgeable about a project\'s error patterns.', {
19
+ directory: z.string().describe('Absolute path to the project directory'),
20
+ project: z.string().optional().describe('Project name (default: directory basename)'),
21
+ git_depth: z.number().optional().describe('Number of git commits to scan (default: 200)'),
22
+ skip_build: z.boolean().optional().describe('Skip running the build (default: false)'),
23
+ skip_git: z.boolean().optional().describe('Skip git history scan (default: false)'),
24
+ skip_logs: z.boolean().optional().describe('Skip log file scan (default: false)'),
25
+ }, async (params) => {
26
+ const result = await call('scan.project', {
27
+ directory: params.directory,
28
+ project: params.project,
29
+ options: {
30
+ gitDepth: params.git_depth,
31
+ skipBuild: params.skip_build,
32
+ skipGit: params.skip_git,
33
+ skipLogs: params.skip_logs,
34
+ },
35
+ });
36
+ const lines = [
37
+ `Smart Import Complete: ${result.project}`,
38
+ ` Directory: ${result.directory}`,
39
+ ` Duration: ${result.duration}ms`,
40
+ '',
41
+ ];
42
+ if (result.git) {
43
+ const g = result.git;
44
+ lines.push('Git History:');
45
+ lines.push(` Commits scanned: ${g.commitsScanned}`);
46
+ lines.push(` Fix commits: ${g.fixCommits}`);
47
+ lines.push(` Errors created: ${g.errorsCreated}`);
48
+ lines.push(` Solutions created: ${g.solutionsCreated}`);
49
+ lines.push(` Duplicates skipped: ${g.duplicates}`);
50
+ lines.push('');
51
+ }
52
+ if (result.logs) {
53
+ const l = result.logs;
54
+ lines.push('Log Files:');
55
+ lines.push(` Files scanned: ${l.filesScanned}`);
56
+ lines.push(` Errors created: ${l.errorsCreated}`);
57
+ lines.push(` Duplicates skipped: ${l.duplicates}`);
58
+ lines.push('');
59
+ }
60
+ if (result.build && result.build.buildSystem !== 'unknown') {
61
+ const b = result.build;
62
+ lines.push(`Build (${b.buildSystem}):`);
63
+ lines.push(` Command: ${b.command}`);
64
+ lines.push(` Exit code: ${b.exitCode}`);
65
+ lines.push(` Errors created: ${b.errorsCreated}`);
66
+ lines.push('');
67
+ }
68
+ const t = result.totals;
69
+ lines.push('Totals:');
70
+ lines.push(` Errors: ${t.errors}`);
71
+ lines.push(` Solutions: ${t.solutions}`);
72
+ lines.push(` Duplicates: ${t.duplicates}`);
73
+ return textResult(lines.join('\n'));
74
+ });
75
+ server.tool('brain_scan_status', 'Get the result of the last project scan. Shows how many errors, solutions, and duplicates were found.', {}, async () => {
76
+ const result = await call('scan.status', {});
77
+ if (!result)
78
+ return textResult('No scan has been run yet.');
79
+ return textResult(result);
80
+ });
81
+ }
82
+ //# sourceMappingURL=scan-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scan-tools.js","sourceRoot":"","sources":["../../src/mcp/scan-tools.ts"],"names":[],"mappings":"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"}
@@ -6,11 +6,13 @@ import { registerAdvancedResearchTools } from './advanced-research-tools.js';
6
6
  import { registerDreamTools } from './dream-tools.js';
7
7
  import { registerConsciousnessTools } from './consciousness-tools.js';
8
8
  import { registerPredictionTools } from './prediction-tools.js';
9
+ import { registerResponderTools } from './responder-tools.js';
10
+ import { registerScanTools } from './scan-tools.js';
9
11
  import { registerPrompts } from './prompts.js';
10
12
  export async function startMcpServer() {
11
13
  await coreStartMcpServer({
12
14
  name: 'brain',
13
- version: '3.12.1',
15
+ version: '3.14.0',
14
16
  entryPoint: path.resolve(import.meta.dirname, '../index.ts'),
15
17
  registerTools: (server, ipc) => {
16
18
  registerTools(server, ipc);
@@ -19,6 +21,8 @@ export async function startMcpServer() {
19
21
  registerDreamTools(server, ipc);
20
22
  registerConsciousnessTools(server, ipc);
21
23
  registerPredictionTools(server, ipc);
24
+ registerResponderTools(server, ipc);
25
+ registerScanTools(server, ipc);
22
26
  },
23
27
  registerPrompts,
24
28
  });
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,IAAI,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,MAAM,kBAAkB,CAAC;QACvB,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,QAAQ;QACjB,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC;QAC5D,aAAa,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;YAC7B,aAAa,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAC3B,qBAAqB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACnC,6BAA6B,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAC3C,kBAAkB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAChC,0BAA0B,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACxC,uBAAuB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACvC,CAAC;QACD,eAAe;KAChB,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,IAAI,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,MAAM,kBAAkB,CAAC;QACvB,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,QAAQ;QACjB,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC;QAC5D,aAAa,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;YAC7B,aAAa,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAC3B,qBAAqB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACnC,6BAA6B,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAC3C,kBAAkB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAChC,0BAA0B,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACxC,uBAAuB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACrC,sBAAsB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACpC,iBAAiB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACjC,CAAC;QACD,eAAe;KAChB,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,59 @@
1
+ import type { ErrorService } from './error.service.js';
2
+ import type { SolutionService } from './solution.service.js';
3
+ import type { GitService } from './git.service.js';
4
+ export interface ScanOptions {
5
+ gitDepth?: number;
6
+ skipBuild?: boolean;
7
+ skipGit?: boolean;
8
+ skipLogs?: boolean;
9
+ }
10
+ export interface ScanResult {
11
+ project: string;
12
+ directory: string;
13
+ duration: number;
14
+ git: GitScanResult | null;
15
+ logs: LogScanResult | null;
16
+ build: BuildScanResult | null;
17
+ totals: {
18
+ errors: number;
19
+ solutions: number;
20
+ duplicates: number;
21
+ };
22
+ }
23
+ export interface GitScanResult {
24
+ commitsScanned: number;
25
+ fixCommits: number;
26
+ errorsCreated: number;
27
+ solutionsCreated: number;
28
+ duplicates: number;
29
+ }
30
+ export interface LogScanResult {
31
+ filesScanned: number;
32
+ errorsCreated: number;
33
+ duplicates: number;
34
+ }
35
+ export interface BuildScanResult {
36
+ buildSystem: string;
37
+ command: string;
38
+ exitCode: number;
39
+ errorsCreated: number;
40
+ }
41
+ export declare class ProjectScanner {
42
+ private errorService;
43
+ private solutionService;
44
+ private gitService;
45
+ private logger;
46
+ private lastScanResult;
47
+ constructor(errorService: ErrorService, solutionService: SolutionService, gitService: GitService);
48
+ getLastResult(): ScanResult | null;
49
+ scan(directory: string, project: string, options?: ScanOptions): ScanResult;
50
+ scanGitHistory(dir: string, project: string, depth?: number): GitScanResult;
51
+ scanLogFiles(dir: string, project: string): LogScanResult;
52
+ scanBuildOutput(dir: string, project: string): BuildScanResult;
53
+ private extractErrorFromCommit;
54
+ private extractSolutionFromCommit;
55
+ private extractDiffSummary;
56
+ private findLogFiles;
57
+ private extractErrorChunks;
58
+ private detectBuildSystem;
59
+ }