@theihtisham/agent-shadow-brain 3.0.0 → 4.0.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 (73) hide show
  1. package/README.md +443 -602
  2. package/dist/brain/adversarial-defense.d.ts +57 -0
  3. package/dist/brain/adversarial-defense.d.ts.map +1 -0
  4. package/dist/brain/adversarial-defense.js +303 -0
  5. package/dist/brain/adversarial-defense.js.map +1 -0
  6. package/dist/brain/cognitive-load.d.ts +27 -0
  7. package/dist/brain/cognitive-load.d.ts.map +1 -0
  8. package/dist/brain/cognitive-load.js +304 -0
  9. package/dist/brain/cognitive-load.js.map +1 -0
  10. package/dist/brain/cross-agent-protocol.d.ts +48 -0
  11. package/dist/brain/cross-agent-protocol.d.ts.map +1 -0
  12. package/dist/brain/cross-agent-protocol.js +306 -0
  13. package/dist/brain/cross-agent-protocol.js.map +1 -0
  14. package/dist/brain/influence-map.d.ts +31 -0
  15. package/dist/brain/influence-map.d.ts.map +1 -0
  16. package/dist/brain/influence-map.js +375 -0
  17. package/dist/brain/influence-map.js.map +1 -0
  18. package/dist/brain/knowledge-graph.d.ts +56 -0
  19. package/dist/brain/knowledge-graph.d.ts.map +1 -0
  20. package/dist/brain/knowledge-graph.js +427 -0
  21. package/dist/brain/knowledge-graph.js.map +1 -0
  22. package/dist/brain/learning-engine.d.ts +11 -0
  23. package/dist/brain/learning-engine.d.ts.map +1 -1
  24. package/dist/brain/learning-engine.js +44 -1
  25. package/dist/brain/learning-engine.js.map +1 -1
  26. package/dist/brain/neural-mesh.d.ts +9 -1
  27. package/dist/brain/neural-mesh.d.ts.map +1 -1
  28. package/dist/brain/neural-mesh.js +75 -16
  29. package/dist/brain/neural-mesh.js.map +1 -1
  30. package/dist/brain/orchestrator.d.ts +24 -2
  31. package/dist/brain/orchestrator.d.ts.map +1 -1
  32. package/dist/brain/orchestrator.js +208 -4
  33. package/dist/brain/orchestrator.js.map +1 -1
  34. package/dist/brain/pattern-memory.d.ts +8 -3
  35. package/dist/brain/pattern-memory.d.ts.map +1 -1
  36. package/dist/brain/pattern-memory.js +71 -3
  37. package/dist/brain/pattern-memory.js.map +1 -1
  38. package/dist/brain/predictive-engine.d.ts +45 -0
  39. package/dist/brain/predictive-engine.d.ts.map +1 -0
  40. package/dist/brain/predictive-engine.js +238 -0
  41. package/dist/brain/predictive-engine.js.map +1 -0
  42. package/dist/brain/security-audit.d.ts +20 -0
  43. package/dist/brain/security-audit.d.ts.map +1 -0
  44. package/dist/brain/security-audit.js +340 -0
  45. package/dist/brain/security-audit.js.map +1 -0
  46. package/dist/brain/self-evolution.d.ts +53 -0
  47. package/dist/brain/self-evolution.d.ts.map +1 -0
  48. package/dist/brain/self-evolution.js +278 -0
  49. package/dist/brain/self-evolution.js.map +1 -0
  50. package/dist/brain/sssp-router.d.ts +58 -0
  51. package/dist/brain/sssp-router.d.ts.map +1 -0
  52. package/dist/brain/sssp-router.js +295 -0
  53. package/dist/brain/sssp-router.js.map +1 -0
  54. package/dist/brain/swarm-intelligence.d.ts +48 -0
  55. package/dist/brain/swarm-intelligence.d.ts.map +1 -0
  56. package/dist/brain/swarm-intelligence.js +215 -0
  57. package/dist/brain/swarm-intelligence.js.map +1 -0
  58. package/dist/brain/turbo-memory.d.ts +56 -0
  59. package/dist/brain/turbo-memory.d.ts.map +1 -0
  60. package/dist/brain/turbo-memory.js +388 -0
  61. package/dist/brain/turbo-memory.js.map +1 -0
  62. package/dist/cli.js +339 -3
  63. package/dist/cli.js.map +1 -1
  64. package/dist/index.d.ts +9 -1
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +10 -1
  67. package/dist/index.js.map +1 -1
  68. package/dist/types.d.ts +272 -1
  69. package/dist/types.d.ts.map +1 -1
  70. package/dist/ui/dashboard.d.ts.map +1 -1
  71. package/dist/ui/dashboard.js +20 -3
  72. package/dist/ui/dashboard.js.map +1 -1
  73. package/package.json +16 -7
