chore: add support for kimi coding (#105)

Kujtim Hoxha created

Change summary

internal/providers/configs/kimi.json | 23 +++++++++++++++++++++++
internal/providers/providers.go      |  8 ++++++++
pkg/catwalk/provider.go              |  2 ++
3 files changed, 33 insertions(+)

Detailed changes

internal/providers/configs/kimi.json 🔗

@@ -0,0 +1,23 @@
+{
+  "name": "Kimi Coding",
+  "id": "kimi-coding",
+  "type": "anthropic",
+  "api_key": "$KIMI_CODING_API_KEY",
+  "api_endpoint": "https://api.kimi.com/coding",
+  "default_large_model_id": "kimi-for-coding",
+  "default_small_model_id": "kimi-for-coding",
+  "models": [
+    {
+      "id": "kimi-for-coding",
+      "name": "Kimi for Coding",
+      "cost_per_1m_in": 0,
+      "cost_per_1m_out": 0,
+      "cost_per_1m_in_cached": 0,
+      "cost_per_1m_out_cached": 0,
+      "context_window": 262144,
+      "default_max_tokens": 32768,
+      "can_reason": true,
+      "supports_attachments": true
+    }
+  ]
+}

internal/providers/providers.go 🔗

@@ -60,6 +60,9 @@ var huggingFaceConfig []byte
 //go:embed configs/aihubmix.json
 var aiHubMixConfig []byte
 
+//go:embed configs/kimi.json
+var kimiCodingConfig []byte
+
 // ProviderFunc is a function that returns a Provider.
 type ProviderFunc func() catwalk.Provider
 
@@ -81,6 +84,7 @@ var providerRegistry = []ProviderFunc{
 	huggingFaceProvider,
 	aiHubMixProvider,
 	syntheticProvider,
+	kimiCodingProvider,
 }
 
 // GetAll returns all registered providers.
@@ -168,3 +172,7 @@ func huggingFaceProvider() catwalk.Provider {
 func aiHubMixProvider() catwalk.Provider {
 	return loadProviderFromConfig(aiHubMixConfig)
 }
+
+func kimiCodingProvider() catwalk.Provider {
+	return loadProviderFromConfig(kimiCodingConfig)
+}

pkg/catwalk/provider.go 🔗

@@ -36,6 +36,7 @@ const (
 	InferenceProviderChutes      InferenceProvider = "chutes"
 	InferenceProviderHuggingFace InferenceProvider = "huggingface"
 	InferenceAIHubMix            InferenceProvider = "aihubmix"
+	InferenceKimiCoding          InferenceProvider = "kimi-coding"
 )
 
 // Provider represents an AI provider configuration.
@@ -97,6 +98,7 @@ func KnownProviders() []InferenceProvider {
 		InferenceProviderChutes,
 		InferenceProviderHuggingFace,
 		InferenceAIHubMix,
+		InferenceKimiCoding,
 	}
 }