Files
agent-manager/src/lib.rs
T

66 lines
2.0 KiB
Rust

//! agent-manager — a CLI to manage local AI coding agents.
//!
//! The crate is organised around a few core concepts:
//!
//! * cli — clap definitions for the am command line interface.
//! * config — YAML schema, loading, validation, includes, path expansion.
//! * catalog — the merged agent catalog (embedded defaults + user config).
//! * state — the local installation database (JSON file).
//! * process — background/foreground process management (PID bookkeeping).
//! * installers — one installer per method (npm, pip, cargo, go, bun, curl,
//! binary, git).
//! * commands — one module per CLI command.
pub mod app;
pub mod catalog;
pub mod cli;
pub mod commands;
pub mod config;
pub mod deps;
pub mod doctor;
pub mod download;
pub mod installers;
pub mod nav;
pub mod output;
pub mod probe;
pub mod process;
pub mod repl;
pub mod runner;
pub mod shell;
pub mod state;
pub mod toolchain;
pub mod version;
use clap::Parser;
/// CLI entry point used by the am binary. Returns the process exit code.
pub fn main_entry() -> i32 {
let cli = cli::Cli::parse();
match app::App::from_cli(cli) {
Ok(app) => match commands::execute(&app) {
Ok(code) => code,
Err(err) => {
if app.json() {
let payload = serde_json::json!({
"error": format!("{:#}", err),
});
let _ = serde_json::to_writer_pretty(std::io::stdout(), &payload);
let _ = writeln!(std::io::stdout());
} else {
eprintln!("{} {}", "error:".red().bold(), format!("{:#}", err));
}
1
}
},
Err(err) => {
// Config could not even be loaded: fall back to plain stderr output.
eprintln!("{} {}", "error:".red().bold(), format!("{:#}", err));
1
}
}
}
#[allow(unused_imports)]
use colored::Colorize;
use std::io::Write;