§
    	tÃjƒ  ã                  óœ   — d dl mZ d dlZd dlZd dlZd dlmZmZ d dlmZ ddl	m
Z
mZmZ ddlmZ ddlmZ dd	lmZmZ  G d
„ d¦  «        ZdS )é    )ÚannotationsN)ÚdatetimeÚtimezone)ÚPathé   )ÚAgentSessionÚControlErrorÚProject)ÚProjectRegistry)ÚJsonProcess)Ú	idle_onlyÚvalidate_settingsc                  ód   — e Zd ZdZddd„Zdd„Zdd„Zdd„Zd d„Zd!d„Z	d„ Z
d„ Zd„ dœd„Zd„ ZdS )"Ú	PiAdapterÚpiNÚprojectsr   c           
     óª  — ||c| _         | _        || _        t          j        ¦   «         | _        t          t          ¦  «                             ¦   «         j	        d         }t          j                             d¦  «        pt          j        d¦  «        pd}t          j        d¦  «        }t          j                             dd¦  «        }|s>|r<t          t          |¦  «                             ¦   «         j	        d         dz  ¦  «        }i t          j        ¥|d	d
œ¥}	|	                     dt          j                             dt          t          j        ¦   «         dz  ¦  «        ¦  «        ¦  «         |	                     ddt          j                             dd¦  «        › �¦  «         |p#t%          |dt          |dz  ¦  «        g|	¬¦  «        | _        d S )Né   ÚGATEWAY_NODE_BINÚnoder   ÚPI_SDK_MODULEÚ é   zdist/index.jsÚ1)r   ÚDEVICE_LAB_SDK_HOSTÚDEVICE_LAB_CREDENTIALS_FILEÚDEVICE_CREDENTIALS_FILEz(.config/esp32-device-gateway/device.jsonÚDEVICE_LAB_GATEWAY_URLzhttp://127.0.0.1:ÚGATEWAY_PORTÚ8000z--experimental-strip-typeszintegrations/pi/sdk-host.mjs)Úenv)r   Úlive_registryÚ	approvalsÚasyncioÚLockÚlockr   Ú__file__ÚresolveÚparentsÚosÚenvironÚgetÚshutilÚwhichÚstrÚ
setdefaultÚhomer   Úrpc)
Úselfr   r"   r2   r#   Úrepor   Ú	pi_binaryÚsdkr!   s
             ú^/home/lighthouse/esp32-dev/.cache/physical-ui-cleanup-0.6a/server/device_gateway/control/pi.pyÚ__init__zPiAdapter.__init__   s¶  € Ø,4°mÐ)ˆŒ�tÔ)Ø"ˆŒÝ”L‘N”NˆŒ	Ý•H‰~Œ~×%Ò%Ñ'Ô'Ô/°Ô2ˆÝŒz�~Š~Ð0Ñ1Ô1ÐSµV´\À&Ñ5IÔ5IÐSÈVˆÝ”L Ñ&Ô&ˆ	ÝŒj�nŠn˜_¨bÑ1Ô1ˆØð 	N�yð 	NÝ•d˜9‘o”o×-Ò-Ñ/Ô/Ô7¸Ô:¸_ÑLÑMÔMˆCØN•”ÐN¨cÈ#ÐNÐNÐNˆØ�ŠÐ4µb´j·n²nÐE^Õ`cÕdhÔdmÑdoÔdoð  s]ñ  e]ñ  a^ô  a^ñ  7_ô  7_ñ  	`ô  	`ð  	`Ø�ŠÐ/Ð1mÅRÄZÇ^Â^ÐTbÐdjÑEkÔEkÐ1mÐ1mÑnÔnÐnØð  A�+ tÐ-IÍ3ÈtÐVtÑOtÑKuÔKuÐ&vÐ|ð  Añ  Aô  AˆŒˆˆó    Ú
