
    i                     t    d Z ddlmZ ddlmZmZmZ ddlmZm	Z	 ddl
mZmZ  G d de      Z G d	 d
e      Zy)zK
Pydantic models for the Deep Analysis Agent (reasoner structured output).
    )List)	BaseModelFieldfield_validator   )REASONER_QUERIES_MAXREASONER_QUERIES_MIN)normalize_llm_sqlvalidate_llm_sqlc                       e Zd ZU dZ ed      Zeed<    ed      Zeed<    e	dd      e
d	ed
efd              Z e	d      e
d	ed
efd              Zy)InvestigativeQueryz=One 1-liner hypothesis and one clean, schema-stuck SQL query.z>Exactly one short sentence (1-liner); no bullets or paragraphs)description
hypothesiszPSingle MS SQL SELECT query; only tables/columns from the schema, clean and validquerybefore)modevreturnc                 @    |t        |t              s|S t        |      S N)
isinstancestrr
   )clsr   s     C/var/www/html/userprofiledev.eatanceapp.com/deep_analysis/models.py_normalize_query_whitespacez.InvestigativeQuery._normalize_query_whitespace   s"     9Jq#.H ##    c                 6    t        |      }|rt        |      |S r   )r   
ValueError)r   r   msgs      r   _query_readonly_single_selectz0InvestigativeQuery._query_readonly_single_select   s      q!S/!r   N)__name__
__module____qualname____doc__r   r   r   __annotations__r   r   classmethodobjectr   r     r   r   r   r      s    G(hiJi#uvE3vW8,$F $v $  -$
 Wc c   r   r   c                   F    e Zd ZU dZ ede de dee      Zee	   e
d<   y)ReasonerQueriesBatchzXBetween REASONER_QUERIES_MIN and REASONER_QUERIES_MAX investigative SQL queries per run.zBetween z and z' investigative SQL queries for this run)r   
min_length
max_lengthqueriesN)r!   r"   r#   r$   r   r	   r   r-   r   r   r%   r(   r   r   r*   r*   "   s9    b(-34E:N9OOvw'')GT$% r   r*   N)r$   typingr   pydanticr   r   r   	constantsr   r	   
sql_safetyr
   r   r   r*   r(   r   r   <module>r2      s3     6 6 A ; ,9 r   