@startuml class Request { platform userId message: Message history: Trace metadata: KeyValueStore answer(): Response } class Message { id: unique evaluated: Meaning evaluate() } Request *-- Message Response -- Request class Response { request: Request answer history: Trace } class TextMessage { content } class AudioMessage { url } Message <|-- AudioMessage Message <|-- TextMessage @enduml