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
@@ -0,0 +1,205 @@
1
+ // ─── Workflow Suggestions Module ──────────────────────────────────────────
2
+ // Generates contextual workflow suggestions based on detected patterns,
3
+ // user profile, and project context.
4
+ import { detectPatterns } from './pattern-detector.js';
5
+ import { buildUserProfile } from './user-profile.js';
6
+ import { buildProjectContext } from './project-context.js';
7
+ // ─── Suggestion Generation ───────────────────────────────────────────────
8
+ /**
9
+ * Generate contextual workflow suggestions.
10
+ */
11
+ export async function getSuggestions(context) {
12
+ try {
13
+ const { projectId, currentMessage } = context;
14
+ // Gather context data
15
+ const [patterns, userProfile, projectContext] = await Promise.all([
16
+ detectPatterns({ projectId }),
17
+ buildUserProfile(projectId),
18
+ projectId ? buildProjectContext(projectId) : null,
19
+ ]);
20
+ const suggestions = [];
21
+ // Generate suggestions from patterns
22
+ suggestions.push(...generatePatternSuggestions(patterns.patterns));
23
+ // Generate suggestions from user profile
24
+ suggestions.push(...generateProfileSuggestions(userProfile));
25
+ // Generate suggestions from project context
26
+ if (projectContext) {
27
+ suggestions.push(...generateProjectSuggestions(projectContext));
28
+ }
29
+ // Generate contextual suggestions based on current message
30
+ if (currentMessage) {
31
+ suggestions.push(...generateContextualSuggestions(currentMessage, patterns.patterns));
32
+ }
33
+ // Sort by confidence and return top suggestions
34
+ return suggestions
35
+ .sort((a, b) => b.confidence - a.confidence)
36
+ .slice(0, 10);
37
+ }
38
+ catch (err) {
39
+ console.error('[UltraMemory] Failed to generate suggestions:', err);
40
+ return [];
41
+ }
42
+ }
43
+ /**
44
+ * Get quick suggestions for a specific context.
45
+ */
46
+ export async function getQuickSuggestions(projectId) {
47
+ try {
48
+ const patterns = await detectPatterns({ projectId, limit: 50 });
49
+ return generatePatternSuggestions(patterns.patterns).slice(0, 5);
50
+ }
51
+ catch (err) {
52
+ console.error('[UltraMemory] Failed to get quick suggestions:', err);
53
+ return [];
54
+ }
55
+ }
56
+ // ─── Suggestion Generators ──────────────────────────────────────────────
57
+ function generatePatternSuggestions(patterns) {
58
+ const suggestions = [];
59
+ // Workflow suggestions from recurring patterns
60
+ const workflowPatterns = patterns.filter((p) => p.type === 'workflow');
61
+ for (const pattern of workflowPatterns.slice(0, 3)) {
62
+ suggestions.push({
63
+ type: 'workflow',
64
+ message: `Based on your pattern: ${pattern.pattern.slice(0, 80)}`,
65
+ confidence: pattern.confidence * 0.8,
66
+ source: 'pattern-detector',
67
+ actionable: true,
68
+ });
69
+ }
70
+ // Technology suggestions
71
+ const techPatterns = patterns.filter((p) => p.type === 'technology');
72
+ if (techPatterns.length > 0) {
73
+ const topTech = techPatterns[0];
74
+ if (topTech && topTech.frequency > 5) {
75
+ suggestions.push({
76
+ type: 'pattern',
77
+ message: `You frequently use ${topTech.pattern}. Consider creating a template or shortcut.`,
78
+ confidence: 0.7,
79
+ source: 'pattern-detector',
80
+ actionable: true,
81
+ });
82
+ }
83
+ }
84
+ // Preference suggestions
85
+ const prefPatterns = patterns.filter((p) => p.type === 'preference');
86
+ for (const pattern of prefPatterns.slice(0, 2)) {
87
+ suggestions.push({
88
+ type: 'reminder',
89
+ message: `Your preference: ${pattern.pattern.slice(0, 80)}`,
90
+ confidence: pattern.confidence * 0.6,
91
+ source: 'pattern-detector',
92
+ actionable: false,
93
+ });
94
+ }
95
+ return suggestions;
96
+ }
97
+ function generateProfileSuggestions(profile) {
98
+ const suggestions = [];
99
+ // Language-based suggestions
100
+ if (profile.preferredLanguages.length > 0) {
101
+ const lang = profile.preferredLanguages[0];
102
+ suggestions.push({
103
+ type: 'workflow',
104
+ message: `Using your preferred language: ${lang}`,
105
+ confidence: 0.6,
106
+ source: 'user-profile',
107
+ actionable: false,
108
+ });
109
+ }
110
+ // Coding style suggestions
111
+ if (profile.codingStyle !== 'mixed') {
112
+ suggestions.push({
113
+ type: 'pattern',
114
+ message: `Following your ${profile.codingStyle} coding style`,
115
+ confidence: 0.5,
116
+ source: 'user-profile',
117
+ actionable: false,
118
+ });
119
+ }
120
+ // Framework suggestions
121
+ if (profile.frameworks.length > 0) {
122
+ suggestions.push({
123
+ type: 'tool',
124
+ message: `Known frameworks: ${profile.frameworks.slice(0, 3).join(', ')}`,
125
+ confidence: 0.5,
126
+ source: 'user-profile',
127
+ actionable: false,
128
+ });
129
+ }
130
+ return suggestions;
131
+ }
132
+ function generateProjectSuggestions(context) {
133
+ const suggestions = [];
134
+ // Tech stack suggestions
135
+ if (context.techStack.length > 0) {
136
+ suggestions.push({
137
+ type: 'tool',
138
+ message: `Project tech stack: ${context.techStack.slice(0, 5).join(', ')}`,
139
+ confidence: 0.6,
140
+ source: 'project-context',
141
+ actionable: false,
142
+ });
143
+ }
144
+ // Architecture suggestions
145
+ if (context.architecture !== 'Unknown') {
146
+ suggestions.push({
147
+ type: 'pattern',
148
+ message: `Project architecture: ${context.architecture}`,
149
+ confidence: 0.5,
150
+ source: 'project-context',
151
+ actionable: false,
152
+ });
153
+ }
154
+ // Convention suggestions
155
+ if (context.conventions.length > 0) {
156
+ suggestions.push({
157
+ type: 'reminder',
158
+ message: `Project conventions: ${context.conventions[0]?.slice(0, 60)}`,
159
+ confidence: 0.5,
160
+ source: 'project-context',
161
+ actionable: false,
162
+ });
163
+ }
164
+ return suggestions;
165
+ }
166
+ function generateContextualSuggestions(message, patterns) {
167
+ const suggestions = [];
168
+ const lowerMessage = message.toLowerCase();
169
+ // Check if message mentions a known technology
170
+ const techPatterns = patterns.filter((p) => p.type === 'technology');
171
+ for (const pattern of techPatterns) {
172
+ if (lowerMessage.includes(pattern.pattern.toLowerCase())) {
173
+ suggestions.push({
174
+ type: 'workflow',
175
+ message: `Working with ${pattern.pattern} (used ${pattern.frequency} times before)`,
176
+ confidence: 0.7,
177
+ source: 'contextual',
178
+ actionable: true,
179
+ });
180
+ break;
181
+ }
182
+ }
183
+ // Check if message indicates a common task
184
+ const taskIndicators = [
185
+ { pattern: /\b(?:deploy|deployment|release)\b/i, suggestion: 'Remember to run tests before deploying' },
186
+ { pattern: /\b(?:test|testing|spec)\b/i, suggestion: 'Consider adding edge case tests' },
187
+ { pattern: /\b(?:fix|bug|error|issue)\b/i, suggestion: 'Check if this issue exists in other parts of the codebase' },
188
+ { pattern: /\b(?:refactor|cleanup|clean)\b/i, suggestion: 'Run linter after refactoring' },
189
+ { pattern: /\b(?:commit|push|merge)\b/i, suggestion: 'Use conventional commit messages' },
190
+ ];
191
+ for (const { pattern, suggestion } of taskIndicators) {
192
+ if (pattern.test(message)) {
193
+ suggestions.push({
194
+ type: 'reminder',
195
+ message: suggestion,
196
+ confidence: 0.6,
197
+ source: 'contextual',
198
+ actionable: true,
199
+ });
200
+ break;
201
+ }
202
+ }
203
+ return suggestions;
204
+ }
205
+ //# sourceMappingURL=suggestions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suggestions.js","sourceRoot":"","sources":["../../src/memory/suggestions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ export interface UserProfile {
2
+ preferredLanguages: string[];
3
+ codingStyle: 'functional' | 'oop' | 'procedural' | 'mixed';
4
+ frameworks: string[];
5
+ patterns: string[];
6
+ avoidPatterns: string[];
7
+ experienceLevel: 'beginner' | 'intermediate' | 'expert';
8
+ lastUpdated: string;
9
+ }
10
+ export interface ProfileInsight {
11
+ category: string;
12
+ insight: string;
13
+ confidence: number;
14
+ evidence: string[];
15
+ }
16
+ /**
17
+ * Build or update user profile from stored memories.
18
+ */
19
+ export declare function buildUserProfile(projectId?: string): Promise<UserProfile>;
20
+ /**
21
+ * Get profile insights with confidence scores.
22
+ */
23
+ export declare function getProfileInsights(projectId?: string): Promise<ProfileInsight[]>;
24
+ //# sourceMappingURL=user-profile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-profile.d.ts","sourceRoot":"","sources":["../../src/memory/user-profile.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,WAAW;IAC1B,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,WAAW,EAAE,YAAY,GAAG,KAAK,GAAG,YAAY,GAAG,OAAO,CAAC;IAC3D,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,eAAe,EAAE,UAAU,GAAG,cAAc,GAAG,QAAQ,CAAC;IACxD,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,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAID;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,WAAW,CAAC,CAgCtB;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,cAAc,EAAE,CAAC,CAmE3B"}
@@ -0,0 +1,220 @@
1
+ // ─── User Profile Module ──────────────────────────────────────────────────
2
+ // Evolving user profile that learns from each session.
3
+ // Tracks preferred languages, coding style, frameworks, patterns, etc.
4
+ import { getPool } from '../db/connection.js';
5
+ // ─── Profile Building ────────────────────────────────────────────────────
6
+ /**
7
+ * Build or update user profile from stored memories.
8
+ */
9
+ export async function buildUserProfile(projectId) {
10
+ try {
11
+ const pool = getPool();
12
+ // Fetch relevant memories for profile building
13
+ const result = await pool.query(`SELECT * FROM memories
14
+ WHERE ($1::text IS NULL OR project_id = $1)
15
+ AND memory_type IN ('user_profile', 'tech_stack', 'pattern', 'decision')
16
+ ORDER BY created_at DESC
17
+ LIMIT 200`, [projectId ?? null]);
18
+ const memories = result.rows;
19
+ // Analyze memories to build profile
20
+ const profile = {
21
+ preferredLanguages: extractLanguages(memories),
22
+ codingStyle: detectCodingStyle(memories),
23
+ frameworks: extractFrameworks(memories),
24
+ patterns: extractPatterns(memories),
25
+ avoidPatterns: extractAvoidPatterns(memories),
26
+ experienceLevel: detectExperienceLevel(memories),
27
+ lastUpdated: new Date().toISOString(),
28
+ };
29
+ return profile;
30
+ }
31
+ catch (err) {
32
+ console.error('[UltraMemory] Failed to build user profile:', err);
33
+ return getDefaultProfile();
34
+ }
35
+ }
36
+ /**
37
+ * Get profile insights with confidence scores.
38
+ */
39
+ export async function getProfileInsights(projectId) {
40
+ try {
41
+ const pool = getPool();
42
+ const result = await pool.query(`SELECT * FROM memories
43
+ WHERE ($1::text IS NULL OR project_id = $1)
44
+ AND memory_type IN ('user_profile', 'tech_stack', 'pattern')
45
+ ORDER BY importance DESC, created_at DESC
46
+ LIMIT 100`, [projectId ?? null]);
47
+ const memories = result.rows;
48
+ const insights = [];
49
+ // Language preferences
50
+ const languages = extractLanguages(memories);
51
+ if (languages.length > 0) {
52
+ insights.push({
53
+ category: 'languages',
54
+ insight: `Prefers: ${languages.join(', ')}`,
55
+ confidence: Math.min(1, languages.length / 3),
56
+ evidence: memories
57
+ .filter((m) => m.memory_type === 'tech_stack' && languages.some((l) => m.content.includes(l)))
58
+ .map((m) => m.content)
59
+ .slice(0, 3),
60
+ });
61
+ }
62
+ // Coding style
63
+ const style = detectCodingStyle(memories);
64
+ insights.push({
65
+ category: 'coding_style',
66
+ insight: `Coding style: ${style}`,
67
+ confidence: style === 'mixed' ? 0.5 : 0.7,
68
+ evidence: [],
69
+ });
70
+ // Frameworks
71
+ const frameworks = extractFrameworks(memories);
72
+ if (frameworks.length > 0) {
73
+ insights.push({
74
+ category: 'frameworks',
75
+ insight: `Uses: ${frameworks.join(', ')}`,
76
+ confidence: Math.min(1, frameworks.length / 2),
77
+ evidence: memories
78
+ .filter((m) => m.memory_type === 'tech_stack' && frameworks.some((f) => m.content.includes(f)))
79
+ .map((m) => m.content)
80
+ .slice(0, 3),
81
+ });
82
+ }
83
+ // Experience level
84
+ const experience = detectExperienceLevel(memories);
85
+ insights.push({
86
+ category: 'experience',
87
+ insight: `Experience level: ${experience}`,
88
+ confidence: 0.6,
89
+ evidence: [],
90
+ });
91
+ return insights;
92
+ }
93
+ catch (err) {
94
+ console.error('[UltraMemory] Failed to get profile insights:', err);
95
+ return [];
96
+ }
97
+ }
98
+ // ─── Extraction Helpers ──────────────────────────────────────────────────
99
+ function extractLanguages(memories) {
100
+ const languageCounts = new Map();
101
+ const commonLanguages = [
102
+ 'TypeScript', 'JavaScript', 'Python', 'Rust', 'Go', 'Java', 'C#',
103
+ 'Ruby', 'PHP', 'Swift', 'Kotlin', 'Dart', 'Elixir', 'Zig',
104
+ ];
105
+ for (const mem of memories) {
106
+ if (mem.memory_type !== 'tech_stack')
107
+ continue;
108
+ for (const lang of commonLanguages) {
109
+ if (mem.content.includes(lang) || mem.metadata?.technology === lang) {
110
+ languageCounts.set(lang, (languageCounts.get(lang) || 0) + 1);
111
+ }
112
+ }
113
+ }
114
+ return [...languageCounts.entries()]
115
+ .filter(([_, count]) => count >= 2)
116
+ .sort((a, b) => b[1] - a[1])
117
+ .map(([lang]) => lang)
118
+ .slice(0, 5);
119
+ }
120
+ function extractFrameworks(memories) {
121
+ const frameworkCounts = new Map();
122
+ const commonFrameworks = [
123
+ 'React', 'Vue', 'Angular', 'Next.js', 'Nuxt', 'Svelte', 'Express',
124
+ 'Fastify', 'Django', 'Flask', 'FastAPI', 'Rails', 'Laravel',
125
+ 'Tailwind CSS', 'Prisma', 'Drizzle',
126
+ ];
127
+ for (const mem of memories) {
128
+ if (mem.memory_type !== 'tech_stack')
129
+ continue;
130
+ for (const fw of commonFrameworks) {
131
+ if (mem.content.includes(fw) || mem.metadata?.technology === fw) {
132
+ frameworkCounts.set(fw, (frameworkCounts.get(fw) || 0) + 1);
133
+ }
134
+ }
135
+ }
136
+ return [...frameworkCounts.entries()]
137
+ .filter(([_, count]) => count >= 2)
138
+ .sort((a, b) => b[1] - a[1])
139
+ .map(([fw]) => fw)
140
+ .slice(0, 5);
141
+ }
142
+ function extractPatterns(memories) {
143
+ return memories
144
+ .filter((m) => m.memory_type === 'pattern')
145
+ .map((m) => m.content)
146
+ .slice(0, 10);
147
+ }
148
+ function extractAvoidPatterns(memories) {
149
+ const avoidIndicators = [
150
+ /\b(?:don'?t|avoid|hate|dislike|never|no\s+more)\b/i,
151
+ /\b(?:no\s+(?:more|longer)|stop\s+using)\b/i,
152
+ ];
153
+ return memories
154
+ .filter((m) => {
155
+ const content = m.content.toLowerCase();
156
+ return avoidIndicators.some((p) => p.test(content));
157
+ })
158
+ .map((m) => m.content)
159
+ .slice(0, 5);
160
+ }
161
+ function detectCodingStyle(memories) {
162
+ const styleIndicators = {
163
+ functional: [/\b(?:pure\s+function|immutable|lodash|ramda|map|filter|reduce)\b/i, /\bfunctional\b/i],
164
+ oop: [/\b(?:class|extends|implements|interface|polymorphism|encapsulation)\b/i, /\bobject[- ]oriented\b/i],
165
+ procedural: [/\b(?:function|procedure|imperative|step[- ]by[- ]step)\b/i],
166
+ };
167
+ const scores = { functional: 0, oop: 0, procedural: 0 };
168
+ for (const mem of memories) {
169
+ const content = mem.content;
170
+ for (const [style, patterns] of Object.entries(styleIndicators)) {
171
+ if (patterns.some((p) => p.test(content))) {
172
+ scores[style]++;
173
+ }
174
+ }
175
+ }
176
+ const maxScore = Math.max(scores.functional, scores.oop, scores.procedural);
177
+ if (maxScore === 0)
178
+ return 'mixed';
179
+ if (scores.functional === maxScore)
180
+ return 'functional';
181
+ if (scores.oop === maxScore)
182
+ return 'oop';
183
+ return 'procedural';
184
+ }
185
+ function detectExperienceLevel(memories) {
186
+ const advancedIndicators = [
187
+ /\b(?:architecture|scalability|microservices|distributed|kubernetes|terraform)\b/i,
188
+ /\b(?:performance|optimization|benchmark|profiling)\b/i,
189
+ /\b(?:security|authentication|authorization|encryption)\b/i,
190
+ ];
191
+ const beginnerIndicators = [
192
+ /\b(?:learning|new\s+to|beginner|getting\s+started|tutorial)\b/i,
193
+ /\b(?:how\s+to|what\s+is|can\s+someone|help\s+me)\b/i,
194
+ ];
195
+ let advancedCount = 0;
196
+ let beginnerCount = 0;
197
+ for (const mem of memories) {
198
+ if (advancedIndicators.some((p) => p.test(mem.content)))
199
+ advancedCount++;
200
+ if (beginnerIndicators.some((p) => p.test(mem.content)))
201
+ beginnerCount++;
202
+ }
203
+ if (advancedCount > 5)
204
+ return 'expert';
205
+ if (beginnerCount > 5)
206
+ return 'beginner';
207
+ return 'intermediate';
208
+ }
209
+ function getDefaultProfile() {
210
+ return {
211
+ preferredLanguages: [],
212
+ codingStyle: 'mixed',
213
+ frameworks: [],
214
+ patterns: [],
215
+ avoidPatterns: [],
216
+ experienceLevel: 'intermediate',
217
+ lastUpdated: new Date().toISOString(),
218
+ };
219
+ }
220
+ //# sourceMappingURL=user-profile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-profile.js","sourceRoot":"","sources":["../../src/memory/user-profile.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -90,6 +90,14 @@ export interface PluginConfig {
90
90
  minImportance: number;
91
91
  autoExtract: boolean;
92
92
  };
