Commit log

e89eaaf wip: initial setup with hoooks

kujtimiihoxha created

bd5c163 fix(go-vcr): fix request matching for json requests with random key order

Andrey Nering created

43c39f2 chore: force yaml indent to 2

Andrey Nering created

f375867 chore: set custom marshal func

Andrey Nering created

2ef8fe2 chore(deps): pin latest commit from go-vcr

Andrey Nering created

5623663 test: add tests for thinking (#9)

Click to expand commit body
* WIP test: add tests for thinking

* chore: fix thinking test

- add chrush.md
- add check to google provider
- make all tests use testify

* chore: remove duplicate name const

* test: add more specific reasoning tests

* chore: remove some annoying spell checks

* chore: reorganize thinking tests

---------

Co-authored-by: Kujtim Hoxha <kujtimii.h@gmail.com>

Andrey Nering and Kujtim Hoxha created

9596881 lint: fix naked return warnings

Andrey Nering created

d1d1b1a chore: add labeler script

Andrey Nering created

d3f8bd9 ci(labeler): add azure

Andrey Nering created

1f41c27 fix: adjustments after rebase

Click to expand commit body
* Implement interface
* Fix options cast
* Make option structs public

Andrey Nering created

dff590b feat(gemini): fixes for streaming + thinking

Andrey Nering created

997539c test: fix gemini test to actually use pro model

Andrey Nering created

44e3901 refactor: use `cmp.Or`

Andrey Nering created

b3b3d58 ci: fix gemini tests when env is not set

Andrey Nering created

19e737f chore(taskfile): disable cache when running tests

Andrey Nering created

d3f8722 lint: fix linting

Andrey Nering created

f47a599 feat(gemini): implement streaming

Andrey Nering created

a4fd3fa feat: make google gemini work for basic + tool calls

Andrey Nering created

a446339 chore(go.mod): add `github.com/charmbracelet/x/exp/slice`

Andrey Nering created

5d03ea1 test: add google gemini to test matrix

Andrey Nering created

3f98c67 chore: `anthropic` -> `google`

Andrey Nering created

ff1a249 chore(go.mod): add `google.golang.org/genai`

Andrey Nering created

6c4d2f8 feat: initial google provider

Kujtim Hoxha created

e74fb3f chore: add options parser (#12)

Click to expand commit body
* chore: add options parser

* chore: add options key method

* refactor: rename `OptionKey` to `Name`

* refactor: rename `OptionsFromMap` to `ParseOptions`

* refactor: minimal code improvement

---------

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

Kujtim Hoxha and Andrey Nering created

2058c73 chore: add json tags to provider options

kujtimiihoxha created

624cb5b ci: add issue / pr labeler

Andrey Nering created

d1db2cb refactor: rename go module to `fantasy` (#11)

Andrey Nering created

b3b0f39 refactor: rename `ProviderOptionsKey` into `OptionsKey`

Andrey Nering created

5097f73 refactor: separate interface into its own type

Andrey Nering created

c6534e4 chore: remove unused lib

kujtimiihoxha created

cc3c955 chore: make provider options an interface

kujtimiihoxha created

2b4cfe6 chore: change how provider options work

kujtimiihoxha created

215059b Minor fixes (#8)

Click to expand commit body
* chore: remove unused headers

* feat: expose provider options

* fix: use mapstruct tag

* fix: thinking delta

* fix: agent prompt

* fix: fix reasoning metadata

fix: fix reasoning content

* fix: test

Kujtim Hoxha created

245142f refactor: simplify code a little bit

Andrey Nering created

2b2da24 chore(.gitattributes): do not show diffs for cassettes

Andrey Nering created

3f72650 test: add openai gpt o4 mini to the test matrix

Andrey Nering created

2acf7f7 test: make test less intermittent

Andrey Nering created

1aab862 test: add tests for stream with and without tool calls

Andrey Nering created

e00c28f test: add test with tool

Andrey Nering created

d3c849b chore: disable go-vcr's internal "sleep" to make tests much faster

Andrey Nering created

3340d64 test: setup go-vcr to start recording real providers interactions

Andrey Nering created

ef0ee71 fix: anthropic finish reason

Kujtim Hoxha created

7f1366b refactor: use json valid function from `charmbracelet/x/json`

Andrey Nering created

fb35cdf refactor: revert o use a single go module again

Click to expand commit body
I experimented with multiple Go modules, but the fact is that Go is smart
enough to strip out the uneeded modules from the user's `go.mod`, so this
is not in fact needed. Also, maintaining a single module is much easier.

Andrey Nering created

ba1c1fd refactor: move `providers/{openai|anthropic}` out of the `providers/` dir (#5)

Andrey Nering created

5337bf2 ci: configure workflows to be package-by-package

Click to expand commit body
Copied generate script from `charmbracelet/x`.

Andrey Nering created

67ff539 chore: make each package its own go module

Click to expand commit body
* `./ai` (previously root `/`)
* `./examples`
* `./providers/anthropic`
* `./providers/openai`

Andrey Nering created

36e9eae refactor: move root package into a sub-package `ai`

Andrey Nering created

87c1466 refactor: move json helper to live inside the `openai` package

Andrey Nering created

7712c19 refactor: use `cmp.Or` in more places

Andrey Nering created