@aiready/context-analyzer 0.21.22 → 0.21.23

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 (61) hide show
  1. package/.turbo/turbo-build.log +26 -25
  2. package/.turbo/turbo-lint.log +5 -5
  3. package/.turbo/turbo-test.log +104 -41
  4. package/coverage/clover.xml +2615 -1242
  5. package/coverage/coverage-final.json +30 -13
  6. package/coverage/dist/chunk-64U3PNO3.mjs.html +367 -0
  7. package/coverage/dist/chunk-J3MUOWHC.mjs.html +5326 -0
  8. package/coverage/dist/index.html +146 -0
  9. package/coverage/{classifier.ts.html → dist/index.mjs.html} +537 -912
  10. package/coverage/index.html +84 -189
  11. package/coverage/src/analyzer.ts.html +88 -0
  12. package/coverage/src/analyzers/index.html +116 -0
  13. package/coverage/src/analyzers/python-context.ts.html +910 -0
  14. package/coverage/{ast-utils.ts.html → src/ast-utils.ts.html} +84 -54
  15. package/coverage/src/classifier.ts.html +892 -0
  16. package/coverage/src/classify/classification-patterns.ts.html +307 -0
  17. package/coverage/src/classify/file-classifiers.ts.html +973 -0
  18. package/coverage/src/classify/index.html +131 -0
  19. package/coverage/{cluster-detector.ts.html → src/cluster-detector.ts.html} +154 -91
  20. package/coverage/{defaults.ts.html → src/defaults.ts.html} +74 -65
  21. package/coverage/{graph-builder.ts.html → src/graph-builder.ts.html} +268 -229
  22. package/coverage/src/index.html +341 -0
  23. package/coverage/{index.ts.html → src/index.ts.html} +70 -13
  24. package/coverage/{scoring.ts.html → src/issue-analyzer.ts.html} +201 -261
  25. package/coverage/src/mapper.ts.html +439 -0
  26. package/coverage/{metrics.ts.html → src/metrics.ts.html} +201 -132
  27. package/coverage/src/orchestrator.ts.html +493 -0
  28. package/coverage/{provider.ts.html → src/provider.ts.html} +21 -21
  29. package/coverage/{remediation.ts.html → src/remediation.ts.html} +112 -52
  30. package/coverage/src/report/console-report.ts.html +415 -0
  31. package/coverage/src/report/html-report.ts.html +361 -0
  32. package/coverage/src/report/index.html +146 -0
  33. package/coverage/src/report/interactive-setup.ts.html +373 -0
  34. package/coverage/src/scoring.ts.html +895 -0
  35. package/coverage/src/semantic/co-usage.ts.html +340 -0
  36. package/coverage/src/semantic/consolidation.ts.html +223 -0
  37. package/coverage/src/semantic/domain-inference.ts.html +859 -0
  38. package/coverage/src/semantic/index.html +161 -0
  39. package/coverage/src/semantic/type-graph.ts.html +163 -0
  40. package/coverage/{summary.ts.html → src/summary.ts.html} +155 -275
  41. package/coverage/{types.ts.html → src/types.ts.html} +133 -31
  42. package/coverage/src/utils/dependency-graph-utils.ts.html +463 -0
  43. package/coverage/src/utils/index.html +131 -0
  44. package/coverage/src/utils/string-utils.ts.html +148 -0
  45. package/dist/chunk-J3MUOWHC.mjs +1747 -0
  46. package/dist/cli.js +59 -171
  47. package/dist/cli.mjs +1 -1
  48. package/dist/index.js +55 -167
  49. package/dist/index.mjs +1 -1
  50. package/package.json +2 -2
  51. package/src/__tests__/consolidation.test.ts +247 -0
  52. package/src/__tests__/defaults.test.ts +121 -0
  53. package/src/__tests__/domain-inference.test.ts +420 -0
  54. package/src/__tests__/issue-analyzer.test.ts +155 -0
  55. package/src/__tests__/orchestrator.test.ts +143 -0
  56. package/src/__tests__/python-context.test.ts +98 -0
  57. package/src/__tests__/report/console-report.test.ts +292 -0
  58. package/src/__tests__/report/html-report.test.ts +232 -0
  59. package/src/report/html-report.ts +58 -174
  60. package/coverage/analyzer.ts.html +0 -1369
  61. package/coverage/semantic-analysis.ts.html +0 -1201
@@ -3,15 +3,15 @@
3
3
  <html lang="en">
4
4
 
5
5
  <head>
