@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.
- package/dist/__tests__/parser-factory.test.d.ts +1 -1
- package/dist/__tests__/parser-factory.test.js +62 -50
- package/dist/__tests__/python-parser.test.d.ts +1 -1
- package/dist/__tests__/python-parser.test.js +111 -109
- package/dist/__tests__/scoring.test.d.ts +1 -1
- package/dist/__tests__/scoring.test.js +193 -176
- package/dist/chunk-3YI4IS3D.mjs +191 -173
- package/dist/chunk-5HIXDC3X.mjs +273 -251
- package/dist/chunk-5V3L53AE.mjs +805 -0
- package/dist/chunk-CKVKHN3G.mjs +228 -211
- package/dist/chunk-COHIBX3Q.mjs +213 -195
- package/dist/chunk-CWRCDSKZ.mjs +91 -82
- package/dist/chunk-D3D3NCRR.mjs +147 -129
- package/dist/chunk-HCFYP7UD.mjs +805 -0
- package/dist/chunk-HFLFBA6F.mjs +79 -72
- package/dist/chunk-HKSARRCD.mjs +66 -58
- package/dist/chunk-JJ5JL5FX.mjs +91 -82
- package/dist/chunk-KDSTXVLQ.mjs +724 -0
- package/dist/chunk-KI7XORTN.mjs +91 -82
- package/dist/chunk-LTMHFNFK.mjs +690 -0
- package/dist/chunk-LTNXTXRI.mjs +228 -211
- package/dist/chunk-M22BXHBR.mjs +805 -0
- package/dist/chunk-MH3A3LX6.mjs +200 -182
- package/dist/chunk-NGHT7JOG.mjs +697 -0
- package/dist/chunk-OQ6IGDXG.mjs +147 -129
- package/dist/chunk-QAFB3HXQ.mjs +181 -165
- package/dist/chunk-QQBKXHLU.mjs +678 -0
- package/dist/chunk-RDHYGES7.mjs +678 -0
- package/dist/chunk-SWTDBVYJ.mjs +228 -213
- package/dist/chunk-UIWL5JQB.mjs +79 -72
- package/dist/chunk-UQGI67WR.mjs +79 -72
- package/dist/chunk-UTZOO4XO.mjs +147 -131
- package/dist/chunk-X4F46I5L.mjs +213 -195
- package/dist/chunk-XKK7YHPX.mjs +204 -186
- package/dist/chunk-YCA4FTEK.mjs +190 -172
- package/dist/chunk-ZSZRRTJM.mjs +719 -0
- package/dist/client-BgmiMoil.d.mts +1344 -0
- package/dist/client-BgmiMoil.d.ts +1344 -0
- package/dist/client-BxGrPuuN.d.mts +1191 -0
- package/dist/client-BxGrPuuN.d.ts +1191 -0
- package/dist/client-D-cn9ydj.d.mts +1136 -0
- package/dist/client-D-cn9ydj.d.ts +1136 -0
- package/dist/client-D9seCH4K.d.mts +1334 -0
- package/dist/client-D9seCH4K.d.ts +1334 -0
- package/dist/client-DIXIh7rw.d.mts +1193 -0
- package/dist/client-DIXIh7rw.d.ts +1193 -0
- package/dist/client-DVHXWOHw.d.mts +1245 -0
- package/dist/client-DVHXWOHw.d.ts +1245 -0
- package/dist/client.d.mts +2 -1098
- package/dist/client.d.ts +2 -1098
- package/dist/client.js +23 -43
- package/dist/client.mjs +3 -25
- package/dist/index.d.mts +329 -107
- package/dist/index.d.ts +329 -107
- package/dist/index.js +329 -340
- package/dist/index.mjs +305 -322
- package/dist/parsers/parser-factory.d.ts +45 -45
- package/dist/parsers/parser-factory.js +86 -84
- package/dist/parsers/python-parser.d.ts +33 -28
- package/dist/parsers/python-parser.js +224 -222
- package/dist/parsers/typescript-parser.d.ts +15 -10
- package/dist/parsers/typescript-parser.js +223 -197
- package/dist/scoring.d.ts +59 -49
- package/dist/scoring.js +129 -127
- package/dist/types/language.d.ts +104 -93
- package/dist/types/language.js +23 -23
- package/dist/types.d.ts +105 -87
- package/dist/types.js +1 -1
- package/dist/utils/ast-parser.d.ts +42 -33
- package/dist/utils/ast-parser.js +159 -162
- package/dist/utils/cli-helpers.d.ts +27 -10
- package/dist/utils/cli-helpers.js +45 -43
- package/dist/utils/config.d.ts +8 -3
- package/dist/utils/config.js +67 -69
- package/dist/utils/file-scanner.d.ts +1 -1
- package/dist/utils/file-scanner.js +80 -76
- package/dist/utils/metrics.d.ts +1 -1
- package/dist/utils/metrics.js +2 -2
- package/package.json +1 -1
package/dist/chunk-SWTDBVYJ.mjs
CHANGED
|
@@ -1,79 +1,79 @@
|
|
|
1
1
|
// src/types/schema.ts
|
|
2
|
-
import { z } from
|
|
2
|
+
import { z } from 'zod';
|
|
3
3
|
var Severity = /* @__PURE__ */ ((Severity2) => {
|
|
4
|
-
Severity2[
|
|
5
|
-
Severity2[
|
|
6
|
-
Severity2[
|
|
7
|
-
Severity2[
|
|
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[
|
|
13
|
-
ToolName2[
|
|
14
|
-
ToolName2[
|
|
15
|
-
ToolName2[
|
|
16
|
-
ToolName2[
|
|
17
|
-
ToolName2[
|
|
18
|
-
ToolName2[
|
|
19
|
-
ToolName2[
|
|
20
|
-
ToolName2[
|
|
21
|
-
ToolName2[
|
|
22
|
-
ToolName2[
|
|
23
|
-
ToolName2[
|
|
24
|
-
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';
|
|
25
25
|
return ToolName2;
|
|
26
26
|
})(ToolName || {});
|
|
27
27
|
var ToolNameSchema = z.nativeEnum(ToolName);
|
|
28
28
|
var FRIENDLY_TOOL_NAMES = {
|
|
29
|
-
[
|
|
30
|
-
[
|
|
31
|
-
[
|
|
32
|
-
[
|
|
33
|
-
[
|
|
34
|
-
[
|
|
35
|
-
[
|
|
36
|
-
[
|
|
37
|
-
[
|
|
38
|
-
[
|
|
39
|
-
[
|
|
40
|
-
[
|
|
41
|
-
[
|
|
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[
|
|
45
|
-
IssueType2[
|
|
46
|
-
IssueType2[
|
|
47
|
-
IssueType2[
|
|
48
|
-
IssueType2[
|
|
49
|
-
IssueType2[
|
|
50
|
-
IssueType2[
|
|
51
|
-
IssueType2[
|
|
52
|
-
IssueType2[
|
|
53
|
-
IssueType2[
|
|
54
|
-
IssueType2[
|
|
55
|
-
IssueType2[
|
|
56
|
-
IssueType2[
|
|
57
|
-
IssueType2[
|
|
58
|
-
IssueType2[
|
|
59
|
-
IssueType2[
|
|
60
|
-
IssueType2[
|
|
61
|
-
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';
|
|
62
62
|
return IssueType2;
|
|
63
63
|
})(IssueType || {});
|
|
64
64
|
var IssueTypeSchema = z.nativeEnum(IssueType);
|
|
65
65
|
var AnalysisStatus = /* @__PURE__ */ ((AnalysisStatus2) => {
|
|
66
|
-
AnalysisStatus2[
|
|
67
|
-
AnalysisStatus2[
|
|
68
|
-
AnalysisStatus2[
|
|
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[
|
|
74
|
-
ModelTier2[
|
|
75
|
-
ModelTier2[
|
|
76
|
-
ModelTier2[
|
|
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,168 +109,181 @@ 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
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
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
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
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
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
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
|
+
businessImpact: z
|
|
149
|
+
.object({
|
|
150
|
+
estimatedMonthlyWaste: z.number().optional(),
|
|
151
|
+
potentialSavings: z.number().optional(),
|
|
152
|
+
productivityHours: z.number().optional(),
|
|
153
|
+
})
|
|
154
|
+
.optional(),
|
|
155
|
+
}),
|
|
156
|
+
results: z.array(AnalysisResultSchema),
|
|
157
|
+
scoring: z
|
|
158
|
+
.object({
|
|
159
|
+
overall: z.number(),
|
|
160
|
+
rating: z.string(),
|
|
161
|
+
timestamp: z.string(),
|
|
162
|
+
breakdown: z.array(
|
|
163
|
+
z
|
|
164
|
+
.object({
|
|
165
|
+
toolName: z.union([ToolNameSchema, z.string()]),
|
|
166
|
+
score: z.number(),
|
|
167
|
+
})
|
|
168
|
+
.catchall(z.any())
|
|
169
|
+
),
|
|
170
|
+
})
|
|
171
|
+
.optional(),
|
|
172
|
+
})
|
|
173
|
+
.catchall(z.any());
|
|
161
174
|
|
|
162
175
|
// src/types.ts
|
|
163
176
|
var GLOBAL_INFRA_OPTIONS = [
|
|
164
|
-
|
|
177
|
+
'rootDir',
|
|
165
178
|
// Essential for every tool
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
179
|
+
'include',
|
|
180
|
+
'exclude',
|
|
181
|
+
'onProgress',
|
|
182
|
+
'progressCallback',
|
|
183
|
+
'includeTests',
|
|
184
|
+
'useSmartDefaults',
|
|
185
|
+
'streamResults',
|
|
186
|
+
'batchSize',
|
|
187
|
+
'costConfig',
|
|
188
|
+
'tools',
|
|
189
|
+
'toolConfigs',
|
|
177
190
|
];
|
|
178
191
|
var COMMON_FINE_TUNING_OPTIONS = [
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
192
|
+
'maxDepth',
|
|
193
|
+
'minSimilarity',
|
|
194
|
+
'minLines',
|
|
195
|
+
'minCohesion',
|
|
183
196
|
// AI Signal Clarity options
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
197
|
+
'checkMagicLiterals',
|
|
198
|
+
'checkBooleanTraps',
|
|
199
|
+
'checkAmbiguousNames',
|
|
200
|
+
'checkUndocumentedExports',
|
|
201
|
+
'checkImplicitSideEffects',
|
|
202
|
+
'checkDeepCallbacks',
|
|
190
203
|
];
|
|
191
204
|
var GLOBAL_SCAN_OPTIONS = [...GLOBAL_INFRA_OPTIONS];
|
|
192
205
|
|
|
193
206
|
// src/types/language.ts
|
|
194
207
|
var Language = /* @__PURE__ */ ((Language2) => {
|
|
195
|
-
Language2[
|
|
196
|
-
Language2[
|
|
197
|
-
Language2[
|
|
198
|
-
Language2[
|
|
199
|
-
Language2[
|
|
200
|
-
Language2[
|
|
201
|
-
Language2[
|
|
208
|
+
Language2['TypeScript'] = 'typescript';
|
|
209
|
+
Language2['JavaScript'] = 'javascript';
|
|
210
|
+
Language2['Python'] = 'python';
|
|
211
|
+
Language2['Java'] = 'java';
|
|
212
|
+
Language2['Go'] = 'go';
|
|
213
|
+
Language2['Rust'] = 'rust';
|
|
214
|
+
Language2['CSharp'] = 'csharp';
|
|
202
215
|
return Language2;
|
|
203
216
|
})(Language || {});
|
|
204
217
|
var LANGUAGE_EXTENSIONS = {
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
218
|
+
'.ts': 'typescript' /* TypeScript */,
|
|
219
|
+
'.tsx': 'typescript' /* TypeScript */,
|
|
220
|
+
'.js': 'javascript' /* JavaScript */,
|
|
221
|
+
'.jsx': 'javascript' /* JavaScript */,
|
|
222
|
+
'.py': 'python' /* Python */,
|
|
223
|
+
'.java': 'java' /* Java */,
|
|
224
|
+
'.go': 'go' /* Go */,
|
|
225
|
+
'.rs': 'rust' /* Rust */,
|
|
226
|
+
'.cs': 'csharp' /* CSharp */,
|
|
214
227
|
};
|
|
215
228
|
var ParseError = class extends Error {
|
|
216
229
|
constructor(message, filePath, loc) {
|
|
217
230
|
super(message);
|
|
218
231
|
this.filePath = filePath;
|
|
219
232
|
this.loc = loc;
|
|
220
|
-
this.name =
|
|
233
|
+
this.name = 'ParseError';
|
|
221
234
|
}
|
|
222
235
|
};
|
|
223
236
|
|
|
224
237
|
// src/scoring.ts
|
|
225
238
|
var RecommendationPriority = /* @__PURE__ */ ((RecommendationPriority2) => {
|
|
226
|
-
RecommendationPriority2[
|
|
227
|
-
RecommendationPriority2[
|
|
228
|
-
RecommendationPriority2[
|
|
239
|
+
RecommendationPriority2['High'] = 'high';
|
|
240
|
+
RecommendationPriority2['Medium'] = 'medium';
|
|
241
|
+
RecommendationPriority2['Low'] = 'low';
|
|
229
242
|
return RecommendationPriority2;
|
|
230
243
|
})(RecommendationPriority || {});
|
|
231
244
|
var ReadinessRating = /* @__PURE__ */ ((ReadinessRating2) => {
|
|
232
|
-
ReadinessRating2[
|
|
233
|
-
ReadinessRating2[
|
|
234
|
-
ReadinessRating2[
|
|
235
|
-
ReadinessRating2[
|
|
236
|
-
ReadinessRating2[
|
|
245
|
+
ReadinessRating2['Excellent'] = 'Excellent';
|
|
246
|
+
ReadinessRating2['Good'] = 'Good';
|
|
247
|
+
ReadinessRating2['Fair'] = 'Fair';
|
|
248
|
+
ReadinessRating2['NeedsWork'] = 'Needs Work';
|
|
249
|
+
ReadinessRating2['Critical'] = 'Critical';
|
|
237
250
|
return ReadinessRating2;
|
|
238
251
|
})(ReadinessRating || {});
|
|
239
252
|
var DEFAULT_TOOL_WEIGHTS = {
|
|
240
|
-
[
|
|
241
|
-
[
|
|
242
|
-
[
|
|
243
|
-
[
|
|
244
|
-
[
|
|
245
|
-
[
|
|
246
|
-
[
|
|
247
|
-
[
|
|
248
|
-
[
|
|
253
|
+
['pattern-detect' /* PatternDetect */]: 22,
|
|
254
|
+
['context-analyzer' /* ContextAnalyzer */]: 19,
|
|
255
|
+
['naming-consistency' /* NamingConsistency */]: 14,
|
|
256
|
+
['ai-signal-clarity' /* AiSignalClarity */]: 11,
|
|
257
|
+
['agent-grounding' /* AgentGrounding */]: 10,
|
|
258
|
+
['testability-index' /* TestabilityIndex */]: 10,
|
|
259
|
+
['doc-drift' /* DocDrift */]: 8,
|
|
260
|
+
['dependency-health' /* DependencyHealth */]: 6,
|
|
261
|
+
['change-amplification' /* ChangeAmplification */]: 8,
|
|
249
262
|
};
|
|
250
263
|
var TOOL_NAME_MAP = {
|
|
251
|
-
patterns:
|
|
252
|
-
|
|
253
|
-
context:
|
|
254
|
-
|
|
255
|
-
consistency:
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
grounding:
|
|
260
|
-
|
|
261
|
-
testability:
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
264
|
+
patterns: 'pattern-detect' /* PatternDetect */,
|
|
265
|
+
'pattern-detect': 'pattern-detect' /* PatternDetect */,
|
|
266
|
+
context: 'context-analyzer' /* ContextAnalyzer */,
|
|
267
|
+
'context-analyzer': 'context-analyzer' /* ContextAnalyzer */,
|
|
268
|
+
consistency: 'naming-consistency' /* NamingConsistency */,
|
|
269
|
+
'naming-consistency': 'naming-consistency' /* NamingConsistency */,
|
|
270
|
+
'ai-signal': 'ai-signal-clarity' /* AiSignalClarity */,
|
|
271
|
+
'ai-signal-clarity': 'ai-signal-clarity' /* AiSignalClarity */,
|
|
272
|
+
grounding: 'agent-grounding' /* AgentGrounding */,
|
|
273
|
+
'agent-grounding': 'agent-grounding' /* AgentGrounding */,
|
|
274
|
+
testability: 'testability-index' /* TestabilityIndex */,
|
|
275
|
+
'testability-index': 'testability-index' /* TestabilityIndex */,
|
|
276
|
+
'doc-drift': 'doc-drift' /* DocDrift */,
|
|
277
|
+
'deps-health': 'dependency-health' /* DependencyHealth */,
|
|
278
|
+
'dependency-health': 'dependency-health' /* DependencyHealth */,
|
|
279
|
+
'change-amp': 'change-amplification' /* ChangeAmplification */,
|
|
280
|
+
'change-amplification': 'change-amplification' /* ChangeAmplification */,
|
|
268
281
|
};
|
|
269
282
|
var CONTEXT_TIER_THRESHOLDS = {
|
|
270
283
|
compact: { idealTokens: 3e3, criticalTokens: 1e4, idealDepth: 4 },
|
|
271
284
|
standard: { idealTokens: 5e3, criticalTokens: 15e3, idealDepth: 5 },
|
|
272
285
|
extended: { idealTokens: 15e3, criticalTokens: 5e4, idealDepth: 7 },
|
|
273
|
-
frontier: { idealTokens: 5e4, criticalTokens: 15e4, idealDepth: 10 }
|
|
286
|
+
frontier: { idealTokens: 5e4, criticalTokens: 15e4, idealDepth: 10 },
|
|
274
287
|
};
|
|
275
288
|
var SIZE_ADJUSTED_THRESHOLDS = {
|
|
276
289
|
xs: 80,
|
|
@@ -281,20 +294,21 @@ var SIZE_ADJUSTED_THRESHOLDS = {
|
|
|
281
294
|
// 200-500 files
|
|
282
295
|
large: 65,
|
|
283
296
|
// 500-2000 files
|
|
284
|
-
enterprise: 58
|
|
297
|
+
enterprise: 58,
|
|
285
298
|
// 2000+ files
|
|
286
299
|
};
|
|
287
300
|
function getProjectSizeTier(fileCount) {
|
|
288
|
-
if (fileCount < 50) return
|
|
289
|
-
if (fileCount < 200) return
|
|
290
|
-
if (fileCount < 500) return
|
|
291
|
-
if (fileCount < 2e3) return
|
|
292
|
-
return
|
|
301
|
+
if (fileCount < 50) return 'xs';
|
|
302
|
+
if (fileCount < 200) return 'small';
|
|
303
|
+
if (fileCount < 500) return 'medium';
|
|
304
|
+
if (fileCount < 2e3) return 'large';
|
|
305
|
+
return 'enterprise';
|
|
293
306
|
}
|
|
294
|
-
function getRecommendedThreshold(fileCount, modelTier =
|
|
307
|
+
function getRecommendedThreshold(fileCount, modelTier = 'standard') {
|
|
295
308
|
const sizeTier = getProjectSizeTier(fileCount);
|
|
296
309
|
const base = SIZE_ADJUSTED_THRESHOLDS[sizeTier];
|
|
297
|
-
const modelBonus =
|
|
310
|
+
const modelBonus =
|
|
311
|
+
modelTier === 'frontier' ? -3 : modelTier === 'extended' ? -2 : 0;
|
|
298
312
|
return base + modelBonus;
|
|
299
313
|
}
|
|
300
314
|
function normalizeToolName(shortName) {
|
|
@@ -308,9 +322,9 @@ function getToolWeight(toolName, toolConfig, cliOverride) {
|
|
|
308
322
|
function parseWeightString(weightStr) {
|
|
309
323
|
const weights = /* @__PURE__ */ new Map();
|
|
310
324
|
if (!weightStr) return weights;
|
|
311
|
-
const pairs = weightStr.split(
|
|
325
|
+
const pairs = weightStr.split(',');
|
|
312
326
|
for (const pair of pairs) {
|
|
313
|
-
const [toolShortName, weightValueStr] = pair.split(
|
|
327
|
+
const [toolShortName, weightValueStr] = pair.split(':');
|
|
314
328
|
if (toolShortName && weightValueStr) {
|
|
315
329
|
const toolName = normalizeToolName(toolShortName.trim());
|
|
316
330
|
const weight = parseInt(weightValueStr.trim(), 10);
|
|
@@ -323,13 +337,14 @@ function parseWeightString(weightStr) {
|
|
|
323
337
|
}
|
|
324
338
|
function calculateOverallScore(toolOutputs, config, cliWeights) {
|
|
325
339
|
if (toolOutputs.size === 0) {
|
|
326
|
-
throw new Error(
|
|
340
|
+
throw new Error('No tool outputs provided for scoring');
|
|
327
341
|
}
|
|
328
342
|
const weights = /* @__PURE__ */ new Map();
|
|
329
343
|
for (const [toolName] of toolOutputs.entries()) {
|
|
330
344
|
const cliWeight = cliWeights?.get(toolName);
|
|
331
345
|
const configWeight = config?.tools?.[toolName]?.scoreWeight;
|
|
332
|
-
const weight =
|
|
346
|
+
const weight =
|
|
347
|
+
cliWeight ?? configWeight ?? DEFAULT_TOOL_WEIGHTS[toolName] ?? 5;
|
|
333
348
|
weights.set(toolName, weight);
|
|
334
349
|
}
|
|
335
350
|
let weightedSum = 0;
|
|
@@ -353,46 +368,46 @@ function calculateOverallScore(toolOutputs, config, cliWeights) {
|
|
|
353
368
|
return `(${output.score} \xD7 ${w})`;
|
|
354
369
|
}
|
|
355
370
|
);
|
|
356
|
-
const formulaStr = `[${formulaParts.join(
|
|
371
|
+
const formulaStr = `[${formulaParts.join(' + ')}] / ${totalWeight} = ${overall}`;
|
|
357
372
|
return {
|
|
358
373
|
overall,
|
|
359
374
|
rating,
|
|
360
|
-
timestamp:
|
|
375
|
+
timestamp: /* @__PURE__ */ new Date().toISOString(),
|
|
361
376
|
toolsUsed,
|
|
362
377
|
breakdown,
|
|
363
378
|
calculation: {
|
|
364
379
|
formula: formulaStr,
|
|
365
380
|
weights: calculationWeights,
|
|
366
|
-
normalized: formulaStr
|
|
367
|
-
}
|
|
381
|
+
normalized: formulaStr,
|
|
382
|
+
},
|
|
368
383
|
};
|
|
369
384
|
}
|
|
370
385
|
function getRating(score) {
|
|
371
|
-
if (score >= 90) return
|
|
372
|
-
if (score >= 75) return
|
|
373
|
-
if (score >= 60) return
|
|
374
|
-
if (score >= 40) return
|
|
375
|
-
return
|
|
386
|
+
if (score >= 90) return 'Excellent' /* Excellent */;
|
|
387
|
+
if (score >= 75) return 'Good' /* Good */;
|
|
388
|
+
if (score >= 60) return 'Fair' /* Fair */;
|
|
389
|
+
if (score >= 40) return 'Needs Work' /* NeedsWork */;
|
|
390
|
+
return 'Critical' /* Critical */;
|
|
376
391
|
}
|
|
377
|
-
function getRatingWithContext(score, fileCount, modelTier =
|
|
392
|
+
function getRatingWithContext(score, fileCount, modelTier = 'standard') {
|
|
378
393
|
const threshold = getRecommendedThreshold(fileCount, modelTier);
|
|
379
394
|
const normalized = score - threshold + 70;
|
|
380
395
|
return getRating(normalized);
|
|
381
396
|
}
|
|
382
397
|
function getRatingDisplay(rating) {
|
|
383
398
|
switch (rating) {
|
|
384
|
-
case
|
|
385
|
-
return { emoji:
|
|
386
|
-
case
|
|
387
|
-
return { emoji:
|
|
388
|
-
case
|
|
389
|
-
return { emoji:
|
|
390
|
-
case
|
|
391
|
-
return { emoji:
|
|
392
|
-
case
|
|
393
|
-
return { emoji:
|
|
399
|
+
case 'Excellent' /* Excellent */:
|
|
400
|
+
return { emoji: '\u2705', color: 'green' };
|
|
401
|
+
case 'Good' /* Good */:
|
|
402
|
+
return { emoji: '\u{1F44D}', color: 'blue' };
|
|
403
|
+
case 'Fair' /* Fair */:
|
|
404
|
+
return { emoji: '\u26A0\uFE0F', color: 'yellow' };
|
|
405
|
+
case 'Needs Work' /* NeedsWork */:
|
|
406
|
+
return { emoji: '\u{1F528}', color: 'orange' };
|
|
407
|
+
case 'Critical' /* Critical */:
|
|
408
|
+
return { emoji: '\u274C', color: 'red' };
|
|
394
409
|
default:
|
|
395
|
-
return { emoji:
|
|
410
|
+
return { emoji: '\u2753', color: 'gray' };
|
|
396
411
|
}
|
|
397
412
|
}
|
|
398
413
|
function formatScore(result) {
|
|
@@ -407,22 +422,22 @@ function formatToolScore(output) {
|
|
|
407
422
|
result += ` Factors:
|
|
408
423
|
`;
|
|
409
424
|
output.factors.forEach((factor) => {
|
|
410
|
-
const impactSign = factor.impact > 0 ?
|
|
425
|
+
const impactSign = factor.impact > 0 ? '+' : '';
|
|
411
426
|
result += ` \u2022 ${factor.name}: ${impactSign}${factor.impact} - ${factor.description}
|
|
412
427
|
`;
|
|
413
428
|
});
|
|
414
|
-
result +=
|
|
429
|
+
result += '\n';
|
|
415
430
|
}
|
|
416
431
|
if (output.recommendations && output.recommendations.length > 0) {
|
|
417
432
|
result += ` Recommendations:
|
|
418
433
|
`;
|
|
419
434
|
output.recommendations.forEach((rec, i) => {
|
|
420
|
-
let priorityIcon =
|
|
435
|
+
let priorityIcon = '\u{1F535}';
|
|
421
436
|
const prio = rec.priority;
|
|
422
|
-
if (prio ===
|
|
423
|
-
priorityIcon =
|
|
424
|
-
else if (prio ===
|
|
425
|
-
priorityIcon =
|
|
437
|
+
if (prio === 'high' /* High */ || prio === 'high')
|
|
438
|
+
priorityIcon = '\u{1F534}';
|
|
439
|
+
else if (prio === 'medium' /* Medium */ || prio === 'medium')
|
|
440
|
+
priorityIcon = '\u{1F7E1}';
|
|
426
441
|
result += ` ${i + 1}. ${priorityIcon} ${rec.action}
|
|
427
442
|
`;
|
|
428
443
|
result += ` Impact: +${rec.estimatedImpact} points
|
|
@@ -641,5 +656,5 @@ export {
|
|
|
641
656
|
getRatingDisplay,
|
|
642
657
|
formatScore,
|
|
643
658
|
formatToolScore,
|
|
644
|
-
generateHTML
|
|
659
|
+
generateHTML,
|
|
645
660
|
};
|