+
    lHàjU  ã                  ó0	  € R t ^ RIH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 ^RIHt ^RIH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        ! 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/ R0]
4      t# ! R1 R2]4      t$ ! R3 R4]
4      t%]! R5]$]%R6R7        ! R7 R8]4      t& ! R9 R:]
4      t' ! R; R<]
4      t(]! R=]&](R>R7        ! R? R@]4      t) ! RA RB]
4      t* ! RC RD]*4      t+ ! RE RF]*4      t, ! RG RH]
4      t- ! RI RJ]
4      t.]! RK])].RLR7        ! RM RN]4      t/ ! RO RP]
4      t0 ! RQ RR]
4      t1 ! RS RT]
4      t2]! RU]/]2RVR7        ! RW RX]4      t3 ! RY RZ]
4      t4]! R[]3]4R\R7        ! R] R^]4      t5 ! R_ R`]
4      t6]! Ra]5]6RbR7        ! Rc Rd]	4      t7 ! Re Rf]
4      t8]! Rg]7]8RhR7        ! Ri Rj]	4      t9]! Rk]9]8RlR7        ! Rm Rn]4      t: ! Ro Rp]	4      t; ! Rq Rr]
4      t<]! Rs];]<RtR7        ! Ru Rv]4      t= ! Rw Rx]
4      t>]! Ry]=]>RzR7        ! R{ R|]4      t? ! R} R~]
4      t@ ! R R€]
4      tA]! R�]]AR‚R7        ! Rƒ R„]
4      tB ! R… R†]
4      tC]! R‡]]CRˆR7        ! R‰ RŠ]4      tD ! R‹ RŒ]
4      tE]! R�]D]ERŽR7        ! R� R�]4      tF ! R‘ R’]
4      tG]! R“]F]GR”R7        ! R• R–]4      tH ! R— R˜]
4      tI]! R™]H]IRšR7        ! R› Rœ]4      tJ ! R� Rž]
4      tK]! RŸ]J]KR R7        ! R¡ R¢]4      tL ! R£ R¤]
4      tM]! R¥]L]MR¦R7        ! R§ R¨]4      tN ! 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·]S]TR¸R7        ! R¹ Rº]
4      tU]! R»]S]UR¼R7        ! R½ R¾]
4      tV ! R¿ RÀ]
4      tW ! RÁ RÂ]
4      tX]! RÃ]]XRÄR7        ! RÅ RÆ]4      tY ! RÇ RÈ]
4      tZ]! RÉ]Y]ZRÊR7        ! RË RÌ]
4      t[]! RÍ]Y][RÎR7       RÏ# )Ðuþ  Contracts for ``methods_profiles``, ``methods_vault``, ``methods_complete``,
``methods_session_foreign`` and ``methods_subagents``.

Profiles are the ws twin of the dashboard's ``/api/profiles``; the vault handlers are the
Desktop's Settings â†’ Credential Vault door (metadata only â€” a secret never appears in a result);
completions feed the composer popovers; ``session.foreign.*`` browses Claude Code / Codex
histories on the serving backend; ``subagent.*`` is the session-scoped roster of live children.
)Úannotations)ÚLiteral)ÚField)Ú	JsonValueÚParamsÚResultÚWireEnum)Ú	OpenModelÚProfileParamsÚSessionParamsÚSubagentStatus)ÚModelOptionProvider)Úmethodc                  óP   € ] tR t^t$ RtR]R&   RtR]R&   RtR]R&   RtR]R	&   R
t	R# )ÚCompletionItemzMOne popover row; ``kind`` rides only on slash completions (command vs skill).ÚstrÚtextÚ ÚdisplayÚmetaNú
str | NoneÚkind© )
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__annotations__r   r   r   Ú__static_attributes__r   ó    Úd/home/ubuntu/.hermes/hermes-agent/tui_gateway/contracts/profiles_vault_complete_foreign_subagents.pyr   r      s'   ‡ ÙWà
ƒIØ€GˆSÓØ€Dˆ#ƒNØ€Dˆ*×r    r   c                  ó4   € ] tR t^!t$ ]! ]R7      tR]R&   RtR# )ÚCompletionItemsResult©Údefault_factoryúlist[CompletionItem]Úitemsr   N©	r   r   r   r   r   Úlistr'   r   r   r   r    r!   r#   r#   !   s   ‡ Ù"'¸Ô"=€EÐ×=r    r#   c                  óF   € ] tR t^%t$ RtRtR]R&   RtR]R&   RtR]R&   Rt	R# )ÚCompletePathParamsz”``word`` is the token under the cursor (``@`` prefix = context reference); ``cwd`` /
``session_id`` pick the directory the listing resolves against.Nr   ÚwordÚcwdÚ
session_idr   )
r   r   r   r   r   r,   r   r-   r.   r   r   r    r!   r+   r+   %   s(   ‡ ñGð €Dˆ*ÓØ€CˆÓØ!€J�
×!r    r+   zcomplete.pathz]Path / @-reference completions for the composer (files, folders, profiles, plugin providers).)ÚparamsÚresultÚdocc                  óF   € ] tR t^2t$ RtRtR]R&   RtR]R&   RtR]R&   Rt	R# )ÚCompleteSlashParamszž``session_id`` binds skill completions to that session's profile and workspace (project skills);
``profile`` scopes a session-less request (a new-chat draft).Nr   r   r.   Úprofiler   )
r   r   r   r   r   r   r   r.   r4   r   r   r    r!   r3   r3   2   s(   ‡ ñEð €Dˆ*ÓØ!€J�
Ó!Ø€GˆZ×r    r3   c                  óF   € ] tR t^;t$ Rt]! ]R7      tR]R&   Rt	R]R&   Rt
R# )	ÚCompleteSlashResultz?``replace_from`` is the column the accepted item replaces from.r$   r&   r'   Nú
int | NoneÚreplace_fromr   )r   r   r   r   r   r   r)   r'   r   r8   r   r   r    r!   r6   r6   ;   s   ‡ ÙIá"'¸Ô"=€EÐÓ=Ø#€L�*×#r    r6   zcomplete.slashz;Ranked slash-command / skill completions for a ``/`` token.c                  ó&   € ] tR t^Ft$ RtR]R&   RtR# )ÚPasteCollapseParamsNr   r   r   )r   r   r   r   r   r   r   r   r    r!   r:   r:   F   ó   ‡ Ø€Dˆ*×r    r:   c                  ó6   € ] tR t^Jt$ R]R&   R]R&   R]R&   RtR# )ÚPasteCollapseResultr   ÚplaceholderÚpathÚintÚlinesr   N©r   r   r   r   r   r   r   r    r!   r=   r=   J   s   ‡ ØÓØ
ƒIØ‡Jr    r=   zpaste.collapsezCSpill a large paste to a file and hand back the inline placeholder.c                  ó:   € ] tR t^Tt$ R]R&   R]R&   RtR]R&   RtR# )ÚModelSaveKeyParamsr   ÚslugÚapi_keyNr   r.   r   ©r   r   r   r   r   r.   r   r   r    r!   rD   rD   T   s   ‡ Ø
ƒIØƒLØ!€J�
×!r    rD   c                  ó"   € ] tR t^Zt$ R]R&   RtR# )ÚModelSaveKeyResultr   Úproviderr   NrB   r   r    r!   rI   rI   Z   s   ‡ Ø!×!r    rI   zmodel.save_keyzFSave an API key for a provider and return its refreshed inventory row.c                  ó0   € ] tR t^bt$ R]R&   RtR]R&   RtR# )ÚModelDisconnectParamsr   rE   Nr   r.   r   rG   r   r    r!   rL   rL   b   s   ‡ Ø
ƒIØ!€J�
×!r    rL   c                  ó6   € ] tR t^gt$ R]R&   R]R&   R]R&   RtR# )ÚModelDisconnectResultr   rE   ÚnameÚboolÚdisconnectedr   NrB   r   r    r!   rN   rN   g   s   ‡ Ø
ƒIØ
ƒIØ×r    rN   zmodel.disconnectzBRemove every credential (env keys and OAuth state) for a provider.c                  óz   € ] tR t^tt$ RtR]R&   RtR]R&   RtR]R&   ^ tR]R&   ^ t	R]R	&   ^ t
R
]R&   RtR]R&   RtR# )ÚProfileSessionPreviewzLNewest human-facing session of a profile (``_latest_profile_session_rows``).r   Úidr   ÚtitleÚpreviewúfloat | intÚ
started_atÚlast_activer@   Úmessage_countNr7   Úlive_message_countr   )r   r   r   r   r   r   rU   rV   rX   rY   rZ   r[   r   r   r    r!   rS   rS   t   sF   ‡ ÙVàƒGØ€Eˆ3ƒOØ€GˆSÓØ€J�ÓØ €K�Ó Ø€M�3ÓØ%)Ð˜
×)r    rS   c                  óP   € ] tR t^€t$ RtR]R&   RtR]R&   RtR]R&   ^ tR]R&   R	t	R
# )ÚProfileWorkerSessionzHNewest kanban/tool worker row, so rosters can show a profile as working.r   rT   r   ÚsourcerU   rW   rY   r   N)
r   r   r   r   r   r   r^   rU   rY   r   r   r    r!   r]   r]   €   s'   ‡ ÙRàƒGØ€FˆCÓØ€Eˆ3ƒOØ €K�× r    r]   c                  ó’   € ] tR t^‰t$ RtR]R&   R]R&   RtR]R&   RtR]R&   RtR]R&   ^ t	R	]R
&   ^ t
R	]R&   ^ tR]R&   RtR]R&   RtR# )ÚProfileCanonicalSessionzSThe profile's "Bot Chat" registry row; ``resolved_id`` is the live compression tip.r   rT   Úresolved_idr   Ú
root_titlerU   rV   rW   rX   rY   r@   rZ   Nr7   r[   r   )r   r   r   r   r   r   rb   rU   rV   rX   rY   rZ   r[   r   r   r    r!   r`   r`   ‰   sV   ‡ Ù]àƒGØÓØ€J�ÓØ€Eˆ3ƒOØ€GˆSÓØ€J�ÓØ €K�Ó Ø€M�3ÓØ%)Ð˜
×)r    r`   c                  ó  € ] tR t^—t$ RtR]R&   R]R&   RtR]R&   RtR	]R
&   RtR	]R&   Rt	R]R&   Rt
R]R&   ^ tR]R&   ]! ]R7      tR]R&   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# ) Ú
ProfileRowzNOne roster row; the session fields are present only with ``include_sessions``.r   rO   r?   FrP   Ú
is_defaultNr   ÚmodelrJ   r   ÚdescriptionÚdisplay_namer@   Úskill_countr$   z	list[str]Úprevious_nameszProfileSessionPreview | NoneÚlast_sessionzProfileWorkerSession | NoneÚworker_sessionzProfileCanonicalSession | NoneÚcanonical_sessionzdict[str, int]Úui_meta_revisionsúdict[str, JsonValue] | NoneÚui_metaÚ
has_avatarr   )r   r   r   r   r   r   re   rf   rJ   rg   rh   ri   r   r)   rj   rk   rl   rm   Údictrn   rp   rq   r   r   r    r!   rd   rd   —   s¡   ‡ ÙXà
ƒIØ
ƒIØ€J�ÓØ€Eˆ:ÓØ€HˆjÓØ€K�ÓØ€L�#ÓØ€K�ÓÙ %°dÔ ;€N�IÓ;Ø15€LÐ.Ó5Ø26€NÐ/Ó6Ø8<ÐÐ5Ó<Ù(-¸dÔ(CÐ�~ÓCØ+/€GÐ(Ó/Ø€J�×r    rd   c                  ó&   € ] tR t^«t$ RtR]R&   RtR# )ÚProfilesListParamsNúbool | str | NoneÚinclude_sessionsr   )r   r   r   r   rv   r   r   r   r    r!   rt   rt   «   s   ‡ Ø*.ÐÐ'×.r    rt   c                  óT   € ] tR t^¯t$ Rt]! ]R7      tR]R&   Rt	R]R&   Rt
R	]R
&   RtR# )ÚProfilesListResultzž``bot_mode_protocol`` tells clients this backend injects the teammate protocol itself;
``install_id`` (as on ``/api/status``) names the machine that answered.r$   zlist[ProfileRow]ÚprofilesTrP   Úbot_mode_protocolr   r   Ú
install_idr   N)r   r   r   r   r   r   r)   ry   r   rz   r{   r   r   r    r!   rx   rx   ¯   s/   ‡ ñOñ "'°tÔ!<€HÐÓ<Ø"Ð�tÓ"Ø€J�×r    rx   zprofiles.listzNRoster of profiles with previews so a client paints without N follow-up calls.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# )ÚProfilesCreateParamsz}``clone_from`` omitted = fresh profile + bundled skills; ``mirror_credentials`` defaults on
so a headless bot has a provider.r   rO   Nr   rg   Ú
clone_fromru   Ú	clone_allÚclone_channelsÚ	no_skillsÚno_aliasÚsoulrf   rJ   Ú
share_authÚmirror_credentialsr   )r   r   r   r   r   r   rg   r~   r   r€   r�   r‚   rƒ   rf   rJ   r„   r…   r   r   r    r!   r}   r}   ¼   sƒ   ‡ ñ)ð ƒIØ"€K�Ó"Ø!€J�
Ó!Ø#'€IÐ Ó'Ø(,€NÐ%Ó,Ø#'€IÐ Ó'Ø"&€HÐÓ&Ø€Dˆ*ÓØ€Eˆ:ÓØ€HˆjÓØ$(€JÐ!Ó(Ø,0ÐÐ)×0r    r}   c                  óT   € ] 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
# )ÚProfileMirroredzWWhat was copied from the launch profile; ``auth`` is ``"shared"`` under ``share_auth``.FrP   Úenvzbool | Literal['shared']ÚauthÚmodel_inheritedÚvoicer   N)r   r   r   r   r   rˆ   r   r‰   rŠ   r‹   r   r   r    r!   r‡   r‡   Î   s.   ‡ Ùaà€CˆÓØ%*€DÐ
"Ó*Ø!€O�TÓ!Ø€Eˆ4×r    r‡   c                  ó`   € ] tR t^×t$ RtR]R&   R]R&   R]R&   RtR]R&   RtR]R	&   R
]R&   RtR# )ÚProfilesCreateResultTrP   Úokr   rO   r?   FÚsoul_writtenÚ	model_setr‡   Úmirroredr   N)	r   r   r   r   rŽ   r   r�   r�   r   r   r    r!   r�   r�   ×   s/   ‡ Ø€BˆƒOØ
ƒIØ
ƒIØ€L�$ÓØ€IˆtÓØ×r    r�   zprofiles.createzZCreate a profile (ws twin of POST /api/profiles), mirroring launch credentials by default.c                  ó&   € ] tR t^ät$ RtR]R&   RtR# )ÚProfileNameParamsNr   rO   r   ©r   r   r   r   rO   r   r   r   r    r!   r“   r“   ä   r;   r    r“   c                  ó0   € ] tR t^èt$ R]R&   RtR]R&   RtR# )ÚCapabilityEntryr   rO   TrP   Úenabledr   N)r   r   r   r   r   r—   r   r   r    r!   r–   r–   è   s   ‡ Ø
ƒIØ€GˆT×r    r–   c                  óB   € ] tR t^ít$ RtR]R&   RtR]R&   ^ tR]R&   RtR# )	ÚToolsetEntryr   r   Úlabelrg   r@   Ú
tool_countr   N)	r   r   r   r   rš   r   rg   r›   r   r   r    r!   r™   r™   í   s   ‡ Ø€Eˆ3ƒOØ€K�ÓØ€J�×r    r™   c                  ó&   € ] tR t^ót$ RtR]R&   RtR# )ÚMcpServerEntryÚstdior   Ú	transportr   N)r   r   r   r   rŸ   r   r   r   r    r!   r�   r�   ó   s   ‡ Ø€Iˆs×r    r�   c                  ó4   € ] tR t^÷t$ RtR]R&   RtR]R&   RtR# )ÚProfileModelPinr   r   rJ   Údefaultr   N)r   r   r   r   rJ   r   r¢   r   r   r    r!   r¡   r¡   ÷   s   ‡ Ø€HˆcÓØ€GˆS×r    r¡   c                  ó®   € ] tR t^üt$ RtR]R&   RtR]R&   RtR]R&   R]R&   ]! ]	R	7      t
R
]R&   ]! ]	R	7      tR]R&   RtR]R&   ]! ]	R	7      tR]R&   RtR# )ÚProfilesDescribeResultzYEditor snapshot; ``toolsets_pinned`` says whether ``tools.enabled_toolsets`` is explicit.r   rO   r   rg   rƒ   r¡   rf   r$   zlist[CapabilityEntry]Úskillszlist[ToolsetEntry]ÚtoolsetsFrP   Útoolsets_pinnedzlist[McpServerEntry]Úmcp_serversr   N)r   r   r   r   r   r   rg   rƒ   r   r)   r¥   r¦   r§   r¨   r   r   r    r!   r¤   r¤   ü   s]   ‡ Ùcà
ƒIØ€K�ÓØ€Dˆ#ƒNØÓÙ$)¸$Ô$?€FÐ!Ó?Ù#(¸Ô#>€HÐ Ó>Ø!€O�TÓ!Ù(-¸dÔ(C€KÐ%×Cr    r¤   zprofiles.describezTEverything the profile editor shows: soul, model pin, skills, toolsets, MCP servers.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# )ÚProfilesConfigureParamsi  zWSections are independent; ``ui_meta_expected_revisions`` is a per-key compare-and-swap.Nr   rO   ro   rp   údict[str, int] | NoneÚui_meta_expected_revisionsrƒ   rg   rf   rJ   ru   Úconfirm_expensive_modelzlist[str] | NoneÚdisabled_skillsÚenabled_toolsetsÚenabled_mcp_serversr   )r   r   r   r   r   rO   r   rp   r¬   rƒ   rg   rf   rJ   r­   r®   r¯   r°   r   r   r    r!   rª   rª     s}   ‡ Ùaà€Dˆ*ÓØ+/€GÐ(Ó/Ø8<ÐÐ 5Ó<Ø€Dˆ*ÓØ"€K�Ó"Ø€Eˆ:ÓØ€HˆjÓØ15ÐÐ.Ó5Ø(,€OÐ%Ó,Ø)-ÐÐ&Ó-Ø,0ÐÐ)×0r    rª   c                  ó4   € ] tR tRt$ RtR]R&   ^ tR]R&   RtR# )ÚUiMetaConflicti  Nr   Úexpectedr@   Úactualr   )r   r   r   r   r³   r   r´   r   r   r    r!   r²   r²     s   ‡ Ø€HˆiÓØ€FˆC‡Or    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# )ÚProfilesConfigureAppliedi"  zGPer-section outcome; only the sections the request carried are present.Núbool | Nonerp   r«   rn   z dict[str, UiMetaConflict] | NoneÚui_meta_conflictsrƒ   rg   rf   r¥   r¦   r¨   r   )r   r   r   r   r   rp   r   rn   r¸   rƒ   rg   rf   r¥   r¦   r¨   r   r   r    r!   r¶   r¶   "  sc   ‡ ÙQà€Gˆ[ÓØ/3ÐÐ,Ó3Ø:>ÐÐ7Ó>Ø€Dˆ+ÓØ#€K�Ó#Ø€Eˆ;ÓØ€FˆKÓØ €HˆkÓ Ø#€K�×#r    r¶   c                  óL   € ] tR tRt$ RtR]R&   R]R&   RtR]R	&   RtR
]R&   RtR# )ÚProfilesConfigureResulti0  zT``confirm_required`` mirrors ``config.set``: a guarded model pick wrote nothing yet.rP   rŽ   r¶   ÚappliedNr·   Úconfirm_requiredr   Úconfirm_messager   )	r   r   r   r   r   r   r¼   r½   r   r   r    r!   rº   rº   0  s%   ‡ Ù^àƒHØ%Ó%Ø$(Ð�kÓ(Ø"&€O�Z×&r    rº   zprofiles.configurezJEditor Save: apply any subset of a profile's sections and report each one.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# )ÚProfilesSetAssetParamsi=  zZ``data`` is a data URL or bare base64 (PNG/JPEG/WebP, sniffed); ``clear`` deletes instead.Nr   rO   ÚassetÚdataru   Úclearr   )r   r   r   r   r   rO   r   rÀ   rÁ   rÂ   r   r   r    r!   r¿   r¿   =  s.   ‡ Ùdà€Dˆ*ÓØ€Eˆ:ÓØ€Dˆ*ÓØ#€EÐ×#r    r¿   c                  óL   € ] tR tRt$ RtR]R&   R]R&   ^ tR]R&   R	tR
]R&   RtR	# )ÚProfilesSetAssetResultiF  TrP   rŽ   r   rÀ   r@   ÚsizeNr7   Úremovedr   )	r   r   r   r   rŽ   r   rÅ   rÆ   r   r   r    r!   rÄ   rÄ   F  s#   ‡ Ø€BˆƒOØƒJØ€Dˆ#ƒMØ€GˆZ×r    rÄ   zprofiles.set_assetz3Store or clear a profile asset (avatar) atomically.c                  ó4   € ] tR tRt$ RtR]R&   RtR]R&   RtR# )ÚProfilesGetAssetParamsiQ  Nr   rO   rÀ   r   )r   r   r   r   rO   r   rÀ   r   r   r    r!   rÈ   rÈ   Q  s   ‡ Ø€Dˆ*ÓØ€Eˆ:×r    rÈ   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# )ÚProfilesGetAssetResultiV  z)Absent is ``found: false``, not an error.rP   ÚfoundNr   Úmimer7   rÅ   rÁ   r   )
r   r   r   r   r   r   rÌ   rÅ   rÁ   r   r   r    r!   rÊ   rÊ   V  s(   ‡ Ù3àƒKØ€Dˆ*ÓØ€Dˆ*ÓØ€Dˆ*×r    rÊ   zprofiles.get_assetzA profile asset as a data URL.c                  ó*   € ] tR tRt$ RtRtR]R&   RtR# )ÚOnboardingStateParamsif  z¤``assume_fresh``: the unpackaged desktop's ``--fresh-install`` launch; the backend treats this
machine as one that never used Hermes. Packaged builds never send it.FrP   Úassume_freshr   N)r   r   r   r   r   rÏ   r   r   r   r    r!   rÎ   rÎ   f  s   ‡ ñMð €L�$×r    rÎ   c                  óL   € ] tR tRt$ RtR]R&   R]R&   RtR]R&   RtR]R	&   R
tR# )ÚOnboardingRunStateResultim  a‹  ``run``: onboarding opens on this launch (root config ``onboarding.run``, else a machine that
never used Hermes). ``eligible``: this is the desktop's local backend and the welcome trial or a
configured provider can carry the first chat.
``session_id``: the stored id of the onboarding chat still in progress, so a relaunch reopens it;
``run_id``: that run's id, which ``onboarding.ended`` names.rP   ÚrunÚeligibleNr   r.   Úrun_idr   )	r   r   r   r   r   r   r.   rÔ   r   r   r    r!   rÑ   rÑ   m  s(   ‡ ñDð 
ƒIØƒNØ!€J�
Ó!Ø€FˆJ×r    rÑ   zonboarding.statezgWhether desktop first-run onboarding is due, and the chat in progress; reads the root profile's config.c                  ó4   € ] tR tRt$ RtR]R&   RtR]R&   RtR# )	ÚOnboardingSetRunParamsi~  z¹``mark_profile_offered`` also latches ``onboarding.seen.profile_build_offered`` in the root config,
so the first chat after onboarding gets the plain intro instead of the profile offer.rP   rÒ   FÚmark_profile_offeredr   N)r   r   r   r   r   r   r×   r   r   r    r!   rÖ   rÖ   ~  s   ‡ ñ]ð 
ƒIØ!&Ð˜$×&r    rÖ   zonboarding.set_runzNWrite onboarding.run in the root profile's config.yaml; answers the new state.c                  ó   € ] tR tRtRtRtRtR# )ÚOnboardingFactsSourceiŠ  ÚlocalÚremoter   N)r   r   r   r   rÚ   rÛ   r   r   r    r!   rÙ   rÙ   Š  s   † Ø€EØ„Fr    rÙ   c                  óv   € ] tR tRt$ RtRtR]R&   RtR]R&   RtR]R&   ]	P                  tR]R	&   R
tR]R&   RtR
# )ÚOnboardingStartParamsi�  aã  ``rerun``: start a new onboarding chat even when one is in progress (Settings, Run onboarding
again; it never claims the welcome trial). ``fresh_launch``: the app's once-per-launch start; a run
the app was closed on does not count, so its chat is deleted and the run starts over.
``facts_source``: whether the backend runs on the user's own computer. ``locale``: the desktop's UI
language, preferred over the backend OS locale. ``assume_fresh``: as on ``onboarding.state``. A new
run on a first install claims the welcome trial before its chat exists; a failed claim is error
5079 and leaves no guest and no chat. A claim that is blocked (another install took the trial) with
no trial or provider to run on is error 5080 and opens no chat.FrP   ÚrerunÚfresh_launchrÏ   rÙ   Úfacts_sourceNr   Úlocaler   )r   r   r   r   r   rÞ   r   rß   rÏ   rÙ   rÚ   rà   rá   r   r   r    r!   rÝ   rÝ   �  sC   ‡ ñGð €Eˆ4ÓØ€L�$ÓØ€L�$ÓØ*?×*EÑ*E€LÐ'ÓEØ€FˆJ×r    rÝ   c                  óD   € ] tR tRt$ RtR]R&   R]R&   R]R&   R]R&   R	tR
# )ÚOnboardingStartResulti   zÕ``session_id`` is the runtime id the client attaches to; ``resumed`` is true when an onboarding
chat already in progress was reopened instead of a new one started. ``run_id`` names the run in
``onboarding.ended``.r   r.   Ústored_session_idrP   ÚresumedrÔ   r   N)r   r   r   r   r   r   r   r   r    r!   rã   rã      s   ‡ ñð ƒOØÓØƒMØ‡Kr    rã   zonboarding.startzfOpen the onboarding chat in the default profile: create it, write its run record and play the opening.c                  ó   € ] tR tRtRtR# )ÚOnboardingSkipParamsi¯  r   N)r   r   r   r   r   r   r    r!   rç   rç   ¯  s   † Ûr    rç   c                  ó"   € ] tR tRt$ R]R&   RtR# )ÚOnboardingSkipResulti³  rP   Úskippedr   NrB   r   r    r!   ré   ré   ³  ó   ‡ Ø‡Mr    ré   zonboarding.skipzKSkip setup: end the session's onboarding run and close the card that waits.c                  ó"   € ] tR tRtRtRtRtRtR# )Ú	VaultKindi¾  ÚloginÚpaymentÚaddressr   N)r   r   r   r   rî   rï   rð   r   r   r    r!   rí   rí   ¾  s   † Ø€EØ€GØ„Gr    rí   c                  óŠ   € ] tR tRt$ Rt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]R&   RtR# )Ú	VaultItemiÄ  zMMetadata-only view (``VaultItemMeta.to_dict`` + ``backend``); never a secret.r   rT   r   rš   Nr   Úoriginr   Ú
created_atÚ
identifierÚidentifier_typer·   Úhas_otpÚbackendr   )r   r   r   r   r   r   ró   rô   rõ   rö   r÷   r   r   r    r!   rò   rò   Ä  sK   ‡ ÙWàƒGØ
ƒIØƒJØ€FˆJÓØ€J�ÓØ!€J�
Ó!Ø"&€O�ZÓ&Ø€Gˆ[ÓØ‡Lr    rò   c                  ó4   € ] tR tRt$ ]! ]R7      tR]R&   RtR# )ÚVaultListResultiÒ  r$   zlist[VaultItem]r'   r   Nr(   r   r    r!   rú   rú   Ò  s   ‡ Ù"°4Ô8€Eˆ?×8r    rú   z
vault.listzQMetadata-only listing across the local vault and every unlocked password manager.c                  óT   € ] tR tRt$ R]R&   R]R&   R]R&   R]R&   R]R&   R]R	&   R
tR# )ÚVaultSourceiÚ  r   rO   rh   rP   r—   Úneeds_unlockÚunlockedÚ	installedr   NrB   r   r    r!   rü   rü   Ú  s"   ‡ Ø
ƒIØÓØƒMØÓØƒNØ‡Or    rü   c                  ó4   € ] tR tRt$ ]! ]R7      tR]R&   RtR# )ÚVaultSourcesResultiã  r$   zlist[VaultSource]Úsourcesr   N)	r   r   r   r   r   r)   r  r   r   r   r    r!   r  r  ã  s   ‡ Ù!&°tÔ!<€GÐ×<r    r  zvault.sourceszHStatus of every login source (local vault + detected password managers).c                  ó4   € ] tR tRt$ RtR]R&   RtR]R&   RtR# )ÚVaultSourceSetParamsië  Nr   rO   r·   r—   r   )r   r   r   r   rO   r   r—   r   r   r    r!   r  r  ë  s   ‡ Ø€Dˆ*ÓØ€Gˆ[×r    r  c                  ó,   € ] tR tRt$ R]R&   R]R&   RtR# )ÚVaultSourceSetResultið  r   rO   rP   r—   r   NrB   r   r    r!   r  r  ð  s   ‡ Ø
ƒIØ‡Mr    r  zvault.source.setzIEnable or disable an external password manager (disabling also locks it).c                  ó8   € ] tR tRt$ RtRtR]R&   RtR]R&   RtR# )ÚVaultUnlockParamsiù  zNThe master password is consumed by the manager CLI and never stored or logged.Nr   rO   Úpasswordr   )	r   r   r   r   r   rO   r   r	  r   r   r    r!   r  r  ù  s   ‡ ÙXà€Dˆ*ÓØ€Hˆj×r    r  c                  ó0   € ] tR tRt$ R]R&   RtR]R&   RtR# )	ÚVaultUnlockResulti   r   rO   TrP   rþ   r   N)r   r   r   r   r   rþ   r   r   r    r!   r  r     s   ‡ Ø
ƒIØ€Hˆd×r    r  zvault.unlockzDUnlock a password manager for this session with its master password.c                  ó&   € ] tR tRt$ RtR]R&   RtR# )ÚVaultLockParamsi	  Nr   rO   r   r”   r   r    r!   r  r  	  r;   r    r  c                  ó&   € ] tR tRt$ RtR]R&   RtR# )ÚVaultLockResulti  TrP   Úlockedr   N)r   r   r   r   r  r   r   r   r    r!   r  r    s   ‡ Ø€FˆD×r    r  z
vault.lockzGForget a manager's session token (every manager when no name is given).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# )ÚVaultAddParamsi  zV``secret`` goes straight into the encrypted store; the result carries only the new id.NzVaultKind | Noner   r   rš   ró   ro   Úsecretr   )r   r   r   r   r   r   r   rš   ró   r  r   r   r    r!   r  r    s/   ‡ Ù`à!€DÐ
Ó!Ø€Eˆ:ÓØ€FˆJÓØ*.€FÐ'×.r    r  c                  ó"   € ] tR tRt$ R]R&   RtR# )ÚVaultAddResulti  r   rT   r   NrB   r   r    r!   r  r    s   ‡ Ø‡Gr    r  z	vault.addz8Add a login / payment / address item to the local vault.c                  ó&   € ] tR tRt$ RtR]R&   RtR# )ÚVaultRemoveParamsi&  Nr   rT   r   ©r   r   r   r   rT   r   r   r   r    r!   r  r  &  ó   ‡ Ø€Bˆ
×r    r  c                  ó"   € ] tR tRt$ R]R&   RtR# )ÚVaultRemoveResulti*  rP   rÆ   r   NrB   r   r    r!   r  r  *  rë   r    r  zvault.removez Remove a local vault item by id.c                  ó   € ] tR tRtRtRtRtR# )ÚForeignSourcei5  ÚclaudeÚcodexr   N)r   r   r   r   r  r  r   r   r    r!   r  r  5  s   † Ø€FØ„Er    r  c                  ó|   € ] tR tRt$ RtR]R&   R]R&   R]R&   RtR]R	&   R
tR]R&   R]R&   ^ tR]R&   Rt	R]R&   Rt
R
# )ÚForeignSessionRowi:  uo   ``hermes_cli/foreign_sessions_browser.py::list_foreign_sessions`` â€” ``id`` is an opaque
handle, never a path.r   rT   r  r^   rš   r   rU   Nr   r-   ÚfloatÚmtimer@   Ú
turn_countÚexcerptr   )r   r   r   r   r   r   rU   r-   r$  r%  r   r   r    r!   r!  r!  :  sE   ‡ ñð 	ƒGØÓØƒJØ€Eˆ3ƒOØ€CˆÓØƒLØ€J�ÓØ€GˆS×r    r!  c                  óB   € ] tR tRt$ RtR]R&   RtR]R&   RtR]R&   RtR# )	ÚSessionForeignListParamsiH  NzForeignSource | Noner^   r7   ÚoffsetÚlimitr   )	r   r   r   r   r^   r   r(  r)  r   r   r    r!   r'  r'  H  s!   ‡ Ø#'€FÐ Ó'Ø€FˆJÓØ€Eˆ:×r    r'  c                  ó^   € ] tR tRt$ Rt]! ]R7      tR]R&   Rt	R]R&   R	]R
&   ^ t
R]R&   RtR# )ÚSessionForeignListResultiN  z=``unreadable`` counts logs on this page that failed to parse.r$   zlist[ForeignSessionRow]ÚsessionsNr7   Únext_offsetr   Úhostr@   Ú
unreadabler   )r   r   r   r   r   r   r)   r,  r   r-  r/  r   r   r    r!   r+  r+  N  s.   ‡ ÙGá(-¸dÔ(C€HÐ%ÓCØ"€K�Ó"Ø
ƒIØ€J�×r    r+  zsession.foreign.listzFOne page of Claude Code / Codex sessions found on the serving backend.c                  ó,   € ] tR tRt$ R]R&   R]R&   RtR# )ÚForeignTurni[  r   ÚroleÚcontentr   NrB   r   r    r!   r1  r1  [  s   ‡ Ø
ƒIØ‡Lr    r1  c                  ó&   € ] tR tRt$ RtR]R&   RtR# )ÚSessionForeignIdParamsi`  Nr   rT   r   r  r   r    r!   r5  r5  `  r  r    r5  c                  óp   € ] tR tRt$ Rt]! ]R7      tR]R&   ^ t	R]R&   Rt
R	]R
&   RtR]R&   RtR]R&   RtR# )ÚSessionForeignPreviewResultid  zUBounded to the last 40 turns / 8000 chars each; ``already_imported`` is the local id.r$   zlist[ForeignTurn]Úmessagesr@   ÚtotalFrP   Ú	truncatedNr   Úalready_importedr-   r   )r   r   r   r   r   r   r)   r8  r   r9  r:  r;  r-   r   r   r    r!   r7  r7  d  s=   ‡ Ù_á"'¸Ô"=€HÐÓ=Ø€Eˆ3ƒNØ€IˆtÓØ#'Ð�jÓ'Ø€Cˆ×r    r7  zsession.foreign.previewz5Preview a foreign session's tail before importing it.c                  ó0   € ] tR tRt$ R]R&   RtR]R&   RtR# )	ÚSessionForeignImportResultir  r   r.   FrP   r;  r   N)r   r   r   r   r   r;  r   r   r    r!   r=  r=  r  s   ‡ ØƒOØ"Ð�d×"r    r=  zsession.foreign.importzMImport a foreign session into this profile's history (idempotent per origin).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# )ÚSubagentSnapshoti~  zT``methods_subagents._SUBAGENT_SNAPSHOT_FIELDS`` projection of one live child record.r   Úsubagent_idNr   Ú	parent_idr7   ÚdepthÚgoalÚdelegation_idrf   úfloat | NonerX   zSubagentStatus | NoneÚstatusr›   Ú	last_toolr·   Úaccepting_steerr   )r   r   r   r   r   r   rA  rB  rC  rD  rf   rX   rF  r›   rG  rH  r   r   r    r!   r?  r?  ~  sp   ‡ Ù^àÓØ €IˆzÓ Ø€Eˆ:ÓØ€Dˆ*ÓØ $€M�:Ó$Ø€Eˆ:ÓØ#€J�Ó#Ø$(€FÐ!Ó(Ø!€J�
Ó!Ø €IˆzÓ Ø#'€O�[×'r    r?  c                  óv   € ] tR tRt$ RtR]R&   ^ tR]R&   R]R&   RtR]R	&   R
tR]R&   R
t	R]R&   R
t
R]R&   RtR
# )ÚFailedDelegationiŽ  z```async_delegation.failed_delegations_for_session`` row: one failed task of an async delegation.r   rD  r@   Ú
task_indexrF  r   rC  Nr   ÚerrorrE  Údispatched_atÚcompleted_atr   )r   r   r   r   r   r   rK  rC  rL  rM  rN  r   r   r    r!   rJ  rJ  Ž  sA   ‡ ÙjàÓØ€J�ÓØƒKØ€Dˆ#ƒNØ€Eˆ:ÓØ"&€M�<Ó&Ø!%€L�,×%r    rJ  c                  óT   € ] tR tRt$ Rt]! ]R7      tR]R&   ]! ]R7      t	R]R&   Rt
R	# )
ÚSubagentListResultiš  zf``delegations``: recently failed async delegation tasks for the session (durable store), newest first.r$   zlist[SubagentSnapshot]Ú	subagentszlist[FailedDelegation]Údelegationsr   N)r   r   r   r   r   r   r)   rQ  r   rR  r   r   r    r!   rP  rP  š  s%   ‡ Ùpá(-¸dÔ(C€IÐ%ÓCÙ*/ÀÔ*E€KÐ'×Er    rP  zsubagent.listzJLive children owned by this session (other sessions' children never leak).c                  ó"   € ] tR tRt$ R]R&   RtR# )ÚSubagentIdParamsi¥  r   r@  r   NrB   r   r    r!   rT  rT  ¥  s   ‡ Ø×r    rT  c                  ó,   € ] tR tRt$ R]R&   R]R&   RtR# )ÚSubagentInterruptResulti©  rP   rË   r   r@  r   NrB   r   r    r!   rV  rV  ©  s   ‡ ØƒKØ×r    rV  zsubagent.interruptzLHard-interrupt one owned child; ``found`` is false when it already finished.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# )ÚSubagentTailResulti²  zY``available`` is false while the child has no live transcript yet (or it was cleaned up).r   r@  FrP   Ú	availabler   r   r:  r   N)
r   r   r   r   r   r   rY  r   r:  r   r   r    r!   rX  rX  ²  s(   ‡ ÙcàÓØ€IˆtÓØ€Dˆ#ƒNØ€Iˆt×r    rX  zsubagent.tailz.Last 16KB of an owned child's live transcript.N)\r   Ú
__future__r   Útypingr   Úpydanticr   Úbaser   r   r   r   Úcommonr	   r
   r   r   Úconfig_free_tier_controlr   Úregistryr   r   r#   r+   r3   r6   r:   r=   rD   rI   rL   rN   rS   r]   r`   rd   rt   rx   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+  r1  r5  r7  r=  r?  rJ  rP  rT  rV  rX  r   r    r!   Ú<module>ra     sî  ðñõ #å å ç 5Ó 5ß KÓ KÝ 9Ý ô
�Vô ô>˜Fô >ô"˜ô "ñ €Ð1Ð:OØjõlô˜&ô ô$˜&ô $ñ ÐÐ 3Ð<OØHõJô˜&ô ô˜&ô ñ ÐÐ 3Ð<OØPõRô"˜ô "ô"˜ô "ñ ÐÐ 2Ð;MØSõUô"˜Fô "ô
˜Fô ñ ÐÐ"7Ð@UØOõQô	*˜Fô 	*ô!˜6ô !ô*˜fô *ô�ô ô(/˜ô /ô˜ô ñ €Ð1Ð:LØ[õ]ô1˜=ô 1ô$�fô ô˜6ô ñ ÐÐ!5Ð>RØgõiô˜ô ô�fô ô
�?ô ô�_ô ô�fô ô

D˜Vô 
Dñ ÐÐ#4Ð=SØaõcô1˜mô 1ô �Vô ô
$˜vô $ô'˜fô 'ñ ÐÐ$;ÐD[ØWõYô$˜]ô $ô˜Vô ñ ÐÐ$:ÐCYØ@õBô˜]ô ô
˜Vô ñ ÐÐ$:ÐCYØ+õ-ô˜Fô ô
˜vô 
ñ ÐÐ"7Ð@XØtõvô'˜Vô 'ñ ÐÐ$:ÐC[Ø[õ]ô˜Hô ô
˜Fô ô"˜Fô ñ ÐÐ"7Ð@UØsõuô	˜=ô 	ô˜6ô ñ ÐÐ!5Ð>RØXõZô�ô ô�ô ô9�fô 9ñ €|˜M°/Ø^õ`ô�&ô ô=˜ô =ñ €˜}Ð5GØUõWô ˜=ô  ô
˜6ô ñ
 ÐÐ"6Ð?SØVõXô ˜ô  ô˜ô ñ
 €~Ð/Ð8IØQõSô�mô ô�fô ñ €|˜O°OØTõVô/�]ô /ô�Vô ñ €{˜>°.ØEõGô˜ô ô˜ô ñ €~Ð/Ð8IØ-õ/ô�Hô ô
˜ô ô˜}ô ô˜vô ñ ÐÐ&>ÐG_ØSõUô�&ô ô
˜]ô ô &ô ñ Ð Ð)?ÐHcØBõDô# ô #ñ
 ÐÐ(>ÐGaØZõ\ô(�vô (ô 	&�vô 	&ôF˜ô Fñ €˜}Ð5GØWõYô�}ô ô˜fô ñ
 ÐÐ$4Ð=TØYõ[ô˜ô ñ €Ð/Ð8JØ;÷=r    