+
    iHàj©J  ã                  óô  a€ 0 t $ R t^ RIHt ^ RIt^ RIHtHt ^ RIH	t	H
t
Ht ^ RIHt ^ RIHtHtHtHt R‡w  ttttRR	RutttR
t^tRRRR/RRRR/3tRRRR/RRRR/RRRR/3t]
! RR7       ! R R4      4       t]
! RR7       ! R R4      4       t]
! RR7       ! R R4      4       t ]
! RR7       ! R R 4      4       t!]
! RR7       ! R! R"4      4       t"]
! RR7       ! R# R$4      4       t#]
! RR7       ! R% R&4      4       t$]
! RR7       ! R' R(4      4       t%]
! RR7       ! R) R*4      4       t&]
! RR7       ! R+ R,4      4       t']] ,          ]!,          ]",          ]#,          ]$,          ]%,          ]&,          ]',          t(]
! RR7       ! R- R.4      4       t)R/ R0 lt*R1 R2 lt+]
! RR7       ! R3 R44      4       t,],! R5R6 RˆR5R77      ],! R8R9 R‰R:R77      ],! R;R< RŠR;R= R>7      ],! R?R@ R‹RA7      ],! RBRC RŒRD RE7      ],! RFRG R�RFRH RI RJ7      ],! RKRL RŽRK]*R>7      3t-RM].RN&   ]- U u/ uF  q P^                  V bK  	  up t0]1! ]04      t2RORPRQRR/RS RT llt3RU RV lt4RW RX lt5RY RZ lt6R[ R\ lt7R] R^ lt8R_ R` lt9Ra Rb lt:Rc Rd lt;Re Rf lt<Rg Rh lt=Ri Rj lt>Rk Rl lt?Rm Rn lt@Ro Rp ltAR8RqR;Rq/tBRr Rs ltCRt Ru ltDRv Rw ltERx Ry ltFRz R{ ltGR| R} ltH]];] ]>]!]@]"]A]#]C]$]D]%]E]&]F]']H/	tIR~].R&   R€tJR� R‚ ltKRORP/Rƒ R„ lltLR… R† ltMR# u up i )�a�  First-run onboarding as data: the beats, the run record, and how each event moves the record.

Pure: no I/O, no clock. ``apply(record, event, facts, now=...)`` returns the next record, the result
the model reads, and the key of the reminder that rides on it (``agent/onboarding_text.py`` renders
it). The record is stored by ``agent/onboarding_record.py``; ``tools/setup_beat_tool.py`` drives it.
)ÚannotationsN)ÚCallableÚMapping)ÚasdictÚ	dataclassÚfield)ÚAny)ÚFIXED_IDÚOWN_IDÚcard_optionsÚ
pick_errorÚskippedÚ
onboardingÚcompletei,  Úidzsidebar-leftÚlabelÚBasiczterminal-deckÚEliteÚquickz
Quick tourÚfullzShow me everythingÚskipzSkip, let's build somethingT)Úfrozenc                  óÈ   € ] tR t^t$ RtR]R&   RtR]R&   RtR]R&   RtR	]R
&   Rt	R]R&   Rt
R	]R&   RtR]R&   RtR]R&   ]! RRR7      tR	]R&   R R lt]R R l4       tRtR# )ÚFactszŽThe safe facts (class A) one run is built from. ``full_name`` reaches only the name card; it is
never stored in the record or put in a result.ÚstrÚosÚ ÚarchÚcomputerÚmachine_kindNú
str | NoneÚnvidia_platformÚlocalÚfacts_sourceÚlocaleútuple[str, ...]ÚpluginsTÚboolÚtoursF)ÚdefaultÚcompareÚ	full_namec               ó   € V ^8„  d   QhRR/# )é   ÚreturnÚdict© )Úformats   "Ú:/home/ubuntu/.hermes/hermes-agent/agent/onboarding_flow.pyÚ__annotate__ÚFacts.__annotate__*   s   € ÷ ñ ˜ñ ó    c                	ón   € \        V 4      pVP                  R 4       \        V P                  4      VR&   V# )r+   r&   )r   ÚpopÚlistr&   )ÚselfÚdatas   & r2   ÚstoredÚFacts.stored*   s.   € Ü�d‹|ˆØ�‰�ÔÜ˜tŸ|™|Ó,ˆˆY‰Øˆr5   c               ó    € V ^8„  d   QhRRRR/# )r-   r:   úMapping[str, Any]r.   r   r0   )r1   s   "r2   r3   r4   1   s   € ÷ Nñ NÐ0ð N°Uñ Nr5   c                	óÒ   € V P                    Uu/ uF  q"V9   g   K  VR 8w  g   K  W!V,          bK  	  ppT ! R/ / VCR\        VP                  R4      ;'       g    R4      /CB # u upi )r+   r&   r0   )Ú__dataclass_fields__ÚtupleÚget)Úclsr:   ÚkeyÚknowns   &&  r2   Úfrom_storedÚFacts.from_stored0   sl   € à+.×+CÒ+CÓjÑ+C CÈdÁ{”ÐWZÐ^iÑWi”�˜3•i’Ñ+CˆÐjÙÑMÐL˜ÐL˜y¬%°·	±	¸)Ó0D×0JÐ0JÈÓ*KÑLÑMÐMùò ks   �A$œA$¥A$r0   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__annotations__r   r   r!   r#   r$   r&   r(   r   r+   r;   ÚclassmethodrF   Ú__static_attributes__r0   r5   r2   r   r      s   ‡ ñ6ð 	ƒGØ€Dˆ#ƒNØ"€L�#Ó"Ø"&€O�ZÓ&Ø€L�#ÓØ€FˆJÓØ!€Gˆ_Ó!Ø€Eˆ4ÓÙ!¨$¸Ô>€IˆzÓ>õð ôNó ôNr5   r   c                  óP   € ] tR t^9t$ RtR]R&   RtR]R&   RtR]R&   RtR]R	&   R
t	R# )ÚShownzª``options``: the model's build picks, ``[{id, label}]``; empty brings back the card already shown.
``suggest``: the connector slugs the model pins after it looked around.r   Úbeatr   Útool_call_idNr   ÚoptionsÚsuggestr0   )
rH   rI   rJ   rK   rL   rM   rS   rT   rU   rO   r0   r5   r2   rQ   rQ   9   s-   ‡ ñOð ƒIØ€L�#ÓØ€GˆSÓØ€GˆS×r5   rQ   c                  ó>   € ] tR t^Dt$ RtR]R&   R]R&   RtR]R&   RtR	# )
ÚAnsweredzp``said``: the answer came as words in the composer (the name card), so the chat shows them as
the user's bubble.r   rR   r>   Úanswerr   Úsaidr0   N)rH   rI   rJ   rK   rL   rM   rY   rO   r0   r5   r2   rW   rW   D   s   ‡ ñð ƒIØÓØ€Dˆ#‡Nr5   rW   c                  ó4   € ] tR t^Rt$ RtR]R&   RtR]R&   RtR# )ÚWrotez|The user sent a message instead of answering the card. The message is their own next turn, so the
result carries none of it.r   rR   Nr   Úpresentr0   )rH   rI   rJ   rK   rL   rM   r\   rO   r0   r5   r2   r[   r[   R   s   ‡ ñ"ð ƒIØ€GˆS×r5   r[   c                  ó0   € ] tR t^[t$ R]R&   RtR]R&   RtR# )ÚTimedOutr   rR   Nr   r\   r0   ©rH   rI   rJ   rK   rM   r\   rO   r0   r5   r2   r^   r^   [   ó   ‡ à
ƒIØ€GˆS×r5   r^   c                  ó:   € ] tR t^at$ R]R&   R]R&   RtR]R&   RtR# )ÚRecordedr   rR   ÚvalueNr   r\   r0   r_   r0   r5   r2   rb   rb   a   s   ‡ à
ƒIØƒJØ€GˆS×r5   rb   c                  ó0   € ] tR t^ht$ R]R&   RtR]R&   RtR# )ÚSkippedr   rR   Nr   r\   r0   r_   r0   r5   r2   re   re   h   r`   r5   re   c                  ó*   € ] tR t^nt$ RtRtR]R&   RtR# )ÚEndzŽThe run ended outside the model: ``skipped`` (Skip setup), ``replaced`` (a rerun opened a new
run) or ``deleted`` (its chat is being deleted).r   r   Úoutcomer0   N)rH   rI   rJ   rK   rL   rh   rM   rO   r0   r5   r2   rg   rg   n   s   ‡ ñ8ð €GˆS×r5   rg   c                  ó   € ] tR t^vtRtR# )ÚDoner0   N)rH   rI   rJ   rK   rO   r0   r5   r2   rj   rj   v   s   † ãr5   rj   c                  ó:   € ] tR t^{t$ RtR]R&   R]R&   R]R&   RtR# )	ÚAppliedzdA general tool's result during the run: ``set_theme``, ``manage_connections`` display, ``gui_tour``.r   Útoolr>   ÚargsÚresultr0   N)rH   rI   rJ   rK   rL   rM   rO   r0   r5   r2   rl   rl   {   s   ‡ ánà
ƒIØ
ÓØ×r5   rl   c                  ó:   € ] tR t^‡t$ R]R&   R]R&   RtR]R&   RtR# )	ÚStepr/   Úrecordro   r   r   Úreminderr0   N)rH   rI   rJ   rK   rM   rs   rO   r0   r5   r2   rq   rq   ‡   s   ‡ àƒLØƒLØ€Hˆc×r5   rq   c               ó$   € V ^8„  d   QhRRRRRR/# )r-   Úfactsr   Úpicksr>   r.   r%   r0   )r1   s   "r2   r3   r3   ‘   s'   € ÷ Nñ N˜ð NÐ&7ð N¸Oñ Nr5   c                óh   € . \        VP                  R4      ;'       g    R4      O\        N\        N5# )zRIds the build beat accepts: what its card showed, plus a task they named in words.Úbuild_optionsr0   )Ú_option_idsrB   r	   r
   ©ru   rv   s   &&r2   Úbuild_valuesr{   ‘   s-   € àMŒ[˜Ÿ™ ?Ó3×9Ð9°rÓ:ÐM¼HÐMÄfÑMÐMr5   c               ó   € V ^8„  d   QhRR/# )r-   r.   r%   r0   )r1   s   "r2   r3   r3   –   s   € ÷ 5ñ 5˜Oñ 5r5   c                óZ   € \         ;QJ d    . R  V  4       F  NK  	  5# ! R  V  4       4      # )c              3  ó2   "  € T F  qR ,          x € K  	  R# 5i)r   Nr0   )Ú.0Úoptions   & r2   Ú	<genexpr>Ú_option_ids.<locals>.<genexpr>—   s   é € Ð4©G &˜—’«Gùs   ‚)rA   ©rT   s   &r2   ry   ry   –   s$   € ßŒ5Ñ4©GÓ4�5Ð4ˆ5Ñ4©GÓ4Ó4Ð4r5   c                  ór   € ] tR t^št$ RtR]R&   R]R&   R]R&   RtR	]R
&   RtR]R&   R tR]R&   R R lt	Rt
R# )ÚBeata  ``card`` is the beat's data for the desktop; ``when`` false skips the beat on this machine;
``picks`` are the answer keys recorded; ``value`` is the pick a ``value`` given in words sets
(None: the beat takes no value, it is only marked done); ``values`` lists the accepted ids.r   r   z Callable[[Facts, Mapping], dict]Úcardr%   rv   Nr    rc   z2Callable[[Facts, Mapping], tuple[str, ...]] | NoneÚvaluesc                	ó   € R # )Tr0   rz   s   &&r2   Ú<lambda>ÚBeat.<lambda>¥   s   € Á$r5   z Callable[[Facts, Mapping], bool]Úwhenc               ó    € V ^8„  d   QhRRRR/# )r-   rv   r>   r.   r   r0   )r1   s   "r2   r3   ÚBeat.__annotate__§   s   € ÷ "ñ "Ð,ð "°ñ "r5   c                óÆ   € V P                   R9   dC   VP                  V P                   4      '       d"   V P                    RWP                   ,           2# RV P                    2# )z3Reminder key for the result that settles this beat.Ú_Úafter_)ÚtourÚbuild)r   rB   )r9   rv   s   &&r2   ÚafterÚ
Beat.after§   sN   € à�7‰7Ð'Ô'¨E¯I©I°d·g±g×,>Ò,>Ø—g‘g�Y˜a §g¡g¥Ð/Ð0Ð0Ø˜Ÿ™�yÐ!Ð!r5   r0   )rH   rI   rJ   rK   rL   rM   rc   r‡   r‹   r“   rO   r0   r5   r2   r…   r…   š   sE   ‡ ñcð 	ƒGØ
*Ó*ØÓØ€Eˆ:ÓØAE€FÐ>ÓEÙ-F€DÐ
*ÓF÷"ñ "r5   r…   Únamec                ó   € / # ©Nr0   rz   s   &&r2   r‰   r‰   ¯   s   € ¡br5   )rv   rc   Úthemec                ó
   € R R/# )ÚpickerÚaccentr0   rz   s   &&r2   r‰   r‰   °   s	   € ¨°(Ñ';r5   r›   Úlayoutc                ó$   € R \        \        4      /# rƒ   )r8   ÚLAYOUT_OPTIONSrz   s   &&r2   r‰   r‰   ±   s   € ¨´D¼Ó4HÑ(Ir5   c                ó    € \        \        4      # r—   )ry   rž   rz   s   &&r2   r‰   r‰   ²   s	   € ¤[´Ô%@r5   )rv   rc   r‡   Ú
