
    +j
                        d Z ddlmZ ddlmZmZ  G d de          Z G d de          Z G d d	e          Z G d
 de          Z	 G d de          Z
eez  e
z  Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Zd S )!zPydantic models for the OpenRouter chat completions API.

See: https://openrouter.ai/docs/api/api-reference/chat/send-chat-completion-request
    )Literal)	BaseModelFieldc                   J    e Zd ZU dZed         ed<    ed          Zeed<   dS )OpenRouterTextContenttexttype.N)	__name__
__module____qualname__r	   r   __annotations__r   r   str     ?/home/wildlama/comfy/ComfyUI/comfy_api_nodes/apis/openrouter.pyr   r      s>         "D'&/"""c

D#r   r   c                   0    e Zd ZU  ed          Zeed<   dS )OpenRouterImageUrl.urlNr
   r   r   r   r   r   r   r   r   r   r   r      *         uSzzCr   r   c                   J    e Zd ZU dZed         ed<    ed          Zeed<   dS )OpenRouterImageContent	image_urlr	   .N)	r
   r   r   r	   r   r   r   r   r   r   r   r   r   r      @         !,D'+
,,,$)E#JJI!.....r   r   c                   0    e Zd ZU  ed          Zeed<   dS )OpenRouterVideoUrl.r   Nr   r   r   r   r   r      r   r   r   c                   J    e Zd ZU dZed         ed<    ed          Zeed<   dS )OpenRouterVideoContent	video_urlr	   .N)	r
   r   r   r	   r   r   r   r   r   r   r   r   r   r      r   r   r   c                   n    e Zd ZU  ed          Zed         ed<    ed          Zee	e
         z  ed<   dS )OpenRouterMessage.)systemuser	assistantrolecontentN)r
   r   r   r   r%   r   r   r&   r   listOpenRouterContentBlockr   r   r   r!   r!   %   sS         385::D'/
0===27%**GS4.//<<<<<r   r!   c                   `    e Zd ZU  ed          Zedz  ed<    edd          Zedz  ed<   dS )OpenRouterReasoningConfigNeffortz?If true, model reasons but reasoning is excluded from response.descriptionexclude)	r
   r   r   r   r+   r   r   r.   boolr   r   r   r*   r*   *   sR         tFC$J$$$ 53tuuuGTD[uuuuur   r*   c                   6    e Zd ZU  ed          Zedz  ed<   dS )OpenRouterWebSearchOptionsNsearch_context_size)r
   r   r   r   r2   r   r   r   r   r   r1   r1   /   s/         &+eDkkt11111r   r1   c                       e Zd ZU  ed          Zeed<    ed          Zee	         ed<    ed          Z
edz  ed<    ed          Zedz  ed<    ed          Zedz  ed<    ed          Zeed	<   dS )
OpenRouterChatRequest.modelmessagesNseed	reasoningweb_search_optionsFstream)r
   r   r   r   r5   r   r   r6   r'   r!   r7   intr8   r*   r9   r1   r:   r/   r   r   r   r4   r4   3   s         sE3(-c

Hd$%222uT{{D#*"""27%++I(4/===<AE$KK2T9GGG5<<FDr   r4   c                       e Zd ZU  ed          Zedz  ed<    ed          Zedz  ed<    ed          Zedz  ed<    edd          Z	e
dz  ed<   dS )OpenRouterUsageNprompt_tokenscompletion_tokenstotal_tokensz/Server-side authoritative USD cost of the call.r,   cost)r
   r   r   r   r>   r;   r   r?   r@   rA   floatr   r   r   r=   r=   <   s          %dM3:+++$)E$KKsTz///$uT{{L#****t1bcccD%$,cccccr   r=   c                       e Zd ZU  ed          Zedz  ed<    ed          Zedz  ed<    ed          Zedz  ed<    ed          Z	edz  ed<   dS )OpenRouterResponseMessageNr%   r&   r8   refusal)
r
   r   r   r   r%   r   r   r&   r8   rE   r   r   r   rD   rD   C   s         uT{{D#*"""%++GS4Z%%%!E$KKIsTz'''%++GS4Z%%%%%r   rD   c                       e Zd ZU  ed          Zedz  ed<    ed          Zedz  ed<    ed          Z	e
dz  ed<   dS )OpenRouterChoiceNindexmessagefinish_reason)r
   r   r   r   rH   r;   r   rI   rD   rJ   r   r   r   r   rG   rG   J   sh         dE3:###05dG&-;;; %dM3:+++++r   rG   c                       e Zd ZU  ed          Zeez  dz  ed<    ed          Zedz  ed<    ed          Z	e
dz  ed<   dS )OpenRouterErrorNcoderI   metadata)r
   r   r   r   rM   r;   r   r   rI   rN   dictr   r   r   rL   rL   P   sk         "U4[[D#)d
(((%++GS4Z%%%!E$KKHdTk'''''r   rL   c                   &   e Zd ZU  ed          Zedz  ed<    ed          Zedz  ed<    ed          Zedz  ed<    ed          Z	edz  ed<    ed          Z
ee         dz  ed<    ed          Zedz  ed<    ed          Zedz  ed<   dS )	OpenRouterChatResponseNidr5   objectproviderchoicesusageerror)r
   r   r   r   rR   r   r   r5   rS   rT   rU   r'   rG   rV   r=   rW   rL   r   r   r   rQ   rQ   V   s         U4[[Bd
   dE3:###tFC$J$$$ 5;;HcDj&&&-2U4[[GT"#d*888$)E$KKE?T!///$)E$KKE?T!/////r   rQ   N)__doc__typingr   pydanticr   r   r   r   r   r   r   r(   r!   r*   r1   r4   r=   rD   rG   rL   rQ   r   r   r   <module>r[      s   
       % % % % % % % %    I   
       / / / / /Y / / /
       / / / / /Y / / /
 /1GGJ`` = = = = =	 = = =
v v v v v	 v v v
2 2 2 2 2 2 2 2         I      d d d d di d d d& & & & &	 & & &, , , , ,y , , ,( ( ( ( (i ( ( (0 0 0 0 0Y 0 0 0 0 0r   