
    _j@                        S SK JrJrJrJrJrJr  S SKrSSKJ	r	J
r
  SSKJr  SSKJr  SSKJr  SSSSSSS.S	\\\      S
\S\\   S\\   S\\   S\\   S\\S      S\\\\
4      S\\\4   4S jjrS\\\4   S\\\4   4S jrSSSSSSS.S\S	\\\      S
\S\\   S\\   S\\   S\\   S\\S      S\\\\
4      S\	4S jjrS\S\S\	4S jrSSS.S\S\S\S\\   S\	4
S jjrSSSSSSSSS.S\S	\\\      S
\S\\   S\\   S\S\\   S\\   S\\   S\\S      S\\\\
4      S\	4S jjrS\S\S\4S  jrg)!    )AnyDictListLiteralOptionalUnionN   )AgentResponseAgentWebhookConfig)
HttpClient)handle_response_error)_normalize_schema)schemaintegrationmax_creditsstrict_constrain_to_urlsmodelwebhookurlspromptr   r   r   r   r   )zspark-1-prozspark-1-minir   returnc                   0 nU b  XS'   XS'   Ub5  [        U5      n	U	b  XS'   O"[        S[        U5      R                   S35      eUb:  [	        U5      R                  5       (       a  [	        U5      R                  5       US'   Ub
  US:  a  XHS'   Ub  U(       a  XXS	'   Ub  XhS
'   Ub-  [        U[        5      (       a  XxS'   U$ UR                  SS9US'   U$ )Nr   r   r   zInvalid schema type: zN. Schema must be a dict, Pydantic BaseModel class, or Pydantic model instance.r   r   
maxCreditsstrictConstrainToURLsr   r   T)exclude_none)r   
ValueErrortype__name__strstrip
isinstance
model_dump)
r   r   r   r   r   r   r   r   bodynormalized_schemas
             O/home/rurouni/.local/lib/python3.13/site-packages/firecrawl/v2/methods/agent.py_prepare_agent_requestr&   
   s    DVN-f5(.N'V(=(='> ?_ _  3{#3#9#9#;#;!+.446];?(\+0H(@$%Wgs##%O K &00d0CDOK    payloadc                 l    [        U 5      nSU;   a  SU;  a  US   US'   SU;   a  SU;  a  US   US'   U$ )N	expiresAt
expires_atcreditsUsedcredits_used)dict)r(   outs     r%   !_normalize_agent_response_payloadr0   2   sL    
w-Ccl#5,Lc 9!-0NJr'   clientc                    [        UUUUUUUUS9n	U R                  SU	5      n
U
R                  (       d  [        U
S5        [	        U
R                  5       5      n[        S0 UD6$ )Nr   r   r   r   r   r   r   z	/v2/agentagent )r&   postokr   r0   jsonr
   )r1   r   r   r   r   r   r   r   r   r#   respr(   s               r%   start_agentr:   ;   sg     "!9	D ;;{D)D77dG,/		<G#7##r'   job_idc                     U R                  SU 35      nUR                  (       d  [        US5        [        UR	                  5       5      n[        S0 UD6$ )N
/v2/agent/zagent-statusr5   )getr7   r   r0   r8   r
   )r1   r;   r9   r(   s       r%   get_agent_statusr?   X   sF    ::
6(+,D77dN3/		<G#7##r'   poll_intervaltimeoutrA   rB   c                    [         R                   " 5       n [        X5      nUR                  S;   a  U$ Ub  [         R                   " 5       U-
  U:  a  U$ [         R                  " [	        SU5      5        M`  )N)	completedfailed	cancelled   )timer?   statussleepmax)r1   r;   rA   rB   start_tsrI   s         r%   
wait_agentrM   `   sc     yy{H
!&1==@@MDIIK($:g#EM

3q-() r'   )r   r   rA   rB   r   r   r   r   c       	         d    [        U UUUUUUU	U
S9	n[        USS 5      nU(       d  U$ [        XXVS9$ )Nr3   idr@   )r:   getattrrM   )r1   r   r   r   r   rA   rB   r   r   r   r   startedr;   s                r%   r4   r4   q   sN     !9
G WdD)FfMSSr'   c                     U R                  SU 35      nUR                  (       d  [        US5        UR                  5       R	                  SS5      $ )z
Cancel a running agent job.

Args:
    client: HTTP client instance
    job_id: ID of the agent job to cancel

Returns:
    bool: True if the agent was cancelled, False otherwise

Raises:
    Exception: If the cancellation fails
r=   zcancel agentsuccessF)deleter7   r   r8   r>   )r1   r;   r9   s      r%   cancel_agentrU      sA     ==:fX./D77dN399;??9e,,r'   )typingr   r   r   r   r   r   rH   typesr
   r   utils.http_clientr   utils.error_handlerr   utils.validationr   r   intboolr&   r0   r:   r?   rM   r4   rU   r5   r'   r%   <module>r]      s   < <  5 * 7 0 !!%!%/3>B8<%
49
% % SM	%
 #% #% 'tn% G9:;% eC!3345% 
#s(^%PtCH~ $sCx.  !!%!%/3>B8<$$
49
$ 	$
 SM$ #$ #$ 'tn$ G9:;$ eC!3345$ $:$Z $ $ $ !*** 	*
 c]* *, !!%!!%/3>B8<TT
49
T 	T
 SMT #T T c]T #T 'tnT G9:;T eC!3345T T>- -S -T -r'   