Ir al contenido

Aviso de inicio de sesión

ui.AuthPrompt es un componente que pide iniciar sesión, para un agente o un servicio que lo necesita. Muestra un título (title), un detail opcional y un botón por cada forma de entrar: methods son diccionarios con id, name y, opcionales, description (se ve como tooltip) e icon, y el primero es el botón principal. Elegir uno llega a on_pick con su id. Mientras waiting tiene ese id muestra un spinner y lo que está pasando (waiting_text, o “Esperando al navegador…”), el código que hay que escribir (code) con un botón para copiarlo si lo hay, Abrir la página otra vez si hay url, y Cancelar. error muestra un mensaje en rojo.

ui.AuthPrompt · Categoría: Agentes de IA · Referencia completa →

Aviso de inicio de sesiónAviso de inicio de sesión
  • Donde un agente o un servicio conectado necesita que el usuario inicie sesión para funcionar.
  • Para un inicio de sesión con código: muestra el code que el usuario escribe en la página que se abrió.
import pyzed as pz
from pyzed import ui
class Agent(pz.App):
def __init__(self):
self.waiting, self.code = "", ""
def sign_in(self, method):
self.waiting = method
self.code = start_device_login() # opens the browser and returns the code to type
def view(self):
return ui.AuthPrompt(title="Sign in to use the agent", waiting=self.waiting, code=self.code,
methods=[{"id": "browser", "name": "Log in with the browser"}],
on_pick=lambda e: self.sign_in(e.value),
on_cancel=lambda e: setattr(self, "waiting", ""),
on_copy=lambda e: pz.Command.copy(e.value))

El primer método es el botón principal (relleno).

Aviso de inicio de sesión: Un métodoAviso de inicio de sesión: Un método
Un método
Código
pz.container(ui.AuthPrompt(title="Sign in to continue",
methods=[{"id": "browser", "name": "Log in with the browser"}]),
width=380)
Aviso de inicio de sesión: methods=[...]Aviso de inicio de sesión: methods=[...]
methods=[...]
Código
pz.container(ui.AuthPrompt(title="Sign in to continue", methods=[
{"id": "browser", "name": "Log in with the browser", "icon": "globe"},
{"id": "key", "name": "Use an API key", "icon": "key-round"},
]), width=380)
Aviso de inicio de sesión: detail=Aviso de inicio de sesión: detail=
detail=
Código
pz.container(ui.AuthPrompt(title="Sign in to continue", detail="The agent needs your account.",
methods=[{"id": "browser", "name": "Log in with the browser"}]),
width=380)
Aviso de inicio de sesión: error=Aviso de inicio de sesión: error=
error=
Código
pz.container(ui.AuthPrompt(title="Sign in to continue", error="The sign-in was cancelled.",
methods=[{"id": "browser", "name": "Try again"}]),
width=380)
Aviso de inicio de sesión: waiting="browser"Aviso de inicio de sesión: waiting="browser"
waiting="browser"
Código
pz.container(ui.AuthPrompt(title="Sign in to continue", waiting="browser"), width=380)
Aviso de inicio de sesión: waiting_text=Aviso de inicio de sesión: waiting_text=
waiting_text=
Código
pz.container(ui.AuthPrompt(title="Sign in to continue", waiting="cli",
waiting_text="Finish signing in in the terminal."),
width=380)
Aviso de inicio de sesión: code=, url=Aviso de inicio de sesión: code=, url=
code=, url=
Código
pz.container(ui.AuthPrompt(title="Sign in to continue", waiting="device", code="WDJB-MJHT",
url="https://example.com/device"), width=380)

Aviso de inicio de sesión tiene 4 eventos propios, en la tabla de abajo. Como todo widget, también tiene los 18 eventos comunes (click, double_click, right_click, mouse_enter, drag, key_down, resize…), que se conectan con .on(...): mira Eventos y Eventos de cada componente.

Es un pz.Component, así que también lanza on_mount y on_unmount, y sus handlers reciben un pz.Event cuyo value trae el dato.

Evento El handler recibe Cuándo
on_pick (event) Se eligió un método (event.value es su id).
on_cancel (event) Cancelar.
on_open_url (event) Abrir la página otra vez.
on_copy (event) Se copió el código.

El handler recibe es lo que Pyzed le pasa a tu función: () es nada. Cualquier handler también puede ser un mensaje (un valor que no se puede llamar), que va a update().

Los mismos eventos escritos de tres formas. Imperativa: métodos de la app que cambian self. Declarativa: los handlers producen mensajes y un único update() decide. Funcional: una función pura dibuja un estado inmutable y pide cambios con set_state(...). Mira Imperativo, declarativo y funcional.

class Agent(pz.App):
def __init__(self):
self.waiting, self.code = "", ""
def sign_in(self, method): # on_pick: event.value is the method's id
self.waiting, self.code = method, "ABCD-1234"
def view(self):
return ui.AuthPrompt(title="Sign in to use the agent", waiting=self.waiting, code=self.code,
methods=[{"id": "browser", "name": "Log in with the browser"}],
on_pick=lambda e: self.sign_in(e.value),
on_cancel=lambda e: setattr(self, "waiting", ""),
on_copy=lambda e: pz.Command.copy(e.value)) # the code
class AuthPrompt

Un componente que pide iniciar sesión, como Zed cuando un agente lo necesita: un botón por cada forma de entrar y, mientras una está en curso, qué pasa (el navegador o una terminal está abierto), un código para escribir si lo hay, Abrir la página otra vez y Cancelar.

Propiedad Por defecto Descripción
title "" El título.
detail "" Una línea debajo.
methods None Dicts con id, name y, opcionalmente, description e icon; el primero es el principal.
waiting "" El id del método en curso ("" si no hay).
waiting_text "" Lo que se muestra mientras espera.
code "" Un código para escribir (inicio de sesión por dispositivo).
url "" La página que se abrió.
error "" Un error a mostrar.
icon_name "key-round" El icono.
theme None Tema.

Eventos: on_pick, on_cancel, on_open_url, on_copy (eventos).

Referencia completa →