Files
nofx/mcp/config.go
T
2025-12-08 01:43:22 +08:00

72 lines
1.5 KiB
Go

package mcp
import (
"net/http"
"os"
"strconv"
"time"
"nofx/logger"
)
// Config client configuration (centralized management of all configurations)
type Config struct {
// Provider configuration
Provider string
APIKey string
BaseURL string
Model string
// Behavior configuration
MaxTokens int
Temperature float64
UseFullURL bool
// Retry configuration
MaxRetries int
RetryWaitBase time.Duration
RetryableErrors []string
// Timeout configuration
Timeout time.Duration
// Dependency injection
Logger Logger
HTTPClient *http.Client
}
// DefaultConfig returns default configuration
func DefaultConfig() *Config {
return &Config{
// Default values
MaxTokens: getEnvInt("AI_MAX_TOKENS", 2000),
Temperature: MCPClientTemperature,
MaxRetries: MaxRetryTimes,
RetryWaitBase: 2 * time.Second,
Timeout: DefaultTimeout,
RetryableErrors: retryableErrors,
// Default dependencies (use global logger)
Logger: logger.NewMCPLogger(),
HTTPClient: &http.Client{Timeout: DefaultTimeout},
}
}
// getEnvInt reads integer from environment variable, returns default value if failed
func getEnvInt(key string, defaultValue int) int {
if val := os.Getenv(key); val != "" {
if parsed, err := strconv.Atoi(val); err == nil && parsed > 0 {
return parsed
}
}
return defaultValue
}
// getEnvString reads string from environment variable, returns default value if empty
func getEnvString(key string, defaultValue string) string {
if val := os.Getenv(key); val != "" {
return val
}
return defaultValue
}