askit-macros 0.17.0

Procedural macro helpers for agent-stream-kit
Documentation
use agent_stream_kit::{
    AgentContext, AgentData, AgentError, AgentSpec, AgentValue, AsAgent, askit_agent, async_trait,
};

#[askit_agent(title = "No Kind", category = "Tests")]
struct NoKindAgent {
    data: AgentData,
}

#[async_trait]
impl AsAgent for NoKindAgent {
    fn new(
        askit: agent_stream_kit::ASKit,
        id: String,
        spec: AgentSpec,
    ) -> Result<Self, AgentError> {
        Ok(Self {
            data: AgentData::new(askit, id, spec),
        })
    }

    async fn process(
        &mut self,
        _ctx: AgentContext,
        _pin: String,
        _value: AgentValue,
    ) -> Result<(), AgentError> {
        Ok(())
    }
}

#[test]
fn default_kind_is_agent() {
    let def = NoKindAgent::agent_definition();
    assert_eq!(def.kind, "Agent");
    assert_eq!(def.title.as_deref(), Some("No Kind"));
    assert_eq!(def.category.as_deref(), Some("Tests"));
}