@@ -47,6 +47,8 @@ import {
4747 askSageDefaultURL ,
4848 xaiDefaultModelId ,
4949 xaiModels ,
50+ nebiusModels ,
51+ nebiusDefaultModelId ,
5052 sambanovaModels ,
5153 sambanovaDefaultModelId ,
5254 doubaoModels ,
@@ -324,6 +326,7 @@ const ApiOptions = ({
324326 < VSCodeOption value = "lmstudio" > LM Studio</ VSCodeOption >
325327 < VSCodeOption value = "ollama" > Ollama</ VSCodeOption >
326328 < VSCodeOption value = "litellm" > LiteLLM</ VSCodeOption >
329+ < VSCodeOption value = "nebius" > Nebius AI Studio</ VSCodeOption >
327330 < VSCodeOption value = "asksage" > AskSage</ VSCodeOption >
328331 < VSCodeOption value = "xai" > xAI</ VSCodeOption >
329332 < VSCodeOption value = "sambanova" > SambaNova</ VSCodeOption >
@@ -1884,6 +1887,52 @@ const ApiOptions = ({
18841887 </ div >
18851888 ) }
18861889
1890+ { selectedProvider === "nebius" && (
1891+ < div >
1892+ < VSCodeTextField
1893+ value = { apiConfiguration ?. nebiusApiKey || "" }
1894+ style = { { width : "100%" } }
1895+ type = "password"
1896+ onInput = { handleInputChange ( "nebiusApiKey" ) }
1897+ placeholder = "Enter API Key..." >
1898+ < span style = { { fontWeight : 500 } } > Nebius API Key</ span >
1899+ </ VSCodeTextField >
1900+ < p
1901+ style = { {
1902+ fontSize : "12px" ,
1903+ marginTop : 3 ,
1904+ color : "var(--vscode-descriptionForeground)" ,
1905+ } } >
1906+ This key is stored locally and only used to make API requests from this extension.{ " " }
1907+ { ! apiConfiguration ?. nebiusApiKey && (
1908+ < VSCodeLink
1909+ href = "https://studio.nebius.com/settings/api-keys"
1910+ style = { {
1911+ display : "inline" ,
1912+ fontSize : "inherit" ,
1913+ } } >
1914+ You can get a Nebius API key by signing up here.{ " " }
1915+ </ VSCodeLink >
1916+ ) }
1917+ < span style = { { color : "var(--vscode-errorForeground)" } } >
1918+ (< span style = { { fontWeight : 500 } } > Note:</ span > Cline uses complex prompts and works best with Claude
1919+ models. Less capable models may not work as expected.)
1920+ </ span >
1921+ </ p >
1922+ </ div >
1923+ ) }
1924+
1925+ { apiErrorMessage && (
1926+ < p
1927+ style = { {
1928+ margin : "-10px 0 4px 0" ,
1929+ fontSize : 12 ,
1930+ color : "var(--vscode-errorForeground)" ,
1931+ } } >
1932+ { apiErrorMessage }
1933+ </ p >
1934+ ) }
1935+
18871936 { selectedProvider === "xai" && (
18881937 < div >
18891938 < VSCodeTextField
@@ -1900,6 +1949,10 @@ const ApiOptions = ({
19001949 marginTop : 3 ,
19011950 color : "var(--vscode-descriptionForeground)" ,
19021951 } } >
1952+ < span style = { { color : "var(--vscode-errorForeground)" } } >
1953+ (< span style = { { fontWeight : 500 } } > Note:</ span > Cline uses complex prompts and works best with Claude
1954+ models. Less capable models may not work as expected.)
1955+ </ span >
19031956 This key is stored locally and only used to make API requests from this extension.
19041957 { ! apiConfiguration ?. xaiApiKey && (
19051958 < VSCodeLink href = "https://x.ai" style = { { display : "inline" , fontSize : "inherit" } } >
@@ -2072,6 +2125,7 @@ const ApiOptions = ({
20722125 { selectedProvider === "asksage" && createDropdown ( askSageModels ) }
20732126 { selectedProvider === "xai" && createDropdown ( xaiModels ) }
20742127 { selectedProvider === "sambanova" && createDropdown ( sambanovaModels ) }
2128+ { selectedProvider === "nebius" && createDropdown ( nebiusModels ) }
20752129 </ DropdownContainer >
20762130
20772131 { ( ( selectedProvider === "anthropic" && selectedModelId === "claude-3-7-sonnet-20250219" ) ||
@@ -2488,6 +2542,8 @@ export function normalizeApiConfiguration(apiConfiguration?: ApiConfiguration):
24882542 }
24892543 case "xai" :
24902544 return getProviderData ( xaiModels , xaiDefaultModelId )
2545+ case "nebius" :
2546+ return getProviderData ( nebiusModels , nebiusDefaultModelId )
24912547 case "sambanova" :
24922548 return getProviderData ( sambanovaModels , sambanovaDefaultModelId )
24932549 default :
0 commit comments