pub enum Capability {
WireV2,
JwsAgentCard,
CardEtag,
A2ABridge,
EtereCitizenTrust,
SafeHttp,
ClockSkew60s,
StreamingTransfer,
DeferredDecision,
}Expand description
A protocol capability advertised by an agent.
Adding a variant:
- Append at the end — never insert in the middle.
- Pick the next free
as_bit()discriminant. - Pick a stable lowercase-kebab-case
as_str()name. - Add to
Capability::ALL. - Document the semantics in
docs/protocol-v2.md.
Variants§
WireV2
Sender and recipient speak wire v2 (aex-*:v2 prefix). Required
for any v2 transfer; absence implies v1-only.
JwsAgentCard
Agent publishes a JWS-signed /.well-known/agent-card.json
per ADR-0025. Required for did:web binding.
CardEtag
Agent supports the cache freshness protocol (If-None-Match
conditional GET on agent card; ADR-0046).
A2ABridge
Agent supports A2A delegation chain receive (bridge adapter from Google A2A v1.0 task protocol). Optional, v2.1+ in most deployments.
EtereCitizenTrust
Agent’s identity is verified by EtereCitizen reputation index on Base L2 (ADR-0040). Present only on did:ethr agent cards whose key is registered on-chain.
SafeHttp
Agent supports SSRF-resistant outbound HTTP via aex-net::safe_http
(ADR-0045) — relevant when this agent itself acts as a resolver
for downstream did:web fetches.
ClockSkew60s
Agent rejects clock skew > 60s on inbound messages (ADR-0044). Absence means v1-style 300s window is still accepted.
StreamingTransfer
Agent supports the streaming transfer mode (chunked uploads with intermediate ack). Reserved for v2.2.
DeferredDecision
Agent’s responses to inbound intents may be deferred — the
recipient takes time to decide before approving or rejecting
a transfer. Senders observing this bit MUST handle an HTTP
202 Accepted response and wait for an
aex-decision-response:v2 signed message before considering
the transfer settled.
The protocol takes no position on who the decider is (human prompt, secondary AI model, policy engine, consensus of multiple agents). The bit only signals “I do not answer synchronously”.
ADR-0049.
Implementations§
Source§impl Capability
impl Capability
Sourcepub const ALL: &'static [Capability]
pub const ALL: &'static [Capability]
All capabilities known to this build, in stable order.
Sourcepub const fn as_bit(self) -> u8
pub const fn as_bit(self) -> u8
Stable bit position in CapabilitySet. Never renumber.
Trait Implementations§
Source§impl Clone for Capability
impl Clone for Capability
Source§fn clone(&self) -> Capability
fn clone(&self) -> Capability
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 Capability
impl Debug for Capability
Source§impl Hash for Capability
impl Hash for Capability
Source§impl PartialEq for Capability
impl PartialEq for Capability
Source§fn eq(&self, other: &Capability) -> bool
fn eq(&self, other: &Capability) -> bool
self and other values to be equal, and is used by ==.