Watch
1
0
Fork
You've already forked souveraine
0

turn errors reach every surface: Error event end-to-end, no more silent empty replies

This commit is contained in:
Fimeg 2026-07-16 12:55:49 -04:00
commit 33068d69ff
5 changed files with 49 additions and 4 deletions

View file

@ -284,6 +284,10 @@ pub enum StreamEvent {
Interstitial { text: String, register: crate::backend::Register },
#[serde(rename = "primary_complete")]
PrimaryComplete,
/// The turn failed in the substrate. Mirrors BackendEvent::Error so a
/// dead turn is never a silently-ended stream.
#[serde(rename = "error")]
Error { message: String },
#[serde(rename = "done")]
Done,
#[serde(rename = "ping")]
@ -315,6 +319,7 @@ impl StreamEvent {
StreamEvent::Outfit { .. } => "outfit",
StreamEvent::Interstitial { .. } => "interstitial",
StreamEvent::PrimaryComplete => "primary_complete",
StreamEvent::Error { .. } => "error",
StreamEvent::Done => "done",
StreamEvent::Ping => "ping",
}
@ -360,6 +365,7 @@ impl From<crate::backend::BackendEvent> for StreamEvent {
BE::Interstitial { text, register } => Self::Interstitial { text, register },
BE::Keepalive => Self::Ping,
BE::PrimaryComplete => Self::PrimaryComplete,
BE::Error { message } => Self::Error { message },
BE::Done => Self::Done,
}
}
@ -404,6 +410,7 @@ impl From<StreamEvent> for crate::backend::BackendEvent {
StreamEvent::Interstitial { text, register } => BE::Interstitial { text, register },
StreamEvent::Ping => BE::Keepalive,
StreamEvent::PrimaryComplete => BE::PrimaryComplete,
StreamEvent::Error { message } => BE::Error { message },
StreamEvent::Done => BE::Done,
}
}