Make merged settings non-nullable and fix all lints related to that. (#16647)

This commit is contained in:
Jacob Richman
2026-01-15 09:26:10 -08:00
committed by GitHub
parent 2b6bfe4097
commit f7f38e2b9e
59 changed files with 964 additions and 744 deletions
+15 -9
View File
@@ -14,6 +14,7 @@ import type {
BugCommandSettings,
TelemetrySettings,
AuthType,
AgentOverride,
} from '@google/gemini-cli-core';
import {
DEFAULT_TRUNCATE_TOOL_OUTPUT_LINES,
@@ -799,7 +800,7 @@ const SETTINGS_SCHEMA = {
label: 'Agent Overrides',
category: 'Advanced',
requiresRestart: true,
default: {},
default: {} as Record<string, AgentOverride>,
description:
'Override settings for specific agents, e.g. to disable the agent, set a custom model config, or run config.',
showInDialog: false,
@@ -2262,12 +2263,17 @@ type InferSettings<T extends SettingsSchema> = {
: T[K]['default'];
};
type InferMergedSettings<T extends SettingsSchema> = {
-readonly [K in keyof T]-?: T[K] extends { properties: SettingsSchema }
? InferMergedSettings<T[K]['properties']>
: T[K]['type'] extends 'enum'
? T[K]['options'] extends readonly SettingEnumOption[]
? T[K]['options'][number]['value']
: T[K]['default']
: T[K]['default'] extends boolean
? boolean
: T[K]['default'];
};
export type Settings = InferSettings<SettingsSchemaType>;
export function getEnableHooksUI(settings: Settings): boolean {
return settings.tools?.enableHooks ?? true;
}
export function getEnableHooks(settings: Settings): boolean {
return getEnableHooksUI(settings) && (settings.hooks?.enabled ?? false);
}
export type MergedSettings = InferMergedSettings<SettingsSchemaType>;