diffintel 0.2.1 → 0.3.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.
- package/dist/cli.js +1 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/explain.d.ts +1 -0
- package/dist/commands/explain.js +37 -6
- package/dist/commands/explain.js.map +1 -1
- package/dist/explain/ast-diff.d.ts +2 -9
- package/dist/explain/ast-diff.js +8 -74
- package/dist/explain/ast-diff.js.map +1 -1
- package/dist/explain/generic-extractor.d.ts +13 -0
- package/dist/explain/generic-extractor.js +85 -0
- package/dist/explain/generic-extractor.js.map +1 -0
- package/dist/explain/html-report.js +127 -7
- package/dist/explain/html-report.js.map +1 -1
- package/dist/explain/language-configs.d.ts +31 -0
- package/dist/explain/language-configs.js +514 -0
- package/dist/explain/language-configs.js.map +1 -0
- package/dist/explain/llm-explain.js +5 -1
- package/dist/explain/llm-explain.js.map +1 -1
- package/dist/explain/markdown-summary.d.ts +5 -0
- package/dist/explain/markdown-summary.js +98 -0
- package/dist/explain/markdown-summary.js.map +1 -0
- package/dist/explain/types.d.ts +1 -0
- package/dist/parsing/index.d.ts +1 -1
- package/dist/parsing/index.js +3 -1
- package/dist/parsing/index.js.map +1 -1
- package/dist/parsing/parser.d.ts +4 -0
- package/dist/parsing/parser.js +69 -2
- package/dist/parsing/parser.js.map +1 -1
- package/package.json +12 -1
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.renderMarkdownSummary = renderMarkdownSummary;
|
|
4
|
+
/**
|
|
5
|
+
* Render a compact markdown summary of the report for use as a PR comment.
|
|
6
|
+
*/
|
|
7
|
+
function renderMarkdownSummary(report) {
|
|
8
|
+
const { explanation, summary, files } = report;
|
|
9
|
+
const parts = [];
|
|
10
|
+
// Title
|
|
11
|
+
parts.push(`### ${explanation.title}`);
|
|
12
|
+
parts.push("");
|
|
13
|
+
// Stats line
|
|
14
|
+
parts.push(`**${summary.filesChanged} files** | **+${summary.additions}** added | **-${summary.deletions}** removed`);
|
|
15
|
+
parts.push("");
|
|
16
|
+
// Impact
|
|
17
|
+
if (explanation.impact.length > 0) {
|
|
18
|
+
for (const item of explanation.impact) {
|
|
19
|
+
parts.push(`> ${item}`);
|
|
20
|
+
}
|
|
21
|
+
parts.push("");
|
|
22
|
+
}
|
|
23
|
+
// Description or AST-only notice
|
|
24
|
+
if (explanation.description) {
|
|
25
|
+
parts.push(explanation.description);
|
|
26
|
+
parts.push("");
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
parts.push("_Structural analysis only — set `ANTHROPIC_API_KEY` for AI-powered explanations._");
|
|
30
|
+
parts.push("");
|
|
31
|
+
// In AST-only mode, show structural changes as the primary content
|
|
32
|
+
const structuralLines = renderStructuralTable(files);
|
|
33
|
+
if (structuralLines) {
|
|
34
|
+
parts.push(structuralLines);
|
|
35
|
+
parts.push("");
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
// Fixes
|
|
39
|
+
if (explanation.fixes.length > 0) {
|
|
40
|
+
parts.push("**What was fixed**");
|
|
41
|
+
for (const fix of explanation.fixes) {
|
|
42
|
+
parts.push(`- ${fix.description}`);
|
|
43
|
+
}
|
|
44
|
+
parts.push("");
|
|
45
|
+
}
|
|
46
|
+
// Risks
|
|
47
|
+
if (explanation.risks.length > 0) {
|
|
48
|
+
parts.push("**Things to watch**");
|
|
49
|
+
for (const risk of explanation.risks) {
|
|
50
|
+
parts.push(`- **${risk.level}** ${risk.description}`);
|
|
51
|
+
}
|
|
52
|
+
parts.push("");
|
|
53
|
+
}
|
|
54
|
+
// Per-file summaries (only when LLM explanations are present)
|
|
55
|
+
if (explanation.fileExplanations.length > 0) {
|
|
56
|
+
const fileLines = [];
|
|
57
|
+
const maxFiles = 20;
|
|
58
|
+
const shown = explanation.fileExplanations.slice(0, maxFiles);
|
|
59
|
+
for (const fe of shown) {
|
|
60
|
+
if (fe.summary) {
|
|
61
|
+
fileLines.push(`- \`${fe.path}\` — ${fe.summary}`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
if (fileLines.length > 0) {
|
|
65
|
+
parts.push("**Changed files**");
|
|
66
|
+
parts.push(...fileLines);
|
|
67
|
+
if (explanation.fileExplanations.length > maxFiles) {
|
|
68
|
+
parts.push(`- _...and ${explanation.fileExplanations.length - maxFiles} more_`);
|
|
69
|
+
}
|
|
70
|
+
parts.push("");
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
// Footer
|
|
74
|
+
parts.push("---");
|
|
75
|
+
parts.push("_Generated by diffintel_");
|
|
76
|
+
return parts.join("\n");
|
|
77
|
+
}
|
|
78
|
+
function renderStructuralTable(files) {
|
|
79
|
+
const rows = [];
|
|
80
|
+
const maxFiles = 20;
|
|
81
|
+
for (const file of files.slice(0, maxFiles)) {
|
|
82
|
+
if (file.structuralChanges.length === 0)
|
|
83
|
+
continue;
|
|
84
|
+
const changes = file.structuralChanges
|
|
85
|
+
.map((c) => `\`${c.action}\` ${c.name} (${c.type})`)
|
|
86
|
+
.join(", ");
|
|
87
|
+
rows.push(`| \`${file.path}\` | ${changes} |`);
|
|
88
|
+
}
|
|
89
|
+
if (rows.length === 0)
|
|
90
|
+
return null;
|
|
91
|
+
const header = "| File | Changes |\n|------|---------|";
|
|
92
|
+
const table = [header, ...rows].join("\n");
|
|
93
|
+
if (files.length > maxFiles) {
|
|
94
|
+
return table + `\n\n_...and ${files.length - maxFiles} more files_`;
|
|
95
|
+
}
|
|
96
|
+
return table;
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=markdown-summary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown-summary.js","sourceRoot":"","sources":["../../src/explain/markdown-summary.ts"],"names":[],"mappings":"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"}
|
package/dist/explain/types.d.ts
CHANGED
package/dist/parsing/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { parseFile, parseSource, Query, language, getLanguageForExt } from "./parser";
|
|
1
|
+
export { parseFile, parseSource, Query, language, getLanguageForExt, hasLanguageForExt, getAvailableLanguages } from "./parser";
|
|
2
2
|
export type { Tree, SyntaxNode, QueryMatch, QueryCapture } from "./parser";
|
package/dist/parsing/index.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getLanguageForExt = exports.language = exports.Query = exports.parseSource = exports.parseFile = void 0;
|
|
3
|
+
exports.getAvailableLanguages = exports.hasLanguageForExt = exports.getLanguageForExt = exports.language = exports.Query = exports.parseSource = exports.parseFile = void 0;
|
|
4
4
|
var parser_1 = require("./parser");
|
|
5
5
|
Object.defineProperty(exports, "parseFile", { enumerable: true, get: function () { return parser_1.parseFile; } });
|
|
6
6
|
Object.defineProperty(exports, "parseSource", { enumerable: true, get: function () { return parser_1.parseSource; } });
|
|
7
7
|
Object.defineProperty(exports, "Query", { enumerable: true, get: function () { return parser_1.Query; } });
|
|
8
8
|
Object.defineProperty(exports, "language", { enumerable: true, get: function () { return parser_1.language; } });
|
|
9
9
|
Object.defineProperty(exports, "getLanguageForExt", { enumerable: true, get: function () { return parser_1.getLanguageForExt; } });
|
|
10
|
+
Object.defineProperty(exports, "hasLanguageForExt", { enumerable: true, get: function () { return parser_1.hasLanguageForExt; } });
|
|
11
|
+
Object.defineProperty(exports, "getAvailableLanguages", { enumerable: true, get: function () { return parser_1.getAvailableLanguages; } });
|
|
10
12
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/parsing/index.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/parsing/index.ts"],"names":[],"mappings":";;;AAAA,mCAAgI;AAAvH,mGAAA,SAAS,OAAA;AAAE,qGAAA,WAAW,OAAA;AAAE,+FAAA,KAAK,OAAA;AAAE,kGAAA,QAAQ,OAAA;AAAE,2GAAA,iBAAiB,OAAA;AAAE,2GAAA,iBAAiB,OAAA;AAAE,+GAAA,qBAAqB,OAAA"}
|
package/dist/parsing/parser.d.ts
CHANGED
|
@@ -7,7 +7,11 @@ export type QueryCapture = Parser.QueryCapture;
|
|
|
7
7
|
export declare const Query: typeof Parser.Query;
|
|
8
8
|
/** Backward-compat export: the JavaScript language */
|
|
9
9
|
export declare const language: Parser.Language;
|
|
10
|
+
/** Check if a language grammar is available for the given extension */
|
|
11
|
+
export declare function hasLanguageForExt(ext: string): boolean;
|
|
10
12
|
export declare function getLanguageForExt(ext: string): Parser.Language;
|
|
13
|
+
/** Get list of extensions with available grammars */
|
|
14
|
+
export declare function getAvailableLanguages(): string[];
|
|
11
15
|
export declare function parseSource(source: string, ext?: string): {
|
|
12
16
|
tree: Tree;
|
|
13
17
|
source: string;
|
package/dist/parsing/parser.js
CHANGED
|
@@ -4,7 +4,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.language = exports.Query = void 0;
|
|
7
|
+
exports.hasLanguageForExt = hasLanguageForExt;
|
|
7
8
|
exports.getLanguageForExt = getLanguageForExt;
|
|
9
|
+
exports.getAvailableLanguages = getAvailableLanguages;
|
|
8
10
|
exports.parseSource = parseSource;
|
|
9
11
|
exports.parseFile = parseFile;
|
|
10
12
|
const fs_1 = __importDefault(require("fs"));
|
|
@@ -12,6 +14,7 @@ const path_1 = __importDefault(require("path"));
|
|
|
12
14
|
const tree_sitter_1 = __importDefault(require("tree-sitter"));
|
|
13
15
|
const tree_sitter_javascript_1 = __importDefault(require("tree-sitter-javascript"));
|
|
14
16
|
const tree_sitter_typescript_1 = __importDefault(require("tree-sitter-typescript"));
|
|
17
|
+
const language_configs_1 = require("../explain/language-configs");
|
|
15
18
|
exports.Query = tree_sitter_1.default.Query;
|
|
16
19
|
const jsLanguage = tree_sitter_javascript_1.default;
|
|
17
20
|
const tsLanguage = tree_sitter_typescript_1.default.typescript;
|
|
@@ -28,13 +31,77 @@ function getParser(lang) {
|
|
|
28
31
|
}
|
|
29
32
|
return p;
|
|
30
33
|
}
|
|
31
|
-
|
|
34
|
+
// ---------------------------------------------------------------------------
|
|
35
|
+
// Dynamic language registry
|
|
36
|
+
// ---------------------------------------------------------------------------
|
|
37
|
+
// Static mappings for bundled grammars (always available)
|
|
38
|
+
const staticLanguages = {
|
|
32
39
|
".js": jsLanguage,
|
|
40
|
+
".jsx": jsLanguage,
|
|
33
41
|
".ts": tsLanguage,
|
|
34
42
|
".tsx": tsxLanguage,
|
|
35
43
|
};
|
|
44
|
+
// Cache for dynamically loaded grammars
|
|
45
|
+
const dynamicLanguageCache = new Map();
|
|
46
|
+
function tryLoadGrammar(packageName, subProperty) {
|
|
47
|
+
const cacheKey = subProperty ? `${packageName}.${subProperty}` : packageName;
|
|
48
|
+
if (dynamicLanguageCache.has(cacheKey)) {
|
|
49
|
+
const cached = dynamicLanguageCache.get(cacheKey);
|
|
50
|
+
return cached === false ? null : cached;
|
|
51
|
+
}
|
|
52
|
+
try {
|
|
53
|
+
const mod = require(packageName);
|
|
54
|
+
const target = subProperty ? mod[subProperty] : (mod.default || mod);
|
|
55
|
+
const lang = target;
|
|
56
|
+
dynamicLanguageCache.set(cacheKey, lang);
|
|
57
|
+
return lang;
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
dynamicLanguageCache.set(cacheKey, false);
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
function getLanguageForExtDynamic(ext) {
|
|
65
|
+
// Check static mappings first
|
|
66
|
+
if (ext in staticLanguages) {
|
|
67
|
+
return staticLanguages[ext];
|
|
68
|
+
}
|
|
69
|
+
// Find config for this extension
|
|
70
|
+
const config = language_configs_1.languageConfigs.find((c) => c.extensions.includes(ext));
|
|
71
|
+
if (!config)
|
|
72
|
+
return null;
|
|
73
|
+
// Special handling for typescript package (has .typescript and .tsx sub-grammars)
|
|
74
|
+
if (config.treeSitterPackage === "tree-sitter-typescript") {
|
|
75
|
+
if (ext === ".tsx")
|
|
76
|
+
return tsxLanguage;
|
|
77
|
+
return tsLanguage;
|
|
78
|
+
}
|
|
79
|
+
return tryLoadGrammar(config.treeSitterPackage, config.treeSitterSubProperty);
|
|
80
|
+
}
|
|
81
|
+
/** Check if a language grammar is available for the given extension */
|
|
82
|
+
function hasLanguageForExt(ext) {
|
|
83
|
+
return getLanguageForExtDynamic(ext) !== null;
|
|
84
|
+
}
|
|
36
85
|
function getLanguageForExt(ext) {
|
|
37
|
-
return
|
|
86
|
+
return getLanguageForExtDynamic(ext) || jsLanguage;
|
|
87
|
+
}
|
|
88
|
+
/** Get list of extensions with available grammars */
|
|
89
|
+
function getAvailableLanguages() {
|
|
90
|
+
const available = Object.keys(staticLanguages);
|
|
91
|
+
for (const config of language_configs_1.languageConfigs) {
|
|
92
|
+
// Skip configs already covered by static mappings
|
|
93
|
+
if (config.extensions.every((e) => e in staticLanguages))
|
|
94
|
+
continue;
|
|
95
|
+
const lang = tryLoadGrammar(config.treeSitterPackage, config.treeSitterSubProperty);
|
|
96
|
+
if (lang) {
|
|
97
|
+
for (const ext of config.extensions) {
|
|
98
|
+
if (!available.includes(ext)) {
|
|
99
|
+
available.push(ext);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return available;
|
|
38
105
|
}
|
|
39
106
|
function parseSource(source, ext = ".js") {
|
|
40
107
|
const lang = getLanguageForExt(ext);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/parsing/parser.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/parsing/parser.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "diffintel",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "AI-powered structural diff explainer for pull requests",
|
|
5
5
|
"bin": {
|
|
6
6
|
"diffintel": "dist/cli.js"
|
|
@@ -21,6 +21,17 @@
|
|
|
21
21
|
"tree-sitter-javascript": "^0.25.0",
|
|
22
22
|
"tree-sitter-typescript": "^0.23.2"
|
|
23
23
|
},
|
|
24
|
+
"optionalDependencies": {
|
|
25
|
+
"tree-sitter-python": "^0.23.0",
|
|
26
|
+
"tree-sitter-go": "^0.23.0",
|
|
27
|
+
"tree-sitter-rust": "^0.23.0",
|
|
28
|
+
"tree-sitter-java": "^0.23.0",
|
|
29
|
+
"tree-sitter-c": "^0.23.0",
|
|
30
|
+
"tree-sitter-cpp": "^0.23.0",
|
|
31
|
+
"tree-sitter-ruby": "^0.23.0",
|
|
32
|
+
"tree-sitter-php": "^0.23.0",
|
|
33
|
+
"tree-sitter-c-sharp": "^0.23.0"
|
|
34
|
+
},
|
|
24
35
|
"devDependencies": {
|
|
25
36
|
"@types/node": "^22.19.11",
|
|
26
37
|
"tsx": "^4.21.0",
|