feat(web): register Keenable provider in WebUI, docs, and tests

Bring the Keenable search provider in line with the established
multi-file provider pattern so it surfaces everywhere the others do:

- settings_api.py: register in the web-search provider options so it
  appears in the WebUI settings dropdown (credential: api_key, optional).
- WebUI provider-brand: add keenable brand entry + brand test.
- docs/configuration.md: provider table row + config example.
- Harden _search_keenable: honor config.timeout and return explicit
  messages on HTTP status errors (429 / other), matching peer providers.
- Add env-key and HTTP-error tests; add the websocket settings whitelist
  assertion.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Ilya Gusev
2026-06-18 00:08:52 +08:00
committed by Xubin Ren
co-authored by Claude Opus 4.8
parent 4f6e5e9cb8
commit fa3e902ee8
7 changed files with 57 additions and 2 deletions
+5
View File
@@ -57,4 +57,9 @@ describe("provider brand logos", () => {
expect(providerBrand("bocha")?.logoUrls).toContain("https://bochaai.com/favicon.ico");
expect(providerBrand("bocha")?.initials).toBe("B");
});
it("keeps Keenable web search settings on the first-party brand domain", () => {
expect(providerBrand("keenable")?.logoUrls).toContain("https://keenable.ai/favicon.ico");
expect(providerBrand("keenable")?.initials).toBe("K");
});
});