cmp-standards 3.5.1 → 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.
Files changed (139) hide show
  1. package/README.md +399 -633
  2. package/dist/analytics/CrossProjectAnalytics.js +65 -65
  3. package/dist/cli/index.js +255 -12
  4. package/dist/cli/index.js.map +1 -1
  5. package/dist/dashboard/tokens.js +173 -173
  6. package/dist/db/cloud.d.ts +1 -0
  7. package/dist/db/cloud.d.ts.map +1 -1
  8. package/dist/db/migrations.js +256 -256
  9. package/dist/db/turso-client.js +2 -2
  10. package/dist/db/upstash-client.d.ts +9 -0
  11. package/dist/db/upstash-client.d.ts.map +1 -1
  12. package/dist/db/upstash-client.js +11 -0
  13. package/dist/db/upstash-client.js.map +1 -1
  14. package/dist/eslint/rules/no-async-useeffect.js +6 -6
  15. package/dist/experts/ExpertVotePersistence.js +9 -9
  16. package/dist/hooks/auto-learning-hook.d.ts +48 -0
  17. package/dist/hooks/auto-learning-hook.d.ts.map +1 -0
  18. package/dist/hooks/auto-learning-hook.js +258 -0
  19. package/dist/hooks/auto-learning-hook.js.map +1 -0
  20. package/dist/hooks/cloud-post-tool-use.d.ts.map +1 -1
  21. package/dist/hooks/cloud-post-tool-use.js +72 -10
  22. package/dist/hooks/cloud-post-tool-use.js.map +1 -1
  23. package/dist/hooks/cloud-pre-tool-use.d.ts +12 -9
  24. package/dist/hooks/cloud-pre-tool-use.d.ts.map +1 -1
  25. package/dist/hooks/cloud-pre-tool-use.js +227 -99
  26. package/dist/hooks/cloud-pre-tool-use.js.map +1 -1
  27. package/dist/hooks/cloud-session-start.js +5 -5
  28. package/dist/hooks/fast-session-start.d.ts +24 -0
  29. package/dist/hooks/fast-session-start.d.ts.map +1 -0
  30. package/dist/hooks/fast-session-start.js +354 -0
  31. package/dist/hooks/fast-session-start.js.map +1 -0
  32. package/dist/hooks/resilient-hook-runner.d.ts +78 -0
  33. package/dist/hooks/resilient-hook-runner.d.ts.map +1 -0
  34. package/dist/hooks/resilient-hook-runner.js +201 -0
  35. package/dist/hooks/resilient-hook-runner.js.map +1 -0
  36. package/dist/hooks/session-end.js +14 -14
  37. package/dist/index.d.ts +12 -0
  38. package/dist/index.d.ts.map +1 -1
  39. package/dist/index.js +17 -0
  40. package/dist/index.js.map +1 -1
  41. package/dist/patterns/registry.js +90 -90
  42. package/dist/schema/codewiki-types.d.ts +10 -10
  43. package/dist/schema/docs-types.d.ts +8 -8
  44. package/dist/schema/ecosystem-types.d.ts +12 -12
  45. package/dist/services/BootstrapService.d.ts +123 -0
  46. package/dist/services/BootstrapService.d.ts.map +1 -0
  47. package/dist/services/BootstrapService.js +309 -0
  48. package/dist/services/BootstrapService.js.map +1 -0
  49. package/dist/services/CodeWikiIndexer.js +3 -3
  50. package/dist/services/ContextGenerator.js +7 -7
  51. package/dist/services/FeedbackCollector.js +11 -11
  52. package/dist/services/GitIntegration.js +9 -9
  53. package/dist/services/HookVerifier.js +70 -70
  54. package/dist/services/KnowledgeGapDetector.d.ts +122 -0
  55. package/dist/services/KnowledgeGapDetector.d.ts.map +1 -0
  56. package/dist/services/KnowledgeGapDetector.js +530 -0
  57. package/dist/services/KnowledgeGapDetector.js.map +1 -0
  58. package/dist/services/ProjectScaffold.d.ts.map +1 -1
  59. package/dist/services/ProjectScaffold.js +79 -78
  60. package/dist/services/ProjectScaffold.js.map +1 -1
  61. package/dist/services/auto-evolution-trigger.d.ts +101 -0
  62. package/dist/services/auto-evolution-trigger.d.ts.map +1 -0
  63. package/dist/services/auto-evolution-trigger.js +359 -0
  64. package/dist/services/auto-evolution-trigger.js.map +1 -0
  65. package/dist/services/cloud-memory-service.d.ts +101 -0
  66. package/dist/services/cloud-memory-service.d.ts.map +1 -0
  67. package/dist/services/cloud-memory-service.js +363 -0
  68. package/dist/services/cloud-memory-service.js.map +1 -0
  69. package/dist/services/index.d.ts +4 -0
  70. package/dist/services/index.d.ts.map +1 -1
  71. package/dist/services/index.js +6 -0
  72. package/dist/services/index.js.map +1 -1
  73. package/dist/services/knowledge-graph.d.ts +121 -0
  74. package/dist/services/knowledge-graph.d.ts.map +1 -0
  75. package/dist/services/knowledge-graph.js +446 -0
  76. package/dist/services/knowledge-graph.js.map +1 -0
  77. package/dist/services/memory-keeper-client.d.ts +106 -0
  78. package/dist/services/memory-keeper-client.d.ts.map +1 -0
  79. package/dist/services/memory-keeper-client.js +319 -0
  80. package/dist/services/memory-keeper-client.js.map +1 -0
  81. package/dist/services/memory-router.d.ts +25 -0
  82. package/dist/services/memory-router.d.ts.map +1 -1
  83. package/dist/services/memory-router.js +236 -98
  84. package/dist/services/memory-router.js.map +1 -1
  85. package/dist/services/pattern-learning.d.ts +79 -0
  86. package/dist/services/pattern-learning.d.ts.map +1 -0
  87. package/dist/services/pattern-learning.js +312 -0
  88. package/dist/services/pattern-learning.js.map +1 -0
  89. package/dist/services/pattern-tracker.js +95 -95
  90. package/dist/services/semantic-search.js +2 -2
  91. package/dist/services/skill-learning-bridge.d.ts +100 -0
  92. package/dist/services/skill-learning-bridge.d.ts.map +1 -0
  93. package/dist/services/skill-learning-bridge.js +331 -0
  94. package/dist/services/skill-learning-bridge.js.map +1 -0
  95. package/dist/services/unified-memory-router.d.ts +123 -0
  96. package/dist/services/unified-memory-router.d.ts.map +1 -0
  97. package/dist/services/unified-memory-router.js +555 -0
  98. package/dist/services/unified-memory-router.js.map +1 -0
  99. package/package.json +124 -116
  100. package/standards/README.md +94 -50
  101. package/standards/experts/expert-routing.md +215 -215
  102. package/standards/general/code-quality.md +86 -86
  103. package/standards/general/ecosystem.md +243 -0
  104. package/standards/general/learning-loop.md +192 -0
  105. package/standards/general/memory-usage.md +205 -205
  106. package/standards/general/project-onboarding.md +339 -0
  107. package/standards/general/sync-workflow.md +235 -235
  108. package/standards/general/workflow.md +82 -82
  109. package/standards/hooks/mandatory-tracking.md +446 -446
  110. package/standards/infrastructure/cloud-database.md +287 -287
  111. package/standards/mcp/server-design.md +243 -243
  112. package/standards/mcp/tool-patterns.md +354 -354
  113. package/standards/skills/skill-structure.md +286 -286
  114. package/standards/skills/workflow-design.md +323 -323
  115. package/standards/tools/tool-design.md +297 -297
  116. package/templates/agents/architecture-expert.md +61 -61
  117. package/templates/agents/database-expert.md +62 -62
  118. package/templates/agents/documentation-expert.md +57 -57
  119. package/templates/agents/ecosystem-expert.md +104 -0
  120. package/templates/agents/memory-expert.md +88 -88
  121. package/templates/agents/performance-expert.md +61 -61
  122. package/templates/agents/security-expert.md +59 -59
  123. package/templates/agents/ux-expert.md +63 -63
  124. package/templates/agents/worker.md +75 -75
  125. package/templates/ai-skills/SKILL_TEMPLATE.md +55 -55
  126. package/templates/claude-settings.json +72 -72
  127. package/templates/commands/experts.md +138 -138
  128. package/templates/hooks/README.md +158 -158
  129. package/templates/hooks/project.config.json.template +77 -77
  130. package/templates/hooks/settings.local.json.template +57 -57
  131. package/templates/hooks.config.json +21 -0
  132. package/templates/memory-config.json +56 -56
  133. package/templates/memory-config.schema.json +212 -212
  134. package/templates/settings.json +58 -58
  135. package/templates/skills/continue.md +205 -205
  136. package/templates/workflows/business-improvement.md +264 -264
  137. package/templates/workflows/expert-review.md +153 -153
  138. package/templates/workflows/internal-app.md +245 -245
  139. package/templates/workflows/sync-docs.md +187 -187
