feat(requesty): add automated model catalog sync#2805
Conversation
Adds a Requesty sync provider so its catalog stays up to date via the existing per-provider automation, mirroring the OpenRouter aggregator. Requesty (https://requesty.ai) is an OpenAI-compatible LLM gateway whose /v1/models endpoint reports per-model pricing, context window, max output tokens, and capability flags. The sync module reuses the OpenRouter aggregator's canonical base-model resolver and only admits models that map onto an existing models.dev base model, so entries stay factored via base_model and the catalog stays curated rather than mirroring every proxied sub-provider variant. It is additive (sameModel + deleteMissing: false) so hand-curated entries are never overwritten or removed. Registers requesty in the sync provider registry and the aggregators group; running the sync adds 43 currently-served models.
|
AUTOMATED REVIEW:
|
|
AUTOMATED REVIEW: Blocking merge: |
What
Adds a Requesty sync provider so the Requesty catalog stays up to date through the existing per-provider sync automation, mirroring the OpenRouter aggregator. Today Requesty's entries are hand-maintained (38 models); this lets
bun models:sync requesty(and the scheduled automation) keep it current.How
Requesty (https://requesty.ai) is an OpenAI-compatible LLM gateway. Its
/v1/modelsendpoint reports per-modelinput_price/output_price/cached_price(USD per token),context_window,max_output_tokens, and capability flags.packages/core/src/sync/providers/requesty.ts— aSyncProviderthat fetcheshttps://router.requesty.ai/v1/models, translates pricing to USD-per-million, and reuses the OpenRouter aggregator'sresolveCanonicalBaseModel/factorBaseModel(Requesty uses the sameprovider/modelid convention).packages/core/src/sync/index.ts(providers registry, type, and theaggregatorsgroup).Curation / safety choices:
parseModelsonly admits models that resolve to an existing canonical models.dev base model, so entries stay factored viabase_modeland the catalog isn't flooded with every proxied sub-provider variant (Requesty serves 500+ ids, many re-proxied). It also drops Requesty routing-policy aliases (policy/*).deleteMissing: falseandsameModel: () => truemake the sync additive: it creates newly-served models but never overwrites or removes the hand-curated entries (Requesty's API doesn't carry every field a curated TOML may have, e.g.cache_writetiers or pdf modality).Testing
bun models:sync requestyruns against the live API and adds 43 currently-served models (alibaba/anthropic/deepseek/google/nvidia/openai/xai/xiaomi/zai), all factored viabase_model. Re-running is idempotent (0 changes).bun validatepasses on the generated catalog.bun test— the sync tests pass; the one failing test (open-weight model metadata includes weights links) also fails on a cleandevcheckout, i.e. it's pre-existing and unrelated to this change.I work at Requesty. This mirrors the existing OpenRouter aggregator sync as closely as possible. Happy to adjust the curation rules (e.g. which model families to include) or close it if it's not a fit.