Skip to main content

codex_app_server_sdk_macros/
lib.rs

1use proc_macro::TokenStream;
2use quote::quote;
3use syn::{DeriveInput, parse_macro_input};
4
5#[proc_macro_derive(OpenAiSerializable)]
6pub fn derive_openai_serializable(input: TokenStream) -> TokenStream {
7    let input = parse_macro_input!(input as DeriveInput);
8    let ident = input.ident;
9    let generics = input.generics;
10    let (impl_generics, ty_generics, where_clause) = generics.split_for_impl();
11
12    TokenStream::from(quote! {
13        impl #impl_generics ::codex_app_server_sdk::OpenAiSerializable for #ident #ty_generics #where_clause {
14            fn openai_output_schema() -> ::codex_app_server_sdk::__private_serde_json::Value {
15                ::codex_app_server_sdk::openai_json_schema_for::<Self>()
16            }
17        }
18    })
19}