@@ -0,0 +1,446 @@
1
+ /**
2
+ * @file Knowledge Graph Service
3
+ * @description Manages relationships between memories, patterns, and concepts
4
+ *
5
+ * Key Features:
6
+ * - Node types: memory, pattern, concept, file, domain
7
+ * - Edge types: relates_to, depends_on, mentions, modifies, belongs_to
8
+ * - Traversal queries for context discovery
9
+ * - Semantic clustering via vector similarity
10
+ */
11
+ import { turso } from '../db/turso-client.js';
12
+ import { upstash } from '../db/upstash-client.js';
13
+ // =============================================================================
14
+ // Knowledge Graph Service
15
+ // =============================================================================
16
+ class KnowledgeGraphService {
17
+ initialized = false;
18
+ /**
19
+ * Initialize the graph (ensure tables exist)
20
+ */
21
+ async init() {
22
+ if (this.initialized)
23
+ return;
24
+ const db = turso.getClient();
25
+ // Create graph tables if they don't exist
26
+ await db.batch([
27
+ {
28
+ sql: `
29
+ CREATE TABLE IF NOT EXISTS graph_nodes (
30
+ id TEXT PRIMARY KEY,
31
+ type TEXT NOT NULL,
32
+ system TEXT NOT NULL,
33
+ label TEXT NOT NULL,
34
+ metadata TEXT,
35
+ weight REAL DEFAULT 0.5,
36
+ created_at TEXT NOT NULL
37
+ )
38
+ `,
39
+ args: []
40
+ },
41
+ {
42
+ sql: `
43
+ CREATE TABLE IF NOT EXISTS graph_edges (
44
+ id TEXT PRIMARY KEY,
45
+ source TEXT NOT NULL,
46
+ target TEXT NOT NULL,
47
+ type TEXT NOT NULL,
48
+ weight REAL DEFAULT 0.5,
49
+ metadata TEXT,
50
+ created_at TEXT NOT NULL,
51
+ FOREIGN KEY (source) REFERENCES graph_nodes(id),
52
+ FOREIGN KEY (target) REFERENCES graph_nodes(id)
53
+ )
54
+ `,
55
+ args: []
56
+ },
57
+ {
58
+ sql: `CREATE INDEX IF NOT EXISTS idx_edges_source ON graph_edges(source)`,
59
+ args: []
60
+ },
61
+ {
62
+ sql: `CREATE INDEX IF NOT EXISTS idx_edges_target ON graph_edges(target)`,
63
+ args: []
64
+ },
65
+ {
66
+ sql: `CREATE INDEX IF NOT EXISTS idx_nodes_system ON graph_nodes(system)`,
67
+ args: []
68
+ }
69
+ ]);
70
+ this.initialized = true;
71
+ }
72
+ /**
73
+ * Add a node to the graph
74
+ */
75
+ async addNode(node) {
76
+ await this.init();
77
+ const db = turso.getClient();
78
+ const id = `node_${Date.now()}_${Math.random().toString(36).slice(2, 8)}`;
79
+ const now = new Date().toISOString();
80
+ await db.execute({
81
+ sql: `
82
+ INSERT OR REPLACE INTO graph_nodes (id, type, system, label, metadata, weight, created_at)
83
+ VALUES (?, ?, ?, ?, ?, ?, ?)
84
+ `,
85
+ args: [
86
+ id,
87
+ node.type,
88
+ node.system,
89
+ node.label,
90
+ node.metadata ? JSON.stringify(node.metadata) : null,
91
+ node.weight ?? 0.5,
92
+ now
93
+ ]
94
+ });
95
+ return id;
96
+ }
97
+ /**
98
+ * Add an edge between two nodes
99
+ */
100
+ async addEdge(source, target, type, options) {
101
+ await this.init();
102
+ const db = turso.getClient();
103
+ const id = `edge_${Date.now()}_${Math.random().toString(36).slice(2, 8)}`;
104
+ const now = new Date().toISOString();
105
+ await db.execute({
106
+ sql: `
107
+ INSERT OR REPLACE INTO graph_edges (id, source, target, type, weight, metadata, created_at)
108
+ VALUES (?, ?, ?, ?, ?, ?, ?)
109
+ `,
110
+ args: [
111
+ id,
112
+ source,
113
+ target,
114
+ type,
115
+ options?.weight ?? 0.5,
116
+ options?.metadata ? JSON.stringify(options.metadata) : null,
117
+ now
118
+ ]
119
+ });
120
+ return id;
121
+ }
122
+ /**
123
+ * Create node and edges from a memory item
124
+ */
125
+ async indexMemory(memoryId, system, content) {
126
+ await this.init();
127
+ // Create memory node
128
+ const nodeId = await this.addNode({
129
+ type: 'memory',
130
+ system,
131
+ label: content.title,
132
+ metadata: { memoryId, body: content.body.slice(0, 200) },
133
+ weight: 0.7
134
+ });
135
+ let edgeCount = 0;
136
+ // Link to domain
137
+ if (content.domain) {
138
+ const domainNodeId = await this.ensureNode(`domain_${system}_${content.domain}`, { type: 'domain', system, label: content.domain, weight: 0.9 });
139
+ await this.addEdge(nodeId, domainNodeId, 'belongs_to');
140
+ edgeCount++;
141
+ }
142
+ // Link to files
143
+ if (content.relatedFiles) {
144
+ for (const file of content.relatedFiles.slice(0, 10)) {
145
+ const fileNodeId = await this.ensureNode(`file_${Buffer.from(file).toString('base64').slice(0, 20)}`, { type: 'file', system, label: file, weight: 0.6 });
146
+ await this.addEdge(nodeId, fileNodeId, 'modifies');
147
+ edgeCount++;
148
+ }
149
+ }
150
+ // Link to session
151
+ if (content.sessionId) {
152
+ const sessionNodeId = await this.ensureNode(`session_${content.sessionId}`, { type: 'session', system, label: `Session ${content.sessionId.slice(0, 8)}`, weight: 0.5 });
153
+ await this.addEdge(nodeId, sessionNodeId, 'belongs_to');
154
+ edgeCount++;
155
+ }
156
+ // Extract and link concepts from tags
157
+ if (content.tags) {
158
+ for (const tag of content.tags.slice(0, 5)) {
159
+ const conceptNodeId = await this.ensureNode(`concept_${system}_${tag}`, { type: 'concept', system, label: tag, weight: 0.6 });
160
+ await this.addEdge(nodeId, conceptNodeId, 'mentions');
161
+ edgeCount++;
162
+ }
163
+ }
164
+ return { nodeId, edges: edgeCount };
165
+ }
166
+ /**
167
+ * Traverse the graph from a starting node
168
+ */
169
+ async traverse(options) {
170
+ await this.init();
171
+ const { startNode, maxDepth = 2, limit = 50 } = options;
172
+ const visited = new Set();
173
+ const nodes = [];
174
+ const edges = [];
175
+ await this.traverseRecursive(startNode, 0, maxDepth, visited, nodes, edges, options);
176
+ return {
177
+ nodes: nodes.slice(0, limit),
178
+ edges: edges.slice(0, limit * 2),
179
+ depth: maxDepth
180
+ };
181
+ }
182
+ /**
183
+ * Find related nodes by semantic similarity
184
+ */
185
+ async findSimilar(query, system, options) {
186
+ const limit = options?.limit || 10;
187
+ const minScore = options?.minScore || 0.5;
188
+ // Search vectors for similar items
189
+ const vectorResults = await upstash.searchVectors(query, {
190
+ topK: limit * 2,
191
+ filter: `system = "${system}"`,
192
+ includeMetadata: true
193
+ });
194
+ // Filter by score and node type
195
+ const filteredResults = vectorResults
196
+ .filter(r => r.score >= minScore)
197
+ .filter(r => {
198
+ if (!options?.nodeTypes)
199
+ return true;
200
+ const nodeType = r.metadata?.type;
201
+ return nodeType && options.nodeTypes.includes(nodeType);
202
+ });
203
+ // Convert to graph nodes
204
+ return filteredResults.slice(0, limit).map(r => ({
205
+ id: r.id,
206
+ type: r.metadata?.type || 'memory',
207
+ system,
208
+ label: r.metadata?.title || r.id,
209
+ metadata: r.metadata,
210
+ weight: r.score,
211
+ createdAt: r.metadata?.createdAt || new Date().toISOString(),
212
+ score: r.score
213
+ }));
214
+ }
215
+ /**
216
+ * Get context for a file (related memories, patterns, concepts)
217
+ */
218
+ async getFileContext(filePath, system) {
219
+ await this.init();
220
+ const db = turso.getClient();
221
+ // Find file node
222
+ const fileNodeResult = await db.execute({
223
+ sql: `SELECT * FROM graph_nodes WHERE type = 'file' AND label = ? AND system = ?`,
224
+ args: [filePath, system]
225
+ });
226
+ if (fileNodeResult.rows.length === 0) {
227
+ return { nodes: [], edges: [], depth: 0 };
228
+ }
229
+ const fileNodeId = fileNodeResult.rows[0].id;
230
+ // Traverse from file node
231
+ return this.traverse({
232
+ startNode: fileNodeId,
233
+ maxDepth: 2,
234
+ edgeTypes: ['modifies', 'mentions', 'belongs_to'],
235
+ limit: 30
236
+ });
237
+ }
238
+ /**
239
+ * Get domain overview (all concepts and their relationships)
240
+ */
241
+ async getDomainOverview(system, domain) {
242
+ await this.init();
243
+ const db = turso.getClient();
244
+ // Find domain node
245
+ const domainNodeId = `domain_${system}_${domain}`;
246
+ // Get all nodes connected to this domain
247
+ const connectedNodes = await db.execute({
248
+ sql: `
249
+ SELECT n.* FROM graph_nodes n
250
+ JOIN graph_edges e ON n.id = e.source OR n.id = e.target
251
+ WHERE (e.source = ? OR e.target = ?)
252
+ AND n.system = ?
253
+ LIMIT 100
254
+ `,
255
+ args: [domainNodeId, domainNodeId, system]
256
+ });
257
+ const nodeIds = new Set(connectedNodes.rows.map(r => r.id));
258
+ nodeIds.add(domainNodeId);
259
+ // Get edges between these nodes
260
+ const placeholders = [...nodeIds].map(() => '?').join(', ');
261
+ const edgeResults = await db.execute({
262
+ sql: `
263
+ SELECT * FROM graph_edges
264
+ WHERE source IN (${placeholders}) AND target IN (${placeholders})
265
+ `,
266
+ args: [...nodeIds, ...nodeIds]
267
+ });
268
+ return {
269
+ nodes: connectedNodes.rows.map(r => this.rowToNode(r)),
270
+ edges: edgeResults.rows.map(r => this.rowToEdge(r)),
271
+ depth: 1
272
+ };
273
+ }
274
+ /**
275
+ * Detect clusters of related memories
276
+ */
277
+ async detectClusters(system, options) {
278
+ await this.init();
279
+ const minSize = options?.minClusterSize || 3;
280
+ const maxClusters = options?.maxClusters || 10;
281
+ const db = turso.getClient();
282
+ // Find heavily connected nodes (potential cluster centroids)
283
+ const centroids = await db.execute({
284
+ sql: `
285
+ SELECT n.id, n.label, COUNT(e.id) as connections
286
+ FROM graph_nodes n
287
+ LEFT JOIN graph_edges e ON n.id = e.source OR n.id = e.target
288
+ WHERE n.system = ? AND n.type IN ('memory', 'concept')
289
+ GROUP BY n.id
290
+ HAVING connections >= ?
291
+ ORDER BY connections DESC
292
+ LIMIT ?
293
+ `,
294
+ args: [system, minSize, maxClusters]
295
+ });
296
+ const clusters = [];
297
+ const assignedNodes = new Set();
298
+ for (const centroid of centroids.rows) {
299
+ const centroidId = centroid.id;
300
+ if (assignedNodes.has(centroidId))
301
+ continue;
302
+ // Get connected nodes
303
+ const connected = await db.execute({
304
+ sql: `
305
+ SELECT DISTINCT
306
+ CASE WHEN source = ? THEN target ELSE source END as node_id
307
+ FROM graph_edges
308
+ WHERE source = ? OR target = ?
309
+ `,
310
+ args: [centroidId, centroidId, centroidId]
311
+ });
312
+ const clusterNodes = [centroidId];
313
+ for (const row of connected.rows) {
314
+ const nodeId = row.node_id;
315
+ if (!assignedNodes.has(nodeId)) {
316
+ clusterNodes.push(nodeId);
317
+ assignedNodes.add(nodeId);
318
+ }
319
+ }
320
+ assignedNodes.add(centroidId);
321
+ if (clusterNodes.length >= minSize) {
322
+ clusters.push({
323
+ clusterId: `cluster_${centroidId}`,
324
+ nodes: clusterNodes,
325
+ centroid: centroidId,
326
+ theme: centroid.label,
327
+ score: clusterNodes.length / 10 // Simple cohesion score
328
+ });
329
+ }
330
+ }
331
+ return clusters;
332
+ }
333
+ // =============================================================================
334
+ // Private Methods
335
+ // =============================================================================
336
+ async ensureNode(id, node) {
337
+ const db = turso.getClient();
338
+ const existing = await db.execute({
339
+ sql: `SELECT id FROM graph_nodes WHERE id = ?`,
340
+ args: [id]
341
+ });
342
+ if (existing.rows.length > 0) {
343
+ return id;
344
+ }
345
+ const now = new Date().toISOString();
346
+ await db.execute({
347
+ sql: `
348
+ INSERT INTO graph_nodes (id, type, system, label, metadata, weight, created_at)
349
+ VALUES (?, ?, ?, ?, ?, ?, ?)
350
+ `,
351
+ args: [
352
+ id,
353
+ node.type,
354
+ node.system,
355
+ node.label,
356
+ node.metadata ? JSON.stringify(node.metadata) : null,
357
+ node.weight ?? 0.5,
358
+ now
359
+ ]
360
+ });
361
+ return id;
362
+ }
363
+ async traverseRecursive(nodeId, currentDepth, maxDepth, visited, nodes, edges, options) {
364
+ if (currentDepth > maxDepth || visited.has(nodeId))
365
+ return;
366
+ visited.add(nodeId);
367
+ const db = turso.getClient();
368
+ // Get the node
369
+ const nodeResult = await db.execute({
370
+ sql: `SELECT * FROM graph_nodes WHERE id = ?`,
371
+ args: [nodeId]
372
+ });
373
+ if (nodeResult.rows.length === 0)
374
+ return;
375
+ const node = this.rowToNode(nodeResult.rows[0]);
376
+ // Filter by node type if specified
377
+ if (options.nodeTypes && !options.nodeTypes.includes(node.type))
378
+ return;
379
+ nodes.push(node);
380
+ // Get connected edges
381
+ let edgeQuery = `
382
+ SELECT * FROM graph_edges
383
+ WHERE source = ? OR target = ?
384
+ `;
385
+ const edgeArgs = [nodeId, nodeId];
386
+ if (options.edgeTypes && options.edgeTypes.length > 0) {
387
+ const placeholders = options.edgeTypes.map(() => '?').join(', ');
388
+ edgeQuery += ` AND type IN (${placeholders})`;
389
+ edgeArgs.push(...options.edgeTypes);
390
+ }
391
+ const edgeResults = await db.execute({ sql: edgeQuery, args: edgeArgs });
392
+ for (const row of edgeResults.rows) {
393
+ const edge = this.rowToEdge(row);
394
+ edges.push(edge);
395
+ // Traverse to connected node
396
+ const nextNode = edge.source === nodeId ? edge.target : edge.source;
397
+ await this.traverseRecursive(nextNode, currentDepth + 1, maxDepth, visited, nodes, edges, options);
398
+ }
399
+ }
400
+ rowToNode(row) {
401
+ return {
402
+ id: row.id,
403
+ type: row.type,
404
+ system: row.system,
405
+ label: row.label,
406
+ metadata: row.metadata
407
+ ? typeof row.metadata === 'string'
408
+ ? JSON.parse(row.metadata)
409
+ : row.metadata
410
+ : undefined,
411
+ weight: row.weight,
412
+ createdAt: row.created_at
413
+ };
414
+ }
415
+ rowToEdge(row) {
416
+ return {
417
+ id: row.id,
418
+ source: row.source,
419
+ target: row.target,
420
+ type: row.type,
421
+ weight: row.weight,
422
+ metadata: row.metadata
423
+ ? typeof row.metadata === 'string'
424
+ ? JSON.parse(row.metadata)
425
+ : row.metadata
426
+ : undefined,
427
+ createdAt: row.created_at
428
+ };
429
+ }
430
+ }
431
+ // =============================================================================
432
+ // Singleton Export
433
+ // =============================================================================
434
+ let instance = null;
435
+ export function getKnowledgeGraph() {
436
+ if (!instance) {
437
+ instance = new KnowledgeGraphService();
438
+ }
439
+ return instance;
440
+ }
441
+ export function resetKnowledgeGraph() {
442
+ instance = null;
443
+ }
444
+ export const knowledgeGraph = getKnowledgeGraph();
445
+ export default knowledgeGraph;
446
+ //# sourceMappingURL=knowledge-graph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge-graph.js","sourceRoot":"","sources":["../../src/services/knowledge-graph.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * @file Memory-Keeper MCP Client
3
+ * @description Client for interacting with memory-keeper MCP server
4
+ *
5
+ * Uses stdio transport to communicate with the memory-keeper MCP process.
6
+ * Provides typed methods for all memory operations.
7
+ *
8
+ * @version 1.0.0
9
+ */
10
+ export interface MemoryKeeperItem {
11
+ id?: string;
12
+ key: string;
13
+ value: string;
14
+ category?: 'task' | 'decision' | 'progress' | 'note' | 'error' | 'warning';
15
+ channel?: string;
16
+ priority?: 'high' | 'normal' | 'low';
17
+ private?: boolean;
18
+ metadata?: Record<string, unknown>;
19
+ created_at?: string;
20
+ updated_at?: string;
21
+ }
22
+ export interface SearchOptions {
23
+ query: string;
24
+ category?: string;
25
+ channel?: string;
26
+ limit?: number;
27
+ includeMetadata?: boolean;
28
+ }
29
+ export interface SearchResult {
30
+ items: MemoryKeeperItem[];
31
+ total: number;
32
+ }
33
+ export interface SessionInfo {
34
+ id: string;
35
+ name?: string;
36
+ description?: string;
37
+ channel?: string;
38
+ projectDir?: string;
39
+ }
40
+ export declare class MemoryKeeperClient {
41
+ private process;
42
+ private requestId;
43
+ private pendingRequests;
44
+ private buffer;
45
+ private initialized;
46
+ /**
47
+ * Initialize connection to memory-keeper MCP server
48
+ */
49
+ connect(): Promise<boolean>;
50
+ /**
51
+ * Find the memory-keeper MCP server path
52
+ */
53
+ private findMCPServer;
54
+ /**
55
+ * Handle incoming data from MCP server
56
+ */
57
+ private handleData;
58
+ /**
59
+ * Send a request to the MCP server
60
+ */
61
+ private sendRequest;
62
+ /**
63
+ * Call a tool on the MCP server
64
+ */
65
+ private callTool;
66
+ /**
67
+ * Save a context item
68
+ */
69
+ save(item: Omit<MemoryKeeperItem, 'id' | 'created_at' | 'updated_at'>): Promise<boolean>;
70
+ /**
71
+ * Get a context item by key
72
+ */
73
+ get(key: string): Promise<MemoryKeeperItem | null>;
74
+ /**
75
+ * Search context items
76
+ */
77
+ search(options: SearchOptions): Promise<SearchResult>;
78
+ /**
79
+ * Search across all sessions
80
+ */
81
+ searchAll(query: string, limit?: number): Promise<SearchResult>;
82
+ /**
83
+ * Get current session status
84
+ */
85
+ getStatus(): Promise<SessionInfo | null>;
86
+ /**
87
+ * Create a checkpoint
88
+ */
89
+ checkpoint(name: string, description?: string): Promise<string | null>;
90
+ /**
91
+ * Get items by channel
92
+ */
93
+ getByChannel(channel: string, limit?: number): Promise<MemoryKeeperItem[]>;
94
+ /**
95
+ * Get recent items
96
+ */
97
+ getRecent(limit?: number): Promise<MemoryKeeperItem[]>;
98
+ /**
99
+ * Disconnect from MCP server
100
+ */
101
+ disconnect(): void;
102
+ }
103
+ export declare function getMemoryKeeperClient(): MemoryKeeperClient;
104
+ export declare function resetMemoryKeeperClient(): void;
105
+ export default MemoryKeeperClient;
106
+ //# sourceMappingURL=memory-keeper-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-keeper-client.d.ts","sourceRoot":"","sources":["../../src/services/memory-keeper-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAWH,MAAM,WAAW,gBAAgB;IAC/B,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAA;IAC1E,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAA;IACpC,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAClC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,gBAAgB,EAAE,CAAA;IACzB,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AA4BD,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,SAAS,CAAI;IACrB,OAAO,CAAC,eAAe,CAGnB;IACJ,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,WAAW,CAAQ;IAE3B;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAoDjC;;OAEG;IACH,OAAO,CAAC,aAAa;IAarB;;OAEG;IACH,OAAO,CAAC,UAAU;IA4BlB;;OAEG;IACH,OAAO,CAAC,WAAW;IA6BnB;;OAEG;YACW,QAAQ;IAkBtB;;OAEG;IACG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,GAAG,YAAY,GAAG,YAAY,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAiB9F;;OAEG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAUxD;;OAEG;IACG,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAiB3D;;OAEG;IACG,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,YAAY,CAAC;IAejE;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAU9C;;OAEG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAe5E;;OAEG;IACG,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAe5E;;OAEG;IACG,SAAS,CAAC,KAAK,SAAK,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAexD;;OAEG;IACH,UAAU,IAAI,IAAI;CAOnB;AAQD,wBAAgB,qBAAqB,IAAI,kBAAkB,CAK1D;AAED,wBAAgB,uBAAuB,IAAI,IAAI,CAK9C;AAED,eAAe,kBAAkB,CAAA"}