@theihtisham/agent-shadow-brain 5.0.1 → 5.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/README.md +1159 -888
  2. package/dist/adapters/copilot.d.ts +14 -0
  3. package/dist/adapters/copilot.d.ts.map +1 -0
  4. package/dist/adapters/copilot.js +93 -0
  5. package/dist/adapters/copilot.js.map +1 -0
  6. package/dist/adapters/cursor.d.ts +13 -0
  7. package/dist/adapters/cursor.d.ts.map +1 -0
  8. package/dist/adapters/cursor.js +96 -0
  9. package/dist/adapters/cursor.js.map +1 -0
  10. package/dist/adapters/index.d.ts +4 -1
  11. package/dist/adapters/index.d.ts.map +1 -1
  12. package/dist/adapters/index.js +7 -3
  13. package/dist/adapters/index.js.map +1 -1
  14. package/dist/adapters/windsurf.d.ts +14 -0
  15. package/dist/adapters/windsurf.d.ts.map +1 -0
  16. package/dist/adapters/windsurf.js +107 -0
  17. package/dist/adapters/windsurf.js.map +1 -0
  18. package/dist/brain/code-dna.d.ts +70 -0
  19. package/dist/brain/code-dna.d.ts.map +1 -0
  20. package/dist/brain/code-dna.js +611 -0
  21. package/dist/brain/code-dna.js.map +1 -0
  22. package/dist/brain/fine-tuning-engine.d.ts +99 -0
  23. package/dist/brain/fine-tuning-engine.d.ts.map +1 -0
  24. package/dist/brain/fine-tuning-engine.js +681 -0
  25. package/dist/brain/fine-tuning-engine.js.map +1 -0
  26. package/dist/brain/global-brain.d.ts +56 -0
  27. package/dist/brain/global-brain.d.ts.map +1 -0
  28. package/dist/brain/global-brain.js +324 -0
  29. package/dist/brain/global-brain.js.map +1 -0
  30. package/dist/brain/intent-engine.d.ts +64 -0
  31. package/dist/brain/intent-engine.d.ts.map +1 -0
  32. package/dist/brain/intent-engine.js +374 -0
  33. package/dist/brain/intent-engine.js.map +1 -0
  34. package/dist/brain/l0-cache.d.ts +40 -0
  35. package/dist/brain/l0-cache.d.ts.map +1 -0
  36. package/dist/brain/l0-cache.js +176 -0
  37. package/dist/brain/l0-cache.js.map +1 -0
  38. package/dist/brain/lsp-server.d.ts +62 -0
  39. package/dist/brain/lsp-server.d.ts.map +1 -0
  40. package/dist/brain/lsp-server.js +480 -0
  41. package/dist/brain/lsp-server.js.map +1 -0
  42. package/dist/brain/mcp-server.d.ts +4 -0
  43. package/dist/brain/mcp-server.d.ts.map +1 -1
  44. package/dist/brain/mcp-server.js +91 -0
  45. package/dist/brain/mcp-server.js.map +1 -1
  46. package/dist/brain/orchestrator.d.ts +13 -0
  47. package/dist/brain/orchestrator.d.ts.map +1 -1
  48. package/dist/brain/orchestrator.js +25 -1
  49. package/dist/brain/orchestrator.js.map +1 -1
  50. package/dist/brain/session-hooks.d.ts +28 -0
  51. package/dist/brain/session-hooks.d.ts.map +1 -0
  52. package/dist/brain/session-hooks.js +475 -0
  53. package/dist/brain/session-hooks.js.map +1 -0
  54. package/dist/brain/smart-cache.d.ts +100 -0
  55. package/dist/brain/smart-cache.d.ts.map +1 -0
  56. package/dist/brain/smart-cache.js +417 -0
  57. package/dist/brain/smart-cache.js.map +1 -0
  58. package/dist/brain/subconscious.d.ts +34 -0
  59. package/dist/brain/subconscious.d.ts.map +1 -0
  60. package/dist/brain/subconscious.js +275 -0
  61. package/dist/brain/subconscious.js.map +1 -0
  62. package/dist/brain/temporal-intelligence.d.ts +89 -0
  63. package/dist/brain/temporal-intelligence.d.ts.map +1 -0
  64. package/dist/brain/temporal-intelligence.js +378 -0
  65. package/dist/brain/temporal-intelligence.js.map +1 -0
  66. package/dist/cli.js +434 -4
  67. package/dist/cli.js.map +1 -1
  68. package/dist/index.d.ts +8 -1
  69. package/dist/index.d.ts.map +1 -1
  70. package/dist/index.js +8 -1
  71. package/dist/index.js.map +1 -1
  72. package/dist/types.d.ts +333 -1
  73. package/dist/types.d.ts.map +1 -1
  74. package/package.json +46 -10
