@ai2070/l0
Version:
L0: The Missing Reliability Substrate for AI
110 lines • 3.75 kB
JavaScript
import { z } from "zod4";
export const GuardrailViolationSchema = z.object({
rule: z.string(),
message: z.string(),
severity: z.enum(["warning", "error", "fatal"]),
position: z.number().optional(),
recoverable: z.boolean(),
timestamp: z.number().optional(),
context: z.record(z.string(), z.unknown()).optional(),
suggestion: z.string().optional(),
});
export const GuardrailContextSchema = z.object({
content: z.string(),
checkpoint: z.string().optional(),
delta: z.string().optional(),
tokenCount: z.number(),
completed: z.boolean(),
metadata: z.record(z.string(), z.any()).optional(),
previousViolations: z
.array(z.lazy(() => GuardrailViolationSchema))
.optional(),
});
export const GuardrailRuleSchema = z.object({
name: z.string(),
description: z.string().optional(),
check: z.function(),
streaming: z.boolean().optional(),
severity: z.enum(["warning", "error", "fatal"]).optional(),
recoverable: z.boolean().optional(),
});
export const GuardrailStateSchema = z.object({
violations: z.array(GuardrailViolationSchema),
violationsByRule: z.map(z.string(), z.array(GuardrailViolationSchema)),
hasFatalViolations: z.boolean(),
hasErrorViolations: z.boolean(),
violationCount: z.number(),
lastCheckTime: z.number().optional(),
});
export const GuardrailConfigSchema = z.object({
rules: z.array(GuardrailRuleSchema),
stopOnFatal: z.boolean().optional(),
enableStreaming: z.boolean().optional(),
checkInterval: z.number().optional(),
onViolation: z.function().optional(),
onPhaseStart: z.function().optional(),
onPhaseEnd: z.function().optional(),
onRuleStart: z.function().optional(),
onRuleEnd: z.function().optional(),
});
export const GuardrailResultSchema = z.object({
passed: z.boolean(),
violations: z.array(GuardrailViolationSchema),
shouldRetry: z.boolean(),
shouldHalt: z.boolean(),
summary: z.object({
total: z.number(),
fatal: z.number(),
errors: z.number(),
warnings: z.number(),
}),
});
export const JsonStructureSchema = z.object({
openBraces: z.number(),
closeBraces: z.number(),
openBrackets: z.number(),
closeBrackets: z.number(),
inString: z.boolean(),
isBalanced: z.boolean(),
issues: z.array(z.string()),
});
export const MarkdownStructureSchema = z.object({
openFences: z.number(),
fenceLanguages: z.array(z.string()),
inFence: z.boolean(),
headers: z.array(z.number()),
listDepth: z.number(),
issues: z.array(z.string()),
});
export const LatexStructureSchema = z.object({
openEnvironments: z.array(z.string()),
isBalanced: z.boolean(),
issues: z.array(z.string()),
});
export const PatternConfigSchema = z.object({
patterns: z.array(z.union([z.string(), z.instanceof(RegExp)])),
isBadPattern: z.boolean(),
message: z.string().optional(),
fatal: z.boolean().optional(),
});
export const DriftConfigSchema = z.object({
detectToneShift: z.boolean().optional(),
detectMetaCommentary: z.boolean().optional(),
detectRepetition: z.boolean().optional(),
detectEntropySpike: z.boolean().optional(),
entropyThreshold: z.number().optional(),
repetitionThreshold: z.number().optional(),
});
export const FunctionCallStructureSchema = z.object({
name: z.string().optional(),
arguments: z.string().optional(),
parsedArguments: z.record(z.string(), z.any()).optional(),
isValid: z.boolean(),
errors: z.array(z.string()),
});
export const SchemaValidationSchema = z.object({
valid: z.boolean(),
errors: z.array(z.string()),
parsed: z.any().optional(),
});
//# sourceMappingURL=guardrails.js.map