pub enum Destination {
Local,
Remote(String),
}Expand description
Where a ToolClient sends a call.
§Why a transport has to say this
Egress does set membership on a host, and
every other outbound path hands it one — a model driver parses its base
URL, a peer client its card URL. A tool grant is tool://server/name,
which names a catalogue entry and not a destination, so a client cannot be
asked to parse a URL it may not have: it declares the answer, and the
declaration is what the allowlist judges.
§What each answer means, and what it does not claim
Local says this client opens no network connection from
this plane: tools compiled into the binary, an MCP server run as a child
process over stdio, a test double. It is not a claim that the far side
reaches nothing — a child process can open its own socket, and that is the
same residual as a compromised allowlisted endpoint. What it claims is that
no host of this plane’s choosing is being contacted, which is the question
an allowlist can answer.
Remote names the host. Deny-by-default applies to it once
an Egress is wired.
Variants§
Implementations§
Trait Implementations§
Source§impl Clone for Destination
impl Clone for Destination
Source§impl Debug for Destination
impl Debug for Destination
impl Eq for Destination
Source§impl PartialEq for Destination
impl PartialEq for Destination
impl StructuralPartialEq for Destination
Auto Trait Implementations§
impl Freeze for Destination
impl RefUnwindSafe for Destination
impl Send for Destination
impl Sync for Destination
impl Unpin for Destination
impl UnsafeUnpin for Destination
impl UnwindSafe for Destination
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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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<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