@aiready/core 0.19.0 → 0.19.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/chunk-D3D3NCRR.mjs +538 -0
- package/dist/chunk-OQ6IGDXG.mjs +535 -0
- package/dist/chunk-UTZOO4XO.mjs +537 -0
- package/dist/client.d.mts +245 -53
- package/dist/client.d.ts +245 -53
- package/dist/client.js +142 -0
- package/dist/client.mjs +29 -1
- package/dist/index.d.mts +10 -39
- package/dist/index.d.ts +10 -39
- package/dist/index.js +182 -24
- package/dist/index.mjs +67 -24
- package/package.json +3 -2
package/dist/index.js
CHANGED
|
@@ -30,20 +30,34 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
30
30
|
// src/index.ts
|
|
31
31
|
var index_exports = {};
|
|
32
32
|
__export(index_exports, {
|
|
33
|
+
AnalysisResultSchema: () => AnalysisResultSchema,
|
|
34
|
+
AnalysisStatus: () => AnalysisStatus,
|
|
35
|
+
AnalysisStatusSchema: () => AnalysisStatusSchema,
|
|
33
36
|
CONTEXT_TIER_THRESHOLDS: () => CONTEXT_TIER_THRESHOLDS,
|
|
34
37
|
DEFAULT_COST_CONFIG: () => DEFAULT_COST_CONFIG,
|
|
35
38
|
DEFAULT_EXCLUDE: () => DEFAULT_EXCLUDE,
|
|
36
39
|
DEFAULT_TOOL_WEIGHTS: () => DEFAULT_TOOL_WEIGHTS,
|
|
40
|
+
IssueSchema: () => IssueSchema,
|
|
41
|
+
IssueType: () => IssueType,
|
|
42
|
+
IssueTypeSchema: () => IssueTypeSchema,
|
|
37
43
|
LANGUAGE_EXTENSIONS: () => LANGUAGE_EXTENSIONS,
|
|
38
44
|
Language: () => Language,
|
|
45
|
+
LocationSchema: () => LocationSchema,
|
|
39
46
|
MODEL_PRICING_PRESETS: () => MODEL_PRICING_PRESETS,
|
|
47
|
+
MetricsSchema: () => MetricsSchema,
|
|
48
|
+
ModelTier: () => ModelTier,
|
|
49
|
+
ModelTierSchema: () => ModelTierSchema,
|
|
40
50
|
ParseError: () => ParseError,
|
|
41
51
|
ParserFactory: () => ParserFactory,
|
|
42
52
|
PythonParser: () => PythonParser,
|
|
43
53
|
SEVERITY_TIME_ESTIMATES: () => SEVERITY_TIME_ESTIMATES,
|
|
44
54
|
SIZE_ADJUSTED_THRESHOLDS: () => SIZE_ADJUSTED_THRESHOLDS,
|
|
55
|
+
Severity: () => Severity,
|
|
56
|
+
SeveritySchema: () => SeveritySchema,
|
|
57
|
+
SpokeOutputSchema: () => SpokeOutputSchema,
|
|
45
58
|
TOOL_NAME_MAP: () => TOOL_NAME_MAP,
|
|
46
59
|
TypeScriptParser: () => TypeScriptParser,
|
|
60
|
+
UnifiedReportSchema: () => UnifiedReportSchema,
|
|
47
61
|
VAGUE_FILE_NAMES: () => VAGUE_FILE_NAMES,
|
|
48
62
|
calculateAgentGrounding: () => calculateAgentGrounding,
|
|
49
63
|
calculateAiSignalClarity: () => calculateAiSignalClarity,
|
|
@@ -116,10 +130,125 @@ __export(index_exports, {
|
|
|
116
130
|
saveScoreEntry: () => saveScoreEntry,
|
|
117
131
|
scanEntries: () => scanEntries,
|
|
118
132
|
scanFiles: () => scanFiles,
|
|
119
|
-
validateSpokeOutput: () => validateSpokeOutput
|
|
133
|
+
validateSpokeOutput: () => validateSpokeOutput,
|
|
134
|
+
validateWithSchema: () => validateWithSchema
|
|
120
135
|
});
|
|
121
136
|
module.exports = __toCommonJS(index_exports);
|
|
122
137
|
|
|
138
|
+
// src/types/schema.ts
|
|
139
|
+
var import_zod = require("zod");
|
|
140
|
+
var Severity = /* @__PURE__ */ ((Severity2) => {
|
|
141
|
+
Severity2["Critical"] = "critical";
|
|
142
|
+
Severity2["Major"] = "major";
|
|
143
|
+
Severity2["Minor"] = "minor";
|
|
144
|
+
Severity2["Info"] = "info";
|
|
145
|
+
return Severity2;
|
|
146
|
+
})(Severity || {});
|
|
147
|
+
var SeveritySchema = import_zod.z.nativeEnum(Severity);
|
|
148
|
+
var IssueType = /* @__PURE__ */ ((IssueType2) => {
|
|
149
|
+
IssueType2["DuplicatePattern"] = "duplicate-pattern";
|
|
150
|
+
IssueType2["PatternInconsistency"] = "pattern-inconsistency";
|
|
151
|
+
IssueType2["ContextFragmentation"] = "context-fragmentation";
|
|
152
|
+
IssueType2["DependencyHealth"] = "dependency-health";
|
|
153
|
+
IssueType2["CircularDependency"] = "circular-dependency";
|
|
154
|
+
IssueType2["DocDrift"] = "doc-drift";
|
|
155
|
+
IssueType2["NamingInconsistency"] = "naming-inconsistency";
|
|
156
|
+
IssueType2["NamingQuality"] = "naming-quality";
|
|
157
|
+
IssueType2["ArchitectureInconsistency"] = "architecture-inconsistency";
|
|
158
|
+
IssueType2["DeadCode"] = "dead-code";
|
|
159
|
+
IssueType2["MissingTypes"] = "missing-types";
|
|
160
|
+
IssueType2["MagicLiteral"] = "magic-literal";
|
|
161
|
+
IssueType2["BooleanTrap"] = "boolean-trap";
|
|
162
|
+
IssueType2["AiSignalClarity"] = "ai-signal-clarity";
|
|
163
|
+
IssueType2["LowTestability"] = "low-testability";
|
|
164
|
+
IssueType2["AgentNavigationFailure"] = "agent-navigation-failure";
|
|
165
|
+
IssueType2["AmbiguousApi"] = "ambiguous-api";
|
|
166
|
+
IssueType2["ChangeAmplification"] = "change-amplification";
|
|
167
|
+
return IssueType2;
|
|
168
|
+
})(IssueType || {});
|
|
169
|
+
var IssueTypeSchema = import_zod.z.nativeEnum(IssueType);
|
|
170
|
+
var AnalysisStatus = /* @__PURE__ */ ((AnalysisStatus2) => {
|
|
171
|
+
AnalysisStatus2["Processing"] = "processing";
|
|
172
|
+
AnalysisStatus2["Completed"] = "completed";
|
|
173
|
+
AnalysisStatus2["Failed"] = "failed";
|
|
174
|
+
return AnalysisStatus2;
|
|
175
|
+
})(AnalysisStatus || {});
|
|
176
|
+
var AnalysisStatusSchema = import_zod.z.nativeEnum(AnalysisStatus);
|
|
177
|
+
var ModelTier = /* @__PURE__ */ ((ModelTier2) => {
|
|
178
|
+
ModelTier2["Compact"] = "compact";
|
|
179
|
+
ModelTier2["Standard"] = "standard";
|
|
180
|
+
ModelTier2["Extended"] = "extended";
|
|
181
|
+
ModelTier2["Frontier"] = "frontier";
|
|
182
|
+
return ModelTier2;
|
|
183
|
+
})(ModelTier || {});
|
|
184
|
+
var ModelTierSchema = import_zod.z.nativeEnum(ModelTier);
|
|
185
|
+
var LocationSchema = import_zod.z.object({
|
|
186
|
+
file: import_zod.z.string(),
|
|
187
|
+
line: import_zod.z.number(),
|
|
188
|
+
column: import_zod.z.number().optional(),
|
|
189
|
+
endLine: import_zod.z.number().optional(),
|
|
190
|
+
endColumn: import_zod.z.number().optional()
|
|
191
|
+
});
|
|
192
|
+
var IssueSchema = import_zod.z.object({
|
|
193
|
+
type: IssueTypeSchema,
|
|
194
|
+
severity: SeveritySchema,
|
|
195
|
+
message: import_zod.z.string(),
|
|
196
|
+
location: LocationSchema,
|
|
197
|
+
suggestion: import_zod.z.string().optional()
|
|
198
|
+
});
|
|
199
|
+
var MetricsSchema = import_zod.z.object({
|
|
200
|
+
tokenCost: import_zod.z.number().optional(),
|
|
201
|
+
complexityScore: import_zod.z.number().optional(),
|
|
202
|
+
consistencyScore: import_zod.z.number().optional(),
|
|
203
|
+
docFreshnessScore: import_zod.z.number().optional(),
|
|
204
|
+
// AI agent readiness metrics (v0.12+)
|
|
205
|
+
aiSignalClarityScore: import_zod.z.number().optional(),
|
|
206
|
+
agentGroundingScore: import_zod.z.number().optional(),
|
|
207
|
+
testabilityScore: import_zod.z.number().optional(),
|
|
208
|
+
docDriftScore: import_zod.z.number().optional(),
|
|
209
|
+
dependencyHealthScore: import_zod.z.number().optional(),
|
|
210
|
+
modelContextTier: ModelTierSchema.optional(),
|
|
211
|
+
// Business value metrics
|
|
212
|
+
estimatedMonthlyCost: import_zod.z.number().optional(),
|
|
213
|
+
estimatedDeveloperHours: import_zod.z.number().optional(),
|
|
214
|
+
comprehensionDifficultyIndex: import_zod.z.number().optional(),
|
|
215
|
+
// Extended metrics for specific spokes
|
|
216
|
+
totalSymbols: import_zod.z.number().optional(),
|
|
217
|
+
totalExports: import_zod.z.number().optional()
|
|
218
|
+
});
|
|
219
|
+
var AnalysisResultSchema = import_zod.z.object({
|
|
220
|
+
fileName: import_zod.z.string(),
|
|
221
|
+
issues: import_zod.z.array(IssueSchema),
|
|
222
|
+
metrics: MetricsSchema
|
|
223
|
+
});
|
|
224
|
+
var SpokeOutputSchema = import_zod.z.object({
|
|
225
|
+
results: import_zod.z.array(AnalysisResultSchema),
|
|
226
|
+
summary: import_zod.z.any(),
|
|
227
|
+
metadata: import_zod.z.object({
|
|
228
|
+
toolName: import_zod.z.string(),
|
|
229
|
+
version: import_zod.z.string(),
|
|
230
|
+
timestamp: import_zod.z.string()
|
|
231
|
+
}).catchall(import_zod.z.any()).optional()
|
|
232
|
+
});
|
|
233
|
+
var UnifiedReportSchema = import_zod.z.object({
|
|
234
|
+
summary: import_zod.z.object({
|
|
235
|
+
totalFiles: import_zod.z.number(),
|
|
236
|
+
totalIssues: import_zod.z.number(),
|
|
237
|
+
criticalIssues: import_zod.z.number(),
|
|
238
|
+
majorIssues: import_zod.z.number()
|
|
239
|
+
}),
|
|
240
|
+
results: import_zod.z.array(AnalysisResultSchema),
|
|
241
|
+
scoring: import_zod.z.object({
|
|
242
|
+
overall: import_zod.z.number(),
|
|
243
|
+
rating: import_zod.z.string(),
|
|
244
|
+
timestamp: import_zod.z.string(),
|
|
245
|
+
breakdown: import_zod.z.array(import_zod.z.object({
|
|
246
|
+
toolName: import_zod.z.string(),
|
|
247
|
+
score: import_zod.z.number()
|
|
248
|
+
}).catchall(import_zod.z.any()))
|
|
249
|
+
}).optional()
|
|
250
|
+
}).catchall(import_zod.z.any());
|
|
251
|
+
|
|
123
252
|
// src/types/language.ts
|
|
124
253
|
var Language = /* @__PURE__ */ ((Language2) => {
|
|
125
254
|
Language2["TypeScript"] = "typescript";
|
|
@@ -198,6 +327,16 @@ function validateSpokeOutput(toolName, output) {
|
|
|
198
327
|
errors
|
|
199
328
|
};
|
|
200
329
|
}
|
|
330
|
+
function validateWithSchema(schema, data) {
|
|
331
|
+
const result = schema.safeParse(data);
|
|
332
|
+
if (result.success) {
|
|
333
|
+
return { valid: true, data: result.data };
|
|
334
|
+
}
|
|
335
|
+
return {
|
|
336
|
+
valid: false,
|
|
337
|
+
errors: result.error.issues.map((e) => `${e.path.join(".")}: ${e.message}`)
|
|
338
|
+
};
|
|
339
|
+
}
|
|
201
340
|
|
|
202
341
|
// src/utils/file-scanner.ts
|
|
203
342
|
var import_glob = require("glob");
|
|
@@ -1218,43 +1357,47 @@ function estimateCostFromBudget(budget, model, config = {}) {
|
|
|
1218
1357
|
|
|
1219
1358
|
// src/business/productivity-metrics.ts
|
|
1220
1359
|
var SEVERITY_TIME_ESTIMATES = {
|
|
1221
|
-
critical: 4,
|
|
1222
|
-
major: 2,
|
|
1223
|
-
minor: 0.5,
|
|
1224
|
-
info: 0.25
|
|
1360
|
+
["critical" /* Critical */]: 4,
|
|
1361
|
+
["major" /* Major */]: 2,
|
|
1362
|
+
["minor" /* Minor */]: 0.5,
|
|
1363
|
+
["info" /* Info */]: 0.25
|
|
1225
1364
|
};
|
|
1226
1365
|
var DEFAULT_HOURLY_RATE = 75;
|
|
1227
1366
|
function calculateProductivityImpact(issues, hourlyRate = DEFAULT_HOURLY_RATE) {
|
|
1228
1367
|
const counts = {
|
|
1229
|
-
critical: issues.filter((i) => i.severity === "critical").length,
|
|
1230
|
-
major: issues.filter((i) => i.severity === "major").length,
|
|
1231
|
-
minor: issues.filter((i) => i.severity === "minor").length,
|
|
1232
|
-
info: issues.filter((i) => i.severity === "info").length
|
|
1368
|
+
["critical" /* Critical */]: issues.filter((i) => i.severity === "critical" /* Critical */).length,
|
|
1369
|
+
["major" /* Major */]: issues.filter((i) => i.severity === "major" /* Major */).length,
|
|
1370
|
+
["minor" /* Minor */]: issues.filter((i) => i.severity === "minor" /* Minor */).length,
|
|
1371
|
+
["info" /* Info */]: issues.filter((i) => i.severity === "info" /* Info */).length
|
|
1233
1372
|
};
|
|
1234
1373
|
const hours = {
|
|
1235
|
-
critical: counts
|
|
1236
|
-
major: counts
|
|
1237
|
-
minor: counts
|
|
1238
|
-
info: counts
|
|
1374
|
+
["critical" /* Critical */]: counts["critical" /* Critical */] * SEVERITY_TIME_ESTIMATES["critical" /* Critical */],
|
|
1375
|
+
["major" /* Major */]: counts["major" /* Major */] * SEVERITY_TIME_ESTIMATES["major" /* Major */],
|
|
1376
|
+
["minor" /* Minor */]: counts["minor" /* Minor */] * SEVERITY_TIME_ESTIMATES["minor" /* Minor */],
|
|
1377
|
+
["info" /* Info */]: counts["info" /* Info */] * SEVERITY_TIME_ESTIMATES["info" /* Info */]
|
|
1239
1378
|
};
|
|
1240
|
-
const totalHours = hours
|
|
1379
|
+
const totalHours = hours["critical" /* Critical */] + hours["major" /* Major */] + hours["minor" /* Minor */] + hours["info" /* Info */];
|
|
1241
1380
|
const totalCost = totalHours * hourlyRate;
|
|
1242
1381
|
return {
|
|
1243
1382
|
totalHours: Math.round(totalHours * 10) / 10,
|
|
1244
1383
|
hourlyRate,
|
|
1245
1384
|
totalCost: Math.round(totalCost),
|
|
1246
1385
|
bySeverity: {
|
|
1247
|
-
critical: {
|
|
1248
|
-
hours: Math.round(hours
|
|
1249
|
-
cost: Math.round(hours
|
|
1386
|
+
["critical" /* Critical */]: {
|
|
1387
|
+
hours: Math.round(hours["critical" /* Critical */] * 10) / 10,
|
|
1388
|
+
cost: Math.round(hours["critical" /* Critical */] * hourlyRate)
|
|
1389
|
+
},
|
|
1390
|
+
["major" /* Major */]: {
|
|
1391
|
+
hours: Math.round(hours["major" /* Major */] * 10) / 10,
|
|
1392
|
+
cost: Math.round(hours["major" /* Major */] * hourlyRate)
|
|
1250
1393
|
},
|
|
1251
|
-
|
|
1252
|
-
hours: Math.round(hours
|
|
1253
|
-
cost: Math.round(hours
|
|
1394
|
+
["minor" /* Minor */]: {
|
|
1395
|
+
hours: Math.round(hours["minor" /* Minor */] * 10) / 10,
|
|
1396
|
+
cost: Math.round(hours["minor" /* Minor */] * hourlyRate)
|
|
1254
1397
|
},
|
|
1255
|
-
|
|
1256
|
-
hours: Math.round(hours
|
|
1257
|
-
cost: Math.round(hours
|
|
1398
|
+
["info" /* Info */]: {
|
|
1399
|
+
hours: Math.round(hours["info" /* Info */] * 10) / 10,
|
|
1400
|
+
cost: Math.round(hours["info" /* Info */] * hourlyRate)
|
|
1258
1401
|
}
|
|
1259
1402
|
}
|
|
1260
1403
|
};
|
|
@@ -2985,20 +3128,34 @@ function getRepoMetadata(directory) {
|
|
|
2985
3128
|
}
|
|
2986
3129
|
// Annotate the CommonJS export names for ESM import in node:
|
|
2987
3130
|
0 && (module.exports = {
|
|
3131
|
+
AnalysisResultSchema,
|
|
3132
|
+
AnalysisStatus,
|
|
3133
|
+
AnalysisStatusSchema,
|
|
2988
3134
|
CONTEXT_TIER_THRESHOLDS,
|
|
2989
3135
|
DEFAULT_COST_CONFIG,
|
|
2990
3136
|
DEFAULT_EXCLUDE,
|
|
2991
3137
|
DEFAULT_TOOL_WEIGHTS,
|
|
3138
|
+
IssueSchema,
|
|
3139
|
+
IssueType,
|
|
3140
|
+
IssueTypeSchema,
|
|
2992
3141
|
LANGUAGE_EXTENSIONS,
|
|
2993
3142
|
Language,
|
|
3143
|
+
LocationSchema,
|
|
2994
3144
|
MODEL_PRICING_PRESETS,
|
|
3145
|
+
MetricsSchema,
|
|
3146
|
+
ModelTier,
|
|
3147
|
+
ModelTierSchema,
|
|
2995
3148
|
ParseError,
|
|
2996
3149
|
ParserFactory,
|
|
2997
3150
|
PythonParser,
|
|
2998
3151
|
SEVERITY_TIME_ESTIMATES,
|
|
2999
3152
|
SIZE_ADJUSTED_THRESHOLDS,
|
|
3153
|
+
Severity,
|
|
3154
|
+
SeveritySchema,
|
|
3155
|
+
SpokeOutputSchema,
|
|
3000
3156
|
TOOL_NAME_MAP,
|
|
3001
3157
|
TypeScriptParser,
|
|
3158
|
+
UnifiedReportSchema,
|
|
3002
3159
|
VAGUE_FILE_NAMES,
|
|
3003
3160
|
calculateAgentGrounding,
|
|
3004
3161
|
calculateAiSignalClarity,
|
|
@@ -3071,5 +3228,6 @@ function getRepoMetadata(directory) {
|
|
|
3071
3228
|
saveScoreEntry,
|
|
3072
3229
|
scanEntries,
|
|
3073
3230
|
scanFiles,
|
|
3074
|
-
validateSpokeOutput
|
|
3231
|
+
validateSpokeOutput,
|
|
3232
|
+
validateWithSchema
|
|
3075
3233
|
});
|
package/dist/index.mjs
CHANGED
|
@@ -1,11 +1,25 @@
|
|
|
1
1
|
import {
|
|
2
|
+
AnalysisResultSchema,
|
|
3
|
+
AnalysisStatus,
|
|
4
|
+
AnalysisStatusSchema,
|
|
2
5
|
CONTEXT_TIER_THRESHOLDS,
|
|
3
6
|
DEFAULT_TOOL_WEIGHTS,
|
|
7
|
+
IssueSchema,
|
|
8
|
+
IssueType,
|
|
9
|
+
IssueTypeSchema,
|
|
4
10
|
LANGUAGE_EXTENSIONS,
|
|
5
11
|
Language,
|
|
12
|
+
LocationSchema,
|
|
13
|
+
MetricsSchema,
|
|
14
|
+
ModelTier,
|
|
15
|
+
ModelTierSchema,
|
|
6
16
|
ParseError,
|
|
7
17
|
SIZE_ADJUSTED_THRESHOLDS,
|
|
18
|
+
Severity,
|
|
19
|
+
SeveritySchema,
|
|
20
|
+
SpokeOutputSchema,
|
|
8
21
|
TOOL_NAME_MAP,
|
|
22
|
+
UnifiedReportSchema,
|
|
9
23
|
calculateOverallScore,
|
|
10
24
|
formatScore,
|
|
11
25
|
formatToolScore,
|
|
@@ -18,7 +32,7 @@ import {
|
|
|
18
32
|
getToolWeight,
|
|
19
33
|
normalizeToolName,
|
|
20
34
|
parseWeightString
|
|
21
|
-
} from "./chunk-
|
|
35
|
+
} from "./chunk-D3D3NCRR.mjs";
|
|
22
36
|
|
|
23
37
|
// src/types/contract.ts
|
|
24
38
|
function validateSpokeOutput(toolName, output) {
|
|
@@ -67,6 +81,16 @@ function validateSpokeOutput(toolName, output) {
|
|
|
67
81
|
errors
|
|
68
82
|
};
|
|
69
83
|
}
|
|
84
|
+
function validateWithSchema(schema, data) {
|
|
85
|
+
const result = schema.safeParse(data);
|
|
86
|
+
if (result.success) {
|
|
87
|
+
return { valid: true, data: result.data };
|
|
88
|
+
}
|
|
89
|
+
return {
|
|
90
|
+
valid: false,
|
|
91
|
+
errors: result.error.issues.map((e) => `${e.path.join(".")}: ${e.message}`)
|
|
92
|
+
};
|
|
93
|
+
}
|
|
70
94
|
|
|
71
95
|
// src/utils/file-scanner.ts
|
|
72
96
|
import { glob } from "glob";
|
|
@@ -729,43 +753,47 @@ function estimateCostFromBudget(budget, model, config = {}) {
|
|
|
729
753
|
|
|
730
754
|
// src/business/productivity-metrics.ts
|
|
731
755
|
var SEVERITY_TIME_ESTIMATES = {
|
|
732
|
-
critical: 4,
|
|
733
|
-
major: 2,
|
|
734
|
-
minor: 0.5,
|
|
735
|
-
info: 0.25
|
|
756
|
+
["critical" /* Critical */]: 4,
|
|
757
|
+
["major" /* Major */]: 2,
|
|
758
|
+
["minor" /* Minor */]: 0.5,
|
|
759
|
+
["info" /* Info */]: 0.25
|
|
736
760
|
};
|
|
737
761
|
var DEFAULT_HOURLY_RATE = 75;
|
|
738
762
|
function calculateProductivityImpact(issues, hourlyRate = DEFAULT_HOURLY_RATE) {
|
|
739
763
|
const counts = {
|
|
740
|
-
critical: issues.filter((i) => i.severity === "critical").length,
|
|
741
|
-
major: issues.filter((i) => i.severity === "major").length,
|
|
742
|
-
minor: issues.filter((i) => i.severity === "minor").length,
|
|
743
|
-
info: issues.filter((i) => i.severity === "info").length
|
|
764
|
+
["critical" /* Critical */]: issues.filter((i) => i.severity === "critical" /* Critical */).length,
|
|
765
|
+
["major" /* Major */]: issues.filter((i) => i.severity === "major" /* Major */).length,
|
|
766
|
+
["minor" /* Minor */]: issues.filter((i) => i.severity === "minor" /* Minor */).length,
|
|
767
|
+
["info" /* Info */]: issues.filter((i) => i.severity === "info" /* Info */).length
|
|
744
768
|
};
|
|
745
769
|
const hours = {
|
|
746
|
-
critical: counts
|
|
747
|
-
major: counts
|
|
748
|
-
minor: counts
|
|
749
|
-
info: counts
|
|
770
|
+
["critical" /* Critical */]: counts["critical" /* Critical */] * SEVERITY_TIME_ESTIMATES["critical" /* Critical */],
|
|
771
|
+
["major" /* Major */]: counts["major" /* Major */] * SEVERITY_TIME_ESTIMATES["major" /* Major */],
|
|
772
|
+
["minor" /* Minor */]: counts["minor" /* Minor */] * SEVERITY_TIME_ESTIMATES["minor" /* Minor */],
|
|
773
|
+
["info" /* Info */]: counts["info" /* Info */] * SEVERITY_TIME_ESTIMATES["info" /* Info */]
|
|
750
774
|
};
|
|
751
|
-
const totalHours = hours
|
|
775
|
+
const totalHours = hours["critical" /* Critical */] + hours["major" /* Major */] + hours["minor" /* Minor */] + hours["info" /* Info */];
|
|
752
776
|
const totalCost = totalHours * hourlyRate;
|
|
753
777
|
return {
|
|
754
778
|
totalHours: Math.round(totalHours * 10) / 10,
|
|
755
779
|
hourlyRate,
|
|
756
780
|
totalCost: Math.round(totalCost),
|
|
757
781
|
bySeverity: {
|
|
758
|
-
critical: {
|
|
759
|
-
hours: Math.round(hours
|
|
760
|
-
cost: Math.round(hours
|
|
782
|
+
["critical" /* Critical */]: {
|
|
783
|
+
hours: Math.round(hours["critical" /* Critical */] * 10) / 10,
|
|
784
|
+
cost: Math.round(hours["critical" /* Critical */] * hourlyRate)
|
|
785
|
+
},
|
|
786
|
+
["major" /* Major */]: {
|
|
787
|
+
hours: Math.round(hours["major" /* Major */] * 10) / 10,
|
|
788
|
+
cost: Math.round(hours["major" /* Major */] * hourlyRate)
|
|
761
789
|
},
|
|
762
|
-
|
|
763
|
-
hours: Math.round(hours
|
|
764
|
-
cost: Math.round(hours
|
|
790
|
+
["minor" /* Minor */]: {
|
|
791
|
+
hours: Math.round(hours["minor" /* Minor */] * 10) / 10,
|
|
792
|
+
cost: Math.round(hours["minor" /* Minor */] * hourlyRate)
|
|
765
793
|
},
|
|
766
|
-
|
|
767
|
-
hours: Math.round(hours
|
|
768
|
-
cost: Math.round(hours
|
|
794
|
+
["info" /* Info */]: {
|
|
795
|
+
hours: Math.round(hours["info" /* Info */] * 10) / 10,
|
|
796
|
+
cost: Math.round(hours["info" /* Info */] * hourlyRate)
|
|
769
797
|
}
|
|
770
798
|
}
|
|
771
799
|
};
|
|
@@ -2495,20 +2523,34 @@ function getRepoMetadata(directory) {
|
|
|
2495
2523
|
return metadata;
|
|
2496
2524
|
}
|
|
2497
2525
|
export {
|
|
2526
|
+
AnalysisResultSchema,
|
|
2527
|
+
AnalysisStatus,
|
|
2528
|
+
AnalysisStatusSchema,
|
|
2498
2529
|
CONTEXT_TIER_THRESHOLDS,
|
|
2499
2530
|
DEFAULT_COST_CONFIG,
|
|
2500
2531
|
DEFAULT_EXCLUDE,
|
|
2501
2532
|
DEFAULT_TOOL_WEIGHTS,
|
|
2533
|
+
IssueSchema,
|
|
2534
|
+
IssueType,
|
|
2535
|
+
IssueTypeSchema,
|
|
2502
2536
|
LANGUAGE_EXTENSIONS,
|
|
2503
2537
|
Language,
|
|
2538
|
+
LocationSchema,
|
|
2504
2539
|
MODEL_PRICING_PRESETS,
|
|
2540
|
+
MetricsSchema,
|
|
2541
|
+
ModelTier,
|
|
2542
|
+
ModelTierSchema,
|
|
2505
2543
|
ParseError,
|
|
2506
2544
|
ParserFactory,
|
|
2507
2545
|
PythonParser,
|
|
2508
2546
|
SEVERITY_TIME_ESTIMATES,
|
|
2509
2547
|
SIZE_ADJUSTED_THRESHOLDS,
|
|
2548
|
+
Severity,
|
|
2549
|
+
SeveritySchema,
|
|
2550
|
+
SpokeOutputSchema,
|
|
2510
2551
|
TOOL_NAME_MAP,
|
|
2511
2552
|
TypeScriptParser,
|
|
2553
|
+
UnifiedReportSchema,
|
|
2512
2554
|
VAGUE_FILE_NAMES,
|
|
2513
2555
|
calculateAgentGrounding,
|
|
2514
2556
|
calculateAiSignalClarity,
|
|
@@ -2581,5 +2623,6 @@ export {
|
|
|
2581
2623
|
saveScoreEntry,
|
|
2582
2624
|
scanEntries,
|
|
2583
2625
|
scanFiles,
|
|
2584
|
-
validateSpokeOutput
|
|
2626
|
+
validateSpokeOutput,
|
|
2627
|
+
validateWithSchema
|
|
2585
2628
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aiready/core",
|
|
3
|
-
"version": "0.19.
|
|
3
|
+
"version": "0.19.3",
|
|
4
4
|
"description": "Shared utilities for AIReady analysis tools",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.mjs",
|
|
@@ -48,7 +48,8 @@
|
|
|
48
48
|
"chalk": "^5.4.1",
|
|
49
49
|
"glob": "^13.0.0",
|
|
50
50
|
"ignore": "^7.0.0",
|
|
51
|
-
"typescript": "^5.9.3"
|
|
51
|
+
"typescript": "^5.9.3",
|
|
52
|
+
"zod": "^4.3.6"
|
|
52
53
|
},
|
|
53
54
|
"scripts": {
|
|
54
55
|
"build": "tsup src/index.ts src/client.ts --format cjs,esm --dts",
|