chore: add minimax provider (#98)

Kujtim Hoxha and Andrey Nering created

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

Change summary

internal/providers/configs/minimax.json | 31 +++++++++++++++++++++++++++
internal/providers/providers.go         |  8 ++++++
pkg/catwalk/provider.go                 |  2 +
3 files changed, 41 insertions(+)

Detailed changes

internal/providers/configs/minimax.json 🔗

@@ -0,0 +1,31 @@
+{
+  "name": "MiniMax",
+  "id": "minimax",
+  "type": "anthropic",
+  "api_key": "$MINIMAX_API_KEY",
+  "api_endpoint": "https://api.minimax.io/anthropic",
+  "default_large_model_id": "MiniMax-M2.1",
+  "default_small_model_id": "MiniMax-M2.1",
+  "models": [
+    {
+      "id": "MiniMax-M2.1",
+      "name": "MiniMax-M2.1",
+      "cost_per_1m_in": 0.3,
+      "cost_per_1m_out": 1.2,
+      "cost_per_1m_in_cached": 0.03,
+      "cost_per_1m_out_cached": 0.375,
+      "context_window": 200000,
+      "default_max_tokens": 128000
+    },
+    {
+      "id": "MiniMax-M2",
+      "name": "MiniMax-M2",
+      "cost_per_1m_in": 0.3,
+      "cost_per_1m_out": 1.2,
+      "cost_per_1m_in_cached": 0.03,
+      "cost_per_1m_out_cached": 0.375,
+      "context_window": 200000,
+      "default_max_tokens": 20000
+    }
+  ]
+}

internal/providers/providers.go 🔗

@@ -69,6 +69,9 @@ var copilotConfig []byte
 //go:embed configs/vercel.json
 var vercelConfig []byte
 
+//go:embed configs/minimax.json
+var miniMaxConfig []byte
+
 // ProviderFunc is a function that returns a Provider.
 type ProviderFunc func() catwalk.Provider
 
@@ -93,6 +96,7 @@ var providerRegistry = []ProviderFunc{
 	syntheticProvider,
 	copilotProvider,
 	vercelProvider,
+	miniMaxProvider,
 }
 
 // GetAll returns all registered providers.
@@ -192,3 +196,7 @@ func copilotProvider() catwalk.Provider {
 func vercelProvider() catwalk.Provider {
 	return loadProviderFromConfig(vercelConfig)
 }
+
+func miniMaxProvider() catwalk.Provider {
+	return loadProviderFromConfig(miniMaxConfig)
+}

pkg/catwalk/provider.go 🔗

@@ -40,6 +40,7 @@ const (
 	InferenceKimiCoding          InferenceProvider = "kimi-coding"
 	InferenceProviderCopilot     InferenceProvider = "copilot"
 	InferenceProviderVercel      InferenceProvider = "vercel"
+	InferenceProviderMiniMax     InferenceProvider = "minimax"
 )
 
 // Provider represents an AI provider configuration.
@@ -104,6 +105,7 @@ func KnownProviders() []InferenceProvider {
 		InferenceKimiCoding,
 		InferenceProviderCopilot,
 		InferenceProviderVercel,
+		InferenceProviderMiniMax,
 	}
 }