MCPcopy
hub / github.com/FlowiseAI/Flowise / filterMessagesWithFeedback

Function filterMessagesWithFeedback

packages/server/src/utils/getChatMessage.ts:298–345  ·  view source on GitHub ↗
(
    messages: Array<ChatMessage & { feedback: ChatMessageFeedback }>,
    feedbackTypes: ChatMessageRatingType[]
)

Source from the content-addressed store, hash-verified

296}
297
298function filterMessagesWithFeedback(
299 messages: Array<ChatMessage & { feedback: ChatMessageFeedback }>,
300 feedbackTypes: ChatMessageRatingType[]
301): ChatMessage[] {
302 // Group messages by session for proper filtering
303 const sessionGroups = new Map<string, Array<ChatMessage & { feedback: ChatMessageFeedback }>>()
304
305 messages.forEach((message) => {
306 const sessionId = message.sessionId
307 if (!sessionId) return // Skip messages without sessionId
308
309 if (!sessionGroups.has(sessionId)) {
310 sessionGroups.set(sessionId, [])
311 }
312 sessionGroups.get(sessionId)!.push(message)
313 })
314
315 const result: ChatMessage[] = []
316
317 // Process each session group
318 sessionGroups.forEach((sessionMessages) => {
319 // Sort by creation date to ensure proper order
320 sessionMessages.sort((a, b) => new Date(a.createdDate).getTime() - new Date(b.createdDate).getTime())
321
322 const toInclude = new Set<number>()
323
324 sessionMessages.forEach((message, index) => {
325 if (message.role === 'apiMessage' && message.feedback && feedbackTypes.includes(message.feedback.rating)) {
326 // Include the feedback message
327 toInclude.add(index)
328 // Include the previous message (user message) if it exists
329 if (index > 0) {
330 toInclude.add(index - 1)
331 }
332 }
333 })
334
335 // Add filtered messages to result
336 sessionMessages.forEach((message, index) => {
337 if (toInclude.has(index)) {
338 result.push(message)
339 }
340 })
341 })
342
343 // Sort final result by creation date
344 return result.sort((a, b) => new Date(a.createdDate).getTime() - new Date(b.createdDate).getTime())
345}

Callers 1

getMessagesWithFeedbackFunction · 0.85

Calls 4

setMethod · 0.80
getMethod · 0.45
getTimeMethod · 0.45
addMethod · 0.45

Tested by

no test coverage detected