+
    jHàjs"  ã                  ó&  € R t ^ RIHt ^ RIt^ RIHt ^ RIHt ^ RIH	t
 ^ RIHtHtH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#]R$]R%]R&]R']R(]R)]R*]R+]R,]R-]/tR# ).uÜ   ``hermes kanban boards â€¦`` â€” board directories, the ``current`` pointer and ``board.json``.
Filesystem-only, so every action works before ``kanban init`` and must ignore the shared
``--board`` task-routing override.
)ÚannotationsN)ÚOptional)Ú	kanban_db)Úkanban_db_connect)Ú_errÚ_fmt_countsÚ	_json_outc               ó    € V ^8„  d   QhRRRR/# ©é   Úargsúargparse.NamespaceÚreturnÚint© )Úformats   "Ú=/home/ubuntu/.hermes/hermes-agent/hermes_cli/kanban_boards.pyÚ__annotate__r      s   € ÷ ñ Ð-ð °#ñ ó    c                ó’   € \        V RR4      ;'       g    Rp\        P                  V4      pVf   \        RV: 2^4      # V! V 4      # )uZ   ``hermes kanban boards <action>`` â€” filesystem-only, so it works before ``kanban init``.Úboards_actionNÚlistzkanban boards: unknown action )ÚgetattrÚ_BOARD_HANDLERSÚgetr   )r   ÚsubÚhandlers   &  r   Ú_dispatch_boardsr      sL   € ä
�$˜¨Ó
.×
8Ð
8°&€CÜ×!Ñ! #Ó&€GØ‚ÜÐ4°S±GÐ<¸aÓ@Ð@Ù�4‹=Ðr   c               ó    € V ^8„  d   QhRRRR/# )r   ÚslugÚstrr   zdict[str, int]r   )r   s   "r   r   r      s   € ÷ 	ñ 	˜Sð 	 ^ñ 	r   c                ó”  €  \         P                  ! V R7      P                  4       '       g   / # \        P                  ! V R7      ;_uu_ 4       pVP                  R4      P                  4       pRRR4       X Uu/ uF  q3R,          \        VR,          4      bK  	  up#   + '       g   i     L9; iu upi   \         d    / u # i ; i)z=``{status: count}`` for a board. Safe to call on an empty DB.)Úboardz7SELECT status, COUNT(*) AS n FROM tasks GROUP BY statusNÚstatusÚn)	ÚkbÚkanban_db_pathÚexistsÚkbcÚconnect_closingÚexecuteÚfetchallr   Ú	Exception)r   ÚconnÚrowsÚrs   &   r   Ú_board_task_countsr0      s™   € ðÜ× Ò  tÔ,×3Ñ3×5Ò5ØˆIÜ× Ò  t×,Õ,°Ø—<‘<Ð YÓZ×cÑcÓeˆD÷ -á26Ó7±$¨Q�(•œS  3¥›[Ò(±$Ñ7Ð7÷ -×,üâ7øÜô ØŠ	ðús?   ‚*B7 ­B7 ¯B7 Á BÁ.B7 Á:"B2ÂB7 ÂB/	Â*B7 Â7CÃCc               ó(   € V ^8„  d   QhRRRRRRRR/# )	r   r   r   Úcmdr    Ú
must_existÚboolr   ztuple[Optional[str], int]r   )r   s   "r   r   r   %   s*   € ÷ ñ Ð,ð °3ð Àtð ÐPiñ r   c               óx  €  \         P                  ! V P                  4      pT'       dI   T'       d   \         P
                  ! T4      '       g    R\	        RT RT P                  : R24      3#  T^ 3# T'       g   R\	        RT R2^4      3# T^ 3#   \         d   pR\	        RT RT 2^4      3u Rp?# Rp?ii ; i)zUNormalize ``args.slug`` for a ``boards`` subcommand; ``(slug, 0)`` or ``(None, rc)``.Nzkanban boards z: z: board z does not existz: slug is required)r%   Ú_normalize_board_slugr   Ú
