codexia 0.2.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 (224) hide show
  1. package/CHANGELOG.md +111 -0
  2. package/LICENSE +663 -0
  3. package/README.md +392 -0
  4. package/dist/adapters/github/index.d.ts +66 -0
  5. package/dist/adapters/github/index.d.ts.map +1 -0
  6. package/dist/adapters/github/index.js +84 -0
  7. package/dist/adapters/github/index.js.map +1 -0
  8. package/dist/adapters/index.d.ts +5 -0
  9. package/dist/adapters/index.d.ts.map +1 -0
  10. package/dist/adapters/index.js +5 -0
  11. package/dist/adapters/index.js.map +1 -0
  12. package/dist/cli/commands/changelog.d.ts +3 -0
  13. package/dist/cli/commands/changelog.d.ts.map +1 -0
  14. package/dist/cli/commands/changelog.js +221 -0
  15. package/dist/cli/commands/changelog.js.map +1 -0
  16. package/dist/cli/commands/check.d.ts +3 -0
  17. package/dist/cli/commands/check.d.ts.map +1 -0
  18. package/dist/cli/commands/check.js +35 -0
  19. package/dist/cli/commands/check.js.map +1 -0
  20. package/dist/cli/commands/complexity.d.ts +3 -0
  21. package/dist/cli/commands/complexity.d.ts.map +1 -0
  22. package/dist/cli/commands/complexity.js +103 -0
  23. package/dist/cli/commands/complexity.js.map +1 -0
  24. package/dist/cli/commands/graph.d.ts +3 -0
  25. package/dist/cli/commands/graph.d.ts.map +1 -0
  26. package/dist/cli/commands/graph.js +46 -0
  27. package/dist/cli/commands/graph.js.map +1 -0
  28. package/dist/cli/commands/history.d.ts +3 -0
  29. package/dist/cli/commands/history.d.ts.map +1 -0
  30. package/dist/cli/commands/history.js +127 -0
  31. package/dist/cli/commands/history.js.map +1 -0
  32. package/dist/cli/commands/hotpaths.d.ts +3 -0
  33. package/dist/cli/commands/hotpaths.d.ts.map +1 -0
  34. package/dist/cli/commands/hotpaths.js +153 -0
  35. package/dist/cli/commands/hotpaths.js.map +1 -0
  36. package/dist/cli/commands/impact.d.ts +3 -0
  37. package/dist/cli/commands/impact.d.ts.map +1 -0
  38. package/dist/cli/commands/impact.js +37 -0
  39. package/dist/cli/commands/impact.js.map +1 -0
  40. package/dist/cli/commands/init.d.ts +3 -0
  41. package/dist/cli/commands/init.d.ts.map +1 -0
  42. package/dist/cli/commands/init.js +167 -0
  43. package/dist/cli/commands/init.js.map +1 -0
  44. package/dist/cli/commands/invariants.d.ts +3 -0
  45. package/dist/cli/commands/invariants.d.ts.map +1 -0
  46. package/dist/cli/commands/invariants.js +176 -0
  47. package/dist/cli/commands/invariants.js.map +1 -0
  48. package/dist/cli/commands/mcp-server.d.ts +3 -0
  49. package/dist/cli/commands/mcp-server.d.ts.map +1 -0
  50. package/dist/cli/commands/mcp-server.js +64 -0
  51. package/dist/cli/commands/mcp-server.js.map +1 -0
  52. package/dist/cli/commands/monorepo.d.ts +3 -0
  53. package/dist/cli/commands/monorepo.d.ts.map +1 -0
  54. package/dist/cli/commands/monorepo.js +156 -0
  55. package/dist/cli/commands/monorepo.js.map +1 -0
  56. package/dist/cli/commands/pr-report.d.ts +3 -0
  57. package/dist/cli/commands/pr-report.d.ts.map +1 -0
  58. package/dist/cli/commands/pr-report.js +32 -0
  59. package/dist/cli/commands/pr-report.js.map +1 -0
  60. package/dist/cli/commands/scan.d.ts +3 -0
  61. package/dist/cli/commands/scan.d.ts.map +1 -0
  62. package/dist/cli/commands/scan.js +25 -0
  63. package/dist/cli/commands/scan.js.map +1 -0
  64. package/dist/cli/commands/signals.d.ts +3 -0
  65. package/dist/cli/commands/signals.d.ts.map +1 -0
  66. package/dist/cli/commands/signals.js +34 -0
  67. package/dist/cli/commands/signals.js.map +1 -0
  68. package/dist/cli/commands/tests.d.ts +3 -0
  69. package/dist/cli/commands/tests.d.ts.map +1 -0
  70. package/dist/cli/commands/tests.js +30 -0
  71. package/dist/cli/commands/tests.js.map +1 -0
  72. package/dist/cli/commands/watch.d.ts +3 -0
  73. package/dist/cli/commands/watch.d.ts.map +1 -0
  74. package/dist/cli/commands/watch.js +131 -0
  75. package/dist/cli/commands/watch.js.map +1 -0
  76. package/dist/cli/engine.d.ts +162 -0
  77. package/dist/cli/engine.d.ts.map +1 -0
  78. package/dist/cli/engine.js +564 -0
  79. package/dist/cli/engine.js.map +1 -0
  80. package/dist/cli/formatter.d.ts +39 -0
  81. package/dist/cli/formatter.d.ts.map +1 -0
  82. package/dist/cli/formatter.js +444 -0
  83. package/dist/cli/formatter.js.map +1 -0
  84. package/dist/cli/index.d.ts +2 -0
  85. package/dist/cli/index.d.ts.map +1 -0
  86. package/dist/cli/index.js +63 -0
  87. package/dist/cli/index.js.map +1 -0
  88. package/dist/cli/interactive.d.ts +7 -0
  89. package/dist/cli/interactive.d.ts.map +1 -0
  90. package/dist/cli/interactive.js +644 -0
  91. package/dist/cli/interactive.js.map +1 -0
  92. package/dist/core/dependency-graph.d.ts +54 -0
  93. package/dist/core/dependency-graph.d.ts.map +1 -0
  94. package/dist/core/dependency-graph.js +190 -0
  95. package/dist/core/dependency-graph.js.map +1 -0
  96. package/dist/core/dependency-graph.test.d.ts +2 -0
  97. package/dist/core/dependency-graph.test.d.ts.map +1 -0
  98. package/dist/core/dependency-graph.test.js +106 -0
  99. package/dist/core/dependency-graph.test.js.map +1 -0
  100. package/dist/core/git-analyzer.d.ts +52 -0
  101. package/dist/core/git-analyzer.d.ts.map +1 -0
  102. package/dist/core/git-analyzer.js +250 -0
  103. package/dist/core/git-analyzer.js.map +1 -0
  104. package/dist/core/git-analyzer.test.d.ts +2 -0
  105. package/dist/core/git-analyzer.test.d.ts.map +1 -0
  106. package/dist/core/git-analyzer.test.js +71 -0
  107. package/dist/core/git-analyzer.test.js.map +1 -0
  108. package/dist/core/index.d.ts +7 -0
  109. package/dist/core/index.d.ts.map +1 -0
  110. package/dist/core/index.js +7 -0
  111. package/dist/core/index.js.map +1 -0
  112. package/dist/core/repo-indexer.d.ts +57 -0
  113. package/dist/core/repo-indexer.d.ts.map +1 -0
  114. package/dist/core/repo-indexer.js +356 -0
  115. package/dist/core/repo-indexer.js.map +1 -0
  116. package/dist/core/repo-indexer.test.d.ts +2 -0
  117. package/dist/core/repo-indexer.test.d.ts.map +1 -0
  118. package/dist/core/repo-indexer.test.js +89 -0
  119. package/dist/core/repo-indexer.test.js.map +1 -0
  120. package/dist/core/signals-engine.d.ts +38 -0
  121. package/dist/core/signals-engine.d.ts.map +1 -0
  122. package/dist/core/signals-engine.js +142 -0
  123. package/dist/core/signals-engine.js.map +1 -0
  124. package/dist/core/signals-engine.test.d.ts +2 -0
  125. package/dist/core/signals-engine.test.d.ts.map +1 -0
  126. package/dist/core/signals-engine.test.js +129 -0
  127. package/dist/core/signals-engine.test.js.map +1 -0
  128. package/dist/core/symbol-map.d.ts +45 -0
  129. package/dist/core/symbol-map.d.ts.map +1 -0
  130. package/dist/core/symbol-map.js +187 -0
  131. package/dist/core/symbol-map.js.map +1 -0
  132. package/dist/core/types.d.ts +514 -0
  133. package/dist/core/types.d.ts.map +1 -0
  134. package/dist/core/types.js +5 -0
  135. package/dist/core/types.js.map +1 -0
  136. package/dist/core/types.test.d.ts +2 -0
  137. package/dist/core/types.test.d.ts.map +1 -0
  138. package/dist/core/types.test.js +20 -0
  139. package/dist/core/types.test.js.map +1 -0
  140. package/dist/index.d.ts +5 -0
  141. package/dist/index.d.ts.map +1 -0
  142. package/dist/index.js +9 -0
  143. package/dist/index.js.map +1 -0
  144. package/dist/mcp/index.d.ts +3 -0
  145. package/dist/mcp/index.d.ts.map +1 -0
  146. package/dist/mcp/index.js +2 -0
  147. package/dist/mcp/index.js.map +1 -0
  148. package/dist/mcp/server.d.ts +89 -0
  149. package/dist/mcp/server.d.ts.map +1 -0
  150. package/dist/mcp/server.js +549 -0
  151. package/dist/mcp/server.js.map +1 -0
  152. package/dist/modules/changelog-generator.d.ts +82 -0
  153. package/dist/modules/changelog-generator.d.ts.map +1 -0
  154. package/dist/modules/changelog-generator.js +350 -0
  155. package/dist/modules/changelog-generator.js.map +1 -0
  156. package/dist/modules/complexity-engine.d.ts +86 -0
  157. package/dist/modules/complexity-engine.d.ts.map +1 -0
  158. package/dist/modules/complexity-engine.js +355 -0
  159. package/dist/modules/complexity-engine.js.map +1 -0
  160. package/dist/modules/convention-checker.d.ts +24 -0
  161. package/dist/modules/convention-checker.d.ts.map +1 -0
  162. package/dist/modules/convention-checker.js +181 -0
  163. package/dist/modules/convention-checker.js.map +1 -0
  164. package/dist/modules/graph-utils.d.ts +38 -0
  165. package/dist/modules/graph-utils.d.ts.map +1 -0
  166. package/dist/modules/graph-utils.js +40 -0
  167. package/dist/modules/graph-utils.js.map +1 -0
  168. package/dist/modules/hot-path-detector.d.ts +105 -0
  169. package/dist/modules/hot-path-detector.d.ts.map +1 -0
  170. package/dist/modules/hot-path-detector.js +332 -0
  171. package/dist/modules/hot-path-detector.js.map +1 -0
  172. package/dist/modules/impact-analyzer.d.ts +40 -0
  173. package/dist/modules/impact-analyzer.d.ts.map +1 -0
  174. package/dist/modules/impact-analyzer.js +218 -0
  175. package/dist/modules/impact-analyzer.js.map +1 -0
  176. package/dist/modules/impact-analyzer.test.d.ts +2 -0
  177. package/dist/modules/impact-analyzer.test.d.ts.map +1 -0
  178. package/dist/modules/impact-analyzer.test.js +308 -0
  179. package/dist/modules/impact-analyzer.test.js.map +1 -0
  180. package/dist/modules/index.d.ts +14 -0
  181. package/dist/modules/index.d.ts.map +1 -0
  182. package/dist/modules/index.js +20 -0
  183. package/dist/modules/index.js.map +1 -0
  184. package/dist/modules/invariant-engine.d.ts +119 -0
  185. package/dist/modules/invariant-engine.d.ts.map +1 -0
  186. package/dist/modules/invariant-engine.js +457 -0
  187. package/dist/modules/invariant-engine.js.map +1 -0
  188. package/dist/modules/memory-loader.d.ts +34 -0
  189. package/dist/modules/memory-loader.d.ts.map +1 -0
  190. package/dist/modules/memory-loader.js +313 -0
  191. package/dist/modules/memory-loader.js.map +1 -0
  192. package/dist/modules/memory-loader.test.d.ts +2 -0
  193. package/dist/modules/memory-loader.test.d.ts.map +1 -0
  194. package/dist/modules/memory-loader.test.js +120 -0
  195. package/dist/modules/memory-loader.test.js.map +1 -0
  196. package/dist/modules/monorepo-analyzer.d.ts +141 -0
  197. package/dist/modules/monorepo-analyzer.d.ts.map +1 -0
  198. package/dist/modules/monorepo-analyzer.js +453 -0
  199. package/dist/modules/monorepo-analyzer.js.map +1 -0
  200. package/dist/modules/plugin-system.d.ts +144 -0
  201. package/dist/modules/plugin-system.d.ts.map +1 -0
  202. package/dist/modules/plugin-system.js +428 -0
  203. package/dist/modules/plugin-system.js.map +1 -0
  204. package/dist/modules/smart-test-prioritizer.d.ts +95 -0
  205. package/dist/modules/smart-test-prioritizer.d.ts.map +1 -0
  206. package/dist/modules/smart-test-prioritizer.js +328 -0
  207. package/dist/modules/smart-test-prioritizer.js.map +1 -0
  208. package/dist/modules/temporal-analyzer.d.ts +71 -0
  209. package/dist/modules/temporal-analyzer.d.ts.map +1 -0
  210. package/dist/modules/temporal-analyzer.js +301 -0
  211. package/dist/modules/temporal-analyzer.js.map +1 -0
  212. package/dist/modules/test-suggester.d.ts +22 -0
  213. package/dist/modules/test-suggester.d.ts.map +1 -0
  214. package/dist/modules/test-suggester.js +145 -0
  215. package/dist/modules/test-suggester.js.map +1 -0
  216. package/dist/modules/visualizer.d.ts +49 -0
  217. package/dist/modules/visualizer.d.ts.map +1 -0
  218. package/dist/modules/visualizer.js +302 -0
  219. package/dist/modules/visualizer.js.map +1 -0
  220. package/dist/modules/watcher.d.ts +82 -0
  221. package/dist/modules/watcher.d.ts.map +1 -0
  222. package/dist/modules/watcher.js +298 -0
  223. package/dist/modules/watcher.js.map +1 -0
  224. package/package.json +70 -0