93
+ /** LLM settings for AI extraction */
94
+ llm: {
95
+ enabled: boolean;
96
+ model: string;
97
+ apiKey: string;
98
+ baseUrl: string;
99
+ summarizeSessions: boolean;
100
+ };
93
101
  }
94
102
  /** Search result with relevance */
95
103
  export interface MemorySearchResult {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package.json",
3
3
  "name": "super-memory-pro",
4
- "version": "0.3.1",
5
- "description": "Ultra-persistent memory plugin for OpenCode — learn, remember, and recall across sessions",
4
+ "version": "2.0.0",
5
+ "description": "Ultra-persistent memory plugin for OpenCode — AI-powered extraction, semantic search, and cross-session learning",
6
6
  "keywords": [
7
7
  "opencode",
8
8
  "opencode-plugin",
@@ -50,9 +50,9 @@
50
50
  "zod": "^4.1.8"
51
51
  },
52
52
  "devDependencies": {
53
- "@types/express": "^5.0.2",
54
- "@types/node": "^22.15.3",
55
- "@types/pg": "^8.11.14",
53
+ "@types/express": "^5.0.6",
54
+ "@types/node": "^22.19.21",
55
+ "@types/pg": "^8.20.0",
56
56
  "@types/uuid": "^10.0.0",
57
57
  "tsx": "^4.19.4",
58
58
  "typescript": "^5.8.3",