greentic-flow-builder 0.4.0

Greentic Flow Builder — orchestrator that powers Adaptive Card design via the adaptive-card-mcp toolkit
Documentation
//! HTTP routes for the Flow Builder web UI.

pub mod assets;
pub mod chat;
pub mod deploy;
pub mod examples;
pub mod generate;
pub mod pack;
pub mod simulate_http;
pub mod validate;
pub mod wizard;
pub mod wizard_pipeline;

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("/sessions.js", get(assets::serve_sessions_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/simulate-http",
            post(simulate_http::post_simulate_http),
        )
        .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))
        .route(
            "/api/wizard/credentials/{cloud}",
            get(wizard::get_credentials),
        )
        .route("/api/wizard/build", post(wizard::post_build))
        .route("/api/wizard/build/{id}", get(wizard::get_build_status))
        .route("/api/wizard/download", get(wizard::get_download))
        .layer(DefaultBodyLimit::max(16 * 1024 * 1024))
        .with_state(state)
}