@aiready/context-analyzer 0.21.26 → 0.21.27

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 (78) hide show
  1. package/.turbo/turbo-build.log +32 -25
  2. package/.turbo/turbo-test.log +51 -87
  3. package/coverage/clover.xml +392 -1878
  4. package/coverage/coverage-final.json +15 -19
  5. package/coverage/index.html +48 -63
  6. package/coverage/src/analyzers/index.html +21 -21
  7. package/coverage/src/analyzers/python-context.ts.html +96 -96
  8. package/coverage/src/ast-utils.ts.html +34 -109
  9. package/coverage/src/classifier.ts.html +104 -104
  10. package/coverage/src/classify/classification-patterns.ts.html +1 -1
  11. package/coverage/src/classify/file-classifiers.ts.html +1 -1
  12. package/coverage/src/classify/index.html +1 -1
  13. package/coverage/src/cluster-detector.ts.html +72 -72
  14. package/coverage/src/defaults.ts.html +1 -1
  15. package/coverage/src/graph-builder.ts.html +131 -131
  16. package/coverage/src/index.html +101 -116
  17. package/coverage/src/index.ts.html +2 -2
  18. package/coverage/src/issue-analyzer.ts.html +32 -83
  19. package/coverage/src/mapper.ts.html +20 -2
  20. package/coverage/src/metrics.ts.html +127 -130
  21. package/coverage/src/orchestrator.ts.html +13 -13
  22. package/coverage/src/provider.ts.html +19 -19
  23. package/coverage/src/remediation.ts.html +59 -59
  24. package/coverage/src/report/console-report.ts.html +2 -2
  25. package/coverage/src/report/html-report.ts.html +60 -84
  26. package/coverage/src/report/index.html +7 -7
  27. package/coverage/src/report/interactive-setup.ts.html +1 -1
  28. package/coverage/src/scoring.ts.html +62 -62
  29. package/coverage/src/semantic/co-usage.ts.html +1 -1
  30. package/coverage/src/semantic/consolidation.ts.html +1 -1
  31. package/coverage/src/semantic/domain-inference.ts.html +1 -1
  32. package/coverage/src/semantic/index.html +1 -1
  33. package/coverage/src/semantic/type-graph.ts.html +1 -1
  34. package/coverage/src/summary.ts.html +67 -67
  35. package/coverage/src/types.ts.html +1 -1
  36. package/coverage/src/utils/dependency-graph-utils.ts.html +41 -41
  37. package/coverage/src/utils/index.html +21 -21
  38. package/coverage/src/utils/string-utils.ts.html +1 -1
  39. package/dist/chunk-22ZO4EKZ.mjs +1297 -0
  40. package/dist/chunk-4U4LDWGF.mjs +360 -0
  41. package/dist/chunk-BA7QGUHN.mjs +1722 -0
  42. package/dist/chunk-BCEZGRXI.mjs +1297 -0
  43. package/dist/chunk-BQCISA2F.mjs +91 -0
  44. package/dist/chunk-EMYD7NS6.mjs +137 -0
  45. package/dist/chunk-EWFR366Y.mjs +1740 -0
  46. package/dist/chunk-FO6YT6RG.mjs +1751 -0
  47. package/dist/chunk-J3SZQZNU.mjs +221 -0
  48. package/dist/chunk-OZE3FVZT.mjs +1089 -0
  49. package/dist/chunk-WHB7QI7N.mjs +91 -0
  50. package/dist/cli-action-CXIHOVAC.mjs +95 -0
  51. package/dist/cli-action-SA7SCYNV.mjs +95 -0
  52. package/dist/cli-action-YAJOJCXJ.mjs +95 -0
  53. package/dist/cli.js +688 -566
  54. package/dist/cli.mjs +4 -88
  55. package/dist/index.js +889 -773
  56. package/dist/index.mjs +21 -14
  57. package/dist/orchestrator-3L3NAZYP.mjs +10 -0
  58. package/dist/orchestrator-MONOZHVW.mjs +10 -0
  59. package/dist/orchestrator-ZR7JSKWI.mjs +10 -0
  60. package/dist/summary-7PZVW72O.mjs +7 -0
  61. package/dist/summary-LKUCJAIS.mjs +7 -0
  62. package/package.json +2 -2
  63. package/src/__tests__/analyzer.test.ts +1 -1
  64. package/src/__tests__/enhanced-cohesion.test.ts +4 -1
  65. package/src/__tests__/orchestrator.test.ts +19 -4
  66. package/src/__tests__/python-context.test.ts +6 -0
  67. package/src/__tests__/report/html-report.test.ts +8 -2
  68. package/src/ast-utils.ts +1 -26
  69. package/src/cli-definition.ts +4 -2
  70. package/src/issue-analyzer.ts +4 -19
  71. package/src/metrics.ts +1 -2
  72. package/src/provider.ts +4 -4
  73. package/src/report/html-report.ts +43 -59
  74. package/coverage/dist/chunk-64U3PNO3.mjs.html +0 -367
  75. package/coverage/dist/chunk-J3MUOWHC.mjs.html +0 -5326
  76. package/coverage/dist/index.html +0 -146
  77. package/coverage/dist/index.mjs.html +0 -1396
  78. package/coverage/src/analyzer.ts.html +0 -88
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">95.4% </span>
26
+ <span class="strong">85.71% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>187/196</span>
28
+ <span class='fraction'>66/77</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">78.72% </span>
33
+ <span class="strong">70.58% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>74/94</span>
35
+ <span class='fraction'>24/34</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">100% </span>
40
+ <span class="strong">91.66% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>25/25</span>
42
+ <span class='fraction'>11/12</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">97.29% </span>
47
+ <span class="strong">89.85% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>144/148</span>
49
+ <span class='fraction'>62/69</span>
50
50
  </div>
