Merge pull request #227 from cogwheel0/feat-add-parent-message-id
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,
|
Map<String, dynamic>? backgroundTasks,
|
||||||
String? responseMessageId,
|
String? responseMessageId,
|
||||||
Map<String, dynamic>? userSettings,
|
Map<String, dynamic>? userSettings,
|
||||||
|
String? parentMessageId,
|
||||||
}) {
|
}) {
|
||||||
final streamController = StreamController<String>();
|
final streamController = StreamController<String>();
|
||||||
|
|
||||||
@@ -2870,6 +2871,11 @@ class ApiService {
|
|||||||
if (conversationId != null) {
|
if (conversationId != null) {
|
||||||
data['chat_id'] = conversationId;
|
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
|
// Attach background_tasks if provided
|
||||||
if (backgroundTasks != null && backgroundTasks.isNotEmpty) {
|
if (backgroundTasks != null && backgroundTasks.isNotEmpty) {
|
||||||
|
|||||||
@@ -1599,6 +1599,15 @@ Future<void> regenerateMessage(
|
|||||||
(toolServers != null && toolServers.isNotEmpty);
|
(toolServers != null && toolServers.isNotEmpty);
|
||||||
final bool isBackgroundWebSearchPre = webSearchEnabled;
|
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)
|
// Dispatch using unified send pipeline (background tools flow)
|
||||||
final bool isBackgroundFlowPre =
|
final bool isBackgroundFlowPre =
|
||||||
isBackgroundToolsFlowPre ||
|
isBackgroundToolsFlowPre ||
|
||||||
@@ -1621,6 +1630,7 @@ Future<void> regenerateMessage(
|
|||||||
backgroundTasks: bgTasks,
|
backgroundTasks: bgTasks,
|
||||||
responseMessageId: assistantMessageId,
|
responseMessageId: assistantMessageId,
|
||||||
userSettings: userSettingsData,
|
userSettings: userSettingsData,
|
||||||
|
parentMessageId: lastUserMessageId,
|
||||||
);
|
);
|
||||||
|
|
||||||
final stream = response.stream;
|
final stream = response.stream;
|
||||||
@@ -2016,8 +2026,9 @@ Future<void> _sendMessageInternal(
|
|||||||
|
|
||||||
// Get selected toggle filter IDs
|
// Get selected toggle filter IDs
|
||||||
final selectedFilterIds = ref.read(selectedFilterIdsProvider);
|
final selectedFilterIds = ref.read(selectedFilterIdsProvider);
|
||||||
final List<String>? filterIdsForApi =
|
final List<String>? filterIdsForApi = selectedFilterIds.isNotEmpty
|
||||||
selectedFilterIds.isNotEmpty ? selectedFilterIds : null;
|
? selectedFilterIds
|
||||||
|
: null;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Pre-seed assistant skeleton on server to ensure correct chain
|
// Pre-seed assistant skeleton on server to ensure correct chain
|
||||||
@@ -2230,6 +2241,15 @@ Future<void> _sendMessageInternal(
|
|||||||
(toolServers != null && toolServers.isNotEmpty);
|
(toolServers != null && toolServers.isNotEmpty);
|
||||||
final bool isBackgroundWebSearchPre = webSearchEnabled;
|
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 =
|
final bool shouldBindSession =
|
||||||
wantSessionBinding &&
|
wantSessionBinding &&
|
||||||
(isBackgroundToolsFlowPre ||
|
(isBackgroundToolsFlowPre ||
|
||||||
@@ -2255,6 +2275,7 @@ Future<void> _sendMessageInternal(
|
|||||||
backgroundTasks: bgTasks,
|
backgroundTasks: bgTasks,
|
||||||
responseMessageId: assistantMessageId,
|
responseMessageId: assistantMessageId,
|
||||||
userSettings: userSettingsData,
|
userSettings: userSettingsData,
|
||||||
|
parentMessageId: lastUserMessageId,
|
||||||
);
|
);
|
||||||
|
|
||||||
final stream = response.stream;
|
final stream = response.stream;
|
||||||
|
|||||||
Reference in New Issue
Block a user