Repository navigation
v0.28.0
Fixes from a dual-reviewer adversarial audit (Claude Fable + Codex gpt-5.6-sol, independent passes) of the v0.25.0–v0.27.0 releases (issue #47 phases 1–3). No high-severity defects were found; the gaps below are closed.
Changed
callback_wrappernow composes around timeout-bounded SessionStore adapter dispatch (mirror-batcher appends and every resume-materialization store call), inside the timeout bound — on the worker thread in the default thread-hop mode, inside the cooperative timeout for inline-declared adapters. A Railsexecutor.wrapwrapper therefore covers an ActiveRecord-backed store adapter too: connections check out and back in per call instead of stranding on the throwaway thread. The bound itself is unchanged (JoinTimeoutsemantics, no-retry-on-timeout); a wrapper-raised error is treated like a store error (retryable on the batcher path). Previously the timeout path silently ignored the wrapper.
Fixed
SdkMcpServer#callback_scheduling=/#callback_wrapper=now validate like theirClaudeAgentOptionscounterparts: the String form ("inline") is coerced to the Symbol, and invalid values raiseArgumentErrorat set time. Previously the bare accessors accepted anything, and a String or typo silently degraded to the thread hop — the opposite of what an inline host asked for.- The once-per-process
:inline-under-isolation_level = :threadwarning is now emitted under a mutex, closing a benign race where two concurrently connecting sessions could both warn. - CHANGELOG 0.27.0 wording: a store declaration that itself raises propagates its own exception at construction (only invalid returned values raise
ArgumentError).
Internal refactors (no behavior change): SchedulingScope → CallbackDispatchScope (it carries the (scheduling mode, wrapper) dispatch pair), and the cooperative-timeout/cancellation pattern extracted into FiberBoundary.with_cooperative_timeout.
What's changed
- #51 Rename SchedulingScope -> CallbackDispatchScope, SCHEDULING_KEY -> DISPATCH_KEY — @ya-luotao
- #52 Extract cooperative-cancellation pattern into FiberBoundary.with_cooperative_timeout — @ya-luotao
Full Changelog: v0.27.0...v0.28.0
gem install claude-agent-sdk -v 0.28.0