Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@ Semver applies from 1.0.0. A breaking change to a documented API needs a major

## [Unreleased]

Nothing yet.

## 27.10.0 - 2026-10-12

### Added

Tier 2 — http. Tier 4 — ai.
Expand Down Expand Up @@ -57,6 +61,10 @@ Tier 2 — http. Tier 4 — ai.
- **Two streamed tool calls that share one `index` are two calls.** The chat-completions assembler merged fragments by `tool_calls[].index` alone. An endpoint that numbers every call of a turn `0` (or sends no index) and tells them apart by `id` had its calls concatenated into one argument string — `{…}{…}` — and one name (`readDocreadDoc`), which then failed to parse. A fragment whose `id` differs from the open call's now starts a new call; an id repeated on every fragment, or sent only on the first, is still one call.
- **A streamed call is read when the stream ends, not when the finish reason arrives.** Nothing in the format orders the finish reason against the last argument fragment, and an endpoint may send the reason twice (OpenRouter repeats it on the usage chunk). `ChatCompletionStream.end()` drains the calls at `[DONE]` or when the socket closes; tool-call chunks are yielded then.

### Commits

- fix(ai): unattended agents: a cut-off answer is never a success, streamed tool calls parse or fail typed, failures carry their bill; continue, sampling, in-process tools (#767)

## 27.9.0 - 2026-10-11

### Added
Expand Down
Loading
Loading