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,186 @@
1
+ // ─── Project Context Module ───────────────────────────────────────────────
2
+ // Automatic project context detection and maintenance.
3
+ // Tracks tech stack, architecture, conventions, and recent changes.
4
+ import { getPool } from '../db/connection.js';
5
+ // ─── Context Building ────────────────────────────────────────────────────
6
+ /**
7
+ * Build or update project context from stored memories and project info.
8
+ */
9
+ export async function buildProjectContext(projectId) {
10
+ try {
11
+ const pool = getPool();
12
+ // Fetch project record
13
+ const projectResult = await pool.query('SELECT * FROM projects WHERE id = $1', [projectId]);
14
+ const project = projectResult.rows[0];
15
+ // Fetch project memories
16
+ const memoriesResult = await pool.query(`SELECT * FROM memories
17
+ WHERE project_id = $1
18
+ ORDER BY created_at DESC
19
+ LIMIT 200`, [projectId]);
20
+ const memories = memoriesResult.rows;
21
+ // Build context
22
+ const context = {
23
+ name: project?.name ?? 'Unknown Project',
24
+ techStack: extractProjectTechStack(memories, project ?? null),
25
+ architecture: detectArchitecture(memories),
26
+ conventions: extractConventions(memories),
27
+ recentChanges: extractRecentChanges(memories),
28
+ activeBranches: [], // Would need git integration
29
+ lastUpdated: new Date().toISOString(),
30
+ };
31
+ return context;
32
+ }
33
+ catch (err) {
34
+ console.error('[UltraMemory] Failed to build project context:', err);
35
+ return getDefaultContext();
36
+ }
37
+ }
38
+ /**
39
+ * Get project insights with recommendations.
40
+ */
41
+ export async function getProjectInsights(projectId) {
42
+ try {
43
+ const pool = getPool();
44
+ const result = await pool.query(`SELECT * FROM memories
45
+ WHERE project_id = $1
46
+ AND memory_type IN ('tech_stack', 'decision', 'pattern', 'project_context')
47
+ ORDER BY importance DESC, created_at DESC
48
+ LIMIT 100`, [projectId]);
49
+ const memories = result.rows;
50
+ const insights = [];
51
+ // Tech stack analysis
52
+ const techStack = extractProjectTechStack(memories, null);
53
+ if (techStack.length > 0) {
54
+ insights.push({
55
+ category: 'tech_stack',
56
+ insight: `Project uses: ${techStack.join(', ')}`,
57
+ confidence: Math.min(1, techStack.length / 3),
58
+ recommendations: generateTechRecommendations(techStack),
59
+ });
60
+ }
61
+ // Architecture analysis
62
+ const architecture = detectArchitecture(memories);
63
+ insights.push({
64
+ category: 'architecture',
65
+ insight: `Architecture: ${architecture}`,
66
+ confidence: 0.6,
67
+ recommendations: [],
68
+ });
69
+ // Convention analysis
70
+ const conventions = extractConventions(memories);
71
+ if (conventions.length > 0) {
72
+ insights.push({
73
+ category: 'conventions',
74
+ insight: `Conventions: ${conventions.slice(0, 3).join('; ')}`,
75
+ confidence: Math.min(1, conventions.length / 2),
76
+ recommendations: [],
77
+ });
78
+ }
79
+ // Decision analysis
80
+ const decisions = memories.filter((m) => m.memory_type === 'decision');
81
+ if (decisions.length > 0) {
82
+ insights.push({
83
+ category: 'decisions',
84
+ insight: `${decisions.length} decisions recorded`,
85
+ confidence: 0.8,
86
+ recommendations: [],
87
+ });
88
+ }
89
+ return insights;
90
+ }
91
+ catch (err) {
92
+ console.error('[UltraMemory] Failed to get project insights:', err);
93
+ return [];
94
+ }
95
+ }
96
+ // ─── Extraction Helpers ──────────────────────────────────────────────────
97
+ function extractProjectTechStack(memories, project) {
98
+ const techSet = new Set();
99
+ // From project record
100
+ if (project?.tech_stack) {
101
+ for (const tech of project.tech_stack) {
102
+ techSet.add(tech);
103
+ }
104
+ }
105
+ // From memories
106
+ for (const mem of memories) {
107
+ if (mem.memory_type === 'tech_stack') {
108
+ const tech = mem.metadata?.technology;
109
+ if (tech)
110
+ techSet.add(tech);
111
+ }
112
+ }
113
+ return [...techSet].sort();
114
+ }
115
+ function detectArchitecture(memories) {
116
+ const archIndicators = [
117
+ { pattern: /\b(?:monolith|monolithic)\b/i, arch: 'Monolith' },
118
+ { pattern: /\b(?:microservice|microservices)\b/i, arch: 'Microservices' },
119
+ { pattern: /\b(?:serverless|lambda|cloud\s*function)\b/i, arch: 'Serverless' },
120
+ { pattern: /\b(?:monorepo|mono-repo)\b/i, arch: 'Monorepo' },
121
+ { pattern: /\b(?:multi[- ]repo|polyrepo)\b/i, arch: 'Multi-repo' },
122
+ { pattern: /\b(?:event[- ]driven|event\s+driven)\b/i, arch: 'Event-driven' },
123
+ { pattern: /\b(?:cqrs|event\s+sourcing)\b/i, arch: 'CQRS/Event Sourcing' },
124
+ { pattern: /\b(?:mvc|MVC)\b/i, arch: 'MVC' },
125
+ ];
126
+ for (const mem of memories) {
127
+ for (const { pattern, arch } of archIndicators) {
128
+ if (pattern.test(mem.content)) {
129
+ return arch;
130
+ }
131
+ }
132
+ }
133
+ return 'Unknown';
134
+ }
135
+ function extractConventions(memories) {
136
+ const conventions = [];
137
+ const conventionPatterns = [
138
+ /\b(?:convention|conventions|style\s+guide|coding\s+standard)\b/i,
139
+ /\b(?:naming\s+convention|naming\s+pattern)\b/i,
140
+ /\b(?:file\s+structure|directory\s+structure|folder\s+structure)\b/i,
141
+ /\b(?:commit\s+message|commit\s+convention|conventional\s+commits)\b/i,
142
+ ];
143
+ for (const mem of memories) {
144
+ if (mem.memory_type === 'pattern' || mem.memory_type === 'project_context') {
145
+ for (const pattern of conventionPatterns) {
146
+ if (pattern.test(mem.content)) {
147
+ conventions.push(mem.content.slice(0, 100));
148
+ break;
149
+ }
150
+ }
151
+ }
152
+ }
153
+ return [...new Set(conventions)].slice(0, 10);
154
+ }
155
+ function extractRecentChanges(memories) {
156
+ return memories
157
+ .filter((m) => m.memory_type === 'decision' || m.memory_type === 'project_context')
158
+ .slice(0, 10)
159
+ .map((m) => m.content.slice(0, 100));
160
+ }
161
+ function generateTechRecommendations(techStack) {
162
+ const recommendations = [];
163
+ // Check for common missing tools
164
+ if (techStack.includes('TypeScript') && !techStack.includes('ESLint')) {
165
+ recommendations.push('Consider adding ESLint for code quality');
166
+ }
167
+ if (techStack.includes('React') && !techStack.includes('Testing Library')) {
168
+ recommendations.push('Consider adding Testing Library for component testing');
169
+ }
170
+ if (techStack.includes('Node.js') && !techStack.includes('Docker')) {
171
+ recommendations.push('Consider adding Docker for containerization');
172
+ }
173
+ return recommendations;
174
+ }
175
+ function getDefaultContext() {
176
+ return {
177
+ name: 'Unknown Project',
178
+ techStack: [],
179
+ architecture: 'Unknown',
180
+ conventions: [],
181
+ recentChanges: [],
182
+ activeBranches: [],
183
+ lastUpdated: new Date().toISOString(),
184
+ };
185
+ }
186
+ //# sourceMappingURL=project-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-context.js","sourceRoot":"","sources":["../../src/memory/project-context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ export interface Suggestion {
2
+ type: 'workflow' | 'tool' | 'pattern' | 'optimization' | 'reminder';
3
+ message: string;
4
+ confidence: number;
5
+ source: string;
6
+ actionable: boolean;
7
+ }
8
+ export interface SuggestionContext {
9
+ currentMessage?: string;
10
+ sessionId?: string;
11
+ projectId?: string;
12
+ }
13
+ /**
14
+ * Generate contextual workflow suggestions.
15
+ */
16
+ export declare function getSuggestions(context: SuggestionContext): Promise<Suggestion[]>;
17
+ /**
18
+ * Get quick suggestions for a specific context.
19
+ */
20
+ export declare function getQuickSuggestions(projectId?: string): Promise<Suggestion[]>;
21
+ //# sourceMappingURL=suggestions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suggestions.d.ts","sourceRoot":"","sources":["../../src/memory/suggestions.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,cAAc,GAAG,UAAU,CAAC;IACpE,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAID;;GAEG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,UAAU,EAAE,CAAC,CAqCvB;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,UAAU,EAAE,CAAC,CAQvB"}
@@ -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"}