+
    kHàjÞ  ã                  óR  € R t ^ RIHt ^ RIt^ RIHtHtHtHt ^ RI	H
t
HtHtHt RtRt]P                   ! R4      t]P                   ! R4      tR	 R
 lt ! R R4      t] ! R R]4      4       t] ! R R]4      4       t] ! R R]4      4       t] ! R R]4      4       t] ! R R]4      4       t] ! R R]4      4       t] ! R R]4      4       tR R ltR R ltR R  ltR!R"/R# R$ lltR% R& lt ] ! R' R(4      4       t!R)R*R+R,/t"R- R. lt#] ! R/ R04      4       t$^ R1^R2^R3/t%R4 R5 lt&R# )6aÄ  QQ Bot inline keyboards + approval / update-prompt helpers. A button click dispatches an
``INTERACTION_CREATE`` event carrying the button's ``data``; the bot must ACK promptly via
``PUT /interactions/{id}`` or the user sees an error indicator. ``button_data`` formats:
``approve:<session_key>:<decision>`` (allow-once|allow-always|deny) and ``update_prompt:<answer>`` (y|n).
Ported from WideLee's qqbot-agent-sdk v1.2.2 (authorship via Co-authored-by).)ÚannotationsN)Ú	dataclassÚfieldÚfieldsÚis_dataclass)ÚAnyÚDictÚListÚOptionalzapprove:zupdate_prompt:z-^approve:(.+):(allow-once|allow-always|deny)$z^update_prompt:(y|n)$c               ó    € V ^8„  d   QhRRRR/# )é   Úvaluer   Úreturn© )Úformats   "ÚF/home/ubuntu/.hermes/hermes-agent/plugins/platforms/qqbot/keyboards.pyÚ__annotate__r      s   € ÷ Nñ N�Cð N˜Cñ Nó    c           
     ó   € \        V 4      '       dB   \        V 4       Uu/ uF+  qP                  \        \	        WP                  4      4      bK-  	  up# \        V \        4      '       d   V  Uu. uF  p\        V4      NK  	  up# T # u upi u upi )zGSerialize a dataclass tree in field-declaration order (the wire shape).)r   r   ÚnameÚ_to_dictÚgetattrÚ
