Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ L0 includes 1,800+ tests covering all major reliability features.
| **📍 Last-Known-Good Token Resumption** | `continue_from_last_good_token` resumes from the last checkpoint on timeout or failure. No lost tokens. |
| **🧠 Drift Detection** | Detects repetition, stalls, and format drift before corruption propagates. |
| **🧱 Structured Output** | Guaranteed-valid JSON with Pydantic. Auto-corrects missing braces, commas, and markdown fences. |
| **📋 Pydantic Validation Models** | All L0 types available as Pydantic models for runtime validation, JSON serialization, and schema generation via `l0.pydantic`. |
| **🩹 JSON Auto-Healing** | Automatic correction of truncated or malformed JSON (missing braces, brackets, quotes), and repair of broken Markdown code fences. |
| **🛡️ Guardrails** | JSON, Markdown, and pattern validation with fast streaming checks. Delta-only checks run sync; full-content scans defer to async. |
| **⚡ Race: Fastest-Model Wins** | Run multiple models or providers in parallel and return the fastest valid stream. Ideal for ultra-low-latency chat. |
Expand Down Expand Up @@ -258,6 +259,25 @@ for prompt, result in zip(prompts, results):
print(f"{prompt}: {result.state.content.strip()}")
```

### Pydantic Validation Models

L0 provides Pydantic models for all its types, enabling runtime validation, JSON serialization, and schema generation:

```python
from l0.pydantic import StateModel, RetryModel, DriftResultModel

# Validate external data
state = StateModel(content="Hello", token_count=5, completed=True)

# Serialize to JSON
json_data = state.model_dump_json()

