pub(super) struct UserRecordSink {
broker: Option<Arc<Broker>>,
block_id: String,
filestore: Option<Arc<FileStore>>,
mstore: Option<Arc<Store>>,
}Expand description
Writes the user’s message to the transcript, as the record the persistent
Claude controller writes for each stdin line (Phase 5a-3c): a
{"type":"user","message":{...}} line in the block’s file and the agent’s
global zone, published as an echo: "stdin" event — the pane already shows
the message (its agent-message-accepted node), so the event only keeps
its stream gap-free. Without it these CLIs’ transcripts hold no trace of
what the user sent: gone on reload, absent from History, and a turn the
live feed can’t roll off
(SPEC_AGENT_PANE_BOUNDED_LIVE_WINDOW_MIGRATION_2026_09_23.md §6.9).
Written only AFTER the prompt was delivered — the stdin write succeeded,
or the container exec started — like the persistent controller’s
delivery-before-persistence order: a failed spawn, pipe or exec must not
leave the transcript claiming a turn that never happened (Codex review).
Only for output formats whose CLI doesn’t echo the prompt itself (see
persists_user_record).
Fields§
§broker: Option<Arc<Broker>>§block_id: String§filestore: Option<Arc<FileStore>>§mstore: Option<Arc<Store>>Implementations§
Auto Trait Implementations§
impl !RefUnwindSafe for UserRecordSink
impl !UnwindSafe for UserRecordSink
impl Freeze for UserRecordSink
impl Send for UserRecordSink
impl Sync for UserRecordSink
impl Unpin for UserRecordSink
impl UnsafeUnpin for UserRecordSink
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
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> 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