memgrid 0.5.3 → 0.6.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 (48) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/dist/learn/index.js +4 -4
  3. package/dist/learn/index.js.map +1 -1
  4. package/dist/learn/nlp.d.ts +32 -0
  5. package/dist/learn/nlp.d.ts.map +1 -0
  6. package/dist/learn/nlp.js +214 -0
  7. package/dist/learn/nlp.js.map +1 -0
  8. package/dist/memgrid.d.ts.map +1 -1
  9. package/dist/memgrid.js +9 -2
  10. package/dist/memgrid.js.map +1 -1
  11. package/dist/retrieve/index.js +1 -1
  12. package/dist/retrieve/index.js.map +1 -1
  13. package/dist/scanner/config.d.ts.map +1 -1
  14. package/dist/scanner/config.js +1 -0
  15. package/dist/scanner/config.js.map +1 -1
  16. package/dist/scanner/golang.js +1 -1
  17. package/dist/scanner/golang.js.map +1 -1
  18. package/dist/scanner/typescript.d.ts +3 -2
  19. package/dist/scanner/typescript.d.ts.map +1 -1
  20. package/dist/scanner/typescript.js +6 -85
  21. package/dist/scanner/typescript.js.map +1 -1
  22. package/dist/serve/cli.js +42 -2
  23. package/dist/serve/cli.js.map +1 -1
  24. package/dist/serve/mcp-server.d.ts.map +1 -1
  25. package/dist/serve/mcp-server.js +32 -57
  26. package/dist/serve/mcp-server.js.map +1 -1
  27. package/dist/shared/types.d.ts +23 -0
  28. package/dist/shared/types.d.ts.map +1 -1
  29. package/dist/sync/index.d.ts.map +1 -1
  30. package/dist/sync/index.js +23 -0
  31. package/dist/sync/index.js.map +1 -1
  32. package/dist/sync/phases/architecture.d.ts +12 -0
  33. package/dist/sync/phases/architecture.d.ts.map +1 -0
  34. package/dist/sync/phases/architecture.js +104 -0
  35. package/dist/sync/phases/architecture.js.map +1 -0
  36. package/dist/sync/phases/associations.d.ts +12 -0
  37. package/dist/sync/phases/associations.d.ts.map +1 -0
  38. package/dist/sync/phases/associations.js +202 -0
  39. package/dist/sync/phases/associations.js.map +1 -0
  40. package/dist/sync/phases/learning.d.ts +13 -0
  41. package/dist/sync/phases/learning.d.ts.map +1 -0
  42. package/dist/sync/phases/learning.js +73 -0
  43. package/dist/sync/phases/learning.js.map +1 -0
  44. package/dist/sync/phases/patterns.d.ts +13 -0
  45. package/dist/sync/phases/patterns.d.ts.map +1 -0
  46. package/dist/sync/phases/patterns.js +102 -0
  47. package/dist/sync/phases/patterns.js.map +1 -0
  48. package/package.json +1 -1
@@ -0,0 +1,102 @@
1
+ import * as fs from 'fs';
2
+ import * as path from 'path';
3
+ /**
4
+ * Phase 4: Detect semantic patterns from code changes.
5
+ *
6
+ * Reads changed files and identifies:
7
+ * - New error handling patterns (try-catch, BusinessException)
8
+ * - New design patterns (Builder, decorator usage)
9
+ * - New architecture decisions (config changes, new dependencies)
10
+ */
11
+ export function detectPatterns(projectRoot, changedFiles) {
12
+ const patterns = [];
13
+ for (const file of changedFiles) {
14
+ const abs = path.join(projectRoot, file);
15
+ if (!fs.existsSync(abs))
16
+ continue;
17
+ try {
18
+ const code = fs.readFileSync(abs, 'utf-8');
19
+ // Detect new try-catch blocks → error_solution
20
+ if (code.includes('try {') && code.includes('catch')) {
21
+ const match = code.match(/catch\s*\(([^)]*)\)\s*\{([^}]*)\}/);
22
+ if (match) {
23
+ patterns.push({
24
+ type: 'error_solution',
25
+ summary: `Error handling pattern in ${path.basename(file)}`,
26
+ file,
27
+ confidence: 0.4,
28
+ });
29
+ }
30
+ }
31
+ // Detect throw new BusinessException → error_solution
32
+ const businessExRe = /throw new\s+(\w*[Ee]xception\w*)\s*\(/g;
33
+ let bMatch;
34
+ while ((bMatch = businessExRe.exec(code)) !== null) {
35
+ patterns.push({
36
+ type: 'error_solution',
37
+ summary: `${bMatch[1]} thrown in ${path.basename(file)}`,
38
+ file,
39
+ confidence: 0.5,
40
+ });
41
+ }
42
+ // Detect @Injectable/@Module/@Controller → NestJS pattern
43
+ if (code.includes('@Injectable()')) {
44
+ patterns.push({
45
+ type: 'pattern',
46
+ summary: `Injectable service in ${path.basename(file)}`,
47
+ file,
48
+ confidence: 0.6,
49
+ });
50
+ }
51
+ if (code.includes('@Module(')) {
52
+ patterns.push({
53
+ type: 'pattern',
54
+ summary: `NestJS Module: ${path.basename(file)}`,
55
+ file,
56
+ confidence: 0.7,
57
+ });
58
+ }
59
+ // Detect Builder pattern
60
+ if (code.includes('extends') && code.includes('builder') && code.includes('return this')) {
61
+ patterns.push({
62
+ type: 'pattern',
63
+ summary: `Builder pattern in ${path.basename(file)}`,
64
+ file,
65
+ confidence: 0.5,
66
+ });
67
+ }
68
+ // Detect new imports of infrastructure patterns
69
+ if (code.includes("from '@nestjs/common'") && code.includes('forwardRef')) {
70
+ patterns.push({
71
+ type: 'decision',
72
+ summary: `forwardRef() used in ${path.basename(file)} — may indicate circular dependency`,
73
+ file,
74
+ confidence: 0.3,
75
+ });
76
+ }
77
+ // Detect strategy/template method pattern via abstract classes
78
+ if (code.includes('abstract class') && code.includes('extends')) {
79
+ patterns.push({
80
+ type: 'pattern',
81
+ summary: `Strategy/Template pattern in ${path.basename(file)}`,
82
+ file,
83
+ confidence: 0.4,
84
+ });
85
+ }
86
+ }
87
+ catch {
88
+ // skip
89
+ }
90
+ }
91
+ // Deduplicate by summary
92
+ const seen = new Set();
93
+ const unique = patterns.filter((p) => {
94
+ const key = p.summary;
95
+ if (seen.has(key))
96
+ return false;
97
+ seen.add(key);
98
+ return true;
99
+ });
100
+ return { patterns: unique };
101
+ }
102
+ //# sourceMappingURL=patterns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"patterns.js","sourceRoot":"","sources":["../../../src/sync/phases/patterns.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "memgrid",
3
- "version": "0.5.3",
3
+ "version": "0.6.0",
4
4
  "description": "Project-level semantic memory system for AI coding agents. Replaces full-codebase context loading with a self-evolving knowledge-mesh.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",