harn-vm 0.10.169

Async bytecode virtual machine for the Harn programming language
use serde::{Deserialize, Serialize};

use crate::security::{DetectorVerdict, TrustLevel};

pub use harn_llm::agent_control::InjectionDelivery;

#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct HostInjectionProvenance {
    pub initiator: String,
    pub source: String,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub host: Option<String>,
    pub ts_ms: i64,
}

#[derive(Clone, Copy, Debug, Eq, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum SanitizationAction {
    Passed,
    Summarized,
    Pointerized,
    Blocked,
}

#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct SanitizationVerdict {
    pub trust: TrustLevel,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub detector: Option<DetectorVerdict>,
    pub action: SanitizationAction,
    pub original_bytes: u64,
    pub delivered_bytes: u64,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub summary_model: Option<String>,
    #[serde(default, skip_serializing_if = "Vec::is_empty")]
    pub labels: Vec<String>,
}

#[derive(Clone, Copy, Debug, Eq, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum AttachmentFlavor {
    Image,
    TextFrame,
    FrameRing,
    File,
}

#[derive(Clone, Copy, Debug, Eq, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum AttachmentRendering {
    ImageBlock,
    DescriptionPlusPointer,
    PointerOnly,
    InlineText,
}