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.
- package/README.md +56 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +7 -0
- package/dist/config.js.map +1 -1
- package/dist/hooks/event-handler.d.ts.map +1 -1
- package/dist/hooks/event-handler.js +9 -0
- package/dist/hooks/event-handler.js.map +1 -1
- package/dist/hooks/message-handler.d.ts.map +1 -1
- package/dist/hooks/message-handler.js +3 -0
- package/dist/hooks/message-handler.js.map +1 -1
- package/dist/hooks/system-transform.d.ts +5 -12
- package/dist/hooks/system-transform.d.ts.map +1 -1
- package/dist/hooks/system-transform.js +43 -24
- package/dist/hooks/system-transform.js.map +1 -1
- package/dist/memory/embeddings.d.ts +22 -0
- package/dist/memory/embeddings.d.ts.map +1 -0
- package/dist/memory/embeddings.js +139 -0
- package/dist/memory/embeddings.js.map +1 -0
- package/dist/memory/extractor.d.ts.map +1 -1
- package/dist/memory/extractor.js +5 -1
- package/dist/memory/extractor.js.map +1 -1
- package/dist/memory/index.d.ts +13 -1
- package/dist/memory/index.d.ts.map +1 -1
- package/dist/memory/index.js +7 -1
- package/dist/memory/index.js.map +1 -1
- package/dist/memory/llm-extractor.d.ts +22 -0
- package/dist/memory/llm-extractor.d.ts.map +1 -0
- package/dist/memory/llm-extractor.js +117 -0
- package/dist/memory/llm-extractor.js.map +1 -0
- package/dist/memory/pattern-detector.d.ts +28 -0
- package/dist/memory/pattern-detector.d.ts.map +1 -0
- package/dist/memory/pattern-detector.js +221 -0
- package/dist/memory/pattern-detector.js.map +1 -0
- package/dist/memory/processor.d.ts +7 -1
- package/dist/memory/processor.d.ts.map +1 -1
- package/dist/memory/processor.js +112 -15
- package/dist/memory/processor.js.map +1 -1
- package/dist/memory/project-context.d.ts +24 -0
- package/dist/memory/project-context.d.ts.map +1 -0
- package/dist/memory/project-context.js +186 -0
- package/dist/memory/project-context.js.map +1 -0
- package/dist/memory/suggestions.d.ts +21 -0
- package/dist/memory/suggestions.d.ts.map +1 -0
- package/dist/memory/suggestions.js +205 -0
- package/dist/memory/suggestions.js.map +1 -0
- package/dist/memory/user-profile.d.ts +24 -0
- package/dist/memory/user-profile.d.ts.map +1 -0
- package/dist/memory/user-profile.js +220 -0
- package/dist/memory/user-profile.js.map +1 -0
- package/dist/types.d.ts +8 -0
- package/dist/types.d.ts.map +1 -1
- 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,
|
|
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"}
|
package/dist/memory/index.js
CHANGED
|
@@ -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
|
package/dist/memory/index.js.map
CHANGED
|
@@ -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,
|
|
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":"AAAA,6EAA6E;AAC7E,wDAAwD;AACxD,wDAAwD;AAyBxD,KAAK,UAAU,OAAO,CACpB,MAAc,EACd,MAAoB;IAEpB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,mBAAmB,CAAC;IAErD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAChC,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,aAAa,EAAE,UAAU,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE;SAC7C;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK;YACvB,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;YAC7C,WAAW,EAAE,GAAG;YAChB,UAAU,EAAE,IAAI;SACjB,CAAC;KACH,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,kBAAkB,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAgB,CAAC;IACpD,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC;AACjD,CAAC;AAED,4EAA4E;AAE5E,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;MAepB,CAAC;AAEP;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAAe,EACf,MAAoB;IAEpB,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QAC3C,OAAO;YACL,YAAY,EAAE,EAAE;YAChB,SAAS,EAAE,EAAE;YACb,WAAW,EAAE,EAAE;YACf,cAAc,EAAE,EAAE;YAClB,QAAQ,EAAE,EAAE;SACb,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QAC9E,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAE/C,6DAA6D;QAC7D,MAAM,OAAO,GAAG,QAAQ;aACrB,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;aAC1B,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;aACtB,IAAI,EAAE,CAAC;QAEV,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAqB,CAAC;QAEvD,OAAO;YACL,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE;YAC3E,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;YAClE,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;YACxE,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;YACjF,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;SAChE,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,GAAG,CAAC,CAAC;QAC3D,OAAO;YACL,YAAY,EAAE,EAAE;YAChB,SAAS,EAAE,EAAE;YACb,WAAW,EAAE,EAAE;YACf,cAAc,EAAE,EAAE;YAClB,QAAQ,EAAE,EAAE;SACb,CAAC;IACJ,CAAC;AACH,CAAC;AAED,4EAA4E;AAE5E,MAAM,cAAc,GAAG;;;;;;;;;;SAUd,CAAC;AAEV;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,QAAkB,EAClB,MAAoB;IAEpB,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QACrB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QAC9D,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC9C,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,GAAG,CAAC,CAAC;QAC9D,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
|
|
@@ -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;
|
|
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"}
|