use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
use crate::agent::completions::message;
use crate::agent::completions::response;
use crate::logs::LogReference;
#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
#[schemars(
rename = "agent.completions.response.streaming.AssistantResponseChunkLog"
)]
pub struct AssistantResponseChunkLog {
pub role: response::AssistantRole,
pub index: u64,
pub created: u64,
pub model: String,
pub upstream_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
#[schemars(extend("omitempty" = true))]
pub reasoning: Option<LogReference>,
#[serde(skip_serializing_if = "Option::is_none")]
#[schemars(extend("omitempty" = true))]
pub tool_calls: Option<Vec<LogReference>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[schemars(extend("omitempty" = true))]
pub content: Option<message::RichContentLog>,
#[serde(skip_serializing_if = "Option::is_none")]
#[schemars(extend("omitempty" = true))]
pub refusal: Option<LogReference>,
pub finish_reason: Option<response::FinishReason>,
#[serde(skip_serializing_if = "Option::is_none")]
#[schemars(extend("omitempty" = true))]
pub logprobs: Option<LogReference>,
#[serde(skip_serializing_if = "Option::is_none")]
#[schemars(extend("omitempty" = true))]
pub service_tier: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[schemars(extend("omitempty" = true))]
pub system_fingerprint: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[schemars(extend("omitempty" = true))]
pub provider: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[schemars(extend("omitempty" = true))]
pub usage: Option<response::UpstreamUsage>,
}