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)]
11#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
12pub struct MemorySummarizeRequestBody {
13    pub model: String,
14    pub traces: Vec<RawMemory>,
15    #[serde(skip_serializing_if = "Option::is_none")]
16    pub reasoning: Option<Reasoning>,
17    #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
18    pub rest: Rest,
19}
20pub type MemorySummarizeRequest = crate::WireRequest<MemorySummarizeRequestBody>;
21#[derive(
22    Debug, Clone, PartialEq, Eq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder,
23)]
24#[serde(rename_all = "snake_case")]
25#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
26#[derive(gproxy_protocol_macros::DeclaredFields)]
27#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
28pub struct RawMemory {
29    pub id: String,
30    pub metadata: RawMemoryMetadata,
31    pub items: Vec<serde_json::Value>,
32    #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
33    pub rest: Rest,
34}
35#[derive(
36    Debug, Clone, PartialEq, Eq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder,
37)]
38#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
39#[derive(gproxy_protocol_macros::DeclaredFields)]
40#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
41pub struct RawMemoryMetadata {
42    pub source_path: String,
43    #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
44    pub rest: Rest,
45}
46#[derive(
47    Debug, Clone, PartialEq, Eq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder,
48)]
49#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
50#[derive(gproxy_protocol_macros::DeclaredFields)]
51#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
52pub struct MemorySummarizeOutput {
53    #[serde(rename = "trace_summary", alias = "raw_memory")]
54    pub raw_memory: String,
55    pub memory_summary: String,
56    #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
57    pub rest: Rest,
58}
59#[derive(
60    Debug, Clone, PartialEq, Eq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder,
61)]
62#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
63#[derive(gproxy_protocol_macros::DeclaredFields)]
64#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
65pub struct MemorySummarizeResponseBody {
66    pub output: Vec<MemorySummarizeOutput>,
67    #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
68    pub rest: Rest,
69}
70pub type MemorySummarizeResponse = crate::WireResponse<MemorySummarizeResponseBody>;
71pub use super::codex::Reasoning;