fix question answer sender and self-cancel feedback loop

This commit is contained in:
damocles 2026-05-20 20:29:39 +02:00 committed by Mara
parent e50173f3e1
commit d8e64742f4
3 changed files with 31 additions and 12 deletions

View file

@ -532,6 +532,14 @@ impl Coordinator {
/// events back to the agent that called `ask`, `QuestionAsked`
/// events to the target of a peer question, etc.
pub fn notify_agent(&self, agent: &str, event: &hive_sh4re::HelperEvent) {
self.notify_agent_from(hive_sh4re::SYSTEM_SENDER, agent, event);
}
/// Same as `notify_agent` but with an explicit sender. Use this
/// when the event originates from a known agent or the operator
/// (e.g. `QuestionAnswered` — the answerer should be the `from`,
/// not `system`) so the recipient's terminal shows the right name.
pub fn notify_agent_from(&self, from: &str, agent: &str, event: &hive_sh4re::HelperEvent) {
let body = match serde_json::to_string(event) {
Ok(s) => s,
Err(e) => {
@ -540,7 +548,7 @@ impl Coordinator {
}
};
if let Err(e) = self.broker.send(&hive_sh4re::Message {
from: hive_sh4re::SYSTEM_SENDER.to_owned(),
from: from.to_owned(),
to: agent.to_owned(),
body,
in_reply_to: None,