@m3hti/commit-genie 2.0.0 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/CLAUDE.md +112 -0
  2. package/dist/services/analyzerService.d.ts +9 -1
  3. package/dist/services/analyzerService.d.ts.map +1 -1
  4. package/dist/services/analyzerService.js +192 -8
  5. package/dist/services/analyzerService.js.map +1 -1
  6. package/dist/services/astAnalyzer.d.ts +42 -0
  7. package/dist/services/astAnalyzer.d.ts.map +1 -0
  8. package/dist/services/astAnalyzer.js +613 -0
  9. package/dist/services/astAnalyzer.js.map +1 -0
  10. package/dist/services/astAnalyzer.test.d.ts +2 -0
  11. package/dist/services/astAnalyzer.test.d.ts.map +1 -0
  12. package/dist/services/astAnalyzer.test.js +319 -0
  13. package/dist/services/astAnalyzer.test.js.map +1 -0
  14. package/dist/services/astClassifier.d.ts +17 -0
  15. package/dist/services/astClassifier.d.ts.map +1 -0
  16. package/dist/services/astClassifier.js +390 -0
  17. package/dist/services/astClassifier.js.map +1 -0
  18. package/dist/services/astClassifier.test.d.ts +2 -0
  19. package/dist/services/astClassifier.test.d.ts.map +1 -0
  20. package/dist/services/astClassifier.test.js +141 -0
  21. package/dist/services/astClassifier.test.js.map +1 -0
  22. package/dist/services/astDiffEngine.d.ts +45 -0
  23. package/dist/services/astDiffEngine.d.ts.map +1 -0
  24. package/dist/services/astDiffEngine.js +261 -0
  25. package/dist/services/astDiffEngine.js.map +1 -0
  26. package/dist/services/astDiffEngine.test.d.ts +2 -0
  27. package/dist/services/astDiffEngine.test.d.ts.map +1 -0
  28. package/dist/services/astDiffEngine.test.js +234 -0
  29. package/dist/services/astDiffEngine.test.js.map +1 -0
  30. package/dist/services/astExportAnalyzer.d.ts.map +1 -1
  31. package/dist/services/astExportAnalyzer.js +122 -292
  32. package/dist/services/astExportAnalyzer.js.map +1 -1
  33. package/dist/types/index.d.ts +68 -0
  34. package/dist/types/index.d.ts.map +1 -1
  35. package/package.json +2 -4
