@@ -19,6 +19,7 @@ interface UseLayercodeAgentOptions {
1919
2020 audioInput ?: boolean ;
2121 onAudioInputChanged ?: ( audioInput : boolean ) => void ;
22+ enableAmplitudeMonitoring ?: boolean ;
2223}
2324
2425/**
@@ -47,10 +48,13 @@ const useLayercodeAgent = (
4748 onAudioInputChanged,
4849 } = options ;
4950 const websocketUrlOverride = options [ '_websocketUrl' ] ;
51+ const enableAmplitudeMonitoring = options . enableAmplitudeMonitoring ?? true ;
5052
5153 const [ status , setStatus ] = useState ( 'initializing' ) ;
5254 const [ userAudioAmplitude , setUserAudioAmplitude ] = useState ( 0 ) ;
5355 const [ agentAudioAmplitude , setAgentAudioAmplitude ] = useState ( 0 ) ;
56+ const [ userSpeaking , setUserSpeaking ] = useState ( false ) ;
57+ const [ assistantSpeaking , setAssistantSpeaking ] = useState ( false ) ;
5458 const [ audioInput , _setAudioInput ] = useState < boolean > ( options . audioInput ?? true ) ;
5559 const [ isMuted , setIsMuted ] = useState ( false ) ;
5660 const [ internalConversationId , setInternalConversationId ] = useState < string | null | undefined > ( conversationId ) ;
@@ -67,6 +71,13 @@ const useLayercodeAgent = (
6771 }
6872 } , [ conversationId ] ) ;
6973
74+ useEffect ( ( ) => {
75+ if ( ! enableAmplitudeMonitoring ) {
76+ setUserAudioAmplitude ( 0 ) ;
77+ setAgentAudioAmplitude ( 0 ) ;
78+ }
79+ } , [ enableAmplitudeMonitoring ] ) ;
80+
7081 const createClient = useCallback (
7182 ( initialConversationId : string | null ) => {
7283 console . log ( 'Creating LayercodeClient instance' ) ;
@@ -105,22 +116,35 @@ const useLayercodeAgent = (
105116 onStatusChange : ( newStatus : string ) => {
106117 setStatus ( newStatus ) ;
107118 } ,
108- onUserAmplitudeChange : ( amplitude : number ) => {
109- setUserAudioAmplitude ( amplitude ) ;
119+ onUserAmplitudeChange : enableAmplitudeMonitoring
120+ ? ( amplitude : number ) => {
121+ setUserAudioAmplitude ( amplitude ) ;
122+ }
123+ : undefined ,
124+ onAgentAmplitudeChange : enableAmplitudeMonitoring
125+ ? ( amplitude : number ) => {
126+ setAgentAudioAmplitude ( amplitude ) ;
127+ }
128+ : undefined ,
129+ onUserIsSpeakingChange : ( isSpeaking : boolean ) => {
130+ setUserSpeaking ( isSpeaking ) ;
110131 } ,
111- onAgentAmplitudeChange : ( amplitude : number ) => {
112- setAgentAudioAmplitude ( amplitude ) ;
132+ onAssistantSpeakingChange : ( isSpeaking : boolean ) => {
133+ setAssistantSpeaking ( isSpeaking ) ;
113134 } ,
114135 onMuteStateChange : ( muted : boolean ) => {
115136 setIsMuted ( muted ) ;
116137 onMuteStateChange ?.( muted ) ;
117138 } ,
139+ enableAmplitudeMonitoring,
118140 } ) ;
119141
120142 if ( websocketUrlOverride ) {
121143 client . _websocketUrl = websocketUrlOverride ;
122144 }
123145
146+ setUserSpeaking ( false ) ;
147+ setAssistantSpeaking ( false ) ;
124148 setIsMuted ( client . isMuted ) ;
125149 clientRef . current = client ;
126150 return client ;
@@ -139,6 +163,7 @@ const useLayercodeAgent = (
139163 onAudioInputChanged ,
140164 websocketUrlOverride ,
141165 audioInput ,
166+ enableAmplitudeMonitoring ,
142167 ]
143168 ) ;
144169
@@ -234,6 +259,8 @@ const useLayercodeAgent = (
234259 status,
235260 userAudioAmplitude,
236261 agentAudioAmplitude,
262+ userSpeaking,
263+ assistantSpeaking,
237264 isMuted,
238265 conversationId : internalConversationId ,
239266 audioInput,
0 commit comments