§
    Ü˜ºhœ.  ã                   óz  — d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlmZm	Z	m
Z
mZmZmZmZ d dlmZ d dlmZ  ej        ej        d¬¦  «          ej        e¦  «        Z ee¦  «        j        Zde	eeeee	e         f         f                  d	dfd
„Z G d„ d¦  «        Zdd„Zdd„Zedk    r e¦   «          dS dS )é    N)ÚPath)ÚDictÚListÚLiteralÚMappingÚOptionalÚUnionÚcast©Úenv)Úutilsz%(message)s)ÚlevelÚformatÚservices_statusÚreturnc                 ó€  — g }| D ]š}t          |d         ¦  «        t          |d         ¦  «        dœ}t          t          t                   |                     dg ¦  «        ¦  «        }|r"d                     d„ |D ¦   «         ¦  «        |d<   |                     |¦  «         Œ›t          d„ |D ¦   «         ¦  «        }t          d	„ |D ¦   «         ¦  «        }d
d                     |dz   ¦  «        z   d                     |dz   ¦  «        z   dz   g}|D ]o}|d                              |dz   ¦  «        }|d                              |dz   ¦  «        }	|                     dd¦  «        }
|                     ||	z   |
z   ¦  «         Œp|                     d¦  «         t           
                    d
                     |¦  «        ¦  «         d S )NÚServiceÚStatus)r   r   Ú
Publishersz, c                 ó8   — g | ]}t          |d          ¦  «        ‘ŒS )ÚPublishedPort)Ústr)Ú.0Ú	publishers     úZ/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/langsmith/cli/main.pyú
<listcomp>z#pprint_services.<locals>.<listcomp>   s%   € ÐMÐMÐM°Y•�Y˜Ô/Ñ0Ô0ÐMÐMÐMó    ÚPublishedPortsc              3   ó@   K  — | ]}t          |d          ¦  «        V — ŒdS )r   N©Úlen©r   Úservices     r   ú	<genexpr>z"pprint_services.<locals>.<genexpr>"   s/   è è € ÐJÐJ°g�#˜g iÔ0Ñ1Ô1ÐJÐJÐJÐJÐJÐJr   c              3   ó@   K  — | ]}t          |d          ¦  «        V — ŒdS )r   Nr    r"   s     r   r$   z"pprint_services.<locals>.<genexpr>#   s/   è è € ÐGÐG°7�˜G HÔ-Ñ.Ô.ÐGÐGÐGÐGÐGÐGr   ú
é   zPublished PortsÚ z˜
To connect, set the following environment variables in your LangChain application:
LANGCHAIN_TRACING_V2=true
LANGCHAIN_ENDPOINT=http://localhost:80/api)r   r
   r   r   ÚgetÚjoinÚappendÚmaxÚljustÚloggerÚinfo)r   Úservicesr#   Úservice_statusÚ
publishersÚmax_service_lenÚmax_state_lenÚservice_messageÚservice_strÚ	state_strÚ	ports_strs              r   Úpprint_servicesr9      só  € ð €HØ"ð 
(ð 
(ˆå˜7 9Ô-Ñ.Ô.Ý˜' (Ô+Ñ,Ô,ð*
ð *
ˆõ �$�tœ* g§k¢k°,ÀÑ&CÔ&CÑDÔDˆ
Øð 	Ø/3¯yªyØMÐMÀ*ÐMÑMÔMñ0ô 0ˆNÐ+Ñ,ð 	�Š˜Ñ'Ô'Ð'Ð'åÐJÐJÀÐJÑJÔJÑJÔJ€OÝÐGÐG¸hÐGÑGÔGÑGÔG€MàØ
�/Š/˜/¨AÑ-Ñ
.Ô
.ñ	/à
�.Š.˜¨Ñ*Ñ
+Ô
+ñ	,ð ñ	ð€Oð ð Dð DˆØ˜iÔ(×.Ò.¨ÀÑ/BÑCÔCˆØ˜HÔ%×+Ò+¨M¸AÑ,=Ñ>Ô>ˆ	Ø—K’KÐ 0°"Ñ5Ô5ˆ	Ø×Ò˜{¨YÑ6¸ÑBÑCÔCÐCÐCà×Òð	7ñô ð õ ‡K‚K�—	’	˜/Ñ*Ô*Ñ+Ô+Ð+Ð+Ð+r   c                   ó6  — e Zd ZdZdd„Zedee         fd„¦   «         Zdeddfd„Z	dd„Z
d	d
dœdeed	         ed         ed         f         deddfd„Zd	dd
dœdeed	         ed         ed         f         dee         dededdf
d„Zddeddfd„Zdd„Zdd„ZdS )ÚLangSmithCommandz$Manage the LangSmith Tracing server.r   Nc                 ól   — t          t          ¦  «                             ¦   «         j        dz  | _        d S )Nzdocker-compose.yaml)r   Ú__file__ÚabsoluteÚparentÚdocker_compose_file©Úselfs    r   Ú__init__zLangSmithCommand.__init__<   s.   € å•‰NŒN×#Ò#Ñ%Ô%Ô,Ð/DÑDð 	Ô Ð Ð r   c                 ó(   — t          j        ¦   «         S ©N)Úls_utilsÚget_docker_compose_commandrA   s    r   Údocker_compose_commandz'LangSmithCommand.docker_compose_commandA   s   € åÔ2Ñ4Ô4Ð4r   Úurlc                 óV   — 	 t          j        d|g¦  «         d S # t          $ r Y d S w xY w)NÚopen)Ú
subprocessÚrunÚFileNotFoundError)rB   rI   s     r   Ú_open_browserzLangSmithCommand._open_browserE   sC   € ð	ÝŒN˜F C˜=Ñ)Ô)Ð)Ð)Ð)øÝ ð 	ð 	ð 	ØˆDˆDð	øøøs   ‚ š
(§(c                 óB  — g | j         ¢d‘t          | j        ¦  «        ‘}t          j        g |¢d‘d‘d‘¦  «         t
                               d¦  «         t
                               d¦  «         t
                               d¦  «         |                      d¦  «         d S )	Nú-fÚupz--quiet-pullz--waita  LangSmith server is running at http://localhost:80/api.
