feat(gateway): sign in with a Nous account from a chat (/login), one shared sign-in flow (#105261)

* refactor(auth): one sign-in flow behind SignInState, rendered by the CLI and the desktop

* feat(gateway): /signin signs the free tier into a Nous account from a DM

* feat(cli): chat surfaces name /signin as the sign-in verb

* fix(auth): review follow-ups for the shared sign-in flow and /signin

* fix(i18n): carry the /status free-tier line in every locale catalog

* refactor(cli): the chat sign-in command is /login

* fix(auth): durable override cleanup in the /login sweep, and the sign-in flow in its own modules
This commit is contained in:
Siddharth Balyan
2026-09-11 03:45:33 +05:30
committed by GitHub
parent 3b01b4ce0f
commit cbcf7b72f7
56 changed files with 2903 additions and 242 deletions
+1 -1
View File
@@ -1227,7 +1227,7 @@ def _route_from_model_input(st: _Switch) -> Optional[ModelSwitchResult]:
if route_is_welcome_host(st.current_base_url) and st.new_model != GUEST_MODEL:
return st.fail(
f"{st.new_model} needs a Nous account or an API key. "
"Run `hermes auth upgrade` to sign in, or `hermes model` to pick another provider.")
"Use /login to sign in, or /model to pick another provider.")
config_routed = _route_configured_provider(st) # d.5 — deliberately NOT gated on ``not is_custom``
if isinstance(config_routed, ModelSwitchResult):
return config_routed