| 319 | } |
| 320 | |
| 321 | function formatFinishReasonHint(stream: StreamedMessage): string { |
| 322 | if (stream.finishReason === null && stream.rawFinishReason === null) return ''; |
| 323 | |
| 324 | const raw = |
| 325 | stream.rawFinishReason === null ? '' : `, rawFinishReason=${stream.rawFinishReason}`; |
| 326 | const filteredHint = |
| 327 | stream.finishReason === 'filtered' |
| 328 | ? ' The provider filtered the response before visible output was emitted.' |
| 329 | : ''; |
| 330 | |
| 331 | return ` Provider stop details: finishReason=${stream.finishReason ?? 'unknown'}${raw}.${filteredHint}`; |
| 332 | } |
| 333 | |
| 334 | /** |
| 335 | * Produce a shallow-ish copy of a StreamedMessagePart. |