| 648 | } |
| 649 | |
| 650 | function emitTextBlock( |
| 651 | controller: ReadableStreamDefaultController, |
| 652 | encoder: TextEncoder, |
| 653 | index: number, |
| 654 | text: string, |
| 655 | ) { |
| 656 | controller.enqueue( |
| 657 | encoder.encode( |
| 658 | formatSSE('content_block_start', JSON.stringify({ |
| 659 | type: 'content_block_start', |
| 660 | index, |
| 661 | content_block: { type: 'text', text: '' }, |
| 662 | })), |
| 663 | ), |
| 664 | ) |
| 665 | controller.enqueue( |
| 666 | encoder.encode( |
| 667 | formatSSE('content_block_delta', JSON.stringify({ |
| 668 | type: 'content_block_delta', |
| 669 | index, |
| 670 | delta: { type: 'text_delta', text }, |
| 671 | })), |
| 672 | ), |
| 673 | ) |
| 674 | controller.enqueue( |
| 675 | encoder.encode( |
| 676 | formatSSE('content_block_stop', JSON.stringify({ |
| 677 | type: 'content_block_stop', |
| 678 | index, |
| 679 | })), |
| 680 | ), |
| 681 | ) |
| 682 | } |
| 683 | |
| 684 | function finishStream( |
| 685 | controller: ReadableStreamDefaultController, |