What's Changed
Added
- AskUser tool — Agents can now pause mid-run to elicit structured input from the user. Supports single-select, multi-select, and free-text responses with a 1–4 question format, option validation, and graceful decline handling.
- Hooks system — Introduced a first-class hook API (
PreToolUse,PostToolUse,UserPromptSubmit,Stop,PreCompact) that allows consumers to intercept, modify, or block agent actions at runtime without modifying core loop logic. - Steering & interruption — Added
Session.steer()andSession.interrupt()for active-run control.steer()injects a user message at the next turn boundary without aborting the run;interrupt()ends the current run cleanly while preserving all in-flight turn state.
Improved
- Hardened abort signal propagation across parallel tool execution, ensuring in-flight tool calls emit proper
tool_call_endevents before surfacingAbortError. - Improved adjacent-batch partitioning in the tool scheduler to preserve strict result ordering across mixed read/write batches.
- Strengthened session store concurrency guarantees; concurrent
updateMetacalls now correctly accumulate all patches without loss. - Expanded provider error normalization for OpenAI Chat and Responses APIs, covering HTTP-date
retry-afterheaders and mid-stream abort detection. - Refined compaction logic to correctly re-inject skill listings and invoked skill bodies after context threshold is crossed.
Full Changelog: https://github.com/skawld/skawld-sdk/blob/main/CHANGELOG.md