@aiready/core 0.23.2 → 0.23.4

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 -1098
  50. package/dist/client.d.ts +2 -1098
  51. package/dist/client.js +23 -43
  52. package/dist/client.mjs +3 -25
  53. package/dist/index.d.mts +329 -107
  54. package/dist/index.d.ts +329 -107
  55. package/dist/index.js +329 -340
  56. package/dist/index.mjs +305 -322
  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 +1 -1
@@ -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,118 +109,129 @@ 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/language.ts
158
169
  var Language = /* @__PURE__ */ ((Language2) => {
159
- Language2["TypeScript"] = "typescript";
160
- Language2["JavaScript"] = "javascript";
161
- Language2["Python"] = "python";
162
- Language2["Java"] = "java";
163
- Language2["Go"] = "go";
164
- Language2["Rust"] = "rust";
165
- Language2["CSharp"] = "csharp";
170
+ Language2['TypeScript'] = 'typescript';
171
+ Language2['JavaScript'] = 'javascript';
172
+ Language2['Python'] = 'python';
173
+ Language2['Java'] = 'java';
174
+ Language2['Go'] = 'go';
175
+ Language2['Rust'] = 'rust';
176
+ Language2['CSharp'] = 'csharp';
166
177
  return Language2;
167
178
  })(Language || {});
168
179
  var LANGUAGE_EXTENSIONS = {
169
- ".ts": "typescript" /* TypeScript */,
170
- ".tsx": "typescript" /* TypeScript */,
171
- ".js": "javascript" /* JavaScript */,
172
- ".jsx": "javascript" /* JavaScript */,
173
- ".py": "python" /* Python */,
174
- ".java": "java" /* Java */,
175
- ".go": "go" /* Go */,
176
- ".rs": "rust" /* Rust */,
177
- ".cs": "csharp" /* CSharp */
180
+ '.ts': 'typescript' /* TypeScript */,
181
+ '.tsx': 'typescript' /* TypeScript */,
182
+ '.js': 'javascript' /* JavaScript */,
183
+ '.jsx': 'javascript' /* JavaScript */,
184
+ '.py': 'python' /* Python */,
185
+ '.java': 'java' /* Java */,
186
+ '.go': 'go' /* Go */,
187
+ '.rs': 'rust' /* Rust */,
188
+ '.cs': 'csharp' /* CSharp */,
178
189
  };
179
190
  var ParseError = class extends Error {
180
191
  constructor(message, filePath, loc) {
181
192
  super(message);
182
193
  this.filePath = filePath;
183
194
  this.loc = loc;
184
- this.name = "ParseError";
195
+ this.name = 'ParseError';
185
196
  }
186
197
  };
187
198
 
188
199
  // src/scoring.ts
189
200
  var DEFAULT_TOOL_WEIGHTS = {
190
- ["pattern-detect" /* PatternDetect */]: 22,
191
- ["context-analyzer" /* ContextAnalyzer */]: 19,
192
- ["naming-consistency" /* NamingConsistency */]: 14,
193
- ["ai-signal-clarity" /* AiSignalClarity */]: 11,
194
- ["agent-grounding" /* AgentGrounding */]: 10,
195
- ["testability-index" /* TestabilityIndex */]: 10,
196
- ["doc-drift" /* DocDrift */]: 8,
197
- ["dependency-health" /* DependencyHealth */]: 6,
198
- ["change-amplification" /* ChangeAmplification */]: 8
201
+ ['pattern-detect' /* PatternDetect */]: 22,
202
+ ['context-analyzer' /* ContextAnalyzer */]: 19,
203
+ ['naming-consistency' /* NamingConsistency */]: 14,
204
+ ['ai-signal-clarity' /* AiSignalClarity */]: 11,
205
+ ['agent-grounding' /* AgentGrounding */]: 10,
206
+ ['testability-index' /* TestabilityIndex */]: 10,
207
+ ['doc-drift' /* DocDrift */]: 8,
208
+ ['dependency-health' /* DependencyHealth */]: 6,
209
+ ['change-amplification' /* ChangeAmplification */]: 8,
199
210
  };
