Commit log

ea03063 v0.21.1

Andrey Nering created

43a2aa5 test: re-record test fixtures

Andrey Nering created

d8aafda chore(deps): import strings package

Andrey Nering created

5f0d1e3 fix(openrouter): use xstrings helper

Click to expand commit body
Co-authored-by: Andrey Nering <andreynering@users.noreply.github.com>

Christian Rocha and Andrey Nering created

1720eac fix(openrouter): don't clip thinking output on claude models

Christian Rocha created

b7c17e0 ci: fix build running twice on pull requests

Andrey Nering created

f8a3e2f chore(deps): bump the all group with 2 updates (#215)

Click to expand commit body
Bumps the all group with 2 updates: [github.com/aws/smithy-go](https://github.com/aws/smithy-go) and [github.com/kaptinlin/jsonschema](https://github.com/kaptinlin/jsonschema).


Updates `github.com/aws/smithy-go` from 1.25.0 to 1.25.1
- [Release notes](https://github.com/aws/smithy-go/releases)
- [Changelog](https://github.com/aws/smithy-go/blob/main/CHANGELOG.md)
- [Commits](https://github.com/aws/smithy-go/compare/v1.25.0...v1.25.1)

Updates `github.com/kaptinlin/jsonschema` from 0.7.7 to 0.7.11
- [Commits](https://github.com/kaptinlin/jsonschema/compare/v0.7.7...v0.7.11)

---
updated-dependencies:
- dependency-name: github.com/aws/smithy-go
  dependency-version: 1.25.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all
- dependency-name: github.com/kaptinlin/jsonschema
  dependency-version: 0.7.11
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

dependabot[bot] and dependabot[bot] created

d9ff008 v0.21.0

Andrey Nering created

5975b48 fix(openaicompat): parse "reasoning" field and include reasoning_content on tool call messages (#196)

Click to expand commit body
Some OpenAI-compatible providers (e.g. Moonshot AI/Kimi) send reasoning
content under the "reasoning" JSON field rather than "reasoning_content".
The ReasoningData struct only looked for "reasoning_content", silently
dropping all reasoning from these providers.

Additionally, when thinking is enabled, providers like Kimi require
reasoning_content to be present on all assistant tool call messages,
even if empty. Without this, multi-turn conversations with tool calls
fail with "thinking is enabled but reasoning_content is missing".

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

carsonfarmer and Claude Opus 4.6 (1M context) created

6d22b85 feat(openai): add gpt-5.5 responses models (#211)

Michael Suchacz created

b852eff v0.20.0

Andrey Nering created

95dcd6e feat(anthropic): add document support for pdf and text file content blocks (#197)

Nic-vdwalt created

471520c fix(anthropic/openai/google): wrap `io.ErrUnexpectedEOF` as `ProviderError` (#198)

Lauri Jutila created

3bfd3c8 chore(deps): bump github.com/ardanlabs/kronk in the kronk group (#207)

Click to expand commit body
Bumps the kronk group with 1 update: [github.com/ardanlabs/kronk](https://github.com/ardanlabs/kronk).


Updates `github.com/ardanlabs/kronk` from 1.22.2 to 1.23.1
- [Release notes](https://github.com/ardanlabs/kronk/releases)
- [Commits](https://github.com/ardanlabs/kronk/compare/v1.22.2...v1.23.1)

---
updated-dependencies:
- dependency-name: github.com/ardanlabs/kronk
  dependency-version: 1.23.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: kronk
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

dependabot[bot] and dependabot[bot] created

12cec64 chore(deps): bump the all group with 4 updates (#206)

Click to expand commit body
Bumps the all group with 4 updates: [github.com/aws/aws-sdk-go-v2](https://github.com/aws/aws-sdk-go-v2), [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2), [github.com/aws/smithy-go](https://github.com/aws/smithy-go) and [google.golang.org/genai](https://github.com/googleapis/go-genai).


Updates `github.com/aws/aws-sdk-go-v2` from 1.41.5 to 1.41.6
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/v1.41.5...v1.41.6)

Updates `github.com/aws/aws-sdk-go-v2/config` from 1.32.14 to 1.32.16
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.32.14...config/v1.32.16)

Updates `github.com/aws/smithy-go` from 1.24.3 to 1.25.0
- [Release notes](https://github.com/aws/smithy-go/releases)
- [Changelog](https://github.com/aws/smithy-go/blob/main/CHANGELOG.md)
- [Commits](https://github.com/aws/smithy-go/compare/v1.24.3...v1.25.0)

Updates `google.golang.org/genai` from 1.53.0 to 1.54.0
- [Release notes](https://github.com/googleapis/go-genai/releases)
- [Changelog](https://github.com/googleapis/go-genai/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/go-genai/compare/v1.53.0...v1.54.0)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2
  dependency-version: 1.41.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all
- dependency-name: github.com/aws/aws-sdk-go-v2/config
  dependency-version: 1.32.16
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all
- dependency-name: github.com/aws/smithy-go
  dependency-version: 1.25.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: all
- dependency-name: google.golang.org/genai
  dependency-version: 1.54.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: all
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

dependabot[bot] and dependabot[bot] created

b2c4b61 v0.19.0

Andrey Nering created

f60d4fe feat(anthropic): add `EffortXHigh` constant (#204)

Danielle Maywood created

402a113 v0.18.0

Christian Rocha created

61bc0b2 feat(agent): add the ability to stop a turn and end the agent loop

Christian Rocha created

d9b6308 v0.17.2

Christian Rocha created

15bced7 chore(agent): move tool execution after stream loop + add test

Christian Rocha created

bbf53dc fix(agent): buffer tool calls

Click to expand commit body
Wait until streaming has finished before dispatching tool calls to avoid
getting tool results without a matching call: essentially orphans.

Christian Rocha created

ce26050 ci: fix govulncheck by updating to go 1.26.2 (#201)

Andrey Nering created

5f01141 chore(deps): bump github.com/ardanlabs/kronk in the kronk group (#200)

dependabot[bot] created

06f2e8f chore(deps): bump the all group with 2 updates (#199)

dependabot[bot] created

c8896d3 chore: add `CODEOWNERS` to ask review from me

Andrey Nering created

92dc3ae chore(deps): bump github.com/ardanlabs/kronk in the kronk group (#194)

Click to expand commit body
Bumps the kronk group with 1 update: [github.com/ardanlabs/kronk](https://github.com/ardanlabs/kronk).


Updates `github.com/ardanlabs/kronk` from 1.21.4 to 1.22.0
- [Release notes](https://github.com/ardanlabs/kronk/releases)
- [Commits](https://github.com/ardanlabs/kronk/compare/v1.21.4...v1.22.0)

---
updated-dependencies:
- dependency-name: github.com/ardanlabs/kronk
  dependency-version: 1.22.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: kronk
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

dependabot[bot] and dependabot[bot] created

783847b chore(deps): bump the all group with 3 updates (#193)

Click to expand commit body
Bumps the all group with 3 updates: [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2), [github.com/aws/smithy-go](https://github.com/aws/smithy-go) and [google.golang.org/genai](https://github.com/googleapis/go-genai).


Updates `github.com/aws/aws-sdk-go-v2/config` from 1.32.13 to 1.32.14
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.32.13...config/v1.32.14)

Updates `github.com/aws/smithy-go` from 1.24.2 to 1.24.3
- [Release notes](https://github.com/aws/smithy-go/releases)
- [Changelog](https://github.com/aws/smithy-go/blob/main/CHANGELOG.md)
- [Commits](https://github.com/aws/smithy-go/compare/v1.24.2...v1.24.3)

Updates `google.golang.org/genai` from 1.52.0 to 1.52.1
- [Release notes](https://github.com/googleapis/go-genai/releases)
- [Changelog](https://github.com/googleapis/go-genai/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/go-genai/compare/v1.52.0...v1.52.1)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/config
  dependency-version: 1.32.14
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all
- dependency-name: github.com/aws/smithy-go
  dependency-version: 1.24.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all
- dependency-name: google.golang.org/genai
  dependency-version: 1.52.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

dependabot[bot] and dependabot[bot] created

32045be chore(deps): bump the all group with 5 updates (#190)

Click to expand commit body
Bumps the all group with 5 updates:

| Package | From | To |
| --- | --- | --- |
| [cloud.google.com/go/auth](https://github.com/googleapis/google-cloud-go) | `0.18.2` | `0.19.0` |
| [github.com/aws/aws-sdk-go-v2](https://github.com/aws/aws-sdk-go-v2) | `1.41.4` | `1.41.5` |
| [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2) | `1.32.12` | `1.32.13` |
| [github.com/kaptinlin/jsonschema](https://github.com/kaptinlin/jsonschema) | `0.7.6` | `0.7.7` |
| [google.golang.org/genai](https://github.com/googleapis/go-genai) | `1.51.0` | `1.52.0` |


Updates `cloud.google.com/go/auth` from 0.18.2 to 0.19.0
- [Release notes](https://github.com/googleapis/google-cloud-go/releases)
- [Changelog](https://github.com/googleapis/google-cloud-go/blob/main/CHANGES.md)
- [Commits](https://github.com/googleapis/google-cloud-go/compare/auth/v0.18.2...v0.19.0)

Updates `github.com/aws/aws-sdk-go-v2` from 1.41.4 to 1.41.5
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/v1.41.4...v1.41.5)

Updates `github.com/aws/aws-sdk-go-v2/config` from 1.32.12 to 1.32.13
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.32.12...config/v1.32.13)

Updates `github.com/kaptinlin/jsonschema` from 0.7.6 to 0.7.7
- [Commits](https://github.com/kaptinlin/jsonschema/compare/v0.7.6...v0.7.7)

Updates `google.golang.org/genai` from 1.51.0 to 1.52.0
- [Release notes](https://github.com/googleapis/go-genai/releases)
- [Changelog](https://github.com/googleapis/go-genai/blob/v1.52.0/CHANGELOG.md)
- [Commits](https://github.com/googleapis/go-genai/compare/v1.51.0...v1.52.0)

---
updated-dependencies:
- dependency-name: cloud.google.com/go/auth
  dependency-version: 0.19.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: all
- dependency-name: github.com/aws/aws-sdk-go-v2
  dependency-version: 1.41.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all
- dependency-name: github.com/aws/aws-sdk-go-v2/config
  dependency-version: 1.32.13
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all
- dependency-name: github.com/kaptinlin/jsonschema
  dependency-version: 0.7.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all
- dependency-name: google.golang.org/genai
  dependency-version: 1.52.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: all
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

dependabot[bot] and dependabot[bot] created

11a1e0f v0.17.1

Andrey Nering created

d13521a chore(openai): add missing constants and checks for some thinking effort levels (#186)

Click to expand commit body
We were missing some "none", "minimal" and "xhigh" constants, for the `openai`, `openaicompat` and `openrouter` packages.

Added the missing checks to ensure they work as well.

Co-authored-by: Andrey Nering <andreynering@users.noreply.github.com>

Michael Suchacz and Andrey Nering created

ebc9cb1 chore: run modernize (#188)

Andrey Nering created

4620329 fix(providers/openai): emit source parts for Responses API streaming annotations (#187)

Click to expand commit body
The Responses API streaming path was missing a handler for
"response.output_text.annotation.added" events. This meant that
url_citation and file_citation annotations—which carry source
URLs and titles for web search results—were silently dropped
during streaming.

The non-streaming Generate path and the Chat Completions API
streaming path both handled annotations correctly; only the
Responses API Stream path was affected.

Add a case for "response.output_text.annotation.added" that
parses the annotation map and yields StreamPartTypeSource parts
for url_citation and file_citation types, matching the behavior
of the existing Generate path and the Anthropic provider.

Update TestResponsesStream_WebSearchResponse to include
annotation.added events in the mock stream and assert that
source parts are emitted with the correct URL, title, and type.

Kyle Carberry created

99e504c v0.17.0

Andrey Nering created

46820ff chore(examples): go mod tidy

Andrey Nering created

0cab8bf feat: anthropic computer use (#185)

Hugo Dutka created

bdfda5e chore(deps): bump github.com/ardanlabs/kronk in the kronk group (#184)

Click to expand commit body
Bumps the kronk group with 1 update: [github.com/ardanlabs/kronk](https://github.com/ardanlabs/kronk).


Updates `github.com/ardanlabs/kronk` from 1.21.3 to 1.21.4
- [Release notes](https://github.com/ardanlabs/kronk/releases)
- [Commits](https://github.com/ardanlabs/kronk/compare/v1.21.3...v1.21.4)

---
updated-dependencies:
- dependency-name: github.com/ardanlabs/kronk
  dependency-version: 1.21.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: kronk
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

dependabot[bot] and dependabot[bot] created

eec5a32 chore(deps): bump the all group with 2 updates (#183)

Click to expand commit body
Bumps the all group with 2 updates: [github.com/kaptinlin/jsonschema](https://github.com/kaptinlin/jsonschema) and [google.golang.org/genai](https://github.com/googleapis/go-genai).


Updates `github.com/kaptinlin/jsonschema` from 0.7.5 to 0.7.6
- [Commits](https://github.com/kaptinlin/jsonschema/compare/v0.7.5...v0.7.6)

Updates `google.golang.org/genai` from 1.50.0 to 1.51.0
- [Release notes](https://github.com/googleapis/go-genai/releases)
- [Changelog](https://github.com/googleapis/go-genai/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/go-genai/compare/v1.50.0...v1.51.0)

---
updated-dependencies:
- dependency-name: github.com/kaptinlin/jsonschema
  dependency-version: 0.7.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all
- dependency-name: google.golang.org/genai
  dependency-version: 1.51.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: all
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

dependabot[bot] and dependabot[bot] created

ca0e707 v0.16.0

Andrey Nering created

a5bee40 fix(openai): relax tool call validation for ollama compatibility (#113)

Click to expand commit body
Co-authored-by: Andrey Nering <andreynering@users.noreply.github.com>

Gustave and Andrey Nering created

238e34d fix: address tool calls with empty arguments in copilot (#156)

Click to expand commit body
Co-authored-by: Andrey Nering <andreynering@users.noreply.github.com>

Martin and Andrey Nering created

aa7e82f fix(bedrock): don't default baseURL to anthropic API when using bedrock

Click to expand commit body
When useBedrock is true, the DefaultURL ("https://api.anthropic.com") was
being set on providerOptions.baseURL in New(). This caused LanguageModel()
to append option.WithBaseURL("https://api.anthropic.com") after
bedrock.WithConfig had already set the correct bedrock-runtime URL,
overwriting it.

Only set the default base URL for non-bedrock providers. Bedrock gets its
URL from bedrock.WithConfig() in the SDK.

🐙 Generated with Crush

Assisted-by: AWS Claude Opus 4.6 via Crush <crush@charm.land>

Aleks Clark created

8924b01 fix(bedrock): apply base URL override after bedrock.WithConfig

Click to expand commit body
bedrock.WithConfig internally calls option.WithBaseURL with the default
regional endpoint, clobbering any user-provided base_url. Move the
custom base URL append to after the bedrock config block so last-write
wins.

🐨 Generated with Crush

Assisted-by: AWS Claude Opus 4.6 via Crush <crush@charm.land>

Aleks Clark created

277f9fb feat(bedrock): add WithBaseURL option

Click to expand commit body
Allows overriding the default Bedrock endpoint URL, enabling use with
custom or proxy endpoints.

🐙 Generated with Crush

Assisted-by: AWS Claude Opus 4.6 via Crush <crush@charm.land>

Aleks Clark created

236fedf fix(providertests/testdata): update summary thinking fixtures

Michael Suchacz created

ee77281 fix(providers/openai): skip ephemeral replay items

Michael Suchacz created

57940a9 v0.15.1

Andrey Nering created

5e4a443 test: re-record openrouter fixtures

Andrey Nering created

c3f0da5 test(openrouter): simplify list of providers and models to test

Click to expand commit body
Make it shorter (one per major provider) and favor smaller models.

Andrey Nering created

b00cf24 chore: remove unused test function

Andrey Nering created