@@ -0,0 +1,306 @@
1
+ // src/brain/cross-agent-protocol.ts — Cross-Agent Intelligence Protocol (CAIP)
2
+ // Enables Kilo Code, Cline, OpenCode, Claude Code, Roo Code, Aider, Cursor to
3
+ // communicate, share insights, and boost each other's intelligence.
4
+ // v4.0.0 — Hyper-Intelligence Edition
5
+ import * as fs from 'fs';
6
+ import * as path from 'path';
7
+ import * as crypto from 'crypto';
8
+ import { WebSocket, WebSocketServer } from 'ws';
9
+ const CAIP_PORT = 7344;
10
+ const CAIP_DIR = path.join(process.env.HOME || process.env.USERPROFILE || '~', '.shadow-brain-caip');
11
+ const MAX_PENDING = 1000;
12
+ const MESSAGE_TTL_MS = 300000; // 5 minutes
13
+ /**
14
+ * Cross-Agent Intelligence Protocol — the hub that makes all coding agents talk to each other.
15
+ *
16
+ * Transport:
17
+ * Primary: WebSocket on port 7344 (CAIP bus)
18
+ * Fallback: Shared filesystem at ~/.shadow-brain-caip/ (polling every 2s)
19
+ *
20
+ * Protocol:
21
+ * 1. Handshake — each agent sends identity, version, capabilities
22
+ * 2. Channels — broadcast (all), pair (two agents), team (subset)
23
+ * 3. Boost Packet — high-value insight shared to all connected agents
24
+ * 4. Deduplication — message hash ring prevents infinite loops
25
+ */
26
+ export class CrossAgentProtocol {
27
+ constructor() {
28
+ this.wss = null;
29
+ this.clients = new Map();
30
+ this.messageHashes = new Set();
31
+ this.boostHandlers = new Map();
32
+ this.filePollTimer = null;
33
+ this.running = false;
34
+ this.bus = {
35
+ channels: [],
36
+ pendingMessages: [],
37
+ connectedAgents: new Map(),
38
+ totalExchanged: 0,
39
+ uptime: 0,
40
+ };
41
+ // Ensure broadcast channel exists
42
+ this.bus.channels.push({
43
+ id: 'broadcast',
44
+ participants: [],
45
+ created: new Date(),
46
+ messageCount: 0,
47
+ lastActivity: new Date(),
48
+ type: 'broadcast',
49
+ });
50
+ }
51
+ // ── Connection Management ───────────────────────────────────────────────────
52
+ /** Start the CAIP WebSocket server + filesystem fallback */
53
+ async start() {
54
+ if (this.running)
55
+ return;
56
+ try {
57
+ // Start WebSocket server
58
+ this.wss = new WebSocketServer({ port: CAIP_PORT });
59
+ this.running = true;
60
+ this.wss.on('connection', (ws, req) => {
61
+ ws.on('message', (data) => {
62
+ try {
63
+ const message = JSON.parse(data.toString());
64
+ this.handleMessage(message, ws);
65
+ }
66
+ catch {
67
+ // Invalid message format — ignore
68
+ }
69
+ });
70
+ ws.on('close', () => {
71
+ // Remove disconnected agent
72
+ for (const [agent, socket] of this.clients) {
73
+ if (socket === ws) {
74
+ this.clients.delete(agent);
75
+ this.bus.connectedAgents.delete(agent);
76
+ break;
77
+ }
78
+ }
79
+ });
80
+ });
81
+ // Start filesystem fallback
82
+ this.startFilePolling();
83
+ }
84
+ catch {
85
+ // WebSocket failed — rely on filesystem only
86
+ this.running = true;
87
+ this.startFilePolling();
88
+ }
89
+ }
90
+ /** Stop the CAIP server */
91
+ async stop() {
92
+ this.running = false;
93
+ if (this.wss) {
94
+ this.wss.close();
95
+ this.wss = null;
96
+ }
97
+ if (this.filePollTimer) {
98
+ clearInterval(this.filePollTimer);
99
+ this.filePollTimer = null;
100
+ }
101
+ this.clients.clear();
102
+ }
103
+ /** Register an agent via handshake */
104
+ async connect(handshake) {
105
+ this.bus.connectedAgents.set(handshake.agentTool, handshake);
106
+ // Add to broadcast channel
107
+ const broadcastChannel = this.bus.channels[0];
108
+ if (broadcastChannel && !broadcastChannel.participants.includes(handshake.agentTool)) {
109
+ broadcastChannel.participants.push(handshake.agentTool);
110
+ }
111
+ // Create inbox directory for filesystem fallback
112
+ const inboxDir = path.join(CAIP_DIR, 'in', handshake.agentTool);
113
+ if (!fs.existsSync(inboxDir)) {
114
+ fs.mkdirSync(inboxDir, { recursive: true });
115
+ }
116
+ // Create outbox directory
117
+ const outboxDir = path.join(CAIP_DIR, 'out', handshake.agentTool);
118
+ if (!fs.existsSync(outboxDir)) {
119
+ fs.mkdirSync(outboxDir, { recursive: true });
120
+ }
121
+ const channel = {
122
+ id: `${handshake.agentTool}-connected`,
123
+ participants: [handshake.agentTool],
124
+ created: new Date(),
125
+ messageCount: 0,
126
+ lastActivity: new Date(),
127
+ type: 'pair',
128
+ };
129
+ return channel;
130
+ }
131
+ // ── Message Delivery ────────────────────────────────────────────────────────
132
+ /** Broadcast a message to all connected agents */
133
+ async broadcast(from, payload, priority = 'medium') {
134
+ const message = {
135
+ id: crypto.randomUUID(),
136
+ from,
137
+ to: 'broadcast',
138
+ type: 'insight',
139
+ payload,
140
+ timestamp: new Date(),
141
+ priority,
142
+ };
143
+ this.deliverMessage(message);
144
+ }
145
+ /** Send a boost packet — high-value insights shared across agents */
146
+ async sendBoostPacket(packet) {
147
+ const message = {
148
+ id: crypto.randomUUID(),
149
+ from: packet.fromAgent,
150
+ to: 'broadcast',
151
+ type: 'boost',
152
+ payload: packet,
153
+ timestamp: new Date(),
154
+ priority: 'high',
155
+ };
156
+ this.deliverMessage(message);
157
+ // Notify boost handlers
158
+ const handlers = this.boostHandlers.get(packet.fromAgent) || [];
159
+ for (const handler of handlers) {
160
+ try {
161
+ handler(packet);
162
+ }
163
+ catch { /* handler error */ }
164
+ }
165
+ }
166
+ /** Send targeted message to specific agent */
167
+ async sendDirect(from, to, payload) {
168
+ const message = {
169
+ id: crypto.randomUUID(),
170
+ from,
171
+ to,
172
+ type: 'insight',
173
+ payload,
174
+ timestamp: new Date(),
175
+ priority: 'medium',
176
+ };
177
+ this.deliverMessage(message);
178
+ }
179
+ /** Subscribe to boost packets from a specific agent */
180
+ subscribeToBoosts(agent, handler) {
181
+ if (!this.boostHandlers.has(agent)) {
182
+ this.boostHandlers.set(agent, []);
183
+ }
184
+ this.boostHandlers.get(agent).push(handler);
185
+ }
186
+ /** Get all connected agents */
187
+ getConnectedAgents() {
188
+ return Array.from(this.bus.connectedAgents.keys());
189
+ }
190
+ /** Get bus statistics */
191
+ getBusStats() {
192
+ return { ...this.bus, connectedAgents: new Map(this.bus.connectedAgents) };
193
+ }
194
+ // ── Internal ────────────────────────────────────────────────────────────────
195
+ handleMessage(message, ws) {
196
+ // Deduplication
197
+ const hash = this.hashMessage(message);
198
+ if (this.messageHashes.has(hash))
199
+ return;
200
+ this.messageHashes.add(hash);
201
+ // Prune old hashes
202
+ if (this.messageHashes.size > 10000) {
203
+ const entries = Array.from(this.messageHashes);
204
+ this.messageHashes = new Set(entries.slice(-5000));
205
+ }
206
+ // Handle handshake
207
+ if (message.type === 'handshake' && ws) {
208
+ const handshake = message.payload;
209
+ this.clients.set(handshake.agentTool, ws);
210
+ this.bus.connectedAgents.set(handshake.agentTool, handshake);
211
+ return;
212
+ }
213
+ // Deliver
214
+ this.deliverMessage(message);
215
+ }
216
+ deliverMessage(message) {
217
+ this.bus.totalExchanged++;
218
+ this.bus.pendingMessages.push(message);
219
+ // Cap pending
220
+ if (this.bus.pendingMessages.length > MAX_PENDING) {
221
+ this.bus.pendingMessages = this.bus.pendingMessages.slice(-MAX_PENDING / 2);
222
+ }
223
+ // WebSocket delivery
224
+ if (message.to === 'broadcast') {
225
+ for (const [agent, ws] of this.clients) {
226
+ if (agent !== message.from && ws.readyState === WebSocket.OPEN) {
227
+ try {
228
+ ws.send(JSON.stringify(message));
229
+ }
230
+ catch { /* send failed */ }
231
+ }
232
+ }
233
+ }
234
+ else {
235
+ const targetWs = this.clients.get(message.to);
236
+ if (targetWs?.readyState === WebSocket.OPEN) {
237
+ try {
238
+ targetWs.send(JSON.stringify(message));
239
+ }
240
+ catch { /* send failed */ }
241
+ }
242
+ }
243
+ // Filesystem fallback delivery
244
+ this.writeFileMessage(message);
245
+ }
246
+ writeFileMessage(message) {
247
+ try {
248
+ const targets = message.to === 'broadcast'
249
+ ? Array.from(this.bus.connectedAgents.keys()).filter(a => a !== message.from)
250
+ : [message.to];
251
+ for (const target of targets) {
252
+ const inboxDir = path.join(CAIP_DIR, 'in', target);
253
+ if (!fs.existsSync(inboxDir)) {
254
+ fs.mkdirSync(inboxDir, { recursive: true });
255
+ }
256
+ const filePath = path.join(inboxDir, `${Date.now()}-${message.id}.json`);
257
+ fs.writeFileSync(filePath, JSON.stringify(message));
258
+ }
259
+ }
260
+ catch {
261
+ // Filesystem delivery failed — non-critical
262
+ }
263
+ }
264
+ startFilePolling() {
265
+ // Poll outbox directories for messages from agents
266
+ this.filePollTimer = setInterval(() => {
267
+ try {
268
+ const outDir = path.join(CAIP_DIR, 'out');
269
+ if (!fs.existsSync(outDir))
270
+ return;
271
+ const agentDirs = fs.readdirSync(outDir);
272
+ for (const agent of agentDirs) {
273
+ const agentOutDir = path.join(outDir, agent);
274
+ if (!fs.statSync(agentOutDir).isDirectory())
275
+ continue;
276
+ const files = fs.readdirSync(agentOutDir).sort();
277
+ for (const file of files) {
278
+ if (!file.endsWith('.json'))
279
+ continue;
280
+ const filePath = path.join(agentOutDir, file);
281
+ try {
282
+ const data = JSON.parse(fs.readFileSync(filePath, 'utf-8'));
283
+ this.handleMessage(data);
284
+ fs.unlinkSync(filePath); // Processed — remove
285
+ }
286
+ catch {
287
+ // Corrupt file — remove
288
+ try {
289
+ fs.unlinkSync(filePath);
290
+ }
291
+ catch { /* ignore */ }
292
+ }
293
+ }
294
+ }
295
+ }
296
+ catch {
297
+ // Polling error — non-critical
298
+ }
299
+ }, 2000);
300
+ }
301
+ hashMessage(message) {
302
+ const content = `${message.from}:${message.to}:${message.type}:${JSON.stringify(message.payload)}`;
303
+ return crypto.createHash('sha256').update(content).digest('hex').slice(0, 16);
304
+ }
305
+ }
306
+ //# sourceMappingURL=cross-agent-protocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cross-agent-protocol.js","sourceRoot":"","sources":["../../src/brain/cross-agent-protocol.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import { BrainInsight } from '../types.js';
2
+ export interface InfluenceResult {
3
+ changedFiles: string[];
4
+ affectedFiles: Array<{
5
+ file: string;
6
+ score: number;
7
+ reasons: string[];
8
+ }>;
9
+ totalReachable: number;
10
+ riskLevel: 'low' | 'medium' | 'high';
11
+ }
12
+ export declare class InfluenceMapper {
13
+ private projectDir;
14
+ private graph;
15
+ constructor(projectDir: string);
16
+ analyzeProject(maxFiles?: number): Promise<BrainInsight[]>;
17
+ analyzeInfluence(changedFiles: string[]): InfluenceResult;
18
+ private buildGraph;
19
+ private extractImports;
20
+ private resolveImport;
21
+ private resolvePythonImport;
22
+ private getReverseDependencies;
23
+ private getTransitiveReverseDependencies;
24
+ private inferTestFile;
25
+ private findTestCorrelation;
26
+ private findSourceForTest;
27
+ private calculateInfluenceScores;
28
+ private toRelative;
29
+ private collectFiles;
30
+ }
31
+ //# sourceMappingURL=influence-map.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"influence-map.d.ts","sourceRoot":"","sources":["../../src/brain/influence-map.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAU3C,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,EAAE,KAAK,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC,CAAC;IACH,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;CACtC;AAcD,qBAAa,eAAe;IAC1B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,KAAK,CAAoC;gBAErC,UAAU,EAAE,MAAM;IAIxB,cAAc,CAAC,QAAQ,GAAE,MAAY,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAkErE,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,eAAe;IA0EzD,OAAO,CAAC,UAAU;IAgClB,OAAO,CAAC,cAAc;IAsDtB,OAAO,CAAC,aAAa;IAqBrB,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,sBAAsB;IAM9B,OAAO,CAAC,gCAAgC;IA0BxC,OAAO,CAAC,aAAa;IAqBrB,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,CAAC,iBAAiB;IAmBzB,OAAO,CAAC,wBAAwB;IAyBhC,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,YAAY;CAqBrB"}