8cf9f1c882
Add Keenable Search alongside the existing DuckDuckGo / Bing / Google / Tavily / Ollama / Baidu / SearXNG providers. - internal/infrastructure/web_search/keenable.go: KeenableProvider implementing the WebSearchProvider interface, following the Tavily provider pattern. Keyless by default: with no API key it calls the public endpoint (/v1/search/public, rate-limited); a key switches to /v1/search and lifts the cap. Base URL is hardcoded (SSRF-safe), proxy is honored. - Registered "keenable" in the container registry. - Added the keenable provider type + type metadata (RequiresAPIKey=false) and service validation (no required key, like DuckDuckGo). - Provider-specific empty-results diagnostic (keyless rate-limit hint). - Frontend: extend the provider union type with 'keenable'. - Unit tests: keyless vs keyed endpoint, attribution header, maxResults trim, result mapping, error status, name. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>