200
211
  var TOOL_NAME_MAP = {
201
- patterns: "pattern-detect" /* PatternDetect */,
202
- "pattern-detect": "pattern-detect" /* PatternDetect */,
203
- context: "context-analyzer" /* ContextAnalyzer */,
204
- "context-analyzer": "context-analyzer" /* ContextAnalyzer */,
205
- consistency: "naming-consistency" /* NamingConsistency */,
206
- "naming-consistency": "naming-consistency" /* NamingConsistency */,
207
- "ai-signal": "ai-signal-clarity" /* AiSignalClarity */,
208
- "ai-signal-clarity": "ai-signal-clarity" /* AiSignalClarity */,
209
- grounding: "agent-grounding" /* AgentGrounding */,
210
- "agent-grounding": "agent-grounding" /* AgentGrounding */,
211
- testability: "testability-index" /* TestabilityIndex */,
212
- "testability-index": "testability-index" /* TestabilityIndex */,
213
- "doc-drift": "doc-drift" /* DocDrift */,
214
- "deps-health": "dependency-health" /* DependencyHealth */,
215
- "dependency-health": "dependency-health" /* DependencyHealth */,
216
- "change-amp": "change-amplification" /* ChangeAmplification */,
217
- "change-amplification": "change-amplification" /* ChangeAmplification */
212
+ patterns: 'pattern-detect' /* PatternDetect */,
213
+ 'pattern-detect': 'pattern-detect' /* PatternDetect */,
214
+ context: 'context-analyzer' /* ContextAnalyzer */,
215
+ 'context-analyzer': 'context-analyzer' /* ContextAnalyzer */,
216
+ consistency: 'naming-consistency' /* NamingConsistency */,
217
+ 'naming-consistency': 'naming-consistency' /* NamingConsistency */,
218
+ 'ai-signal': 'ai-signal-clarity' /* AiSignalClarity */,
219
+ 'ai-signal-clarity': 'ai-signal-clarity' /* AiSignalClarity */,
220
+ grounding: 'agent-grounding' /* AgentGrounding */,
221
+ 'agent-grounding': 'agent-grounding' /* AgentGrounding */,
222
+ testability: 'testability-index' /* TestabilityIndex */,
223
+ 'testability-index': 'testability-index' /* TestabilityIndex */,
224
+ 'doc-drift': 'doc-drift' /* DocDrift */,
225
+ 'deps-health': 'dependency-health' /* DependencyHealth */,
226
+ 'dependency-health': 'dependency-health' /* DependencyHealth */,
227
+ 'change-amp': 'change-amplification' /* ChangeAmplification */,
228
+ 'change-amplification': 'change-amplification' /* ChangeAmplification */,
218
229
  };
219
230
  var CONTEXT_TIER_THRESHOLDS = {
220
231
  compact: { idealTokens: 3e3, criticalTokens: 1e4, idealDepth: 4 },
221
232
  standard: { idealTokens: 5e3, criticalTokens: 15e3, idealDepth: 5 },
222
233
  extended: { idealTokens: 15e3, criticalTokens: 5e4, idealDepth: 7 },
223
- frontier: { idealTokens: 5e4, criticalTokens: 15e4, idealDepth: 10 }
234
+ frontier: { idealTokens: 5e4, criticalTokens: 15e4, idealDepth: 10 },
224
235
  };