To view the app, navigate your browser to http://localhost:80

To connect your LangChain application to the server locally,
set the following environment variable when running your LangChain application.
z	LANGCHAIN_TRACING_V2=truez,	LANGCHAIN_ENDPOINT=http://localhost:80/api
zhttp://localhost)rH   r   r@   rL   rM   r.   r/   rO   )rB   Úcommands     r   Ú_start_localzLangSmithCommand._start_localK   sÐ   € ð
ØÔ(ð
àð
õ �Ô(Ñ)Ô)ð
ˆõ
 	ŒðØðàðð ðð ð	ñ	
ô 	
ð 	
õ 	�Šð:ñ	
ô 	
ð 	
õ 	�ŠÐ1Ñ2Ô2Ð2Ý�ŠÐDÑEÔEÐEØ×ÒÐ-Ñ.Ô.Ð.Ð.Ð.r   ÚprodÚlatest©ÚstageÚversionrX   ÚdevÚbetarY   c                óà   — |dk    rdt           j        d<   n|dk    rdt           j        d<   |t           j        d<   t          j        g | j        ¢d‘t          | j        ¦  «        ‘d‘¦  «         d	S )
z¦Pull the latest LangSmith images.

        Args:
            stage: Which stage of LangSmith images to pull.
                One of "prod", "dev", or "beta".
        rZ   zdev-Ú_LANGSMITH_IMAGE_PREFIXr[   zrc-Ú_LANGSMITH_IMAGE_VERSIONrQ   ÚpullN)ÚosÚenvironrL   rM   rH   r   r@   )rB   rX   rY   s      r   r_   zLangSmithCommand.pulle   s•   € ð �EŠ>ˆ>Ø4:�BŒJÐ0Ñ1Ð1Ø�fŠ_ˆ_Ø49�BŒJÐ0Ñ1Ø18�Œ
