|
244 | 244 | signalr.onMessageReceivedFromClient = onMessageReceivedFromClient; |
245 | 245 | signalr.onMessageReceivedFromCsr = onMessageReceivedFromClient; |
246 | 246 | signalr.onMessageReceivedFromAssistant = onMessageReceivedFromAssistant; |
| 247 | + signalr.onIntermediateMessageReceivedFromAssistant = onIntermediateMessageReceivedFromAssistant; |
247 | 248 |
|
248 | 249 | signalr.beforeReceiveLlmStreamMessage = beforeReceiveLlmStreamMessage; |
249 | 250 | signalr.onReceiveLlmStreamMessage = onReceiveLlmStreamMessage; |
|
522 | 523 | if (!message.is_streaming) { |
523 | 524 | if (dialogs[dialogs.length - 1]?.message_id === message.message_id |
524 | 525 | && dialogs[dialogs.length - 1]?.sender?.role === UserRole.Assistant |
| 526 | + && !dialogs[dialogs.length - 1]?.is_appended |
525 | 527 | ) { |
526 | 528 | dialogs[dialogs.length - 1] = { |
527 | 529 | ...message, |
|
544 | 546 | } |
545 | 547 | } |
546 | 548 |
|
| 549 | + /** @param {import('$conversationTypes').ChatResponseModel} message */ |
| 550 | + function onIntermediateMessageReceivedFromAssistant(message) { |
| 551 | + const idx = dialogs.findLastIndex(x => x.is_dummy); |
| 552 | + if (idx >= 0) { |
| 553 | + dialogs.splice(idx, 0, { |
| 554 | + ...message, |
| 555 | + is_chat_message: true, |
| 556 | + is_appended: true |
| 557 | + }); |
| 558 | + } else { |
| 559 | + dialogs.push({ |
| 560 | + ...message, |
| 561 | + is_chat_message: true, |
| 562 | + is_appended: true |
| 563 | + }); |
| 564 | + } |
| 565 | + |
| 566 | + refresh(); |
| 567 | +
|
| 568 | + if (isFrame) { |
| 569 | + window.parent.postMessage(message, "*"); |
| 570 | + } |
| 571 | + } |
| 572 | +
|
547 | 573 | /** @param {import('$conversationTypes').ChatResponseModel} message */ |
548 | 574 | function beforeReceiveLlmStreamMessage(message) { |
549 | 575 | isStreaming = true; |
|
552 | 578 | ) { |
553 | 579 | dialogs.push({ |
554 | 580 | ...message, |
555 | | - is_chat_message: false |
| 581 | + is_chat_message: false, |
| 582 | + is_dummy: true |
556 | 583 | }); |
557 | 584 | } |
558 | 585 | refresh(); |
|
566 | 593 |
|
567 | 594 | if (!USE_MESSAGE_QUEUE) { |
568 | 595 | if (lastMsg?.sender?.role === UserRole.Assistant |
569 | | - && lastMsg?.message_id === message.message_id |
| 596 | + && lastMsg?.is_dummy |
570 | 597 | ) { |
571 | 598 | setTimeout(() => { |
572 | 599 | dialogs[dialogs.length - 1].text += message.text; |
|
593 | 620 |
|
594 | 621 | const lastMsg = dialogs[dialogs.length - 1]; |
595 | 622 | if (lastMsg?.sender?.role !== UserRole.Assistant |
596 | | - || lastMsg?.message_id !== message.message_id |
| 623 | + || !lastMsg?.is_dummy |
597 | 624 | ) { |
598 | 625 | continue; |
599 | 626 | } |
|
0 commit comments