super-memory-pro 0.3.1 → 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 (52) 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/hooks/event-handler.d.ts.map +1 -1
  6. package/dist/hooks/event-handler.js +9 -0
  7. package/dist/hooks/event-handler.js.map +1 -1
  8. package/dist/hooks/message-handler.d.ts.map +1 -1
  9. package/dist/hooks/message-handler.js +3 -0
  10. package/dist/hooks/message-handler.js.map +1 -1
  11. package/dist/hooks/system-transform.d.ts +5 -12
  12. package/dist/hooks/system-transform.d.ts.map +1 -1
  13. package/dist/hooks/system-transform.js +43 -24
  14. package/dist/hooks/system-transform.js.map +1 -1
  15. package/dist/memory/embeddings.d.ts +22 -0
  16. package/dist/memory/embeddings.d.ts.map +1 -0
  17. package/dist/memory/embeddings.js +139 -0
  18. package/dist/memory/embeddings.js.map +1 -0
  19. package/dist/memory/extractor.d.ts.map +1 -1
  20. package/dist/memory/extractor.js +5 -1
  21. package/dist/memory/extractor.js.map +1 -1
  22. package/dist/memory/index.d.ts +13 -1
  23. package/dist/memory/index.d.ts.map +1 -1
  24. package/dist/memory/index.js +7 -1
  25. package/dist/memory/index.js.map +1 -1
  26. package/dist/memory/llm-extractor.d.ts +22 -0
  27. package/dist/memory/llm-extractor.d.ts.map +1 -0
  28. package/dist/memory/llm-extractor.js +117 -0
  29. package/dist/memory/llm-extractor.js.map +1 -0
  30. package/dist/memory/pattern-detector.d.ts +28 -0
  31. package/dist/memory/pattern-detector.d.ts.map +1 -0
  32. package/dist/memory/pattern-detector.js +221 -0
  33. package/dist/memory/pattern-detector.js.map +1 -0
  34. package/dist/memory/processor.d.ts +7 -1
  35. package/dist/memory/processor.d.ts.map +1 -1
  36. package/dist/memory/processor.js +112 -15
  37. package/dist/memory/processor.js.map +1 -1
  38. package/dist/memory/project-context.d.ts +24 -0
  39. package/dist/memory/project-context.d.ts.map +1 -0
  40. package/dist/memory/project-context.js +186 -0
  41. package/dist/memory/project-context.js.map +1 -0
  42. package/dist/memory/suggestions.d.ts +21 -0
  43. package/dist/memory/suggestions.d.ts.map +1 -0
  44. package/dist/memory/suggestions.js +205 -0
  45. package/dist/memory/suggestions.js.map +1 -0
  46. package/dist/memory/user-profile.d.ts +24 -0
  47. package/dist/memory/user-profile.d.ts.map +1 -0
  48. package/dist/memory/user-profile.js +220 -0
  49. package/dist/memory/user-profile.js.map +1 -0
  50. package/dist/types.d.ts +8 -0
  51. package/dist/types.d.ts.map +1 -1
  52. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,sBAAsB,EACtB,eAAe,EACf,eAAe,GAChB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,WAAW,EACX,aAAa,EACb,cAAc,GACf,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,aAAa,CAAC;AAErB,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,EACL,cAAc,EACd,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AAExB,YAAY,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,sBAAsB,EACtB,eAAe,EACf,eAAe,GAChB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,cAAc,EACd,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAE5B,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,OAAO,EACL,WAAW,EACX,aAAa,EACb,cAAc,GACf,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,aAAa,CAAC;AAErB,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AAExB,YAAY,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAElF,OAAO,EACL,oBAAoB,EACpB,cAAc,GACf,MAAM,iBAAiB,CAAC;AAEzB,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,OAAO,EACL,cAAc,GACf,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE9E,OAAO,EACL,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAErE,OAAO,EACL,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAE9B,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3E,OAAO,EACL,cAAc,EACd,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1,7 +1,13 @@
1
1
  // ─── Memory Module ─────────────────────────────────────────────────────────
2
2
  // Barrel export for the Ultra Memory processor module.
3
3
  export { extractTechStack, extractDecisions, extractUserPreferences, extractPatterns, classifyContent, } from './extractor.js';
4
+ export { extractWithLLM, summarizeWithLLM, } from './llm-extractor.js';
4
5
  export { storeMemory, storeMemories, storeTechStack, } from './store.js';
5
6
  export { searchRelevantMemories, formatMemoriesForPrompt, } from './search.js';
