SurfSense/surfsense_backend/tests/unit
Thibault Jaigu 2ff7ea4cb6 feat: add Requesty as a model provider
Add Requesty (https://requesty.ai), an OpenAI-compatible LLM router, as a
model provider by mirroring the existing OpenRouter integration.

Backend:
- app/services/requesty_model_normalizer.py: normalizes Requesty's /v1/models
  catalogue, mapping its flat capability booleans (supports_tool_calling/
  supports_vision/supports_image_generation) and context_window field onto the
  shared normalized shape (Requesty differs from OpenRouter's architecture +
  supported_parameters + context_length layout)
- provider_registry.py: Requesty ProviderSpec (OpenAI-compatible, base URL
  https://router.requesty.ai/v1, REQUESTY_API_KEY bearer auth)
- model_connection_service.py: key verification + live model discovery
- quality_score.py: Requesty score entry
- unit tests mirroring the OpenRouter normalizer coverage

Frontend:
- Requesty provider icon + registration, metadata entry, and base-url hint

Signed-off-by: Thibault Jaigu <thibault.jaigu@gmail.com>
2026-07-13 09:42:30 +01:00
..
adapters test: bootstrap pytest environment for backend 2026-02-24 18:19:56 +02:00
agents Merge remote-tracking branch 'upstream/dev' into feat/instagram-scraper 2026-07-11 04:31:11 +05:30
automations Merge upstream/ci_mvp (google maps scrapers) into feature-ci_phase-4-7 2026-07-03 12:37:12 +02:00
capabilities Merge remote-tracking branch 'upstream/dev' into feat/instagram-scraper 2026-07-11 04:31:11 +05:30
config Support separate embedding base URL 2026-07-05 22:33:09 -04:00
connector_indexers refactor(connectors): remove legacy web-crawler KB indexer paths (keep enums) 2026-07-03 11:53:33 +02:00
connectors chore: ran linting 2026-04-07 05:55:39 +05:30
db feat: improved agent streaming 2026-04-29 07:20:31 -07:00
e2e_fakes test(backend): enhance Drive file filtering and add unit tests for _drive_list_files 2026-05-06 17:58:58 +05:30
etl_pipeline test(etl-cache): cover over-budget eviction selection 2026-06-12 11:50:52 +02:00
event_bus test: rename SearchSpace -> Workspace across tests + fixtures (Phase 2 Wave F) 2026-06-26 18:36:46 +02:00
gateway test: rename SearchSpace -> Workspace across tests + fixtures (Phase 2 Wave F) 2026-06-26 18:36:46 +02:00
google_unification chore: ran linting 2026-05-09 05:28:09 +05:30
indexing_pipeline feat(native-connector): added google maps places & reviews scrapers 2026-07-02 21:58:24 -07:00
middleware test: rename SearchSpace -> Workspace across tests + fixtures (Phase 2 Wave F) 2026-06-26 18:36:46 +02:00
notifications test: rename SearchSpace -> Workspace across tests + fixtures (Phase 2 Wave F) 2026-06-26 18:36:46 +02:00
observability feat(workspace): remove AI file sorting feature and related components 2026-07-06 10:50:20 +05:30
platforms Merge remote-tracking branch 'upstream/dev' into feat/instagram-scraper 2026-07-11 04:31:11 +05:30
podcasts test: rename SearchSpace -> Workspace across tests + fixtures (Phase 2 Wave F) 2026-06-26 18:36:46 +02:00
proprietary chore: bumped version to 0.0.31 2026-07-06 21:43:15 -07:00
routes test: rename SearchSpace -> Workspace across tests + fixtures (Phase 2 Wave F) 2026-06-26 18:36:46 +02:00
services feat: add Requesty as a model provider 2026-07-13 09:42:30 +01:00
tasks Merge pull request #1570 from pelazas/fix/scheduler-task-map-bookstack 2026-07-08 15:07:38 -07:00
utils chore: bumped version to 0.0.31 2026-07-06 21:43:15 -07:00
__init__.py test: bootstrap pytest environment for backend 2026-02-24 18:19:56 +02:00
test_error_contract.py chore: linting 2026-04-22 01:05:31 -07:00
test_obsidian_plugin_indexer.py chore: linting 2026-04-27 14:04:50 -07:00
test_pat_fail_closed_static.py feat(native-connector): added google maps places & reviews scrapers 2026-07-02 21:58:24 -07:00
test_zero_authz_static.py fix(authz):add zero context authorization checks 2026-06-23 12:55:25 +05:30