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,404 @@
1
+ /**
2
+ * Drizzle Database Client
3
+ *
4
+ * Real implementation that connects to DEV_Items table.
5
+ * Works with any MySQL database that has the DEV_Items table.
6
+ */
7
+ import { drizzle } from 'drizzle-orm/mysql2';
8
+ import { createPool } from 'mysql2/promise';
9
+ import { eq, and, desc } from 'drizzle-orm';
10
+ import { mysqlTable, varchar, json, timestamp, index } from 'drizzle-orm/mysql-core';
11
+ import { ulid } from 'ulid';
12
+ // =============================================================================
13
+ // SCHEMA DEFINITION
14
+ // =============================================================================
15
+ /**
16
+ * DEV_Items table schema (mirrors the actual table)
17
+ */
18
+ export const devItems = mysqlTable('DEV_Items', {
19
+ id: varchar('id', { length: 191 }).primaryKey(),
20
+ system: varchar('system', { length: 50 }).notNull(),
21
+ type: varchar('type', { length: 50 }).notNull(),
22
+ status: varchar('status', { length: 50 }),
23
+ priority: varchar('priority', { length: 20 }),
24
+ content: json('content'),
25
+ tags: json('tags'),
26
+ createdAt: timestamp('created_at').defaultNow(),
27
+ updatedAt: timestamp('updated_at').onUpdateNow(),
28
+ }, (table) => ({
29
+ systemIdx: index('system_idx').on(table.system),
30
+ typeIdx: index('type_idx').on(table.type),
31
+ systemTypeIdx: index('system_type_idx').on(table.system, table.type),
32
+ }));
33
+ let pool = null;
34
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
35
+ let db = null;
36
+ /**
37
+ * Get database configuration from environment
38
+ */
39
+ export function getDatabaseConfig() {
40
+ return {
41
+ host: process.env.DATABASE_HOST ?? 'localhost',
42
+ port: parseInt(process.env.DATABASE_PORT ?? '3306', 10),
43
+ user: process.env.DATABASE_USER ?? 'root',
44
+ password: process.env.DATABASE_PASSWORD ?? '',
45
+ database: process.env.DATABASE_NAME ?? 'metanautical',
46
+ };
47
+ }
48
+ /**
49
+ * Initialize database connection
50
+ */
51
+ export async function initDatabase(config) {
52
+ if (db)
53
+ return;
54
+ const dbConfig = config ?? getDatabaseConfig();
55
+ // PlanetScale requires SSL
56
+ const isPlanetScale = dbConfig.host.includes('psdb.cloud') || dbConfig.host.includes('connect.psdb');
57
+ pool = createPool({
58
+ host: dbConfig.host,
59
+ port: dbConfig.port,
60
+ user: dbConfig.user,
61
+ password: dbConfig.password,
62
+ database: dbConfig.database,
63
+ waitForConnections: true,
64
+ connectionLimit: 5,
65
+ queueLimit: 0,
66
+ ssl: isPlanetScale ? { rejectUnauthorized: true } : undefined,
67
+ });
68
+ db = drizzle(pool);
69
+ }
70
+ /**
71
+ * Get database instance
72
+ */
73
+ export function getDatabase() {
74
+ if (!db) {
75
+ throw new Error('Database not initialized. Call initDatabase() first.');
76
+ }
77
+ return db;
78
+ }
79
+ /**
80
+ * Close database connection
81
+ */
82
+ export async function closeDatabase() {
83
+ if (pool) {
84
+ await pool.end();
85
+ pool = null;
86
+ db = null;
87
+ }
88
+ }
89
+ export class DrizzleMemoryClient {
90
+ system;
91
+ initialized = false;
92
+ constructor(config) {
93
+ this.system = config.system;
94
+ if (config.databaseConfig) {
95
+ initDatabase(config.databaseConfig);
96
+ }
97
+ }
98
+ /**
99
+ * Ensure database is initialized
100
+ */
101
+ async ensureInitialized() {
102
+ if (!this.initialized) {
103
+ await initDatabase();
104
+ this.initialized = true;
105
+ }
106
+ return getDatabase();
107
+ }
108
+ // =========================================================================
109
+ // READ OPERATIONS
110
+ // =========================================================================
111
+ /**
112
+ * List items with filters
113
+ */
114
+ async list(options) {
115
+ const db = await this.ensureInitialized();
116
+ const conditions = [eq(devItems.system, this.system)];
117
+ if (options?.type) {
118
+ conditions.push(eq(devItems.type, options.type));
119
+ }
120
+ if (options?.status) {
121
+ conditions.push(eq(devItems.status, options.status));
122
+ }
123
+ let query = db
124
+ .select()
125
+ .from(devItems)
126
+ .where(and(...conditions))
127
+ .orderBy(desc(devItems.createdAt));
128
+ if (options?.limit) {
129
+ query = query.limit(options.limit);
130
+ }
131
+ if (options?.offset) {
132
+ query = query.offset(options.offset);
133
+ }
134
+ const results = await query;
135
+ // Filter by tags if specified (post-query)
136
+ if (options?.tags && options.tags.length > 0) {
137
+ return results.filter(item => {
138
+ const itemTags = (item.tags ?? []);
139
+ return options.tags.some(tag => itemTags.includes(tag));
140
+ });
141
+ }
142
+ return results;
143
+ }
144
+ /**
145
+ * Get single item by ID
146
+ */
147
+ async get(id) {
148
+ const db = await this.ensureInitialized();
149
+ const results = await db
150
+ .select()
151
+ .from(devItems)
152
+ .where(and(eq(devItems.id, id), eq(devItems.system, this.system)))
153
+ .limit(1);
154
+ return results[0] ?? null;
155
+ }
156
+ /**
157
+ * Search items by content
158
+ */
159
+ async search(query, options) {
160
+ const db = await this.ensureInitialized();
161
+ const conditions = [eq(devItems.system, this.system)];
162
+ if (options?.type) {
163
+ conditions.push(eq(devItems.type, options.type));
164
+ }
165
+ // Search in JSON content fields
166
+ const results = await db
167
+ .select()
168
+ .from(devItems)
169
+ .where(and(...conditions))
170
+ .orderBy(desc(devItems.updatedAt))
171
+ .limit(options?.limit ?? 100);
172
+ // Filter by search query (title, body in content)
173
+ const searchLower = query.toLowerCase();
174
+ return results.filter(item => {
175
+ const content = item.content;
176
+ return (content?.title?.toLowerCase().includes(searchLower) ||
177
+ content?.body?.toLowerCase().includes(searchLower));
178
+ });
179
+ }
180
+ // =========================================================================
181
+ // WRITE OPERATIONS
182
+ // =========================================================================
183
+ /**
184
+ * Create new item
185
+ */
186
+ async create(data) {
187
+ const db = await this.ensureInitialized();
188
+ const id = ulid();
189
+ await db.insert(devItems).values({
190
+ id,
191
+ system: this.system,
192
+ type: data.type,
193
+ status: data.status ?? 'active',
194
+ priority: data.priority ?? 'medium',
195
+ content: data.content,
196
+ tags: data.tags ?? [],
197
+ });
198
+ return { id };
199
+ }
200
+ /**
201
+ * Update existing item
202
+ */
203
+ async update(id, data) {
204
+ const db = await this.ensureInitialized();
205
+ const updateData = {};
206
+ if (data.status !== undefined)
207
+ updateData.status = data.status;
208
+ if (data.priority !== undefined)
209
+ updateData.priority = data.priority;
210
+ if (data.content !== undefined)
211
+ updateData.content = data.content;
212
+ if (data.tags !== undefined)
213
+ updateData.tags = data.tags;
214
+ await db
215
+ .update(devItems)
216
+ .set(updateData)
217
+ .where(and(eq(devItems.id, id), eq(devItems.system, this.system)));
218
+ }
219
+ /**
220
+ * Delete item
221
+ */
222
+ async delete(id) {
223
+ const db = await this.ensureInitialized();
224
+ await db
225
+ .delete(devItems)
226
+ .where(and(eq(devItems.id, id), eq(devItems.system, this.system)));
227
+ }
228
+ // =========================================================================
229
+ // MEMORY OPERATIONS
230
+ // =========================================================================
231
+ /**
232
+ * Create memory entry
233
+ */
234
+ async createMemory(content, tags) {
235
+ return this.create({
236
+ type: 'memory',
237
+ status: 'active',
238
+ priority: 'medium',
239
+ content: content,
240
+ tags: [...(tags ?? []), content.source ?? 'system', 'memory'],
241
+ });
242
+ }
243
+ /**
244
+ * Get memories by domain
245
+ */
246
+ async getMemories(domain, limit = 50) {
247
+ const items = await this.list({ type: 'memory', limit });
248
+ if (domain) {
249
+ return items.filter(item => {
250
+ const content = item.content;
251
+ return content?.domain === domain;
252
+ });
253
+ }
254
+ return items;
255
+ }
256
+ /**
257
+ * Get recent memories for session context
258
+ */
259
+ async getRecentMemories(limit = 5) {
260
+ return this.list({
261
+ type: 'memory',
262
+ status: 'active',
263
+ limit,
264
+ });
265
+ }
266
+ // =========================================================================
267
+ // PATTERN OPERATIONS
268
+ // =========================================================================
269
+ /**
270
+ * Create or increment pattern
271
+ */
272
+ async trackPattern(patternId, file, line, code, severity = 'medium') {
273
+ // Check if pattern exists
274
+ const existing = await this.list({
275
+ type: 'pattern',
276
+ tags: [`pattern:${patternId}`],
277
+ limit: 1,
278
+ });
279
+ const now = new Date().toISOString();
280
+ if (existing.length > 0) {
281
+ // Increment existing pattern
282
+ const pattern = existing[0];
283
+ const content = pattern.content;
284
+ const newFiles = [...content.files, { path: file, line, code }];
285
+ const uniqueFiles = newFiles.filter((f, i, arr) => arr.findIndex(x => x.path === f.path && x.line === f.line) === i);
286
+ await this.update(pattern.id, {
287
+ content: {
288
+ ...content,
289
+ occurrences: content.occurrences + 1,
290
+ files: uniqueFiles,
291
+ lastSeen: now,
292
+ },
293
+ });
294
+ return { id: pattern.id, count: content.occurrences + 1 };
295
+ }
296
+ // Create new pattern
297
+ const content = {
298
+ patternId,
299
+ description: `Pattern: ${patternId}`,
300
+ occurrences: 1,
301
+ files: [{ path: file, line, code }],
302
+ severity,
303
+ firstSeen: now,
304
+ lastSeen: now,
305
+ };
306
+ const result = await this.create({
307
+ type: 'pattern',
308
+ status: 'active',
309
+ priority: severity,
310
+ content: content,
311
+ tags: ['pattern', `pattern:${patternId}`],
312
+ });
313
+ return { id: result.id, count: 1 };
314
+ }
315
+ /**
316
+ * Get patterns above threshold
317
+ */
318
+ async getTriggeredPatterns(threshold = 3) {
319
+ const patterns = await this.list({ type: 'pattern' });
320
+ return patterns.filter(item => {
321
+ const content = item.content;
322
+ return content && content.occurrences >= threshold;
323
+ });
324
+ }
325
+ // =========================================================================
326
+ // SESSION OPERATIONS
327
+ // =========================================================================
328
+ /**
329
+ * Start a new session
330
+ */
331
+ async startSession(module, context) {
332
+ const result = await this.create({
333
+ type: 'agent_session',
334
+ status: 'active',
335
+ content: {
336
+ startedAt: new Date().toISOString(),
337
+ module,
338
+ context,
339
+ },
340
+ tags: ['session', module].filter(Boolean),
341
+ });
342
+ return { sessionId: result.id };
343
+ }
344
+ /**
345
+ * End a session
346
+ */
347
+ async endSession(sessionId, summary) {
348
+ const session = await this.get(sessionId);
349
+ if (!session)
350
+ return;
351
+ const content = session.content;
352
+ await this.update(sessionId, {
353
+ status: 'done',
354
+ content: {
355
+ ...content,
356
+ endedAt: new Date().toISOString(),
357
+ summary,
358
+ },
359
+ });
360
+ }
361
+ // =========================================================================
362
+ // ANALYTICS
363
+ // =========================================================================
364
+ /**
365
+ * Get statistics
366
+ */
367
+ async getStats() {
368
+ const [memories, patterns, sessions] = await Promise.all([
369
+ this.list({ type: 'memory' }),
370
+ this.list({ type: 'pattern' }),
371
+ this.list({ type: 'agent_session', limit: 100 }),
372
+ ]);
373
+ const triggeredPatterns = patterns.filter(p => {
374
+ const content = p.content;
375
+ return content && content.occurrences >= 3;
376
+ });
377
+ const recentSessions = sessions.filter(s => {
378
+ const createdAt = s.createdAt;
379
+ if (!createdAt)
380
+ return false;
381
+ const dayAgo = new Date(Date.now() - 24 * 60 * 60 * 1000);
382
+ return new Date(createdAt) > dayAgo;
383
+ });
384
+ return {
385
+ totalMemories: memories.length,
386
+ totalPatterns: patterns.length,
387
+ triggeredPatterns: triggeredPatterns.length,
388
+ recentSessions: recentSessions.length,
389
+ };
390
+ }
391
+ }
392
+ // =============================================================================
393
+ // FACTORY
394
+ // =============================================================================
395
+ /**
396
+ * Create a Drizzle memory client
397
+ */
398
+ export function createDrizzleClient(system, dbConfig) {
399
+ return new DrizzleMemoryClient({
400
+ system,
401
+ databaseConfig: dbConfig,
402
+ });
403
+ }
404
+ //# sourceMappingURL=drizzle-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drizzle-client.js","sourceRoot":"","sources":["../../src/db/drizzle-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Database module exports
3
+ */
4
+ export { createMemoryClient, generateId, createMemoryContent, createPatternContent, type MemoryClient, type MemoryClientConfig, type QueryOptions, type CreateItemData } from './client.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,kBAAkB,EAClB,UAAU,EACV,mBAAmB,EACnB,oBAAoB,EACpB,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,YAAY,EACjB,KAAK,cAAc,EACpB,MAAM,aAAa,CAAA"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Database module exports
3
+ */
4
+ export { createMemoryClient, generateId, createMemoryContent, createPatternContent } from './client.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,kBAAkB,EAClB,UAAU,EACV,mBAAmB,EACnB,oBAAoB,EAKrB,MAAM,aAAa,CAAA"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Feedback Collector
3
+ *
4
+ * Collects and processes user feedback on memories and suggestions.
5
+ * Uses feedback to improve memory relevance over time.
6
+ */
7
+ import type { DevItem, DevSystem } from '../types/index.js';
8
+ export interface FeedbackEntry {
9
+ memoryId: string;
10
+ helpful: boolean;
11
+ comment?: string;
12
+ context?: string;
13
+ timestamp: string;
14
+ }
15
+ export interface FeedbackStats {
16
+ totalFeedback: number;
17
+ helpfulCount: number;
18
+ notHelpfulCount: number;
19
+ helpfulRate: number;
20
+ topHelpfulMemories: Array<{
21
+ id: string;
22
+ title: string;
23
+ helpfulCount: number;
24
+ }>;
25
+ topUnhelpfulMemories: Array<{
26
+ id: string;
27
+ title: string;
28
+ unhelpfulCount: number;
29
+ }>;
30
+ }
31
+ export interface MemoryScore {
32
+ memoryId: string;
33
+ baseScore: number;
34
+ feedbackBoost: number;
35
+ finalScore: number;
36
+ confidence: number;
37
+ }
38
+ export declare class FeedbackCollector {
39
+ private client;
40
+ constructor(system: DevSystem);
41
+ /**
42
+ * Submit feedback for a memory
43
+ */
44
+ submitFeedback(memoryId: string, helpful: boolean, comment?: string, context?: string): Promise<{
45
+ success: boolean;
46
+ newScore?: number;
47
+ }>;
48
+ /**
49
+ * Calculate new priority based on feedback history
50
+ */
51
+ private calculateNewPriority;
52
+ /**
53
+ * Record a feedback event for analytics
54
+ */
55
+ private recordFeedbackEvent;
56
+ /**
57
+ * Get feedback statistics
58
+ */
59
+ getStats(): Promise<FeedbackStats>;
60
+ /**
61
+ * Score memories for relevance (higher = more relevant)
62
+ */
63
+ scoreMemories(memoryIds: string[]): Promise<MemoryScore[]>;
64
+ /**
65
+ * Suggest memories to deprecate based on negative feedback
66
+ */
67
+ getSuggestedDeprecations(): Promise<DevItem[]>;
68
+ /**
69
+ * Get memories that need more feedback
70
+ */
71
+ getMemoriesNeedingFeedback(limit?: number): Promise<DevItem[]>;
72
+ }
73
+ export declare function createFeedbackCollector(system: DevSystem): FeedbackCollector;
74
+ //# sourceMappingURL=collector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collector.d.ts","sourceRoot":"","sources":["../../src/feedback/collector.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAiB,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAO1E,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,WAAW,EAAE,MAAM,CAAA;IACnB,kBAAkB,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC9E,oBAAoB,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CACnF;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;CACnB;AAMD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAqB;gBAEvB,MAAM,EAAE,SAAS;IAI7B;;OAEG;IACG,cAAc,CAClB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAsCnD;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAiD5B;;OAEG;YACW,mBAAmB;IAmBjC;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,aAAa,CAAC;IAmDxC;;OAEG;IACG,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAsChE;;OAEG;IACG,wBAAwB,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAepD;;OAEG;IACG,0BAA0B,CAAC,KAAK,SAAK,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;CAajE;AAMD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,GAAG,iBAAiB,CAE5E"}