Skip to main content

gproxy_protocol/wire/openai/
memory.rs

1//! Codex memories/trace_summarize wire DTOs. Sources: codex-api/src/common.rs
2//! (MemorySummarizeInput/RawMemory/MemorySummarizeOutput) and endpoint/memories.rs.
3//! Trace items are arbitrary JSON by contract, not public Responses InputItems.
4use crate::Rest;
5use serde::{Deserialize, Serialize};
6
7#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
8#[serde(rename_all = "snake_case")]
9#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
10#[derive(gproxy_protocol_macros::DeclaredFields)]
11pub struct MemorySummarizeRequestBody {
12    pub model: String,
13    pub traces: Vec<RawMemory>,
14    #[serde(skip_serializing_if = "Option::is_none")]
15    pub reasoning: Option<Reasoning>,
16    #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
17    pub rest: Rest,
18}
19pub type MemorySummarizeRequest = crate::WireRequest<MemorySummarizeRequestBody>;
20#[derive(
21    Debug, Clone, PartialEq, Eq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder,
22)]
23#[serde(rename_all = "snake_case")]
24#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
25#[derive(gproxy_protocol_macros::DeclaredFields)]
26pub struct RawMemory {
27    pub id: String,
28    pub metadata: RawMemoryMetadata,
29    pub items: Vec<serde_json::Value>,
30    #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
31    pub rest: Rest,
32}
33#[derive(
34    Debug, Clone, PartialEq, Eq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder,
35)]
36#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
37#[derive(gproxy_protocol_macros::DeclaredFields)]
38pub struct RawMemoryMetadata {
39    pub source_path: String,
40    #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
41    pub rest: Rest,
42}
43#[derive(
44    Debug, Clone, PartialEq, Eq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder,
45)]
46#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
47#[derive(gproxy_protocol_macros::DeclaredFields)]
48pub struct MemorySummarizeOutput {
49    #[serde(rename = "trace_summary", alias = "raw_memory")]
50    pub raw_memory: String,
51    pub memory_summary: String,
52    #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
53    pub rest: Rest,
54}
55#[derive(
56    Debug, Clone, PartialEq, Eq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder,
57)]
58#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
59#[derive(gproxy_protocol_macros::DeclaredFields)]
60pub struct MemorySummarizeResponseBody {
61    pub output: Vec<MemorySummarizeOutput>,
62    #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
63    pub rest: Rest,
64}
65pub type MemorySummarizeResponse = crate::WireResponse<MemorySummarizeResponseBody>;
66pub use super::guardian::Reasoning;