super-memory-pro 0.3.0 → 2.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 (56) hide show
  1. package/README.md +56 -2
  2. package/dist/config.d.ts.map +1 -1
  3. package/dist/config.js +7 -0
  4. package/dist/config.js.map +1 -1
  5. package/dist/db/connection.d.ts.map +1 -1
  6. package/dist/db/connection.js +86 -6
  7. package/dist/db/connection.js.map +1 -1
  8. package/dist/hooks/event-handler.d.ts.map +1 -1
  9. package/dist/hooks/event-handler.js +9 -0
  10. package/dist/hooks/event-handler.js.map +1 -1
  11. package/dist/hooks/message-handler.d.ts.map +1 -1
  12. package/dist/hooks/message-handler.js +3 -0
  13. package/dist/hooks/message-handler.js.map +1 -1
  14. package/dist/hooks/system-transform.d.ts +5 -12
  15. package/dist/hooks/system-transform.d.ts.map +1 -1
  16. package/dist/hooks/system-transform.js +43 -24
  17. package/dist/hooks/system-transform.js.map +1 -1
  18. package/dist/memory/embeddings.d.ts +22 -0
  19. package/dist/memory/embeddings.d.ts.map +1 -0
  20. package/dist/memory/embeddings.js +139 -0
  21. package/dist/memory/embeddings.js.map +1 -0
  22. package/dist/memory/extractor.d.ts.map +1 -1
  23. package/dist/memory/extractor.js +5 -1
  24. package/dist/memory/extractor.js.map +1 -1
  25. package/dist/memory/index.d.ts +13 -1
  26. package/dist/memory/index.d.ts.map +1 -1
  27. package/dist/memory/index.js +7 -1
  28. package/dist/memory/index.js.map +1 -1
  29. package/dist/memory/llm-extractor.d.ts +22 -0
  30. package/dist/memory/llm-extractor.d.ts.map +1 -0
  31. package/dist/memory/llm-extractor.js +117 -0
  32. package/dist/memory/llm-extractor.js.map +1 -0
  33. package/dist/memory/pattern-detector.d.ts +28 -0
  34. package/dist/memory/pattern-detector.d.ts.map +1 -0
  35. package/dist/memory/pattern-detector.js +221 -0
  36. package/dist/memory/pattern-detector.js.map +1 -0
  37. package/dist/memory/processor.d.ts +7 -1
  38. package/dist/memory/processor.d.ts.map +1 -1
  39. package/dist/memory/processor.js +112 -15
  40. package/dist/memory/processor.js.map +1 -1
  41. package/dist/memory/project-context.d.ts +24 -0
  42. package/dist/memory/project-context.d.ts.map +1 -0
  43. package/dist/memory/project-context.js +186 -0
  44. package/dist/memory/project-context.js.map +1 -0
  45. package/dist/memory/suggestions.d.ts +21 -0
  46. package/dist/memory/suggestions.d.ts.map +1 -0
  47. package/dist/memory/suggestions.js +205 -0
  48. package/dist/memory/suggestions.js.map +1 -0
  49. package/dist/memory/user-profile.d.ts +24 -0
  50. package/dist/memory/user-profile.d.ts.map +1 -0
  51. package/dist/memory/user-profile.js +220 -0
  52. package/dist/memory/user-profile.js.map +1 -0
  53. package/dist/types.d.ts +8 -0
  54. package/dist/types.d.ts.map +1 -1
  55. package/package.json +5 -5
  56. package/dist/db/migrations/migrations/001_initial.sql +0 -102
