1extern crate proc_macro;
2use agent::{output::OutputParser, AgentParser};
3use proc_macro::TokenStream;
4use tool::{input::InputParser, ToolParser};
5mod agent;
6mod tool;
7
8#[proc_macro_derive(ToolInput, attributes(input))]
9pub fn input(input: TokenStream) -> TokenStream {
10 InputParser::default().parse(input)
11}
12
13#[proc_macro_derive(AgentOutput, attributes(output, strict))]
14pub fn agent_output(input: TokenStream) -> TokenStream {
15 OutputParser::default().parse(input)
16}
17
18#[proc_macro_attribute]
19pub fn tool(attr: TokenStream, item: TokenStream) -> TokenStream {
20 ToolParser::default().parse(attr, item)
21}
22
23#[proc_macro_attribute]
24pub fn agent(attr: TokenStream, item: TokenStream) -> TokenStream {
25 AgentParser::default().parse(attr, item)
26}