MCPcopy Index your code
hub / github.com/CodebuffAI/codebuff / convertCbToModelMessages

Function convertCbToModelMessages

common/src/util/messages.ts:213–351  ·  view source on GitHub ↗
({
  messages,
  includeCacheControl = true,
  logger,
}: {
  messages: Message[]
  includeCacheControl?: boolean
  logger?: Logger
})

Source from the content-addressed store, hash-verified

211}
212
213export function convertCbToModelMessages({
214 messages,
215 includeCacheControl = true,
216 logger,
217}: {
218 messages: Message[]
219 includeCacheControl?: boolean
220 logger?: Logger
221}): ModelMessage[] {
222 const toolMessagesConverted: ModelMessageWithAuxiliaryData[] =
223 convertToolMessages(messages)
224
225 const aggregated: ModelMessageWithAuxiliaryData[] = []
226 for (const message of toolMessagesConverted) {
227 if (aggregated.length === 0) {
228 aggregated.push(message)
229 continue
230 }
231
232 const lastMessage = aggregated[aggregated.length - 1]
233 if (
234 lastMessage.timeToLive !== message.timeToLive ||
235 !isEqual(lastMessage.providerOptions, message.providerOptions) ||
236 !isEqual(lastMessage.tags, message.tags)
237 ) {
238 aggregated.push(message)
239 continue
240 }
241 if (lastMessage.role === 'system' && message.role === 'system') {
242 lastMessage.content += '\n\n' + message.content
243 continue
244 }
245 if (lastMessage.role === 'user' && message.role === 'user') {
246 lastMessage.content.push(...message.content)
247 continue
248 }
249 if (lastMessage.role === 'assistant' && message.role === 'assistant') {
250 lastMessage.content.push(...message.content)
251 continue
252 }
253
254 aggregated.push(message)
255 }
256
257 if (!includeCacheControl) {
258 return aggregated
259 }
260
261 // Add cache control to specific messages (max of 4 can be marked for caching!):
262 // - The message right before the three tagged messages
263 // - Last message
264 for (const tag of [
265 'LAST_ASSISTANT_MESSAGE',
266 'USER_PROMPT',
267 'STEP_PROMPT',
268 undefined, // Last message
269 ] as const) {
270 let index =

Callers 4

promptAiSdkStreamFunction · 0.90
promptAiSdkFunction · 0.90
promptAiSdkStructuredFunction · 0.90
messages.test.tsFile · 0.90

Calls 2

convertToolMessagesFunction · 0.85
withCacheControlFunction · 0.85

Tested by

no test coverage detected