Expand description
Structured event system for cuenv.
This crate provides a unified event system that enables multiple UI frontends (CLI, TUI, Web) to subscribe to a single event stream. Events are emitted using tracing macros and captured by a custom tracing Layer.
§Architecture
┌─────────────────────────────────────────────────────────────────────────┐
│ cuenv-events crate │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌─────────────┐ │
│ │ Event Schema │ │ EventBus │ │ Tracing Layer│ │ Renderers │ │
│ │ (typed) │ │ (broadcast) │ │ (capture) │ │ (CLI/JSON) │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ └─────────────┘ │
└─────────────────────────────────────────────────────────────────────────┘§Usage
ⓘ
use cuenv_events::{EventBus, CuenvEventLayer, emit_task_started};
use tracing_subscriber::layer::SubscriberExt;
use tracing_subscriber::util::SubscriberInitExt;
// Create event bus and layer
let bus = EventBus::new();
let layer = CuenvEventLayer::new(bus.sender().inner);
// Initialize tracing with the layer
tracing_subscriber::registry()
.with(layer)
.init();
// Emit events using macros
emit_task_started!("build", "cargo build", false);Re-exports§
pub use bus::EventBus;pub use bus::EventReceiver;pub use bus::EventSender;pub use bus::SendError;pub use event::CiEvent;pub use event::CommandEvent;pub use event::CuenvEvent;pub use event::EventCategory;pub use event::EventSource;pub use event::InteractiveEvent;pub use event::OutputEvent;pub use event::Stream;pub use event::SystemEvent;pub use event::TaskEvent;pub use layer::CuenvEventLayer;pub use metadata::MetadataContext;pub use metadata::correlation_id;pub use metadata::set_correlation_id;pub use renderers::CliRenderer;pub use renderers::JsonRenderer;
Modules§
- bus
- Multi-subscriber
EventBusfor cuenv events. - event
- Event type definitions for structured cuenv events.
- layer
- Custom tracing Layer for capturing cuenv events.
- metadata
- Metadata management for cuenv events.
- renderers
- Event renderers for different output formats.
Macros§
- emit_
ci_ changed_ files - Emit a CI changed files found event.
- emit_
ci_ context - Emit a CI context detected event.
- emit_
ci_ project_ skipped - Emit a CI project skipped event.
- emit_
ci_ projects_ discovered - Emit a CI projects discovered event.
- emit_
ci_ report - Emit a CI report generated event.
- emit_
ci_ task_ executing - Emit a CI task executing event.
- emit_
ci_ task_ result - Emit a CI task result event.
- emit_
command_ completed - Emit a command completed event.
- emit_
command_ progress - Emit a command progress event.
- emit_
command_ started - Emit a command started event.
- emit_
prompt_ requested - Emit a prompt requested event.
- emit_
prompt_ resolved - Emit a prompt resolved event.
- emit_
shutdown - Emit a system shutdown event.
- emit_
stderr - Emit a stderr output event.
- emit_
stdout - Emit a stdout output event.
- emit_
supervisor_ log - Emit a supervisor log event.
- emit_
task_ cache_ hit - Emit a task cache hit event.
- emit_
task_ cache_ miss - Emit a task cache miss event.
- emit_
task_ completed - Emit a task completed event.
- emit_
task_ group_ completed - Emit a task group completed event.
- emit_
task_ group_ started - Emit a task group started event.
- emit_
task_ output - Emit a task output event.
- emit_
task_ started - Emit a task started event.
- emit_
wait_ progress - Emit a wait progress event.