fix(acp): deliver plain-text replies when send is skipped - #3883
fix(acp): deliver plain-text replies when send is skipped#3883nimittamatram07-lab wants to merge 2 commits into
Conversation
Buffer assistant message chunks for each ACP turn and publish them as a harness-signed threaded reply on EndTurn when no message delivery was confirmed. Keep the fallback armed after failed or cancelled sends, suppress duplicate delivery after a successful send, and skip bare acknowledgements. Co-authored-by: Michael Neale <michael.neale@gmail.com> Co-authored-by: npub1qyvc0c5kl4gqv2fd97fsk46tu378sqgy35vc83rvgfwne90sel7s0ed67d <011987e296fd5006292d2f930b574be47c7801048d1983c46c425d3c95f0cffd@buzz.block.builderlab.xyz> Co-authored-by: Tyler Longwell <tlongwell@block.xyz> Co-authored-by: nimittamatram07-lab <258744135+nimittamatram07-lab@users.noreply.github.com> Signed-off-by: nimittamatram07-lab <258744135+nimittamatram07-lab@users.noreply.github.com>
|
plain-text fallback when send is skipped is useful. does the activity log still show the skipped send so operators can tell delivery was degraded? |
Co-authored-by: nimittamatram07-lab <258744135+nimittamatram07-lab@users.noreply.github.com> Signed-off-by: nimittamatram07-lab <258744135+nimittamatram07-lab@users.noreply.github.com>
|
@Chessing234 Good catch. The original patch emitted a harness WARN, but it did not add an explicit degraded-delivery item to the Desktop Activity feed. Fixed in ff34b9c: successful fallback delivery now emits a Delivery fallback activity item, while a fallback publish failure emits Delivery fallback failed with the reason. The full buzz-acp suite passes (668 tests), and strict Clippy is clean. |
|
Tested successfully on Windows 11 with Buzz Desktop 0.5.3 and Hermes Agent 0.18.2. Setup:
Before this patch, Hermes completed the turn with a plain ACP assistant response and zero tool calls, but nothing appeared in the Buzz channel. I built
This fixes the silent-reply failure for the Hermes ACP runtime in a real managed Buzz Desktop setup. |
Summary
Fixes silent conversational turns from ACP runtimes that return assistant text
without explicitly calling
buzz messages send.agent_message_chunktext for the current ACP turn.EndTurn, posts buffered text as a harness-signed threadedkind-9 reply when no publish delivery was confirmed.
cancelled sends leave the fallback armed while successful sends suppress it
and avoid duplicates.
a reply target, or bare acknowledgements.
buzz-acp; the child runtime never needs theBuzz private key.
This rebases and adapts the approach from #2681 onto current
main, preservingthe original contributors in the commit trailers and resolving the intervening
turn-lifecycle changes.
Related issue
Closes #2698.
Related implementation: #2681.
Testing
Passed:
cargo fmt --all -- --checkcargo clippy -p buzz-acp --all-targets -- -D warningscargo test -p buzz-acp— 668 passed, 0 failedcargo build --release -p buzz-acpjust cistages through:Live end-to-end verification used an existing local Hermes ACP agent:
a59d58941f1fa83d4029aa3032308711d8a59b7fe52878f5620e4a330dca58f96cfcf56c2ee63029c90494dcc5f1cd04df0e4261648974a8f3d84964be87db29Existing Hermes connected securely.channel/root/reply tags, and produced no duplicate.
The repository-wide
just cirun ultimately stopped in the pre-existingDesktop scroll-test suite: multiple unchanged tests fail with
TypeError: act is not a function. This PR changes onlycrates/buzz-acp/src/acp.rsandcrates/buzz-acp/src/pool.rs; the focusedbuzz-acpsuite and all earlier repository-wide stages are green.