session_idr/   c                óÐ   — | j                              |¦  «        }|rI|j        dk    r>t          j        t
          j        ¦  «        |j        z
                       ¦   «         dk     r|S d S )NÚOFFLINEé-   )	r"   r,   Ústater   Únowr   ÚutcÚlast_activityÚtotal_seconds)r3   r:   Úitems      r7   Ú	live_hintzPiAdapter.live_hint!   sa   € ØÔ!×%Ò% jÑ1Ô1ˆØð 	�D”J )Ò+Ð+µ´½h¼lÑ1KÔ1KÈdÔN`Ñ1`×0oÒ0oÑ0qÔ0qÐtvÒ0vÐ0vØˆKØˆtr9   Úprojectr
   Úreturnúlist[AgentSession]c              ƒ  ó:  ‡ K  — t          |j        ¦  «                             ¦   «         st          dd¦  «        ‚‰ j                             dd|j        i¦  «        ƒ d {V —†}g }|D �]'}t          dd|j        dœ|¤Ž}‰ j         	                    |j
        ¦  «        }|rÚ|j        s‰                      |j
        ¦  «        r¹d|_        |j        dk    r|j        n|d	         |_        t          |j        |j                             ¦   «         ¦  «        |_        |j        |_        |                     ¦   «         d
         |_        |                     ¦   «         d         |_        |j        |_        |j        |_        |                     |¦  «         �Œ)d„ |D ¦   «         }t3          ‰ j        j                             ¦   «         ¦  «        D ]®}|j
        |vr£|j        |j        k    r“‰                      |j
        ¦  «        ry|                     t          d|j        |j
        |j        |j        |j        d|j                             ¦   «         |j        |                     ¦   «         d         ¬¦
  «
        ¦  «         Œ¯‰ j        rˆ fd„|D ¦   «         }t?          |d„ d¬¦  «        S )Nz-registered project directory no longer existsé™  ÚlistÚcwdr   )ÚagentÚ
