Skip to content

v0.13.7 — bounded model request recovery

Choose a tag to compare

@basepointer basepointer released this 24 Sep 05:33

Generated Pydantic AI agents now retry temporary provider failures inside an individual model request, preserving completed tool results. Each request has up to three attempts within 30 seconds, and generated turns have a 90-second limit. Retry outcomes survive OpenTelemetry export into DecimalAI span attributes.

The opt-in decimalai.pydantic_ai.retry_model_requests helper respects Retry-After, distinguishes explicit depleted billing from throttling, and propagates cancellation and terminal failures. Streaming passes through unchanged. Existing agent files must be regenerated or explicitly adopt the helper.

Validation: 2,116 unit tests passed; hosted CI passed across Python 3.10–3.12, declared dependency floors, and framework conformance. The clean-room wheel passed hermetic conformance and live OpenAI checks. The live gate reports pass-with-skips: Gemini-only journeys and evaluation were not run because this machine's development Gemini key is depleted; its stored fleet key is invalid. Injected 429/503, timeout, billing, and tool non-replay cases are covered by deterministic tests.