diff --git a/hive-c0re/src/actions.rs b/hive-c0re/src/actions.rs index c7cc5f4..5e9a0ab 100644 --- a/hive-c0re/src/actions.rs +++ b/hive-c0re/src/actions.rs @@ -239,9 +239,12 @@ async fn run_apply_commit( // operator can git-commit by hand if they care. tracing::warn!(agent = %approval.agent, %id, error = ?e, "meta finalize_deploy failed"); } - // Don't ignore the coord pointer — keeps the borrow alive - // for future tracing additions without re-plumbing. - let _ = coord; + // Wake the agent on its next turn so claude sees the + // config change took effect. Same hint pattern as + // auto_update::rebuild_agent — manager approved a + // proposal, agent picks up where it left off with the + // new env / packages. + coord.kick_agent(&approval.agent, "config update applied"); (Ok(()), Some(tag)) } Err(e) => { diff --git a/hive-c0re/src/auto_update.rs b/hive-c0re/src/auto_update.rs index ac3bc7b..b07f1e5 100644 --- a/hive-c0re/src/auto_update.rs +++ b/hive-c0re/src/auto_update.rs @@ -88,6 +88,13 @@ pub async fn rebuild_agent(coord: &Arc, name: &str, current_rev: &s sha: None, tag: None, }); + // Wake the agent on its next turn so claude sees a + // "you were rebuilt — check /state/ for notes, --continue + // session intact" hint. Covers dashboard rebuild, admin + // CLI rebuild, auto-update startup scan, and the + // dashboard's meta-input update path — all of which + // route through rebuild_agent. + coord.kick_agent(name, "container rebuilt"); } Err(e) => { coord.notify_manager(&hive_sh4re::HelperEvent::Rebuilt { diff --git a/hive-c0re/src/dashboard.rs b/hive-c0re/src/dashboard.rs index cdf4be3..4fdb417 100644 --- a/hive-c0re/src/dashboard.rs +++ b/hive-c0re/src/dashboard.rs @@ -1093,7 +1093,9 @@ async fn post_rebuild(State(state): State, AxumPath(name): AxumPath) -> HostResponse { // agent.nix). Without this the admin-socket CLI was // a notify-gap. match &result { - Ok(()) => coord.notify_manager(&hive_sh4re::HelperEvent::Rebuilt { - agent: name.clone(), - ok: true, - note: None, - sha: None, - tag: None, - }), + Ok(()) => { + coord.notify_manager(&hive_sh4re::HelperEvent::Rebuilt { + agent: name.clone(), + ok: true, + note: None, + sha: None, + tag: None, + }); + // Wake the agent's next turn with the + // "you were rebuilt" hint. Same pattern as + // auto_update::rebuild_agent and the dashboard + // rebuild path — this is the CLI's equivalent. + coord.kick_agent(name, "container rebuilt"); + } Err(e) => coord.notify_manager(&hive_sh4re::HelperEvent::Rebuilt { agent: name.clone(), ok: false,