feat(chat): add parent message ID for proper message linking
This commit is contained in:
@@ -2697,6 +2697,7 @@ class ApiService {
|
||||
Map<String, dynamic>? backgroundTasks,
|
||||
String? responseMessageId,
|
||||
Map<String, dynamic>? userSettings,
|
||||
String? parentMessageId,
|
||||
}) {
|
||||
final streamController = StreamController<String>();
|
||||
|
||||
@@ -2870,6 +2871,11 @@ class ApiService {
|
||||
if (conversationId != null) {
|
||||
data['chat_id'] = conversationId;
|
||||
}
|
||||
// Include parent_id for proper message linking (required since OpenWebUI 0.6.41)
|
||||
// This links the assistant response to the user message it's responding to
|
||||
if (parentMessageId != null) {
|
||||
data['parent_id'] = parentMessageId;
|
||||
}
|
||||
|
||||
// Attach background_tasks if provided
|
||||
if (backgroundTasks != null && backgroundTasks.isNotEmpty) {
|
||||
|
||||
@@ -1599,6 +1599,15 @@ Future<void> regenerateMessage(
|
||||
(toolServers != null && toolServers.isNotEmpty);
|
||||
final bool isBackgroundWebSearchPre = webSearchEnabled;
|
||||
|
||||
// Find the last user message ID for proper parent linking
|
||||
String? lastUserMessageId;
|
||||
for (int i = messages.length - 1; i >= 0; i--) {
|
||||
if (messages[i].role == 'user') {
|
||||
lastUserMessageId = messages[i].id;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Dispatch using unified send pipeline (background tools flow)
|
||||
final bool isBackgroundFlowPre =
|
||||
isBackgroundToolsFlowPre ||
|
||||
@@ -1621,6 +1630,7 @@ Future<void> regenerateMessage(
|
||||
backgroundTasks: bgTasks,
|
||||
responseMessageId: assistantMessageId,
|
||||
userSettings: userSettingsData,
|
||||
parentMessageId: lastUserMessageId,
|
||||
);
|
||||
|
||||
final stream = response.stream;
|
||||
@@ -2016,8 +2026,9 @@ Future<void> _sendMessageInternal(
|
||||
|
||||
// Get selected toggle filter IDs
|
||||
final selectedFilterIds = ref.read(selectedFilterIdsProvider);
|
||||
final List<String>? filterIdsForApi =
|
||||
selectedFilterIds.isNotEmpty ? selectedFilterIds : null;
|
||||
final List<String>? filterIdsForApi = selectedFilterIds.isNotEmpty
|
||||
? selectedFilterIds
|
||||
: null;
|
||||
|
||||
try {
|
||||
// Pre-seed assistant skeleton on server to ensure correct chain
|
||||
@@ -2230,6 +2241,15 @@ Future<void> _sendMessageInternal(
|
||||
(toolServers != null && toolServers.isNotEmpty);
|
||||
final bool isBackgroundWebSearchPre = webSearchEnabled;
|
||||
|
||||
// Find the last user message ID for proper parent linking
|
||||
String? lastUserMessageId;
|
||||
for (int i = messages.length - 1; i >= 0; i--) {
|
||||
if (messages[i].role == 'user') {
|
||||
lastUserMessageId = messages[i].id;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
final bool shouldBindSession =
|
||||
wantSessionBinding &&
|
||||
(isBackgroundToolsFlowPre ||
|
||||
@@ -2255,6 +2275,7 @@ Future<void> _sendMessageInternal(
|
||||
backgroundTasks: bgTasks,
|
||||
responseMessageId: assistantMessageId,
|
||||
userSettings: userSettingsData,
|
||||
parentMessageId: lastUserMessageId,
|
||||
);
|
||||
|
||||
final stream = response.stream;
|
||||
|
||||
Reference in New Issue
Block a user