broker: recv_batch(max) — drain a bursty inbox in one round-trip
This commit is contained in:
parent
96ffb0e39a
commit
77b89bf2c6
9 changed files with 354 additions and 11 deletions
23
CLAUDE.md
23
CLAUDE.md
|
|
@ -183,6 +183,29 @@ read them à la carte.
|
|||
In-flight or recent context that hasn't earned a section yet.
|
||||
Prune freely.
|
||||
|
||||
- **Just landed:** inbox batching via `recv_batch(max)`. New
|
||||
MCP tool on both agent + manager surfaces pops up to `max`
|
||||
pending messages in a single round-trip (server-side cap
|
||||
32, `max = 0` short-circuits). Same delivery + ack
|
||||
bookkeeping as `recv`: every popped row is marked
|
||||
`delivered_at = NOW`, tracked on the per-recipient
|
||||
`unacked_ids` list (so the next `AckTurn` closes them out),
|
||||
and tagged `redelivered: true` if it was resurfaced by
|
||||
`RequeueInflight`. Wake prompt's pending-inbox hint
|
||||
rewritten to recommend `recv_batch(max: N)` instead of N
|
||||
consecutive `recv`s. Wire: new
|
||||
`AgentRequest::RecvBatch { max }` /
|
||||
`AgentResponse::Batch { messages: Vec<DeliveredMessage> }`
|
||||
(+ manager mirror) and a new `DeliveredMessage` struct in
|
||||
`hive-sh4re` shared by both. `format_recv_batch` on the
|
||||
mcp side renders the popped list with per-message
|
||||
redelivery banners + `---` separators; empty batch
|
||||
collapses to "(empty)" like single `recv`. 4 new broker
|
||||
tests cover FIFO + cap, empty-when-idle, zero-max
|
||||
short-circuit, and redelivered-flag propagation. Closes
|
||||
the "inbox batching hint" item from the ergonomics
|
||||
wishlist — the hint that was already in `format_wake_prompt`
|
||||
is now actionable in one tool call instead of N.
|
||||
- **Just landed:** lease-style message delivery / no-drop
|
||||
on turn fail. The `messages` table gained an `acked_at`
|
||||
column (idempotent ALTER + backfill = `delivered_at` so
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue