We should define the interface for the function evaluator. As the function evaluator will be limited in what it will be able to access, we need to make sure that all necessary information is available to the evaluator.
Description
Event Timeline
The function evaluator should have at least one path (evaluate?) which takes a ZObject of the following shape:
https://meta.wikimedia.org/wiki/Abstract_Wikipedia/Function_evaluator_call
The function evaluator may have other paths later, e.g. to get information about the function evaluator (i.e. what language does it support? What kind of features does this evaluator have?) But we can ignore these for now, and assume that the orchestrator knows all available evaluators and their features (i.e., for pre-launch, it will know that there are two function evaluators, one for Javascript and one for Python, and that's it). Later this may become more interesting.
Probably something that the evaluator will need is some kind of health check API so that the orchestrator (or/and anything working as load balancer) can check out availability of the different language services, or the current load state of these.