| 29 | /** Drop the reasoning side-channel from assistant messages bound for an OpenAI |
| 30 | * `/chat/completions` request (it isn't a valid input field there). */ |
| 31 | export function stripReasoningDetails( |
| 32 | messages: OpenAI.Chat.ChatCompletionMessageParam[], |
| 33 | ): OpenAI.Chat.ChatCompletionMessageParam[] { |
| 34 | return messages.map((message) => { |
| 35 | if (message.role !== "assistant") return message |
| 36 | const record = message as unknown as Record<string, unknown> |
| 37 | if (!(REASONING_DETAILS_FIELD in record)) return message |
| 38 | const { [REASONING_DETAILS_FIELD]: _omit, ...rest } = record |
| 39 | return rest as unknown as OpenAI.Chat.ChatCompletionMessageParam |
| 40 | }) |
| 41 | } |