Runtime: delay restart inside actor; log RPC unexpected payload
parent
1bbb424322
commit
024a823c78
|
|
@ -122,7 +122,7 @@ actor AgentRPC {
|
||||||
if let err = parsed["error"] as? String {
|
if let err = parsed["error"] as? String {
|
||||||
return (false, nil, err)
|
return (false, nil, err)
|
||||||
}
|
}
|
||||||
return (false, nil, "rpc returned unexpected response: \(line)")
|
return (false, nil, "rpc returned unexpected response: \(parsed)")
|
||||||
} catch {
|
} catch {
|
||||||
self.logger.error("rpc send failed: \(error.localizedDescription, privacy: .public)")
|
self.logger.error("rpc send failed: \(error.localizedDescription, privacy: .public)")
|
||||||
await self.stop()
|
await self.stop()
|
||||||
|
|
|
||||||
|
|
@ -410,14 +410,17 @@ actor VoiceWakeRuntime {
|
||||||
Task { [weak self] in
|
Task { [weak self] in
|
||||||
let nanos = UInt64(max(0, delay) * 1_000_000_000)
|
let nanos = UInt64(max(0, delay) * 1_000_000_000)
|
||||||
try? await Task.sleep(nanoseconds: nanos)
|
try? await Task.sleep(nanoseconds: nanos)
|
||||||
guard let self else { return }
|
await self?.restartIfIdleAfterDelay()
|
||||||
if self.isCapturing { return }
|
|
||||||
let overlayVisible = await MainActor.run { VoiceWakeOverlayController.shared.isVisible }
|
|
||||||
if overlayVisible { return }
|
|
||||||
self.restartRecognizer()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private func restartIfIdleAfterDelay() async {
|
||||||
|
if self.isCapturing { return }
|
||||||
|
let overlayVisible = await MainActor.run { VoiceWakeOverlayController.shared.isVisible }
|
||||||
|
if overlayVisible { return }
|
||||||
|
self.restartRecognizer()
|
||||||
|
}
|
||||||
|
|
||||||
func applyPushToTalkCooldown() {
|
func applyPushToTalkCooldown() {
|
||||||
self.cooldownUntil = Date().addingTimeInterval(self.debounceAfterSend)
|
self.cooldownUntil = Date().addingTimeInterval(self.debounceAfterSend)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue