+
    lHàjÉE  ã                  ó   € R t ^ RIHt ^ RIHt ^RIHtHtHtH	t	 ^RI
HtHt  ! R R]4      t ! R R]	4      t ! R	 R
]4      t ! R R]4      t]! R]]RR7        ! R R]4      t ! R R]4      t]! R]]RR7        ! R R]4      t ! R R]4      t ! R R]4      t]! R]]RR7        ! R R]4      t ! R  R!]4      t ! R" R#]4      t]! R$]]R%R7        ! R& R']4      t ! R( R)]	4      t ! R* R+]4      t]! R,]]R-R7        ! R. R/]4      t ! R0 R1]4      t]! R2]]R3R7        ! R4 R5]4      t]! R2]]R6R7        ! R7 R8]4      t ! R9 R:]4      t ]! R;]] R<R7        ! R= R>]4      t! ! R? R@]	4      t" ! RA RB]4      t# ! RC RD]4      t$ ! RE RF]4      t% ! RG RH]4      t&]! RI]!]&RJR7        ! RK RL]4      t' ! RM RN]4      t(]! RO]'](RPR7        ! RQ RR]	4      t) ! RS RT]4      t* ! RU RV]4      t+]! RW]*]+RXR7        ! RY RZ]4      t, ! R[ R\]4      t-]! R]],]-R^R7        ! R_ R`]4      t. ! Ra Rb]4      t/]! Rc].]/RdR7        ! Re Rf]4      t0 ! Rg Rh]4      t1 ! Ri Rj]4      t2]! Rk]0]2RlR7        ! Rm Rn]4      t3 ! Ro Rp]4      t4 ! Rq Rr]4      t5]! Rs]3]5RtR7        ! Ru Rv]4      t6 ! Rw Rx]4      t7]! Ry]6]7RzR7        ! R{ R|]4      t8 ! R} R~]4      t9]! R]8]9R€R7        ! R� R‚]	4      t: ! Rƒ R„]4      t; ! R… R†]4      t< ! R‡ Rˆ]4      t= ! R‰ RŠ]4      t>]! R‹];]>RŒR7        ! R� RŽ]	4      t? ! R� R�]4      t@ ! R‘ R’]4      tA]! R“]@]AR”R7       R•# )–aÔ  Contracts: system / process / slash-command / rollback / cron / browser / config RPCs
(handlers in ``tui_gateway/methods_tools.py``, browser helpers in ``methods_browser.py``).

