Desktop spawns managed agents with BUZZ_ACP_MULTIPLE_EVENT_HANDLING hard-coded to steer — no per-agent exposure

Open
#7,767 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
68/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Active
Tech stack
rust
Domain
desktop

Research direction

Start with MultipleEventHandling in crates/buzz-acp/src/config.rs and the managed-agent spawn path in desktop/src-tauri/src/managed_agents/runtime.rs. Trace how idle_timeout_seconds and max_turn_duration_seconds are stored and passed to the command, then determine where the per-agent setting belongs. Done means a selected event-handling mode is exposed at the requested scope and replaces the unconditional steer environment value.

Written by the indexing model from the issue text.

Description

Component

desktop (managed agents) / buzz-acp

Summary

The runner supports four mid-turn delivery modes (crates/buzz-acp/src/config.rs, MultipleEventHandling): queue, steer (default), interrupt, owner-interrupt. The CLI flag and BUZZ_ACP_MULTIPLE_EVENT_HANDLING work fine when spawning buzz-acp manually.

But managed agents spawned by the desktop app cannot use any of this: the spawn path hard-codes the env (desktop/src-tauri/src/managed_agents/runtime.rs at ef2aa1a):

command.env("BUZZ_ACP_MULTIPLE_EVENT_HANDLING", "steer");
command.env("BUZZ_ACP_DEDUP", "queue");

It is unconditional, while the neighboring envs shown it being written deliberately key off record fields:

if let Some(idle) = record.idle_timeout_seconds {
    command.env("BUZZ_ACP_IDLE_TIMEOUT", idle.to_string());
}
if let Some(max_dur) = record.max_turn_duration_seconds {
    command.env("BUZZ_ACP_MAX_TURN_DURATION", max_dur.to_string());
}

So idle_timeout_seconds / max_turn_duration_seconds are exposed per agent, but the event-handling mode is not — there is no UI setting and no agent-record field, even though the mechanism clearly exists.

Impact

Managed agents are always subject to steering semantics: a @mention arriving mid-turn cancels the in-flight turn and merges (see also #5839 for the channel-scoped variant of this). Users who want queue semantics — never cancel, deliver the new message after the current turn — have no way to choose it for a managed agent.

Request

Expose multiple_event_handling as a per-managed-agent setting (like idle timeout and max turn duration already are), or at minimum a workspace-level default, and pass the chosen value into the spawn env instead of the hard-coded steer.

Verified against

commit ef2aa1a (fresh checkout of main). Happy to link a PR if maintainers agree with the shape.

Dominant language
Rust
Stars
33.7k
Forks
4.4k
Avg merge
1d 21h
Merged PRs (30d)
239

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from block/buzz

All issues in block/buzz

Similar issues

More Rust issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.