6
- <title>Code coverage report for remediation.ts</title>
6
+ <title>Code coverage report for src/remediation.ts</title>
7
7
  <meta charset="utf-8" />
8
- <link rel="stylesheet" href="prettify.css" />
9
- <link rel="stylesheet" href="base.css" />
10
- <link rel="shortcut icon" type="image/x-icon" href="favicon.png" />
8
+ <link rel="stylesheet" href="../prettify.css" />
9
+ <link rel="stylesheet" href="../base.css" />
10
+ <link rel="shortcut icon" type="image/x-icon" href="../favicon.png" />
11
11
  <meta name="viewport" content="width=device-width, initial-scale=1" />
12
12
  <style type='text/css'>
13
13
  .coverage-summary .sorter {
14
- background-image: url(sort-arrow-sprite.png);
14
+ background-image: url(../sort-arrow-sprite.png);
15
15
  }
16
16
  </style>
17
17
  </head>
@@ -19,34 +19,34 @@
19
19
  <body>
20
20
  <div class='wrapper'>
21
21
  <div class='pad1'>
22
- <h1><a href="index.html">All files</a> remediation.ts</h1>
22
+ <h1><a href="../index.html">All files</a> / <a href="index.html">src</a> remediation.ts</h1>
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">79.48% </span>
26
+ <span class="strong">84.61% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>31/39</span>
28
+ <span class='fraction'>66/78</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">74.07% </span>
33
+ <span class="strong">78.57% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>20/27</span>
35
+ <span class='fraction'>44/56</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
40
  <span class="strong">100% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>2/2</span>
42
+ <span class='fraction'>4/4</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">83.33% </span>
47
+ <span class="strong">86.56% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>30/36</span>
49
+ <span class='fraction'>58/67</span>
50
50
  </div>
51
51
 
52
52
 
@@ -61,7 +61,7 @@
61
61
  </div>
62
62
  </template>
63
63
  </div>
64
- <div class='status-line medium'></div>
64
+ <div class='status-line high'></div>
65
65
  <pre><table class="coverage">
66
66
  <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
67
  <a name='L2'></a><a href='#L2'>2</a>
@@ -202,7 +202,27 @@
202
202
  <a name='L137'></a><a href='#L137'>137</a>
203
203
  <a name='L138'></a><a href='#L138'>138</a>
204
204
  <a name='L139'></a><a href='#L139'>139</a>
205
- <a name='L140'></a><a href='#L140'>140</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
205
+ <a name='L140'></a><a href='#L140'>140</a>
206
+ <a name='L141'></a><a href='#L141'>141</a>
207
+ <a name='L142'></a><a href='#L142'>142</a>
208
+ <a name='L143'></a><a href='#L143'>143</a>
209
+ <a name='L144'></a><a href='#L144'>144</a>
210
+ <a name='L145'></a><a href='#L145'>145</a>
211
+ <a name='L146'></a><a href='#L146'>146</a>
212
+ <a name='L147'></a><a href='#L147'>147</a>
213
+ <a name='L148'></a><a href='#L148'>148</a>
214
+ <a name='L149'></a><a href='#L149'>149</a>
215
+ <a name='L150'></a><a href='#L150'>150</a>
216
+ <a name='L151'></a><a href='#L151'>151</a>
217
+ <a name='L152'></a><a href='#L152'>152</a>
218
+ <a name='L153'></a><a href='#L153'>153</a>
219
+ <a name='L154'></a><a href='#L154'>154</a>
220
+ <a name='L155'></a><a href='#L155'>155</a>
221
+ <a name='L156'></a><a href='#L156'>156</a>
222
+ <a name='L157'></a><a href='#L157'>157</a>
223
+ <a name='L158'></a><a href='#L158'>158</a>
224
+ <a name='L159'></a><a href='#L159'>159</a>
225
+ <a name='L160'></a><a href='#L160'>160</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
206
226
  <span class="cline-any cline-neutral">&nbsp;</span>
207
227
  <span class="cline-any cline-neutral">&nbsp;</span>
208
228
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -212,55 +232,65 @@
212
232
  <span class="cline-any cline-neutral">&nbsp;</span>
213
233
  <span class="cline-any cline-neutral">&nbsp;</span>
214
234
  <span class="cline-any cline-neutral">&nbsp;</span>
215
- <span class="cline-any cline-yes">14x</span>
235
+ <span class="cline-any cline-yes">13x</span>
216
236
  <span class="cline-any cline-neutral">&nbsp;</span>
217
237
  <span class="cline-any cline-yes">2x</span>