@@ -0,0 +1,221 @@
1
+ // ─── Pattern Detector ─────────────────────────────────────────────────────
2
+ // Detects patterns across sessions: recurring workflows, repeated errors,
3
+ // consistent preferences, and frequent technologies.
4
+ import { getPool } from '../db/connection.js';
5
+ // ─── Pattern Detection ───────────────────────────────────────────────────
6
+ /**
7
+ * Detect patterns across all sessions by analyzing stored memories.
8
+ */
9
+ export async function detectPatterns(options = {}) {
10
+ const { limit = 100, projectId, minFrequency = 2 } = options;
11
+ try {
12
+ const pool = getPool();
13
+ // Fetch recent memories for analysis
14
+ const result = await pool.query(`SELECT * FROM memories
15
+ WHERE ($1::text IS NULL OR project_id = $1)
16
+ ORDER BY created_at DESC
17
+ LIMIT $2`, [projectId ?? null, limit]);
18
+ const memories = result.rows;
19
+ // Analyze patterns
20
+ const techPatterns = detectTechnologyPatterns(memories, minFrequency);
21
+ const workflowPatterns = detectWorkflowPatterns(memories, minFrequency);
22
+ const preferencePatterns = detectPreferencePatterns(memories, minFrequency);
23
+ const decisionPatterns = detectDecisionPatterns(memories);
24
+ // Combine all patterns
25
+ const allPatterns = [
26
+ ...techPatterns,
27
+ ...workflowPatterns,
28
+ ...preferencePatterns,
29
+ ...decisionPatterns,
30
+ ];
31
+ // Sort by frequency and confidence
32
+ allPatterns.sort((a, b) => b.frequency * b.confidence - a.frequency * a.confidence);
33
+ // Generate summary
34
+ const summary = generatePatternSummary(allPatterns);
35
+ return {
36
+ patterns: allPatterns.slice(0, 20),
37
+ topTechnologies: getTopTechnologies(memories),
38
+ recurringWorkflows: workflowPatterns.map((p) => p.pattern).slice(0, 5),
39
+ consistentPreferences: preferencePatterns.map((p) => p.pattern).slice(0, 5),
40
+ recentDecisions: decisionPatterns.map((p) => p.example).slice(0, 5),
41
+ summary,
42
+ };
43
+ }
44
+ catch (err) {
45
+ console.error('[UltraMemory] Pattern detection failed:', err);
46
+ return {
47
+ patterns: [],
48
+ topTechnologies: [],
49
+ recurringWorkflows: [],
50
+ consistentPreferences: [],
51
+ recentDecisions: [],
52
+ summary: 'Pattern detection unavailable',
53
+ };
54
+ }
55
+ }
56
+ // ─── Technology Patterns ─────────────────────────────────────────────────
57
+ function detectTechnologyPatterns(memories, minFrequency) {
58
+ const techCounts = new Map();
59
+ for (const mem of memories) {
60
+ if (mem.memory_type !== 'tech_stack')
61
+ continue;
62
+ const tech = mem.metadata?.technology;
63
+ if (!tech)
64
+ continue;
65
+ const existing = techCounts.get(tech) || { count: 0, sessions: new Set(), example: mem.content };
66
+ existing.count++;
67
+ if (mem.session_id)
68
+ existing.sessions.add(mem.session_id);
69
+ techCounts.set(tech, existing);
70
+ }
71
+ const patterns = [];
72
+ for (const [tech, data] of techCounts) {
73
+ if (data.count >= minFrequency) {
74
+ patterns.push({
75
+ type: 'technology',
76
+ pattern: tech,
77
+ frequency: data.count,
78
+ sessions: [...data.sessions],
79
+ confidence: Math.min(1, data.count / 10),
80
+ example: data.example,
81
+ });
82
+ }
83
+ }
84
+ return patterns;
85
+ }
86
+ // ─── Workflow Patterns ───────────────────────────────────────────────────
87
+ function detectWorkflowPatterns(memories, minFrequency) {
88
+ const workflowCounts = new Map();
89
+ for (const mem of memories) {
90
+ if (mem.memory_type !== 'pattern')
91
+ continue;
92
+ // Normalize workflow pattern
93
+ const normalized = normalizeWorkflow(mem.content);
94
+ if (!normalized || normalized.length < 10)
95
+ continue;
96
+ const existing = workflowCounts.get(normalized) || {
97
+ count: 0,
98
+ sessions: new Set(),
99
+ example: mem.content,
100
+ };
101
+ existing.count++;
102
+ if (mem.session_id)
103
+ existing.sessions.add(mem.session_id);
104
+ workflowCounts.set(normalized, existing);
105
+ }
106
+ const patterns = [];
107
+ for (const [workflow, data] of workflowCounts) {
108
+ if (data.count >= minFrequency) {
109
+ patterns.push({
110
+ type: 'workflow',
111
+ pattern: workflow,
112
+ frequency: data.count,
113
+ sessions: [...data.sessions],
114
+ confidence: Math.min(1, data.count / 8),
115
+ example: data.example,
116
+ });
117
+ }
118
+ }
119
+ return patterns;
120
+ }
121
+ // ─── Preference Patterns ─────────────────────────────────────────────────
122
+ function detectPreferencePatterns(memories, minFrequency) {
123
+ const prefCounts = new Map();
124
+ for (const mem of memories) {
125
+ if (mem.memory_type !== 'user_profile')
126
+ continue;
127
+ const normalized = normalizePreference(mem.content);
128
+ if (!normalized || normalized.length < 5)
129
+ continue;
130
+ const existing = prefCounts.get(normalized) || {
131
+ count: 0,
132
+ sessions: new Set(),
133
+ example: mem.content,
134
+ };
135
+ existing.count++;
136
+ if (mem.session_id)
137
+ existing.sessions.add(mem.session_id);
138
+ prefCounts.set(normalized, existing);
139
+ }
140
+ const patterns = [];
141
+ for (const [pref, data] of prefCounts) {
142
+ if (data.count >= minFrequency) {
143
+ patterns.push({
144
+ type: 'preference',
145
+ pattern: pref,
146
+ frequency: data.count,
147
+ sessions: [...data.sessions],
148
+ confidence: Math.min(1, data.count / 6),
149
+ example: data.example,
150
+ });
151
+ }
152
+ }
153
+ return patterns;
154
+ }
155
+ // ─── Decision Patterns ───────────────────────────────────────────────────
156
+ function detectDecisionPatterns(memories) {
157
+ const recentDecisions = memories
158
+ .filter((m) => m.memory_type === 'decision')
159
+ .slice(0, 10)
160
+ .map((m) => ({
161
+ type: 'decision',
162
+ pattern: m.content,
163
+ frequency: 1,
164
+ sessions: m.session_id ? [m.session_id] : [],
165
+ confidence: 0.8,
166
+ example: m.content,
167
+ }));
168
+ return recentDecisions;
169
+ }
170
+ // ─── Helpers ──────────────────────────────────────────────────────────────
171
+ function normalizeWorkflow(text) {
172
+ return text
173
+ .toLowerCase()
174
+ .replace(/\b(every\s+time|whenever|always|usually|typically|normally)\b/g, '')
175
+ .replace(/\s+/g, ' ')
176
+ .trim()
177
+ .slice(0, 100);
178
+ }
179
+ function normalizePreference(text) {
180
+ return text
181
+ .toLowerCase()
182
+ .replace(/\b(i\s+prefer|i\s+like|i\s+love|i\s+enjoy|i\s+dislike|i\s+hate)\b/g, '')
183
+ .replace(/\s+/g, ' ')
184
+ .trim()
185
+ .slice(0, 80);
186
+ }
187
+ function getTopTechnologies(memories) {
188
+ const techCounts = new Map();
189
+ for (const mem of memories) {
190
+ if (mem.memory_type !== 'tech_stack')
191
+ continue;
192
+ const tech = mem.metadata?.technology;
193
+ if (tech) {
194
+ techCounts.set(tech, (techCounts.get(tech) || 0) + 1);
195
+ }
196
+ }
197
+ return [...techCounts.entries()]
198
+ .map(([name, count]) => ({ name, count }))
199
+ .sort((a, b) => b.count - a.count)
200
+ .slice(0, 10);
201
+ }
202
+ function generatePatternSummary(patterns) {
203
+ if (patterns.length === 0) {
204
+ return 'No significant patterns detected yet.';
205
+ }
206
+ const techs = patterns.filter((p) => p.type === 'technology');
207
+ const workflows = patterns.filter((p) => p.type === 'workflow');
208
+ const prefs = patterns.filter((p) => p.type === 'preference');
209
+ const parts = [];
210
+ if (techs.length > 0) {
211
+ parts.push(`Frequently uses: ${techs.slice(0, 3).map((p) => p.pattern).join(', ')}`);
212
+ }
213
+ if (workflows.length > 0 && workflows[0]) {
214
+ parts.push(`Common workflow: ${workflows[0].pattern}`);
215
+ }
216
+ if (prefs.length > 0) {
217
+ parts.push(`Prefers: ${prefs.slice(0, 2).map((p) => p.pattern).join(', ')}`);
218
+ }
219
+ return parts.join('. ') + '.';
220
+ }
221
+ //# sourceMappingURL=pattern-detector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pattern-detector.js","sourceRoot":"","sources":["../../src/memory/pattern-detector.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,10 @@
1
- import type { MemoryRecord } from '../types.js';
1
+ import type { MemoryRecord, PluginConfig } from '../types.js';
2
2
  import { type SearchOptions } from './search.js';
