
    i	                        d dl mZ d dlZd dlZd dlZd dlmZmZmZ d dl	m
Z
 d dlmZ d dlmZ d dlmZ  ej"                  e      Z G d d	      Zy)
    )annotationsN)CallableOptionalTuple)BaseChatModel)BaseMessage)MessageManager)RecordStorec                  B    e Zd ZddZddZdd	dZ	 	 	 	 	 	 	 	 	 	 d
dZy)BrainSearchFlowc                    || _         y )N)record_store)selfr   s     H/Users/mibo/.openclaw/workspace/data/TuriX-CUA/src/utils/brain_search.py__init__zBrainSearchFlow.__init__   s
    (    c                p   |j                  d      }|sy t        |t              rd|j                  dg       }t        |t              rA|D cg c]5  }t	        |      j                         st	        |      j                         7 c}S y t        |t              rA|D cg c]5  }t	        |      j                         st	        |      j                         7 c}S t        |t              r>|j                  d      D cg c]#  }|j                         s|j                         % c}S y c c}w c c}w c c}w )N
read_filesfiles,)get
isinstancedictliststrstripsplit)r   parsed
read_valuer   fs        r   extract_read_filesz"BrainSearchFlow.extract_read_files   s    ZZ-
j$'NN7B/E%&05H1QAHHj$',6IJq#a&,,.CFLLNJIIj#&'1'7'7'<J'<!	AGGI'<JJ I JJs$   D)*D)D.<D.=D3D3c                    t        j                  dd|j                               }t        j                  dd|      j                         }t        j	                  d||       t        j                  |      S )Nz^```(json)? z```$z[%s] Raw text: %s)resubr   loggerdebugjsonloads)r   textlabelcleaneds       r   parse_responsezBrainSearchFlow.parse_response$   sU    &&TZZ\:&&"g.446(%9zz'""r   c                  K   | j                  |      }|r| j                  j                  |      } |||      }|j                          |j	                          |j                  |       |j                         }|j                  |       d {   }	| j                  t        |	j                        d      }||fS ||j                         fS 7 @w)N)read_files_contentread_files_listzBrain post-read)r+   )r!   r   r   _remove_last_state_message_remove_last_AIntool_messageadd_state_messageget_messagesainvoker-   r   content)
r   r   build_state_contentmessage_managerllmr   file_contentsstate_contentbrain_messagesresponses
             r   maybe_reinvokezBrainSearchFlow.maybe_reinvoke*   s      ,,V4
 --88DM/#0 *M 66888:--m<,99;N [[88H((X-=-=)>FW(XF>))33555 9s   BCCACN)r   r
   returnNone)r   r   r?   zOptional[list[str]])Brain)r*   r   r+   r   r?   r   )
r   r   r7   zCallable[..., list[dict]]r8   r	   r9   r   r?   zTuple[dict, list[BaseMessage]])__name__
__module____qualname__r   r!   r-   r>    r   r   r   r      sF    )#66 76 (	6
 6 
(6r   r   )
__future__r   r(   loggingr$   typingr   r   r   *langchain_core.language_models.chat_modelsr   langchain_core.messagesr   !src.agent.message_manager.servicer	   src.utils.record_storer
   	getLoggerrB   r&   r   rE   r   r   <module>rN      s?    "   	 , , D / < .			8	$.6 .6r   