vios_app 0.1.1

Small JSON vaults: Argon2id + AES-GCM, with optional AAD binding.
Documentation
use serde::{Deserialize, Serialize};

#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct VaultMetadata {
    pub creator_name: String,
    pub system_fingerprint: String,
}

#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct VaultContent {
    pub tone: String,
    pub intent: String,
    pub reem_code: String,
    pub summary: String,
    pub transcript: String,
    pub voice_log_time: String,
}

#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct VaultPayload {
    pub metadata: VaultMetadata,
    pub content: VaultContent,
}

pub fn view_vault_from_args() {
    use crate::vault::vault_loader::load_vault;
    use std::env;

    let args: Vec<String> = env::args().collect();
    if args.len() < 2 {
        eprintln!("Usage: vaultviewer <path_to_vault>");
        return;
    }

    let path = &args[1];
    let key = rpassword::prompt_password("Enter password: ").unwrap();

    match load_vault(path, &key) {
        Ok(payload) => {
            println!("\n✅ Vault Decrypted:\n\n{payload:#?}\n");
        }
        Err(e) => {
            eprintln!("❌ Failed to load vault: {e}");
        }
    }
}