Ð-Ñ.ÝŒðØÔ,ðàðõ �DÔ,Ñ-Ô-ðð ð	ñ	
ô 	
ð 	
ð 	
ð 	
r   )rX   Úopenai_api_keyrY   rb   Úlangsmith_license_keyc                ó    — |�|t           j        d<   |�|t           j        d<   |                      ||¬¦  «         |                      ¦   «          dS )aÜ  Run the LangSmith server locally.

        Args:
            expose: If True, expose the server to the internet using ngrok.
            auth_token: The ngrok authtoken to use (visible in the ngrok dashboard).
                If not provided, ngrok server session length will be restricted.
            stage: Which set of images to pull when running.
                One of "prod", "dev", or "beta".
            openai_api_key: The OpenAI API key to use for LangSmith
                If not provided, the OpenAI API Key will be read from the
                OPENAI_API_KEY environment variable. If neither are provided,
                some features of LangSmith will not be available.
            langsmith_license_key: The LangSmith license key to use for LangSmith
                If not provided, the LangSmith license key will be read from the
                LANGSMITH_LICENSE_KEY environment variable. If neither are provided,
                Langsmith will not start up.
        NÚOPENAI_API_KEYÚLANGSMITH_LICENSE_KEYrW   )r`   ra   r_   rT   )rB   rX   rb   rc   rY   s        r   ÚstartzLangSmithCommand.start   sX   € ð2 Ð%Ø+9�BŒJÐ'Ñ(Ø Ð,Ø2G�BŒJÐ.Ñ/Ø�	Š	˜ wˆ	Ñ/Ô/Ð/Ø×ÒÑÔÐÐÐr   FÚclear_volumesc                 ó  — g | j         ¢d‘t          | j        ¦  «        ‘d‘}|rMt          d¦  «        }|                     ¦   «         dk    rt          d¦  «         dS |                     d¦  «         t          j        |¦  «         dS )úStop the LangSmith server.rQ   Údownz…You are about to delete all the locally cached LangSmith containers and volumes. This operation cannot be undone. Are you sure? [y/N]Úyz	Aborting.Nz	--volumes)	rH   r   r@   ÚinputÚlowerÚprintr+   rL   rM   )rB   rh   ÚcmdÚconfirms       r   ÚstopzLangSmithCommand.stopŸ   sª   € ð
ØÔ(ð
àð
õ �Ô(Ñ)Ô)ð
ð ð	
ˆð ð 		$ÝðGñô ˆGð
 �}Š}‰Œ #Ò%Ð%Ý�kÑ"Ô"Ð"Ø�Ø�JŠJ�{Ñ#Ô#Ð#åŒ�sÑÔÐÐÐr   c                 ól   — t          j        g | j        ¢d‘t          | j        ¦  «        ‘d‘¦  «         dS )z)Print the logs from the LangSmith server.rQ   ÚlogsN)rL   rM   rH   r   r@   rA   s    r   rt   zLangSmithCommand.logs´   sW   € åŒðØÔ,ðàðõ �DÔ,Ñ-Ô-ðð ð	ñ	
ô 	
ð 	
ð 	
ð 	
r   c                 óô  — g | j         ¢d‘t          | j        ¦  «        ‘d‘d‘d‘}t          j        |t          j        t          j        ¬¦  «        }	 |j                             d¦  «        }t          j	        |¦  «        }n0# t          j
        $ r t                               d¦  «         Y dS w xY w|r+t                               d	¦  «         t          |¦  «         dS t                               d
¦  «         dS )z6Provide information about the status LangSmith server.rQ   Úpsz--formatÚjson)ÚstdoutÚstderrzutf-8z'Error checking LangSmith server status.Nz*The LangSmith server is currently running.z$The LangSmith server is not running.)rH   r   r@   rL   rM   ÚPIPErx   Údecoderw   ÚloadsÚJSONDecodeErrorr.   Úerrorr/   r9   )rB   rS   ÚresultÚcommand_stdoutr   s        r   ÚstatuszLangSmithCommand.status¿   s   € ð
ØÔ(ð
àð
õ �Ô(Ñ)Ô)ð
ð ð	
ð
 ð
ð ð
ˆõ ”ØÝ”?Ý”?ð
ñ 
ô 
ˆð
	Ø#œ]×1Ò1°'Ñ:Ô:ˆNÝ"œj¨Ñ8Ô8ˆOˆOøÝÔ#ð 	ð 	ð 	Ý�LŠLÐBÑCÔCÐCØˆFˆFð	øøøð ð 	Ý�KŠKÐDÑEÔEÐEÝ˜OÑ,Ô,Ð,Ð,Ð,å�KŠKÐ>Ñ?Ô?Ð?ØˆFs   Á.B Â)B.Â-B.©r   N)F)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rC   Úpropertyr   r   rH   rO   rT   r	   r   r_   r   rg   Úboolrr   rt   r�   © r   r   r;   r;   9   s¶  € € € € € Ø.Ð.ð
ð 
ð 
ð 
ð
 ð5¨¨S¬	ð 5ð 5ð 5ñ „Xð5ð ð ¨ð ð ð ð ð/ð /ð /ð /ð: JPØð	
ð 
ð 
ð �W˜V”_ g¨e¤n°g¸f´oÐEÔFð
ð ð	
ð
 
ð
ð 
ð 
ð 
ð: JPØ(,àðð ð ð �W˜V”_ g¨e¤n°g¸f´oÐEÔFðð ! œð	ð
  #ðð ðð 
ðð ð ð ð@ð  $ð °4ð ð ð ð ð*	
ð 	
ð 	
ð 	
ðð ð ð ð ð r   r;   c                  óÄ  — t          j        ¦   «         } |                      t          j        ¦   «         ¦  «         |                      t          j        ¦   «         ¦  «         t          d„ |                      ¦   «         D ¦   «         ¦  «        }t                               d¦  «         |  	                    ¦   «         D ]&\  }}t                               ||› ›d|› �¦  «         Œ'dS )z*Print the runtime environment information.c              3   ó4   K  — | ]}t          |¦  «        V — Œd S rE   r    )r   Úkeys     r   r$   zenv.<locals>.<genexpr>å   s(   è è € Ð8Ð8 c�˜S™œÐ8Ð8Ð8Ð8Ð8Ð8r   zLangChain Environment:z: N)
Úls_envÚget_runtime_environmentÚupdateÚget_docker_environmentÚget_langchain_env_varsr,   Úkeysr.   r/   Úitems)r   Úmax_key_lengthÚkÚvs       r   r   r   Þ   sÌ   € å
Ô
(Ñ
*Ô
*€CØ‡J‚J�vÔ,Ñ.Ô.Ñ/Ô/Ð/Ø‡J‚J�vÔ,Ñ.Ô.Ñ/Ô/Ð/õ Ð8Ð8¨S¯XªX©Z¬ZÐ8Ñ8Ô8Ñ8Ô8€Nå
‡K‚KÐ(Ñ)Ô)Ð)Ø—	’	‘”ð 2ð 2‰ˆˆ1Ý�Š�q˜.Ð0Ð0Ð0¨QÐ0Ð0Ñ1Ô1Ð1Ð1ð2ð 2r   c                  ó,  ‡	— t          d¦  «         t          d¦  «         t          j        ¦   «         } |                      d¬¦  «        }t	          ¦   «         Š	|                     dd¬¦  «        }|                     ddg d	¢d
¬¦  «         |                     dt          j        d¦  «        d¬¦  «         |                     dt          j        d¦  «        d¬¦  «         |                     ddd¬¦  «         | 	                    ˆ	fd„¬¦  «         |                     dd¬¦  «        }|                     ddd¬¦  «         | 	                    ˆ	fd„¬¦  «         |                     dd ¬¦  «        }|                     ddg d	¢d!¬¦  «         |                     ddd¬¦  «         | 	                    ˆ	fd"„¬¦  «         |                     d#d$¬¦  «        }| 	                    ˆ	fd%„¬¦  «         |                     d&d'¬¦  «        }| 	                    ˆ	fd(„¬¦  «         |                     d)¦  «        }| 	                    d*„ ¬¦  «         |  
                    ¦   «         }t          |d+¦  «        s|                      ¦   «          d,S |                     |¦  «         d,S )-zMain entrypoint for the CLI.z<BY USING THIS SOFTWARE YOU AGREE TO THE TERMS OF SERVICE AT:z0https://smith.langchain.com/terms-of-service.pdfzLangSmith CLI commands)Údescriptionrg   zStart the LangSmith server.z--stagerU   )rU   rZ   r[   z)Which set of images to pull when running.)ÚdefaultÚchoicesÚhelpz--openai-api-keyre   zÒThe OpenAI API key to use for LangSmith. If not provided, the OpenAI API Key will be read from the OPENAI_API_KEY environment variable. If neither are provided, some features of LangSmith will not be available.)r™   r›   z--langsmith-license-keyrf   záThe LangSmith license key to use for LangSmith. If not provided, the LangSmith License Key will be read from the LANGSMITH_LICENSE_KEY environment variable. If neither are provided, the Langsmith application will not spin up.z	--versionrV   zöThe LangSmith version to use for LangSmith. Defaults to latest. We recommend pegging this to the latest static version available at https://hub.docker.com/repository/docker/langchain/langchainplus-backend if you are using Langsmith in production.c                 ó^   •— ‰                      | j        | j        | j        | j        ¬¦  «        S )N)rX   rb   rc   rY   )rg   rX   rb   rc   rY   ©ÚargsÚserver_commands    €r   ú<lambda>zmain.<locals>.<lambda>  s2   ø€ ˜.×.Ò.Ø”*ØÔ.Ø"&Ô"<Ø”Lð	 /ñ 
ô 
€ r   )Úfuncrr   rj   z--clear-volumesÚ
store_truez?Delete all the locally cached LangSmith containers and volumes.)Úactionr›   c                 ó:   •— ‰                      | j        ¬¦  «        S )N)rh   )rr   rh   r�   s    €r   r    zmain.<locals>.<lambda>(  s   ø€ ˜.×-Ò-¸DÔ<NÐ-ÑOÔO€ r   r_   z!Pull the latest LangSmith images.z(Which stage of LangSmith images to pull.c                 óF   •— ‰                      | j        | j        ¬¦  «        S )NrW   )r_   rX   rY   r�   s    €r   r    zmain.<locals>.<lambda>=  s   ø€ ˜.×-Ò-°D´JÈÌÐ-ÑUÔU€ r   rt   zShow the LangSmith server logs.c                 ó,   •— ‰                      ¦   «         S rE   )rt   r�   s    €r   r    zmain.<locals>.<lambda>B  s   ø€ °n×6IÒ6IÑ6KÔ6K€ r   r�   z!Show the LangSmith server status.c                 ó,   •— ‰                      ¦   «         S rE   )r�   r�   s    €r   r    zmain.<locals>.<lambda>F  s   ø€ ¸×8MÒ8MÑ8OÔ8O€ r   r   c                 ó   — t          ¦   «         S rE   r   )rž   s    r   r    zmain.<locals>.<lambda>H  s
   € ­c©e¬e€ r   r¡   N)ro   ÚargparseÚArgumentParserÚadd_subparsersr;   Ú
add_parserÚadd_argumentr`   ÚgetenvÚset_defaultsÚ
parse_argsÚhasattrÚ
print_helpr¡   )
ÚparserÚ
subparsersÚserver_start_parserÚserver_stop_parserÚserver_pull_parserÚserver_logs_parserÚserver_status_parserÚ
env_parserrž   rŸ   s
            @r   Úmainr»   ì   sŽ  ø€ å	Ð
