+
    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HtHtHtHtHt ^RIHt ^RIHt  ! R R]4      t ! R	 R
]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! 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#R7        ! R$ R%]4      t" ! R& R']4      t#]! R(]"]#R)R7        ! R* R+]4      t$ ! R, R-]4      t%]! R.]$]%R/R7        ! R0 R1]4      t& ! R2 R3]4      t' ! R4 R5]4      t(]! R6]&](R7R7        ! R8 R9]4      t) ! R: R;]4      t*]! R<])]*R=R7        ! R> R?]4      t+ ! R@ RA]4      t, ! RB RC]4      t-]! RD]+]-RER7        ! RF RG]4      t. ! RH RI]4      t/]! RJ].]/RKR7        ! RL RM]4      t0 ! RN RO]4      t1]! RP]0]1RQR7        ! RR RS]4      t2 ! RT RU]4      t3]! RV]2]3RWR7        ! RX RY]4      t4 ! RZ R[]4      t5]! R\]4]5R]R7        ! R^ R_]4      t6 ! R` Ra]4      t7]! Rb]6]7RcR7        ! Rd Re]4      t8 ! Rf Rg]4      t9]! Rh]8]9RiR7        ! Rj Rk]4      t: ! Rl Rm]4      t;]! Rn]:];RoR7        ! Rp Rq]4      t< ! Rr Rs]4      t=]! Rt]<]=RuR7        ! Rv Rw]4      t> ! Rx Ry]4      t?]! Rz]>]?R{R7        ! R| R}]	4      t@ ! R~ R]4      tA ! R€ R�]4      tB]! R‚]A]BRƒR7        ! R„ R…]4      tC ! R† R‡]4      tD]! Rˆ]C]DR‰R7        ! RŠ R‹]4      tE ! RŒ R�]4      tF]! RŽ]E]FR�R7        ! R� R‘]4      tG ! R’ R“]4      tH]! R”]G]HR•R7        ! R– R—]4      tI ! R˜ R™]4      tJ]! Rš]I]JR›R7        ! Rœ R�]4      tK ! Rž RŸ]4      tL ! R  R¡]4      tM ! R¢ R£]4      tN]! R¤]K]NR¥R7        ! R¦ R§]4      tO ! R¨ R©]4      tP ! Rª R«]4      tQ]! R¬]P]QR­R7        ! R® R¯]4      tR ! R° R±]	4      tS ! R² R³]4      tT]! R´]R]TRµR7        ! R¶ R·]	4      tU ! R¸ R¹]4      tV ! Rº R»]4      tW]! R¼]V]WR½R7       ]! R¾]V]WR¿R7        ! RÀ RÁ]4      tX ! RÂ RÃ]4      tY]! RÄ]X]YRÅR7        ! RÆ RÇ]4      tZ ! RÈ RÉ]4      t[ ! RÊ RË]4      t\]! RÌ]Z]\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ÙR7        ! RÚ RÛ]4      ta ! RÜ RÝ]4      tb]! RÞ]a]bRßR7        ! Rà Rá]4      tc ! Râ Rã]4      td]! Rä]c]dRåR7        ! Ræ Rç]4      te ! Rè Ré]4      tf]! Rê]e]fRëR7       Rì# )ía'  Session lifecycle contracts (``tui_gateway/methods_session.py``): create / resume / activate /
close, the live-session snapshot those share, history + compression + undo, mid-turn corrections,
listing/browsing stored rows, spawn-tree snapshots, event replay and the stateless one-shot LLM call.
)Úannotations)ÚField)Ú	JsonValueÚParamsÚResultÚWireEnum)Ú	OpenModelÚPendingApprovalÚProfileParamsÚSessionLiveInfoÚSessionParamsÚTranscriptMessageÚUsage)ÚConnectionRequestPayload)Úmethodc                  ó:   € ] tR t^t$ RtR]R&   R]R&   R]R&   RtR# )	ÚOpenRequestEntryuŽ   One unanswered serverâ†’client request (``server_requests.Request.snapshot``); the reconnecting
client re-delivers it to its request handlers.ÚstrÚidr   zdict[str, JsonValue]Úparams© N©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__annotations__Ú__static_attributes__r   ó    ÚC/home/ubuntu/.hermes/hermes-agent/tui_gateway/contracts/sessions.pyr   r      s   ‡ ñ6ð 	ƒGØƒKØ × r   r   c                  ó¶   € ] tR t^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	# )ÚInflightTurnz�``session_auto_continue._inflight_snapshot``: the live (or retained failed) turn a reconnecting
client rebuilds its bubbles from.Ú r   Ú	assistantFÚboolÚ	streamingÚuserNú
str | NoneÚdisplay_kindúdict[str, JsonValue] | NoneÚdisplay_metadataúlist[str] | NoneÚcorrectionszlist[int] | NoneÚcorrection_offsetsÚerrorÚstatusúbool | NoneÚrecoverableÚerror_surfacer   )r   r   r   r   r   r$   r   r&   r'   r)   r+   r-   r.   r/   r0   r2   r3   r   r   r   r    r"   r"      s|   ‡ ñ)ð €IˆsÓØ€IˆtÓØ€Dˆ#ƒNØ#€L�*Ó#Ø48ÐÐ1Ó8Ø$(€KÐ!Ó(Ø+/ÐÐ(Ó/Ø€Eˆ:ÓØ€FˆJÓØ#€K�Ó#Ø15€MÐ.×5r   r"   c                  ó"   € ] tR t^.t$ R]R&   RtR# )ÚQueuedPromptr   r'   r   N©r   r   r   r   r   r   r   r   r    r5   r5   .   ó   ‡ Ø
‡Ir   r5   c                  ó0   € ] tR t^2t$ RtR]R&   R]R&   RtR# )Ú	TodoStatezI``tool_progress._normalize_todo_state``: the authoritative todo snapshot.úlist[dict[str, JsonValue]]ÚtodosÚintÚrevisionr   Nr   r   r   r    r9   r9   2   s   ‡ ÙSà%Ó%Ø‡Mr   r9   c                  ó0   € ] tR t^9t$ RtR]R&   R]R&   RtR# )ÚAutoContinuezKA crash-interrupted turn was scheduled to continue right after this resume.r<   ÚattemptÚfloatÚinterrupted_atr   Nr   r   r   r    r?   r?   9   s   ‡ ÙUàƒLØ×r   r?   c                  ó.   € ] tR t^@tRtRtRtRtRtRt	Rt
R# )	ÚLiveSessionStatusÚidleÚstartingÚwaitingÚworkingr&   Úresumingr   N)r   r   r   r   rE   rF   rG   rH   r&   rI   r   r   r   r    rD   rD   @   s    † Ø€DØ€HØ€GØ€GØ€IØ„Hr   rD   c                  ó$  € ] tR t^It$ RtR]R&   R]R&   R]R&   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
# )&ÚLiveSessionSnapshotz Union of ``server._live_session_payload``, ``methods_session._resume_response`` and the
live-unpersisted resume path; keys only some paths produce are optional.r   Ú
session_idr<   Úmessage_countúlist[TranscriptMessage]Úmessagesr   ÚinfoNr(   Ústored_session_idÚresumedÚsession_keyr1   Úmessages_omittedÚ	hydratingÚrunningúfloat | NoneÚturn_started_atÚ
started_atr0   zInflightTurn | NoneÚinflightzQueuedPrompt | NoneÚqueuedzPendingApproval | NoneÚpending_approvalzlist[OpenRequestEntry] | NoneÚopen_requestszConnectionRequestPayload | NoneÚpending_connectionzTodoState | NoneÚ
todo_statezAutoContinue | NoneÚauto_continuer   )r   r   r   r   r   r   rQ   rR   rS   rT   rU   rV   rX   rY   r0   rZ   r[   r\   r]   r^   r_   r`   r   r   r   r    rK   rK   I   sÎ   ‡ ñPð ƒOØÓØ%Ó%Ø
ÓØ$(Ð�zÓ(Ø€GˆZÓØ"€K�Ó"Ø$(Ð�kÓ(Ø!€Iˆ{Ó!Ø€Gˆ[ÓØ$(€O�\Ó(Ø#€J�Ó#Ø€FˆJÓØ$(€HÐ!Ó(Ø"&€FÐÓ&Ø/3ÐÐ,Ó3Ø37€MÐ0Ó7ð ;?ÐÐ7Ó>Ø#'€JÐ Ó'Ø)-€MÐ&×-r   rK   c                  óz   € ] tR t^ht$ Rt]P                  RR/,          tR]R&   RtR]R&   Rt	R]R	&   Rt
R]R
&   RtR# )ÚSeedMessageu<  One create-time transcript row (``session_history._coerce_seed_history``); ``text`` is the
legacy alias of ``content``; only ``display_kind: "hidden"`` is accepted from the wire. Clients
forward stored rows verbatim (``_row_id``, ``timestamp``, â€¦) and the coercer drops what it does
not use, so the row stays open.ÚextraÚallowr   ÚroleNr(   ÚcontentÚtextr)   r   )r   r   r   r   r   r   Úmodel_configr   rf   rg   r)   r   r   r   r    rb   rb   h   sA   ‡ ñ'ð
 ×&Ñ&¨'°7Ð);Õ;€Là
ƒIØ€GˆZÓØ€Dˆ*ÓØ#€L�*×#r   rb   c                  ó  € ] tR t^vt$ 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# )ÚSessionCreateParamsNú
int | NoneÚcolsr(   ÚsourceÚcwdr1   Úcwd_explicitzlist[SeedMessage] | NonerO   Úparent_session_idÚtitleÚmodelÚproviderÚreasoning_effortÚfastÚservice_tierFr%   Úclose_on_disconnectÚhiddenÚroom_plumbingÚfollow_profile_configÚidempotency_keyr   )r   r   r   r   rl   r   rm   rn   ro   rO   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r   r   r   r    rj   rj   v   sµ   ‡ Ø€Dˆ*ÓØ€FˆJÓØ€CˆÓð !%€L�+Ó$Ø)-€HÐ&Ó-Ø$(Ð�zÓ(Ø€Eˆ:ÓØ€Eˆ:ÓØ€HˆjÓØ#'Ð�jÓ'Ø€Dˆ+ÓØ#€L�*Ó#Ø %Ð˜Ó%Ø€FˆDÓØ€M�4ÓØ"'Ð˜4Ó'ð #'€O�Z×&r   rj   c                  óJ   € ] tR t^Žt$ R]R&   R]R&   R]R&   R]R&   R]R	&   R
tR# )ÚSessionCreateResultr   rL   rQ   r<   rM   rN   rO   r   rP   r   Nr6   r   r   r    r}   r}   Ž   s   ‡ ØƒOØÓØÓØ%Ó%Ø
×r   r}   zsession.createzgMint a live session (agent builds after the reply); a DB row appears on the first prompt unless seeded.)r   ÚresultÚdocc                  ól   € ] tR t^št$ ]! ^R7      tR]R&   RtR]R&   RtR]R&   Rt	R]R	&   Rt
R]R
&   RtR# )ÚSessionBranchStoredParams)Ú
min_lengthr   rp   Nrk   rl   r(   rm   rn   r{   r   )r   r   r   r   r   rp   r   rl   rm   rn   r{   r   r   r   r    r�   r�   š   s<   ‡ Ù"¨aÔ0Ð�sÓ0Ø€Dˆ*ÓØ€FˆJÓØ€CˆÓð #'€O�Z×&r   r�   c                  óJ   € ] tR t^¥t$ R]R&   R]R&   R]R&   R]R&   R]R	&   R
tR# )ÚSessionBranchStoredResultr   rL   rQ   r<   rM   r%   rT   r   rP   r   Nr6   r   r   r    r„   r„   ¥   s   ‡ ØƒOØÓØÓØÓØ
×r   r„   zsession.branch_storedzÉWhole-session branch of a stored parent: the owning backend reads and copies the transcript, which never crosses the wire (a separate method so an older gateway fails loudly, not with an empty branch).c                  óŒ   € ] tR t^¶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# )ÚSessionResumeParamszb``session_id`` is the STORED id (or an exact title); the reply's ``session_id`` is the runtime id.Nrk   rl   r(   rm   Fr%   ÚlazyÚdefer_historyÚomit_messagesÚeager_buildrw   TÚinline_imagesr   )r   r   r   r   r   rl   r   rm   r‡   rˆ   r‰   rŠ   rw   r‹   r   r   r   r    r†   r†   ¶   sX   ‡ Ùlà€Dˆ*ÓØ€FˆJÓØ€Dˆ$ÓØ€M�4ÓØ€M�4ÓØ€K�ÓØ %Ð˜Ó%ð €M�4×r   r†   c                  ó   € ] tR t^ÅtRtR# )ÚSessionResumeResultr   N©r   r   r   r   r   r   r   r    r�   r�   Å   ó   † Ûr   r�   zsession.resumez_Attach to a stored session: reuse it if live here, else lazy / deferred / cold / eager rebuild.c                  ó4   € ] tR t^Ít$ RtR]R&   RtR]R&   RtR# )ÚSessionActivateParamsNrk   rl   Fr%   r‰   r   )r   r   r   r   rl   r   r‰   r   r   r   r    r‘   r‘   Í   s   ‡ Ø€Dˆ*ÓØ€M�4×r   r‘   c                  ó   € ] tR t^ÒtRtR# )ÚSessionActivateResultr   NrŽ   r   r   r    r“   r“   Ò   r�   r   r“   zsession.activatezQAttach the frontend to a live session without closing the previously focused one.c                  óB   € ] tR t^Ýt$ RtR]R&   RtR]R&   RtR]R&   R	tR# )
ÚSessionListParamsNr(   rq   rk   ÚlimitFr%   Úinclude_hiddenr   )	r   r   r   r   rq   r   r–   r—   r   r   r   r    r•   r•   Ý   s    ‡ Ø€Eˆ:ÓØ€Eˆ:ÓØ €N�D× r   r•   c                  ó¦   € ] tR t^ãt$ RtR]R&   RtR]R&   RtR]R&   RtR]R	&   ^ t	R
]R&   ^ t
R]R&   RtR]R&   RtR]R&   ]! RRR7      tR]R&   RtR# )ÚSessionListRowz€``methods_session._session_row_summary``; ``resolved_id`` only on a title lookup that followed a
compression lineage to its tip.r   r   Nr(   Úresolved_idr#   rq   ÚpreviewrA   rY   r<   rM   rk   Úlive_message_countrm   Ú_lineage_root_id)ÚdefaultÚaliasÚlineage_root_idr   )r   r   r   r   r   r   rš   rq   r›   rY   rM   rœ   rm   r   r    r   r   r   r    r™   r™   ã   sh   ‡ ñ'ð 	ƒGØ"€K�Ó"Ø€Eˆ3ƒOØ€GˆSÓØ€J�ÓØ€M�3ÓØ%)Ð˜
Ó)Ø€FˆCÓñ #(°Ð<NÔ"O€O�Z×Or   r™   c                  ó"   € ] tR t^ôt$ R]R&   RtR# )ÚSessionListResultzlist[SessionListRow]Úsessionsr   Nr6   r   r   r    r¢   r¢   ô   s   ‡ Ø"×"r   r¢   zsession.listzTHuman-facing stored sessions, most recent first (sub-agent / kanban sources denied).c                  ó   € ] tR t^ütRtR# )ÚSessionMostRecentParamsr   NrŽ   r   r   r    r¥   r¥   ü   r�   r   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# )
ÚSessionMostRecentResulté   r(   rL   Nrq   rW   rY   rm   r   )	r   r   r   r   r   rq   rY   rm   r   r   r   r    r§   r§      s&   ‡ ØÓØ€Eˆ:ÓØ#€J�Ó#Ø€FˆJ×r   r§   zsession.most_recentzEMost recent human-facing session; errors fold into a null session_id.c                  ó&   € ] tR tRt$ RtR]R&   RtR# )ÚSessionActiveListParamsi  Nr(   Úcurrent_session_idr   )r   r   r   r   r«   r   r   r   r   r    rª   rª     s   ‡ Ø%)Ð˜
×)r   rª   c                  óŽ   € ] tR tRt$ RtR]R&   R]R&   R]R&   R	]R
&   R]R&   R]R&   R]R&   RtR]R&   R]R&   R]R&   R]R&   RtR# )ÚSessionActiveItemi  z``server._session_live_item``.r%   Úcurrentr   r   rA   Úlast_activer<   rM   rr   r›   rS   Nr(   rm   rY   rD   r0   rq   r   )r   r   r   r   r   r   rm   r   r   r   r    r­   r­     sF   ‡ Ù(àƒMØƒGØÓØÓØƒJØƒLØÓØ€FˆJÓØÓØÓØ‡Jr   r­   c                  ó"   € ] tR tRt$ R]R&   RtR# )ÚSessionActiveListResulti  zlist[SessionActiveItem]r£   r   Nr6   r   r   r    r±   r±     s   ‡ Ø%×%r   r±   zsession.active_listzBLive sessions in this process, insertion order (not a DB browser).c                  ó   € ] tR tRtRtRtR# )ÚSessionDeleteParamsi*  z ``session_id`` is the STORED id.r   N©r   r   r   r   r   r   r   r   r    r³   r³   *  s   † Ý*r   r³   c                  ó"   € ] tR tRt$ R]R&   RtR# )ÚSessionDeleteResulti.  r   Údeletedr   Nr6   r   r   r    r¶   r¶   .  ó   ‡ Ø‡Lr   r¶   zsession.deletezEDelete a stored session + transcripts; refused while it is live here.c                  ó&   € ] tR tRt$ RtR]R&   RtR# )ÚSessionTitleParamsi6  Nr(   rq   r   )r   r   r   r   rq   r   r   r   r   r    rº   rº   6  s   ‡ Ø€Eˆ:×r   rº   c                  ó>   € ] tR tRt$ R]R&   RtR]R&   RtR]R&   R	tR# )
ÚSessionTitleResulti:  r   rq   Nr(   rS   r1   Úpendingr   )r   r   r   r   r   rS   r½   r   r   r   r    r¼   r¼   :  s   ‡ ØƒJØ"€K�Ó"Ø€Gˆ[×r   r¼   zsession.titlezPRead or set a live session's title; a title set before the row exists is queued.c                  ó>   € ] tR tRt$ RtR]R&   R]R&   RtR]R	&   R
tR# )ÚSessionSetHiddenParamsiD  zJ``session_id`` is a live runtime id first, else a stored id / key / title.r   rL   r%   rx   Nr(   Úprofiler   )r   r   r   r   r   r   rÀ   r   r   r   r    r¿   r¿   D  s   ‡ ÙTàƒOØƒLØ€GˆZ×r   r¿   c                  ó,   € ] tR tRt$ R]R&   R]R&   RtR# )ÚSessionSetHiddenResultiL  r%   rx   r   rS   r   Nr6   r   r   r    rÂ   rÂ   L  s   ‡ ØƒLØ×r   rÂ   zsession.set_hiddenz`Set/clear hidden (out of the default list, still resumable by its owner) on a session + lineage.c                  óT   € ] 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# )ÚSessionArchiveParamsiU  zi``session_id`` (or its ``session_key`` alias) is a live runtime id first, else a stored id / key / title.Nr(   rL   rS   Tr%   ÚarchivedrÀ   r   )r   r   r   r   r   rL   r   rS   rÅ   rÀ   r   r   r   r    rÄ   rÄ   U  s-   ‡ Ùsà!€J�
Ó!Ø"€K�Ó"Ø€HˆdÓØ€GˆZ×r   rÄ   c                  ó,   € ] tR tRt$ R]R&   R]R&   RtR# )ÚSessionArchiveResulti^  r%   rÅ   r   rS   r   Nr6   r   r   r    rÇ   rÇ   ^  s   ‡ ØƒNØ×r   rÇ   zsession.archivez[Set/clear archived (soft-hide, messages kept) on a session + lineage; Desktop PATCH parity.c                  ó,   € ] tR tRt$ R]R&   R]R&   RtR# )ÚSessionWorkspaceMoveParamsig  r   rS   rn   r   Nr6   r   r   r    rÉ   rÉ   g  s   ‡ ØÓØ	‡Hr   rÉ   c                  ó>   € ] tR tRt$ R]R&   RtR]R&   RtR]R&   RtR# )	ÚSessionWorkspaceMoveResultil  r   rn   Nr(   ÚbranchÚgit_repo_rootr   )r   r   r   r   r   rÌ   rÍ   r   r   r   r    rË   rË   l  s   ‡ Ø	ƒHØ€FˆJÓØ $€M�:×$r   rË   zsession.workspace.movezXRe-home a stored session's workspace; git identity is replaced and a live agent follows.c                  ó"   € ] tR tRt$ R]R&   RtR# )ÚSessionCwdSetParamsiv  r   rn   r   Nr6   r   r   r    rÏ   rÏ   v  s   ‡ Ø	‡Hr   rÏ   c                  ó   € ] tR tRtRtRtR# )ÚSessionCwdSetResultiz  zIThe refreshed ``session.info`` view (full agent view, or the lazy shape).r   Nr´   r   r   r    rÑ   rÑ   z  s   † ÝSr   rÑ   zsession.cwd.setz0Change a live, idle session's working directory.c                  ó   € ] tR tRtRtR# )ÚSessionCloseParamsi…  r   NrŽ   r   r   r    rÓ   rÓ   …  r�   r   rÓ   c                  ó>   € ] tR tRt$ R]R&   ]! ]R7      tR]R&   RtR# )	ÚSessionCloseResulti‰  r%   Úclosed©Údefault_factoryz	list[str]rO   r   N)	r   r   r   r   r   r   ÚlistrO   r   r   r   r    rÕ   rÕ   ‰  s   ‡ ØƒLá°Ô5€Hˆi×5r   rÕ   zsession.closez:Tear down a live session (its stored row stays resumable).c                  óB   € ] tR tRt$ RtR]R&   RtR]R&   RtR]R&   RtR# )	ÚSessionBranchParamsi“  Nr(   Únamerk   Úcountr{   r   )	r   r   r   r   rÜ   r   rÝ   r{   r   r   r   r    rÛ   rÛ   “  s"   ‡ Ø€Dˆ*ÓØ€Eˆ:Óð #'€O�Z×&r   rÛ   c                  ó^   € ] tR tRt$ R]R&   R]R&   R]R&   R]R&   R]R&   R	]R
&   R]R&   RtR# )ÚSessionBranchResulti›  r   rL   rQ   rq   Úparentr<   rM   rN   rO   r   rP   r   Nr6   r   r   r    rß   rß   ›  s)   ‡ ØƒOØÓØƒJØƒKØÓØ%Ó%Ø
×r   rß   zsession.branchzTFork a live session into a new stored child that shares the parent's history so far.c                  ó4   € ] tR tRt$ RtR]R&   RtR]R&   RtR# )ÚSessionBranchWholeParamsi©  Nr(   rÜ   r{   r   )r   r   r   r   rÜ   r   r{   r   r   r   r    râ   râ   ©  s   ‡ Ø€Dˆ*Óà"&€O�Z×&r   râ   c                  ó^   € ] tR tRt$ R]R&   R]R&   R]R&   R]R&   R]R&   R	]R
&   R]R&   RtR# )ÚSessionBranchWholeResulti¯  r   rL   rQ   rq   rà   r<   rM   r%   rT   r   rP   r   Nr6   r   r   r    rä   rä   ¯  s)   ‡ ØƒOØÓØƒJØƒKØÓØÓØ
×r   rä   zsession.branch_wholezOsession.branch of the whole history without echoing the copied transcript back.c                  ó   € ] tR tRtRtRtRtR# )Ú
UndoIntenti½  ÚretryÚundor   N)r   r   r   r   ÚRETRYÚUNDOr   r   r   r    ræ   ræ   ½  s   † Ø€EØ„Dr   ræ   c                  ó&   € ] tR tRt$ RtR]R&   RtR# )ÚSessionUndoParamsiÂ  NzUndoIntent | NoneÚintentr   )r   r   r   r   rí   r   r   r   r   r    rì   rì   Â  s   ‡ à $€FÐ×$r   rì   c                  ó"   € ] tR tRt$ R]R&   RtR# )ÚSessionUndoResultiÇ  r<   Úremovedr   Nr6   r   r   r    rï   rï   Ç  r¸   r   rï   zsession.undozGDrop the last user turn (and everything after it) from an idle session.c                  ó   € ] tR tRtRtR# )ÚSessionSaveParamsiÏ  r   NrŽ   r   r   r    rò   rò   Ï  r�   r   rò   c                  óT   € ] tR tRt$ RtRtR]R&   ]P                  RR/,          tRt	R# )	ÚSessionSaveResultiÓ  zGUnder turn isolation the compute host's result passes through verbatim.Nr(   Úfilerc   rd   r   )
r   r   r   r   r   rõ   r   r   rh   r   r   r   r    rô   rô   Ó  s$   ‡ ÙQà€Dˆ*ÓØ×&Ñ&¨'°7Ð);Õ;„Lr   rô   zsession.savezBExport the transcript to ~/.hermes/sessions/saved (classic /save).c                  ó   € ] tR tRtRtR# )ÚSessionStatusParamsiÞ  r   NrŽ   r   r   r    r÷   r÷   Þ  r�   r   r÷   c                  ó"   € ] tR tRt$ R]R&   RtR# )ÚSessionStatusResultiâ  r   Úoutputr   Nr6   r   r   r    rù   rù   â  s   ‡ Ø‡Kr   rù   zsession.statusz&Rendered /status text for the session.c                  ó   € ] tR tRtRtR# )ÚSessionHistoryParamsiê  r   NrŽ   r   r   r    rü   rü   ê  r�   r   rü   c                  ó,   € ] tR tRt$ R]R&   R]R&   RtR# )ÚSessionHistoryResultiî  r<   rÝ   rN   rO   r   Nr6   r   r   r    rþ   rþ   î  s   ‡ ØƒJØ%×%r   rþ   zsession.historyzFThe durable display transcript (ancestors included, row ids attached).c                  ó   € ] tR tRtRtR# )ÚSessionUsageParamsi÷  r   NrŽ   r   r   r    r   r   ÷  r�   r   r   c                  ó4   € ] tR tRt$ RtR]R&   RtR]R&   RtR# )ÚSessionUsageResultiû  Nr,   Úcredits_linesr1   Úcredits_usage_windowr   )r   r   r   r   r  r   r  r   r   r   r    r  r  û  s   ‡ Ø&*€MÐ#Ó*Ø(,Ð˜+×,r   r  zsession.usagezUToken / context / cost counters for the session (+ Nous credit lines when available).c                  ó   € ] tR tRtRtR# )ÚSessionContextBreakdownParamsi  r   NrŽ   r   r   r    r  r    r�   r   r  c                  ó@   € ] tR tRt$ R]R&   R]R&   R]R&   R]R&   RtR	# )
ÚContextCategoryi  r   Úcolorr   Úlabelr<   Útokensr   Nr6   r   r   r    r  r    s   ‡ ØƒJØƒGØƒJØ‡Kr   r  c                  óX   € ] tR tRt$ RtR]R&   R]R&   R]R&   R]R&   R	]R
&   R]R&   RtR# )ÚContextFileSourcei  zDOne row of ``agent.context_file_sources.list_context_file_sources``.r   r
  Úpathr<   ÚcharsÚ
