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.
@@ -0,0 +1,514 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.languageConfigs = void 0;
4
+ exports.getConfigForExtension = getConfigForExtension;
5
+ exports.getAllSupportedExtensions = getAllSupportedExtensions;
6
+ // ---------------------------------------------------------------------------
7
+ // JavaScript / TypeScript
8
+ // ---------------------------------------------------------------------------
9
+ const javascriptConfig = {
10
+ id: "javascript",
11
+ extensions: [".js", ".jsx"],
12
+ treeSitterPackage: "tree-sitter-javascript",
13
+ nodeTypeMap: {
14
+ function_declaration: { changeType: "function" },
15
+ class_declaration: { changeType: "class" },
16
+ import_statement: {
17
+ changeType: "import",
18
+ extractor: (node) => {
19
+ const source = node.childForFieldName("source")?.text || node.text;
20
+ return [{ name: source }];
21
+ },
22
+ },
23
+ export_statement: {
24
+ changeType: "export",
25
+ extractor: (node) => {
26
+ const decl = node.childForFieldName("declaration");
27
+ if (decl) {
28
+ const name = decl.childForFieldName("name")?.text;
29
+ if (name)
30
+ return [{ name }];
31
+ }
32
+ return [{ name: node.text.slice(0, 60) }];
33
+ },
34
+ },
35
+ lexical_declaration: {
36
+ changeType: "variable",
37
+ extractor: (node) => extractJsVariableDeclarators(node),
38
+ },
39
+ variable_declaration: {
40
+ changeType: "variable",
41
+ extractor: (node) => extractJsVariableDeclarators(node),
42
+ },
43
+ expression_statement: {
44
+ changeType: "export",
45
+ extractor: (node) => {
46
+ const expr = node.child(0);
47
+ if (expr?.type === "assignment_expression") {
48
+ const left = expr.childForFieldName("left");
49
+ if (left?.text?.startsWith("module.exports")) {
50
+ return [{ name: "module.exports" }];
51
+ }
52
+ }
53
+ return null;
54
+ },
55
+ },
56
+ },
57
+ };
58
+ function extractJsVariableDeclarators(node) {
59
+ const results = [];
60
+ for (let i = 0; i < node.childCount; i++) {
61
+ const child = node.child(i);
62
+ if (child.type === "variable_declarator") {
63
+ const name = child.childForFieldName("name")?.text || "<unknown>";
64
+ const value = child.childForFieldName("value");
65
+ const isFn = value && (value.type === "arrow_function" || value.type === "function");
66
+ results.push({ name, changeType: isFn ? "function" : "variable" });
67
+ }
68
+ }
69
+ return results.length > 0 ? results : null;
70
+ }
71
+ const typescriptConfig = {
72
+ ...javascriptConfig,
73
+ id: "typescript",
74
+ extensions: [".ts", ".tsx"],
75
+ treeSitterPackage: "tree-sitter-typescript",
76
+ };
77
+ // ---------------------------------------------------------------------------
78
+ // Python
79
+ // ---------------------------------------------------------------------------
80
+ const pythonConfig = {
81
+ id: "python",
82
+ extensions: [".py"],
83
+ treeSitterPackage: "tree-sitter-python",
84
+ wrapperTypes: { decorated_definition: "definition" },
85
+ nodeTypeMap: {
86
+ function_definition: { changeType: "function" },
87
+ class_definition: { changeType: "class" },
88
+ import_statement: {
89
+ changeType: "import",
90
+ extractor: (node) => [{ name: node.text }],
91
+ },
92
+ import_from_statement: {
93
+ changeType: "import",
94
+ extractor: (node) => [{ name: node.text }],
95
+ },
96
+ expression_statement: {
97
+ changeType: "variable",
98
+ extractor: (node) => {
99
+ const expr = node.child(0);
100
+ if (expr?.type === "assignment") {
101
+ const left = expr.childForFieldName("left");
102
+ if (left)
103
+ return [{ name: left.text }];
104
+ }
105
+ return null;
106
+ },
107
+ },
108
+ },
109
+ };
110
+ // ---------------------------------------------------------------------------
111
+ // Go
112
+ // ---------------------------------------------------------------------------
113
+ const goConfig = {
114
+ id: "go",
115
+ extensions: [".go"],
116
+ treeSitterPackage: "tree-sitter-go",
117
+ nodeTypeMap: {
118
+ function_declaration: { changeType: "function" },
119
+ method_declaration: {
120
+ changeType: "function",
121
+ extractor: (node) => {
122
+ const receiver = node.childForFieldName("receiver")?.text || "";
123
+ const name = node.childForFieldName("name")?.text || "<anonymous>";
124
+ return [{ name: receiver ? `(${receiver}).${name}` : name }];
125
+ },
126
+ },
127
+ type_declaration: {
128
+ changeType: "class",
129
+ extractor: (node) => {
130
+ const specs = [];
131
+ for (let i = 0; i < node.childCount; i++) {
132
+ const child = node.child(i);
133
+ if (child.type === "type_spec") {
134
+ const name = child.childForFieldName("name")?.text || "<anonymous>";
135
+ specs.push({ name });
136
+ }
137
+ }
138
+ return specs.length > 0 ? specs : null;
139
+ },
140
+ },
141
+ import_declaration: {
142
+ changeType: "import",
143
+ extractor: (node) => [{ name: node.text }],
144
+ },
145
+ var_declaration: {
146
+ changeType: "variable",
147
+ extractor: (node) => {
148
+ const specs = [];
149
+ for (let i = 0; i < node.childCount; i++) {
150
+ const child = node.child(i);
151
+ if (child.type === "var_spec") {
152
+ const name = child.childForFieldName("name")?.text;
153
+ if (name)
154
+ specs.push({ name });
155
+ }
156
+ }
157
+ return specs.length > 0 ? specs : null;
158
+ },
159
+ },
160
+ const_declaration: {
161
+ changeType: "variable",
162
+ extractor: (node) => {
163
+ const specs = [];
164
+ for (let i = 0; i < node.childCount; i++) {
165
+ const child = node.child(i);
166
+ if (child.type === "const_spec") {
167
+ const name = child.childForFieldName("name")?.text;
168
+ if (name)
169
+ specs.push({ name });
170
+ }
171
+ }
172
+ return specs.length > 0 ? specs : null;
173
+ },
174
+ },
175
+ },
176
+ };
177
+ // ---------------------------------------------------------------------------
178
+ // Rust
179
+ // ---------------------------------------------------------------------------
180
+ const rustConfig = {
181
+ id: "rust",
182
+ extensions: [".rs"],
183
+ treeSitterPackage: "tree-sitter-rust",
184
+ nodeTypeMap: {
185
+ function_item: { changeType: "function" },
186
+ struct_item: { changeType: "class" },
187
+ enum_item: { changeType: "class" },
188
+ trait_item: { changeType: "class" },
189
+ impl_item: {
190
+ changeType: "class",
191
+ extractor: (node) => {
192
+ const type = node.childForFieldName("type")?.text || "<anonymous>";
193
+ const trait = node.childForFieldName("trait")?.text;
194
+ const name = trait ? `${trait} for ${type}` : `impl ${type}`;
195
+ return [{ name }];
196
+ },
197
+ },
198
+ use_declaration: {
199
+ changeType: "import",
200
+ extractor: (node) => [{ name: node.text }],
201
+ },
202
+ const_item: { changeType: "variable" },
203
+ static_item: { changeType: "variable" },
204
+ type_item: { changeType: "class" },
205
+ mod_item: { changeType: "export" },
206
+ },
207
+ };
208
+ // ---------------------------------------------------------------------------
209
+ // Java
210
+ // ---------------------------------------------------------------------------
211
+ const javaConfig = {
212
+ id: "java",
213
+ extensions: [".java"],
214
+ treeSitterPackage: "tree-sitter-java",
215
+ nodeTypeMap: {
216
+ method_declaration: { changeType: "function" },
217
+ class_declaration: { changeType: "class" },
218
+ interface_declaration: { changeType: "class" },
219
+ enum_declaration: { changeType: "class" },
220
+ import_declaration: {
221
+ changeType: "import",
222
+ extractor: (node) => [{ name: node.text }],
223
+ },
224
+ field_declaration: {
225
+ changeType: "variable",
226
+ extractor: (node) => {
227
+ const declarator = node.childForFieldName("declarator");
228
+ const name = declarator?.childForFieldName("name")?.text;
229
+ return name ? [{ name }] : null;
230
+ },
231
+ },
232
+ },
233
+ };
234
+ // ---------------------------------------------------------------------------
235
+ // C
236
+ // ---------------------------------------------------------------------------
237
+ const cConfig = {
238
+ id: "c",
239
+ extensions: [".c", ".h"],
240
+ treeSitterPackage: "tree-sitter-c",
241
+ nodeTypeMap: {
242
+ function_definition: {
243
+ changeType: "function",
244
+ extractor: (node) => {
245
+ const declarator = node.childForFieldName("declarator");
246
+ if (!declarator)
247
+ return null;
248
+ // function_declarator -> inner declarator has the name
249
+ const name = declarator.childForFieldName("declarator")?.text || declarator.text;
250
+ return [{ name }];
251
+ },
252
+ },
253
+ declaration: {
254
+ changeType: "variable",
255
+ extractor: (node) => {
256
+ const declarator = node.childForFieldName("declarator");
257
+ if (!declarator)
258
+ return null;
259
+ // function declarations vs variable declarations
260
+ if (declarator.type === "function_declarator") {
261
+ const name = declarator.childForFieldName("declarator")?.text;
262
+ return name ? [{ name, changeType: "function" }] : null;
263
+ }
264
+ const name = declarator.childForFieldName("name")?.text || declarator.text;
265
+ return name ? [{ name }] : null;
266
+ },
267
+ },
268
+ struct_specifier: {
269
+ changeType: "class",
270
+ extractor: (node) => {
271
+ const name = node.childForFieldName("name")?.text;
272
+ return name ? [{ name }] : null;
273
+ },
274
+ },
275
+ enum_specifier: {
276
+ changeType: "class",
277
+ extractor: (node) => {
278
+ const name = node.childForFieldName("name")?.text;
279
+ return name ? [{ name }] : null;
280
+ },
281
+ },
282
+ preproc_include: {
283
+ changeType: "import",
284
+ extractor: (node) => [{ name: node.text }],
285
+ },
286
+ type_definition: {
287
+ changeType: "class",
288
+ extractor: (node) => {
289
+ const declarator = node.childForFieldName("declarator");
290
+ const name = declarator?.text;
291
+ return name ? [{ name }] : null;
292
+ },
293
+ },
294
+ },
295
+ };
296
+ // ---------------------------------------------------------------------------
297
+ // C++
298
+ // ---------------------------------------------------------------------------
299
+ const cppConfig = {
300
+ id: "cpp",
301
+ extensions: [".cpp", ".cc", ".cxx", ".hpp", ".hh"],
302
+ treeSitterPackage: "tree-sitter-cpp",
303
+ nodeTypeMap: {
304
+ ...cConfig.nodeTypeMap,
305
+ class_specifier: {
306
+ changeType: "class",
307
+ extractor: (node) => {
308
+ const name = node.childForFieldName("name")?.text;
309
+ return name ? [{ name }] : null;
310
+ },
311
+ },
312
+ namespace_definition: {
313
+ changeType: "export",
314
+ extractor: (node) => {
315
+ const name = node.childForFieldName("name")?.text || "<anonymous>";
316
+ return [{ name }];
317
+ },
318
+ },
319
+ template_declaration: {
320
+ changeType: "function",
321
+ extractor: (node) => {
322
+ // Unwrap the inner declaration
323
+ for (let i = 0; i < node.childCount; i++) {
324
+ const child = node.child(i);
325
+ if (child.type === "function_definition") {
326
+ const name = child.childForFieldName("declarator")?.childForFieldName("declarator")?.text;
327
+ return name ? [{ name }] : null;
328
+ }
329
+ if (child.type === "class_specifier") {
330
+ const name = child.childForFieldName("name")?.text;
331
+ return name ? [{ name, changeType: "class" }] : null;
332
+ }
333
+ }
334
+ return null;
335
+ },
336
+ },
337
+ },
338
+ };
339
+ // ---------------------------------------------------------------------------
340
+ // Ruby
341
+ // ---------------------------------------------------------------------------
342
+ const rubyConfig = {
343
+ id: "ruby",
344
+ extensions: [".rb"],
345
+ treeSitterPackage: "tree-sitter-ruby",
346
+ nodeTypeMap: {
347
+ method: { changeType: "function" },
348
+ singleton_method: { changeType: "function" },
349
+ class: {
350
+ changeType: "class",
351
+ extractor: (node) => {
352
+ const name = node.childForFieldName("name")?.text;
353
+ return name ? [{ name }] : null;
354
+ },
355
+ },
356
+ module: {
357
+ changeType: "class",
358
+ extractor: (node) => {
359
+ const name = node.childForFieldName("name")?.text;
360
+ return name ? [{ name }] : null;
361
+ },
362
+ },
363
+ call: {
364
+ changeType: "import",
365
+ extractor: (node) => {
366
+ const method = node.childForFieldName("method")?.text;
367
+ if (method === "require" || method === "require_relative") {
368
+ return [{ name: node.text }];
369
+ }
370
+ return null;
371
+ },
372
+ },
373
+ assignment: {
374
+ changeType: "variable",
375
+ extractor: (node) => {
376
+ const left = node.childForFieldName("left");
377
+ if (left)
378
+ return [{ name: left.text }];
379
+ return null;
380
+ },
381
+ },
382
+ },
383
+ };
384
+ // ---------------------------------------------------------------------------
385
+ // PHP
386
+ // ---------------------------------------------------------------------------
387
+ const phpConfig = {
388
+ id: "php",
389
+ extensions: [".php"],
390
+ treeSitterPackage: "tree-sitter-php",
391
+ treeSitterSubProperty: "php",
392
+ nodeTypeMap: {
393
+ function_definition: { changeType: "function" },
394
+ method_declaration: { changeType: "function" },
395
+ class_declaration: { changeType: "class" },
396
+ interface_declaration: { changeType: "class" },
397
+ trait_declaration: { changeType: "class" },
398
+ namespace_use_declaration: {
399
+ changeType: "import",
400
+ extractor: (node) => [{ name: node.text }],
401
+ },
402
+ namespace_definition: {
403
+ changeType: "export",
404
+ extractor: (node) => {
405
+ const name = node.childForFieldName("name")?.text || "<anonymous>";
406
+ return [{ name }];
407
+ },
408
+ },
409
+ property_declaration: {
410
+ changeType: "variable",
411
+ extractor: (node) => {
412
+ // Try to extract property name from first property element
413
+ for (let i = 0; i < node.childCount; i++) {
414
+ const child = node.child(i);
415
+ if (child.type === "property_element") {
416
+ const name = child.child(0)?.text;
417
+ if (name)
418
+ return [{ name }];
419
+ }
420
+ }
421
+ return null;
422
+ },
423
+ },
424
+ const_declaration: {
425
+ changeType: "variable",
426
+ extractor: (node) => {
427
+ for (let i = 0; i < node.childCount; i++) {
428
+ const child = node.child(i);
429
+ if (child.type === "const_element") {
430
+ const name = child.childForFieldName("name")?.text;
431
+ if (name)
432
+ return [{ name }];
433
+ }
434
+ }
435
+ return null;
436
+ },
437
+ },
438
+ },
439
+ };
440
+ // ---------------------------------------------------------------------------
441
+ // C#
442
+ // ---------------------------------------------------------------------------
443
+ const csharpConfig = {
444
+ id: "csharp",
445
+ extensions: [".cs"],
446
+ treeSitterPackage: "tree-sitter-c-sharp",
447
+ nodeTypeMap: {
448
+ method_declaration: { changeType: "function" },
449
+ class_declaration: { changeType: "class" },
450
+ interface_declaration: { changeType: "class" },
451
+ struct_declaration: { changeType: "class" },
452
+ enum_declaration: { changeType: "class" },
453
+ namespace_declaration: {
454
+ changeType: "export",
455
+ extractor: (node) => {
456
+ const name = node.childForFieldName("name")?.text || "<anonymous>";
457
+ return [{ name }];
458
+ },
459
+ },
460
+ using_directive: {
461
+ changeType: "import",
462
+ extractor: (node) => [{ name: node.text }],
463
+ },
464
+ field_declaration: {
465
+ changeType: "variable",
466
+ extractor: (node) => {
467
+ const decl = node.childForFieldName("declaration");
468
+ if (!decl)
469
+ return null;
470
+ for (let i = 0; i < decl.childCount; i++) {
471
+ const child = decl.child(i);
472
+ if (child.type === "variable_declarator") {
473
+ const name = child.childForFieldName("name")?.text;
474
+ if (name)
475
+ return [{ name }];
476
+ }
477
+ }
478
+ return null;
479
+ },
480
+ },
481
+ property_declaration: { changeType: "variable" },
482
+ },
483
+ };
484
+ // ---------------------------------------------------------------------------
485
+ // Registry
486
+ // ---------------------------------------------------------------------------
487
+ exports.languageConfigs = [
488
+ javascriptConfig,
489
+ typescriptConfig,
490
+ pythonConfig,
491
+ goConfig,
492
+ rustConfig,
493
+ javaConfig,
494
+ cConfig,
495
+ cppConfig,
496
+ rubyConfig,
497
+ phpConfig,
498
+ csharpConfig,
499
+ ];
500
+ /** Look up a language config by file extension */
501
+ function getConfigForExtension(ext) {
502
+ return exports.languageConfigs.find((c) => c.extensions.includes(ext)) || null;
503
+ }
504
+ /** Get all supported file extensions across all configs */
505
+ function getAllSupportedExtensions() {
506
+ const exts = new Set();
507
+ for (const config of exports.languageConfigs) {
508
+ for (const ext of config.extensions) {
509
+ exts.add(ext);
510
+ }
511
+ }
512
+ return exts;
513
+ }
514
+ //# sourceMappingURL=language-configs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"language-configs.js","sourceRoot":"","sources":["../../src/explain/language-configs.ts"],"names":[],"mappings":"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"}
@@ -78,19 +78,21 @@ Respond with JSON:
78
78
  {
79
79
  "title": "<60 char title for these changes>",
80
80
  "description": "<2-4 sentences in plain language explaining what changed and why, suitable for non-developers>",
81
+ "impact": ["<business/organizational impact statement>"],
81
82
  "fixes": [{"description": "<what was fixed or restored, one sentence>"}],
82
83
  "risks": [{"level": "low|medium|high", "description": "<genuine new risk, one sentence>"}],
83
84
  "fileExplanations": [{"path": "<file path>", "summary": "<1-2 sentences explaining what this file does and what changed>", "notes": ["<thing to consider about this specific change>"]}]
84
85
  }
85
86
 
86
87
  Rules:
88
+ - "impact": short, stakeholder-level statements about what this change means for the product/team. Think about what matters to engineers, product, security, legal, and leadership. Examples: "Security protections restored", "Reduced risk of unauthorized access", "Improved reliability of product creation". 1-4 items. Can be empty for trivial changes.
87
89
  - "fixes": things this change REPAIRS or RESTORES (e.g., re-adding security that was removed). Can be empty.
88
90
  - "risks": only GENUINE new concerns, NOT things being fixed. If a change restores previous behavior, that is a fix, not a risk. Can be empty.
89
91
  - "fileExplanations": one entry per changed file, plain language. "notes" are file-specific things to consider — edge cases, testing suggestions, behavioral changes. Can be empty array if nothing notable.`;
90
92
  const client = new sdk_1.default();
91
93
  const message = await client.messages.create({
92
94
  model: "claude-sonnet-4-5-20250929",
93
- max_tokens: 1024,
95
+ max_tokens: 4096,
94
96
  temperature: 0,
95
97
  system: SYSTEM_PROMPT,
96
98
  messages: [{ role: "user", content: prompt }],
@@ -112,6 +114,7 @@ Rules:
112
114
  parsed = {
113
115
  title: "Code changes",
114
116
  description: text.slice(0, 200),
117
+ impact: [],
115
118
  fixes: [],
116
119
  risks: [{ level: "low", description: "LLM response was not valid JSON; showing raw text." }],
117
120
  fileExplanations: [],
@@ -120,6 +123,7 @@ Rules:
120
123
  return {
121
124
  title: parsed.title || "Code changes",
122
125
  description: parsed.description || "",
126
+ impact: Array.isArray(parsed.impact) ? parsed.impact : [],
123
127
  fixes: Array.isArray(parsed.fixes) ? parsed.fixes : [],
124
128
  risks: Array.isArray(parsed.risks) ? parsed.risks : [],
125
129
  fileExplanations: Array.isArray(parsed.fileExplanations)
@@ -1 +1 @@
1
- {"version":3,"file":"llm-explain.js","sourceRoot":"","sources":["../../src/explain/llm-explain.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"llm-explain.js","sourceRoot":"","sources":["../../src/explain/llm-explain.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { ExplainReport } from "./types";
2
+ /**
3
+ * Render a compact markdown summary of the report for use as a PR comment.
4
+ */
5
+ export declare function renderMarkdownSummary(report: ExplainReport): string;