ValueErrorr   Úboard_exists)r   r2   r3   ÚnormedÚexcs   &&$  r   Ú_board_slug_argr;   %   sÁ   € ð<Ü×)Ò)¨$¯)©)Ó4ˆ÷ ßœRŸ_š_¨V×4Ò4Øœ ¨s¨e°8¸D¿I¹I¹=ÈÐXÓYÐYÐYð 5ð �1ˆ9Ð÷ Ø”T˜N¨3¨%Ð/AÐBÀAÓFÐFÐFØ�1ˆ9Ðøô ô <Ø”T˜N¨3¨%¨r°#°Ð7¸Ó;Ð;Õ;ûð<ús   ‚ B ÂB9ÂB4Â.B9Â4B9c               ó    € V ^8„  d   QhRRRR/# r
   r   )r   s   "r   r   r   3   s   € ÷ ñ Ð-ð °#ñ r   c                ó  € \         P                  ! \        \        V R R4      4      R7      p\         P                  ! 4       pV FJ  pVR,          V8H  VR&   \        VR,          4      VR&   \        VR,          P                  4       4      VR&   KL  	  \        W4      '       d   ^ # V'       g   \        R4       ^ # \        RR	 R
RR R
RR R24       V FŒ  pVR,          '       d   RMRpVP                  R4      ;'       g    RVP                  R4      '       d   RMR,           p\        VR	 R
VR,          R R
VR R
\        VR,          ;'       g    / R4       24       KŽ  	  \        RV 24       \        V4      ^8”  d   \        R4       ^ # )ÚallF)Úinclude_archivedr   Ú
is_currentÚcountsÚtotaluD   (no boards â€” create one with `hermes kanban boards create <slug>`)Ú Ú2sz  ÚSLUGÚ24sÚNAMEÚ28sz  COUNTSu   â—�Ú ÚnameÚarchivedz [archived]z(empty)z
Current board: z8Switch boards with `hermes kanban boards switch <slug>`.)r%   Úlist_boardsr4   r   Úget_current_boardr0   ÚsumÚvaluesr   Úprintr   r   Úlen)r   ÚboardsÚcurrentÚbÚmarkerrJ   s   &     r   Ú_cmd_boards_listrV   3   sa  € Ü�^Š^¬T´'¸$ÀÀuÓ2MÓ-NÔO€FÜ×"Ò"Ó$€GÛˆØ˜V�9¨Ñ/ˆˆ,‰Ü(¨¨6­Ó3ˆˆ(‰Ü˜˜8�×+Ñ+Ó-Ó.ˆˆ'‹
ñ ô �×ÒÙßÜÐTÔUÙÜ	ˆR�ˆG�2�f˜S�\  F¨3 <¨xÐ
8Ô9ÛˆØ˜LŸ/œ/‘¨sˆØ—‘�f“×#Ð# ¸¿¹¸z×9JÒ9J©ÐPRÕSˆÜ�˜�˜2˜a �i¨˜_¨B¨t°C¨j¸¼;ÀqÈÅ{×GXÐGXÐVXÐZcÓ;dÐ:eÐfÖgñ ô 
Ð˜g˜YÐ
'Ô(Ü
ˆ6ƒ{�Q„ÜÐHÔIÙr   c               ó    € V ^8„  d   QhRRRR/# r
   r   )r   s   "r   r   r   J   s   € ÷ ñ Ð/ð °Cñ r   c                ót  € \        V R RR7      w  rV'       d   V# \        P                  ! V4      ;'       d    V\        P                  8g  p\        P                  ! WP
                  V P                  V P                  V P                  V P                  R7      p\        RVR,          : RV'       d   RMR R	VP                  R
