(THINKING_LEVELS);
function fastModeOptionValue(value: "auto" | "on" | "off"): FastMode {
return value === "auto" ? "auto" : value === "on";
}
function renderModelBehavior(props: ModelProvidersViewProps) {
- const fastMode = formatFastModeValue(props.fastMode);
+ const thinkingLevels =
+ props.thinkingLevel && !THINKING_LEVEL_SET.has(props.thinkingLevel)
+ ? [...THINKING_LEVELS, props.thinkingLevel]
+ : THINKING_LEVELS;
+ const thinkingDefault = renderSettingsDefaultState({
+ value: t("quickSettings.model.modelPolicy"),
+ overridden: props.thinkingLevel !== undefined,
+ disabled: props.configBusy,
+ onReset: props.onThinkingReset,
+ });
+ const fastDefault = renderSettingsDefaultState({
+ value: t("quickSettings.model.modelPolicy"),
+ overridden: props.fastMode !== undefined,
+ disabled: props.configBusy,
+ onReset: props.onFastModeReset,
+ });
+ const fastMode = props.fastMode === undefined ? "" : formatFastModeValue(props.fastMode);
return html`
${renderSettingsSection({ title: t("quickSettings.model.title") }, [
renderSettingsRow({
title: t("quickSettings.model.thinking"),
- control: renderSettingsSegmented({
- value: props.thinkingLevel,
- options: THINKING_LEVELS.map((level) => ({
- value: level,
- label: t(`quickSettings.model.thinkingLevels.${level}`),
- })),
- disabled: props.configBusy,
- onChange: props.onThinkingChange,
- }),
+ description: thinkingDefault.description,
+ control: html`
+ ${renderSettingsSegmented({
+ value: props.thinkingLevel ?? "",
+ options: [
+ { value: "", label: t("quickSettings.model.default") },
+ ...thinkingLevels.map((level) => ({
+ value: level,
+ label: THINKING_LEVEL_SET.has(level)
+ ? t(`quickSettings.model.thinkingLevels.${level}`)
+ : formatThinkingOverrideLabel(level),
+ })),
+ ],
+ disabled: props.configBusy,
+ onChange: (value, element) =>
+ value === "" ? props.onThinkingReset() : props.onThinkingChange(value, element),
+ })}
+ ${thinkingDefault.action}
+ `,
}),
renderSettingsRow({
title: t("quickSettings.model.fastMode"),
- control: renderSettingsSegmented<"auto" | "on" | "off">({
- value: fastMode,
- options: [
- { value: "auto", label: t("quickSettings.model.fastModes.auto") },
- { value: "on", label: t("quickSettings.model.fastModes.fast") },
- { value: "off", label: t("quickSettings.model.fastModes.standard") },
- ],
- disabled: props.configBusy,
- onChange: (value) => {
- if (value !== fastMode) {
- props.onFastModeChange(fastModeOptionValue(value));
- }
- },
- }),
+ description: fastDefault.description,
+ control: html`
+ ${renderSettingsSegmented<"" | "auto" | "on" | "off">({
+ value: fastMode,
+ options: [
+ { value: "", label: t("quickSettings.model.default") },
+ { value: "auto", label: t("quickSettings.model.fastModes.auto") },
+ { value: "on", label: t("quickSettings.model.fastModes.fast") },
+ { value: "off", label: t("quickSettings.model.fastModes.standard") },
+ ],
+ disabled: props.configBusy,
+ onChange: (value) => {
+ if (value === "") {
+ props.onFastModeReset();
+ } else if (value !== fastMode) {
+ props.onFastModeChange(fastModeOptionValue(value));
+ }
+ },
+ })}
+ ${fastDefault.action}
+ `,
}),
])}