34 lines
829 B
Rust
34 lines
829 B
Rust
#[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)
|
|
}
|
|
}
|