Skip to main content

Module streaming

Module streaming 

Source
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::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§

EventEmitter
Event emitter - collects and filters events during execution
EventLog
Event log - wraps an event store with subscription support
EventLogEntry
Event log entry with sequence number
InMemoryEventStore
In-memory event store (for testing/development)
JsonlEventStore
JSONL-based event store
JsonlStateStore
JSONL-based state store
ProtectedEventEmitter
Protected Event Emitter

Enums§

StreamEvent
StreamEvent - All streaming events with data-* prefix
StreamMode
StreamMode - Controls what events are included in the stream

Traits§

EventStore
Event store trait - persistence backend

Type Aliases§

EventStream
Event stream type - async stream of events