@@ -123,7 +123,7 @@ interface ThreadItemProps {
123123}
124124
125125function ThreadItem ( { thread } : ThreadItemProps ) {
126- const { metadata, setMessages, setMetadata } = useChatContext ( ) ;
126+ const { metadata, setMessages, setMetadata, setFilesMap } = useChatContext ( ) ;
127127 const { isMobile, setOpenMobile } = useSidebar ( ) ;
128128 const messages = thread . value ?. messages || [ ] ;
129129 const messageCount = messages . length ;
@@ -145,6 +145,24 @@ function ThreadItem({ thread }: ThreadItemProps) {
145145
146146 const handleThreadClick = async ( ) => {
147147 const checkpoints = await searchThreads ( "list_checkpoints" , thread . value ) ;
148+
149+ // Set filesMap by associating files with the last AI message
150+ if ( thread . value . files && Object . keys ( thread . value . files ) . length > 0 ) {
151+ const messages = formatMessages ( checkpoints [ 0 ] . values . messages ) ;
152+ const latestAiMessage = messages
153+ . slice ( )
154+ . reverse ( )
155+ . find ( ( msg : any ) => [ "ai" , "assistant" ] . includes ( msg . role ) ) ;
156+
157+ if ( latestAiMessage ) {
158+ const newFilesMap = new Map ( ) ;
159+ newFilesMap . set ( latestAiMessage . id , thread . value . files ) ;
160+ setFilesMap ( newFilesMap ) ;
161+ }
162+ } else {
163+ setFilesMap ( new Map ( ) ) ;
164+ }
165+
148166 setModel (
149167 thread . value . messages [ thread . value . messages . length - 1 ] . model ||
150168 DEFAULT_CHAT_MODEL ,
0 commit comments