§
    ®eîi)Z  ã                   ód  — d Z ddlZddlZddlZddlmZmZmZmZm	Z	m
Z
mZ ddlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z' ddl(m)Z) ddl*m+Z+ ddl,m-Z. dd	l,m/Z0 dd
l,m1Z2 ddl,m3Z4 ddl,m5Z6 ddl,m7Z8 ddl,m9Z: ddl,m;Z< ddl,m=Z> ddl?m@Z@  G d„ d¦  «        ZAdS )zW
Async v2 client mirroring the regular client surface using true async HTTP transport.
é    N)ÚOptionalÚListÚDictÚAnyÚUnionÚCallableÚLiteralé   )ÚScrapeOptionsÚCrawlRequestÚWebhookConfigÚAgentWebhookConfigÚSearchRequestÚ
SearchDataÚSourceOptionÚCrawlResponseÚCrawlJobÚCrawlParamsRequestÚCrawlParamsDataÚCrawlErrorsResponseÚActiveCrawlsResponseÚ
MapOptionsÚMapDataÚFormatOptionÚ
WaitActionÚScreenshotActionÚClickActionÚWriteActionÚPressActionÚScrollActionÚScrapeActionÚExecuteJavascriptActionÚ	PDFActionÚLocationÚPaginationConfig)Ú
HttpClient)ÚAsyncHttpClient)Úscrape)Úbatch)Úcrawl)Úsearch)Úmap©Úusage)Úextract)Úagent)Úbrowser©ÚAsyncWatcherc                   ó¢  — e Zd Zededefd„¦   «         Z	 	 	 	 	 dsdee         d	ed
ee         de	def
d„Z
defd„Z	 dtdddddœdedee         dee         ded         d
ee	         dee         fd„Zdefd„Zdefd„Z	 dtdddddœdedee         dee         ded         d
ee	         dee         fd„Zdefd„Zdedefd„Zdedefd„Z	 	 dudd œded!e	d
ee	         d"ee         def
d#„Zdefd$„Z	 dtdd œded%ee         d"ee         defd&„Zdd œd'ed"ee         defd(„Zdedefd)„Zdededefd*„Zd+edefd,„Z de!fd-„Z"de!fd.„Z#ddddddd/œded0ee         d1ee         d2ee	         d3eed4                  d
ee	         d5ee         de$fd6„Z%d7e&e         de'fd8„Z(duded!e	d
ee	         de'fd9„Z)d7e&e         de'fd:„Z*	 dtded%ee         fd;„Z+dd œd'ed"ee         fd<„Z,dedefd=„Z-dedefd>„Z.	 dtdddddddddddd?œd7ee&e                  dee         d@ee/ee'f                  dAee         dBee         dCee         dDee         dEedF         dGee         d!e	d
ee	         d5ee         fdH„Z0defdI„Z1	 dtddddddddddJœ	d7ee&e                  dee         d@ee/ee'f                  dAee         dBee         dCee         dDee         dEedF         dGee         d5ee         fdK„Z2	 dtdddddddddLœd7ee&e                  ded@ee'         d5ee         d!e	d
ee	         dMee	         dNee         dOeedP                  dQee3ee4f                  fdR„Z5defdS„Z6	 dtdddddddTœd7ee&e                  ded@ee'         d5ee         dMee	         dNee         dOeedP                  dQee3ee4f                  fdU„Z7dedefdV„Z8dddddWœdXee	         dYee	         dZee         d[ee/ee'f                  fd\„Z9d]dd^œd_ededed         d
ee	         fd`„Z:d_efda„Z;ddbœdceedd                  fde„Z<df„ Z=dg„ Z>dh„ Z?dvdjefdk„Z@dvdjefdl„ZAdm„ ZBdndddoœdedpedq         d!e	d
ee	         deCf
dr„ZDdS )wÚAsyncFirecrawlClientÚurlÚreturnc                 ó.   — d|                       ¦   «         v S )Nzapi.firecrawl.dev)Úlower)r6   s    ú]/home/div/.hermes/hermes-agent/venv/lib/python3.11/site-packages/firecrawl/v2/client_async.pyÚ_is_cloud_servicez&AsyncFirecrawlClient._is_cloud_service6   s   € à" c§i¢i¡k¤kÐ1Ð1ó    Núhttps://api.firecrawl.devé   ç      à?Úapi_keyÚapi_urlÚtimeoutÚmax_retriesÚbackoff_factorc                 óâ   — |€t          j        d¦  «        }|                      |¦  «        r|st          d¦  «        ‚t	          |||||¬¦  «        | _        t          |||||¬¦  «        | _        d S )NÚFIRECRAWL_API_KEYzMAPI key is required for the cloud API. Set FIRECRAWL_API_KEY or pass api_key.)rB   rC   rD   )ÚosÚgetenvr;   Ú
ValueErrorr&   Úhttp_clientr'   Úasync_http_client)Úselfr@   rA   rB   rC   rD   s         r:   Ú__init__zAsyncFirecrawlClient.__init__:   s›   € ð ˆ?Ý”iÐ 3Ñ4Ô4ˆGØ×!Ò! 'Ñ*Ô*ð 	n°7ð 	nÝÐlÑmÔmÐmÝ%ØØØØ#Ø)ð
ñ 
ô 
ˆÔõ "1ØØØØ#Ø)ð"
ñ "
ô "
ˆÔÐÐr<   c              ‹   ó    K  — |r(t          di d„ |                     ¦   «         D ¦   «         ¤Žnd }t          j        | j        ||¦  «        ƒ d {V —†S )Nc                 ó   — i | ]
\  }}|®||“ŒS ©N© ©Ú.0ÚkÚvs      r:   ú
<dictcomp>z/AsyncFirecrawlClient.scrape.<locals>.<dictcomp>[   s   € Ð"TÐ"TÐ"T©D¨A¨qÀaÀm 1 aÀmÀmÀmr<   rQ   )r   ÚitemsÚasync_scraper(   rK   )rL   r6   ÚkwargsÚoptionss       r:   r(   zAsyncFirecrawlClient.scrapeV   si   è è € ð
 Z`Ði•-ÐUÐUÐ"TÐ"T°F·L²L±N´NÐ"TÑ"TÔ"TÐUÐUÐUÐeiˆÝ!Ô(¨Ô)?ÀÀgÑNÔNÐNÐNÐNÐNÐNÐNÐNr<   Únode©ÚpromptÚlanguagerB   ÚoriginÚjob_idÚcoder]   r^   )Úpythonr[   Úbashr_   c          	   ƒ   óR   K  — t          j        | j        ||||||¬¦  «        ƒ d {V —†S )Nr\   )rX   ÚinteractrK   ©rL   r`   ra   r]   r^   rB   r_   s          r:   re   zAsyncFirecrawlClient.interact^   sX   è è € õ "Ô*ØÔ"ØØØØØØð
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 	
r<   c              ƒ   óF   K  — t          j        | j        |¦  «        ƒ d {V —†S rP   )rX   Ústop_interactionrK   ©rL   r`   s     r:   rh   z%AsyncFirecrawlClient.stop_interactionr   sB   è è € Ý!Ô2ØÔ"Øñ
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 	
r<   c              ƒ   ó<   K  — |                       |¦  «        ƒ d{V —†S ©z(Deprecated alias for stop_interaction().N©rh   ri   s     r:   Ústop_interactive_browserz-AsyncFirecrawlClient.stop_interactive_browserx   ó,   è è € à×*Ò*¨6Ñ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2Ð2r<   c             ƒ   óH   K  — |                       ||||||¬¦  «        ƒ d{V —†S )z Deprecated alias for interact().r\   N)re   rf   s          r:   Úscrape_executez#AsyncFirecrawlClient.scrape_execute|   sS   è è € ð —]’]ØØØØØØð #ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 	
r<   c              ƒ   ó<   K  — |                       |¦  «        ƒ d{V —†S rk   rl   ri   s     r:   Údelete_scrape_browserz*AsyncFirecrawlClient.delete_scrape_browser�   rn   r<   Úqueryc              ‹   óš   K  — t          dd|id„ |                     ¦   «         D ¦   «         ¤Ž}t          j        | j        |¦  «        ƒ d {V —†S )Nrs   c                 ó   — i | ]
\  }}|®||“ŒS rP   rQ   rR   s      r:   rV   z/AsyncFirecrawlClient.search.<locals>.<dictcomp>š   s$   € Ð/aÐ/aÐ/a¹¸¸AÐSTÐS`°°1ÐS`ÐS`ÐS`r<   rQ   )r   rW   Úasync_searchr+   rK   )rL   rs   rY   Úrequests       r:   r+   zAsyncFirecrawlClient.search•   s_   è è € õ
  ÐbÐb eÐbÐ/aÐ/aÀÇÂÁÄÐ/aÑ/aÔ/aÐbÐbˆÝ!Ô(¨Ô)?ÀÑIÔIÐIÐIÐIÐIÐIÐIÐIr<   c              ‹   óÜ   K  — |                      dd ¦  «        }|                      dd ¦  «        }|€|�|rdnd}|�||d<   t          dd|i|¤Ž}t          j        | j        |¦  «        ƒ d {V —†S )NÚsitemapÚignore_sitemapÚskipÚincluder6   rQ   )Úpopr   Úasync_crawlÚstart_crawlrK   )rL   r6   rY   ry   rz   rw   s         r:   r   z AsyncFirecrawlClient.start_crawl�   s•   è è € Ø—*’*˜Y¨Ñ-Ô-ˆØŸšÐ$4°dÑ;Ô;ˆØˆ?˜~Ð9Ø .Ð=�f�f°IˆGØÐØ 'ˆF�9ÑåÐ1Ð1 3Ð1¨&Ð1Ð1ˆÝ Ô,¨TÔ-CÀWÑMÔMÐMÐMÐMÐMÐMÐMÐMr<   é   ©Úrequest_timeoutÚpoll_intervalr‚   c             ƒ   ó  K  — t          j        ¦   «         }	 t          j        | j        ||¬¦  «        ƒ d{V —†}|j        dv r|S |r)t          j        ¦   «         |z
  |k    rt          d¦  «        ‚t          j        |¦  «        ƒ d{V —† Œs)a‹  
        Polls the status of a crawl job until it reaches a terminal state.

        Args:
            job_id (str): The ID of the crawl job to poll.
            poll_interval (int, optional): Number of seconds to wait between polling attempts. Defaults to 2.
            timeout (Optional[int], optional): Maximum number of seconds to wait for the entire crawl job to complete before timing out. If None, waits indefinitely. Defaults to None.
            request_timeout (Optional[float], optional): Timeout (in seconds) for each individual HTTP request, including pagination requests when fetching results. If there are multiple pages, each page request gets this timeout. If None, no per-request timeout is set. Defaults to None.

        Returns:
            CrawlJob: The final status of the crawl job when it reaches a terminal state.

        Raises:
            TimeoutError: If the crawl does not reach a terminal state within the specified timeout.

        Terminal states:
            - "completed": The crawl finished successfully.
            - "failed": The crawl finished with an error.
            - "cancelled": The crawl was cancelled.
        Tr�   N©Ú	completedÚfailedÚ	cancelledzCrawl wait timed out)	ÚtimeÚ	monotonicr~   Úget_crawl_statusrK   ÚstatusÚTimeoutErrorÚasyncioÚsleep)rL   r`   rƒ   rB   r‚   ÚstartrŒ   s          r:   Ú
