Skip to content

Commit 6fecedc

Browse files
authored
Merge pull request #385 from iceljc/features/refine-chat-window
Features/refine chat window
2 parents 3996704 + e607eea commit 6fecedc

File tree

6 files changed

+55
-3
lines changed

6 files changed

+55
-3
lines changed

src/lib/helpers/types/conversationTypes.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,8 @@ IRichContent.prototype.language;
168168
* @property {boolean} has_message_files
169169
* @property {boolean} is_chat_message
170170
* @property {boolean} is_streaming
171+
* @property {boolean} is_dummy
172+
* @property {boolean} is_appended
171173
* @property {string} [indication]
172174
*/
173175

src/lib/scss/custom/pages/_knowledgebase.scss

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -288,6 +288,7 @@
288288
display: flex;
289289
gap: 5px;
290290
justify-content: flex-end;
291+
min-width: 300px;
291292

292293
.collection-dropdown {
293294
width: 100%;
@@ -305,6 +306,12 @@
305306
}
306307
}
307308

309+
.collection-add-container {
310+
display: flex;
311+
gap: 5px;
312+
justify-content: flex-end;
313+
}
314+
308315
@media (max-width: 600px) {
309316
justify-content: center !important;
310317

src/lib/services/signalr-service.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ export const signalr = {
2121
/** @type {import('$conversationTypes').OnMessageReceived} */
2222
onMessageReceivedFromAssistant: () => {},
2323

24+
/** @type {import('$conversationTypes').OnMessageReceived} */
25+
onIntermediateMessageReceivedFromAssistant: () => {},
26+
2427
/** @type {import('$conversationTypes').OnMessageReceived} */
2528
onNotificationGenerated: () => {},
2629

@@ -109,6 +112,15 @@ export const signalr = {
109112
}
110113
});
111114

115+
connection.on('OnIntermediateMessageReceivedFromAssistant', (message) => {
116+
// do something when receiving a message, such as updating the UI or showing a notification
117+
const obj = JSON.parse(message);
118+
if (conversationId === obj?.conversation_id) {
119+
console.log(`[OnIntermediateMessageReceivedFromAssistant] ${obj.sender.role}: ${obj.text}`);
120+
this.onIntermediateMessageReceivedFromAssistant(obj);
121+
}
122+
});
123+
112124
connection.on('OnNotificationGenerated', (message) => {
113125
const obj = JSON.parse(message);
114126
if (conversationId === obj?.conversation_id) {

src/routes/chat/[agentId]/[conversationId]/chat-box.svelte

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,7 @@
244244
signalr.onMessageReceivedFromClient = onMessageReceivedFromClient;
245245
signalr.onMessageReceivedFromCsr = onMessageReceivedFromClient;
246246
signalr.onMessageReceivedFromAssistant = onMessageReceivedFromAssistant;
247+
signalr.onIntermediateMessageReceivedFromAssistant = onIntermediateMessageReceivedFromAssistant;
247248
248249
signalr.beforeReceiveLlmStreamMessage = beforeReceiveLlmStreamMessage;
249250
signalr.onReceiveLlmStreamMessage = onReceiveLlmStreamMessage;
@@ -522,6 +523,7 @@
522523
if (!message.is_streaming) {
523524
if (dialogs[dialogs.length - 1]?.message_id === message.message_id
524525
&& dialogs[dialogs.length - 1]?.sender?.role === UserRole.Assistant
526+
&& !dialogs[dialogs.length - 1]?.is_appended
525527
) {
526528
dialogs[dialogs.length - 1] = {
527529
...message,
@@ -544,6 +546,30 @@
544546
}
545547
}
546548
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+
547573
/** @param {import('$conversationTypes').ChatResponseModel} message */
548574
function beforeReceiveLlmStreamMessage(message) {
549575
isStreaming = true;
@@ -552,7 +578,8 @@
552578
) {
553579
dialogs.push({
554580
...message,
555-
is_chat_message: false
581+
is_chat_message: false,
582+
is_dummy: true
556583
});
557584
}
558585
refresh();
@@ -566,7 +593,7 @@
566593
567594
if (!USE_MESSAGE_QUEUE) {
568595
if (lastMsg?.sender?.role === UserRole.Assistant
569-
&& lastMsg?.message_id === message.message_id
596+
&& lastMsg?.is_dummy
570597
) {
571598
setTimeout(() => {
572599
dialogs[dialogs.length - 1].text += message.text;
@@ -593,7 +620,7 @@
593620
594621
const lastMsg = dialogs[dialogs.length - 1];
595622
if (lastMsg?.sender?.role !== UserRole.Assistant
596-
|| lastMsg?.message_id !== message.message_id
623+
|| !lastMsg?.is_dummy
597624
) {
598625
continue;
599626
}

src/routes/page/knowledge-base/documents/+page.svelte

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1108,6 +1108,8 @@
11081108
on:select={e => changeCollection(e)}
11091109
/>
11101110
</div>
1111+
</div>
1112+
<div class="collection-add-container">
11111113
<div
11121114
class="line-align-center"
11131115
data-bs-toggle="tooltip"

src/routes/page/knowledge-base/question-answer/+page.svelte

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1078,6 +1078,8 @@
10781078
on:select={e => changeCollection(e)}
10791079
/>
10801080
</div>
1081+
</div>
1082+
<div class="collection-add-container">
10811083
<div
10821084
class="line-align-center"
10831085
data-bs-toggle="tooltip"

0 commit comments

Comments
 (0)