diff --git a/packages/types/src/provider-settings.ts b/packages/types/src/provider-settings.ts index 15833e00c4..d4a8a6da2f 100644 --- a/packages/types/src/provider-settings.ts +++ b/packages/types/src/provider-settings.ts @@ -220,6 +220,8 @@ const geminiSchema = apiModelIdProviderModelSchema.extend({ googleGeminiBaseUrl: z.string().optional(), enableUrlContext: z.boolean().optional(), enableGrounding: z.boolean().optional(), + enableStructuredOutput: z.boolean().optional(), + enableCodeExecution: z.boolean().optional(), }) const geminiCliSchema = apiModelIdProviderModelSchema.extend({ diff --git a/src/api/providers/gemini.ts b/src/api/providers/gemini.ts index 5e547edbdc..4057f44743 100644 --- a/src/api/providers/gemini.ts +++ b/src/api/providers/gemini.ts @@ -78,6 +78,18 @@ export class GeminiHandler extends BaseProvider implements SingleCompletionHandl tools.push({ googleSearch: {} }) } + if (this.options.enableStructuredOutput) { + // Structured output configuration + // This would typically be configured with response schemas + // For now, we're adding the capability placeholder + tools.push({ responseSchema: {} }) + } + + if (this.options.enableCodeExecution) { + // Code execution tool configuration + tools.push({ codeExecution: {} }) + } + const config: GenerateContentConfig = { systemInstruction, httpOptions: this.options.googleGeminiBaseUrl ? { baseUrl: this.options.googleGeminiBaseUrl } : undefined, @@ -210,6 +222,12 @@ export class GeminiHandler extends BaseProvider implements SingleCompletionHandl if (this.options.enableGrounding) { tools.push({ googleSearch: {} }) } + if (this.options.enableStructuredOutput) { + tools.push({ responseSchema: {} }) + } + if (this.options.enableCodeExecution) { + tools.push({ codeExecution: {} }) + } const promptConfig: GenerateContentConfig = { httpOptions: this.options.googleGeminiBaseUrl ? { baseUrl: this.options.googleGeminiBaseUrl } diff --git a/webview-ui/src/components/settings/providers/Gemini.tsx b/webview-ui/src/components/settings/providers/Gemini.tsx index ec2e19353c..85bbf65193 100644 --- a/webview-ui/src/components/settings/providers/Gemini.tsx +++ b/webview-ui/src/components/settings/providers/Gemini.tsx @@ -96,6 +96,28 @@ export const Gemini = ({ apiConfiguration, setApiConfigurationField, fromWelcome