Skip to content

[Relay][P1] Añadir notificaciones push y Live Activities con entrega durable #51

Description

@0bkevin

Contexto auditado

El Relay actual de T3 Connect registra devices y preferencias, recibe estado de agente firmado, persiste aggregates, entrega APNs/Live Activities mediante cola, deduplica jobs con leases, invalida tokens muertos y permite snapshot/replay al registrar. Referencias: relay README, relay contracts, AgentActivityPublisher, ApnsDeliveries y queue worker.

Brecha actual

Brio muestra completion/approval/input/failure solo cuando la app consulta el Command Center. No hay registro de push token, preferencias, publicación autenticada de actividad, delivery queue, dedupe, deep link desde notificación ni estado en lock screen. El usuario puede dejar una tarea remota esperando aprobación sin enterarse.

Propuesta

  1. Definir fases tipadas: starting, running, waiting_for_approval, waiting_for_input, completed, failed y stale.
  2. Registrar por device: platform, app version, APNs/FCM environment, tokens y preferencias granulares.
  3. Hacer que connector/Hermes publique estado mínimo firmado y ligado a agent/thread; verificar timestamp, nonce/signature y ownership.
  4. Persistir snapshot/aggregate con TTL y deep link exacto agent/profile/session.
  5. Encolar deliveries firmadas con expiración, retries, DLQ, claim lease e idempotency por source job.
  6. Invalidar tokens en respuestas APNs/FCM definitivas y registrar solo sufijo/metadata segura.
  7. Revalidar estado antes de enviar para suprimir alertas stale; replay silencioso al registrar/reabrir.
  8. APNs + Live Activities como primera fase; FCM después con capability visible, sin fingir soporte en Android.
  9. Aplicar privacy mode para ocultar título/contenido sensible y respetar notification settings del OS.

Criterios de aceptación

  • Approval/input/completion/failure llega con la app en background y abre el destino exacto.
  • Un retry de cola no envía dos alertas.
  • Jobs expirados/stale no notifican; tokens inválidos dejan de reintentarse.
  • Revocar/unregister device elimina su routing.
  • Fallo de push no hace fallar la publicación de estado del agente.
  • Snapshot recupera el estado tras reinstalación/re-registro sin buzz duplicado.
  • Hay pruebas de firma/replay, preferencias, dedupe, leases expirados, 410/Unregistered, DLQ y contenido privado.

Issue Relay específica relacionada con la UX general de notificaciones en #29.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions