@VisibleForTesting
    static String getParentDeployment(ProxyContext context) {
        List<String> interceptors = context.getInterceptors();
        if (interceptors == null) {
            return context.getSourceDeployment();
        }
        // skip interceptors and return the deployment which called the current one
        List<String> executionPath = context.getExecutionPath();
        if (executionPath == null) {
            return null;
        }
        int i = executionPath.size() - 2;
        for (int j = interceptors.size() - 1; i >= 0 && j >= 0; i--, j--) {
            String deployment = executionPath.get(i);
            String interceptor = interceptors.get(j);
            if (!deployment.equals(interceptor)) {
                log.warn("Can't find parent deployment because interceptor path doesn't match: expected - {}, actual - {}", interceptor, deployment);
                return null;
            }
        }
        return i < 0 ? null : executionPath.get(i);
    }
Determines if the given response is streaming.
<p>
    Streaming response is spitted into chunks. Each chunk starts with a new line and has a prefix: 'data:'.
    For example<br/>
    <code>
        data: {content: "some text"}
        \n\ndata: {content: "some text"}
        \ndata: [DONE]
    </code>
</p>

@param response byte array response.
@return <code>true</code> is the response is streaming.
server/src/main/java/com/epam/aidial/core/server/log/GfLogStore.java