Files
zesdex/apps/infrastructure/src/tools/plan.rs
T

62 lines
1.4 KiB
Rust
Raw Normal View History

//! Plan management tools — enter and mark ready.
use crate::tools::{Tool, ToolCtx};
use anyhow::Result;
use serde_json::{json, Value};
pub struct PlanEnter;
impl Tool for PlanEnter {
fn name(&self) -> &'static str {
"plan_enter"
}
fn description(&self) -> &'static str {
"Enter a planning phase — present a structured plan for approval"
}
fn parameters(&self) -> Value {
json!({
"type": "object",
"properties": {
"plan": {
"type": "string",
"description": "The structured plan text"
}
},
"required": ["plan"]
})
}
fn run(&self, _ctx: &ToolCtx, args: &Value) -> Result<String> {
let plan_text = crate::tools::arg_str(args, "plan")?;
Ok(format!(
"Plan entered (length: {} chars). Waiting for approval...",
plan_text.len()
))
}
}
pub struct PlanReady;
impl Tool for PlanReady {
fn name(&self) -> &'static str {
"plan_ready"
}
fn description(&self) -> &'static str {
"Signal that the plan is ready and execution can begin"
}
fn parameters(&self) -> Value {
json!({
"type": "object",
"properties": {}
})
}
fn run(&self, _ctx: &ToolCtx, _args: &Value) -> Result<String> {
Ok("Plan is ready. Starting execution.".to_string())
}
}