1mod derives;
4#[cfg(feature = "mcp")]
5mod mcp_submit;
6
7use proc_macro::TokenStream;
8
9use crate::derives::gpui_form::GpuiFormOptions;
10
11#[proc_macro_derive(GpuiForm, attributes(gpui_form, koruma))]
13pub fn gpui_form_derive(input: TokenStream) -> TokenStream {
14 derives::gpui_form::from(
15 input,
16 GpuiFormOptions {
17 generate_shape: cfg!(feature = "inventory"),
18 generate_mcp: cfg!(feature = "mcp"),
19 },
20 )
21}
22
23#[cfg(feature = "mcp")]
25#[proc_macro_attribute]
26pub fn mcp_submit(attr: TokenStream, item: TokenStream) -> TokenStream {
27 match mcp_submit::expand(attr.into(), item.into()) {
28 Ok(tokens) => tokens.into(),
29 Err(error) => error.to_compile_error().into(),
30 }
31}