From 318e3951ffb4f31e1d7af0b8ebdb1b99cea68667 Mon Sep 17 00:00:00 2001 From: fujie Date: Sat, 21 Mar 2026 14:59:30 +0800 Subject: [PATCH] fix(filters): isolate is_copilot_model to metadata and fix single-pipe match --- .../async_context_compression.py | 3 ++- .../github_copilot_sdk_files_filter.py | 13 ++++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/plugins/filters/async-context-compression/async_context_compression.py b/plugins/filters/async-context-compression/async_context_compression.py index c15d9fa..66c8fca 100644 --- a/plugins/filters/async-context-compression/async_context_compression.py +++ b/plugins/filters/async-context-compression/async_context_compression.py @@ -2713,7 +2713,8 @@ class Filter: Check if compression should be skipped. Returns True if: """ - if body.get("is_copilot_model", False): + is_copilot = body.get("is_copilot_model", False) or body.get("metadata", {}).get("is_copilot_model", False) + if is_copilot: return True return False diff --git a/plugins/filters/github_copilot_sdk_files_filter/github_copilot_sdk_files_filter.py b/plugins/filters/github_copilot_sdk_files_filter/github_copilot_sdk_files_filter.py index e989486..17d4991 100644 --- a/plugins/filters/github_copilot_sdk_files_filter/github_copilot_sdk_files_filter.py +++ b/plugins/filters/github_copilot_sdk_files_filter/github_copilot_sdk_files_filter.py @@ -51,8 +51,12 @@ class Filter: # 1) Prefix match (most reliable for OpenWebUI model id formats) raw_prefixes = self.valves.target_model_prefixes or "" prefixes = [p.strip().lower() for p in raw_prefixes.split(",") if p.strip()] - if any(current.startswith(prefix) for prefix in prefixes): - return True + for prefix in prefixes: + if current.startswith(prefix): + return True + # Match exact string without trailing dot for single-pipe endpoints + if prefix.endswith(".") and current == prefix[:-1]: + return True # 2) Keyword fallback for backward compatibility keyword = (self.valves.target_model_keyword or "").strip().lower() @@ -114,7 +118,10 @@ class Filter: # Check if it's a Copilot model is_copilot_model = self._is_copilot_model(current_model) - body["is_copilot_model"] = is_copilot_model + + if "metadata" not in body: + body["metadata"] = {} + body["metadata"]["is_copilot_model"] = is_copilot_model await self._emit_debug_log( __event_emitter__,