f72f7b93d5
* feat(llm): add OpenRouter app attribution headers (#339) Attach EvoScientist app-attribution at the shared model-init layer so all OpenRouter calls are credited to the project. langchain-openrouter maps app_url/app_title/app_categories -> HTTP-Referer / X-Title / X-OpenRouter-Categories. Applied only for the openrouter provider, via setdefault so explicit caller kwargs win. Configurable through new openrouter_http_referer / openrouter_app_title / openrouter_app_categories settings and their EVOSCIENTIST_OPENROUTER_* env vars. Closes #339 * refactor(llm): centralize OpenRouter attribution defaults + cap categories Address PR #344 review: - Define the app-attribution default constants once in config/settings.py (the config fields and llm/models.py both use them) instead of duplicating the literals across the two modules. - Reduce the default categories to creative-writing,personal-agent and cap the sent list to OpenRouter's 2-per-request limit, warning when a configured list exceeds it, so extras are dropped predictably (and surfaced) here rather than being silently truncated server-side. --------- Co-authored-by: Xi Zhang <106144707+X-iZhang@users.noreply.github.com>