218
238
  <span class="cline-any cline-neutral">&nbsp;</span>
219
239
  <span class="cline-any cline-neutral">&nbsp;</span>
240
+ <span class="cline-any cline-yes">20x</span>
220
241
  <span class="cline-any cline-neutral">&nbsp;</span>
242
+ <span class="cline-any cline-yes">14x</span>
221
243
  <span class="cline-any cline-neutral">&nbsp;</span>
222
- <span class="cline-any cline-yes">2x</span>
223
244
  <span class="cline-any cline-neutral">&nbsp;</span>
224
245
  <span class="cline-any cline-neutral">&nbsp;</span>
225
246
  <span class="cline-any cline-neutral">&nbsp;</span>
247
+ <span class="cline-any cline-yes">21x</span>
248
+ <span class="cline-any cline-yes">16x</span>
226
249
  <span class="cline-any cline-neutral">&nbsp;</span>
227
- <span class="cline-any cline-yes">2x</span>
228
250
  <span class="cline-any cline-neutral">&nbsp;</span>
229
251
  <span class="cline-any cline-neutral">&nbsp;</span>
252
+ <span class="cline-any cline-yes">21x</span>
253
+ <span class="cline-any cline-yes">15x</span>
230
254
  <span class="cline-any cline-neutral">&nbsp;</span>
231
255
  <span class="cline-any cline-neutral">&nbsp;</span>
232
- <span class="cline-any cline-yes">1x</span>
233
- <span class="cline-any cline-neutral">&nbsp;</span>
234
256
  <span class="cline-any cline-neutral">&nbsp;</span>
257
+ <span class="cline-any cline-yes">21x</span>
258
+ <span class="cline-any cline-yes">19x</span>
235
259
  <span class="cline-any cline-neutral">&nbsp;</span>
236
260
  <span class="cline-any cline-neutral">&nbsp;</span>
237
- <span class="cline-any cline-yes">1x</span>
238
261
  <span class="cline-any cline-neutral">&nbsp;</span>
262
+ <span class="cline-any cline-yes">21x</span>
263
+ <span class="cline-any cline-yes">14x</span>
239
264
  <span class="cline-any cline-neutral">&nbsp;</span>
240
265
  <span class="cline-any cline-neutral">&nbsp;</span>
241
266
  <span class="cline-any cline-neutral">&nbsp;</span>
242
- <span class="cline-any cline-yes">1x</span>
267
+ <span class="cline-any cline-yes">21x</span>
268
+ <span class="cline-any cline-yes">14x</span>
243
269
  <span class="cline-any cline-neutral">&nbsp;</span>
244
270
  <span class="cline-any cline-neutral">&nbsp;</span>
245
271
  <span class="cline-any cline-neutral">&nbsp;</span>
272
+ <span class="cline-any cline-yes">21x</span>
273
+ <span class="cline-any cline-yes">14x</span>
246
274
  <span class="cline-any cline-neutral">&nbsp;</span>
247
- <span class="cline-any cline-yes">1x</span>
248
275
  <span class="cline-any cline-neutral">&nbsp;</span>
249
276
  <span class="cline-any cline-neutral">&nbsp;</span>
277
+ <span class="cline-any cline-yes">21x</span>
278
+ <span class="cline-any cline-yes">14x</span>
250
279
  <span class="cline-any cline-neutral">&nbsp;</span>
251
280
  <span class="cline-any cline-neutral">&nbsp;</span>
252
- <span class="cline-any cline-yes">1x</span>
253
281
  <span class="cline-any cline-neutral">&nbsp;</span>
282
+ <span class="cline-any cline-yes">21x</span>
283
+ <span class="cline-any cline-yes">2x</span>
254
284
  <span class="cline-any cline-neutral">&nbsp;</span>
255
285
  <span class="cline-any cline-neutral">&nbsp;</span>
256
286
  <span class="cline-any cline-neutral">&nbsp;</span>
257
- <span class="cline-any cline-yes">1x</span>
258
287
  <span class="cline-any cline-neutral">&nbsp;</span>
288
+ <span class="cline-any cline-yes">2x</span>
259
289
  <span class="cline-any cline-neutral">&nbsp;</span>
260
290
  <span class="cline-any cline-neutral">&nbsp;</span>
261
291
  <span class="cline-any cline-neutral">&nbsp;</span>
262
- <span class="cline-any cline-yes">1x</span>
263
292
  <span class="cline-any cline-neutral">&nbsp;</span>
