@aiready/core 0.23.19 → 0.23.21
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/chunk-2N7ISIKE.mjs +158 -0
- package/dist/chunk-ARUIZO7M.mjs +297 -0
- package/dist/chunk-CYC5EGEI.mjs +297 -0
- package/dist/{chunk-ZB3EHHAG.mjs → chunk-DBOPSRBC.mjs} +88 -26
- package/dist/chunk-EZ7ECLAZ.mjs +299 -0
- package/dist/chunk-FNPULWG7.mjs +248 -0
- package/dist/chunk-FZTFKZUQ.mjs +250 -0
- package/dist/chunk-GTS642BQ.mjs +262 -0
- package/dist/chunk-IXPY5J4K.mjs +248 -0
- package/dist/chunk-JJQLYW6Z.mjs +111 -0
- package/dist/chunk-L6BKANJC.mjs +130 -0
- package/dist/chunk-LXEO5PG3.mjs +292 -0
- package/dist/chunk-LZHO636W.mjs +501 -0
- package/dist/chunk-MTK2IIDZ.mjs +262 -0
- package/dist/chunk-QDCQETSI.mjs +262 -0
- package/dist/chunk-QZNY7B2N.mjs +248 -0
- package/dist/chunk-RCZSMGCX.mjs +250 -0
- package/dist/chunk-SWZOT67M.mjs +250 -0
- package/dist/chunk-U3IY2CFC.mjs +36 -0
- package/dist/chunk-UBCM5Y6R.mjs +275 -0
- package/dist/chunk-UTCRW3N7.mjs +301 -0
- package/dist/{chunk-RMH2TPAT.mjs → chunk-UYLH35LA.mjs} +88 -26
- package/dist/{chunk-TJXR2CHZ.mjs → chunk-WVNVC2PP.mjs} +266 -213
- package/dist/chunk-WYOW6O3P.mjs +114 -0
- package/dist/{chunk-CGOS2J6T.mjs → chunk-YRSSR4KN.mjs} +260 -217
- package/dist/client-2xbeKnrg.d.mts +1291 -0
- package/dist/client-2xbeKnrg.d.ts +1291 -0
- package/dist/client-4HLAGzFg.d.mts +1291 -0
- package/dist/client-4HLAGzFg.d.ts +1291 -0
- package/dist/client-B4TQwNa7.d.mts +1290 -0
- package/dist/client-B4TQwNa7.d.ts +1290 -0
- package/dist/client-Bdi4ty0v.d.mts +1294 -0
- package/dist/client-Bdi4ty0v.d.ts +1294 -0
- package/dist/client-BsKpUH3H.d.mts +1339 -0
- package/dist/client-BsKpUH3H.d.ts +1339 -0
- package/dist/client-Bv1zOaWF.d.mts +1291 -0
- package/dist/client-Bv1zOaWF.d.ts +1291 -0
- package/dist/client-Bz9YJMIX.d.mts +1290 -0
- package/dist/client-Bz9YJMIX.d.ts +1290 -0
- package/dist/client-CBpzm34X.d.mts +1291 -0
- package/dist/client-CBpzm34X.d.ts +1291 -0
- package/dist/client-CNu_tCZZ.d.mts +1305 -0
- package/dist/client-CNu_tCZZ.d.ts +1305 -0
- package/dist/client-CmEvxxQu.d.mts +1339 -0
- package/dist/client-CmEvxxQu.d.ts +1339 -0
- package/dist/client-DGMAxkZc.d.mts +1339 -0
- package/dist/client-DGMAxkZc.d.ts +1339 -0
- package/dist/client-DZq-CqcD.d.mts +1292 -0
- package/dist/client-DZq-CqcD.d.ts +1292 -0
- package/dist/{client-WVCAIWdJ.d.mts → client-DcqGfDTt.d.mts} +318 -226
- package/dist/{client-WVCAIWdJ.d.ts → client-DcqGfDTt.d.ts} +318 -226
- package/dist/{client-DLvFR2qA.d.mts → client-O8RvSRm0.d.mts} +89 -25
- package/dist/{client-DLvFR2qA.d.ts → client-O8RvSRm0.d.ts} +89 -25
- package/dist/client.d.mts +1 -1
- package/dist/client.d.ts +1 -1
- package/dist/client.js +53 -27
- package/dist/client.mjs +6 -6
- package/dist/csharp-parser-4ZKCSX5B.mjs +9 -0
- package/dist/csharp-parser-5HKICCRR.mjs +9 -0
- package/dist/csharp-parser-JCKXIAJW.mjs +9 -0
- package/dist/go-parser-J4KIH4RG.mjs +9 -0
- package/dist/go-parser-TKXL3DVH.mjs +9 -0
- package/dist/go-parser-XOM232XZ.mjs +9 -0
- package/dist/index.d.mts +332 -54
- package/dist/index.d.ts +332 -54
- package/dist/index.js +3930 -3064
- package/dist/index.mjs +933 -2036
- package/dist/java-parser-3KHXOXRQ.mjs +9 -0
- package/dist/java-parser-MASGS4WB.mjs +9 -0
- package/dist/java-parser-T5LXD63J.mjs +9 -0
- package/dist/python-parser-FNFK2473.mjs +8 -0
- package/dist/typescript-parser-2GGNRNB5.mjs +7 -0
- package/dist/typescript-parser-3ENJ6C7H.mjs +7 -0
- package/dist/typescript-parser-4GI7DPSW.mjs +7 -0
- package/dist/typescript-parser-4H3HUBO4.mjs +7 -0
- package/dist/typescript-parser-K63IVZMF.mjs +7 -0
- package/dist/typescript-parser-ZJKROMQG.mjs +7 -0
- package/package.json +1 -1
- package/dist/chunk-5SHLHMH7.mjs +0 -760
- package/dist/chunk-Q55AMEFV.mjs +0 -760
- package/dist/client-BEoUYNLp.d.mts +0 -1191
- package/dist/client-BEoUYNLp.d.ts +0 -1191
- package/dist/client-BrIMPk89.d.mts +0 -1214
- package/dist/client-BrIMPk89.d.ts +0 -1214
- package/dist/client-C5BuGX4F.d.mts +0 -1205
- package/dist/client-C5BuGX4F.d.ts +0 -1205
- package/dist/client-CKcjnPXt.d.mts +0 -1214
- package/dist/client-CKcjnPXt.d.ts +0 -1214
- package/dist/client-CLulBnie.d.mts +0 -1182
- package/dist/client-CLulBnie.d.ts +0 -1182
- package/dist/client-CQwvp8ep.d.mts +0 -1182
- package/dist/client-CQwvp8ep.d.ts +0 -1182
- package/dist/client-PFPdeo-z.d.mts +0 -1186
- package/dist/client-PFPdeo-z.d.ts +0 -1186
- package/dist/client-wk2fgk1q.d.mts +0 -1184
- package/dist/client-wk2fgk1q.d.ts +0 -1184
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ParseError
|
|
3
|
+
} from "./chunk-U3IY2CFC.mjs";
|
|
4
|
+
|
|
5
|
+
// src/parsers/typescript-parser.ts
|
|
6
|
+
import { parse } from "@typescript-eslint/typescript-estree";
|
|
7
|
+
var TypeScriptParser = class {
|
|
8
|
+
constructor() {
|
|
9
|
+
this.language = "typescript" /* TypeScript */;
|
|
10
|
+
this.extensions = [".ts", ".tsx", ".js", ".jsx"];
|
|
11
|
+
}
|
|
12
|
+
async initialize() {
|
|
13
|
+
}
|
|
14
|
+
canHandle(filePath2) {
|
|
15
|
+
return this.extensions.some((ext) => filePath2.endsWith(ext));
|
|
16
|
+
}
|
|
17
|
+
async getAST(code, filePath2) {
|
|
18
|
+
try {
|
|
19
|
+
return parse(code, {
|
|
20
|
+
filePath: filePath2,
|
|
21
|
+
loc: true,
|
|
22
|
+
range: true,
|
|
23
|
+
tokens: true,
|
|
24
|
+
comment: true,
|
|
25
|
+
jsx: filePath2.endsWith("x")
|
|
26
|
+
});
|
|
27
|
+
} catch (error) {
|
|
28
|
+
throw new ParseError(error.message, filePath2, {
|
|
29
|
+
line: error.lineNumber || 1,
|
|
30
|
+
column: error.column || 0
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
parse(code, filePath2) {
|
|
35
|
+
try {
|
|
36
|
+
const ast = parse(code, {
|
|
37
|
+
filePath: filePath2,
|
|
38
|
+
loc: true,
|
|
39
|
+
range: true,
|
|
40
|
+
tokens: true,
|
|
41
|
+
comment: true,
|
|
42
|
+
jsx: filePath2.endsWith("x")
|
|
43
|
+
});
|
|
44
|
+
const imports = this.extractImports(ast);
|
|
45
|
+
const exports = this.extractExports(ast, code);
|
|
46
|
+
return {
|
|
47
|
+
exports,
|
|
48
|
+
imports,
|
|
49
|
+
language: this.language
|
|
50
|
+
};
|
|
51
|
+
} catch (error) {
|
|
52
|
+
throw new ParseError(error.message, filePath2, {
|
|
53
|
+
line: error.lineNumber || 1,
|
|
54
|
+
column: error.column || 0
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
getNamingConventions() {
|
|
59
|
+
return {
|
|
60
|
+
variablePattern: /^[a-z][a-zA-Z0-9]*$/,
|
|
61
|
+
functionPattern: /^[a-z][a-zA-Z0-9]*$/,
|
|
62
|
+
classPattern: /^[A-Z][a-zA-Z0-9]*$/,
|
|
63
|
+
constantPattern: /^[A-Z][A-Z0-9_]*$/,
|
|
64
|
+
typePattern: /^[A-Z][a-zA-Z0-9]*$/,
|
|
65
|
+
interfacePattern: /^I?[A-Z][a-zA-Z0-9]*$/
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
analyzeMetadata(node, code) {
|
|
69
|
+
if (!code) return {};
|
|
70
|
+
return {
|
|
71
|
+
isPure: this.isLikelyPure(node),
|
|
72
|
+
hasSideEffects: !this.isLikelyPure(node)
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
extractImports(ast) {
|
|
76
|
+
const imports = [];
|
|
77
|
+
for (const node of ast.body) {
|
|
78
|
+
if (node.type === "ImportDeclaration") {
|
|
79
|
+
const specifiers = [];
|
|
80
|
+
let isTypeOnly = false;
|
|
81
|
+
if (node.importKind === "type") {
|
|
82
|
+
isTypeOnly = true;
|
|
83
|
+
}
|
|
84
|
+
for (const spec of node.specifiers) {
|
|
85
|
+
if (spec.type === "ImportSpecifier") {
|
|
86
|
+
const imported = spec.imported;
|
|
87
|
+
const name = imported.type === "Identifier" ? imported.name : imported.value;
|
|
88
|
+
specifiers.push(name);
|
|
89
|
+
} else if (spec.type === "ImportDefaultSpecifier") {
|
|
90
|
+
specifiers.push("default");
|
|
91
|
+
} else if (spec.type === "ImportNamespaceSpecifier") {
|
|
92
|
+
specifiers.push("*");
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
imports.push({
|
|
96
|
+
source: node.source.value,
|
|
97
|
+
specifiers,
|
|
98
|
+
isTypeOnly,
|
|
99
|
+
loc: node.loc ? {
|
|
100
|
+
start: {
|
|
101
|
+
line: node.loc.start.line,
|
|
102
|
+
column: node.loc.start.column
|
|
103
|
+
},
|
|
104
|
+
end: { line: node.loc.end.line, column: node.loc.end.column }
|
|
105
|
+
} : void 0
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return imports;
|
|
110
|
+
}
|
|
111
|
+
extractExports(ast, code) {
|
|
112
|
+
const exports = [];
|
|
113
|
+
for (const node of ast.body) {
|
|
114
|
+
if (node.type === "ExportNamedDeclaration") {
|
|
115
|
+
if (node.declaration) {
|
|
116
|
+
const declaration = node.declaration;
|
|
117
|
+
if ((declaration.type === "FunctionDeclaration" || declaration.type === "TSDeclareFunction") && declaration.id) {
|
|
118
|
+
exports.push(
|
|
119
|
+
this.createExport(
|
|
120
|
+
declaration.id.name,
|
|
121
|
+
"function",
|
|
122
|
+
node,
|
|
123
|
+
// Pass the outer ExportNamedDeclaration
|
|
124
|
+
code,
|
|
125
|
+
filePath
|
|
126
|
+
)
|
|
127
|
+
);
|
|
128
|
+
} else if (declaration.type === "ClassDeclaration" && declaration.id) {
|
|
129
|
+
exports.push(
|
|
130
|
+
this.createExport(
|
|
131
|
+
declaration.id.name,
|
|
132
|
+
"class",
|
|
133
|
+
node,
|
|
134
|
+
// Pass the outer ExportNamedDeclaration
|
|
135
|
+
code,
|
|
136
|
+
filePath
|
|
137
|
+
)
|
|
138
|
+
);
|
|
139
|
+
} else if (declaration.type === "TSTypeAliasDeclaration") {
|
|
140
|
+
exports.push(
|
|
141
|
+
this.createExport(
|
|
142
|
+
declaration.id.name,
|
|
143
|
+
"type",
|
|
144
|
+
node,
|
|
145
|
+
// Pass the outer ExportNamedDeclaration
|
|
146
|
+
code,
|
|
147
|
+
filePath
|
|
148
|
+
)
|
|
149
|
+
);
|
|
150
|
+
} else if (declaration.type === "TSInterfaceDeclaration") {
|
|
151
|
+
exports.push(
|
|
152
|
+
this.createExport(
|
|
153
|
+
declaration.id.name,
|
|
154
|
+
"interface",
|
|
155
|
+
node,
|
|
156
|
+
// Pass the outer ExportNamedDeclaration
|
|
157
|
+
code,
|
|
158
|
+
filePath
|
|
159
|
+
)
|
|
160
|
+
);
|
|
161
|
+
} else if (declaration.type === "VariableDeclaration") {
|
|
162
|
+
for (const decl of declaration.declarations) {
|
|
163
|
+
if (decl.id.type === "Identifier") {
|
|
164
|
+
exports.push(
|
|
165
|
+
this.createExport(
|
|
166
|
+
decl.id.name,
|
|
167
|
+
"const",
|
|
168
|
+
node,
|
|
169
|
+
// Pass the outer ExportNamedDeclaration
|
|
170
|
+
code,
|
|
171
|
+
filePath,
|
|
172
|
+
decl.init
|
|
173
|
+
)
|
|
174
|
+
);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
} else if (node.type === "ExportDefaultDeclaration") {
|
|
180
|
+
exports.push(this.createExport("default", "default", node, code, filePath));
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
return exports;
|
|
184
|
+
}
|
|
185
|
+
createExport(name, type, node, code, filePath2, initializer) {
|
|
186
|
+
const documentation = this.extractDocumentation(node, code);
|
|
187
|
+
let methodCount;
|
|
188
|
+
let propertyCount;
|
|
189
|
+
let parameters;
|
|
190
|
+
let isPrimitive = false;
|
|
191
|
+
let isTyped = false;
|
|
192
|
+
if (initializer) {
|
|
193
|
+
if (initializer.type === "Literal" || initializer.type === "TemplateLiteral" && initializer.expressions.length === 0) {
|
|
194
|
+
isPrimitive = true;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
const structNode = node.type === "ExportNamedDeclaration" ? node.declaration : node.type === "ExportDefaultDeclaration" ? node.declaration : node;
|
|
198
|
+
if (filePath2.endsWith(".ts") || filePath2.endsWith(".tsx")) {
|
|
199
|
+
if (structNode.type === "TSTypeAliasDeclaration" || structNode.type === "TSInterfaceDeclaration" || structNode.type === "TSEnumDeclaration") {
|
|
200
|
+
isTyped = true;
|
|
201
|
+
} else if (structNode.type === "FunctionDeclaration" || structNode.type === "TSDeclareFunction") {
|
|
202
|
+
const hasReturnType = !!structNode.returnType;
|
|
203
|
+
const allParamsTyped = structNode.params.length === 0 || structNode.params.every((p) => !!p.typeAnnotation);
|
|
204
|
+
isTyped = hasReturnType && allParamsTyped;
|
|
205
|
+
} else if (structNode.type === "VariableDeclaration") {
|
|
206
|
+
isTyped = structNode.declarations.every(
|
|
207
|
+
(d) => !!d.id.typeAnnotation || !!d.init
|
|
208
|
+
);
|
|
209
|
+
} else if (structNode.type === "ClassDeclaration") {
|
|
210
|
+
isTyped = true;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
if (structNode.type === "ClassDeclaration" || structNode.type === "TSInterfaceDeclaration") {
|
|
214
|
+
const body = structNode.type === "ClassDeclaration" ? structNode.body.body : structNode.body.body;
|
|
215
|
+
methodCount = body.filter(
|
|
216
|
+
(m) => m.type === "MethodDefinition" || m.type === "TSMethodSignature"
|
|
217
|
+
).length;
|
|
218
|
+
propertyCount = body.filter(
|
|
219
|
+
(m) => m.type === "PropertyDefinition" || m.type === "TSPropertySignature"
|
|
220
|
+
).length;
|
|
221
|
+
if (structNode.type === "ClassDeclaration") {
|
|
222
|
+
const constructor = body.find(
|
|
223
|
+
(m) => m.type === "MethodDefinition" && m.kind === "constructor"
|
|
224
|
+
);
|
|
225
|
+
if (constructor && constructor.value && constructor.value.params) {
|
|
226
|
+
parameters = constructor.value.params.map((p) => {
|
|
227
|
+
if (p.type === "Identifier") return p.name;
|
|
228
|
+
if (p.type === "TSParameterProperty" && p.parameter.type === "Identifier") {
|
|
229
|
+
return p.parameter.name;
|
|
230
|
+
}
|
|
231
|
+
return void 0;
|
|
232
|
+
}).filter(Boolean);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
if (!parameters && (structNode.type === "FunctionDeclaration" || structNode.type === "TSDeclareFunction" || structNode.type === "MethodDefinition")) {
|
|
237
|
+
const funcNode = structNode.type === "MethodDefinition" ? structNode.value : structNode;
|
|
238
|
+
if (funcNode && funcNode.params) {
|
|
239
|
+
parameters = funcNode.params.map((p) => {
|
|
240
|
+
if (p.type === "Identifier") return p.name;
|
|
241
|
+
return void 0;
|
|
242
|
+
}).filter(Boolean);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
return {
|
|
246
|
+
name,
|
|
247
|
+
type,
|
|
248
|
+
isPrimitive,
|
|
249
|
+
loc: node.loc ? {
|
|
250
|
+
start: { line: node.loc.start.line, column: node.loc.start.column },
|
|
251
|
+
end: { line: node.loc.end.line, column: node.loc.end.column }
|
|
252
|
+
} : void 0,
|
|
253
|
+
documentation,
|
|
254
|
+
methodCount,
|
|
255
|
+
propertyCount,
|
|
256
|
+
parameters,
|
|
257
|
+
isPure: this.isLikelyPure(node),
|
|
258
|
+
hasSideEffects: !this.isLikelyPure(node),
|
|
259
|
+
isTyped
|
|
260
|
+
};
|
|
261
|
+
}
|
|
262
|
+
extractDocumentation(node, code) {
|
|
263
|
+
if (node.range) {
|
|
264
|
+
const start = node.range[0];
|
|
265
|
+
const precedingCode = code.substring(0, start);
|
|
266
|
+
const jsdocMatch = precedingCode.match(/\/\*\*([\s\S]*?)\*\/\s*$/);
|
|
267
|
+
if (jsdocMatch) {
|
|
268
|
+
return {
|
|
269
|
+
content: jsdocMatch[1].trim(),
|
|
270
|
+
type: "jsdoc"
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
return void 0;
|
|
275
|
+
}
|
|
276
|
+
isLikelyPure(node) {
|
|
277
|
+
const structNode = node.type === "ExportNamedDeclaration" ? node.declaration : node.type === "ExportDefaultDeclaration" ? node.declaration : node;
|
|
278
|
+
if (structNode.type === "VariableDeclaration" && structNode.kind === "const")
|
|
279
|
+
return true;
|
|
280
|
+
if (structNode.type === "FunctionDeclaration" || structNode.type === "TSDeclareFunction" || structNode.type === "MethodDefinition" && structNode.value) {
|
|
281
|
+
const body = structNode.type === "MethodDefinition" ? structNode.value.body : structNode.body;
|
|
282
|
+
if (body && body.type === "BlockStatement") {
|
|
283
|
+
const bodyContent = JSON.stringify(body);
|
|
284
|
+
if (bodyContent.includes('"name":"console"') || bodyContent.includes('"name":"process"') || bodyContent.includes('"type":"AssignmentExpression"')) {
|
|
285
|
+
return false;
|
|
286
|
+
}
|
|
287
|
+
return true;
|
|
288
|
+
}
|
|
289
|
+
return true;
|
|
290
|
+
}
|
|
291
|
+
return false;
|
|
292
|
+
}
|
|
293
|
+
};
|
|
294
|
+
|
|
295
|
+
export {
|
|
296
|
+
TypeScriptParser
|
|
297
|
+
};
|
|
@@ -335,13 +335,7 @@ var ParseError = class extends Error {
|
|
|
335
335
|
}
|
|
336
336
|
};
|
|
337
337
|
|
|
338
|
-
// src/
|
|
339
|
-
var RecommendationPriority = /* @__PURE__ */ ((RecommendationPriority2) => {
|
|
340
|
-
RecommendationPriority2["High"] = "high";
|
|
341
|
-
RecommendationPriority2["Medium"] = "medium";
|
|
342
|
-
RecommendationPriority2["Low"] = "low";
|
|
343
|
-
return RecommendationPriority2;
|
|
344
|
-
})(RecommendationPriority || {});
|
|
338
|
+
// src/utils/rating-helpers.ts
|
|
345
339
|
var ReadinessRating = /* @__PURE__ */ ((ReadinessRating2) => {
|
|
346
340
|
ReadinessRating2["Excellent"] = "Excellent";
|
|
347
341
|
ReadinessRating2["Good"] = "Good";
|
|
@@ -350,6 +344,83 @@ var ReadinessRating = /* @__PURE__ */ ((ReadinessRating2) => {
|
|
|
350
344
|
ReadinessRating2["Critical"] = "Critical";
|
|
351
345
|
return ReadinessRating2;
|
|
352
346
|
})(ReadinessRating || {});
|
|
347
|
+
function getRatingMetadata(score) {
|
|
348
|
+
if (score >= 90) {
|
|
349
|
+
return {
|
|
350
|
+
label: "Excellent",
|
|
351
|
+
slug: "excellent",
|
|
352
|
+
emoji: "\u2705",
|
|
353
|
+
rating: "Excellent" /* Excellent */
|
|
354
|
+
};
|
|
355
|
+
}
|
|
356
|
+
if (score >= 75) {
|
|
357
|
+
return {
|
|
358
|
+
label: "Good",
|
|
359
|
+
slug: "good",
|
|
360
|
+
emoji: "\u{1F44D}",
|
|
361
|
+
rating: "Good" /* Good */
|
|
362
|
+
};
|
|
363
|
+
}
|
|
364
|
+
if (score >= 60) {
|
|
365
|
+
return {
|
|
366
|
+
label: "Fair",
|
|
367
|
+
slug: "fair",
|
|
368
|
+
emoji: "\u{1F44C}",
|
|
369
|
+
rating: "Fair" /* Fair */
|
|
370
|
+
};
|
|
371
|
+
}
|
|
372
|
+
if (score >= 40) {
|
|
373
|
+
return {
|
|
374
|
+
label: "Needs Work",
|
|
375
|
+
slug: "needs-work",
|
|
376
|
+
emoji: "\u{1F528}",
|
|
377
|
+
rating: "Needs Work" /* NeedsWork */
|
|
378
|
+
};
|
|
379
|
+
}
|
|
380
|
+
return {
|
|
381
|
+
label: "Critical",
|
|
382
|
+
slug: "critical",
|
|
383
|
+
emoji: "\u{1F6A8}",
|
|
384
|
+
rating: "Critical" /* Critical */
|
|
385
|
+
};
|
|
386
|
+
}
|
|
387
|
+
function getRatingLabel(score) {
|
|
388
|
+
return getRatingMetadata(score).label;
|
|
389
|
+
}
|
|
390
|
+
function getRatingSlug(score) {
|
|
391
|
+
return getRatingMetadata(score).slug;
|
|
392
|
+
}
|
|
393
|
+
function getRatingEmoji(score) {
|
|
394
|
+
return getRatingMetadata(score).emoji;
|
|
395
|
+
}
|
|
396
|
+
function getToolEmoji(score) {
|
|
397
|
+
return getRatingEmoji(score);
|
|
398
|
+
}
|
|
399
|
+
function getPriorityIcon(priority) {
|
|
400
|
+
switch (priority) {
|
|
401
|
+
case "critical":
|
|
402
|
+
return "\u{1F534}";
|
|
403
|
+
case "high":
|
|
404
|
+
return "\u{1F7E0}";
|
|
405
|
+
case "medium":
|
|
406
|
+
return "\u{1F7E1}";
|
|
407
|
+
case "low":
|
|
408
|
+
return "\u{1F535}";
|
|
409
|
+
default:
|
|
410
|
+
return "\u26AA";
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
function getRating(score) {
|
|
414
|
+
return getRatingMetadata(score).rating;
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
// src/scoring.ts
|
|
418
|
+
var RecommendationPriority = /* @__PURE__ */ ((RecommendationPriority2) => {
|
|
419
|
+
RecommendationPriority2["High"] = "high";
|
|
420
|
+
RecommendationPriority2["Medium"] = "medium";
|
|
421
|
+
RecommendationPriority2["Low"] = "low";
|
|
422
|
+
return RecommendationPriority2;
|
|
423
|
+
})(RecommendationPriority || {});
|
|
353
424
|
var DEFAULT_TOOL_WEIGHTS = {
|
|
354
425
|
["pattern-detect" /* PatternDetect */]: 22,
|
|
355
426
|
["context-analyzer" /* ContextAnalyzer */]: 19,
|
|
@@ -510,8 +581,8 @@ function calculateOverallScore(toolOutputs, config, cliWeights) {
|
|
|
510
581
|
const rating = getRating(overall);
|
|
511
582
|
const formulaParts = Array.from(toolOutputs.entries()).map(
|
|
512
583
|
([name, output]) => {
|
|
513
|
-
const
|
|
514
|
-
return `(${output.score} \xD7 ${
|
|
584
|
+
const weight = weights.get(name) ?? 5;
|
|
585
|
+
return `(${output.score} \xD7 ${weight})`;
|
|
515
586
|
}
|
|
516
587
|
);
|
|
517
588
|
const formulaStr = `[${formulaParts.join(" + ")}] / ${totalWeight} = ${overall}`;
|
|
@@ -528,20 +599,6 @@ function calculateOverallScore(toolOutputs, config, cliWeights) {
|
|
|
528
599
|
}
|
|
529
600
|
};
|
|
530
601
|
}
|
|
531
|
-
function getRating(score) {
|
|
532
|
-
if (score >= 90) return "Excellent" /* Excellent */;
|
|
533
|
-
if (score >= 75) return "Good" /* Good */;
|
|
534
|
-
if (score >= 60) return "Fair" /* Fair */;
|
|
535
|
-
if (score >= 40) return "Needs Work" /* NeedsWork */;
|
|
536
|
-
return "Critical" /* Critical */;
|
|
537
|
-
}
|
|
538
|
-
function getRatingSlug(score) {
|
|
539
|
-
if (score >= 90) return "excellent";
|
|
540
|
-
if (score >= 75) return "good";
|
|
541
|
-
if (score >= 60) return "fair";
|
|
542
|
-
if (score >= 40) return "needs-work";
|
|
543
|
-
return "critical";
|
|
544
|
-
}
|
|
545
602
|
function getRatingWithContext(score, fileCount, modelTier = "standard") {
|
|
546
603
|
const threshold = getRecommendedThreshold(fileCount, modelTier);
|
|
547
604
|
const normalized = score - threshold + 70;
|
|
@@ -798,8 +855,15 @@ export {
|
|
|
798
855
|
Language,
|
|
799
856
|
LANGUAGE_EXTENSIONS,
|
|
800
857
|
ParseError,
|
|
801
|
-
RecommendationPriority,
|
|
802
858
|
ReadinessRating,
|
|
859
|
+
getRatingMetadata,
|
|
860
|
+
getRatingLabel,
|
|
861
|
+
getRatingSlug,
|
|
862
|
+
getRatingEmoji,
|
|
863
|
+
getToolEmoji,
|
|
864
|
+
getPriorityIcon,
|
|
865
|
+
getRating,
|
|
866
|
+
RecommendationPriority,
|
|
803
867
|
DEFAULT_TOOL_WEIGHTS,
|
|
804
868
|
TOOL_NAME_MAP,
|
|
805
869
|
ScoringProfile,
|
|
@@ -812,8 +876,6 @@ export {
|
|
|
812
876
|
getToolWeight,
|
|
813
877
|
parseWeightString,
|
|
814
878
|
calculateOverallScore,
|
|
815
|
-
getRating,
|
|
816
|
-
getRatingSlug,
|
|
817
879
|
getRatingWithContext,
|
|
818
880
|
getRatingDisplay,
|
|
819
881
|
formatScore,
|