+
    kHàj3E  ã                  ód  € R t ^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIH	t	 ^ RI
HtHt ^RIHt ^RIHt ^ RIHtHt ^RIHtHtHt ^ RItR	 R
 ltR R ltR R ltR R ltR R ltR R ltR R lt R R lt!R R lt"R R lt#R R lt$R R  lt%R!] R"]"R#R$ R%]$/t&R& R' lt'R(R)/R* R+ llt(R# ),ac  ``hermes photon ...`` CLI subcommands (registered via ``ctx.register_cli_command()``):
setup (device login + project + user + sidecar), status, install-sidecar (npm install in
the sidecar dir), telemetry [on|off]. Device login is the first step of ``setup`` (no
standalone ``login`` verb); inbound is the gRPC stream, so there are no webhook subcommands.
)ÚannotationsN)ÚOptional)ÚColorsÚcolor)Úauth)Úsidecar_deps_installed)Úfind_node_executableÚwith_hermes_node_path)Ú_NPM_ERROR_LOG_MAX_CHARSÚ_npm_error_logÚ_sidecar_dirc               ó    € V ^8„  d   QhRRRR/# )é   Úparserzargparse.ArgumentParserÚreturnÚNone© )Úformats   "ÚA/home/ubuntu/.hermes/hermes-agent/plugins/platforms/photon/cli.pyÚ__annotate__r      s   € ÷ 'ñ 'Ð0ð '°Tñ 'ó    c                ó,  € V P                  RRR7      pVP                  RRR7      pVP                  RRR	R
7       VP                  RRRR
7       VP                  RRR7       VP                  RRR7       VP                  RRR7       VP                  RRRR7       VP                  RRRR7       VP                  RRR7       VP                  RRR7       VP                  RRR7      pVP                  RRR"RR 7       V P                  \        R!7       R# )#z(Wire up `hermes photon ...` subcommands.Úphoton_commandF)ÚdestÚrequiredÚsetupz:First-time setup (device login + project + user + sidecar))Úhelpz--project-nameNz&Project name (default: 'Hermes Agent'))Údefaultr   z--phonez+Your E.164 phone number (e.g. +15551234567)z--first-name)r   z--last-namez--emailz--no-browserÚ
store_truez@Don't try to open a browser for device login; print the URL only)Úactionr   z--skip-sidecar-installz/Skip `npm install` inside the sidecar directoryÚstatusz(Show login + project + sidecar dep stateúinstall-sidecarz,Run npm install inside the sidecar directoryÚ	telemetryz.Show or toggle Spectrum SDK telemetry (on/off)ÚstateÚ?z9Turn telemetry on or off (omit to show the current state))ÚnargsÚchoicesr   )Úfunc)ÚonÚoff)Úadd_subparsersÚ
add_parserÚadd_argumentÚset_defaultsÚdispatch)r   ÚsubsÚp_setupÚp_telemetrys   &   r   Úregister_clir2      s/  € à× Ñ Ð&6ÀÐ ÓG€DØ�o‰o˜gÐ,hˆoÓi€GØ×ÑÐ)°4Ð>fÐÔgØ×Ñ˜¨DÐ7dÐÔeØ×Ñ˜°ÐÔ6Ø×Ñ˜°ÐÔ5Ø×Ñ˜¨DÐÔ1Ø×Ñ˜°Ø`ð ô bà×ÑÐ1¸,ØOð ô Qà‡O�O�HÐ#M€OÔNØ‡O�OÐ%Ð,Z€OÔ[Ø—/‘/ +Ð4d�/Óe€KØ×ÑØ�s MØHð ô Jð ×ÑœXÐÖ&r   c               ó    € V ^8„  d   QhRRRR/# ©r   Úargsúargparse.Namespacer   Úintr   )r   s   "r   r   r   .   s   € ÷ ñ Ð%ð ¨#ñ r   c                ó²   € \        V R R4      pVf   \        M\        P                  V4      pVf!   \	        RV 2\
        P                  R7       ^# V! V 4      # )r   Nzunknown subcommand: ©Úfile)ÚgetattrÚ_cmd_statusÚ	_COMMANDSÚgetÚprintÚsysÚstderr)r5   ÚsubÚhandlers   &  r   r.   r.   .   sM   € Ü
�$Ð(¨$Ó
/€CØ š[�k¬i¯m©m¸CÓ.@€GØ‚ÜÐ$ S EÐ*´·±Õ<ÙÙ�4‹=Ðr   c               ó    € V ^8„  d   QhRRRR/# r4   r   )r   s   "r   r   r   9   s   € ÷ ñ Ð.ð °3ñ r   c                ó  € R p \         P                  ! V P                  '       * VR7       \	        R\         P                  ! 4        24       ^ #   \         d*   p\	        RT 2\
        P                  R7        Rp?^# Rp?ii ; i)zXRun the RFC 8628 device-code login flow and persist the token (first step of ``setup``).c                óz   € \        R V P                  ;'       g    V P                   RV P                   R24       R# )uª   
â”Œâ”€ Photon device login â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€
â”‚  Open this URL:  u   
â”‚  Enter the code: uð   
â”‚  (waiting for approval â€” Ctrl-C to cancel)
â””â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€
N)r?   Úverification_uri_completeÚverification_uriÚ	user_code)Úcodes   &r   Ú_print_codeÚ&_run_device_login.<locals>._print_code;   sF   € Üð &Ø&*×&DÑ&D×&]Ð&]È×H]ÑH]Ð%^ð _&Ø&*§n¡nÐ%5ð 6PðPö 	Qr   )Úopen_browserÚon_user_codezlogin failed: r9   Nu!   âœ“ logged in â€” token saved to )Úphoton_authÚlogin_device_flowÚ
no_browserÚ	Exceptionr?   r@   rA   Ú_auth_json_path)r5   rK   Úes   &  r   Ú_run_device_loginrU   9   sn   € òQðÜ×%Ò%°t·±Ô3FÐU`Õaô
 