est_tokensr%   Úloadedr0   r   Nr   r   r   r    r  r    s#   ‡ ÙNàƒJØ
ƒIØƒJØƒOØƒLØ‡Kr   r  c                  óz   € ] tR tRt$ RtR]R&   R]R&   R]R&   R]R&   R]R	&   R
]R&   R]R&   R]R&   . tR]R&   RtR# )ÚSessionContextBreakdownResulti  z«``agent.context_breakdown.compute_session_context_breakdown`` (empty categories before the agent builds)
plus the per-file context manifest (empty until the agent exists).zlist[ContextCategory]Ú
categoriesr<   Úcontext_maxÚcontext_percentÚcontext_usedÚestimated_totalr%   Úcontext_estimatedr   Úcontext_sourcerr   zlist[ContextFileSource]Úcontext_filesr   N)r   r   r   r   r   r   r  r   r   r   r    r  r    sD   ‡ ñJð &Ó%ØÓØÓØÓØÓØÓØÓØƒJØ-/€MÐ*×/r   r  zsession.context_breakdownz5Cursor-style split of the context window by category.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# )ÚCompressionSummaryi0  zC``agent.manual_compression_feedback.summarize_manual_compression``.Fr%   ÚnoopÚabortedNr1   Úrefused_would_growÚfallback_usedr#   r   ÚheadlineÚ
token_liner(   Únoter   )r   r   r   r   r   r  r   r  r   r!  r"  r#  r$  r   r   r   r    r  r  0  sL   ‡ ÙMà€Dˆ$ÓØ€GˆTÓØ&*Ð˜Ó*Ø!%€M�;Ó%Ø€HˆcÓØ€J�ÓØ€Dˆ*×r   r  c                  ó&   € ] tR tRt$ RtR]R&   RtR# )ÚSessionCompressParamsi<  Nr(   Úfocus_topicr   )r   r   r   r   r'  r   r   r   r   r    r&  r&  <  s   ‡ Ø"€K�×"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&   ]P,                  RR/,          tRtR# )ÚSessionCompressResulti@  zÁIn-process: the before/after summary + replacement transcript. Compute host: its result passes
through (hence open) with ``turn_isolation``; a lock held elsewhere answers ``compressed: false``.Nr(   r0   rk   rð   Úbefore_messagesÚafter_messagesÚbefore_tokensÚafter_tokenszCompressionSummary | NoneÚsummaryzUsage | NoneÚusagezSessionLiveInfo | NonerP   zlist[TranscriptMessage] | NonerO   r1   Ú
compressedÚ	lock_heldÚmessageÚturn_isolationr*   Úhost_ackrc   rd   r   )r   r   r   r   r   r0   r   rð   r*  r+  r,  r-  r.  r/  rP   rO   r0  r1  r2  r3  r4  r   rh   r   r   r   r    r)  r)  @  s¹   ‡ ñjð €FˆJÓØ€GˆZÓØ"&€O�ZÓ&Ø!%€N�JÓ%Ø $€M�:Ó$Ø#€L�*Ó#Ø)-€GÐ&Ó-Ø€Eˆ<ÓØ#'€DÐ
 Ó'Ø/3€HÐ,Ó3Ø"€J�Ó"Ø!€Iˆ{Ó!Ø€GˆZÓØ"&€N�KÓ&Ø,0€HÐ)Ó0Ø×&Ñ&¨'°7Ð);Õ;„Lr   r)  zsession.compresszCManual /compress of an idle session, optionally focused on a topic.c                  ó&   € ] tR tRt$ RtR]R&   RtR# )ÚSessionInterruptParamsi]  Nr(   Úexpected_hosted_task_idr   )r   r   r   r   r7  r   r   r   r   r    r6  r6  ]  s   ‡ Ø*.Ð˜Z×.r   r6  c                  ó   € ] tR tRtRtRtRtR# )ÚInterruptStatusia  ÚinterruptedÚnot_interruptedr   N)r   r   r   r   r:  r;  r   r   r   r    r9  r9  a  s   † Ø€KØ'„Or   r9  c                  ó>   € ] tR tRt$ R]R&   RtR]R&   RtR]R&   RtR# )	ÚSessionInterruptResultif  r9  r0   Nr1   r:  r3  r   )r   r   r   r   r   r:  r3  r   r   r   r    r=  r=  f  s   ‡ ØÓØ#€K�Ó#Ø"&€N�K×&r   r=  zsession.interruptzMStop the running turn (and streaming TTS); retires the crash-recovery marker.c                  ó"   € ] tR tRtRtRtRtRtR# )ÚCorrectionStatusip  r[   Ú
