MCPcopy Create free account
hub / github.com/diillson/chatcli / resolveLocalAuth

Method resolveLocalAuth

cli/command_handler_connect.go:258–299  ·  view source on GitHub ↗

resolveLocalAuth reads the local auth store and returns the API key/OAuth token.

(ctx context.Context, provider string)

Source from the content-addressed store, hash-verified

256
257// resolveLocalAuth reads the local auth store and returns the API key/OAuth token.
258func (ch *CommandHandler) resolveLocalAuth(ctx context.Context, provider string) (apiKey string, resolvedProvider string, err error) {
259 ctx, cancel := context.WithTimeout(ctx, 10*time.Second)
260 defer cancel()
261
262 if provider != "" {
263 authProvider, ok := llmProviderToAuthProvider(provider)
264 if !ok {
265 return "", "", fmt.Errorf(
266 "--use-local-auth only supports OAuth providers (CLAUDEAI, OPENAI, COPILOT). "+
267 "Provider '%s' requires --llm-key with an API key instead", provider)
268 }
269
270 resolved, err := auth.ResolveAuth(ctx, authProvider, ch.cli.logger)
271 if err != nil {
272 return "", "", fmt.Errorf("no local credentials found for %s: %w\n"+
273 "Run '/auth login %s' first", provider, err, string(authProvider))
274 }
275 return resolved.APIKey, provider, nil
276 }
277
278 // No provider specified: try each OAuth provider in order
279 for _, candidate := range []struct {
280 authProvider auth.ProviderID
281 llmProvider string
282 }{
283 {auth.ProviderAnthropic, "CLAUDEAI"},
284 {auth.ProviderOpenAI, "OPENAI"},
285 {auth.ProviderGitHubCopilot, "COPILOT"},
286 } {
287 resolved, err := auth.ResolveAuth(ctx, candidate.authProvider, ch.cli.logger)
288 if err == nil && resolved.APIKey != "" {
289 ch.cli.logger.Info("Auto-resolved local auth",
290 zap.String("provider", candidate.llmProvider),
291 zap.String("source", resolved.Source),
292 zap.String("mode", string(resolved.Mode)),
293 )
294 return resolved.APIKey, candidate.llmProvider, nil
295 }
296 }
297
298 return "", "", fmt.Errorf("no local OAuth credentials found. Run '/auth login anthropic' or '/auth login openai-codex' or '/auth login github-copilot' first")
299}
300
301// llmProviderToAuthProvider maps LLMManager provider names to auth.ProviderID.
302func llmProviderToAuthProvider(provider string) (auth.ProviderID, bool) {

Callers 1

handleConnectCommandMethod · 0.95

Calls 5

ResolveAuthFunction · 0.92
ErrorfMethod · 0.80
InfoMethod · 0.65
StringMethod · 0.45

Tested by

no test coverage detected