HÑIÔIÐIÝ	Ð
<Ñ=Ô=Ð=åÔ$Ñ&Ô&€FØ×&Ò&Ð3KÐ&ÑLÔL€Jå%Ñ'Ô'€NØ$×/Ò/ØÐ:ð 0ñ ô Ðð ×$Ò$ØØØ'Ð'Ð'Ø8ð	 %ñ ô ð ð ×$Ò$ØÝ”	Ð*Ñ+Ô+ð=ð %ñ ô ð ð ×$Ò$Ø!Ý”	Ð1Ñ2Ô2ð7ð %ñ ô ð ð ×$Ò$ØØð5ð %ñ ô ð ð ×$Ò$ð
ð 
ð 
ð 
ð %ñ ô ð ð $×.Ò.ØÐ8ð /ñ ô Ðð ×#Ò#ØØØNð $ñ ô ð ð
 ×#Ò#ØOÐOÐOÐOð $ñ ô ð ð $×.Ò.ØÐ?ð /ñ ô Ðð ×#Ò#ØØØ'Ð'Ð'Ø7ð	 $ñ ô ð ð ×#Ò#ØØð5ð $ñ ô ð ð ×#Ò#ØUÐUÐUÐUð $ñ ô ð ð $×.Ò.ØÐ=ð /ñ ô Ðð ×#Ò#Ð)KÐ)KÐ)KÐ)KÐ#ÑLÔLÐLØ%×0Ò0ØÐAð 1ñ ô Ðð ×%Ò%Ð+OÐ+OÐ+OÐ+OÐ%ÑPÔPÐPØ×&Ò& uÑ-Ô-€JØ×ÒÐ!3Ð!3ÐÑ4Ô4Ð4à×ÒÑÔ€DÝ�4˜Ñ Ô ð Ø×ÒÑÔÐØˆØ‡I‚Iˆd�O„O€O€O€Or   Ú__main__r‚   ) r©   rw   Úloggingr`   rL   Úpathlibr   Útypingr   r   r   r   r   r	   r
   Ú	langsmithr   r�   r   rF   ÚbasicConfigÚINFOÚ	getLoggerrƒ   r.   r=   r?   Ú_DIRr   r9   r;   r»   r‰   r   r   ú<module>rÅ      sŸ  ðØ €€€Ø €€€Ø €€€Ø 	€	€	€	Ø Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ Fà #Ð #Ð #Ð #Ð #Ð #Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'à €Ô ˜'œ,¨}Ð =Ñ =Ô =Ð =Ø	ˆÔ	˜8Ñ	$Ô	$€à€tˆH�~„~Ô€ð$, T¨'°#°u¸SÀ$ÀsÄ)¸^Ô7LÐ2LÔ*MÔ%Nð $,ÐSWð $,ð $,ð $,ð $,ðNbð bð bð bð bñ bô bð bðJ2ð 2ð 2ð 2ðbð bð bð bðJ ˆzÒÐØ€D�F„F€F€F€Fð Ðr   