github Azure/azure-sdk-for-python azure-ai-agentserver-responses_2.4.0b1

pre-release5 hours ago

2.4.0b1 (2026-10-15)

Bugs Fixed

  • Propagate source cancellation through SSE keep-alive streams instead of
    treating interrupted durable admission as successful stream completion.
  • Signal accepted durable task shutdown before awaiting response execution, so
    explicit and checkpoint-based recovery exits preserve recoverable input.
    Rebind cold-recovery cancellation to the handler's exact event before
    publication, allowing cancellation to finish the tracked execution.
  • Atomically close fresh response reservations and unpublished execution
    admission when shutdown takes its drain snapshot. Preserve exact accepted
    executions for terminal finalization, track handler work before its first
    event, and return the existing HTTP 503 shutdown response for late creates.
  • Validate durable user partitions as strings or None before constructing
    platform, lifecycle, or runtime identities. Invalid partitions never fall
    back to anonymous storage. Fail the response only with independently proven
    original task references and current-input/deletion guards; otherwise settle
    only the malformed input and leave response, replay, and references untouched.
  • Allow only the current execution's exact record or request context to finalize
    while DELETE checks eligibility, so rejected in-flight DELETE requests cannot
    suppress terminal SSE events or response persistence.
  • Reject runtime publication once DELETE retains cleanup ownership, and bind
    fresh admission to its exact request context so late callbacks cannot replace
    a successor or clear a completed deletion marker.
  • Partition local in-memory and file-backed responses, items, history, and
    conversation indexes by the platform user key, keeping anonymous local state
    separate.
  • Release exact caller-scoped incarnation references when durable inputs settle
    before handler dispatch, preserving successor entries and admission deferrals.
  • Read retained DELETE cleanup ownership through the authorized response
    provider and noncreating replay lookup, without allocating replacement streams.
  • Retire stopped nonterminal runtime executions under scoped recovery admission,
    preventing early settlement or cancellation from retaining stale live state.
  • Settle malformed current durable response incarnations as failed without
    re-invoking execution, while retaining deletion fences and rejecting stale inputs.
  • Check all durable task owners before reclaiming empty replay or fencing DELETE,
    including older conversation tasks beyond the first listing page.
  • Partition live execution, cancellation state, SSE streams, and resilient
    task identifiers by the platform user key. Different users can use the same
    public response ID independently. Duplicate creation within one user's
    partition returns HTTP 409 while execution or replay is retained.
  • Require a successful user-scoped provider lookup before replaying stored SSE
    events; storage errors no longer fall through to cached replay.
  • Require Core 2.3.0b1 so retained file replay is discovered after restart for
    duplicate admission, authorized replay, and deletion.
  • Return an error when replay cleanup fails during DELETE and retain ownership
    state so the owner can retry cleanup.
  • Reserve the caller-scoped response ID throughout DELETE cleanup so a new
    POST cannot reuse the ID before stream, runtime, and provider cleanup finish.
  • Finish retained replay with the persisted terminal snapshot when crash
    recovery cannot resume execution, preventing indefinite SSE waits.
  • Remove newly allocated replay streams when durable task admission fails or
    shutdown rejects the request before execution starts, allowing response ID
    reuse after cleanup. Emit startup errors only on the requesting HTTP stream
    without recreating rejected replay or closing another execution's stream.
  • Release streaming create reservations and stop disconnect monitors even
    when sending HTTP headers fails before the first body iteration.
  • Shield non-streaming create reservation cleanup from request cancellation
    so an interrupted request does not prevent later reuse of the response ID.
  • Reclaim empty crash-abandoned file replay only when no caller-scoped runtime,
    response provider, or durable task retains ownership.
  • Retain DELETE ownership through provider cleanup failures and cancellation,
    and fence deleted durable response inputs without deleting unrelated turns.
    Recovery participates in scoped admission and cannot resurrect deleted responses.
  • Scope durable deletion fences and process-local recovery references by a
    private response incarnation, allowing a fresh same-ID turn on a retained
    conversation task without admitting an old deleted recovery.

Breaking Changes

  • FileResponseStore now persists data under user-scoped
    partitions-v1/{anonymous|user-hash} directories. Existing files in the
    previous shared layout remain unchanged but are not read or migrated
    automatically, because their user ownership cannot be established safely.
    Back up and explicitly migrate any required local data into the correct
    partition only after independently verifying its ownership.
  • Identified users now use private user-scoped stream and task keys. Existing
    shared replay logs and task chains are not adopted for those users because
    their ownership cannot be verified. Drain active work before upgrading.
    Anonymous lifecycle keys retain their previous format.

Don't miss a new azure-sdk-for-python release

NewReleases is sending notifications on new releases.