2756557498
Se estandariza la numeración de todos los issues de 3 dígitos a 4 dígitos (e.g. 005 → 0005, 010 → 0010) para mantener consistencia con la convención definida en create_issue.md. Se actualiza el README con los nuevos nombres y links. No hay cambios de contenido en los issues, solo renombrado. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2.2 KiB
2.2 KiB
Plan: Editar fotos de perfil de los bots
Objetivo
Poder actualizar el avatar (foto de perfil) y el display name de cada bot en Matrix
desde la CLI (agentctl) o desde un dev-script.
Estado: COMPLETADO
Cómo funciona en Matrix
- Endpoint:
PUT /_matrix/client/v3/profile/{userId}/avatar_url - Body:
{ "avatar_url": "mxc://..." }— URI de contenido subido al Media repo - Para subir una imagen:
POST /_matrix/media/v3/uploadcon el body binario yContent-Typede la imagen - También se puede cambiar el display name:
PUT /_matrix/client/v3/profile/{userId}/displayname
La secuencia es:
- Subir imagen → obtener
mxc://server/mediaID - Establecer
avatar_urlen el perfil con esa URI
Diseño
CLI: agentctl avatar <agent-id> <image-path>
Nuevo subcomando en cmd/agentctl/:
agentctl avatar assistant-bot /path/to/photo.png
agentctl displayname assistant-bot "Assistant Bot"
Shell: shell/matrix/profile.go
// UploadMedia sube un archivo y devuelve la mxc:// URI
func UploadMedia(ctx, client, filePath string) (mxcURI string, err error)
// SetAvatar establece avatar_url en el perfil del bot
func SetAvatar(ctx, client, mxcURI string) error
// SetDisplayName cambia el displayname
func SetDisplayName(ctx, client, name string) error
Usa el cliente mautrix.Client ya existente en shell/matrix/client.go.
Dev-script: dev-scripts/avatar.sh
#!/usr/bin/env bash
# Uso: ./dev-scripts/avatar.sh <agent-id> <image-path>
./bin/agentctl avatar "$1" "$2"
Archivos a crear/modificar
shell/matrix/profile.go— UploadMedia, SetAvatar, SetDisplayNamecmd/agentctl/avatar.go— subcomandoavatarydisplaynamecmd/agentctl/main.go— registrar los nuevos subcomandos en Cobradev-scripts/avatar.sh— wrapper convenience
Notas
- El token del bot necesita permiso de escritura en su propio perfil (normal por defecto)
- Formatos soportados: PNG, JPG, WebP — Matrix los acepta todos
- mautrix-go tiene métodos
client.UploadMedia()yclient.SetAvatarURL(); usar esos directamente para evitar HTTP manual - El comando debe cargar el token del bot desde las env vars (
MATRIX_TOKEN_<BOT>) igual que hacecmd/launcher/