3
3
  export interface ProcessMessageMetadata {
4
4
  sessionId?: string;
5
5
  projectId?: string;
6
6
  source?: string;
7
+ config?: PluginConfig;
7
8
  }
8
9
  /**
9
10
  * Process a message: extract patterns → classify → store memories.
@@ -47,4 +48,9 @@ export interface ContextQueryOptions {
47
48
  * @returns - Formatted context string (empty if nothing relevant)
48
49
  */
49
50
  export declare function getContextForQuery(query: string, options?: ContextQueryOptions): Promise<string>;
51
+ /**
52
+ * Summarize a session and store it as a memory.
53
+ * Uses LLM if available, otherwise creates a basic summary.
54
+ */
55
+ export declare function summarizeSession(sessionId: string, messages: string[], config?: PluginConfig): Promise<string>;
50
56
  //# sourceMappingURL=processor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"processor.d.ts","sourceRoot":"","sources":["../../src/memory/processor.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAgB,YAAY,EAAE,MAAM,aAAa,CAAC;AAS9D,OAAO,EAAmD,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAQlG,MAAM,WAAW,sBAAsB;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,sBAAsB,GAC/B,OAAO,CAAC,YAAY,EAAE,CAAC,CA+GzB;AAID,MAAM,WAAW,mBAAmB;IAClC,kCAAkC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0DAA0D;IAC1D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sCAAsC;IACtC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;CAChC;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,MAAM,CAAC,CAsBjB"}