51
51
 
52
52
 
@@ -359,55 +359,55 @@
359
359
  <span class="cline-any cline-neutral">&nbsp;</span>
360
360
  <span class="cline-any cline-neutral">&nbsp;</span>
361
361
  <span class="cline-any cline-yes">29x</span>
362
- <span class="cline-any cline-yes">56x</span>
363
- <span class="cline-any cline-yes">22x</span>
364
- <span class="cline-any cline-yes">15x</span>
362
+ <span class="cline-any cline-neutral">&nbsp;</span>
363
+ <span class="cline-any cline-yes">11x</span>
364
+ <span class="cline-any cline-no">&nbsp;</span>
365
365
  <span class="cline-any cline-no">&nbsp;</span>
366
366
  <span class="cline-any cline-neutral">&nbsp;</span>
367
- <span class="cline-any cline-yes">16x</span>
368
- <span class="cline-any cline-yes">16x</span>
369
367
  <span class="cline-any cline-neutral">&nbsp;</span>
370
368
  <span class="cline-any cline-neutral">&nbsp;</span>
371
- <span class="cline-any cline-yes">16x</span>
372
369
  <span class="cline-any cline-neutral">&nbsp;</span>
373
370
  <span class="cline-any cline-neutral">&nbsp;</span>
374
- <span class="cline-any cline-yes">16x</span>
375
- <span class="cline-any cline-yes">27x</span>
376
- <span class="cline-any cline-yes">22x</span>
377
- <span class="cline-any cline-yes">33x</span>
371
+ <span class="cline-any cline-neutral">&nbsp;</span>
372
+ <span class="cline-any cline-neutral">&nbsp;</span>
373
+ <span class="cline-any cline-neutral">&nbsp;</span>
374
+ <span class="cline-any cline-neutral">&nbsp;</span>
375
+ <span class="cline-any cline-neutral">&nbsp;</span>
376
+ <span class="cline-any cline-neutral">&nbsp;</span>
377
+ <span class="cline-any cline-neutral">&nbsp;</span>
378
378
  <span class="cline-any cline-no">&nbsp;</span>
379
379
  <span class="cline-any cline-neutral">&nbsp;</span>
380
380
  <span class="cline-any cline-no">&nbsp;</span>
381
- <span class="cline-any cline-yes">2x</span>
382
- <span class="cline-any cline-yes">8x</span>
383
- <span class="cline-any cline-yes">8x</span>
381
+ <span class="cline-any cline-no">&nbsp;</span>
382
+ <span class="cline-any cline-neutral">&nbsp;</span>
383
+ <span class="cline-any cline-no">&nbsp;</span>
384
+ <span class="cline-any cline-neutral">&nbsp;</span>
384
385
  <span class="cline-any cline-neutral">&nbsp;</span>
385
386
  <span class="cline-any cline-neutral">&nbsp;</span>
386
- <span class="cline-any cline-yes">31x</span>
387
387
  <span class="cline-any cline-yes">11x</span>
388
388
  <span class="cline-any cline-yes">4x</span>
389
389
  <span class="cline-any cline-neutral">&nbsp;</span>
390
390
  <span class="cline-any cline-neutral">&nbsp;</span>
391
391
  <span class="cline-any cline-yes">18x</span>
392
392
  <span class="cline-any cline-yes">18x</span>
393
- <span class="cline-any cline-yes">16x</span>
394
393
  <span class="cline-any cline-neutral">&nbsp;</span>
