From 0269ba2d0fe54a7614a970b75060d5ae7b23e45e Mon Sep 17 00:00:00 2001 From: cogwheel0 <172976095+cogwheel0@users.noreply.github.com> Date: Sun, 14 Dec 2025 18:35:04 +0530 Subject: [PATCH] fix(api): refactor feature flags to use 'features' object for compatibility --- lib/core/services/api_service.dart | 33 ++++++++++++++++++------------ 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/lib/core/services/api_service.dart b/lib/core/services/api_service.dart index 939824f..6673dc4 100644 --- a/lib/core/services/api_service.dart +++ b/lib/core/services/api_service.dart @@ -2826,25 +2826,32 @@ class ApiService { data['chat_id'] = conversationId; } - // Add feature flags if enabled - if (enableWebSearch) { - data['web_search'] = true; - _traceApi('Web search enabled in streaming request'); - } - if (enableImageGeneration) { - // Mirror web_search behavior for image generation - data['image_generation'] = true; - _traceApi('Image generation enabled in streaming request'); - } + // Add feature flags via 'features' object only (not as top-level params). + // Top-level 'web_search'/'image_generation' params are not recognized by + // OpenAI and cause errors when forwarded. Open WebUI expects these in the + // 'features' object which is properly handled by the middleware. + // See: https://github.com/cogwheel0/conduit/issues/271 - if (enableWebSearch || enableImageGeneration) { - // Include features map for compatibility + // Check if memory is enabled in user's OpenWebUI settings + // This syncs with the user's preference from the web interface + final bool memoryEnabled = userSettings?['memory'] == true; + + if (enableWebSearch || enableImageGeneration || memoryEnabled) { data['features'] = { 'web_search': enableWebSearch, 'image_generation': enableImageGeneration, 'code_interpreter': false, - 'memory': false, + 'memory': memoryEnabled, }; + if (enableWebSearch) { + _traceApi('Web search enabled in streaming request'); + } + if (enableImageGeneration) { + _traceApi('Image generation enabled in streaming request'); + } + if (memoryEnabled) { + _traceApi('Memory enabled in streaming request (from user settings)'); + } } data['id'] = messageId;