NOTE: ideally, we would not want to leak engine server client like this, since the communication with engine client should only be done in this class alone. However, we need to expose the client for plugins, tests, and dev tool configurations.
For parsing of execution results, we may want to maintain the precision of the numbers coming in. To do this, we setup a custom parser for numbers, so that if the number is unsafe to convert to number (we lose precision) we will keep them as strings. This is useful when displaying the execution results.
Optional fast-path that hands the raw wire JSON straight to the engine's
JSONToGrammar endpoint, skipping the client-side
deserialize -> reserialize round-trip that
transformPureModelContextDataToCode incurs.
Left optional for backward compatibility: existing implementers of
V1_GraphManagerEngine do not need to provide it. Callers must
fall back to transformPureModelContextDataToCode (after a client-side
deserialize) when this is not implemented.
This class defines what the engine is capable of. Right now for most engine operations, we make network calls to the engine backend. However, this might change in the future if we ever bring some engine functionalities to Studio. As such, we want to encapsulate engine client within this class.