
    3fi                     b    d dl mZ d dlmZ dedefdZdddeeeef      d	ed   d
z  defdZy
)    )Literal)AgentActionxmlreturnc                 l    ddddddd}|j                         D ]  \  }}| j                  ||      }  | S )z-Replace XML tags with custom safe delimiters.z[[tool]]z	[[/tool]]z[[tool_input]]z[[/tool_input]]z[[observation]]z[[/observation]])<tool>z</tool>z<tool_input>z</tool_input>z<observation></observation>)itemsreplace)r   replacementsorigrepls       l/var/www/auto_recruiter/arenv/lib/python3.12/site-packages/langchain_classic/agents/format_scratchpad/xml.py_escaper      sP     (**,L #((* &
dkk$%&J    minimal)escape_formatintermediate_stepsr   Nc          	      .   d}| D ]  \  }}|dk(  rHt        |j                        }t        t        |j                              }t        t        |            }n,|j                  }t        |j                        }t        |      }|d| d| d| dz  } |S )aU  Format the intermediate steps as XML.

    Args:
        intermediate_steps: The intermediate steps.
        escape_format: The escaping format to use. Currently only 'minimal' is
            supported, which replaces XML tags with custom delimiters to prevent
            conflicts.

    Returns:
        The intermediate steps as XML.
     r   r   z</tool><tool_input>z</tool_input><observation>r	   )r   toolstr
tool_input)r   r   logactionobservationr   r   observation_s           r   
format_xmlr      s      C1 
I%6;;'D V%6%6!78J"3{#34L;;DV../J{+LTF-j\(nF	

 Jr   )	typingr   langchain_core.agentsr   r   r   listtupler    r   r   <module>r$      s]     -  $ 09U;#345 9%, 		r   