Release Notes
Added
llm/stream now applies resilience at stream-open. Streaming was bypassing the whole
dispatch layer; it now runs through rate-limiting and provider fallback before the
first token (a primary that fails to open the stream fails over to the next; once a token
is delivered, a mid-stream failure surfaces and keeps the partial — failing over would
re-emit it). Budgets can gate streams with llm/with-budget {... :on-stream :pre-gate}
(off by default). The cache and mid-stream retry still don't apply to streams (use
cassettes for deterministic stream replay).
Verified live (OpenAI bad-model → fail over to Anthropic mid-llm/stream).
- Per-call
:timeout (ms) on llm/complete / llm/chat / llm/send. The option
now reaches the HTTP layer as a per-request reqwest timeout for the network providers
(Anthropic / OpenAI / Gemini) — previously parsed but ignored. (Local Ollama is excluded;
streaming calls aren't capped, since a wall-clock timeout would kill a long legitimate stream.)
Fixed
- OpenAI streaming dropped tool calls.
stream_complete returned an empty tool_calls,
discarding tool-call deltas — streaming agents on OpenAI were broken. It now accumulates the
index-keyed id / function.name / function.arguments fragments and assembles them into
the final response (verified live against the OpenAI API).
- Gemini silent empty output. A thinking model with a small
:max-tokens could spend the
whole budget reasoning and return an empty string with finishReason: MAX_TOKENS (exit 0,
no signal). It now raises an actionable error telling you to raise :max-tokens / lower
:reasoning-effort (verified live; normal calls unaffected).
Install sema-lang 1.25.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/HelgeSverre/sema/releases/download/v1.25.0/sema-lang-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/HelgeSverre/sema/releases/download/v1.25.0/sema-lang-installer.ps1 | iex"
Install prebuilt binaries via Homebrew
brew install helgesverre/tap/sema-lang
Download sema-lang 1.25.0