+
    jHàjG
  ã                   ój   € R t ^ RIHt ]! 4       tRR/R ltR tR t]! RR7       ! R R	4      4       tR
# )ut  Public send_message contract pieces a platform plugin declares on its ``PlatformEntry``.

Plugins import these instead of core-private helpers in ``tools/send_message_*``:

* ``target_ref_syntax_fn`` parsers â€” ``(target_ref) -> (chat_id, thread_id) | None | NOT_EXPLICIT``.
  None falls through to core's generic id rules (E.164, numeric, Matrix ``!``/``@``); ``NOT_EXPLICIT``
  skips them and goes straight to the channel directory.
* ``StandaloneSendPolicy`` â€” when send_message bypasses the live adapter for ``standalone_sender_fn``.

Pure ``re``/dataclasses: core imports this module before any adapter is materialized.
)Ú	dataclassÚthread_groupTc               ó   a a€ V V3R l# )zUExplicit when ``regex`` fully matches: chat_id = group 1, thread = group 2 (or None).c                 ó”   <€ SP                  V 4      ;p'       d.   VP                  ^4      S'       d   VP                  ^4      3# R3# R# )é   N)Ú	fullmatchÚgroup)ÚrefÚmÚregexr   s   & €€ÚC/home/ubuntu/.hermes/hermes-agent/gateway/platforms/send_targets.pyÚ<lambda>Ú%regex_groups_parser.<locals>.<lambda>   sM   ø€ Ø!&§¡°Ó!5Ð5˜AÖ5ð Ÿ™ ›·< Q§W¡W¨Q£ZÐJð AÀTÐJð AØ<@ðAó    © )r   r   s   fdr   Úregex_groups_parserr      s   ù€ õBð Br   c                ó   a € V 3R l# )zIExplicit when ``regex`` fully matches; returns the stripped ref verbatim.c                 óZ   <€ SP                  V 4      '       d   V P                  4       R 3# R # ©N)r   Ústrip)r	   r   s   &€r   r   Ú'regex_stripped_parser.<locals>.<lambda>   s&   ø€ ¨e¯o©o¸c×.BÒ.B˜Ÿ	™	› TÐ*ÐLÈÐLr   r   )r   s   fr   Úregex_stripped_parserr      s	   ø€ äLÐLr   c                 ó>   € V P                  4       pV'       d   VR 3# R # r   )r   )r	   Ústrippeds   & r   Úparse_nonemptyr      s   € à�y‰y‹{€Hß'ˆH�dÐÐ1¨TÐ1r   )Úfrozenc                   óP   a € ] tR t^#t o RtRtRtRtRtRt	Rt
RtRtV 3R ltRtV tR# )ÚStandaloneSendPolicyzÿHow send_message routes a platform through its ``standalone_sender_fn`` instead of the
live adapter (Discord: forums/threads/multipart; Slack: files_upload_v2; WhatsApp: Baileys
/send-media; Signal: attachments ride the JSON-RPC param on the final chunk).Ú Fc                óz   <€ V ^8„  d   Qh/ S[ ;R&   S[;R&   S[;R&   S[;R&   S[;R&   S[;R&   S[;R&   S[;R&   # )	é   ÚlabelÚmediaÚ	all_sendsÚcaptionableÚempty_list_between_chunksÚforward_force_documentÚmentionsÚtext_direct)ÚstrÚbool)ÚformatÚ__classdict__s   "€r   Ú__annotate__Ú!StandaloneSendPolicy.__annotate__#   sl   ø‡ ‚ ñ �Oñ ñ Ññ ñ Ññ ñ Ññ ñ  $Ñ+ñ ñ !Ñ(ñ ñ Ññ ñ" Ñò# r   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r!   r"   r#   r$   r%   r&   r'   r(   Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__)r,   s   @r   r   r   #   s@   ø‡ € ñUð €EØ€EØ€IØ€Kà&+ÐØ#(Ðà€Hð €K÷# ƒ r   r   N)	r3   Údataclassesr   ÚobjectÚNOT_EXPLICITr   r   r   r   r   r   r   Ú<module>r:      sM   ðñ
õ "á‹x€ðB¨tô BòMò
2ñ �$Ô÷ð ó òr   