horus_cli/frontend/
mod.rs1use horus::Result;
4use horus_gateway::client::{GatewayEvents, GatewaySender};
5use horus_gateway::wire::{ReadyPayload, SessionReadyPayload};
6
7mod catalog;
8mod cloudflare_setup;
9mod dashboard;
10mod gateway;
11mod gateway_actions;
12mod headless;
13mod reinitialize;
14mod setup;
15mod terminal;
16mod theme;
17mod tui;
18
19pub use headless::run as run_headless;
20pub use tui::terminal_text;
21
22pub use cloudflare_setup::{CloudflareInit, run as run_cloudflare_setup};
23pub use dashboard::{run as run_gateway_dashboard, run_provider as run_gateway_provider};
24pub use reinitialize::confirm as confirm_gateway_reinitialize;
25
26pub async fn run(
27 sender: GatewaySender,
28 events: GatewayEvents,
29 gateway: &mut ReadyPayload,
30 session: &mut SessionReadyPayload,
31 local_gateway: bool,
32 gateway_endpoint: String,
33) -> Result<(FrontendExit, GatewaySender, GatewayEvents)> {
34 let workspace = session.workspace.path.clone();
35 let catalog = catalog::UiCatalog::build(&session.contributions, &gateway.models, &workspace)?;
36 tui::runtime::run(
37 sender,
38 events,
39 gateway,
40 session,
41 catalog,
42 local_gateway,
43 gateway_endpoint,
44 )
45 .await
46}
47
48pub enum FrontendExit {
50 Exit,
51 Discard,
52 New,
53 Resume(String),
54 Reload,
55 Reconnect,
56}