@aiready/core 0.23.1 → 0.23.3

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 (79) hide show
  1. package/dist/__tests__/parser-factory.test.d.ts +1 -1
  2. package/dist/__tests__/parser-factory.test.js +62 -50
  3. package/dist/__tests__/python-parser.test.d.ts +1 -1
  4. package/dist/__tests__/python-parser.test.js +111 -109
  5. package/dist/__tests__/scoring.test.d.ts +1 -1
  6. package/dist/__tests__/scoring.test.js +193 -176
  7. package/dist/chunk-3YI4IS3D.mjs +191 -173
  8. package/dist/chunk-5HIXDC3X.mjs +273 -251
  9. package/dist/chunk-5V3L53AE.mjs +805 -0
  10. package/dist/chunk-CKVKHN3G.mjs +228 -211
  11. package/dist/chunk-COHIBX3Q.mjs +213 -195
  12. package/dist/chunk-CWRCDSKZ.mjs +91 -82
  13. package/dist/chunk-D3D3NCRR.mjs +147 -129
  14. package/dist/chunk-HCFYP7UD.mjs +805 -0
  15. package/dist/chunk-HFLFBA6F.mjs +79 -72
  16. package/dist/chunk-HKSARRCD.mjs +66 -58
  17. package/dist/chunk-JJ5JL5FX.mjs +91 -82
  18. package/dist/chunk-KDSTXVLQ.mjs +724 -0
  19. package/dist/chunk-KI7XORTN.mjs +91 -82
  20. package/dist/chunk-LTMHFNFK.mjs +690 -0
  21. package/dist/chunk-LTNXTXRI.mjs +228 -211
  22. package/dist/chunk-M22BXHBR.mjs +805 -0
  23. package/dist/chunk-MH3A3LX6.mjs +200 -182
  24. package/dist/chunk-NGHT7JOG.mjs +697 -0
  25. package/dist/chunk-OQ6IGDXG.mjs +147 -129
  26. package/dist/chunk-QAFB3HXQ.mjs +181 -165
  27. package/dist/chunk-QQBKXHLU.mjs +678 -0
  28. package/dist/chunk-RDHYGES7.mjs +678 -0
  29. package/dist/chunk-SWTDBVYJ.mjs +228 -213
  30. package/dist/chunk-UIWL5JQB.mjs +79 -72
  31. package/dist/chunk-UQGI67WR.mjs +79 -72
  32. package/dist/chunk-UTZOO4XO.mjs +147 -131
  33. package/dist/chunk-X4F46I5L.mjs +213 -195
  34. package/dist/chunk-XKK7YHPX.mjs +204 -186
  35. package/dist/chunk-YCA4FTEK.mjs +190 -172
  36. package/dist/chunk-ZSZRRTJM.mjs +719 -0
  37. package/dist/client-BgmiMoil.d.mts +1344 -0
  38. package/dist/client-BgmiMoil.d.ts +1344 -0
  39. package/dist/client-BxGrPuuN.d.mts +1191 -0
  40. package/dist/client-BxGrPuuN.d.ts +1191 -0
  41. package/dist/client-D-cn9ydj.d.mts +1136 -0
  42. package/dist/client-D-cn9ydj.d.ts +1136 -0
  43. package/dist/client-D9seCH4K.d.mts +1334 -0
  44. package/dist/client-D9seCH4K.d.ts +1334 -0
  45. package/dist/client-DIXIh7rw.d.mts +1193 -0
  46. package/dist/client-DIXIh7rw.d.ts +1193 -0
  47. package/dist/client-DVHXWOHw.d.mts +1245 -0
  48. package/dist/client-DVHXWOHw.d.ts +1245 -0
  49. package/dist/client.d.mts +2 -1094
  50. package/dist/client.d.ts +2 -1094
  51. package/dist/client.js +23 -43
  52. package/dist/client.mjs +3 -25
  53. package/dist/index.d.mts +380 -108
  54. package/dist/index.d.ts +380 -108
  55. package/dist/index.js +609 -445
  56. package/dist/index.mjs +587 -429
  57. package/dist/parsers/parser-factory.d.ts +45 -45
  58. package/dist/parsers/parser-factory.js +86 -84
  59. package/dist/parsers/python-parser.d.ts +33 -28
  60. package/dist/parsers/python-parser.js +224 -222
  61. package/dist/parsers/typescript-parser.d.ts +15 -10
  62. package/dist/parsers/typescript-parser.js +223 -197
  63. package/dist/scoring.d.ts +59 -49
  64. package/dist/scoring.js +129 -127
  65. package/dist/types/language.d.ts +104 -93
  66. package/dist/types/language.js +23 -23
  67. package/dist/types.d.ts +105 -87
  68. package/dist/types.js +1 -1
  69. package/dist/utils/ast-parser.d.ts +42 -33
  70. package/dist/utils/ast-parser.js +159 -162
  71. package/dist/utils/cli-helpers.d.ts +27 -10
  72. package/dist/utils/cli-helpers.js +45 -43
  73. package/dist/utils/config.d.ts +8 -3
  74. package/dist/utils/config.js +67 -69
  75. package/dist/utils/file-scanner.d.ts +1 -1
  76. package/dist/utils/file-scanner.js +80 -76
  77. package/dist/utils/metrics.d.ts +1 -1
  78. package/dist/utils/metrics.js +2 -2
  79. package/package.json +2 -2
