diff --git a/Sources/ManaLLM/LLMRouter.swift b/Sources/ManaLLM/LLMRouter.swift index a53b6e6..8890fa4 100644 --- a/Sources/ManaLLM/LLMRouter.swift +++ b/Sources/ManaLLM/LLMRouter.swift @@ -22,18 +22,28 @@ public actor LLMRouter { /// Apps mit weniger Backends überschreiben das. public static let shared = LLMRouter() - private let appleFM = AppleFMBackend() - private let noOp = NoOpBackend() - private let gemmaE2B = GemmaBackend(variant: .e2b) - private let gemmaE4B = GemmaBackend(variant: .e4b) + private let appleFM: AppleFMBackend + private let noOp: NoOpBackend + private let gemmaE2B: GemmaBackend + private let gemmaE4B: GemmaBackend /// Priority-Reihenfolge der Backends. Apps können das je nach /// Use-Case justieren — z.B. moodlit will Gemma E2B bevor es FM /// (Creative-Mapping), pageta will FM zuerst (Summary). private var preferred: [LLMBackendID] - public init(preferred: [LLMBackendID] = [.appleFM, .gemmaE2B, .gemmaE4B, .noOp]) { + /// `gemmaAllowsCellular` reicht die App-Einstellung an die + /// Gemma-Backends durch — Default `false` (WiFi-only). Bei + /// Toggle-Change muss App den Router neu instanziieren. + public init( + preferred: [LLMBackendID] = [.appleFM, .gemmaE2B, .gemmaE4B, .noOp], + gemmaAllowsCellular: Bool = false + ) { self.preferred = preferred + self.appleFM = AppleFMBackend() + self.noOp = NoOpBackend() + self.gemmaE2B = GemmaBackend(variant: .e2b, allowsCellular: gemmaAllowsCellular) + self.gemmaE4B = GemmaBackend(variant: .e4b, allowsCellular: gemmaAllowsCellular) } public func setPreferred(_ ids: [LLMBackendID]) {