feat: gemini adapter with bidirectional translation incl streaming and embeddings

This commit is contained in:
2026-08-20 04:16:10 +01:00
parent 876d340054
commit 2891766b5f
48 changed files with 2463 additions and 7 deletions
+23 -4
View File
@@ -629,13 +629,32 @@ func TestBuildAdapters(t *testing.T) {
}
})
t.Run("edge: gemini type not yet implemented", func(t *testing.T) {
t.Run("good: gemini with an API key builds successfully", func(t *testing.T) {
cfg := &Config{Providers: map[string]*ProviderConfig{
"p1": {Type: "gemini", APIKey: "sk-test"},
}}
_, err := buildAdapters(cfg)
if err == nil {
t.Fatalf("buildAdapters: want placeholder error for gemini, got nil")
adapters, err := buildAdapters(cfg)
if err != nil {
t.Fatalf("buildAdapters: %v", err)
}
a, ok := adapters["p1"]
if !ok {
t.Fatalf("adapters[%q] missing", "p1")
}
if a.typeName() != "gemini" {
t.Errorf("typeName() = %q, want %q", a.typeName(), "gemini")
}
if a.base() != defaultBaseGemini {
t.Errorf("base() = %q, want %q", a.base(), defaultBaseGemini)
}
})
t.Run("bad: gemini without an API key is a constructor error", func(t *testing.T) {
cfg := &Config{Providers: map[string]*ProviderConfig{
"p1": {Type: "gemini"},
}}
if _, err := buildAdapters(cfg); err == nil {
t.Fatalf("buildAdapters: want error for keyless gemini provider, got nil")
}
})
}