@ai2070/l0
Version:
L0: The Missing Reliability Substrate for AI
139 lines (138 loc) • 3.82 kB
JavaScript
import { z } from "zod4";
const ComparisonStyleSchema = z.enum([
"strict",
"lenient"
]);
const ComparisonTypeSchema = z.enum([
"exact",
"schema",
"structural",
"fuzzy",
"numeric",
"mixed"
]);
const DifferenceTypeSchema = z.enum([
"missing",
"extra",
"different",
"type-mismatch",
"structure-mismatch",
"schema-violation"
]);
const DifferenceSeveritySchema = z.enum([
"error",
"warning",
"info"
]);
const ComparisonFunctionSchema = z.function();
const DifferenceSchema = z.object({
path: z.string(),
expected: z.any(),
actual: z.any(),
type: DifferenceTypeSchema,
severity: DifferenceSeveritySchema,
message: z.string(),
similarity: z.number().optional()
});
const EvaluationDetailsSchema = z.object({
exactMatch: z.boolean(),
schemaValid: z.boolean(),
structureMatch: z.boolean(),
contentSimilarity: z.number(),
fieldsCompared: z.number(),
fieldsMatched: z.number(),
comparisonType: ComparisonTypeSchema
});
const EvaluationResultSchema = z.object({
match: z.boolean(),
score: z.number(),
differences: z.array(DifferenceSchema),
details: EvaluationDetailsSchema,
metadata: z.record(z.string(), z.any()).optional()
});
const EvaluationOptionsSchema = z.object({
expected: z.any(),
actual: z.any(),
style: ComparisonStyleSchema.optional(),
threshold: z.number().optional(),
numericTolerance: z.number().optional(),
ignoreArrayOrder: z.boolean().optional(),
ignoreExtraFields: z.boolean().optional(),
customComparisons: z.record(z.string(), ComparisonFunctionSchema).optional(),
metadata: z.record(z.string(), z.any()).optional()
});
const EvaluationTestSchema = z.object({
name: z.string(),
expected: z.any(),
actual: z.any(),
style: ComparisonStyleSchema.optional(),
threshold: z.number().optional(),
metadata: z.record(z.string(), z.any()).optional()
});
const EvaluationTestResultSchema = z.object({
name: z.string(),
passed: z.boolean(),
result: EvaluationResultSchema,
metadata: z.record(z.string(), z.any()).optional()
});
const BatchEvaluationResultSchema = z.object({
passed: z.boolean(),
passCount: z.number(),
failCount: z.number(),
total: z.number(),
averageScore: z.number(),
results: z.array(EvaluationTestResultSchema),
summary: z.object({
exactMatches: z.number(),
schemaValid: z.number(),
fuzzyMatches: z.number(),
totalDifferences: z.number()
})
});
const StringComparisonOptionsSchema = z.object({
caseSensitive: z.boolean().optional(),
normalizeWhitespace: z.boolean().optional(),
algorithm: z.enum(["levenshtein", "jaro-winkler", "cosine"]).optional(),
threshold: z.number().optional()
});
const ObjectComparisonOptionsSchema = z.object({
style: ComparisonStyleSchema,
ignoreExtraFields: z.boolean(),
ignoreArrayOrder: z.boolean(),
numericTolerance: z.number(),
customComparisons: z.record(z.string(), ComparisonFunctionSchema).optional()
});
const SchemaValidationResultSchema = z.object({
valid: z.boolean(),
data: z.any().optional(),
errors: z.any().optional(),
// z.ZodError
differences: z.array(DifferenceSchema)
});
const EvaluationPresetSchema = z.object({
name: z.string(),
style: ComparisonStyleSchema,
threshold: z.number(),
ignoreArrayOrder: z.boolean(),
ignoreExtraFields: z.boolean(),
numericTolerance: z.number()
});
export {
BatchEvaluationResultSchema,
ComparisonFunctionSchema,
ComparisonStyleSchema,
ComparisonTypeSchema,
DifferenceSchema,
DifferenceSeveritySchema,
DifferenceTypeSchema,
EvaluationDetailsSchema,
EvaluationOptionsSchema,
EvaluationPresetSchema,
EvaluationResultSchema,
EvaluationTestResultSchema,
EvaluationTestSchema,
ObjectComparisonOptionsSchema,
SchemaValidationResultSchema,
StringComparisonOptionsSchema
};
//# sourceMappingURL=evaluate.js.map