project_idTr<   r>   Úrecent_textÚ
final_textc                ó   — h | ]	}|j         ’Œ
S © )r:   )Ú.0Úss     r7   ú	<setcomp>z*PiAdapter.list_sessions.<locals>.<setcomp>:   s   € Ð.Ð.Ð. !�”Ð.Ð.Ð.r9   )
rL   rM   r:   ÚnamerK   r>   ÚliveÚ
updated_atÚlatest_activityrO   c                óD   •— g | ]}‰j                              |¦  «        ‘ŒS rQ   )r#   Úoverlay)rR   rS   r3   s     €r7   ú
<listcomp>z+PiAdapter.list_sessions.<locals>.<listcomp>B   s)   ø€ Ð@Ð@Ð@°A�d”n×,Ò,¨QÑ/Ô/Ð@Ð@Ð@r9   c                ó   — | j         S ©N)rW   )rS   s    r7   ú<lambda>z)PiAdapter.list_sessions.<locals>.<lambda>C   s   € ¨A¬L€ r9   )ÚkeyÚreverserQ   ) r   ÚpathÚis_dirr	   r2   Úcallr   Úidr"   r,   r:   rV   rD   r>   ÚmaxrW   rA   Ú	isoformatrX   ÚpublicrN   rO   Úactivity_typeÚwaiting_reasonÚappendrJ   ÚsessionsÚvaluesrK   rU   r#   Úsorted)r3   rE   ÚcatalogÚresultrC   ÚsessionrZ   Úknowns   `       r7   Úlist_sessionszPiAdapter.list_sessions'   sª  øè è € Ý�G”LÑ!Ô!×(Ò(Ñ*Ô*ð 	UÝÐNÐPSÑTÔTÐTØœŸš f¨u°g´lÐ.CÑDÔDÐDÐDÐDÐDÐDÐDˆØˆØð 	#ñ 	#ˆDÝ"ÐM¨¸'¼*ÐMÐMÈÐMÐMˆGØÔ(×,Ò,¨WÔ-?Ñ@Ô@ˆGØð @˜GœLð @¨D¯NªN¸7Ô;MÑ,NÔ,Nð @Ø#�”Ø18´À)Ò1KÐ1K ¤ ÐQUÐV]ÔQ^�”Ý%(¨Ô);¸WÔ=R×=\Ò=\Ñ=^Ô=^Ñ%_Ô%_�Ô"Ø*1Ô*A�Ô'Ø&-§n¢nÑ&6Ô&6°}Ô&E�Ô#Ø%,§^¢^Ñ%5Ô%5°lÔ%C�Ô"Ø(/Ô(=�Ô%Ø)0Ô)?�Ô&Ø�MŠM˜'Ñ"Ô"Ð"Ñ"à.Ð. vÐ.Ñ.Ô.ˆÝ˜DÔ.Ô7×>Ò>Ñ@Ô@ÑAÔAð 	@ð 	@ˆGØÔ!¨Ð.Ð.°7´;À'Ä,Ò3NÐ3NÐSW×SaÒSaÐbiÔbtÑSuÔSuÐ3NØ—’�l°À'Ä*ÐY`ÔYkØ œ¨7¬;¸g¼mÐRVØ&Ô4×>Ò>Ñ@Ô@ÐRYÔRiØ&Ÿ~š~Ñ/Ô/°Ô=ð?ñ ?ô ?ñ @ô @ð @øð Œ>ð 	AØ@Ð@Ð@Ð@¸Ð@Ñ@Ô@ˆFÝ�fÐ"8Ð"8À$ÐGÑGÔGÐGr9   r   c              ƒ  ó¼   K  — | j                              ¦   «         D ]1}|                      |¦  «        ƒ d {V —†D ]}|j        |k    r|c c S ŒŒ2t	          dd¦  «        ‚)Nz(session not found in registered projectsi”  )r   rJ   rr   r:   r	   )r3   r:   rE   rp   s       r7   Úget_sessionzPiAdapter.get_sessionE   sŠ   è è € Ø”}×)Ò)Ñ+Ô+ð 	#ð 	#ˆGØ!%×!3Ò!3°GÑ!<Ô!<Ð<Ð<Ð<Ð<Ð<Ð<ð #ð #�ØÔ%¨Ò3Ð3Ø"�N�N�N�N�Nð 4ð#õ ÐEÀsÑKÔKÐKr9   Úboolc           	   ƒ  ó0  K  — | j         4 ƒd {V —† |                      |¦  «        ƒ d {V —†}| j                             d||j        |                      |¦  «        d u dœ¦  «        ƒ d {V —†}|d         cd d d ¦  «        ƒd {V —† S # 1 ƒd {V —†swxY w Y   d S )NÚresume©r:   rK   Úallow_resumeÚresumed©r&   rt   r2   rc   rK   rD   )r3   r:   rp   ro   s       r7   Úresume_sessionzPiAdapter.resume_sessionL   s^  è è € Ø”9ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%Ø ×,Ò,¨ZÑ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8ˆGØœ8Ÿ=š=¨À*ÐU\ÔU`Ø $§¢¨zÑ :Ô :¸dÐ Bð4Dð 4Dñ Eô Eð Eð Eð Eð Eð Eð EˆFà˜)Ô$ð		%ð 	%ð 	%ð 	%ñ 	%ô 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%øøøð 	%ð 	%ð 	%ð 	%ð 	%ð 	%s   �A"BÂ
BÂBÚtextÚdictc           
   ƒ  ó"  K  — | j         4 ƒd {V —† |                      |¦  «        ƒ d {V —†}| j                             d||j        ||                      |¦  «        d u dœ¦  «        ƒ d {V —†cd d d ¦  «        ƒd {V —† S # 1 ƒd {V —†swxY w Y   d S )NÚinput)r:   rK   r}   ry   r{   )r3   r:   r}   rp   s       r7   Ú