wait_crawlzAsyncFirecrawlClient.wait_crawl¨   sÅ   è è € õ8 ”Ñ Ô ˆð
	/Ý&Ô7ØÔ&ØØ /ðñ ô ð ð ð ð ð ð ˆFð
 Œ}Ð DÐDÐDØ�Øð ;�DœNÑ,Ô,¨uÑ4¸Ò?Ð?Ý"Ð#9Ñ:Ô:Ð:Ý”- Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.ð
	/r<   c              ‹   ó8  K  —  | j         di d„ |                     ¦   «         D ¦   «         ¤Žƒ d {V —†}|                     dd¦  «        }|                     d¦  «        }|                     d¦  «        }|�|n|}|                      |j        |||¬¦  «        ƒ d {V —†S )Nc                 ó"   — i | ]\  }}|d v¯	||“ŒS )©rƒ   rB   r‚   rQ   rR   s      r:   rV   z.AsyncFirecrawlClient.crawl.<locals>.<dictcomp>Ô   s)   € ÐkÐkÐk™˜˜1°!Ð;jÐ2jÐ2jˆq�!Ð2jÐ2jÐ2jr<   rƒ   r€   rB   r‚   r”   rQ   )r   rW   Úgetr‘   Úid)rL   rY   Úresprƒ   rB   r‚   Úeffective_request_timeouts          r:   r*   zAsyncFirecrawlClient.crawlÑ   sê   è è € à%�TÔ%ð 
