#[non_exhaustive]pub enum InboundKind {
ExternalUser,
InternalSystem,
InterSession,
}Expand description
Binding context propagated to tool calls so extensions and MCP servers can route per-(channel, account_id, agent_id) tuple without re-deriving it from each tool call’s payload.
Serialised under _meta.nexo.binding in JSON-RPC tools/call
(extensions ignore unknown fields) and as the meta block of
MCP call_tool_with_meta.
agent_id is mandatory; the rest are Option because some
dispatch paths (delegation receive, heartbeat bootstrap, tests)
have no binding match — None is the correct state, not a
sentinel string.
mcp_channel_source is populated when the inbound that
triggered this turn arrived via an MCP channel server (e.g.,
"slack", "telegram"). Lets a tool distinguish
“telegram-binding answered via MCP slack server” from
“telegram-binding answered via native Telegram plugin” while
still seeing the same (channel, account_id) binding tuple.
Matches the goal_turns.source = "channel:slack" audit column.
3-way discriminator for the origin of an agent turn.
Mirrors the trichotomy used by inbound provenance tracking (external_user / inter_session / internal_system) so microapps can branch handlers on the message origin without re-deriving it from sender_id presence alone.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
ExternalUser
External end-user message via a channel plugin (whatsapp,
telegram, email, …), webhook receiver, or MCP-channel
server. sender_id is typically populated.
InternalSystem
System-injected turn (heartbeat tick, scheduler fire,
event-subscriber binding declared as internal_system).
sender_id is None.
InterSession
Inter-agent delegation receive. origin_session_id
carries the calling agent’s session.
Trait Implementations§
Source§impl Clone for InboundKind
impl Clone for InboundKind
Source§fn clone(&self) -> InboundKind
fn clone(&self) -> InboundKind
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for InboundKind
Source§impl Debug for InboundKind
impl Debug for InboundKind
Source§impl<'de> Deserialize<'de> for InboundKind
impl<'de> Deserialize<'de> for InboundKind
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<InboundKind, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<InboundKind, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
impl Eq for InboundKind
Source§impl PartialEq for InboundKind
impl PartialEq for InboundKind
Source§impl Serialize for InboundKind
impl Serialize for InboundKind
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
impl StructuralPartialEq for InboundKind
Auto Trait Implementations§
impl Freeze for InboundKind
impl RefUnwindSafe for InboundKind
impl Send for InboundKind
impl Sync for InboundKind
impl Unpin for InboundKind
impl UnsafeUnpin for InboundKind
impl UnwindSafe for InboundKind
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>,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
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