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