(
conversationId: string,
messageIndex: number,
chunk: Chunk,
)
| 384 | } |
| 385 | |
| 386 | function queueMessageChunk( |
| 387 | conversationId: string, |
| 388 | messageIndex: number, |
| 389 | chunk: Chunk, |
| 390 | ): void { |
| 391 | let messageMap = pendingMessageChunks.get(conversationId) |
| 392 | if (!messageMap) { |
| 393 | messageMap = new Map() |
| 394 | pendingMessageChunks.set(conversationId, messageMap) |
| 395 | } |
| 396 | let pending = messageMap.get(messageIndex) |
| 397 | if (!pending) { |
| 398 | pending = { chunks: [], newChunkCount: 0 } |
| 399 | messageMap.set(messageIndex, pending) |
| 400 | } |
| 401 | |
| 402 | const lastPending = pending.chunks[pending.chunks.length - 1] |
| 403 | if ( |
| 404 | lastPending && |
| 405 | lastPending.type === chunk.type && |
| 406 | isMergeableChunkType(chunk.type) && |
| 407 | lastPending.messageId === chunk.messageId |
| 408 | ) { |
| 409 | lastPending.content = chunk.content || lastPending.content |
| 410 | lastPending.delta = chunk.delta |
| 411 | lastPending.chunkCount += chunk.chunkCount |
| 412 | } else { |
| 413 | pending.chunks.push(chunk) |
| 414 | } |
| 415 | pending.newChunkCount += chunk.chunkCount |
| 416 | scheduleBatchFlush() |
| 417 | } |
| 418 | |
| 419 | function getOrCreateConversation( |
| 420 | id: string, |
no test coverage detected