@aiready/context-analyzer 0.21.18 → 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 defaults.ts</title>
6
+ <title>Code coverage report for src/defaults.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> defaults.ts</h1>
22
+ <h1><a href="../index.html">All files</a> / <a href="index.html">src</a> defaults.ts</h1>
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">0% </span>
26
+ <span class="strong">100% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>0/22</span>
28
+ <span class='fraction'>22/22</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">0% </span>
33
+ <span class="strong">100% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>0/8</span>
35
+ <span class='fraction'>8/8</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">0% </span>
40
+ <span class="strong">100% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>0/1</span>
42
+ <span class='fraction'>1/1</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">0% </span>
47
+ <span class="strong">100% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>0/22</span>
49
+ <span class='fraction'>22/22</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 low'></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>
@@ -122,7 +122,10 @@
122
122
  <a name='L57'></a><a href='#L57'>57</a>
123
123
  <a name='L58'></a><a href='#L58'>58</a>
124
124
  <a name='L59'></a><a href='#L59'>59</a>
125
- <a name='L60'></a><a href='#L60'>60</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
125
+ <a name='L60'></a><a href='#L60'>60</a>
126
+ <a name='L61'></a><a href='#L61'>61</a>
127
+ <a name='L62'></a><a href='#L62'>62</a>
128
+ <a name='L63'></a><a href='#L63'>63</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
126
129
  <span class="cline-any cline-neutral">&nbsp;</span>
127
130
  <span class="cline-any cline-neutral">&nbsp;</span>
128
131
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -134,42 +137,45 @@
134
137
  <span class="cline-any cline-neutral">&nbsp;</span>
135
138
  <span class="cline-any cline-neutral">&nbsp;</span>
136
139
  <span class="cline-any cline-neutral">&nbsp;</span>
137
- <span class="cline-any cline-no">&nbsp;</span>
138
140
  <span class="cline-any cline-neutral">&nbsp;</span>
139
141
  <span class="cline-any cline-neutral">&nbsp;</span>
140
142
  <span class="cline-any cline-neutral">&nbsp;</span>
143
+ <span class="cline-any cline-yes">8x</span>
141
144
  <span class="cline-any cline-neutral">&nbsp;</span>
142
145
  <span class="cline-any cline-neutral">&nbsp;</span>
143
- <span class="cline-any cline-no">&nbsp;</span>
144
146
  <span class="cline-any cline-neutral">&nbsp;</span>
145
147
  <span class="cline-any cline-neutral">&nbsp;</span>
146
148
  <span class="cline-any cline-neutral">&nbsp;</span>
149
+ <span class="cline-any cline-yes">8x</span>
147
150
  <span class="cline-any cline-neutral">&nbsp;</span>
148
151
  <span class="cline-any cline-neutral">&nbsp;</span>
149
152
  <span class="cline-any cline-neutral">&nbsp;</span>
150
- <span class="cline-any cline-no">&nbsp;</span>
151
- <span class="cline-any cline-no">&nbsp;</span>
152
- <span class="cline-any cline-no">&nbsp;</span>
153
- <span class="cline-any cline-no">&nbsp;</span>
154
- <span class="cline-any cline-no">&nbsp;</span>
155
- <span class="cline-any cline-no">&nbsp;</span>
156
- <span class="cline-any cline-no">&nbsp;</span>
157
- <span class="cline-any cline-no">&nbsp;</span>
158
- <span class="cline-any cline-no">&nbsp;</span>
159
- <span class="cline-any cline-no">&nbsp;</span>
160
- <span class="cline-any cline-no">&nbsp;</span>
161
- <span class="cline-any cline-no">&nbsp;</span>
162
- <span class="cline-any cline-no">&nbsp;</span>
163
- <span class="cline-any cline-no">&nbsp;</span>
164
- <span class="cline-any cline-no">&nbsp;</span>
165
153
  <span class="cline-any cline-neutral">&nbsp;</span>
166
- <span class="cline-any cline-no">&nbsp;</span>
167
- <span class="cline-any cline-no">&nbsp;</span>
168
- <span class="cline-any cline-no">&nbsp;</span>
169
- <span class="cline-any cline-no">&nbsp;</span>
170
154
  <span class="cline-any cline-neutral">&nbsp;</span>
171
155
  <span class="cline-any cline-neutral">&nbsp;</span>
172
- <span class="cline-any cline-no">&nbsp;</span>
156
+ <span class="cline-any cline-yes">8x</span>
157
+ <span class="cline-any cline-yes">5x</span>
158
+ <span class="cline-any cline-yes">5x</span>
159
+ <span class="cline-any cline-yes">5x</span>
160
+ <span class="cline-any cline-yes">5x</span>
161
+ <span class="cline-any cline-yes">3x</span>
162
+ <span class="cline-any cline-yes">1x</span>
163
+ <span class="cline-any cline-yes">1x</span>
164
+ <span class="cline-any cline-yes">1x</span>
165
+ <span class="cline-any cline-yes">1x</span>
166
+ <span class="cline-any cline-yes">2x</span>
167
+ <span class="cline-any cline-yes">1x</span>
168
+ <span class="cline-any cline-yes">1x</span>
169
+ <span class="cline-any cline-yes">1x</span>
170
+ <span class="cline-any cline-yes">1x</span>
171
+ <span class="cline-any cline-neutral">&nbsp;</span>
172
+ <span class="cline-any cline-yes">1x</span>
173
+ <span class="cline-any cline-yes">1x</span>
174
+ <span class="cline-any cline-yes">1x</span>
175
+ <span class="cline-any cline-yes">1x</span>
176
+ <span class="cline-any cline-neutral">&nbsp;</span>
177
+ <span class="cline-any cline-neutral">&nbsp;</span>
178
+ <span class="cline-any cline-yes">8x</span>
173
179
  <span class="cline-any cline-neutral">&nbsp;</span>
