cmp-memory-system 1.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 (161) hide show
  1. package/README.md +541 -0
  2. package/dist/analytics/index.d.ts +5 -0
  3. package/dist/analytics/index.d.ts.map +1 -0
  4. package/dist/analytics/index.js +5 -0
  5. package/dist/analytics/index.js.map +1 -0
  6. package/dist/analytics/tracker.d.ts +107 -0
  7. package/dist/analytics/tracker.d.ts.map +1 -0
  8. package/dist/analytics/tracker.js +333 -0
  9. package/dist/analytics/tracker.js.map +1 -0
  10. package/dist/auto-improve/eslint-generator.d.ts +36 -0
  11. package/dist/auto-improve/eslint-generator.d.ts.map +1 -0
  12. package/dist/auto-improve/eslint-generator.js +280 -0
  13. package/dist/auto-improve/eslint-generator.js.map +1 -0
  14. package/dist/auto-improve/index.d.ts +6 -0
  15. package/dist/auto-improve/index.d.ts.map +1 -0
  16. package/dist/auto-improve/index.js +6 -0
  17. package/dist/auto-improve/index.js.map +1 -0
  18. package/dist/auto-improve/pattern-detector.d.ts +92 -0
  19. package/dist/auto-improve/pattern-detector.d.ts.map +1 -0
  20. package/dist/auto-improve/pattern-detector.js +231 -0
  21. package/dist/auto-improve/pattern-detector.js.map +1 -0
  22. package/dist/cli/index.d.ts +16 -0
  23. package/dist/cli/index.d.ts.map +1 -0
  24. package/dist/cli/index.js +636 -0
  25. package/dist/cli/index.js.map +1 -0
  26. package/dist/dashboard/index.d.ts +6 -0
  27. package/dist/dashboard/index.d.ts.map +1 -0
  28. package/dist/dashboard/index.js +6 -0
  29. package/dist/dashboard/index.js.map +1 -0
  30. package/dist/dashboard/server.d.ts +15 -0
  31. package/dist/dashboard/server.d.ts.map +1 -0
  32. package/dist/dashboard/server.js +373 -0
  33. package/dist/dashboard/server.js.map +1 -0
  34. package/dist/dashboard/ui.d.ts +9 -0
  35. package/dist/dashboard/ui.d.ts.map +1 -0
  36. package/dist/dashboard/ui.js +530 -0
  37. package/dist/dashboard/ui.js.map +1 -0
  38. package/dist/db/client.d.ts +66 -0
  39. package/dist/db/client.d.ts.map +1 -0
  40. package/dist/db/client.js +159 -0
  41. package/dist/db/client.js.map +1 -0
  42. package/dist/db/drizzle-client.d.ts +302 -0
  43. package/dist/db/drizzle-client.d.ts.map +1 -0
  44. package/dist/db/drizzle-client.js +404 -0
  45. package/dist/db/drizzle-client.js.map +1 -0
  46. package/dist/db/index.d.ts +5 -0
  47. package/dist/db/index.d.ts.map +1 -0
  48. package/dist/db/index.js +5 -0
  49. package/dist/db/index.js.map +1 -0
  50. package/dist/feedback/collector.d.ts +74 -0
  51. package/dist/feedback/collector.d.ts.map +1 -0
  52. package/dist/feedback/collector.js +231 -0
  53. package/dist/feedback/collector.js.map +1 -0
  54. package/dist/feedback/index.d.ts +5 -0
  55. package/dist/feedback/index.d.ts.map +1 -0
  56. package/dist/feedback/index.js +5 -0
  57. package/dist/feedback/index.js.map +1 -0
  58. package/dist/hooks/index.d.ts +8 -0
  59. package/dist/hooks/index.d.ts.map +1 -0
  60. package/dist/hooks/index.js +8 -0
  61. package/dist/hooks/index.js.map +1 -0
  62. package/dist/hooks/memory-checkpoint.d.ts +43 -0
  63. package/dist/hooks/memory-checkpoint.d.ts.map +1 -0
  64. package/dist/hooks/memory-checkpoint.js +257 -0
  65. package/dist/hooks/memory-checkpoint.js.map +1 -0
  66. package/dist/hooks/post-tool-use.d.ts +61 -0
  67. package/dist/hooks/post-tool-use.d.ts.map +1 -0
  68. package/dist/hooks/post-tool-use.js +262 -0
  69. package/dist/hooks/post-tool-use.js.map +1 -0
  70. package/dist/hooks/pre-tool-use.d.ts +34 -0
  71. package/dist/hooks/pre-tool-use.d.ts.map +1 -0
  72. package/dist/hooks/pre-tool-use.js +358 -0
  73. package/dist/hooks/pre-tool-use.js.map +1 -0
  74. package/dist/hooks/session-start.d.ts +38 -0
  75. package/dist/hooks/session-start.d.ts.map +1 -0
  76. package/dist/hooks/session-start.js +274 -0
  77. package/dist/hooks/session-start.js.map +1 -0
  78. package/dist/index.d.ts +29 -0
  79. package/dist/index.d.ts.map +1 -0
  80. package/dist/index.js +39 -0
  81. package/dist/index.js.map +1 -0
  82. package/dist/mcp/index.d.ts +5 -0
  83. package/dist/mcp/index.d.ts.map +1 -0
  84. package/dist/mcp/index.js +5 -0
  85. package/dist/mcp/index.js.map +1 -0
  86. package/dist/mcp/server.d.ts +42 -0
  87. package/dist/mcp/server.d.ts.map +1 -0
  88. package/dist/mcp/server.js +599 -0
  89. package/dist/mcp/server.js.map +1 -0
  90. package/dist/registry/embeddings.d.ts +38 -0
  91. package/dist/registry/embeddings.d.ts.map +1 -0
  92. package/dist/registry/embeddings.js +110 -0
  93. package/dist/registry/embeddings.js.map +1 -0
  94. package/dist/registry/generator.d.ts +41 -0
  95. package/dist/registry/generator.d.ts.map +1 -0
  96. package/dist/registry/generator.js +323 -0
  97. package/dist/registry/generator.js.map +1 -0
  98. package/dist/registry/index.d.ts +6 -0
  99. package/dist/registry/index.d.ts.map +1 -0
  100. package/dist/registry/index.js +6 -0
  101. package/dist/registry/index.js.map +1 -0
  102. package/dist/services/IdeaCollector.d.ts +103 -0
  103. package/dist/services/IdeaCollector.d.ts.map +1 -0
  104. package/dist/services/IdeaCollector.js +371 -0
  105. package/dist/services/IdeaCollector.js.map +1 -0
  106. package/dist/services/TaskTracker.d.ts +89 -0
  107. package/dist/services/TaskTracker.d.ts.map +1 -0
  108. package/dist/services/TaskTracker.js +324 -0
  109. package/dist/services/TaskTracker.js.map +1 -0
  110. package/dist/services/WorkPlanManager.d.ts +107 -0
  111. package/dist/services/WorkPlanManager.d.ts.map +1 -0
  112. package/dist/services/WorkPlanManager.js +440 -0
  113. package/dist/services/WorkPlanManager.js.map +1 -0
  114. package/dist/services/auto-inject.d.ts +77 -0
  115. package/dist/services/auto-inject.d.ts.map +1 -0
  116. package/dist/services/auto-inject.js +289 -0
  117. package/dist/services/auto-inject.js.map +1 -0
  118. package/dist/services/auto-tag.d.ts +61 -0
  119. package/dist/services/auto-tag.d.ts.map +1 -0
  120. package/dist/services/auto-tag.js +203 -0
  121. package/dist/services/auto-tag.js.map +1 -0
  122. package/dist/services/cross-project-sync.d.ts +76 -0
  123. package/dist/services/cross-project-sync.d.ts.map +1 -0
  124. package/dist/services/cross-project-sync.js +235 -0
  125. package/dist/services/cross-project-sync.js.map +1 -0
  126. package/dist/services/index.d.ts +15 -0
  127. package/dist/services/index.d.ts.map +1 -0
  128. package/dist/services/index.js +18 -0
  129. package/dist/services/index.js.map +1 -0
  130. package/dist/services/memory-consolidation.d.ts +77 -0
  131. package/dist/services/memory-consolidation.d.ts.map +1 -0
  132. package/dist/services/memory-consolidation.js +298 -0
  133. package/dist/services/memory-consolidation.js.map +1 -0
  134. package/dist/services/semantic-search.d.ts +93 -0
  135. package/dist/services/semantic-search.d.ts.map +1 -0
  136. package/dist/services/semantic-search.js +278 -0
  137. package/dist/services/semantic-search.js.map +1 -0
  138. package/dist/services/weekly-digest.d.ts +105 -0
  139. package/dist/services/weekly-digest.d.ts.map +1 -0
  140. package/dist/services/weekly-digest.js +292 -0
  141. package/dist/services/weekly-digest.js.map +1 -0
  142. package/dist/types/index.d.ts +274 -0
  143. package/dist/types/index.d.ts.map +1 -0
  144. package/dist/types/index.js +84 -0
  145. package/dist/types/index.js.map +1 -0
  146. package/dist/utils/config.d.ts +21 -0
  147. package/dist/utils/config.d.ts.map +1 -0
  148. package/dist/utils/config.js +89 -0
  149. package/dist/utils/config.js.map +1 -0
  150. package/dist/utils/index.d.ts +6 -0
  151. package/dist/utils/index.d.ts.map +1 -0
  152. package/dist/utils/index.js +6 -0
  153. package/dist/utils/index.js.map +1 -0
  154. package/dist/utils/paths.d.ts +28 -0
  155. package/dist/utils/paths.d.ts.map +1 -0
  156. package/dist/utils/paths.js +80 -0
  157. package/dist/utils/paths.js.map +1 -0
  158. package/package.json +89 -0
  159. package/templates/memory-config.json +82 -0
  160. package/templates/memory-config.schema.json +212 -0
  161. package/templates/settings.json +58 -0
