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>
57 lines
1.8 KiB
Swift
57 lines
1.8 KiB
Swift
import ClawdbotProtocol
|
|
import Foundation
|
|
import Testing
|
|
@testable import Clawdbot
|
|
|
|
@Suite(.serialized) struct VoiceWakeGlobalSettingsSyncTests {
|
|
@Test func appliesVoiceWakeChangedEventToAppState() async {
|
|
let previous = await MainActor.run { AppStateStore.shared.swabbleTriggerWords }
|
|
|
|
await MainActor.run {
|
|
AppStateStore.shared.applyGlobalVoiceWakeTriggers(["before"])
|
|
}
|
|
|
|
let payload = ClawdbotProtocol.AnyCodable(["triggers": ["clawd", "computer"]])
|
|
let evt = EventFrame(
|
|
type: "event",
|
|
event: "voicewake.changed",
|
|
payload: payload,
|
|
seq: nil,
|
|
stateversion: nil)
|
|
|
|
await VoiceWakeGlobalSettingsSync.shared.handle(push: .event(evt))
|
|
|
|
let updated = await MainActor.run { AppStateStore.shared.swabbleTriggerWords }
|
|
#expect(updated == ["clawd", "computer"])
|
|
|
|
await MainActor.run {
|
|
AppStateStore.shared.applyGlobalVoiceWakeTriggers(previous)
|
|
}
|
|
}
|
|
|
|
@Test func ignoresVoiceWakeChangedEventWithInvalidPayload() async {
|
|
let previous = await MainActor.run { AppStateStore.shared.swabbleTriggerWords }
|
|
|
|
await MainActor.run {
|
|
AppStateStore.shared.applyGlobalVoiceWakeTriggers(["before"])
|
|
}
|
|
|
|
let payload = ClawdbotProtocol.AnyCodable(["unexpected": 123])
|
|
let evt = EventFrame(
|
|
type: "event",
|
|
event: "voicewake.changed",
|
|
payload: payload,
|
|
seq: nil,
|
|
stateversion: nil)
|
|
|
|
await VoiceWakeGlobalSettingsSync.shared.handle(push: .event(evt))
|
|
|
|
let updated = await MainActor.run { AppStateStore.shared.swabbleTriggerWords }
|
|
#expect(updated == ["before"])
|
|
|
|
await MainActor.run {
|
|
AppStateStore.shared.applyGlobalVoiceWakeTriggers(previous)
|
|
}
|
|
}
|
|
}
|