@@ -1,79 +1,79 @@
1
1
  // src/types/schema.ts
2
- import { z } from "zod";
2
+ import { z } from 'zod';
3
3
  var Severity = /* @__PURE__ */ ((Severity2) => {
4
- Severity2["Critical"] = "critical";
5
- Severity2["Major"] = "major";
6
- Severity2["Minor"] = "minor";
7
- Severity2["Info"] = "info";
4
+ Severity2['Critical'] = 'critical';
5
+ Severity2['Major'] = 'major';
6
+ Severity2['Minor'] = 'minor';
7
+ Severity2['Info'] = 'info';
8
8
  return Severity2;
9
9
  })(Severity || {});
10
10
  var SeveritySchema = z.nativeEnum(Severity);
11
11
  var ToolName = /* @__PURE__ */ ((ToolName2) => {
12
- ToolName2["PatternDetect"] = "pattern-detect";
13
- ToolName2["ContextAnalyzer"] = "context-analyzer";
14
- ToolName2["NamingConsistency"] = "naming-consistency";
15
- ToolName2["AiSignalClarity"] = "ai-signal-clarity";
16
- ToolName2["AgentGrounding"] = "agent-grounding";
17
- ToolName2["TestabilityIndex"] = "testability-index";
18
- ToolName2["DocDrift"] = "doc-drift";
19
- ToolName2["DependencyHealth"] = "dependency-health";
20
- ToolName2["ChangeAmplification"] = "change-amplification";
21
- ToolName2["CognitiveLoad"] = "cognitive-load";
22
- ToolName2["PatternEntropy"] = "pattern-entropy";
23
- ToolName2["ConceptCohesion"] = "concept-cohesion";
24
- ToolName2["SemanticDistance"] = "semantic-distance";
12
+ ToolName2['PatternDetect'] = 'pattern-detect';
13
+ ToolName2['ContextAnalyzer'] = 'context-analyzer';
14
+ ToolName2['NamingConsistency'] = 'naming-consistency';
15
+ ToolName2['AiSignalClarity'] = 'ai-signal-clarity';
16
+ ToolName2['AgentGrounding'] = 'agent-grounding';
17
+ ToolName2['TestabilityIndex'] = 'testability-index';
18
+ ToolName2['DocDrift'] = 'doc-drift';
19
+ ToolName2['DependencyHealth'] = 'dependency-health';
20
+ ToolName2['ChangeAmplification'] = 'change-amplification';
21
+ ToolName2['CognitiveLoad'] = 'cognitive-load';
22
+ ToolName2['PatternEntropy'] = 'pattern-entropy';
23
+ ToolName2['ConceptCohesion'] = 'concept-cohesion';
24
+ ToolName2['SemanticDistance'] = 'semantic-distance';
25
25
  return ToolName2;
26
26
  })(ToolName || {});
27
27
  var ToolNameSchema = z.nativeEnum(ToolName);