@@ -0,0 +1,289 @@
1
+ /**
2
+ * Auto-Inject Service
3
+ *
4
+ * Automatically injects relevant memories into Claude sessions.
5
+ * - Detects working module from git diff
6
+ * - Finds semantically relevant memories
7
+ * - Formats context for injection
8
+ */
9
+ import { exec } from 'child_process';
10
+ import { promisify } from 'util';
11
+ const execAsync = promisify(exec);
12
+ // =============================================================================
13
+ // AUTO-INJECT SERVICE
14
+ // =============================================================================
15
+ export class AutoInjectService {
16
+ client;
17
+ searchService;
18
+ config;
19
+ constructor(client, searchService, config) {
20
+ this.client = client;
21
+ this.searchService = searchService;
22
+ this.config = config;
23
+ }
24
+ /**
25
+ * Generate session context for auto-injection
26
+ */
27
+ async generateSessionContext(projectRoot) {
28
+ // 1. Detect working module from git
29
+ const { module, recentFiles } = await this.detectWorkingModule(projectRoot);
30
+ // 2. Get relevant memories
31
+ const memories = await this.getRelevantMemories(module, recentFiles);
32
+ // 3. Get triggered patterns
33
+ const patterns = await this.getTriggeredPatterns();
34
+ // 4. Get stats
35
+ const stats = await this.getSessionStats(memories.length, patterns.length);
36
+ return {
37
+ system: this.config.system,
38
+ projectName: this.config.projectName,
39
+ detectedModule: module,
40
+ recentFiles: recentFiles.slice(0, 10),
41
+ memories,
42
+ patterns,
43
+ stats,
44
+ };
45
+ }
46
+ /**
47
+ * Format context for Claude injection
48
+ */
49
+ formatForInjection(context) {
50
+ const lines = [];
51
+ // Header
52
+ lines.push(`# Session Context: ${context.projectName}`);
53
+ lines.push(`System: ${context.system}`);
54
+ lines.push('');
55
+ // Module detection
56
+ if (context.detectedModule) {
57
+ lines.push(`## Working Module: ${context.detectedModule}`);
58
+ lines.push('');
59
+ }
60
+ // Relevant memories
61
+ if (context.memories.length > 0) {
62
+ lines.push('## Relevant Memories');
63
+ lines.push('');
64
+ for (const memory of context.memories) {
65
+ lines.push(`### ${memory.title}`);
66
+ if (memory.relevanceScore) {
67
+ lines.push(`*Relevance: ${Math.round(memory.relevanceScore * 100)}%*`);
68
+ }
69
+ lines.push('');
70
+ lines.push(memory.body);
71
+ lines.push('');
72
+ }
73
+ }
74
+ // Triggered patterns
75
+ if (context.patterns.length > 0) {
76
+ lines.push('## Active Patterns (Auto-Improvement Triggered)');
77
+ lines.push('');
78
+ for (const pattern of context.patterns) {
79
+ lines.push(`- **${pattern.patternId}** (${pattern.occurrences}x, ${pattern.severity})`);
80
+ lines.push(` ${pattern.description}`);
81
+ }
82
+ lines.push('');
83
+ }
84
+ // Stats footer
85
+ lines.push('---');
86
+ lines.push(`Loaded ${context.stats.loadedMemories}/${context.stats.totalMemories} memories`);
87
+ if (context.stats.triggeredPatterns > 0) {
88
+ lines.push(`${context.stats.triggeredPatterns} patterns require auto-improvement`);
89
+ }
90
+ return lines.join('\n');
91
+ }
92
+ /**
93
+ * Quick context for minimal injection
94
+ */
95
+ async getQuickContext(projectRoot) {
96
+ const { module } = await this.detectWorkingModule(projectRoot);
97
+ // Get 3 most recent memories for the module
98
+ const memories = await this.client.getMemories(module ?? undefined, 3);
99
+ if (memories.length === 0) {
100
+ return `Session: ${this.config.projectName} (${this.config.system})\nNo recent memories.`;
101
+ }
102
+ const lines = [
103
+ `Session: ${this.config.projectName} (${this.config.system})`,
104
+ module ? `Module: ${module}` : '',
105
+ '',
106
+ 'Recent memories:',
107
+ ];
108
+ for (const m of memories) {
109
+ const content = m.content;
110
+ if (content) {
111
+ lines.push(`- ${content.title}`);
112
+ }
113
+ }
114
+ return lines.filter(Boolean).join('\n');
115
+ }
116
+ // ===========================================================================
117
+ // PRIVATE METHODS
118
+ // ===========================================================================
119
+ /**
120
+ * Detect working module from git diff
121
+ */
122
+ async detectWorkingModule(projectRoot) {
123
+ try {
124
+ // Try multiple git commands
125
+ let stdout = '';
126
+ try {
127
+ const result = await execAsync('git diff --name-only HEAD~10..HEAD 2>/dev/null', { cwd: projectRoot });
128
+ stdout = result.stdout;
129
+ }
130
+ catch {
131
+ // Try unstaged changes
132
+ try {
133
+ const result = await execAsync('git diff --name-only', { cwd: projectRoot });
134
+ stdout = result.stdout;
135
+ }
136
+ catch {
137
+ // No git changes
138
+ }
139
+ }
140
+ const recentFiles = stdout.trim().split('\n').filter(Boolean);
141
+ if (recentFiles.length === 0) {
142
+ return { module: null, recentFiles: [] };
143
+ }
144
+ // Score modules from file paths
145
+ const moduleScores = new Map();
146
+ for (const domain of this.config.domains) {
147
+ moduleScores.set(domain, 0);
148
+ }
149
+ // Common patterns
150
+ const patterns = [
151
+ { pattern: /marketing[-_]?hub/i, module: 'marketing', score: 10 },
152
+ { pattern: /video[-_]?studio/i, module: 'video-studio', score: 10 },
153
+ { pattern: /avatars?/i, module: 'avatars', score: 10 },
154
+ { pattern: /content[-_]?ideas?/i, module: 'content-ideas', score: 10 },
155
+ { pattern: /campaigns?/i, module: 'campaigns', score: 10 },
156
+ { pattern: /knowledge[-_]?base/i, module: 'knowledge', score: 10 },
157
+ { pattern: /social[-_]?media/i, module: 'social', score: 10 },
158
+ { pattern: /server\/api/i, module: 'api', score: 5 },
159
+ { pattern: /server\/schema/i, module: 'schema', score: 5 },
160
+ { pattern: /hooks\//i, module: 'hooks', score: 3 },
161
+ { pattern: /components\//i, module: 'components', score: 2 },
162
+ ];
163
+ // Score each file
164
+ for (const file of recentFiles) {
165
+ // Check domains
166
+ for (const domain of this.config.domains) {
167
+ if (file.toLowerCase().includes(domain.toLowerCase())) {
168
+ moduleScores.set(domain, (moduleScores.get(domain) ?? 0) + 5);
169
+ }
170
+ }
171
+ // Check patterns
172
+ for (const { pattern, module, score } of patterns) {
173
+ if (pattern.test(file)) {
174
+ moduleScores.set(module, (moduleScores.get(module) ?? 0) + score);
175
+ }
176
+ }
177
+ }
178
+ // Find highest scoring module
179
+ let bestModule = null;
180
+ let bestScore = 0;
181
+ for (const [module, score] of moduleScores) {
182
+ if (score > bestScore) {
183
+ bestScore = score;
184
+ bestModule = module;
185
+ }
186
+ }
187
+ return { module: bestModule, recentFiles };
188
+ }
189
+ catch {
190
+ return { module: null, recentFiles: [] };
191
+ }
192
+ }
193
+ /**
194
+ * Get relevant memories using semantic search
195
+ */
196
+ async getRelevantMemories(module, recentFiles) {
197
+ const memories = [];
198
+ // 1. Get module-specific memories first
199
+ if (module) {
200
+ const moduleMemories = await this.searchService.search(module, {
201
+ domain: module,
202
+ limit: 3,
203
+ threshold: 0.4,
204
+ });
205
+ for (const result of moduleMemories) {
206
+ memories.push({
207
+ id: result.item.id,
208
+ title: result.content.title,
209
+ body: result.content.body,
210
+ domain: result.content.domain,
211
+ relevanceScore: result.score,
212
+ });
213
+ }
214
+ }
215
+ // 2. Get file-based context
216
+ if (recentFiles.length > 0 && memories.length < 5) {
217
+ // Build query from file paths
218
+ const fileContext = recentFiles.slice(0, 5).join(' ');
219
+ const fileMemories = await this.searchService.search(fileContext, {
220
+ limit: 5 - memories.length,
221
+ threshold: 0.35,
222
+ });
223
+ for (const result of fileMemories) {
224
+ // Avoid duplicates
225
+ if (!memories.some(m => m.id === result.item.id)) {
226
+ memories.push({
227
+ id: result.item.id,
228
+ title: result.content.title,
229
+ body: result.content.body,
230
+ domain: result.content.domain,
231
+ relevanceScore: result.score,
232
+ });
233
+ }
234
+ }
235
+ }
236
+ // 3. Fill with recent if needed
237
+ if (memories.length < 3) {
238
+ const recent = await this.client.getRecentMemories(3 - memories.length);
239
+ for (const item of recent) {
240
+ const content = item.content;
241
+ if (content && !memories.some(m => m.id === item.id)) {
242
+ memories.push({
243
+ id: item.id,
244
+ title: content.title,
245
+ body: content.body,
246
+ domain: content.domain,
247
+ });
248
+ }
249
+ }
250
+ }
251
+ return memories.slice(0, 5);
252
+ }
253
+ /**
254
+ * Get triggered patterns
255
+ */
256
+ async getTriggeredPatterns() {
257
+ const patterns = await this.client.getTriggeredPatterns(3);
258
+ return patterns.map(item => {
259
+ const content = item.content;
260
+ return {
261
+ patternId: content?.patternId ?? 'unknown',
262
+ description: content?.description ?? '',
263
+ occurrences: content?.occurrences ?? 0,
264
+ severity: content?.severity ?? 'medium',
265
+ };
266
+ });
267
+ }
268
+ /**
269
+ * Get session statistics
270
+ */
271
+ async getSessionStats(loadedMemories, triggeredPatterns) {
272
+ const stats = await this.client.getStats();
273
+ return {
274
+ totalMemories: stats.totalMemories,
275
+ loadedMemories,
276
+ triggeredPatterns,
277
+ };
278
+ }
279
+ }
280
+ // =============================================================================
281
+ // FACTORY
282
+ // =============================================================================
283
+ /**
284
+ * Create an auto-inject service
285
+ */
286
+ export function createAutoInjectService(client, searchService, config) {
287
+ return new AutoInjectService(client, searchService, config);
288
+ }
289
+ //# sourceMappingURL=auto-inject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-inject.js","sourceRoot":"","sources":["../../src/services/auto-inject.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Auto-Tag Service
3
+ *
4
+ * Automatically tags memories using AI analysis:
5
+ * - Extracts domain from content
6
+ * - Identifies key concepts
7
+ * - Suggests tags based on content
8
+ */
9
+ import type { DrizzleMemoryClient } from '../db/drizzle-client.js';
10
+ import type { MemoryContent } from '../types/index.js';
11
+ export interface AutoTagResult {
12
+ memoryId: string;
13
+ suggestedTags: string[];
14
+ suggestedDomain: string | null;
15
+ confidence: number;
16
+ }
17
+ export interface BatchTagResult {
18
+ processed: number;
19
+ tagged: number;
20
+ skipped: number;
21
+ }
22
+ export declare class AutoTagService {
23
+ private client;
24
+ constructor(client: DrizzleMemoryClient);
25
+ /**
26
+ * Analyze memory and suggest tags
27
+ */
28
+ analyzeMemory(memoryId: string): Promise<AutoTagResult | null>;
29
+ /**
30
+ * Analyze content and suggest tags
31
+ */
32
+ analyzeContent(memoryId: string, content: MemoryContent): AutoTagResult;
33
+ /**
34
+ * Auto-tag a memory and update it
35
+ */
36
+ autoTag(memoryId: string, options?: {
37
+ append?: boolean;
38
+ minConfidence?: number;
39
+ }): Promise<AutoTagResult | null>;
40
+ /**
41
+ * Batch auto-tag all memories
42
+ */
43
+ batchAutoTag(options?: {
44
+ limit?: number;
45
+ onlyUntagged?: boolean;
46
+ minConfidence?: number;
47
+ }): Promise<BatchTagResult>;
48
+ /**
49
+ * Get tag statistics
50
+ */
51
+ getTagStats(): Promise<{
52
+ totalTags: number;
53
+ tagCounts: Record<string, number>;
54
+ untaggedCount: number;
55
+ }>;
56
+ }
57
+ /**
58
+ * Create an auto-tag service
59
+ */
60
+ export declare function createAutoTagService(client: DrizzleMemoryClient): AutoTagService;
61
+ //# sourceMappingURL=auto-tag.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-tag.d.ts","sourceRoot":"","sources":["../../src/services/auto-tag.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAClE,OAAO,KAAK,EAAW,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAM/D,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;CAChB;AAoDD,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAqB;gBAEvB,MAAM,EAAE,mBAAmB;IAIvC;;OAEG;IACG,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAUpE;;OAEG;IACH,cAAc,CACZ,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,aAAa,GACrB,aAAa;IA4ChB;;OAEG;IACG,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QACxC,MAAM,CAAC,EAAE,OAAO,CAAA;QAChB,aAAa,CAAC,EAAE,MAAM,CAAA;KACvB,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAmCjC;;OAEG;IACG,YAAY,CAAC,OAAO,CAAC,EAAE;QAC3B,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,YAAY,CAAC,EAAE,OAAO,CAAA;QACtB,aAAa,CAAC,EAAE,MAAM,CAAA;KACvB,GAAG,OAAO,CAAC,cAAc,CAAC;IAkC3B;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC;QAC3B,SAAS,EAAE,MAAM,CAAA;QACjB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QACjC,aAAa,EAAE,MAAM,CAAA;KACtB,CAAC;CAuBH;AAMD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,mBAAmB,GAAG,cAAc,CAEhF"}
@@ -0,0 +1,203 @@
1
+ /**
2
+ * Auto-Tag Service
3
+ *
4
+ * Automatically tags memories using AI analysis:
5
+ * - Extracts domain from content
6
+ * - Identifies key concepts
7
+ * - Suggests tags based on content
8
+ */
9
+ // =============================================================================
10
+ // TAG PATTERNS
11
+ // =============================================================================
12
+ const TAG_PATTERNS = [
13
+ // Tech patterns
14
+ { pattern: /typescript|ts\b/i, tags: ['typescript', 'frontend'] },
15
+ { pattern: /react|jsx|tsx/i, tags: ['react', 'frontend'] },
16
+ { pattern: /next\.?js/i, tags: ['nextjs', 'frontend'] },
17
+ { pattern: /trpc/i, tags: ['trpc', 'api'] },
18
+ { pattern: /drizzle|orm/i, tags: ['database', 'drizzle'] },
19
+ { pattern: /mysql|sql\b/i, tags: ['database', 'sql'] },
20
+ { pattern: /api|endpoint|router/i, tags: ['api'] },
21
+ { pattern: /schema|migration/i, tags: ['database', 'schema'] },
22
+ { pattern: /hook|use[A-Z]/i, tags: ['hooks', 'react'] },
23
+ { pattern: /component/i, tags: ['components', 'frontend'] },
24
+ { pattern: /test|spec|vitest/i, tags: ['testing'] },
25
+ { pattern: /eslint|lint/i, tags: ['linting', 'code-quality'] },
26
+ { pattern: /tailwind|css/i, tags: ['styling', 'tailwind'] },
27
+ // Domain patterns
28
+ { pattern: /video|veo|generation/i, tags: ['ai', 'video'], domain: 'video-studio' },
29
+ { pattern: /avatar|character/i, tags: ['ai', 'avatar'], domain: 'avatars' },
30
+ { pattern: /campaign|marketing/i, tags: ['marketing'], domain: 'campaigns' },
31
+ { pattern: /content|ideas?|brainstorm/i, tags: ['content'], domain: 'content-ideas' },
32
+ { pattern: /knowledge|brand/i, tags: ['knowledge'], domain: 'knowledge' },
33
+ { pattern: /social|post|publish/i, tags: ['social'], domain: 'social' },
34
+ { pattern: /finance|payment|money/i, tags: ['finance'] },
35
+ { pattern: /auth|login|session/i, tags: ['auth'] },
36
+ // Quality patterns
37
+ { pattern: /bug|fix|error/i, tags: ['bugfix'] },
38
+ { pattern: /refactor/i, tags: ['refactor'] },
39
+ { pattern: /performance|optimize/i, tags: ['performance'] },
40
+ { pattern: /security|vulnerability/i, tags: ['security'] },
41
+ { pattern: /deprecat/i, tags: ['deprecated'] },
42
+ // Priority indicators
43
+ { pattern: /critical|urgent|important/i, tags: ['high-priority'] },
44
+ { pattern: /todo|fixme/i, tags: ['todo'] },
45
+ ];
46
+ // =============================================================================
47
+ // AUTO-TAG SERVICE
48
+ // =============================================================================
49
+ export class AutoTagService {
50
+ client;
51
+ constructor(client) {
52
+ this.client = client;
53
+ }
54
+ /**
55
+ * Analyze memory and suggest tags
56
+ */
57
+ async analyzeMemory(memoryId) {
58
+ const memory = await this.client.get(memoryId);
59
+ if (!memory)
60
+ return null;
61
+ const content = memory.content;
62
+ if (!content)
63
+ return null;
64
+ return this.analyzeContent(memoryId, content);
65
+ }
66
+ /**
67
+ * Analyze content and suggest tags
68
+ */
69
+ analyzeContent(memoryId, content) {
70
+ const text = `${content.title}\n${content.body}`;
71
+ const suggestedTags = new Set();
72
+ let suggestedDomain = null;
73
+ let matchCount = 0;
74
+ // Apply pattern matching
75
+ for (const { pattern, tags, domain } of TAG_PATTERNS) {
76
+ if (pattern.test(text)) {
77
+ tags.forEach(tag => suggestedTags.add(tag));
78
+ if (domain && !suggestedDomain) {
79
+ suggestedDomain = domain;
80
+ }
81
+ matchCount++;
82
+ }
83
+ }
84
+ // Extract keywords from title
85
+ const titleWords = content.title.toLowerCase().split(/\s+/);
86
+ for (const word of titleWords) {
87
+ if (word.length > 3 && !['the', 'and', 'for', 'with', 'from', 'that'].includes(word)) {
88
+ // Check if it's a technical term
89
+ if (/^[a-z]+$/i.test(word) && word.length > 4) {
90
+ suggestedTags.add(word);
91
+ }
92
+ }
93
+ }
94
+ // Use existing domain if present
95
+ if (content.domain && !suggestedDomain) {
96
+ suggestedDomain = content.domain;
97
+ }
98
+ // Calculate confidence based on matches
99
+ const confidence = Math.min(matchCount / 5, 1.0);
100
+ return {
101
+ memoryId,
102
+ suggestedTags: Array.from(suggestedTags).slice(0, 10),
103
+ suggestedDomain,
104
+ confidence,
105
+ };
106
+ }
107
+ /**
108
+ * Auto-tag a memory and update it
109
+ */
110
+ async autoTag(memoryId, options) {
111
+ const append = options?.append ?? true;
112
+ const minConfidence = options?.minConfidence ?? 0.3;
113
+ const result = await this.analyzeMemory(memoryId);
114
+ if (!result || result.confidence < minConfidence) {
115
+ return result;
116
+ }
117
+ const memory = await this.client.get(memoryId);
118
+ if (!memory)
119
+ return result;
120
+ const content = memory.content;
121
+ if (!content)
122
+ return result;
123
+ // Merge or replace tags
124
+ const existingTags = memory.tags ?? [];
125
+ const newTags = append
126
+ ? Array.from(new Set([...existingTags, ...result.suggestedTags]))
127
+ : result.suggestedTags;
128
+ // Update domain if suggested and not present
129
+ const updateContent = { ...content };
130
+ if (result.suggestedDomain && !content.domain) {
131
+ updateContent.domain = result.suggestedDomain;
132
+ }
133
+ await this.client.update(memoryId, {
134
+ tags: newTags,
135
+ content: updateContent,
136
+ });
137
+ return result;
138
+ }
139
+ /**
140
+ * Batch auto-tag all memories
141
+ */
142
+ async batchAutoTag(options) {
143
+ const limit = options?.limit ?? 100;
144
+ const onlyUntagged = options?.onlyUntagged ?? true;
145
+ const minConfidence = options?.minConfidence ?? 0.3;
146
+ const memories = await this.client.list({ type: 'memory', limit });
147
+ let processed = 0;
148
+ let tagged = 0;
149
+ let skipped = 0;
150
+ for (const memory of memories) {
151
+ processed++;
152
+ // Skip if already has tags
153
+ if (onlyUntagged && memory.tags && memory.tags.length > 0) {
154
+ skipped++;
155
+ continue;
156
+ }
157
+ const result = await this.autoTag(memory.id, { minConfidence });
158
+ if (result && result.suggestedTags.length > 0) {
159
+ tagged++;
160
+ }
161
+ else {
162
+ skipped++;
163
+ }
164
+ // Small delay to avoid rate limits
165
+ await new Promise(r => setTimeout(r, 50));
166
+ }
167
+ return { processed, tagged, skipped };
168
+ }
169
+ /**
170
+ * Get tag statistics
171
+ */
172
+ async getTagStats() {
173
+ const memories = await this.client.list({ type: 'memory', limit: 1000 });
174
+ const tagCounts = {};
175
+ let untaggedCount = 0;
176
+ for (const memory of memories) {
177
+ const tags = memory.tags ?? [];
178
+ if (tags.length === 0) {
179
+ untaggedCount++;
180
+ }
181
+ else {
182
+ for (const tag of tags) {
183
+ tagCounts[tag] = (tagCounts[tag] ?? 0) + 1;
184
+ }
185
+ }
186
+ }
187
+ return {
188
+ totalTags: Object.keys(tagCounts).length,
189
+ tagCounts,
190
+ untaggedCount,
191
+ };
192
+ }
193
+ }
194
+ // =============================================================================
195
+ // FACTORY
196
+ // =============================================================================
197
+ /**
198
+ * Create an auto-tag service
199
+ */
200
+ export function createAutoTagService(client) {
201
+ return new AutoTagService(client);
202
+ }
203
+ //# sourceMappingURL=auto-tag.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-tag.js","sourceRoot":"","sources":["../../src/services/auto-tag.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Cross-Project Sync Service
3
+ *
4
+ * Synchronizes memories across different projects in the MetaNautical ecosystem.
5
+ * - Shares relevant learnings between projects
6
+ * - Maintains project isolation while enabling knowledge transfer
7
+ * - Syncs common patterns and gotchas
8
+ */
9
+ import type { DevSystem, DevItem } from '../types/index.js';
10
+ export interface SyncConfig {
11
+ sourceSystem: DevSystem;
12
+ targetSystems: DevSystem[];
13
+ syncTags: string[];
14
+ excludeTags: string[];
15
+ }
16
+ export interface SyncResult {
17
+ synced: number;
18
+ skipped: number;
19
+ errors: string[];
20
+ }
21
+ export interface SharedMemory {
22
+ originalId: string;
23
+ originalSystem: DevSystem;
24
+ title: string;
25
+ body: string;
26
+ domain?: string;
27
+ tags: string[];
28
+ syncedAt: string;
29
+ }
30
+ export declare const ECOSYSTEM_SYSTEMS: DevSystem[];
31
+ export declare class CrossProjectSyncService {
32
+ private clients;
33
+ /**
34
+ * Get or create a client for a system
35
+ */
36
+ private getClient;
37
+ /**
38
+ * Sync memories from source to target systems
39
+ */
40
+ sync(config: SyncConfig): Promise<SyncResult>;
41
+ /**
42
+ * Get ecosystem-wide patterns (shared across all systems)
43
+ */
44
+ getEcosystemPatterns(): Promise<DevItem[]>;
45
+ /**
46
+ * Get memories shared across all systems (tagged with 'ecosystem' or 'shared')
47
+ */
48
+ getSharedMemories(): Promise<Array<DevItem & {
49
+ system: DevSystem;
50
+ }>>;
51
+ /**
52
+ * Share a memory to the ecosystem (tag it for sync)
53
+ */
54
+ shareToEcosystem(memoryId: string, sourceSystem: DevSystem): Promise<boolean>;
55
+ /**
56
+ * Get sync status for a system
57
+ */
58
+ getSyncStatus(system: DevSystem): Promise<{
59
+ totalMemories: number;
60
+ sharedMemories: number;
61
+ receivedMemories: number;
62
+ }>;
63
+ /**
64
+ * Get memories that should be synced
65
+ */
66
+ private getShareableMemories;
67
+ /**
68
+ * Sync a single memory to a target system
69
+ */
70
+ private syncMemoryToSystem;
71
+ }
72
+ /**
73
+ * Create a cross-project sync service
74
+ */
75
+ export declare function createCrossProjectSyncService(): CrossProjectSyncService;
76
+ //# sourceMappingURL=cross-project-sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cross-project-sync.d.ts","sourceRoot":"","sources":["../../src/services/cross-project-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAiB,MAAM,mBAAmB,CAAA;AAO1E,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,SAAS,CAAA;IACvB,aAAa,EAAE,SAAS,EAAE,CAAA;IAC1B,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,WAAW,EAAE,MAAM,EAAE,CAAA;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAA;IAClB,cAAc,EAAE,SAAS,CAAA;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;CACjB;AAMD,eAAO,MAAM,iBAAiB,EAAE,SAAS,EAOxC,CAAA;AAMD,qBAAa,uBAAuB;IAClC,OAAO,CAAC,OAAO,CAAiD;IAEhE;;OAEG;IACH,OAAO,CAAC,SAAS;IASjB;;OAEG;IACG,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IA0CnD;;OAEG;IACG,oBAAoB,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IA0BhD;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG;QAAE,MAAM,EAAE,SAAS,CAAA;KAAE,CAAC,CAAC;IAuB1E;;OAEG;IACG,gBAAgB,CACpB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,SAAS,GACtB,OAAO,CAAC,OAAO,CAAC;IAgBnB;;OAEG;IACG,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC;QAC9C,aAAa,EAAE,MAAM,CAAA;QACrB,cAAc,EAAE,MAAM,CAAA;QACtB,gBAAgB,EAAE,MAAM,CAAA;KACzB,CAAC;IAoBF;;OAEG;YACW,oBAAoB;IAyBlC;;OAEG;YACW,kBAAkB;CAyDjC;AAMD;;GAEG;AACH,wBAAgB,6BAA6B,IAAI,uBAAuB,CAEvE"}