#![allow(clippy::doc_markdown)]
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct CiSettings {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub pass_rate_floor: Option<f64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub max_concurrency: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub default_pass_rate: Option<f64>,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct ContextReport {
pub seeds: serde_json::Map<String, serde_json::Value>,
pub probing: Vec<serde_json::Map<String, serde_json::Value>>,
pub user_models: Vec<serde_json::Map<String, serde_json::Value>>,
pub representations: Vec<serde_json::Map<String, serde_json::Value>>,
pub tests: serde_json::Map<String, serde_json::Value>,
pub assessment: Vec<serde_json::Map<String, serde_json::Value>>,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct CustomScenarioInput {
pub user_goal: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub opening_message: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub hidden_information: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub environment_setup: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub failing_tool: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tool_expectations: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub success_criteria: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub challenge: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub task_family: Option<String>,
#[serde(default)]
pub controls: serde_json::Map<String, serde_json::Value>,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct CustomScenarioResult {
pub scenario_id: String,
pub task_family: String,
pub controls: serde_json::Map<String, serde_json::Value>,
pub passed: bool,
pub is_duplicate: bool,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub judge: Option<serde_json::Map<String, serde_json::Value>>,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct CustomScenariosCreate {
pub scenarios: Vec<CustomScenarioInput>,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct CustomScenariosResult {
pub data: Vec<CustomScenarioResult>,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct Dataset {
pub id: String,
pub generation_id: String,
pub user_model_id: String,
pub row_count: i64,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct DatasetComposeCreate {
pub user_model_id: String,
pub scenario_ids: Vec<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub label: Option<String>,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct DatasetList {
pub data: Vec<Dataset>,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct DatasetRow {
pub scenario_id: String,
pub task_family: String,
pub controls: serde_json::Map<String, serde_json::Value>,
pub spec: serde_json::Map<String, serde_json::Value>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub random_seed: Option<i64>,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct DatasetRows {
pub data: Vec<DatasetRow>,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct DemoAgent {
pub id: String,
pub name: String,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct DemoAgentCreate {
pub name: String,
pub url: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub key: Option<String>,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct DemoAgentList {
pub data: Vec<DemoAgent>,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct DemoSession {
pub id: String,
pub status: DemoSessionStatus,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub error: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub phase: Option<DemoSessionPhase>,
#[serde(default)]
pub traces: Vec<DemoTrace>,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct DemoSessionCreate {
pub context: String,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct DemoSimulation {
pub id: String,
pub demo_session_id: String,
pub scenario_id: String,
pub status: DemoSimulationStatus,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub error: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tiers: Option<std::collections::BTreeMap<String, DemoTierResult>>,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct DemoSimulationCreate {
pub scenario_id: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub agent_system_prompt: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub agent_id: Option<String>,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct DemoTierResult {
pub rollout_id: String,
pub transcript: Vec<TranscriptTurn>,
pub tool_events: Vec<ToolCall>,
pub violations: Vec<String>,
pub tool_calls: i64,
pub goals_met: i64,
pub goals_total: i64,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub conduct: Option<serde_json::Map<String, serde_json::Value>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub label: Option<String>,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct DemoTrace {
pub scenario_id: String,
pub task_family: String,
pub controls: serde_json::Map<String, serde_json::Value>,
pub spec: serde_json::Map<String, serde_json::Value>,
pub badges: Vec<serde_json::Map<String, serde_json::Value>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub ladder: Option<String>,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct Event {
pub seq: i64,
pub id: String,
pub stage: String,
pub message: String,
#[serde(default)]
pub data: serde_json::Map<String, serde_json::Value>,
pub created_at: String,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct EventList {
pub data: Vec<Event>,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct GenerationCreate {
pub user_model_id: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub count: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub quality_check_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub guidance: Option<String>,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct GenerationJob {
pub id: String,
pub status: GenerationJobStatus,
pub user_model_id: String,
pub count: i64,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub dataset_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub error: Option<String>,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct HTTPValidationError {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub detail: Option<Vec<ValidationError>>,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct HealthResponse {
pub status: String,
pub version: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub sha: Option<String>,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct IssueDetail {
pub id: String,
pub created_at: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub source: Option<String>,
#[serde(default)]
pub notes: serde_json::Map<String, serde_json::Value>,
#[serde(default)]
pub transcript: Vec<serde_json::Map<String, serde_json::Value>>,
#[serde(default)]
pub tool_events: Vec<serde_json::Map<String, serde_json::Value>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub generation_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub dataset_id: Option<String>,
pub status: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub rows: Option<i64>,
#[serde(default)]
pub scenarios: Vec<serde_json::Map<String, serde_json::Value>>,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct IssueList {
pub issues: Vec<IssueSummary>,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct IssueSummary {
pub id: String,
pub created_at: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub source: Option<String>,
pub failure_summary: String,
pub failure_category: String,
#[serde(default)]
pub tools_involved: Vec<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub generation_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub dataset_id: Option<String>,
pub status: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub rows: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub sdk_session_name: Option<String>,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct KeyUsage {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub api_key_id: Option<String>,
pub requests: i64,
pub errors: i64,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub p95_latency_ms: Option<f64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub last_used: Option<String>,
#[serde(default)]
pub series: Vec<MetricPoint>,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct KeyUsageList {
pub data: Vec<KeyUsage>,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct MetricDefinition {
pub name: String,
pub label: String,
pub unit: MetricDefinitionUnit,
pub description: String,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct MetricDefinitionList {
pub data: Vec<MetricDefinition>,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct MetricPoint {
pub t: String,
pub v: f64,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct MetricSummary {
pub name: String,
pub value: f64,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub previous: Option<f64>,
#[serde(default)]
pub series: Vec<MetricPoint>,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct ProbeResponse {
pub reply: String,
#[serde(default)]
pub tool_calls: Vec<ToolCall>,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct ProbeSession {
pub id: String,
pub status: ProbeSessionStatus,
pub turn: i64,
pub max_turns: i64,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub next_probe: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub user_model_id: Option<String>,
#[serde(default)]
pub seed_ids: Vec<String>,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct ProbeSessionCreate {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub max_turns: Option<i64>,
#[serde(default)]
pub seed_ids: Vec<String>,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct QualityCheck {
pub id: String,
pub status: QualityCheckStatus,
pub rollout_ids: Vec<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub label: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub error: Option<String>,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct QualityCheckCreate {
pub rollout_ids: Vec<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub label: Option<String>,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct QualityCheckSummary {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default)]
pub passed: i64,
#[serde(default)]
pub total: i64,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct RequestLogItem {
pub route: String,
pub method: String,
pub status: i64,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub api_key_id: Option<String>,
pub latency_ms: f64,
pub created_at: String,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct RequestLogList {
pub data: Vec<RequestLogItem>,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct Rollout {
pub id: String,
pub scenario_id: String,
pub status: RolloutStatus,
pub turn: i64,
pub max_turns: i64,
pub random_seed: i64,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub end_reason: Option<String>,
pub transcript: Vec<TranscriptTurn>,
pub sandbox: SandboxConfig,
#[serde(default)]
pub tool_events: Vec<ToolCall>,
#[serde(default)]
pub voiced: bool,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub voice_render_id: Option<String>,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct RolloutCreate {
pub scenario_id: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub random_seed: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub max_turns: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub agent: Option<serde_json::Map<String, serde_json::Value>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub dataset_id: Option<String>,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct RolloutDetail {
pub id: String,
pub status: String,
pub scenario_id: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub agent: Option<serde_json::Map<String, serde_json::Value>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub dataset_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub end_reason: Option<String>,
#[serde(default)]
pub events: Vec<Event>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub task_family: Option<String>,
#[serde(default)]
pub controls: serde_json::Map<String, serde_json::Value>,
#[serde(default)]
pub spec: serde_json::Map<String, serde_json::Value>,
pub created_at: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub completed_at: Option<String>,
pub random_seed: i64,
#[serde(default)]
pub simulator_config: serde_json::Map<String, serde_json::Value>,
#[serde(default)]
pub hidden_state: serde_json::Map<String, serde_json::Value>,
#[serde(default)]
pub env_snapshot: serde_json::Map<String, serde_json::Value>,
#[serde(default)]
pub turns: Vec<serde_json::Map<String, serde_json::Value>>,
#[serde(default)]
pub tool_events: Vec<serde_json::Map<String, serde_json::Value>>,
#[serde(default)]
pub evaluations: Vec<serde_json::Map<String, serde_json::Value>>,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct RolloutEvaluation {
pub rollout_id: String,
pub passed: bool,
pub states: Vec<serde_json::Map<String, serde_json::Value>>,
pub judge: serde_json::Map<String, serde_json::Value>,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct RolloutEvaluationList {
pub data: Vec<RolloutEvaluation>,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct RolloutTurnCreate {
#[serde(default)]
pub reply: String,
#[serde(default)]
pub tool_calls: Vec<ToolCall>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub file_b64: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub filename: Option<String>,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct RunDetail {
pub id: String,
#[serde(rename = "type")]
pub r#type: RunDetailType,
pub status: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub sdk_session_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub sdk_session_name: Option<String>,
pub created_at: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub completed_at: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub error: Option<String>,
#[serde(default)]
pub summary: serde_json::Map<String, serde_json::Value>,
#[serde(default)]
pub detail: serde_json::Map<String, serde_json::Value>,
#[serde(default)]
pub events: Vec<Event>,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct RunList {
pub sessions: Vec<SdkSessionSummary>,
pub runs: Vec<RunSummary>,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct RunSummary {
pub id: String,
#[serde(rename = "type")]
pub r#type: RunSummaryType,
pub status: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub sdk_session_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub sdk_session_name: Option<String>,
pub created_at: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub completed_at: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub error: Option<String>,
#[serde(default)]
pub summary: serde_json::Map<String, serde_json::Value>,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct SandboxConfig {
pub seed: i64,
#[serde(default)]
pub fail_tools: Vec<String>,
#[serde(default)]
pub state: serde_json::Map<String, serde_json::Value>,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct ScenarioValidation {
pub scenario_id: String,
pub passed: bool,
pub judge: serde_json::Map<String, serde_json::Value>,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct ScenarioValidationList {
pub data: Vec<ScenarioValidation>,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct SdkSession {
pub sdk_session_id: String,
pub sdk_invocation_id: String,
pub name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub ci: Option<CiSettings>,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct SdkSessionCreate {
pub name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub sdk_version: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub ci: Option<serde_json::Map<String, serde_json::Value>>,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct SdkSessionSummary {
pub id: String,
pub name: String,
pub created_at: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub last_activity: Option<String>,
pub runs: i64,
pub rollouts: i64,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct Seed {
pub id: String,
pub kind: String,
pub source: String,
pub version: String,
pub chunks: i64,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct SeedCreate {
pub kind: SeedCreateKind,
pub source: String,
#[serde(default)]
pub content: serde_json::Map<String, serde_json::Value>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub version: Option<String>,
#[serde(default)]
pub metadata: serde_json::Map<String, serde_json::Value>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub file_b64: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub filename: Option<String>,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct ToolCall {
pub name: String,
pub input: serde_json::Map<String, serde_json::Value>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub output: Option<serde_json::Map<String, serde_json::Value>>,
#[serde(default)]
pub is_error: bool,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub turn_idx: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub seq: Option<i64>,
#[serde(default)]
pub external: bool,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct TraceCreate {
#[serde(default)]
pub transcript: Vec<TranscriptTurn>,
#[serde(default)]
pub tool_events: Vec<ToolCall>,
pub source: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub error: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub count: Option<i64>,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct TranscriptTurn {
pub role: TranscriptTurnRole,
pub content: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub audio_url: Option<String>,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct UsageSummary {
pub range: String,
pub bucket_seconds: i64,
pub start: String,
pub metrics: Vec<MetricSummary>,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct UserModel {
pub id: String,
pub probe_session_id: String,
pub persona: String,
pub traits: Vec<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub representation_id: Option<String>,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct UserModelList {
pub data: Vec<UserModel>,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct ValidationError {
pub loc: Vec<ValidationErrorLocItem>,
pub msg: String,
#[serde(rename = "type")]
pub r#type: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub input: Option<serde_json::Value>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub ctx: Option<serde_json::Map<String, serde_json::Value>>,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct ValidationRun {
pub id: String,
pub dataset_id: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub label: Option<String>,
pub status: ValidationRunStatus,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub verdict: Option<ValidationRunVerdict>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub reference: Option<serde_json::Map<String, serde_json::Value>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub validity: Option<serde_json::Map<String, serde_json::Value>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub fidelity: Option<serde_json::Map<String, serde_json::Value>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub diversity: Option<serde_json::Map<String, serde_json::Value>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub error: Option<String>,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct ValidationRunCreate {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub label: Option<String>,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct VoiceRender {
pub id: String,
pub status: VoiceRenderStatus,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub scenario_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub rollout_id: Option<String>,
#[serde(default)]
pub params: serde_json::Map<String, serde_json::Value>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub duration_ms: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub wpm: Option<f64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub provenance: Option<Vec<serde_json::Map<String, serde_json::Value>>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub error: Option<String>,
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[non_exhaustive]
pub struct VoiceRenderCreate {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub scenario_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub rollout_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub takes: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub stability: Option<f64>,
#[serde(default)]
pub phone_fx: bool,
#[serde(default)]
pub room_tone: bool,
#[serde(default)]
pub annotate: bool,
#[serde(default)]
pub voice_overrides: std::collections::BTreeMap<String, String>,
}
#[derive(Clone, Debug, PartialEq, Eq, serde::Deserialize, serde::Serialize)]
#[serde(rename_all = "snake_case")]
pub enum DemoSessionPhase {
Reading,
Distilling,
WorldModel,
WritingTests,
#[serde(untagged)]
Other(String),
}
#[derive(Clone, Debug, PartialEq, Eq, serde::Deserialize, serde::Serialize)]
#[serde(rename_all = "snake_case")]
pub enum DemoSessionStatus {
Running,
Succeeded,
Failed,
#[serde(untagged)]
Other(String),
}
#[derive(Clone, Debug, PartialEq, Eq, serde::Deserialize, serde::Serialize)]
#[serde(rename_all = "snake_case")]
pub enum DemoSimulationStatus {
Running,
Succeeded,
Failed,
#[serde(untagged)]
Other(String),
}
#[derive(Clone, Debug, PartialEq, Eq, serde::Deserialize, serde::Serialize)]
#[serde(rename_all = "snake_case")]
pub enum GenerationJobStatus {
Running,
Succeeded,
Failed,
#[serde(untagged)]
Other(String),
}
#[derive(Clone, Debug, PartialEq, Eq, serde::Deserialize, serde::Serialize)]
#[serde(rename_all = "snake_case")]
pub enum MetricDefinitionUnit {
Count,
Percent,
Ms,
#[serde(untagged)]
Other(String),
}
#[derive(Clone, Debug, PartialEq, Eq, serde::Deserialize, serde::Serialize)]
#[serde(rename_all = "snake_case")]
pub enum ProbeSessionStatus {
Active,
Converged,
#[serde(untagged)]
Other(String),
}
#[derive(Clone, Debug, PartialEq, Eq, serde::Deserialize, serde::Serialize)]
#[serde(rename_all = "snake_case")]
pub enum QualityCheckStatus {
Running,
Succeeded,
Failed,
#[serde(untagged)]
Other(String),
}
#[derive(Clone, Debug, PartialEq, Eq, serde::Deserialize, serde::Serialize)]
#[serde(rename_all = "snake_case")]
pub enum RolloutStatus {
Running,
Completed,
Failed,
#[serde(untagged)]
Other(String),
}
#[derive(Clone, Debug, PartialEq, Eq, serde::Deserialize, serde::Serialize)]
#[serde(rename_all = "snake_case")]
pub enum RunDetailType {
Generation,
ValidationRun,
QualityCheck,
VoiceRender,
#[serde(untagged)]
Other(String),
}
#[derive(Clone, Debug, PartialEq, Eq, serde::Deserialize, serde::Serialize)]
#[serde(rename_all = "snake_case")]
pub enum RunSummaryType {
Generation,
ValidationRun,
QualityCheck,
VoiceRender,
#[serde(untagged)]
Other(String),
}
#[derive(Clone, Debug, PartialEq, Eq, serde::Deserialize, serde::Serialize)]
#[serde(rename_all = "snake_case")]
pub enum SeedCreateKind {
Document,
ToolSchema,
Policy,
SeedConversation,
Trace,
#[serde(untagged)]
Other(String),
}
#[derive(Clone, Debug, PartialEq, Eq, serde::Deserialize, serde::Serialize)]
#[serde(rename_all = "snake_case")]
pub enum TranscriptTurnRole {
User,
Agent,
#[serde(untagged)]
Other(String),
}
#[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(untagged)]
pub enum ValidationErrorLocItem {
String(String),
Integer(i64),
}
#[derive(Clone, Debug, PartialEq, Eq, serde::Deserialize, serde::Serialize)]
#[serde(rename_all = "snake_case")]
pub enum ValidationRunStatus {
Running,
Succeeded,
Failed,
#[serde(untagged)]
Other(String),
}
#[derive(Clone, Debug, PartialEq, Eq, serde::Deserialize, serde::Serialize)]
#[serde(rename_all = "snake_case")]
pub enum ValidationRunVerdict {
Pass,
Warn,
#[serde(untagged)]
Other(String),
}
#[derive(Clone, Debug, PartialEq, Eq, serde::Deserialize, serde::Serialize)]
#[serde(rename_all = "snake_case")]
pub enum VoiceRenderStatus {
Running,
Succeeded,
Failed,
#[serde(untagged)]
Other(String),
}