pub enum DaemonEvent {
PalaceCreated {
id: String,
name: String,
},
DrawerAdded {
palace_id: String,
palace_name: String,
drawer_count: usize,
timestamp: DateTime<Utc>,
content_preview: String,
},
DrawerDeleted {
palace_id: String,
drawer_count: usize,
},
DreamCompleted {
palace_id: Option<String>,
merged: usize,
pruned: usize,
compacted: usize,
closets_updated: usize,
duration_ms: u64,
},
StatusChanged {
total_drawers: usize,
total_vectors: usize,
total_kg_triples: usize,
},
}Expand description
Live daemon events broadcast to connected SSE subscribers.
Why: The dashboard needs push-driven updates so palace creation, drawer
add/delete, dream cycles, and aggregate status changes are visible without
polling. A single broadcast channel fans out to every connected browser.
What: Tagged enum serialized as {"type": "...", ...fields} over SSE.
Test: web::tests::sse_stream_emits_events subscribes, triggers a
mutation, and asserts the frame arrives.
Variants§
PalaceCreated
DrawerAdded
Fields
palace_name: StringFriendly palace name (Palace.name) at write time. Why: lets SSE consumers (the dashboard activity feed) render the human-readable label without a separate id→name lookup. Empty string if the emitter could not resolve the name.
timestamp: DateTime<Utc>Wall-clock timestamp when the drawer was added. Why: SSE receivers want to render “just now / 2m ago” relative to the daemon’s clock, not the time the SSE frame happens to arrive.
content_preview: StringShort preview of the drawer’s content (whitespace-collapsed,
truncated to ~80 chars with an ellipsis when cut). Why: the TUI
activity feed and dashboard ticker want to show what was
stored, not just the running drawer count. Empty when the
emitter could not resolve the content (legacy clients tolerate
the missing field via #[serde(default)]).
DrawerDeleted
DreamCompleted
Fields
StatusChanged
Trait Implementations§
Source§impl Clone for DaemonEvent
impl Clone for DaemonEvent
Source§fn clone(&self) -> DaemonEvent
fn clone(&self) -> DaemonEvent
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for DaemonEvent
impl Debug for DaemonEvent
Auto Trait Implementations§
impl Freeze for DaemonEvent
impl RefUnwindSafe for DaemonEvent
impl Send for DaemonEvent
impl Sync for DaemonEvent
impl Unpin for DaemonEvent
impl UnsafeUnpin for DaemonEvent
impl UnwindSafe for DaemonEvent
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more