The RPC service that executes a predefined quest / function, or queries an ongoing quest. The service is wrapped inside RPC endpoints to isolate clients from underlying storage schemas and Agent implementations details. This enjoys all the benefits by hiding invocations behind RPC endpoints.
The demon-like service to execute the quests. It creates a topic, subscribes to the pub/sub queue and continues to run. This should be able to be deployed to Cloud Run or Cloud Function, or incorporated into any other long-running service in Skia infra as well.
One QuestExecutor is created to handle one quest type, one message queue/topic is dedicated to one quest type. The executor is responsible for creating a topic to indicate that it is ready to process quests. Multiple executors can be started to handle requests in a distributed manner.
A Quest is a Go function that typically does followings:
However there are Go functions that may not be considered as a quest: