Skip to content

Commit bdc96a0

Browse files
authored
Merge pull request RooCodeInc#1202 from RooVetGit/cte/fix-model-picker
Fix model picker
2 parents 904f369 + 41e75bc commit bdc96a0

File tree

15 files changed

+657
-614
lines changed

15 files changed

+657
-614
lines changed

.changeset/real-ties-destroy.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"roo-cline": patch
3+
---
4+
5+
Fix model picker

src/api/providers/requesty.ts

Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -42,26 +42,33 @@ export class RequestyHandler extends OpenAiHandler {
4242
}
4343
}
4444

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

48-
if (!apiKey) {
49-
return models
50-
}
51-
5248
try {
53-
const config: Record<string, any> = {}
54-
config["headers"] = { Authorization: `Bearer ${apiKey}` }
55-
56-
const response = await axios.get("https://router.requesty.ai/v1/models", config)
49+
const response = await axios.get("https://router.requesty.ai/v1/models")
5750
const rawModels = response.data.data
5851

5952
for (const rawModel of rawModels) {
53+
// {
54+
// id: "anthropic/claude-3-5-sonnet-20240620",
55+
// object: "model",
56+
// created: 1740552655,
57+
// owned_by: "system",
58+
// input_price: 0.0000028,
59+
// caching_price: 0.00000375,
60+
// cached_price: 3e-7,
61+
// output_price: 0.000015,
62+
// max_output_tokens: 8192,
63+
// context_window: 200000,
64+
// supports_caching: true,
65+
// description:
66+
// "Anthropic's previous most intelligent model. High level of intelligence and capability. Excells in coding.",
67+
// }
68+
6069
const modelInfo: ModelInfo = {
6170
maxTokens: rawModel.max_output_tokens,
6271
contextWindow: rawModel.context_window,
63-
supportsImages: rawModel.support_image,
64-
supportsComputerUse: rawModel.support_computer_use,
6572
supportsPromptCache: rawModel.supports_caching,
6673
inputPrice: parseApiPrice(rawModel.input_price),
6774
outputPrice: parseApiPrice(rawModel.output_price),
@@ -72,8 +79,15 @@ export async function getRequestyModels({ apiKey }: { apiKey?: string }) {
7279

7380
switch (rawModel.id) {
7481
case rawModel.id.startsWith("anthropic/claude-3-7-sonnet"):
82+
modelInfo.supportsComputerUse = true
83+
modelInfo.supportsImages = true
7584
modelInfo.maxTokens = 16384
7685
break
86+
case rawModel.id.startsWith("anthropic/claude-3-5-sonnet-20241022"):
87+
modelInfo.supportsComputerUse = true
88+
modelInfo.supportsImages = true
89+
modelInfo.maxTokens = 8192
90+
break
7791
case rawModel.id.startsWith("anthropic/"):
7892
modelInfo.maxTokens = 8192
7993
break

src/core/webview/ClineProvider.ts

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -644,9 +644,7 @@ export class ClineProvider implements vscode.WebviewViewProvider {
644644
}
645645
})
646646

647-
const requestyApiKey = await this.getSecret("requestyApiKey")
648-
649-
getRequestyModels({ apiKey: requestyApiKey }).then(async (requestyModels) => {
647+
getRequestyModels().then(async (requestyModels) => {
650648
if (Object.keys(requestyModels).length > 0) {
651649
await fs.writeFile(
652650
path.join(cacheDir, GlobalFileNames.requestyModels),
@@ -838,17 +836,15 @@ export class ClineProvider implements vscode.WebviewViewProvider {
838836

839837
break
840838
case "refreshRequestyModels":
841-
if (message?.values?.apiKey) {
842-
const requestyModels = await getRequestyModels({ apiKey: message.values.apiKey })
839+
const requestyModels = await getRequestyModels()
843840

844-
if (Object.keys(requestyModels).length > 0) {
845-
const cacheDir = await this.ensureCacheDirectoryExists()
846-
await fs.writeFile(
847-
path.join(cacheDir, GlobalFileNames.requestyModels),
848-
JSON.stringify(requestyModels),
849-
)
850-
await this.postMessageToWebview({ type: "requestyModels", requestyModels })
851-
}
841+
if (Object.keys(requestyModels).length > 0) {
842+
const cacheDir = await this.ensureCacheDirectoryExists()
843+
await fs.writeFile(
844+
path.join(cacheDir, GlobalFileNames.requestyModels),
845+
JSON.stringify(requestyModels),
846+
)
847+
await this.postMessageToWebview({ type: "requestyModels", requestyModels })
852848
}
853849

854850
break

src/shared/ExtensionMessage.ts

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,11 @@ export interface ExtensionMessage {
2727
| "workspaceUpdated"
2828
| "invoke"
2929
| "partialMessage"
30-
| "glamaModels"
3130
| "openRouterModels"
32-
| "openAiModels"
31+
| "glamaModels"
32+
| "unboundModels"
3333
| "requestyModels"
34+
| "openAiModels"
3435
| "mcpServers"
3536
| "enhancedPrompt"
3637
| "commitSearchResults"
@@ -43,8 +44,6 @@ export interface ExtensionMessage {
4344
| "autoApprovalEnabled"
4445
| "updateCustomMode"
4546
| "deleteCustomMode"
46-
| "unboundModels"
47-
| "refreshUnboundModels"
4847
| "currentCheckpointUpdated"
4948
text?: string
5049
action?:
@@ -67,11 +66,11 @@ export interface ExtensionMessage {
6766
path?: string
6867
}>
6968
partialMessage?: ClineMessage
69+
openRouterModels?: Record<string, ModelInfo>
7070
glamaModels?: Record<string, ModelInfo>
71+
unboundModels?: Record<string, ModelInfo>
7172
requestyModels?: Record<string, ModelInfo>
72-
openRouterModels?: Record<string, ModelInfo>
7373
openAiModels?: string[]
74-
unboundModels?: Record<string, ModelInfo>
7574
mcpServers?: McpServer[]
7675
commits?: GitCommit[]
7776
listApiConfig?: ApiConfigMeta[]

src/shared/WebviewMessage.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,11 @@ export interface WebviewMessage {
4040
| "openFile"
4141
| "openMention"
4242
| "cancelTask"
43-
| "refreshGlamaModels"
4443
| "refreshOpenRouterModels"
45-
| "refreshOpenAiModels"
44+
| "refreshGlamaModels"
4645
| "refreshUnboundModels"
4746
| "refreshRequestyModels"
47+
| "refreshOpenAiModels"
4848
| "alwaysAllowBrowser"
4949
| "alwaysAllowMcp"
5050
| "alwaysAllowModeSwitch"
@@ -71,7 +71,6 @@ export interface WebviewMessage {
7171
| "mcpEnabled"
7272
| "enableMcpServerCreation"
7373
| "searchCommits"
74-
| "refreshGlamaModels"
7574
| "alwaysApproveResubmit"
7675
| "requestDelaySeconds"
7776
| "rateLimitSeconds"

webview-ui/package-lock.json

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

webview-ui/src/components/settings/ApiErrorMessage.tsx

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@ interface ApiErrorMessageProps {
44
errorMessage: string | undefined
55
children?: React.ReactNode
66
}
7-
const ApiErrorMessage = ({ errorMessage, children }: ApiErrorMessageProps) => {
8-
return (
9-
<div className="text-vscode-errorForeground text-sm">
10-
<span style={{ fontSize: "2em" }} className={`codicon codicon-close align-middle mr-1`} />
11-
{errorMessage}
12-
{children}
7+
8+
export const ApiErrorMessage = ({ errorMessage, children }: ApiErrorMessageProps) => (
9+
<div className="flex flex-col gap-2 text-vscode-errorForeground text-sm">
10+
<div className="flex flex-row items-center gap-1">
11+
<div className="codicon codicon-close" />
12+
<div>{errorMessage}</div>
1313
</div>
14-
)
15-
}
16-
export default ApiErrorMessage
14+
{children}
15+
</div>
16+
)

0 commit comments

Comments
 (0)