@@ -0,0 +1,319 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const astAnalyzer_1 = require("./astAnalyzer");
4
+ describe('astAnalyzer', () => {
5
+ describe('isParseableFile', () => {
6
+ it('accepts JS/TS extensions', () => {
7
+ expect((0, astAnalyzer_1.isParseableFile)('file.js')).toBe(true);
8
+ expect((0, astAnalyzer_1.isParseableFile)('file.jsx')).toBe(true);
9
+ expect((0, astAnalyzer_1.isParseableFile)('file.ts')).toBe(true);
10
+ expect((0, astAnalyzer_1.isParseableFile)('file.tsx')).toBe(true);
11
+ expect((0, astAnalyzer_1.isParseableFile)('file.mjs')).toBe(true);
12
+ expect((0, astAnalyzer_1.isParseableFile)('file.cjs')).toBe(true);
13
+ expect((0, astAnalyzer_1.isParseableFile)('file.mts')).toBe(true);
14
+ expect((0, astAnalyzer_1.isParseableFile)('file.cts')).toBe(true);
15
+ });
16
+ it('rejects non-JS/TS extensions', () => {
17
+ expect((0, astAnalyzer_1.isParseableFile)('file.css')).toBe(false);
18
+ expect((0, astAnalyzer_1.isParseableFile)('file.md')).toBe(false);
19
+ expect((0, astAnalyzer_1.isParseableFile)('file.json')).toBe(false);
20
+ expect((0, astAnalyzer_1.isParseableFile)('file.yaml')).toBe(false);
21
+ });
22
+ });
23
+ describe('parseFile', () => {
24
+ it('parses valid TypeScript', () => {
25
+ const src = 'const x: number = 42;';
26
+ const ast = (0, astAnalyzer_1.parseFile)(src, 'test.ts');
27
+ expect(ast).not.toBeNull();
28
+ expect(ast.type).toBe('Program');
29
+ });
30
+ it('parses valid JavaScript', () => {
31
+ const src = 'const x = 42;';
32
+ const ast = (0, astAnalyzer_1.parseFile)(src, 'test.js');
33
+ expect(ast).not.toBeNull();
34
+ });
35
+ it('parses JSX', () => {
36
+ const src = 'const App = () => <div>Hello</div>;';
37
+ const ast = (0, astAnalyzer_1.parseFile)(src, 'test.tsx');
38
+ expect(ast).not.toBeNull();
39
+ });
40
+ it('returns null for invalid syntax', () => {
41
+ const src = '}{invalid syntax!!!';
42
+ const ast = (0, astAnalyzer_1.parseFile)(src, 'test.ts');
43
+ expect(ast).toBeNull();
44
+ });
45
+ });
46
+ describe('countNodes', () => {
47
+ it('counts nodes in a simple function body', () => {
48
+ const ast = (0, astAnalyzer_1.parseFile)('function foo() { return 1; }', 'test.ts');
49
+ const fn = ast.body[0];
50
+ expect((0, astAnalyzer_1.countNodes)(fn)).toBeGreaterThan(1);
51
+ });
52
+ });
53
+ describe('extractDeclarations', () => {
54
+ it('extracts exported function declaration', () => {
55
+ const ast = (0, astAnalyzer_1.parseFile)('export function foo(a: string, b?: number) { return a; }', 'test.ts');
56
+ const { declarations } = (0, astAnalyzer_1.extractDeclarations)(ast);
57
+ expect(declarations).toHaveLength(1);
58
+ expect(declarations[0]).toMatchObject({
59
+ name: 'foo',
60
+ kind: 'function',
61
+ exported: true,
62
+ signature: '(a, b?)',
63
+ });
64
+ expect(declarations[0].nodeCount).toBeGreaterThan(0);
65
+ });
66
+ it('extracts non-exported function', () => {
67
+ const ast = (0, astAnalyzer_1.parseFile)('function bar(x: number) { return x * 2; }', 'test.ts');
68
+ const { declarations } = (0, astAnalyzer_1.extractDeclarations)(ast);
69
+ expect(declarations).toHaveLength(1);
70
+ expect(declarations[0]).toMatchObject({
71
+ name: 'bar',
72
+ kind: 'function',
73
+ exported: false,
74
+ });
75
+ });
76
+ it('extracts function exported via specifier list', () => {
77
+ const src = 'function bar() { return 1; }\nexport { bar };';
78
+ const ast = (0, astAnalyzer_1.parseFile)(src, 'test.ts');
79
+ const { declarations } = (0, astAnalyzer_1.extractDeclarations)(ast);
80
+ const barDecl = declarations.find(d => d.name === 'bar');
81
+ expect(barDecl).toBeDefined();
82
+ expect(barDecl.exported).toBe(true);
83
+ });
84
+ it('extracts aliased export specifier', () => {
85
+ const src = 'function baz() {}\nexport { baz as qux };';
86
+ const ast = (0, astAnalyzer_1.parseFile)(src, 'test.ts');
87
+ const { declarations } = (0, astAnalyzer_1.extractDeclarations)(ast);
88
+ const bazDecl = declarations.find(d => d.name === 'baz');
89
+ expect(bazDecl).toBeDefined();
90
+ expect(bazDecl.exported).toBe(true);
91
+ });
92
+ it('detects re-export-all', () => {
93
+ const src = "export * from './mod';";
94
+ const ast = (0, astAnalyzer_1.parseFile)(src, 'test.ts');
95
+ const { reExportAll } = (0, astAnalyzer_1.extractDeclarations)(ast);
96
+ expect(reExportAll).toBe(true);
97
+ });
98
+ it('extracts exported class', () => {
99
+ const ast = (0, astAnalyzer_1.parseFile)('export class MyClass { method() {} }', 'test.ts');
100
+ const { declarations } = (0, astAnalyzer_1.extractDeclarations)(ast);
101
+ expect(declarations).toHaveLength(1);
102
+ expect(declarations[0]).toMatchObject({
103
+ name: 'MyClass',
104
+ kind: 'class',
105
+ exported: true,
106
+ });
107
+ });
108
+ it('extracts exported arrow function variable', () => {
109
+ const ast = (0, astAnalyzer_1.parseFile)('export const greet = (name: string) => `Hello ${name}`;', 'test.ts');
110
+ const { declarations } = (0, astAnalyzer_1.extractDeclarations)(ast);
111
+ expect(declarations).toHaveLength(1);
112
+ expect(declarations[0]).toMatchObject({
113
+ name: 'greet',
114
+ kind: 'function',
115
+ exported: true,
116
+ signature: '(name)',
117
+ });
118
+ });
119
+ it('extracts exported const variable (non-function)', () => {
120
+ const ast = (0, astAnalyzer_1.parseFile)('export const PI = 3.14;', 'test.ts');
121
+ const { declarations } = (0, astAnalyzer_1.extractDeclarations)(ast);
122
+ expect(declarations).toHaveLength(1);
123
+ expect(declarations[0]).toMatchObject({
124
+ name: 'PI',
125
+ kind: 'variable',
126
+ exported: true,
127
+ });
128
+ });
129
+ it('extracts interface', () => {
130
+ const ast = (0, astAnalyzer_1.parseFile)('export interface Foo { x: number; y: string; }', 'test.ts');
131
+ const { declarations } = (0, astAnalyzer_1.extractDeclarations)(ast);
132
+ expect(declarations).toHaveLength(1);
133
+ expect(declarations[0]).toMatchObject({
134
+ name: 'Foo',
135
+ kind: 'interface',
136
+ exported: true,
137
+ });
138
+ });
139
+ it('extracts type alias', () => {
140
+ const ast = (0, astAnalyzer_1.parseFile)('export type ID = string | number;', 'test.ts');
141
+ const { declarations } = (0, astAnalyzer_1.extractDeclarations)(ast);
142
+ expect(declarations).toHaveLength(1);
143
+ expect(declarations[0]).toMatchObject({
144
+ name: 'ID',
145
+ kind: 'type',
146
+ exported: true,
147
+ });
148
+ });
149
+ it('extracts enum', () => {
150
+ const ast = (0, astAnalyzer_1.parseFile)('export enum Color { Red, Green, Blue }', 'test.ts');
151
+ const { declarations } = (0, astAnalyzer_1.extractDeclarations)(ast);
152
+ expect(declarations).toHaveLength(1);
153
+ expect(declarations[0]).toMatchObject({
154
+ name: 'Color',
155
+ kind: 'enum',
156
+ exported: true,
157
+ });
158
+ });
159
+ it('extracts export default declaration', () => {
160
+ const ast = (0, astAnalyzer_1.parseFile)('export default function main() { return 42; }', 'test.ts');
161
+ const { declarations } = (0, astAnalyzer_1.extractDeclarations)(ast);
162
+ expect(declarations).toHaveLength(1);
163
+ expect(declarations[0]).toMatchObject({
164
+ name: 'main',
165
+ kind: 'function',
166
+ exported: true,
167
+ });
168
+ });
169
+ it('extracts export default unnamed expression', () => {
170
+ const ast = (0, astAnalyzer_1.parseFile)('export default 42;', 'test.ts');
171
+ const { declarations } = (0, astAnalyzer_1.extractDeclarations)(ast);
172
+ expect(declarations).toHaveLength(1);
173
+ expect(declarations[0]).toMatchObject({
174
+ name: 'default',
175
+ exported: true,
176
+ });
177
+ });
178
+ it('extracts rest params with signature', () => {
179
+ const ast = (0, astAnalyzer_1.parseFile)('export function sum(...nums: number[]) { return nums.reduce((a, b) => a + b, 0); }', 'test.ts');
180
+ const { declarations } = (0, astAnalyzer_1.extractDeclarations)(ast);
181
+ expect(declarations[0].signature).toBe('(...nums?)');
182
+ });
183
+ it('extracts multiple declarations from one file', () => {
184
+ const src = `
185
+ export function foo() {}
186
+ function bar() {}
187
+ export class Baz {}
188
+ const qux = 42;
189
+ export interface Config { x: number }
190
+ `;
191
+ const ast = (0, astAnalyzer_1.parseFile)(src, 'test.ts');
192
+ const { declarations } = (0, astAnalyzer_1.extractDeclarations)(ast);
193
+ expect(declarations).toHaveLength(5);
194
+ expect(declarations.filter(d => d.exported)).toHaveLength(3);
195
+ });
196
+ // CommonJS patterns
197
+ describe('CommonJS exports', () => {
198
+ it('extracts exports.foo = function()', () => {
199
+ const src = 'exports.hello = function(name) { return "hello " + name; };';
200
+ const ast = (0, astAnalyzer_1.parseFile)(src, 'test.js');
201
+ const { declarations } = (0, astAnalyzer_1.extractDeclarations)(ast);
202
+ expect(declarations).toHaveLength(1);
203
+ expect(declarations[0]).toMatchObject({
204
+ name: 'hello',
205
+ kind: 'function',
206
+ exported: true,
207
+ });
208
+ expect(declarations[0].signature).toBeDefined();
209
+ });
210
+ it('extracts module.exports.foo = ...', () => {
211
+ const src = 'module.exports.add = (a, b) => a + b;';
212
+ const ast = (0, astAnalyzer_1.parseFile)(src, 'test.js');
213
+ const { declarations } = (0, astAnalyzer_1.extractDeclarations)(ast);
214
+ expect(declarations).toHaveLength(1);
215
+ expect(declarations[0]).toMatchObject({
216
+ name: 'add',
217
+ kind: 'function',
218
+ exported: true,
219
+ });
220
+ });
221
+ it('extracts module.exports = { a, b }', () => {
222
+ const src = `
223
+ function a() { return 1; }
224
+ function b() { return 2; }
225
+ module.exports = { a, b };
226
+ `;
227
+ const ast = (0, astAnalyzer_1.parseFile)(src, 'test.js');
228
+ const { declarations } = (0, astAnalyzer_1.extractDeclarations)(ast);
229
+ // Should have a and b as declarations (from function decls), marked as exported
230
+ const aDecl = declarations.find(d => d.name === 'a');
231
+ const bDecl = declarations.find(d => d.name === 'b');
232
+ expect(aDecl).toBeDefined();
233
+ expect(aDecl.exported).toBe(true);
234
+ expect(bDecl).toBeDefined();
235
+ expect(bDecl.exported).toBe(true);
236
+ });
237
+ it('extracts module.exports = function()', () => {
238
+ const src = 'module.exports = function(x) { return x * 2; };';
239
+ const ast = (0, astAnalyzer_1.parseFile)(src, 'test.js');
240
+ const { declarations } = (0, astAnalyzer_1.extractDeclarations)(ast);
241
+ const defaultDecl = declarations.find(d => d.name === 'default');
242
+ expect(defaultDecl).toBeDefined();
243
+ expect(defaultDecl.exported).toBe(true);
244
+ expect(defaultDecl.kind).toBe('function');
245
+ });
246
+ });
247
+ });
248
+ describe('canonicalizeBody', () => {
249
+ it('produces same canonical form for renamed local variables', () => {
250
+ const src1 = 'function foo(x) { const y = x + 1; return y; }';
251
+ const src2 = 'function foo(a) { const b = a + 1; return b; }';
252
+ const ast1 = (0, astAnalyzer_1.parseFile)(src1, 'test.js');
253
+ const ast2 = (0, astAnalyzer_1.parseFile)(src2, 'test.js');
254
+ const { body: body1, params: params1 } = (0, astAnalyzer_1.findDeclarationBody)(ast1, 'foo');
255
+ const { body: body2, params: params2 } = (0, astAnalyzer_1.findDeclarationBody)(ast2, 'foo');
256
+ const c1 = (0, astAnalyzer_1.canonicalizeBody)(body1, params1);
257
+ const c2 = (0, astAnalyzer_1.canonicalizeBody)(body2, params2);
258
+ expect(c1).toBe(c2);
259
+ });
260
+ it('produces different canonical form for different literals', () => {
261
+ const src1 = 'function foo() { return "hello"; }';
262
+ const src2 = 'function foo() { return "world"; }';
263
+ const ast1 = (0, astAnalyzer_1.parseFile)(src1, 'test.js');
264
+ const ast2 = (0, astAnalyzer_1.parseFile)(src2, 'test.js');
265
+ const { body: body1, params: params1 } = (0, astAnalyzer_1.findDeclarationBody)(ast1, 'foo');
266
+ const { body: body2, params: params2 } = (0, astAnalyzer_1.findDeclarationBody)(ast2, 'foo');
267
+ const c1 = (0, astAnalyzer_1.canonicalizeBody)(body1, params1);
268
+ const c2 = (0, astAnalyzer_1.canonicalizeBody)(body2, params2);
269
+ expect(c1).not.toBe(c2);
270
+ });
271
+ it('keeps property keys as-is', () => {
272
+ const src1 = 'function foo(obj) { return obj.name; }';
273
+ const src2 = 'function foo(obj) { return obj.total; }';
274
+ const ast1 = (0, astAnalyzer_1.parseFile)(src1, 'test.js');
275
+ const ast2 = (0, astAnalyzer_1.parseFile)(src2, 'test.js');
276
+ const { body: body1, params: params1 } = (0, astAnalyzer_1.findDeclarationBody)(ast1, 'foo');
277
+ const { body: body2, params: params2 } = (0, astAnalyzer_1.findDeclarationBody)(ast2, 'foo');
278
+ const c1 = (0, astAnalyzer_1.canonicalizeBody)(body1, params1);
279
+ const c2 = (0, astAnalyzer_1.canonicalizeBody)(body2, params2);
280
+ expect(c1).not.toBe(c2);
281
+ });
282
+ });
283
+ describe('computeBodyHash', () => {
284
+ it('produces deterministic hash', () => {
285
+ const canonical = '{"type":"BlockStatement","body":[]}';
286
+ const hash1 = (0, astAnalyzer_1.computeBodyHash)(canonical);
287
+ const hash2 = (0, astAnalyzer_1.computeBodyHash)(canonical);
288
+ expect(hash1).toBe(hash2);
289
+ expect(hash1).toHaveLength(64); // SHA-256 hex
290
+ });
291
+ });
292
+ describe('populateBodyHashes', () => {
293
+ it('fills bodyHash for all declarations', () => {
294
+ const src = `
295
+ export function foo(x: number) { return x + 1; }
296
+ export const bar = (y: string) => y.toUpperCase();
297
+ `;
298
+ const ast = (0, astAnalyzer_1.parseFile)(src, 'test.ts');
299
+ const { declarations } = (0, astAnalyzer_1.extractDeclarations)(ast);
300
+ expect(declarations[0].bodyHash).toBe('');
301
+ (0, astAnalyzer_1.populateBodyHashes)(declarations, ast);
302
+ expect(declarations[0].bodyHash).not.toBe('');
303
+ expect(declarations[0].bodyHash).toHaveLength(64);
304
+ expect(declarations[1].bodyHash).not.toBe('');
305
+ });
306
+ it('produces same hash for renamed functions with identical bodies', () => {
307
+ const src1 = 'function foo(x) { return x + 1; }';
308
+ const src2 = 'function bar(x) { return x + 1; }';
309
+ const ast1 = (0, astAnalyzer_1.parseFile)(src1, 'test.js');
310
+ const ast2 = (0, astAnalyzer_1.parseFile)(src2, 'test.js');
311
+ const { declarations: decls1 } = (0, astAnalyzer_1.extractDeclarations)(ast1);
312
+ const { declarations: decls2 } = (0, astAnalyzer_1.extractDeclarations)(ast2);
313
+ (0, astAnalyzer_1.populateBodyHashes)(decls1, ast1);
314
+ (0, astAnalyzer_1.populateBodyHashes)(decls2, ast2);
315
+ expect(decls1[0].bodyHash).toBe(decls2[0].bodyHash);
316
+ });
317
+ });
318
+ });
319
+ //# sourceMappingURL=astAnalyzer.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"astAnalyzer.test.js","sourceRoot":"","sources":["../../src/services/astAnalyzer.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { FileASTResult, ASTClassifierResult } from '../types';
2
+ import type { FileChange } from '../types';
3
+ /**
4
+ * Analyze a single staged file, producing a FileASTResult.
5
+ */
6
+ export declare function analyzeFile(filePath: string, oldSource: string | null, newSource: string | null): FileASTResult;
7
+ /**
8
+ * Classify a commit from per-file AST analysis results.
9
+ * Applies the signal table with weighted signals and tie-breaking.
10
+ */
11
+ export declare function classifyCommit(fileResults: FileASTResult[]): ASTClassifierResult;
12
+ /**
13
+ * Run the full AST analysis pipeline on all staged files.
14
+ * Returns the classifier result.
15
+ */
16
+ export declare function analyzeChangesAST(stagedFiles: FileChange[]): ASTClassifierResult;
17
+ //# sourceMappingURL=astClassifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"astClassifier.d.ts","sourceRoot":"","sources":["../../src/services/astClassifier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,aAAa,EAAE,mBAAmB,EAA+B,MAAM,UAAU,CAAC;AAKvG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAqC3C;;GAEG;AACH,wBAAgB,WAAW,CACzB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,SAAS,EAAE,MAAM,GAAG,IAAI,GACvB,aAAa,CA2Ff;AAID;;;GAGG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,aAAa,EAAE,GAAG,mBAAmB,CA0NhF;AAgCD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,mBAAmB,CA4ChF"}