225
236
  var SIZE_ADJUSTED_THRESHOLDS = {
226
237
  xs: 80,
@@ -231,20 +242,21 @@ var SIZE_ADJUSTED_THRESHOLDS = {
231
242
  // 200-500 files
232
243
  large: 65,
233
244
  // 500-2000 files
234
- enterprise: 58
245
+ enterprise: 58,
235
246
  // 2000+ files
236
247
  };
237
248
  function getProjectSizeTier(fileCount) {
238
- if (fileCount < 50) return "xs";
239
- if (fileCount < 200) return "small";
240
- if (fileCount < 500) return "medium";
241
- if (fileCount < 2e3) return "large";
242
- return "enterprise";
249
+ if (fileCount < 50) return 'xs';
250
+ if (fileCount < 200) return 'small';
251
+ if (fileCount < 500) return 'medium';
252
+ if (fileCount < 2e3) return 'large';
253
+ return 'enterprise';
243
254
  }
244
- function getRecommendedThreshold(fileCount, modelTier = "standard") {
255
+ function getRecommendedThreshold(fileCount, modelTier = 'standard') {
245
256
  const sizeTier = getProjectSizeTier(fileCount);
246
257
  const base = SIZE_ADJUSTED_THRESHOLDS[sizeTier];
247
- const modelBonus = modelTier === "frontier" ? -3 : modelTier === "extended" ? -2 : 0;
258
+ const modelBonus =
259
+ modelTier === 'frontier' ? -3 : modelTier === 'extended' ? -2 : 0;
248
260
  return base + modelBonus;
249
261
  }
250
262
  function normalizeToolName(shortName) {
@@ -258,9 +270,9 @@ function getToolWeight(toolName, toolConfig, cliOverride) {
258
270
  function parseWeightString(weightStr) {
259
271
  const weights = /* @__PURE__ */ new Map();
260
272
  if (!weightStr) return weights;
261
- const pairs = weightStr.split(",");
273
+ const pairs = weightStr.split(',');
262
274
  for (const pair of pairs) {
263
- const [toolShortName, weightStr2] = pair.split(":");
275
+ const [toolShortName, weightStr2] = pair.split(':');
264
276
  if (toolShortName && weightStr2) {
265
277
  const toolName = normalizeToolName(toolShortName.trim());
266
278
  const weight = parseInt(weightStr2.trim(), 10);
@@ -273,13 +285,14 @@ function parseWeightString(weightStr) {
273
285
  }
274
286
  function calculateOverallScore(toolOutputs, config, cliWeights) {
275
287
  if (toolOutputs.size === 0) {
276
- throw new Error("No tool outputs provided for scoring");
288
+ throw new Error('No tool outputs provided for scoring');
277
289
  }
278
290
  const weights = /* @__PURE__ */ new Map();
279
291
  for (const [toolName] of toolOutputs.entries()) {
280
292
  const cliWeight = cliWeights?.get(toolName);
281
293
  const configWeight = config?.tools?.[toolName]?.scoreWeight;
282
- const weight = cliWeight ?? configWeight ?? DEFAULT_TOOL_WEIGHTS[toolName] ?? 5;
294
+ const weight =
295
+ cliWeight ?? configWeight ?? DEFAULT_TOOL_WEIGHTS[toolName] ?? 5;
283
296
  weights.set(toolName, weight);
284
297
  }
285
298
  let weightedSum = 0;
@@ -303,44 +316,44 @@ function calculateOverallScore(toolOutputs, config, cliWeights) {
303
316
  return `(${output.score} \xD7 ${w})`;
304
317
  }
305
318
  );
306
- const formulaStr = `[${formulaParts.join(" + ")}] / ${totalWeight} = ${overall}`;
319
+ const formulaStr = `[${formulaParts.join(' + ')}] / ${totalWeight} = ${overall}`;
307
320
  return {
308
321
  overall,
309
322
  rating,
310
- timestamp: (/* @__PURE__ */ new Date()).toISOString(),
323
+ timestamp: /* @__PURE__ */ new Date().toISOString(),
311
324
  toolsUsed,
312
325
  breakdown,
313
326
  calculation: {
314
327
  formula: formulaStr,
315
328
  weights: calculationWeights,
316
- normalized: formulaStr
317
- }
329
+ normalized: formulaStr,
330
+ },
318
331
  };
319
332
  }
320
333
  function getRating(score) {
321
- if (score >= 90) return "Excellent";
322
- if (score >= 75) return "Good";
323
- if (score >= 60) return "Fair";
324
- if (score >= 40) return "Needs Work";
325
- return "Critical";
334
+ if (score >= 90) return 'Excellent';
335
+ if (score >= 75) return 'Good';
336
+ if (score >= 60) return 'Fair';
337
+ if (score >= 40) return 'Needs Work';
338
+ return 'Critical';
326
339
  }
327
- function getRatingWithContext(score, fileCount, modelTier = "standard") {
340
+ function getRatingWithContext(score, fileCount, modelTier = 'standard') {
328
341
  const threshold = getRecommendedThreshold(fileCount, modelTier);
329
342
  const normalized = score - threshold + 70;
330
343
  return getRating(normalized);
331
344
  }
332
345
  function getRatingDisplay(rating) {
333
346
  switch (rating) {
334
- case "Excellent":
335
- return { emoji: "\u2705", color: "green" };
336
- case "Good":
337
- return { emoji: "\u{1F44D}", color: "blue" };
338
- case "Fair":
339
- return { emoji: "\u26A0\uFE0F", color: "yellow" };
340
- case "Needs Work":
341
- return { emoji: "\u{1F528}", color: "orange" };
342
- case "Critical":
343
- return { emoji: "\u274C", color: "red" };
347
+ case 'Excellent':
348
+ return { emoji: '\u2705', color: 'green' };
349
+ case 'Good':
350
+ return { emoji: '\u{1F44D}', color: 'blue' };
351
+ case 'Fair':
352
+ return { emoji: '\u26A0\uFE0F', color: 'yellow' };
353
+ case 'Needs Work':
354
+ return { emoji: '\u{1F528}', color: 'orange' };
355
+ case 'Critical':
356
+ return { emoji: '\u274C', color: 'red' };
344
357
  }
345
358
  }
346
359
  function formatScore(result) {
@@ -355,17 +368,22 @@ function formatToolScore(output) {
355
368
  result += ` Factors:
356
369
  `;
357
370
  output.factors.forEach((factor) => {
358
- const impactSign = factor.impact > 0 ? "+" : "";
371
+ const impactSign = factor.impact > 0 ? '+' : '';
359
372
  result += ` \u2022 ${factor.name}: ${impactSign}${factor.impact} - ${factor.description}
360
373
  `;
361
374
  });
362
- result += "\n";
375
+ result += '\n';
363
376
  }
364
377
  if (output.recommendations && output.recommendations.length > 0) {
365
378
  result += ` Recommendations:
366
379
  `;
367
380
  output.recommendations.forEach((rec, i) => {
368
- const priorityIcon = rec.priority === "high" ? "\u{1F534}" : rec.priority === "medium" ? "\u{1F7E1}" : "\u{1F535}";
381
+ const priorityIcon =
382
+ rec.priority === 'high'
383
+ ? '\u{1F534}'
384
+ : rec.priority === 'medium'
385
+ ? '\u{1F7E1}'
386
+ : '\u{1F535}';
369
387
  result += ` ${i + 1}. ${priorityIcon} ${rec.action}
370
388
  `;
371
389
  result += ` Impact: +${rec.estimatedImpact} points
@@ -579,5 +597,5 @@ export {
579
597
  getRatingDisplay,
580
598
  formatScore,
581
599
  formatToolScore,
582
- generateHTML
600
+ generateHTML,
583
601
  };