@@ -0,0 +1,275 @@
1
+ // src/brain/subconscious.ts — Subconscious Engine (v5.2.0)
2
+ //
3
+ // On every new agent session, the Subconscious proactively injects a tight
4
+ // briefing of relevant context — recent decisions, similar past work, project
5
+ // state, cross-agent insights — so the agent doesn't have to ask.
6
+ //
7
+ // "Subconscious" because the agent doesn't actively retrieve this — the brain
8
+ // makes it available implicitly. Like human intuition: the relevant memory
9
+ // surfaces before you consciously look for it.
10
+ //
11
+ // Token budget: hard-capped (default 2000) to never bloat the agent's context.
12
+ // Relevance ranked: each section competes for budget by importance × recency.
13
+ import { getGlobalBrain, GlobalBrain } from './global-brain.js';
14
+ import { getCache } from './l0-cache.js';
15
+ import * as crypto from 'crypto';
16
+ const DEFAULT_CONFIG = {
17
+ enabled: true,
18
+ tokenBudget: 2000,
19
+ lookbackHours: 24,
20
+ relevanceThreshold: 0.3,
21
+ alwaysInclude: ['decision', 'pattern', 'warning'],
22
+ enabledAgents: [],
23
+ };
24
+ /** ~4 chars per token (rough English heuristic) */
25
+ function estimateTokens(text) {
26
+ return Math.ceil(text.length / 4);
27
+ }
28
+ export class SubconsciousEngine {
29
+ constructor(config = {}, brain) {
30
+ this.config = { ...DEFAULT_CONFIG, ...config };
31
+ this.brain = brain ?? getGlobalBrain();
32
+ this.stats = {
33
+ totalBriefings: 0,
34
+ avgTokenCount: 0,
35
+ avgGenerationMs: 0,
36
+ acceptedRate: 1,
37
+ byAgent: {},
38
+ lastBriefing: null,
39
+ };
40
+ }
41
+ /** Generate a session-start briefing for the agent — proactive context injection */
42
+ async generateBriefing(opts) {
43
+ const start = Date.now();
44
+ const sessionId = crypto.randomUUID();
45
+ const projectId = opts.projectId ?? GlobalBrain.projectIdFor(opts.projectDir);
46
+ const projectName = opts.projectName ?? opts.projectDir.split(/[/\\]/).pop() ?? 'unknown';
47
+ // L0 cache check — if we briefed this agent for this project recently, reuse
48
+ const cacheKey = `subconscious:${opts.agentTool}:${projectId}`;
49
+ const cache = getCache('subconscious');
50
+ const cached = cache.get(cacheKey);
51
+ if (cached && Date.now() - cached.generatedAt.getTime() < 60000) {
52
+ return cached;
53
+ }
54
+ // Skip if disabled or agent not in enabled list
55
+ if (!this.config.enabled || (this.config.enabledAgents.length > 0 && !this.config.enabledAgents.includes(opts.agentTool))) {
56
+ return this.emptyBriefing(opts.agentTool, opts.projectDir, sessionId);
57
+ }
58
+ if (!('init' in this.brain)) {
59
+ return this.emptyBriefing(opts.agentTool, opts.projectDir, sessionId);
60
+ }
61
+ try {
62
+ await this.brain.init();
63
+ }
64
+ catch { /* already initialized */ }
65
+ // Build sections within budget
66
+ const lookbackMs = this.config.lookbackHours * 60 * 60 * 1000;
67
+ const cutoff = Date.now() - lookbackMs;
68
+ const recentDecisions = this.fetchSection(projectId, ['decision'], cutoff, 5);
69
+ const activeTasks = this.fetchSection(projectId, ['task', 'todo'], cutoff, 5);
70
+ const projectState = this.fetchProjectStateSummary(projectId);
71
+ const crossAgentInsights = this.fetchCrossAgentInsights(projectId, opts.agentTool, cutoff, 5);
72
+ const warnings = this.fetchSection(projectId, ['warning', 'critical', 'security'], cutoff, 3);
73
+ const similarPastWork = opts.currentTask
74
+ ? this.fetchSimilarWork(opts.currentTask, opts.agentTool, 3)
75
+ : this.fetchTopPatterns(projectId, 3);
76
+ const briefing = {
77
+ agentTool: opts.agentTool,
78
+ projectDir: opts.projectDir,
79
+ sessionId,
80
+ generatedAt: new Date(),
81
+ tokenCount: 0,
82
+ sections: {
83
+ recentDecisions: recentDecisions.map(e => this.formatEntry(e)),
84
+ activeTasks: activeTasks.map(e => this.formatEntry(e)),
85
+ similarPastWork: similarPastWork.map(e => this.formatEntry(e)),
86
+ projectState,
87
+ crossAgentInsights: crossAgentInsights.map(e => `[${e.agentTool}] ${this.formatEntry(e)}`),
88
+ warnings: warnings.map(e => this.formatEntry(e)),
89
+ },
90
+ fullText: '',
91
+ };
92
+ briefing.fullText = this.assembleBriefing(briefing, projectName);
93
+ briefing.tokenCount = estimateTokens(briefing.fullText);
94
+ // Trim if over budget — drop lowest-priority sections first
95
+ if (briefing.tokenCount > this.config.tokenBudget) {
96
+ briefing.fullText = this.trimToBudget(briefing, projectName);
97
+ briefing.tokenCount = estimateTokens(briefing.fullText);
98
+ }
99
+ // Cache it
100
+ cache.set(cacheKey, briefing);
101
+ // Update stats
102
+ this.stats.totalBriefings++;
103
+ this.stats.avgTokenCount = this.runningAvg(this.stats.avgTokenCount, briefing.tokenCount, this.stats.totalBriefings);
104
+ this.stats.avgGenerationMs = this.runningAvg(this.stats.avgGenerationMs, Date.now() - start, this.stats.totalBriefings);
105
+ this.stats.byAgent[opts.agentTool] = (this.stats.byAgent[opts.agentTool] ?? 0) + 1;
106
+ this.stats.lastBriefing = new Date();
107
+ return briefing;
108
+ }
109
+ /** Get current stats */
110
+ getStats() {
111
+ return { ...this.stats };
112
+ }
113
+ /** Update config at runtime */
114
+ configure(patch) {
115
+ this.config = { ...this.config, ...patch };
116
+ }
117
+ getConfig() {
118
+ return { ...this.config };
119
+ }
120
+ // ─── Private helpers ────────────────────────────────────────────────────────
121
+ fetchSection(projectId, categories, cutoffMs, limit) {
122
+ const results = [];
123
+ for (const category of categories) {
124
+ const entries = this.brain.recall({
125
+ projectId,
126
+ category,
127
+ limit,
128
+ minImportance: this.config.relevanceThreshold,
129
+ });
130
+ for (const e of entries) {
131
+ if (e.lastAccessed.getTime() >= cutoffMs || e.createdAt.getTime() >= cutoffMs) {
132
+ results.push(e);
133
+ }
134
+ }
135
+ }
136
+ return results
137
+ .sort((a, b) => b.importance - a.importance)
138
+ .slice(0, limit);
139
+ }
140
+ fetchCrossAgentInsights(projectId, currentAgent, cutoffMs, limit) {
141
+ const all = this.brain.recall({
142
+ projectId,
143
+ limit: limit * 3,
144
+ minImportance: this.config.relevanceThreshold,
145
+ });
146
+ return all
147
+ .filter(e => e.agentTool !== currentAgent && (e.lastAccessed.getTime() >= cutoffMs || e.createdAt.getTime() >= cutoffMs))
148
+ .slice(0, limit);
149
+ }
150
+ fetchProjectStateSummary(projectId) {
151
+ const recent = this.brain.recall({ projectId, category: 'state', limit: 1 });
152
+ if (recent.length)
153
+ return recent[0].content.slice(0, 300);
154
+ const top = this.brain.recall({ projectId, limit: 3 });
155
+ if (!top.length)
156
+ return '';
157
+ return top.map(e => `${e.category}: ${e.content.slice(0, 80)}`).join('; ');
158
+ }
159
+ fetchSimilarWork(taskHint, agentTool, limit) {
160
+ const keywords = this.extractKeywords(taskHint);
161
+ if (!keywords.length)
162
+ return [];
163
+ return this.brain.recall({
164
+ keywords,
165
+ limit,
166
+ minImportance: this.config.relevanceThreshold,
167
+ });
168
+ }
169
+ fetchTopPatterns(projectId, limit) {
170
+ return this.brain.recall({ projectId, category: 'pattern', limit });
171
+ }
172
+ extractKeywords(text) {
173
+ const stop = new Set(['the', 'and', 'or', 'a', 'an', 'is', 'are', 'was', 'were', 'in', 'on', 'at', 'to', 'for', 'of', 'with', 'by', 'this', 'that']);
174
+ return text
175
+ .toLowerCase()
176
+ .split(/\W+/)
177
+ .filter(w => w.length > 3 && !stop.has(w))
178
+ .slice(0, 5);
179
+ }
180
+ formatEntry(entry) {
181
+ const content = entry.content.length > 200 ? entry.content.slice(0, 197) + '...' : entry.content;
182
+ return content;
183
+ }
184
+ assembleBriefing(briefing, projectName) {
185
+ const parts = [];
186
+ parts.push(`# 🧠 Shadow Brain — Subconscious Briefing`);
187
+ parts.push(`_Project: ${projectName} | Agent: ${briefing.agentTool} | Auto-generated by Shadow Brain v5.2.0_`);
188
+ parts.push('');
189
+ if (briefing.sections.warnings.length) {
190
+ parts.push(`## ⚠️ Warnings`);
191
+ for (const w of briefing.sections.warnings)
192
+ parts.push(`- ${w}`);
193
+ parts.push('');
194
+ }
195
+ if (briefing.sections.recentDecisions.length) {
196
+ parts.push(`## Recent Decisions`);
197
+ for (const d of briefing.sections.recentDecisions)
198
+ parts.push(`- ${d}`);
199
+ parts.push('');
200
+ }
201
+ if (briefing.sections.activeTasks.length) {
202
+ parts.push(`## Active Tasks`);
203
+ for (const t of briefing.sections.activeTasks)
204
+ parts.push(`- ${t}`);
205
+ parts.push('');
206
+ }
207
+ if (briefing.sections.projectState) {
208
+ parts.push(`## Project State`);
209
+ parts.push(briefing.sections.projectState);
210
+ parts.push('');
211
+ }
212
+ if (briefing.sections.crossAgentInsights.length) {
213
+ parts.push(`## Cross-Agent Insights`);
214
+ for (const i of briefing.sections.crossAgentInsights)
215
+ parts.push(`- ${i}`);
216
+ parts.push('');
217
+ }
218
+ if (briefing.sections.similarPastWork.length) {
219
+ parts.push(`## Similar Past Work`);
220
+ for (const s of briefing.sections.similarPastWork)
221
+ parts.push(`- ${s}`);
222
+ parts.push('');
223
+ }
224
+ return parts.join('\n').trim();
225
+ }
226
+ trimToBudget(briefing, projectName) {
227
+ // Drop sections in this priority order until under budget:
228
+ // similarPastWork → crossAgentInsights → activeTasks → recentDecisions → warnings (warnings last)
229
+ const trimmedSections = { ...briefing.sections };
230
+ const dropOrder = ['similarPastWork', 'crossAgentInsights', 'activeTasks', 'recentDecisions'];
231
+ for (const key of dropOrder) {
232
+ let text = this.assembleBriefing({ ...briefing, sections: trimmedSections }, projectName);
233
+ if (estimateTokens(text) <= this.config.tokenBudget)
234
+ return text;
235
+ const arr = trimmedSections[key];
236
+ if (Array.isArray(arr)) {
237
+ trimmedSections[key] = [];
238
+ }
239
+ else {
240
+ trimmedSections[key] = '';
241
+ }
242
+ }
243
+ return this.assembleBriefing({ ...briefing, sections: trimmedSections }, projectName);
244
+ }
245
+ emptyBriefing(agentTool, projectDir, sessionId) {
246
+ return {
247
+ agentTool,
248
+ projectDir,
249
+ sessionId,
250
+ generatedAt: new Date(),
251
+ tokenCount: 0,
252
+ sections: {
253
+ recentDecisions: [],
254
+ activeTasks: [],
255
+ similarPastWork: [],
256
+ projectState: '',
257
+ crossAgentInsights: [],
258
+ warnings: [],
259
+ },
260
+ fullText: '',
261
+ };
262
+ }
263
+ runningAvg(prev, next, n) {
264
+ return prev + (next - prev) / n;
265
+ }
266
+ }
267
+ let defaultEngine = null;
268
+ export function getSubconscious(config) {
269
+ if (!defaultEngine)
270
+ defaultEngine = new SubconsciousEngine(config);
271
+ else if (config)
272
+ defaultEngine.configure(config);
273
+ return defaultEngine;
274
+ }
275
+ //# sourceMappingURL=subconscious.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subconscious.js","sourceRoot":"","sources":["../../src/brain/subconscious.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,89 @@
1
+ export interface TemporalEvent {
2
+ id: string;
3
+ timestamp: number;
4
+ type: 'commit' | 'file-change' | 'bug-fix' | 'feature' | 'refactor' | 'incident' | 'deploy' | 'review';
5
+ file?: string;
6
+ description: string;
7
+ impact: number;
8
+ metadata?: Record<string, unknown>;
9
+ }
10
+ export interface VelocityMetrics {
11
+ daily: number;
12
+ weekly: number;
13
+ monthly: number;
14
+ trend: 'accelerating' | 'stable' | 'decelerating' | 'stalled';
15
+ trendConfidence: number;
16
+ peakHours: number[];
17
+ peakDays: number[];
18
+ avgCycleTime: number;
19
+ }
20
+ export interface TemporalAnomaly {
21
+ timestamp: number;
22
+ type: 'burst' | 'drought' | 'pattern-break' | 'unusual-hour' | 'regression';
23
+ severity: 'info' | 'warning' | 'critical';
24
+ description: string;
25
+ evidence: string[];
26
+ recommendation: string;
27
+ }
28
+ export interface FileHeatmap {
29
+ file: string;
30
+ changeFrequency: number;
31
+ lastChanged: number;
32
+ avgTimeBetweenChanges: number;
33
+ hotness: number;
34
+ churnRisk: number;
35
+ stabilityScore: number;
36
+ changeTimes: number[];
37
+ }
38
+ export interface BugPrediction {
39
+ file: string;
40
+ probability: number;
41
+ factors: string[];
42
+ lastBugFix: number | null;
43
+ changesSinceLastFix: number;
44
+ complexity: number;
45
+ }
46
+ export interface TemporalStats {
47
+ totalEvents: number;
48
+ timeSpan: {
49
+ start: number;
50
+ end: number;
51
+ durationDays: number;
52
+ };
53
+ velocity: VelocityMetrics;
54
+ anomalyCount: number;
55
+ hotFiles: number;
56
+ bugPredictions: number;
57
+ avgEventsPerDay: number;
58
+ }
59
+ export declare class TemporalIntelligence {
60
+ private events;
61
+ private fileHistory;
62
+ private anomalies;
63
+ private fileHeatmaps;
64
+ private bugPredictions;
65
+ private projectDir;
66
+ constructor(projectDir: string);
67
+ recordEvent(event: Omit<TemporalEvent, 'id'>): TemporalEvent;
68
+ recordCommit(files: string[], message: string, timestamp?: number): void;
69
+ recordFileChange(file: string, changeType: 'add' | 'modify' | 'delete'): void;
70
+ getVelocity(): VelocityMetrics;
71
+ private updateFileHeatmap;
72
+ getHotFiles(n?: number): FileHeatmap[];
73
+ getStableFiles(n?: number): FileHeatmap[];
74
+ getChurnRisks(threshold?: number): FileHeatmap[];
75
+ predictBugs(topN?: number): BugPrediction[];
76
+ private detectAnomalies;
77
+ detectDrought(): TemporalAnomaly | null;
78
+ getAnomalies(since?: number): TemporalAnomaly[];
79
+ getTimeline(file?: string, limit?: number): TemporalEvent[];
80
+ getDayDistribution(): Array<{
81
+ date: string;
82
+ count: number;
83
+ types: Record<string, number>;
84
+ }>;
85
+ private classifyCommit;
86
+ private estimateImpact;
87
+ stats(): TemporalStats;
88
+ }
89
+ //# sourceMappingURL=temporal-intelligence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"temporal-intelligence.d.ts","sourceRoot":"","sources":["../../src/brain/temporal-intelligence.ts"],"names":[],"mappings":"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"}