@ai2070/l0
Version:
L0: The Missing Reliability Substrate for AI
172 lines • 4.9 kB
TypeScript
import type { GuardrailViolation } from "./guardrails";
import type { BackoffStrategy } from "./retry";
import type { FailureType, RecoveryStrategy, RecoveryPolicy } from "./observability";
export declare const L0RecordedEventTypes: {
readonly START: "START";
readonly TOKEN: "TOKEN";
readonly CHECKPOINT: "CHECKPOINT";
readonly GUARDRAIL: "GUARDRAIL";
readonly DRIFT: "DRIFT";
readonly RETRY: "RETRY";
readonly FALLBACK: "FALLBACK";
readonly CONTINUATION: "CONTINUATION";
readonly COMPLETE: "COMPLETE";
readonly ERROR: "ERROR";
};
export type L0RecordedEventType = (typeof L0RecordedEventTypes)[keyof typeof L0RecordedEventTypes];
export interface SerializedOptions {
prompt?: string;
model?: string;
retry?: {
attempts?: number;
maxRetries?: number;
baseDelay?: number;
maxDelay?: number;
backoff?: BackoffStrategy;
};
timeout?: {
initialToken?: number;
interToken?: number;
};
checkIntervals?: {
guardrails?: number;
drift?: number;
checkpoint?: number;
};
continueFromLastKnownGoodToken?: boolean;
detectDrift?: boolean;
detectZeroTokens?: boolean;
fallbackCount?: number;
guardrailCount?: number;
metadata?: Record<string, unknown>;
}
export interface SerializedError {
name: string;
message: string;
code?: string;
stack?: string;
metadata?: Record<string, unknown>;
}
export interface GuardrailEventResult {
violations: GuardrailViolation[];
shouldRetry: boolean;
shouldHalt: boolean;
}
export interface DriftEventResult {
detected: boolean;
types: string[];
confidence: number;
}
export type L0RecordedEvent = L0StartEvent | L0TokenEvent | L0CheckpointEvent | L0GuardrailEvent | L0DriftEvent | L0RetryEvent | L0FallbackEvent | L0ContinuationEvent | L0CompleteEvent | L0ErrorEvent;
export interface L0StartEvent {
type: "START";
ts: number;
options: SerializedOptions;
}
export interface L0TokenEvent {
type: "TOKEN";
ts: number;
value: string;
index: number;
}
export interface L0CheckpointEvent {
type: "CHECKPOINT";
ts: number;
at: number;
content: string;
}
export interface L0GuardrailEvent {
type: "GUARDRAIL";
ts: number;
at: number;
result: GuardrailEventResult;
}
export interface L0DriftEvent {
type: "DRIFT";
ts: number;
at: number;
result: DriftEventResult;
}
export interface L0RetryEvent {
type: "RETRY";
ts: number;
reason: string;
attempt: number;
countsTowardLimit: boolean;
}
export interface L0FallbackEvent {
type: "FALLBACK";
ts: number;
to: number;
}
export interface L0ContinuationEvent {
type: "CONTINUATION";
ts: number;
checkpoint: string;
at: number;
}
export interface L0CompleteEvent {
type: "COMPLETE";
ts: number;
content: string;
tokenCount: number;
}
export interface L0ErrorEvent {
type: "ERROR";
ts: number;
error: SerializedError;
failureType: FailureType;
recoveryStrategy: RecoveryStrategy;
policy: RecoveryPolicy;
}
export interface L0EventEnvelope {
streamId: string;
seq: number;
event: L0RecordedEvent;
}
export interface L0EventStore {
append(streamId: string, event: L0RecordedEvent): Promise<void>;
getEvents(streamId: string): Promise<L0EventEnvelope[]>;
exists(streamId: string): Promise<boolean>;
getLastEvent(streamId: string): Promise<L0EventEnvelope | null>;
getEventsAfter(streamId: string, afterSeq: number): Promise<L0EventEnvelope[]>;
delete(streamId: string): Promise<void>;
listStreams(): Promise<string[]>;
}
export interface L0Snapshot {
streamId: string;
seq: number;
ts: number;
content: string;
tokenCount: number;
checkpoint: string;
violations: GuardrailViolation[];
driftDetected: boolean;
retryAttempts: number;
networkRetryCount: number;
fallbackIndex: number;
}
export interface L0EventStoreWithSnapshots extends L0EventStore {
saveSnapshot(snapshot: L0Snapshot): Promise<void>;
getSnapshot(streamId: string): Promise<L0Snapshot | null>;
getSnapshotBefore(streamId: string, seq: number): Promise<L0Snapshot | null>;
}
export type L0ExecutionMode = "live" | "record" | "replay";
export interface L0ReplayOptions {
streamId: string;
eventStore: L0EventStore;
speed?: number;
fireCallbacks?: boolean;
fromSeq?: number;
toSeq?: number;
}
export interface L0RecordOptions {
eventStore: L0EventStore;
streamId?: string;
saveSnapshots?: boolean;
snapshotInterval?: number;
}
export declare function serializeError(error: Error): SerializedError;
export declare function deserializeError(stored: SerializedError): Error;
export declare function generateStreamId(): string;
//# sourceMappingURL=events.d.ts.map