1use soma_application::CatalogSnapshot;
4use soma_provider_core::ProviderSurface;
5
6use crate::dto::LauncherSchemaResponse;
7
8#[must_use]
12pub fn find_schema(snapshot: &CatalogSnapshot, id: &str) -> Option<LauncherSchemaResponse> {
13 snapshot
14 .catalogs
15 .iter()
16 .flat_map(|catalog| catalog.tools.iter())
17 .find(|tool| tool.name == id && tool.exposed_on(ProviderSurface::Palette))
18 .map(|tool| LauncherSchemaResponse {
19 id: tool.name.clone(),
20 input_schema: tool.input_schema.clone(),
21 output_schema: tool.output_schema.clone(),
22 })
23}
24
25#[cfg(test)]
26#[path = "schema_tests.rs"]
27mod tests;