connectorsc                ó   € / # r—   r0   rz   s   &&r2   r‰   r‰   ³   s   € ©Br5   )rv   r&   c                ó>   € R \        V P                  R\         4      /# )r&   N)r8   r&   ÚMAX_PLUGINSrz   s   &&r2   r‰   r‰   ´   s   € ¨)´T¸%¿-¹-ÈÌÐ:UÓ5VÑ)Wr5   c                ó,   € \        V P                  4      # r—   )r'   r&   rz   s   &&r2   r‰   r‰   µ   s   € ¤4¨¯©Ô#6r5   )rv   r‹   r‘   c                ó$   € R \        \        4      /# rƒ   )r8   ÚTOUR_OPTIONSrz   s   &&r2   r‰   r‰   ¶   s   €  y´$´|Ó2DÑ&Er5   c                ó    € \        \        4      # r—   )ry   r¦   rz   s   &&r2   r‰   r‰   ·   s	   € ¤[´Ô%>r5   c                ó   € V P                   # r—   )r(   rz   s   &&r2   r‰   r‰   ·   s   € ÐZ_×ZeÒZer5   )rv   rc   r‡   r‹   r’   c                ó:   € R \        VP                  R4      4      /# )rT   rx   )r   rB   rz   s   &&r2   r‰   r‰   ¸   s   € ¨	´<ÀÇ	Á	È/Ó@ZÓ3[Ñ'\r5   ztuple[Beat, ...]ÚBEATSÚnowg        Úrun_idr   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r-   ru   r   r«   Úfloatr¬   r   r.   r/   r0   )r1   s   "r2   r3   r3   ¿   s(   € ÷ 	(ñ 	(�eð 	( Uð 	(¸#ð 	(Àtñ 	(r5   c               óÞ   € R TR\         R\         Uu/ uF  q3P                  \        bK  	  upRRRRRRRRRR	RR
. R. R. RRRRR. /
RRRV P	                  4       RRRVRV/
p\        W@4      # u upi )r¬   ÚphaseÚbeatsÚwaitingNrv   r•   r›   Úmoderœ   Ú	connectedÚnewly_connectedÚ	installedr‘   r’   rx   Úlook_aroundÚnot_offeredru   Úended_byÚ
started_atÚ
updated_at)Ú
ONBOARDINGrª   r   ÚPENDINGr;   Ú_settle_unfit)ru   r«   r¬   rR   rr   s   &$$  r2   Ú
new_recordr¿   ¿   sš   € à�&˜'¤:¨wÕV[Ó8\ÑV[Èd¿¹Ä'Ò9IÑV[Ñ8\Ð^gÐimØ�&˜$ ¨$°¸¸hÈÈkÐ[]Ø# R¨°b¸&À$ÈÐQUØ! 2ð'ð 	�} g¨u¯|©|«~¸zÈ4Ø�c˜<¨ð€Fô ˜Ó'Ð'ùò 9]s   ’A*c               ó$   € V ^8„  d   QhRRRRRR/# )r-   rr   r/   ru   r   r.   r0   )r1   s   "r2   r3   r3   Ë   s!   € ÷ ñ ˜$ð  uð °ñ r5   c                óÞ   € \          Fb  pV R ,          VP                  ,          \        8X  g   K(  VP                  WR,          4      '       d   KH  \        V R ,          VP                  &   Kd  	  V # )r±   rv   )rª   r   r½   r‹   ÚSKIPPED)rr   ru   rR   s   && r2   r¾   r¾   Ë   sL   € ßˆØ�'�?˜4Ÿ7™7Õ#¤wÖ.°t·y±yÀÈwÍ×7XÔ7XÜ'.ˆF�7�O˜DŸG™GÓ$ñ ð €Mr5   c               ó    € V ^8„  d   QhRRRR/# )r-   rr   r>   r.   r    r0   )r1   s   "r2   r3   r3   Ò   s   € ÷ `ñ `Ð'ð `¨Jñ `r5   c                ó8   a € \        V 3R l\         4       R4      # )zGThe first beat still pending or shown; None when every beat is settled.c              3  ój   <"  € T F(  pSR ,          V,          \         \        39   g   K$  Vx € K*  	  R# 5i)r±   N)r½   ÚSHOWN)r   rR   rr   s   & €r2   r�   Únext_beat.<locals>.<genexpr>Ô   s)   øé € ÐX¡(˜$¨f°W­o¸dÕ.CÌÔQVÐGWÑ.W—’£(ùs   ƒ!3©
3N)ÚnextÚBEAT_IDS©rr   s   fr2   Ú	next_beatrË   Ò   s   ø€ äÔX¥(ÓXÐZ^Ó_Ð_r5   c               ó    € V ^8„  d   QhRRRR/# )r-   rr   zMapping[str, Any] | Noner.   r'   r0   )r1   s   "r2   r3   r3   ×   s   € ÷ >ñ >Ð.ð >°4ñ >r5   c                óX   € \        V 4      ;'       d    V P                  R 4      \        8H  # )r°   )r'   rB   r¼   rÊ   s   &r2   Ú	is_activerÎ   ×   s"   € Ü�‹<×=Ð=˜FŸJ™J wÓ/´:Ñ=Ð=r5   c               ó    € V ^8„  d   QhRRRR/# )r-   rr   r>   r.   r   r0   )r1   s   "r2   r3   r3   Þ   s   € ÷ 'ñ 'Ð)ð '¨cñ 'r5   c                ó,   € \        V 4      ;'       g    R # )Údone)rË   rÊ   s   &r2   Ú_next_fieldrÒ   Þ   s   € Ü�VÓ×&Ð& Ð&r5   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r-   rr   r/   rR   r   Úpatchr>   r.   ÚNoner0   )r1   s   "r2   r3   r3   â   s/   € ÷ jñ j�Dð j ð jÐ,=ð jÀ$ñ jr5   c           	     óâ   € \         V R ,          V&   V R,          P                  VP                  4        UUu/ uF%  w  r4V\        V,          P                  9   g   K#  W4bK'  	  upp4       R# u uppi )r±   rv   N)ÚDONEÚupdateÚitemsÚ
BEAT_BY_IDrv   )rr   rR   rÔ   rD   rc   s   &&&  r2   Ú_settlerÛ   â   sT   € Ü €Fˆ7…O�DÑØ
ˆ7…O×Ñ¸¿¹¼Ôh¹©:¨3È#ÔQ[Ð\`ÕQa×QgÑQgÑJgœJ˜CšJ¹ÒhÖiùÓhs   ¶ A+
ÁA+
c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r-   rr   r/   ÚeventrQ   ru   r   r.   r    r0   )r1   s   "r2   r3   r3   ç   s(   € ÷ ñ ˜tð ¨Eð ¸%ð ÀJñ r5   c                óN  € VP                   '       g!   V R,          P                  R4      '       d   R# \        VP                   W R,          4      ;p'       d   V# VP                    Uu. uF%  pRVR,          RVR,          P                  4       /NK'  	  upV R,          R&   R# u upi )z_Stores the model's build picks; a bring-back without picks reuses the ones already on the card.rv   rx   Nr   r   )rT   rB   r   Ústrip)rr   rÝ   ru   ÚerrorÚos   &&&  r2   Ú_build_picks_errorrâ   ç   sŠ   € à�=�=ˆ=˜V G�_×0Ñ0°×AÒAÙÜ˜5Ÿ=™=¨%¸µÓAÐA€uÖAØˆØ^c×^kÒ^kÓ'lÑ^kÐYZ¨¨q°­w¸ÀÀ7Å×AQÑAQÓASÓ(TÑ^kÑ'l€Fˆ7…O�OÑ$Ùùò (ms   Á(+B"c               ó    € V ^8„  d   QhRRRR/# )r-   rU   r   r.   r'   r0   )r1   s   "r2   r3   r3   ñ   s   € ÷ \ñ \˜cð \ dñ \r5   c                ó°   € \        V \        \        ,          4      ;'       d5    \        ;QJ d    R  V  4       F  '       g   K   R# 	  R# ! R  V  4       4      # )c              3  óT   "  € T F  p\        V4      P                  4       x € K   	  R # 5ir—   )r   rß   )r   Úslugs   & r2   r�   Ú#_has_suggestions.<locals>.<genexpr>ò   s    é € Ð4[ÑSZÈ4´S¸³Y·_±_×5FÐ5FÓSZùs   ‚&(TF)Ú
isinstancer8   rA   Úany)rU   s   &r2   Ú_has_suggestionsrê   ñ   s@   € Ü�gœt¤e�|Ó,×[Ð[·³Ñ4[ÑSZÓ4[·´Ð[²Ð[°Ñ4[ÑSZÓ4[Ó1[Ð[r5   c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# )r-   rr   r/   rÝ   rQ   ru   r   r«   r®   r.   rq   r0   )r1   s   "r2   r3   r3   õ   s/   € ÷ ñ �4ð  ð ¨eð ¸%ð ÀDñ r5   c                ój  € \         VP                  ,          P                  W R ,          4      '       gA   \        V R,          VP                  &   \	        V RVP                  RRR\        V 4      /R4      # VP                  R8X  d#   \        WV4      ;p'       d   \	        V RV/4      # VP                  R	8X  d>   V R
,          R8X  d0   RV R
&   \        VP                  4      '       g   \	        V RR/R4      # \        R\        P                  VP                  4        F.  pV R,          V,          \        8X  g   K  \        V R,          V&   K0  	  V R,          VP                  ,          \        8w  d   \        V R,          VP                  &   RVP                  RVP                  RV/V R&   \	        V / 4      # )rv   r±   rR   r   TrÈ   Úmoved_onr’   rà   r    r·   r¸   Úofferedzoffer firstÚoffer_firstNrS   Úsincer²   )rÚ   rR   r‹   rÂ   rq   rÒ   râ   rê   rU   rÉ   ÚindexrÆ   r×   rS   )rr   rÝ   ru   r«   rà   Úearliers   &&&&  r2   Ú_shownró   õ   se  € Ü�e—j‘jÕ!×&Ñ& u°W­o×>Ò>Ü&-ˆˆw�˜Ÿ
™
Ñ#Ü�F˜V U§Z¡Z°¸DÀ&Ì+ÐV\ÓJ]Ð^Ð`jÓkÐkØ‡z�z�WÔÔ+=¸fÈUÓ+SÐ"S %Ö"Sä�F˜W eÐ,Ó-Ð-Ø‡z�z�\Ô! f¨]Õ&;¸}Ô&Là )ˆˆ}ÑÜ §¡×.Ò.Ü˜ ¨-Ð 8¸-ÓHÐHäÐ7œXŸ^™^¨E¯J©JÓ7Ó8ˆØ�'�?˜7Õ#¤uÖ,Ü'+ˆF�7�O˜GÓ$ñ 9ð ˆg…�u—z‘zÕ"¤dÔ*Ü&+ˆˆw�˜Ÿ
™
Ñ#Ø §¡¨^¸U×=OÑ=OÐQXÐZ]Ð^€Fˆ9ÑÜ�˜ÓÐr5   c               ó    € V ^8„  d   QhRRRR/# )r-   rc   r   r.   r'   r0   )r1   s   "r2   r3   r3     s   € ÷ Tñ T�Sð T˜Tñ Tr5   c                óš   € \        V \        4      ;'       d5    \        ;QJ d    R  V  4       F  '       d   K   R# 	  R# ! R  V  4       4      # )c              3  óB   "  € T F  p\        V\        4      x € K  	  R # 5ir—   ©rè   r   )r   Úitems   & r2   r�   Ú_is_names.<locals>.<genexpr>  s   é € Ð*SÉUÀT¬:°d¼C×+@Ð+@ËUùs   ‚FT)rè   r8   Úall)rc   s   &r2   Ú	_is_namesrû     s:   € Ü�eœTÓ"×SÐS§s£sÑ*SÉUÓ*S§s¤sÐS¢sÐS sÑ*SÉUÓ*SÓ'SÐSr5   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR	/# )
r-   rR   r   rX   r>   ru   r   rv   r.   r'   r0   )r1   s   "r2   r3   r3     s9   € ÷ Xñ X�sð XÐ$5ð X¸eð XÐL]ð XÐbfñ Xr5   c                óF  € \         V ,          p\        VP                  RR4      \        4      '       g   R# VP	                  4        UUu/ uF  w  rVVR8w  g   K  WVbK  	  pppV'       d$   \        V4      \        VP                  4      8:  g   R# VP                  e.   VP                  VP                  4      VP                  W#4      9   # V R8X  dH   \        VP                  R4      \        4      ;'       d!    \        VR,          P                  4       4      # V R8X  dQ   \        ;QJ d*    R VP                  4        4       F  '       d   K   R# 	  R# ! R VP                  4        4       4      # V R8X  dK   \        VP                  R	4      4      ;'       d)    \        VR	,          4      \        VP                  4      8*  # R
V9   ;'       dQ    \        ;QJ d*    R VP                  4        4       F  '       d   K   R# 	  R# ! R VP                  4        4       4      # u uppi )z©A card answer carries only its beat's pick keys, with ids from the card's own options. ``label``
is the text the card showed, kept for the transcript and never recorded.r   r   Fr•   r˜   c              3  óX   "  € T F   qR J ;'       g    \        V\        4      x € K"  	  R # 5ir—   r÷   ©r   rc   s   & r2   r�   Úvalid_answer.<locals>.<genexpr>  s$   é € ÐXÉ¸u˜D�=×:Ð:¤J¨u´cÓ$:Ô:Ëùs   ‚*‘*Tr&   r¶   r´   c              3  ó8   "  € T F  p\        V4      x € K  	  R # 5ir—   )rû   rÿ   s   & r2   r�   r      s   é € Ð(WÁ¸e¬°5×)9Ð)9Ãùs   ‚)rÚ   rè   rB   r   rÙ   Úsetrv   r‡   rc   r'   rß   rú   rû   r&   )rR   rX   ru   rv   ÚspecrD   rc   s   &&&&   r2   Úvalid_answerr    sŽ  € ô �dÕ€DÜ�f—j‘j ¨"Ó-¬s×3Ò3ÙØ+1¯<©<¬>ÔL©>™Z˜S¸SÀG¹^ŒjˆcŠj©>€FÑLßœ˜V›¬¨D¯J©J«Ô7ÙØ‡{�{ÒØ�z‰z˜$Ÿ*™*Ó%¨¯©°UÓ)BÑBÐBØˆv„~Ü˜&Ÿ*™* VÓ,¬cÓ2×SÐS´t¸FÀ6½N×<PÑ<PÓ<RÓ7SÐSØˆw„ß‹sÑXÈÏÉÌÓX�sŒsÐXŠsÐXˆsÑXÈÏÉÌÓXÓXÐXØˆyÔÜ˜Ÿ™ KÓ0Ó1×dÐd´c¸&ÀÕ:MÓ6NÔRUÐV[×VcÑVcÓRdÑ6dÐdØ˜&Ñ ×WÐW§S£SÑ(WÀvÇ}Á}ÄÓ(W§S¤SÐW¢SÐW SÑ(WÀvÇ}Á}ÄÓ(WÓ%WÐWùó Ms   Á	HÁHc          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# )r-   rr   r/   rÝ   rW   ru   r   r«   r®   r.   rq   r0   )r1   s   "r2   r3   r3   #  s/   € ÷ ?ñ ?�dð ? 8ð ?°Eð ?Àð ?È$ñ ?r5   c           	     ó  € R V R&   \        VP                  VP                  W R,          4      '       g)   \        V RVP                  RRVP                   R2/4      # \	        WP                  VP                  4       VP
                  '       d   RVP
                  /M/ p\        V RVP                  R\        VP                  4      /VCR	\        V 4      /C\        VP                  ,          P                  V R,          4      4      # )
Nr²   rv   rR   rà   zWThe card sent an answer this beat does not accept. Bring it back with setup_beat(beat="z").rY   rX   rÈ   )
r  rR   rX   rq   rÛ   rY   r/   rÒ   rÚ   r“   )rr   rÝ   ru   r«   rY   s   &&&& r2   Ú	_answeredr  #  sß   € Ø€Fˆ9ÑÜ˜Ÿ
™
 E§L¡L°%À½×IÒIÜ�F˜V U§Z¡Z°ð ;DØDIÇJÁJÀ<Èsð;Tð Uó Vð 	VäˆF—J‘J §¡Ô-Ø#(§:§: :ˆF�E—J‘JÑ°2€DÜ�˜ §¡¨X´t¸E¿L¹LÓ7IÐoÈTÐoÐSYÔ[fÐgmÓ[nÑoÜ˜5Ÿ:™:Õ&×,Ñ,¨V°G­_Ó=ó?ð ?r5   c               ó$   € V ^8„  d   QhRRRRRR/# )r-   rr   r/   rÝ   z%Wrote | TimedOut | Recorded | Skippedr.   r0   )r1   s   "r2   r3   r3   .  s#   € ÷ ñ ˜$ð Ð'Lð ÐQUñ r5   c                ó   € VP                   ;'       g    / P                  4        UUu/ uF/  w  r#V\        VP                  ,          P                  9   g   K-  W#bK1  	  pppV R,          P                  V4       V# u uppi )zQRecord the beat's picks as the machine has them now; returns them for the result.rv   )r\   rÙ   rÚ   rR   rv   rØ   )rr   rÝ   rD   rc   r\   s   &&   r2   Ú_note_presentr
  .  sj   € à-2¯]©]×-@Ð-@¸b×,GÑ,GÔ,IÔqÑ,I™j˜cÈSÔT^Ð_d×_iÑ_iÕTj×TpÑTpÑMpŒzˆsŠzÑ,I€GÑqØ
ˆ7…O×Ñ˜7Ô#Ø€Nùó rs   ¨*A:ÁA:c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# )r-   rr   r/   rÝ   r[   ru   r   r«   r®   r.   rq   r0   )r1   s   "r2   r3   r3   5  s6   € ÷ nñ n�4ð n ð n¨eð n¸%ð nÀDñ nr5   c                óX   € R V R&   \        V RVP                  RR/\        W4      CR4      # )Nr²   rR   Úwrote_insteadTÚwrote©rq   rR   r
  ©rr   rÝ   ru   r«   s   &&&&r2   Ú_wroter  5  s4   € Ø€Fˆ9ÑÜ�˜ §¡¨_¸dÐcÄmÐTZÓFbÐcÐelÓmÐmr5   c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# )r-   rr   r/   rÝ   r^   ru   r   r«   r®   r.   rq   r0   )r1   s   "r2   r3   r3   :  s6   € ÷ nñ n�tð n Hð n°Uð nÀð nÈ4ñ nr5   c                óX   € R V R&   \        V RVP                  RR/\        W4      CR4      # )Nr²   rR   Ú	timed_outTr  r  s   &&&&r2   Ú
_timed_outr  :  s4   € Ø€Fˆ9ÑÜ�˜ §¡¨[¸$Ð_Ä-ÐPVÓB^Ð_ÐalÓmÐmr5   Ú	set_themec          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# )r-   rr   r/   rÝ   rb   ru   r   r«   r®   r.   rq   r0   )r1   s   "r2   r3   r3   D  s6   € ÷ wñ w�dð w 8ð w°Eð wÀð wÈ$ñ wr5   c           
     óØ  € \         VP                  ,          p\        P                  VP                  4      ;p'       d+   \	        V R RVP                   RV R2R\        V 4      /4      # VP                  '       d   VP                  W R,          4      MRpVeK   VP                  V9  d:   \	        V R RVP                   RR	P                  V4       R
2R\        V 4      /4      # \        YP                  VP                  '       d   VP                  VP                  /M/ 4       \        W4      p\	        V RVP                  /VCR\        V 4      /CVP                  V R,          4      4      # )rà   z
Apply the z with z; its result settles this beat.rÈ   rv   Nz
value for z must be one of: z, Ú.Úrecorded)rÚ   rR   Ú
APPLIED_BYrB   rq   rÒ   r‡   rc   ÚjoinrÛ   r
  r“   )rr   rÝ   ru   r«   rR   rm   Úacceptedr\   s   &&&&    r2   Ú	_recordedr  D  s<  € Ü�e—j‘jÕ!€DÜ�~‰~˜eŸj™jÓ)Ð)€tÖ)Ü�F˜W¨
°5·:±:°,¸fÀTÀFÐJiÐ&jØ#¤[°Ó%8ð:ó ;ð 	;à6:·k·k°kˆt�{‰{˜5¨¥/Ô2Àt€HØÒ §¡°8Ô ;Ü�F˜W¨
°5·:±:°,Ð>OÐPT×PYÑPYÐZbÓPcÐOdÐdeÐ&fØ#¤[°Ó%8ð:ó ;ð 	;äˆF—J‘J¸T¿Z¿Z¸Z §¡¨U¯[©[Ñ 9ÈRÔPÜ˜FÓ*€GÜ�˜ U§Z¡ZÐX°7ÐX¸FÄKÐPVÓDWÑXÐZ^×ZdÑZdÐekÐlsÕetÓZuÓvÐvr5   c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# )r-   rr   r/   rÝ   re   ru   r   r«   r®   r.   rq   r0   )r1   s   "r2   r3   r3   R  s6   € ÷ wñ w�Tð w 'ð w°%ð w¸eð wÈñ wr5   c                ó    € \         V R ,          VP                  &   \        W4      p\        V RVP                  RR/VCR\	        V 4      /CR4      # )r±   r  r   TrÈ   rí   )rÂ   rR   r
  rq   rÒ   )rr   rÝ   ru   r«   r\   s   &&&& r2   Ú_skippedr!  R  sN   € Ü")€Fˆ7…O�E—J‘JÑÜ˜FÓ*€GÜ�˜ U§Z¡Z°¸DÐiÀGÐiÈVÔU`ÐagÓUhÑiÐkuÓvÐvr5   c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# )r-   rr   r/   rÝ   rg   ru   r   r«   r®   r.   rq   r0   )r1   s   "r2   r3   r3   X  s/   € ÷ ;ñ ;�ð ;˜cð ;¨%ð ;°eð ;Àñ ;r5   c                óÔ   € V P                  \        VP                  R R7       \         F.  pV R,          V,          \        8w  g   K  \
        V R,          V&   K0  	  \        V RR/R4      # )N©r°   r¹   r²   r±   Úskipped_allTÚskip_all)rØ   ÚPHASE_SKIPPEDrh   rÉ   r×   rÂ   rq   )rr   rÝ   ru   r«   rR   s   &&&& r2   Ú_endr(  X  sW   € Ø
‡M�Mœ°·±Àt€MÔLßˆØ�'�?˜4Õ ¤DÖ(Ü$+ˆF�7�O˜DÓ!ñ ô �˜¨Ð-¨zÓ:Ð:r5   c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# )r-   rr   r/   rÝ   rj   ru   r   r«   r®   r.   rq   r0   )r1   s   "r2   r3   r3   `  s/   € ÷ (ñ (�$ð (˜tð (¨Eð (¸ð (À$ñ (r5   c           	     ó    € V R ,          R,          \         8X  d   \        V RRR\        V 4      /4      # \        V R ,          R&   \        V / R4      # )r±   r’   rà   z‹Onboarding ends after the first build is shown and its close card is answered. If they want to stop, tell them about the Skip setup button.rÈ   r   )r½   rq   rÒ   r×   r  s   &&&&r2   Ú_doner+  `  sX   € Øˆg…�wÕ¤7Ô*Ü�F˜Wð 'oà#¤[°Ó%8ð:ó ;ð 	;ô  $€Fˆ7…O�GÑÜ�˜˜JÓ'Ð'r5   c               ó    € V ^8„  d   QhRRRR/# )r-   rÝ   rl   r.   zlist[tuple[str, dict]]r0   )r1   s   "r2   r3   r3   i  s   € ÷ ñ ˜'ð Ð&<ñ r5   c           	     ó,  € V P                   V P                  r!V P                  R8X  dŽ   VP                  R4      ;'       g    VP                  R4      ;'       g    / pR Uu/ uF  qDV9   g   K  WCV,          bK  	  ppV'       d   RV3.M. pVP                  R4      '       d   . VORRVR,          /3N# T# V P                  R8X  dk   VP                  R4      R8X  dU   R	V9   dN   R
R	\	        VP                  R	4      ;'       g    R4      R\	        VP                  R4      ;'       g    R4      /3.# V P                  R8X  dN   VP                  R4      R8X  d8   VP                  R4      '       g!   RRVP                  R4      ;'       g    R/3.# . # u upi )zFThe beats a general tool's result settles, with the picks it recorded.r  ÚappliedÚpickedr˜   rœ   Úmanage_connectionsÚactionÚdisplayr´   r    rµ   Úgui_tourÚstartrà   r‘   Úpresetr   ©r›   r³   r0   )ro   rn   rm   rB   r8   )rÝ   ro   rn   r‡   rD   r˜   Úsettleds   &      r2   Ú_applied_beatsr8  i  s€  € à—<‘< §¡ˆDØ‡z�z�[Ô Ø—‘˜IÓ&×DÐD¨&¯*©*°XÓ*>×DÐDÀ"ˆÙ-?ÓQÑ-? cÈ&Á=Ô!�˜S•kÒ!Ñ-?ˆÐQß(-�G˜UÐ#Ñ$°2ˆØGMÇzÁzÐRZ×G[ÒG[ÐC�ÐC˜8 h°°xÕ0@Ð%AÐBÐCÐhÐahÐhØ‡z�zÐ)Ô)¨d¯h©h°xÓ.@ÀIÔ.MÐR]ÐagÔRgØ ¬T°&·*±*¸[Ó2I×2OÐ2OÈRÓ-PØ 1´4¸¿
¹
ÐCTÓ8U×8[Ð8[ÐY[Ó3\ð ^ð _ð `ð 	`à‡z�z�ZÔ D§H¡H¨XÓ$6¸'Ô$AÈ&Ï*É*ÐU\×J]ÒJ]Ø˜& $§(¡(¨8Ó"4×">Ð">¸Ð?Ð@ÐAÐAØ€Iùò Rs   Á!FÁ.Fc          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# )r-   rr   r/   rÝ   rl   ru   r   r«   r®   r.   rq   r0   )r1   s   "r2   r3   r3   y  s6   € ÷ jñ j�Tð j 'ð j°%ð j¸eð jÈñ jr5   c                óT  € RRrT\        V4       Fh  w  rgV R,          V,          \        8w  d   TpMV\        9   d   Tp\        WV4       V R,          ;'       g    / P	                  R4      V8X  g   Kc  RV R&   Kj  	  \        T / V'       d
   RV 24      # V'       d
   RV 24      # R4      # )a&  The reminder names the last beat this result newly settled, so the model moves on instead of
recording it again with setup_beat. ``after_<beat>``, not ``Beat.after``: the tour already started.
A repeat apply of a theme or layout already settled gets ``already_<beat>``, so it stops re-applying.r   r±   r²   rR   Nr�   Úalready_)r8  r×   r  rÛ   rB   rq   )rr   rÝ   ru   r«   r7  ÚrepeatedrR   rÔ   s   &&&&    r2   Ú_appliedr=  y  s¨   € ð ˜BˆXÜ% eÖ,‰ˆØ�'�?˜4Õ ¤DÔ(Ø‰GØ”ZÔØˆHÜ�˜eÔ$Ø�9Õ×#Ð# ×(Ñ(¨Ó0°DÖ8Ø $ˆF�9Óñ -ô �˜·'˜f W IÐ.ÓiÐi×X`ÀÈ(ÈÐ?TÓiÐiÐfhÓiÐir5   z5dict[type, Callable[[dict, Any, Facts, float], Step]]Ú	_HANDLERSz9Onboarding is over in this chat; it is a normal chat now.c               ó$   € V ^8„  d   QhRRRRRR/# )r-   rr   r/   rÝ   ÚEventr.   rq   r0   )r1   s   "r2   r3   r3   �  s!   € ÷ 	+ñ 	+�4ð 	+ ð 	+¨$ñ 	+r5   c                ó0  € \        V\        4      '       d   \        V / 4      # \        V\        4      '       d*   V P	                  R4      \
        8X  d   \        V RR/R4      # \        V\        4      '       d   \        V RR/4      # \        V R\        /4      # )zµAn ended run ignores general tool results and refuses setup_beat, except a repeat of its own
end: done on a completed run and any end on an ended run answer as if they had ended it.r°   Ú	completedTr   r%  rà   )rè   rl   rq   rj   rB   ÚCOMPLETErg   Ú_ENDED)rr   rÝ   s   &&r2   Ú_endedrE  �  s€   € ô �%œ×!Ò!Ü�F˜BÓÐÜ�%œ×Ò 6§:¡:¨gÓ#6¼(Ô#BÜ�F˜[¨$Ð/°Ó<Ð<Ü�%œ×ÒÜ�F˜]¨DÐ1Ó2Ð2Ü�˜¤&Ð)Ó*Ð*r5   c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# )r-   rr   r>   rÝ   r@  ru   r   r«   r®   r.   rq   r0   )r1   s   "r2   r3   r3   œ  s1   € ÷ ñ Ð#ð ¨Eð ¸%ð Èð ÐY]ñ r5   c               ó  € \         P                  ! \        V 4      4      p\        V4      '       g   \	        WA4      # \
        \        V4      ,          ! WAW#4      p\        VP                  4      '       dw   VP                  R,          R,          \        8X  dT   VP                  P                  \        RRR7       \        VP                  / VP                  CRR/CVP                  4      pVP                  V 8w  d   W5P                  R&   V# )	z¬The record after ``event``, the model-facing result, and the reminder key. The run completes
when the build beat settles: the answer to the first-task card ends onboarding.r±   r’   rÑ   Nr$  rB  Tr»   )ÚcopyÚdeepcopyr/   rÎ   rE  r>  Útyperr   r×   rØ   rC  rq   ro   rs   )rr   rÝ   ru   r«   ÚworkingÚsteps   &&&$  r2   ÚapplyrM  œ  sÂ   € ô �mŠmœD ›LÓ)€GÜ�W×ÒÜ�gÓ%Ð%Ü”T˜%“[Ö! '°%Ó=€DÜ�—‘×Ò $§+¡+¨gÕ"6°wÕ"?Ä4Ô"GØ�‰×Ñ¤°FÀDÐÔIÜ�D—K‘KÐ!C D§K¡KÐ!C°¸dÑ!CÀTÇ]Á]ÓSˆØ‡{�{�fÔØ$'�‰�LÑ!Ø€Kr5   c               ó    € V ^8„  d   QhRRRR/# )r-   rm   r   r.   r'   r0   )r1   s   "r2   r3   r3   «  s   € ÷ Cñ C�Sð C˜Tñ Cr5   c                ó   € V R9   # )zOWhether a general tool's result can settle a beat (the hook's cheap pre-check).)r  r0  r3  r0   )rm   s   &r2   Ú
applies_torP  «  s   € àÐBÑBÐBr5   )ÚpendingÚshownrÑ   r   )r•   r6  )rœ   )r´   rµ   )r¶   )r‘   )r’   )NÚ__conditional_annotations__rL   Ú
__future__r   rH  Úcollections.abcr   r   Údataclassesr   r   r   Útypingr   Úagent.onboarding_first_tasksr	   r
   r   r   r½   rÆ   r×   rÂ   r¼   rC  r'  ÚCARD_TIMEOUT_Sr£   rž   r¦   r   rQ   rW   r[   r^   rb   re   rg   rj   rl   r@  rq   r{   ry   r…   rª   rM   r   rÚ   rA   rÉ   r¿   r¾   rË   rÎ   rÒ   rÛ   râ   rê   ró   rû   r  r  r
  r  r  r  r  r!  r(  r+  r8  r=  r>  rD  rE  rM  rP  )rR   rS  s   0@r2   Ú<module>rZ     së  øðôõ #ã ß -ß 0Ñ 0Ý ç SÓ Sà EÑ €ˆ��gØ&2°JÀ	Ð #€
ˆH�mØ€Ø€à˜¨°'Ð:¸TÀ?ÐT[Ð]dÐ<eÐf€Ø�w ¨Ð6¸¸vÀwÐPdÐ8eØ�v˜wÐ(EÐFðH€ñ �$Ô÷Nð Nó ðNñ: �$Ô÷ð ó ðñ �$Ô÷ð ó ðñ �$Ô÷ð ó ðñ �$Ô÷ð ó ðñ
 �$Ô÷ð ó ðñ �$Ô÷ð ó ðñ
 �$Ô÷ð ó ðñ �$Ô÷	ð 	ó ð	ñ �$Ô÷ð ó ðð 	�Õ˜5Õ  8Õ+¨hÕ6¸Õ@À3ÕFÈÕMÐPWÕW€ñ �$Ô÷ð ó ðõNõ
5ñ �$Ô÷"ð "ó ð"ñ( 	ˆÑ(°	ÀÔHÙˆÑ;ÐCUÐ]eÔfÙˆÑIÐQ\ÐdlÙ@ôBáˆÑ.Ð6VÔWÙˆÑWÐ_mÙ6ô8áˆÑEÈYÐ^dÙ>ÑEeôgáˆÑ\ÐdnØ˜|ô-ð€Ðó ñ ).Ó.© �g‰g�tŠm©Ñ.€
Ù�Ó€ð	(¨Sð 	(À÷ 	(õõ`õ
>õ'õjõ
õ\õõ,TõXõ(?õõnõ
nð �{ H¨kÐ:€
õwõwõ;õ(õõ jð" 
ˆ6�8˜Y¨¨v°xÀÈXÐW`ØˆX�s˜D $¨¨w¸ðD€	Ð@ó ð 
E€õ	+ðÐQT÷ ÷Cùòa /s   ÈK5