vios_app 0.1.1

Small JSON vaults: Argon2id + AES-GCM, with optional AAD binding.
Documentation
// Minimal docvault that compiles cleanly and uses the new crypto path.
use std::env;
use std::path::Path;

use vios_core::vault::vault_crypto::{encrypt_and_save_vault, must_get_password};
use vios_core::vault::vault_structs::{VaultMetadata, VaultPayload};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    // CLI: docvault <out_path> [creator_name] [content]
    let mut args = env::args().skip(1);
    let out_path = args
        .next()
        .unwrap_or_else(|| "docvault_output.vault".to_string());
    let creator = args.next().unwrap_or_else(|| "DocVault".to_string());
    let content = args
        .next()
        .unwrap_or_else(|| "Generated by docvault".to_string());

    let password = must_get_password();

    let mut payload = VaultPayload {
        metadata: VaultMetadata {
            creator_name: creator.clone(),
            ..Default::default()
        },
        content,
        creator_name: String::new(), // mirror for legacy compat
    };
    payload.creator_name = payload.metadata.creator_name.clone();

    let bytes = serde_json::to_vec(&payload)?;
    encrypt_and_save_vault(Path::new(&out_path).to_str().unwrap(), &password, &bytes)?;
    println!("✅ docvault wrote: {out_path}");
    Ok(())
}