manager mcp: expose 'remind' tool sharing storage helper with agent surface
This commit is contained in:
parent
0e6bac8388
commit
1770b51845
6 changed files with 120 additions and 24 deletions
|
|
@ -665,6 +665,45 @@ impl ManagerServer {
|
|||
.await
|
||||
}
|
||||
|
||||
#[tool(
|
||||
description = "Schedule a reminder that lands in the manager's own inbox at a future \
|
||||
time (sender will appear as `reminder`). Use for self-paced manager follow-ups: \
|
||||
'recheck pending approval in 10m', 'nudge alice if she hasn't replied by 14:00 \
|
||||
UTC'. Set EXACTLY ONE of `delay_seconds` (fire N seconds from now) or \
|
||||
`at_unix_timestamp` (fire at absolute epoch second). Body soft-caps at 1 KiB \
|
||||
inline — anything larger gets auto-persisted to a file under `/state/reminders/` \
|
||||
(the manager's own state mount) and the inbox message becomes a short pointer. \
|
||||
Pass `file_path` if you want to control the destination yourself."
|
||||
)]
|
||||
async fn remind(&self, Parameters(args): Parameters<RemindArgs>) -> String {
|
||||
let log = format!("{args:?}");
|
||||
run_tool_envelope("remind", log, async move {
|
||||
let timing = match (args.delay_seconds, args.at_unix_timestamp) {
|
||||
(Some(_), Some(_)) => {
|
||||
return "remind failed: pass exactly one of `delay_seconds` or \
|
||||
`at_unix_timestamp`, not both"
|
||||
.to_string();
|
||||
}
|
||||
(None, None) => {
|
||||
return "remind failed: pass exactly one of `delay_seconds` or \
|
||||
`at_unix_timestamp`"
|
||||
.to_string();
|
||||
}
|
||||
(Some(s), None) => hive_sh4re::ReminderTiming::InSeconds { seconds: s },
|
||||
(None, Some(t)) => hive_sh4re::ReminderTiming::At { unix_timestamp: t },
|
||||
};
|
||||
let (resp, retries) = self
|
||||
.dispatch(hive_sh4re::ManagerRequest::Remind {
|
||||
message: args.message,
|
||||
timing,
|
||||
file_path: args.file_path,
|
||||
})
|
||||
.await;
|
||||
annotate_retries(format_ack(resp, "remind", "reminder scheduled".to_string()), retries)
|
||||
})
|
||||
.await
|
||||
}
|
||||
|
||||
#[tool(
|
||||
description = "Fetch recent journal log lines for a sub-agent container. Useful \
|
||||
for diagnosing MCP server registration failures, startup crashes, plugin install \
|
||||
|
|
@ -753,6 +792,7 @@ pub fn allowed_mcp_tools(flavor: Flavor) -> Vec<String> {
|
|||
"request_apply_commit",
|
||||
"ask_operator",
|
||||
"get_logs",
|
||||
"remind",
|
||||
],
|
||||
};
|
||||
let mut out: Vec<String> = names
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue