@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.
- package/CHANGELOG.md +372 -0
- package/README.md +330 -358
- package/dist/brain/auto-update.js +1 -1
- package/dist/brain/brain-bus.d.ts +40 -0
- package/dist/brain/brain-bus.d.ts.map +1 -0
- package/dist/brain/brain-bus.js +94 -0
- package/dist/brain/brain-bus.js.map +1 -0
- package/dist/brain/brain-portability.js +3 -3
- package/dist/brain/brain-portability.js.map +1 -1
- package/dist/brain/collision-detective.d.ts.map +1 -1
- package/dist/brain/collision-detective.js +16 -0
- package/dist/brain/collision-detective.js.map +1 -1
- package/dist/brain/context-continuity.d.ts +78 -0
- package/dist/brain/context-continuity.d.ts.map +1 -0
- package/dist/brain/context-continuity.js +341 -0
- package/dist/brain/context-continuity.js.map +1 -0
- package/dist/brain/dream-engine.d.ts.map +1 -1
- package/dist/brain/dream-engine.js +12 -0
- package/dist/brain/dream-engine.js.map +1 -1
- package/dist/brain/forgetting-curve.d.ts.map +1 -1
- package/dist/brain/forgetting-curve.js +19 -0
- package/dist/brain/forgetting-curve.js.map +1 -1
- package/dist/brain/global-brain.d.ts +4 -0
- package/dist/brain/global-brain.d.ts.map +1 -1
- package/dist/brain/global-brain.js +61 -9
- package/dist/brain/global-brain.js.map +1 -1
- package/dist/brain/live-brain.d.ts +119 -0
- package/dist/brain/live-brain.d.ts.map +1 -0
- package/dist/brain/live-brain.js +405 -0
- package/dist/brain/live-brain.js.map +1 -0
- package/dist/brain/mcp-server.d.ts +4 -0
- package/dist/brain/mcp-server.d.ts.map +1 -1
- package/dist/brain/mcp-server.js +81 -5
- package/dist/brain/mcp-server.js.map +1 -1
- package/dist/brain/memory-graph.d.ts +51 -0
- package/dist/brain/memory-graph.d.ts.map +1 -0
- package/dist/brain/memory-graph.js +267 -0
- package/dist/brain/memory-graph.js.map +1 -0
- package/dist/brain/memory-seeder.d.ts +78 -0
- package/dist/brain/memory-seeder.d.ts.map +1 -0
- package/dist/brain/memory-seeder.js +349 -0
- package/dist/brain/memory-seeder.js.map +1 -0
- package/dist/brain/orchestrator.js +1 -1
- package/dist/brain/subagent-bridge.d.ts.map +1 -1
- package/dist/brain/subagent-bridge.js +12 -0
- package/dist/brain/subagent-bridge.js.map +1 -1
- package/dist/brain/token-economy.d.ts +2 -0
- package/dist/brain/token-economy.d.ts.map +1 -1
- package/dist/brain/token-economy.js +80 -24
- package/dist/brain/token-economy.js.map +1 -1
- package/dist/cli.js +240 -31
- package/dist/cli.js.map +1 -1
- package/dist/dashboard/server.d.ts +24 -0
- package/dist/dashboard/server.d.ts.map +1 -1
- package/dist/dashboard/server.js +524 -7
- package/dist/dashboard/server.js.map +1 -1
- package/dist/dashboard/v6-dashboard-html.d.ts +1 -1
- package/dist/dashboard/v6-dashboard-html.d.ts.map +1 -1
- package/dist/dashboard/v6-dashboard-html.js +2070 -213
- package/dist/dashboard/v6-dashboard-html.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +17 -12
- package/dist/types.d.ts.map +1 -1
- package/docs/launch/README.md +61 -0
- package/docs/launch/RELEASE_CHECKLIST_v6.0.3.md +102 -0
- package/docs/launch/RELEASE_NOTES_v6.0.3.md +111 -0
- package/docs/launch/RELEASE_NOTES_v6.1.0.md +38 -0
- package/docs/launch/RELEASE_NOTES_v6.2.0.md +54 -0
- package/package.json +18 -4
- package/tools/export-resume-pack.mjs +56 -0
- 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;
|
|
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"}
|
package/dist/brain/mcp-server.js
CHANGED
|
@@ -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.
|
|
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: '
|
|
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: '
|
|
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: '
|
|
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: '
|
|
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 ──────────────────────────────────────────────────────
|