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

Andrey Nering created

Change summary

.github/workflows/anthropic.yml         | 10 +++++-----
.github/workflows/openai.yml            | 10 +++++-----
Taskfile.yaml                           |  4 ++--
anthropic/anthropic.go                  |  0 
anthropic/go.mod                        |  4 ++--
anthropic/go.sum                        |  0 
anthropic/provider_options.go           |  0 
examples/agent/main.go                  |  2 +-
examples/go.mod                         |  8 ++++----
examples/simple/main.go                 |  2 +-
examples/stream/main.go                 |  2 +-
examples/streaming-agent-simple/main.go |  2 +-
examples/streaming-agent/main.go        |  2 +-
go.work                                 |  4 ++--
openai/go.mod                           |  4 ++--
openai/go.sum                           |  1 +
openai/json.go                          |  0 
openai/openai.go                        |  0 
openai/openai_test.go                   |  0 
openai/provider_options.go              |  0 
20 files changed, 28 insertions(+), 27 deletions(-)

Detailed changes

.github/workflows/anthropic.yml 🔗

@@ -7,7 +7,7 @@ on:
       - main
   pull_request:
     paths:
-      - providers/anthropic/**
+      - anthropic/**
       - .github/workflows/anthropic.yml
 
 jobs:
@@ -18,14 +18,14 @@ jobs:
     runs-on: ${{ matrix.os }}
     defaults:
       run:
-        working-directory: ./providers/anthropic
+        working-directory: ./anthropic
     steps:
       - uses: actions/checkout@v4
       - uses: actions/setup-go@v5
         with:
-          go-version-file: ./providers/anthropic/go.mod
+          go-version-file: ./anthropic/go.mod
           cache: true
-          cache-dependency-path: ./providers/anthropic/go.sum
+          cache-dependency-path: ./anthropic/go.sum
       - run: go build -v ./...
       - run: go test -race -v ./...
 
@@ -51,6 +51,6 @@ jobs:
   lint:
     uses: charmbracelet/meta/.github/workflows/lint.yml@main
     with:
-      directory: ./providers/anthropic/...
+      directory: ./anthropic/...
       golangci_path: .golangci.yml
 

.github/workflows/openai.yml 🔗

@@ -7,7 +7,7 @@ on:
       - main
   pull_request:
     paths:
-      - providers/openai/**
+      - openai/**
       - .github/workflows/openai.yml
 
 jobs:
@@ -18,14 +18,14 @@ jobs:
     runs-on: ${{ matrix.os }}
     defaults:
       run:
-        working-directory: ./providers/openai
+        working-directory: ./openai
     steps:
       - uses: actions/checkout@v4
       - uses: actions/setup-go@v5
         with:
-          go-version-file: ./providers/openai/go.mod
+          go-version-file: ./openai/go.mod
           cache: true
-          cache-dependency-path: ./providers/openai/go.sum
+          cache-dependency-path: ./openai/go.sum
       - run: go build -v ./...
       - run: go test -race -v ./...
 
@@ -51,6 +51,6 @@ jobs:
   lint:
     uses: charmbracelet/meta/.github/workflows/lint.yml@main
     with:
-      directory: ./providers/openai/...
+      directory: ./openai/...
       golangci_path: .golangci.yml
 

Taskfile.yaml 🔗

@@ -6,9 +6,9 @@ env:
 vars:
   PACKAGES:
     - ./ai
+    - ./anthropic
     - ./examples
-    - ./providers/anthropic
-    - ./providers/openai
+    - ./openai
 
 tasks:
   fmt:

providers/anthropic/go.mod → anthropic/go.mod 🔗

@@ -1,4 +1,4 @@
-module github.com/charmbracelet/ai/providers/anthropic
+module github.com/charmbracelet/ai/anthropic
 
 go 1.24.5
 
@@ -15,4 +15,4 @@ require (
 	github.com/tidwall/sjson v1.2.5 // indirect
 )
 
-replace github.com/charmbracelet/ai/ai => ../../ai
+replace github.com/charmbracelet/ai/ai => ../ai

examples/agent/main.go 🔗

@@ -6,7 +6,7 @@ import (
 	"os"
 
 	"github.com/charmbracelet/ai/ai"
-	"github.com/charmbracelet/ai/providers/openai"
+	"github.com/charmbracelet/ai/openai"
 )
 
 func main() {

examples/go.mod 🔗

@@ -4,8 +4,8 @@ go 1.24.5
 
 require (
 	github.com/charmbracelet/ai/ai v0.0.0-00010101000000-000000000000
-	github.com/charmbracelet/ai/providers/anthropic v0.0.0-00010101000000-000000000000
-	github.com/charmbracelet/ai/providers/openai v0.0.0-00010101000000-000000000000
+	github.com/charmbracelet/ai/anthropic v0.0.0-00010101000000-000000000000
+	github.com/charmbracelet/ai/openai v0.0.0-00010101000000-000000000000
 )
 
 require (
@@ -21,6 +21,6 @@ require (
 
 replace github.com/charmbracelet/ai/ai => ../ai
 
-replace github.com/charmbracelet/ai/providers/anthropic => ../providers/anthropic
+replace github.com/charmbracelet/ai/anthropic => ../anthropic
 
-replace github.com/charmbracelet/ai/providers/openai => ../providers/openai
+replace github.com/charmbracelet/ai/openai => ../openai

examples/simple/main.go 🔗

@@ -6,7 +6,7 @@ import (
 	"os"
 
 	"github.com/charmbracelet/ai/ai"
-	"github.com/charmbracelet/ai/providers/anthropic"
+	"github.com/charmbracelet/ai/anthropic"
 )
 
 func main() {

examples/stream/main.go 🔗

@@ -7,7 +7,7 @@ import (
 	"os"
 
 	"github.com/charmbracelet/ai/ai"
-	"github.com/charmbracelet/ai/providers/openai"
+	"github.com/charmbracelet/ai/openai"
 )
 
 func main() {

examples/streaming-agent/main.go 🔗

@@ -7,7 +7,7 @@ import (
 	"strings"
 
 	"github.com/charmbracelet/ai/ai"
-	"github.com/charmbracelet/ai/providers/anthropic"
+	"github.com/charmbracelet/ai/anthropic"
 )
 
 func main() {

go.work 🔗

@@ -2,7 +2,7 @@ go 1.24.5
 
 use (
 	./ai
+	./anthropic
 	./examples
-	./providers/anthropic
-	./providers/openai
+	./openai
 )

providers/openai/go.mod → openai/go.mod 🔗

@@ -1,4 +1,4 @@
-module github.com/charmbracelet/ai/providers/openai
+module github.com/charmbracelet/ai/openai
 
 go 1.24.5
 
@@ -20,4 +20,4 @@ require (
 	gopkg.in/yaml.v3 v3.0.1 // indirect
 )
 
-replace github.com/charmbracelet/ai/ai => ../../ai
+replace github.com/charmbracelet/ai/ai => ../ai

providers/openai/go.sum → openai/go.sum 🔗

@@ -12,6 +12,7 @@ github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu
 github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
 github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
 github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY=
+github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
 github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA=
 github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM=
 github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU=