Skip to content

Commit e588b3f

Browse files
committed
Add ReasoningEffort type
1 parent dacbd6c commit e588b3f

File tree

2 files changed

+15
-9
lines changed

2 files changed

+15
-9
lines changed

src/schemas/index.ts

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,16 @@ export const telemetrySettingsSchema = z.enum(telemetrySettings)
9595

9696
export type TelemetrySetting = z.infer<typeof telemetrySettingsSchema>
9797

98+
/**
99+
* ReasoningEffort
100+
*/
101+
102+
export const reasoningEfforts = ["low", "medium", "high"] as const
103+
104+
export const reasoningEffortsSchema = z.enum(reasoningEfforts)
105+
106+
export type ReasoningEffort = z.infer<typeof reasoningEffortsSchema>
107+
98108
/**
99109
* ModelInfo
100110
*/
@@ -110,7 +120,7 @@ export const modelInfoSchema = z.object({
110120
cacheWritesPrice: z.number().optional(),
111121
cacheReadsPrice: z.number().optional(),
112122
description: z.string().optional(),
113-
reasoningEffort: z.enum(["low", "medium", "high"]).optional(),
123+
reasoningEffort: reasoningEffortsSchema.optional(),
114124
thinking: z.boolean().optional(),
115125
minTokensPerCachePoint: z.number().optional(),
116126
maxCachePoints: z.number().optional(),
@@ -388,7 +398,7 @@ export const providerSettingsSchema = z.object({
388398
// Generic
389399
includeMaxTokens: z.boolean().optional(),
390400
modelTemperature: z.number().nullish(),
391-
reasoningEffort: z.enum(["low", "medium", "high"]).optional(),
401+
reasoningEffort: reasoningEffortsSchema.optional(),
392402
rateLimitSeconds: z.number().optional(),
393403
// Fake AI
394404
fakeAi: z.unknown().optional(),

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

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@ import { useAppTranslation } from "@/i18n/TranslationContext"
33
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, SelectSeparator } from "@/components/ui"
44

55
import { ApiConfiguration, ModelInfo } from "../../../../src/shared/api"
6-
7-
export const EFFORTS = ["high", "medium", "low"] as const
6+
import { reasoningEfforts } from "../../../../src/schemas"
87

98
interface ReasoningEffortProps {
109
setApiConfigurationField: <K extends keyof ApiConfiguration>(field: K, value: ApiConfiguration[K]) => void
@@ -22,18 +21,15 @@ export const ReasoningEffort = ({ setApiConfigurationField, modelInfo }: Reasoni
2221
<Select
2322
value={modelInfo.reasoningEffort}
2423
onValueChange={(value) =>
25-
setApiConfigurationField("openRouterModelInfo", {
26-
...modelInfo,
27-
reasoningEffort: value as "high" | "medium" | "low",
28-
})
24+
setApiConfigurationField("reasoningEffort", value as "high" | "medium" | "low")
2925
}>
3026
<SelectTrigger className="w-full">
3127
<SelectValue placeholder={t("settings:common.select")} />
3228
</SelectTrigger>
3329
<SelectContent>
3430
<SelectItem value="openrouter">OpenRouter</SelectItem>
3531
<SelectSeparator />
36-
{EFFORTS.map((value) => (
32+
{reasoningEfforts.map((value) => (
3733
<SelectItem key={value} value={value}>
3834
{value}
3935
</SelectItem>

0 commit comments

Comments
 (0)