R4       RVR,           24       \        V RR4      '       d7   \        P                  ! VR,          4       \        RVR,          : R24       ^ # \        RVR,           R24       ^ # )ÚcreateF©r3   )rJ   ÚdescriptionÚiconÚcolorÚdefault_workdirúBoard r   rI   zalready existsÚcreatedz.
  Display name: rJ   rC   z
  DB path:      Údb_pathÚswitchz  Switched to Ú.z#  Use `hermes kanban boards switch z` to make it current.)r;   r%   r8   ÚDEFAULT_BOARDÚcreate_boardrJ   r[   r\   r]   r^   rP   r   r   Úset_current_board)r   r9   ÚrcÚalreadyÚmetas   &    r   Ú_cmd_boards_createrj   J   s  € Ü   x¸EÔB�J€Fß	Øˆ	Ü�oŠo˜fÓ%×DÐD¨&´B×4DÑ4DÑ*D€GÜ�?Š?Ø—Y‘Y¨D×,<Ñ,<À4Ç9Á9ÐTX×T^ÑT^Ø×,Ñ,ô€Dô 
ˆF�4˜•<Ñ" !¿Ñ$4ÀYÐ#Oð PØ!ŸX™X f¨bÓ1Ð2ð 3Ø! )�_Ð-ð/ô 0ô ˆt�X˜u×%Ò%Ü
×Ò˜T &�\Ô*Ü�˜t F�|Ñ.¨aÐ0Ô1ñ ô 	Ð3°D¸µL°>ÐAVÐWÔXÙr   c               ó    € V ^8„  d   QhRRRR/# r
   r   )r   s   "r   r   r   ^   s   € ÷ ñ Ð+ð °ñ r   c                ó|  € \        V R R4      ;'       g    \        V RR4      R 8H  p \        P                  ! V P                  V'       * R7      pTR,          R8X  d$   \        R	TR
,          : RTR,           R24       ^ # \        R	TR
,          : R24       ^ #   \         d   p\        RT 24      u Rp?# Rp?ii ; i)ÚdeleteFr   rC   )Úarchivezkanban boards rm: NÚactionrK   r_   r   u    archived â†’ Únew_pathz‡
Recover by moving the directory back to <root>/kanban/boards/<slug>/ and deleting the archived tombstone board.json left in its place.z	 deleted.)r   r%   Úremove_boardr   r7   r   rP   )r   Úforce_deleteÚresr:   s   &   r   Ú_cmd_boards_rmrt   ^   sÃ   € ô ˜4 ¨5Ó1×cÐc´W¸TÀ?ÐTVÓ5WÐ[cÑ5c€Lð0Ü�oŠo˜dŸi™i°\Ô1AÔBˆð ˆ8…}˜
Ô"Ü��s˜6•{‘o ^°C¸
µOÐ3Dð ERð Rô 	Sñ
 ô 	��s˜6•{‘o YÐ/Ô0Ùøô ô 0ÜÐ(¨¨Ð.Ó/Õ/ûð0ús   §'B ÂB;Â#B6Â0B;Â6B;c               ó    € V ^8„  d   QhRRRR/# r
   r   )r   s   "r   r   r   p   s   € ÷ ñ Ð/ð °Cñ r   c                óZ  € \        V R RR7      w  rV'       d   V# \        P                  ! V4      '       g   \        RV: RV R24      # \        P                  ! V4      P                  R4      '       d   \        RV: R24      # \        P                  ! V4       \        RV: R	24       ^ # )
rb   FrZ   zkanban boards switch: board z= does not exist. Create it with `hermes kanban boards create ú`.rK   z is archived.zActive board is now rc   )r;   r%   r8   r   Úread_board_metadatar   rf   rP   )r   r9   rg   s   &  r   Ú_cmd_boards_switchry   p   s¥   € Ü   x¸EÔB�J€Fß	Øˆ	Ü�?Š?˜6×"Ò"ÜØ*¨6©*ð 5;Ø;A¸(À"ðFó
ð 	
ô 
×Ò˜fÓ%×)Ñ)¨*×5Ò5ÜÐ2°6±*¸MÐJÓKÐKÜ×Ò˜Ô Ü	Ð  ¡
¨!Ð
,Ô-Ùr   c               ó    € V ^8„  d   QhRRRR/# r
   r   )r   s   "r   r   r   ‚   s   € ÷ 	ñ 	Ð-ð 	°#ñ 	r   c           	     ó¨  € \         P                  ! 4       p\         P                  ! V4      p\        V4      p\	        R V RVP                  RR4       24       VP                  R4      '       d   \	        RVR,           24       \	        RVR,           R\        VP                  4       4       R	2V'       d   R
