a
    ZÓÓjB  ã                   @   s4   d Z ddlmZ ddlmZmZ G dd„ deƒZdS )ug  Structured output contract for a turn's response.

The live model fills these specific fields rather than writing free prose â€” this is what
keeps answers close to the reference script's shape (headline / next_moves / suggested
wording / citations) instead of drifting into open-ended paragraphs that are hard to compare
turn-by-turn against a fixed script.
é    )ÚOptional)Ú	BaseModelÚFieldc                   @   st   e Zd ZU edd�Zeed< eedd�Zee ed< eddd	�Z	e
e ed
< eedd�Zee ed< edd„ ƒZdS )ÚTurnResponsezAOne sentence summarizing the situation or decision for this turn.)ÚdescriptionÚheadlinezJConcrete next actions for the representative, as short imperative bullets.)Údefault_factoryr   Ú
next_movesNzŠExact wording the representative can say to the customer, only when this turn calls for a direct quote (e.g. asking a sensitive question).)Údefaultr   Úsuggested_wordingz~Article ids from the provided source material that this turn's guidance is grounded in. Never cite an id that wasn't provided.Ú	citationsc                 C   s   |   ¡ }ddd|dœdœS )NÚfunctionÚsubmit_turn_responsez=Submit this turn's structured response to the representative.)Únamer   Ú
parameters)Útyper   )Úmodel_json_schema)ÚclsÚschema© r   ú%/home/ec2-user/esure-agent/schemas.pyÚtool_schema   s    ýþzTurnResponse.tool_schema)Ú__name__Ú
__module__Ú__qualname__r   r   ÚstrÚ__annotations__Úlistr	   r   r   r   Úclassmethodr   r   r   r   r   r      s"   
ÿþþþr   N)Ú__doc__Útypingr   Úpydanticr   r   r   r   r   r   r   Ú<module>   s   