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,6 @@
1
+ /**
2
+ * Auto-Improvement module exports
3
+ */
4
+ export { PatternDetector, PatternTracker, BUILTIN_PATTERNS, scanFile, type PatternDefinition } from './pattern-detector.js';
5
+ export { ESLintGenerator, runESLintGenerator } from './eslint-generator.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auto-improve/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,QAAQ,EACR,KAAK,iBAAiB,EACvB,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EACL,eAAe,EACf,kBAAkB,EACnB,MAAM,uBAAuB,CAAA"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Auto-Improvement module exports
3
+ */
4
+ export { PatternDetector, PatternTracker, BUILTIN_PATTERNS, scanFile } from './pattern-detector.js';
5
+ export { ESLintGenerator, runESLintGenerator } from './eslint-generator.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auto-improve/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,QAAQ,EAET,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EACL,eAAe,EACf,kBAAkB,EACnB,MAAM,uBAAuB,CAAA"}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * Pattern Detector
3
+ *
4
+ * Detects repeated patterns/violations across sessions.
5
+ * When threshold is reached, triggers auto-improvement.
6
+ */
7
+ import type { DetectedPattern, PatternDetectionResult, MemoryConfig } from '../types/index.js';
8
+ export interface PatternDefinition {
9
+ id: string;
10
+ name: string;
11
+ description: string;
12
+ detector: (content: string, filePath: string) => boolean;
13
+ severity: 'critical' | 'high' | 'medium' | 'low';
14
+ eslintRule?: string;
15
+ message: string;
16
+ }
17
+ /**
18
+ * Built-in pattern definitions
19
+ */
20
+ export declare const BUILTIN_PATTERNS: PatternDefinition[];
21
+ interface PatternOccurrence {
22
+ file: string;
23
+ line: number;
24
+ code: string;
25
+ timestamp: Date;
26
+ }
27
+ interface TrackedPattern {
28
+ definition: PatternDefinition;
29
+ occurrences: PatternOccurrence[];
30
+ firstSeen: Date;
31
+ lastSeen: Date;
32
+ }
33
+ export declare class PatternTracker {
34
+ private patterns;
35
+ private threshold;
36
+ constructor(threshold?: number);
37
+ /**
38
+ * Track a pattern occurrence
39
+ */
40
+ track(patternId: string, file: string, line: number, code: string): TrackedPattern | null;
41
+ /**
42
+ * Get all patterns that have reached threshold
43
+ */
44
+ getTriggeredPatterns(): TrackedPattern[];
45
+ /**
46
+ * Get all tracked patterns
47
+ */
48
+ getAllPatterns(): TrackedPattern[];
49
+ /**
50
+ * Clear tracking for a pattern (after auto-improvement)
51
+ */
52
+ clear(patternId: string): void;
53
+ /**
54
+ * Get current stats
55
+ */
56
+ getStats(): {
57
+ total: number;
58
+ triggered: number;
59
+ patterns: string[];
60
+ };
61
+ }
62
+ export declare class PatternDetector {
63
+ private tracker;
64
+ private customPatterns;
65
+ constructor(config?: MemoryConfig);
66
+ /**
67
+ * Add custom pattern definition
68
+ */
69
+ addPattern(pattern: PatternDefinition): void;
70
+ /**
71
+ * Scan content for all patterns
72
+ */
73
+ scan(content: string, filePath: string): DetectedPattern[];
74
+ /**
75
+ * Get detection results
76
+ */
77
+ getResults(): PatternDetectionResult;
78
+ /**
79
+ * Get pattern by ID
80
+ */
81
+ getPattern(patternId: string): PatternDefinition | undefined;
82
+ /**
83
+ * Mark pattern as handled (clear tracking)
84
+ */
85
+ markHandled(patternId: string): void;
86
+ }
87
+ /**
88
+ * Scan a file for patterns (standalone)
89
+ */
90
+ export declare function scanFile(filePath: string, content: string, threshold?: number): Promise<DetectedPattern[]>;
91
+ export {};
92
+ //# sourceMappingURL=pattern-detector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pattern-detector.d.ts","sourceRoot":"","sources":["../../src/auto-improve/pattern-detector.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,sBAAsB,EAGtB,YAAY,EACb,MAAM,mBAAmB,CAAA;AAM1B,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAA;IACxD,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAA;IAChD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,iBAAiB,EAkE/C,CAAA;AAMD,UAAU,iBAAiB;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,IAAI,CAAA;CAChB;AAED,UAAU,cAAc;IACtB,UAAU,EAAE,iBAAiB,CAAA;IAC7B,WAAW,EAAE,iBAAiB,EAAE,CAAA;IAChC,SAAS,EAAE,IAAI,CAAA;IACf,QAAQ,EAAE,IAAI,CAAA;CACf;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,SAAS,CAAQ;gBAEb,SAAS,SAAI;IAIzB;;OAEG;IACH,KAAK,CACH,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX,cAAc,GAAG,IAAI;IAgCxB;;OAEG;IACH,oBAAoB,IAAI,cAAc,EAAE;IAKxC;;OAEG;IACH,cAAc,IAAI,cAAc,EAAE;IAIlC;;OAEG;IACH,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAI9B;;OAEG;IACH,QAAQ,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE;CAUrE;AAMD,qBAAa,eAAe;IAC1B,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,cAAc,CAA0B;gBAEpC,MAAM,CAAC,EAAE,YAAY;IAKjC;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAI5C;;OAEG;IACH,IAAI,CACF,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf,eAAe,EAAE;IAsCpB;;OAEG;IACH,UAAU,IAAI,sBAAsB;IAqBpC;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAK5D;;OAEG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;CAGrC;AAMD;;GAEG;AACH,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,SAAS,SAAI,GACZ,OAAO,CAAC,eAAe,EAAE,CAAC,CAG5B"}
@@ -0,0 +1,231 @@
1
+ /**
2
+ * Pattern Detector
3
+ *
4
+ * Detects repeated patterns/violations across sessions.
5
+ * When threshold is reached, triggers auto-improvement.
6
+ */
7
+ /**
8
+ * Built-in pattern definitions
9
+ */
10
+ export const BUILTIN_PATTERNS = [
11
+ {
12
+ id: 'any-type',
13
+ name: 'Any Type Usage',
14
+ description: 'Using any type instead of proper typing',
15
+ detector: (content) => /:\s*any\b/.test(content) || /as\s+any\b/.test(content),
16
+ severity: 'high',
17
+ eslintRule: '@typescript-eslint/no-explicit-any',
18
+ message: 'Avoid using "any" type. Define proper types instead.',
19
+ },
20
+ {
21
+ id: 'console-log',
22
+ name: 'Console Log in Production',
23
+ description: 'Console.log statements left in code',
24
+ detector: (content, filePath) => !filePath.includes('.test.') && /console\.log\(/.test(content),
25
+ severity: 'medium',
26
+ eslintRule: 'no-console',
27
+ message: 'Remove console.log statements before production.',
28
+ },
29
+ {
30
+ id: 'eslint-disable',
31
+ name: 'ESLint Disable Comment',
32
+ description: 'ESLint disable comments hiding issues',
33
+ detector: (content) => /eslint-disable/.test(content),
34
+ severity: 'high',
35
+ message: 'Fix the underlying issue instead of disabling ESLint.',
36
+ },
37
+ {
38
+ id: 'hardcoded-string',
39
+ name: 'Hardcoded UI String',
40
+ description: 'UI strings not using i18n',
41
+ detector: (content, filePath) => filePath.includes('/components/') &&
42
+ />\s*["'][A-Z][a-z]/.test(content) &&
43
+ !/\{t\(/.test(content),
44
+ severity: 'medium',
45
+ message: 'Use i18n translation function for UI strings.',
46
+ },
47
+ {
48
+ id: 'direct-db-query',
49
+ name: 'Direct DB in Component',
50
+ description: 'Database queries in React components',
51
+ detector: (content, filePath) => filePath.includes('/components/') &&
52
+ (/db\.select\(/.test(content) || /db\.insert\(/.test(content)),
53
+ severity: 'high',
54
+ message: 'Move database queries to TRPC routers.',
55
+ },
56
+ {
57
+ id: 'missing-error-handling',
58
+ name: 'Missing Error Handling',
59
+ description: 'Async operations without try/catch',
60
+ detector: (content) => /await\s+\w+\(/.test(content) && !/try\s*\{/.test(content),
61
+ severity: 'medium',
62
+ message: 'Add error handling for async operations.',
63
+ },
64
+ {
65
+ id: 'inline-style',
66
+ name: 'Inline Style',
67
+ description: 'Inline styles instead of Tailwind classes',
68
+ detector: (content) => /style=\{\{/.test(content),
69
+ severity: 'low',
70
+ message: 'Use Tailwind CSS classes instead of inline styles.',
71
+ },
72
+ ];
73
+ export class PatternTracker {
74
+ patterns = new Map();
75
+ threshold;
76
+ constructor(threshold = 3) {
77
+ this.threshold = threshold;
78
+ }
79
+ /**
80
+ * Track a pattern occurrence
81
+ */
82
+ track(patternId, file, line, code) {
83
+ const definition = BUILTIN_PATTERNS.find(p => p.id === patternId);
84
+ if (!definition)
85
+ return null;
86
+ const now = new Date();
87
+ const occurrence = { file, line, code, timestamp: now };
88
+ let tracked = this.patterns.get(patternId);
89
+ if (tracked) {
90
+ // Check if this exact occurrence already exists
91
+ const exists = tracked.occurrences.some(o => o.file === file && o.line === line);
92
+ if (!exists) {
93
+ tracked.occurrences.push(occurrence);
94
+ tracked.lastSeen = now;
95
+ }
96
+ }
97
+ else {
98
+ tracked = {
99
+ definition,
100
+ occurrences: [occurrence],
101
+ firstSeen: now,
102
+ lastSeen: now,
103
+ };
104
+ this.patterns.set(patternId, tracked);
105
+ }
106
+ return tracked;
107
+ }
108
+ /**
109
+ * Get all patterns that have reached threshold
110
+ */
111
+ getTriggeredPatterns() {
112
+ return Array.from(this.patterns.values())
113
+ .filter(p => p.occurrences.length >= this.threshold);
114
+ }
115
+ /**
116
+ * Get all tracked patterns
117
+ */
118
+ getAllPatterns() {
119
+ return Array.from(this.patterns.values());
120
+ }
121
+ /**
122
+ * Clear tracking for a pattern (after auto-improvement)
123
+ */
124
+ clear(patternId) {
125
+ this.patterns.delete(patternId);
126
+ }
127
+ /**
128
+ * Get current stats
129
+ */
130
+ getStats() {
131
+ const all = this.getAllPatterns();
132
+ const triggered = this.getTriggeredPatterns();
133
+ return {
134
+ total: all.length,
135
+ triggered: triggered.length,
136
+ patterns: all.map(p => `${p.definition.id} (${p.occurrences.length})`),
137
+ };
138
+ }
139
+ }
140
+ // =============================================================================
141
+ // PATTERN DETECTOR CLASS
142
+ // =============================================================================
143
+ export class PatternDetector {
144
+ tracker;
145
+ customPatterns = [];
146
+ constructor(config) {
147
+ const threshold = config?.autoImprovement?.violationThreshold ?? 3;
148
+ this.tracker = new PatternTracker(threshold);
149
+ }
150
+ /**
151
+ * Add custom pattern definition
152
+ */
153
+ addPattern(pattern) {
154
+ this.customPatterns.push(pattern);
155
+ }
156
+ /**
157
+ * Scan content for all patterns
158
+ */
159
+ scan(content, filePath) {
160
+ const detected = [];
161
+ const allPatterns = [...BUILTIN_PATTERNS, ...this.customPatterns];
162
+ // Split content into lines for line numbers
163
+ const lines = content.split('\n');
164
+ for (const pattern of allPatterns) {
165
+ // Check each line
166
+ for (let i = 0; i < lines.length; i++) {
167
+ const line = lines[i];
168
+ if (pattern.detector(line, filePath)) {
169
+ // Track the occurrence
170
+ const tracked = this.tracker.track(pattern.id, filePath, i + 1, line.trim().slice(0, 100));
171
+ if (tracked) {
172
+ detected.push({
173
+ patternId: pattern.id,
174
+ description: pattern.description,
175
+ count: tracked.occurrences.length,
176
+ severity: pattern.severity,
177
+ files: [...new Set(tracked.occurrences.map(o => o.file))],
178
+ needsAutoImprove: tracked.occurrences.length >= 3,
179
+ });
180
+ }
181
+ }
182
+ }
183
+ }
184
+ return detected;
185
+ }
186
+ /**
187
+ * Get detection results
188
+ */
189
+ getResults() {
190
+ const all = this.tracker.getAllPatterns();
191
+ const triggered = this.tracker.getTriggeredPatterns();
192
+ const patterns = all.map(t => ({
193
+ patternId: t.definition.id,
194
+ description: t.definition.description,
195
+ count: t.occurrences.length,
196
+ severity: t.definition.severity,
197
+ files: [...new Set(t.occurrences.map(o => o.file))],
198
+ needsAutoImprove: t.occurrences.length >= 3,
199
+ }));
200
+ return {
201
+ total: patterns.length,
202
+ patterns: patterns.sort((a, b) => b.count - a.count),
203
+ pending: triggered.length,
204
+ triggered: patterns.filter(p => p.needsAutoImprove),
205
+ };
206
+ }
207
+ /**
208
+ * Get pattern by ID
209
+ */
210
+ getPattern(patternId) {
211
+ return BUILTIN_PATTERNS.find(p => p.id === patternId) ??
212
+ this.customPatterns.find(p => p.id === patternId);
213
+ }
214
+ /**
215
+ * Mark pattern as handled (clear tracking)
216
+ */
217
+ markHandled(patternId) {
218
+ this.tracker.clear(patternId);
219
+ }
220
+ }
221
+ // =============================================================================
222
+ // STANDALONE SCAN FUNCTION
223
+ // =============================================================================
224
+ /**
225
+ * Scan a file for patterns (standalone)
226
+ */
227
+ export async function scanFile(filePath, content, threshold = 3) {
228
+ const detector = new PatternDetector({ autoImprovement: { violationThreshold: threshold } });
229
+ return detector.scan(content, filePath);
230
+ }
231
+ //# sourceMappingURL=pattern-detector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pattern-detector.js","sourceRoot":"","sources":["../../src/auto-improve/pattern-detector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * CMP Memory System CLI
4
+ *
5
+ * Commands:
6
+ * init - Initialize memory system in project
7
+ * generate - Generate embedding registry
8
+ * scan - Scan for patterns
9
+ * improve - Run auto-improvement
10
+ * status - Show memory system status
11
+ * tasks - View and manage tasks
12
+ * ideas - View captured ideas
13
+ * plan - Manage work plans
14
+ */
15
+ export {};
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;GAYG"}