({
userId,
stripeCustomerId,
agentId,
clientId,
clientRequestId,
costMode,
byok,
startTime,
request,
data,
state,
logger,
insertMessage,
}: {
userId: string
stripeCustomerId?: string | null
agentId: string
clientId: string | null
clientRequestId: string | null
costMode: string | undefined
byok: boolean
startTime: Date
request: unknown
data: OpenRouterStreamChatCompletionChunk
state: StreamState
logger: Logger
insertMessage: InsertMessageBigqueryFn
})
| 621 | } |
| 622 | |
| 623 | async function handleResponse({ |
| 624 | userId, |
| 625 | stripeCustomerId, |
| 626 | agentId, |
| 627 | clientId, |
| 628 | clientRequestId, |
| 629 | costMode, |
| 630 | byok, |
| 631 | startTime, |
| 632 | request, |
| 633 | data, |
| 634 | state, |
| 635 | logger, |
| 636 | insertMessage, |
| 637 | }: { |
| 638 | userId: string |
| 639 | stripeCustomerId?: string | null |
| 640 | agentId: string |
| 641 | clientId: string | null |
| 642 | clientRequestId: string | null |
| 643 | costMode: string | undefined |
| 644 | byok: boolean |
| 645 | startTime: Date |
| 646 | request: unknown |
| 647 | data: OpenRouterStreamChatCompletionChunk |
| 648 | state: StreamState |
| 649 | logger: Logger |
| 650 | insertMessage: InsertMessageBigqueryFn |
| 651 | }): Promise<LineResult> { |
| 652 | const model = 'model' in data ? data.model : undefined |
| 653 | state = await handleStreamChunk({ |
| 654 | data, |
| 655 | state, |
| 656 | startTime, |
| 657 | logger, |
| 658 | userId, |
| 659 | agentId, |
| 660 | model, |
| 661 | }) |
| 662 | |
| 663 | if ('error' in data || !data.usage) { |
| 664 | // Stream not finished |
| 665 | return { state } |
| 666 | } |
| 667 | |
| 668 | const usageData = extractUsageAndCost(data.usage) |
| 669 | |
| 670 | // Insert into BigQuery (don't await) |
| 671 | insertMessageToBigQuery({ |
| 672 | messageId: data.id, |
| 673 | userId, |
| 674 | startTime, |
| 675 | request, |
| 676 | reasoningText: state.reasoningText, |
| 677 | responseText: state.responseText, |
| 678 | usageData, |
| 679 | logger, |
| 680 | insertMessageBigquery: insertMessage, |
no test coverage detected