Skip to content

v0.2.4

Choose a tag to compare

@github-actions github-actions released this 12 Sep 03:42
· 26 commits to main since this release

Smith v0.2.4

Smith 0.2.4 says why a provider rejected a request, instead of only that one
did.

Fixed: a rejected request carries the provider's reason

A non-success response was classified from its status and its body was dropped
unread, deliberately, because a provider error body commonly echoes the
offending request with the authorization header inside it. The cost was that
no reason survived anywhere: a content block, a malformed request, and an
unsupported model all arrived as the provider rejected the request, and the
Gemini adapter then rebuilt the error without even the status it had been
given.

Smith now reads a bounded prefix of an error body and keeps only the two
fields providers document for the purpose, error.status and error.message,
truncated and recorded as provider.detail. A body that does not parse, or
that carries neither field, still yields nothing; the echoed request lives in
neither field, so what motivated dropping these bodies never crosses the
boundary. The Gemini adapter carries that metadata through and names the
reason:

Gemini provider rejected the request: INVALID_ARGUMENT: Input blocked: the
prompt contains sensitive words that violate Google's Generative AI
Prohibited Use policy.

Paired with v0.2.3's child failure causes, a sub-agent that dies on a rejected
prompt now reports that sentence to the parent rather than child turn failed.

Upgrading

Existing configuration, sessions, and protected checkpoints remain compatible.
The pinned Agent Runtime revision advances to 5ed4b54.

Full Changelog: v0.2.3...v0.2.4