@@ -96,6 +96,7 @@ class TelemetryHelper(private val context: AmazonQAppInitContext, private val se
9696    //  When Chat API responds to a user message (full response streamed)
9797    fun  recordAddMessage (data :  ChatRequestData , response :  ChatMessage , responseLength :  Int , statusCode :  Int , numberOfCodeBlocks :  Int ) {
9898        val  hasProjectContext =  getIsProjectContextEnabled() &&  data.useRelevantDocuments &&  data.relevantTextDocuments.isNotEmpty()
99+         responseHasProjectContext[response.messageId] =  hasProjectContext
99100        AmazonqTelemetry .addMessage(
100101            cwsprChatConversationId =  getConversationId(response.tabId).orEmpty(),
101102            cwsprChatMessageId =  response.messageId,
@@ -120,7 +121,6 @@ class TelemetryHelper(private val context: AmazonQAppInitContext, private val se
120121            codewhispererCustomizationArn =  data.customization?.arn,
121122            cwsprChatHasProjectContext =  hasProjectContext
122123        )
123-         responseHasProjectContext[response.messageId] =  hasProjectContext
124124        val  programmingLanguage =  data.activeFileContext.fileContext?.fileLanguage
125125        val  validProgrammingLanguage =  if  (ChatSessionV1 .validLanguages.contains(programmingLanguage)) programmingLanguage else  null 
126126
@@ -137,7 +137,7 @@ class TelemetryHelper(private val context: AmazonQAppInitContext, private val se
137137            data.message.length,
138138            responseLength,
139139            numberOfCodeBlocks,
140-             getIsProjectContextEnabled()  &&  data.useRelevantDocuments  &&  data.relevantTextDocuments.isNotEmpty( ),
140+             getMessageHasProjectContext(response.messageId ),
141141            data.customization
142142        ).also  {
143143            logger.debug {
@@ -164,9 +164,6 @@ class TelemetryHelper(private val context: AmazonQAppInitContext, private val se
164164
165165    //  When user interacts with a message (e.g. copy code, insert code, vote)
166166    suspend  fun  recordInteractWithMessage (message :  IncomingCwcMessage ) {
167-         val  hasProjectContext =  { messageId:  String  -> 
168-             responseHasProjectContext.getOrDefault(messageId, false )
169-         }
170167        val  event:  ChatInteractWithMessageEvent ?  =  when  (message) {
171168            is  IncomingCwcMessage .ChatItemVoted  ->  {
172169                AmazonqTelemetry .interactWithMessage(
@@ -178,7 +175,7 @@ class TelemetryHelper(private val context: AmazonQAppInitContext, private val se
178175                        else  ->  CwsprChatInteractionType .Unknown 
179176                    },
180177                    credentialStartUrl =  getStartUrl(context.project),
181-                     cwsprChatHasProjectContext =  hasProjectContext (message.messageId)
178+                     cwsprChatHasProjectContext =  getMessageHasProjectContext (message.messageId)
182179                )
183180                ChatInteractWithMessageEvent .builder().apply  {
184181                    conversationId(getConversationId(message.tabId).orEmpty())
@@ -190,7 +187,7 @@ class TelemetryHelper(private val context: AmazonQAppInitContext, private val se
190187                            else  ->  ChatMessageInteractionType .UNKNOWN_TO_SDK_VERSION 
191188                        }
192189                    )
193-                     hasProjectLevelContext(hasProjectContext (message.messageId))
190+                     hasProjectLevelContext(getMessageHasProjectContext (message.messageId))
194191                }.build()
195192            }
196193
@@ -200,13 +197,13 @@ class TelemetryHelper(private val context: AmazonQAppInitContext, private val se
200197                    cwsprChatMessageId =  message.messageId.orEmpty(),
201198                    cwsprChatInteractionType =  CwsprChatInteractionType .ClickFollowUp ,
202199                    credentialStartUrl =  getStartUrl(context.project),
203-                     cwsprChatHasProjectContext =  hasProjectContext (message.messageId.orEmpty())
200+                     cwsprChatHasProjectContext =  getMessageHasProjectContext (message.messageId.orEmpty())
204201                )
205202                ChatInteractWithMessageEvent .builder().apply  {
206203                    conversationId(getConversationId(message.tabId).orEmpty())
207204                    messageId(message.messageId.orEmpty())
208205                    interactionType(ChatMessageInteractionType .CLICK_FOLLOW_UP )
209-                     hasProjectLevelContext(hasProjectContext (message.messageId.orEmpty()))
206+                     hasProjectLevelContext(getMessageHasProjectContext (message.messageId.orEmpty()))
210207                }.build()
211208            }
212209
@@ -221,15 +218,15 @@ class TelemetryHelper(private val context: AmazonQAppInitContext, private val se
221218                    credentialStartUrl =  getStartUrl(context.project),
222219                    cwsprChatCodeBlockIndex =  message.codeBlockIndex,
223220                    cwsprChatTotalCodeBlocks =  message.totalCodeBlocks,
224-                     cwsprChatHasProjectContext =  hasProjectContext (message.messageId)
221+                     cwsprChatHasProjectContext =  getMessageHasProjectContext (message.messageId)
225222                )
226223                ChatInteractWithMessageEvent .builder().apply  {
227224                    conversationId(getConversationId(message.tabId).orEmpty())
228225                    messageId(message.messageId)
229226                    interactionType(ChatMessageInteractionType .COPY_SNIPPET )
230227                    interactionTarget(message.insertionTargetType)
231228                    acceptedCharacterCount(message.code.length)
232-                     hasProjectLevelContext(hasProjectContext (message.messageId))
229+                     hasProjectLevelContext(getMessageHasProjectContext (message.messageId))
233230                }.build()
234231            }
235232
@@ -245,7 +242,7 @@ class TelemetryHelper(private val context: AmazonQAppInitContext, private val se
245242                    credentialStartUrl =  getStartUrl(context.project),
246243                    cwsprChatCodeBlockIndex =  message.codeBlockIndex,
247244                    cwsprChatTotalCodeBlocks =  message.totalCodeBlocks,
248-                     cwsprChatHasProjectContext =  hasProjectContext (message.messageId)
245+                     cwsprChatHasProjectContext =  getMessageHasProjectContext (message.messageId)
249246                )
250247                ChatInteractWithMessageEvent .builder().apply  {
251248                    conversationId(getConversationId(message.tabId).orEmpty())
@@ -254,7 +251,7 @@ class TelemetryHelper(private val context: AmazonQAppInitContext, private val se
254251                    interactionTarget(message.insertionTargetType)
255252                    acceptedCharacterCount(message.code.length)
256253                    acceptedLineCount(message.code.lines().size)
257-                     hasProjectLevelContext(hasProjectContext (message.messageId))
254+                     hasProjectLevelContext(getMessageHasProjectContext (message.messageId))
258255                }.build()
259256            }
260257
@@ -274,7 +271,7 @@ class TelemetryHelper(private val context: AmazonQAppInitContext, private val se
274271                    cwsprChatInteractionTarget =  message.link,
275272                    cwsprChatHasReference =  null ,
276273                    credentialStartUrl =  getStartUrl(context.project),
277-                     cwsprChatHasProjectContext =  hasProjectContext (message.messageId)
274+                     cwsprChatHasProjectContext =  getMessageHasProjectContext (message.messageId)
278275                )
279276                ChatInteractWithMessageEvent .builder().apply  {
280277                    conversationId(getConversationId(message.tabId).orEmpty())
@@ -287,7 +284,7 @@ class TelemetryHelper(private val context: AmazonQAppInitContext, private val se
287284                        }
288285                    )
289286                    interactionTarget(message.link)
290-                     hasProjectLevelContext(hasProjectContext (message.messageId))
287+                     hasProjectLevelContext(getMessageHasProjectContext (message.messageId))
291288                }.build()
292289            }
293290
@@ -374,6 +371,14 @@ class TelemetryHelper(private val context: AmazonQAppInitContext, private val se
374371        responseStreamTotalTime[tabId] =  totalTime
375372    }
376373
374+     fun  setResponseHasProjectContext (data :  ChatRequestData , response :  ChatMessage ) {
375+         responseHasProjectContext[response.messageId] =  getIsProjectContextEnabled() &&  data.useRelevantDocuments &&  data.relevantTextDocuments.isNotEmpty()
376+     }
377+ 
378+     fun  getMessageHasProjectContext (messageId :  String ): Boolean  {
379+         return  responseHasProjectContext.getOrDefault(messageId, false )
380+     }
381+ 
377382    @VisibleForTesting
378383    fun  getResponseStreamTimeToFirstChunk (tabId :  String ): Double  {
379384        val  chunkTimes =  responseStreamTimeForChunks[tabId] ? :  return  0.0 
0 commit comments