Files
tkmind_go/crates/goose/src/agents/platform_tools.rs
T
Jack Amadeo 325bf396af Update to rmcp 1.1.0 (#7619)
Co-authored-by: Alex Hancock <alexhancock@block.xyz>
2026-03-06 02:40:52 +00:00

42 lines
2.3 KiB
Rust

use indoc::indoc;
use rmcp::model::{Tool, ToolAnnotations};
use rmcp::object;
pub const PLATFORM_MANAGE_SCHEDULE_TOOL_NAME: &str = "platform__manage_schedule";
pub fn manage_schedule_tool() -> Tool {
Tool::new(
PLATFORM_MANAGE_SCHEDULE_TOOL_NAME.to_string(),
indoc! {r#"
Manage goose's internal scheduled recipe execution.
Actions:
- "list": List all goose scheduled jobs
- "create": Create a new goose scheduled job from a recipe file
- "run_now": Execute a goose scheduled job immediately
- "pause": Pause a goose scheduled job
- "unpause": Resume a paused goose scheduled job
- "delete": Remove a goose scheduled job
- "kill": Terminate a currently running goose scheduled job
- "inspect": Get details about a running goose scheduled job
- "sessions": List execution history for a goose scheduled job
- "session_content": Get the full content (messages) of a specific session
"#}
.to_string(),
object!({
"type": "object",
"required": ["action"],
"properties": {
"action": {
"type": "string",
"enum": ["list", "create", "run_now", "pause", "unpause", "delete", "kill", "inspect", "sessions", "session_content"]
},
"job_id": {"type": "string", "description": "Job identifier for operations on existing jobs"},
"recipe_path": {"type": "string", "description": "Path to recipe file for create action"},
"cron_expression": {"type": "string", "description": "A cron expression for create action. Supports both 5-field (minute hour day month weekday) and 6-field (second minute hour day month weekday) formats. 5-field expressions are automatically converted to 6-field by prepending '0' for seconds."},
"limit": {"type": "integer", "description": "Limit for sessions list", "default": 50},
"session_id": {"type": "string", "description": "Session identifier for session_content action"}
}
}),
).annotate(ToolAnnotations::with_title("Manage scheduled recipes".to_string()).read_only(false).destructive(true).idempotent(false).open_world(false))
}