\        V4       R2MR,           4       ^ # )zCurrent board: z
  Display name: rJ   rC   r[   z  Description:  z  DB path:      ra   z
  Tasks:        z totalú (Ú))	r%   rM   rx   r0   rP   r   rN   rO   r   )r   rS   ri   rA   s   &   r   Ú_cmd_boards_showr~   ‚   sÄ   € Ü×"Ò"Ó$€GÜ×!Ò! 'Ó*€DÜ Ó(€FÜ	ˆO˜G˜9Ð$6°t·x±xÀÈÓ7KÐ6LÐ
MÔNØ‡x�x�×ÒÜÐ   mÕ!4Ð 5Ð6Ô7Ü	Ð˜T )�_Ð-ð .Ü  §¡£Ó1Ð2°&ð:ß\b¸rÄ+ÈfÓBUÐAVÐVWÑ=XÐhjõlô már   c               ó    € V ^8„  d   QhRRRR/# r
   r   )r   s   "r   r   r   Ž   s   € ÷ ñ Ð/ð °Cñ r   c                ó²   € \        V R RR7      w  rV'       d   V# \        P                  ! WP                  R7      p\	        RV: RVR,          : R24       ^ # )ÚrenameTrZ   )rJ   r_   z renamed to rJ   rc   )r;   r%   Úwrite_board_metadatarJ   rP   )r   r9   rg   ri   s   &   r   Ú_cmd_boards_renamerƒ   Ž   sM   € Ü   x¸DÔA�J€Fß	Øˆ	Ü×"Ò" 6·	±	Ô:€DÜ	ˆF�6‘*˜L¨¨f­Ñ(8¸Ð
:Ô;Ùr   c               ó    € V ^8„  d   QhRRRR/# r
   r   )r   s   "r   r   r   —   s   € ÷ 	ñ 	Ð*<ð 	Àñ 	r   c                óö   € \        V R RR7      w  rV'       d   V# \        P                  ! WP                  R7      P	                  R4      pV'       d   \        RV: RV: R24       ^ # \        RV: R24       ^ # )	úset-default-workdirTrZ   )r^   r^   r_   z default workdir set to rc   z default workdir cleared.)r;   r%   r‚   Úpathr   rP   )r   r9   rg   Únew_vals   &   r   Ú_cmd_boards_set_default_workdirr‰   —   sr   € Ü  Ð'<ÈÔN�J€Fß	Øˆ	Ü×%Ò% f¿i¹iÔH×LÑLÐM^Ó_€GßÜ��v‘jÐ 8¸¹À1ÐEÔFñ ô 	��v‘jÐ 9Ð:Ô;Ùr   c               ó    € V ^8„  d   QhRRRR/# r
   r   )r   s   "r   r   r   £   s   € ÷ ñ Ð/ð °Cñ r   c                ó,  € ^ RI Hp ^ RIHp V P                  ;'       g    \
        P                  ! 4       pV P                  ;'       g    V R2p VP                  W4V P                  '       * V P                  R7      p\        Y4      '       d   ^ # TR,          p\        RTR	,          : R
TR,           RT! TR,          4       RTR,           RTR,           RTR,           R24       ^ #   \        \        3 d   p\        RT 24      u Rp?# Rp?ii ; i)é    ©Úkanban_transfer)Úformat_bytesz.tar.gz)Úinclude_attachmentsÚinclude_logszkanban boards export: NrA   zExported board r"   u    â†’ rn   z
  Size:        Úsizez
  Tasks:       Útasksz
  Comments:    Útask_commentsz
  Attachments: Úattachment_filesz8
