adk_server/rest/controllers/
apps.rs1use crate::ServerConfig;
2use axum::{
3 extract::{Query, State},
4 http::StatusCode,
5 Json,
6};
7use serde::{Deserialize, Serialize};
8
9#[derive(Clone)]
10pub struct AppsController {
11 config: ServerConfig,
12}
13
14impl AppsController {
15 pub fn new(config: ServerConfig) -> Self {
16 Self { config }
17 }
18}
19
20pub async fn list_apps(
22 State(controller): State<AppsController>,
23) -> Result<Json<Vec<String>>, StatusCode> {
24 let apps = controller.config.agent_loader.list_agents();
25 Ok(Json(apps))
26}
27
28#[derive(Debug, Deserialize)]
30pub struct ListAppsQuery {
31 #[serde(default)]
32 pub relative_path: Option<String>,
33}
34
35#[derive(Debug, Serialize)]
37pub struct AppInfo {
38 pub name: String,
39 pub description: String,
40}
41
42pub async fn list_apps_compat(
45 State(controller): State<AppsController>,
46 Query(_query): Query<ListAppsQuery>,
47) -> Result<Json<Vec<String>>, StatusCode> {
48 let apps = controller.config.agent_loader.list_agents();
49 Ok(Json(apps))
50}