redirectedÚrejectedr   N)r   r   r   r   r[   r@  rA  r   r   r   r    r?  r?  p  s   † Ø€FØ€JØ„Hr   r?  c                  ó"   € ] tR tRt$ R]R&   RtR# )ÚSessionCorrectionParamsiv  r   rg   r   Nr6   r   r   r    rC  rC  v  r7   r   rC  c                  ó,   € ] tR tRt$ R]R&   R]R&   RtR# )ÚSessionCorrectionResultiz  r?  r0   r   rg   r   Nr6   r   r   r    rE  rE  z  s   ‡ ØÓØ
‡Ir   rE  zsession.steerzDInject text into the next tool result without interrupting the turn.zsession.redirectzVRedirect the active turn (queued for the next turn while the agent is still building).c                  óZ   € ] 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# )ÚSpawnTreeSaveParamsiˆ  r:   Ú	subagentsNr(   rL   rW   rY   Úfinished_atr
  r   )
r   r   r   r   r   rL   rY   rI  r
  r   r   r   r    rG  rG  ˆ  s0   ‡ Ø)Ó)Ø!€J�
Ó!Ø#€J�Ó#Ø $€K�Ó$Ø€Eˆ:×r   rG  c                  ó,   € ] tR tRt$ R]R&   R]R&   RtR# )ÚSpawnTreeSaveResulti�  r   r  rL   r   Nr6   r   r   r    rK  rK  �  s   ‡ Ø
ƒIØ‡Or   rK  zspawn_tree.savezPPersist a finished delegation tree snapshot under the session's spawn-trees dir.c                  óB   € ] tR tRt$ RtR]R&   RtR]R&   RtR]R	&   R
tR# )ÚSpawnTreeListParamsi™  Nr(   rL   Fr%   Úcross_sessionrk   r–   r   )	r   r   r   r   rL   r   rN  r–   r   r   r   r    rM  rM  ™  s    ‡ Ø!€J�
Ó!Ø€M�4ÓØ€Eˆ:×r   rM  c                  ól   € ] 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&   ^ t
R]R&   RtR# )ÚSpawnTreeEntryiŸ  zFIndex row (``server._append_spawn_tree_index``) or a legacy file scan.r   r  Nr(   rL   rW   rY   rI  r#   r
  r<   rÝ   r   )r   r   r   r   r   r   rL   rY   rI  r
  rÝ   r   r   r   r    rP  rP  Ÿ  s:   ‡ ÙPà
