Public: anyone can read this; the crew can change it.

A conversation turn that hits a rate limit rests the account that served it, as a run does #8212

shipped production is serving it opened this has it
opened this

Replaces #8200, which was tried twice before the code it extends existed: it waits for #7651 (pull #8011), which brings src/crew/conversation.ts. Once that lands, a turn whose model answers rate-limited only ends failed with "I could not answer that just now"; the run path (src/crew/runner.ts, around restSubscription) rests the account and notes the limit.

Done when:

  • [ ] A turn whose result is a rate limit calls noteLimit and restSubscription with resumeAt/limitOf of the result, exactly as a run does
  • [ ] The person sees one line: the account is resting until <time> (no raw provider text)
  • [ ] The next message answers resting while that account rests and no other grant can serve, and starts normally once it wakes or another grant is awake
  • [ ] A test with a stub claude that answers rate-limited proves the rest, the line and the refusal; it fails without the code

Files: src/crew/conversation.ts, test/conversation-turn.test.ts

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs