Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
113 changes: 88 additions & 25 deletions docs/reference/configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -672,12 +672,24 @@ their corresponding top-level category object in your `settings.json` file.
"model": "gemini-3.1-flash-lite"
}
},
"gemini-3.5-flash-lite": {
"extends": "chat-base-3",
"modelConfig": {
"model": "gemini-3.5-flash-lite"
}
},
"gemini-3.5-flash": {
"extends": "chat-base-3",
"modelConfig": {
"model": "gemini-3.5-flash"
}
},
"gemini-3.8-flash": {
"extends": "chat-base-3",
"modelConfig": {
"model": "gemini-3.8-flash"
}
},
"gemma-4-31b-it": {
"extends": "chat-base-3",
"modelConfig": {
Expand Down Expand Up @@ -914,6 +926,16 @@ their corresponding top-level category object in your `settings.json` file.
"multimodalToolUse": true
}
},
"gemini-3.5-flash-lite": {
"tier": "flash-lite",
"family": "gemini-3",
"isPreview": false,
"isVisible": true,
"features": {
"thinking": false,
"multimodalToolUse": true
}
},
"gemini-3.1-pro-preview": {
"tier": "pro",
"family": "gemini-3",
Expand Down Expand Up @@ -964,6 +986,16 @@ their corresponding top-level category object in your `settings.json` file.
"multimodalToolUse": true
}
},
"gemini-3.8-flash": {
"tier": "flash",
"family": "gemini-3",
"isPreview": false,
"isVisible": true,
"features": {
"thinking": false,
"multimodalToolUse": true
}
},
"gemini-2.5-pro": {
"tier": "pro",
"family": "gemini-2.5",
Expand Down Expand Up @@ -1118,16 +1150,16 @@ their corresponding top-level category object in your `settings.json` file.
{
"condition": {
"hasAccessToPreview": false,
"useGemini3_5Flash": true
"useLatestFlash": true
},
"target": "gemini-3.5-flash"
"target": "gemini-3.8-flash"
},
{
"condition": {
"hasAccessToPreview": false,
"useGemini3_5Flash": false
"useLatestFlash": false
},
"target": "gemini-2.5-flash"
"target": "gemini-3.5-flash"
}
]
},
Expand All @@ -1136,16 +1168,20 @@ their corresponding top-level category object in your `settings.json` file.
"contexts": [
{
"condition": {
"useGemini3_5Flash": false,
"hasAccessToPreview": false
"useLatestFlash": true
},
"target": "gemini-2.5-flash"
},
"target": "gemini-3.8-flash"
}
]
},
"gemini-3.8-flash": {
"default": "gemini-3.8-flash",
"contexts": [
{
"condition": {
"useGemini3_5Flash": false
"useLatestFlash": false
},
"target": "gemini-3-flash-preview"
"target": "gemini-3.5-flash"
}
]
},
Expand All @@ -1154,9 +1190,9 @@ their corresponding top-level category object in your `settings.json` file.
"contexts": [
{
"condition": {
"useGemini3_5Flash": true
"useLatestFlash": true
},
"target": "gemini-3.5-flash"
"target": "gemini-3.8-flash"
}
]
},
Expand Down Expand Up @@ -1233,27 +1269,54 @@ their corresponding top-level category object in your `settings.json` file.
]
},
"gemini-3.1-flash-lite": {
"default": "gemini-3.1-flash-lite"
"default": "gemini-3.1-flash-lite",
"contexts": [
{
"condition": {
"useLatestFlashLite": true
},
"target": "gemini-3.5-flash-lite"
}
]
},
"gemini-3.5-flash-lite": {
"default": "gemini-3.5-flash-lite",
"contexts": [
{
"condition": {
"useLatestFlashLite": false
},
"target": "gemini-3.1-flash-lite"
}
]
},
"flash": {
"default": "gemini-3-flash-preview",
"contexts": [
{
"condition": {
"useGemini3_5Flash": true
"useLatestFlash": true
},
"target": "gemini-3.5-flash"
"target": "gemini-3.8-flash"
},
{
"condition": {
"hasAccessToPreview": false
},
"target": "gemini-2.5-flash"
"target": "gemini-3.5-flash"
}
]
},
"flash-lite": {
"default": "gemini-3.1-flash-lite"
"default": "gemini-3.1-flash-lite",
"contexts": [
{
"condition": {
"useLatestFlashLite": true
},
"target": "gemini-3.5-flash-lite"
}
]
},
"auto-gemini-3": {
"default": "gemini-3-pro-preview",
Expand Down Expand Up @@ -1300,21 +1363,21 @@ their corresponding top-level category object in your `settings.json` file.
"contexts": [
{
"condition": {
"useGemini3_5Flash": true
"useLatestFlash": true
},
"target": "gemini-3.5-flash"
"target": "gemini-3.8-flash"
},
{
"condition": {
"hasAccessToPreview": false
},
"target": "gemini-2.5-flash"
"target": "gemini-3.5-flash"
},
{
"condition": {
"requestedModels": ["gemini-2.5-pro", "auto-gemini-2.5"]
},
"target": "gemini-2.5-flash"
"target": "gemini-3.5-flash"
}
]
},
Expand Down Expand Up @@ -1447,7 +1510,7 @@ their corresponding top-level category object in your `settings.json` file.
}
},
{
"model": "gemini-2.5-flash",
"model": "gemini-3.5-flash",
"isLastResort": true,
"maxAttempts": 10,
"actions": {
Expand Down Expand Up @@ -1482,7 +1545,7 @@ their corresponding top-level category object in your `settings.json` file.
}
},
{
"model": "gemini-2.5-flash",
"model": "gemini-3.5-flash",
"isLastResort": true,
"maxAttempts": 10,
"actions": {
Expand All @@ -1501,7 +1564,7 @@ their corresponding top-level category object in your `settings.json` file.
],
"lite": [
{
"model": "flash-lite",
"model": "gemini-3.1-flash-lite",
"actions": {
"terminal": "silent",
"transient": "silent",
Expand All @@ -1516,7 +1579,7 @@ their corresponding top-level category object in your `settings.json` file.
}
},
{
"model": "gemini-2.5-flash",
"model": "gemini-3.5-flash",
"actions": {
"terminal": "silent",
"transient": "silent",
Expand Down
8 changes: 5 additions & 3 deletions packages/cli/src/acp/acpUtils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -265,7 +265,8 @@ export function buildAvailableModels(
const preferredModel = config.getModel() || GEMINI_MODEL_ALIAS_AUTO;
const shouldShowPreviewModels = config.getHasAccessToPreviewModel();
const useGemini31 = config.getGemini31LaunchedSync?.() ?? false;
const useGemini3_5Flash = config.hasGemini35FlashGAAccess?.() ?? false;
const useLatestFlash = config.hasLatestFlashGAAccess?.() ?? false;
const useLatestFlashLite = config.hasLatestFlashLiteGAAccess?.() ?? false;
const selectedAuthType = settings.merged.security.auth.selectedType;
const useCustomToolModel =
useGemini31 && selectedAuthType === AuthType.USE_GEMINI;
Expand All @@ -277,7 +278,8 @@ export function buildAvailableModels(
) {
const options = config.getModelConfigService().getAvailableModelOptions({
useGemini3_1: useGemini31,
useGemini3_5Flash,
useLatestFlash,
useLatestFlashLite,
useCustomTools: useCustomToolModel,
hasAccessToPreview: shouldShowPreviewModels,
});
Expand All @@ -296,7 +298,7 @@ export function buildAvailableModels(
description: getAutoModelDescription(
shouldShowPreviewModels,
useGemini31,
useGemini3_5Flash,
useLatestFlash,
),
},
];
Expand Down
20 changes: 19 additions & 1 deletion packages/cli/src/config/settingsSchema.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3524,7 +3524,24 @@ export const SETTINGS_SCHEMA_DEFINITIONS: Record<
type: 'object',
properties: {
useGemini3_1: { type: 'boolean' },
useGemini3_1FlashLite: { type: 'boolean' },
useLatestFlash: {
type: 'boolean',
description:
'Whether the latest GA Flash model (Gemini 3.8 Flash) is launched and active.',
},
useLatestFlashLite: {
type: 'boolean',
description:
'Whether the latest GA Flash Lite model (Gemini 3.5 Flash Lite) is launched and active.',
},
useGemini3_5Flash: {
type: 'boolean',
description: 'Deprecated alias for useLatestFlash.',
},
useGemini3_1FlashLite: {
type: 'boolean',
description: 'Deprecated alias for useLatestFlashLite.',
},
useCustomTools: { type: 'boolean' },
hasAccessToPreview: { type: 'boolean' },
requestedModels: {
Expand All @@ -3533,6 +3550,7 @@ export const SETTINGS_SCHEMA_DEFINITIONS: Record<
},
},
},

target: { type: 'string' },
},
},
Expand Down
17 changes: 11 additions & 6 deletions packages/cli/src/ui/components/ModelDialog.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,8 @@ export function ModelDialog({ onClose }: ModelDialogProps): React.JSX.Element {

const shouldShowPreviewModels = config?.getHasAccessToPreviewModel() ?? false;
const useGemini31 = config?.getGemini31LaunchedSync?.() ?? false;
const useGemini3_5Flash = config?.hasGemini35FlashGAAccess?.() ?? false;
const useLatestFlash = config?.hasLatestFlashGAAccess?.() ?? false;
const useLatestFlashLite = config?.hasLatestFlashLiteGAAccess?.() ?? false;
const selectedAuthType = settings.merged.security.auth.selectedType;
const useCustomToolModel =
useGemini31 && selectedAuthType === AuthType.USE_GEMINI;
Expand Down Expand Up @@ -130,7 +131,8 @@ export function ModelDialog({ onClose }: ModelDialogProps): React.JSX.Element {
.getModelConfigService()
.getAvailableModelOptions({
useGemini3_1: useGemini31,
useGemini3_5Flash,
useLatestFlash,
useLatestFlashLite,
useCustomTools: useCustomToolModel,
hasAccessToPreview: shouldShowPreviewModels,
hasAccessToProModel,
Expand Down Expand Up @@ -164,7 +166,7 @@ export function ModelDialog({ onClose }: ModelDialogProps): React.JSX.Element {
description: getAutoModelDescription(
shouldShowPreviewModels,
useGemini31,
useGemini3_5Flash,
useLatestFlash,
),
key: GEMINI_MODEL_ALIAS_AUTO,
},
Expand All @@ -184,7 +186,8 @@ export function ModelDialog({ onClose }: ModelDialogProps): React.JSX.Element {
shouldShowPreviewModels,
manualModelSelected,
useGemini31,
useGemini3_5Flash,
useLatestFlash,
useLatestFlashLite,
useCustomToolModel,
hasAccessToProModel,
]);
Expand All @@ -199,7 +202,8 @@ export function ModelDialog({ onClose }: ModelDialogProps): React.JSX.Element {
.getModelConfigService()
.getAvailableModelOptions({
useGemini3_1: useGemini31,
useGemini3_5Flash,
useLatestFlash,
useLatestFlashLite,
useCustomTools: useCustomToolModel,
hasAccessToPreview: shouldShowPreviewModels,
hasAccessToProModel,
Expand Down Expand Up @@ -292,7 +296,8 @@ export function ModelDialog({ onClose }: ModelDialogProps): React.JSX.Element {
}, [
shouldShowPreviewModels,
useGemini31,
useGemini3_5Flash,
useLatestFlash,
useLatestFlashLite,
useCustomToolModel,
hasAccessToProModel,
config,
Expand Down
5 changes: 3 additions & 2 deletions packages/cli/src/ui/hooks/useGeminiStream.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ import {
getPlanModeExitMessage,
UPDATE_TOPIC_TOOL_NAME,
TRUE_EMPTY_RESPONSE_MESSAGE,
DEFAULT_GEMINI_FLASH_MODEL,
} from '@google/gemini-cli-core';
import type { Part, PartListUnion } from '@google/genai';
import type { UseHistoryManagerReturn } from './useHistoryManager.js';
Expand Down Expand Up @@ -2645,7 +2646,7 @@ describe('useGeminiStream', () => {
mockAuthType,
undefined,
'gemini-2.5-pro',
'gemini-2.5-flash',
DEFAULT_GEMINI_FLASH_MODEL,
);
});
});
Expand Down Expand Up @@ -3882,7 +3883,7 @@ describe('useGeminiStream', () => {
expect.any(String),
undefined,
'gemini-2.5-pro',
'gemini-2.5-flash',
DEFAULT_GEMINI_FLASH_MODEL,
);
});

Expand Down
2 changes: 1 addition & 1 deletion packages/cli/src/ui/hooks/useQuotaAndFallback.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1245,7 +1245,7 @@ describe('useQuotaAndFallback', () => {
const lastCall = (mockHistoryManager.addItem as Mock).mock.calls[0][0];
expect(lastCall.type).toBe(MessageType.INFO);
expect(lastCall.text).toContain(
`Switched to fallback model gemini-2.5-flash`,
`Switched to fallback model ${DEFAULT_GEMINI_FLASH_MODEL}`,
);
});
});
Expand Down
Loading
Loading