28
28
  var FRIENDLY_TOOL_NAMES = {
29
- ["pattern-detect" /* PatternDetect */]: "Semantic Duplicates",
30
- ["context-analyzer" /* ContextAnalyzer */]: "Context Fragmentation",
31
- ["naming-consistency" /* NamingConsistency */]: "Naming Consistency",
32
- ["ai-signal-clarity" /* AiSignalClarity */]: "AI Signal Clarity",
33
- ["agent-grounding" /* AgentGrounding */]: "Agent Grounding",
34
- ["testability-index" /* TestabilityIndex */]: "Testability Index",
35
- ["doc-drift" /* DocDrift */]: "Documentation Health",
36
- ["dependency-health" /* DependencyHealth */]: "Dependency Health",
37
- ["change-amplification" /* ChangeAmplification */]: "Change Amplification",
38
- ["cognitive-load" /* CognitiveLoad */]: "Cognitive Load",
39
- ["pattern-entropy" /* PatternEntropy */]: "Pattern Entropy",
40
- ["concept-cohesion" /* ConceptCohesion */]: "Concept Cohesion",
41
- ["semantic-distance" /* SemanticDistance */]: "Semantic Distance"
29
+ ['pattern-detect' /* PatternDetect */]: 'Semantic Duplicates',
30
+ ['context-analyzer' /* ContextAnalyzer */]: 'Context Fragmentation',
31
+ ['naming-consistency' /* NamingConsistency */]: 'Naming Consistency',
32
+ ['ai-signal-clarity' /* AiSignalClarity */]: 'AI Signal Clarity',
33
+ ['agent-grounding' /* AgentGrounding */]: 'Agent Grounding',
34
+ ['testability-index' /* TestabilityIndex */]: 'Testability Index',
35
+ ['doc-drift' /* DocDrift */]: 'Documentation Health',
36
+ ['dependency-health' /* DependencyHealth */]: 'Dependency Health',
37
+ ['change-amplification' /* ChangeAmplification */]: 'Change Amplification',
38
+ ['cognitive-load' /* CognitiveLoad */]: 'Cognitive Load',
39
+ ['pattern-entropy' /* PatternEntropy */]: 'Pattern Entropy',
40
+ ['concept-cohesion' /* ConceptCohesion */]: 'Concept Cohesion',
41
+ ['semantic-distance' /* SemanticDistance */]: 'Semantic Distance',
42
42
  };
43
43
  var IssueType = /* @__PURE__ */ ((IssueType2) => {
44
- IssueType2["DuplicatePattern"] = "duplicate-pattern";
45
- IssueType2["PatternInconsistency"] = "pattern-inconsistency";
46
- IssueType2["ContextFragmentation"] = "context-fragmentation";
47
- IssueType2["DependencyHealth"] = "dependency-health";
48
- IssueType2["CircularDependency"] = "circular-dependency";
49
- IssueType2["DocDrift"] = "doc-drift";
50
- IssueType2["NamingInconsistency"] = "naming-inconsistency";
51
- IssueType2["NamingQuality"] = "naming-quality";
52
- IssueType2["ArchitectureInconsistency"] = "architecture-inconsistency";
53
- IssueType2["DeadCode"] = "dead-code";
54
- IssueType2["MissingTypes"] = "missing-types";
55
- IssueType2["MagicLiteral"] = "magic-literal";
56
- IssueType2["BooleanTrap"] = "boolean-trap";
57
- IssueType2["AiSignalClarity"] = "ai-signal-clarity";
58
- IssueType2["LowTestability"] = "low-testability";
59
- IssueType2["AgentNavigationFailure"] = "agent-navigation-failure";
60
- IssueType2["AmbiguousApi"] = "ambiguous-api";
61
- IssueType2["ChangeAmplification"] = "change-amplification";
44
+ IssueType2['DuplicatePattern'] = 'duplicate-pattern';
45
+ IssueType2['PatternInconsistency'] = 'pattern-inconsistency';
46
+ IssueType2['ContextFragmentation'] = 'context-fragmentation';
47
+ IssueType2['DependencyHealth'] = 'dependency-health';
48
+ IssueType2['CircularDependency'] = 'circular-dependency';
49
+ IssueType2['DocDrift'] = 'doc-drift';
50
+ IssueType2['NamingInconsistency'] = 'naming-inconsistency';
51
+ IssueType2['NamingQuality'] = 'naming-quality';
52
+ IssueType2['ArchitectureInconsistency'] = 'architecture-inconsistency';
53
+ IssueType2['DeadCode'] = 'dead-code';
54
+ IssueType2['MissingTypes'] = 'missing-types';
55
+ IssueType2['MagicLiteral'] = 'magic-literal';
56
+ IssueType2['BooleanTrap'] = 'boolean-trap';
57
+ IssueType2['AiSignalClarity'] = 'ai-signal-clarity';
58
+ IssueType2['LowTestability'] = 'low-testability';
59
+ IssueType2['AgentNavigationFailure'] = 'agent-navigation-failure';
60
+ IssueType2['AmbiguousApi'] = 'ambiguous-api';
61
+ IssueType2['ChangeAmplification'] = 'change-amplification';
62
62
  return IssueType2;
63
63
  })(IssueType || {});
