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,153 @@
1
+ import { Command } from 'commander';
2
+ import { CodexiaEngine } from '../engine.js';
3
+ import { Formatter } from '../formatter.js';
4
+ import chalk from 'chalk';
5
+ export const hotpathsCommand = new Command('hotpaths')
6
+ .description('Detect and analyze critical code paths')
7
+ .option('-e, --entry <files>', 'Entry points (comma-separated)')
8
+ .option('--auto-detect', 'Auto-detect entry points', true)
9
+ .option('--top <n>', 'Show top N hot paths', '10')
10
+ .option('--min-score <score>', 'Minimum criticality score', '0.5')
11
+ .option('--trace <symbol>', 'Trace paths through specific symbol')
12
+ .option('--impact <file>', 'Show impact on hot paths for a file')
13
+ .addHelpText('after', `
14
+ Examples:
15
+ $ codexia hotpaths Auto-detect and show hot paths
16
+ $ codexia hotpaths -e src/index.ts Analyze from specific entry
17
+ $ codexia hotpaths --trace handleRequest Trace paths through symbol
18
+ $ codexia hotpaths --impact src/db.ts Show how file affects hot paths
19
+ `)
20
+ .action(async (options, command) => {
21
+ const globalOpts = command.parent?.opts() || {};
22
+ const formatter = new Formatter(globalOpts.json);
23
+ try {
24
+ const engine = new CodexiaEngine();
25
+ await engine.initialize();
26
+ const entryPoints = options.entry?.split(',');
27
+ const minScore = parseFloat(options.minScore);
28
+ const topN = parseInt(options.top);
29
+ const analysis = await engine.analyzeHotPaths({
30
+ entryPoints,
31
+ autoDetect: options.autoDetect && !entryPoints,
32
+ trace: options.trace,
33
+ impactFile: options.impact,
34
+ });
35
+ if (globalOpts.json) {
36
+ console.log(JSON.stringify(analysis, null, 2));
37
+ return;
38
+ }
39
+ console.log(chalk.bold.cyan('\nšŸ”„ Hot Path Analysis\n'));
40
+ console.log(chalk.dim('─'.repeat(80)));
41
+ // Entry points - handle missing entryPoints gracefully
42
+ const detectedEntryPoints = analysis.entryPoints || [];
43
+ if (detectedEntryPoints.length > 0) {
44
+ console.log(chalk.bold('\\nšŸ“ Entry Points Detected:\\n'));
45
+ for (const entry of detectedEntryPoints) {
46
+ console.log(` ${chalk.green('ā—')} ${chalk.cyan(entry.file || entry)}`);
47
+ if (entry.type) {
48
+ console.log(chalk.dim(` Type: ${entry.type} | Exports: ${entry.exports?.join(', ') || 'default'}`));
49
+ }
50
+ }
51
+ }
52
+ else {
53
+ console.log(chalk.bold('\nšŸ“ Entry Points:\n'));
54
+ console.log(chalk.dim(' No explicit entry points detected. Using dependency roots.\n'));
55
+ }
56
+ // Hot paths - engine returns 'paths' field
57
+ const hotPaths = analysis.paths || [];
58
+ // Hot paths
59
+ console.log(chalk.bold('\nšŸ›¤ļø Critical Hot Paths:\n'));
60
+ const filteredPaths = hotPaths
61
+ .filter((p) => (p.criticalityScore || 0.5) >= minScore)
62
+ .slice(0, topN);
63
+ if (filteredPaths.length === 0) {
64
+ console.log(chalk.dim(' No hot paths detected above threshold.\n'));
65
+ }
66
+ else {
67
+ for (let i = 0; i < filteredPaths.length; i++) {
68
+ const path = filteredPaths[i];
69
+ const score = path.criticalityScore ?? 0.5;
70
+ const scoreBar = 'ā–ˆ'.repeat(Math.round(score * 10));
71
+ const scoreColor = score >= 0.8 ? chalk.red :
72
+ score >= 0.5 ? chalk.yellow :
73
+ chalk.green;
74
+ console.log(` ${chalk.bold(`#${i + 1}`)} ${chalk.cyan(path.name || path.id || 'Unnamed path')}`);
75
+ console.log(` Score: ${scoreColor(scoreBar)} ${(score * 100).toFixed(0)}%`);
76
+ console.log(` Criticality: ${path.criticality || 'medium'}`);
77
+ // Show path nodes if available
78
+ const nodes = path.nodes || [];
79
+ if (nodes.length > 0) {
80
+ console.log(chalk.dim(' Path:'));
81
+ for (let j = 0; j < Math.min(5, nodes.length); j++) {
82
+ const node = nodes[j];
83
+ const indent = ' ' + ' '.repeat(j);
84
+ const arrow = j > 0 ? '↳ ' : '';
85
+ const nodeName = node.symbol || node.path?.split('/').pop() || 'unknown';
86
+ const fileName = node.file?.split('/').pop() || node.path?.split('/').pop() || '';
87
+ console.log(chalk.dim(`${indent}${arrow}${nodeName}${fileName ? ` (${fileName})` : ''}`));
88
+ }
89
+ if (nodes.length > 5) {
90
+ console.log(chalk.dim(` ... +${nodes.length - 5} more nodes`));
91
+ }
92
+ }
93
+ // Description if available
94
+ if (path.description) {
95
+ console.log(chalk.dim(` ${path.description}`));
96
+ }
97
+ // Risk factors
98
+ if (path.riskFactors?.length) {
99
+ console.log(` ${chalk.yellow('⚠')} Risks: ${path.riskFactors.join(', ')}`);
100
+ }
101
+ console.log();
102
+ }
103
+ }
104
+ // Trace results
105
+ if (options.trace && analysis.traceResults) {
106
+ console.log(chalk.bold(`\nšŸ” Trace: ${options.trace}\n`));
107
+ if (analysis.traceResults.pathsThrough?.length) {
108
+ console.log(` Found in ${chalk.yellow(analysis.traceResults.pathsThrough.length)} hot paths:`);
109
+ for (const path of analysis.traceResults.pathsThrough) {
110
+ console.log(` ${chalk.dim('•')} ${path.name} (score: ${(path.criticalityScore * 100).toFixed(0)}%)`);
111
+ }
112
+ }
113
+ else {
114
+ console.log(chalk.dim(' Symbol not found in any hot paths.\n'));
115
+ }
116
+ }
117
+ // Impact analysis
118
+ if (options.impact && analysis.impactAnalysis) {
119
+ console.log(chalk.bold(`\nšŸ’„ Impact of ${options.impact}:\n`));
120
+ const impact = analysis.impactAnalysis;
121
+ console.log(` Hot paths affected: ${chalk.red(impact.hotPathsAffected)} of ${analysis.hotPaths.length}`);
122
+ console.log(` Total impact score: ${chalk.yellow((impact.totalImpactScore * 100).toFixed(0))}%`);
123
+ if (impact.affectedPaths?.length) {
124
+ console.log(chalk.dim('\n Affected paths:'));
125
+ for (const p of impact.affectedPaths.slice(0, 5)) {
126
+ console.log(` ${chalk.dim('•')} ${p.name}`);
127
+ }
128
+ }
129
+ if (impact.recommendations?.length) {
130
+ console.log(chalk.bold('\n šŸ’” Recommendations:'));
131
+ for (const rec of impact.recommendations) {
132
+ console.log(` ${chalk.yellow('•')} ${rec}`);
133
+ }
134
+ }
135
+ }
136
+ // Summary
137
+ console.log(chalk.dim('─'.repeat(80)));
138
+ console.log(chalk.bold('\nšŸ“Š Summary:\n'));
139
+ console.log(` Total entry points: ${chalk.yellow(detectedEntryPoints.length)}`);
140
+ console.log(` Total hot paths: ${chalk.yellow(hotPaths.length)}`);
141
+ console.log(` Critical paths (>80%): ${chalk.red(hotPaths.filter((p) => (p.criticalityScore || 0) >= 0.8).length)}`);
142
+ if (analysis.summary?.averageDepth !== undefined) {
143
+ console.log(` Average path depth: ${chalk.yellow(analysis.summary.averageDepth.toFixed(1))}`);
144
+ console.log(` Max path depth: ${chalk.yellow(analysis.summary.maxDepth)}`);
145
+ }
146
+ console.log();
147
+ }
148
+ catch (error) {
149
+ console.error(formatter.formatError(error));
150
+ process.exit(1);
151
+ }
152
+ });
153
+ //# sourceMappingURL=hotpaths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hotpaths.js","sourceRoot":"","sources":["../../../src/cli/commands/hotpaths.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const impactCommand: Command;
3
+ //# sourceMappingURL=impact.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"impact.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/impact.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,eAAO,MAAM,aAAa,SAmCtB,CAAC"}
@@ -0,0 +1,37 @@
1
+ import { Command } from 'commander';
2
+ import { CodexiaEngine } from '../engine.js';
3
+ import { Formatter } from '../formatter.js';
4
+ export const impactCommand = new Command('impact')
5
+ .description('Analyze impact of current git diff')
6
+ .option('-b, --base <ref>', 'Base ref for comparison', 'HEAD')
7
+ .option('--head <ref>', 'Head ref for comparison')
8
+ .option('--staged', 'Analyze only staged changes')
9
+ .addHelpText('after', `
10
+ Examples:
11
+ $ codexia impact Analyze uncommitted changes
12
+ $ codexia impact --staged Analyze staged changes only
13
+ $ codexia impact -b main Compare current HEAD to main
14
+ $ codexia impact -b HEAD~3 --head HEAD Compare last 3 commits
15
+ $ codexia impact --json Output as JSON
16
+ `)
17
+ .action(async (options, command) => {
18
+ const globalOpts = command.parent?.opts() || {};
19
+ const formatter = new Formatter(globalOpts.json);
20
+ try {
21
+ const engine = new CodexiaEngine();
22
+ const impact = await engine.analyzeImpact({
23
+ base: options.base,
24
+ head: options.head,
25
+ staged: options.staged,
26
+ });
27
+ const diff = options.staged
28
+ ? await engine.getStagedDiff()
29
+ : await engine.getDiff(options.base, options.head);
30
+ console.log(formatter.formatImpact(impact, diff));
31
+ }
32
+ catch (error) {
33
+ console.error(formatter.formatError(error));
34
+ process.exit(1);
35
+ }
36
+ });
37
+ //# sourceMappingURL=impact.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"impact.js","sourceRoot":"","sources":["../../../src/cli/commands/impact.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;KAC/C,WAAW,CAAC,oCAAoC,CAAC;KACjD,MAAM,CAAC,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,CAAC;KAC7D,MAAM,CAAC,cAAc,EAAE,yBAAyB,CAAC;KACjD,MAAM,CAAC,UAAU,EAAE,6BAA6B,CAAC;KACjD,WAAW,CAAC,OAAO,EAAE;;;;;;;CAOvB,CAAC;KACC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;IACjC,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAChD,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAEjD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;QAEnC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC;YACxC,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM;YACzB,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,EAAE;YAC9B,CAAC,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAErD,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,KAAc,CAAC,CAAC,CAAC;QACrD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const initCommand: Command;
3
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsGpC,eAAO,MAAM,WAAW,SAwEpB,CAAC"}
@@ -0,0 +1,167 @@
1
+ import { Command } from 'commander';
2
+ import * as fs from 'node:fs/promises';
3
+ import * as path from 'node:path';
4
+ import chalk from 'chalk';
5
+ const TEMPLATES = {
6
+ architecture: `# Architecture
7
+
8
+ ## Layers
9
+
10
+ - **CLI**: Command-line interface layer
11
+ - paths: \`src/cli/**\`
12
+ - depends on: Core, Modules
13
+
14
+ - **Core**: Core domain logic and types
15
+ - paths: \`src/core/**\`
16
+ - depends on: (none)
17
+
18
+ - **Modules**: Feature modules
19
+ - paths: \`src/modules/**\`
20
+ - depends on: Core
21
+
22
+ ## Boundaries
23
+
24
+ - **Modules** cannot import **CLI**: Modules should be independent of CLI
25
+ - **Core** cannot import **Modules**: Core should have no external dependencies
26
+ - **Core** cannot import **CLI**: Core should have no external dependencies
27
+
28
+ ## Entry Points
29
+
30
+ - \`src/cli/index.ts\`
31
+ - \`src/core/index.ts\`
32
+
33
+ ## Critical Paths
34
+
35
+ - User authentication flow
36
+ - Data persistence layer
37
+ `,
38
+ conventions: `# Conventions
39
+
40
+ ## Naming Conventions
41
+
42
+ - Classes: \`PascalCase\`
43
+ - Functions: \`camelCase\`
44
+ - Constants: \`SCREAMING_SNAKE_CASE\`
45
+ - Private fields: \`_prefixed\` or \`#private\`
46
+ - Interfaces: \`IPrefixed\` or plain \`PascalCase\`
47
+ - Type aliases: \`PascalCase\`
48
+
49
+ ## File Structure
50
+
51
+ - One class/component per file
52
+ - Test files adjacent to source: \`*.test.ts\` or \`*.spec.ts\`
53
+ - Index files for public exports
54
+
55
+ ## Code Patterns
56
+
57
+ - Use async/await over raw Promises
58
+ - Prefer const over let
59
+ - Use TypeScript strict mode
60
+ - Export types from dedicated type files
61
+ `,
62
+ invariants: `# Invariants
63
+
64
+ These are rules that must NEVER be violated.
65
+
66
+ ### No direct database access from CLI
67
+
68
+ The CLI layer must never directly access the database. All data access should go through the service layer.
69
+
70
+ ### All public APIs must be typed
71
+
72
+ All exported functions and classes must have explicit TypeScript types. No \`any\` types in public APIs.
73
+
74
+ ### Tests required for critical paths
75
+
76
+ All code in critical paths must have corresponding unit tests with >80% coverage.
77
+ `,
78
+ adrTemplate: `# ADR-001: [Title]
79
+
80
+ **Status:** Proposed
81
+ **Date:** ${new Date().toISOString().split('T')[0]}
82
+
83
+ ## Context
84
+
85
+ [Describe the context and problem statement]
86
+
87
+ ## Decision
88
+
89
+ [Describe the decision that was made]
90
+
91
+ ## Consequences
92
+
93
+ - [Positive consequence 1]
94
+ - [Positive consequence 2]
95
+ - [Negative consequence that was accepted]
96
+ `,
97
+ };
98
+ export const initCommand = new Command('init')
99
+ .description('Initialize Codexia project memory (.codexia directory)')
100
+ .option('-f, --force', 'Overwrite existing files')
101
+ .addHelpText('after', `
102
+ Examples:
103
+ $ codexia init Create .codexia directory with templates
104
+ $ codexia init --force Overwrite existing .codexia files
105
+ `)
106
+ .action(async (options) => {
107
+ const cwd = process.cwd();
108
+ const codexiaDir = path.join(cwd, '.codexia');
109
+ const adrsDir = path.join(codexiaDir, 'adrs');
110
+ try {
111
+ // Check if directory exists
112
+ try {
113
+ await fs.access(codexiaDir);
114
+ if (!options.force) {
115
+ console.log(chalk.yellow('⚠') + ' .codexia directory already exists. Use --force to overwrite.');
116
+ return;
117
+ }
118
+ }
119
+ catch {
120
+ // Directory doesn't exist, continue
121
+ }
122
+ // Create directories
123
+ await fs.mkdir(codexiaDir, { recursive: true });
124
+ await fs.mkdir(adrsDir, { recursive: true });
125
+ // Write template files
126
+ const files = [
127
+ { path: path.join(codexiaDir, '.gitignore'), content: '# Auto-generated cache (contains local paths)\nindex-cache.json\n' },
128
+ { path: path.join(codexiaDir, 'architecture.md'), content: TEMPLATES.architecture },
129
+ { path: path.join(codexiaDir, 'conventions.md'), content: TEMPLATES.conventions },
130
+ { path: path.join(codexiaDir, 'invariants.md'), content: TEMPLATES.invariants },
131
+ { path: path.join(adrsDir, 'template.md'), content: TEMPLATES.adrTemplate },
132
+ ];
133
+ for (const file of files) {
134
+ let backupPath = null;
135
+ if (options.force) {
136
+ try {
137
+ await fs.access(file.path);
138
+ const ext = path.extname(file.path);
139
+ const base = file.path.slice(0, file.path.length - ext.length);
140
+ const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
141
+ backupPath = `${base}.${timestamp}.bak${ext}`;
142
+ await fs.rename(file.path, backupPath);
143
+ console.log(chalk.yellow('⚠') +
144
+ ` Existing ${path.relative(cwd, file.path)} backed up to ${path.relative(cwd, backupPath)}`);
145
+ }
146
+ catch {
147
+ // File does not exist or cannot be accessed; no backup created
148
+ }
149
+ }
150
+ await fs.writeFile(file.path, file.content, 'utf-8');
151
+ console.log(chalk.green('āœ“') + ` Created ${path.relative(cwd, file.path)}`);
152
+ }
153
+ console.log('');
154
+ console.log(chalk.green('āœ“') + ' Codexia initialized successfully!');
155
+ console.log('');
156
+ console.log('Next steps:');
157
+ console.log(' 1. Edit .codexia/architecture.md to define your project layers');
158
+ console.log(' 2. Edit .codexia/conventions.md to set naming conventions');
159
+ console.log(' 3. Run ' + chalk.cyan('codexia scan') + ' to index your repository');
160
+ console.log('');
161
+ }
162
+ catch (error) {
163
+ console.error(chalk.red('āœ—') + ` Failed to initialize: ${error.message}`);
164
+ process.exit(1);
165
+ }
166
+ });
167
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const invariantsCommand: Command;
3
+ //# sourceMappingURL=invariants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invariants.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/invariants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,eAAO,MAAM,iBAAiB,SAiH1B,CAAC"}
@@ -0,0 +1,176 @@
1
+ import { Command } from 'commander';
2
+ import { CodexiaEngine } from '../engine.js';
3
+ import { Formatter } from '../formatter.js';
4
+ import chalk from 'chalk';
5
+ export const invariantsCommand = new Command('invariants')
6
+ .description('Check architectural invariants')
7
+ .option('-c, --config <file>', 'Invariants config file', 'codexia.invariants.yaml')
8
+ .option('--init', 'Generate example invariants config')
9
+ .option('--strict', 'Fail on any violation')
10
+ .option('--fix', 'Attempt to auto-fix violations where possible')
11
+ .option('--watch', 'Watch for changes and re-check')
12
+ .addHelpText('after', `
13
+ Examples:
14
+ $ codexia invariants Check all invariants
15
+ $ codexia invariants --init Generate example config
16
+ $ codexia invariants --strict Fail on violations
17
+ $ codexia invariants -c rules.yaml Use custom config file
18
+ `)
19
+ .action(async (options, command) => {
20
+ const globalOpts = command.parent?.opts() || {};
21
+ const formatter = new Formatter(globalOpts.json);
22
+ try {
23
+ const engine = new CodexiaEngine();
24
+ // Generate example config
25
+ if (options.init) {
26
+ const exampleConfig = generateExampleConfig();
27
+ console.log(exampleConfig);
28
+ console.log(chalk.dim(`\n# Save this to ${options.config} and customize for your project`));
29
+ return;
30
+ }
31
+ await engine.initialize();
32
+ const results = await engine.checkInvariants({
33
+ configFile: options.config,
34
+ fix: options.fix,
35
+ });
36
+ if (globalOpts.json) {
37
+ console.log(JSON.stringify(results, null, 2));
38
+ return;
39
+ }
40
+ console.log(chalk.bold.cyan('\nšŸ›”ļø Invariant Check Report\n'));
41
+ console.log(chalk.dim('─'.repeat(80)));
42
+ // Group by rule
43
+ const byRule = new Map();
44
+ for (const v of results.violations) {
45
+ const existing = byRule.get(v.rule) || [];
46
+ existing.push(v);
47
+ byRule.set(v.rule, existing);
48
+ }
49
+ if (results.violations.length === 0) {
50
+ console.log(chalk.green('\nāœ… All invariants satisfied!\n'));
51
+ console.log(` Rules checked: ${chalk.yellow(results.rulesChecked)}`);
52
+ console.log(` Files scanned: ${chalk.yellow(results.filesScanned)}`);
53
+ console.log();
54
+ return;
55
+ }
56
+ // Show violations grouped by rule
57
+ for (const [rule, violations] of byRule) {
58
+ const ruleConfig = results.rules?.find((r) => r.name === rule);
59
+ const severityColor = ruleConfig?.severity === 'error' ? chalk.red :
60
+ ruleConfig?.severity === 'warning' ? chalk.yellow :
61
+ chalk.dim;
62
+ console.log(`\n${severityColor('ā—')} ${chalk.bold(rule)}`);
63
+ if (ruleConfig?.description) {
64
+ console.log(chalk.dim(` ${ruleConfig.description}`));
65
+ }
66
+ console.log();
67
+ for (const v of violations) {
68
+ const icon = v.severity === 'error' ? chalk.red('āœ—') :
69
+ v.severity === 'warning' ? chalk.yellow('⚠') :
70
+ chalk.dim('ā—‹');
71
+ console.log(` ${icon} ${chalk.cyan(v.file)}${v.line ? `:${v.line}` : ''}`);
72
+ console.log(` ${v.message}`);
73
+ if (v.suggestion) {
74
+ console.log(chalk.dim(` šŸ’” ${v.suggestion}`));
75
+ }
76
+ if (v.fixed && options.fix) {
77
+ console.log(chalk.green(` āœ“ Auto-fixed`));
78
+ }
79
+ }
80
+ }
81
+ // Summary
82
+ console.log(chalk.dim('\n─'.repeat(80)));
83
+ console.log(chalk.bold('\nšŸ“Š Summary:\n'));
84
+ const errors = results.violations.filter((v) => v.severity === 'error').length;
85
+ const warnings = results.violations.filter((v) => v.severity === 'warning').length;
86
+ const fixed = results.violations.filter((v) => v.fixed).length;
87
+ console.log(` Rules checked: ${chalk.yellow(results.rulesChecked)}`);
88
+ console.log(` Files scanned: ${chalk.yellow(results.filesScanned)}`);
89
+ console.log(` Errors: ${chalk.red(errors)}`);
90
+ console.log(` Warnings: ${chalk.yellow(warnings)}`);
91
+ if (options.fix) {
92
+ console.log(` Auto-fixed: ${chalk.green(fixed)}`);
93
+ }
94
+ console.log();
95
+ if (options.strict && errors > 0) {
96
+ process.exit(1);
97
+ }
98
+ }
99
+ catch (error) {
100
+ console.error(formatter.formatError(error));
101
+ process.exit(1);
102
+ }
103
+ });
104
+ function generateExampleConfig() {
105
+ return `# Codexia Architectural Invariants
106
+ # Define rules to enforce codebase conventions
107
+
108
+ rules:
109
+ # Layer boundary rules
110
+ - name: no-ui-in-core
111
+ description: "Core modules should not import from UI layer"
112
+ type: no-import
113
+ from: "src/core/**"
114
+ target: "src/ui/**"
115
+ severity: error
116
+
117
+ - name: no-direct-db-access
118
+ description: "Only data layer can access database"
119
+ type: no-import
120
+ from: "src/!(data)/**"
121
+ target: "src/data/db/**"
122
+ severity: error
123
+
124
+ # Required dependencies
125
+ - name: controllers-use-services
126
+ description: "Controllers must use services, not repositories directly"
127
+ type: require-import
128
+ from: "src/controllers/**"
129
+ target: "src/services/**"
130
+ severity: warning
131
+
132
+ # Naming conventions
133
+ - name: test-file-naming
134
+ description: "Test files must end with .test.ts or .spec.ts"
135
+ type: naming-pattern
136
+ pattern: "src/**/*.test.ts|src/**/*.spec.ts"
137
+ exclude: "src/**/*.ts"
138
+ severity: warning
139
+
140
+ # Dependency limits
141
+ - name: max-dependencies
142
+ description: "No file should have more than 15 imports"
143
+ type: max-dependencies
144
+ max: 15
145
+ scope: "src/**"
146
+ severity: warning
147
+
148
+ # Annotation requirements
149
+ - name: public-api-docs
150
+ description: "Public API must have JSDoc comments"
151
+ type: annotation-required
152
+ scope: "src/api/**"
153
+ annotation: "@public"
154
+ exports: true
155
+ severity: error
156
+
157
+ # Custom layer boundaries
158
+ - name: clean-architecture
159
+ description: "Enforce clean architecture layers"
160
+ type: layer-boundary
161
+ layers:
162
+ - name: domain
163
+ pattern: "src/domain/**"
164
+ - name: application
165
+ pattern: "src/application/**"
166
+ canImport: [domain]
167
+ - name: infrastructure
168
+ pattern: "src/infrastructure/**"
169
+ canImport: [domain, application]
170
+ - name: presentation
171
+ pattern: "src/ui/**"
172
+ canImport: [application]
173
+ severity: error
174
+ `;
175
+ }
176
+ //# sourceMappingURL=invariants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invariants.js","sourceRoot":"","sources":["../../../src/cli/commands/invariants.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const mcpServerCommand: Command;
3
+ //# sourceMappingURL=mcp-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/mcp-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,eAAO,MAAM,gBAAgB,SA+DzB,CAAC"}