Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/real-ties-destroy.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"roo-cline": patch
---

Fix model picker
36 changes: 25 additions & 11 deletions src/api/providers/requesty.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,26 +42,33 @@ export class RequestyHandler extends OpenAiHandler {
}
}

export async function getRequestyModels({ apiKey }: { apiKey?: string }) {
export async function getRequestyModels() {
const models: Record<string, ModelInfo> = {}

if (!apiKey) {
return models
}

try {
const config: Record<string, any> = {}
config["headers"] = { Authorization: `Bearer ${apiKey}` }

const response = await axios.get("https://router.requesty.ai/v1/models", config)
const response = await axios.get("https://router.requesty.ai/v1/models")
const rawModels = response.data.data

for (const rawModel of rawModels) {
// {
// id: "anthropic/claude-3-5-sonnet-20240620",
// object: "model",
// created: 1740552655,
// owned_by: "system",
// input_price: 0.0000028,
// caching_price: 0.00000375,
// cached_price: 3e-7,
// output_price: 0.000015,
// max_output_tokens: 8192,
// context_window: 200000,
// supports_caching: true,
// description:
// "Anthropic's previous most intelligent model. High level of intelligence and capability. Excells in coding.",
// }

const modelInfo: ModelInfo = {
maxTokens: rawModel.max_output_tokens,
contextWindow: rawModel.context_window,
supportsImages: rawModel.support_image,
supportsComputerUse: rawModel.support_computer_use,
supportsPromptCache: rawModel.supports_caching,
inputPrice: parseApiPrice(rawModel.input_price),
outputPrice: parseApiPrice(rawModel.output_price),
Expand All @@ -72,8 +79,15 @@ export async function getRequestyModels({ apiKey }: { apiKey?: string }) {

switch (rawModel.id) {
case rawModel.id.startsWith("anthropic/claude-3-7-sonnet"):
modelInfo.supportsComputerUse = true
modelInfo.supportsImages = true
modelInfo.maxTokens = 16384
break
case rawModel.id.startsWith("anthropic/claude-3-5-sonnet-20241022"):
modelInfo.supportsComputerUse = true
modelInfo.supportsImages = true
modelInfo.maxTokens = 8192
break
case rawModel.id.startsWith("anthropic/"):
modelInfo.maxTokens = 8192
break
Expand Down
22 changes: 9 additions & 13 deletions src/core/webview/ClineProvider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -644,9 +644,7 @@ export class ClineProvider implements vscode.WebviewViewProvider {
}
})

const requestyApiKey = await this.getSecret("requestyApiKey")

getRequestyModels({ apiKey: requestyApiKey }).then(async (requestyModels) => {
getRequestyModels().then(async (requestyModels) => {
if (Object.keys(requestyModels).length > 0) {
await fs.writeFile(
path.join(cacheDir, GlobalFileNames.requestyModels),
Expand Down Expand Up @@ -838,17 +836,15 @@ export class ClineProvider implements vscode.WebviewViewProvider {

break
case "refreshRequestyModels":
if (message?.values?.apiKey) {
const requestyModels = await getRequestyModels({ apiKey: message.values.apiKey })
const requestyModels = await getRequestyModels()

if (Object.keys(requestyModels).length > 0) {
const cacheDir = await this.ensureCacheDirectoryExists()
await fs.writeFile(
path.join(cacheDir, GlobalFileNames.requestyModels),
JSON.stringify(requestyModels),
)
await this.postMessageToWebview({ type: "requestyModels", requestyModels })
}
if (Object.keys(requestyModels).length > 0) {
const cacheDir = await this.ensureCacheDirectoryExists()
await fs.writeFile(
path.join(cacheDir, GlobalFileNames.requestyModels),
JSON.stringify(requestyModels),
)
await this.postMessageToWebview({ type: "requestyModels", requestyModels })
}

break
Expand Down
11 changes: 5 additions & 6 deletions src/shared/ExtensionMessage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,11 @@ export interface ExtensionMessage {
| "workspaceUpdated"
| "invoke"
| "partialMessage"
| "glamaModels"
| "openRouterModels"
| "openAiModels"
| "glamaModels"
| "unboundModels"
| "requestyModels"
| "openAiModels"
| "mcpServers"
| "enhancedPrompt"
| "commitSearchResults"
Expand All @@ -43,8 +44,6 @@ export interface ExtensionMessage {
| "autoApprovalEnabled"
| "updateCustomMode"
| "deleteCustomMode"
| "unboundModels"
| "refreshUnboundModels"
| "currentCheckpointUpdated"
text?: string
action?:
Expand All @@ -67,11 +66,11 @@ export interface ExtensionMessage {
path?: string
}>
partialMessage?: ClineMessage
openRouterModels?: Record<string, ModelInfo>
glamaModels?: Record<string, ModelInfo>
unboundModels?: Record<string, ModelInfo>
requestyModels?: Record<string, ModelInfo>
openRouterModels?: Record<string, ModelInfo>
openAiModels?: string[]
unboundModels?: Record<string, ModelInfo>
mcpServers?: McpServer[]
commits?: GitCommit[]
listApiConfig?: ApiConfigMeta[]
Expand Down
5 changes: 2 additions & 3 deletions src/shared/WebviewMessage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,11 +40,11 @@ export interface WebviewMessage {
| "openFile"
| "openMention"
| "cancelTask"
| "refreshGlamaModels"
| "refreshOpenRouterModels"
| "refreshOpenAiModels"
| "refreshGlamaModels"
| "refreshUnboundModels"
| "refreshRequestyModels"
| "refreshOpenAiModels"
| "alwaysAllowBrowser"
| "alwaysAllowMcp"
| "alwaysAllowModeSwitch"
Expand All @@ -71,7 +71,6 @@ export interface WebviewMessage {
| "mcpEnabled"
| "enableMcpServerCreation"
| "searchCommits"
| "refreshGlamaModels"
| "alwaysApproveResubmit"
| "requestDelaySeconds"
| "rateLimitSeconds"
Expand Down
2 changes: 2 additions & 0 deletions webview-ui/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

18 changes: 9 additions & 9 deletions webview-ui/src/components/settings/ApiErrorMessage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@ interface ApiErrorMessageProps {
errorMessage: string | undefined
children?: React.ReactNode
}
const ApiErrorMessage = ({ errorMessage, children }: ApiErrorMessageProps) => {
return (
<div className="text-vscode-errorForeground text-sm">
<span style={{ fontSize: "2em" }} className={`codicon codicon-close align-middle mr-1`} />
{errorMessage}
{children}

export const ApiErrorMessage = ({ errorMessage, children }: ApiErrorMessageProps) => (
<div className="flex flex-col gap-2 text-vscode-errorForeground text-sm">
<div className="flex flex-row items-center gap-1">
<div className="codicon codicon-close" />
<div>{errorMessage}</div>
</div>
)
}
export default ApiErrorMessage
{children}
</div>
)
Loading
Loading