ð 
ØkÐk §¢¡¤ÐkÑkÔkð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ˆð Ÿ
š
 ?°AÑ6Ô6ˆØ—*’*˜YÑ'Ô'ˆØ Ÿ*š*Ð%6Ñ7Ô7ˆØ7FÐ7R O OÐX_Ð!Ø—_’_ØŒGØ'ØØ5ð	 %ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 	
r<   Úpagination_configc             ƒ   óL   K  — t          j        | j        |||¬¦  «        ƒ d{V —†S )av  
        Get the status of a crawl job.
        
        Args:
            job_id: ID of the crawl job
            pagination_config: Optional configuration for pagination behavior
            request_timeout: Timeout (in seconds) for each individual HTTP request. When auto-pagination 
                is enabled (default) and there are multiple pages of results, this timeout applies to 
                each page request separately, not to the entire operation
            
        Returns:
            CrawlJob with current status and data
            
        Raises:
            Exception: If the status check fails
        )r™   r‚   N)r~   r‹   rK   )rL   r`   r™   r‚   s       r:   r‹   z%AsyncFirecrawlClient.get_crawl_statusá   sO   è è € õ. !Ô1ØÔ"ØØ/Ø+ð	
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 	
r<   Únext_urlc             ƒ   óJ   K  — t          j        | j        ||¬¦  «        ƒ d{V —†S )a7  
        Fetch a single page of crawl results using a next URL.

        Args:
            next_url: Opaque next URL from a prior crawl status response
            request_timeout: Timeout (in seconds) for the HTTP request

        Returns:
            CrawlJob with the page data and next URL (if any)
        r�   N)r~   Úget_crawl_status_pagerK   ©rL   r›   r‚   s      r:   r�   z*AsyncFirecrawlClient.get_crawl_status_pageÿ   sL   è è € õ  !Ô6ØÔ"ØØ+ð
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 	
r<   c              ƒ   óF   K  — t          j        | j        |¦  «        ƒ d {V —†S rP   )r~   Úcancel_crawlrK   ri   s     r:   r    z!AsyncFirecrawlClient.cancel_crawl  s.   è è € Ý Ô-¨dÔ.DÀfÑMÔMÐMÐMÐMÐMÐMÐMÐMr<   c              ƒ   óh   K  — t          ||¬¦  «        }t          j        | j        |¦  «        ƒ d {V —†S )N)r6   r]   )r   r~   Úcrawl_params_previewrK   )rL   r6   r]   Úreqs       r:   r¢   z)AsyncFirecrawlClient.crawl_params_preview  s@   è è € Ý  S°Ð8Ñ8Ô8ˆÝ Ô5°dÔ6LÈcÑRÔRÐRÐRÐRÐRÐRÐRÐRr<   Úcrawl_idc              ƒ   óF   K  — t          j        | j        |¦  «        ƒ d {V —†S rP   )r~   Úget_crawl_errorsrK   )rL   r¤   s     r:   r¦   z%AsyncFirecrawlClient.get_crawl_errors  s.   è è € Ý Ô1°$Ô2HÈ(ÑSÔSÐSÐSÐSÐSÐSÐSÐSr<   c              ƒ   óD   K  — t          j        | j        ¦  «        ƒ d {V —†S rP   )r~   Úget_active_crawlsrK   ©rL   s    r:   r¨   z&AsyncFirecrawlClient.get_active_crawls  s,   è è € Ý Ô2°4Ô3IÑJÔJÐJÐJÐJÐJÐJÐJÐJr<   c              ƒ   ó:   K  — |                       ¦   «         ƒ d {V —†S rP   )r¨   r©   s    r:   Úactive_crawlsz"AsyncFirecrawlClient.active_crawls"  s*   è è € Ø×+Ò+Ñ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-r<   ©r+   Úinclude_subdomainsÚlimitry   rB   Úintegrationr+   r­   r®   ry   )Úonlyr|   r{   r¯   c          	   ƒ   ó¼   K  — t          d„ ||||||fD ¦   «         ¦  «        rt          ||||�|nd||¬¦  «        nd }t          j        | j        ||¦  «        ƒ d {V —†S )Nc              3   ó   K  — | ]}|d uV — Œ	d S rP   rQ   )rS   rU   s     r:   ú	<genexpr>z+AsyncFirecrawlClient.map.<locals>.<genexpr>8  s&   è è € ÐkÐk 1�˜$�ÐkÐkÐkÐkÐkÐkr<   r|   r¬   )Úanyr   Ú	async_mapr,   rK   )	rL   r6   r+   r­   r®   ry   rB   r¯   rZ   s	            r:   r,   zAsyncFirecrawlClient.map&  s    è è € õ$ ÐkÐk¨Ð1CÀUÈGÐU`ÐbiÐ(jÐkÑkÔkÑkÔkðv•*ØØ1ØØ&Ð2�G�G¸	ØØ#ð
ñ 
ô 
ð 
ð rvð 	õ ”] 4Ô#9¸3ÀÑHÔHÐHÐHÐHÐHÐHÐHÐHr<   Úurlsc              ‹   óB   K  — t          j        | j        |fi |¤Žƒ d {V —†S rP   )Úasync_batchÚstart_batch_scraperK   )rL   r¶   rY   s      r:   r¹   z'AsyncFirecrawlClient.start_batch_scrape;  s7   è è € Ý Ô3°DÔ4JÈDÐ[Ð[ÐTZÐ[Ð[Ð[Ð[Ð[Ð[Ð[Ð[Ð[r<   c              ƒ   óX  K  — t          j        ¦   «                              ¦   «         }	 t          j        | j        |¦  «        ƒ d {V —†}|j        dv r|S |r;t          j        ¦   «                              ¦   «         |z
  |k    rt          d¦  «        ‚t          j        |¦  «        ƒ d {V —† Œƒ)NTr…   zBatch wait timed out)	rŽ   Úget_event_loopr‰   r¸   Úget_batch_scrape_statusrK   rŒ   r�   r�   )rL   r`   rƒ   rB   r�   rŒ   s         r:   Úwait_batch_scrapez&AsyncFirecrawlClient.wait_batch_scrape>  sÂ   è è € ÝÔ&Ñ(Ô(×-Ò-Ñ/Ô/ˆð	/Ý&Ô>¸tÔ?UÐW]Ñ^Ô^Ð^Ð^Ð^Ð^Ð^Ð^ˆFØŒ}Ð DÐDÐDØ�Øð ;�GÔ2Ñ4Ô4×9Ò9Ñ;Ô;¸eÑCÀwÒNÐNÝ"Ð#9Ñ:Ô:Ð:Ý”- Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.ð	/r<   c              ‹   ó  K  —  | j         |fi d„ |                     ¦   «         D ¦   «         ¤Žƒ d {V —†}|j        }|                     dd¦  «        }|                     d¦  «        }|                      |||¬¦  «        ƒ d {V —†S )Nc                 ó"   — i | ]\  }}|d v¯	||“ŒS )©rƒ   rB   rQ   rR   s      r:   rV   z5AsyncFirecrawlClient.batch_scrape.<locals>.<dictcomp>J  s3   € ð  7Að  7Að  7AÁÀÀ1ÐZ[ÐcÐZÐZ°q¸!ÐZÐZÐZr<   rƒ   r€   rB   rÀ   )r¹   rW   r–   r•   r½   )rL   r¶   rY   r�   r`   rƒ   rB   s          r:   Úbatch_scrapez!AsyncFirecrawlClient.batch_scrapeH  sÏ   è è € à-�dÔ-¨dð  Bð  Bð  7Að  7AÈÏÊÉÌð  7Añ  7Aô  7Að  Bð  Bð  Bð  Bð  Bð  Bð  Bð  BˆØ”ˆØŸ
