Commit log

ffc8408 v0.12.3

Andrey Nering created

50d95df chore: update openai sdk to v3 (#168)

Andrey Nering created

caf105e test: re-record almost all fixtures (#167)

Andrey Nering created

fa02069 v0.12.2

Andrey Nering created

7ebd9b5 test: re-record all openrouter fixtures

Andrey Nering created

a3b8a69 fix(openrouter): preserve anthropic reasoning signature in streaming

Click to expand commit body
Anthropic sends the reasoning signature chunk after tool_calls have
started. The streaming hook was ending reasoning prematurely on the
first tool_call chunk, so the late-arriving signature was lost. Track
the reasoning format and defer ending for anthropic streams until the
signature arrives. Also fix the agent stream assembler to not overwrite
provider metadata with nil on reasoning deltas.

💘 Generated with Crush

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

Andrey Nering created

152acfe fix: guard against nil EncryptedContent dereference in reasoning details

Click to expand commit body
Reasoning metadata can exist without encrypted content, causing a nil
pointer panic when building prompt messages for openrouter and vercel.

💘 Generated with Crush

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

Andrey Nering created

50a1116 fix: improve default user-agent string

Click to expand commit body
This change to be better follow the convention:

* App name should not have spaces: `Charm Fantasy` -> `Charm-Fantasy`.
* Add comment `()` with app site.

Andrey Nering created

e8560e6 fix(openai): use noDefaultUserAgent in all responses API calls

Click to expand commit body
💘 Generated with Crush

Assisted-by: Kimi K2.5 via Crush <crush@charm.land>

Christian Rocha created

522e026 fix(openai): propagate noDefaultUserAgent to responsesLanguageModel

Click to expand commit body
💘 Generated with Crush

Assisted-by: Kimi K2.5 via Crush <crush@charm.land>

Christian Rocha created

2e29858 fix(openrouter): avoid brittle User-Agent assertion

Click to expand commit body
💘 Generated with Crush

Assisted-by: Kimi K2.5 via Crush <crush@charm.land>

Christian Rocha created

182ba5f docs(openai): correct grammar in comment

Click to expand commit body
💘 Generated with Crush

Assisted-by: Kimi K2.5 via Crush <crush@charm.land>

Christian Rocha created

96f0454 fix(openai): don't mutate shared languageModelOptions

Click to expand commit body
💘 Generated with Crush

Assisted-by: Kimi K2.5 via Crush <crush@charm.land>

Christian Rocha created

7dc3888 fix(openrouter): don't set User-Agent

Click to expand commit body
OpenRouter rejects API calls using a custom User Agent. This workaround
skips OpenRouter when setting a user agent.

Note that we've added two new methods accordingly, as OpenRouter uses
the openai package:

openai.WithSkipUserAgent()
openai.WithLanguageModelSkipUserAgent()

Christian Rocha created

04950be v0.12.1

Andrey Nering created

5d76d7d chore(examples): go mod tidy

Andrey Nering created

d9de5db fix(errors): improve check for when to retry requests (#164)

Click to expand commit body
* Follow OpenAI's Go SDK.
* Check status code >= 500.
* Check `x-should-retry` header.

Co-authored-by: yuguorui <yuguorui@pku.edu.cn>

Andrey Nering and yuguorui created

b137f01 chore(deps): bump the all group across 1 directory with 4 updates (#162)

Click to expand commit body
Bumps the all group with 4 updates in the / directory: [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), [golang.org/x/oauth2](https://github.com/golang/oauth2) and [google.golang.org/genai](https://github.com/googleapis/go-genai).


Updates `github.com/aws/aws-sdk-go-v2` from 1.41.2 to 1.41.3
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/v1.41.2...v1.41.3)

Updates `github.com/aws/aws-sdk-go-v2/config` from 1.32.10 to 1.32.11
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.32.10...config/v1.32.11)

Updates `golang.org/x/oauth2` from 0.35.0 to 0.36.0
- [Commits](https://github.com/golang/oauth2/compare/v0.35.0...v0.36.0)

Updates `google.golang.org/genai` from 1.48.0 to 1.49.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.48.0...v1.49.0)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2
  dependency-version: 1.41.3
  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.11
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all
- dependency-name: golang.org/x/oauth2
  dependency-version: 0.36.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: all
- dependency-name: google.golang.org/genai
  dependency-version: 1.49.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

13ad470 ci(dependabot): update kronk in a separate group

Andrey Nering created

ae2e22e ci: fix govulncheck by updating go version (#161)

Andrey Nering created

422f954 v0.12.0

Andrey Nering created

1b0027b feat: configurable user-agent (#152)

Click to expand commit body
Note that the user agent defaults to Charm Fantasy/<version>, which
means we need to maintain a const for the version number.

Christian Rocha created

0806f24 chore(deps): go mod tidy examples (#159)

Christian Rocha created

fb3643d v0.11.1

Andrey Nering created

4747a08 chore: add support for gpt 5.4 (#158)

Andrey Nering created

0a0ed20 chore(deps): bump the all group with 3 updates (#155)

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


Updates `github.com/ardanlabs/kronk` from 1.20.3 to 1.20.8
- [Release notes](https://github.com/ardanlabs/kronk/releases)
- [Commits](https://github.com/ardanlabs/kronk/compare/v1.20.3...v1.20.8)

Updates `github.com/aws/smithy-go` from 1.24.1 to 1.24.2
- [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.1...v1.24.2)

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

---
updated-dependencies:
- dependency-name: github.com/ardanlabs/kronk
  dependency-version: 1.20.8
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all
- dependency-name: github.com/aws/smithy-go
  dependency-version: 1.24.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all
- dependency-name: github.com/kaptinlin/jsonschema
  dependency-version: 0.7.5
  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

8d2ec4f chore(deps): bump github.com/ardanlabs/kronk in the all group (#153)

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


Updates `github.com/ardanlabs/kronk` from 1.20.1 to 1.20.3
- [Release notes](https://github.com/ardanlabs/kronk/releases)
- [Commits](https://github.com/ardanlabs/kronk/compare/v1.20.1...v1.20.3)

---
updated-dependencies:
- dependency-name: github.com/ardanlabs/kronk
  dependency-version: 1.20.3
  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

5442a7f v0.11.0

Andrey Nering created

8f24e95 chore(deps): bump the all group with 4 updates (#150)

Click to expand commit body
Bumps the all group with 4 updates: [github.com/ardanlabs/kronk](https://github.com/ardanlabs/kronk), [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) and [google.golang.org/genai](https://github.com/googleapis/go-genai).


Updates `github.com/ardanlabs/kronk` from 1.19.6 to 1.20.1
- [Release notes](https://github.com/ardanlabs/kronk/releases)
- [Commits](https://github.com/ardanlabs/kronk/compare/v1.19.6...v1.20.1)

Updates `github.com/aws/aws-sdk-go-v2` from 1.41.1 to 1.41.2
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/v1.41.1...v1.41.2)

Updates `github.com/aws/aws-sdk-go-v2/config` from 1.32.9 to 1.32.10
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/config/v1.32.9...config/v1.32.10)

Updates `google.golang.org/genai` from 1.47.0 to 1.48.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.47.0...v1.48.0)

---
updated-dependencies:
- dependency-name: github.com/ardanlabs/kronk
  dependency-version: 1.20.1
  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.2
  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.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all
- dependency-name: google.golang.org/genai
  dependency-version: 1.48.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

8a1457c feat: add support for anthropic thinking effort (#147)

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

Kyle Carberry and Andrey Nering created

26a572c v0.10.0

Andrey Nering created

cf3151e lint: fix missing doc comment

Andrey Nering created

4e71eb6 test: unify gemini 2 and gemini 3 thinking tests

Andrey Nering created

bd6d47d feat(google): add ThinkingLevel support for Gemini 3+ models

Click to expand commit body
Gemini 3+ uses thinking_level (LOW/MEDIUM/HIGH/MINIMAL) instead of
thinking_budget. The two are mutually exclusive per Google's API.
Maps to genai.ThinkingConfig.ThinkingLevel already available in v1.45.0.

Xavier Capaldi created

54b30ae feat: detect context-too-large errors (#125)

mhpenta created

b802c67 chore: update anthropic-sdk-go from our fork (#148)

Click to expand commit body
The `fantasy` branch was updated from upstream.

See:

* https://github.com/charmbracelet/anthropic-sdk-go/pull/1
* https://github.com/charmbracelet/fantasy/pull/147

Andrey Nering created

7d7c4b3 chore(deps): bump the all group with 3 updates (#146)

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


Updates `github.com/ardanlabs/kronk` from 1.19.2 to 1.19.6
- [Release notes](https://github.com/ardanlabs/kronk/releases)
- [Commits](https://github.com/ardanlabs/kronk/compare/v1.19.2...v1.19.6)

Updates `github.com/aws/smithy-go` from 1.24.0 to 1.24.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.24.0...v1.24.1)

Updates `github.com/kaptinlin/jsonschema` from 0.7.2 to 0.7.3
- [Commits](https://github.com/kaptinlin/jsonschema/compare/v0.7.2...v0.7.3)

---
updated-dependencies:
- dependency-name: github.com/ardanlabs/kronk
  dependency-version: 1.19.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all
- dependency-name: github.com/aws/smithy-go
  dependency-version: 1.24.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all
- dependency-name: github.com/kaptinlin/jsonschema
  dependency-version: 0.7.3
  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

b2eb8d1 v0.9.0

Andrey Nering created

dae536f chore(deps): bump the all group with 3 updates (#144)

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/kaptinlin/jsonschema](https://github.com/kaptinlin/jsonschema) and [google.golang.org/genai](https://github.com/googleapis/go-genai).


Updates `github.com/aws/aws-sdk-go-v2/config` from 1.32.7 to 1.32.9
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](https://github.com/aws/aws-sdk-go-v2/compare/v1.32.7...config/v1.32.9)

Updates `github.com/kaptinlin/jsonschema` from 0.7.1 to 0.7.2
- [Commits](https://github.com/kaptinlin/jsonschema/compare/v0.7.1...v0.7.2)

Updates `google.golang.org/genai` from 1.46.0 to 1.47.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.46.0...v1.47.0)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/config
  dependency-version: 1.32.9
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all
- dependency-name: github.com/kaptinlin/jsonschema
  dependency-version: 0.7.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all
- dependency-name: google.golang.org/genai
  dependency-version: 1.47.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

385607b chore(deps): bump the all group in /examples with 2 updates (#143)

Click to expand commit body
Bumps the all group in /examples with 2 updates: [github.com/charmbracelet/lipgloss/v2](https://github.com/charmbracelet/lipgloss) and [github.com/charmbracelet/x/term](https://github.com/charmbracelet/x).


Updates `github.com/charmbracelet/lipgloss/v2` from 2.0.0-beta.3.0.20250917201909-41ff0bf215ea to 2.0.0-beta1
- [Release notes](https://github.com/charmbracelet/lipgloss/releases)
- [Commits](https://github.com/charmbracelet/lipgloss/commits)

Updates `github.com/charmbracelet/x/term` from 0.2.1 to 0.2.2
- [Commits](https://github.com/charmbracelet/x/compare/ansi/v0.2.1...ansi/v0.2.2)

---
updated-dependencies:
- dependency-name: github.com/charmbracelet/lipgloss/v2
  dependency-version: 2.0.0-beta1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all
- dependency-name: github.com/charmbracelet/x/term
  dependency-version: 0.2.2
  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

121d1a4 ci(dependabot): add `examples/` dir to be updated as well

Andrey Nering created

211a29e feat: add kronk provider (#142)

Click to expand commit body
Co-authored-by: William Kennedy <bill@ardanlabs.com>

Andrey Nering and William Kennedy created

720e86d chore(deps): bump the all group with 3 updates (#141)

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


Updates `cloud.google.com/go/auth` from 0.18.1 to 0.18.2
- [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.1...auth/v0.18.2)

Updates `github.com/kaptinlin/jsonschema` from 0.6.10 to 0.7.1
- [Commits](https://github.com/kaptinlin/jsonschema/compare/v0.6.10...v0.7.1)

Updates `google.golang.org/genai` from 1.45.0 to 1.46.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.45.0...v1.46.0)

---
updated-dependencies:
- dependency-name: cloud.google.com/go/auth
  dependency-version: 0.18.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all
- dependency-name: github.com/kaptinlin/jsonschema
  dependency-version: 0.7.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: all
- dependency-name: google.golang.org/genai
  dependency-version: 1.46.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

ab99ce7 v0.8.1

Andrey Nering created

e1c26df fix: normalize mcp tool schemas for openai compatibility (#138)

Click to expand commit body
Convert JSON Schema type arrays to `anyOf` and ensure bare array types
have items, preventing OpenAI "array schema missing items" errors.

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

Andrey Nering created

070c5ec fix(goreleaser): remove unneeded `npm_key` attribute

Click to expand commit body
This was preventing releases to work trigger on new tags.

Andrey Nering created

b1ed877 v0.8.0

Andrey Nering created

29c0314 chore: fix lint

Andrey Nering created

7e79eab ci: fix lint on ci

Andrey Nering created

25abf03 refactor: use our `jsonrepair` package and remove external package

Andrey Nering created