hive-agent: guarantee a wake after a self-requested /compact
This commit is contained in:
parent
fa658567db
commit
2c7872841a
8 changed files with 227 additions and 48 deletions
|
|
@ -242,7 +242,7 @@ fn dispatch(
|
|||
} => record_answering_question(questions, id, &asker, &question),
|
||||
Request::ClearQuestion { id } => clear_question(questions, id),
|
||||
Request::ListQuestions => list_questions(questions),
|
||||
Request::Compact => compact(bus),
|
||||
Request::Compact { wake_prompt } => compact(bus, wake_prompt),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -458,8 +458,10 @@ fn mark_todos_done(store: &Todos, ids: &[i64]) -> Response {
|
|||
/// the agent's own MCP tool instead of the dashboard, and refuses below
|
||||
/// [`COMPACT_MIN_USAGE_FRACTION`] instead of always honouring the request —
|
||||
/// an agent can call this speculatively, a human clicking the dashboard
|
||||
/// button already made the judgment call.
|
||||
fn compact(bus: &Bus) -> Response {
|
||||
/// button already made the judgment call. `wake_prompt`, when set, is
|
||||
/// forwarded to `Bus::request_compact` so the turn loop drives a synthetic
|
||||
/// follow-up turn once the compaction actually finishes.
|
||||
fn compact(bus: &Bus, wake_prompt: Option<String>) -> Response {
|
||||
let Some(usage) = bus.last_ctx_usage() else {
|
||||
return Response::Err {
|
||||
message: "compact refused: no completed turn yet — nothing to compact".to_owned(),
|
||||
|
|
@ -487,9 +489,16 @@ fn compact(bus: &Bus) -> Response {
|
|||
),
|
||||
};
|
||||
}
|
||||
bus.request_compact();
|
||||
let will_wake = wake_prompt.is_some();
|
||||
bus.request_compact(wake_prompt);
|
||||
bus.emit(crate::events::LiveEvent::Note {
|
||||
text: "agent: self-requested /compact — running at the end of the current turn".into(),
|
||||
text: if will_wake {
|
||||
"agent: self-requested /compact (with wake prompt) — running at the end of the \
|
||||
current turn"
|
||||
.into()
|
||||
} else {
|
||||
"agent: self-requested /compact — running at the end of the current turn".into()
|
||||
},
|
||||
});
|
||||
Response::Ok
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue