pub mod backup;
pub mod capabilities;
pub mod capability;
pub mod cmd;
pub mod executor;
pub mod job;
pub mod llmosafe;
pub mod processes;
pub mod schema;
pub mod telemetry;
pub mod validation;
pub mod wal;
pub use backup::BackupManager;
pub use capabilities::{FileRead, FileWrite};
pub use capability::{Capability, CapabilityRegistry, Context, Output};
pub use executor::{execute_with_telemetry, ExecutionResult};
pub use job::{Job, JobId, JobState};
pub use llmosafe::LlmoSafeGuard;
pub use processes::ProcessSnapshot;
pub use schema::SchemaValidator;
pub use telemetry::Telemetry;
pub use wal::{WalEvent, WalEventType, WalReader, WalWriter};
#[derive(Debug, thiserror::Error)]
pub enum Error {
#[error("Invalid job state transition: {from:?} -> {to:?}")]
InvalidTransition { from: JobState, to: JobState },
#[error("Schema validation failed: {0}")]
SchemaValidationFailed(String),
#[error("Capability not found: {0}")]
CapabilityNotFound(String),
#[error("Execution failed: {0}")]
ExecutionFailed(String),
#[error("WAL error: {0}")]
WalError(String),
#[error("Backup error: {0}")]
BackupError(String),
#[error("Resource limit exceeded: {0}")]
ResourceLimitExceeded(String),
#[error("Telemetry error: {0}")]
TelemetryError(String),
}
pub type Result<T> = std::result::Result<T, Error>;
pub mod utils {
use std::path::PathBuf;
pub fn data_dir() -> PathBuf {
std::env::var("XDG_DATA_HOME")
.ok()
.map(PathBuf::from)
.or_else(|| std::env::var("HOME").ok().map(|h| PathBuf::from(h).join(".local/share")))
.unwrap_or_else(std::env::temp_dir)
.join("runtimo")
}
pub fn wal_path() -> PathBuf {
std::env::var("RUNTIMO_WAL_PATH")
.map(PathBuf::from)
.unwrap_or_else(|_| data_dir().join("wal.jsonl"))
}
pub fn backup_dir() -> PathBuf {
std::env::var("RUNTIMO_BACKUP_DIR")
.map(PathBuf::from)
.unwrap_or_else(|_| data_dir().join("backups"))
}
}