Skip to content

Commit ec544c6

Browse files
committed
Validate aggregated messages against aisdk message format + log errors
1 parent 5ec4b02 commit ec544c6

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

common/src/util/messages.ts

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,15 @@ import type {
1111
} from '../types/messages/codebuff-message'
1212
import type { ToolResultOutput } from '../types/messages/content-part'
1313
import type { ProviderMetadata } from '../types/messages/provider-metadata'
14+
import { modelMessageSchema } from 'ai'
1415
import type {
1516
AssistantModelMessage,
1617
ModelMessage,
1718
SystemModelMessage,
1819
ToolModelMessage,
1920
UserModelMessage,
2021
} from 'ai'
22+
import { Logger } from '../types/contracts/logger'
2123

2224
export function toContentString(msg: ModelMessage): string {
2325
const { content } = msg
@@ -189,9 +191,11 @@ function convertToolMessages(
189191
export 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

Comments
 (0)