š
 ?°AÑ6Ô6ˆØ—*’*˜YÑ'Ô'ˆØ×+Ò+¨FÀ-ÐY`Ð+ÑaÔaÐaÐaÐaÐaÐaÐaÐar<   c              ƒ   óJ   K  — t          j        | j        ||¬¦  «        ƒ d {V —†S )N)r™   )r¸   r¼   rK   )rL   r`   r™   s      r:   r¼   z,AsyncFirecrawlClient.get_batch_scrape_statusP  sL   è è € õ
 !Ô8ØÔ"ØØ/ð
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 	
r<   c             ƒ   óJ   K  — t          j        | j        ||¬¦  «        ƒ d {V —†S )Nr�   )r¸   Úget_batch_scrape_status_pagerK   rž   s      r:   rÄ   z1AsyncFirecrawlClient.get_batch_scrape_status_page[  sL   è è € õ !Ô=ØÔ"ØØ+ð
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 	
r<   c              ƒ   óF   K  — t          j        | j        |¦  «        ƒ d {V —†S rP   )r¸   Úcancel_batch_scraperK   ri   s     r:   rÆ   z(AsyncFirecrawlClient.cancel_batch_scrapeg  s.   è è € Ý Ô4°TÔ5KÈVÑTÔTÐTÐTÐTÐTÐTÐTÐTr<   c              ƒ   óF   K  — t          j        | j        |¦  «        ƒ d {V —†S rP   )r¸   Úget_batch_scrape_errorsrK   ri   s     r:   rÈ   z,AsyncFirecrawlClient.get_batch_scrape_errorsj  s/   è è € å Ô8¸Ô9OÐQWÑXÔXÐXÐXÐXÐXÐXÐXÐXr<   ©r]   ÚschemaÚsystem_promptÚallow_external_linksÚenable_web_searchÚshow_sourcesÚscrape_optionsÚignore_invalid_urlsrƒ   rB   r¯   rÊ   rË   rÌ   rÍ   rÎ   rÏ   r   rÐ   c             ƒ   ó^   K  — t          j        | j        |||||||||	|
||¬¦  «        ƒ d{V —†S )a;  Extract structured data and wait until completion (async).

        .. deprecated::
            The extract endpoint is in maintenance mode and its use is discouraged.
            Review https://docs.firecrawl.dev/developer-guides/usage-guides/choosing-the-data-extractor
            to find a replacement.
        rÉ   N)Úasync_extractr/   rK   )rL   r¶   r]   rÊ   rË   rÌ   rÍ   rÎ   rÏ   rÐ   rƒ   rB   r¯   s                r:   r/   zAsyncFirecrawlClient.extracto  sj   è è € õ. #Ô*ØÔ"ØØØØ'Ø!5Ø/Ø%Ø)Ø 3Ø'ØØ#ð
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 	
r<   c              ƒ   óF   K  — t          j        | j        |¦  «        ƒ d{V —†S )aJ  Get the current status (and data if completed) of an extract job (async).

        .. deprecated::
            The extract endpoint is in maintenance mode and its use is discouraged.
            Review https://docs.firecrawl.dev/developer-guides/usage-guides/choosing-the-data-extractor
            to find a replacement.
        N)rÒ   Úget_extract_statusrK   ri   s     r:   rÔ   z'AsyncFirecrawlClient.get_extract_status–  s0   è è € õ #Ô5°dÔ6LÈfÑUÔUÐUÐUÐUÐUÐUÐUÐUr<   ©	r]   rÊ   rË   rÌ   rÍ   rÎ   rÏ   rÐ   r¯   c       	      ƒ   óZ   K  — t          j        | j        |||||||||	|
