@@ -5,7 +5,7 @@ import { getAdsEnabled } from '../commands/ads'
55import { useChatStore } from '../state/chat-store'
66import { subscribeToActivity } from '../utils/activity-tracker'
77import { getAuthToken } from '../utils/auth'
8- import { logger } from '../utils/logger'
8+ import { logger , loggerContext } from '../utils/logger'
99
1010const AD_ROTATION_INTERVAL_MS = 60 * 1000 // 60 seconds per ad
1111const MAX_ADS_AFTER_ACTIVITY = 3 // Show up to 3 ads after last activity, then stop
@@ -145,16 +145,30 @@ export const useGravityAd = (): GravityAdState => {
145145 }
146146 }
147147
148- const userAdMessages = adMessages
149- . filter ( ( message ) => message . role === 'user' )
150- . slice ( - 3 )
151- . map ( ( message ) => ( {
152- role : message . role ,
153- content : message . content . replace (
148+ // Get the last assistant message and last user message
149+ const lastAssistantMessage = [ ...adMessages ]
150+ . reverse ( )
151+ . find ( ( message ) => message . role === 'assistant' )
152+ const lastUserMessage = [ ...adMessages ]
153+ . reverse ( )
154+ . find ( ( message ) => message . role === 'user' )
155+
156+ const messagesToSend : { role : string ; content : string } [ ] = [ ]
157+ if ( lastAssistantMessage ) {
158+ messagesToSend . push ( {
159+ role : lastAssistantMessage . role ,
160+ content : lastAssistantMessage . content ,
161+ } )
162+ }
163+ if ( lastUserMessage ) {
164+ messagesToSend . push ( {
165+ role : lastUserMessage . role ,
166+ content : lastUserMessage . content . replace (
154167 / < u s e r _ m e s s a g e > ( .* ?) < \/ u s e r _ m e s s a g e > / ,
155168 '$1' ,
156169 ) ,
157- } ) )
170+ } )
171+ }
158172
159173 try {
160174 const response = await fetch ( `${ WEBSITE_URL } /api/v1/ads` , {
@@ -163,7 +177,10 @@ export const useGravityAd = (): GravityAdState => {
163177 'Content-Type' : 'application/json' ,
164178 Authorization : `Bearer ${ authToken } ` ,
165179 } ,
166- body : JSON . stringify ( { messages : userAdMessages } ) ,
180+ body : JSON . stringify ( {
181+ messages : messagesToSend ,
182+ sessionId : loggerContext . clientSessionId ,
183+ } ) ,
167184 } )
168185
169186 if ( ! response . ok ) {
@@ -178,7 +195,7 @@ export const useGravityAd = (): GravityAdState => {
178195 const ad = data . ad as AdResponse | null
179196
180197 logger . info (
181- { ad, request : { messages : userAdMessages } } ,
198+ { ad, request : { messages : messagesToSend } } ,
182199 '[gravity] Received ad response' ,
183200 )
184201 return ad
0 commit comments