Venice's API doesn't support certain OpenAI-compatible parameters that Clawdbot sends by default: - `store`: Venice returns HTTP 400 with no body when this is present - `developer` role: Not supported by Venice's API This adds VENICE_COMPAT settings (supportsStore: false, supportsDeveloperRole: false) to all Venice model definitions, both from the static catalog and dynamically discovered models. Fixes issues reported in PR #1666 where users experienced silent failures (HTTP 400, no body) when using Venice models. Co-authored-by: jonisjongithub <jonisjongithub@users.noreply.github.com> Co-authored-by: Clawdbot <bot@clawd.bot>
41 lines
1.6 KiB
Swift
41 lines
1.6 KiB
Swift
import Foundation
|
|
|
|
struct SettingsHostPort: Equatable {
|
|
var host: String
|
|
var port: Int
|
|
}
|
|
|
|
enum SettingsNetworkingHelpers {
|
|
static func parseHostPort(from address: String) -> SettingsHostPort? {
|
|
let trimmed = address.trimmingCharacters(in: .whitespacesAndNewlines)
|
|
guard !trimmed.isEmpty else { return nil }
|
|
|
|
if trimmed.hasPrefix("["),
|
|
let close = trimmed.firstIndex(of: "]"),
|
|
close < trimmed.endIndex
|
|
{
|
|
let host = String(trimmed[trimmed.index(after: trimmed.startIndex)..<close])
|
|
let portStart = trimmed.index(after: close)
|
|
guard portStart < trimmed.endIndex, trimmed[portStart] == ":" else { return nil }
|
|
let portString = String(trimmed[trimmed.index(after: portStart)...])
|
|
guard let port = Int(portString) else { return nil }
|
|
return SettingsHostPort(host: host, port: port)
|
|
}
|
|
|
|
guard let colon = trimmed.lastIndex(of: ":") else { return nil }
|
|
let host = String(trimmed[..<colon])
|
|
let portString = String(trimmed[trimmed.index(after: colon)...])
|
|
guard !host.isEmpty, let port = Int(portString) else { return nil }
|
|
return SettingsHostPort(host: host, port: port)
|
|
}
|
|
|
|
static func httpURLString(host: String?, port: Int?, fallback: String) -> String {
|
|
if let host, let port {
|
|
let needsBrackets = host.contains(":") && !host.hasPrefix("[") && !host.hasSuffix("]")
|
|
let hostPart = needsBrackets ? "[\(host)]" : host
|
|
return "http://\(hostPart):\(port)"
|
|
}
|
|
return "http://\(fallback)"
|
|
}
|
|
}
|