Skip to content
This repository was archived by the owner on May 15, 2026. It is now read-only.

Commit 4a36188

Browse files
committed
feat(core): add message handlers for Firmware quota and model fetching
- Import getFirmwareQuota from firmware fetcher - Add firmware to routerModels initialization object - Add firmware to candidates array for model fetching - Add requestFirmwareQuota message handler to fetch quota info
1 parent ce22e97 commit 4a36188

1 file changed

Lines changed: 33 additions & 0 deletions

File tree

src/core/webview/webviewMessageHandler.ts

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ import { RooIgnoreController } from "../ignore/RooIgnoreController"
5858
import { getWorkspacePath } from "../../utils/path"
5959
import { Mode, defaultModeSlug } from "../../shared/modes"
6060
import { getModels, flushModels } from "../../api/providers/fetchers/modelCache"
61+
import { getFirmwareQuota } from "../../api/providers/fetchers/firmware"
6162
import { GetModelsOptions } from "../../shared/api"
6263
import { generateSystemPrompt } from "./generateSystemPrompt"
6364
import { resolveDefaultSaveUri, saveLastExportPath } from "../../utils/export"
@@ -874,6 +875,7 @@ export const webviewMessageHandler = async (
874875
lmstudio: {},
875876
roo: {},
876877
chutes: {},
878+
firmware: {},
877879
}
878880

879881
const safeGetModels = async (options: GetModelsOptions): Promise<ModelRecord> => {
@@ -924,6 +926,10 @@ export const webviewMessageHandler = async (
924926
key: "chutes",
925927
options: { provider: "chutes", apiKey: apiConfiguration.chutesApiKey },
926928
},
929+
{
930+
key: "firmware",
931+
options: { provider: "firmware", apiKey: apiConfiguration.firmwareApiKey },
932+
},
927933
]
928934

929935
// IO Intelligence is conditional on api key
@@ -1104,6 +1110,33 @@ export const webviewMessageHandler = async (
11041110
}
11051111
break
11061112
}
1113+
case "requestFirmwareQuota": {
1114+
const requestId = message.requestId
1115+
try {
1116+
const { apiConfiguration: firmwareApiConfig } = await provider.getState()
1117+
const apiKey = firmwareApiConfig?.firmwareApiKey
1118+
1119+
if (!apiKey) {
1120+
throw new Error("Firmware API key not configured")
1121+
}
1122+
1123+
const quota = await getFirmwareQuota(apiKey)
1124+
1125+
provider.postMessageToWebview({
1126+
type: "firmwareQuota",
1127+
requestId,
1128+
values: { remaining: quota.remaining, windowHours: quota.windowHours },
1129+
})
1130+
} catch (error) {
1131+
const errorMessage = error instanceof Error ? error.message : String(error)
1132+
provider.postMessageToWebview({
1133+
type: "firmwareQuota",
1134+
requestId,
1135+
values: { error: errorMessage },
1136+
})
1137+
}
1138+
break
1139+
}
11071140
case "requestOpenAiModels":
11081141
if (message?.values?.baseUrl && message?.values?.apiKey) {
11091142
const openAiModels = await getOpenAiModels(

0 commit comments

Comments
 (0)