@ai2070/l0
Version:
L0: The Missing Reliability Substrate for AI
135 lines (134 loc) • 4.22 kB
JavaScript
import { z } from "zod4";
import { L0ResultSchema } from "./l0";
const ChunkStrategySchema = z.enum([
"token",
"char",
"paragraph",
"sentence"
]);
const ContextRestorationStrategySchema = z.enum(["adjacent", "overlap", "full"]);
const WindowOptionsSchema = z.object({
size: z.number().optional(),
overlap: z.number().optional(),
strategy: ChunkStrategySchema.optional(),
estimateTokens: z.function().optional(),
preserveParagraphs: z.boolean().optional(),
preserveSentences: z.boolean().optional(),
metadata: z.record(z.string(), z.any()).optional()
});
const DocumentChunkSchema = z.object({
index: z.number(),
content: z.string(),
startPos: z.number(),
endPos: z.number(),
tokenCount: z.number(),
charCount: z.number(),
isFirst: z.boolean(),
isLast: z.boolean(),
totalChunks: z.number(),
metadata: z.record(z.string(), z.any()).optional()
});
const WindowProcessResultSchema = z.object({
chunk: DocumentChunkSchema,
result: L0ResultSchema.optional(),
status: z.enum(["success", "error"]),
error: z.instanceof(Error).optional(),
duration: z.number()
});
const WindowStatsSchema = z.object({
totalChunks: z.number(),
totalChars: z.number(),
totalTokens: z.number(),
avgChunkSize: z.number(),
avgChunkTokens: z.number(),
overlapSize: z.number(),
strategy: ChunkStrategySchema
});
const DocumentWindowSchema = z.object({
document: z.string(),
totalChunks: z.number(),
currentIndex: z.number(),
options: z.any(),
// Required<WindowOptions>
get: z.function(),
current: z.function(),
next: z.function(),
prev: z.function(),
jump: z.function(),
reset: z.function(),
getAllChunks: z.function(),
getRange: z.function(),
hasNext: z.function(),
hasPrev: z.function(),
processAll: z.function(),
processSequential: z.function(),
processParallel: z.function(),
getStats: z.function()
});
const ContextRestorationOptionsSchema = z.object({
enabled: z.boolean().optional(),
strategy: ContextRestorationStrategySchema.optional(),
maxAttempts: z.number().optional(),
onRestore: z.function().optional()
});
const L0WindowOptionsSchema = z.object({
// L0Options fields (simplified - actual L0Options has many function fields)
__outputType: z.unknown().optional(),
stream: z.function(),
context: z.record(z.string(), z.unknown()).optional(),
fallbackStreams: z.array(z.function()).optional(),
guardrails: z.array(z.any()).optional(),
retry: z.any().optional(),
timeout: z.object({
initialToken: z.number().optional(),
interToken: z.number().optional()
}).optional(),
signal: z.instanceof(AbortSignal).optional(),
monitoring: z.any().optional(),
checkIntervals: z.any().optional(),
detectDrift: z.boolean().optional(),
detectZeroTokens: z.boolean().optional(),
continueFromLastKnownGoodToken: z.boolean().optional(),
buildContinuationPrompt: z.function().optional(),
deduplicateContinuation: z.boolean().optional(),
deduplicationOptions: z.any().optional(),
onStart: z.function().optional(),
onComplete: z.function().optional(),
onError: z.function().optional(),
onEvent: z.function().optional(),
onViolation: z.function().optional(),
onRetry: z.function().optional(),
onFallback: z.function().optional(),
onResume: z.function().optional(),
onCheckpoint: z.function().optional(),
onTimeout: z.function().optional(),
onAbort: z.function().optional(),
onDrift: z.function().optional(),
onToolCall: z.function().optional(),
interceptors: z.array(z.any()).optional(),
adapter: z.any().optional(),
adapterOptions: z.unknown().optional(),
// L0WindowOptions additions
window: DocumentWindowSchema.optional(),
chunkIndex: z.number().optional(),
contextRestoration: ContextRestorationOptionsSchema.optional()
});
const WindowPresetSchema = z.object({
name: z.string(),
size: z.number(),
overlap: z.number(),
strategy: ChunkStrategySchema
});
export {
ChunkStrategySchema,
ContextRestorationOptionsSchema,
ContextRestorationStrategySchema,
DocumentChunkSchema,
DocumentWindowSchema,
L0WindowOptionsSchema,
WindowOptionsSchema,
WindowPresetSchema,
WindowProcessResultSchema,
WindowStatsSchema
};
//# sourceMappingURL=window.js.map