Priority: High
Related: #199
Replaces: #223
All tool mappers silently drop WebSearch config fields the underlying API doesn't support. No warning, no error — the user thinks they're filtering domains but nothing happens.
Current behavior per provider:
| Provider |
allowed_domains |
blocked_domains |
max_uses |
| Anthropic |
mapped |
mapped |
mapped |
| Google |
dropped |
mapped (as exclude_domains) |
dropped |
| OpenResponses/OpenAI |
mapped (as filters.allowed_domains) |
dropped |
dropped |
| Groq |
dropped |
dropped |
dropped |
| Moonshot |
dropped |
dropped |
dropped |
Fix: Emit UnsupportedParameterWarning (not an error) when a non-None WebSearch field is dropped.
This follows celeste's existing pattern from PR #212 — warn and drop, don't error. Celeste is a primitive SDK (like Anthropic SDK, OpenAI SDK), not a framework. Primitives don't gatekeep — they normalize what they can and warn when something is lost. Users who want strict behavior can promote via warnings.filterwarnings("error", category=UnsupportedParameterWarning).
Example warning message:
WebSearch.blocked_domains is not supported by OpenResponses and will be ignored.
If this is now supported, please file an issue. Workaround: use a raw dict tool
(e.g. tools=[{"type": "web_search", "filters": {"blocked_domains": [...]}}]).
Files:
src/celeste/protocols/openresponses/tools.py (WebSearchMapper — warn on blocked_domains, max_uses)
src/celeste/providers/google/generate_content/tools.py (WebSearchMapper — warn on allowed_domains, max_uses)
src/celeste/providers/groq/chat/tools.py (WebSearchMapper — warn on all 3)
src/celeste/providers/moonshot/chat/tools.py (WebSearchMapper — warn on all 3)
Priority: High
Related: #199
Replaces: #223
All tool mappers silently drop WebSearch config fields the underlying API doesn't support. No warning, no error — the user thinks they're filtering domains but nothing happens.
Current behavior per provider:
Fix: Emit
UnsupportedParameterWarning(not an error) when a non-None WebSearch field is dropped.This follows celeste's existing pattern from PR #212 — warn and drop, don't error. Celeste is a primitive SDK (like Anthropic SDK, OpenAI SDK), not a framework. Primitives don't gatekeep — they normalize what they can and warn when something is lost. Users who want strict behavior can promote via
warnings.filterwarnings("error", category=UnsupportedParameterWarning).Example warning message:
Files:
src/celeste/protocols/openresponses/tools.py(WebSearchMapper — warn on blocked_domains, max_uses)src/celeste/providers/google/generate_content/tools.py(WebSearchMapper — warn on allowed_domains, max_uses)src/celeste/providers/groq/chat/tools.py(WebSearchMapper — warn on all 3)src/celeste/providers/moonshot/chat/tools.py(WebSearchMapper — warn on all 3)