¬¦  «        ƒ d{V —†S )a,  Start an extract job (non-blocking, async).

        .. deprecated::
            The extract endpoint is in maintenance mode and its use is discouraged.
            Review https://docs.firecrawl.dev/developer-guides/usage-guides/choosing-the-data-extractor
            to find a replacement.
        rÕ   N)rÒ   Ústart_extractrK   )rL   r¶   r]   rÊ   rË   rÌ   rÍ   rÎ   rÏ   rÐ   r¯   s              r:   r×   z"AsyncFirecrawlClient.start_extract   sd   è è € õ* #Ô0ØÔ"ØØØØ'Ø!5Ø/Ø%Ø)Ø 3Ø#ð
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 	
r<   )rÊ   r¯   rƒ   rB   Úmax_creditsÚstrict_constrain_to_urlsÚmodelÚwebhookrØ   rÙ   rÚ   )zspark-1-prozspark-1-minirÛ   c       	      ƒ   óZ   K  — t          j        | j        |||||||||	|
¬¦  «        ƒ d {V —†S )N)	r]   rÊ   r¯   rƒ   rB   rØ   rÙ   rÚ   rÛ   )Úasync_agentr0   rK   )rL   r¶   r]   rÊ   r¯   rƒ   rB   rØ   rÙ   rÚ   rÛ   s              r:   r0   zAsyncFirecrawlClient.agentÄ  sd   è è € õ !Ô&ØÔ"ØØØØ#Ø'ØØ#Ø%=ØØð
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 	
r<   c              ƒ   óF   K  — t          j        | j        |¦  «        ƒ d {V —†S rP   )rÝ   Úget_agent_statusrK   ri   s     r:   rß   z%AsyncFirecrawlClient.get_agent_statusà  s.   è è € Ý Ô1°$Ô2HÈ&ÑQÔQÐQÐQÐQÐQÐQÐQÐQr<   )rÊ   r¯   rØ   rÙ   rÚ   rÛ   c             ƒ   óV   K  — t          j        | j        ||||||||¬¦	  «	        ƒ d {V —†S )N)r]   rÊ   r¯   rØ   rÙ   rÚ   rÛ   )rÝ   Ústart_agentrK   )	rL   r¶   r]   rÊ   r¯   rØ   rÙ   rÚ   rÛ   s	            r:   rá   z AsyncFirecrawlClient.start_agentã  s^   è è € õ !Ô,ØÔ"ØØØØ#Ø#Ø%=ØØð