Ð-¬k×.IÒ.IÓ.KÐ-LÐ
MÔNÙøô ô Ü�˜q˜cÐ"¬¯©Õ4Ýûðús   …'A ÁBÁA>Á>Bc               ó    € V ^8„  d   QhRRRR/# )r   r5   r6   r   úOptional[str]r   )r   s   "r   r   r   K   s   € ÷ ñ Ð)ð ¨mñ r   c                ó¨  € \         P                  ! 4       pV'       d`   \        R4       \         P                  ! V4      '       d   \        R4       \        R4       V# \        R4       \         P                  ! 4        \        R4       \        V 4      ^ 8w  d   R# \         P                  ! 4       pV'       g   \        R\        P                  R7       V# )	zI[1/5] Reuse a valid dashboard token or run device login; None on failure.z'[1/5] Checking existing Photon token...u     âœ“ token is validz#[1/5] Reusing existing Photon tokenuB     âœ— token is stale (dashboard rejected it) â€” re-authenticatingu=   [1/5] No valid Photon token found â€” running device login...Nz(login completed but token was not storedr9   )rO   Úload_photon_tokenr?   Úcheck_photon_token_validÚclear_photon_tokenrU   r@   rA   )r5   Útokens   & r   Ú_setup_tokenr]   K   s™   € ä×)Ò)Ó+€Eßô 	Ð7Ô8Ü×/Ò/°×6Ò6ÜÐ(Ô)ÜÐ7Ô8ØˆLÜÐRÔSÜ×&Ò&Ô(Ü	Ð
IÔJÜ˜Ó !Ô#ÙÜ×)Ò)Ó+€EßÜÐ8¼s¿z¹zÕJØ€Lr   c               ó$   € V ^8„  d   QhRRRRRR/# )r   r\   ÚstrÚnamer   rW   r   )r   s   "r   r   r   a   s!   € ÷ ñ ˜#ð  Sð ¨]ñ r   c                ó0  € \         P                  ! 4       p V'       d   \        R4       M�\         P                  ! W4      ;p'       d1   VP	                  R4      '       d   VR,          p\        RV R24       MA\        RV R24       \         P
                  ! WR7      P	                  R4      p\        R4        V'       g   \        R\        P                  R
