File size: 794 Bytes
35743bd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import { createResponsesApiTransformStream } from "@omniroute/open-sse/transformer/responsesTransformer.ts";

export async function transformChatCompletionSseToResponses(rawSse: string): Promise<string> {
  const encoder = new TextEncoder();
  const decoder = new TextDecoder();

  const inputStream = new ReadableStream<Uint8Array>({
    start(controller) {
      controller.enqueue(encoder.encode(rawSse));
      controller.close();
    },
  });

  const outputStream = inputStream.pipeThrough(createResponsesApiTransformStream());
  const reader = outputStream.getReader();

  let output = "";

  while (true) {
    const { value, done } = await reader.read();
    if (done) break;
    output += decoder.decode(value, { stream: true });
  }

  output += decoder.decode();
  return output;
}