@@ -81,7 +81,7 @@ func runInteractiveConfig() {
8181
8282 providerPrompt := & survey.Select {
8383 Message : "Choose a provider:" ,
84- Options : []string {"openai" , "copilot" , "anthropic" },
84+ Options : []string {"openai" , "copilot" , "anthropic" , "gemini" },
8585 Default : currentProvider ,
8686 }
8787 var selectedProvider string
@@ -152,8 +152,8 @@ func runInteractiveConfig() {
152152 fmt .Printf ("Language set to: %s\n " , langValue )
153153 }
154154
155- // API key configuration - skip for copilot and anthropic
156- if selectedProvider != "copilot" && selectedProvider != "anthropic" {
155+ // API key configuration - skip for copilot, anthropic and gemini
156+ if selectedProvider != "copilot" && selectedProvider != "anthropic" && selectedProvider != "gemini" {
157157 apiKeyPrompt := & survey.Input {
158158 Message : fmt .Sprintf ("Enter API Key for %s:" , selectedProvider ),
159159 }
@@ -173,12 +173,15 @@ func runInteractiveConfig() {
173173 }
174174 } else if selectedProvider == "anthropic" {
175175 fmt .Println ("Anthropic provider uses Claude Code CLI - no API key needed." )
176+ } else if selectedProvider == "gemini" {
177+ fmt .Println ("Gemini provider uses Gemini CLI - no API key needed." )
176178 }
177179
178180 availableModels := map [string ][]string {
179181 "openai" : {},
180182 "copilot" : {},
181183 "anthropic" : {},
184+ "gemini" : {},
182185 }
183186
184187 modelDisplayToID := map [string ]string {}
@@ -213,6 +216,12 @@ func runInteractiveConfig() {
213216 availableModels ["anthropic" ] = append (availableModels ["anthropic" ], display )
214217 modelDisplayToID [display ] = m .APIModel
215218 }
219+ case "gemini" :
220+ for _ , m := range models .GeminiModels {
221+ display := fmt .Sprintf ("%s (%s)" , m .Name , m .APIModel )
222+ availableModels ["gemini" ] = append (availableModels ["gemini" ], display )
223+ modelDisplayToID [display ] = m .APIModel
224+ }
216225 }
217226
218227 modelPrompt := & survey.Select {
@@ -223,7 +232,7 @@ func runInteractiveConfig() {
223232 // Try to set the default to the current model if possible
224233 isValidDefault := false
225234 currentDisplay := ""
226- if selectedProvider == "openai" || selectedProvider == "anthropic" || selectedProvider == "copilot" {
235+ if selectedProvider == "openai" || selectedProvider == "anthropic" || selectedProvider == "copilot" || selectedProvider == "gemini" {
227236 for display , id := range modelDisplayToID {
228237 if id == currentModel || display == currentModel {
229238 isValidDefault = true
@@ -252,7 +261,7 @@ func runInteractiveConfig() {
252261 }
253262
254263 selectedModel := selectedDisplay
255- if selectedProvider == "openai" || selectedProvider == "anthropic" || selectedProvider == "copilot" {
264+ if selectedProvider == "openai" || selectedProvider == "anthropic" || selectedProvider == "copilot" || selectedProvider == "gemini" {
256265 selectedModel = modelDisplayToID [selectedDisplay ]
257266 }
258267
@@ -265,8 +274,8 @@ func runInteractiveConfig() {
265274 fmt .Printf ("Model set to: %s\n " , selectedModel )
266275 }
267276
268- // Number of suggestions configuration for anthropic
269- if selectedProvider == "anthropic" {
277+ // Number of suggestions configuration for anthropic and gemini
278+ if selectedProvider == "anthropic" || selectedProvider == "gemini" {
270279 numSuggestionsPrompt := & survey.Input {
271280 Message : "Number of commit message suggestions (default: 10):" ,
272281 Default : "10" ,
@@ -290,8 +299,8 @@ func runInteractiveConfig() {
290299 // Get current endpoint
291300 currentEndpoint , _ := config .GetEndpoint ()
292301
293- // Endpoint configuration prompt - skip for anthropic since it uses CLI
294- if selectedProvider != "anthropic" {
302+ // Endpoint configuration prompt - skip for anthropic and gemini since they use CLI
303+ if selectedProvider != "anthropic" && selectedProvider != "gemini" {
295304 endpointPrompt := & survey.Input {
296305 Message : "Enter custom endpoint URL (leave empty for default):" ,
297306 Default : currentEndpoint ,
0 commit comments