odysseus/services
Léo edc94a244e fix(search): bound and police the scholarly metadata lookups
The arXiv and OpenAlex title resolvers called two hardcoded endpoints with a
hand-written "Odysseus/0.20" User-Agent, no outbound-URL policy, and a full
12s timeout each. APP_VERSION was already 1.0.3, so the agent string was wrong
the moment it was written, and a scholarly query could hold a user-facing
search open for the sum of all three hops.

Move the endpoints to named constants, build the User-Agent from APP_VERSION,
run both calls through check_outbound_url (they follow redirects, so the final
host is not the one in the constant), and give the whole SearXNG -> OpenAlex ->
arXiv chain one shared wall-clock budget.

The budget is a ContextVar rather than a parameter so the existing test doubles
for _openalex_title_results and _arxiv_title_results keep working unchanged.
2026-09-23 11:09:48 +02:00
..
docs fix(docs): map live VectorRAG result shapes (#5960) 2026-08-17 00:07:12 +01:00
faces Odysseus v1.0 2026-05-31 23:58:26 +09:00
hwfit Squash Odysseus development history 2026-09-11 06:04:19 +00:00
memory Harden maintainer-preview harness and review fixes 2026-09-21 06:54:03 +00:00
research fix: services research source extraction crashes on a non-dict finding (#1868) 2026-07-20 09:39:16 +02:00
search fix(search): bound and police the scholarly metadata lookups 2026-09-23 11:09:48 +02:00
shell fix: use running loop for shell stream deadlines (#1694) 2026-06-03 13:37:46 +09:00
stt STT: clean temp audio files on transcription failure 2026-06-02 20:43:24 +09:00
tts improve cache size calculation by filtering file types 2026-07-29 12:47:55 +03:00
youtube fix(youtube): consolidate duplicate handler 2026-06-15 15:03:41 +09:00
__init__.py Squash Odysseus development history 2026-09-11 06:04:19 +00:00