ñ 

ô 

ð 

ð 

ð 

ð 

ð 

ð 

ð 
	
r<   c              ƒ   óF   K  — t          j        | j        |¦  «        ƒ d{V —†S )z’Cancel a running agent job.

        Args:
            job_id: Agent job ID

        Returns:
            True if the agent was cancelled
        N)rÝ   Úcancel_agentrK   ri   s     r:   rã   z!AsyncFirecrawlClient.cancel_agentû  s0   è è € õ !Ô-¨dÔ.DÀfÑMÔMÐMÐMÐMÐMÐMÐMÐMr<   ©ÚttlÚactivity_ttlÚstream_web_viewÚprofilerå   ræ   rç   rè   c             ƒ   óN   K  — t          j        | j        ||||¬¦  «        ƒ d{V —†S )aÉ  Create a new browser session.

        Args:
            ttl: Total time-to-live in seconds (30-3600, default 300)
            activity_ttl: Inactivity TTL in seconds (10-3600)
            stream_web_view: Whether to enable webview streaming
            profile: Profile config with ``name`` (str) and
                optional ``save_changes`` (bool, default ``True``)

        Returns:
            BrowserCreateResponse with session id and CDP URL
        rä   N)Úasync_browserr1   rK   )rL   rå   ræ   rç   rè   s        r:   r1   zAsyncFirecrawlClient.browser  sR   è è € õ( #Ô*ØÔ"ØØ%Ø+Øð
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 	
r<   rc   ©r^   rB   Ú
session_idc             ƒ   óN   K  — t          j        | j        ||||¬¦  «        ƒ d{V —†S )aa  Execute code in a browser session.

        Args:
            session_id: Browser session ID
            code: Code to execute
            language: Programming language ("python", "node", or "bash")
            timeout: Execution timeout in seconds (1-300, default 30)

        Returns:
            BrowserExecuteResponse with execution result
        rë   N)rê   Úbrowser_executerK   )rL   rì   ra   r^   rB   s        r:   rî   z$AsyncFirecrawlClient.browser_execute#  sR   è è € õ& #Ô2ØÔ"ØØØØð
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 	
r<   c              ƒ   óF   K  — t          j        | j        |¦  «        ƒ d{V —†S )z�Delete a browser session.

        Args:
            session_id: Browser session ID

        Returns:
            BrowserDeleteResponse
        N)rê   Údelete_browserrK   )rL   rì   s     r:   rð   z#AsyncFirecrawlClient.delete_browser>  sC   è è € õ #Ô1ØÔ" Jñ
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 	
r<   ©rŒ   rŒ   )ÚactiveÚ	destroyedc             ƒ   óH   K  — t          j        | j        |¬¦  «        ƒ d{V —†S )z½List browser sessions.

        Args:
            status: Filter by session status ("active" or "destroyed")

        Returns:
            BrowserListResponse with list of sessions
        rñ   N)rê   Úlist_browsersrK   )rL   rŒ   s     r:   rõ   z"AsyncFirecrawlClient.list_browsersK  sI   è è € õ #Ô0ØÔ"Øð
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 	
r<   c              ƒ   óH   K  — ddl m}  |j        | j        ¦  «        ƒ d {V —†S ©Nr
   r-   )Úmethods.aior.   Úget_concurrencyrK   ©rL   Úasync_usages     r:   rù   z$AsyncFirecrawlClient.get_concurrency^  ó@   è è € Ø5Ð5Ð5Ð5Ð5Ð5Ø0�[Ô0°Ô1GÑHÔHÐHÐHÐHÐHÐHÐHÐHr<   c              ƒ   óH   K  — ddl m}  |j        | j        ¦  «        ƒ d {V —†S r÷   )rø   r.   Úget_credit_usagerK   rú   s     r:   rþ   z%AsyncFirecrawlClient.get_credit_usageb  ó@   è è € Ø5Ð5Ð5Ð5Ð5Ð5Ø1�[Ô1°$Ô2HÑIÔIÐIÐIÐIÐIÐIÐIÐIr<   c              ƒ   óH   K  — ddl m}  |j        | j        ¦  «        ƒ d {V —†S r÷   )rø   r.   Úget_token_usagerK   rú   s     r:   r  z$AsyncFirecrawlClient.get_token_usagef  rü   r<   FÚ
