muster release v5.29.1
Fixed
- The capability poll asks for what a server declared, one listing at a time. Every poll re-listed each connected server’s tools, resources and prompts – three requests, whether or not the server had declared resources or prompts at its handshake – and started every listing at the tick: every server and every pooled session, all at once, every interval. A backend with a per-caller rate limit answered a pooled session’s
tools/list with rate_limit_exceeded, and the cached list stayed as designed. A re-listing, from the poll or after a list_changed, now asks for resources and prompts only when the server declared the capability, so a tools-only server costs one request; and a poll walks its listings over the interval, one every interval/n in the order of the server names and sessions, at most eight at a time, so each backend sees one listing per interval at a steady rate. The walk runs on the process clock: a poll’s listings are done before the next tick, and the harness’s test_advance_clock makes every remaining listing due at once. A connection the pool dropped between the tick and its slot is left alone instead of listed through a closed client. (#1307)