@startuml participant "Language SDK" order 10 box "Engine" participant "Resource Monitor" order 15 end box participant "Resource Provider" order 30 "Language SDK" -> "Resource Monitor" ++ : RegisterResourceRequest(type, name, inputs, options) "Resource Monitor" -> "Resource Provider" ++ : ConstructRequest(monitor address, type, name, inputs, options) "Resource Provider" <--> "Resource Monitor": Component resource + child resource registrations "Resource Monitor" <- "Resource Provider" -- : ConstructResponse(outputs) "Language SDK" <- "Resource Monitor" -- : RegisterResourceResponse(urn, ID, new state) @enduml