milens 0.6.5 → 0.6.6

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 (91) hide show
  1. package/.agents/skills/analyzer/SKILL.md +5 -5
  2. package/.agents/skills/docs/SKILL.md +4 -3
  3. package/.agents/skills/milens/SKILL.md +1 -1
  4. package/.agents/skills/root/SKILL.md +3 -3
  5. package/.agents/skills/server/SKILL.md +10 -9
  6. package/.agents/skills/store/SKILL.md +2 -2
  7. package/README.md +166 -166
  8. package/adapters/claude-code/CLAUDE.md +36 -15
  9. package/adapters/codex/.codex/codex.md +38 -23
  10. package/adapters/copilot/.github/copilot-instructions.md +29 -22
  11. package/adapters/gemini/.gemini/context.md +33 -10
  12. package/adapters/opencode/AGENTS.md +36 -15
  13. package/dist/agents-md.d.ts.map +1 -1
  14. package/dist/agents-md.js +51 -2
  15. package/dist/agents-md.js.map +1 -1
  16. package/dist/analyzer/engine.d.ts +3 -0
  17. package/dist/analyzer/engine.d.ts.map +1 -1
  18. package/dist/analyzer/engine.js +342 -8
  19. package/dist/analyzer/engine.js.map +1 -1
  20. package/dist/analyzer/resolver.d.ts +2 -0
  21. package/dist/analyzer/resolver.d.ts.map +1 -1
  22. package/dist/analyzer/resolver.js +187 -9
  23. package/dist/analyzer/resolver.js.map +1 -1
  24. package/dist/analyzer/review.d.ts.map +1 -1
  25. package/dist/analyzer/review.js +254 -32
  26. package/dist/analyzer/review.js.map +1 -1
  27. package/dist/analyzer/scope-resolver.d.ts +42 -0
  28. package/dist/analyzer/scope-resolver.d.ts.map +1 -0
  29. package/dist/analyzer/scope-resolver.js +687 -0
  30. package/dist/analyzer/scope-resolver.js.map +1 -0
  31. package/dist/cli.js +294 -1
  32. package/dist/cli.js.map +1 -1
  33. package/dist/parser/extract.d.ts +6 -1
  34. package/dist/parser/extract.d.ts.map +1 -1
  35. package/dist/parser/extract.js +14 -2
  36. package/dist/parser/extract.js.map +1 -1
  37. package/dist/parser/lang-css.d.ts.map +1 -1
  38. package/dist/parser/lang-css.js +7 -1
  39. package/dist/parser/lang-css.js.map +1 -1
  40. package/dist/parser/lang-go.d.ts.map +1 -1
  41. package/dist/parser/lang-go.js +16 -0
  42. package/dist/parser/lang-go.js.map +1 -1
  43. package/dist/parser/lang-html.d.ts +4 -0
  44. package/dist/parser/lang-html.d.ts.map +1 -1
  45. package/dist/parser/lang-html.js +40 -1
  46. package/dist/parser/lang-html.js.map +1 -1
  47. package/dist/parser/lang-java.d.ts.map +1 -1
  48. package/dist/parser/lang-java.js +12 -0
  49. package/dist/parser/lang-java.js.map +1 -1
  50. package/dist/parser/lang-js.d.ts.map +1 -1
  51. package/dist/parser/lang-js.js +3 -0
  52. package/dist/parser/lang-js.js.map +1 -1
  53. package/dist/parser/lang-php.d.ts.map +1 -1
  54. package/dist/parser/lang-php.js +11 -0
  55. package/dist/parser/lang-php.js.map +1 -1
  56. package/dist/parser/lang-py.d.ts.map +1 -1
  57. package/dist/parser/lang-py.js +14 -0
  58. package/dist/parser/lang-py.js.map +1 -1
  59. package/dist/parser/lang-ruby.d.ts.map +1 -1
  60. package/dist/parser/lang-ruby.js +20 -0
  61. package/dist/parser/lang-ruby.js.map +1 -1
  62. package/dist/parser/lang-rust.d.ts.map +1 -1
  63. package/dist/parser/lang-rust.js +27 -4
  64. package/dist/parser/lang-rust.js.map +1 -1
  65. package/dist/parser/lang-ts.d.ts.map +1 -1
  66. package/dist/parser/lang-ts.js +3 -0
  67. package/dist/parser/lang-ts.js.map +1 -1
  68. package/dist/parser/lang-vue.d.ts +17 -1
  69. package/dist/parser/lang-vue.d.ts.map +1 -1
  70. package/dist/parser/lang-vue.js +177 -0
  71. package/dist/parser/lang-vue.js.map +1 -1
  72. package/dist/parser/language-provider.d.ts +27 -0
  73. package/dist/parser/language-provider.d.ts.map +1 -0
  74. package/dist/parser/language-provider.js +2 -0
  75. package/dist/parser/language-provider.js.map +1 -0
  76. package/dist/server/mcp.d.ts.map +1 -1
  77. package/dist/server/mcp.js +224 -50
  78. package/dist/server/mcp.js.map +1 -1
  79. package/dist/server/watcher.d.ts +8 -0
  80. package/dist/server/watcher.d.ts.map +1 -1
  81. package/dist/server/watcher.js +10 -8
  82. package/dist/server/watcher.js.map +1 -1
  83. package/dist/skills.js +163 -42
  84. package/dist/skills.js.map +1 -1
  85. package/dist/store/schema.sql +1 -1
  86. package/dist/uninstall.d.ts +54 -0
  87. package/dist/uninstall.d.ts.map +1 -0
  88. package/dist/uninstall.js +795 -0
  89. package/dist/uninstall.js.map +1 -0
  90. package/docs/README.md +4 -1
  91. package/package.json +1 -1