ƒIØ!€J�
Ó!Ø#€J�Ó#Ø $€K�Ó$Ø€Eˆ3ƒOØ€Eˆ3‡Nr   rP  c                  ó"   € ] tR tRt$ R]R&   RtR# )ÚSpawnTreeListResultiª  zlist[SpawnTreeEntry]Úentriesr   Nr6   r   r   r    rR  rR  ª  s   ‡ Ø!×!r   rR  zspawn_tree.listz)Saved spawn-tree snapshots, newest first.c                  ó"   € ] tR tRt$ R]R&   RtR# )ÚSpawnTreeLoadParamsi²  r   r  r   Nr6   r   r   r    rU  rU  ²  r7   r   rU  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
7      tR]R&   ]P                  RR/,          tRtR# )ÚSpawnTreeLoadResulti¶  zUThe snapshot file as written by ``spawn_tree.save`` (open: the file is the contract).Nr(   rL   rW   rY   rI  r
  r×   r:   rH  rc   rd   r   )r   r   r   r   r   rL   r   rY   rI  r
  r   rÙ   rH  r   rh   r   r   r   r    rW  rW  ¶  sR   ‡ Ù_à!€J�
Ó!Ø#€J�Ó#Ø $€K�Ó$Ø€Eˆ:ÓÙ,1À$Ô,G€IÐ)ÓGØ×&Ñ&¨'°7Ð);Õ;„Lr   rW  zspawn_tree.loadzMRead one saved spawn-tree snapshot (path must be under the spawn-trees root).c                  ó&   € ] tR tRt$ RtR]R&   RtR# )ÚTerminalResizeParamsiÈ  Nrk   rl   r   )r   r   r   r   rl   r   r   r   r   r    rY  rY  È  s   ‡ Ø€Dˆ*×r   rY  c                  ó"   € ] tR tRt$ R]R&   RtR# )ÚTerminalResizeResultiÌ  r<   rl   r   Nr6   r   r   r    r[  r[  Ì  r7   r   r[  zterminal.resizez;Record the client's column width for server-side rendering.c                  ó4   € ] tR tRt$ RtR]R&   RtR]R&   RtR# )ÚSessionEventsSinceParamsiÔ  Nrk   Ú	last_seenr(   Úreplay_epochr   )r   r   r   r   r^  r   r_  r   r   r   r    r]  r]  Ô  s   ‡ Ø €IˆzÓ ð  $€L�*×#r   r]  c                  óT   € ] tR tRt$ R]R&   R]R&   R]R&   R]R&   R	]R
&   R]R&   RtR# )ÚSessionEventsSinceResultiÜ  r:   Úeventsr<   Ú
latest_seqr%   Ú	truncatedrÝ   r   Úepochzlist[OpenRequestEntry]r]   r   Nr6   r   r   r    ra  ra  Ü  s"   ‡ Ø&Ó&ØƒOØƒOØƒJØƒJØ)×)r   ra  zsession.events.sincezSReplay events after a seq watermark on WS reconnect; truncated means refetch state.c                  ó   € ] tR tRtRtR# )ÚSessionEventsStatsParamsié  r   NrŽ   r   r   r    rg  rg  é  r�   r   rg  c                  óX   € ] tR tRt$ RtR]R&   R]R&   R]R&   R]R&   R]R&   R]R	&   R
tR# )ÚSessionEventsStatsResultií  z``event_replay.replay_stats``.r<   r£   rb  ÚbytesÚmax_per_sessionÚmax_bytes_per_sessionÚmax_bytes_processr   Nr   r   r   r    ri  ri  í  s&   ‡ Ù(àƒMØƒKØƒJØÓØÓØ×r   ri  zsession.events.statsz.Replay-buffer occupancy telemetry (ops/debug).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# )ÚLlmOneshotParamsiÿ  z\Needs a ``template`` or ``instructions`` / ``input``; a live ``session_id`` lends its model.Nr(   ÚtemplateÚinstructionsÚinputr*   Ú	variablesÚtaskrW   Útemperaturerk   Ú
max_tokensrL   r   )r   r   r   r   r   rp  r   rq  rr  rs  rt  ru  rv  rL   r   r   r   r    ro  ro  ÿ  sV   ‡ Ùfà€HˆjÓØ#€L�*Ó#Ø€Eˆ:ÓØ-1€IÐ*Ó1Ø€Dˆ*ÓØ $€K�Ó$Ø!€J�
Ó!Ø!€J�
×!r   ro  c                  ó"   € ] tR tRt$ R]R&   RtR# )ÚLlmOneshotResulti  r   rg   r   Nr6   r   r   r    rx  rx    r7   r   rx  zllm.oneshotzWStateless one-shot LLM completion (titles, ideas) on the session's or the task backend.N)gr   Ú
__future__r   Úpydanticr   Úbaser   r   r   r   Úcommonr   r	   r
   r   r   r   r   Úconnectors_operationr   Úregistryr   r   r"   r5   r9   r?   rD   rK   rb   rj   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ï   rò   rô   r÷   rù   rü   rþ   r   r  r  r  r  r  r  r&  r)  r6  r9  r=  r?  rC  rE  rG  rK  rM  rP  rR  rU  rW  rY  r[  r]  ra  rg  ri  ro  rx  r   r   r    Ú<module>r     sé  ðñõ
 #å ç 5Ó 5÷÷ ñ å :Ý ô!�vô !ô6�6ô 6ô"�6ô ô�ô ô�6ô ô˜ô ô.˜&ô .ô>$�&ô $ô'˜-ô 'ô0˜&ô ñ ÐÐ 3Ð<OØtõvô' ô 'ô ô ñ ÐÐ'@ÐIbðõô˜-ô ô	Ð-ô 	ñ ÐÐ 3Ð<OØlõnô ˜Mô  ô
	Ð/ô 	ñ ÐÐ"7Ð@UØ^õ`ô!˜ô !ôP�Vô Pô"#˜ô #ñ €~Ð/Ð8IØaõcô	˜mô 	ô˜fô ñ ÐÐ%<ÐE\ØRõTô*˜mô *ô˜ô ô &˜fô &ñ ÐÐ%<ÐE\ØOõQô+˜-ô +ô˜&ô ñ ÐÐ 3Ð<OØRõTô˜ô ô ˜ô  ñ €Ð1Ð:LØ]õ_ô˜Vô ô˜Vô ñ
 ÐÐ$:ÐCYØmõoô˜6ô ô˜6ô ñ
 ÐÐ!5Ð>RØhõjô ô ô
