Expand description
Streaming - Event delivery and persistence
This module handles delivery of events to consumers. It subscribes to kernel events and delivers them via SSE, persistence, etc.
§Important: Source of Truth
IDs and Events are DEFINED in kernel/ (source of truth).
This module RE-EXPORTS them for convenience and provides:
- event_logger.rs: Append-only event log (EventStore, EventLog)
- event_stream.rs: Wire format for SSE (StreamEvent, data-* protocol)
§Architecture
ExecutionKernel (owns IDs and Events)
│
│ emit events
▼
┌─────────────────────────────────────────────────────────┐
│ streaming/ │
│ ┌────────────┐ ┌────────────────────┐ │
│ │event_logger│ │ event_stream.rs │ │
│ │ (persist) │ │ (wire format) │ │
│ └────────────┘ └─────────┬──────────┘ │
└────────────────────────────┼────────────────────────────┘
│
┌─────────────┼─────────────────┐
▼ ▼ ▼
┌──────────┐ ┌───────────┐ ┌───────────┐
│ TUI │ │ GUI (SSE) │ │ telemetry │
│(ratatui) │ │ (web) │ │ (OTel) │
└──────────┘ └───────────┘ └───────────┘§Event Protocol
All events use data-* prefix for SSE compatibility:
- Standard:
data-text-start,data-text-delta,data-finish, etc. - Custom:
data-execution-start,data-step-start, etc.
@see docs/TECHNICAL/01-EXECUTION-TELEMETRY.md @see https://ai-sdk.dev/docs/ai-sdk-ui/stream-protocol
Re-exports§
pub use crate::kernel::prefixes;pub use crate::kernel::ArtifactId;pub use crate::kernel::ControlAction;pub use crate::kernel::ControlActor;pub use crate::kernel::ControlEvent;pub use crate::kernel::ControlOutcome;pub use crate::kernel::DecisionAlternative;pub use crate::kernel::DecisionInput;pub use crate::kernel::DecisionRecord;pub use crate::kernel::DecisionType;pub use crate::kernel::Event;pub use crate::kernel::ExecutionContext;pub use crate::kernel::ExecutionEvent;pub use crate::kernel::ExecutionEventType;pub use crate::kernel::ExecutionId;pub use crate::kernel::GraphId;pub use crate::kernel::MessageId;pub use crate::kernel::ModelContext;pub use crate::kernel::NodeId;pub use crate::kernel::ParentLink;pub use crate::kernel::ParentType;pub use crate::kernel::RunId;pub use crate::kernel::StepId;pub use crate::kernel::StepType;pub use crate::kernel::TenantId;pub use crate::kernel::ThreadId;pub use crate::kernel::UserId;pub use protection::DataDestination;pub use protection::EncryptionProcessor;pub use protection::OutputProcessor;pub use protection::PiiProtectionProcessor;pub use protection::ProcessedEvent;pub use protection::ProcessorPipeline;pub use protection::ProtectionContext;
Modules§
- protection
- Streaming Protection Layer
Structs§
- Event
Emitter - Event emitter - collects and filters events during execution
- Event
Log - Event log - wraps an event store with subscription support
- Event
LogEntry - Event log entry with sequence number
- InMemory
Event Store - In-memory event store (for testing/development)
- Jsonl
Event Store - JSONL-based event store
- Jsonl
State Store - JSONL-based state store
- Protected
Event Emitter - Protected Event Emitter
Enums§
- Stream
Event - StreamEvent - All streaming events with
data-*prefix - Stream
Mode - StreamMode - Controls what events are included in the stream
Traits§
- Event
Store - Event store trait - persistence backend
Type Aliases§
- Event
Stream - Event stream type - async stream of events