by_api_keyc              ƒ   óJ   K  — ddl m}  |j        | j        |¦  «        ƒ d {V —†S r÷   )rø   r.   Úget_credit_usage_historicalrK   ©rL   r  rû   s      r:   r  z0AsyncFirecrawlClient.get_credit_usage_historicalj  sC   è è € Ø5Ð5Ð5Ð5Ð5Ð5Ø<�[Ô<¸TÔ=SÐU_Ñ`Ô`Ð`Ð`Ð`Ð`Ð`Ð`Ð`r<   c              ƒ   óJ   K  — ddl m}  |j        | j        |¦  «        ƒ d {V —†S r÷   )rø   r.   Úget_token_usage_historicalrK   r  s      r:   r  z/AsyncFirecrawlClient.get_token_usage_historicaln  sC   è è € Ø5Ð5Ð5Ð5Ð5Ð5Ø;�[Ô;¸DÔ<RÐT^Ñ_Ô_Ð_Ð_Ð_Ð_Ð_Ð_Ð_r<   c              ƒ   óH   K  — ddl m}  |j        | j        ¦  «        ƒ d {V —†S r÷   )rø   r.   Úget_queue_statusrK   rú   s     r:   r	  z%AsyncFirecrawlClient.get_queue_statusr  rÿ   r<   r*   ©Úkindrƒ   rB   r  )r*   r)   c                ó*   — t          | ||||¬¦  «        S )Nr
  r2   )rL   r`   r  rƒ   rB   s        r:   ÚwatcherzAsyncFirecrawlClient.watcherw  s   € õ ˜D &¨tÀ=ÐZaÐbÑbÔbÐbr<   )Nr=   Nr>   r?   rP   )r€   N)F)EÚ__name__Ú
__module__Ú__qualname__ÚstaticmethodÚstrÚboolr;   r   ÚfloatÚintrM   r(   r	   re   rh   rm   rp   rr   r   r+   r   r   r   r‘   r*   r%   r‹   r�   r    r   r¢   r   r¦   r   r¨   r«   r   r,   r   r   r¹   r½   rÁ   r¼   rÄ   rÆ   rÈ   r   r/   rÔ   r×   r   r   r0   rß   rá   rã   r1   rî   rð   rõ   rù   rþ   r  r  r  r	  r3   r  rQ   r<   r:   r5   r5   5   sS  € € € € € Øð2˜sð 2 tð 2ð 2ð 2ñ „\ð2ð
 "&Ø2Ø#'ØØ #ð
ð 
à˜#”ð
ð ð
ð ˜%”ð	
ð
 ð
ð ð
ð 
ð 
ð 
ð8OàðOð Oð Oð Oð #ð
ð
 !%Ø6<Ø!%Ø $ð
ð 
ð 
àð
ð �sŒmð
ð
 ˜”ð
ð Ð2Ô3ð
ð ˜#”ð
ð ˜”ð
ð 
ð 
ð 
ð(
¨Sð 
ð 
ð 
ð 
ð3°Sð 3ð 3ð 3ð 3ð #ð
ð
 !%Ø6<Ø!%Ø $ð
ð 
ð 
àð
ð �sŒmð
ð
 ˜”ð
ð Ð2Ô3ð
ð ˜#”ð
ð ˜”ð
ð 
ð 
ð 
ð(3°#ð 3ð 3ð 3ð 3ð
JàðJð 
ð	Jð Jð Jð Jð	N Sð 	N°}ð 	Nð 	Nð 	Nð 	Nð Ø!%ð	'/ð ,0ð'/ð '/ð '/àð'/ð ð'/ð ˜#”ð	'/ð " %œð'/ð 
ð'/ð '/ð '/ð '/ðR
 xð 
ð 
ð 
ð 
ð& 9=ð
ð
 ,0ð
ð 
ð 
àð
ð $Ð$4Ô5ð
ð
 " %œð
ð 
ð
ð 
ð 
ð 
ðD ,0ð	
ð 
ð 
àð
ð " %œð	
ð
 
ð
ð 
ð 
ð 
ð,N¨ð N°ð Nð Nð Nð NðS¨cð S¸3ð SÀ?ð Sð Sð Sð SðT¨sð TÐ7Jð Tð Tð Tð TðKÐ)=ð Kð Kð Kð Kð.Ð%9ð .ð .ð .ð .ð !%Ø-1Ø#Ø@DØ!%Ø%)ðIð Ið IàðIð ˜”ð	Ið
 % TœNðIð ˜Œ}ðIð ˜'Ð";Ô<Ô=ðIð ˜#”ðIð ˜c”]ðIð 
