robson-core 0.1.0

Rust async agent orchestrator for automated development workflows
Documentation
pub mod effector;
pub mod entities;
pub mod formatter;
pub mod llm;
pub mod migration;
pub mod plugin;
pub mod processor;
pub mod scheduler;
pub mod utils;

use anyhow::Result;
use sea_orm::{Database, DatabaseConnection};

#[derive(Clone)]
pub struct AppState {
    pub db: DatabaseConnection,
}

// --- DB re-exports (agent entities: conversations, allowed_channels, rate_limits) ---

pub use entities::{
    allowed_channel, conversation, gateway, process_event, process_event_deliveries, rate_limit,
};
pub use plugin::AgentGateway;

// --- DB connection helpers ---

pub async fn connect(db_path: &str) -> Result<DatabaseConnection> {
    let url = if db_path == ":memory:" || db_path == "sqlite::memory:" {
        "sqlite::memory:".to_string()
    } else {
        format!("sqlite://{}?mode=rwc", db_path)
    };
    let db = Database::connect(&url).await?;
    Ok(db)
}

pub async fn connect_and_migrate(db_path: &str) -> Result<DatabaseConnection> {
    let db = connect(db_path).await?;
    run_migrations(&db).await?;
    Ok(db)
}

pub async fn run_migrations(db: &DatabaseConnection) -> Result<()> {
    use migration::MigratorTrait;
    migration::Migrator::up(db, None).await?;
    Ok(())
}