# Generate JSON schema for documentation or APIs
schema = StateModel.model_json_schema()
```

All L0 types have corresponding Pydantic models: `StateModel`, `RetryModel`, `TimeoutModel`, `ConsensusResultModel`, `DriftResultModel`, `MetricsSnapshotModel`, and more.

## Philosophy

- **No magic** - Everything is explicit and predictable
Expand Down
258 changes: 258 additions & 0 deletions src/l0/pydantic/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,258 @@
"""Pydantic models for L0 types.

This module provides Pydantic BaseModel equivalents for all L0 dataclasses,
enabling runtime validation, JSON serialization, and schema generation.

Usage:
from l0.pydantic import StateModel, RetryModel, TimeoutModel

# Validate data
state = StateModel(content="Hello", token_count=5)

# Serialize to JSON
json_data = state.model_dump_json()

# Generate JSON schema
schema = StateModel.model_json_schema()
"""

# Core types
# Consensus types
from .consensus import (
AgreementModel,
AgreementTypeModel,
ConflictResolutionModel,
ConsensusAnalysisModel,
ConsensusOutputModel,
ConsensusPresetModel,
ConsensusResultModel,
DisagreementModel,
DisagreementSeverityModel,
DisagreementValueModel,
FieldAgreementModel,
FieldConsensusModel,
StrategyModel,
)

# Drift types
from .drift import (
DriftConfigModel,
DriftResultModel,
)

# Error types
from .errors import (
ErrorCodeModel,
ErrorContextModel,
FailureTypeModel,
NetworkErrorAnalysisModel,
NetworkErrorTypeModel,
RecoveryPolicyModel,
RecoveryStrategyModel,
SerializedErrorModel,
)

# Event sourcing types
from .event_sourcing import (
EventEnvelopeModel,
RecordedEventModel,
RecordedEventTypeModel,
ReplayComparisonModel,
ReplayedStateModel,
SnapshotModel,
StreamMetadataModel,
)
from .event_sourcing import (
SerializedErrorModel as EventSourcingSerializedErrorModel,
)

# Event/observability types
from .events import (
CompleteEventModel,
ErrorEventModel,
ObservabilityEventModel,
ObservabilityEventTypeModel,
RetryAttemptEventModel,
SessionEndEventModel,
SessionStartEventModel,
)

# Guardrail types
from .guardrails import (
GuardrailConfigModel,
GuardrailContextModel,
GuardrailResultModel,
GuardrailResultSummaryModel,
GuardrailStateModel,
GuardrailViolationModel,
JsonAnalysisModel,
LatexAnalysisModel,
MarkdownAnalysisModel,
)

# Metrics types
from .metrics import (
MetricsSnapshotModel,
)

# Parallel types
from .parallel import (
AggregatedTelemetryModel,
ParallelOptionsModel,
ParallelResultModel,
RaceResultModel,
)

# Pipeline types
from .pipeline import (
PipelineOptionsModel,
PipelineResultModel,
PipelineStepModel,
StepContextModel,
StepResultModel,
)

# Pool types
from .pool import (
PoolOptionsModel,
PoolStatsModel,
)

# State machine types
from .state_machine import (
RuntimeStateModel,
StateTransitionModel,
)
from .types import (
BackoffStrategyModel,
CheckIntervalsModel,
ContentTypeModel,
DataPayloadModel,
ErrorCategoryModel,
ErrorTypeDelaysModel,
EventModel,
EventTypeModel,
ProgressModel,
RetryableErrorTypeModel,
RetryModel,
StateModel,
TelemetryContinuationModel,
TelemetryDriftModel,
TelemetryGuardrailsModel,
TelemetryMetricsModel,
TelemetryModel,
TelemetryNetworkModel,
TimeoutModel,
)

# Window types
from .window import (
ChunkResultModel,
ContextRestorationOptionsModel,
DocumentChunkModel,
ProcessingStatsModel,
WindowConfigModel,
WindowStatsModel,
)

__all__ = [
# Core types
"BackoffStrategyModel",
"CheckIntervalsModel",
"ContentTypeModel",
"DataPayloadModel",
"ErrorCategoryModel",
"ErrorTypeDelaysModel",
"EventModel",
"EventTypeModel",
"ProgressModel",
"RetryableErrorTypeModel",
"RetryModel",
"StateModel",
"TelemetryContinuationModel",
"TelemetryDriftModel",
"TelemetryGuardrailsModel",
"TelemetryMetricsModel",
"TelemetryModel",
"TelemetryNetworkModel",
"TimeoutModel",
# Error types
"ErrorCodeModel",
"ErrorContextModel",
"FailureTypeModel",
"NetworkErrorAnalysisModel",
"NetworkErrorTypeModel",
"RecoveryPolicyModel",
"RecoveryStrategyModel",
"SerializedErrorModel",
# Guardrail types
"GuardrailConfigModel",
"GuardrailContextModel",
"GuardrailResultModel",
"GuardrailResultSummaryModel",
"GuardrailStateModel",
"GuardrailViolationModel",
"JsonAnalysisModel",
"LatexAnalysisModel",
"MarkdownAnalysisModel",
# Event/observability types
"CompleteEventModel",
"ErrorEventModel",
"ObservabilityEventModel",
"ObservabilityEventTypeModel",
"RetryAttemptEventModel",
"SessionEndEventModel",
"SessionStartEventModel",
# Consensus types
"AgreementModel",
"AgreementTypeModel",
"ConflictResolutionModel",
"ConsensusAnalysisModel",
"ConsensusOutputModel",
"ConsensusPresetModel",
"ConsensusResultModel",
"DisagreementModel",
"DisagreementSeverityModel",
"DisagreementValueModel",
"FieldAgreementModel",
"FieldConsensusModel",
"StrategyModel",
# Parallel types
"AggregatedTelemetryModel",
"ParallelOptionsModel",
"ParallelResultModel",
"RaceResultModel",
# Pipeline types
"PipelineOptionsModel",
"PipelineResultModel",
"PipelineStepModel",
"StepContextModel",
"StepResultModel",
# Pool types
"PoolOptionsModel",
"PoolStatsModel",
# Window types
"ChunkResultModel",
"ContextRestorationOptionsModel",
"DocumentChunkModel",
"ProcessingStatsModel",
"WindowConfigModel",
"WindowStatsModel",
# Drift types
"DriftConfigModel",
"DriftResultModel",
# State machine types
"RuntimeStateModel",
"StateTransitionModel",
# Event sourcing types
"EventEnvelopeModel",
"EventSourcingSerializedErrorModel",
"RecordedEventModel",
"RecordedEventTypeModel",
"ReplayComparisonModel",
"ReplayedStateModel",
"SnapshotModel",
"StreamMetadataModel",
# Metrics types
"MetricsSnapshotModel",
]
Loading