293
+ <span class="cline-any cline-no">&nbsp;</span>
264
294
  <span class="cline-any cline-neutral">&nbsp;</span>
265
295
  <span class="cline-any cline-neutral">&nbsp;</span>
266
296
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -271,17 +301,7 @@
271
301
  <span class="cline-any cline-neutral">&nbsp;</span>
272
302
  <span class="cline-any cline-neutral">&nbsp;</span>
273
303
  <span class="cline-any cline-neutral">&nbsp;</span>
274
- <span class="cline-any cline-neutral">&nbsp;</span>
275
- <span class="cline-any cline-neutral">&nbsp;</span>
276
- <span class="cline-any cline-neutral">&nbsp;</span>
277
- <span class="cline-any cline-neutral">&nbsp;</span>
278
- <span class="cline-any cline-neutral">&nbsp;</span>
279
- <span class="cline-any cline-neutral">&nbsp;</span>
280
- <span class="cline-any cline-neutral">&nbsp;</span>
281
- <span class="cline-any cline-neutral">&nbsp;</span>
282
- <span class="cline-any cline-neutral">&nbsp;</span>
283
- <span class="cline-any cline-neutral">&nbsp;</span>
284
- <span class="cline-any cline-neutral">&nbsp;</span>
304
+ <span class="cline-any cline-yes">1x</span>
285
305
  <span class="cline-any cline-neutral">&nbsp;</span>
286
306
  <span class="cline-any cline-neutral">&nbsp;</span>
287
307
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -311,15 +331,35 @@
311
331
  <span class="cline-any cline-no">&nbsp;</span>
312
332
  <span class="cline-any cline-neutral">&nbsp;</span>
313
333
  <span class="cline-any cline-neutral">&nbsp;</span>
314
- <span class="cline-any cline-yes">3x</span>
315
- <span class="cline-any cline-yes">1x</span>
334
+ <span class="cline-any cline-yes">6x</span>
335
+ <span class="cline-any cline-yes">4x</span>
336
+ <span class="cline-any cline-yes">4x</span>
316
337
  <span class="cline-any cline-neutral">&nbsp;</span>
338
+ <span class="cline-any cline-yes">4x</span>
339
+ <span class="cline-any cline-yes">4x</span>
317
340
  <span class="cline-any cline-neutral">&nbsp;</span>
341
+ <span class="cline-any cline-yes">2x</span>
318
342
  <span class="cline-any cline-yes">1x</span>
319
343
  <span class="cline-any cline-neutral">&nbsp;</span>
344
+ <span class="cline-any cline-yes">3x</span>
345
+ <span class="cline-any cline-yes">2x</span>
346
+ <span class="cline-any cline-yes">1x</span>
347
+ <span class="cline-any cline-neutral">&nbsp;</span>
348
+ <span class="cline-any cline-yes">3x</span>
349
+ <span class="cline-any cline-yes">1x</span>
350
+ <span class="cline-any cline-yes">3x</span>
351
+ <span class="cline-any cline-no">&nbsp;</span>
352
+ <span class="cline-any cline-yes">3x</span>
353
+ <span class="cline-any cline-no">&nbsp;</span>
354
+ <span class="cline-any cline-yes">3x</span>
355
+ <span class="cline-any cline-yes">4x</span>
356
+ <span class="cline-any cline-yes">3x</span>
320
357
  <span class="cline-any cline-neutral">&nbsp;</span>
358
+ <span class="cline-any cline-yes">4x</span>
321
359
  <span class="cline-any cline-yes">1x</span>
322
360
  <span class="cline-any cline-neutral">&nbsp;</span>
361
+ <span class="cline-any cline-yes">1x</span>
362
+ <span class="cline-any cline-yes">6x</span>
323
363
  <span class="cline-any cline-neutral">&nbsp;</span>
324
364
  <span class="cline-any cline-yes">3x</span>
325
365
  <span class="cline-any cline-yes">1x</span>
@@ -345,6 +385,11 @@
345
385
  &nbsp;
346
386
  /**
347
387
  * Get classification-specific recommendations
388
+ *
389
+ * @param classification - The identified type of file (e.g., 'barrel-export', 'utility-module').
390
+ * @param file - File path or identifier.
391
+ * @param issues - Initial list of issues to supplement.
392
+ * @returns Array of tailored recommendations.
348
393
  */
