@timmeck/brain 3.36.11 → 3.36.14

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 (36) hide show
  1. package/dist/brain.js +100 -4
  2. package/dist/brain.js.map +1 -1
  3. package/dist/cli/commands/missions.d.ts +2 -0
  4. package/dist/cli/commands/missions.js +113 -0
  5. package/dist/cli/commands/missions.js.map +1 -0
  6. package/dist/hooks/__tests__/prompt-submit.test.d.ts +1 -0
  7. package/dist/hooks/__tests__/prompt-submit.test.js +202 -0
  8. package/dist/hooks/__tests__/prompt-submit.test.js.map +1 -0
  9. package/dist/hooks/prompt-submit.js +70 -58
  10. package/dist/hooks/prompt-submit.js.map +1 -1
  11. package/dist/index.js +2 -0
  12. package/dist/index.js.map +1 -1
  13. package/dist/ipc/__tests__/notification-bridge.test.d.ts +1 -0
  14. package/dist/ipc/__tests__/notification-bridge.test.js +155 -0
  15. package/dist/ipc/__tests__/notification-bridge.test.js.map +1 -0
  16. package/dist/ipc/router.d.ts +5 -0
  17. package/dist/ipc/router.js +82 -1
  18. package/dist/ipc/router.js.map +1 -1
  19. package/dist/learning/__tests__/confidence-scorer.test.d.ts +1 -0
  20. package/dist/learning/__tests__/confidence-scorer.test.js +75 -0
  21. package/dist/learning/__tests__/confidence-scorer.test.js.map +1 -0
  22. package/dist/learning/confidence-scorer.js +3 -3
  23. package/dist/learning/confidence-scorer.js.map +1 -1
  24. package/dist/mcp/http-server.js +4 -0
  25. package/dist/mcp/http-server.js.map +1 -1
  26. package/dist/mcp/llm-tools.js +89 -19
  27. package/dist/mcp/llm-tools.js.map +1 -1
  28. package/dist/mcp/mission-tools.d.ts +5 -0
  29. package/dist/mcp/mission-tools.js +72 -0
  30. package/dist/mcp/mission-tools.js.map +1 -0
  31. package/dist/mcp/server.js +4 -0
  32. package/dist/mcp/server.js.map +1 -1
  33. package/dist/mcp/techradar-tools.d.ts +7 -0
  34. package/dist/mcp/techradar-tools.js +138 -0
  35. package/dist/mcp/techradar-tools.js.map +1 -0
  36. package/package.json +1 -1
@@ -29,6 +29,8 @@ import { registerSelfmodToolsDirect } from './selfmod-tools.js';
29
29
  import { registerConceptToolsDirect } from './concept-tools.js';
30
30
  import { registerPeerToolsDirect } from './peer-tools.js';
31
31
  import { registerLLMToolsDirect } from './llm-tools.js';
32
+ import { registerMissionToolsDirect } from './mission-tools.js';
33
+ import { registerTechRadarToolsDirect } from './techradar-tools.js';
32
34
  import { registerPromptsDirect } from './prompts.js';
33
35
  export class McpHttpServer {
34
36
  inner;
@@ -63,6 +65,8 @@ export class McpHttpServer {
63
65
  registerConceptToolsDirect(server, router);
64
66
  registerPeerToolsDirect(server, router);
65
67
  registerLLMToolsDirect(server, router);
68
+ registerMissionToolsDirect(server, router);
69
+ registerTechRadarToolsDirect(server, router);
66
70
  registerPromptsDirect(server, router);
67
71
  });
68
72
  }
