trim verbose todo-tool descriptions, drop exhaustive subsystem list
This commit is contained in:
parent
bc69ee3b8f
commit
2b5e5a30f4
4 changed files with 18 additions and 31 deletions
|
|
@ -44,11 +44,9 @@ pub struct AckUntilArgs {
|
|||
/// MCP tool args for `mark_todos_done`.
|
||||
#[derive(Debug, serde::Deserialize, schemars::JsonSchema)]
|
||||
pub struct MarkTodosDoneArgs {
|
||||
/// The specific todo ids to clear (from `get_loose_ends`'s `todo #N`
|
||||
/// lines) — every id in the list is acked in one call. Deliberately a
|
||||
/// list, not a range/threshold: only clears exactly what you pass, so
|
||||
/// you don't risk acking a todo you haven't actually looked at. Unknown
|
||||
/// or already-acked ids are silently skipped.
|
||||
/// Todo ids to clear (from `get_loose_ends`'s `todo #N` lines). Only
|
||||
/// these ids are acked — not a range. Unknown/already-acked ids are
|
||||
/// silently skipped.
|
||||
pub ids: Vec<i64>,
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -347,11 +347,9 @@ impl AgentServer {
|
|||
at turn start to remember what you owe / what's owed to you without scrolling \
|
||||
inbox history. Output is a short bulleted list with ids, ages in seconds, and \
|
||||
the relevant context. Each `question` or `reminder` row can be cancelled by \
|
||||
passing its id + kind to `cancel_loose_end`. Empty result is reported clearly. \
|
||||
Todos are capped at 40 rendered rows (newest first) so a large backlog never makes \
|
||||
this call fail — a trailer line reports how many more are pending; review the shown \
|
||||
batch, clear reviewed ids with `mark_todos_done`, then call again for the next batch \
|
||||
instead of triaging hundreds of ids one `cancel_loose_end` at a time.\n\
|
||||
passing its id + kind to `cancel_loose_end`. Empty result is reported clearly. Todos \
|
||||
cap at 40 rows; a trailer line says how many more are pending — clear the shown ones \
|
||||
with `mark_todos_done`, then call again for the rest.\n\
|
||||
Pass `agent: \"<name>\"` to inspect a specific peer agent's threads. Direct \
|
||||
child agents are always accessible. For non-children, the `query_agent_state` \
|
||||
capability is required — without it the request is rejected with an error."
|
||||
|
|
@ -475,11 +473,9 @@ impl AgentServer {
|
|||
`kind` may also be `\"approval\"` to withdraw a pending approval you submitted \
|
||||
(before the operator acts on it) — root agent (`ruth`) only; the server rejects \
|
||||
`approval` kind for all other callers.\n\
|
||||
`kind` may also be `\"todo\"` to clear one of your own loose-ends-v2 todos \
|
||||
(bash-task completions, matrix unread, forge activity — the id in the \
|
||||
`get_loose_ends` `todo #N` line) — this dials the in-container socket directly, \
|
||||
no bash task involved, so it's safe to call repeatedly without spawning more \
|
||||
todos."
|
||||
`kind` may also be `\"todo\"` to clear one of your own loose-ends-v2 todos (the id \
|
||||
from a `get_loose_ends` `todo #N` line) — dials the in-agent socket directly, safe \
|
||||
to call repeatedly."
|
||||
)]
|
||||
async fn cancel_loose_end(&self, Parameters(args): Parameters<CancelLooseEndArgs>) -> String {
|
||||
let log = format!("{args:?}");
|
||||
|
|
@ -552,17 +548,12 @@ impl AgentServer {
|
|||
}
|
||||
|
||||
#[tool(
|
||||
description = "Bulk-clear specific local todos (loose-ends v2 — bash-task completions, \
|
||||
matrix unread, forge activity) by id in one call, instead of `cancel_loose_end`ing \
|
||||
each one individually. Deliberately list-based, not range-based: pass exactly the ids \
|
||||
you've actually looked at (typically the ones `get_loose_ends` just rendered) — there \
|
||||
is no `ack_until`-style 'clear everything below id N' shortcut for todos, since unlike \
|
||||
the sequentially-read message inbox, todos are heterogeneous unrelated items and a \
|
||||
blind range-clear risks silently acking something you never saw. When \
|
||||
`get_loose_ends` reports more todos than it renders (its truncation trailer says so), \
|
||||
review the shown batch, clear the reviewed ids here, then call `get_loose_ends` again \
|
||||
for the next batch. Unknown/already-acked ids are silently skipped. Returns how many \
|
||||
were newly acked."
|
||||
description = "Bulk-clear specific todos by id in one call, instead of \
|
||||
`cancel_loose_end`ing each one. List-based, not range-based — no `ack_until`-style \
|
||||
'clear below id N' for todos, since a blind range-clear risks acking something you \
|
||||
never saw. Pass the ids you've actually reviewed (typically what `get_loose_ends` \
|
||||
just showed); unknown/already-acked ids are silently skipped. Returns how many were \
|
||||
newly acked."
|
||||
)]
|
||||
async fn mark_todos_done(&self, Parameters(args): Parameters<MarkTodosDoneArgs>) -> String {
|
||||
let log = format!("{args:?}");
|
||||
|
|
|
|||
|
|
@ -296,10 +296,8 @@ pub(super) fn render_loose_ends(loose_ends: &[hive_sh4re::LooseEnd]) -> String {
|
|||
if hidden_todos > 0 {
|
||||
let _ = writeln!(
|
||||
out,
|
||||
"- {hidden_todos} more todo(s) not shown — review the ones above, then clear \
|
||||
the ids you've actually looked at with mark_todos_done(ids: [...]) (or \
|
||||
cancel_loose_end kind:\"todo\" id:<N> for just one) and call get_loose_ends \
|
||||
again to see the next batch; there is no blind bulk-clear-by-range for todos"
|
||||
"- {hidden_todos} more todo(s) not shown — clear reviewed ids with \
|
||||
mark_todos_done(ids: [...]), then call get_loose_ends again for the rest"
|
||||
);
|
||||
}
|
||||
out
|
||||
|
|
|
|||
Loading…
Reference in a new issue