(
+ field: K,
+ transform: (event: E) => ProviderSettings[K] = inputEventTransform,
+ ) =>
+ (event: E | Event) => {
+ setApiConfigurationField(field, transform(event as E))
+ },
+ [setApiConfigurationField],
+ )
+
+ return (
+ <>
+
+
+
+
+ {t("settings:providers.apiKeyStorageNotice")}
+
+ {!apiConfiguration?.poeApiKey && (
+
+ {t("settings:providers.getPoeApiKey")}
+
+ )}
+
+
+ {didRefetch && (
+
+ {t("settings:providers.refreshModels.hint")}
+
+ )}
+
+
+ >
+ )
+}
diff --git a/webview-ui/src/components/settings/providers/index.ts b/webview-ui/src/components/settings/providers/index.ts
index 2d73713fde8..11ce77e0d31 100644
--- a/webview-ui/src/components/settings/providers/index.ts
+++ b/webview-ui/src/components/settings/providers/index.ts
@@ -45,4 +45,5 @@ export { VercelAiGateway } from "./VercelAiGateway"
export { DeepInfra } from "./DeepInfra"
export { MiniMax } from "./MiniMax"
export { Baseten } from "./Baseten"
+export { Poe } from "./Poe" // kilocode_change
export { Corethink } from "./Corethink"
diff --git a/webview-ui/src/components/ui/hooks/useSelectedModel.ts b/webview-ui/src/components/ui/hooks/useSelectedModel.ts
index fde71448a21..73705522778 100644
--- a/webview-ui/src/components/ui/hooks/useSelectedModel.ts
+++ b/webview-ui/src/components/ui/hooks/useSelectedModel.ts
@@ -424,6 +424,13 @@ function getSelectedModel({
const info = routerModels.deepinfra?.[id]
return { id, info }
}
+ // kilocode_change start
+ case "poe": {
+ const id = getValidatedModelId(apiConfiguration.poeModelId, routerModels.poe, defaultModelId)
+ const info = routerModels.poe?.[id]
+ return { id, info }
+ }
+ // kilocode_change end
case "vscode-lm": {
const id = apiConfiguration?.vsCodeLmModelSelector
? `${apiConfiguration.vsCodeLmModelSelector.vendor}/${apiConfiguration.vsCodeLmModelSelector.family}`
diff --git a/webview-ui/src/i18n/locales/ar/settings.json b/webview-ui/src/i18n/locales/ar/settings.json
index dab1fefb824..7922201cffb 100644
--- a/webview-ui/src/i18n/locales/ar/settings.json
+++ b/webview-ui/src/i18n/locales/ar/settings.json
@@ -465,6 +465,8 @@
"groqApiKey": "مفتاح Groq",
"getSambaNovaApiKey": "احصل على مفتاح SambaNova",
"sambaNovaApiKey": "مفتاح SambaNova",
+ "poeApiKey": "مفتاح Poe",
+ "getPoeApiKey": "احصل على مفتاح Poe",
"getGeminiApiKey": "احصل على مفتاح Gemini",
"openAiApiKey": "مفتاح OpenAI",
"getHuggingFaceApiKey": "احصل على مفتاح Hugging Face API",
diff --git a/webview-ui/src/i18n/locales/ca/settings.json b/webview-ui/src/i18n/locales/ca/settings.json
index 9e79b85d902..be782e5c02d 100644
--- a/webview-ui/src/i18n/locales/ca/settings.json
+++ b/webview-ui/src/i18n/locales/ca/settings.json
@@ -427,6 +427,8 @@
},
"getSambaNovaApiKey": "Obtenir clau API de SambaNova",
"sambaNovaApiKey": "Clau API de SambaNova",
+ "poeApiKey": "Clau API de Poe",
+ "getPoeApiKey": "Obtenir clau API de Poe",
"getHuggingFaceApiKey": "Obtenir clau API de Hugging Face",
"huggingFaceApiKey": "Clau API de Hugging Face",
"getOvhCloudAiEndpointsApiKey": "Obtenir clau API de OVHcloud AI Endpoints",
diff --git a/webview-ui/src/i18n/locales/cs/settings.json b/webview-ui/src/i18n/locales/cs/settings.json
index 44251f2161a..1919c02f736 100644
--- a/webview-ui/src/i18n/locales/cs/settings.json
+++ b/webview-ui/src/i18n/locales/cs/settings.json
@@ -450,6 +450,8 @@
"groqApiKey": "Klíč API Groq",
"getSambaNovaApiKey": "Získat klíč API SambaNova",
"sambaNovaApiKey": "Klíč API SambaNova",
+ "poeApiKey": "Klíč API Poe",
+ "getPoeApiKey": "Získat klíč API Poe",
"getGeminiApiKey": "Získat klíč API Gemini",
"openAiApiKey": "Klíč API OpenAI",
"getHuggingFaceApiKey": "Získat klíč API Hugging Face",
diff --git a/webview-ui/src/i18n/locales/de/settings.json b/webview-ui/src/i18n/locales/de/settings.json
index 3b38a5f97e3..8be9844c0db 100644
--- a/webview-ui/src/i18n/locales/de/settings.json
+++ b/webview-ui/src/i18n/locales/de/settings.json
@@ -428,6 +428,8 @@
"groqApiKey": "Groq API-Schlüssel",
"getSambaNovaApiKey": "SambaNova API-Schlüssel erhalten",
"sambaNovaApiKey": "SambaNova API-Schlüssel",
+ "poeApiKey": "Poe API-Schlüssel",
+ "getPoeApiKey": "Poe API-Schlüssel erhalten",
"getHuggingFaceApiKey": "Hugging Face API-Schlüssel erhalten",
"huggingFaceApiKey": "Hugging Face API-Schlüssel",
"getOvhCloudAiEndpointsApiKey": "OVHcloud AI Endpoints API-Schlüssel erhalten",
diff --git a/webview-ui/src/i18n/locales/en/settings.json b/webview-ui/src/i18n/locales/en/settings.json
index 79e4356acba..b791d497f76 100644
--- a/webview-ui/src/i18n/locales/en/settings.json
+++ b/webview-ui/src/i18n/locales/en/settings.json
@@ -448,6 +448,8 @@
},
"getSambaNovaApiKey": "Get SambaNova API Key",
"sambaNovaApiKey": "SambaNova API Key",
+ "poeApiKey": "Poe API Key",
+ "getPoeApiKey": "Get Poe API Key",
"getHuggingFaceApiKey": "Get Hugging Face API Key",
"huggingFaceApiKey": "Hugging Face API Key",
"getOvhCloudAiEndpointsApiKey": "Get OVHcloud AI Endpoints API Key",
diff --git a/webview-ui/src/i18n/locales/es/settings.json b/webview-ui/src/i18n/locales/es/settings.json
index 077f44f6c96..999d6a24187 100644
--- a/webview-ui/src/i18n/locales/es/settings.json
+++ b/webview-ui/src/i18n/locales/es/settings.json
@@ -428,6 +428,8 @@
"groqApiKey": "Clave API de Groq",
"getSambaNovaApiKey": "Obtener clave API de SambaNova",
"sambaNovaApiKey": "Clave API de SambaNova",
+ "poeApiKey": "Clave API de Poe",
+ "getPoeApiKey": "Obtener clave API de Poe",
"getHuggingFaceApiKey": "Obtener clave API de Hugging Face",
"huggingFaceApiKey": "Clave API de Hugging Face",
"getOvhCloudAiEndpointsApiKey": "Obtener clave API de OVHcloud AI Endpoints",
diff --git a/webview-ui/src/i18n/locales/fr/settings.json b/webview-ui/src/i18n/locales/fr/settings.json
index efad3998197..4e9eda4a27b 100644
--- a/webview-ui/src/i18n/locales/fr/settings.json
+++ b/webview-ui/src/i18n/locales/fr/settings.json
@@ -428,6 +428,8 @@
"groqApiKey": "Clé API Groq",
"getSambaNovaApiKey": "Obtenir la clé API SambaNova",
"sambaNovaApiKey": "Clé API SambaNova",
+ "poeApiKey": "Clé API Poe",
+ "getPoeApiKey": "Obtenir la clé API Poe",
"getHuggingFaceApiKey": "Obtenir la clé API Hugging Face",
"huggingFaceApiKey": "Clé API Hugging Face",
"getOvhCloudAiEndpointsApiKey": "Obtenir la clé API d'OVHcloud AI Endpoints",
diff --git a/webview-ui/src/i18n/locales/hi/settings.json b/webview-ui/src/i18n/locales/hi/settings.json
index 0596ef8e8e3..7f98dd26c97 100644
--- a/webview-ui/src/i18n/locales/hi/settings.json
+++ b/webview-ui/src/i18n/locales/hi/settings.json
@@ -427,6 +427,8 @@
"groqApiKey": "Groq API कुंजी",
"getSambaNovaApiKey": "SambaNova API कुंजी प्राप्त करें",
"sambaNovaApiKey": "SambaNova API कुंजी",
+ "poeApiKey": "Poe API कुंजी",
+ "getPoeApiKey": "Poe API कुंजी प्राप्त करें",
"getHuggingFaceApiKey": "Hugging Face API कुंजी प्राप्त करें",
"huggingFaceApiKey": "Hugging Face API कुंजी",
"getOvhCloudAiEndpointsApiKey": "OVHcloud AI Endpoints API कुंजी प्राप्त करें",
diff --git a/webview-ui/src/i18n/locales/id/settings.json b/webview-ui/src/i18n/locales/id/settings.json
index d337cb60a21..a50dec196c1 100644
--- a/webview-ui/src/i18n/locales/id/settings.json
+++ b/webview-ui/src/i18n/locales/id/settings.json
@@ -427,6 +427,8 @@
"groqApiKey": "Groq API Key",
"getSambaNovaApiKey": "Dapatkan SambaNova API Key",
"sambaNovaApiKey": "SambaNova API Key",
+ "poeApiKey": "Poe API Key",
+ "getPoeApiKey": "Dapatkan Poe API Key",
"getHuggingFaceApiKey": "Dapatkan Kunci API Hugging Face",
"huggingFaceApiKey": "Kunci API Hugging Face",
"getOvhCloudAiEndpointsApiKey": "Dapatkan Kunci API OVHcloud AI Endpoints",
diff --git a/webview-ui/src/i18n/locales/it/settings.json b/webview-ui/src/i18n/locales/it/settings.json
index 623533692d1..132e713c199 100644
--- a/webview-ui/src/i18n/locales/it/settings.json
+++ b/webview-ui/src/i18n/locales/it/settings.json
@@ -441,6 +441,8 @@
},
"getSambaNovaApiKey": "Ottieni chiave API SambaNova",
"sambaNovaApiKey": "Chiave API SambaNova",
+ "poeApiKey": "Chiave API Poe",
+ "getPoeApiKey": "Ottieni chiave API Poe",
"getHuggingFaceApiKey": "Ottieni chiave API Hugging Face",
"huggingFaceApiKey": "Chiave API Hugging Face",
"getOvhCloudAiEndpointsApiKey": "Ottieni chiave API OVHcloud AI Endpoints",
diff --git a/webview-ui/src/i18n/locales/ja/settings.json b/webview-ui/src/i18n/locales/ja/settings.json
index bf394b314e3..cc3cf495a99 100644
--- a/webview-ui/src/i18n/locales/ja/settings.json
+++ b/webview-ui/src/i18n/locales/ja/settings.json
@@ -424,6 +424,8 @@
"groqApiKey": "Groq APIキー",
"getSambaNovaApiKey": "SambaNova APIキーを取得",
"sambaNovaApiKey": "SambaNova APIキー",
+ "poeApiKey": "Poe APIキー",
+ "getPoeApiKey": "Poe APIキーを取得",
"getHuggingFaceApiKey": "Hugging Face APIキーを取得",
"huggingFaceApiKey": "Hugging Face APIキー",
"getOvhCloudAiEndpointsApiKey": "OVHcloud AI Endpoints APIキーを取得",
diff --git a/webview-ui/src/i18n/locales/ko/settings.json b/webview-ui/src/i18n/locales/ko/settings.json
index 078476e7c55..01bb03a9c34 100644
--- a/webview-ui/src/i18n/locales/ko/settings.json
+++ b/webview-ui/src/i18n/locales/ko/settings.json
@@ -427,6 +427,8 @@
},
"getSambaNovaApiKey": "SambaNova API 키 받기",
"sambaNovaApiKey": "SambaNova API 키",
+ "poeApiKey": "Poe API 키",
+ "getPoeApiKey": "Poe API 키 받기",
"getGeminiApiKey": "Gemini API 키 받기",
"getHuggingFaceApiKey": "Hugging Face API 키 받기",
"huggingFaceApiKey": "Hugging Face API 키",
diff --git a/webview-ui/src/i18n/locales/nl/settings.json b/webview-ui/src/i18n/locales/nl/settings.json
index 9fdb02e78fe..8f8bc20b537 100644
--- a/webview-ui/src/i18n/locales/nl/settings.json
+++ b/webview-ui/src/i18n/locales/nl/settings.json
@@ -427,6 +427,8 @@
"groqApiKey": "Groq API-sleutel",
"getSambaNovaApiKey": "SambaNova API-sleutel ophalen",
"sambaNovaApiKey": "SambaNova API-sleutel",
+ "poeApiKey": "Poe API-sleutel",
+ "getPoeApiKey": "Poe API-sleutel ophalen",
"getGeminiApiKey": "Gemini API-sleutel ophalen",
"getHuggingFaceApiKey": "Hugging Face API-sleutel ophalen",
"huggingFaceApiKey": "Hugging Face API-sleutel",
diff --git a/webview-ui/src/i18n/locales/pl/settings.json b/webview-ui/src/i18n/locales/pl/settings.json
index 5e3308dda3c..0ae16b5be57 100644
--- a/webview-ui/src/i18n/locales/pl/settings.json
+++ b/webview-ui/src/i18n/locales/pl/settings.json
@@ -419,6 +419,8 @@
"groqApiKey": "Klucz API Groq",
"getSambaNovaApiKey": "Uzyskaj klucz API SambaNova",
"sambaNovaApiKey": "Klucz API SambaNova",
+ "poeApiKey": "Klucz API Poe",
+ "getPoeApiKey": "Uzyskaj klucz API Poe",
"getGeminiApiKey": "Uzyskaj klucz API Gemini",
"getHuggingFaceApiKey": "Uzyskaj klucz API Hugging Face",
"huggingFaceApiKey": "Klucz API Hugging Face",
diff --git a/webview-ui/src/i18n/locales/pt-BR/settings.json b/webview-ui/src/i18n/locales/pt-BR/settings.json
index 2fc2d8fdc84..190c94e166e 100644
--- a/webview-ui/src/i18n/locales/pt-BR/settings.json
+++ b/webview-ui/src/i18n/locales/pt-BR/settings.json
@@ -427,6 +427,8 @@
"groqApiKey": "Chave de API Groq",
"getSambaNovaApiKey": "Obter chave de API SambaNova",
"sambaNovaApiKey": "Chave de API SambaNova",
+ "poeApiKey": "Chave de API Poe",
+ "getPoeApiKey": "Obter chave de API Poe",
"getGeminiApiKey": "Obter chave de API Gemini",
"getHuggingFaceApiKey": "Obter chave de API Hugging Face",
"huggingFaceApiKey": "Chave de API Hugging Face",
diff --git a/webview-ui/src/i18n/locales/ru/settings.json b/webview-ui/src/i18n/locales/ru/settings.json
index 0b374569ded..dc7bff9b9c8 100644
--- a/webview-ui/src/i18n/locales/ru/settings.json
+++ b/webview-ui/src/i18n/locales/ru/settings.json
@@ -419,6 +419,8 @@
"groqApiKey": "Groq API-ключ",
"getSambaNovaApiKey": "Получить SambaNova API-ключ",
"sambaNovaApiKey": "SambaNova API-ключ",
+ "poeApiKey": "Poe API-ключ",
+ "getPoeApiKey": "Получить Poe API-ключ",
"getGeminiApiKey": "Получить Gemini API-ключ",
"getHuggingFaceApiKey": "Получить Hugging Face API-ключ",
"huggingFaceApiKey": "Hugging Face API-ключ",
diff --git a/webview-ui/src/i18n/locales/sk/settings.json b/webview-ui/src/i18n/locales/sk/settings.json
index d1469ae7586..90d780a2559 100644
--- a/webview-ui/src/i18n/locales/sk/settings.json
+++ b/webview-ui/src/i18n/locales/sk/settings.json
@@ -459,6 +459,8 @@
"groqApiKey": "Kľúč API Groq",
"getSambaNovaApiKey": "Získať kľúč API SambaNova",
"sambaNovaApiKey": "Kľúč API SambaNova",
+ "poeApiKey": "Kľúč API Poe",
+ "getPoeApiKey": "Získať kľúč API Poe",
"getGeminiApiKey": "Získať kľúč API Gemini",
"openAiApiKey": "Kľúč API OpenAI",
"getHuggingFaceApiKey": "Získať kľúč API Hugging Face",
diff --git a/webview-ui/src/i18n/locales/th/settings.json b/webview-ui/src/i18n/locales/th/settings.json
index 73a2c0d5e57..6a514921458 100644
--- a/webview-ui/src/i18n/locales/th/settings.json
+++ b/webview-ui/src/i18n/locales/th/settings.json
@@ -578,6 +578,8 @@
"getZaiApiKey": "รับคีย์ API ของ Z.AI",
"sambaNovaApiKey": "คีย์ API ของ SambaNova",
"getSambaNovaApiKey": "รับคีย์ API ของ SambaNova",
+ "poeApiKey": "คีย์ API ของ Poe",
+ "getPoeApiKey": "รับคีย์ API ของ Poe",
"customModel": {
"capabilities": "กำหนดค่าความสามารถและราคาสำหรับโมเดลที่เข้ากันได้กับ OpenAI ที่กำหนดเองของคุณ ระมัดระวังในการระบุความสามารถของโมเดล เนื่องจากอาจส่งผลต่อประสิทธิภาพของ Kilo Code",
"maxTokens": {
diff --git a/webview-ui/src/i18n/locales/tr/settings.json b/webview-ui/src/i18n/locales/tr/settings.json
index 79f1271b053..c7f695eadf3 100644
--- a/webview-ui/src/i18n/locales/tr/settings.json
+++ b/webview-ui/src/i18n/locales/tr/settings.json
@@ -419,6 +419,8 @@
"groqApiKey": "Groq API Anahtarı",
"getSambaNovaApiKey": "SambaNova API Anahtarı Al",
"sambaNovaApiKey": "SambaNova API Anahtarı",
+ "poeApiKey": "Poe API Anahtarı",
+ "getPoeApiKey": "Poe API Anahtarı Al",
"getHuggingFaceApiKey": "Hugging Face API Anahtarı Al",
"huggingFaceApiKey": "Hugging Face API Anahtarı",
"getOvhCloudAiEndpointsApiKey": "OVHcloud AI Endpoints API Anahtarı Al",
diff --git a/webview-ui/src/i18n/locales/uk/settings.json b/webview-ui/src/i18n/locales/uk/settings.json
index 66a2150b85b..24602abe3f9 100644
--- a/webview-ui/src/i18n/locales/uk/settings.json
+++ b/webview-ui/src/i18n/locales/uk/settings.json
@@ -608,6 +608,8 @@
"getZaiApiKey": "Отримати ключ API Z.AI",
"sambaNovaApiKey": "Ключ API SambaNova",
"getSambaNovaApiKey": "Отримати ключ API SambaNova",
+ "poeApiKey": "Ключ API Poe",
+ "getPoeApiKey": "Отримати ключ API Poe",
"nanoGptApiKey": "Ключ API Nano-GPT",
"getNanoGptApiKey": "Отримати ключ API Nano-GPT",
"nanoGptModelList": "Список моделей",
diff --git a/webview-ui/src/i18n/locales/vi/settings.json b/webview-ui/src/i18n/locales/vi/settings.json
index 2500e617320..b5820f76477 100644
--- a/webview-ui/src/i18n/locales/vi/settings.json
+++ b/webview-ui/src/i18n/locales/vi/settings.json
@@ -427,6 +427,8 @@
"groqApiKey": "Khóa API Groq",
"getSambaNovaApiKey": "Lấy khóa API SambaNova",
"sambaNovaApiKey": "Khóa API SambaNova",
+ "poeApiKey": "Khóa API Poe",
+ "getPoeApiKey": "Lấy khóa API Poe",
"getHuggingFaceApiKey": "Lấy Khóa API Hugging Face",
"huggingFaceApiKey": "Khóa API Hugging Face",
"getOvhCloudAiEndpointsApiKey": "Lấy Khóa API OVHcloud AI Endpoints",
diff --git a/webview-ui/src/i18n/locales/zh-CN/settings.json b/webview-ui/src/i18n/locales/zh-CN/settings.json
index 2a32cd52764..d4cdf374340 100644
--- a/webview-ui/src/i18n/locales/zh-CN/settings.json
+++ b/webview-ui/src/i18n/locales/zh-CN/settings.json
@@ -427,6 +427,8 @@
"groqApiKey": "Groq API 密钥",
"getSambaNovaApiKey": "获取 SambaNova API 密钥",
"sambaNovaApiKey": "SambaNova API 密钥",
+ "poeApiKey": "Poe API 密钥",
+ "getPoeApiKey": "获取 Poe API 密钥",
"getHuggingFaceApiKey": "获取 Hugging Face API 密钥",
"huggingFaceApiKey": "Hugging Face API 密钥",
"getOvhCloudAiEndpointsApiKey": "获取 OVHcloud AI Endpoints API 密钥",
diff --git a/webview-ui/src/i18n/locales/zh-TW/settings.json b/webview-ui/src/i18n/locales/zh-TW/settings.json
index 1c85bac4438..f0e78aaf064 100644
--- a/webview-ui/src/i18n/locales/zh-TW/settings.json
+++ b/webview-ui/src/i18n/locales/zh-TW/settings.json
@@ -429,6 +429,8 @@
"groqApiKey": "Groq API 金鑰",
"getSambaNovaApiKey": "取得 SambaNova API 金鑰",
"sambaNovaApiKey": "SambaNova API 金鑰",
+ "poeApiKey": "Poe API 金鑰",
+ "getPoeApiKey": "取得 Poe API 金鑰",
"getHuggingFaceApiKey": "取得 Hugging Face API 金鑰",
"huggingFaceApiKey": "Hugging Face API 金鑰",
"getOvhCloudAiEndpointsApiKey": "取得 OVHcloud AI Endpoints API 金鑰",
diff --git a/webview-ui/src/utils/__tests__/validate.spec.ts b/webview-ui/src/utils/__tests__/validate.spec.ts
index 935770ddc01..05e77096421 100644
--- a/webview-ui/src/utils/__tests__/validate.spec.ts
+++ b/webview-ui/src/utils/__tests__/validate.spec.ts
@@ -89,6 +89,7 @@ describe("Model Validation Functions", () => {
// kilocode_change end
roo: {},
chutes: {},
+ poe: {}, // kilocode_change
zenmux: {},
}