refactor(#2569): remove the c0re todo store + handlers (todos now owned in-container)
This commit is contained in:
parent
21f1569a04
commit
0977006ec6
7 changed files with 0 additions and 517 deletions
|
|
@ -596,29 +596,6 @@ async fn dispatch(req: &Request, agent: &str, coord: &Arc<Coordinator>) -> Respo
|
|||
since_secs,
|
||||
agent: target,
|
||||
} => handle_reminder_rollup(coord, agent, target.as_deref(), *since_secs),
|
||||
// Todos (loose-ends v2): in-container subsystems push/clear
|
||||
// their own; the agent lists / marks its own done. Scoped to the
|
||||
// calling agent (the socket identity) — no cross-agent access.
|
||||
Request::UpsertTodo {
|
||||
subsystem,
|
||||
key,
|
||||
summary,
|
||||
source,
|
||||
} => handle_upsert_todo(
|
||||
coord,
|
||||
agent,
|
||||
subsystem,
|
||||
key.as_deref(),
|
||||
summary,
|
||||
source.as_deref(),
|
||||
),
|
||||
Request::ClearTodo {
|
||||
subsystem,
|
||||
key,
|
||||
all,
|
||||
} => handle_clear_todo(coord, agent, subsystem, key.as_deref(), *all),
|
||||
Request::ListTodos { subsystem } => handle_list_todos(coord, agent, subsystem.as_deref()),
|
||||
Request::MarkTodoDone { id } => handle_mark_todo_done(coord, agent, *id),
|
||||
// Orchestration / diagnostics verbs — gated per-verb on tool-group
|
||||
// membership or topology (see `dispatch_orchestration`).
|
||||
_ => dispatch_orchestration(req, agent, coord).await,
|
||||
|
|
@ -813,83 +790,6 @@ fn handle_get_loose_ends(coord: &Arc<Coordinator>, agent: &str, target: Option<&
|
|||
}
|
||||
}
|
||||
|
||||
/// `UpsertTodo` — a subsystem pushes/updates one of this agent's todos.
|
||||
/// Coalesces a wake ONLY when the row is new or actually changed, so
|
||||
/// re-pushing an identical keyed todo is a silent no-op.
|
||||
fn handle_upsert_todo(
|
||||
coord: &Arc<Coordinator>,
|
||||
agent: &str,
|
||||
subsystem: &str,
|
||||
key: Option<&str>,
|
||||
summary: &str,
|
||||
source: Option<&str>,
|
||||
) -> Response {
|
||||
match coord.todos.upsert(agent, subsystem, key, summary, source) {
|
||||
Ok((_, changed)) => {
|
||||
if changed {
|
||||
let _ = coord.broker.send(&Message {
|
||||
from: "todo".to_owned(),
|
||||
to: agent.to_owned(),
|
||||
body: "you have todos — call get_loose_ends to see them".to_owned(),
|
||||
in_reply_to: None,
|
||||
});
|
||||
}
|
||||
Response::Ok
|
||||
}
|
||||
Err(e) => Response::Err {
|
||||
message: format!("{e:#}"),
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
/// `ClearTodo` — a producer clears a resolved todo by `(subsystem, key)`,
|
||||
/// or wipes its whole set when `all` (cancel-and-recreate on restart).
|
||||
fn handle_clear_todo(
|
||||
coord: &Arc<Coordinator>,
|
||||
agent: &str,
|
||||
subsystem: &str,
|
||||
key: Option<&str>,
|
||||
all: bool,
|
||||
) -> Response {
|
||||
let result = if all {
|
||||
coord.todos.clear_subsystem(agent, subsystem)
|
||||
} else {
|
||||
coord.todos.clear(agent, subsystem, key)
|
||||
};
|
||||
match result {
|
||||
Ok(count) => Response::Acked {
|
||||
count: u64::try_from(count).unwrap_or(0),
|
||||
},
|
||||
Err(e) => Response::Err {
|
||||
message: format!("{e:#}"),
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
/// `ListTodos` — enumerate this agent's todos (optionally one subsystem's)
|
||||
/// as `LooseEnd::Todo` rows, so a producer can reconcile its own set.
|
||||
fn handle_list_todos(coord: &Arc<Coordinator>, agent: &str, subsystem: Option<&str>) -> Response {
|
||||
match crate::loose_ends::todos_for(coord, agent, subsystem) {
|
||||
Ok(loose_ends) => Response::LooseEnds { loose_ends },
|
||||
Err(e) => Response::Err {
|
||||
message: format!("{e:#}"),
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
/// `MarkTodoDone` — the agent clears one of its own todos by id (scoped to
|
||||
/// the agent, so it can't touch another agent's).
|
||||
fn handle_mark_todo_done(coord: &Arc<Coordinator>, agent: &str, id: i64) -> Response {
|
||||
match coord.todos.mark_done(agent, id) {
|
||||
Ok(count) => Response::Acked {
|
||||
count: u64::try_from(count).unwrap_or(0),
|
||||
},
|
||||
Err(e) => Response::Err {
|
||||
message: format!("{e:#}"),
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
/// `CountPendingReminders` — resolve the target (own / subtree free, else
|
||||
/// `QueryAgentState`) then count its pending reminders.
|
||||
fn handle_count_pending_reminders(
|
||||
|
|
|
|||
Loading…
Reference in a new issue