395
- <span class="cline-any cline-yes">34x</span>
396
- <span class="cline-any cline-yes">32x</span>
397
- <span class="cline-any cline-yes">32x</span>
398
- <span class="cline-any cline-yes">50x</span>
399
- <span class="cline-any cline-yes">50x</span>
400
- <span class="cline-any cline-yes">59x</span>
401
- <span class="cline-any cline-yes">59x</span>
394
+ <span class="cline-any cline-neutral">&nbsp;</span>
395
+ <span class="cline-any cline-yes">18x</span>
396
+ <span class="cline-any cline-neutral">&nbsp;</span>
397
+ <span class="cline-any cline-neutral">&nbsp;</span>
398
+ <span class="cline-any cline-yes">18x</span>
399
+ <span class="cline-any cline-yes">18x</span>
400
+ <span class="cline-any cline-yes">27x</span>
401
+ <span class="cline-any cline-yes">27x</span>
402
402
  <span class="cline-any cline-neutral">&nbsp;</span>
403
403
  <span class="cline-any cline-neutral">&nbsp;</span>
404
404
  <span class="cline-any cline-neutral">&nbsp;</span>
405
- <span class="cline-any cline-yes">35x</span>
406
- <span class="cline-any cline-yes">44x</span>
407
- <span class="cline-any cline-yes">44x</span>
405
+ <span class="cline-any cline-yes">3x</span>
406
+ <span class="cline-any cline-yes">12x</span>
407
+ <span class="cline-any cline-yes">12x</span>
408
408
  <span class="cline-any cline-neutral">&nbsp;</span>
409
409
  <span class="cline-any cline-neutral">&nbsp;</span>
410
- <span class="cline-any cline-yes">35x</span>
410
+ <span class="cline-any cline-yes">3x</span>
411
411
  <span class="cline-any cline-neutral">&nbsp;</span>
412
412
  <span class="cline-any cline-neutral">&nbsp;</span>
413
413
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -415,38 +415,38 @@
415
415
  <span class="cline-any cline-neutral">&nbsp;</span>
416
416
  <span class="cline-any cline-neutral">&nbsp;</span>
417
417
  <span class="cline-any cline-neutral">&nbsp;</span>
418
- <span class="cline-any cline-yes">32x</span>
419
- <span class="cline-any cline-yes">68x</span>
420
- <span class="cline-any cline-yes">90x</span>
418
+ <span class="cline-any cline-neutral">&nbsp;</span>
419
+ <span class="cline-any cline-neutral">&nbsp;</span>
420
+ <span class="cline-any cline-yes">22x</span>
421
421
  <span class="cline-any cline-neutral">&nbsp;</span>
422
422
  <span class="cline-any cline-yes">22x</span>
423
- <span class="cline-any cline-yes">106x</span>
424
423
  <span class="cline-any cline-yes">38x</span>
425
- <span class="cline-any cline-yes">49x</span>
424
+ <span class="cline-any cline-yes">38x</span>
425
+ <span class="cline-any cline-neutral">&nbsp;</span>
426
+ <span class="cline-any cline-neutral">&nbsp;</span>
427
+ <span class="cline-any cline-neutral">&nbsp;</span>
428
+ <span class="cline-any cline-neutral">&nbsp;</span>
426
429
  <span class="cline-any cline-neutral">&nbsp;</span>
427
430
  <span class="cline-any cline-neutral">&nbsp;</span>
428
431
  <span class="cline-any cline-neutral">&nbsp;</span>
429
432
  <span class="cline-any cline-neutral">&nbsp;</span>
430
- <span class="cline-any cline-yes">54x</span>
431
433
  <span class="cline-any cline-neutral">&nbsp;</span>
432
434
  <span class="cline-any cline-neutral">&nbsp;</span>
433
435
  <span class="cline-any cline-neutral">&nbsp;</span>
434
436
  <span class="cline-any cline-neutral">&nbsp;</span>
435
437
  <span class="cline-any cline-neutral">&nbsp;</span>
436
438
  <span class="cline-any cline-neutral">&nbsp;</span>
437
- <span class="cline-any cline-yes">49x</span>
438
439
  <span class="cline-any cline-neutral">&nbsp;</span>
439
440
  <span class="cline-any cline-neutral">&nbsp;</span>
440
441
  <span class="cline-any cline-neutral">&nbsp;</span>
441
442
  <span class="cline-any cline-neutral">&nbsp;</span>
442
443
  <span class="cline-any cline-neutral">&nbsp;</span>
443
444
  <span class="cline-any cline-neutral">&nbsp;</span>