7       R# V#   \         d*   p\        R	T 2\        P                  R
7        Rp?R# Rp?ii ; i)zD[2/5] Find or create the project; returns its id or None on failure.z'[2/5] Reusing configured Photon projectÚidz[2/5] Found existing project 'Ú'z[2/5] Creating Photon project 'z'...)r`   u     âœ“ project createdzproject setup failed: r9   Nz%could not resolve a Photon project id)	rO   Úload_dashboard_project_idr?   Úfind_project_by_namer>   Úcreate_projectrR   r@   rA   )r\   r`   Údashboard_idÚexistingrT   s   &&   r   Ú_setup_projectri   a   sß   € ä×8Ò8Ó:€LðßÜÐ;Õ<Ü%×:Ò:¸5ÓGÐGˆhÖGÈXÏ\É\ÐZ^×M_ÒM_Ø# D�>ˆLÜÐ2°4°&¸Ð:Õ;äÐ3°D°6¸Ð>Ô?Ü&×5Ò5°eÔG×KÑKÈDÓQˆLÜÐ)Õ*÷ ÜÐ5¼C¿J¹JÕGÙØÐøô ô ÜÐ& q cÐ*´·±Õ<Ýûðús.   —C! ŸC! «4C! Á C! Á9A C! Ã!DÃ,DÄDc               ó(   € V ^8„  d   QhRRRRRRRR/# )r   r\   r_   rg   r`   r   rW   r   )r   s   "r   r   r   w   s(   € ÷  ñ  ˜cð  °ð  ¸Cð  ÀMñ  r   c                ót  €  \        R4       \        P                  ! 4       w  r4RpV'       dL   V'       dD   \        P                  ! \
        4      ;_uu_ 4        \        P                  ! W44       TpRRR4       \        V4      pV'       g   \        P                  ! W4      p\        P                  ! WWR7       V'       d   \        RV R24       V# \        RV R24       \        R4        V#   + '       g   i     L‡; i  \
         d*   p\        R	T 2\        P                  R
7        Rp?R# Rp?ii ; i)zì[3/5] Provision Spectrum credentials (runtime -> .env, ids -> auth.json); the dashboard
id *is* the Spectrum id. A valid existing secret is reused: regenerating breaks a running
sidecar's sends until restart. Returns the secret or None.z*[3/5] Provisioning Spectrum credentials...Ú N)Úspectrum_project_idÚproject_secretÚdashboard_project_idr`   u!     âœ“ Spectrum ready (project id u    ) â€” existing credentials validu   ) â€” new secret savedu�     âš  Project secret was regenerated. If the gateway is running, restart it so the sidecar picks up the new secret:
      hermes gateway restartzspectrum provisioning failed: r9   )r?   rO   Úload_project_credentialsÚ
contextlibÚsuppressrR   Ú
list_usersÚboolÚregenerate_project_secretÚstore_project_credentialsr@   rA   )r\   rg   r`   Úexisting_idÚexisting_secretÚsecretÚreusedrT   s   &&&     r   Ú_setup_credentialsr{   w   s  € ðô 	Ð:Ô;Ü'2×'KÒ'KÓ'MÑ$ˆØˆßŸ?Ü×$Ò$¤Y×/Õ/Ü×&Ò& {ÔDØ(�÷ 0ô �f“ˆßÜ ×:Ò:¸5ÓOˆFÜ×-Ò-Ø ,ÐZfõ	sçÜÐ5°l°^ÐCcÐdÔeð €Mô Ð5°l°^ÐCYÐZÔ[Üð 1õ 2ð €M÷% 0×/ûô ô ÜÐ.¨q¨cÐ2¼¿¹ÕDÝûðús;   ‚3D ¶"D ÁC0Á1A D ÃD Ã0D 	Ã;D ÄD7ÄD2Ä2D7c               ó    € V ^8„  d   QhRRRR/# r4   r   )r   s   "r   r   r   š   s   € ÷ Fñ FÐ'ð F¨Cñ Fr   c                óÜ  € V P                   ;'       g    \        P                  p\        V 4      pT;'       d    \	        W!4      pT;'       d    \        W#V4      pV'       g   ^# V P                  ;'       g$    \        \        R\        P                  4      4      pR;p;rxV'       g   \        R4       M„ \        P                  ! W4WPP                  V P                  V P                  R7      w  rš\        T
'       d   RMR	4       TpT	P)                  R
4      p\        P*                  ! T	4      p\-        T4       V'       g1    \        P.                  ! W#4      pV'       d   VP)                  R4      pV'       d¾   \        RRP1                  \        R\        P2                  4      \        R\        P2                  4      \        \5        V4      \        P2                  \        P6                  4      ,           \        R\        P2                  4      \        R\        P2                  4      34      ,           4       M\        R4       V'       d.    \        P8                  ! YvV'       d   \5        V4      MRVR7       V P:                  '       d   \        R4       M\        R4       \=        4       pV^ 8w  d   V#  ^ RIH p V! RRRRR7       \        R4       \        R4       ^ #   \          d*   p\        RT 2\"        P$                  R7        Rp?^# Rp?i\&         d*   p\        RT 2\"        P$                  R7        Rp?^# Rp?ii ; i  \&         d+   p\        RT R2\"        P$                  R7        Rp?ELRp?ii ; i  \&         d+   p\        RT R2\"        P$                  R7        Rp?EL8Rp?ii ; i  \&         d+   p\        RT R2\"        P$                  R7        Rp?ELRp?ii ; i) é   z=[4/5] Your iMessage phone number (E.164, e.g. +15551234567): NzL      Skipped user registration (no phone given). Re-run with --phone later.)Úphone_numberÚ
first_nameÚ	last_nameÚemailz      invalid phone number: r9   z       user registration failed: u     âœ“ phone registeredu     âœ“ phone already registeredrb   ÚphoneNumberz*      (could not fetch the assigned line: Ú)Ú
u�   â”Œâ”€ Your agent's iMessage number â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€u
   â”‚  ðŸ“± u<   â”‚  Text this number from your phone to talk to your agent.u½   â””â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€uC         No iMessage line assigned yet â€” check the Photon dashboard.)r   Úassigned_phone_numberÚuser_idro   z.      (could not save Photon status metadata: z;[5/5] Skipping sidecar npm install (--skip-sidecar-install)z3[5/5] Installing Node sidecar deps (spectrum-ts)...)Úwrite_platform_config_fieldÚphotonÚenabledT)Úrawu,     âœ“ photon platform enabled in config.yamlz*      (could not enable Photon in config: uF   
âœ“ Photon setup complete.
  Start the gateway:  hermes gateway start)!Úproject_namerO   ÚDEFAULT_PROJECT_NAMEr]   ri   r{   ÚphoneÚ_promptr   r   ÚCYANr?   Úregister_user_if_absentr€   r�   r‚   Ú
ValueErrorr@   rA   rR   r>   Úuser_assigned_lineÚ_autoconfigure_accessÚget_imessage_lineÚjoinÚGREENr_   ÚBOLDÚstore_user_numbersÚskip_sidecar_installÚ_install_sidecarÚhermes_cli.configrˆ   )r5   r`   r\   rg   ry   rŽ   Úagent_numberÚregistered_phoneÚregistered_user_idÚuserÚcreatedrT   ÚlineÚrcrˆ   s   &              r   Ú
_cmd_setupr¤   š   sD  € Ø×Ñ×@Ð@¤× @Ñ @€DÜ˜Ó€EØ×8Ð8œ^¨EÓ8€LØ×KÐKÔ0°ÀdÓK€FßÙà�J‰J×vÐvœ'¤%Ð(gÔio×itÑitÓ"uÓv€EØ;?Ð?€LÐ?Ð#ßÜÐ\Õ]ð		Ü'×?Ò?Ø°5Ç_Á_ØŸ.™.°·
±
ô<‰MˆDô 	¯'Ñ&Ð7WÔXØ ÐØ!ŸX™X d›^Ðô #×5Ò5°dÓ;ˆä˜eÔ$çð	VÜ×0Ò0°ÓEˆDßØ#Ÿx™x¨Ó6�÷ Üˆd�T—Y‘YÜð  Vô  X^÷  Xdñ  Xdó  eÜ�,¤§¡Ó-´´c¸,Ó6GÌÏÉÔW]×WbÑWbÓ0cÕcÜÐPÔRX×R^ÑR^Ó_Üð  Rô  TZ÷  T`ñ  T`ó  að	 bó cõ cõ 	dô 	ÐSÔTßð	ZÜ×*Ò*Ø-ß3EœÐ.Ô/È4Ðfrõtð × × Ð ÜÐKÕLäÐCÔDÜÓˆØ�Œ7ØˆIðRÝAÙ# H¨i¸À4ÕHÜÐ<Ô=ô 
Ð
TÔUÙøôk ô 	ÜÐ0°°Ð4¼3¿:¹:ÕFÝûÜô 	ÜÐ4°Q°CÐ8¼s¿z¹zÕJÝûð	ûô" ô 	VÜÐ>¸q¸cÀÐCÌ#Ï*É*×UÓUûð	Vûô ô 	ZÜÐBÀ1À#ÀQÐGÌcÏjÉj×YÓYûð	Zûô ô RÜÐ:¸1¸#¸QÐ?ÄcÇjÁj×QÓQûðRúsr   Â6:K Å/M É
,M> Ê3N6 ËMË(LÌMÌMÌL>Ì>MÍM;ÍM6Í6M;Í>N3Î	N.Î.N3Î6O+ÏO&Ï&O+c               ó    € V ^8„  d   QhRRRR/# )r   rŽ   r_   r   r   r   )r   s   "r   r   r   ã   s   € ÷ Fñ F ð F¨ñ Fr   c                ó:  €  ^ RI HpHp R F?  w  r4 T! T4      '       d   \	        RT R24       K%  T! Y04       \	        RT RT R24       KA  	  R#   \         d     R# i ; i  \
         d-   p\	        RT R	T 2\        P                  R
7        Rp?K‰  Rp?ii ; i)z“Set PHOTON_ALLOWED_USERS and PHOTON_HOME_CHANNEL to the operator's number, each only
when unset so a hand-tuned value is never clobbered on re-run.)Úget_env_valueÚsave_env_valueNz      u"    already set â€” leaving it as-is.u     âœ“ z (r„   z      could not set z: r9   ))ÚPHOTON_ALLOWED_USERSzallowlisted your number)ÚPHOTON_HOME_CHANNELz$set your DM as the cron home channel)rœ   r§   r¨   ÚImportErrorr?   rR   r@   rA   )rŽ   r§   r¨   ÚkeyÚlabelrT   s   &     r   r”   r”   ã   s¥   € ðßCóX‰
ˆð	FÙ˜S×!Ò!Ü˜˜s˜eÐ#EÐFÔGÙÙ˜3Ô&Ü�F˜5˜'  C 5¨Ð*Ö+óXøô ô Úðûô ô 	FÜÐ(¨¨¨R°¨sÐ3¼#¿*¹*×EÓEûð	Fús-   ‚A ’A#±A#ÁA ÁA Á#BÁ.!BÂBc               ó    € V ^8„  d   QhRRRR/# )r   Ú_argsr6   r   r7   r   )r   s   "r   r   r   ö   s   € ÷ ñ Ð)ð ¨cñ r   c                ó:  € \         P                  ! 4       w  rV'       d	   V'       g?   \         P                  ! 4       w  r4V'       d    V'       d    \         P                  ! W44       \         P                  ! \
        4       \        R4      p\        RT;'       g    R 24       \        R\        4       '       d   RMR	 24       \        R
\        4       '       d   RMR R24       ^ #   \         d*   p\        R T R2\        P                  R7        Rp?L¯Rp?ii ; i)z.      (could not refresh Photon user numbers: r„   r9   NÚnodez  node binary         : u   âœ— missing (install Node 18+)z  sidecar deps        : u   âœ“ installedu'   âœ— run `hermes photon install-sidecar`z  telemetry           : r(   r)   z# (`hermes photon telemetry on|off`))rO   Úload_user_numbersrp   Úrefresh_user_numbersrR   r?   r@   rA   Úprint_credential_summaryr   r   Ú_telemetry_enabled)r¯   rŽ   ÚassignedÚspectrum_idrn   rT   Únode_bins   &      r   r<   r<   ö   sï   € Ü!×3Ò3Ó5�O€Eß—hÜ&1×&JÒ&JÓ&LÑ#ˆßŸ>ð^Ü×0Ò0°ÔMô
 ×(Ò(¬Ô/Ü# FÓ+€HÜ	Ð$ X×%QÐ%QÐ1QÐ$RÐ
SÔTÜ	Ð$Ô8N×8PÒ8P¡_ÐVð  %Að  Bô  CÜ	Ð$Ô-?×-AÒ-A¡TÀuÐ$MÐMpÐ
qÔrÙøô ô ^ÜÐFÀqÀcÈÐKÔRU×R\ÑR\×]Ò]ûð^ús   ÁC& Ã&DÃ1DÄDc               ó   € V ^8„  d   QhRR/# )r   r   rt   r   )r   s   "r   r   r   	  s   € ÷ Eñ E˜Dñ Er   c                 óÄ   €  ^ RI Hp  V ! R4      pT;'       g    RP                  4       P                  4       R9   #   \         d    \        P                  ! R4      p LNi ; i)zMPHOTON_TELEMETRY from env / ~/.hermes/.env; truthy set mirrors the sidecar's.)r§   ÚPHOTON_TELEMETRYrl   )Ú1ÚtrueÚyesr(   )rœ   r§   r«   ÚosÚgetenvÚstripÚlower)r§   r‹   s     r   rµ   rµ   	  s[   € ð,Ý3ÙÐ.Ó/ˆð �IˆI�2×ÑÓ×$Ñ$Ó&Ð*DÑDÐDøô ô ,Ü�iŠiÐ*Ó+Šð,ús   ‚; »!AÁAc               ó    € V ^8„  d   QhRRRR/# r4   r   )r   s   "r   r   r     s   € ÷ ñ Ð+ð °ñ r   c                óV  € \        V R R4      pVf.   \        R\        4       '       d   RMR 24       \        R4       ^ #  ^ RIHp T! RVR8X  d   RMR	4       \        RT R24       \        R4       ^ #   \
         d*   p\        R
