codex_app_server_sdk/protocol/
shared.rs1use 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}