1.0.0b4 (2026-04-19)
Bugs Fixed
DELETE /responses/{id}no longer returns intermittent 404 when the background task's eager eviction races with the delete handler. Previously,try_evictcould remove the record from in-memory state between the handler'sget()anddelete()calls, causingdelete()to returnFalseand producing a spurious 404. The handler now falls through to the durable provider when the in-memory delete fails due to a concurrent eviction.POST /responseswithbackground=true, stream=falsenow correctly returnsstatus: "in_progress"instead of"completed". Handlers that yield events synchronously (noawaitbetween yields — the normal pattern withResponseEventStream) would cause the background task to run to completion beforerun_backgroundcaptured the initial snapshot. A cooperative yield afterresponse_created_signal.set()now ensures the POST handler resumes promptly.- Conversation history IDs (
previous_response_id,conversation_id) are now validated eagerly before the handler is invoked. A nonexistent reference now returns a 404 error to the client immediately, instead of being silently ignored or surfacing as an opaque error deep inside the handler. The prefetched IDs are reused byResponseContext.get_history(), eliminating a redundant provider call.