174
180
  <span class="cline-any cline-neutral">&nbsp;</span>
175
181
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -187,48 +193,51 @@ import type { ContextAnalyzerOptions } from './types';
187
193
  /**
188
194
  * Generate smart defaults for context analysis based on repository size
189
195
  * Automatically tunes thresholds to target ~10 most serious issues
196
+ * @param directory - The root directory to analyze
197
+ * @param userOptions - Partial user-provided options to merge with defaults
198
+ * @returns Complete ContextAnalyzerOptions with smart defaults
190
199
  */
191
- export async function <span class="fstat-no" title="function not covered" >getSmartDefaults(</span>
200
+ export async function getSmartDefaults(
192
201
  directory: string,
193
202
  userOptions: Partial&lt;ContextAnalyzerOptions&gt;
194
203
  ): Promise&lt;ContextAnalyzerOptions&gt; {
195
204
  // Estimate repository size by scanning files
196
- const files = <span class="cstat-no" title="statement not covered" >await scanFiles({</span>
205
+ const files = await scanFiles({
197
206
  rootDir: directory,
198
207
  include: userOptions.include,
199
208
  exclude: userOptions.exclude,
200
209
  });
201
210
  &nbsp;
202
- const estimatedBlocks = <span class="cstat-no" title="statement not covered" >files.length;</span>
211
+ const estimatedBlocks = files.length;
203
212
  &nbsp;
204
213
  let maxDepth: number;
205
214
  let maxContextBudget: number;
206
215
  let minCohesion: number;
207
216
  let maxFragmentation: number;
208
217
  &nbsp;
209
- <span class="cstat-no" title="statement not covered" > if (estimatedBlocks &lt; 100) {</span>
210
- <span class="cstat-no" title="statement not covered" > maxDepth = 4;</span>
211
- <span class="cstat-no" title="statement not covered" > maxContextBudget = 8000;</span>
212
- <span class="cstat-no" title="statement not covered" > minCohesion = 0.5;</span>
213
- <span class="cstat-no" title="statement not covered" > maxFragmentation = 0.5;</span>
214
- <span class="cstat-no" title="statement not covered" > } else if (estimatedBlocks &lt; 500) {</span>
215
- <span class="cstat-no" title="statement not covered" > maxDepth = 5;</span>
216
- <span class="cstat-no" title="statement not covered" > maxContextBudget = 15000;</span>
217
- <span class="cstat-no" title="statement not covered" > minCohesion = 0.45;</span>
218
- <span class="cstat-no" title="statement not covered" > maxFragmentation = 0.6;</span>
219
- <span class="cstat-no" title="statement not covered" > } else if (estimatedBlocks &lt; 2000) {</span>
220
- <span class="cstat-no" title="statement not covered" > maxDepth = 7;</span>
221
- <span class="cstat-no" title="statement not covered" > maxContextBudget = 25000;</span>
222
- <span class="cstat-no" title="statement not covered" > minCohesion = 0.4;</span>
223
- <span class="cstat-no" title="statement not covered" > maxFragmentation = 0.7;</span>
218
+ if (estimatedBlocks &lt; 100) {
219
+ maxDepth = 5;
220
+ maxContextBudget = 8000;
221
+ minCohesion = 0.5;
222
+ maxFragmentation = 0.5;
223
+ } else if (estimatedBlocks &lt; 500) {
224
+ maxDepth = 6;
225
+ maxContextBudget = 15000;
226
+ minCohesion = 0.45;
227
+ maxFragmentation = 0.6;
228
+ } else if (estimatedBlocks &lt; 2000) {
229
+ maxDepth = 8;
230
+ maxContextBudget = 25000;
231
+ minCohesion = 0.4;
232
+ maxFragmentation = 0.7;
224
233
  } else {
225
- <span class="cstat-no" title="statement not covered" > maxDepth = 10;</span>
226
- <span class="cstat-no" title="statement not covered" > maxContextBudget = 40000;</span>
227
- <span class="cstat-no" title="statement not covered" > minCohesion = 0.35;</span>
228
- <span class="cstat-no" title="statement not covered" > maxFragmentation = 0.8;</span>
234
+ maxDepth = 12;
235
+ maxContextBudget = 40000;
236
+ minCohesion = 0.35;
237
+ maxFragmentation = 0.8;
229
238
  }
230
239
  &nbsp;
231
- <span class="cstat-no" title="statement not covered" > return {</span>
240
+ return {
232
241
  maxDepth,
233
242
  maxContextBudget,
234
243
  minCohesion,
@@ -247,16 +256,16 @@ export async function <span class="fstat-no" title="function not covered" >getSm
247
256
  <div class='footer quiet pad2 space-top1 center small'>
248
257
  Code coverage generated by
249
258
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
250
- at 2026-03-09T02:34:18.551Z
259
+ at 2026-03-21T12:52:37.698Z
251
260
  </div>
252
- <script src="prettify.js"></script>
261
+ <script src="../prettify.js"></script>
253
262
  <script>
254
263
  window.onload = function () {
255
264
  prettyPrint();
256
265
  };
257
266
  </script>
258
- <script src="sorter.js"></script>
259
- <script src="block-navigation.js"></script>
267
+ <script src="../sorter.js"></script>
268
+ <script src="../block-navigation.js"></script>
260
269
  </body>
261
270
  </html>
262
271