feat(keyboard): ship AI mode surface with streaming search answers
Add the AI keyboard tab, Agent settings, and user-owned LLM key path for 1.7.0, including streaming answers and web-search transports without the built-in DeepSeek fallback.
This commit is contained in:
@@ -94,6 +94,7 @@ public enum FlowSessionKeys {
|
||||
/// per-request timeout clamps to this value, so it participates in the
|
||||
/// keyboard-watchdog budget below.
|
||||
public static let maxPolishTimeout: TimeInterval = 35
|
||||
public static let aiQuestionRequestTimeout: TimeInterval = 60
|
||||
|
||||
/// Extra slack for result serialization, cross-process propagation, and
|
||||
/// the host's own polling cadence.
|
||||
@@ -115,6 +116,14 @@ public enum FlowSessionKeys {
|
||||
return asrWait + batchASRFallbackTimeout + maxPolishTimeout + resultDeliveryMargin
|
||||
}
|
||||
|
||||
public static func keyboardAIResultTimeout(engineMode: String) -> TimeInterval {
|
||||
let asrWait = engineMode == "local" ? localASRWaitTimeout : cloudASRWaitTimeout
|
||||
return asrWait
|
||||
+ batchASRFallbackTimeout
|
||||
+ aiQuestionRequestTimeout
|
||||
+ resultDeliveryMargin
|
||||
}
|
||||
|
||||
public enum RecordingState: String, Sendable, Equatable {
|
||||
case idle
|
||||
case recording
|
||||
|
||||
Reference in New Issue
Block a user