(response: Response, exchange: CopilotRequestExchange)
| 696 | } |
| 697 | |
| 698 | async function streamResponse(response: Response, exchange: CopilotRequestExchange): Promise<void> { |
| 699 | await exchange.startResponse({ |
| 700 | status: response.status, |
| 701 | statusText: response.statusText || undefined, |
| 702 | headers: headersToMultiMap(response.headers), |
| 703 | }); |
| 704 | |
| 705 | const body = response.body; |
| 706 | if (!body) { |
| 707 | await exchange.endResponse(); |
| 708 | return; |
| 709 | } |
| 710 | |
| 711 | const reader = body.getReader(); |
| 712 | try { |
| 713 | for (;;) { |
| 714 | const { value, done } = await reader.read(); |
| 715 | if (done) { |
| 716 | break; |
| 717 | } |
| 718 | if (value && value.byteLength > 0) { |
| 719 | await exchange.writeResponse(value); |
| 720 | } |
| 721 | } |
| 722 | await exchange.endResponse(); |
| 723 | } finally { |
| 724 | reader.releaseLock(); |
| 725 | } |
| 726 | } |
| 727 | |
| 728 | function headersToMultiMap(headers: Headers): LlmInferenceHeaders { |
| 729 | const out: Record<string, string[]> = {}; |
no test coverage detected
searching dependent graphs…