#[non_exhaustive]pub enum ErrorKind {
ParseError,
InvalidRequest,
MethodNotFound,
InvalidParams,
InternalError,
Unauthorized,
NotFound,
AgentDisconnected,
RateLimit,
StaleProtocol,
PayloadTooLarge,
}Expand description
All KLP-defined error kinds (SPEC §2.12.9 table).
Wire-encoded verbatim as the variant name ("Unauthorized",
"RateLimit", "StaleProtocol", …) to match the SPEC §2.12.9
table 1:1 — this is the one place in the codebase that breaks
from the otherwise-uniform snake_case convention, because the
spec doc shows PascalCase wire and we keep that contract.
#[non_exhaustive] so SPEC §2.12.9 can grow new error kinds in
a future revision without forcing a wire-protocol bump —
downstream Rust consumers see a compile-time nudge to add a
wildcard arm.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
ParseError
-32700 — request body wasn’t valid JSON.
InvalidRequest
-32600 — JSON-RPC envelope rejected (missing jsonrpc
field, non-string method, etc.) OR a non-handshake method
was invoked before system.handshake completed.
MethodNotFound
-32601 — method name not registered on this agent’s
dispatcher.
InvalidParams
-32602 — params failed schema validation for the named
method.
InternalError
-32603 — agent-side panic / unexpected failure. Always
returned with a redacted message — the original error lives
in the agent log.
-32000 — authorization failure. The connection is authed
(we know the SID/UID) but the caller isn’t allowed to do
this thing: invoking a job whose manifest has
user_invokable=false, killing a run_id belonging to
another connection, ack-ing a notification not addressed to
the caller’s PC / group / all audience.
NotFound
-32001 — referenced job_id / run_id / notification_id
doesn’t exist.
AgentDisconnected
-32002 — agent isn’t connected to NATS right now, so
fan-out / publish-side operations can’t be served. The
client SHOULD show a transient banner and retry on the
next state push.
RateLimit
-32003 — connection exceeded the 60 req/min cap. The
client SHOULD back off (the agent doesn’t tell it for how
long; 1 s is a safe minimum).
StaleProtocol
-32004 — handshake negotiated a protocol version that one
side no longer supports. Treat as fatal: the client must
upgrade (or the agent must be downgraded).
PayloadTooLarge
-32005 — message body exceeded the 1 MiB framing limit
(SPEC §2.12.2). stdout_chunk payloads must be split before
hitting this.
Implementations§
Source§impl ErrorKind
impl ErrorKind
Sourcepub fn code(self) -> i32
pub fn code(self) -> i32
JSON-RPC code field for this kind. Pre-baked so the dispatch
path doesn’t accidentally drift away from the table — the only
blessed mapping lives here.
Sourcepub fn default_message(self) -> &'static str
pub fn default_message(self) -> &'static str
Default human-readable message. Agents may override per-call
when they have a more specific phrasing; tests and the spec
table use these.
Trait Implementations§
impl Copy for ErrorKind
Source§impl<'de> Deserialize<'de> for ErrorKind
impl<'de> Deserialize<'de> for ErrorKind
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>,
impl Eq for ErrorKind
Source§impl JsonSchema for ErrorKind
impl JsonSchema for ErrorKind
Source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Source§fn json_schema(generator: &mut SchemaGenerator) -> Schema
fn json_schema(generator: &mut SchemaGenerator) -> Schema
Source§fn inline_schema() -> bool
fn inline_schema() -> bool
$ref keyword. Read moreimpl StructuralPartialEq for ErrorKind
Auto Trait Implementations§
impl Freeze for ErrorKind
impl RefUnwindSafe for ErrorKind
impl Send for ErrorKind
impl Sync for ErrorKind
impl Unpin for ErrorKind
impl UnsafeUnpin for ErrorKind
impl UnwindSafe for ErrorKind
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§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.