use schemars::JsonSchema;
use serde::Deserialize;
use serde::Serialize;
use ts_rs::TS;
pub mod image_generation;
pub mod sleep;
pub mod web_search;
#[derive(Debug, Clone, Deserialize, Serialize, TS, JsonSchema, PartialEq)]
#[serde(tag = "kind")]
#[ts(tag = "kind")]
pub enum ExtensionItem {
#[serde(rename = "image_gen.generation")]
#[ts(rename = "image_gen.generation")]
ImageGeneration(image_generation::ImageGenerationItem),
#[serde(rename = "clock.sleep")]
#[ts(rename = "clock.sleep")]
Sleep(sleep::SleepItem),
#[serde(rename = "web.search")]
#[ts(rename = "web.search")]
WebSearch(web_search::WebSearchItem),
}
impl ExtensionItem {
pub fn id(&self) -> &str {
match self {
Self::ImageGeneration(item) => &item.id,
Self::Sleep(item) => &item.id,
Self::WebSearch(item) => &item.id,
}
}
}
#[cfg(test)]
#[path = "tests.rs"]
mod tests;