pub struct InjectionResponse {
pub success: bool,
pub request_id: String,
pub block_id: Option<String>,
pub error: Option<String>,
pub timestamp: u64,
pub effective_tier: Option<String>,
pub requires_stop: Option<bool>,
pub channel_verified: Option<bool>,
pub deferred: Option<bool>,
}Expand description
Response from a message injection attempt.
Fields§
§success: bool§request_id: String§block_id: Option<String>§error: Option<String>§timestamp: u64§effective_tier: Option<String>Tier the handler actually applied (after keyword/network escalation). Consumed by the sender-echo path so it doesn’t re-derive escalation.
requires_stop: Option<bool>Whether effective_tier == "sensitive" should actually STOP the
receiver (vs. tag-only for a cryptographically verified sender) —
see Handler::inject_message_inner’s requires_stop doc comment
(SPEC_JEKT_SENSITIVE_TIER_VERIFIED_SENDER_NO_STOP_2026_08_17.md).
Meaningless when effective_tier isn’t "sensitive". Threaded
through so the sender-echo path (including forwarded cross-instance
hops, which only see this struct’s serialized JSON, not the
original Handler call) renders the same STOP-or-tag-only marker
the receiver got, instead of re-deriving it from a narrower set of
fields.
channel_verified: Option<bool>The InjectionRequest::channel_verified verdict this delivery was
judged on, echoed back so a FORWARDING instance can render the same
TRUST= on the sender’s echoed marker that the receiver rendered
(SPEC_JEKT_CROSS_CHANNEL_TRUST_2026_09_02.md Phase B, codex P2 on
#3064). Only the receiving instance ever computes it — the forwarder
holds the sender’s HMAC key and so skips cross-channel verification
by design (§D2 step 2) — so without this the echo would show the
sender-side view next to a receiver-side ESCALATE=. Same
thread-it-through reasoning as requires_stop above. None off the
channel tier or when nothing could be checked.
deferred: Option<bool>Some(true): the target’s process is starting up, restarting or
stopping, so the message is queued and reaches it once the process is
up — accepted, not yet seen. Some(false): written to the agent now
(mid-turn included). None where nothing structured was attempted
(errors, PTY keystrokes, relay paths). Lets SendMessage tell its
caller which happened instead of claiming “injected” for both.
Trait Implementations§
Source§impl Clone for InjectionResponse
impl Clone for InjectionResponse
Source§fn clone(&self) -> InjectionResponse
fn clone(&self) -> InjectionResponse
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 InjectionResponse
impl Debug for InjectionResponse
Source§impl<'de> Deserialize<'de> for InjectionResponse
impl<'de> Deserialize<'de> for InjectionResponse
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for InjectionResponse
impl RefUnwindSafe for InjectionResponse
impl Send for InjectionResponse
impl Sync for InjectionResponse
impl Unpin for InjectionResponse
impl UnsafeUnpin for InjectionResponse
impl UnwindSafe for InjectionResponse
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,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
§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