@theihtisham/agent-shadow-brain 6.0.2 → 6.2.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 (74) hide show
  1. package/CHANGELOG.md +372 -0
  2. package/README.md +330 -358
  3. package/dist/brain/auto-update.js +1 -1
  4. package/dist/brain/brain-bus.d.ts +40 -0
  5. package/dist/brain/brain-bus.d.ts.map +1 -0
  6. package/dist/brain/brain-bus.js +94 -0
  7. package/dist/brain/brain-bus.js.map +1 -0
  8. package/dist/brain/brain-portability.js +3 -3
  9. package/dist/brain/brain-portability.js.map +1 -1
  10. package/dist/brain/collision-detective.d.ts.map +1 -1
  11. package/dist/brain/collision-detective.js +16 -0
  12. package/dist/brain/collision-detective.js.map +1 -1
  13. package/dist/brain/context-continuity.d.ts +78 -0
  14. package/dist/brain/context-continuity.d.ts.map +1 -0
  15. package/dist/brain/context-continuity.js +341 -0
  16. package/dist/brain/context-continuity.js.map +1 -0
  17. package/dist/brain/dream-engine.d.ts.map +1 -1
  18. package/dist/brain/dream-engine.js +12 -0
  19. package/dist/brain/dream-engine.js.map +1 -1
  20. package/dist/brain/forgetting-curve.d.ts.map +1 -1
  21. package/dist/brain/forgetting-curve.js +19 -0
  22. package/dist/brain/forgetting-curve.js.map +1 -1
  23. package/dist/brain/global-brain.d.ts +4 -0
  24. package/dist/brain/global-brain.d.ts.map +1 -1
  25. package/dist/brain/global-brain.js +61 -9
  26. package/dist/brain/global-brain.js.map +1 -1
  27. package/dist/brain/live-brain.d.ts +119 -0
  28. package/dist/brain/live-brain.d.ts.map +1 -0
  29. package/dist/brain/live-brain.js +405 -0
  30. package/dist/brain/live-brain.js.map +1 -0
  31. package/dist/brain/mcp-server.d.ts +4 -0
  32. package/dist/brain/mcp-server.d.ts.map +1 -1
  33. package/dist/brain/mcp-server.js +81 -5
  34. package/dist/brain/mcp-server.js.map +1 -1
  35. package/dist/brain/memory-graph.d.ts +51 -0
  36. package/dist/brain/memory-graph.d.ts.map +1 -0
  37. package/dist/brain/memory-graph.js +267 -0
  38. package/dist/brain/memory-graph.js.map +1 -0
  39. package/dist/brain/memory-seeder.d.ts +78 -0
  40. package/dist/brain/memory-seeder.d.ts.map +1 -0
  41. package/dist/brain/memory-seeder.js +349 -0
  42. package/dist/brain/memory-seeder.js.map +1 -0
  43. package/dist/brain/orchestrator.js +1 -1
  44. package/dist/brain/subagent-bridge.d.ts.map +1 -1
  45. package/dist/brain/subagent-bridge.js +12 -0
  46. package/dist/brain/subagent-bridge.js.map +1 -1
  47. package/dist/brain/token-economy.d.ts +2 -0
  48. package/dist/brain/token-economy.d.ts.map +1 -1
  49. package/dist/brain/token-economy.js +80 -24
  50. package/dist/brain/token-economy.js.map +1 -1
  51. package/dist/cli.js +240 -31
  52. package/dist/cli.js.map +1 -1
  53. package/dist/dashboard/server.d.ts +24 -0
  54. package/dist/dashboard/server.d.ts.map +1 -1
  55. package/dist/dashboard/server.js +524 -7
  56. package/dist/dashboard/server.js.map +1 -1
  57. package/dist/dashboard/v6-dashboard-html.d.ts +1 -1
  58. package/dist/dashboard/v6-dashboard-html.d.ts.map +1 -1
  59. package/dist/dashboard/v6-dashboard-html.js +2070 -213
  60. package/dist/dashboard/v6-dashboard-html.js.map +1 -1
  61. package/dist/index.d.ts +4 -0
  62. package/dist/index.d.ts.map +1 -1
  63. package/dist/index.js +4 -0
  64. package/dist/index.js.map +1 -1
  65. package/dist/types.d.ts +17 -12
  66. package/dist/types.d.ts.map +1 -1
  67. package/docs/launch/README.md +61 -0
  68. package/docs/launch/RELEASE_CHECKLIST_v6.0.3.md +102 -0
  69. package/docs/launch/RELEASE_NOTES_v6.0.3.md +111 -0
  70. package/docs/launch/RELEASE_NOTES_v6.1.0.md +38 -0
  71. package/docs/launch/RELEASE_NOTES_v6.2.0.md +54 -0
  72. package/package.json +18 -4
  73. package/tools/export-resume-pack.mjs +56 -0
  74. package/tools/record-global-memory.mjs +72 -0