send_inputzPiAdapter.send_inputS   s|  è è € Ø”9ð 	Sð 	Sð 	Sð 	Sð 	Sð 	Sð 	Sð 	SØ ×,Ò,¨ZÑ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8ˆGØœŸš w¸zÐRYÔR]Ø¨d¯nªn¸ZÑ.HÔ.HÈDÐ.Pð1Rð 1Rñ Sô Sð Sð Sð Sð Sð Sð Sð	Sð 	Sð 	Sð 	Sñ 	Sô 	Sð 	Sð 	Sð 	Sð 	Sð 	Sð 	Sð 	Sð 	Sð 	Sð 	Sð 	Sð 	Sð 	Sð 	Sð 	Sð 	Sð 	Sð 	Søøøð 	Sð 	Sð 	Sð 	Sð 	Sð 	Ss   �AA>Á>
BÂBc              ƒ  óº   K  — |                       |¦  «        ƒ d {V —†}| j                             d||j        |                      |¦  «        d u dœ¦  «        ƒ d {V —†S )NÚsettingsrx   )rt   r2   rc   rK   rD   )r3   r:   rp   s      r7   Úget_settingszPiAdapter.get_settingsY   s”   è è € Ø×(Ò(¨Ñ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4ˆØ”X—]’] :¸jÐQXÔQ\Ø ŸNšN¨:Ñ6Ô6¸$Ð>ð0@ð 0@ñ Aô Að Að Að Að Að Að Að 	Ar9   c              ƒ  óH   K  — |                       |¦  «        ƒ d {V —†d         S )NÚavailable_models)r„   )r3   r:   s     r7   Úlist_modelszPiAdapter.list_models^   s2   è è € Ø×'Ò'¨
Ñ3Ô3Ð3Ð3Ð3Ð3Ð3Ð3Ð5GÔHÐHr9   c                 ó   — dS )NTrQ   rQ   r9   r7   r^   zPiAdapter.<lambda>a   s   € Èd€ r9   )Ústill_validc          
   ƒ  ó   K  — | j         4 ƒd {V —† |                      |¦  «        ƒ d {V —†}t          |¦  «         |                      |¦  «        ƒ d {V —†}t	          ||¦  «        \  }} |¦   «         st          dd¦  «        ‚t          |                      |¦  «        ƒ d {V —†¦  «         | j                             d||j        ||  	                    |¦  «        d u dœ¦  «        ƒ d {V —†cd d d ¦  «        ƒd {V —† S # 1 ƒd {V —†swxY w Y   d S )Nzsettings request cancelledrI   Úupdate_settings)r:   rK   Úmodelry   )
r&   rt   r   r„   r   r	   r2   rc   rK   rD   )r3   r:   Úvaluer‰   rp   ÚcurrentrŒ   Úefforts           r7   r‹   zPiAdapter.update_settingsa   s  è è € Ø”9ð 	Uð 	Uð 	Uð 	Uð 	Uð 	Uð 	Uð 	UØ ×,Ò,¨ZÑ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8ˆGÝ�gÑÔÐØ ×-Ò-¨jÑ9Ô9Ð9Ð9Ð9Ð9Ð9Ð9ˆGÝ-¨e°WÑ=Ô=‰MˆE�6Ø�;‘=”=ÐW­Ð5QÐSVÑ(WÔ(WÐ"WÝ˜D×,Ò,¨ZÑ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8Ñ9Ô9Ð9ØœŸšÐ'8ÈÐ\cÔ\gØ°·²¸zÑ0JÔ0JÈdÐ0Rð;Tð ;Tñ Uô Uð Uð Uð Uð Uð Uð Uð	Uð 	Uð 	Uð 	Uñ 	Uô 	Uð 	Uð 	Uð 	Uð 	Uð 	Uð 	Uð 	Uð 	Uð 	Uð 	Uð 	Uð 	Uð 	Uð 	Uð 	Uð 	Uð 	Uð 	Uøøøð 	Uð 	Uð 	Uð 	Uð 	Uð 	Us   �CC=Ã=
DÄ
Dc              ƒ  óH   K  — | j                              ¦   «         ƒ d {V —† d S r]   )r2   Úclose)r3   s    r7   r‘   zPiAdapter.closel   s0   è è € ØŒh�nŠnÑÔÐÐÐÐÐÐÐÐÐr9   )NN)r   r   )r:   r/   )rE   r
   rF   rG   )r:   r/   rF   r   )r:   r/   rF   ru   )r:   r/   r}   r/   rF   r~   )Ú__name__Ú
__module__Ú__qualname__Ú
agent_typer8   rD   rr   rt   r|   r�   r„   r‡   r‹   r‘   rQ   r9   r7   r   r      s  € € € € € Ø€JðAð Að Að Að Aðð ð ð ðHð Hð Hð Hð<Lð Lð Lð Lð%ð %ð %ð %ðSð Sð Sð SðAð Að Að
Ið Ið Ið GSÀlð 	Uð 	Uð 	Uð 	Uð 	Uðð ð ð ð r9   r   )Ú
__future__r   r$   r*   r-   r   r   Úpathlibr   Úmodelsr   r	   r
   r   r   r2   r   rƒ   r   r   r   rQ   r9   r7   ú<module>r™      sò   ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø 	€	€	€	Ø €€€Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø Ð Ð Ð Ð Ð à 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø %Ð %Ð %Ð %Ð %Ð %Ø Ð Ð Ð Ð Ð Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2ð^ð ^ð ^ð ^ð ^ñ ^ô ^ð ^ð ^ð ^r9   