% ô %ñ ÐÐ(BÐKeØeõgô˜-ô ôT˜/ô Tñ ÐÐ!4Ð=PØ=õ?ô	˜ô 	ô6˜ô 6ñ €Ð1Ð:LØGõIô'˜-ô 'ô˜&ô ñ ÐÐ 3Ð<OØaõcô'˜}ô 'ô˜vô ñ ÐÐ&>ÐG_Ø\õ^ô�ô ô
%˜ô %ô
˜ô ñ €~Ð/Ð8IØTõVô	˜ô 	ô<˜ô <ñ €~Ð/Ð8IØOõQô	˜-ô 	ô˜&ô ñ ÐÐ 3Ð<OØ3õ5ô	˜=ô 	ô&˜6ô &ñ
 ÐÐ!5Ð>RØSõUô	˜ô 	ô-˜ô -ñ
 €Ð1Ð:LØbõdô	 Mô 	ô�fô ô˜ô ô0 Fô 0ñ Ð"Ð+HÐQnØBõDô	˜ô 	ô#˜Mô #ô<˜Fô <ñ, ÐÐ"7Ð@UØPõRô/˜]ô /ô(�hô (ô
'˜Vô 'ñ ÐÐ#9ÐBXØZõ\ô�xô ô˜mô ô˜fô ñ
 €Ð6Ð?VØQõSá ÐÐ"9ÐBYØcõeô˜-ô ô˜&ô ñ
 ÐÐ!4Ð=PØ]õ_ô˜-ô ô�Yô ô"˜&ô "ñ ÐÐ!4Ð=PØ6õ8ô˜-ô ô<˜&ô <ñ ÐÐ!4Ð=PØZõ\ô˜=ô ô˜6ô ñ ÐÐ!5Ð>RØHõJô$˜}ô $ô*˜vô *ñ ÐÐ&>ÐG_Ø`õbô	˜}ô 	ô˜vô ñ ÐÐ&>ÐG_Ø;õ=ô
"�}ô 
"ô�vô ñ €}Ð-Ð6FØd÷fr   