diff --git a/src/agent/modify.ts b/src/agent/modify.ts index 22d8103..0a57731 100644 --- a/src/agent/modify.ts +++ b/src/agent/modify.ts @@ -27,6 +27,7 @@ function buildModelSettings( const isOpenAI = modelHandle.startsWith("openai/"); const isAnthropic = modelHandle.startsWith("anthropic/"); const isGoogleAI = modelHandle.startsWith("google_ai/"); + const isGoogleVertex = modelHandle.startsWith("google_vertex/"); const isOpenRouter = modelHandle.startsWith("openrouter/"); if (isOpenAI || isOpenRouter) { @@ -83,7 +84,25 @@ function buildModelSettings( return googleSettings; } - // For unknown providers (e.g., openrouter), return generic settings with parallel_tool_calls + if (isGoogleVertex) { + // Vertex AI uses the same Google provider on the backend; only the handle differs. + const googleVertexSettings: Record = { + provider_type: "google_ai", + parallel_tool_calls: true, + }; + if (updateArgs?.thinking_budget !== undefined) { + (googleVertexSettings as Record).thinking_config = { + thinking_budget: updateArgs.thinking_budget as number, + }; + } + if (typeof updateArgs?.temperature === "number") { + (googleVertexSettings as Record).temperature = + updateArgs.temperature as number; + } + return googleVertexSettings; + } + + // For unknown providers, return generic settings with parallel_tool_calls return { parallel_tool_calls: true }; } diff --git a/src/models.json b/src/models.json index 91d6549..6903b4b 100644 --- a/src/models.json +++ b/src/models.json @@ -326,5 +326,12 @@ "label": "o4-mini", "description": "OpenAI's latest o-series reasoning model", "updateArgs": { "context_window": 180000 } + }, + { + "id": "gemini-3-vertex", + "handle": "google_vertex/gemini-3-pro-preview", + "label": "Gemini 3 Pro (Vertex AI)", + "description": "Google's smartest Gemini 3 Pro model on Vertex AI", + "updateArgs": { "context_window": 180000, "temperature": 1.0 } } ]