use utoipa::OpenApi; use goose::agents::extension::Envs; use goose::agents::ExtensionConfig; use goose::config::ExtensionEntry; use goose::providers::base::ConfigKey; use goose::providers::base::ProviderMetadata; #[allow(dead_code)] // Used by utoipa for OpenAPI generation #[derive(OpenApi)] #[openapi( paths( super::routes::config_management::upsert_config, super::routes::config_management::remove_config, super::routes::config_management::read_config, super::routes::config_management::add_extension, super::routes::config_management::remove_extension, super::routes::config_management::toggle_extension, super::routes::config_management::get_extensions, super::routes::config_management::update_extension, super::routes::config_management::read_all_config, super::routes::config_management::providers ), components(schemas( super::routes::config_management::UpsertConfigQuery, super::routes::config_management::ConfigKeyQuery, super::routes::config_management::ConfigResponse, super::routes::config_management::ProvidersResponse, super::routes::config_management::ProviderDetails, super::routes::config_management::ExtensionResponse, super::routes::config_management::ExtensionQuery, ProviderMetadata, ExtensionEntry, ExtensionConfig, ConfigKey, Envs, )) )] pub struct ApiDoc; #[allow(dead_code)] // Used by generate_schema binary pub fn generate_schema() -> String { let api_doc = ApiDoc::openapi(); serde_json::to_string_pretty(&api_doc).unwrap() }