444
- <span class="cline-any cline-yes">33x</span>
445
445
  <span class="cline-any cline-yes">38x</span>
446
- <span class="cline-any cline-yes">91x</span>
447
- <span class="cline-any cline-yes">85x</span>
446
+ <span class="cline-any cline-yes">80x</span>
447
+ <span class="cline-any cline-yes">80x</span>
448
+ <span class="cline-any cline-neutral">&nbsp;</span>
448
449
  <span class="cline-any cline-neutral">&nbsp;</span>
449
- <span class="cline-any cline-yes">86x</span>
450
450
  <span class="cline-any cline-neutral">&nbsp;</span>
451
451
  <span class="cline-any cline-neutral">&nbsp;</span>
452
452
  <span class="cline-any cline-yes">12x</span>
@@ -456,71 +456,71 @@
456
456
  <span class="cline-any cline-neutral">&nbsp;</span>
457
457
  <span class="cline-any cline-yes">22x</span>
458
458
  <span class="cline-any cline-neutral">&nbsp;</span>
459
- <span class="cline-any cline-yes">17x</span>
460
- <span class="cline-any cline-yes">17x</span>
461
459
  <span class="cline-any cline-neutral">&nbsp;</span>
462
460
  <span class="cline-any cline-neutral">&nbsp;</span>
463
- <span class="cline-any cline-yes">17x</span>
464
461
  <span class="cline-any cline-neutral">&nbsp;</span>
465
- <span class="cline-any cline-yes">33x</span>
466
462
  <span class="cline-any cline-neutral">&nbsp;</span>
467
- <span class="cline-any cline-yes">17x</span>
468
463
  <span class="cline-any cline-neutral">&nbsp;</span>
469
- <span class="cline-any cline-yes">33x</span>
470
464
  <span class="cline-any cline-neutral">&nbsp;</span>
471
- <span class="cline-any cline-yes">40x</span>
472
- <span class="cline-any cline-yes">40x</span>
473
- <span class="cline-any cline-yes">27x</span>
474
- <span class="cline-any cline-yes">27x</span>
475
- <span class="cline-any cline-yes">40x</span>
476
- <span class="cline-any cline-yes">33x</span>
477
- <span class="cline-any cline-yes">56x</span>
478
465
  <span class="cline-any cline-neutral">&nbsp;</span>
479
- <span class="cline-any cline-yes">56x</span>
480
466
  <span class="cline-any cline-neutral">&nbsp;</span>
481
- <span class="cline-any cline-yes">72x</span>
482
467
  <span class="cline-any cline-neutral">&nbsp;</span>
483
468
  <span class="cline-any cline-neutral">&nbsp;</span>
484
- <span class="cline-any cline-yes">56x</span>
485
- <span class="cline-any cline-yes">46x</span>
486
- <span class="cline-any cline-yes">72x</span>
487
- <span class="cline-any cline-yes">56x</span>
488
- <span class="cline-any cline-yes">56x</span>
489
- <span class="cline-any cline-yes">56x</span>
490
469
  <span class="cline-any cline-neutral">&nbsp;</span>
491
- <span class="cline-any cline-yes">56x</span>
470
+ <span class="cline-any cline-neutral">&nbsp;</span>
471
+ <span class="cline-any cline-yes">23x</span>
472
+ <span class="cline-any cline-yes">23x</span>
473
+ <span class="cline-any cline-neutral">&nbsp;</span>
474
+ <span class="cline-any cline-neutral">&nbsp;</span>
475
+ <span class="cline-any cline-yes">23x</span>
476
+ <span class="cline-any cline-neutral">&nbsp;</span>
477
+ <span class="cline-any cline-yes">39x</span>
478
+ <span class="cline-any cline-neutral">&nbsp;</span>
479
+ <span class="cline-any cline-yes">23x</span>
480
+ <span class="cline-any cline-neutral">&nbsp;</span>
481
+ <span class="cline-any cline-yes">39x</span>
482
+ <span class="cline-any cline-neutral">&nbsp;</span>
483
+ <span class="cline-any cline-neutral">&nbsp;</span>
484
+ <span class="cline-any cline-yes">39x</span>
485
+ <span class="cline-any cline-yes">29x</span>
486
+ <span class="cline-any cline-yes">29x</span>
487
+ <span class="cline-any cline-neutral">&nbsp;</span>
488
+ <span class="cline-any cline-yes">39x</span>
489
+ <span class="cline-any cline-neutral">&nbsp;</span>
490
+ <span class="cline-any cline-neutral">&nbsp;</span>
491
+ <span class="cline-any cline-yes">39x</span>
492
+ <span class="cline-any cline-neutral">&nbsp;</span>
493
+ <span class="cline-any cline-neutral">&nbsp;</span>
492
494
  <span class="cline-any cline-neutral">&nbsp;</span>
493
495
  <span class="cline-any cline-neutral">&nbsp;</span>
494
496
  <span class="cline-any cline-neutral">&nbsp;</span>
495
497
  <span class="cline-any cline-neutral">&nbsp;</span>
496
- <span class="cline-any cline-yes">72x</span>
498
+ <span class="cline-any cline-yes">39x</span>
499
+ <span class="cline-any cline-yes">39x</span>
497
500
  <span class="cline-any cline-neutral">&nbsp;</span>
498
501
  <span class="cline-any cline-yes">39x</span>
499
- <span class="cline-any cline-yes">56x</span>
500
- <span class="cline-any cline-yes">40x</span>
501
- <span class="cline-any cline-yes">56x</span>
502
502
  <span class="cline-any cline-neutral">&nbsp;</span>
503
- <span class="cline-any cline-yes">56x</span>
504
- <span class="cline-any cline-yes">56x</span>
505
503
  <span class="cline-any cline-neutral">&nbsp;</span>
506
- <span class="cline-any cline-yes">17x</span>
507
- <span class="cline-any cline-yes">33x</span>
508
- <span class="cline-any cline-yes">72x</span>
509
504
  <span class="cline-any cline-neutral">&nbsp;</span>
510
505
  <span class="cline-any cline-neutral">&nbsp;</span>
511
- <span class="cline-any cline-yes">74x</span>
512
- <span class="cline-any cline-yes">74x</span>
513
- <span class="cline-any cline-yes">74x</span>
514
506
  <span class="cline-any cline-neutral">&nbsp;</span>
515
- <span class="cline-any cline-yes">56x</span>
516
- <span class="cline-any cline-yes">74x</span>
517
- <span class="cline-any cline-yes">51x</span>
507
+ <span class="cline-any cline-neutral">&nbsp;</span>
508
+ <span class="cline-any cline-yes">39x</span>
509
+ <span class="cline-any cline-neutral">&nbsp;</span>
510
+ <span class="cline-any cline-neutral">&nbsp;</span>
511
+ <span class="cline-any cline-yes">23x</span>
512
+ <span class="cline-any cline-yes">23x</span>
513
+ <span class="cline-any cline-yes">23x</span>
514
+ <span class="cline-any cline-neutral">&nbsp;</span>
515
+ <span class="cline-any cline-yes">23x</span>
516
+ <span class="cline-any cline-yes">23x</span>
517
+ <span class="cline-any cline-neutral">&nbsp;</span>
518
518
  <span class="cline-any cline-yes">23x</span>
519
519
  <span class="cline-any cline-yes">39x</span>
520
520
  <span class="cline-any cline-yes">57x</span>
521
521
  <span class="cline-any cline-neutral">&nbsp;</span>
522
522
  <span class="cline-any cline-neutral">&nbsp;</span>
523
- <span class="cline-any cline-yes">74x</span>
523
+ <span class="cline-any cline-neutral">&nbsp;</span>
524
524
  <span class="cline-any cline-neutral">&nbsp;</span>
525
525
  <span class="cline-any cline-neutral">&nbsp;</span>
526
526
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -532,23 +532,23 @@
532
532
  <span class="cline-any cline-neutral">&nbsp;</span>
533
533
  <span class="cline-any cline-neutral">&nbsp;</span>
534
534
  <span class="cline-any cline-neutral">&nbsp;</span>
535
- <span class="cline-any cline-yes">32x</span>
535
+ <span class="cline-any cline-yes">23x</span>
536
+ <span class="cline-any cline-neutral">&nbsp;</span>
537
+ <span class="cline-any cline-neutral">&nbsp;</span>
538
+ <span class="cline-any cline-neutral">&nbsp;</span>
539
+ <span class="cline-any cline-neutral">&nbsp;</span>
540
+ <span class="cline-any cline-neutral">&nbsp;</span>
541
+ <span class="cline-any cline-neutral">&nbsp;</span>
542
+ <span class="cline-any cline-neutral">&nbsp;</span>
543
+ <span class="cline-any cline-neutral">&nbsp;</span>
536
544
  <span class="cline-any cline-neutral">&nbsp;</span>
537
- <span class="cline-any cline-yes">8x</span>
538
- <span class="cline-any cline-yes">8x</span>
539
545
  <span class="cline-any cline-neutral">&nbsp;</span>
