
    %Gg 
                     r    d dl Z d dlmZmZ d dlmZ d dlmZ dZ e j                  d      Z
 G d de      Zy)	    N)TemplateSyntaxErrornodes)	Extension)chat_message_from_text)systemuser	assistantz)<content_block>((?s:.)*)<\/content_block>c                   "    e Zd ZdZdhZd Zd Zy)ChatExtensionz
    `chat` can be used to render prompt text as structured ChatMessage objects.

    Example:
        ```
        {% chat role="system" %}
        You are a helpful assistant.
        {% endchat %}
        ```
    chatc                    t        |j                        j                  }g }|j                  j                  j                  dk7  rH|j                  t        |j                               |j                  j                  j                  dk7  rHd| d}	 |\  }}}|j                  dk7  s|j                  dk7  rt        ||      |j                  t        vr*dj                  t              }d| d| d	}	t        |	|      t        j                  |j                        g}
|j                  d
d      }t        j                  | j                  d|
      g g |      j!                  |      S # t        $ r t        ||      d w xY w)N	block_endz(Invalid syntax for chat attribute, got 'z', expected role="value"role=,zUnknown role type 'z', use one of ())zname:endchatT)drop_needle_store_chat_messages)nextstreamlinenocurrenttypeappend
ValueErrorr   valueSUPPORTED_TYPESjoinr   Constparse_statements	CallBlockcall_method
set_lineno)selfparserr   gathered	error_msg	attr_nameattr_assign
attr_valuetypesmsgargsbodys               r/home/kushmeetdev/apache_webroot/langgraph_flaskproject/venv/lib/python3.12/site-packages/banks/extensions/chat.pyparsezChatExtension.parse   sr   fmm$++ mm##((K7OOD/0 mm##((K7 ?xjHbc		C19.I{J
 ??f$(9(9S(@%i88?2HH_-E'
|?5'KC%c622 #(++j.>.>"?!@ &&'8d&K t//0FMrSUW[\gghnoo'  	C%i8dB	Cs   E* *Fc                 P    t        | |             }|j                  d      dz   S )z"
        Helper callback.
        )r   contentT)exclude_none
)r   model_dump_json)r$   r   callercms       r/   r   z"ChatExtension._store_chat_messagesD   s+     $vx@!!t!4t;;    N)__name__
__module____qualname____doc__tagsr0   r    r8   r/   r   r      s    	 8D$pL<r8   r   )rejinja2r   r   
jinja2.extr   banks.typesr   r   compileCONTENT_BLOCK_REGEXr   r>   r8   r/   <module>rE      s6    
 -   .1 bjj!MN :<I :<r8   