add ai feature

This commit is contained in:
2025-11-05 16:06:09 +08:00
parent 42bc9aff42
commit 13ca7ddbed
33 changed files with 2194 additions and 30 deletions

41
internal/ai/config.go Normal file
View File

@@ -0,0 +1,41 @@
package ai
import (
"errors"
"fmt"
"os"
)
var apiKeyEnvVars = []string{
"GOOGLE_API_KEY",
"GEMINI_API_KEY",
"RENAMER_AI_KEY",
}
// Credentials encapsulates the values required to authenticate with the AI provider.
type Credentials struct {
APIKey string
}
// LoadCredentials returns the AI credentials sourced from environment variables.
func LoadCredentials() (Credentials, error) {
for _, env := range apiKeyEnvVars {
if key, ok := os.LookupEnv(env); ok && key != "" {
return Credentials{APIKey: key}, nil
}
}
return Credentials{}, errors.New("AI provider key missing; set GOOGLE_API_KEY (recommended), GEMINI_API_KEY, or RENAMER_AI_KEY")
}
// MaskedCredentials returns a redacted view of the credentials for logging purposes.
func MaskedCredentials(creds Credentials) string {
if creds.APIKey == "" {
return "(empty)"
}
if len(creds.APIKey) <= 6 {
return "***"
}
return fmt.Sprintf("%s***", creds.APIKey[:3])
}