Import it with `hermes kanban boards import <archive>`.)Ú
hermes_clirŽ   Úhermes_cli.sizefmtr�   r   r%   rM   ÚoutputÚexport_boardÚno_attachmentsr‘   ÚOSErrorr7   r   r   rP   )r   rŽ   r�   r   r˜   rs   r:   rA   s   &       r   Ú_cmd_boards_exportrœ   £   s#  € Ý*Ý/à�9‰9×.Ð.œ×,Ò,Ó.€DØ�[‰[×,Ð,˜t˜f GÐ,€Fð4Ø×*Ñ*Ø°$×2EÑ2EÔ.EÐTX×TeÑTeð +ó 
ˆô
 �×ÒÙØ��]€FÜ	ˆO˜C �LÑ+¨5°°YµÐ0@ð AÙ(¨¨V­Ó5Ð6ð 7Ø" 7�OÐ,ð -Ø" ?Õ3Ð4ð 5Ø"Ð#5Õ6Ð7ð 8Dð	Dô Eñ øô ”ZÐ ô 4ÜÐ,¨S¨EÐ2Ó3Õ3ûð4ús   Á-C* Ã*DÃ;DÄDÄDc               ó    € V ^8„  d   QhRRRR/# r
   r   )r   s   "r   r   r   »   s   € ÷ ñ Ð/ð °Cñ r   c                óˆ  € ^ RI Hp  VP                  V P                  V P                  V P
                  R7      p\        Y4      '       d   ^ # \        RTR,          : RTR,           R	24       TR
,          '       d   \        RTR,          : R24       \        RTR,           RTR,          R,           24       TR,           F  p\        RT 24       K  	  TR,          '       d   \        RTR,          : R24       ^ # \        RTR,           R24       ^ #   \        \        3 d   p\        RT 24      u Rp?# Rp?ii ; i)rŒ   r�   )Úactivatezkanban boards import: NzImported board r"   r|   rJ   z).Úrenamedz  Renamed from Úrequested_boardu    â€” that slug was taken.z	  Path:  r‡   z

  Tasks: rA   r“   Úwarningsz	  Note:  Ú	activatedz  Active board is now rc   z1  Switch to it with `hermes kanban boards switch rw   )r–   rŽ   Úimport_boardrn   Úas_slugrb   r›   r7   r   r   rP   )r   rŽ   rs   r:   Úwarnings   &    r   Ú_cmd_boards_importr§   »   s0  € Ý*ð4Ø×*Ñ*¨4¯<©<¸¿¹ÐPT×P[ÑP[Ð*Ó\ˆô �×ÒÙÜ	ˆO˜C �LÑ+¨2¨c°&­k¨]¸"Ð
=Ô>Ø
ˆ9‡~„~Ü� Ð$5Õ 6Ñ9Ð9RÐSÔTÜ	ˆI�c˜&•k�] +¨c°(­m¸GÕ.DÐ-EÐ
FÔGØ�z—?�?ˆÜ�	˜'˜Ð#Ö$ñ #à
ˆ;×ÔÜÐ& s¨7¥|Ñ&6°aÐ8Ô9ñ ô 	ÐAÀ#ÀgÅ,ÀÈrÐRÔSÙøô ”ZÐ ô 4ÜÐ,¨S¨EÐ2Ó3Õ3ûð4ús   ˆ2D ÄEÄ)D<Ä6EÄ<Er   ÚlsrY   ÚnewÚrmÚremoverm   rb   ÚuseÚshowrS   r�   r†   ÚexportÚimport)Ú__doc__Ú
__future__r   ÚargparseÚtypingr   r–   r   r%   r   r(   Úhermes_cli.kanban_outputr   r   r   r   r0   r;   rV   rj   rt   ry   r~   rƒ   r‰   rœ   r§   r   r   r   r   Ú<module>rµ      s·   ðñõ
 #ã Ý å &Ý /ß AÑ Aõõ	õõõ.õ(õ$õ$	õõ	õõ0ð. Ð˜dÐ$4ØÐ  %Ð);Øˆ.˜( N°H¸nØÐ  %Ð);Ø
Ð˜iÐ)9ØÐ ØÐ:ØÐ ØÐ ð
‚r   