mod derives;
#[cfg(feature = "mcp")]
mod mcp_submit;
use proc_macro::TokenStream;
use crate::derives::gpui_form::GpuiFormOptions;
#[proc_macro_derive(GpuiForm, attributes(gpui_form, koruma))]
pub fn gpui_form_derive(input: TokenStream) -> TokenStream {
derives::gpui_form::from(
input,
GpuiFormOptions {
generate_shape: cfg!(feature = "inventory"),
generate_mcp: cfg!(feature = "mcp"),
},
)
}
#[cfg(feature = "mcp")]
#[proc_macro_attribute]
pub fn mcp_submit(attr: TokenStream, item: TokenStream) -> TokenStream {
match mcp_submit::expand(attr.into(), item.into()) {
Ok(tokens) => tokens.into(),
Err(error) => error.to_compile_error().into(),
}
}