#[repr(i32)]pub enum ErrorCode {
NotFound = 404,
ToolAuthorizationRequired = 4_006,
ToolAuthorizationFailed = 4_007,
ProtocolVersionMismatch = 4_008,
McpServerNotFound = 4_014,
McpCapabilityNotSupported = 4_015,
SkillNameInvalid = 4_016,
SkillResourceNotAccessible = 4_017,
BlobNotAccessible = 4_018,
}Expand description
A2C-SMCP 协议错误码(v0.2.0 起;v0.2.1 加性追加 4016 / 4017 / 4018)。
镜像 Python 参考实现 a2c_smcp/smcp.py::ErrorCode,序列化 / 反序列化均为整数
(与协议 ErrorPayload.code 的线格式一致)。协议依据 / Protocol: error-handling.md。
⚠️ 与 error_codes 模块区分:本枚举是协议级闭集(is_protocol_error_payload 识别 +
client:* ack 必用);error_codes 是传输/管理层与工具/房间码。两者仅 404 重合,有意不合并。
语义要点 / Semantics:
ErrorCode::NotFound(404):通用「资源不存在」。本 SDK 用于client:*路由层 目标 Computer 名未命中(error-handling.md 明确「Computer 不存在」归 404);镜像协议已有定义,非新增。ErrorCode::McpServerNotFound(4014):v0.2.1 复用——SKILLname格式合法但不存在 (未注册 / 已卸载 / 孤儿)复用此码;name格式非法 →ErrorCode::SkillNameInvalid(4016);name有效但rel_path不可达 →ErrorCode::SkillResourceNotAccessible(4017)。- SKILL 通道不使用
4015:未声明resourcescapability 的 server 在物化阶段即被排除,不上送 Agent。 4017/4018的details.reason为开放枚举:解析方 MUST 容忍未知值并兜底 (默认「不重试 + 诊断」),未来可非破坏地新增 reason。
Mirrors the Python reference ErrorCode; serializes to / from an integer matching the
protocol ErrorPayload.code wire format.
Variants§
NotFound = 404
通用「资源不存在」/ Generic “resource not found”(含 client:* 路由层 Computer 名未命中)。
ToolAuthorizationRequired = 4_006
MCP 上游要求授权 / MCP upstream requires authorization。
ToolAuthorizationFailed = 4_007
MCP 上游授权失败 / MCP upstream authorization failed。
ProtocolVersionMismatch = 4_008
协议版本不匹配(承载于 HTTP 400 body)/ Protocol version mismatch (carried in HTTP 400 body)。
⚠️ MUST NOT 与 WS close code WS_VERSION_HANDSHAKE_REJECTED_CLOSE_CODE(4900)混用。
McpServerNotFound = 4_014
MCP Server 路由未命中 / MCP server not found(v0.2.1 复用于 SKILL name 合法但 Registry 未命中)。
McpCapabilityNotSupported = 4_015
MCP 能力不支持 / MCP capability not supported。
SkillNameInvalid = 4_016
SKILL name 违反 lexer 规则(格式硬错)/ SKILL name violates lexer rules (hard format error)。
SkillResourceNotAccessible = 4_017
SKILL 资源不可达 / SKILL resource not accessible(rel_path 穿越 / .skillenv forbidden / not_found / too_large)。
BlobNotAccessible = 4_018
二进制 blob 不可达 / Binary blob not accessible(invalid_handle / forbidden / gone / range)。