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>
70 lines
2.2 KiB
Markdown
70 lines
2.2 KiB
Markdown
# 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/upload` con el body binario
|
|
y `Content-Type` de la imagen
|
|
- También se puede cambiar el display name:
|
|
`PUT /_matrix/client/v3/profile/{userId}/displayname`
|
|
|
|
La secuencia es:
|
|
1. Subir imagen → obtener `mxc://server/mediaID`
|
|
2. Establecer `avatar_url` en 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`
|
|
```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`
|
|
```bash
|
|
#!/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, SetDisplayName
|
|
- `cmd/agentctl/avatar.go` — subcomando `avatar` y `displayname`
|
|
- `cmd/agentctl/main.go` — registrar los nuevos subcomandos en Cobra
|
|
- `dev-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()` y `client.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 hace `cmd/launcher/`
|