isinstanceÚlist)r   ÚfÚvs   &  r   r   r      sn   € ä�E×ÒÜBHÈÄ-ÓPÁ-¸Q—‘œ¤¨·±Ó!7Ó8Ò8Á-ÑPÐPÜ+5°e¼T×+BÒ+B¡Ó'¡˜AŒH�QŽK¡Ñ'ÐMÈÐMùò QùÚ's   Ÿ1BÁ-Bc                  ó   € ] tR t^t]tRtR# )Ú_Serializabler   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   Úto_dictÚ__static_attributes__r   r   r   r   r      s   † Ø„Gr   r   c                  ó*   € ] tR t^t$ Rt^tR]R&   RtR# )ÚKeyboardButtonPermissionzAButton permission metadata. ``type=2`` means all users can click.ÚintÚtyper   N)r   r   r    r!   Ú__doc__r'   Ú__annotations__r#   r   r   r   r%   r%      s   ‡ áKØ€Dˆ#‡Mr   r%   c                  óZ   € ] tR t^%t$ RtR]R&   R]R&   ]! ]R7      tR]R&   ^t	R]R	&   R
t
R# )ÚKeyboardButtonActionztClick behaviour: ``type`` 1 = Callback (INTERACTION_CREATE with ``data``), 2 = Link;
``click_limit=1`` = single-use.r&   r'   ÚstrÚdata©Údefault_factoryr%   Ú
permissionÚclick_limitr   N)r   r   r    r!   r(   r)   r   r%   r0   r1   r#   r   r   r   r+   r+   %   s,   ‡ ñ'à
ƒIØ
ƒIÙ+0ÐAYÔ+Z€JÐ(ÓZØ€K�×r   r+   c                  ó>   € ] tR t^/t$ RtR]R&   R]R&   ^tR]R&   RtR# )	ÚKeyboardButtonRenderDatazFVisual rendering: pre/post-click labels; ``style`` 0 = grey, 1 = blue.r,   ÚlabelÚvisited_labelr&   Ústyler   N)r   r   r    r!   r(   r)   r6   r#   r   r   r   r3   r3   /   s   ‡ áPØƒJØÓØ€Eˆ3‡Nr   r3   c                  óH   € ] tR t^7t$ RtR]R&   R]R&   R]R&   RtR]R	&   R
tR# )ÚKeyboardButtonzBOne button; buttons sharing a ``group_id`` are mutually exclusive.r,   Úidr3   Úrender_datar+   ÚactionÚdefaultÚgroup_idr   N)r   r   r    r!   r(   r)   r=   r#   r   r   r   r8   r8   7   s    ‡ áLØƒGØ)Ó)Ø Ó Ø€Hˆc×r   r8   c                  ó4   € ] tR t^@t$ ]! ]R7      tR]R&   RtR# )ÚKeyboardRowr.   zlist[KeyboardButton]Úbuttonsr   N)	r   r   r    r!   r   r   r@   r)   r#   r   r   r   r?   r?   @   s   ‡ á$)¸$Ô$?€GÐ!×?r   r?   c                  ó4   € ] tR t^Et$ ]! ]R7      tR]R&   RtR# )ÚKeyboardContentr.   zlist[KeyboardRow]Úrowsr   N)	r   r   r    r!   r   r   rC   r)   r#   r   r   r   rB   rB   E   s   ‡ á#°DÔ9€DÐ
×9r   rB   c                  ó8   € ] tR t^Jt$ Rt]! ]R7      tR]R&   Rt	R# )ÚInlineKeyboarduF   Top-level keyboard payload â€” goes into ``MessageToCreate.keyboard``.r.   rB   Úcontentr   N)
r   r   r    r!   r(   r   rB   rF   r)   r#   r   r   r   rE   rE   J   s   ‡ áPÙ$°_ÔE€Gˆ_×Er   rE   c               ó    € V ^8„  d   QhRRRR/# )r   Úbutton_datar,   r   zOptional[tuple[str, str]]r   )r   s   "r   r   r   P   s   € ÷ Uñ U¨Cð UÐ4Mñ Ur   c                ót   € \         P                  T ;'       g    R4      ;p'       d   VP                  4       # R# )zLParse approval ``button_data`` into ``(session_key, decision)`` or ``None``.Ú N)Ú_APPROVAL_DATA_REÚmatchÚgroups©rH   Úms   & r   Úparse_approval_button_datarP   P   s1   € ä0×6Ñ6°{×7HÐ7HÀbÓIÐI˜!ÖIˆ1�8‰8‹:ÐTÐPTÐTr   c               ó    € V ^8„  d   QhRRRR/# )r   rH   r,   r   zOptional[str]r   )r   s   "r   r   r   U   s   € ÷ Uñ U°ð U¸ñ Ur   c                óv   € \         P                  T ;'       g    R4      ;p'       d   VP                  ^4      # R# )zGParse update-prompt ``button_data`` into ``'y'`` / ``'n'`` or ``None``.rJ   N)Ú_UPDATE_PROMPT_RErL   ÚgrouprN   s   & r   Úparse_update_prompt_button_datarU   U   s3   € ä0×6Ñ6°{×7HÐ7HÀbÓIÐI˜!ÖIˆ1�7‰7�1‹:ÐTÐPTÐTr   c               ó$   € V ^8„  d   QhRRRRRR/# )r   r=   r,   r@   Útupler   rE   r   )r   s   "r   r   r   Z   s!   € ÷ ?ñ ? 3ð ?°%ð ?¸Nñ ?r   c                óÖ   € \        V UUUUUu. uF+  w  r#rEp\        W \        ^VR7      \        W4VR7      R7      NK-  	  upppppR7      p\	        \        V.R7      R7      # u upppppi )zTOne row of callback buttons from ``(id, label, visited_label, data, style)`` tuples.)r'   r-   )r4   r5   r6   )r9   r=   r;   r:   )r@   )rC   )rF   )r?   r8   r+   r3   rE   rB   )r=   r@   Úbtn_idr4   Úvisitedr-   r6   Úrows   &*      r   Ú_single_row_keyboardr\   Z   sj   € ä
ñ 4;÷<ñ 4;Ñ/ˆF˜7¨%ô 	˜&Ô<PÐVWÐ^bÔ<cÜ#;À%ÐfkÔ#l÷	ná3:õ<ô =€Cô ¤/¸°uÔ"=Ô>Ð>ùö	<s   Ž1A"Úallow_permanentTc               ó$   € V ^8„  d   QhRRRRRR/# )r   Úsession_keyr,   r]   Úboolr   rE   r   )r   s   "r   r   r   c   s"   € ÷ 6ñ 6¨ð 6À$ð 6ÐR`ñ 6r   c               óº   € \          V  2pRRRV R2^3.pV'       d   VP                  RRRV R2^34       VP                  R	R
RV R2^ 34       \        R.VO5!  # )uá   Build ``[âœ… å…�è®¸ä¸€æ¬¡] [â­� å§‹ç»ˆå…�è®¸] [â�Œ æ‹’ç»�]`` (one group, so a click greys the rest). â­� is hidden when
persistent scope is unavailable; *session_key* rides in ``button_data`` so the decision routes correctly.Úallowu   âœ… å…�è®¸ä¸€æ¬¡u	   å·²å…�è®¸z:allow-onceÚalwaysu   â­� å§‹ç»ˆå…�è®¸u   å·²å§‹ç»ˆå…�è®¸z:allow-alwaysÚdenyu
   â�Œ æ‹’ç»�u	   å·²æ‹’ç»�z:denyÚapproval)ÚAPPROVAL_BUTTON_PREFIXÚappendr\   )r_   r]   Úprefixr@   s   &$  r   Úbuild_approval_keyboardri   c   s‚   € ô 'Ð'¨ }Ð5€FØÐ+¨[¸V¸HÀKÐ:PÐRSÐTÐU€GßØ�‰˜Ð"4Ð6GÈFÈ8ÐS`ÐIaÐcdÐeÔfØ‡N�N�F˜L¨+¸&¸ÀÐ7GÈÐKÔLÜ 
Ð5¨WÓ5Ð5r   c               ó   € V ^8„  d   QhRR/# )r   r   rE   r   )r   s   "r   r   r   n   s   € ÷ bñ b nñ br   c            	     óL   € \        RRRR\         R2^3RRR\         R	2^ 34      # )
z8Build a Yes/No keyboard for update confirmation prompts.Úupdate_promptÚyesu
   âœ“ ç¡®è®¤u	   å·²ç¡®è®¤ÚyÚnou
   âœ— å�–æ¶ˆu	   å·²å�–æ¶ˆÚn)r\   ÚUPDATE_PROMPT_PREFIXr   r   r   Úbuild_update_prompt_keyboardrr   n   sD   € ä °%¸À{ÔWkÐVlÐlmÐTnÐpqÐ1rØ!% |°[ÔEYÐDZÐZ[ÐB\Ð^_Ð `óbð br   c                  ó’   € ] tR t^tt$ RtR]R&   R]R&   RtR]R&   RtR]R&   RtR]R&   Rt	R]R	&   Rt
R]R
&   ^xtR]R&   RtR]R&   RtR# )ÚApprovalRequestzªApproval-request display data. ``command_preview`` / ``cwd`` are set for exec approvals, ``tool_name``
for plugin approvals; ``severity`` is ``'critical' | 'info' | ''``.r,   r_   ÚtitlerJ   ÚdescriptionÚcommand_previewÚcwdÚ	tool_nameÚseverityr&   Útimeout_secTr`   r]   r   N)r   r   r    r!   r(   r)   rv   rw   rx   ry   rz   r{   r]   r#   r   r   r   rt   rt   t   sX   ‡ ñKàÓØƒJØ€K�ÓØ€O�SÓØ€CˆƒMØ€IˆsÓØ€HˆcÓØ€K�ÓØ €O�T× r   rt   Úcriticalu   ðŸ”´Úinfou   ðŸ”µc               ó    € V ^8„  d   QhRRRR/# )r   Úreqrt   r   r,   r   )r   s   "r   r   r   †   s   € ÷ ñ ˜_ð °ñ r   c                ó”  € V P                   '       g   V P                  '       dé   RR.pV P                   '       d'   VP                  RV P                   R,           R24       V P                  '       d   VP                  RV P                   24       V P                  '       d:   V P                  V P                   8w  d   VP                  RV P                   24       V P                  '       d   VP                  RV P                   24       M“\
        P                  V P                  R	4       R
2RRV P                   2.pV P                  '       d   VP                  RV P                   24       V P                  '       d   VP                  RV P                   24       VRRV P                   R2.,          pRP                  V4      # )zDRender an :class:`ApprovalRequest` into the message body (markdown).u   ðŸ”� **å‘½ä»¤æ‰§è¡Œå®¡æ‰¹**rJ   z```
:Ni,  Nz
```u   ðŸ“� ç›®å½•: u   ðŸ“‹ u   ðŸ“� u   ðŸŸ¡u    **å®¡æ‰¹è¯·æ±‚**u   ðŸ”§ å·¥å…·: u   â�±ï¸� è¶…æ—¶: u    ç§’Ú
)rw   rx   rg   ru   rv   Ú_SEVERITY_ICONSÚgetrz   ry   r{   Újoin)r   Úliness   & r   Úbuild_approval_textr†   †   sd  € à
××Ð˜cŸgŸg˜gØ.°Ð3ˆØ××ÐØ�L‰L˜5 ×!4Ñ!4°TÕ!:Ð ;¸5ÐAÔBØ�7�7ˆ7Ø�L‰L˜=¨¯©¨	Ð2Ô3Ø�9�9ˆ9˜Ÿ™ c×&9Ñ&9Ô9Ø�L‰L˜5 §¡ Ð,Ô-Ø�?�?ˆ?Ø�L‰L˜5 §¡Ð 1Ð2Ô3øä#×'Ñ'¨¯©°fÓ=Ð>Ð>OÐPÐRTÐX]Ð^a×^gÑ^gÐ]hÐViÐjˆØ�?�?ˆ?Ø�L‰L˜5 §¡Ð 1Ð2Ô3Ø�=�=ˆ=Ø�L‰L˜=¨¯©¨Ð8Ô9Ø	ˆb�O C§O¡OÐ#4°DÐ9Ð:Õ:€EØ�9‰9�UÓÐr   c                  óÚ   € ] tR t^œt$ RtRtR]R&   ^ t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tR]R&   RtR]R&   RtR]R&   ]R R l4       tRtR# )ÚInteractionEventz?Parsed ``INTERACTION_CREATE`` payload (api-v2 event-emit docs).rJ   r,   r9   r&   r'   Ú	chat_typeÚsceneÚgroup_openidÚgroup_member_openidÚuser_openidÚ
channel_idÚguild_idrH   Ú	button_idÚresolver_user_idc               ó   € V ^8„  d   QhRR/# )r   r   r,   r   )r   s   "r   r   ÚInteractionEvent.__annotate__­   s   € ÷ Uñ U ñ Ur   c                ój   € V P                   ;'       g!    V P                  ;'       g    V P                  # )u@   Best available operator openid (group â†’ member; c2c â†’ user).)rŒ   r�   r‘   )Úselfs   &r   Úoperator_openidÚ InteractionEvent.operator_openid¬   s,   € ð ×'Ñ'×TÐT¨4×+;Ñ+;×TÐT¸t×?TÑ?TÐTr   r   N)r   r   r    r!   r(   r9   r)   r'   r‰   rŠ   r‹   rŒ   r�   rŽ   r�   rH   r�   r‘   Úpropertyr–   r#   r   r   r   rˆ   rˆ   œ   s�   ‡ áIØ€BˆƒLØ€Dˆ#ƒMØ€IˆsÓØ€Eˆ3ƒOØ€L�#ÓØ!Ð˜Ó!Ø€K�ÓØ€J�ÓØ€HˆcÓØ€K�ÓØ€IˆsÓØÐ�cÓàôUó ôUr   rˆ   ÚguildrT   Úc2cc               ó    € V ^8„  d   QhRRRR/# )r   Úrawzdict[str, Any]r   rˆ   r   )r   s   "r   r   r   µ   s   € ÷ 
;ñ 
; ð 
;Ð4Dñ 
;r   c                ó  € V P                  R4      ;'       g    / pVP                  R4      ;'       g    / \        V P                  R^ 4      ;'       g    ^ 4      r2\        \        V P                  RR4      4      \        VP                  R^ 4      ;'       g    ^ 4      V\        P                  VR4      \        V P                  RR4      4      \        V P                  RR4      4      \        V P                  R	R4      4      \        V P                  R
R4      4      \        V P                  RR4      4      \        VP                  RR4      4      \        VP                  RR4      4      \        VP                  RR4      4      R7      # )z<Parse a raw ``INTERACTION_CREATE`` dispatch payload (``d``).r-   Úresolvedr‰   r9   rJ   r'   r‹   rŒ   r�   rŽ   r�   rH   r�   Úuser_id)r9   r'   r‰   rŠ   r‹   rŒ   r�   rŽ   r�   rH   r�   r‘   )rƒ   r&   rˆ   r,   Ú_SCENE_NAMES)rœ   Údata_rawrž   Ú
scene_codes   &   r   Úparse_interaction_eventr£   µ   s5  € à�w‰w�v‹×$Ð$ "€HØ#Ÿ<™<¨
Ó3×9Ð9°r¼3¸s¿w¹wÀ{ÐTUÓ?V×?[Ð?[ÐZ[Ó;\ˆjÜÜˆs�w‰w�t˜RÓ Ó!¬¨H¯L©L¸ÀÓ,C×,HÐ,HÀqÓ(IÐU_Ü×Ñ˜z¨2Ó.¼SÀÇÁÈÐY[ÓA\Ó=]Ü §¡Ð(=¸rÓ BÓCÔQTÐUX×U\ÑU\Ð]jÐlnÓUoÓQpÜ�s—w‘w˜|¨RÓ0Ó1¼CÀÇÁÈ
ÐTVÓ@WÓ<XÜ˜Ÿ™ ]°BÓ7Ó8ÄCÈÏÉÐU`ÐbdÓHeÓDfÜ˜XŸ\™\¨)°RÓ8Ó9ô;ð ;r   )'r(   Ú
__future__r   ÚreÚdataclassesr   r   r   r   Útypingr   r   r	   r
   rf   rq   ÚcompilerK   rS   r   r   r%   r+   r3   r8   r?   rB   rE   rP   rU   r\   ri   rr   rt   r‚   r†   rˆ   r    r£   r   r   r   Ú<module>r©      s¦  ðñQõ #ã 	ß >Ó >ß ,Ó ,à#Ð Ø'Ð ð —J’JÐOÓPÐ Ø—J’JÐ7Ó8Ð õN÷ñ ð ô˜}ó ó ðð
 ô˜=ó ó ðð ô˜}ó ó ðð ô�]ó ó ðð ô@�-ó @ó ð@ð ô:�mó :ó ð:ð ôF�]ó Fó ðFõ
Uõ
Uõ
?ð6È÷ 6õbð ÷!ð !ó ð!ð ˜v v¨vÐ6€õð, ÷Uð Uó ðUð* �7˜A˜w¨¨5Ð1€÷
;r   