refactor: replace welcome message with server_info status payload
Unify the initial connection handshake and capability update paths. The server now sends a server_info status message on connect and whenever capabilities change, enabling the onboarding flow where voice becomes available after models are configured.
This commit is contained in:
@@ -356,7 +356,6 @@ export const MessageInput = forwardRef<MessageInputRef, MessageInputProps>(funct
|
||||
serverInfo,
|
||||
mode: 'dictation',
|
||||
})
|
||||
const dictationReadiness = serverInfo?.capabilities?.voice?.dictation ?? null
|
||||
|
||||
const canStartDictation = useCallback(() => {
|
||||
const socketConnected = client?.isConnected ?? false
|
||||
@@ -416,28 +415,7 @@ export const MessageInput = forwardRef<MessageInputRef, MessageInputProps>(funct
|
||||
}, [dictationStatus, isDictating, isDictationProcessing])
|
||||
|
||||
const startDictationIfAvailable = useCallback(async () => {
|
||||
console.info(
|
||||
`[DictationGate] start requested ${JSON.stringify({
|
||||
serverId: voiceServerId ?? null,
|
||||
agentId: voiceAgentId ?? null,
|
||||
socketConnected: client?.isConnected ?? false,
|
||||
isReadyForDictation: isReadyForDictation ?? null,
|
||||
disabled,
|
||||
serverInfoPresent: Boolean(serverInfo),
|
||||
capabilitiesPresent: Boolean(serverInfo?.capabilities),
|
||||
dictationReadinessEnabled: dictationReadiness?.enabled ?? null,
|
||||
dictationReadinessReason: dictationReadiness?.reason ?? null,
|
||||
dictationUnavailableMessage,
|
||||
})}`
|
||||
)
|
||||
if (dictationUnavailableMessage) {
|
||||
console.info(
|
||||
`[DictationGate] blocked before start ${JSON.stringify({
|
||||
serverId: voiceServerId ?? null,
|
||||
agentId: voiceAgentId ?? null,
|
||||
dictationUnavailableMessage,
|
||||
})}`
|
||||
)
|
||||
isDictatingRef.current = false
|
||||
toast.error(dictationUnavailableMessage)
|
||||
return
|
||||
@@ -446,18 +424,7 @@ export const MessageInput = forwardRef<MessageInputRef, MessageInputProps>(funct
|
||||
// state-ref sync effect, so a rapid second toggle routes to confirm.
|
||||
isDictatingRef.current = true
|
||||
await startDictation()
|
||||
}, [
|
||||
client,
|
||||
dictationReadiness,
|
||||
dictationUnavailableMessage,
|
||||
disabled,
|
||||
isReadyForDictation,
|
||||
serverInfo,
|
||||
startDictation,
|
||||
toast,
|
||||
voiceAgentId,
|
||||
voiceServerId,
|
||||
])
|
||||
}, [dictationUnavailableMessage, startDictation, toast])
|
||||
|
||||
// Animate overlay
|
||||
useEffect(() => {
|
||||
|
||||
Reference in New Issue
Block a user