Files
fn_registry/dev/issues/0153-matrix-client-pc-agent-integration.md
egutierrez daef7ea190 feat(matrix): MAS migration helpers + 2 flows + 15 issues + capability group
Helper functions (matrix-mas capability group):
- mas_client_register_bash_infra: register/sync OAuth clients via mas-cli
- mas_syn2mas_migration_bash_infra: dry-run + apply user migration to MAS
- synapse_msc3861_enable_go_infra: edit homeserver.yaml MSC3861 block (with diff)
- wellknown_oidc_patch_go_infra: patch well-known JSON with msc2965.authentication
- synapse_login_flows_check_go_infra: health-check post-migration login flows

Flows + issues for custom Matrix clients (PC + Android):
- 0010 matrix-client-pc: Wails + React+Mantine (issues 0147-0153)
- 0011 matrix-client-android: Kotlin + Compose (issues 0154-0161)
- 0162 enable MAS as auth provider (Synapse delegate) — EXECUTED on VPS
- 0163 custom admin panel propio (sustituye synapse-admin)

Production state (organic-machine.com):
- Synapse migrated SQLite -> Postgres
- MSC3861 active, password_config disabled
- 21 users + 41 access_tokens migrated via syn2mas
- 4 MAS clients registered (element, matrix_pc, matrix_android, admin_panel)
- synapse-admin container removed + Coolify route deleted
- well-known patched with org.matrix.msc2965.authentication

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 22:53:33 +02:00

3.7 KiB

id, title, status, priority, created, related_flows, related_issues, dependencies, tags
id title status priority created related_flows related_issues dependencies tags
0153 matrix-client-pc agent integration: paneles para rooms operados por agentes pending medium 2026-05-24
0010
0009
0152
0152
matrix
agents
agents_and_robots
dashboard
sse
device_agent

Objetivo

Integracion nativa con agents_and_robots + agents_dashboard + futuro device_agent (flow 0009 mesh). Detectar que un room esta operado por un agente Matrix conocido (via state event custom m.agent.metadata) y mostrar panel lateral con info del agente: uptime, ultima ejecucion, cola de tasks, last_error, boton restart, view logs en vivo (SSE). Atajos: enviar slash commands del agente (/agent restart, /agent skill <name>).

Tareas

  1. Backend Go:
    • MatrixService.GetAgentMetadata(roomID) -> *AgentMetadata — lee state event m.agent.metadata que el agente publica al arrancar.
    • MatrixService.SubscribeAgentLogs(agentID) -> chan LogLine — SSE proxy al endpoint agents_and_robots /api/agents/<id>/logs ya existente (issue 0113).
    • Llamadas REST proxy a agents_and_robots: RestartAgent(agentID), ListSkills(agentID), TriggerSkill(agentID, skill, args).
  2. Frontend React:
    • Hook useAgentMetadata(roomID) — devuelve null si no es room de agente.
    • Componente AgentPanel (panel lateral colapsable, solo visible si hay agentMetadata):
      • Card con avatar, nombre, version, uptime, status (running/stopped/error).
      • Tabs: "Logs" (live SSE), "Skills" (lista de skills disponibles + boton trigger), "Config" (read-only del config.yaml del agente).
      • Boton restart con confirmacion.
    • Componente LogStream — termtinal-like log viewer con auto-scroll + filtro grep.
    • Slash commands custom: /agent restart, /agent skill <name> <args>, /agent logs.
  3. Cuando flow 0009 (mesh) este vivo:
    • Detectar device_agent rooms (state event m.device.metadata con tipo device_agent).
    • Panel especifico DevicePanel: hostname, OS, kernel, IP mesh WG, capabilities firmadas, ultimo heartbeat.
    • Slash commands: /device shell <cmd> (si capability permite), /device fs ls <path>, /device camera capture.
  4. Tests:
    • e2e/test_agent_panel_basic.sh — entrar a room de welcome-bot, panel agente visible con info correcta.
    • e2e/test_agent_logs_live.sh — boton "view logs" stream logs en tiempo real (5s).
    • e2e/test_agent_restart.sh — restart desde panel + verificar agente vuelve online.

Funciones del registry a crear

  • matrix_agent_metadata_go_infra — leer/publicar state event m.agent.metadata.
  • agents_and_robots_client_go_infra — wrapper REST + SSE del API de agents_and_robots.
  • AgentPanel_ts_ui — panel lateral Mantine con tabs.
  • LogStream_ts_ui — viewer logs SSE.
  • DevicePanel_ts_ui — panel device_agent (cuando flow 0009 vivo).

Acceptance

  • Room operado por agente conocido muestra AgentPanel automatico.
  • Logs en vivo del agente aparecen en panel (SSE).
  • Restart desde panel funciona end-to-end.
  • Slash /agent skill greet ejecuta skill remota y respuesta llega como msg al room.
  • Room NO operado por agente: panel oculto (no clutter).

Notas

  • State event m.agent.metadata format: { agent_id, version, capabilities[], owner, repo_url }. Documentar en projects/element_agents/docs/agent_metadata.md.
  • SSE proxy: el cliente PC habla a agents_and_robots via su DNS publica (agents.organic-machine.com) con auth Bearer (token del usuario Matrix + scope agent_panel).
  • Permisos: solo el owner declarado en el agente puede ejecutar restart/trigger. Otros users del room solo leen.
  • Gotcha: si el agente se rebuilds y cambia agent_id, el state event queda obsoleto — necesita TTL o heartbeat.