Ampliación de los bloques de mensajes de chat

Hola a todos,

Me gustaría desarrollar un plugin para mostrar notificaciones de actividad de GitLab/GitHub en Discourse Chat, o más ampliamente, cualquier tipo de evento periódico.

Para obtener una salida más rica, me gustaría mostrar la actividad como una tarjeta, y he visto que los mensajes de chat tienen un campo JSON blocks que parece útil para este propósito. Desafortunadamente, por ahora, los tipos de bloques no parecen extensibles sin parchear los componentes internos de Chat: el esquema, los serializadores y el renderizador del frontend enumeran todos los tipos de bloques/elementos compatibles.

¿Sería posible convertir blocks en un punto de extensión para plugins, o deberían los plugins tratarlo como un detalle de implementación interno?

Concretamente, ¿estaría Discourse abierto a alguna de las siguientes opciones:

  1. Un tipo de bloque genérico para eventos/tarjetas en el núcleo, o
  2. Una API de plugin estilo registerChatBlockType?

Puedo recurrir a renderizar Markdown y decorar los mensajes de chat procesados en el lado del cliente, pero los bloques estructurados parecen un modelo más limpio si se considera que esta dirección es viable.

No está muy alto en nuestra hoja de ruta en este momento, pero ¿podrías describir qué tipo de API crees que necesitarías?

Principalmente, me gustaría una API que permitiera a un plugin:

  1. Registrar un nombre de tipo de bloque de mensaje de chat, propiedad de ese plugin
  2. Opcionalmente, proporcionar un validador de esquema JSON para ese bloque
  3. Registrar un renderizador para ese bloque

Todo esto se puede parchear, pero si existe una API oficial, la estabilidad y la seguridad serían mejores. Mi caso de uso son las notificaciones de actividad de Forge, pero imagino que existirían otras aplicaciones (RSS como alternativa al plugin RSS, feeds de redes sociales, etc).