1+import type { ModelInfo } from "../model.js"
2+3+// Gemini CLI models with free tier pricing (all $0)
4+export type GeminiCliModelId = keyof typeof geminiCliModels
5+6+export const geminiCliDefaultModelId: GeminiCliModelId = "gemini-2.0-flash-001"
7+8+export const geminiCliModels = {
9+"gemini-2.0-flash-001": {
10+maxTokens: 8192,
11+contextWindow: 1_048_576,
12+supportsImages: true,
13+supportsPromptCache: false,
14+inputPrice: 0,
15+outputPrice: 0,
16+},
17+"gemini-2.0-flash-thinking-exp-01-21": {
18+maxTokens: 65_536,
19+contextWindow: 1_048_576,
20+supportsImages: true,
21+supportsPromptCache: false,
22+inputPrice: 0,
23+outputPrice: 0,
24+},
25+"gemini-2.0-flash-thinking-exp-1219": {
26+maxTokens: 8192,
27+contextWindow: 32_767,
28+supportsImages: true,
29+supportsPromptCache: false,
30+inputPrice: 0,
31+outputPrice: 0,
32+},
33+"gemini-2.0-flash-exp": {
34+maxTokens: 8192,
35+contextWindow: 1_048_576,
36+supportsImages: true,
37+supportsPromptCache: false,
38+inputPrice: 0,
39+outputPrice: 0,
40+},
41+"gemini-1.5-flash-002": {
42+maxTokens: 8192,
43+contextWindow: 1_048_576,
44+supportsImages: true,
45+supportsPromptCache: false,
46+inputPrice: 0,
47+outputPrice: 0,
48+},
49+"gemini-1.5-flash-exp-0827": {
50+maxTokens: 8192,
51+contextWindow: 1_048_576,
52+supportsImages: true,
53+supportsPromptCache: false,
54+inputPrice: 0,
55+outputPrice: 0,
56+},
57+"gemini-1.5-flash-8b-exp-0827": {
58+maxTokens: 8192,
59+contextWindow: 1_048_576,
60+supportsImages: true,
61+supportsPromptCache: false,
62+inputPrice: 0,
63+outputPrice: 0,
64+},
65+"gemini-1.5-pro-002": {
66+maxTokens: 8192,
67+contextWindow: 2_097_152,
68+supportsImages: true,
69+supportsPromptCache: false,
70+inputPrice: 0,
71+outputPrice: 0,
72+},
73+"gemini-1.5-pro-exp-0827": {
74+maxTokens: 8192,
75+contextWindow: 2_097_152,
76+supportsImages: true,
77+supportsPromptCache: false,
78+inputPrice: 0,
79+outputPrice: 0,
80+},
81+"gemini-exp-1206": {
82+maxTokens: 8192,
83+contextWindow: 2_097_152,
84+supportsImages: true,
85+supportsPromptCache: false,
86+inputPrice: 0,
87+outputPrice: 0,
88+},
89+"gemini-2.5-flash": {
90+maxTokens: 64_000,
91+contextWindow: 1_048_576,
92+supportsImages: true,
93+supportsPromptCache: false,
94+inputPrice: 0,
95+outputPrice: 0,
96+maxThinkingTokens: 24_576,
97+supportsReasoningBudget: true,
98+},
99+"gemini-2.5-pro": {
100+maxTokens: 64_000,
101+contextWindow: 1_048_576,
102+supportsImages: true,
103+supportsPromptCache: false,
104+inputPrice: 0,
105+outputPrice: 0,
106+maxThinkingTokens: 32_768,
107+supportsReasoningBudget: true,
108+requiredReasoningBudget: true,
109+},
110+} as const satisfies Record<string, ModelInfo>