@@ -11,13 +11,15 @@ import type {
1111} from '../types/messages/codebuff-message'
1212import type { ToolResultOutput } from '../types/messages/content-part'
1313import type { ProviderMetadata } from '../types/messages/provider-metadata'
14+ import { modelMessageSchema } from 'ai'
1415import type {
1516 AssistantModelMessage ,
1617 ModelMessage ,
1718 SystemModelMessage ,
1819 ToolModelMessage ,
1920 UserModelMessage ,
2021} from 'ai'
22+ import { Logger } from '../types/contracts/logger'
2123
2224export function toContentString ( msg : ModelMessage ) : string {
2325 const { content } = msg
@@ -189,9 +191,11 @@ function convertToolMessages(
189191export function convertCbToModelMessages ( {
190192 messages,
191193 includeCacheControl = true ,
194+ logger,
192195} : {
193196 messages : Message [ ]
194197 includeCacheControl ?: boolean
198+ logger ?: Logger
195199} ) : ModelMessage [ ] {
196200 const toolMessagesConverted : ModelMessageWithAuxiliaryData [ ] =
197201 convertToolMessages ( messages )
@@ -302,6 +306,25 @@ export function convertCbToModelMessages({
302306 }
303307 }
304308
309+ // Validate each message against the AI SDK schema
310+ for ( let i = 0 ; i < aggregated . length ; i ++ ) {
311+ const message = aggregated [ i ]
312+ const result = modelMessageSchema . safeParse ( message )
313+ if ( ! result . success ) {
314+ if ( logger ) {
315+ logger . error (
316+ { message, aggregated, error : result . error } ,
317+ `convertCbToModelMessages: Message at index ${ i } failed schema validation.` ,
318+ )
319+ }
320+ throw new Error (
321+ `convertCbToModelMessages: Message at index ${ i } failed schema validation.\n` +
322+ `Role: ${ message . role } \n` +
323+ `Message:\n${ result . error . message } ` ,
324+ )
325+ }
326+ }
327+
305328 return aggregated
306329}
307330
0 commit comments