@@ -122,18 +122,24 @@ export const useGravityAd = (): GravityAdState => {
122122 // Also check UI messages for the latest user message
123123 // (UI messages update immediately, runState.messageHistory updates after LLM responds)
124124 const uiMessages = useChatStore . getState ( ) . messages
125- const latestUserMessage = [ ...uiMessages ]
125+ const lastUIMessage = [ ...uiMessages ]
126126 . reverse ( )
127127 . find ( ( msg ) => msg . variant === 'user' )
128128
129129 // If the latest UI user message isn't in our converted history, append it
130130 // This ensures we always include the most recent user message even before LLM responds
131- if ( latestUserMessage ?. content ) {
131+ if ( lastUIMessage ?. content ) {
132132 const lastAdUserMessage = [ ...adMessages ]
133133 . reverse ( )
134134 . find ( ( m ) => m . role === 'user' )
135- if ( lastAdUserMessage ?. content !== latestUserMessage . content ) {
136- adMessages . push ( { role : 'user' , content : latestUserMessage . content } )
135+ if (
136+ ! lastAdUserMessage ||
137+ ! lastAdUserMessage . content . includes ( lastUIMessage . content )
138+ ) {
139+ adMessages . push ( {
140+ role : 'user' ,
141+ content : `<user_message>${ lastUIMessage . content } </user_message>` ,
142+ } )
137143 }
138144 }
139145
@@ -280,7 +286,10 @@ const convertToAdMessages = (messages: Message[]): AdMessage[] => {
280286 . filter (
281287 ( message ) => message . role === 'assistant' || message . role === 'user' ,
282288 )
283- . filter ( ( message ) => ! message . tags ?. includes ( 'USER_PROMPT' ) )
289+ . filter (
290+ ( message ) =>
291+ ! message . tags || ! message . tags . includes ( 'INSTRUCTIONS_PROMPT' ) ,
292+ )
284293 . map ( ( message ) => ( {
285294 role : message . role ,
286295 content : message . content
0 commit comments