1mod actions;
2mod archive_types;
3mod config_types;
4mod context_types;
5mod cwd;
6mod dispatch;
7mod doctor_types;
8mod dream_backfill_types;
9mod embedding_types;
10mod eval_types;
11mod memory_types;
12mod model_types;
13mod procedure_types;
14mod query_types;
15mod reranker_types;
16mod review_types;
17mod rule_types;
18#[cfg(test)]
19mod tests;
20#[cfg(test)]
21mod tests_config;
22#[cfg(test)]
23mod tests_doctor;
24#[cfg(test)]
25mod tests_eval;
26#[cfg(test)]
27mod tests_governance;
28#[cfg(test)]
29mod tests_maintenance;
30#[cfg(test)]
31mod tests_procedures;
32#[cfg(test)]
33mod tests_raw;
34#[cfg(test)]
35mod tests_rules;
36#[cfg(test)]
37mod tests_trace;
38#[cfg(test)]
39mod tests_worker;
40mod types;
41mod worker_types;
42
43use anyhow::Result;
44use clap::{Command, CommandFactory, FromArgMatches};
45
46use types::Cli;
47
48pub async fn run() -> Result<()> {
49 let matches = cli_command().get_matches();
50 let cli = Cli::from_arg_matches(&matches)?;
51 dispatch::run_cli(cli).await
52}
53
54fn cli_command() -> Command {
55 let version = crate::build_info::version_label();
56 Cli::command()
57 .version(version.clone())
58 .long_version(version)
59}