#[path = "intrinsic/descriptor.rs"]
mod descriptor;
#[path = "intrinsic/execute.rs"]
mod execute;
use async_trait::async_trait;
use strum::{Display, VariantArray};
use crate::tool::{RuntimeToolDescriptor, ToolContext, ToolDefinition, ToolExecutor, ToolResult};
#[derive(Clone, Copy, Display, VariantArray)]
#[strum(prefix = "task_")]
#[strum(serialize_all = "snake_case")]
pub enum TaskIntrinsicTool {
Create,
Claim,
Update,
List,
Get,
}
impl ToolDefinition for TaskIntrinsicTool {
fn descriptor(&self) -> RuntimeToolDescriptor {
descriptor::task_intrinsic_descriptor(*self)
}
}
#[async_trait]
impl ToolExecutor for TaskIntrinsicTool {
async fn execute_mut(&self, ctx: ToolContext<'_>, input: serde_json::Value) -> ToolResult {
execute::execute_mut(*self, ctx, input)
}
}