+
    lHàj¯M  ã                  ól  € R t ^ RIHt ^ RIHt ^RIHtHtHt ^RI	H
t
HtHtHt ^RIHt ^RIHtHt ^RIHtHt ^RI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R7        ! 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        ! R. R/]4      t$ ! R0 R1]4      t% ! R2 R3]%]4      t&]! R4]$]&R5R7        ! R6 R7]4      t' ! R8 R9]4      t(]! R:]'](R;R7        ! R< R=]4      t) ! R> R?]4      t*]! R@])]*RAR7        ! RB RC]4      t+ ! RD RE]4      t,]! RF]+],RGR7        ! RH RI]4      t- ! RJ RK]4      t.]! RL]-].RMR7        ! RN RO]4      t/ ! RP RQ]4      t0]! RR]/]0RSR7        ! RT RU]4      t1 ! RV RW]4      t2 ! RX RY]4      t3]! RZ]1]3R[R7        ! R\ R]]4      t4 ! R^ R_]4      t5]! R`]4]5RaR7       ]! Rb]]RcR7        ! Rd Re]4      t6 ! Rf Rg]4      t7]! Rh]6]7RiR7        ! Rj Rk]4      t8]! Rl]6]8RmR7        ! Rn Ro]4      t9]! Rp]9]8RqR7        ! Rr Rs]4      t:]! Rt]9]:RuR7        ! Rv Rw]4      t; ! Rx Ry]4      t<]! Rz];]<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      tA]! Rˆ]@]AR‰R7       ]! RŠ]?]AR‹R7        ! RŒ R�]?4      tB ! RŽ R�]4      tC]! R�]B]CR‘R7        ! R’ R“]4      tD ! R” R•]4      tE]! R–]D]ER—R7        ! R˜ R™]4      tF ! Rš R›]E4      tG]! Rœ]F]GR�R7        ! Rž RŸ]4      tH ! R  R¡]4      tI]! R¢]H]IR£R7       ^R¤IJHKtKHLtL R¥# )¦a  Canonical ``hermes-gateway-v1`` methods that only the session authority serves.

``gateway/session_controls.py::AuthorityConnection.dispatch`` answers these on the authenticated
native socket; the TUI sidecar (``server._methods``) never registers them, so they live in
``CANONICAL_METHODS`` rather than ``METHODS``. Shared names with different authority semantics are overridden in
``canonical_sessions`` / ``canonical_projections``; unchanged names reuse ``METHODS``. The dispatcher refuses an unknown or missing key with ``4001 invalid_params`` before the
handler runs; value checks stay in the handlers, which own their domain reasons.
)Úannotations)ÚLiteral)Ú	JsonValueÚParamsÚResult)ÚMcpServerStatusÚ	OpenModelÚ	PlanGaugeÚ
ProjectRef)ÚSkinPayload)Ú
RoomParamsÚRoomTaskReceipt)ÚClarifyLockParamsÚClarifyLockResult)Úcanonical_methodc                  ó,   € ] tR t^t$ R]R&   R]R&   RtR# )ÚCanonicalSessionRefÚstrÚ
profile_idÚ
session_id© N©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__annotations__Ú__static_attributes__r   ó    ÚD/home/ubuntu/.hermes/hermes-agent/tui_gateway/contracts/canonical.pyr   r      s   ‡ ØƒOØ‡Or   r   c                  ób   € ] tR t^t$ RtR]R&   R]R&   R]R&   R]R	&   R
]R&   R]R&   R]R&   RtR# )ÚAdmissionStatuszU``gateway/session_contract.py::AdmissionReceipt`` as ``dataclasses.asdict`` sends it.r   Úadmission_idr   ÚrefÚintÚsequencez3Literal['queued', 'started', 'unknown', 'terminal']Ústatusú
str | NoneÚoutcomeÚauthority_epochú
int | NoneÚexecution_generationr   N©r   r   r   r   Ú__doc__r   r   r   r   r   r!   r!      s.   ‡ Ù_àÓØ	ÓØƒMØ?Ó?ØÓØÓØ$×$r   r!   c                  ó:   € ] tR t^)t$ R]R&   R]R&   RtR]R&   RtR# )ÚPromptReceiptParamsr   r   r"   Núbool | NoneÚinclude_resultr   )r   r   r   r   r   r1   r   r   r   r   r/   r/   )   s   ‡ ØƒOØÓØ"&€N�K×&r   r/   c                  ó8   € ] tR t^/t$ RtRtR]R&   RtR]R&   RtR# )ÚPromptReceiptResultz�``result`` / ``usage``: the structured turn result committed at settlement, only with
``include_result`` on a terminal admission that saved one.NúJsonValue | NoneÚresultúdict[str, JsonValue] | NoneÚusager   )	r   r   r   r   r-   r5   r   r7   r   r   r   r   r3   r3   /   s    ‡ ñBð  $€FÐÓ#Ø)-€EÐ&×-r   r3   zprompt.receiptzDCurrent receipt of one admission the caller submitted (or controls).)Úparamsr5   Údocc                  ó,   € ] tR t^;t$ R]R&   R]R&   RtR# )ÚPromptCancelParamsr   r   r"   r   Nr   r   r   r   r;   r;   ;   ó   ‡ ØƒOØ×r   r;   zprompt.cancelz=Retire a still-queued admission; a started one is unaffected.c                  ó6   € ] tR t^Dt$ R]R&   R]R&   R]R&   RtR# )ÚPromptResolveUnknownParamsr   r   r"   r$   r+   r   Nr   r   r   r   r>   r>   D   s   ‡ ØƒOØÓØ×r   r>   zprompt.resolve_unknownzkAcknowledge a turn lost across an owner restart; the FIFO behind it resumes. Never requeues the lost input.c                  ó\   € ] tR t^Rt$ RtR]R&   R]R&   R]R&   R]R&   R]R	&   R
tR]R&   RtR
# )ÚSessionMutateParamsaö  ``operation`` + ``payload`` are validated by ``hermes_state_mutations.validate_action``;
``expected_generation`` is required for delete/rewind/reset/branch/model/compress/reasoning/workspace.
``reasoning`` (``{effort}``) and ``workspace`` (``{cwd}``, refused ``session_busy`` mid-turn) rewrite
the session's frozen policy: session-scope ``/reasoning`` and Desktop's Move to project. ``edit_policy``
(``{policy}``: ask / workspace_session / session) is an ACP session's edit approval (main's ACP modes).r   r   Ú
request_idr$   Úexpected_revisionÚ	operationúdict[str, JsonValue]ÚpayloadNr*   Úexpected_generationr   )r   r   r   r   r-   r   rF   r   r   r   r   r@   r@   R   s0   ‡ ñoð ƒOØƒOØÓØƒNØ!Ó!Ø&*Ð˜×*r   r@   c                  ó>   € ] tR t^at$ RtR]R&   R]R&   RtR]R&   RtR# )	ÚSessionMutateResultuÓ   The committed mutation receipt plus the operation's projection (``title``, ``archived``,
``branched_session_id``, compress ``status``/``lines``, â€¦). ``revision`` is absent only on a
read-only compress preview.r   r   rC   Nr*   Úrevisionr   )r   r   r   r   r-   r   rI   r   r   r   r   rH   rH   a   s   ‡ ñ#ð ƒOØƒNØ€Hˆj×r   rH   zsession.mutatez¥Revision-fenced, retry-idempotent session edit (rename, archive, sidebar, branch, delete, rewind, reset, model, reasoning, workspace, edit_policy, compress, import).c                  ó8   € ] tR t^pt$ RtRtR]R&   RtR]R&   RtR# )ÚSessionPruneParamsz¢Exactly one of ``filters`` (``SessionDB.prune_sessions`` keyword filters, as
``hermes sessions prune`` builds them) or ``never_active_days`` (``--never-active``).Nr6   Úfiltersúfloat | NoneÚnever_active_daysr   )	r   r   r   r   r-   rL   r   rN   r   r   r   r   rK   rK   p   s    ‡ ñ]ð ,0€GÐ(Ó/Ø&*Ð�|×*r   rK   c                  ó>   € ] tR t^xt$ R]R&   RtR]R&   RtR]R&   RtR# )ÚSessionPruneResultr$   ÚdeletedNr*   Úrouting_deletedÚskippedr   )r   r   r   r   r   rR   rS   r   r   r   r   rP   rP   x   s   ‡ ØƒLØ"&€O�ZÓ&Ø€GˆZ×r   rP   zsession.prunez�Local operator only: the owner deletes the ended sessions `hermes sessions prune` selected, skipping busy sessions and retained reset owners.c                  óH   € ] tR t^ƒt$ R]R&   R]R&   RtR]R&   RtR]R&   RtR# )	ÚCommandObserveParamsr   r   ÚnameNr'   ÚargÚprofiler   )r   r   r   r   r   rW   rX   r   r   r   r   rU   rU   ƒ   s    ‡ ØƒOØ
ƒIØ€CˆÓØ€GˆZ×r   rU   c                  ó"   € ] tR t^Št$ R]R&   RtR# )ÚCommandObserveResultÚboolÚqueuedr   Nr   r   r   r   rZ   rZ   Š   s   ‡ Ø‡Lr   rZ   zcommand.observez³Fire-only: a recognized command the classic CLI or the TUI runs itself; the gateway fires `pre_command` for it in the session's profile after replying (`queued` false: not fired).c                  ó"   € ] tR t^“t$ R]R&   RtR# )ÚCanonicalSessionInfoParamsr   r   r   Nr   r   r   r   r^   r^   “   ó   ‡ Ø‡Or   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]R&   RtR]R&   RtR]R&   RtR]R&   RtR]R&   RtR]R&   RtR# )ÚSessionInventoryFieldsa$  Main's banner / status-bar inventory (``gateway/session_local_inventory.py::session_inventory``):
the shapes ``tui_gateway/server.py::_session_info`` sent, computed for the session's frozen policy.
``enabled_toolsets`` / ``tool_availability`` / ``context_length`` feed the classic CLI banner.Nr'   Úproviderzdict[str, list[str]] | NoneÚtoolsÚskillszlist[McpServerStatus] | NoneÚmcp_serversÚversionÚrelease_dater4   Úupdate_behindÚupdate_commandÚbranchzProjectRef | NoneÚprojectÚsystem_promptr*   Úcontext_lengthzlist[str] | NoneÚenabled_toolsetsr6   Útool_availabilityÚtool_availability_warningsÚbrowser_backend_noticeÚunknown_toolsetsr   )r   r   r   r   r-   rb   r   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   r   r   r   r   ra   ra   —   sÂ   ‡ ñfð  €HˆjÓØ)-€EÐ&Ó-Ø*.€FÐ'Ó.Ø04€KÐ-Ó4Ø€GˆZÓØ#€L�*Ó#Ø&*€MÐ#Ó*Ø!%€N�JÓ%Ø€FˆJÓØ!%€GÐÓ%Ø $€M�:Ó$Ø!%€N�JÓ%Ø)-ÐÐ&Ó-Ø59ÐÐ2Ó9à37ÐÐ 0Ó7Ø)-Ð˜JÓ-Ø)-ÐÐ&×-r   ra   c                  ó.  € ] tR t^°t$ RtR]R&   RtR]R&   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# )!ÚCanonicalSessionInfoz^``gateway/session_local_inventory.py::snapshot_info``: ``local_session_info`` + the inventory.r   ÚsourceNr'   Úmodelr[   Úlazyr   Údesktop_protocolÚprofile_nameÚcwdz5Literal['ask', 'workspace_session', 'session'] | NoneÚedit_approval_policyr6   Úlaunch_requestÚreasoning_effortÚreasoning_effort_wireÚservice_tierr0   ÚfastÚtitlerM   Ú
started_atÚlast_active_atÚyoloÚapi_moder*   Ú
tool_countÚcredential_hintÚconfig_warningr   )r   r   r   r   r-   r   rv   rz   r{   r|   r}   r~   r   r€   r�   r‚   rƒ   r„   r…   r†   r‡   rˆ   r   r   r   r   rt   rt   °   sÅ   ‡ ÙhàƒKØ€Eˆ:ÓØ
ƒJØƒOØÓØÓØ€CˆÓàRVÐÐOÓVØ26€NÐ/Ó6Ø#'Ð�jÓ'Ø(,Ð˜:Ó,Ø#€L�*Ó#Ø€Dˆ+Óà€Eˆ:ÓØ#€J�Ó#Ø#'€N�LÓ'Ø€Dˆ+ÓØ€HˆjÓØ!€J�
Ó!Ø"&€O�ZÓ&à!%€N�J×%r   rt   zsession.infoz5Frozen launch policy projection of one local session.c                  ó"   € ] tR t^Ñt$ R]R&   RtR# )ÚSessionStatsParamsr   r   r   Nr   r   r   r   rŠ   rŠ   Ñ   r_   r   rŠ   c                  ó,  € ] tR t^Õt$ RtR]R&   R]R&   R]R&   R]R&   R]R&   R]R&   R]R	&   R]R
&   R]R&   R]R&   R]R&   RtR]R&   RtR]R&   RtR]R&   R]R&   Rt	R]R&   Rt
R]R&   R]R&   RtR]R&   R]R&   R]R&   R]R&   RtR]R&   RtR ]R!&   R"tR# )#ÚSessionStatszÃ``gateway/session_usage.py::usage_stats``: session-cumulative counters (the agent's ``session_*``),
context / compressor figures, rolling latency and throughput, rate-limit state, live subagents.r$   Úinput_tokensÚoutput_tokensÚcache_read_tokensÚcache_write_tokensÚprompt_tokensÚcompletion_tokensÚtotal_tokensÚreasoning_tokensÚ	api_callsÚlast_prompt_tokensÚcontext_tokensNr*   rm   Úconfig_context_lengthr'   Úcontext_sourceÚcompression_countrM   Úavg_latency_sÚtokens_per_sÚlast_turn_tokensr6   Ú
rate_limitÚactive_subagentsr   rv   rb   Úfallback_modelzPlanGauge | NoneÚ
plan_gauger   )r   r   r   r   r-   r   rm   r˜   r™   r›   rœ   rž   r    r¡   r   r   r   r   rŒ   rŒ   Õ   sº   ‡ ñgð ÓØÓØÓØÓØÓØÓØÓØÓØƒNØÓØÓØ!%€N�JÓ%Ø(,Ð˜:Ó,Ø!%€N�JÓ%ØÓØ"&€M�<Ó&Ø!%€L�,Ó%ØÓØ.2€JÐ+Ó2ØÓØƒJØƒMØ!%€N�JÓ%Ø#'€JÐ ×'r   rŒ   zsession.statszMThe session.usage dict on demand: what main's classic CLI read off its agent.c                  ó0   € ] tR t^÷t$ R]R&   RtR]R&   RtR# )ÚRollbackSessionDiffParamsr   r   Nr'   rX   r   )r   r   r   r   r   rX   r   r   r   r   r£   r£   ÷   s   ‡ ØƒOØ€GˆZ×r   r£   c                  óz   € ] tR t^üt$ RtR]R&   RtR]R&   RtR]R&   RtR]R	&   ^ t	R
]R&   Rt
R]R&   RtR]R&   RtR# )ÚRollbackSessionDiffResulta  ``gateway/session_tui_ops.py::_session_diff``: ``CheckpointManager.session_diff`` under the
session's frozen checkpoint policy (``enabled: false`` when that policy does not checkpoint).
``diff`` is bounded to fit one frame; ``diff_lines`` counts the whole body.r[   ÚenabledFÚsuccessÚ r   ÚstatÚdiffr$   Ú
diff_linesÚemptyNr'   Úerrorr   )r   r   r   r   r-   r   r§   r©   rª   r«   r¬   r­   r   r   r   r   r¥   r¥   ü   sI   ‡ ñSð ƒMØ€GˆTÓØ€Dˆ#ƒNØ€Dˆ#ƒNØ€J�ÓØ€Eˆ4ÓØ€Eˆ:×r   r¥   zrollback.session_diffzˆThe classic CLI's /diff session: everything changed since the session's earliest retained checkpoint, as data for its terminal renderer.c                  óP   € ] tR tRt$ RtR]R&   RtR]R&   RtR]R	&   R
tR]R&   Rt	R# )ÚSessionExportParamsi  zY``format``: json (default) / md / markdown / html / snapshot (``normalize_save_format``).r   r   Nr'   rX   ÚjsonÚformatFr[   Úredactr   )
r   r   r   r   r-   r   rX   r±   r²   r   r   r   r   r¯   r¯     s(   ‡ ÙcàƒOØ€GˆZÓØ€FˆCÓØ€FˆD×r   r¯   c                  ó:   € ] tR tRt$ RtR]R&   R]R&   R]R&   RtR# )	ÚSessionExportResulti  z¸``gateway/session_tui_ops.py::export_session``: the rendered ``/save`` body and its default
file name. The client writes it (the gateway may be remote); nothing is written on the host.r   r±   ÚfilenameÚcontentr   Nr,   r   r   r   r´   r´     s   ‡ ñdð ƒKØƒMØ‡Lr   r´   zsession.exportzSThe /save transcript rendered for the client to write (the gateway writes nothing).c                  óR   € ] tR tRt$ R]R&   R]R&   R]R&   RtR]R	&   RtR
]R&   RtR# )ÚSessionAutomationParamsi%  r   r   z$Literal['goal', 'loop', 'heartbeat']ÚkindÚcallNúlist[JsonValue] | NoneÚargsr6   Úkwargsr   )r   r   r   r   r   r¼   r½   r   r   r   r   r¸   r¸   %  s(   ‡ ØƒOØ
.Ó.Ø
ƒIØ#'€DÐ
 Ó'Ø*.€FÐ'×.r   r¸   c                  óB   € ] tR tRt$ RtR]R&   RtR]R&   RtR]R	&   R
tR# )ÚSessionAutomationResulti-  zµ``gateway/session_viewer_automation.py``: the manager's persisted state after the call (its own
JSON, ``null`` when none) and the call's value, or the refusal main's manager raised.r'   ÚstateNr4   Úvaluezdict[str, str] | Noner­   r   )	r   r   r   r   r-   r   rÁ   r­   r   r   r   r   r¿   r¿   -  s&   ‡ ñ]ð ÓØ"€EÐÓ"Ø#'€EÐ ×'r   r¿   zsession.automationz˜The classic CLI's /goal, /subgoal, /loop, /heartbeat manager calls (state writes, the goal judge, quality gates), run by the owner on the session's row.c                  ó:   € ] tR tRt$ R]R&   R]R&   RtR]R&   RtR# )	ÚSessionDetachParamsi;  r   r   Úsubscription_idNr'   Ú
end_reasonr   )r   r   r   r   r   rÅ   r   r   r   r   rÃ   rÃ   ;  s   ‡ ØƒOØÓØ!€J�
×!r   rÃ   c                  ó6   € ] tR tRt$ R]R&   R]R&   R]R&   RtR# )	ÚSessionDetachResultiA  r   r   rÄ   r[   Údetachedr   Nr   r   r   r   rÇ   rÇ   A  s   ‡ ØƒOØÓØ‡Nr   rÇ   zsession.detachzâDrop this connection's subscription; a stale subscription id answers detached=false. end_reason (snake_case): the viewer is closing the conversation; the last viewer leaving an idle local session ends its row with that reason.c                  ó   € ] tR tRtRtR# )ÚRuntimeDescribeParamsiM  r   N)r   r   r   r   r   r   r   r   rÊ   rÊ   M  s   † Ûr   rÊ   c                  ó,   € ] tR tRt$ R]R&   R]R&   RtR# )ÚSessionCreateDescriptoriQ  ú	list[str]ÚsourcesÚ
parametersr   Nr   r   r   r   rÌ   rÌ   Q  s   ‡ ØÓØ×r   rÌ   c                  óX   € ] tR tRt$ R]R&   R]R&   R]R&   R]R&   R	]R
&   RtR]R&   RtR# )ÚRuntimeDescribeResultiV  r   Úinstance_idr   r$   r)   rÍ   ÚcapabilitiesrÌ   Úsession_createNzSkinPayload | NoneÚskinr   )r   r   r   r   r   rÕ   r   r   r   r   rÑ   rÑ   V  s*   ‡ ØÓØƒOØÓØÓØ+Ó+à#€DÐ
×#r   rÑ   zruntime.describezCOwner identity and the canonical capabilities a client may rely on.c                  ó@   € ] tR tRt$ R]R&   R]R&   R]R&   R]R&   RtR	# )
ÚClarifyRespondParamsid  r   r   r$   r+   Ú	prompt_idÚanswerr   Nr   r   r   r   r×   r×   d  s   ‡ ØƒOØÓØƒNØ‡Kr   r×   c                  ó,   € ] tR tRt$ R]R&   R]R&   RtR# )ÚPromptResponseResultik  z'Literal['resolved', 'already_resolved']r&   r   rØ   r   Nr   r   r   r   rÛ   rÛ   k  s   ‡ Ø3Ó3Ø‡Nr   rÛ   zclarify.respondzNGeneration-fenced answer to a pending clarify prompt (empty answer = skipped).zclarify.lockz¥Lock one answer of the owner's batch clarify request (editable until every question is locked); only a viewer attached to that session with session:respond may lock.c                  ó6   € ] tR tRt$ R]R&   R]R&   R]R&   RtR# )	ÚCronRunParamsi}  r   Újob_idrA   r'   Úextra_promptr   Nr   r   r   r   rÝ   rÝ   }  s   ‡ ØƒKØƒOØ×r   rÝ   c                  ó,   € ] tR tRt$ R]R&   R]R&   RtR# )ÚCronSubmitResultiƒ  r   r   r"   r   Nr   r   r   r   rá   rá   ƒ  r<   r   rá   zcron.submitz=Admit one cron firing into the owning profile's durable FIFO.c                  óL   € ] tR tRt$ RtR]R&   R]R&   RtR]R	&   RtR]R
&   RtR# )ÚCronStatusResultiŒ  z�``result`` is the ``run_job`` tuple once terminal; ``recover`` adds the frozen ``job`` and
answers ``status='missing'`` for a firing that was never admitted.r   r&   r»   r5   Nr6   Ú	job_flagsÚjobr   )	r   r   r   r   r-   r   rä   rå   r   r   r   r   rã   rã   Œ  s+   ‡ ñJð ƒKØ"Ó"Ø-1€IÐ*Ó1Ø'+€CÐ	$×+r   rã   zcron.recoverzFRe-observe a firing after a scheduler restart (same request identity).c                  ó,   € ] tR tRt$ R]R&   R]R&   RtR# )ÚCronAdmissionParamsiš  r   r   r"   r   Nr   r   r   r   rç   rç   š  r<   r   rç   zcron.statusz<Status and, once terminal, the result of one cron admission.c                  ó"   € ] tR tRt$ R]R&   RtR# )ÚCronCancelResulti£  r[   Úokr   Nr   r   r   r   ré   ré   £  s   ‡ Ø‡Hr   ré   zcron.cancelzFCancel a queued cron admission or latch cancellation on a started one.c                  óN   € ] tR tRt$ R]R&   R]R&   R]R&   R]R&   RtR	]R
&   RtR# )ÚKanbanRunParamsi«  r   ÚboardÚtask_idr$   Úrun_idÚ
claim_lockNr'   Údbr   )r   r   r   r   r   rñ   r   r   r   r   rì   rì   «  s    ‡ ØƒJØƒLØƒKØƒOØ€Bˆ
×r   rì   c                  ó,   € ] tR tRt$ R]R&   R]R&   RtR# )ÚKanbanRunResulti³  r   r   r!   Úreceiptr   Nr   r   r   r   ró   ró   ³  s   ‡ ØƒOØ×r   ró   z
kanban.runzINative-owner only: admit the dispatcher's current claim on a kanban task.c                  óT   € ] tR tRt$ R]R&   R]R&   R]R&   R]R&   R]R&   R]R&   R	tR
# )ÚA2aForwardParamsi¼  r   ÚagentÚtenantÚpeerÚ
context_idÚinput_idÚtextr   Nr   r   r   r   rö   rö   ¼  s    ‡ ØƒJØƒKØ
ƒIØƒOØƒMØ
‡Ir   rö   c                  ó,   € ] tR tRt$ R]R&   R]R&   RtR# )ÚA2aForwardResultiÅ  r   r   r4   r5   r   Nr   r   r   r   rþ   rþ   Å  s   ‡ ØƒOØ×r   rþ   za2a.forwardzEForward one A2A input into the conversation its identity tuple names.c                  ób   € ] tR tRt$ RtR]R&   R]R&   R]R&   R]R&   R]R	&   R
]R&   R]R&   RtR# )ÚWorkerScopeParamsiÑ  zTThe producer claim every worker verb proves (``gateway/session_worker.py::_SCOPE``).r   r   r   Úexecution_idr$   Ú
generationÚpidÚfloatÚbirthÚsecretr   Nr,   r   r   r   r   r   Ñ  s)   ‡ Ù^àƒOØƒOØÓØƒOØ	ƒHØƒLØ‡Kr   r   c                  ó"   € ] tR tRt$ R]R&   RtR# )ÚWorkerRegisterParamsiÝ  r   r¹   r   Nr   r   r   r   r  r  Ý  s   ‡ Ø
‡Ir   r  c                  ób   € ] tR tRt$ RtR]R&   R]R&   R]R&   R]R&   R]R	&   R]R
&   R]R&   RtR# )ÚWorkerExecutioniá  z8A ``worker_executions`` row without its adoption digest.r   r  r   r¹   r$   Úowner_epochr  r&   Úlast_sequencer   Nr,   r   r   r   r
  r
  á  s+   ‡ ÙBàÓØƒOØ
ƒIØÓØƒOØƒKØ×r   r
  zworker.registerz7Register a compute worker execution on an idle session.zworker.adoptzEAdopt a registered execution after verifying the live producer claim.c                  ó@   € ] tR tRt$ R]R&   R]R&   R]R&   R]R&   R	tR
# )ÚWorkerPersistParamsió  r$   Úepochr%   r   rC   rD   rE   r   Nr   r   r   r   r  r  ó  s   ‡ ØƒJØƒMØƒNØ!×!r   r  c                  ó   € ] tR tRtRtRtR# )ÚWorkerPersistResultiú  uX   The operation's durable receipt (``message_id`` for an append, delegation results, â€¦).r   N)r   r   r   r   r-   r   r   r   r   r  r  ú  s   † Ýbr   r  zworker.persistz?Sequence-fenced typed persistence write from an adopted worker.c                  óJ   € ] tR tRt$ R]R&   R]R&   R]R&   R]R&   R]R&   RtR	# )
ÚGroupsAttachmentUploadParamsi  r   Ú	upload_idr¹   rV   ÚmimeÚdata_base64r   Nr   r   r   r   r  r    s   ‡ ØƒNØ
ƒIØ
ƒIØ
ƒIØ×r   r  c                  ó€   € ] tR tRt$ R]R&   R]R&   R]R&   R]R&   R]R&   R]R	&   R]R
&   R]R&   R]R&   RtR]R&   RtR# )ÚRoomAttachmenti  r   Úattachment_idr¹   rV   r$   Úsizer  Úsha256rÀ   r  Ú
created_atr[   Ú
idempotentNr'   Úevent_idr   )r   r   r   r   r   r  r   r   r   r   r  r    s<   ‡ ØÓØ
ƒIØ
ƒIØ
ƒIØ
ƒIØƒKØƒJØÓØÓØ€Hˆj×r   r  zgroups.attachment.uploadzQStore one attachment for a later groups.send manifest (idempotent per upload_id).c                  ó,   € ] tR tRt$ R]R&   R]R&   RtR# )ÚGroupsAttachmentDownloadParamsi  r   r  r  r   Nr   r   r   r   r   r     s   ‡ ØƒMØ×r   r   c                  ó"   € ] tR tRt$ R]R&   RtR# )ÚRoomAttachmentBytesi#  r   r  r   Nr   r   r   r   r"  r"  #  s   ‡ Ø×r   r"  zgroups.attachment.downloadz5Read one committed attachment for a live room viewer.c                  ó6   € ] tR tRt$ R]R&   R]R&   R]R&   RtR# )	ÚGroupsDiscardParamsi+  r   Ú	member_idrî   r$   r+   r   Nr   r   r   r   r$  r$  +  s   ‡ ØƒNØƒLØ×r   r$  c                  ó0   € ] tR tRt$ RtR]R&   R]R&   RtR# )	ÚGroupsDiscardResulti1  Tr[   Ú	discardedr   Útaskr   N)r   r   r   r   r(  r   r   r   r   r   r'  r'  1  s   ‡ Ø€IˆtÓØ
×r   r'  zgroups.discardzEDiscard one indeterminate room task after explicit user confirmation.)Úcanonical_sessionsÚcanonical_projectionsN)Mr-   Ú
__future__r   Útypingr   Úbaser   r   r   Úcommonr   r   r	   r
   Úeventsr   Úgroups_bot_relayr   r   Úprompt_voicer   r   Úregistryr   r   r!   r/   r3   r;   r>   r@   rH   rK   rP   rU   rZ   r^   ra   rt   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   Ú<module>r4     sþ  ðñõ #å ç +Ñ +ß EÓ EÝ ß 9ß >Ý &ô
˜&ô ô
	%�fô 	%ô'˜&ô 'ô.˜/ô .ñ Ð!Ð*=ÐFYØ[õ]ô˜ô ñ
 �Ð);ÀOØTõVô ô ñ Ð)Ð2LÐUdð6õ7ô+˜&ô +ô ˜)ô  ñ Ð!Ð*=ÐFYðkõlô
+˜ô +ô˜ô ñ �Ð);ÐDVðSõTô
˜6ô ô˜6ô ñ Ð"Ð+?ÐH\ðqõrô
 ô ô.˜Vô .ô2&Ð1°9ô &ñ: �Ð(BÐK_ØLõNô˜ô ô(�6ô (ñ< �Ð);ÀLØdõfô ô ô
 ô ñ Ð(Ð1JÐSlðOõPô
˜&ô ô˜&ô ñ Ð!Ð*=ÐFYØjõlô/˜fô /ô(˜fô (ñ Ð%Ð.EÐNeðZõ[ô
"˜&ô "ô˜&ô ñ Ð!Ð*=ÐFYðTõUô	˜Fô 	ô˜fô ô
$˜Fô $ñ Ð#Ð,AÐJ_ØZõ\ô˜6ô ô˜6ô ñ
 Ð"Ð+?ÐH\Øeõgñ
 �Ð(9ÐBSðfõgô�Fô ô�vô ñ
 � }Ð=MØTõVô,�yô ,ñ �¨Ð>NØ]õ_ô˜&ô ñ
 �Ð':ÐCSØSõUô�vô ñ �Ð':ÐCSØ]õ_ô�fô ô�fô ñ
 � o¸oØ`õbô�vô ô�ô ñ
 �Ð'7Ð@PØ\õ^ô	˜ô 	ôÐ,ô ô	�iô 	ñ Ð"Ð+?ÈØNõPá �Ð(9À/Ø\õ^ô"Ð+ô "ôc˜)ô cñ Ð!Ð*=ÐFYØVõXô :ô ô
 �Yô 
 ñ Ð+Ð4PÐYgØhõjô Zô ô
˜.ô ñ Ð-Ð6TØ+Ð1hõjô˜*ô ô˜&ô ñ
 Ð!Ð*=ÐFYØ\õ^÷
 8Ñ 7r   