@@ -1,5 +1,18 @@
1
1
  import { execFileSync } from 'node:child_process';
2
2
  import { isTestFile } from '../utils.js';
3
+ // ── Helpers ──
4
+ function isFixtureOrTest(file) {
5
+ return isTestFile(file) ||
6
+ /(^|[\/\\])test[\/\\]fixtures[\/\\]/.test(file) ||
7
+ /(^|[\/\\])fixtures[\/\\]/.test(file);
8
+ }
9
+ function isNonSourceFile(file) {
10
+ if (!file.startsWith('src/'))
11
+ return true;
12
+ return /\.(md|json|lock|yml|yaml|toml)$/.test(file) ||
13
+ /\/\.milens\//.test(file) ||
14
+ /\/node_modules\//.test(file);
15
+ }
3
16
  function classifyRisk(score, hasUntested, hasCriticalHub) {
4
17
  if (hasCriticalHub || score >= 50)
5
18
  return 'CRITICAL';
@@ -14,37 +27,45 @@ function classifyRisk(score, hasUntested, hasCriticalHub) {
14
27
  function scoreSymbol(sym, dependents, tested) {
15
28
  const reasons = [];
16
29
  let score = 0;
17
- // Heat contribution (how central this symbol is)
18
30
  const heat = sym.heat ?? 0;
19
31
  score += Math.min(heat * 0.3, 15);
20
- // Dependents contribution (blast radius)
21
32
  score += dependents * 3;
22
33
  if (dependents > 10)
23
34
  reasons.push(`${dependents} direct dependents`);
24
35
  else if (dependents > 5)
25
36
  reasons.push(`${dependents} dependents`);
26
- // Role-based risk
27
37
  if (sym.role === 'hub') {
28
38
  score += 10;
29
- reasons.push('hub function (high fan-in + fan-out)');
39
+ reasons.push('hub function');
30
40
  }
31
41
  if (sym.role === 'entrypoint') {
32
42
  score += 5;
33
43
  reasons.push('entrypoint');
34
44
  }
35
- // Test coverage penalty
36
45
  if (!tested && sym.exported) {
37
46
  score *= 1.5;
38
47
  reasons.push('no test coverage');
39
48
  }
40
- // Exported symbols are riskier
41
- if (sym.exported && dependents > 0) {
49
+ if (sym.exported && dependents > 0)
42
50
  score += 3;
51
+ // Fix 3: Non-exported internals with zero deps are implementation details → LOW
52
+ if (!sym.exported && dependents === 0) {
53
+ return { score: 0, reasons: ['internal implementation detail'] };
54
+ }
55
+ if (!sym.exported) {
56
+ if (dependents <= 1) {
57
+ score = Math.round(score * 0.4);
58
+ if (!reasons.length)
59
+ reasons.push('internal (non-exported)');
60
+ }
61
+ else if (dependents <= 3) {
62
+ score = Math.round(score * 0.65);
63
+ }
43
64
  }
44
65
  return { score: Math.round(score), reasons };
45
66
  }
67
+ // ── Git helpers ──
46
68
  function getChangedFiles(root, ref, base) {
47
- // Validate ref to prevent injection
48
69
  const refPattern = /^[a-zA-Z0-9\/._~^\-]+$/;
49
70
  if (!refPattern.test(ref))
50
71
  throw new Error('Invalid git ref');
@@ -53,47 +74,233 @@ function getChangedFiles(root, ref, base) {
53
74
  const diffTarget = base ? `${base}...${ref}` : ref;
54
75
  const output = execFileSync('git', ['diff', '--name-only', diffTarget], { cwd: root, encoding: 'utf-8' });
55
76
  const files = output.trim().split('\n').filter(Boolean);
56
- // Only include staged files when reviewing working tree (no explicit base/ref pair)
77
+ const sourceFiles = files.filter(f => !isFixtureOrTest(f) && !isNonSourceFile(f));
57
78
  if (!base) {
58
79
  const staged = execFileSync('git', ['diff', '--cached', '--name-only', ref], { cwd: root, encoding: 'utf-8' });
59
- const stagedFiles = staged.trim().split('\n').filter(Boolean);
60
- return [...new Set([...files, ...stagedFiles])];
80
+ const stagedFiles = staged.trim().split('\n').filter(Boolean)
81
+ .filter(f => !isFixtureOrTest(f) && !isNonSourceFile(f));
82
+ return [...new Set([...sourceFiles, ...stagedFiles])];
83
+ }
84
+ return [...new Set(sourceFiles)];
85
+ }
86
+ function getChangedLineRanges(root, file, ref, base) {
87
+ try {
88
+ const diffTarget = base ? `${base}...${ref}` : ref;
89
+ const output = execFileSync('git', ['diff', '--unified=0', diffTarget, '--', file], { cwd: root, encoding: 'utf-8', maxBuffer: 10 * 1024 * 1024 });
90
+ const ranges = [];
91
+ const re = /@@ -\d+(?:,\d+)? \+(\d+)(?:,(\d+))? @@/g;
92
+ let m;
93
+ while ((m = re.exec(output)) !== null) {
94
+ const start = parseInt(m[1], 10);
95
+ const count = m[2] ? parseInt(m[2], 10) : 1;
96
+ ranges.push([start, start + count - 1]);
97
+ }
98
+ return ranges;
99
+ }
100
+ catch {
101
+ return [];
61
102
  }
62
- return [...new Set(files)];
63
103
  }
104
+ /**
105
+ * Fix 1+2: Get file content at a specific git commit.
106
+ */
107
+ function gitShow(root, commit, file) {
108
+ try {
109
+ return execFileSync('git', ['show', `${commit}:${file}`], {
110
+ cwd: root, encoding: 'utf-8', maxBuffer: 10 * 1024 * 1024,
111
+ });
112
+ }
113
+ catch {
114
+ return '';
115
+ }
116
+ }
117
+ /**
118
+ * Fix 1+2: Extract symbol names from source code using language-aware regex.
119
+ * Returns a Set of {name, kind} strings like "function:greet", "class:User".
120
+ */
121
+ function extractSymbolNames(source, file) {
122
+ const names = new Set();
123
+ const ext = file.split('.').pop()?.toLowerCase();
124
+ // TypeScript / JavaScript
125
+ if (ext === 'ts' || ext === 'tsx' || ext === 'js' || ext === 'jsx' || ext === 'vue') {
126
+ const re = /(?:export\s+)?(?:async\s+)?(?:function|class|interface|type|enum|const|let|var)\s+(\w+)/g;
127
+ let m;
128
+ while ((m = re.exec(source)) !== null) {
129
+ if (m[1] === 'function' || m[1] === 'class' || m[1] === 'const' || m[1] === 'let')
130
+ continue;
131
+ names.add(m[1]);
132
+ }
133
+ // Vue SFC: also match template-level symbols
134
+ // (already covered by TS patterns for <script> blocks)
135
+ }
136
+ // Python
137
+ else if (ext === 'py') {
138
+ const re = /^(?:async\s+)?def\s+(\w+)|^class\s+(\w+)/gm;
139
+ let m;
140
+ while ((m = re.exec(source)) !== null) {
141
+ names.add(m[1] || m[2]);
142
+ }
143
+ }
144
+ // Ruby
145
+ else if (ext === 'rb' || ext === 'rake') {
146
+ // class/module/def
147
+ const re = /^\s*(?:class|module)\s+(\w+)|^\s*def\s+(?:self\.)?(\w+[?!]?)/gm;
148
+ let m;
149
+ while ((m = re.exec(source)) !== null) {
150
+ names.add(m[1] || m[2]);
151
+ }
152
+ }
153
+ // Go
154
+ else if (ext === 'go') {
155
+ const re = /^\s*(?:func|type)\s+(\w+)/gm;
156
+ let m;
157
+ while ((m = re.exec(source)) !== null) {
158
+ if (m[1] !== 'func' && m[1] !== 'type')
159
+ names.add(m[1]);
160
+ }
161
+ }
162
+ // Rust
163
+ else if (ext === 'rs') {
164
+ const re = /^\s*(?:pub\s+)?(?:fn|struct|enum|trait|impl)\s+(\w+)/gm;
165
+ let m;
166
+ while ((m = re.exec(source)) !== null) {
167
+ names.add(m[1]);
168
+ }
169
+ }
170
+ // Java / PHP
171
+ else if (ext === 'java' || ext === 'php') {
172
+ const re = /^\s*(?:public|private|protected|static)?\s*(?:class|interface|enum)\s+(\w+)|function\s+(\w+)/gm;
173
+ let m;
174
+ while ((m = re.exec(source)) !== null) {
175
+ names.add(m[1] || m[2]);
176
+ }
177
+ }
178
+ // CSS
179
+ else if (ext === 'css') {
180
+ const classRe = /\.([a-zA-Z_][\w-]*)\s*[{,\s]/g;
181
+ const idRe = /#([a-zA-Z_][\w-]*)\s*[{,\s]/g;
182
+ let m;
183
+ while ((m = classRe.exec(source)) !== null)
184
+ names.add(`.${m[1]}`);
185
+ while ((m = idRe.exec(source)) !== null)
186
+ names.add(`#${m[1]}`);
187
+ }
188
+ // HTML
189
+ else if (ext === 'html' || ext === 'htm') {
190
+ const idRe = /\bid\s*=\s*["']([^"']+)["']/gi;
191
+ let m;
192
+ while ((m = idRe.exec(source)) !== null)
193
+ names.add(m[1]);
194
+ }
195
+ return names;
196
+ }
197
+ /**
198
+ * Fix 1+2: For historical mode, diff symbol names between two commits using git show.
199
+ * Returns Set of symbol names that were added, removed, or modified.
200
+ */
201
+ function getChangedSymbolNames(root, file, base, ref) {
202
+ try {
203
+ const oldSource = gitShow(root, base, file);
204
+ const newSource = gitShow(root, ref, file);
205
+ // File doesn't exist in base → entirely new → all symbols are "changed"
206
+ if (!oldSource && newSource) {
207
+ const names = extractSymbolNames(newSource, file);
208
+ return { names, isNewFile: true };
209
+ }
210
+ // File doesn't exist in ref → deleted → all symbols were removed
211
+ if (oldSource && !newSource) {
212
+ const names = extractSymbolNames(oldSource, file);
213
+ return { names, isNewFile: true };
214
+ }
215
+ if (!oldSource || !newSource)
216
+ return { names: new Set(), isNewFile: false };
217
+ const oldNames = extractSymbolNames(oldSource, file);
218
+ const newNames = extractSymbolNames(newSource, file);
219
+ const changed = new Set();
220
+ for (const n of newNames)
221
+ if (!oldNames.has(n))
222
+ changed.add(n);
223
+ for (const n of oldNames)
224
+ if (!newNames.has(n))
225
+ changed.add(n);
226
+ return { names: changed, isNewFile: false };
227
+ }
228
+ catch {
229
+ return { names: new Set(), isNewFile: false };
230
+ }
231
+ }
232
+ // ── Test coverage ──
64
233
  function isSymbolTested(db, sym) {
65
234
  const incoming = db.getIncomingLinks(sym.id);
66
- return incoming.some(l => {
235
+ const directlyTested = incoming.some(l => {
67
236
  const from = db.findSymbolById(l.fromId);
68
237
  return from && isTestFile(from.filePath);
69
238
  });
239
+ if (directlyTested)
240
+ return true;
241
+ // Fix 4: Indirect coverage via parent function
242
+ if (!sym.exported && sym.parentId) {
243
+ const parentSym = db.findSymbolById(sym.parentId);
244
+ if (parentSym && isSymbolTested(db, parentSym))
245
+ return true;
246
+ }
247
+ return false;
70
248
  }
249
+ // ── Main ──
71
250
  export function reviewPr(db, root, ref = 'HEAD', base) {
72
251
  let changedFiles;
73
252
  try {
74
253
  changedFiles = getChangedFiles(root, ref, base);
75
254
  }
76
255
  catch {
77
- return {
78
- risk: 'LOW', score: 0, changedFiles: [], symbols: [],
256
+ return { risk: 'LOW', score: 0, changedFiles: [], symbols: [],
79
257
  hotspots: [], untestedChanges: 0,
80
- summary: 'Not a git repository or git not available.',
81
- };
258
+ summary: 'Not a git repository or git not available.' };
82
259
  }
83
260
  if (changedFiles.length === 0) {
84
- return {
85
- risk: 'LOW', score: 0, changedFiles: [], symbols: [],
261
+ return { risk: 'LOW', score: 0, changedFiles: [], symbols: [],
86
262
  hotspots: [], untestedChanges: 0,
87
- summary: 'No changed files detected.',
88
- };
263
+ summary: 'No changed files detected.' };
89
264
  }
90
265
  const symbolRisks = [];
91
266
  let untestedChanges = 0;
92
267
  for (const file of changedFiles) {
93
268
  if (isTestFile(file))
94
- continue; // test file changes don't add risk
269
+ continue;
270
+ if (isFixtureOrTest(file))
271
+ continue;
272
+ if (isNonSourceFile(file))
273
+ continue;
95
274
  const syms = db.getSymbolsByFile(file);
275
+ // Determine which symbols changed
276
+ let changedNames = null;
277
+ const isHistorical = !!base;
278
+ if (isHistorical) {
279
+ // Fix 1+2: Historical mode — diff symbol names between commits via git show
280
+ const result = getChangedSymbolNames(root, file, base, ref);
281
+ changedNames = result.names;
282
+ // If file is entirely new or deleted, include ALL symbols from that file
283
+ if (result.isNewFile && changedNames.size === 0) {
284
+ // getAll symbols — fallback: regex couldn't extract names, include all
285
+ changedNames = null;
286
+ }
287
+ }
288
+ else {
289
+ // Fix 1: Working tree mode — line overlap filter
290
+ const changedRanges = getChangedLineRanges(root, file, ref);
291
+ if (changedRanges.length > 0) {
292
+ changedNames = new Set(syms
293
+ .filter(s => changedRanges.some(([rStart, rEnd]) => s.startLine <= rEnd && s.endLine >= rStart))
294
+ .map(s => s.name));
295
+ }
296
+ // If no ranges, changedNames stays null → include all symbols (conservative fallback)
297
+ }
96
298
  for (const sym of syms) {
299
+ if (sym.kind === 'module')
300
+ continue;
301
+ // Fix 1+2: Only include symbols whose name is in the changed set
302
+ if (changedNames !== null && !changedNames.has(sym.name))
303
+ continue;
97
304
  const upstream = db.findUpstream(sym.id, 1);
98
305
  const dependents = upstream.length;
99
306
  const tested = isSymbolTested(db, sym);
@@ -104,7 +311,29 @@ export function reviewPr(db, root, ref = 'HEAD', base) {
104
311
  symbolRisks.push({ symbol: sym, dependents, tested, riskScore: score, riskLevel, reasons });
105
312
  }
106
313
  }
107
- // Sort by risk descending
314
+ // Fix 4: Cross-file impact — flag callers of changed high-risk symbols
315
+ const changedIds = new Set(symbolRisks.map(s => s.symbol.id));
316
+ const impactRisks = [];
317
+ for (const sr of symbolRisks) {
318
+ if (sr.riskLevel === 'HIGH' || sr.riskLevel === 'CRITICAL') {
319
+ // Find downstream callers (who depends on this changed symbol?)
320
+ const downstream = db.findUpstream(sr.symbol.id, 2);
321
+ for (const ds of downstream) {
322
+ const dsSym = ds.symbol;
323
+ if (dsSym && !changedIds.has(dsSym.id) && !isFixtureOrTest(dsSym.filePath)) {
324
+ const dsTested = isSymbolTested(db, dsSym);
325
+ const dsDependents = db.findUpstream(dsSym.id, 1).length;
326
+ const { score, reasons } = scoreSymbol(dsSym, dsDependents, dsTested);
327
+ reasons.unshift(`impacted by change to ${sr.symbol.name}`);
328
+ const riskLevel = classifyRisk(score, !dsTested && dsSym.exported, false);
329
+ impactRisks.push({ symbol: dsSym, dependents: dsDependents, tested: dsTested,
330
+ riskScore: score, riskLevel, reasons });
331
+ changedIds.add(dsSym.id);
332
+ }
333
+ }
334
+ }
335
+ }
336
+ symbolRisks.push(...impactRisks);
108
337
  symbolRisks.sort((a, b) => b.riskScore - a.riskScore);
109
338
  const totalScore = symbolRisks.reduce((sum, s) => sum + s.riskScore, 0);
110
339
  const hotspots = symbolRisks.filter(s => s.riskLevel === 'HIGH' || s.riskLevel === 'CRITICAL');
@@ -118,15 +347,8 @@ export function reviewPr(db, root, ref = 'HEAD', base) {
118
347
  if (untestedChanges > 0)
119
348
  summaryParts.push(`${untestedChanges} untested`);
120
349
  summaryParts.push(`overall risk: ${overallRisk} (score: ${totalScore})`);
121
- return {
122
- risk: overallRisk,
123
- score: totalScore,
124
- changedFiles,
125
- symbols: symbolRisks,
126
- hotspots,
127
- untestedChanges,
128
- summary: summaryParts.join(', '),
129
- };
350
+ return { risk: overallRisk, score: totalScore, changedFiles, symbols: symbolRisks,
351
+ hotspots, untestedChanges, summary: summaryParts.join(', ') };
130
352
  }
131
353
  export function reviewSymbol(db, name) {
132
354
  const syms = db.findSymbolByName(name);
@@ -1 +1 @@
1
- {"version":3,"file":"review.js","sourceRoot":"","sources":["../../src/analyzer/review.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"review.js","sourceRoot":"","sources":["../../src/analyzer/review.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import type { CodeSymbol, SymbolLink, RawImport, RawCall, RawHeritage, RawReExport, RawTypeBinding, RawAssignmentBinding, RawReturnType, RawCallResultBinding } from '../types.js';
2
+ import type { ResolutionResult } from './resolver.js';
3
+ import type Parser from 'web-tree-sitter';
4
+ interface ScopeResolverInput {
5
+ symbolsByFile: Map<string, CodeSymbol[]>;
6
+ allSymbols: CodeSymbol[];
7
+ imports: RawImport[];
8
+ calls: RawCall[];
9
+ heritage: RawHeritage[];
10
+ reExports?: RawReExport[];
11
+ typeBindings?: RawTypeBinding[];
12
+ assignmentBindings?: RawAssignmentBinding[];
13
+ returnTypes?: RawReturnType[];
14
+ callResultBindings?: RawCallResultBinding[];
15
+ resolvedImportPaths: Map<string, string>;
16
+ perFileImportSemantics?: Map<string, 'named' | 'wildcard-leaf' | 'wildcard-transitive' | 'namespace'>;
17
+ perFileMroStrategy?: Map<string, 'first-wins' | 'c3' | 'ruby-mixin' | 'none'>;
18
+ treeCache?: Map<string, Parser.Tree>;
19
+ }
20
+ export declare function resolveWithScopes(input: ScopeResolverInput): ResolutionResult;
21
+ export interface DiffEntry {
22
+ linkId: string;
23
+ legacy: SymbolLink;
24
+ scopeBased: SymbolLink | null;
25
+ }
26
+ export interface DiffStats {
27
+ addedInScope: number;
28
+ missingFromScope: number;
29
+ confidenceDiff: number;
30
+ totalMatched: number;
31
+ totalLegacy: number;
32
+ totalScope: number;
33
+ }
34
+ export declare function diffResolutions(legacy: ResolutionResult, scopeBased: ResolutionResult): DiffEntry[];
35
+ export declare function computeDiffStats(legacy: ResolutionResult, scopeBased: ResolutionResult, diffs: DiffEntry[]): DiffStats;
36
+ export declare function checkParity(languageId: string, legacy: ResolutionResult, scopeBased: ResolutionResult): {
37
+ reached: boolean;
38
+ matchRate: number;
39
+ stats: DiffStats;
40
+ };
41
+ export {};
42
+ //# sourceMappingURL=scope-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scope-resolver.d.ts","sourceRoot":"","sources":["../../src/analyzer/scope-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,oBAAoB,EAAE,aAAa,EAAE,oBAAoB,EAAY,MAAM,aAAa,CAAC;AAC7L,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAC;AA4B1C,UAAU,kBAAkB;IAC1B,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IACzC,UAAU,EAAE,UAAU,EAAE,CAAC;IACzB,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,SAAS,CAAC,EAAE,WAAW,EAAE,CAAC;IAC1B,YAAY,CAAC,EAAE,cAAc,EAAE,CAAC;IAChC,kBAAkB,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAC5C,WAAW,CAAC,EAAE,aAAa,EAAE,CAAC;IAC9B,kBAAkB,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAC5C,mBAAmB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,sBAAsB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,GAAG,eAAe,GAAG,qBAAqB,GAAG,WAAW,CAAC,CAAC;IACtG,kBAAkB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,GAAG,YAAY,GAAG,MAAM,CAAC,CAAC;IAC9E,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;CACtC;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,kBAAkB,GAAG,gBAAgB,CAuH7E;AA2iBD,MAAM,WAAW,SAAS;IAAG,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,UAAU,CAAC;IAAC,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;CAAE;AACjG,MAAM,WAAW,SAAS;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAMD,wBAAgB,eAAe,CAAC,MAAM,EAAE,gBAAgB,EAAE,UAAU,EAAE,gBAAgB,GAAG,SAAS,EAAE,CAoCnG;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,EAAE,UAAU,EAAE,gBAAgB,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,SAAS,CA6BtH;AAQD,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,UAAU,EAAE,gBAAgB,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,SAAS,CAAA;CAAE,CAMjK"}