1
+ {"version":3,"file":"processor.d.ts","sourceRoot":"","sources":["../../src/memory/processor.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAgB,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAU5E,OAAO,EAAmD,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAQlG,MAAM,WAAW,sBAAsB;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,sBAAsB,GAC/B,OAAO,CAAC,YAAY,EAAE,CAAC,CAsKzB;AAID,MAAM,WAAW,mBAAmB;IAClC,kCAAkC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0DAA0D;IAC1D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sCAAsC;IACtC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;CAChC;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,MAAM,CAAC,CAsBjB;AA8CD;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAAE,EAClB,MAAM,CAAC,EAAE,YAAY,GACpB,OAAO,CAAC,MAAM,CAAC,CA0CjB"}
@@ -3,7 +3,8 @@
3
3
  // This is the primary entry point for the memory system.
4
4
  import { ensureDbReady } from '../db/connection.js';
5
5
  import { extractTechStack, extractDecisions, extractUserPreferences, extractPatterns, classifyContent, } from './extractor.js';
6
- import { storeMemories } from './store.js';
6
+ import { extractWithLLM, summarizeWithLLM } from './llm-extractor.js';
7
+ import { storeMemory, storeMemories } from './store.js';
7
8
  import { searchRelevantMemories, formatMemoriesForPrompt } from './search.js';
8
9
  // ─── Constants ─────────────────────────────────────────────────────────────
9
10
  const DEFAULT_MAX_INJECTIONS = 5;
@@ -30,24 +31,44 @@ export async function processMessage(content, metadata) {
30
31
  if (!content || content.trim().length === 0) {
31
32
  return [];
32
33
  }
33
- const { sessionId, projectId, source } = metadata;
34
+ const { sessionId, projectId, source, config } = metadata;
34
35
  try {
35
36
  // Lazy-init the database (fire-and-forget — errors are caught below).
36
37
  await ensureDbReady();
37
- // Step 1: Run all extractors
38
+ // Step 1: Run extractors (LLM + regex fallback)
39
+ let llmContext = null;
40
+ // Try LLM extraction first if enabled
41
+ if (config?.llm.enabled && config.llm.apiKey) {
42
+ try {
43
+ llmContext = await extractWithLLM(content, config);
44
+ console.log(`[UltraMemory] LLM extracted: ${llmContext.technologies.length} techs, ${llmContext.decisions.length} decisions`);
45
+ }
46
+ catch (err) {
47
+ console.error('[UltraMemory] LLM extraction failed, falling back to regex:', err);
48
+ llmContext = null;
49
+ }
50
+ }
51
+ // Run regex extractors as fallback/supplement
38
52
  const [techStack, decisions, preferences, patterns] = await Promise.all([
39
53
  safeExtract(() => extractTechStack(content)),
40
54
  safeExtract(() => extractDecisions(content)),
41
55
  safeExtract(() => extractUserPreferences(content)),
42
56
  safeExtract(() => extractPatterns(content)),
43
57
  ]);
58
+ // Merge LLM results with regex results
59
+ const allTechs = [...new Set([...techStack, ...(llmContext?.technologies ?? [])])];
60
+ const allDecisions = [
61
+ ...decisions,
62
+ ...(llmContext?.decisions ?? []),
63
+ ];
64
+ const allPreferences = [...new Set([...preferences, ...(llmContext?.preferences ?? [])])];
44
65
  // Step 2: Classify content
45
66
  const memoryType = classifyContent(content);
46
67
  // Step 3: Build memory payloads
47
68
  const memoryPayloads = [];
48
69
  // 3a. Tech stack
49
- if (techStack.length > 0) {
50
- for (const tech of techStack) {
70
+ if (allTechs.length > 0) {
71
+ for (const tech of allTechs) {
51
72
  memoryPayloads.push({
52
73
  memory_type: 'tech_stack',
53
74
  project_id: projectId ?? null,
@@ -56,12 +77,12 @@ export async function processMessage(content, metadata) {
56
77
  content: `Project uses ${tech}`,
57
78
  importance: 4,
58
79
  source: source ?? 'processor',
59
- metadata: { technology: tech, extracted: true },
80
+ metadata: { technology: tech, extracted: true, llm: llmContext !== null },
60
81
  });
61
82
  }
62
83
  }
63
84
  // 3b. Decisions
64
- for (const d of decisions) {
85
+ for (const d of allDecisions) {
65
86
  memoryPayloads.push({
66
87
  memory_type: 'decision',
67
88
  project_id: projectId ?? null,
@@ -70,11 +91,11 @@ export async function processMessage(content, metadata) {
70
91
  content: d.decision,
71
92
  importance: 4,
72
93
  source: source ?? 'processor',
73
- metadata: { context: d.context, extracted: true },
94
+ metadata: { context: d.context, extracted: true, llm: llmContext !== null },
74
95
  });
75
96
  }
76
97
  // 3c. Preferences
77
- for (const pref of preferences) {
98
+ for (const pref of allPreferences) {
78
99
  memoryPayloads.push({
79
100
  memory_type: 'user_profile',
80
101
  project_id: projectId ?? null,
@@ -83,7 +104,7 @@ export async function processMessage(content, metadata) {
83
104
  content: pref,
84
105
  importance: 3,
85
106
  source: source ?? 'processor',
86
- metadata: { extracted: true },
107
+ metadata: { extracted: true, llm: llmContext !== null },
87
108
  });
88
109
  }
89
110
  // 3d. Patterns
@@ -99,7 +120,37 @@ export async function processMessage(content, metadata) {
99
120
  metadata: { extracted: true },
100
121
  });
101
122
  }
102
- // 3e. Classified content store the whole message
123
+ // 3e. Project context from LLM
124
+ if (llmContext?.projectContext && llmContext.projectContext.length > 0) {
125
+ for (const ctx of llmContext.projectContext) {
126
+ memoryPayloads.push({
127
+ memory_type: 'project_context',
128
+ project_id: projectId ?? null,
129
+ session_id: sessionId ?? null,
130
+ key: `context:${normalizeKeyFragment(ctx)}`,
131
+ content: ctx,
132
+ importance: 3,
133
+ source: source ?? 'processor',
134
+ metadata: { extracted: true, llm: true },
135
+ });
136
+ }
137
+ }
138
+ // 3f. Key facts from LLM
139
+ if (llmContext?.keyFacts && llmContext.keyFacts.length > 0) {
140
+ for (const fact of llmContext.keyFacts) {
141
+ memoryPayloads.push({
142
+ memory_type: 'explicit',
143
+ project_id: projectId ?? null,
144
+ session_id: sessionId ?? null,
145
+ key: `fact:${normalizeKeyFragment(fact)}`,
146
+ content: fact,
147
+ importance: 3,
148
+ source: source ?? 'processor',
149
+ metadata: { extracted: true, llm: true },
150
+ });
151
+ }
152
+ }
153
+ // 3g. Classified content — store the whole message
103
154
  if (content.trim().length > 10) {
104
155
  memoryPayloads.push({
105
156
  memory_type: memoryType,
@@ -107,14 +158,15 @@ export async function processMessage(content, metadata) {
107
158
  session_id: sessionId ?? null,
108
159
  key: `msg:${memoryType}:${createContentHash(content)}`,
109
160
  content: content.trim(),
110
- importance: 3,
161
+ importance: 2,
111
162
  source: source ?? 'processor',
112
163
  metadata: {
113
164
  classified_as: memoryType,
114
- tech_stack: techStack,
115
- decisions_count: decisions.length,
116
- preferences_count: preferences.length,
165
+ tech_stack: allTechs,
166
+ decisions_count: allDecisions.length,
167
+ preferences_count: allPreferences.length,
117
168
  patterns_count: patterns.length,
169
+ llm_used: llmContext !== null,
118
170
  },
119
171
  });
120
172
  }
@@ -199,4 +251,49 @@ function normalizeKeyFragment(text) {
199
251
  .replace(/^_+|_+$/g, '')
200
252
  .slice(0, 60);
201
253
  }
254
+ // ─── Session Summarization ───────────────────────────────────────────────
255
+ /**
256
+ * Summarize a session and store it as a memory.
257
+ * Uses LLM if available, otherwise creates a basic summary.
258
+ */
259
+ export async function summarizeSession(sessionId, messages, config) {
260
+ if (!messages.length) {
261
+ return '';
262
+ }
263
+ let summary = '';
264
+ // Try LLM summarization if enabled
265
+ if (config?.llm.enabled && config.llm.apiKey && config.llm.summarizeSessions) {
266
+ try {
267
+ summary = await summarizeWithLLM(messages, config);
268
+ console.log(`[UltraMemory] LLM generated summary for session ${sessionId}`);
269
+ }
270
+ catch (err) {
271
+ console.error('[UltraMemory] LLM summarization failed:', err);
272
+ }
273
+ }
274
+ // Fallback: create basic summary from message count
275
+ if (!summary) {
276
+ summary = `Session with ${messages.length} messages`;
277
+ }
278
+ // Store summary as session memory
279
+ try {
280
+ await storeMemory({
281
+ memory_type: 'session',
282
+ key: `session:${sessionId}:summary`,
283
+ content: summary,
284
+ importance: 4,
285
+ source: 'processor',
286
+ metadata: {
287
+ sessionId,
288
+ messageCount: messages.length,
289
+ llmSummarized: config?.llm.enabled && config.llm.apiKey ? true : false,
290
+ },
291
+ });
292
+ console.log(`[UltraMemory] Session ${sessionId} summary stored`);
293
+ }
294
+ catch (err) {
295
+ console.error(`[UltraMemory] Failed to store session summary:`, err);
296
+ }
297
+ return summary;
298
+ }
202
299
  //# sourceMappingURL=processor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"processor.js","sourceRoot":"","sources":["../../src/memory/processor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"processor.js","sourceRoot":"","sources":["../../src/memory/processor.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,8DAA8D;AAC9D,yDAAyD;AAEzD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,sBAAsB,EACtB,eAAe,EACf,eAAe,GAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAyB,MAAM,oBAAoB,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,aAAa,EAAkB,MAAM,YAAY,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAsB,MAAM,aAAa,CAAC;AAElG,8EAA8E;AAE9E,MAAM,sBAAsB,GAAG,CAAC,CAAC;AAWjC;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAAe,EACf,QAAgC;IAEhC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5C,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;IAE1D,IAAI,CAAC;QACH,sEAAsE;QACtE,MAAM,aAAa,EAAE,CAAC;QAEtB,gDAAgD;QAChD,IAAI,UAAU,GAA4B,IAAI,CAAC;QAE/C,sCAAsC;QACtC,IAAI,MAAM,EAAE,GAAG,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;YAC7C,IAAI,CAAC;gBACH,UAAU,GAAG,MAAM,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBACnD,OAAO,CAAC,GAAG,CAAC,gCAAgC,UAAU,CAAC,YAAY,CAAC,MAAM,WAAW,UAAU,CAAC,SAAS,CAAC,MAAM,YAAY,CAAC,CAAC;YAChI,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,6DAA6D,EAAE,GAAG,CAAC,CAAC;gBAClF,UAAU,GAAG,IAAI,CAAC;YACpB,CAAC;QACH,CAAC;QAED,8CAA8C;QAC9C,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACtE,WAAW,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;YAC5C,WAAW,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;YAC5C,WAAW,CAAC,GAAG,EAAE,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;YAClD,WAAW,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;SAC5C,CAAC,CAAC;QAEH,uCAAuC;QACvC,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,SAAS,EAAE,GAAG,CAAC,UAAU,EAAE,YAAY,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACnF,MAAM,YAAY,GAAG;YACnB,GAAG,SAAS;YACZ,GAAG,CAAC,UAAU,EAAE,SAAS,IAAI,EAAE,CAAC;SACjC,CAAC;QACF,MAAM,cAAc,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,WAAW,EAAE,GAAG,CAAC,UAAU,EAAE,WAAW,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAE1F,2BAA2B;QAC3B,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;QAE5C,gCAAgC;QAChC,MAAM,cAAc,GAAmB,EAAE,CAAC;QAE1C,iBAAiB;QACjB,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;gBAC5B,cAAc,CAAC,IAAI,CAAC;oBAClB,WAAW,EAAE,YAAY;oBACzB,UAAU,EAAE,SAAS,IAAI,IAAI;oBAC7B,UAAU,EAAE,SAAS,IAAI,IAAI;oBAC7B,GAAG,EAAE,QAAQ,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC,EAAE;oBAC9D,OAAO,EAAE,gBAAgB,IAAI,EAAE;oBAC/B,UAAU,EAAE,CAAC;oBACb,MAAM,EAAE,MAAM,IAAI,WAAW;oBAC7B,QAAQ,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,KAAK,IAAI,EAAE;iBAC1E,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,gBAAgB;QAChB,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;YAC7B,cAAc,CAAC,IAAI,CAAC;gBAClB,WAAW,EAAE,UAAU;gBACvB,UAAU,EAAE,SAAS,IAAI,IAAI;gBAC7B,UAAU,EAAE,SAAS,IAAI,IAAI;gBAC7B,GAAG,EAAE,YAAY,oBAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE;gBACnD,OAAO,EAAE,CAAC,CAAC,QAAQ;gBACnB,UAAU,EAAE,CAAC;gBACb,MAAM,EAAE,MAAM,IAAI,WAAW;gBAC7B,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,KAAK,IAAI,EAAE;aAC5E,CAAC,CAAC;QACL,CAAC;QAED,kBAAkB;QAClB,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;YAClC,cAAc,CAAC,IAAI,CAAC;gBAClB,WAAW,EAAE,cAAc;gBAC3B,UAAU,EAAE,SAAS,IAAI,IAAI;gBAC7B,UAAU,EAAE,SAAS,IAAI,IAAI;gBAC7B,GAAG,EAAE,cAAc,oBAAoB,CAAC,IAAI,CAAC,EAAE;gBAC/C,OAAO,EAAE,IAAI;gBACb,UAAU,EAAE,CAAC;gBACb,MAAM,EAAE,MAAM,IAAI,WAAW;gBAC7B,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,KAAK,IAAI,EAAE;aACxD,CAAC,CAAC;QACL,CAAC;QAED,eAAe;QACf,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,cAAc,CAAC,IAAI,CAAC;gBAClB,WAAW,EAAE,SAAS;gBACtB,UAAU,EAAE,SAAS,IAAI,IAAI;gBAC7B,UAAU,EAAE,SAAS,IAAI,IAAI;gBAC7B,GAAG,EAAE,WAAW,oBAAoB,CAAC,GAAG,CAAC,EAAE;gBAC3C,OAAO,EAAE,GAAG;gBACZ,UAAU,EAAE,CAAC;gBACb,MAAM,EAAE,MAAM,IAAI,WAAW;gBAC7B,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;aAC9B,CAAC,CAAC;QACL,CAAC;QAED,+BAA+B;QAC/B,IAAI,UAAU,EAAE,cAAc,IAAI,UAAU,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvE,KAAK,MAAM,GAAG,IAAI,UAAU,CAAC,cAAc,EAAE,CAAC;gBAC5C,cAAc,CAAC,IAAI,CAAC;oBAClB,WAAW,EAAE,iBAAiB;oBAC9B,UAAU,EAAE,SAAS,IAAI,IAAI;oBAC7B,UAAU,EAAE,SAAS,IAAI,IAAI;oBAC7B,GAAG,EAAE,WAAW,oBAAoB,CAAC,GAAG,CAAC,EAAE;oBAC3C,OAAO,EAAE,GAAG;oBACZ,UAAU,EAAE,CAAC;oBACb,MAAM,EAAE,MAAM,IAAI,WAAW;oBAC7B,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;iBACzC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,yBAAyB;QACzB,IAAI,UAAU,EAAE,QAAQ,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3D,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;gBACvC,cAAc,CAAC,IAAI,CAAC;oBAClB,WAAW,EAAE,UAAU;oBACvB,UAAU,EAAE,SAAS,IAAI,IAAI;oBAC7B,UAAU,EAAE,SAAS,IAAI,IAAI;oBAC7B,GAAG,EAAE,QAAQ,oBAAoB,CAAC,IAAI,CAAC,EAAE;oBACzC,OAAO,EAAE,IAAI;oBACb,UAAU,EAAE,CAAC;oBACb,MAAM,EAAE,MAAM,IAAI,WAAW;oBAC7B,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;iBACzC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,mDAAmD;QACnD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;YAC/B,cAAc,CAAC,IAAI,CAAC;gBAClB,WAAW,EAAE,UAAU;gBACvB,UAAU,EAAE,SAAS,IAAI,IAAI;gBAC7B,UAAU,EAAE,SAAS,IAAI,IAAI;gBAC7B,GAAG,EAAE,OAAO,UAAU,IAAI,iBAAiB,CAAC,OAAO,CAAC,EAAE;gBACtD,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE;gBACvB,UAAU,EAAE,CAAC;gBACb,MAAM,EAAE,MAAM,IAAI,WAAW;gBAC7B,QAAQ,EAAE;oBACR,aAAa,EAAE,UAAU;oBACzB,UAAU,EAAE,QAAQ;oBACpB,eAAe,EAAE,YAAY,CAAC,MAAM;oBACpC,iBAAiB,EAAE,cAAc,CAAC,MAAM;oBACxC,cAAc,EAAE,QAAQ,CAAC,MAAM;oBAC/B,QAAQ,EAAE,UAAU,KAAK,IAAI;iBAC9B;aACF,CAAC,CAAC;QACL,CAAC;QAED,+CAA+C;QAC/C,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAE3C,OAAO,aAAa,CAAC,cAAc,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,gDAAgD,EAAE,GAAG,CAAC,CAAC;QACrE,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAeD;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,KAAa,EACb,OAA6B;IAE7B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,aAAa,GAAG,OAAO,EAAE,aAAa,IAAI,sBAAsB,CAAC;IAEvE,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,sBAAsB,CAAC,KAAK,EAAE;YAClD,KAAK,EAAE,OAAO,EAAE,KAAK;YACrB,SAAS,EAAE,OAAO,EAAE,SAAS;YAC7B,KAAK,EAAE,aAAa;YACpB,aAAa,EAAE,OAAO,EAAE,aAAa;SACtC,CAAC,CAAC;QAEH,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAEpC,OAAO,uBAAuB,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,iDAAiD,EAAE,GAAG,CAAC,CAAC;QACtE,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,8EAA8E;AAE9E;;GAEG;AACH,SAAS,WAAW,CAAI,EAAW;IACjC,IAAI,CAAC;QACH,OAAO,EAAE,EAAE,CAAC;IACd,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,GAAG,CAAC,CAAC;QACtD,OAAO,EAAkB,CAAC;IAC5B,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,iBAAiB,CAAC,OAAe;IACxC,IAAI,IAAI,GAAG,IAAI,CAAC;IAChB,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;IAChD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC;IACtE,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACrC,CAAC;AAED;;;;GAIG;AACH,SAAS,oBAAoB,CAAC,IAAY;IACxC,OAAO,IAAI;SACR,WAAW,EAAE;SACb,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC;SAC5B,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;SACpB,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACvB,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,4EAA4E;AAE5E;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,SAAiB,EACjB,QAAkB,EAClB,MAAqB;IAErB,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QACrB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,OAAO,GAAG,EAAE,CAAC;IAEjB,mCAAmC;IACnC,IAAI,MAAM,EAAE,GAAG,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;QAC7E,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,mDAAmD,SAAS,EAAE,CAAC,CAAC;QAC9E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,GAAG,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAED,oDAAoD;IACpD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,GAAG,gBAAgB,QAAQ,CAAC,MAAM,WAAW,CAAC;IACvD,CAAC;IAED,kCAAkC;IAClC,IAAI,CAAC;QACH,MAAM,WAAW,CAAC;YAChB,WAAW,EAAE,SAAS;YACtB,GAAG,EAAE,WAAW,SAAS,UAAU;YACnC,OAAO,EAAE,OAAO;YAChB,UAAU,EAAE,CAAC;YACb,MAAM,EAAE,WAAW;YACnB,QAAQ,EAAE;gBACR,SAAS;gBACT,YAAY,EAAE,QAAQ,CAAC,MAAM;gBAC7B,aAAa,EAAE,MAAM,EAAE,GAAG,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK;aACvE;SACF,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,yBAAyB,SAAS,iBAAiB,CAAC,CAAC;IACnE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,gDAAgD,EAAE,GAAG,CAAC,CAAC;IACvE,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,24 @@
1
+ export interface ProjectContext {
2
+ name: string;
3
+ techStack: string[];
4
+ architecture: string;
5
+ conventions: string[];
6
+ recentChanges: string[];
7
+ activeBranches: string[];
8
+ lastUpdated: string;
9
+ }
10
+ export interface ProjectInsight {
11
+ category: string;
12
+ insight: string;
13
+ confidence: number;
14
+ recommendations: string[];
15
+ }
16
+ /**
17
+ * Build or update project context from stored memories and project info.
18
+ */
19
+ export declare function buildProjectContext(projectId: string): Promise<ProjectContext>;
20
+ /**
21
+ * Get project insights with recommendations.
22
+ */
23
+ export declare function getProjectInsights(projectId: string): Promise<ProjectInsight[]>;
24
+ //# sourceMappingURL=project-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-context.d.ts","sourceRoot":"","sources":["../../src/memory/project-context.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAID;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,cAAc,CAAC,CAuCzB;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,cAAc,EAAE,CAAC,CA+D3B"}