Skip to main content

codex_app_server_sdk/protocol/
shared.rs

1use serde::{Deserialize, Serialize};
2use serde_json::Value;
3
4#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
5#[serde(untagged)]
6pub enum RequestId {
7    String(String),
8    Integer(i64),
9}
10
11impl From<i64> for RequestId {
12    fn from(value: i64) -> Self {
13        Self::Integer(value)
14    }
15}
16
17#[derive(Debug, Clone, Serialize, Deserialize)]
18pub struct JsonRpcRequest<P> {
19    pub method: String,
20    pub id: RequestId,
21    pub params: P,
22}
23
24#[derive(Debug, Clone, Serialize, Deserialize)]
25pub struct JsonRpcNotification<P> {
26    pub method: String,
27    pub params: P,
28}
29
30#[derive(Debug, Clone, Serialize, Deserialize)]
31pub struct JsonRpcResponse<R> {
32    pub id: RequestId,
33    pub result: R,
34}
35
36#[derive(Debug, Clone, Serialize, Deserialize, Default)]
37pub struct EmptyObject {
38    #[serde(flatten)]
39    pub extra: serde_json::Map<String, Value>,
40}