@@ -0,0 +1,405 @@
1
+ // src/brain/live-brain.ts - v6.0.3 live memory control layer
2
+ import * as fs from 'fs';
3
+ import * as path from 'path';
4
+ import { analyzeMemoryQuality, generateContextResumePack, } from './context-continuity.js';
5
+ import { GlobalBrain, getGlobalBrain } from './global-brain.js';
6
+ const DEFAULT_LIVE_QUERIES = [
7
+ 'current state next step blocker',
8
+ 'mistake rejected route do not repeat',
9
+ 'source backed lesson verified evidence',
10
+ 'agent handoff resume context continuity',
11
+ 'tool command workflow successful fix',
12
+ 'memory quality stale duplicate source',
13
+ ];
14
+ const DEFAULT_SYSTEM_PROMPT = [
15
+ 'You are using Shadow Brain memory.',
16
+ 'Answer from source-backed project memory when possible.',
17
+ 'Mention uncertainty when a memory has no source, is stale, or conflicts with visible project files.',
18
+ 'Do not invent missing facts.',
19
+ ].join(' ');
20
+ function metadataList(entry, key) {
21
+ const value = entry.metadata?.[key];
22
+ return Array.isArray(value) ? value.map(String).filter(Boolean) : [];
23
+ }
24
+ function entryText(entry) {
25
+ return [
26
+ entry.projectName,
27
+ entry.agentTool,
28
+ entry.category,
29
+ entry.content,
30
+ JSON.stringify(entry.metadata ?? {}),
31
+ ].join(' ').toLowerCase();
32
+ }
33
+ function normalizeTerms(query) {
34
+ const stop = new Set([
35
+ 'a', 'an', 'and', 'are', 'as', 'at', 'be', 'by', 'for', 'from', 'in', 'into',
36
+ 'is', 'it', 'of', 'on', 'or', 'that', 'the', 'to', 'with',
37
+ ]);
38
+ return query
39
+ .toLowerCase()
40
+ .split(/[^a-z0-9_.:-]+/)
41
+ .map(term => term.trim())
42
+ .filter(term => term.length > 2 && !stop.has(term));
43
+ }
44
+ export function scoreLiveMemory(entry, now = new Date()) {
45
+ const sources = metadataList(entry, 'sources');
46
+ const tags = metadataList(entry, 'tags');
47
+ const ageDays = (now.getTime() - new Date(entry.createdAt).getTime()) / 86400000;
48
+ const contentLength = String(entry.content ?? '').trim().length;
49
+ let score = 30;
50
+ if (contentLength >= 120)
51
+ score += 18;
52
+ else if (contentLength >= 60)
53
+ score += 10;
54
+ if (sources.length)
55
+ score += 25;
56
+ if (tags.length)
57
+ score += 8;
58
+ if (entry.category.includes('.'))
59
+ score += 5;
60
+ score += Math.min(10, Math.round(entry.importance * 10));
61
+ score += Math.min(6, Math.log2((entry.accessCount ?? 0) + 1) * 2);
62
+ if (ageDays > 30)
63
+ score -= 10;
64
+ if (ageDays > 90)
65
+ score -= 15;
66
+ return Math.max(0, Math.min(100, Math.round(score)));
67
+ }
68
+ function enrich(entry, now = new Date()) {
69
+ return {
70
+ ...entry,
71
+ qualityScore: scoreLiveMemory(entry, now),
72
+ sources: metadataList(entry, 'sources'),
73
+ tags: metadataList(entry, 'tags'),
74
+ };
75
+ }
76
+ function countBy(items) {
77
+ const counts = new Map();
78
+ for (const item of items)
79
+ counts.set(item, (counts.get(item) ?? 0) + 1);
80
+ return Array.from(counts.entries())
81
+ .sort((a, b) => b[1] - a[1] || a[0].localeCompare(b[0]))
82
+ .map(([key, count]) => ({ key, count }));
83
+ }
84
+ export function rankMemoryEntries(entries, query, limit = 8, now = new Date()) {
85
+ const terms = normalizeTerms(query);
86
+ const ranked = entries.map(entry => {
87
+ const haystack = entryText(entry);
88
+ let score = scoreLiveMemory(entry, now) / 100;
89
+ for (const term of terms) {
90
+ if (entry.category.toLowerCase().includes(term))
91
+ score += 5;
92
+ if (String(entry.content).toLowerCase().includes(term))
93
+ score += 3;
94
+ if (JSON.stringify(entry.metadata ?? {}).toLowerCase().includes(term))
95
+ score += 1.5;
96
+ if (haystack.includes(term))
97
+ score += 0.5;
98
+ }
99
+ return { ...entry, score };
100
+ });
101
+ return ranked
102
+ .filter(entry => terms.length === 0 || entry.score > scoreLiveMemory(entry, now) / 100)
103
+ .sort((a, b) => b.score - a.score || b.importance - a.importance)
104
+ .slice(0, limit);
105
+ }
106
+ export function evaluateRecallSnapshot(entries, queries = DEFAULT_LIVE_QUERIES, limit = 5, now = new Date()) {
107
+ const cases = queries.map(query => {
108
+ const hits = rankMemoryEntries(entries, query, limit, now);
109
+ const sourceBackedHits = hits.filter(hit => metadataList(hit, 'sources').length > 0).length;
110
+ const warnings = [];
111
+ if (!hits.length)
112
+ warnings.push('No memory matched this query.');
113
+ if (hits.length && sourceBackedHits === 0)
114
+ warnings.push('Hits exist, but none include source paths.');
115
+ return {
116
+ query,
117
+ hitCount: hits.length,
118
+ sourceBackedHits,
119
+ topIds: hits.map(hit => hit.id),
120
+ topCategories: Array.from(new Set(hits.map(hit => hit.category))).slice(0, 4),
121
+ warnings,
122
+ };
123
+ });
124
+ const totalHits = cases.reduce((sum, item) => sum + item.hitCount, 0);
125
+ const sourceBackedHits = cases.reduce((sum, item) => sum + item.sourceBackedHits, 0);
126
+ return {
127
+ generatedAt: now.toISOString(),
128
+ queryCount: cases.length,
129
+ avgHitCount: cases.length ? Number((totalHits / cases.length).toFixed(2)) : 0,
130
+ sourceBackedHitRate: totalHits ? Number((sourceBackedHits / totalHits).toFixed(3)) : 0,
131
+ cases,
132
+ };
133
+ }
134
+ function buildLearningActions(opts) {
135
+ const actions = [];
136
+ const project = JSON.stringify(opts.projectDir);
137
+ if (!opts.entries.length) {
138
+ actions.push({
139
+ priority: 'critical',
140
+ title: 'Seed the first project memories',
141
+ reason: 'The live brain has no project-scoped entries, so agents cannot resume complex work from memory.',
142
+ command: `shadow-brain resume-seed ${project}`,
143
+ });
144
+ }
145
+ if (!opts.projectScoped && opts.entries.length) {
146
+ actions.push({
147
+ priority: 'high',
148
+ title: 'Create project-scoped memories',
149
+ reason: 'The report is using global fallback memory. Project isolation will be weak until this project records its own lessons.',
150
+ command: `shadow-brain timeline ${project}`,
151
+ });
152
+ }
153
+ if (opts.quality.sourceCoverage < 0.7 && opts.entries.length > 0) {
154
+ actions.push({
155
+ priority: 'high',
156
+ title: 'Backfill evidence sources',
157
+ reason: 'Agents trust and reuse memories better when each durable lesson points to docs, logs, commits, or proof files.',
158
+ command: `shadow-brain live-brain status ${project} --json`,
159
+ });
160
+ }
161
+ if (opts.quality.stale > 0) {
162
+ actions.push({
163
+ priority: 'medium',
164
+ title: 'Verify stale memories',
165
+ reason: `${opts.quality.stale} memories are older than 30 days. They should be checked against current files before agents rely on them.`,
166
+ command: `shadow-brain live-brain brief ${project}`,
167
+ });
168
+ }
169
+ if (opts.quality.duplicates.length) {
170
+ actions.push({
171
+ priority: 'medium',
172
+ title: 'Merge duplicate memory clusters',
173
+ reason: `${opts.quality.duplicates.length} possible duplicate clusters can pollute recall ranking and agent context.`,
174
+ command: `shadow-brain live-brain hygiene ${project}`,
175
+ });
176
+ }
177
+ if (opts.recallEval.avgHitCount < 2 && opts.entries.length > 3) {
178
+ actions.push({
179
+ priority: 'medium',
180
+ title: 'Improve recall keywords and categories',
181
+ reason: 'The default recall eval returns too few hits. Add clearer categories, tags, and action words to durable memories.',
182
+ command: `shadow-brain live-brain eval ${project}`,
183
+ });
184
+ }
185
+ if (opts.agentCount < 2) {
186
+ actions.push({
187
+ priority: 'low',
188
+ title: 'Connect more agents deliberately',
189
+ reason: 'Only one agent has written useful memory. Cross-agent learning improves when Codex, Claude Code, Cursor, or other tools share source-backed lessons.',
190
+ command: `shadow-brain audit-hooks ${project}`,
191
+ });
192
+ }
193
+ if (opts.sourceDocCount === 0) {
194
+ actions.push({
195
+ priority: 'low',
196
+ title: 'Add visible source-of-truth docs',
197
+ reason: 'Resume packs are strongest when the project has README, AGENTS.md, progress docs, or verification logs to quote.',
198
+ });
199
+ }
200
+ return actions;
201
+ }
202
+ export function buildTrainingRows(entries, opts = {}, now = new Date()) {
203
+ const maxRows = opts.maxRows ?? 200;
204
+ const rows = entries
205
+ .map(entry => enrich(entry, now))
206
+ .filter(entry => opts.includeLowQuality || entry.qualityScore >= 55)
207
+ .sort((a, b) => b.qualityScore - a.qualityScore || b.importance - a.importance)
208
+ .slice(0, maxRows)
209
+ .map(entry => {
210
+ const sources = entry.sources.length ? entry.sources.join('; ') : 'No source path recorded.';
211
+ const tags = entry.tags.length ? entry.tags.join(', ') : 'none';
212
+ return {
213
+ messages: [
214
+ { role: 'system', content: opts.systemPrompt ?? DEFAULT_SYSTEM_PROMPT },
215
+ {
216
+ role: 'user',
217
+ content: `Project: ${entry.projectName}\nCategory: ${entry.category}\nTask: Recall the durable lesson this agent should use before similar work.`,
218
+ },
219
+ {
220
+ role: 'assistant',
221
+ content: `${entry.content}\n\nSources: ${sources}\nTags: ${tags}\nQuality score: ${entry.qualityScore}/100`,
222
+ },
223
+ ],
224
+ metadata: {
225
+ memoryId: entry.id,
226
+ projectId: entry.projectId,
227
+ projectName: entry.projectName,
228
+ agentTool: entry.agentTool,
229
+ category: entry.category,
230
+ importance: entry.importance,
231
+ sources: entry.sources,
232
+ tags: entry.tags,
233
+ qualityScore: entry.qualityScore,
234
+ },
235
+ };
236
+ });
237
+ return rows;
238
+ }
239
+ export function buildTrainingJsonl(entries, opts = {}, now = new Date()) {
240
+ return buildTrainingRows(entries, opts, now).map(row => JSON.stringify(row)).join('\n');
241
+ }
242
+ export function formatLiveBrainBriefing(report) {
243
+ const actions = report.learningActions.length
244
+ ? report.learningActions.map(action => `- [${action.priority}] ${action.title}: ${action.reason}${action.command ? `\n Command: ${action.command}` : ''}`).join('\n')
245
+ : '- No immediate hygiene actions. Continue recording compact, source-backed lessons.';
246
+ const topMemories = report.topMemories.length
247
+ ? report.topMemories.slice(0, 8).map(memory => {
248
+ const sources = memory.sources.length ? `\n Sources: ${memory.sources.join('; ')}` : '\n Sources: none recorded';
249
+ return `- ${memory.category} (${memory.agentTool}, score ${memory.qualityScore}/100)\n ${memory.content.slice(0, 700)}${sources}`;
250
+ }).join('\n')
251
+ : '- No memories available yet.';
252
+ const warnings = [
253
+ ...report.resumePack.warnings,
254
+ ...report.memoryQuality.warnings,
255
+ ...report.recallEval.cases.flatMap(item => item.warnings.map(warning => `${item.query}: ${warning}`)),
256
+ ];
257
+ const warningText = warnings.length ? Array.from(new Set(warnings)).map(w => `- ${w}`).join('\n') : '- None.';
258
+ return [
259
+ '# Shadow Brain Live Agent Briefing',
260
+ '',
261
+ `Generated: ${report.generatedAt}`,
262
+ `Project: ${report.projectName}`,
263
+ `Path: ${report.projectDir}`,
264
+ '',
265
+ '## Rules For Agents',
266
+ '',
267
+ '- Treat visible project files as source of truth when they conflict with memory.',
268
+ '- Prefer source-backed memories over agent-inferred memories.',
269
+ '- Do not store secrets, tokens, passwords, private keys, or raw credentials.',
270
+ '- Record only durable lessons, current blockers, proven commands, and verified decisions.',
271
+ '- Keep memory compact: one reusable lesson per memory.',
272
+ '',
273
+ '## Live Brain Health',
274
+ '',
275
+ `- Memories: ${report.memoryQuality.totalEntries}`,
276
+ `- Average quality score: ${report.memoryQuality.avgScore}/100`,
277
+ `- Source coverage: ${Math.round(report.memoryQuality.sourceCoverage * 100)}%`,
278
+ `- Stale memories: ${report.memoryQuality.stale}`,
279
+ `- Duplicate clusters: ${report.memoryQuality.duplicates.length}`,
280
+ `- Recall eval avg hits: ${report.recallEval.avgHitCount}`,
281
+ '',
282
+ '## Actions',
283
+ '',
284
+ actions,
285
+ '',
286
+ '## Top Memories',
287
+ '',
288
+ topMemories,
289
+ '',
290
+ '## Warnings',
291
+ '',
292
+ warningText,
293
+ '',
294
+ '## Useful Commands',
295
+ '',
296
+ `- shadow-brain live-brain status ${JSON.stringify(report.projectDir)}`,
297
+ `- shadow-brain live-brain brief ${JSON.stringify(report.projectDir)}`,
298
+ `- shadow-brain live-brain eval ${JSON.stringify(report.projectDir)}`,
299
+ `- shadow-brain live-brain train-pack ${JSON.stringify(report.projectDir)} --out shadow-brain-training.jsonl`,
300
+ `- shadow-brain global recall --query "current blocker next step" --json --limit 8`,
301
+ ].join('\n');
302
+ }
303
+ export function analyzeLiveBrainSnapshot(opts) {
304
+ const now = opts.now ?? new Date();
305
+ const maxMemories = opts.maxMemories ?? 12;
306
+ const projectExists = fs.existsSync(opts.projectDir);
307
+ const quality = analyzeMemoryQuality(opts.entries, now);
308
+ const enriched = opts.entries
309
+ .map(entry => enrich(entry, now))
310
+ .sort((a, b) => b.qualityScore - a.qualityScore || b.importance - a.importance);
311
+ const recallEval = evaluateRecallSnapshot(opts.entries, opts.queries ?? DEFAULT_LIVE_QUERIES, 5, now);
312
+ const resumePack = generateContextResumePack({
313
+ projectDir: opts.projectDir,
314
+ projectName: opts.projectName,
315
+ projectId: opts.projectId,
316
+ entries: opts.entries,
317
+ maxMemories,
318
+ now,
319
+ });
320
+ const agentCoverage = countBy(opts.entries.map(entry => entry.agentTool))
321
+ .map(({ key, count }) => ({ agent: key, count }));
322
+ const categoryCoverage = countBy(opts.entries.map(entry => entry.category))
323
+ .map(({ key, count }) => ({ category: key, count }));
324
+ const sourceDocCount = resumePack.stats.docCount;
325
+ const staleCutoff = now.getTime() - 30 * 86400000;
326
+ const staleMemories = enriched.filter(entry => new Date(entry.createdAt).getTime() < staleCutoff).slice(0, 12);
327
+ const lowQualityMemories = enriched.filter(entry => entry.qualityScore < 55).slice(0, 12);
328
+ const learningActions = buildLearningActions({
329
+ projectDir: opts.projectDir,
330
+ entries: opts.entries,
331
+ quality,
332
+ recallEval,
333
+ agentCount: agentCoverage.length,
334
+ sourceDocCount,
335
+ projectScoped: opts.projectScoped ?? true,
336
+ });
337
+ const reportBase = {
338
+ generatedAt: now.toISOString(),
339
+ projectDir: path.resolve(opts.projectDir),
340
+ projectName: opts.projectName,
341
+ projectId: opts.projectId,
342
+ projectExists,
343
+ projectScoped: opts.projectScoped ?? true,
344
+ stats: opts.stats ?? {},
345
+ memoryQuality: quality,
346
+ agentCoverage,
347
+ categoryCoverage,
348
+ topMemories: enriched.slice(0, maxMemories),
349
+ staleMemories,
350
+ lowQualityMemories,
351
+ recallEval,
352
+ learningActions,
353
+ resumePack,
354
+ };
355
+ return {
356
+ ...reportBase,
357
+ agentBriefing: formatLiveBrainBriefing(reportBase),
358
+ };
359
+ }
360
+ export class LiveBrain {
361
+ constructor(brain = getGlobalBrain()) {
362
+ this.brain = brain;
363
+ }
364
+ async report(opts) {
365
+ const projectDir = path.resolve(opts.projectDir);
366
+ const projectId = GlobalBrain.projectIdFor(projectDir);
367
+ const maxMemories = opts.maxMemories ?? 12;
368
+ await this.brain.init();
369
+ try {
370
+ let entries = this.brain.recall({ projectId, minImportance: 0, limit: 800 });
371
+ let projectScoped = true;
372
+ if (!entries.length && opts.globalFallback !== false) {
373
+ entries = this.brain.recall({ minImportance: 0, limit: 800 });
374
+ projectScoped = false;
375
+ }
376
+ return analyzeLiveBrainSnapshot({
377
+ projectDir,
378
+ projectName: opts.projectName ?? path.basename(projectDir),
379
+ projectId,
380
+ projectScoped,
381
+ entries,
382
+ stats: this.brain.getStats(),
383
+ queries: opts.queries,
384
+ maxMemories,
385
+ });
386
+ }
387
+ finally {
388
+ await this.brain.shutdown();
389
+ }
390
+ }
391
+ async trainingJsonl(opts) {
392
+ const report = await this.report(opts);
393
+ const entries = [
394
+ ...report.topMemories,
395
+ ...report.staleMemories,
396
+ ...report.lowQualityMemories,
397
+ ];
398
+ const byId = new Map(entries.map(entry => [entry.id, entry]));
399
+ return buildTrainingJsonl(Array.from(byId.values()), opts);
400
+ }
401
+ }
402
+ export function getLiveBrain(brain) {
403
+ return new LiveBrain(brain);
404
+ }
405
+ //# sourceMappingURL=live-brain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live-brain.js","sourceRoot":"","sources":["../../src/brain/live-brain.ts"],"names":[],"mappings":"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"}
@@ -50,6 +50,10 @@ export declare class MCPServer {
50
50
  private handleGlobalTimeline;
51
51
  private handleFirewallCheck;
52
52
  private handleAgentHandoff;
53
+ private parseLiveBrainQueries;
54
+ private handleLiveBrainStatus;
55
+ private handleLiveBrainBrief;
56
+ private handleLiveBrainTrainPack;
53
57
  start(): Promise<void>;
54
58
  stop(): Promise<void>;
55
59
  handleRequest(request: MCPRequest): Promise<MCPResponse>;
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../../src/brain/mcp-server.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAW,gBAAgB,EAAc,MAAM,aAAa,CAAC;AAO7F,qBAAa,SAAS;IACpB,OAAO,CAAC,YAAY,CAAM;IAC1B,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,UAAU,CAAqC;IACvD,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,YAAY,CAAwE;gBAEhF,YAAY,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,gBAAgB;YA+E3C,oBAAoB;YAapB,4BAA4B;YAK5B,sBAAsB;YAItB,oBAAoB;YAIpB,gBAAgB;YAIhB,iBAAiB;YAIjB,qBAAqB;YAIrB,sBAAsB;YAYtB,mBAAmB;YAKnB,cAAc;YAId,eAAe;YAKf,oBAAoB;YAWpB,qBAAqB;YAKrB,qBAAqB;YAKrB,eAAe;YAIf,kBAAkB;YAIlB,iBAAiB;YAIjB,sBAAsB;YAQtB,kBAAkB;YAUlB,kBAAkB;YAIlB,uBAAuB;YAIvB,oBAAoB;YAIpB,uBAAuB;YAWvB,uBAAuB;YAKvB,kBAAkB;YAKlB,kBAAkB;YAKlB,mBAAmB;YAKnB,oBAAoB;YAKpB,uBAAuB;YAIvB,kBAAkB;YAIlB,oBAAoB;YAIpB,sBAAsB;YAUtB,oBAAoB;YAYpB,oBAAoB;YAIpB,kBAAkB;YAIlB,gBAAgB;YAoDhB,wBAAwB;YAcxB,kBAAkB;YAclB,iBAAiB;YAWjB,kBAAkB;YAOlB,oBAAoB;YAapB,mBAAmB;YAWnB,kBAAkB;IAY1B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAuEtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAsBrB,aAAa,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;IAoD9D,OAAO,CAAC,gBAAgB;YAiBV,aAAa;YAgBb,YAAY;YAwBZ,WAAW;YAgBX,aAAa;YAeb,cAAc;YAmBd,UAAU;YAeV,WAAW;YAWX,YAAY;YAkCZ,YAAY;YAsBZ,eAAe;YAyBf,WAAW;YAkBX,WAAW;YAkBX,eAAe;YAkBf,oBAAoB;YAkBpB,aAAa;YAUb,SAAS;YAuCT,YAAY;YAQZ,aAAa;YAgCb,gBAAgB;IAqB9B,OAAO,CAAC,kBAAkB;YAiQZ,oBAAoB;IA2BlC,OAAO,CAAC,mBAAmB;IAoB3B,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,YAAY;IAmBpB,OAAO,CAAC,eAAe;IAwBvB,OAAO,CAAC,QAAQ;IAShB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,SAAS;CAGlB"}
1
+ {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../../src/brain/mcp-server.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAW,gBAAgB,EAAc,MAAM,aAAa,CAAC;AAO7F,qBAAa,SAAS;IACpB,OAAO,CAAC,YAAY,CAAM;IAC1B,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,UAAU,CAAqC;IACvD,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,YAAY,CAAwE;gBAEhF,YAAY,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,gBAAgB;YAkF3C,oBAAoB;YAapB,4BAA4B;YAK5B,sBAAsB;YAItB,oBAAoB;YAIpB,gBAAgB;YAIhB,iBAAiB;YAIjB,qBAAqB;YAIrB,sBAAsB;YAYtB,mBAAmB;YAKnB,cAAc;YAId,eAAe;YAKf,oBAAoB;YAWpB,qBAAqB;YAKrB,qBAAqB;YAKrB,eAAe;YAIf,kBAAkB;YAIlB,iBAAiB;YAIjB,sBAAsB;YAQtB,kBAAkB;YAUlB,kBAAkB;YAIlB,uBAAuB;YAIvB,oBAAoB;YAIpB,uBAAuB;YAWvB,uBAAuB;YAKvB,kBAAkB;YAKlB,kBAAkB;YAKlB,mBAAmB;YAKnB,oBAAoB;YAKpB,uBAAuB;YAIvB,kBAAkB;YAIlB,oBAAoB;YAIpB,sBAAsB;YAUtB,oBAAoB;YAYpB,oBAAoB;YAIpB,kBAAkB;YAIlB,gBAAgB;YAoDhB,wBAAwB;YAcxB,kBAAkB;YAclB,iBAAiB;YAWjB,kBAAkB;YAOlB,oBAAoB;YAapB,mBAAmB;YAWnB,kBAAkB;IAYhC,OAAO,CAAC,qBAAqB;YAMf,qBAAqB;YAUrB,oBAAoB;YASpB,wBAAwB;IAahC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAuEtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAsBrB,aAAa,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;IAoD9D,OAAO,CAAC,gBAAgB;YAiBV,aAAa;YAgBb,YAAY;YAwBZ,WAAW;YAgBX,aAAa;YAeb,cAAc;YAmBd,UAAU;YAeV,WAAW;YAWX,YAAY;YAkCZ,YAAY;YAsBZ,eAAe;YAyBf,WAAW;YAkBX,WAAW;YAkBX,eAAe;YAkBf,oBAAoB;YAkBpB,aAAa;YAUb,SAAS;YAuCT,YAAY;YAQZ,aAAa;YAgCb,gBAAgB;IAqB9B,OAAO,CAAC,kBAAkB;YAsSZ,oBAAoB;IA2BlC,OAAO,CAAC,mBAAmB;IAoB3B,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,YAAY;IAmBpB,OAAO,CAAC,eAAe;IAwBvB,OAAO,CAAC,QAAQ;IAShB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,SAAS;CAGlB"}
@@ -42,6 +42,9 @@ export class MCPServer {
42
42
  global_timeline: this.handleGlobalTimeline.bind(this),
43
43
  firewall_check: this.handleFirewallCheck.bind(this),
44
44
  agent_handoff: this.handleAgentHandoff.bind(this),
45
+ live_brain_status: this.handleLiveBrainStatus.bind(this),
46
+ live_brain_brief: this.handleLiveBrainBrief.bind(this),
47
+ live_brain_train_pack: this.handleLiveBrainTrainPack.bind(this),
45
48
  // v6.0.0 — Hive Mind tools
46
49
  subagent_sliver: this.handleSubagentSliver.bind(this),
47
50
  subagent_quarantine_list: this.handleSubagentQuarantineList.bind(this),
@@ -310,7 +313,7 @@ export class MCPServer {
310
313
  const brain = getGlobalBrain();
311
314
  await Promise.all([sabb.init(), causal.init(), collisions.init(), dream.init(), rep.init(), tokens.init(), formal.init(), airgap.init(), brain.init()]);
312
315
  return {
313
- version: '6.0.0',
316
+ version: '6.0.3',
314
317
  modules: {
315
318
  sabb: sabb.getStats(),
316
319
  causal: causal.stats(),
@@ -403,6 +406,42 @@ export class MCPServer {
403
406
  limit: params.limit ?? 12,
404
407
  });
405
408
  }
409
+ parseLiveBrainQueries(value) {
410
+ if (Array.isArray(value))
411
+ return value.map(String).map(q => q.trim()).filter(Boolean);
412
+ if (typeof value === 'string' && value.trim())
413
+ return value.split('|').map(q => q.trim()).filter(Boolean);
414
+ return undefined;
415
+ }
416
+ async handleLiveBrainStatus(params) {
417
+ const { getLiveBrain } = await import('./live-brain.js');
418
+ return getLiveBrain().report({
419
+ projectDir: params.projectDir || process.cwd(),
420
+ maxMemories: params.maxMemories ?? 12,
421
+ queries: this.parseLiveBrainQueries(params.queries),
422
+ globalFallback: params.globalFallback !== false,
423
+ });
424
+ }
425
+ async handleLiveBrainBrief(params) {
426
+ const report = await this.handleLiveBrainStatus(params);
427
+ return {
428
+ generatedAt: report.generatedAt,
429
+ projectDir: report.projectDir,
430
+ markdown: report.agentBriefing,
431
+ };
432
+ }
433
+ async handleLiveBrainTrainPack(params) {
434
+ const { getLiveBrain } = await import('./live-brain.js');
435
+ const jsonl = await getLiveBrain().trainingJsonl({
436
+ projectDir: params.projectDir || process.cwd(),
437
+ maxRows: params.maxRows ?? 200,
438
+ includeLowQuality: params.includeLowQuality === true,
439
+ });
440
+ return {
441
+ rowCount: jsonl ? jsonl.split('\n').filter(Boolean).length : 0,
442
+ jsonl,
443
+ };
444
+ }
406
445
  async start() {
407
446
  this.server = http.createServer(async (req, res) => {
408
447
  if (!req.url) {
@@ -441,7 +480,7 @@ export class MCPServer {
441
480
  // Lightweight health endpoint for tool connectivity checks
442
481
  this.sendJSON(res, 200, {
443
482
  status: 'ok',
444
- version: '5.2.0',
483
+ version: '6.0.3',
445
484
  uptime: process.uptime(),
446
485
  tools: Object.keys(this.toolHandlers).length,
447
486
  });
@@ -545,7 +584,7 @@ export class MCPServer {
545
584
  },
546
585
  serverInfo: {
547
586
  name: 'agent-shadow-brain',
548
- version: '5.2.0',
587
+ version: '6.0.3',
549
588
  description: 'Cross-agent memory and safety layer for AI coding agents',
550
589
  },
551
590
  };
@@ -834,7 +873,7 @@ export class MCPServer {
834
873
  async handleStatus(params) {
835
874
  const status = this.orchestrator.getStatus?.() || {};
836
875
  return {
837
- version: '5.2.0',
876
+ version: '6.0.3',
838
877
  ...status,
839
878
  };
840
879
  }
@@ -860,7 +899,7 @@ export class MCPServer {
860
899
  const instance = this.orchestrator[mod.key];
861
900
  modules.push({
862
901
  name: mod.name,
863
- version: '5.2.0',
902
+ version: '6.0.3',
864
903
  status: instance ? 'active' : 'idle',
865
904
  });
866
905
  }
@@ -1138,6 +1177,43 @@ export class MCPServer {
1138
1177
  },
1139
1178
  },
1140
1179
  },
1180
+ {
1181
+ name: 'live_brain_status',
1182
+ description: 'v6.0.3 live memory health report with source coverage, recall eval, hygiene actions, and resume context',
1183
+ inputSchema: {
1184
+ type: 'object',
1185
+ properties: {
1186
+ projectDir: { type: 'string' },
1187
+ maxMemories: { type: 'number' },
1188
+ queries: { type: 'string', description: 'Pipe-separated recall eval queries' },
1189
+ globalFallback: { type: 'boolean' },
1190
+ },
1191
+ },
1192
+ },
1193
+ {
1194
+ name: 'live_brain_brief',
1195
+ description: 'v6.0.3 source-backed markdown briefing for a fresh agent session or handoff',
1196
+ inputSchema: {
1197
+ type: 'object',
1198
+ properties: {
1199
+ projectDir: { type: 'string' },
1200
+ maxMemories: { type: 'number' },
1201
+ globalFallback: { type: 'boolean' },
1202
+ },
1203
+ },
1204
+ },
1205
+ {
1206
+ name: 'live_brain_train_pack',
1207
+ description: 'v6.0.3 JSONL export for evals, distillation, or local fine-tuning pipelines',
1208
+ inputSchema: {
1209
+ type: 'object',
1210
+ properties: {
1211
+ projectDir: { type: 'string' },
1212
+ maxRows: { type: 'number' },
1213
+ includeLowQuality: { type: 'boolean' },
1214
+ },
1215
+ },
1216
+ },
1141
1217
  ];
1142
1218
  }
1143
1219
  // ── HTTP Handling ──────────────────────────────────────────────────────