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:
@@ -341,6 +341,7 @@ Future messages in this room will use that transcript until `/reset` or another
|
||||
last_activity: "**Laaste aktiwiteit:** {timestamp}"
|
||||
model: "**Model:** `{model}`"
|
||||
model_provider: "**Model:** `{model}` ({provider})"
|
||||
free_tier: "Nous · gratis vlak · nous/welcome · /login om aan te meld"
|
||||
context: "**Context:** {used} / {total} ({pct}%)"
|
||||
context_used: "**Context:** ~{used} tokens"
|
||||
tokens: "**Lifetime tokens billed:** {tokens} _(not your current context size; use `/context`)_"
|
||||
|
||||
@@ -343,6 +343,7 @@ gateway:
|
||||
last_activity: "**آخر نشاط:** {timestamp}"
|
||||
model: "**النموذج:** `{model}`"
|
||||
model_provider: "**النموذج:** `{model}` ({provider})"
|
||||
free_tier: "Nous · الخطة المجانية · nous/welcome · /login لتسجيل الدخول"
|
||||
context: "**السياق:** {used} / {total} ({pct}%)"
|
||||
context_used: "**السياق:** ~{used} رمزًا"
|
||||
tokens: "**رموز API التراكمية (تُعاد كل استدعاء):** {tokens}"
|
||||
|
||||
@@ -341,6 +341,7 @@ Future messages in this room will use that transcript until `/reset` or another
|
||||
last_activity: "**Letzte Aktivität:** {timestamp}"
|
||||
model: "**Modell:** `{model}`"
|
||||
model_provider: "**Modell:** `{model}` ({provider})"
|
||||
free_tier: "Nous · kostenloser Tarif · nous/welcome · /login zum Anmelden"
|
||||
context: "**Kontext:** {used} / {total} ({pct}%)"
|
||||
context_used: "**Kontext:** ~{used} Tokens"
|
||||
tokens: "**Lifetime tokens billed:** {tokens} _(not your current context size; use `/context`)_"
|
||||
|
||||
@@ -354,6 +354,7 @@ gateway:
|
||||
last_activity: "**Last Activity:** {timestamp}"
|
||||
model: "**Model:** `{model}`"
|
||||
model_provider: "**Model:** `{model}` ({provider})"
|
||||
free_tier: "Nous · free tier · nous/welcome · /login to sign in"
|
||||
context: "**Context:** {used} / {total} ({pct}%)"
|
||||
context_used: "**Context:** ~{used} tokens"
|
||||
tokens: "**Lifetime tokens billed:** {tokens} _(not your current context size; use `/context`)_"
|
||||
|
||||
@@ -338,6 +338,7 @@ gateway:
|
||||
last_activity: "**Última actividad:** {timestamp}"
|
||||
model: "**Model:** `{model}`"
|
||||
model_provider: "**Model:** `{model}` ({provider})"
|
||||
free_tier: "Nous · plan gratuito · nous/welcome · /login para iniciar sesión"
|
||||
context: "**Context:** {used} / {total} ({pct}%)"
|
||||
context_used: "**Context:** ~{used} tokens"
|
||||
tokens: "**Lifetime tokens billed:** {tokens} _(not your current context size; use `/context`)_"
|
||||
|
||||
@@ -341,6 +341,7 @@ Future messages in this room will use that transcript until `/reset` or another
|
||||
last_activity: "**Dernière activité :** {timestamp}"
|
||||
model: "**Model:** `{model}`"
|
||||
model_provider: "**Model:** `{model}` ({provider})"
|
||||
free_tier: "Nous · offre gratuite · nous/welcome · /login pour se connecter"
|
||||
context: "**Context:** {used} / {total} ({pct}%)"
|
||||
context_used: "**Context:** ~{used} tokens"
|
||||
tokens: "**Lifetime tokens billed:** {tokens} _(not your current context size; use `/context`)_"
|
||||
|
||||
@@ -345,6 +345,7 @@ Future messages in this room will use that transcript until `/reset` or another
|
||||
last_activity: "**Gníomhaíocht is déanaí:** {timestamp}"
|
||||
model: "**Model:** `{model}`"
|
||||
model_provider: "**Model:** `{model}` ({provider})"
|
||||
free_tier: "Nous · plean saor in aisce · nous/welcome · /login chun síniú isteach"
|
||||
context: "**Context:** {used} / {total} ({pct}%)"
|
||||
context_used: "**Context:** ~{used} tokens"
|
||||
tokens: "**Lifetime tokens billed:** {tokens} _(not your current context size; use `/context`)_"
|
||||
|
||||
@@ -341,6 +341,7 @@ Future messages in this room will use that transcript until `/reset` or another
|
||||
last_activity: "**Utolsó tevékenység:** {timestamp}"
|
||||
model: "**Model:** `{model}`"
|
||||
model_provider: "**Model:** `{model}` ({provider})"
|
||||
free_tier: "Nous · ingyenes csomag · nous/welcome · /login a bejelentkezéshez"
|
||||
context: "**Context:** {used} / {total} ({pct}%)"
|
||||
context_used: "**Context:** ~{used} tokens"
|
||||
tokens: "**Lifetime tokens billed:** {tokens} _(not your current context size; use `/context`)_"
|
||||
|
||||
@@ -341,6 +341,7 @@ Future messages in this room will use that transcript until `/reset` or another
|
||||
last_activity: "**Ultima attività:** {timestamp}"
|
||||
model: "**Model:** `{model}`"
|
||||
model_provider: "**Model:** `{model}` ({provider})"
|
||||
free_tier: "Nous · piano gratuito · nous/welcome · /login per accedere"
|
||||
context: "**Context:** {used} / {total} ({pct}%)"
|
||||
context_used: "**Context:** ~{used} tokens"
|
||||
tokens: "**Lifetime tokens billed:** {tokens} _(not your current context size; use `/context`)_"
|
||||
|
||||
@@ -341,6 +341,7 @@ Future messages in this room will use that transcript until `/reset` or another
|
||||
last_activity: "**最終アクティビティ:** {timestamp}"
|
||||
model: "**Model:** `{model}`"
|
||||
model_provider: "**Model:** `{model}` ({provider})"
|
||||
free_tier: "Nous · 無料プラン · nous/welcome · /login でログイン"
|
||||
context: "**Context:** {used} / {total} ({pct}%)"
|
||||
context_used: "**Context:** ~{used} tokens"
|
||||
tokens: "**Lifetime tokens billed:** {tokens} _(not your current context size; use `/context`)_"
|
||||
|
||||
@@ -341,6 +341,7 @@ Future messages in this room will use that transcript until `/reset` or another
|
||||
last_activity: "**최종 활동:** {timestamp}"
|
||||
model: "**Model:** `{model}`"
|
||||
model_provider: "**Model:** `{model}` ({provider})"
|
||||
free_tier: "Nous · 무료 요금제 · nous/welcome · /login 명령으로 로그인"
|
||||
context: "**Context:** {used} / {total} ({pct}%)"
|
||||
context_used: "**Context:** ~{used} tokens"
|
||||
tokens: "**Lifetime tokens billed:** {tokens} _(not your current context size; use `/context`)_"
|
||||
|
||||
@@ -341,6 +341,7 @@ Future messages in this room will use that transcript until `/reset` or another
|
||||
last_activity: "**Última atividade:** {timestamp}"
|
||||
model: "**Model:** `{model}`"
|
||||
model_provider: "**Model:** `{model}` ({provider})"
|
||||
free_tier: "Nous · plano gratuito · nous/welcome · /login para entrar"
|
||||
context: "**Context:** {used} / {total} ({pct}%)"
|
||||
context_used: "**Context:** ~{used} tokens"
|
||||
tokens: "**Lifetime tokens billed:** {tokens} _(not your current context size; use `/context`)_"
|
||||
|
||||
@@ -341,6 +341,7 @@ Future messages in this room will use that transcript until `/reset` or another
|
||||
last_activity: "**Последняя активность:** {timestamp}"
|
||||
model: "**Model:** `{model}`"
|
||||
model_provider: "**Model:** `{model}` ({provider})"
|
||||
free_tier: "Nous · бесплатный тариф · nous/welcome · /login для входа"
|
||||
context: "**Context:** {used} / {total} ({pct}%)"
|
||||
context_used: "**Context:** ~{used} tokens"
|
||||
tokens: "**Lifetime tokens billed:** {tokens} _(not your current context size; use `/context`)_"
|
||||
|
||||
@@ -341,6 +341,7 @@ Future messages in this room will use that transcript until `/reset` or another
|
||||
last_activity: "**Son etkinlik:** {timestamp}"
|
||||
model: "**Model:** `{model}`"
|
||||
model_provider: "**Model:** `{model}` ({provider})"
|
||||
free_tier: "Nous · ücretsiz plan · nous/welcome · /login ile giriş yapın"
|
||||
context: "**Context:** {used} / {total} ({pct}%)"
|
||||
context_used: "**Context:** ~{used} tokens"
|
||||
tokens: "**Lifetime tokens billed:** {tokens} _(not your current context size; use `/context`)_"
|
||||
|
||||
@@ -341,6 +341,7 @@ Future messages in this room will use that transcript until `/reset` or another
|
||||
last_activity: "**Остання активність:** {timestamp}"
|
||||
model: "**Model:** `{model}`"
|
||||
model_provider: "**Model:** `{model}` ({provider})"
|
||||
free_tier: "Nous · безкоштовний тариф · nous/welcome · /login для входу"
|
||||
context: "**Context:** {used} / {total} ({pct}%)"
|
||||
context_used: "**Context:** ~{used} tokens"
|
||||
tokens: "**Lifetime tokens billed:** {tokens} _(not your current context size; use `/context`)_"
|
||||
|
||||
@@ -341,6 +341,7 @@ Future messages in this room will use that transcript until `/reset` or another
|
||||
last_activity: "**最近活動:** {timestamp}"
|
||||
model: "**Model:** `{model}`"
|
||||
model_provider: "**Model:** `{model}` ({provider})"
|
||||
free_tier: "Nous · 免費方案 · nous/welcome · /login 登入"
|
||||
context: "**Context:** {used} / {total} ({pct}%)"
|
||||
context_used: "**Context:** ~{used} tokens"
|
||||
tokens: "**Lifetime tokens billed:** {tokens} _(not your current context size; use `/context`)_"
|
||||
|
||||
@@ -341,6 +341,7 @@ Future messages in this room will use that transcript until `/reset` or another
|
||||
last_activity: "**最近活动:** {timestamp}"
|
||||
model: "**Model:** `{model}`"
|
||||
model_provider: "**Model:** `{model}` ({provider})"
|
||||
free_tier: "Nous · 免费套餐 · nous/welcome · /login 登录"
|
||||
context: "**Context:** {used} / {total} ({pct}%)"
|
||||
context_used: "**Context:** ~{used} tokens"
|
||||
tokens: "**Lifetime tokens billed:** {tokens} _(not your current context size; use `/context`)_"
|
||||
|
||||
Reference in New Issue
Block a user