cmp-standards 3.7.0 → 3.7.1
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/dist/hooks/auto-learning-hook.d.ts +48 -0
- package/dist/hooks/auto-learning-hook.d.ts.map +1 -0
- package/dist/hooks/auto-learning-hook.js +258 -0
- package/dist/hooks/auto-learning-hook.js.map +1 -0
- package/dist/hooks/fast-session-start.d.ts +24 -0
- package/dist/hooks/fast-session-start.d.ts.map +1 -0
- package/dist/hooks/fast-session-start.js +354 -0
- package/dist/hooks/fast-session-start.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -1
- package/dist/services/auto-evolution-trigger.d.ts +101 -0
- package/dist/services/auto-evolution-trigger.d.ts.map +1 -0
- package/dist/services/auto-evolution-trigger.js +359 -0
- package/dist/services/auto-evolution-trigger.js.map +1 -0
- package/dist/services/cloud-memory-service.d.ts +101 -0
- package/dist/services/cloud-memory-service.d.ts.map +1 -0
- package/dist/services/cloud-memory-service.js +363 -0
- package/dist/services/cloud-memory-service.js.map +1 -0
- package/dist/services/memory-keeper-client.d.ts +106 -0
- package/dist/services/memory-keeper-client.d.ts.map +1 -0
- package/dist/services/memory-keeper-client.js +319 -0
- package/dist/services/memory-keeper-client.js.map +1 -0
- package/dist/services/skill-learning-bridge.d.ts +100 -0
- package/dist/services/skill-learning-bridge.d.ts.map +1 -0
- package/dist/services/skill-learning-bridge.js +331 -0
- package/dist/services/skill-learning-bridge.js.map +1 -0
- package/dist/services/unified-memory-router.d.ts +123 -0
- package/dist/services/unified-memory-router.d.ts.map +1 -0
- package/dist/services/unified-memory-router.js +555 -0
- package/dist/services/unified-memory-router.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Skill-Learning Bridge Service
|
|
3
|
+
* @description Connects memory systems with the skills learning framework
|
|
4
|
+
*
|
|
5
|
+
* ## Purpose
|
|
6
|
+
*
|
|
7
|
+
* This bridge service synchronizes learnings across:
|
|
8
|
+
* 1. memory-keeper MCP (local SQLite)
|
|
9
|
+
* 2. cmp-standards cloud (Turso/Upstash)
|
|
10
|
+
* 3. Skills markdown files (.claude/skills/SKILL/learnings.md)
|
|
11
|
+
*
|
|
12
|
+
* ## Flow
|
|
13
|
+
*
|
|
14
|
+
* Learning Detected -> SkillLearningBridge
|
|
15
|
+
* - memory-keeper (immediate, local)
|
|
16
|
+
* - skills/learnings.md (immediate, local)
|
|
17
|
+
* - cmp-standards cloud (async, persistent)
|
|
18
|
+
*
|
|
19
|
+
* @version 1.0.0
|
|
20
|
+
*/
|
|
21
|
+
import { existsSync, readFileSync, writeFileSync } from 'fs';
|
|
22
|
+
import { join } from 'path';
|
|
23
|
+
import { homedir } from 'os';
|
|
24
|
+
// =============================================================================
|
|
25
|
+
// Constants
|
|
26
|
+
// =============================================================================
|
|
27
|
+
const DEFAULT_CONFIG = {
|
|
28
|
+
skillsDir: join(homedir(), '.claude', 'skills'),
|
|
29
|
+
evolutionThreshold: 10,
|
|
30
|
+
syncToCloud: true
|
|
31
|
+
};
|
|
32
|
+
const SKILL_PATHS = {
|
|
33
|
+
'type-safety-enforcer': 'quality/type-safety-enforcer',
|
|
34
|
+
'useeffect-reducer': 'quality/useeffect-reducer',
|
|
35
|
+
'systematic-debugging': 'quality/systematic-debugging',
|
|
36
|
+
'code-deduplicator': 'quality/code-deduplicator',
|
|
37
|
+
'pre-commit-validator': 'quality/pre-commit-validator',
|
|
38
|
+
'domain-structure-guardian': 'architecture/domain-structure-guardian',
|
|
39
|
+
'simplification-cascades': 'architecture/simplification-cascades',
|
|
40
|
+
'skill-evolver': 'meta/skill-evolver',
|
|
41
|
+
'changelog-generator': 'meta/changelog-generator'
|
|
42
|
+
};
|
|
43
|
+
// =============================================================================
|
|
44
|
+
// Skill Learning Bridge
|
|
45
|
+
// =============================================================================
|
|
46
|
+
export class SkillLearningBridge {
|
|
47
|
+
config;
|
|
48
|
+
constructor(config = {}) {
|
|
49
|
+
this.config = { ...DEFAULT_CONFIG, ...config };
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Record a learning to all systems
|
|
53
|
+
*/
|
|
54
|
+
async recordLearning(learning) {
|
|
55
|
+
const result = {
|
|
56
|
+
skillsWritten: false,
|
|
57
|
+
memoryKeeperWritten: false,
|
|
58
|
+
cloudSynced: false
|
|
59
|
+
};
|
|
60
|
+
// 1. Write to skills/learnings.md
|
|
61
|
+
try {
|
|
62
|
+
result.skillsWritten = this.writeToSkillFile(learning);
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
console.error('[bridge] Failed to write to skills:', error);
|
|
66
|
+
}
|
|
67
|
+
// 2. Write to memory-keeper (would need MCP client)
|
|
68
|
+
// TODO: Integrate with memory-keeper MCP
|
|
69
|
+
// result.memoryKeeperWritten = await this.writeToMemoryKeeper(learning)
|
|
70
|
+
// 3. Sync to cloud (async, non-blocking)
|
|
71
|
+
if (this.config.syncToCloud) {
|
|
72
|
+
// TODO: Integrate with cmp-standards cloud
|
|
73
|
+
// this.syncToCloud(learning).catch(console.error)
|
|
74
|
+
}
|
|
75
|
+
return result;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Write learning to skill's learnings.md file
|
|
79
|
+
*/
|
|
80
|
+
writeToSkillFile(learning) {
|
|
81
|
+
const skillPath = SKILL_PATHS[learning.skill];
|
|
82
|
+
if (!skillPath) {
|
|
83
|
+
console.warn(`[bridge] Unknown skill: ${learning.skill}`);
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
const learningsFile = join(this.config.skillsDir, skillPath, 'learnings.md');
|
|
87
|
+
if (!existsSync(learningsFile)) {
|
|
88
|
+
console.warn(`[bridge] Learnings file not found: ${learningsFile}`);
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
91
|
+
let content = readFileSync(learningsFile, 'utf-8');
|
|
92
|
+
// Format the learning entry
|
|
93
|
+
const entry = this.formatLearningEntry(learning);
|
|
94
|
+
// Update total count
|
|
95
|
+
const countMatch = content.match(/\*\*Learnings Totales:\*\* (\d+)/);
|
|
96
|
+
if (countMatch) {
|
|
97
|
+
const currentCount = parseInt(countMatch[1], 10);
|
|
98
|
+
content = content.replace(/\*\*Learnings Totales:\*\* \d+/, `**Learnings Totales:** ${currentCount + 1}`);
|
|
99
|
+
// Also update pending count
|
|
100
|
+
const pendingMatch = content.match(/\*\*Learnings Pendientes:\*\* (\d+)/);
|
|
101
|
+
if (pendingMatch) {
|
|
102
|
+
const pendingCount = parseInt(pendingMatch[1], 10);
|
|
103
|
+
content = content.replace(/\*\*Learnings Pendientes:\*\* \d+/, `**Learnings Pendientes:** ${pendingCount + 1}`);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
// Insert learning after "## Learnings" header
|
|
107
|
+
const learningsHeader = '## Learnings';
|
|
108
|
+
const headerIndex = content.indexOf(learningsHeader);
|
|
109
|
+
if (headerIndex !== -1) {
|
|
110
|
+
const insertPoint = content.indexOf('\n', headerIndex) + 1;
|
|
111
|
+
content = content.slice(0, insertPoint) + '\n' + entry + content.slice(insertPoint);
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
// Fallback: append to end
|
|
115
|
+
content += '\n' + entry;
|
|
116
|
+
}
|
|
117
|
+
writeFileSync(learningsFile, content);
|
|
118
|
+
return true;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Format a learning entry as markdown
|
|
122
|
+
*/
|
|
123
|
+
formatLearningEntry(learning) {
|
|
124
|
+
const date = learning.timestamp.split('T')[0];
|
|
125
|
+
const time = learning.timestamp.split('T')[1]?.slice(0, 5) || '';
|
|
126
|
+
return `### Learning ${date} ${time}
|
|
127
|
+
|
|
128
|
+
**Context:** ${learning.context}
|
|
129
|
+
**Problem:** ${learning.problem}
|
|
130
|
+
**Solution:** ${learning.solution}
|
|
131
|
+
**Confidence:** ${Math.round(learning.confidence * 100)}%${learning.file ? `\n**File:** ${learning.file}` : ''}
|
|
132
|
+
**Source:** ${learning.source}
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
`;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Get statistics for all skills
|
|
139
|
+
*/
|
|
140
|
+
async getSkillStats() {
|
|
141
|
+
const stats = [];
|
|
142
|
+
for (const [skillName, skillPath] of Object.entries(SKILL_PATHS)) {
|
|
143
|
+
const fullPath = join(this.config.skillsDir, skillPath);
|
|
144
|
+
const learningsFile = join(fullPath, 'learnings.md');
|
|
145
|
+
if (!existsSync(learningsFile))
|
|
146
|
+
continue;
|
|
147
|
+
const content = readFileSync(learningsFile, 'utf-8');
|
|
148
|
+
// Parse stats from content
|
|
149
|
+
const totalMatch = content.match(/\*\*Learnings Totales:\*\* (\d+)/);
|
|
150
|
+
const pendingMatch = content.match(/\*\*Learnings Pendientes:\*\* (\d+)/);
|
|
151
|
+
const evolutionMatch = content.match(/\*\*Última Evolución:\*\* (.+)/);
|
|
152
|
+
const total = totalMatch ? parseInt(totalMatch[1], 10) : 0;
|
|
153
|
+
const pending = pendingMatch ? parseInt(pendingMatch[1], 10) : 0;
|
|
154
|
+
const lastEvolution = evolutionMatch?.[1] === 'Nunca' ? null : (evolutionMatch?.[1] || null);
|
|
155
|
+
stats.push({
|
|
156
|
+
name: skillName,
|
|
157
|
+
path: skillPath,
|
|
158
|
+
totalLearnings: total,
|
|
159
|
+
pendingLearnings: pending,
|
|
160
|
+
lastEvolution,
|
|
161
|
+
readyForEvolution: pending >= this.config.evolutionThreshold
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
return stats;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Check if any skills are ready for evolution
|
|
168
|
+
*/
|
|
169
|
+
async getSkillsReadyForEvolution() {
|
|
170
|
+
const allStats = await this.getSkillStats();
|
|
171
|
+
return allStats.filter(s => s.readyForEvolution);
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Trigger skill evolution for ready skills
|
|
175
|
+
*/
|
|
176
|
+
async triggerEvolution(skillName) {
|
|
177
|
+
const readySkills = await this.getSkillsReadyForEvolution();
|
|
178
|
+
if (skillName) {
|
|
179
|
+
const target = readySkills.find(s => s.name === skillName);
|
|
180
|
+
if (!target) {
|
|
181
|
+
throw new Error(`Skill ${skillName} not ready for evolution or not found`);
|
|
182
|
+
}
|
|
183
|
+
return this.evolveSkill(target);
|
|
184
|
+
}
|
|
185
|
+
// Evolve all ready skills
|
|
186
|
+
const results = [];
|
|
187
|
+
for (const skill of readySkills) {
|
|
188
|
+
const evolved = await this.evolveSkill(skill);
|
|
189
|
+
results.push(...evolved);
|
|
190
|
+
}
|
|
191
|
+
return results;
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Evolve a single skill
|
|
195
|
+
*/
|
|
196
|
+
async evolveSkill(skill) {
|
|
197
|
+
const changes = [];
|
|
198
|
+
const learningsFile = join(this.config.skillsDir, skill.path, 'learnings.md');
|
|
199
|
+
const skillFile = join(this.config.skillsDir, skill.path, 'SKILL.md');
|
|
200
|
+
if (!existsSync(learningsFile) || !existsSync(skillFile)) {
|
|
201
|
+
return changes;
|
|
202
|
+
}
|
|
203
|
+
const learningsContent = readFileSync(learningsFile, 'utf-8');
|
|
204
|
+
// Extract learnings
|
|
205
|
+
const learningBlocks = learningsContent.match(/### Learning \d{4}-\d{2}-\d{2}[\s\S]*?(?=### Learning|\n## |$)/g) || [];
|
|
206
|
+
// Analyze patterns
|
|
207
|
+
const patterns = this.analyzeLearningPatterns(learningBlocks);
|
|
208
|
+
if (patterns.length > 0) {
|
|
209
|
+
changes.push(`Found ${patterns.length} patterns to add to ${skill.name}`);
|
|
210
|
+
// Log the evolution
|
|
211
|
+
const evolutionLog = join(this.config.skillsDir, 'meta/skill-evolver/evolution-log.md');
|
|
212
|
+
if (existsSync(evolutionLog)) {
|
|
213
|
+
const date = new Date().toISOString();
|
|
214
|
+
const entry = `
|
|
215
|
+
## Evolution ${date}
|
|
216
|
+
|
|
217
|
+
**Skill Evolved:** ${skill.name}
|
|
218
|
+
**Learnings Analyzed:** ${skill.pendingLearnings}
|
|
219
|
+
**Patterns Found:** ${patterns.length}
|
|
220
|
+
|
|
221
|
+
**Patterns:**
|
|
222
|
+
${patterns.map(p => `- ${p}`).join('\n')}
|
|
223
|
+
|
|
224
|
+
---
|
|
225
|
+
`;
|
|
226
|
+
let logContent = readFileSync(evolutionLog, 'utf-8');
|
|
227
|
+
// Update total evolutions
|
|
228
|
+
const totalMatch = logContent.match(/\*\*Total Evoluciones:\*\* (\d+)/);
|
|
229
|
+
if (totalMatch) {
|
|
230
|
+
const total = parseInt(totalMatch[1], 10);
|
|
231
|
+
logContent = logContent.replace(/\*\*Total Evoluciones:\*\* \d+/, `**Total Evoluciones:** ${total + 1}`);
|
|
232
|
+
}
|
|
233
|
+
// Insert after ## Evolution History
|
|
234
|
+
const historyHeader = '## Evolution History';
|
|
235
|
+
const historyIndex = logContent.indexOf(historyHeader);
|
|
236
|
+
if (historyIndex !== -1) {
|
|
237
|
+
const insertPoint = logContent.indexOf('\n', historyIndex) + 1;
|
|
238
|
+
logContent = logContent.slice(0, insertPoint) + '\n' + entry + logContent.slice(insertPoint);
|
|
239
|
+
}
|
|
240
|
+
writeFileSync(evolutionLog, logContent);
|
|
241
|
+
}
|
|
242
|
+
// Reset pending count in learnings.md
|
|
243
|
+
let content = readFileSync(learningsFile, 'utf-8');
|
|
244
|
+
content = content.replace(/\*\*Learnings Pendientes:\*\* \d+/, '**Learnings Pendientes:** 0');
|
|
245
|
+
content = content.replace(/\*\*Última Evolución:\*\* .+/, `**Última Evolución:** ${new Date().toISOString().split('T')[0]}`);
|
|
246
|
+
writeFileSync(learningsFile, content);
|
|
247
|
+
}
|
|
248
|
+
return changes;
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Analyze learnings to find common patterns
|
|
252
|
+
*/
|
|
253
|
+
analyzeLearningPatterns(learningBlocks) {
|
|
254
|
+
const patterns = [];
|
|
255
|
+
const problemCounts = new Map();
|
|
256
|
+
for (const block of learningBlocks) {
|
|
257
|
+
const problemMatch = block.match(/\*\*Problem:\*\* (.+)/);
|
|
258
|
+
if (problemMatch) {
|
|
259
|
+
const problem = problemMatch[1].toLowerCase().trim();
|
|
260
|
+
problemCounts.set(problem, (problemCounts.get(problem) || 0) + 1);
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
// Find patterns that appear 2+ times
|
|
264
|
+
for (const [problem, count] of problemCounts) {
|
|
265
|
+
if (count >= 2) {
|
|
266
|
+
patterns.push(`"${problem}" (${count} occurrences)`);
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
return patterns;
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Migrate memories from memory-keeper to skills
|
|
273
|
+
*/
|
|
274
|
+
async migrateFromMemoryKeeper(memories) {
|
|
275
|
+
let migrated = 0;
|
|
276
|
+
for (const memory of memories) {
|
|
277
|
+
// Try to detect skill from memory content
|
|
278
|
+
const skill = this.detectSkillFromContent(memory.value);
|
|
279
|
+
if (!skill)
|
|
280
|
+
continue;
|
|
281
|
+
const learning = {
|
|
282
|
+
type: 'general',
|
|
283
|
+
skill,
|
|
284
|
+
context: memory.key,
|
|
285
|
+
problem: 'Migrated from memory-keeper',
|
|
286
|
+
solution: memory.value.slice(0, 200),
|
|
287
|
+
confidence: 0.6,
|
|
288
|
+
timestamp: new Date().toISOString(),
|
|
289
|
+
source: 'sync'
|
|
290
|
+
};
|
|
291
|
+
const result = await this.recordLearning(learning);
|
|
292
|
+
if (result.skillsWritten)
|
|
293
|
+
migrated++;
|
|
294
|
+
}
|
|
295
|
+
return migrated;
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* Detect which skill a memory content relates to
|
|
299
|
+
*/
|
|
300
|
+
detectSkillFromContent(content) {
|
|
301
|
+
const lower = content.toLowerCase();
|
|
302
|
+
if (lower.includes('type') || lower.includes('any') || lower.includes('typescript')) {
|
|
303
|
+
return 'type-safety-enforcer';
|
|
304
|
+
}
|
|
305
|
+
if (lower.includes('useeffect') || lower.includes('render') || lower.includes('performance')) {
|
|
306
|
+
return 'useeffect-reducer';
|
|
307
|
+
}
|
|
308
|
+
if (lower.includes('debug') || lower.includes('error') || lower.includes('fix')) {
|
|
309
|
+
return 'systematic-debugging';
|
|
310
|
+
}
|
|
311
|
+
if (lower.includes('structure') || lower.includes('domain') || lower.includes('architecture')) {
|
|
312
|
+
return 'domain-structure-guardian';
|
|
313
|
+
}
|
|
314
|
+
if (lower.includes('duplicate') || lower.includes('refactor')) {
|
|
315
|
+
return 'code-deduplicator';
|
|
316
|
+
}
|
|
317
|
+
return null;
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
// =============================================================================
|
|
321
|
+
// Factory & Export
|
|
322
|
+
// =============================================================================
|
|
323
|
+
let bridgeInstance = null;
|
|
324
|
+
export function getSkillLearningBridge(config) {
|
|
325
|
+
if (!bridgeInstance || config) {
|
|
326
|
+
bridgeInstance = new SkillLearningBridge(config);
|
|
327
|
+
}
|
|
328
|
+
return bridgeInstance;
|
|
329
|
+
}
|
|
330
|
+
export default SkillLearningBridge;
|
|
331
|
+
//# sourceMappingURL=skill-learning-bridge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-learning-bridge.js","sourceRoot":"","sources":["../../src/services/skill-learning-bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Unified Memory Router
|
|
3
|
+
* @description Routes memory operations across all storage backends
|
|
4
|
+
*
|
|
5
|
+
* ## Architecture
|
|
6
|
+
*
|
|
7
|
+
* UnifiedMemoryRouter routes operations to multiple backends:
|
|
8
|
+
*
|
|
9
|
+
* save(item):
|
|
10
|
+
* - memory-keeper MCP (local, fast, session-based)
|
|
11
|
+
* - skills/learnings.md (if learning type)
|
|
12
|
+
* - cmp-standards cloud (persistent, cross-project)
|
|
13
|
+
*
|
|
14
|
+
* search(query):
|
|
15
|
+
* - memory-keeper (local context)
|
|
16
|
+
* - skills (learned patterns)
|
|
17
|
+
* - cloud (historical knowledge)
|
|
18
|
+
*
|
|
19
|
+
* sync():
|
|
20
|
+
* - Bidirectional sync between all backends
|
|
21
|
+
*
|
|
22
|
+
* @version 1.0.0
|
|
23
|
+
*/
|
|
24
|
+
import type { DevSystem } from '../types/index.js';
|
|
25
|
+
export interface MemoryItem {
|
|
26
|
+
id?: string;
|
|
27
|
+
type: 'memory' | 'learning' | 'pattern' | 'task' | 'decision' | 'knowledge';
|
|
28
|
+
title: string;
|
|
29
|
+
content: string;
|
|
30
|
+
domain?: string;
|
|
31
|
+
tags?: string[];
|
|
32
|
+
priority?: 'critical' | 'high' | 'normal' | 'low';
|
|
33
|
+
source?: 'auto' | 'manual' | 'sync' | 'claude' | 'gemini';
|
|
34
|
+
metadata?: Record<string, unknown>;
|
|
35
|
+
}
|
|
36
|
+
export interface SearchQuery {
|
|
37
|
+
text?: string;
|
|
38
|
+
type?: MemoryItem['type'] | MemoryItem['type'][];
|
|
39
|
+
domain?: string;
|
|
40
|
+
tags?: string[];
|
|
41
|
+
limit?: number;
|
|
42
|
+
includeSkills?: boolean;
|
|
43
|
+
includeCloud?: boolean;
|
|
44
|
+
}
|
|
45
|
+
export interface SearchResult {
|
|
46
|
+
item: MemoryItem;
|
|
47
|
+
source: 'memory-keeper' | 'skills' | 'cloud';
|
|
48
|
+
score: number;
|
|
49
|
+
}
|
|
50
|
+
export interface SyncResult {
|
|
51
|
+
memoryKeeperToCloud: number;
|
|
52
|
+
cloudToMemoryKeeper: number;
|
|
53
|
+
skillsUpdated: number;
|
|
54
|
+
errors: string[];
|
|
55
|
+
}
|
|
56
|
+
export interface RouterConfig {
|
|
57
|
+
system: DevSystem;
|
|
58
|
+
skillsDir: string;
|
|
59
|
+
enableCloud: boolean;
|
|
60
|
+
enableSkills: boolean;
|
|
61
|
+
cloudSyncInterval: number;
|
|
62
|
+
}
|
|
63
|
+
export declare class UnifiedMemoryRouter {
|
|
64
|
+
private config;
|
|
65
|
+
private skillBridge;
|
|
66
|
+
private memoryKeeper;
|
|
67
|
+
private cloudMemory;
|
|
68
|
+
private syncTimer;
|
|
69
|
+
private syncedKeys;
|
|
70
|
+
constructor(config?: Partial<RouterConfig>);
|
|
71
|
+
/**
|
|
72
|
+
* Save an item to all appropriate backends
|
|
73
|
+
*/
|
|
74
|
+
save(item: MemoryItem): Promise<{
|
|
75
|
+
memoryKeeper: boolean;
|
|
76
|
+
skills: boolean;
|
|
77
|
+
cloud: boolean;
|
|
78
|
+
}>;
|
|
79
|
+
/**
|
|
80
|
+
* Search across all backends
|
|
81
|
+
*/
|
|
82
|
+
search(query: SearchQuery): Promise<SearchResult[]>;
|
|
83
|
+
/**
|
|
84
|
+
* Get context for session start
|
|
85
|
+
*/
|
|
86
|
+
getSessionContext(domain?: string): Promise<{
|
|
87
|
+
recentMemories: MemoryItem[];
|
|
88
|
+
recentLearnings: MemoryItem[];
|
|
89
|
+
activePatterns: MemoryItem[];
|
|
90
|
+
skillsStatus: Array<{
|
|
91
|
+
name: string;
|
|
92
|
+
learnings: number;
|
|
93
|
+
ready: boolean;
|
|
94
|
+
}>;
|
|
95
|
+
}>;
|
|
96
|
+
/**
|
|
97
|
+
* Sync between all backends
|
|
98
|
+
*/
|
|
99
|
+
sync(): Promise<SyncResult>;
|
|
100
|
+
/**
|
|
101
|
+
* Start periodic sync
|
|
102
|
+
*/
|
|
103
|
+
private startPeriodicSync;
|
|
104
|
+
/**
|
|
105
|
+
* Stop periodic sync
|
|
106
|
+
*/
|
|
107
|
+
stopPeriodicSync(): void;
|
|
108
|
+
private saveToMemoryKeeper;
|
|
109
|
+
private searchMemoryKeeper;
|
|
110
|
+
private getUnsyncedFromMemoryKeeper;
|
|
111
|
+
private mapTypeToCategory;
|
|
112
|
+
private mapCategoryToType;
|
|
113
|
+
private cloudInitialized;
|
|
114
|
+
private initCloudIfNeeded;
|
|
115
|
+
private saveToCloud;
|
|
116
|
+
private searchCloud;
|
|
117
|
+
private getUnsyncedFromCloud;
|
|
118
|
+
private searchSkills;
|
|
119
|
+
private itemToLearning;
|
|
120
|
+
}
|
|
121
|
+
export declare function getUnifiedMemoryRouter(config?: Partial<RouterConfig>): UnifiedMemoryRouter;
|
|
122
|
+
export default UnifiedMemoryRouter;
|
|
123
|
+
//# sourceMappingURL=unified-memory-router.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unified-memory-router.d.ts","sourceRoot":"","sources":["../../src/services/unified-memory-router.ts"],"names":[],"mappings":"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"}
|