hololake-system-architecture/product-source/hololake-clean-desktop/src-tauri/src/model.rs

87 lines
2.2 KiB
Rust
Raw Normal View History

use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Channel {
pub channel_id: String,
pub name: String,
pub created_at: String,
pub private_git_path: String,
pub public_distribution_state: String,
}
#[derive(Clone, Debug, Serialize, Deserialize)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum SourceKind {
UserMessage,
PersonaResponse,
ExternalAiMessage,
SystemContext,
ProtocolEvent,
AgentAction,
ToolResult,
SystemReceipt,
}
#[derive(Clone, Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TimelineEvent {
pub event_id: String,
pub source_kind: SourceKind,
pub title: String,
pub content: String,
pub occurred_at: String,
pub state: String,
}
#[derive(Clone, Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct KnowledgeSummary {
pub path: String,
pub title: String,
pub updated_at: String,
pub sha256: String,
}
#[derive(Clone, Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct KnowledgeDocument {
pub path: String,
pub title: String,
pub body: String,
pub updated_at: String,
pub sha256: String,
}
#[derive(Clone, Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ExternalAiBridge {
pub bridge_id: String,
pub display_name: String,
pub inbox_path: String,
pub outbox_path: String,
pub state: String,
}
#[derive(Clone, Debug, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct SystemSnapshot {
pub app_version: String,
pub channel: Option<Channel>,
pub timeline: Vec<TimelineEvent>,
pub documents: Vec<KnowledgeSummary>,
pub module_registry_version: String,
pub public_update_endpoint: String,
pub public_distribution_state: String,
pub external_ai_bridges: Vec<ExternalAiBridge>,
}
#[derive(Clone, Debug, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct MutationReceipt {
pub receipt_id: String,
pub state: String,
pub message: String,
pub git_commit: Option<String>,
pub event: TimelineEvent,
}