Initial commit
This commit is contained in:
90
oAI/Models/Settings.swift
Normal file
90
oAI/Models/Settings.swift
Normal file
@@ -0,0 +1,90 @@
|
||||
//
|
||||
// Settings.swift
|
||||
// oAI
|
||||
//
|
||||
// Application settings and configuration
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
struct Settings: Codable {
|
||||
// Provider settings
|
||||
var defaultProvider: Provider
|
||||
var openrouterAPIKey: String?
|
||||
var anthropicAPIKey: String?
|
||||
var openaiAPIKey: String?
|
||||
var ollamaBaseURL: String
|
||||
|
||||
// Model settings
|
||||
var defaultModel: String?
|
||||
var streamEnabled: Bool
|
||||
var maxTokens: Int
|
||||
var systemPrompt: String?
|
||||
|
||||
// Feature flags
|
||||
var onlineMode: Bool
|
||||
var memoryEnabled: Bool
|
||||
var mcpEnabled: Bool
|
||||
|
||||
// Web search
|
||||
var searchProvider: SearchProvider
|
||||
var googleAPIKey: String?
|
||||
var googleSearchEngineID: String?
|
||||
|
||||
// UI
|
||||
var costWarningThreshold: Double
|
||||
|
||||
enum Provider: String, Codable, CaseIterable {
|
||||
case openrouter
|
||||
case anthropic
|
||||
case openai
|
||||
case ollama
|
||||
|
||||
var displayName: String {
|
||||
rawValue.capitalized
|
||||
}
|
||||
|
||||
var iconName: String {
|
||||
switch self {
|
||||
case .openrouter: return "network"
|
||||
case .anthropic: return "brain"
|
||||
case .openai: return "sparkles"
|
||||
case .ollama: return "server.rack"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
enum SearchProvider: String, Codable, CaseIterable {
|
||||
case anthropicNative = "anthropic_native"
|
||||
case duckduckgo
|
||||
case google
|
||||
|
||||
var displayName: String {
|
||||
switch self {
|
||||
case .anthropicNative: return "Anthropic Native"
|
||||
case .duckduckgo: return "DuckDuckGo"
|
||||
case .google: return "Google"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Default settings
|
||||
static let `default` = Settings(
|
||||
defaultProvider: .openrouter,
|
||||
openrouterAPIKey: nil,
|
||||
anthropicAPIKey: nil,
|
||||
openaiAPIKey: nil,
|
||||
ollamaBaseURL: "http://localhost:11434",
|
||||
defaultModel: nil,
|
||||
streamEnabled: true,
|
||||
maxTokens: 4096,
|
||||
systemPrompt: nil,
|
||||
onlineMode: false,
|
||||
memoryEnabled: true,
|
||||
mcpEnabled: false,
|
||||
searchProvider: .duckduckgo,
|
||||
googleAPIKey: nil,
|
||||
googleSearchEngineID: nil,
|
||||
costWarningThreshold: 1.0
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user