@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
