@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.
- 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 -1094
- package/dist/client.d.ts +2 -1094
- package/dist/client.js +23 -43
- package/dist/client.mjs +3 -25
- package/dist/index.d.mts +380 -108
- package/dist/index.d.ts +380 -108
- package/dist/index.js +609 -445
- package/dist/index.mjs +587 -429
- 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 +2 -2
package/dist/chunk-XKK7YHPX.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,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
|
|
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
|
-
})
|
|
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
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
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[
|
|
177
|
-
Language2[
|
|
178
|
-
Language2[
|
|
179
|
-
Language2[
|
|
180
|
-
Language2[
|
|
181
|
-
Language2[
|
|
182
|
-
Language2[
|
|
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
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
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 =
|
|
212
|
+
this.name = 'ParseError';
|
|
202
213
|
}
|
|
203
214
|
};
|
|
204
215
|
|
|
205
216
|
// src/scoring.ts
|
|
206
217
|
var DEFAULT_TOOL_WEIGHTS = {
|
|
207
|
-
[
|
|
208
|
-
[
|
|
209
|
-
[
|
|
210
|
-
[
|
|
211
|
-
[
|
|
212
|
-
[
|
|
213
|
-
[
|
|
214
|
-
[
|
|
215
|
-
[
|
|
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:
|
|
219
|
-
|
|
220
|
-
context:
|
|
221
|
-
|
|
222
|
-
consistency:
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
grounding:
|
|
227
|
-
|
|
228
|
-
testability:
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
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
|
|
256
|
-
if (fileCount < 200) return
|
|
257
|
-
if (fileCount < 500) return
|
|
258
|
-
if (fileCount < 2e3) return
|
|
259
|
-
return
|
|
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 =
|
|
272
|
+
function getRecommendedThreshold(fileCount, modelTier = 'standard') {
|
|
262
273
|
const sizeTier = getProjectSizeTier(fileCount);
|
|
263
274
|
const base = SIZE_ADJUSTED_THRESHOLDS[sizeTier];
|
|
264
|
-
const modelBonus =
|
|
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(
|
|
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 =
|
|
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(
|
|
336
|
+
const formulaStr = `[${formulaParts.join(' + ')}] / ${totalWeight} = ${overall}`;
|
|
324
337
|
return {
|
|
325
338
|
overall,
|
|
326
339
|
rating,
|
|
327
|
-
timestamp:
|
|
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
|
|
339
|
-
if (score >= 75) return
|
|
340
|
-
if (score >= 60) return
|
|
341
|
-
if (score >= 40) return
|
|
342
|
-
return
|
|
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 =
|
|
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
|
|
352
|
-
return { emoji:
|
|
353
|
-
case
|
|
354
|
-
return { emoji:
|
|
355
|
-
case
|
|
356
|
-
return { emoji:
|
|
357
|
-
case
|
|
358
|
-
return { emoji:
|
|
359
|
-
case
|
|
360
|
-
return { emoji:
|
|
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 +=
|
|
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 =
|
|
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
|
};
|