+
    „WÝj)  ã                  óÎ   a € 0 t $ R t^ RIHt ^ RIt^ RIt^ RIHtHt Rt	Rt
^t^tRt]P                  ! 4       t/ tR]R&   R	 R
 ltR R ltR R ltR R ltRR R lltR R ltR# )a¿  Random tips shown at CLI session start to help users discover features.

The tip text lives in the i18n catalog (``locales/<lang>.yaml`` under ``tips.tNNN`` and
``tips.placeholder.pNN``), so language packs translate it like every other user-facing string.
The English catalog is the source of truth for HOW MANY tips exist (key parity is enforced by
tests/agent/test_i18n.py); the pickers resolve each key through ``t()`` for the active language.
)ÚannotationsN)ÚDEFAULT_LANGUAGEÚtztips.tztips.placeholder.pi'  zdict[str, tuple[str, ...]]Ú_keys_cachec               ó$   € V ^8„  d   QhRRRRRR/# )é   ÚprefixÚstrÚwidthÚintÚreturnútuple[str, ...]© )Úformats   "ÚCC:\Users\johnn\AppData\Local\hermes\hermes-agent\hermes_cli\tips.pyÚ__annotate__r      s!   € ÷ ñ ˜#ð  cð ¨oñ ó    c                ó¨  € \         ;_uu_ 4        \        P                  V 4      pRRR4       Xe   V# . p\        ^\        4       F7  pV  VRV R2 2p\        V\        R7      V8X  d    MVP                  V4       K9  	  \        V4      p\         ;_uu_ 4        V\        V &   RRR4       V#   + '       g   i     L�; i  + '       g   i     T# ; i)uk  Contiguous ``<prefix><NNâ€¦>`` keys present in the English catalog, cached per prefix.

Counted against English (the parity baseline) so a partial translation never shrinks the
pool: a missing translated key falls back to English inside ``t()``. The count only changes
when the bundled catalog changes, i.e. on a code change, so a process-lifetime cache is safe.
NÚ0Úd)Úlang)	Ú
_keys_lockr   ÚgetÚrangeÚ	_MAX_KEYSr   r   ÚappendÚtuple)r   r
   ÚcachedÚkeysÚindexÚkeyÚfounds   &&     r   Ú_catalog_keysr"      s®   € ÷ 
ŽÜ—‘ Ó(ˆ÷ 
àÒØˆØ€DÜ�qœ)Ö$ˆØ�˜˜q   q˜jÐ)Ð*ˆÜˆSÔ'Ô(¨CÔ/ÙØ�‰�CÖñ	 %ô
 �$‹K€Eß	ŽØ#Œ�FÑ÷ 
à€L÷ 
�ú÷ 
Žà€Lús   �B-Â
C Â-B=	Ã C	c               ó   € V ^8„  d   QhRR/# )r   r   ÚNoner   )r   s   "r   r   r   2   s   € ÷ ñ ˜$ñ r   c                 ó„   € \         ;_uu_ 4        \        P                  4        RRR4       R#   + '       g   i     R# ; i)zHForget the probed key lists (tests that swap the locales dir call this).N)r   r   Úclearr   r   r   Úreset_tips_cacher'   2   s   € ç	ŽÜ×ÑÔ÷ 
��Šús   �.®?	c               ó   € V ^8„  d   QhRR/# ©r   r   r   r   )r   s   "r   r   r   8   s   € ÷ 9ñ 9�/ñ 9r   c                 ó*   € \        \        \        4      # )z4Catalog keys of every startup tip, in catalog order.)r"   ÚTIP_KEY_PREFIXÚ_TIP_KEY_WIDTHr   r   r   Útip_keysr-   8   s   € äœ¬Ó8Ð8r   c               ó   € V ^8„  d   QhRR/# r)   r   )r   s   "r   r   r   =   s   € ÷ Iñ I ?ñ Ir   c                 ó*   € \        \        \        4      # )zFCatalog keys of every empty-composer example prompt, in catalog order.)r"   ÚPLACEHOLDER_KEY_PREFIXÚ_PLACEHOLDER_KEY_WIDTHr   r   r   Úcomposer_placeholder_keysr2   =   s   € äÔ/Ô1GÓHÐHr   c               ó    € V ^8„  d   QhRRRR/# )r   Úexclude_recentr   r   r	   r   )r   s   "r   r   r   B   s   € ÷ 2ñ 2 3ð 2¨sñ 2r   c                óh   € \        4       pV'       d    \        \        P                  ! V4      4      # R# )zOReturn a random tip string in the active language ("" if the catalog has none).Ú )r-   r   ÚrandomÚchoice)r4   r   s   & r   Úget_random_tipr9   B   s$   € ä‹:€Dß%)Œ1ŒV�]Š]˜4Ó Ó!Ð1¨rÐ1r   c               ó   € V ^8„  d   QhRR/# )r   r   r	   r   )r   s   "r   r   r   H   s   € ÷ 2ñ 2¨ñ 2r   c                 óh   € \        4       p V '       d    \        \        P                  ! V 4      4      # R# )u¾   Return a rotating task-oriented placeholder for the empty composer, in the active language.

Kept generic â€” Hermes is not a coding-only agent, so the prompts must fit any project or none.
r6   )r2   r   r7   r8   )r   s    r   Úget_random_composer_placeholderr<   H   s'   € ô
 %Ó&€Dß%)Œ1ŒV�]Š]˜4Ó Ó!Ð1¨rÐ1r   )é    )Ú__conditional_annotations__Ú__doc__Ú
__future__r   r7   Ú	threadingÚ
agent.i18nr   r   r+   r0   r,   r1   r   ÚLockr   r   Ú__annotations__r"   r'   r-   r2   r9   r<   )r>   s   @r   Ú<module>rE      sj   øðôõ #ã Û ç *à€Ø-Ð Ø€ØÐ à€	à�^Š^Ó€
Ø*,€Ð'Ó ,õõ.õ9õ
I÷
2÷2r   