@@ -0,0 +1,313 @@
1
+ import * as fs from 'node:fs/promises';
2
+ import * as path from 'node:path';
3
+ export class MemoryLoader {
4
+ memoryDir;
5
+ constructor(repoRoot) {
6
+ this.memoryDir = path.join(repoRoot, '.codexia');
7
+ }
8
+ /**
9
+ * Check if memory directory exists
10
+ */
11
+ async hasMemory() {
12
+ try {
13
+ await fs.access(this.memoryDir);
14
+ return true;
15
+ }
16
+ catch {
17
+ return false;
18
+ }
19
+ }
20
+ /**
21
+ * Load all project memory
22
+ */
23
+ async loadMemory() {
24
+ if (!(await this.hasMemory())) {
25
+ return null;
26
+ }
27
+ const [architecture, conventions, invariants, adrs] = await Promise.all([
28
+ this.loadArchitecture(),
29
+ this.loadConventions(),
30
+ this.loadInvariants(),
31
+ this.loadAdrs(),
32
+ ]);
33
+ return {
34
+ architecture,
35
+ conventions,
36
+ invariants,
37
+ adrs,
38
+ };
39
+ }
40
+ /**
41
+ * Load architecture memory
42
+ */
43
+ async loadArchitecture() {
44
+ const filePath = path.join(this.memoryDir, 'architecture.md');
45
+ try {
46
+ const content = await fs.readFile(filePath, 'utf-8');
47
+ return this.parseArchitecture(content);
48
+ }
49
+ catch {
50
+ return {
51
+ layers: [],
52
+ boundaries: [],
53
+ entryPoints: [],
54
+ criticalPaths: [],
55
+ };
56
+ }
57
+ }
58
+ /**
59
+ * Load conventions memory
60
+ */
61
+ async loadConventions() {
62
+ const filePath = path.join(this.memoryDir, 'conventions.md');
63
+ try {
64
+ const content = await fs.readFile(filePath, 'utf-8');
65
+ return this.parseConventions(content);
66
+ }
67
+ catch {
68
+ return {
69
+ naming: [],
70
+ structure: [],
71
+ patterns: [],
72
+ };
73
+ }
74
+ }
75
+ /**
76
+ * Load invariants memory
77
+ */
78
+ async loadInvariants() {
79
+ const filePath = path.join(this.memoryDir, 'invariants.md');
80
+ try {
81
+ const content = await fs.readFile(filePath, 'utf-8');
82
+ return this.parseInvariants(content);
83
+ }
84
+ catch {
85
+ return {
86
+ rules: [],
87
+ };
88
+ }
89
+ }
90
+ /**
91
+ * Load ADRs
92
+ */
93
+ async loadAdrs() {
94
+ const adrDir = path.join(this.memoryDir, 'adrs');
95
+ try {
96
+ const files = await fs.readdir(adrDir);
97
+ const adrs = [];
98
+ for (const file of files) {
99
+ if (file.endsWith('.md')) {
100
+ const content = await fs.readFile(path.join(adrDir, file), 'utf-8');
101
+ const adr = this.parseAdr(content, file);
102
+ if (adr) {
103
+ adrs.push(adr);
104
+ }
105
+ }
106
+ }
107
+ return adrs;
108
+ }
109
+ catch {
110
+ return [];
111
+ }
112
+ }
113
+ parseArchitecture(content) {
114
+ const layers = [];
115
+ const boundaries = [];
116
+ const entryPoints = [];
117
+ const criticalPaths = [];
118
+ const lines = content.split('\n');
119
+ let currentSection = '';
120
+ let currentLayer = null;
121
+ for (let i = 0; i < lines.length; i++) {
122
+ const line = lines[i];
123
+ if (line.startsWith('## ')) {
124
+ // Save current layer if any
125
+ if (currentLayer) {
126
+ layers.push(currentLayer);
127
+ currentLayer = null;
128
+ }
129
+ currentSection = line.slice(3).toLowerCase().trim();
130
+ }
131
+ else if (currentSection === 'layers' || currentSection.includes('architecture')) {
132
+ // Parse layer definition: **LayerName**: Description
133
+ const layerMatch = line.match(/^[-*]\s*\*\*(.+?)\*\*:\s*(.+)$/);
134
+ if (layerMatch) {
135
+ if (currentLayer) {
136
+ layers.push(currentLayer);
137
+ }
138
+ currentLayer = {
139
+ name: layerMatch[1].trim(),
140
+ description: layerMatch[2].trim(),
141
+ paths: [],
142
+ allowedDependencies: [],
143
+ };
144
+ }
145
+ // Parse paths (indented under layer): - path: `src/foo/**`
146
+ else if (currentLayer) {
147
+ const pathMatch = line.match(/^\s+[-*]\s*(?:path|folder|directory|location)s?:\s*`(.+?)`/i);
148
+ if (pathMatch) {
149
+ currentLayer.paths.push(pathMatch[1]);
150
+ }
151
+ // Also match simple path patterns in backticks
152
+ const simplePathMatch = line.match(/^\s+[-*]\s*`([^`]+)`/);
153
+ if (simplePathMatch && !pathMatch) {
154
+ currentLayer.paths.push(simplePathMatch[1]);
155
+ }
156
+ // Parse allowed dependencies
157
+ const depsMatch = line.match(/^\s+[-*]\s*(?:can\s+)?(?:depend|import)s?\s*(?:on)?:\s*(.+)/i);
158
+ if (depsMatch) {
159
+ const deps = depsMatch[1].split(/[,;]/).map(d => d.trim().replace(/`/g, '')).filter(Boolean);
160
+ currentLayer.allowedDependencies.push(...deps);
161
+ }
162
+ }
163
+ }
164
+ else if (currentSection.includes('boundaries') || currentSection.includes('rules')) {
165
+ // Parse boundary rules: **From** cannot import **To**: reason
166
+ const boundaryMatch = line.match(/^[-*]\s*\*\*(.+?)\*\*\s*(cannot|must not|should not|can|may)\s*(?:import|depend on)\s*\*\*(.+?)\*\*(?::\s*(.+))?/i);
167
+ if (boundaryMatch) {
168
+ boundaries.push({
169
+ from: boundaryMatch[1].trim(),
170
+ to: boundaryMatch[3].trim(),
171
+ allowed: !['cannot', 'must not', 'should not'].includes(boundaryMatch[2].toLowerCase()),
172
+ reason: boundaryMatch[4]?.trim() || '',
173
+ });
174
+ }
175
+ }
176
+ else if (currentSection.includes('entry point')) {
177
+ const trimmed = line.trim();
178
+ if (trimmed.startsWith('-') || trimmed.startsWith('*')) {
179
+ const content = trimmed.replace(/^[-*]\s+/, '').trim();
180
+ let entry = null;
181
+ // Case 1: entire content is a single backticked value, e.g. - `src/index.ts`
182
+ const backticked = content.match(/^`([^`]+)`$/);
183
+ if (backticked) {
184
+ entry = backticked[1].trim();
185
+ }
186
+ else if (!content.includes('`') && /^[\w./\\*-]+$/.test(content)) {
187
+ // Case 2: bare path-like pattern without backticks, e.g. - src/index.ts
188
+ entry = content;
189
+ }
190
+ if (entry) {
191
+ entryPoints.push(entry);
192
+ }
193
+ }
194
+ }
195
+ else if (currentSection.includes('critical path')) {
196
+ const trimmed = line.trim();
197
+ if (trimmed.startsWith('-') || trimmed.startsWith('*')) {
198
+ const content = trimmed.replace(/^[-*]\s+/, '').trim();
199
+ let criticalPath = null;
200
+ // Case 1: entire content is a single backticked value, e.g. - `src/feature/**`
201
+ const backticked = content.match(/^`([^`]+)`$/);
202
+ if (backticked) {
203
+ criticalPath = backticked[1].trim();
204
+ }
205
+ else if (!content.includes('`') && /^[\w./\\*-]+$/.test(content)) {
206
+ // Case 2: bare path-like pattern without backticks
207
+ criticalPath = content;
208
+ }
209
+ if (criticalPath) {
210
+ criticalPaths.push(criticalPath);
211
+ }
212
+ }
213
+ }
214
+ }
215
+ // Don't forget the last layer
216
+ if (currentLayer) {
217
+ layers.push(currentLayer);
218
+ }
219
+ return { layers, boundaries, entryPoints, criticalPaths };
220
+ }
221
+ parseConventions(content) {
222
+ const naming = [];
223
+ const structure = [];
224
+ const patterns = [];
225
+ const lines = content.split('\n');
226
+ let currentSection = '';
227
+ for (const line of lines) {
228
+ if (line.startsWith('## ')) {
229
+ currentSection = line.slice(3).toLowerCase();
230
+ }
231
+ else if (line.startsWith('- ') && currentSection.includes('naming')) {
232
+ const match = line.match(/- (.+): `(.+)`/);
233
+ if (match) {
234
+ naming.push({
235
+ target: match[1],
236
+ pattern: match[2],
237
+ example: '',
238
+ });
239
+ }
240
+ }
241
+ else if (line.startsWith('- ') && currentSection.includes('structure')) {
242
+ structure.push({
243
+ description: line.slice(2).trim(),
244
+ rule: '',
245
+ });
246
+ }
247
+ }
248
+ return { naming, structure, patterns };
249
+ }
250
+ parseInvariants(content) {
251
+ const rules = [];
252
+ const lines = content.split('\n');
253
+ let currentRule = null;
254
+ for (const line of lines) {
255
+ if (line.startsWith('### ')) {
256
+ if (currentRule) {
257
+ rules.push(currentRule);
258
+ }
259
+ currentRule = {
260
+ id: line.slice(4).trim(),
261
+ description: '',
262
+ severity: 'high',
263
+ };
264
+ }
265
+ else if (currentRule && line.trim() && !line.startsWith('#')) {
266
+ currentRule.description += line.trim() + ' ';
267
+ }
268
+ }
269
+ if (currentRule) {
270
+ rules.push(currentRule);
271
+ }
272
+ return { rules };
273
+ }
274
+ parseAdr(content, filename) {
275
+ const lines = content.split('\n');
276
+ const adr = {
277
+ id: filename.replace('.md', ''),
278
+ consequences: [],
279
+ };
280
+ let currentSection = '';
281
+ for (const line of lines) {
282
+ if (line.startsWith('# ')) {
283
+ adr.title = line.slice(2).trim();
284
+ }
285
+ else if (line.startsWith('## ')) {
286
+ currentSection = line.slice(3).toLowerCase();
287
+ }
288
+ else if (line.startsWith('**Status:**')) {
289
+ const status = line.split(':')[1]?.trim().toLowerCase();
290
+ if (status === 'accepted' || status === 'proposed' || status === 'deprecated' || status === 'superseded') {
291
+ adr.status = status;
292
+ }
293
+ }
294
+ else if (line.startsWith('**Date:**')) {
295
+ adr.date = line.split(':')[1]?.trim() || '';
296
+ }
297
+ else if (currentSection === 'context' && line.trim()) {
298
+ adr.context = (adr.context || '') + line.trim() + ' ';
299
+ }
300
+ else if (currentSection === 'decision' && line.trim()) {
301
+ adr.decision = (adr.decision || '') + line.trim() + ' ';
302
+ }
303
+ else if (currentSection === 'consequences' && line.startsWith('- ')) {
304
+ adr.consequences?.push(line.slice(2).trim());
305
+ }
306
+ }
307
+ if (adr.title && adr.status) {
308
+ return adr;
309
+ }
310
+ return null;
311
+ }
312
+ }
313
+ //# sourceMappingURL=memory-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-loader.js","sourceRoot":"","sources":["../../src/modules/memory-loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=memory-loader.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-loader.test.d.ts","sourceRoot":"","sources":["../../src/modules/memory-loader.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,120 @@
1
+ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
2
+ import * as fs from 'node:fs/promises';
3
+ import { MemoryLoader } from './memory-loader.js';
4
+ // Mock fs module
5
+ vi.mock('node:fs/promises');
6
+ describe('MemoryLoader', () => {
7
+ let loader;
8
+ const repoRoot = '/test/repo';
9
+ beforeEach(() => {
10
+ loader = new MemoryLoader(repoRoot);
11
+ vi.resetAllMocks();
12
+ });
13
+ afterEach(() => {
14
+ vi.restoreAllMocks();
15
+ });
16
+ describe('hasMemory', () => {
17
+ it('should return true if .codexia exists', async () => {
18
+ vi.mocked(fs.access).mockResolvedValue(undefined);
19
+ expect(await loader.hasMemory()).toBe(true);
20
+ });
21
+ it('should return false if .codexia does not exist', async () => {
22
+ vi.mocked(fs.access).mockRejectedValue(new Error('ENOENT'));
23
+ expect(await loader.hasMemory()).toBe(false);
24
+ });
25
+ });
26
+ describe('loadArchitecture', () => {
27
+ it('should parse architecture file', async () => {
28
+ const content = `# Architecture
29
+
30
+ ## Layers
31
+
32
+ - **CLI**: Command-line interface
33
+ - \`src/cli/**\`
34
+ - depends on: Core, Modules
35
+
36
+ - **Core**: Core logic
37
+ - \`src/core/**\`
38
+
39
+ ## Entry Points
40
+
41
+ - src/index.ts
42
+ `;
43
+ vi.mocked(fs.readFile).mockResolvedValue(content);
44
+ const arch = await loader.loadArchitecture();
45
+ expect(arch.layers).toHaveLength(2);
46
+ expect(arch.layers[0].name).toBe('CLI');
47
+ expect(arch.layers[0].description).toBe('Command-line interface');
48
+ expect(arch.entryPoints).toContain('src/index.ts');
49
+ });
50
+ it('should return empty architecture if file missing', async () => {
51
+ vi.mocked(fs.readFile).mockRejectedValue(new Error('ENOENT'));
52
+ const arch = await loader.loadArchitecture();
53
+ expect(arch.layers).toHaveLength(0);
54
+ expect(arch.boundaries).toHaveLength(0);
55
+ });
56
+ });
57
+ describe('loadConventions', () => {
58
+ it('should parse conventions file', async () => {
59
+ const content = `# Conventions
60
+
61
+ ## Naming Conventions
62
+
63
+ - Classes: \`PascalCase\`
64
+ - Functions: \`camelCase\`
65
+
66
+ ## File Structure
67
+
68
+ - One class per file
69
+ `;
70
+ vi.mocked(fs.readFile).mockResolvedValue(content);
71
+ const conv = await loader.loadConventions();
72
+ expect(conv.naming.length).toBeGreaterThan(0);
73
+ expect(conv.structure.length).toBeGreaterThan(0);
74
+ });
75
+ });
76
+ describe('loadInvariants', () => {
77
+ it('should parse invariants file', async () => {
78
+ const content = `# Invariants
79
+
80
+ ### No direct DB access
81
+
82
+ The CLI must not directly access the database.
83
+
84
+ ### All APIs typed
85
+
86
+ All exported APIs must have explicit types.
87
+ `;
88
+ vi.mocked(fs.readFile).mockResolvedValue(content);
89
+ const inv = await loader.loadInvariants();
90
+ expect(inv.rules).toHaveLength(2);
91
+ expect(inv.rules[0].id).toBe('No direct DB access');
92
+ });
93
+ });
94
+ describe('loadAdrs', () => {
95
+ it('should return empty array if ADR directory missing', async () => {
96
+ vi.mocked(fs.readdir).mockRejectedValue(new Error('ENOENT'));
97
+ const adrs = await loader.loadAdrs();
98
+ expect(adrs).toHaveLength(0);
99
+ });
100
+ });
101
+ describe('loadMemory', () => {
102
+ it('should return null if no memory directory', async () => {
103
+ vi.mocked(fs.access).mockRejectedValue(new Error('ENOENT'));
104
+ const memory = await loader.loadMemory();
105
+ expect(memory).toBeNull();
106
+ });
107
+ it('should load all memory sections', async () => {
108
+ vi.mocked(fs.access).mockResolvedValue(undefined);
109
+ vi.mocked(fs.readFile).mockResolvedValue('# Empty');
110
+ vi.mocked(fs.readdir).mockResolvedValue([]);
111
+ const memory = await loader.loadMemory();
112
+ expect(memory).not.toBeNull();
113
+ expect(memory).toHaveProperty('architecture');
114
+ expect(memory).toHaveProperty('conventions');
115
+ expect(memory).toHaveProperty('invariants');
116
+ expect(memory).toHaveProperty('adrs');
117
+ });
118
+ });
119
+ });
120
+ //# sourceMappingURL=memory-loader.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-loader.test.js","sourceRoot":"","sources":["../../src/modules/memory-loader.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,iBAAiB;AACjB,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AAE5B,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,IAAI,MAAoB,CAAC;IACzB,MAAM,QAAQ,GAAG,YAAY,CAAC;IAE9B,UAAU,CAAC,GAAG,EAAE;QACd,MAAM,GAAG,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC;QACpC,EAAE,CAAC,aAAa,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,EAAE,CAAC,eAAe,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;QACzB,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;YACrD,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAClD,MAAM,CAAC,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;YAC9D,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC5D,MAAM,CAAC,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAChC,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;YAC9C,MAAM,OAAO,GAAG;;;;;;;;;;;;;;CAcrB,CAAC;YAEI,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAElD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,gBAAgB,EAAE,CAAC;YAE7C,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACxC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;YAClE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;YAChE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;YAE9D,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,gBAAgB,EAAE,CAAC;YAE7C,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;QAC/B,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;YAC7C,MAAM,OAAO,GAAG;;;;;;;;;;CAUrB,CAAC;YAEI,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAElD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,eAAe,EAAE,CAAC;YAE5C,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YAC9C,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;YAC5C,MAAM,OAAO,GAAG;;;;;;;;;CASrB,CAAC;YAEI,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAElD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,cAAc,EAAE,CAAC;YAE1C,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAClC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;QACxB,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;YAClE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;YAE7D,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;YACrC,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;YACzD,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;YAE5D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;YACzC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;YAC/C,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAClD,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;YACpD,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;YAE5C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;YAEzC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YAC9B,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;YAC9C,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;YAC7C,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;YAC5C,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,141 @@
1
+ import type { FileInfo } from '../core/types.js';
2
+ export interface MonorepoConfig {
3
+ type: MonorepoType;
4
+ rootPath: string;
5
+ packages: PackageInfo[];
6
+ workspaceConfig?: WorkspaceConfig;
7
+ }
8
+ export type MonorepoType = 'npm-workspaces' | 'yarn-workspaces' | 'pnpm-workspaces' | 'lerna' | 'nx' | 'turborepo' | 'rush' | 'unknown' | 'single';
9
+ export interface PackageInfo {
10
+ name: string;
11
+ path: string;
12
+ relativePath: string;
13
+ version?: string;
14
+ private?: boolean;
15
+ dependencies: string[];
16
+ devDependencies: string[];
17
+ peerDependencies: string[];
18
+ localDependencies: string[];
19
+ }
20
+ export interface WorkspaceConfig {
21
+ packages: string[];
22
+ nohoist?: string[];
23
+ }
24
+ export interface CrossPackageEdge {
25
+ from: string;
26
+ to: string;
27
+ type: 'dependency' | 'devDependency' | 'peerDependency' | 'import';
28
+ files?: Array<{
29
+ from: string;
30
+ to: string;
31
+ }>;
32
+ }
33
+ export interface MonorepoAnalysis {
34
+ config: MonorepoConfig;
35
+ crossPackageDependencies: CrossPackageEdge[];
36
+ sharedDependencies: SharedDependency[];
37
+ packageStats: PackageStats[];
38
+ issues: MonorepoIssue[];
39
+ }
40
+ export interface SharedDependency {
41
+ name: string;
42
+ versions: Array<{
43
+ package: string;
44
+ version: string;
45
+ }>;
46
+ hasVersionMismatch: boolean;
47
+ }
48
+ export interface PackageStats {
49
+ name: string;
50
+ files: number;
51
+ symbols: number;
52
+ exports: number;
53
+ localDeps: number;
54
+ externalDeps: number;
55
+ }
56
+ export interface MonorepoIssue {
57
+ type: 'version-mismatch' | 'circular-dep' | 'missing-peer' | 'orphan-package';
58
+ severity: 'error' | 'warning' | 'info';
59
+ message: string;
60
+ packages: string[];
61
+ suggestion?: string;
62
+ }
63
+ export declare class MonorepoDetector {
64
+ private repoRoot;
65
+ constructor(repoRoot: string);
66
+ /**
67
+ * Detect if this is a monorepo and its type
68
+ */
69
+ detect(): Promise<MonorepoConfig>;
70
+ /**
71
+ * Detect monorepo type
72
+ */
73
+ private detectType;
74
+ /**
75
+ * Discover packages in the monorepo
76
+ */
77
+ private discoverPackages;
78
+ /**
79
+ * Load workspace configuration
80
+ */
81
+ private loadWorkspaceConfig;
82
+ /**
83
+ * Get pnpm workspace patterns
84
+ */
85
+ private getPnpmWorkspaces;
86
+ /**
87
+ * Get npm/yarn workspace patterns
88
+ */
89
+ private getNpmWorkspaces;
90
+ /**
91
+ * Get lerna package patterns
92
+ */
93
+ private getLernaPackages;
94
+ /**
95
+ * Read and parse package.json
96
+ */
97
+ private readPackageJson;
98
+ }
99
+ export declare class MonorepoAnalyzer {
100
+ private config;
101
+ private packageIndexers;
102
+ private packageGraphs;
103
+ constructor(config: MonorepoConfig);
104
+ /**
105
+ * Analyze the monorepo
106
+ */
107
+ analyze(): Promise<MonorepoAnalysis>;
108
+ /**
109
+ * Find cross-package dependencies
110
+ */
111
+ private findCrossPackageDependencies;
112
+ /**
113
+ * Find shared external dependencies
114
+ */
115
+ private findSharedDependencies;
116
+ /**
117
+ * Read and parse package.json from a directory
118
+ */
119
+ private readPackageJson;
120
+ /**
121
+ * Calculate stats for each package
122
+ */
123
+ private calculatePackageStats;
124
+ /**
125
+ * Find issues in monorepo structure
126
+ */
127
+ private findIssues;
128
+ /**
129
+ * Detect circular dependencies between packages
130
+ */
131
+ private detectCircularPackageDeps;
132
+ /**
133
+ * Get files for a specific package
134
+ */
135
+ getPackageFiles(packageName: string): Map<string, FileInfo> | undefined;
136
+ }
137
+ /**
138
+ * Detect and analyze monorepo
139
+ */
140
+ export declare function analyzeMonorepo(repoRoot: string): Promise<MonorepoAnalysis>;
141
+ //# sourceMappingURL=monorepo-analyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"monorepo-analyzer.d.ts","sourceRoot":"","sources":["../../src/modules/monorepo-analyzer.ts"],"names":[],"mappings":"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"}