use std::collections::BTreeMap;
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
use serde_json::Value;
use super::command::CommandPath;
use super::execution::ExecutionPolicy;
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, JsonSchema)]
pub struct DiagnosticRecord {
pub id: String,
pub severity: String,
pub message: String,
pub fields: BTreeMap<String, Value>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, JsonSchema)]
pub struct InvocationEvent {
pub timestamp: String,
pub name: String,
pub payload: BTreeMap<String, Value>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, JsonSchema)]
pub struct InvocationTrace {
pub invocation_id: String,
pub command: CommandPath,
pub policy: ExecutionPolicy,
pub events: Vec<InvocationEvent>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, JsonSchema)]
pub struct MemorySummary {
pub status: String,
pub count: usize,
pub message: String,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, JsonSchema)]
pub struct MemoryKeyList {
pub status: String,
pub keys: Vec<String>,
pub count: usize,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, JsonSchema)]
pub struct RouteSourceMetadata {
pub segments: Vec<String>,
pub owner: String,
pub source: String,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, JsonSchema)]
pub struct AliasRewrite {
pub alias: Vec<String>,
pub canonical: Vec<String>,
pub source: String,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, JsonSchema)]
pub struct InspectReport {
pub status: String,
pub route_sources: Vec<RouteSourceMetadata>,
pub alias_rewrites: Vec<AliasRewrite>,
}