Several results here are pass-throughs of dicts another module owns (``tools/process_registry.py``,
``tools/checkpoint_manager.py``, ``tools/cronjob_tools.py``): those declare every key the producer is
known to emit plus ``extra="allow"`` so a new upstream key never trips the strict gate.
)Úannotations)ÚField)Ú	JsonValueÚParamsÚResultÚWireEnum)Úcanonical_methodÚmethodc                  óD   € ] tR t^tRt]P                  RR/,          tRtR# )Ú_Openz?A pass-through row whose closed set is owned by another module.ÚextraÚallow© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   Úmodel_configÚ__static_attributes__r   ó    ÚI/home/ubuntu/.hermes/hermes-agent/tui_gateway/contracts/tools_commands.pyr   r      s   † ÙIà×&Ñ&¨'°7Ð);Õ;„Lr   r   c                  ó.   € ] tR t^tRtRtRtRtRtRt	Rt
R# )	ÚBatteryCategoryz5``agent/battery.py::battery_category`` colour bucket.ÚgoodÚwarnÚbadÚcriticalÚdimr   N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      s   † Ù?à€DØ€DØ
€CØ€HØ
„Cr   r   c                  ó&   € ] tR t^$t$ RtR]R&   RtR# )ÚSystemBatteryParamsNú
str | NoneÚprofiler   ©r   r   r   r   r"   Ú__annotations__r   r   r   r   r    r    $   ó   ‡ Ø€GˆZ×r   r    c                  ó`   € ] tR t^(t$ R]R&   RtR]R&   RtR]R&   ]P                  t	R]R	&   R
t
R# )ÚSystemBatteryResultÚboolÚ	availableNú
int | NoneÚpercentúbool | NoneÚpluggedr   Úcategoryr   )r   r   r   r   r$   r+   r-   r   r   r.   r   r   r   r   r'   r'   (   s+   ‡ ØƒOØ€GˆZÓØ€Gˆ[ÓØ /× 3Ñ 3€Hˆo×3r   r'   zsystem.batteryzWHost battery for the status bar; always resolves, ``available: false`` when unreadable.)ÚparamsÚresultÚdocc                  ó4   € ] tR t^6t$ RtR]R&   RtR]R&   RtR# )ÚProcessStopParamsNr!   Ú
session_idr"   r   ©r   r   r   r   r4   r$   r"   r   r   r   r   r3   r3   6   ó   ‡ Ø!€J�
Ó!Ø€GˆZ×r   r3   c                  ó0   € ] tR t^;t$ R]R&   ^ tR]R&   RtR# )ÚProcessStopResultÚintÚkilledÚdelegationsr   N)r   r   r   r   r$   r;   r   r   r   r   r8   r8   ;   s   ‡ ØƒKØ€K�×r   r8   zprocess.stopzª``/stop``: on the shared owner, kill the background processes ``session_id`` owns (required); a standalone sidecar kills every process it holds. Answers the count killed.c                  ó&   € ] tR t^Et$ RtR]R&   RtR# )ÚAgentsListParamsNr!   r"   r   r#   r   r   r   r=   r=   E   r%   r   r=   c                  ó@   € ] tR t^It$ R]R&   R]R&   R]R&   R]R&   RtR# )	ÚAgentProcessRowÚstrr4   ÚcommandÚstatusr9   Úuptimer   N©r   r   r   r   r$   r   r   r   r   r?   r?   I   s   ‡ ØƒOØƒLØƒKØ‡Kr   r?   c                  ó4   € ] tR t^Pt$ ]! ]R7      tR]R&   RtR# )ÚAgentsListResult©Údefault_factoryzlist[AgentProcessRow]Ú	processesr   N©	r   r   r   r   r   ÚlistrI   r$   r   r   r   r   rF   rF   P   s   ‡ Ù',¸TÔ'B€IÐ$×Br   rF   zagents.listz9Registry-wide background process summary for ``/agents``.c                  ó0   € ] tR t^Xt$ R]R&   RtR]R&   RtR# )ÚProcessListParamsr@   r4   Nr!   r"   r   ©r   r   r   r   r$   r"   r   r   r   r   rM   rM   X   ó   ‡ ØƒOØ€GˆZ×r   rM   c                  ó"  € ] 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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tR]R&   RtR# )ÚProcessEntryzT``tools/process_registry.py::list_sessions`` row plus the gateway's ``output_tail``.r@   r4   Ú rA   Nr!   Úcwdr*   ÚpidÚowner_task_idÚ
started_atÚuptime_secondsÚrunningrB   Úoutput_previewÚoutput_tailr,   Úsession_scopedúlist[str] | NoneÚwatch_patternsÚ	watch_hitÚnotify_on_completeÚ	exit_codezfloat | NoneÚ	exited_atÚstarted_epochÚcompletion_reasonÚdetachedr   )r   r   r   r   r   r$   rA   rS   rT   rU   rV   rW   rB   rY   rZ   r[   r]   r^   r_   r`   ra   rb   rc   rd   r   r   r   r   rQ   rQ   ]   sÁ   ‡ Ù^àƒOØ€GˆSÓØ€CˆÓØ€CˆÓØ $€M�:Ó$Ø!€J�
Ó!Ø!%€N�JÓ%Ø€FˆCÓØ€N�CÓØ"€K�Ó"Ø"&€N�KÓ&Ø'+€NÐ$Ó+Ø!€Iˆ{Ó!Ø&*Ð˜Ó*Ø €IˆzÓ Ø"€Iˆ|Ó"Ø"&€M�<Ó&Ø$(Ð�zÓ(Ø €Hˆk× r   rQ   c                  ó4   € ] tR t^ut$ ]! ]R7      tR]R&   RtR# )ÚProcessListResultrG   zlist[ProcessEntry]rI   r   NrJ   r   r   r   rf   rf   u   s   ‡ Ù$)¸$Ô$?€IÐ!×?r   rf   zprocess.listzOBackground processes owned by the caller's session (desktop status stack poll).c                  ó:   € ] tR t^}t$ R]R&   R]R&   RtR]R&   RtR# )ÚProcessKillParamsr@   r4   Ú
process_idNr!   r"   r   rN   r   r   r   rh   rh   }   s   ‡ ØƒOØƒOØ€GˆZ×r   rh   c                  ó&   € ] tR t^ƒtRtRtRtRtRtR# )ÚProcessKillStatusr:   Úalready_exitedÚ	not_foundÚerrorr   N)	r   r   r   r   r:   rl   rm   rn   r   r   r   r   rk   rk   ƒ   s   † Ø€FØ%€NØ€IØ„Er   rk   c                  óˆ   € ] 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tR# )ÚProcessKillResultz^``tools/process_registry.py::kill_process`` snapshot; ``error`` rides on the failure statuses.rk   rB   Nr!   r4   rA   r*   r`   rc   Útermination_sourceÚoutputrn   r   )r   r   r   r   r   r$   r4   rA   r`   rc   rq   rr   rn   r   r   r   r   rp   rp   Š   sS   ‡ ÙhàÓØ!€J�
Ó!Ø€GˆZÓØ €IˆzÓ Ø$(Ð�zÓ(Ø%)Ð˜
Ó)Ø€FˆJÓØ€Eˆ:×r   rp   zprocess.killzUKill one background process the caller's session owns and return its output snapshot.c                  ó0   € ] tR t^žt$ R]R&   RtR]R&   RtR# )ÚShellExecParamsr@   rA   Nr!   r"   r   rN   r   r   r   rt   rt   ž   s   ‡ ØƒLØ€GˆZ×r   rt   c                  ó6   € ] tR t^£t$ R]R&   R]R&   R]R&   RtR# )ÚShellExecResultr@   ÚstdoutÚstderrr9   Úcoder   NrD   r   r   r   rv   rv   £   s   ‡ ØƒKØƒKØ
‡Ir   rv   z
shell.execzURun a safe (non-dangerous) shell command captured for ``!cmd`` / inline substitution.c                  ó:   € ] tR t^­t$ R]R&   R]R&   RtR]R&   RtR# )ÚCanonicalShellExecParamsr@   r4   rA   Nr!   r"   r   rN   r   r   r   r{   r{   ­   ó   ‡ ØƒOØƒLØ€GˆZ×r   r{   z�Ink ``!cmd`` / ``{!cmd}`` on the shared owner: one safe command for a local session, in its frozen launch cwd (``gateway/session_shell.py``).c                  ó>   € ] tR t^¸t$ R]R&   RtR]R&   RtR]R&   RtR# )	ÚCliExecParamsú	list[str]ÚargvNr*   Útimeoutr!   r"   r   )r   r   r   r   r$   r�   r"   r   r   r   r   r~   r~   ¸   s   ‡ Ø
ƒOØ€GˆZÓØ€GˆZ×r   r~   c                  óD   € ] tR t^¾t$ R]R&   R]R&   R]R&   RtR]R	&   R
tR# )ÚCliExecResultr(   Úblockedr9   ry   r@   rr   Nr!   Úhintr   )r   r   r   r   r$   r…   r   r   r   r   rƒ   rƒ   ¾   s   ‡ ØƒMØ
ƒIØƒKØ€Dˆ*×r   rƒ   zcli.execz_Run ``hermes <argv>`` non-interactively and capture its output; ``blocked`` explains a refusal.c                  ó4   € ] tR t^Ìt$ RtR]R&   RtR]R&   RtR# )ÚCommandsCatalogParamsNr!   r4   r"   r   r5   r   r   r   r‡   r‡   Ì   r6   r   r‡   c                  ó"   € ] tR t^ÑtRtRtRtRtR# )ÚArgumentModeÚoptionsÚtextÚmixedr   N)r   r   r   r   rŠ   r‹   rŒ   r   r   r   r   r‰   r‰   Ñ   s   † Ø€GØ€DØ„Er   r‰   c                  óB   € ] tR t^×t$ RtR]R&   RtR]R&   RtR]R&   RtR# )	ÚCommandCatalogMetaNzArgumentMode | NoneÚargument_moder!   Údesktopr\   Údesktop_subcommandsr   )	r   r   r   r   r�   r$   r�   r‘   r   r   r   r   rŽ   rŽ   ×   s#   ‡ Ø)-€MÐ&Ó-Ø€GˆZÓØ,0ÐÐ)×0r   rŽ   c                  ó>   € ] tR t^Ýt$ R]R&   ]! ]R7      tR]R&   RtR# )ÚCommandCategoryr@   ÚnamerG   úlist[list[str]]Úpairsr   N)	r   r   r   r   r$   r   rK   r–   r   r   r   r   r“   r“   Ý   s   ‡ Ø
ƒIÙ"°4Ô8€Eˆ?×8r   r“   c                  ó4   € ] tR t^ât$ ^ tR]R&   RtR]R&   RtR# )ÚSkillCatalogEntryr9   ÚusageÚlocalr@   Úoriginr   N)r   r   r   r   r™   r$   r›   r   r   r   r   r˜   r˜   â   s   ‡ Ø€Eˆ3ƒNØ€FˆC×r   r˜   c                  ó  € ] tR t^çt$ ]! ]R7      tR]R&   ]! ]R7      t	R]R&   ]! ]R7      t
R]R&   ]! ]R7      tR]R	&   ]! ]R7      tR
]R&   ]! ]R7      tR]R&   ^ tR]R&   RtR]R&   RtR]R&   ]! ]R7      tR]R&   RtR# )ÚCommandsCatalogResultrG   r•   r–   zdict[str, list[str]]Úsubzdict[str, str]Úcanonzdict[str, CommandCatalogMeta]Úcommandszlist[CommandCategory]Ú
categorieszdict[str, SkillCatalogEntry]Úskillsr9   Úskill_countrR   r@   ÚwarningÚplugin_discovery_errorÚplugin_commandsr   N)r   r   r   r   r   rK   r–   r$   Údictrž   rŸ   r    r¡   r¢   r£   r¤   r¥   r¦   r   r   r   r   r�   r�   ç   s�   ‡ Ù"°4Ô8€Eˆ?Ó8Ù %°dÔ ;€CÐ	Ó;Ù!°$Ô7€Eˆ>Ó7Ù.3ÀDÔ.I€HÐ+ÓIÙ(-¸dÔ(C€JÐ%ÓCÙ+0ÀÔ+F€FÐ(ÓFØ€K�ÓØ€GˆSÓà"$Ð˜CÓ$ñ ',¸DÔ&A€O�^×Ar   r�   zcommands.catalogzQCategorized slash metadata (registry, quick, plugin, skill) for completion menus.c                  ó4   € ] tR t^ût$ RtR]R&   RtR]R&   RtR# )ÚCommandResolveParamsNr!   r”   r"   r   )r   r   r   r   r”   r$   r"   r   r   r   r   r©   r©   û   ó   ‡ Ø€Dˆ*ÓØ€GˆZ×r   r©   c                  ó6   € ] tR tRt$ R]R&   R]R&   R]R&   RtR# )ÚCommandResolveResulté   r@   Ú	canonicalÚdescriptionr.   r   NrD   r   r   r   r¬   r¬      s   ‡ ØƒNØÓØ‡Mr   r¬   zcommand.resolvez/Canonical registry command for a name or alias.c                  ó2   € ] tR tRtRtRtRtRtRtRt	Rt
R	tR
# )ÚDispatchTypei
  zD``apps/shared/src/slash.ts::parseCommandDispatch`` branches on this.ÚexecÚaliasÚpluginÚsendÚskillÚprefillr   N)r   r   r   r   r   r²   r³   r´   rµ   r¶   r·   r   r   r   r   r±   r±   
  s#   † ÙNà€DØ€EØ€FØ€DØ€EØ„Gr   r±   c                  óL   € ] tR tRt$ R]R&   RtR]R&   RtR]R&   RtR]R&   R	tR# )
ÚCommandDispatchParamsi  r@   r”   Nr!   Úargr4   r"   r   )	r   r   r   r   r$   rº   r4   r"   r   r   r   r   r¹   r¹     s%   ‡ Ø
ƒIØ€CˆÓØ!€J�
Ó!Ø€GˆZ×r   r¹   c                  óˆ   € ] tR tR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tR# )ÚCommandDispatchResulti  z±One structured directive: ``exec``/``plugin`` carry ``output``; ``alias`` a ``target``;
``send``/``prefill``/``skill`` a ``message`` (UIs render ``display``, never ``message``).r±   ÚtypeNr!   rr   ÚtargetÚmessageÚnoticeÚdisplayr”   rB   r   )r   r   r   r   r   r$   rr   r¾   r¿   rÀ   rÁ   r”   rB   r   r   r   r   r¼   r¼     sV   ‡ ñað ÓØ€FˆJÓØ€FˆJÓØ€GˆZÓØ€FˆJÓØ€GˆZÓØ€Dˆ*ÓØ€FˆJ×r   r¼   zcommand.dispatchzYRun a quick/plugin/bundle/skill/built-in slash command and answer a structured directive.c                  ó:   € ] tR tRt$ R]R&   R]R&   RtR]R&   RtR# )	ÚSlashExecParamsi.  r@   r4   rA   Nr!   r"   r   rN   r   r   r   rÃ   rÃ   .  r|   r   rÃ   c                  óš   € ] tR tRt$ R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tR]R&   RtR# )ÚSlashExecResulti4  uª   Plain worker/plugin text in ``output`` (+ ``warning``), or â€” when the command was rerouted to
``command.dispatch`` â€” that method's directive fields with ``type`` set.Nr!   rr   r¤   zDispatchType | Noner½   r¾   r¿   rÀ   rÁ   r”   rB   r   )r   r   r   r   r   rr   r$   r¤   r½   r¾   r¿   rÀ   rÁ   r”   rB   r   r   r   r   rÅ   rÅ   4  se   ‡ ñRð €FˆJÓØ€GˆZÓØ $€DÐ
Ó$Ø€FˆJÓØ€GˆZÓØ€FˆJÓØ€GˆZÓØ€Dˆ*ÓØ€FˆJ×r   rÅ   z
slash.execzWExecute a slash command against the session's slash worker (or a live/plugin shortcut).c                  ó4   € ] tR tRt$ RtR]R&   RtR]R&   RtR# )ÚInsightsGetParamsiJ  Nr*   Údaysr!   r"   r   )r   r   r   r   rÈ   r$   r"   r   r   r   r   rÇ   rÇ   J  rª   r   rÇ   c                  ó6   € ] tR tRt$ R]R&   R]R&   R]R&   RtR# )ÚInsightsGetResultiO  r9   rÈ   ÚsessionsÚmessagesr   NrD   r   r   r   rÊ   rÊ   O  s   ‡ Ø
ƒIØƒMØ‡Mr   rÊ   zinsights.getzXSession/message counts over the last ``days`` for the (optionally scoped) profile store.c                  ó&   € ] tR tRt$ RtR]R&   RtR# )ÚConfigShowParamsiY  Nr!   r"   r   r#   r   r   r   rÎ   rÎ   Y  r%   r   rÎ   c                  ó>   € ] tR tRt$ R]R&   ]! ]R7      tR]R&   RtR# )	ÚConfigSectioni]  r@   ÚtitlerG   r•   Úrowsr   N)	r   r   r   r   r$   r   rK   rÒ   r   r   r   r   rÐ   rÐ   ]  s   ‡ ØƒJÙ!°$Ô7€Dˆ/×7r   rÐ   c                  ó^   € ] tR tRt$ ]P
                  RR/,          t]! ]R7      tR]	R&   Rt
R# )	ÚConfigShowResultib  r   r   rG   zlist[ConfigSection]Úsectionsr   N)r   r   r   r   r   r   r   rK   rÕ   r$   r   r   r   r   rÔ   rÔ   b  s'   ‡ Ø×&Ñ&¨'°7Ð);Õ;€Lá$)¸$Ô$?€HÐ!×?r   rÔ   zconfig.showzHMasked, display-ready config summary (model / agent / environment rows).c                  ó0   € ] tR tRt$ R]R&   RtR]R&   RtR# )ÚRollbackListParamsio  r@   r4   Nr!   r"   r   rN   r   r   r   r×   r×   o  rO   r   r×   c                  óB   € ] tR tRt$ RtR]R&   RtR]R&   RtR]R&   RtR# )	ÚRollbackCheckpointit  rR   r@   ÚhashÚ	timestampr¿   r   N)	r   r   r   r   rÚ   r$   rÛ   r¿   r   r   r   r   rÙ   rÙ   t  s   ‡ Ø€Dˆ#ƒNØ€IˆsÓØ€GˆS×r   rÙ   c                  ó>   € ] tR tRt$ R]R&   ]! ]R7      tR]R&   RtR# )	ÚRollbackListResultiz  r(   ÚenabledrG   zlist[RollbackCheckpoint]Úcheckpointsr   N)	r   r   r   r   r$   r   rK   rß   r   r   r   r   rÝ   rÝ   z  s   ‡ ØƒMÙ,1À$Ô,G€KÐ)×Gr   rÝ   zrollback.listzPCheckpoints for the session's cwd; ``enabled: false`` when checkpointing is off.c                  óV   € ] tR tRt$ R]R&   R]R&   RtR]R&   RtR]R&   RtR	]R
&   RtR# )ÚRollbackRestoreParamsiƒ  r@   r4   rÚ   Nr!   Ú	file_pathr"   r,   Úallr   )	r   r   r   r   r$   râ   r"   rã   r   r   r   r   rá   rá   ƒ  s,   ‡ ØƒOØ
ƒIØ €IˆzÓ Ø€GˆZÓð €Cˆ×r   rá   c                  óÀ   € ] tR tR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tR]R&   RtR]R&   RtR]R&   RtR]R&   RtR# )ÚRollbackRestoreResulti�  z“``tools/checkpoint_manager.py::restore`` outcome; ``history_removed`` is added for a full
(non-file) restore that also rewound the live transcript.r(   ÚsuccessNr!   Úrestored_toÚreasonÚ	directoryÚfiler\   Úrestored_filesÚskipped_user_editsÚskipped_oversizeÚfailed_deletesr*   Úhistory_removedrn   úJsonValue | NoneÚdebugr   )r   r   r   r   r   r$   rç   rè   ré   rê   rë   rì   rí   rî   rï   rn   rñ   r   r   r   r   rå   rå   �  s„   ‡ ñAð ƒMØ"€K�Ó"Ø€FˆJÓØ €IˆzÓ Ø€Dˆ*ÓØ'+€NÐ$Ó+Ø+/ÐÐ(Ó/Ø)-ÐÐ&Ó-Ø'+€NÐ$Ó+Ø"&€O�ZÓ&Ø€Eˆ:ÓØ"€EÐ×"r   rå   zrollback.restorezPRestore the working tree (or one file) to a checkpoint by hash or 1-based index.c                  ó:   € ] tR tRt$ R]R&   R]R&   RtR]R&   RtR# )	ÚRollbackDiffParamsi£  r@   r4   rÚ   Nr!   r"   r   rN   r   r   r   ró   ró   £  s   ‡ ØƒOØ
ƒIØ€GˆZ×r   ró   c                  óB   € ] tR tRt$ RtR]R&   RtR]R&   RtR]R&   R	tR# )
ÚRollbackDiffResulti©  rR   r@   ÚstatÚdiffNr!   Úrenderedr   )	r   r   r   r   rö   r$   r÷   rø   r   r   r   r   rõ   rõ   ©  s   ‡ Ø€Dˆ#ƒNØ€Dˆ#ƒNØ€Hˆj×r   rõ   zrollback.diffzXDiff between a checkpoint and the working tree, with an ANSI rendering sized to the TUI.c                  ó*   € ] tR tRtRtRtRtRtRtRt	R# )	Ú
CronActioni¶  rK   ÚaddÚremoveÚpauseÚresumer   N)
r   r   r   r   rK   rû   rü   rý   rþ   r   r   r   r   rú   rú   ¶  s   † Ø€DØ
€CØ€FØ€EØ„Fr   rú   c                  óª   € ] tR tRt$ ]P
                  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# )ÚCronManageParamsi¾  rú   ÚactionNr!   r”   zbool | str | NoneÚinclude_disabledÚscheduleÚpromptúint | str | NoneÚrepeatÚ
continuityÚdeliverr"   r   )r   r   r   r   rú   rK   r  r$   r”   r  r  r  r  r  r  r"   r   r   r   r   r   r   ¾  sd   ‡ Ø#Ÿ™€FˆJÓ(Ø€Dˆ*ÓØ*.ÐÐ'Ó.Ø€HˆjÓØ€FˆJÓØ#€FÐÓ#Ø$(€JÐ!Ó(Ø€GˆZÓØ€GˆZ×r   r   c                  óô  € ] tR tRt$ RtR]R&   RtR]R&   RtR]R	&   ]! ]	R
7      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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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+]R0&   R1t(R# )2Ú
CronJobRowiÊ  z+``tools/cronjob_job_args.py::_format_job``.r@   Újob_idrR   r”   Nr!   r¶   rG   r   r¢   Úprompt_previewÚmodelÚproviderÚbase_urlÚ?r  r  r  r  Únext_run_atÚlast_run_atÚlast_statusÚlast_delivery_errorr\   Úlast_delivery_unverifiedÚlast_fire_errorÚ
last_errorTr(   rÞ   ÚstateÚ	paused_atÚpaused_reasonÚworkdirÚscriptÚreasoning_effortÚmonitor_scriptÚmonitor_urlrð   Úmonitor_stater,   Úno_agentÚenabled_toolsetsr  Úcontext_fromÚattach_to_sessionr   ))r   r   r   r   r   r$   r”   r¶   r   rK   r¢   r  r  r  r  r  r  r  r  r  r  r  r  r  r  rÞ   r  r  r  r  r  r  r  r  r   r!  r"  r  r#  r$  r   r   r   r   r
  r
  Ê  sX  ‡ Ù5àƒKØ€Dˆ#ƒNØ€Eˆ:ÓÙ¨dÔ3€FˆIÓ3Ø€N�CÓØ€Eˆ:ÓØ€HˆjÓØ€HˆjÓØ€HˆcÓØ#€FÐÓ#Ø€GˆZÓØ"€K�Ó"Ø"€K�Ó"Ø"€K�Ó"Ø&*Ð˜Ó*Ø15ÐÐ.Ó5Ø"&€O�ZÓ&Ø!€J�
Ó!Ø€GˆTÓØ€Eˆ:ÓØ €IˆzÓ Ø $€M�:Ó$Ø€GˆZÓØ€FˆJÓØ#'Ð�jÓ'Ø!%€N�JÓ%Ø"€K�Ó"Ø&*€MÐ#Ó*Ø €HˆkÓ Ø)-ÐÐ&Ó-Ø"€J�Ó"Ø%)€LÐ"Ó)Ø%)Ð�{×)r   r
  c                  ó>   € ] tR tRt$ R]R&   RtR]R&   RtR]R&   R	tR# )
ÚCronRemovedJobið  r@   ÚidrR   r”   Nr!   r  r   )r   r   r   r   r$   r”   r  r   r   r   r   r&  r&  ð  s   ‡ ØƒGØ€Dˆ#ƒNØ€Hˆj×r   r&  c                  ó&  € ] tR tRt$ R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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tR]R&   R tR# )!ÚCronManageResultiö  u  Pass-through of ``tools/cronjob_tools.py::cronjob`` JSON: ``list`` â†’ ``jobs``/``count``
(+ ``scoped`` when profile-scoped); ``add`` â†’ the created job's summary + ``job``; ``remove`` â†’
``removed_job``; ``pause``/``resume`` â†’ ``job``. A tool-level failure lands in ``error``.Nr,   ræ   r!   rn   r*   Úcountzlist[CronJobRow] | NoneÚjobsÚscopedÚgateway_runningr¤   r  r”   r¶   r\   r¢   r  r  r  r  r  zCronJobRow | NoneÚjobr¿   rð   ÚguidancezCronRemovedJob | NoneÚremoved_jobr   )r   r   r   r   r   ræ   r$   rn   r*  r+  r,  r-  r¤   r  r”   r¶   r¢   r  r  r  r  r.  r¿   r/  r0  r   r   r   r   r)  r)  ö  sÎ   ‡ ñcð  €Gˆ[ÓØ€Eˆ:ÓØ€Eˆ:ÓØ$(€DÐ
!Ó(Ø€FˆJÓØ#'€O�[Ó'Ø€GˆZÓØ€FˆJÓØ€Dˆ*ÓØ€Eˆ:ÓØ#€FÐÓ#Ø€HˆjÓØ#€FÐÓ#Ø€GˆZÓØ"€K�Ó"Ø!€CÐ	Ó!Ø€GˆZÓØ!%€HÐÓ%Ø)-€KÐ&×-r   r)  zcron.managezUList/add/remove/pause/resume cron jobs in the (optionally profile-scoped) cron store.c                  ó&   € ] tR tRtRtRtRtRtRtR# )ÚBrowserActioni  rB   ÚconnectÚ
disconnectÚuser   N)	r   r   r   r   rB   r3  r4  r5  r   r   r   r   r2  r2    s   † Ø€FØ€GØ€JØ
„Cr   r2  c                  ór   € ] tR tRt$ ]P
                  tR]R&   RtR]R&   Rt	R]R&   Rt
R]R	&   RtR]R
&   RtR# )ÚBrowserManageParamsi  r2  r  Nr!   Úurlr,   rÞ   r4   r"   r   )r   r   r   r   r2  rB   r  r$   r8  rÞ   r4   r"   r   r   r   r   r7  r7    s:   ‡ Ø)×0Ñ0€FˆMÓ0Ø€CˆÓà€Gˆ[ÓØ!€J�
Ó!Ø€GˆZ×r   r7  c                  óL   € ] tR tRt$ R]R&   RtR]R&   RtR]R&   RtR	]R
&   RtR# )ÚBrowserManageResulti'  r(   Ú	connectedNr!   r8  r\   rÌ   r,   Úbrowser_user   )	r   r   r   r   r$   r8  rÌ   r<  r   r   r   r   r:  r:  '  s&   ‡ ØƒOØ€CˆÓØ!%€HÐÓ%à#€K�×#r   r:  zbrowser.managez™Inspect, attach to, or drop the CDP browser the tools use, or switch Browser Use mode (``use``, applies to new sessions); ``messages`` narrate a connect.N)Br   Ú
__future__r   Úpydanticr   Úbaser   r   r   r   Úregistryr   r	   r   r   r    r'   r3   r8   r=   r?   rF   rM   rQ   rf   rh   rk   rp   rt   rv   r{   r~   rƒ   r‡   r‰   rŽ   r“   r˜   r�   r©   r¬   r±   r¹   r¼   rÃ   rÅ   rÇ   rÊ   rÎ   rÐ   rÔ   r×   rÙ   rÝ   rá   rå   ró   rõ   rú   r   r
  r&  r)  r2  r7  r:  r   r   r   Ú<module>rA     sK  ðñõ #å ç 5Ó 5ß .ô<ˆFô <ô�hô ô˜&ô ô4˜&ô 4ñ ÐÐ 3Ð<OØdõfô˜ô ô
˜ô ñ
 €~Ð/Ð8IðXõYô
�vô ô�fô ôC�vô Cñ €}Ð-Ð6FØFõHô˜ô ô
!�5ô !ô0@˜ô @ñ €~Ð/Ð8IØ\õ^ô˜ô ô˜ô ô
˜ô 
ñ €~Ð/Ð8IØbõdô�fô ô
�fô ñ €|˜O°OØbõdô˜vô ñ �Ð&>ÀðMõNô
�Fô ô�Fô ñ €z˜-°Ølõnô˜Fô ô
�8ô ô1˜ô 1ô9�fô 9ô
˜ô ô
B˜Fô Bñ  ÐÐ"7Ð@UØ^õ`ô˜6ô ô
˜6ô ñ ÐÐ!5Ð>RØ<õ>ô�8ô ô˜Fô ô˜Fô ñ ÐÐ"7Ð@UØfõhô�fô ô�fô ñ €|˜O°OØdõfô˜ô ô
˜ô ñ €~Ð/Ð8IØeõgô�vô ô8�Fô 8ô
@�vô @ñ €}Ð-Ð6FØUõWô˜ô ô
˜ô ôH˜ô Hñ
 €Ð1Ð:LØ]õ_ô˜Fô ô#˜Eô #ñ$ ÐÐ"7Ð@UØ]õ_ô˜ô ô ˜ô  ñ €Ð1Ð:LØeõgô�ô ô	�vô 	ô#*�ô #*ôL �Vô  ô.�uô .ñ4 €}Ð-Ð6FØbõdô�Hô ô˜&ô ô$˜&ô $ñ ÐÐ 3Ð<OðQ÷Rr   