Skip to content

Commit cd26d47

Browse files
authored
feat: add gemini support (#331)
1 parent d9a7994 commit cd26d47

File tree

3 files changed

+37
-1
lines changed

3 files changed

+37
-1
lines changed

apps/array/src/main/services/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@
33
* This file is auto-generated by vite-plugin-auto-services.ts
44
*/
55

6+

apps/array/src/shared/types/models.ts

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
export type ModelProvider = "anthropic" | "openai";
1+
export type ModelProvider = "anthropic" | "openai" | "gemini";
22

33
export type ModelProviderConfig = {
44
name: string;
@@ -18,6 +18,9 @@ export const MODEL_PROVIDERS: Record<ModelProvider, ModelProviderConfig> = {
1818
openai: {
1919
name: "OpenAI",
2020
},
21+
gemini: {
22+
name: "Google",
23+
},
2124
};
2225

2326
export const AVAILABLE_MODELS: ModelOption[] = [
@@ -46,6 +49,18 @@ export const AVAILABLE_MODELS: ModelOption[] = [
4649
provider: "openai",
4750
enabled: true,
4851
},
52+
{
53+
id: "gemini/gemini-3-pro-preview",
54+
name: "Gemini 3.0 Pro",
55+
provider: "gemini",
56+
enabled: true,
57+
},
58+
{
59+
id: "gemini/gemini-3-flash-preview",
60+
name: "Gemini 3.0 Flash",
61+
provider: "gemini",
62+
enabled: true,
63+
},
4964
];
5065

5166
export const DEFAULT_MODEL = "claude-opus-4-5";
@@ -71,5 +86,11 @@ export function getModelsByProvider(): Record<
7186
(m) => m.provider === "openai" && m.enabled,
7287
),
7388
},
89+
gemini: {
90+
...MODEL_PROVIDERS.gemini,
91+
models: AVAILABLE_MODELS.filter(
92+
(m) => m.provider === "gemini" && m.enabled,
93+
),
94+
},
7495
};
7596
}

packages/agent/src/agent.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,7 @@ export class Agent {
140140
process.env.ANTHROPIC_BASE_URL = gatewayUrl;
141141
process.env.ANTHROPIC_AUTH_TOKEN = apiKey;
142142
this.ensureOpenAIGatewayEnv(gatewayUrl, apiKey);
143+
this.ensureGeminiGatewayEnv(gatewayUrl, apiKey);
143144
} catch (error) {
144145
this.logger.error("Failed to configure LLM gateway", error);
145146
throw error;
@@ -528,6 +529,19 @@ This PR implements the changes described in the task.`;
528529
}
529530
}
530531

532+
private ensureGeminiGatewayEnv(gatewayUrl?: string, token?: string): void {
533+
const resolvedGatewayUrl = gatewayUrl || process.env.ANTHROPIC_BASE_URL;
534+
const resolvedToken = token || process.env.ANTHROPIC_AUTH_TOKEN;
535+
536+
if (resolvedGatewayUrl) {
537+
process.env.GEMINI_BASE_URL = resolvedGatewayUrl;
538+
}
539+
540+
if (resolvedToken) {
541+
process.env.GEMINI_API_KEY = resolvedToken;
542+
}
543+
}
544+
531545
async runTaskCloud(
532546
taskId: string,
533547
taskRunId: string,

0 commit comments

Comments
 (0)