64
64
  var IssueTypeSchema = z.nativeEnum(IssueType);
65
65
  var AnalysisStatus = /* @__PURE__ */ ((AnalysisStatus2) => {
66
- AnalysisStatus2["Processing"] = "processing";
67
- AnalysisStatus2["Completed"] = "completed";
68
- AnalysisStatus2["Failed"] = "failed";
66
+ AnalysisStatus2['Processing'] = 'processing';
67
+ AnalysisStatus2['Completed'] = 'completed';
68
+ AnalysisStatus2['Failed'] = 'failed';
69
69
  return AnalysisStatus2;
70
70
  })(AnalysisStatus || {});
71
71
  var AnalysisStatusSchema = z.nativeEnum(AnalysisStatus);
72
72
  var ModelTier = /* @__PURE__ */ ((ModelTier2) => {
73
- ModelTier2["Compact"] = "compact";
74
- ModelTier2["Standard"] = "standard";
75
- ModelTier2["Extended"] = "extended";
76
- ModelTier2["Frontier"] = "frontier";
73
+ ModelTier2['Compact'] = 'compact';
74
+ ModelTier2['Standard'] = 'standard';
75
+ ModelTier2['Extended'] = 'extended';
76
+ ModelTier2['Frontier'] = 'frontier';
77
77
  return ModelTier2;
78
78
  })(ModelTier || {});
79
79
  var ModelTierSchema = z.nativeEnum(ModelTier);
@@ -82,14 +82,14 @@ var LocationSchema = z.object({
82
82
  line: z.number(),
83
83
  column: z.number().optional(),
84
84
  endLine: z.number().optional(),
85
- endColumn: z.number().optional()
85
+ endColumn: z.number().optional(),
86
86
  });
87
87
  var IssueSchema = z.object({
88
88
  type: IssueTypeSchema,
89
89
  severity: SeveritySchema,
90
90
  message: z.string(),
91
91
  location: LocationSchema,
92
- suggestion: z.string().optional()
92
+ suggestion: z.string().optional(),
93
93
  });
