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}");
}
}
}