@@ -32,9 +32,11 @@ var getCmd = &cobra.Command{
3232 fmt .Println ("Error getting endpoint:" , err )
3333 os .Exit (1 )
3434 }
35+ language := config .GetLanguage ()
3536 fmt .Printf ("Active Provider: %s\n " , provider )
3637 fmt .Printf ("Model: %s\n " , model )
3738 fmt .Printf ("Endpoint: %s\n " , endpoint )
39+ fmt .Printf ("Language: %s\n " , language )
3840 },
3941}
4042
@@ -79,7 +81,7 @@ func runInteractiveConfig() {
7981
8082 providerPrompt := & survey.Select {
8183 Message : "Choose a provider:" ,
82- Options : []string {"openai" , "copilot" },
84+ Options : []string {"openai" , "copilot" , "anthropic" },
8385 Default : currentProvider ,
8486 }
8587 var selectedProvider string
@@ -99,7 +101,42 @@ func runInteractiveConfig() {
99101 currentModel = ""
100102 }
101103
102- if selectedProvider != "copilot" {
104+ // Language configuration
105+ currentLanguage := config .GetLanguage ()
106+ languagePrompt := & survey.Select {
107+ Message : "Choose a language for commit messages:" ,
108+ Options : []string {"English (en)" , "Español (es)" },
109+ Default : func () string {
110+ if currentLanguage == "es" {
111+ return "Español (es)"
112+ }
113+ return "English (en)"
114+ }(),
115+ }
116+ var selectedLanguage string
117+ err = survey .AskOne (languagePrompt , & selectedLanguage )
118+ if err != nil {
119+ fmt .Println (err .Error ())
120+ return
121+ }
122+
123+ // Extract language code from selection
124+ langCode := "en"
125+ if selectedLanguage == "Español (es)" {
126+ langCode = "es"
127+ }
128+
129+ if langCode != currentLanguage {
130+ err := config .SetLanguage (langCode )
131+ if err != nil {
132+ fmt .Printf ("Error setting language: %v\n " , err )
133+ return
134+ }
135+ fmt .Printf ("Language set to: %s\n " , langCode )
136+ }
137+
138+ // API key configuration - skip for copilot and anthropic
139+ if selectedProvider != "copilot" && selectedProvider != "anthropic" {
103140 apiKeyPrompt := & survey.Input {
104141 Message : fmt .Sprintf ("Enter API Key for %s:" , selectedProvider ),
105142 }
@@ -117,21 +154,31 @@ func runInteractiveConfig() {
117154 }
118155 fmt .Printf ("API key for %s set.\n " , selectedProvider )
119156 }
157+ } else if selectedProvider == "anthropic" {
158+ fmt .Println ("Anthropic provider uses Claude Code CLI - no API key needed." )
120159 }
121160
122- // Dynamically generate available models for OpenAI
161+ // Dynamically generate available models
123162 availableModels := map [string ][]string {
124- "openai" : {},
125- "copilot" : {"openai/gpt-5-mini" }, // TODO: update if copilot models are dynamic
163+ "openai" : {},
164+ "copilot" : {"openai/gpt-5-mini" },
165+ "anthropic" : {},
126166 }
127167
128168 modelDisplayToID := map [string ]string {}
169+
129170 if selectedProvider == "openai" {
130171 for id , m := range models .OpenAIModels {
131172 display := fmt .Sprintf ("%s (%s)" , m .Name , string (id ))
132173 availableModels ["openai" ] = append (availableModels ["openai" ], display )
133174 modelDisplayToID [display ] = string (id )
134175 }
176+ } else if selectedProvider == "anthropic" {
177+ for _ , m := range models .AnthropicModels {
178+ display := fmt .Sprintf ("%s (%s)" , m .Name , m .APIModel )
179+ availableModels ["anthropic" ] = append (availableModels ["anthropic" ], display )
180+ modelDisplayToID [display ] = m .APIModel
181+ }
135182 }
136183
137184 modelPrompt := & survey.Select {
@@ -142,7 +189,7 @@ func runInteractiveConfig() {
142189 // Try to set the default to the current model if possible
143190 isValidDefault := false
144191 currentDisplay := ""
145- if selectedProvider == "openai" {
192+ if selectedProvider == "openai" || selectedProvider == "anthropic" {
146193 for display , id := range modelDisplayToID {
147194 if id == currentModel || display == currentModel {
148195 isValidDefault = true
@@ -171,7 +218,7 @@ func runInteractiveConfig() {
171218 }
172219
173220 selectedModel := selectedDisplay
174- if selectedProvider == "openai" {
221+ if selectedProvider == "openai" || selectedProvider == "anthropic" {
175222 selectedModel = modelDisplayToID [selectedDisplay ]
176223 }
177224
@@ -184,31 +231,55 @@ func runInteractiveConfig() {
184231 fmt .Printf ("Model set to: %s\n " , selectedModel )
185232 }
186233
234+ // Number of suggestions configuration for anthropic
235+ if selectedProvider == "anthropic" {
236+ numSuggestionsPrompt := & survey.Input {
237+ Message : "Number of commit message suggestions (default: 10):" ,
238+ Default : "10" ,
239+ }
240+ var numSuggestions string
241+ err := survey .AskOne (numSuggestionsPrompt , & numSuggestions )
242+ if err != nil {
243+ fmt .Println (err .Error ())
244+ return
245+ }
246+ if numSuggestions != "" {
247+ err := config .SetNumSuggestions (selectedProvider , numSuggestions )
248+ if err != nil {
249+ fmt .Printf ("Error setting num_suggestions: %v\n " , err )
250+ return
251+ }
252+ fmt .Printf ("Number of suggestions set to: %s\n " , numSuggestions )
253+ }
254+ }
255+
187256 // Get current endpoint
188257 currentEndpoint , _ := config .GetEndpoint ()
189258
190- // Endpoint configuration prompt
191- endpointPrompt := & survey.Input {
192- Message : "Enter custom endpoint URL (leave empty for default):" ,
193- Default : currentEndpoint ,
194- }
195- var endpoint string
196- err = survey .AskOne (endpointPrompt , & endpoint , survey .WithValidator (validateEndpointURL ))
197- if err != nil {
198- fmt .Println (err .Error ())
199- return
200- }
201-
202- // Only set endpoint if it's different from current
203- if endpoint != currentEndpoint && endpoint != "" {
204- err := config .SetEndpoint (selectedProvider , endpoint )
259+ // Endpoint configuration prompt - skip for anthropic since it uses CLI
260+ if selectedProvider != "anthropic" {
261+ endpointPrompt := & survey.Input {
262+ Message : "Enter custom endpoint URL (leave empty for default):" ,
263+ Default : currentEndpoint ,
264+ }
265+ var endpoint string
266+ err = survey .AskOne (endpointPrompt , & endpoint , survey .WithValidator (validateEndpointURL ))
205267 if err != nil {
206- fmt .Printf ( "Error setting endpoint: %v \n " , err )
268+ fmt .Println ( err . Error () )
207269 return
208270 }
209- fmt .Printf ("Endpoint set to: %s\n " , endpoint )
210- } else if endpoint == "" {
211- fmt .Println ("Using default endpoint for provider" )
271+
272+ // Only set endpoint if it's different from current
273+ if endpoint != currentEndpoint && endpoint != "" {
274+ err := config .SetEndpoint (selectedProvider , endpoint )
275+ if err != nil {
276+ fmt .Printf ("Error setting endpoint: %v\n " , err )
277+ return
278+ }
279+ fmt .Printf ("Endpoint set to: %s\n " , endpoint )
280+ } else if endpoint == "" {
281+ fmt .Println ("Using default endpoint for provider" )
282+ }
212283 }
213284}
214285
0 commit comments