virtuoso_cli/commands/
skill.rs1use crate::client::bridge::VirtuosoClient;
2use crate::error::{Result, VirtuosoError};
3use serde_json::{json, Value};
4
5pub fn exec(code: &str, timeout: u64) -> Result<Value> {
6 let client = VirtuosoClient::from_env()?;
7 let result = client.execute_skill(code, Some(timeout))?;
8
9 Ok(json!({
10 "status": if result.ok() { "success" } else { "error" },
11 "output": result.output,
12 "errors": result.errors,
13 "warnings": result.warnings,
14 "execution_time": result.execution_time,
15 }))
16}
17
18pub fn load(file: &str) -> Result<Value> {
19 let client = VirtuosoClient::from_env()?;
20
21 if !std::path::Path::new(file).exists() {
22 return Err(VirtuosoError::NotFound(format!("file not found: {file}")));
23 }
24
25 let result = client.load_il(file)?;
26
27 Ok(json!({
28 "status": if result.ok() { "success" } else { "error" },
29 "file": file,
30 "output": result.output,
31 "errors": result.errors,
32 }))
33}