@@ -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;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,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,6BAA6B,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,gCAAgC,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,+BAA+B,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,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,iBAAiB,EAAE,EAAE,EAC/C,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,6BAA6B,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC9C,0BAA0B,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC3C,0BAA0B,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC3C,4BAA4B,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC7C,2BAA2B,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC5C,0BAA0B,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC3C,4BAA4B,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC7C,4BAA4B,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC7C,4BAA4B,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC7C,yBAAyB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC1C,gCAAgC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACjD,4BAA4B,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC7C,+BAA+B,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAChD,uBAAuB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACxC,4BAA4B,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC7C,4BAA4B,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC7C,4BAA4B,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC7C,0BAA0B,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC3C,0BAA0B,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC3C,uBAAuB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACxC,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACvC,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":"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"}
@@ -1,3 +1,4 @@
1
+ import { z } from 'zod';
1
2
  function textResult(data) {
2
3
  const text = typeof data === 'string' ? data : JSON.stringify(data, null, 2);
3
4
  return { content: [{ type: 'text', text }] };
@@ -9,30 +10,65 @@ export function registerLLMToolsDirect(server, router) {
9
10
  registerLLMToolsWithCaller(server, (method, params) => router.handle(method, params));
10
11
  }
11
12
  function registerLLMToolsWithCaller(server, call) {
12
- server.tool('brain_llm_status', 'Get LLM service status: token usage, cache stats, rate limits, budget remaining', {}, async () => {
13
+ server.tool('brain_llm_status', 'Get LLM service status: token usage, cache stats, rate limits, budget remaining, active providers', {}, async () => {
13
14
  const stats = await call('llm.status', {});
14
15
  const lines = [
15
16
  '# LLM Service Status',
16
- `**Model:** ${stats.model} | **Available:** ${stats.totalCalls > 0 || stats.budgetRemainingHour > 0 ? 'Yes' : 'No API Key'}`,
17
+ `**Model:** ${stats.model}`,
17
18
  '',
18
- '## Usage',
19
- `- **Total Calls:** ${stats.totalCalls} | **Total Tokens:** ${stats.totalTokens.toLocaleString()}`,
20
- `- **This Hour:** ${stats.callsThisHour} calls, ${stats.tokensThisHour.toLocaleString()} tokens`,
21
- `- **Today:** ${stats.tokensToday.toLocaleString()} tokens`,
22
- `- **Avg Latency:** ${Math.round(stats.averageLatencyMs)}ms`,
23
- '',
24
- '## Budget',
25
- `- **Hourly Remaining:** ${stats.budgetRemainingHour.toLocaleString()} tokens`,
26
- `- **Daily Remaining:** ${stats.budgetRemainingDay.toLocaleString()} tokens`,
27
- '',
28
- '## Cache',
29
- `- **Hits:** ${stats.cacheHits} | **Misses:** ${stats.cacheMisses}`,
30
- `- **Hit Rate:** ${(stats.cacheHitRate * 100).toFixed(1)}%`,
31
- '',
32
- '## Issues',
33
- `- **Rate Limit Hits:** ${stats.rateLimitHits} | **Errors:** ${stats.errors}`,
34
- stats.lastCallAt ? `- **Last Call:** ${new Date(stats.lastCallAt).toISOString()}` : '- *No calls yet*',
19
+ '## Providers',
35
20
  ];
21
+ if (stats.providers?.length > 0) {
22
+ lines.push('| Provider | Status | Cost Tier | Chat | Embed |');
23
+ lines.push('|----------|--------|-----------|------|-------|');
24
+ for (const p of stats.providers) {
25
+ lines.push(`| ${p.name} | ${p.available ? 'Online' : 'Offline'} | ${p.costTier} | ${p.capabilities.chat ? 'Yes' : 'No'} | ${p.capabilities.embed ? 'Yes' : 'No'} |`);
26
+ }
27
+ }
28
+ else {
29
+ lines.push('*No providers registered*');
30
+ }
31
+ lines.push('', '## Usage', `- **Total Calls:** ${stats.totalCalls} | **Total Tokens:** ${stats.totalTokens.toLocaleString()}`, `- **This Hour:** ${stats.callsThisHour} calls, ${stats.tokensThisHour.toLocaleString()} tokens`, `- **Today:** ${stats.tokensToday.toLocaleString()} tokens`, `- **Avg Latency:** ${Math.round(stats.averageLatencyMs)}ms`, '', '## Budget', `- **Hourly Remaining:** ${stats.budgetRemainingHour.toLocaleString()} tokens`, `- **Daily Remaining:** ${stats.budgetRemainingDay.toLocaleString()} tokens`, '', '## Cache', `- **Hits:** ${stats.cacheHits} | **Misses:** ${stats.cacheMisses}`, `- **Hit Rate:** ${(stats.cacheHitRate * 100).toFixed(1)}%`, '', '## Issues', `- **Rate Limit Hits:** ${stats.rateLimitHits} | **Errors:** ${stats.errors}`, stats.lastCallAt ? `- **Last Call:** ${new Date(stats.lastCallAt).toISOString()}` : '- *No calls yet*');
32
+ return textResult(lines.join('\n'));
33
+ });
34
+ server.tool('brain_llm_providers', 'List all registered LLM providers with availability status, capabilities, and cost tiers', {}, async () => {
35
+ const providers = await call('llm.providers', {});
36
+ const lines = ['# LLM Providers', ''];
37
+ if (!providers || providers.length === 0) {
38
+ lines.push('*No providers registered*');
39
+ return textResult(lines.join('\n'));
40
+ }
41
+ lines.push('| Provider | Status | Cost | Chat | Generate | Embed | Reasoning |');
42
+ lines.push('|----------|--------|------|------|----------|-------|-----------|');
43
+ for (const p of providers) {
44
+ lines.push(`| ${p.name} | ${p.available ? 'Online' : 'Offline'} | ${p.costTier} | ${p.capabilities.chat ? 'Yes' : '-'} | ${p.capabilities.generate ? 'Yes' : '-'} | ${p.capabilities.embed ? 'Yes' : '-'} | ${p.capabilities.reasoning ? 'Yes' : '-'} |`);
45
+ }
46
+ lines.push('', '## Setup Guide', '');
47
+ lines.push('**Ollama (local, free):** Install from https://ollama.com, then `ollama pull qwen3:14b`');
48
+ lines.push('**Anthropic (cloud):** Set `ANTHROPIC_API_KEY` in .env');
49
+ return textResult(lines.join('\n'));
50
+ });
51
+ server.tool('brain_llm_route', 'Show which provider handles which template type (explain, summarize, debate, etc.)', {
52
+ template: z.enum([
53
+ 'explain', 'ask', 'synthesize_debate', 'creative_hypothesis',
54
+ 'research_question', 'summarize', 'analyze_contradiction', 'custom',
55
+ ]).optional().describe('Specific template to check routing for'),
56
+ }, async (params) => {
57
+ const routing = await call('llm.routing', { template: params.template });
58
+ const lines = ['# LLM Task Routing', ''];
59
+ if (params.template) {
60
+ lines.push(`**Template:** ${params.template}`);
61
+ lines.push(`**Preferred Tier:** ${routing.tier}`);
62
+ lines.push(`**Provider Chain:** ${routing.chain?.join(' → ') ?? 'none'}`);
63
+ }
64
+ else {
65
+ lines.push('| Template | Tier | Providers |');
66
+ lines.push('|----------|------|-----------|');
67
+ for (const r of routing.routes ?? []) {
68
+ lines.push(`| ${r.template} | ${r.tier} | ${r.chain?.join(' → ') ?? '-'} |`);
69
+ }
70
+ }
71
+ lines.push('', '*Tier: local = free/local provider first, cloud = quality provider first, any = cheapest available*');
36
72
  return textResult(lines.join('\n'));
37
73
  });
38
74
  server.tool('brain_llm_usage', 'Get LLM token usage breakdown by template (explain, ask, debate, hypothesis, etc.)', {}, async () => {
@@ -60,5 +96,39 @@ function registerLLMToolsWithCaller(server, call) {
60
96
  }
61
97
  return textResult(lines.join('\n'));
62
98
  });
99
+ server.tool('brain_ollama_status', 'Get Ollama server status: installed models, running models, VRAM usage (requires Ollama)', {}, async () => {
100
+ const status = await call('llm.ollamaStatus', {});
101
+ const lines = ['# Ollama Status', ''];
102
+ if (!status.available) {
103
+ lines.push('**Status:** Offline');
104
+ lines.push(`**Host:** ${status.host}`);
105
+ lines.push('', 'Ollama is not running or not reachable.');
106
+ lines.push('Install from: https://ollama.com');
107
+ lines.push('Start with: `ollama serve`');
108
+ return textResult(lines.join('\n'));
109
+ }
110
+ lines.push(`**Status:** Online | **Host:** ${status.host}`);
111
+ lines.push(`**Chat Model:** ${status.chatModel} | **Embed Model:** ${status.embedModel}`);
112
+ if (status.runningModels?.length > 0) {
113
+ lines.push('', '## Running Models');
114
+ lines.push('| Model | Size | VRAM |');
115
+ lines.push('|-------|------|------|');
116
+ for (const m of status.runningModels) {
117
+ const sizeMB = Math.round(m.size / 1024 / 1024);
118
+ const vramMB = Math.round(m.size_vram / 1024 / 1024);
119
+ lines.push(`| ${m.name} | ${sizeMB} MB | ${vramMB} MB |`);
120
+ }
121
+ }
122
+ if (status.installedModels?.length > 0) {
123
+ lines.push('', '## Installed Models');
124
+ lines.push('| Model | Size |');
125
+ lines.push('|-------|------|');
126
+ for (const m of status.installedModels) {
127
+ const sizeMB = Math.round(m.size / 1024 / 1024);
128
+ lines.push(`| ${m.name} | ${sizeMB} MB |`);
129
+ }
130
+ }
131
+ return textResult(lines.join('\n'));
132
+ });
63
133
  }
64
134
  //# sourceMappingURL=llm-tools.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"llm-tools.js","sourceRoot":"","sources":["../../src/mcp/llm-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"llm-tools.js","sourceRoot":"","sources":["../../src/mcp/llm-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
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
+ export declare function registerMissionTools(server: McpServer, ipc: IpcClient): void;
5
+ export declare function registerMissionToolsDirect(server: McpServer, router: IpcRouter): void;
@@ -0,0 +1,72 @@
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
+ export function registerMissionTools(server, ipc) {
7
+ registerMissionToolsWithCaller(server, (method, params) => ipc.request(method, params));
8
+ }
9
+ export function registerMissionToolsDirect(server, router) {
10
+ registerMissionToolsWithCaller(server, (method, params) => router.handle(method, params));
11
+ }
12
+ function registerMissionToolsWithCaller(server, call) {
13
+ server.tool('brain_mission_create', 'Create a research mission: autonomously research a topic through web search, knowledge synthesis, and hypothesis generation. Returns a structured report.', {
14
+ topic: z.string().describe('The research topic to investigate'),
15
+ depth: z.enum(['quick', 'standard', 'deep']).optional().describe('Research depth: quick (5 sources), standard (10), deep (20). Default: standard'),
16
+ }, async (params) => {
17
+ const result = await call('mission.create', { topic: params.topic, depth: params.depth ?? 'standard' });
18
+ return textResult(`# Mission Created\n\n**ID:** ${result.id}\n**Topic:** ${result.topic}\n**Depth:** ${result.depth}\n**Status:** ${result.status}\n\nThe mission is running in background. Use \`brain_mission_report\` with ID ${result.id} to check progress and read the final report.`);
19
+ });
20
+ server.tool('brain_mission_list', 'List all research missions with their status', {
21
+ status: z.string().optional().describe('Filter by status: pending, decomposing, gathering, hypothesizing, analyzing, synthesizing, complete, failed'),
22
+ limit: z.number().optional().describe('Max results (default: 20)'),
23
+ }, async (params) => {
24
+ const missions = await call('mission.list', { status: params.status, limit: params.limit });
25
+ if (!missions?.length)
26
+ return textResult('No missions found.');
27
+ const lines = ['# Research Missions', '', '| ID | Topic | Status | Sources | Created |', '|-----|-------|--------|---------|---------|'];
28
+ for (const m of missions) {
29
+ lines.push(`| ${m.id} | ${m.topic.substring(0, 50)} | ${m.status} | ${m.source_count ?? 0} | ${m.created_at?.substring(0, 10) ?? '-'} |`);
30
+ }
31
+ return textResult(lines.join('\n'));
32
+ });
33
+ server.tool('brain_mission_report', 'Get the full report of a research mission including phases, sources, and synthesized findings', {
34
+ id: z.number().describe('Mission ID'),
35
+ }, async (params) => {
36
+ const report = await call('mission.report', { id: params.id });
37
+ if (!report)
38
+ return textResult('Mission not found.');
39
+ const m = report.mission;
40
+ const lines = [
41
+ `# Mission #${m.id}: ${m.topic}`,
42
+ `**Status:** ${m.status} | **Depth:** ${m.depth} | **Sources:** ${m.source_count}`,
43
+ `**Created:** ${m.created_at}${m.completed_at ? ` | **Completed:** ${m.completed_at}` : ''}`,
44
+ '',
45
+ ];
46
+ if (report.phases?.length) {
47
+ lines.push('## Phases');
48
+ for (const p of report.phases) {
49
+ const icon = p.status === 'complete' ? '✅' : p.status === 'failed' ? '❌' : '⏳';
50
+ lines.push(`- ${icon} **${p.phase}**: ${p.status}`);
51
+ }
52
+ lines.push('');
53
+ }
54
+ if (m.report) {
55
+ lines.push('## Report', '', m.report);
56
+ }
57
+ else if (m.error) {
58
+ lines.push(`## Error\n\n${m.error}`);
59
+ }
60
+ else {
61
+ lines.push('*Report not yet available — mission still running.*');
62
+ }
63
+ return textResult(lines.join('\n'));
64
+ });
65
+ server.tool('brain_mission_cancel', 'Cancel a running research mission', {
66
+ id: z.number().describe('Mission ID to cancel'),
67
+ }, async (params) => {
68
+ await call('mission.cancel', { id: params.id });
69
+ return textResult(`Mission #${params.id} cancelled.`);
70
+ });
71
+ }
72
+ //# sourceMappingURL=mission-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mission-tools.js","sourceRoot":"","sources":["../../src/mcp/mission-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB,SAAS,UAAU,CAAC,IAAa;IAC/B,MAAM,IAAI,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC7E,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAiB,EAAE,GAAc;IACpE,8BAA8B,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAC1F,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,MAAiB,EAAE,MAAiB;IAC7E,8BAA8B,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAC5F,CAAC;AAED,SAAS,8BAA8B,CAAC,MAAiB,EAAE,IAAe;IAExE,MAAM,CAAC,IAAI,CACT,sBAAsB,EACtB,2JAA2J,EAC3J;QACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;QAC/D,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gFAAgF,CAAC;KACnJ,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,MAAM,GAAc,MAAM,IAAI,CAAC,gBAAgB,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,UAAU,EAAE,CAAC,CAAC;QACnH,OAAO,UAAU,CAAC,gCAAgC,MAAM,CAAC,EAAE,gBAAgB,MAAM,CAAC,KAAK,gBAAgB,MAAM,CAAC,KAAK,iBAAiB,MAAM,CAAC,MAAM,kFAAkF,MAAM,CAAC,EAAE,+CAA+C,CAAC,CAAC;IAC/R,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,8CAA8C,EAC9C;QACE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6GAA6G,CAAC;QACrJ,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;KACnE,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,QAAQ,GAAgB,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAgB,CAAC;QACxH,IAAI,CAAC,QAAQ,EAAE,MAAM;YAAE,OAAO,UAAU,CAAC,oBAAoB,CAAC,CAAC;QAE/D,MAAM,KAAK,GAAG,CAAC,qBAAqB,EAAE,EAAE,EAAE,6CAA6C,EAAE,8CAA8C,CAAC,CAAC;QACzI,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,MAAM,CAAC,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;QAC5I,CAAC;QACD,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACtC,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,sBAAsB,EACtB,+FAA+F,EAC/F;QACE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;KACtC,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,MAAM,GAAc,MAAM,IAAI,CAAC,gBAAgB,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1E,IAAI,CAAC,MAAM;YAAE,OAAO,UAAU,CAAC,oBAAoB,CAAC,CAAC;QAErD,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC;QACzB,MAAM,KAAK,GAAG;YACZ,cAAc,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,EAAE;YAChC,eAAe,CAAC,CAAC,MAAM,iBAAiB,CAAC,CAAC,KAAK,mBAAmB,CAAC,CAAC,YAAY,EAAE;YAClF,gBAAgB,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;YAC5F,EAAE;SACH,CAAC;QAEF,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;YAC1B,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACxB,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAC9B,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC/E,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YACtD,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QAED,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;YACb,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;QACxC,CAAC;aAAM,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;YACnB,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QACvC,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;QACpE,CAAC;QAED,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACtC,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,sBAAsB,EACtB,mCAAmC,EACnC;QACE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;KAChD,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,IAAI,CAAC,gBAAgB,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QAChD,OAAO,UAAU,CAAC,YAAY,MAAM,CAAC,EAAE,aAAa,CAAC,CAAC;IACxD,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -30,6 +30,8 @@ import { registerSelfmodTools } from './selfmod-tools.js';
30
30
  import { registerConceptTools } from './concept-tools.js';
31
31
  import { registerPeerTools } from './peer-tools.js';
32
32
  import { registerLLMTools } from './llm-tools.js';
33
+ import { registerMissionTools } from './mission-tools.js';
34
+ import { registerTechRadarTools } from './techradar-tools.js';
33
35
  import { registerPrompts } from './prompts.js';
34
36
  export async function startMcpServer() {
35
37
  await coreStartMcpServer({
@@ -66,6 +68,8 @@ export async function startMcpServer() {
66
68
  registerConceptTools(server, ipc);
67
69
  registerPeerTools(server, ipc);
68
70
  registerLLMTools(server, ipc);
71
+ registerMissionTools(server, ipc);
72
+ registerTechRadarTools(server, ipc);
69
73
  },
70
74
  registerPrompts,
71
75
  });
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.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 TechRadar tools using IPC client (for stdio MCP transport) */
5
+ export declare function registerTechRadarTools(server: McpServer, ipc: IpcClient): void;
6
+ /** Register TechRadar tools using router directly (for HTTP MCP transport inside daemon) */
7
+ export declare function registerTechRadarToolsDirect(server: McpServer, router: IpcRouter): void;
@@ -0,0 +1,138 @@
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 TechRadar tools using IPC client (for stdio MCP transport) */
7
+ export function registerTechRadarTools(server, ipc) {
8
+ registerTechRadarToolsWithCaller(server, (method, params) => ipc.request(method, params));
9
+ }
10
+ /** Register TechRadar tools using router directly (for HTTP MCP transport inside daemon) */
11
+ export function registerTechRadarToolsDirect(server, router) {
12
+ registerTechRadarToolsWithCaller(server, (method, params) => router.handle(method, params));
13
+ }
14
+ function registerTechRadarToolsWithCaller(server, call) {
15
+ // ═══════════════════════════════════════════════════════════════════
16
+ // TechRadar — Daily tech trend scanning + relevance analysis
17
+ // ═══════════════════════════════════════════════════════════════════
18
+ server.tool('brain_techradar_scan', 'Trigger a TechRadar scan. Checks watched repos for new releases, imports high-scoring repos from SignalScanner, and generates a daily digest.', {}, async () => {
19
+ const result = await call('techradar.scan', {});
20
+ const lines = [
21
+ 'TechRadar Scan Complete:',
22
+ ` Duration: ${result.duration_ms}ms`,
23
+ ` New entries: ${result.new_entries}`,
24
+ ` Updated entries: ${result.updated_entries}`,
25
+ ` Releases found: ${result.releases_found}`,
26
+ ` Digest generated: ${result.digest_generated}`,
27
+ ];
28
+ if (result.errors?.length > 0) {
29
+ lines.push(` Errors: ${result.errors.join(', ')}`);
30
+ }
31
+ return textResult(lines.join('\n'));
32
+ });
33
+ server.tool('brain_techradar_digest', 'Get the daily TechRadar digest. Shows summary, top entries, opportunities, and action items.', { date: z.string().optional().describe('Date (YYYY-MM-DD), defaults to today') }, async ({ date }) => {
34
+ const result = await call('techradar.digest', { date });
35
+ if (!result)
36
+ return textResult('No digest available for this date. Run brain_techradar_scan first.');
37
+ const lines = [
38
+ `TechRadar Digest — ${result.date}`,
39
+ '═'.repeat(50),
40
+ '',
41
+ result.summary,
42
+ '',
43
+ ];
44
+ if (result.entries?.length > 0) {
45
+ lines.push('Top Entries:');
46
+ for (const e of result.entries.slice(0, 10)) {
47
+ lines.push(` [${e.relevance_score}] ${e.name} (${e.source}) — ${e.summary}`);
48
+ }
49
+ lines.push('');
50
+ }
51
+ if (result.action_items?.length > 0) {
52
+ lines.push('Action Items:');
53
+ for (const a of result.action_items) {
54
+ lines.push(` [${a.priority}] ${a.action}`);
55
+ }
56
+ lines.push('');
57
+ }
58
+ if (result.opportunities?.length > 0) {
59
+ lines.push('Opportunities:');
60
+ for (const o of result.opportunities) {
61
+ lines.push(` ${o.title} (effort: ${o.effort}, impact: ${o.impact})`);
62
+ lines.push(` ${o.description}`);
63
+ }
64
+ }
65
+ return textResult(lines.join('\n'));
66
+ });
67
+ server.tool('brain_techradar_entries', 'Browse TechRadar entries. Filter by minimum relevance score, source, or ring.', {
68
+ minScore: z.number().optional().describe('Minimum relevance score (0-100)'),
69
+ source: z.string().optional().describe('Filter by source: github_release, github_trending, hackernews, web'),
70
+ ring: z.string().optional().describe('Filter by ring: adopt, trial, assess, hold'),
71
+ limit: z.number().optional().describe('Max entries to return'),
72
+ }, async ({ minScore, source, ring, limit }) => {
73
+ const result = await call('techradar.entries', { minScore, source, ring, limit });
74
+ if (!result || result.length === 0)
75
+ return textResult('No entries found.');
76
+ const lines = [`TechRadar Entries (${result.length})`, ''];
77
+ for (const e of result) {
78
+ lines.push(`[${e.relevance_score}] ${e.name}`);
79
+ lines.push(` Ring: ${e.ring} | Source: ${e.source} | Category: ${e.category}`);
80
+ lines.push(` ${e.description?.substring(0, 120)}`);
81
+ if (e.action_type !== 'none')
82
+ lines.push(` → ${e.action_type}: ${e.action_detail}`);
83
+ lines.push('');
84
+ }
85
+ return textResult(lines.join('\n'));
86
+ });
87
+ server.tool('brain_techradar_stats', 'Get TechRadar statistics: total entries, distribution by source/ring, watched repos count.', {}, async () => {
88
+ const result = await call('techradar.stats', {});
89
+ const lines = [
90
+ 'TechRadar Stats:',
91
+ ` Total entries: ${result.totalEntries}`,
92
+ ` Watched repos: ${result.watchedRepos}`,
93
+ ` Last digest: ${result.lastDigest ?? 'never'}`,
94
+ '',
95
+ 'By Source:',
96
+ ...Object.entries(result.bySource ?? {}).map(([k, v]) => ` ${k}: ${v}`),
97
+ '',
98
+ 'By Ring:',
99
+ ...Object.entries(result.byRing ?? {}).map(([k, v]) => ` ${k}: ${v}`),
100
+ ];
101
+ return textResult(lines.join('\n'));
102
+ });
103
+ server.tool('brain_techradar_repos', 'Manage watched repositories. List, add, or remove repos from the TechRadar watchlist.', {
104
+ action: z.enum(['list', 'add', 'remove']).describe('Action to perform'),
105
+ repo: z.string().optional().describe('Repository (owner/name) for add/remove'),
106
+ reason: z.string().optional().describe('Why watching this repo (for add)'),
107
+ }, async ({ action, repo, reason }) => {
108
+ switch (action) {
109
+ case 'list': {
110
+ const repos = await call('techradar.repos.list', {});
111
+ if (!repos || repos.length === 0)
112
+ return textResult('No watched repos.');
113
+ const lines = ['Watched Repos:', ''];
114
+ for (const r of repos) {
115
+ lines.push(` ${r.full_name}`);
116
+ if (r.last_release_tag)
117
+ lines.push(` Last release: ${r.last_release_tag} (${r.last_release_at})`);
118
+ if (r.reason)
119
+ lines.push(` Reason: ${r.reason}`);
120
+ }
121
+ return textResult(lines.join('\n'));
122
+ }
123
+ case 'add': {
124
+ if (!repo)
125
+ return textResult('Error: repo is required for add');
126
+ await call('techradar.repos.add', { repo, reason });
127
+ return textResult(`Added ${repo} to watchlist.`);
128
+ }
129
+ case 'remove': {
130
+ if (!repo)
131
+ return textResult('Error: repo is required for remove');
132
+ await call('techradar.repos.remove', { repo });
133
+ return textResult(`Removed ${repo} from watchlist.`);
134
+ }
135
+ }
136
+ });
137
+ }
138
+ //# sourceMappingURL=techradar-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"techradar-tools.js","sourceRoot":"","sources":["../../src/mcp/techradar-tools.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@timmeck/brain",
3
- "version": "3.36.11",
3
+ "version": "3.36.14",
4
4
  "description": "Adaptive error memory and code intelligence system with Hebbian synapse network, hybrid search, and REST API",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",