94
94
  var MetricsSchema = z.object({
95
95
  tokenCost: z.number().optional(),
@@ -109,135 +109,146 @@ var MetricsSchema = z.object({
109
109
  comprehensionDifficultyIndex: z.number().optional(),
110
110
  // Extended metrics for specific spokes
111
111
  totalSymbols: z.number().optional(),
112
- totalExports: z.number().optional()
112
+ totalExports: z.number().optional(),
113
113
  });
114
114
  var AnalysisResultSchema = z.object({
115
115
  fileName: z.string(),
116
116
  issues: z.array(IssueSchema),
117
- metrics: MetricsSchema
117
+ metrics: MetricsSchema,
118
118
  });
119
- var SpokeSummarySchema = z.object({
120
- totalFiles: z.number().optional(),
121
- totalIssues: z.number().optional(),
122
- criticalIssues: z.number().optional(),
123
- majorIssues: z.number().optional(),
124
- score: z.number().optional()
125
- }).catchall(z.any());
119
+ var SpokeSummarySchema = z
120
+ .object({
121
+ totalFiles: z.number().optional(),
122
+ totalIssues: z.number().optional(),
123
+ criticalIssues: z.number().optional(),
124
+ majorIssues: z.number().optional(),
125
+ score: z.number().optional(),
126
+ })
127
+ .catchall(z.any());
126
128
  var SpokeOutputSchema = z.object({
127
129
  results: z.array(AnalysisResultSchema),
128
130
  summary: SpokeSummarySchema,
129
- metadata: z.object({
130
- toolName: z.string(),
131
- version: z.string().optional(),
132
- timestamp: z.string().optional(),
133
- config: z.any().optional()
134
- }).catchall(z.any()).optional()
131
+ metadata: z
132
+ .object({
133
+ toolName: z.string(),
134
+ version: z.string().optional(),
135
+ timestamp: z.string().optional(),
136
+ config: z.any().optional(),
137
+ })
138
+ .catchall(z.any())
139
+ .optional(),
135
140
  });
136
- var UnifiedReportSchema = z.object({
137
- summary: z.object({
138
- totalFiles: z.number(),
139
- totalIssues: z.number(),
140
- criticalIssues: z.number(),
141
- majorIssues: z.number()
142
- }),
143
- results: z.array(AnalysisResultSchema),
144
- scoring: z.object({
145
- overall: z.number(),
146
- rating: z.string(),
147
- timestamp: z.string(),
148
- breakdown: z.array(
149
- z.object({
150
- toolName: z.union([ToolNameSchema, z.string()]),
151
- score: z.number()
152
- }).catchall(z.any())
153
- )
154
- }).optional()
155
- }).catchall(z.any());
141
+ var UnifiedReportSchema = z
142
+ .object({
143
+ summary: z.object({
144
+ totalFiles: z.number(),
145
+ totalIssues: z.number(),
146
+ criticalIssues: z.number(),
147
+ majorIssues: z.number(),
148
+ }),
149
+ results: z.array(AnalysisResultSchema),
150
+ scoring: z
151
+ .object({
152
+ overall: z.number(),
153
+ rating: z.string(),
154
+ timestamp: z.string(),
155
+ breakdown: z.array(
156
+ z
157
+ .object({
158
+ toolName: z.union([ToolNameSchema, z.string()]),
159
+ score: z.number(),
160
+ })
161
+ .catchall(z.any())
162
+ ),
163
+ })
164
+ .optional(),
165
+ })
166
+ .catchall(z.any());
156
167
 
157
168
  // src/types.ts
158
169
  var GLOBAL_SCAN_OPTIONS = [
159
- "rootDir",
160
- "tools",
161
- "toolConfigs",
162
- "include",
163
- "exclude",
164
- "onProgress",
165
- "progressCallback",
166
- "includeTests",
167
- "useSmartDefaults",
168
- "maxDepth",
169
- "streamResults",
170
- "batchSize",
171
- "costConfig"
170
+ 'rootDir',
171
+ 'tools',
172
+ 'toolConfigs',
173
+ 'include',
174
+ 'exclude',
175
+ 'onProgress',
176
+ 'progressCallback',
177
+ 'includeTests',
178
+ 'useSmartDefaults',
179
+ 'maxDepth',
180
+ 'streamResults',
181
+ 'batchSize',
182
+ 'costConfig',
172
183
  ];
173
184
 
174
185
  // src/types/language.ts
175
186
  var Language = /* @__PURE__ */ ((Language2) => {
176
- Language2["TypeScript"] = "typescript";
177
- Language2["JavaScript"] = "javascript";
178
- Language2["Python"] = "python";
179
- Language2["Java"] = "java";
180
- Language2["Go"] = "go";
181
- Language2["Rust"] = "rust";
182
- Language2["CSharp"] = "csharp";
187
+ Language2['TypeScript'] = 'typescript';
188
+ Language2['JavaScript'] = 'javascript';
189
+ Language2['Python'] = 'python';
190
+ Language2['Java'] = 'java';
191
+ Language2['Go'] = 'go';
192
+ Language2['Rust'] = 'rust';
193
+ Language2['CSharp'] = 'csharp';
183
194
  return Language2;
184
195
  })(Language || {});
185
196
  var LANGUAGE_EXTENSIONS = {
186
- ".ts": "typescript" /* TypeScript */,
187
- ".tsx": "typescript" /* TypeScript */,
188
- ".js": "javascript" /* JavaScript */,
189
- ".jsx": "javascript" /* JavaScript */,
190
- ".py": "python" /* Python */,
191
- ".java": "java" /* Java */,
192
- ".go": "go" /* Go */,
193
- ".rs": "rust" /* Rust */,
194
- ".cs": "csharp" /* CSharp */
197
+ '.ts': 'typescript' /* TypeScript */,
198
+ '.tsx': 'typescript' /* TypeScript */,
199
+ '.js': 'javascript' /* JavaScript */,
200
+ '.jsx': 'javascript' /* JavaScript */,
201
+ '.py': 'python' /* Python */,
202
+ '.java': 'java' /* Java */,
203
+ '.go': 'go' /* Go */,
204
+ '.rs': 'rust' /* Rust */,
205
+ '.cs': 'csharp' /* CSharp */,
195
206
  };
196
207
  var ParseError = class extends Error {
197
208
  constructor(message, filePath, loc) {
198
209
  super(message);
199
210
  this.filePath = filePath;
200
211
  this.loc = loc;
201
- this.name = "ParseError";
212
+ this.name = 'ParseError';
202
213
  }
203
214
  };
204
215
 
205
216
  // src/scoring.ts
206
217
  var DEFAULT_TOOL_WEIGHTS = {
207
- ["pattern-detect" /* PatternDetect */]: 22,
208
- ["context-analyzer" /* ContextAnalyzer */]: 19,
209
- ["naming-consistency" /* NamingConsistency */]: 14,
210
- ["ai-signal-clarity" /* AiSignalClarity */]: 11,
211
- ["agent-grounding" /* AgentGrounding */]: 10,
212
- ["testability-index" /* TestabilityIndex */]: 10,
213
- ["doc-drift" /* DocDrift */]: 8,
214
- ["dependency-health" /* DependencyHealth */]: 6,
215
- ["change-amplification" /* ChangeAmplification */]: 8
218
+ ['pattern-detect' /* PatternDetect */]: 22,
219
+ ['context-analyzer' /* ContextAnalyzer */]: 19,
220
+ ['naming-consistency' /* NamingConsistency */]: 14,
221
+ ['ai-signal-clarity' /* AiSignalClarity */]: 11,
222
+ ['agent-grounding' /* AgentGrounding */]: 10,
223
+ ['testability-index' /* TestabilityIndex */]: 10,
224
+ ['doc-drift' /* DocDrift */]: 8,
225
+ ['dependency-health' /* DependencyHealth */]: 6,
226
+ ['change-amplification' /* ChangeAmplification */]: 8,
216
227
  };
217
228
  var TOOL_NAME_MAP = {
218
- patterns: "pattern-detect" /* PatternDetect */,
219
- "pattern-detect": "pattern-detect" /* PatternDetect */,
220
- context: "context-analyzer" /* ContextAnalyzer */,
221
- "context-analyzer": "context-analyzer" /* ContextAnalyzer */,
222
- consistency: "naming-consistency" /* NamingConsistency */,
223
- "naming-consistency": "naming-consistency" /* NamingConsistency */,
224
- "ai-signal": "ai-signal-clarity" /* AiSignalClarity */,
225
- "ai-signal-clarity": "ai-signal-clarity" /* AiSignalClarity */,
226
- grounding: "agent-grounding" /* AgentGrounding */,
227
- "agent-grounding": "agent-grounding" /* AgentGrounding */,
228
- testability: "testability-index" /* TestabilityIndex */,
229
- "testability-index": "testability-index" /* TestabilityIndex */,
230
- "doc-drift": "doc-drift" /* DocDrift */,
231
- "deps-health": "dependency-health" /* DependencyHealth */,
232
- "dependency-health": "dependency-health" /* DependencyHealth */,
233
- "change-amp": "change-amplification" /* ChangeAmplification */,
234
- "change-amplification": "change-amplification" /* ChangeAmplification */
229
+ patterns: 'pattern-detect' /* PatternDetect */,
230
+ 'pattern-detect': 'pattern-detect' /* PatternDetect */,
231
+ context: 'context-analyzer' /* ContextAnalyzer */,
232
+ 'context-analyzer': 'context-analyzer' /* ContextAnalyzer */,
233
+ consistency: 'naming-consistency' /* NamingConsistency */,
234
+ 'naming-consistency': 'naming-consistency' /* NamingConsistency */,
235
+ 'ai-signal': 'ai-signal-clarity' /* AiSignalClarity */,
236
+ 'ai-signal-clarity': 'ai-signal-clarity' /* AiSignalClarity */,
237
+ grounding: 'agent-grounding' /* AgentGrounding */,
238
+ 'agent-grounding': 'agent-grounding' /* AgentGrounding */,
239
+ testability: 'testability-index' /* TestabilityIndex */,
240
+ 'testability-index': 'testability-index' /* TestabilityIndex */,
241
+ 'doc-drift': 'doc-drift' /* DocDrift */,
242
+ 'deps-health': 'dependency-health' /* DependencyHealth */,
243
+ 'dependency-health': 'dependency-health' /* DependencyHealth */,
244
+ 'change-amp': 'change-amplification' /* ChangeAmplification */,
245
+ 'change-amplification': 'change-amplification' /* ChangeAmplification */,
235
246
  };
236
247
  var CONTEXT_TIER_THRESHOLDS = {
237
248
  compact: { idealTokens: 3e3, criticalTokens: 1e4, idealDepth: 4 },
238
249
  standard: { idealTokens: 5e3, criticalTokens: 15e3, idealDepth: 5 },
239
250
  extended: { idealTokens: 15e3, criticalTokens: 5e4, idealDepth: 7 },
240
- frontier: { idealTokens: 5e4, criticalTokens: 15e4, idealDepth: 10 }
251
+ frontier: { idealTokens: 5e4, criticalTokens: 15e4, idealDepth: 10 },
241
252
  };
242
253
  var SIZE_ADJUSTED_THRESHOLDS = {
243
254
  xs: 80,
@@ -248,20 +259,21 @@ var SIZE_ADJUSTED_THRESHOLDS = {
248
259
  // 200-500 files
249
260
  large: 65,
250
261
  // 500-2000 files
251
- enterprise: 58
262
+ enterprise: 58,
252
263
  // 2000+ files
253
264
  };
254
265
  function getProjectSizeTier(fileCount) {
255
- if (fileCount < 50) return "xs";
256
- if (fileCount < 200) return "small";
257
- if (fileCount < 500) return "medium";
258
- if (fileCount < 2e3) return "large";
259
- return "enterprise";
266
+ if (fileCount < 50) return 'xs';
267
+ if (fileCount < 200) return 'small';
268
+ if (fileCount < 500) return 'medium';
269
+ if (fileCount < 2e3) return 'large';
270
+ return 'enterprise';
260
271
  }
261
- function getRecommendedThreshold(fileCount, modelTier = "standard") {
272
+ function getRecommendedThreshold(fileCount, modelTier = 'standard') {
262
273
  const sizeTier = getProjectSizeTier(fileCount);
263
274
  const base = SIZE_ADJUSTED_THRESHOLDS[sizeTier];
264
- const modelBonus = modelTier === "frontier" ? -3 : modelTier === "extended" ? -2 : 0;
275
+ const modelBonus =
276
+ modelTier === 'frontier' ? -3 : modelTier === 'extended' ? -2 : 0;
265
277
  return base + modelBonus;
266
278
  }
267
279
  function normalizeToolName(shortName) {
@@ -275,9 +287,9 @@ function getToolWeight(toolName, toolConfig, cliOverride) {
275
287
  function parseWeightString(weightStr) {
276
288
  const weights = /* @__PURE__ */ new Map();
277
289
  if (!weightStr) return weights;
278
- const pairs = weightStr.split(",");
290
+ const pairs = weightStr.split(',');
279
291
  for (const pair of pairs) {
280
- const [toolShortName, weightStr2] = pair.split(":");
292
+ const [toolShortName, weightStr2] = pair.split(':');
281
293
  if (toolShortName && weightStr2) {
282
294
  const toolName = normalizeToolName(toolShortName.trim());
283
295
  const weight = parseInt(weightStr2.trim(), 10);
@@ -290,13 +302,14 @@ function parseWeightString(weightStr) {
290
302
  }
291
303
  function calculateOverallScore(toolOutputs, config, cliWeights) {
292
304
  if (toolOutputs.size === 0) {
293
- throw new Error("No tool outputs provided for scoring");
305
+ throw new Error('No tool outputs provided for scoring');
294
306
  }
295
307
  const weights = /* @__PURE__ */ new Map();
296
308
  for (const [toolName] of toolOutputs.entries()) {
297
309
  const cliWeight = cliWeights?.get(toolName);
298
310
  const configWeight = config?.tools?.[toolName]?.scoreWeight;
299
- const weight = cliWeight ?? configWeight ?? DEFAULT_TOOL_WEIGHTS[toolName] ?? 5;
311
+ const weight =
312
+ cliWeight ?? configWeight ?? DEFAULT_TOOL_WEIGHTS[toolName] ?? 5;
300
313
  weights.set(toolName, weight);
301
314
  }
302
315
  let weightedSum = 0;
@@ -320,44 +333,44 @@ function calculateOverallScore(toolOutputs, config, cliWeights) {
320
333
  return `(${output.score} \xD7 ${w})`;
321
334
  }
322
335
  );
323
- const formulaStr = `[${formulaParts.join(" + ")}] / ${totalWeight} = ${overall}`;
336
+ const formulaStr = `[${formulaParts.join(' + ')}] / ${totalWeight} = ${overall}`;
324
337
  return {
325
338
  overall,
326
339
  rating,
327
- timestamp: (/* @__PURE__ */ new Date()).toISOString(),
340
+ timestamp: /* @__PURE__ */ new Date().toISOString(),
328
341
  toolsUsed,
329
342
  breakdown,
330
343
  calculation: {
331
344
  formula: formulaStr,
332
345
  weights: calculationWeights,
333
- normalized: formulaStr
334
- }
346
+ normalized: formulaStr,
347
+ },
335
348
  };
336
349
  }
337
350
  function getRating(score) {
338
- if (score >= 90) return "Excellent";
339
- if (score >= 75) return "Good";
340
- if (score >= 60) return "Fair";
341
- if (score >= 40) return "Needs Work";
342
- return "Critical";
351
+ if (score >= 90) return 'Excellent';
352
+ if (score >= 75) return 'Good';
353
+ if (score >= 60) return 'Fair';
354
+ if (score >= 40) return 'Needs Work';
355
+ return 'Critical';
343
356
  }
344
- function getRatingWithContext(score, fileCount, modelTier = "standard") {
357
+ function getRatingWithContext(score, fileCount, modelTier = 'standard') {
345
358
  const threshold = getRecommendedThreshold(fileCount, modelTier);
346
359
  const normalized = score - threshold + 70;
347
360
  return getRating(normalized);
348
361
  }
349
362
  function getRatingDisplay(rating) {
350
363
  switch (rating) {
351
- case "Excellent":
352
- return { emoji: "\u2705", color: "green" };
353
- case "Good":
354
- return { emoji: "\u{1F44D}", color: "blue" };
355
- case "Fair":
356
- return { emoji: "\u26A0\uFE0F", color: "yellow" };
357
- case "Needs Work":
358
- return { emoji: "\u{1F528}", color: "orange" };
359
- case "Critical":
360
- return { emoji: "\u274C", color: "red" };
364
+ case 'Excellent':
365
+ return { emoji: '\u2705', color: 'green' };
366
+ case 'Good':
367
+ return { emoji: '\u{1F44D}', color: 'blue' };
368
+ case 'Fair':
369
+ return { emoji: '\u26A0\uFE0F', color: 'yellow' };
370
+ case 'Needs Work':
371
+ return { emoji: '\u{1F528}', color: 'orange' };
372
+ case 'Critical':
373
+ return { emoji: '\u274C', color: 'red' };
361
374
  }
362
375
  }
363
376
  function formatScore(result) {
@@ -372,17 +385,22 @@ function formatToolScore(output) {
372
385
  result += ` Factors:
373
386
  `;
374
387
  output.factors.forEach((factor) => {
375
- const impactSign = factor.impact > 0 ? "+" : "";
388
+ const impactSign = factor.impact > 0 ? '+' : '';
376
389
  result += ` \u2022 ${factor.name}: ${impactSign}${factor.impact} - ${factor.description}
377
390
  `;
378
391
  });
379
- result += "\n";
392
+ result += '\n';
380
393
  }
381
394
  if (output.recommendations && output.recommendations.length > 0) {
382
395
  result += ` Recommendations:
383
396
  `;
384
397
  output.recommendations.forEach((rec, i) => {
385
- const priorityIcon = rec.priority === "high" ? "\u{1F534}" : rec.priority === "medium" ? "\u{1F7E1}" : "\u{1F535}";
398
+ const priorityIcon =
399
+ rec.priority === 'high'
400
+ ? '\u{1F534}'
401
+ : rec.priority === 'medium'
402
+ ? '\u{1F7E1}'
403
+ : '\u{1F535}';
386
404
  result += ` ${i + 1}. ${priorityIcon} ${rec.action}
387
405
  `;
388
406
  result += ` Impact: +${rec.estimatedImpact} points
@@ -597,5 +615,5 @@ export {
597
615
  getRatingDisplay,
598
616
  formatScore,
599
617
  formatToolScore,
600
- generateHTML
618
+ generateHTML,
601
619
  };