ðIð Ið Ið Ið*\¨T°#¬Yð \ÀSð \ð \ð \ð \ð/ð /¨cð /À#ð /ÐT\Ð]`ÔTað /Ðmpð /ð /ð /ð /ðb t¨C¤yð b¸sð bð bð bð bð 9=ð	
ð 	
àð	
ð $Ð$4Ô5ð	
ð 	
ð 	
ð 	
ð ,0ð	

ð 

ð 

àð

ð " %œð	

ð 

ð 

ð 

ðU°ð U¸ð Uð Uð Uð UðY°Cð YÐ<Oð Yð Yð Yð Yð %)ð%
ð !%Ø+/Ø'+Ø/3Ø,0Ø'+Ø48Ø.2ØØ!%Ø%)ð%
ð %
ð %
à�t˜C”yÔ!ð%
ð ˜”ð	%
ð
 ˜˜c 3˜hœÔ(ð%
ð   ”}ð%
ð ' tœnð%
ð $ Dœ>ð%
ð ˜t”nð%
ð ! Ô1ð%
ð & dœ^ð%
ð ð%
ð ˜#”ð%
ð ˜c”]ð%
ð %
ð %
ð %
ðNV¨sð Vð Vð Vð Vð %)ð!
ð !%Ø+/Ø'+Ø/3Ø,0Ø'+Ø48Ø.2Ø%)ð!
ð !
ð !
à�t˜C”yÔ!ð!
ð ˜”ð	!
ð
 ˜˜c 3˜hœÔ(ð!
ð   ”}ð!
ð ' tœnð!
ð $ Dœ>ð!
ð ˜t”nð!
ð ! Ô1ð!
ð & dœ^ð!
ð ˜c”]ð!
ð !
ð !
ð !
ðL %)ð
ð
 !%Ø%)ØØ!%Ø%)Ø37ØBFØ<@ð
ð 
ð 
à�t˜C”yÔ!ð
ð ð	
ð
 ˜”ð
ð ˜c”]ð
ð ð
ð ˜#”ð
ð ˜c”]ð
ð #+¨4¤.ð
ð ˜Ð =Ô>Ô?ð
ð ˜% Ð%7Ð 7Ô8Ô9ð
ð 
ð 
ð 
ð8R¨Sð Rð Rð Rð Rð
 %)ð
ð
 !%Ø%)Ø%)Ø37ØBFØ<@ð
ð 
ð 
à�t˜C”yÔ!ð
ð ð	
ð
 ˜”ð
ð ˜c”]ð
ð ˜c”]ð
ð #+¨4¤.ð
ð ˜Ð =Ô>Ô?ð
ð ˜% Ð%7Ð 7Ô8Ô9ð
ð 
ð 
ð 
ð0	N¨ð 	N°ð 	Nð 	Nð 	Nð 	Nð "Ø&*Ø*.Ø,0ð
ð 
ð 
ð �cŒ]ð
ð ˜s”mð	
ð
 " $œð
ð ˜$˜s C˜xœ.Ô)ð
ð 
ð 
ð 
ðB 7=Ø!%ð
ð 
ð 
àð
ð ð
ð
 Ð2Ô3ð
ð ˜#”ð
ð 
ð 
ð 
ð6
¨sð 
ð 
ð 
ð 
ð  <@ð
ð 
ð 
ð ˜Ð!6Ô7Ô8ð
ð 
ð 
ð 
ð&Ið Ið IðJð Jð JðIð Ið Iðað a¸Dð að að að að`ð `¸4ð `ð `ð `ð `ðJð Jð Jð +2ØØ!%ðcð cð càðcð Ð&Ô'ð	cð
 ðcð ˜#”ðcð 
ðcð cð cð cð cð cr<   r5   )BÚ__doc__rG   rŽ   r‰   Útypingr   r   r   r   r   r   r	   Útypesr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   Úutils.http_clientr&   Úutils.http_client_asyncr'   rø   r(   rX   r)   r¸   r*   r~   r+   rv   r,   rµ   r.   rû   r/   rÒ   r0   rÝ   r1   rê   Úwatcher_asyncr3   r5   rQ   r<   r:   ú<module>r     s¤  ððð ð 
€	€	€	Ø €€€Ø €€€Ø FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ Fðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð: *Ð )Ð )Ð )Ð )Ð )Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4à /Ð /Ð /Ð /Ð /Ð /Ø -Ð -Ð -Ð -Ð -Ð -Ø -Ð -Ð -Ð -Ð -Ð -Ø /Ð /Ð /Ð /Ð /Ð /Ø )Ð )Ð )Ð )Ð )Ð )Ø -Ð -Ð -Ð -Ð -Ð -Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø -Ð -Ð -Ð -Ð -Ð -Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1à 'Ð 'Ð 'Ð 'Ð 'Ð 'ðJ	cð J	cð J	cð J	cð J	cñ J	cô J	cð J	cð J	cð J	cr<   