@stackmemoryai/stackmemory 0.1.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 (50) hide show
  1. package/README.md +317 -0
  2. package/dist/attention-scoring/src/attention-tracker.d.ts +79 -0
  3. package/dist/attention-scoring/src/attention-tracker.d.ts.map +1 -0
  4. package/dist/attention-scoring/src/attention-tracker.js +488 -0
  5. package/dist/attention-scoring/src/attention-tracker.js.map +1 -0
  6. package/dist/attention-scoring/src/mcp-integration.d.ts +56 -0
  7. package/dist/attention-scoring/src/mcp-integration.d.ts.map +1 -0
  8. package/dist/attention-scoring/src/mcp-integration.js +369 -0
  9. package/dist/attention-scoring/src/mcp-integration.js.map +1 -0
  10. package/dist/p2p-sync/src/p2p-sync.d.ts +81 -0
  11. package/dist/p2p-sync/src/p2p-sync.d.ts.map +1 -0
  12. package/dist/p2p-sync/src/p2p-sync.js +457 -0
  13. package/dist/p2p-sync/src/p2p-sync.js.map +1 -0
  14. package/dist/p2p-sync/src/team-context-sync.d.ts +99 -0
  15. package/dist/p2p-sync/src/team-context-sync.d.ts.map +1 -0
  16. package/dist/p2p-sync/src/team-context-sync.js +491 -0
  17. package/dist/p2p-sync/src/team-context-sync.js.map +1 -0
  18. package/dist/scripts/initialize.d.ts +6 -0
  19. package/dist/scripts/initialize.d.ts.map +1 -0
  20. package/dist/scripts/initialize.js +93 -0
  21. package/dist/scripts/initialize.js.map +1 -0
  22. package/dist/scripts/status.d.ts +6 -0
  23. package/dist/scripts/status.d.ts.map +1 -0
  24. package/dist/scripts/status.js +87 -0
  25. package/dist/scripts/status.js.map +1 -0
  26. package/dist/src/cli.d.ts +7 -0
  27. package/dist/src/cli.d.ts.map +1 -0
  28. package/dist/src/cli.js +73 -0
  29. package/dist/src/cli.js.map +1 -0
  30. package/dist/src/error-handler.d.ts +42 -0
  31. package/dist/src/error-handler.d.ts.map +1 -0
  32. package/dist/src/error-handler.js +155 -0
  33. package/dist/src/error-handler.js.map +1 -0
  34. package/dist/src/frame-manager.d.ts +106 -0
  35. package/dist/src/frame-manager.d.ts.map +1 -0
  36. package/dist/src/frame-manager.js +361 -0
  37. package/dist/src/frame-manager.js.map +1 -0
  38. package/dist/src/index.d.ts +21 -0
  39. package/dist/src/index.d.ts.map +1 -0
  40. package/dist/src/index.js +9 -0
  41. package/dist/src/index.js.map +1 -0
  42. package/dist/src/logger.d.ts +24 -0
  43. package/dist/src/logger.d.ts.map +1 -0
  44. package/dist/src/logger.js +120 -0
  45. package/dist/src/logger.js.map +1 -0
  46. package/dist/src/mcp-server.d.ts +32 -0
  47. package/dist/src/mcp-server.d.ts.map +1 -0
  48. package/dist/src/mcp-server.js +441 -0
  49. package/dist/src/mcp-server.js.map +1 -0
  50. package/package.json +69 -0
@@ -0,0 +1,488 @@
1
+ /**
2
+ * Attention-Based Importance Scoring System
3
+ *
4
+ * Tracks which context pieces actually influence AI decisions
5
+ * and adjusts their importance scores based on real usage
6
+ */
7
+ import Database from 'better-sqlite3';
8
+ import { createHash } from 'crypto';
9
+ import { EventEmitter } from 'events';
10
+ // ============================================
11
+ // Core Attention Tracker
12
+ // ============================================
13
+ export class AttentionTracker extends EventEmitter {
14
+ db;
15
+ currentSession;
16
+ attentionBuffer = [];
17
+ constructor(dbPath = '.stackmemory/attention.db') {
18
+ super();
19
+ this.db = new Database(dbPath);
20
+ this.initDB();
21
+ this.currentSession = this.createSession();
22
+ }
23
+ // ============================================
24
+ // Database Schema
25
+ // ============================================
26
+ initDB() {
27
+ this.db.exec(`
28
+ -- Track which context items were provided
29
+ CREATE TABLE IF NOT EXISTS context_provisions (
30
+ provision_id TEXT PRIMARY KEY,
31
+ session_id TEXT NOT NULL,
32
+ context_id TEXT NOT NULL,
33
+ context_type TEXT NOT NULL,
34
+ content_hash TEXT NOT NULL,
35
+ position INTEGER NOT NULL, -- Order in context
36
+ token_count INTEGER NOT NULL,
37
+ timestamp INTEGER DEFAULT (unixepoch())
38
+ );
39
+
40
+ -- Track AI responses and actions
41
+ CREATE TABLE IF NOT EXISTS ai_responses (
42
+ response_id TEXT PRIMARY KEY,
43
+ session_id TEXT NOT NULL,
44
+ provision_id TEXT NOT NULL,
45
+ query TEXT NOT NULL,
46
+ response TEXT NOT NULL,
47
+ actions_taken TEXT, -- JSON array of actions
48
+ tokens_used INTEGER,
49
+ latency_ms INTEGER,
50
+ timestamp INTEGER DEFAULT (unixepoch()),
51
+ FOREIGN KEY (provision_id) REFERENCES context_provisions(provision_id)
52
+ );
53
+
54
+ -- Track which context influenced which outputs
55
+ CREATE TABLE IF NOT EXISTS attention_signals (
56
+ signal_id TEXT PRIMARY KEY,
57
+ context_id TEXT NOT NULL,
58
+ response_id TEXT NOT NULL,
59
+ influence_score REAL NOT NULL, -- 0.0 to 1.0
60
+ signal_type TEXT NOT NULL, -- 'mention', 'reference', 'action', 'implicit'
61
+ evidence TEXT, -- What shows the influence
62
+ confidence REAL DEFAULT 0.5,
63
+ timestamp INTEGER DEFAULT (unixepoch())
64
+ );
65
+
66
+ -- Aggregated importance scores (learned over time)
67
+ CREATE TABLE IF NOT EXISTS learned_importance (
68
+ context_id TEXT PRIMARY KEY,
69
+ context_type TEXT NOT NULL,
70
+ base_importance REAL DEFAULT 0.5,
71
+ learned_importance REAL DEFAULT 0.5,
72
+ influence_count INTEGER DEFAULT 0,
73
+ total_provisions INTEGER DEFAULT 0,
74
+ avg_influence_score REAL DEFAULT 0.0,
75
+ last_influenced INTEGER,
76
+ last_updated INTEGER DEFAULT (unixepoch())
77
+ );
78
+
79
+ -- Pattern recognition for context combinations
80
+ CREATE TABLE IF NOT EXISTS context_patterns (
81
+ pattern_id TEXT PRIMARY KEY,
82
+ context_ids TEXT NOT NULL, -- JSON array
83
+ pattern_hash TEXT NOT NULL UNIQUE,
84
+ occurrence_count INTEGER DEFAULT 1,
85
+ success_rate REAL DEFAULT 0.0,
86
+ avg_influence REAL DEFAULT 0.0,
87
+ last_seen INTEGER DEFAULT (unixepoch())
88
+ );
89
+
90
+ -- Indexes for performance
91
+ CREATE INDEX IF NOT EXISTS idx_provisions_session ON context_provisions(session_id);
92
+ CREATE INDEX IF NOT EXISTS idx_signals_context ON attention_signals(context_id);
93
+ CREATE INDEX IF NOT EXISTS idx_importance_type ON learned_importance(context_type);
94
+ CREATE INDEX IF NOT EXISTS idx_patterns_hash ON context_patterns(pattern_hash);
95
+ `);
96
+ }
97
+ // ============================================
98
+ // Session Management
99
+ // ============================================
100
+ createSession() {
101
+ return {
102
+ sessionId: this.generateId(),
103
+ startTime: Date.now(),
104
+ provisions: [],
105
+ responses: []
106
+ };
107
+ }
108
+ startProvision(query) {
109
+ const provisionId = this.generateId();
110
+ return new ProvisionBuilder(this, provisionId, query);
111
+ }
112
+ // ============================================
113
+ // Attention Tracking
114
+ // ============================================
115
+ trackProvision(contextItems, provisionId) {
116
+ const tx = this.db.transaction(() => {
117
+ contextItems.forEach((item, index) => {
118
+ const contentHash = this.hashContent(item.content);
119
+ // Record the provision
120
+ this.db.prepare(`
121
+ INSERT INTO context_provisions
122
+ (provision_id, session_id, context_id, context_type, content_hash, position, token_count)
123
+ VALUES (?, ?, ?, ?, ?, ?, ?)
124
+ `).run(provisionId, this.currentSession.sessionId, item.id, item.type, contentHash, index, item.tokenCount);
125
+ // Initialize or update learned importance
126
+ this.db.prepare(`
127
+ INSERT INTO learned_importance (context_id, context_type, total_provisions)
128
+ VALUES (?, ?, 1)
129
+ ON CONFLICT(context_id) DO UPDATE SET
130
+ total_provisions = total_provisions + 1,
131
+ last_updated = unixepoch()
132
+ `).run(item.id, item.type);
133
+ });
134
+ });
135
+ tx();
136
+ this.currentSession.provisions.push({ provisionId, items: contextItems });
137
+ }
138
+ trackResponse(provisionId, query, response, actionsTaken) {
139
+ const responseId = this.generateId();
140
+ this.db.prepare(`
141
+ INSERT INTO ai_responses
142
+ (response_id, session_id, provision_id, query, response, actions_taken, tokens_used)
143
+ VALUES (?, ?, ?, ?, ?, ?, ?)
144
+ `).run(responseId, this.currentSession.sessionId, provisionId, query, response, JSON.stringify(actionsTaken || []), this.estimateTokens(response));
145
+ // Analyze attention signals
146
+ this.analyzeAttention(provisionId, responseId, response, actionsTaken);
147
+ return responseId;
148
+ }
149
+ // ============================================
150
+ // Attention Analysis (The Magic)
151
+ // ============================================
152
+ analyzeAttention(provisionId, responseId, response, actions) {
153
+ // Get all context items from this provision
154
+ const contextItems = this.db.prepare(`
155
+ SELECT context_id, context_type, position, token_count
156
+ FROM context_provisions
157
+ WHERE provision_id = ?
158
+ `).all(provisionId);
159
+ // Analyze each context item's influence
160
+ contextItems.forEach(item => {
161
+ const influence = this.calculateInfluence(item, response, actions);
162
+ if (influence.score > 0) {
163
+ // Record the attention signal
164
+ this.db.prepare(`
165
+ INSERT INTO attention_signals
166
+ (signal_id, context_id, response_id, influence_score, signal_type, evidence, confidence)
167
+ VALUES (?, ?, ?, ?, ?, ?, ?)
168
+ `).run(this.generateId(), item.context_id, responseId, influence.score, influence.type, influence.evidence, influence.confidence);
169
+ // Update learned importance
170
+ this.updateLearnedImportance(item.context_id, influence.score);
171
+ }
172
+ });
173
+ // Detect and record patterns
174
+ this.detectPatterns(contextItems, response);
175
+ }
176
+ calculateInfluence(contextItem, response, actions) {
177
+ let score = 0;
178
+ let type = 'none';
179
+ let evidence = '';
180
+ let confidence = 0;
181
+ // 1. Direct mention detection
182
+ const contextContent = this.getContextContent(contextItem.context_id);
183
+ if (contextContent) {
184
+ const keywords = this.extractKeywords(contextContent);
185
+ const mentionCount = this.countMentions(keywords, response);
186
+ if (mentionCount > 0) {
187
+ score = Math.min(1.0, mentionCount * 0.3);
188
+ type = 'mention';
189
+ evidence = `Mentioned ${mentionCount} times`;
190
+ confidence = 0.9;
191
+ }
192
+ }
193
+ // 2. Action correlation
194
+ if (actions && actions.length > 0) {
195
+ const actionCorrelation = this.correlateWithActions(contextItem, actions);
196
+ if (actionCorrelation > score) {
197
+ score = actionCorrelation;
198
+ type = 'action';
199
+ evidence = `Triggered ${actions.join(', ')}`;
200
+ confidence = 0.8;
201
+ }
202
+ }
203
+ // 3. Semantic similarity (using simple overlap for now)
204
+ const similarity = this.calculateSimilarity(contextContent, response);
205
+ if (similarity > 0.3 && similarity > score) {
206
+ score = similarity;
207
+ type = 'implicit';
208
+ evidence = `Semantic similarity: ${(similarity * 100).toFixed(1)}%`;
209
+ confidence = 0.6;
210
+ }
211
+ // 4. Position-based influence (earlier context often more influential)
212
+ const positionBoost = Math.max(0, (10 - contextItem.position) / 20);
213
+ score = Math.min(1.0, score + positionBoost);
214
+ return { score, type, evidence, confidence };
215
+ }
216
+ // ============================================
217
+ // Learning & Adaptation
218
+ // ============================================
219
+ updateLearnedImportance(contextId, influenceScore) {
220
+ const current = this.db.prepare(`
221
+ SELECT learned_importance, influence_count, avg_influence_score
222
+ FROM learned_importance
223
+ WHERE context_id = ?
224
+ `).get(contextId);
225
+ if (current) {
226
+ // Exponential moving average
227
+ const alpha = 0.1; // Learning rate
228
+ const newImportance = (1 - alpha) * current.learned_importance + alpha * influenceScore;
229
+ // Update running average
230
+ const newCount = current.influence_count + 1;
231
+ const newAvg = (current.avg_influence_score * current.influence_count + influenceScore) / newCount;
232
+ this.db.prepare(`
233
+ UPDATE learned_importance
234
+ SET learned_importance = ?,
235
+ influence_count = ?,
236
+ avg_influence_score = ?,
237
+ last_influenced = unixepoch(),
238
+ last_updated = unixepoch()
239
+ WHERE context_id = ?
240
+ `).run(newImportance, newCount, newAvg, contextId);
241
+ // Emit event for real-time updates
242
+ this.emit('importance-updated', { contextId, importance: newImportance });
243
+ }
244
+ }
245
+ detectPatterns(contextItems, response) {
246
+ if (contextItems.length < 2)
247
+ return;
248
+ // Create pattern hash from context combination
249
+ const contextIds = contextItems.map(c => c.context_id).sort();
250
+ const patternHash = this.hashContent(JSON.stringify(contextIds));
251
+ const existing = this.db.prepare(`
252
+ SELECT pattern_id, occurrence_count, success_rate
253
+ FROM context_patterns
254
+ WHERE pattern_hash = ?
255
+ `).get(patternHash);
256
+ const success = this.evaluateSuccess(response);
257
+ if (existing) {
258
+ // Update existing pattern
259
+ const newCount = existing.occurrence_count + 1;
260
+ const newSuccessRate = (existing.success_rate * existing.occurrence_count + (success ? 1 : 0)) / newCount;
261
+ this.db.prepare(`
262
+ UPDATE context_patterns
263
+ SET occurrence_count = ?,
264
+ success_rate = ?,
265
+ last_seen = unixepoch()
266
+ WHERE pattern_id = ?
267
+ `).run(newCount, newSuccessRate, existing.pattern_id);
268
+ }
269
+ else {
270
+ // Record new pattern
271
+ this.db.prepare(`
272
+ INSERT INTO context_patterns
273
+ (pattern_id, context_ids, pattern_hash, success_rate)
274
+ VALUES (?, ?, ?, ?)
275
+ `).run(this.generateId(), JSON.stringify(contextIds), patternHash, success ? 1.0 : 0.0);
276
+ }
277
+ }
278
+ // ============================================
279
+ // Reinforcement Learning Loop
280
+ // ============================================
281
+ async reinforcementUpdate(feedback) {
282
+ // Adjust importance based on user feedback
283
+ const signals = this.db.prepare(`
284
+ SELECT context_id, influence_score
285
+ FROM attention_signals
286
+ WHERE response_id = ?
287
+ `).all(feedback.responseId);
288
+ const tx = this.db.transaction(() => {
289
+ signals.forEach(signal => {
290
+ const adjustment = feedback.helpful ? 0.05 : -0.05;
291
+ const scaledAdjustment = adjustment * signal.influence_score;
292
+ this.db.prepare(`
293
+ UPDATE learned_importance
294
+ SET learned_importance = MAX(0.1, MIN(1.0, learned_importance + ?)),
295
+ last_updated = unixepoch()
296
+ WHERE context_id = ?
297
+ `).run(scaledAdjustment, signal.context_id);
298
+ });
299
+ });
300
+ tx();
301
+ }
302
+ // ============================================
303
+ // Importance Scoring API
304
+ // ============================================
305
+ getImportanceScore(contextId) {
306
+ const row = this.db.prepare(`
307
+ SELECT learned_importance, base_importance
308
+ FROM learned_importance
309
+ WHERE context_id = ?
310
+ `).get(contextId);
311
+ if (!row)
312
+ return 0.5; // Default importance
313
+ // Weighted combination of base and learned
314
+ return row.learned_importance * 0.7 + row.base_importance * 0.3;
315
+ }
316
+ getContextRanking(contextType) {
317
+ const query = contextType
318
+ ? `SELECT * FROM learned_importance WHERE context_type = ? ORDER BY learned_importance DESC`
319
+ : `SELECT * FROM learned_importance ORDER BY learned_importance DESC`;
320
+ const rows = contextType
321
+ ? this.db.prepare(query).all(contextType)
322
+ : this.db.prepare(query).all();
323
+ return rows.map(row => ({
324
+ contextId: row.context_id,
325
+ type: row.context_type,
326
+ importance: row.learned_importance,
327
+ influenceRate: row.influence_count / Math.max(1, row.total_provisions),
328
+ avgInfluence: row.avg_influence_score,
329
+ lastUsed: row.last_influenced
330
+ }));
331
+ }
332
+ // ============================================
333
+ // Pattern Recommendations
334
+ // ============================================
335
+ getRecommendedContext(query, currentContext) {
336
+ // Find successful patterns that include some of current context
337
+ const patterns = this.db.prepare(`
338
+ SELECT context_ids, success_rate, occurrence_count
339
+ FROM context_patterns
340
+ WHERE success_rate > 0.7
341
+ AND occurrence_count > 5
342
+ ORDER BY success_rate DESC, occurrence_count DESC
343
+ LIMIT 10
344
+ `).all();
345
+ const recommendations = new Set();
346
+ patterns.forEach(pattern => {
347
+ const patternContexts = JSON.parse(pattern.context_ids);
348
+ const overlap = patternContexts.filter((c) => currentContext.includes(c));
349
+ if (overlap.length > 0) {
350
+ // Recommend missing pieces from successful patterns
351
+ patternContexts.forEach((c) => {
352
+ if (!currentContext.includes(c)) {
353
+ recommendations.add(c);
354
+ }
355
+ });
356
+ }
357
+ });
358
+ return Array.from(recommendations);
359
+ }
360
+ // ============================================
361
+ // Visualization & Analytics
362
+ // ============================================
363
+ getAttentionHeatmap(sessionId) {
364
+ const query = sessionId
365
+ ? `SELECT c.context_id, c.position, AVG(a.influence_score) as avg_influence
366
+ FROM context_provisions c
367
+ LEFT JOIN attention_signals a ON c.context_id = a.context_id
368
+ WHERE c.session_id = ?
369
+ GROUP BY c.context_id, c.position`
370
+ : `SELECT c.context_id, c.position, AVG(a.influence_score) as avg_influence
371
+ FROM context_provisions c
372
+ LEFT JOIN attention_signals a ON c.context_id = a.context_id
373
+ GROUP BY c.context_id, c.position`;
374
+ const rows = sessionId
375
+ ? this.db.prepare(query).all(sessionId)
376
+ : this.db.prepare(query).all();
377
+ return {
378
+ positions: rows.map(r => r.position),
379
+ influences: rows.map(r => r.avg_influence || 0),
380
+ contextIds: rows.map(r => r.context_id)
381
+ };
382
+ }
383
+ // ============================================
384
+ // Utilities
385
+ // ============================================
386
+ generateId() {
387
+ return createHash('sha256')
388
+ .update(`${Date.now()}-${Math.random()}`)
389
+ .digest('hex')
390
+ .substring(0, 16);
391
+ }
392
+ hashContent(content) {
393
+ return createHash('sha256')
394
+ .update(content)
395
+ .digest('hex')
396
+ .substring(0, 32);
397
+ }
398
+ estimateTokens(text) {
399
+ return Math.ceil(text.length / 4);
400
+ }
401
+ extractKeywords(text) {
402
+ // Simple keyword extraction - in production use NLP
403
+ return text
404
+ .toLowerCase()
405
+ .split(/\W+/)
406
+ .filter(word => word.length > 3)
407
+ .slice(0, 10);
408
+ }
409
+ countMentions(keywords, text) {
410
+ const lowerText = text.toLowerCase();
411
+ return keywords.reduce((count, keyword) => {
412
+ const regex = new RegExp(`\\b${keyword}\\b`, 'gi');
413
+ const matches = lowerText.match(regex);
414
+ return count + (matches ? matches.length : 0);
415
+ }, 0);
416
+ }
417
+ getContextContent(contextId) {
418
+ // Retrieve from main context store
419
+ // This would connect to your main SQLite/JSONL store
420
+ return null; // Placeholder
421
+ }
422
+ correlateWithActions(contextItem, actions) {
423
+ // Simple correlation - in production use more sophisticated analysis
424
+ const actionKeywords = actions.join(' ').toLowerCase();
425
+ const contextKeywords = this.extractKeywords(this.getContextContent(contextItem.context_id) || '');
426
+ const overlap = contextKeywords.filter(k => actionKeywords.includes(k)).length;
427
+ return Math.min(1.0, overlap / Math.max(1, contextKeywords.length));
428
+ }
429
+ calculateSimilarity(text1, text2) {
430
+ if (!text1)
431
+ return 0;
432
+ // Simple Jaccard similarity - in production use embeddings
433
+ const words1 = new Set(text1.toLowerCase().split(/\W+/));
434
+ const words2 = new Set(text2.toLowerCase().split(/\W+/));
435
+ const intersection = new Set([...words1].filter(w => words2.has(w)));
436
+ const union = new Set([...words1, ...words2]);
437
+ return intersection.size / union.size;
438
+ }
439
+ evaluateSuccess(response) {
440
+ // Simple heuristic - in production track actual outcomes
441
+ const successIndicators = ['fixed', 'solved', 'completed', 'done', 'working'];
442
+ const failureIndicators = ['error', 'failed', 'cannot', 'unable', 'problem'];
443
+ const lowerResponse = response.toLowerCase();
444
+ const successCount = successIndicators.filter(s => lowerResponse.includes(s)).length;
445
+ const failureCount = failureIndicators.filter(f => lowerResponse.includes(f)).length;
446
+ return successCount > failureCount;
447
+ }
448
+ }
449
+ // ============================================
450
+ // Provision Builder (Fluent API)
451
+ // ============================================
452
+ export class ProvisionBuilder {
453
+ tracker;
454
+ provisionId;
455
+ query;
456
+ contexts = [];
457
+ constructor(tracker, provisionId, query) {
458
+ this.tracker = tracker;
459
+ this.provisionId = provisionId;
460
+ this.query = query;
461
+ }
462
+ add(context) {
463
+ this.contexts.push(context);
464
+ return this;
465
+ }
466
+ addMany(contexts) {
467
+ this.contexts.push(...contexts);
468
+ return this;
469
+ }
470
+ async execute(handler) {
471
+ // Track provision
472
+ this.tracker.trackProvision(this.contexts, this.provisionId);
473
+ // Execute with tracking
474
+ const startTime = Date.now();
475
+ const response = await handler(this.contexts);
476
+ const latency = Date.now() - startTime;
477
+ // Track response
478
+ const responseId = this.tracker.trackResponse(this.provisionId, this.query, response);
479
+ return {
480
+ responseId,
481
+ response,
482
+ latency,
483
+ contextsUsed: this.contexts.length
484
+ };
485
+ }
486
+ }
487
+ export default AttentionTracker;
488
+ //# sourceMappingURL=attention-tracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attention-tracker.js","sourceRoot":"","sources":["../../../attention-scoring/src/attention-tracker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * MCP Integration with Attention-Based Importance Scoring
3
+ *
4
+ * Automatically tracks what context Claude actually uses
5
+ * and learns importance over time
6
+ */
7
+ import AttentionTracker from './attention-tracker';
8
+ export declare class SmartStackMemoryMCP {
9
+ private server;
10
+ private attentionTracker;
11
+ private teamContext;
12
+ private activeProvisions;
13
+ constructor(config: MCPConfig);
14
+ private setupHandlers;
15
+ private getSmartContext;
16
+ private enhanceWithAttention;
17
+ private setupLearningLoop;
18
+ private analyzePatterns;
19
+ private visualizeHeatmap;
20
+ private updateActiveContext;
21
+ private formatForClaude;
22
+ private getImportanceBar;
23
+ private groupByType;
24
+ private formatType;
25
+ private hashContext;
26
+ private estimateTokens;
27
+ private getInfluenceHistory;
28
+ private loadContext;
29
+ start(): Promise<void>;
30
+ }
31
+ export declare class AttentionDashboard {
32
+ private tracker;
33
+ constructor(tracker: AttentionTracker);
34
+ generateReport(): Promise<AttentionReport>;
35
+ private generateRecommendations;
36
+ }
37
+ interface MCPConfig {
38
+ projectId: string;
39
+ teamId: string;
40
+ userId: string;
41
+ }
42
+ interface AttentionReport {
43
+ summary: {
44
+ totalContexts: number;
45
+ avgImportance: number;
46
+ highInfluenceCount: number;
47
+ lastUpdated: number;
48
+ };
49
+ topContexts: any[];
50
+ alwaysUseful: any[];
51
+ neverUseful: any[];
52
+ heatmap: any;
53
+ recommendations: string[];
54
+ }
55
+ export {};
56
+ //# sourceMappingURL=mcp-integration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-integration.d.ts","sourceRoot":"","sources":["../../../attention-scoring/src/mcp-integration.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,gBAAiC,MAAM,qBAAqB,CAAC;AAOpE,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,gBAAgB,CAAkC;gBAE9C,MAAM,EAAE,SAAS;IAgC7B,OAAO,CAAC,aAAa;YAsCP,eAAe;YAsCf,oBAAoB;IAqElC,OAAO,CAAC,iBAAiB;YAeX,eAAe;IA+B7B,OAAO,CAAC,gBAAgB;IAoBxB,OAAO,CAAC,mBAAmB;IAkB3B,OAAO,CAAC,eAAe;IA8BvB,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,UAAU;IAWlB,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,cAAc;YAIR,mBAAmB;YAMnB,WAAW;IAUnB,KAAK;CAQZ;AAMD,qBAAa,kBAAkB;IACjB,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,gBAAgB;IAEvC,cAAc,IAAI,OAAO,CAAC,eAAe,CAAC;IA4BhD,OAAO,CAAC,uBAAuB;CAqBhC;AAMD,UAAU,SAAS;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAWD,UAAU,eAAe;IACvB,OAAO,EAAE;QACP,aAAa,EAAE,MAAM,CAAC;QACtB,aAAa,EAAE,MAAM,CAAC;QACtB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,WAAW,EAAE,GAAG,EAAE,CAAC;IACnB,YAAY,EAAE,GAAG,EAAE,CAAC;IACpB,WAAW,EAAE,GAAG,EAAE,CAAC;IACnB,OAAO,EAAE,GAAG,CAAC;IACb,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B"}