pub mod assets;
pub mod chat;
pub mod deploy;
pub mod examples;
pub mod generate;
pub mod pack;
pub mod validate;
use super::state::AppState;
use axum::Router;
use axum::extract::DefaultBodyLimit;
use axum::routing::{get, post};
use std::sync::Arc;
pub fn build(state: Arc<AppState>) -> Router {
Router::new()
.route("/", get(assets::serve_index))
.route("/app.js", get(assets::serve_app_js))
.route("/api.js", get(assets::serve_api_js))
.route("/graph.js", get(assets::serve_graph_js))
.route("/demo.js", get(assets::serve_demo_js))
.route("/style.css", get(assets::serve_css))
.route("/api/chat", post(chat::post_chat))
.route("/api/generate", post(generate::post_generate))
.route("/api/validate", post(validate::post_validate))
.route("/api/examples", get(examples::list_examples))
.route("/api/examples/suggest", get(examples::suggest))
.route("/api/examples/{id}", get(examples::get_example))
.route("/api/providers", get(assets::serve_providers))
.route("/api/pack", post(pack::post_pack))
.route("/api/pack/download", get(pack::get_download))
.route("/api/pack/{id}", get(pack::get_job))
.route("/api/deploy", post(deploy::post_deploy))
.layer(DefaultBodyLimit::max(16 * 1024 * 1024))
.with_state(state)
}