
    i	                     F    S SK JrJr  S SKJr  S SKJr  Sr " S S\5      rg)    )TemplateSyntaxErrornodes)	Extension)chat_message_from_text)systemuser	assistantc                   *    \ rS rSrSrS1rS rS rSrg)ChatExtension   z
`chat` can be used to render prompt text as structured ChatMessage objects.

Example:
    ```
    {% chat role="system" %}
    You are a helpful assistant.
    {% endchat %}
    ```
chatc                 "   [        UR                  5      R                  n/ nUR                  R                  R                  S:w  aJ  UR                  [        UR                  5      5        UR                  R                  R                  S:w  a  MJ  SU S3n Uu  pVnUR                  S:w  d  UR                  S:w  a  [        XB5      eUR                  [        ;  a3  SR                  [        5      nSUR                   SU S	3n	[        X5      e[        R                  " UR                  5      /n
UR                  S
SS9n[        R                  " U R                  SU
5      / / U5      R!                  U5      $ ! [         a    [        XB5      S ef = f)N	block_endz(Invalid syntax for chat attribute, got 'z', expected role="value"role=z, 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               O/home/james-whalen/.local/lib/python3.13/site-packages/banks/extensions/chat.pyparseChatExtension.parse   sq   fmm$++ mm##((K7OOD/0 mm##((K7 ?xjHbc		C19.IJ
 ??f$(9(9S(@%i88?2IIo.E'
(8(8'9qQC%c22 #(++j.>.>"?!@ &&'8d&K t//0FMrSUW[\gghnoo'  	C%i8dB	Cs   E7 7Fc                 B    [        X" 5       S9nUR                  SS9S-   $ )z
Helper callback.
)r   contentT)exclude_none
)r   model_dump_json)r$   r   callercms       r/   r   "ChatExtension._store_chat_messagesB   s+     $vx@!!t!4t;;     N)	__name__
__module____qualname____firstlineno____doc__tagsr0   r   __static_attributes__r;   r:   r/   r   r      s    	 8D$pL<r:   r   N)	jinja2r   r   
jinja2.extr   banks.typesr   r   r   r;   r:   r/   <module>rF      s!   
 .   .1:<I :<r:   