540
- <span class="cline-any cline-yes">5x</span>
541
- <span class="cline-any cline-yes">5x</span>
542
546
  <span class="cline-any cline-neutral">&nbsp;</span>
543
- <span class="cline-any cline-yes">5x</span>
544
- <span class="cline-any cline-yes">5x</span>
545
547
  <span class="cline-any cline-neutral">&nbsp;</span>
546
548
  <span class="cline-any cline-neutral">&nbsp;</span>
547
549
  <span class="cline-any cline-neutral">&nbsp;</span>
548
550
  <span class="cline-any cline-neutral">&nbsp;</span>
549
551
  <span class="cline-any cline-neutral">&nbsp;</span>
550
- <span class="cline-any cline-yes">5x</span>
551
- <span class="cline-any cline-yes">5x</span>
552
552
  <span class="cline-any cline-neutral">&nbsp;</span>
553
553
  <span class="cline-any cline-yes">10x</span>
554
554
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -559,19 +559,19 @@
559
559
  <span class="cline-any cline-neutral">&nbsp;</span>
560
560
  <span class="cline-any cline-neutral">&nbsp;</span>
561
561
  <span class="cline-any cline-neutral">&nbsp;</span>
562
- <span class="cline-any cline-yes">5x</span>
563
562
  <span class="cline-any cline-neutral">&nbsp;</span>
564
- <span class="cline-any cline-yes">5x</span>
565
- <span class="cline-any cline-yes">5x</span>
566
- <span class="cline-any cline-yes">5x</span>
567
563
  <span class="cline-any cline-neutral">&nbsp;</span>
568
- <span class="cline-any cline-yes">3x</span>
569
- <span class="cline-any cline-yes">17x</span>
570
- <span class="cline-any cline-yes">3x</span>
571
- <span class="cline-any cline-yes">3x</span>
572
564
  <span class="cline-any cline-neutral">&nbsp;</span>
573
565
  <span class="cline-any cline-neutral">&nbsp;</span>
574
- <span class="cline-any cline-yes">3x</span>
566
+ <span class="cline-any cline-neutral">&nbsp;</span>
567
+ <span class="cline-any cline-neutral">&nbsp;</span>
568
+ <span class="cline-any cline-neutral">&nbsp;</span>
569
+ <span class="cline-any cline-yes">14x</span>
570
+ <span class="cline-any cline-neutral">&nbsp;</span>
571
+ <span class="cline-any cline-neutral">&nbsp;</span>
572
+ <span class="cline-any cline-neutral">&nbsp;</span>
573
+ <span class="cline-any cline-neutral">&nbsp;</span>
574
+ <span class="cline-any cline-neutral">&nbsp;</span>
575
575
  <span class="cline-any cline-neutral">&nbsp;</span>
576
576
  <span class="cline-any cline-neutral">&nbsp;</span>
577
577
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -582,28 +582,28 @@
582
582
  <span class="cline-any cline-neutral">&nbsp;</span>
583
583
  <span class="cline-any cline-yes">7x</span>
584
584
  <span class="cline-any cline-yes">7x</span>
585
- <span class="cline-any cline-yes">1x</span>
585
+ <span class="cline-any cline-neutral">&nbsp;</span>
586
586
  <span class="cline-any cline-yes">7x</span>
587
- <span class="cline-any cline-yes">8x</span>
588
- <span class="cline-any cline-yes">1x</span>
589
587
  <span class="cline-any cline-yes">7x</span>
590
- <span class="cline-any cline-yes">3x</span>
591
- <span class="cline-any cline-yes">3x</span>
592
- <span class="cline-any cline-yes">8x</span>
593
- <span class="cline-any cline-yes">3x</span>
588
+ <span class="cline-any cline-neutral">&nbsp;</span>
589
+ <span class="cline-any cline-yes">7x</span>
590
+ <span class="cline-any cline-yes">2x</span>
591
+ <span class="cline-any cline-yes">2x</span>
592
+ <span class="cline-any cline-yes">2x</span>
593
+ <span class="cline-any cline-neutral">&nbsp;</span>
594
594
  <span class="cline-any cline-neutral">&nbsp;</span>
595
595
  <span class="cline-any cline-neutral">&nbsp;</span>
596
596
  <span class="cline-any cline-yes">7x</span>
597
- <span class="cline-any cline-yes">1x</span>
598
597
  <span class="cline-any cline-neutral">&nbsp;</span>
599
598
  <span class="cline-any cline-neutral">&nbsp;</span>
600
599
  <span class="cline-any cline-neutral">&nbsp;</span>
601
600
  <span class="cline-any cline-neutral">&nbsp;</span>
602
601
  <span class="cline-any cline-neutral">&nbsp;</span>
603
602
  <span class="cline-any cline-neutral">&nbsp;</span>
604
- <span class="cline-any cline-yes">2x</span>
605
- <span class="cline-any cline-yes">2x</span>
606
- <span class="cline-any cline-yes">10x</span>
603
+ <span class="cline-any cline-neutral">&nbsp;</span>
604
+ <span class="cline-any cline-neutral">&nbsp;</span>
605
+ <span class="cline-any cline-neutral">&nbsp;</span>
606
+ <span class="cline-any cline-yes">8x</span>
607
607
  <span class="cline-any cline-neutral">&nbsp;</span>
608
608
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { estimateTokens, parseFileExports, FileContent } from '@aiready/core';
609
609
  import { singularize } from './utils/string-utils';
@@ -632,14 +632,14 @@ function resolveImport(
632
632
  if (!source.startsWith('.') &amp;&amp; !source.startsWith('/')) {
633
633
  // Handle monorepo package imports (@aiready/*)
634
634
  <span class="missing-if-branch" title="if path not taken" >I</span>if (source.startsWith('@aiready/')) {
635
- const pkgName = source.split('/')[1];
635
+ const pkgName = <span class="cstat-no" title="statement not covered" >source.split('/')[1];</span>
636
636
  const possiblePaths = <span class="cstat-no" title="statement not covered" >[</span>
637
637
  // Standard src/index.ts entry point for our packages
638
638
  join('packages', pkgName, 'src', 'index.ts'),
639
639
  join('packages', pkgName, 'src', 'index.tsx'),
640
640
  // Support for sub-exports if needed (e.g. @aiready/core/client)
641
641
  join(
642
- <span class="missing-if-branch" title="if path not taken" >I</span> 'packages',<span class="cstat-no" title="statement not covered" ></span>
642
+ 'packages',
643
643
  pkgName,
644
644
  'src',
645
645
  `${source.split('/').slice(2).join('/') || 'index'}.ts`
@@ -648,10 +648,10 @@ function resolveImport(
648
648
  &nbsp;
649
649
  <span class="cstat-no" title="statement not covered" > for (const p of possiblePaths) {</span>
650
650
  // Find the absolute path that ends with this relative path
651
- const absolutePkgPath = <span class="cstat-no" title="statement not covered" >Array.from(allFiles).find((f) =&gt;</span>
652
- f.endsWith(normalize(p))
651
+ const absolutePkgPath = <span class="cstat-no" title="statement not covered" >Array.from(allFiles).find(<span class="fstat-no" title="function not covered" >(f</span>) =&gt;</span>
652
+ <span class="cstat-no" title="statement not covered" > f.endsWith(normalize(p))</span>
653
653
  );
654
- <span class="missing-if-branch" title="if path not taken" >I</span> <span class="missing-if-branch" title="if path not taken" >I</span>if (absolutePkgPath) retu<span class="cstat-no" title="statement not covered" >rn absolutePkgPath;</span>
654
+ <span class="cstat-no" title="statement not covered" > if (absolutePkgPath) <span class="cstat-no" title="statement not covered" >return absolutePkgPath;</span></span>
655
655
  }
656
656
  }
657
657
  &nbsp;
@@ -663,7 +663,7 @@ function resolveImport(
663
663
  const absolutePath = normalize(join(dir, source));
664
664
  &nbsp;
665
665
  // Try exact match
666
- <span class="missing-if-branch" title="if path not taken" >I</span>if (allFiles.has(absolutePath)) return absolutePath;
666
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (allFiles.has(absolutePath)) <span class="cstat-no" title="statement not covered" >return absolutePath;</span>
667
667
  &nbsp;
668
668
  // Try common extensions
669
669
  const extensions = ['.ts', '.tsx', '.js', '.jsx'];
@@ -675,7 +675,7 @@ function resolveImport(
675
675
  // Try directory index
676
676
  for (const ext of extensions) {
677
677
  const indexFile = normalize(join(absolutePath, `index${ext}`));
678
- <span class="missing-if-branch" title="if path not taken" >I</span>if (allFiles.has(indexFile)) return indexFile;
678
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (allFiles.has(indexFile)) <span class="cstat-no" title="statement not covered" >return indexFile;</span>
679
679
  }
680
680
  &nbsp;
681
681
  return null;
@@ -712,9 +712,9 @@ export function extractDomainKeywordsFromPaths(files: FileContent[]): string[] {
712
712
  'api',
713
713
  'apis',
714
714
  ]);
715
- <span class="missing-if-branch" title="if path not taken" >I</span>
716
- <span class="missing-if-branch" title="if path not taken" >I</span> for (const segment of segments) {
717
- <span class="missing-if-branch" title="if path not taken" >I</span> const normalized = segment.toLowerCase();
715
+ &nbsp;
716
+ for (const segment of segments) {
717
+ const normalized = segment.toLowerCase();
718
718
  if (
719
719
  normalized &amp;&amp;
720
720
  !skipFolders.has(normalized) &amp;&amp;
@@ -735,10 +735,10 @@ export function extractDomainKeywordsFromPaths(files: FileContent[]): string[] {
735
735
  * @param options - Optional configuration for domain detection.
736
736
  * @returns Complete dependency graph with nodes, edges, and semantic matrices.
737
737
  */
738
- export function buildDependencyGraph(
738
+ export async function buildDependencyGraph(
739
739
  files: FileContent[],
740
740
  options?: { domainKeywords?: string[] }
741
- ): DependencyGraph {
741
+ ): Promise&lt;DependencyGraph&gt; {
742
742
  const nodes = new Map&lt;string, DependencyNode&gt;();
743
743
  const edges = new Map&lt;string, Set&lt;string&gt;&gt;();
744
744
  &nbsp;
@@ -749,7 +749,7 @@ export function buildDependencyGraph(
749
749
  &nbsp;
750
750
  for (const { file, content } of files) {
751
751
  // 1. Get high-fidelity AST-based imports &amp; exports
752
- const { imports: astImports } = parseFileExports(content, file);
752
+ const { imports: astImports } = await parseFileExports(content, file);
753
753
  &nbsp;
754
754
  // 2. Resolve imports to absolute paths in the graph
755
755
  const resolvedImports = astImports
@@ -759,7 +759,7 @@ export function buildDependencyGraph(
759
759
  const importSources = astImports.map((i) =&gt; i.source);
760
760
  &nbsp;
761
761
  // 3. Wrap with platform-specific metadata (v0.11+)
762
- const exports = extractExportsWithAST(
762
+ const exports = await extractExportsWithAST(
763
763
  content,
764
764
  file,
765
765
  { domainKeywords: autoDetectedKeywords },
@@ -785,7 +785,7 @@ export function buildDependencyGraph(
785
785
  &nbsp;
786
786
  graph.coUsageMatrix = coUsageMatrix;
787
787
  graph.typeGraph = typeGraph;
788
- <span class="missing-if-branch" title="if path not taken" >I</span>
788
+ &nbsp;
789
789
  for (const [file, node] of nodes) {
790
790
  for (const exp of node.exports) {
791
791
  const semanticAssignments = inferDomainFromSemantics(
@@ -830,7 +830,7 @@ export function calculateImportDepth(
830
830
  * @param file - File path to analyze.
831
831
  * @param graph - The dependency graph.
832
832
  * @param visited - Optional set to track visited nodes.
833
- *<span class="missing-if-branch" title="if path not taken" >I</span> @returns Array of all <span class="cstat-no" title="statement not covered" >reachable file paths.</span>
833
+ * @returns Array of all reachable file paths.
834
834
  */
835
835
  export function getTransitiveDependencies(
836
836
  file: string,
@@ -853,14 +853,14 @@ export function calculateContextBudget(
853
853
  ): number {
854
854
  const node = graph.nodes.get(file);
855
855
  <span class="missing-if-branch" title="if path not taken" >I</span>if (!node) <span class="cstat-no" title="statement not covered" >return 0;</span>
856
- <span class="cstat-no" title="statement not covered" ><span class="missing-if-branch" title="if path not taken" >I</span></span>
856
+ &nbsp;
857
857
  let totalTokens = node.tokenCost;
858
858
  const deps = getTransitiveDependencies(file, graph);
859
859
  &nbsp;
860
860
  for (const dep of deps) {
861
861
  const depNode = graph.nodes.get(dep);
862
862
  <span class="missing-if-branch" title="else path not taken" >E</span>if (depNode) {
863
- <span class="missing-if-branch" title="else path not taken" >E</span> totalTokens += depNode.tokenCost;
863
+ totalTokens += depNode.tokenCost;
864
864
  }
865
865
  }
866
866
  &nbsp;
@@ -883,7 +883,7 @@ export function detectCircularDependencies(graph: DependencyGraph): string[][] {
883
883
  <div class='footer quiet pad2 space-top1 center small'>
884
884
  Code coverage generated by
885
885
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
886
- at 2026-03-21T12:52:37.698Z
886
+ at 2026-03-24T11:20:59.666Z
887
887
  </div>
888
888
  <script src="../prettify.js"></script>
889
889
  <script>