349
394
  export function getClassificationRecommendations(
350
395
  classification: FileClassification,
@@ -352,6 +397,12 @@ export function getClassificationRecommendations(
352
397
  issues: string[]
353
398
  ): string[] {
354
399
  switch (classification) {
400
+ case 'boilerplate-barrel':
401
+ return [
402
+ 'Redundant indirection detected (architectural theater)',
403
+ 'Remove this pass-through barrel export to reduce cognitive load',
404
+ 'Consider combining into meaningful domain exports if necessary',
405
+ ];
355
406
  case 'barrel-export':
356
407
  return [
357
408
  'Barrel export file detected - multiple domains are expected here',
@@ -397,6 +448,11 @@ export function getClassificationRecommendations(
397
448
  'Next.js App Router page detected - metadata/JSON-LD/component pattern is cohesive',
398
449
  'Multiple exports (metadata, faqJsonLd, default) serve single page purpose',
399
450
  ];
451
+ <span class="branch-10 cbranch-no" title="branch not covered" > case 'spoke-module':</span>
452
+ <span class="cstat-no" title="statement not covered" > return [</span>
453
+ 'Spoke module detected - intentional monorepo separation is good for modularity',
454
+ 'Ensure this spoke only exports what is necessary for the hub or other spokes',
455
+ ];
400
456
  case 'mixed-concerns':
401
457
  return [
402
458
  'Consider splitting this file by domain',
@@ -409,7 +465,11 @@ export function getClassificationRecommendations(
409
465
  }
410
466
  &nbsp;
411
467
  /**
412
- * Generate general context recommendations
468
+ * Generate general context recommendations based on cross-tool metrics and thresholds.
469
+ *
470
+ * @param metrics - Object containing context budget, depth, circular dependencies, cohesion, and fragmentation.
471
+ * @param thresholds - Configurable limits for each metric.
472
+ * @returns Object with recommendations array, issues array, and overall severity level.
413
473
  */
414
474
  export function getGeneralRecommendations(
415
475
  metrics: {
@@ -424,10 +484,10 @@ export function getGeneralRecommendations(
424
484
  maxDepth: number;
425
485
  minCohesion: number;
426
486
  maxFragmentation: number;
427
- }
428
- ): {
429
- recommendations: string[];
430
- issues: string[];
487
+ <span class="missing-if-branch" title="if path not taken" >I</span>}
488
+ ): {<span class="cstat-no" title="statement not covered" ></span>
489
+ re<span class="cstat-no" title="statement not covered" >commendations: string[];</span>
490
+ is<span class="cstat-no" title="statement not covered" >sues: string[];<span class="cstat-no" title="statement not covered" ></span></span>
431
491
  severity: any;
432
492
  } {
433
493
  const recommendations: string[] = [];
@@ -445,11 +505,11 @@ export function getGeneralRecommendations(
445
505
  }
446
506
  &nbsp;
447
507
  <span class="missing-if-branch" title="if path not taken" >I</span>if (metrics.importDepth &gt; thresholds.maxDepth) {
448
- <span class="cstat-no" title="statement not covered" > issues.push(`Deep import chain: ${metrics.importDepth} levels`);</span>
449
- <span class="cstat-no" title="statement not covered" > recommendations.push('Flatten the dependency graph by reducing nesting');</span>
508
+ issues.push(`Deep import chain: ${metrics.importDepth} levels`);
509
+ recommendations.push('Flatten the dependency graph by reducing nesting');
450
510
  <span class="cstat-no" title="statement not covered" > if (severity !== 'critical') <span class="cstat-no" title="statement not covered" >severity = 'major';</span></span>
451
- }
452
- &nbsp;
511
+ <span class="missing-if-branch" title="if path not taken" >I</span>}
512
+ <span class="cstat-no" title="statement not covered" ></span>
453
513
  if (metrics.circularDeps.length &gt; 0) {
454
514
  issues.push(
455
515
  `Circular dependencies detected: ${metrics.circularDeps.length}`
@@ -487,16 +547,16 @@ export function getGeneralRecommendations(
487
547
  <div class='footer quiet pad2 space-top1 center small'>
488
548
  Code coverage generated by
489
549
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
490
- at 2026-03-09T02:34:18.551Z
550
+ at 2026-03-21T12:52:37.698Z
491
551
  </div>
492
- <script src="prettify.js"></script>
552
+ <script src="../prettify.js"></script>
493
553
  <script>
494
554
  window.onload = function () {
495
555
  prettyPrint();
496
556
  };
497
557
  </script>
498
- <script src="sorter.js"></script>
499
- <script src="block-navigation.js"></script>
558
+ <script src="../sorter.js"></script>
559
+ <script src="../block-navigation.js"></script>
500
560
  </body>
501
561
  </html>
502
562