Saltar al contenido
EspañolEnglish

Interfaces de IA y editor de texto

Las piezas de una interfaz de asistente salen del chat del asistente de AMSET, que las usa a diario: la caja de entrada, los mensajes, el razonamiento, las llamadas a herramientas, el registro de lo que hace un agente, los ficheros que genera y el selector de modelo. Son 16, sin dependencias, con un CSS por componente y todo dicho con texto además de con color.

Los componentes

Adjunto

Attachment

Un fichero adjunto a un mensaje.
El diálogo para que una persona apruebe o rechace lo que un agente de IA quiere hacer.
La barra de buscar DENTRO de algo -una conversación larga, un documento-.

Consumo de IA

AIUsageDashboard

El consumo de IA de una cuenta.

Editor de plantillas

PromptTemplateEditor

Editar una plantilla de texto con variables entre llaves dobles.
La caja donde se escribe a un asistente.

Flujo de un agente

AgentWorkflowEditor

El editor del flujo de un agente de IA.
Una llamada a una herramienta.

Mensaje de chat

ChatMessage

Un mensaje de un chat con un asistente.

Razonamiento

Reasoning

El razonamiento de un modelo, plegado.
El registro de lo que está haciendo un agente.

Selector de motor

ModelSelector

Con qué se atiende lo siguiente.

Sugerencias

Suggestions

Las respuestas rápidas que propone un asistente.
Un fichero que ha generado un asistente, con su vista previa a un clic.

Uso y coste

UsageBadge

Cuánto ha costado una respuesta.

Visor de imagen

ImageViewer

El visor de una imagen a pantalla casi completa.
  • PromptInput crece con el texto hasta un tope, envía con Intro y baja de línea con Mayús+Intro (sin enviar mientras se compone con un IME), recupera lo último con la flecha arriba y admite ficheros pegados, arrastrados o elegidos. Con busyModes se puede seguir escribiendo mientras responde: añadir al turno, parar y corregir o encolar.
  • ChatMessage trae copiar, regenerar y editar en la misma burbuja, y acciones propias.
  • ActivityLog sigue el final solo si ya estabas abajo y junta los eventos repetidos; con group, un historial de varias tareas.
  • FindBar busca dentro de una conversación larga, donde el buscador del navegador no ve lo que no se ha cargado.
  • ArtifactFrame aísla el HTML que genera un asistente con sandbox="allow-scripts", nunca con allow-same-origin.

Editor de texto enriquecido

El editor de texto de la biblioteca es RichTextEditor, de @amset/ui/rich-text: propio, sin dependencias de terceros, con revisión, historial de versiones y fórmulas. Tiene su propia página, con demos. La barra, RichTextToolbar, también se puede usar sola con el motor de edición que ya tengas; esto es lo que habla con ella:

SentidoPropQué lleva
editor → barrastateLo que hay puesto donde está el cursor (active), lo que no se puede usar ahora (unavailable) y el enlace del cursor (link).
barra → editoronCommandLa orden: 'bold', 'heading2', 'bulletList', 'undo', 'clearFormatting'…
barra → editoronLinkChange{ href, newTab } ya comprobado, o null para quitarlo.
barra → editoronImageInsert{ src, alt } ya comprobado; alt solo va vacío si la imagen se marca como decorativa.
aplicación → barrashortcutsLos atajos del editor (Mod+B), que la barra anuncia y enseña en su ayuda. Los escucha el editor, no la barra.
  • Una sola parada del tabulador para toda la barra, flechas entre botones y memoria del foco al volver.
  • Cada formato es un ToggleButton con aria-pressed; pulsarlo con el ratón no le quita el foco al editor, así que la selección se queda donde estaba.
  • Los paneles de enlace e imagen solo se montan al abrirlos y no son un <form>: la barra vale dentro del formulario de tu aplicación.
  • Las direcciones se comprueban con normalizeLinkHref y normalizeImageSrc (lista blanca de esquemas: un javascript: o un data: no pasan). La barra no limpia lo que guarda el editor: ese HTML se sanea en el servidor antes de guardarlo o pintarlo.