| 694 | } |
| 695 | |
| 696 | function buildFollowUpEvents(): Array<Record<string, unknown>> { |
| 697 | const messageId = 'msg_bug_604_followup' |
| 698 | const model = 'claude-sonnet-4-5' |
| 699 | return [ |
| 700 | { |
| 701 | type: 'message_start', |
| 702 | message: { |
| 703 | id: messageId, |
| 704 | type: 'message', |
| 705 | role: 'assistant', |
| 706 | content: [], |
| 707 | model, |
| 708 | stop_reason: null, |
| 709 | stop_sequence: null, |
| 710 | usage: { input_tokens: 30, output_tokens: 0 }, |
| 711 | }, |
| 712 | }, |
| 713 | { |
| 714 | type: 'content_block_start', |
| 715 | index: 0, |
| 716 | content_block: { type: 'text', text: '' }, |
| 717 | }, |
| 718 | { |
| 719 | type: 'content_block_delta', |
| 720 | index: 0, |
| 721 | delta: { type: 'text_delta', text: 'Berlin is sunny.' }, |
| 722 | }, |
| 723 | { type: 'content_block_stop', index: 0 }, |
| 724 | { |
| 725 | type: 'message_delta', |
| 726 | delta: { stop_reason: 'end_turn', stop_sequence: null }, |
| 727 | usage: { output_tokens: 5 }, |
| 728 | }, |
| 729 | { type: 'message_stop' }, |
| 730 | ] |
| 731 | } |
| 732 | |
| 733 | function readBody(req: http.IncomingMessage): Promise<string> { |
| 734 | return new Promise((resolve, reject) => { |