T 2\        P                  R7        Rp?^# Rp?ii ; i)r#   NzPhoton telemetry: r(   r)   zK  Toggle with `hermes photon telemetry on` / `hermes photon telemetry off`.)r¨   r»   r½   Úfalsez!could not save PHOTON_TELEMETRY: r9   u   âœ“ Spectrum telemetry turned z% (PHOTON_TELEMETRY in ~/.hermes/.env)zL  Restart the gateway for the sidecar to pick it up:  hermes gateway restart)r;   r?   rµ   rœ   r¨   rR   r@   rA   )r5   r#   r¨   rT   s   &   r   Ú_cmd_telemetryrÆ     s¤   € Ü�D˜' 4Ó(€EØ‚}ÜÐ"Ô+=×+?Ò+?¡4ÀUÐ"KÐLÔMÜÐ[Ô\ÙðÝ4ÙÐ)°U¸d´]©6ÈÔPô 
Ð*¨5¨'Ð1VÐ
WÔXÜ	Ð
XÔYÙøô ô ÜÐ1°!°Ð5¼C¿J¹JÕGÝûðús   Á A4 Á4B(Á?B#Â#B(c               ó   € V ^8„  d   QhRR/# )r   r   r7   r   )r   s   "r   r   r   $  s   € ÷ (ñ (˜#ñ (r   c                 ó$  aa€ ^ RI p  \        R4      o\        4       oSfh   V P                  RRR7      P                  oV P                  R4      pVe   VP                  f   V P                  RR4      h\        VP                  4      o\        R\        4        R	S R
24       R TT3R llpT! R4      pTP                  ^ 8w  d   \        RS R24       T! R4      pTP                  ;'       g    RP                  4       R\         pTP                  ^ 8w  d   \        R\        P                  R7       \         P"                  ! \$        4      ;_uu_ 4        TP                  ^ 8X  d   \'        4       P)                  4        M#T'       d   \'        4       P+                  TRR7       RRR4       TP                  #   T P                   d*   p\        RT 2\        P                  R7        Rp?^# Rp?ii ; i  + '       g   i     TP                  # ; i)é    NÚnpmT)Úexplicitz+ensured but no selected binary was recordedz'Could not prepare Photon dependencies: r9   z  $ cd z && z cic               ó    € V ^8„  d   QhRRRR/# )r   Úverbr_   r   zsubprocess.CompletedProcessr   )r   s   "r   r   Ú&_install_sidecar.<locals>.__annotate__8  s   € ÷ ñ �3ð Ð6ñ r   c           
     ó  <€ \         P                  ! SV .\         P                  \        \	        4       4      R \         P
                  RSR7      pVP                  '       d'   \        VP                  R\        P                  R7       V# )FT)ÚstdinÚcwdÚcheckrA   ÚtextÚenvrl   )Úendr:   )	Ú
subprocessÚrunÚDEVNULLr_   r   ÚPIPErA   r?   r@   )rÍ   ÚprocrÔ   rÊ   s   & €€r   Ú_runÚ_install_sidecar.<locals>._run8  sd   ø€ ô �~Š~Ø�$ˆKœz×1Ñ1´s¼<»>Ó7JÐRWÔ`j×`oÑ`oÐvzð  ADôEˆà�;�;ˆ;Ü�$—+‘+ 2¬C¯J©JÕ7Øˆr   Úciu&     npm ci failed â€” falling back to:  z installÚinstallrl   znpm install failedzutf-8)Úencoding)Úpmr   r	   ÚensurerÔ   Úinstalled_packageÚbinaryÚInstallErrorr_   r?   r@   rA   r   Ú
returncoderÁ   r
   rq   rr   ÚOSErrorr   ÚunlinkÚ
write_text)rà   Ú	installedÚexcrÛ   rÚ   ÚerrorrÔ   rÊ   s         @@r   r›   r›   $  s­  ù€ ÛðÜ" 5Ó)ˆÜ#Ó%ˆØŠ;Ø—)‘)˜E¨D�)Ó1×5Ñ5ˆCØ×,Ñ,¨UÓ3ˆIØÒ  I×$4Ñ$4Ò$<Ø—o‘o eÐ-ZÓ[Ð[Ü�i×&Ñ&Ó'ˆCô 
ˆG”L“NÐ# 4¨ u¨CÐ
0Ô1÷ñ ñ �‹:€DØ‡�˜!ÔÜÐ6°s°e¸8ÐDÔEÙ�I‹ˆØ�[‰[×Ð˜B×%Ñ%Ó'Ð(AÔ)AÐB€EØ‡�˜!ÔÜÐ"¬¯©Õ4Ü	×	Ò	œW×	%Õ	%Ø�?‰?˜aÔÜÓ×#Ñ#Õ%ßÜÓ×'Ñ'¨¸Ð'Ô@÷	 
&ð
 �?‰?Ðøð9 �?‰?ô ÜÐ7¸°uÐ=ÄCÇJÁJÕOÝûðú÷. 
&Ö	%ð
 �?‰?Ðús*   ˆB F7 Å2G4ÆG4Æ7G1ÇG,Ç,G1Ç4H	r   r    r!   c                ó   € \        4       # )N)r›   )r¯   s   &r   Ú<lambda>rí   P  s   € ÔQaÔQcr   r"   c               ó   € V ^8„  d   QhRR/# )r   r   r   r   )r   s   "r   r   r   T  s   € ÷ Cñ C�tñ Cr   c                 óT   € \        \        P                  ! RRRRRRRRR7      4       R# )z™Run Photon first-time setup from the unified `hermes gateway setup` wizard (same flow
as ``hermes photon setup``; phone is prompted when stdin is a TTY).r   NF)r   rŒ   rŽ   r€   r�   r‚   rQ   rš   )r¤   ÚargparseÚ	Namespacer   r   r   Úgateway_setuprò   T  s.   € ô Œx×!Ò!Ø¨T¸È$ÐZ^Ø˜u¸5ôBö Cr   ry   Fc               ó$   € V ^8„  d   QhRRRRRR/# )r   Úpromptr_   ry   rt   r   r   )r   s   "r   r   r   \  s!   € ÷ ñ �Cð  Dð °Sñ r   c               ó  € \         P                  P                  4       '       g   R #  V'       d%   \        P                  ! V 4      P                  4       # \	        V 4      P                  4       #   \        \        3 d    \        4         R # i ; i)rl   )	r@   rÐ   ÚisattyÚgetpassÚinputrÁ   ÚKeyboardInterruptÚEOFErrorr?   )rô   ry   s   &$r   r�   r�   \  se   € Ü�9‰9×Ñ×ÒÙðß+1”—’ Ó'×KÑKÓMÐM´u¸V³}×KÑKÓMÐMøÜœxÐ(ô ÜŒÚðús   ¨A- °#A- ÁA- Á-BÂB))Ú__doc__Ú
__future__r   rð   r÷   r¿   rÖ   r@   Útypingr   Úhermes_cli.colorsr   r   rl   r   rO   Úadapterr   Úhermes_constantsr   r	   Úsidecar_pathsr
   r   r   rq   r2   r.   rU   r]   ri   r{   r¤   r”   r<   rµ   rÆ   r›   r=   rò   r�   r   r   r   Ú<module>r     s¬   ðñõ
 #ã Û Û 	Û Û 
Ý ç +å !Ý +ß Hß QÑ QÛ õ'õ,õõ$õ,õ, õFFõRFõ&õ&Eõõ"(ðX ˆZ˜ ;Ð0AÑCcØ�ð!€	õ
Cð¨5÷ ñ r   