6
- export { processMessage, getContextForQuery, } from './processor.js';
7
+ export { processMessage, getContextForQuery, summarizeSession, } from './processor.js';
8
+ export { searchWithEmbeddings, storeEmbedding, } from './embeddings.js';
9
+ export { detectPatterns, } from './pattern-detector.js';
10
+ export { buildUserProfile, getProfileInsights, } from './user-profile.js';
11
+ export { buildProjectContext, getProjectInsights, } from './project-context.js';
12
+ export { getSuggestions, getQuickSuggestions, } from './suggestions.js';
7
13
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,uDAAuD;AAEvD,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,sBAAsB,EACtB,eAAe,EACf,eAAe,GAChB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,WAAW,EACX,aAAa,EACb,cAAc,GACf,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,aAAa,CAAC;AAIrB,OAAO,EACL,cAAc,EACd,kBAAkB,GACnB,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,uDAAuD;AAEvD,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,sBAAsB,EACtB,eAAe,EACf,eAAe,GAChB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,cAAc,EACd,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EACL,WAAW,EACX,aAAa,EACb,cAAc,GACf,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,aAAa,CAAC;AAIrB,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AAIxB,OAAO,EACL,oBAAoB,EACpB,cAAc,GACf,MAAM,iBAAiB,CAAC;AAIzB,OAAO,EACL,cAAc,GACf,MAAM,uBAAuB,CAAC;AAI/B,OAAO,EACL,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAI3B,OAAO,EACL,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAI9B,OAAO,EACL,cAAc,EACd,mBAAmB,GACpB,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,22 @@
1
+ import type { PluginConfig } from '../types.js';
2
+ export interface ExtractedContext {
3
+ technologies: string[];
4
+ decisions: Array<{
5
+ decision: string;
6
+ context: string;
7
+ }>;
8
+ preferences: string[];
9
+ projectContext: string[];
10
+ keyFacts: string[];
11
+ summary?: string;
12
+ }
13
+ /**
14
+ * Extract context from a message using LLM.
15
+ * Returns structured data for memory storage.
16
+ */
17
+ export declare function extractWithLLM(content: string, config: PluginConfig): Promise<ExtractedContext>;
18
+ /**
19
+ * Generate a summary for a session's messages using LLM.
20
+ */
21
+ export declare function summarizeWithLLM(messages: string[], config: PluginConfig): Promise<string>;
22
+ //# sourceMappingURL=llm-extractor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm-extractor.d.ts","sourceRoot":"","sources":["../../src/memory/llm-extractor.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAIhD,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACxD,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AA+DD;;;GAGG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,gBAAgB,CAAC,CAwC3B;AAgBD;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAAE,EAClB,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,MAAM,CAAC,CAcjB"}
@@ -0,0 +1,117 @@
1
+ // ─── LLM Extractor ────────────────────────────────────────────────────────
2
+ // Uses LLM to extract structured context from messages.
3
+ // Falls back to regex extraction if LLM is unavailable.
4
+ async function callLLM(prompt, config) {
5
+ if (!config.llm.enabled || !config.llm.apiKey) {
6
+ throw new Error('LLM not configured or disabled');
7
+ }
8
+ const url = `${config.llm.baseUrl}/chat/completions`;
9
+ const response = await fetch(url, {
10
+ method: 'POST',
11
+ headers: {
12
+ 'Content-Type': 'application/json',
13
+ Authorization: `Bearer ${config.llm.apiKey}`,
14
+ },
15
+ body: JSON.stringify({
16
+ model: config.llm.model,
17
+ messages: [{ role: 'user', content: prompt }],
18
+ temperature: 0.3,
19
+ max_tokens: 1000,
20
+ }),
21
+ });
22
+ if (!response.ok) {
23
+ throw new Error(`LLM API error: ${response.status} ${response.statusText}`);
24
+ }
25
+ const data = (await response.json());
26
+ return data.choices[0]?.message?.content ?? '';
27
+ }
28
+ // ─── Extraction ──────────────────────────────────────────────────────────
29
+ const EXTRACTION_PROMPT = `Analyze this message and extract structured information. Return ONLY valid JSON with these fields:
30
+
31
+ {
32
+ "technologies": ["list of technologies, frameworks, languages, tools mentioned"],
33
+ "decisions": [{"decision": "what was decided", "context": "why/when"}],
34
+ "preferences": ["user preferences, coding style, patterns liked"],
35
+ "projectContext": ["project-related context, architecture, setup"],
36
+ "keyFacts": ["important facts to remember for future sessions"]
37
+ }
38
+
39
+ If a field has no relevant content, use an empty array.
40
+
41
+ Message:
42
+ "{content}"
43
+
44
+ JSON:`;
45
+ /**
46
+ * Extract context from a message using LLM.
47
+ * Returns structured data for memory storage.
48
+ */
49
+ export async function extractWithLLM(content, config) {
50
+ if (!content || content.trim().length < 10) {
51
+ return {
52
+ technologies: [],
53
+ decisions: [],
54
+ preferences: [],
55
+ projectContext: [],
56
+ keyFacts: [],
57
+ };
58
+ }
59
+ try {
60
+ const prompt = EXTRACTION_PROMPT.replace('{content}', content.slice(0, 2000));
61
+ const response = await callLLM(prompt, config);
62
+ // Parse JSON response, handle potential markdown code blocks
63
+ const jsonStr = response
64
+ .replace(/```json\s*/g, '')
65
+ .replace(/```\s*/g, '')
66
+ .trim();
67
+ const parsed = JSON.parse(jsonStr);
68
+ return {
69
+ technologies: Array.isArray(parsed.technologies) ? parsed.technologies : [],
70
+ decisions: Array.isArray(parsed.decisions) ? parsed.decisions : [],
71
+ preferences: Array.isArray(parsed.preferences) ? parsed.preferences : [],
72
+ projectContext: Array.isArray(parsed.projectContext) ? parsed.projectContext : [],
73
+ keyFacts: Array.isArray(parsed.keyFacts) ? parsed.keyFacts : [],
74
+ };
75
+ }
76
+ catch (err) {
77
+ console.error('[UltraMemory] LLM extraction failed:', err);
78
+ return {
79
+ technologies: [],
80
+ decisions: [],
81
+ preferences: [],
82
+ projectContext: [],
83
+ keyFacts: [],
84
+ };
85
+ }
86
+ }
87
+ // ─── Summarization ───────────────────────────────────────────────────────
88
+ const SUMMARY_PROMPT = `Summarize this conversation in 2-3 concise sentences. Focus on:
89
+ - Key decisions made
90
+ - Technologies discussed
91
+ - Important context to remember
92
+
93
+ Return ONLY the summary text, no JSON formatting.
94
+
95
+ Conversation:
96
+ "{messages}"
97
+
98
+ Summary:`;
99
+ /**
100
+ * Generate a summary for a session's messages using LLM.
101
+ */
102
+ export async function summarizeWithLLM(messages, config) {
103
+ if (!messages.length) {
104
+ return '';
105
+ }
106
+ try {
107
+ const combined = messages.join('\n').slice(0, 4000);
108
+ const prompt = SUMMARY_PROMPT.replace('{messages}', combined);
109
+ const summary = await callLLM(prompt, config);
110
+ return summary.trim().slice(0, 500);
111
+ }
112
+ catch (err) {
113
+ console.error('[UltraMemory] LLM summarization failed:', err);
114
+ return '';
115
+ }
116
+ }
117
+ //# sourceMappingURL=llm-extractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm-extractor.js","sourceRoot":"","sources":["../../src/memory/llm-extractor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ export interface DetectedPattern {
2
+ type: 'workflow' | 'error' | 'preference' | 'technology' | 'decision';
3
+ pattern: string;
4
+ frequency: number;
5
+ sessions: string[];
6
+ confidence: number;
7
+ example: string;
8
+ }
9
+ export interface PatternAnalysis {
10
+ patterns: DetectedPattern[];
11
+ topTechnologies: Array<{
12
+ name: string;
13
+ count: number;
14
+ }>;
15
+ recurringWorkflows: string[];
16
+ consistentPreferences: string[];
17
+ recentDecisions: string[];
18
+ summary: string;
19
+ }
20
+ /**
21
+ * Detect patterns across all sessions by analyzing stored memories.
22
+ */
23
+ export declare function detectPatterns(options?: {
24
+ limit?: number;
25
+ projectId?: string;
26
+ minFrequency?: number;
27
+ }): Promise<PatternAnalysis>;
28
+ //# sourceMappingURL=pattern-detector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pattern-detector.d.ts","sourceRoot":"","sources":["../../src/memory/pattern-detector.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,UAAU,GAAG,OAAO,GAAG,YAAY,GAAG,YAAY,GAAG,UAAU,CAAC;IACtE,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,eAAe,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACxD,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;CACjB;AAID;;GAEG;AACH,wBAAsB,cAAc,CAAC,OAAO,GAAE;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC,eAAe,CAAC,CAwDhC"}
@@ -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"}