use eframe::egui::{self, CentralPanel, Context, Grid, TextEdit};
use rfd::FileDialog;
use std::collections::HashMap;
use std::fs;
use std::process::Command;
#[derive(Default)]
pub struct MyApp {
pub vault_preview: String,
pub metadata: HashMap<String, String>,
}
impl eframe::App for MyApp {
fn update(&mut self, ctx: &Context, _frame: &mut eframe::Frame) {
CentralPanel::default().show(ctx, |ui| {
ui.heading("๐ VIOS Sovereign Launcher");
ui.label("Launch a tool or preview a .vault file with Echo metadata.");
ui.separator();
ui.heading("๐ฆ Vault Integrity + Licensing");
ui.horizontal(|ui| {
self.tool_button(ui, "๐ VaultSeal Verify", "vaultseal_verify");
self.tool_button(ui, "๐ Vault Certifier", "vault_certifier");
self.tool_button(ui, "โ
Validate Vault", "validate_vault");
});
ui.separator();
ui.heading("๐งฌ Emotional Engine");
ui.horizontal(|ui| {
self.tool_button(ui, "๐ง REEM Viewer", "reem_viewer");
self.tool_button(ui, "๐ Test Whisper", "test_whisper");
self.tool_button(ui, "โป๏ธ Loop Classifier", "test_whisper_loop");
self.tool_button(ui, "๐งช Congruence Test", "test_congruence");
});
ui.separator();
ui.heading("๐ Consent Tools");
ui.horizontal(|ui| {
self.tool_button(ui, "๐ฃ๏ธ EchoReview", "echoreview");
self.tool_button(ui, "๐ Fleet Control", "vaultfleet");
self.tool_button(ui, "๐ฅ VaultClaim", "vaultclaim");
self.tool_button(ui, "๐ VaultDocu", "vaultdocu");
});
ui.separator();
ui.heading("๐ Vault Preview");
if ui.button("๐ Load .vault File").clicked() {
if let Some(path) = FileDialog::new()
.add_filter("Vault files", &["vault"])
.pick_file()
{
match fs::read_to_string(&path) {
Ok(content) => {
self.vault_preview = content.clone();
self.extract_metadata(&content);
}
Err(e) => {
self.vault_preview = format!("โ Failed to read file: {e}");
self.metadata.clear();
}
}
}
}
ui.add(
TextEdit::multiline(&mut self.vault_preview)
.desired_rows(10)
.lock_focus(true),
);
if !self.metadata.is_empty() {
ui.separator();
ui.heading("๐ง Echo Metadata");
Grid::new("metadata_grid")
.num_columns(2)
.striped(true)
.show(ui, |ui| {
for (key, value) in &self.metadata {
ui.label(format!("๐น {key}"));
ui.label(value);
ui.end_row();
}
});
}
});
}
}
impl MyApp {
fn launch(&self, bin_name: &str) {
let status = Command::new("cargo")
.args(["run", "--bin", bin_name])
.status()
.expect("โ Failed to launch binary");
if !status.success() {
eprintln!("Subprocess exited with {:?}", status.code());
}
}
fn tool_button(&self, ui: &mut egui::Ui, label: &str, bin: &str) {
if ui.button(label).clicked() {
self.launch(bin);
}
}
fn extract_metadata(&mut self, contents: &str) {
self.metadata.clear();
for line in contents.lines() {
if let Some((key, value)) = line.split_once(":") {
self.metadata
.insert(key.trim().to_string(), value.trim().to_string());
}
}
}
}
fn main() -> Result<(), eframe::Error> {
let options = eframe::NativeOptions::default();
eframe::run_native(
"VIOS Sovereign Launcher",
options,
Box::new(|_cc| Box::new(MyApp::default())),
)
}