kimi_wire/protocol/
jsonrpc.rs1use serde::{Deserialize, Serialize};
2use serde_json::Value;
3
4#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
7pub struct JsonRpcVersion(pub String);
8
9impl Default for JsonRpcVersion {
10 fn default() -> Self {
11 Self("2.0".to_string())
12 }
13}
14
15#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
17pub struct JsonRpcRequest<Params> {
18 pub jsonrpc: JsonRpcVersion,
20 pub method: String,
22 pub id: String,
24 pub params: Params,
26}
27
28#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
30pub struct JsonRpcNotification<Params> {
31 pub jsonrpc: JsonRpcVersion,
33 pub method: String,
35 pub params: Params,
37}
38
39#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
41pub struct JsonRpcSuccessResponse<Result> {
42 pub jsonrpc: JsonRpcVersion,
44 pub id: String,
46 pub result: Result,
48}
49
50#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
52pub struct JsonRpcErrorResponse {
53 pub jsonrpc: JsonRpcVersion,
55 pub id: String,
57 pub error: JsonRpcError,
59}
60
61#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
63pub struct JsonRpcError {
64 pub code: i32,
66 pub message: String,
68 #[serde(skip_serializing_if = "Option::is_none")]
70 pub data: Option<Value>,
71}
72
73pub const METHOD_NOT_FOUND: i32 = -32601;
75
76#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
81pub struct RawWireMessage {
82 pub jsonrpc: JsonRpcVersion,
84 pub id: Option<String>,
86 pub method: Option<String>,
88 pub params: Option<Value>,
90 pub result: Option<Value>,
92 pub error: Option<JsonRpcError>,
94}