feat(providers): add PPQ (PayPerQ) as aggregator provider

Add PPQ (PayPerQ) as a first-class provider with aggregator support,
following the same pattern as OpenRouter.

- ProviderConfig in auth.py with PPQ_API_KEY / PPQ_BASE_URL env vars
- HermesOverlay in providers.py with is_aggregator=True
- Dynamic model fetching via /v1/models (no static model list)
- Aliases: payperq, ppq.ai -> ppq
- Label override: PPQ (PayPerQ)
- Full test coverage: registry, aliases, labels, live catalog, fallback
This commit is contained in:
Joi Hadrian 2026-04-18 07:38:55 +00:00
parent 9de555f3e3
commit df3b55e4f0
5 changed files with 100 additions and 0 deletions

View file

@ -90,6 +90,13 @@ HERMES_OVERLAYS: Dict[str, HermesOverlay] = {
extra_env_vars=("GLM_API_KEY", "ZAI_API_KEY", "Z_AI_API_KEY"),
base_url_env_var="GLM_BASE_URL",
),
"ppq": HermesOverlay(
transport="openai_chat",
is_aggregator=True,
extra_env_vars=("PPQ_API_KEY",),
base_url_override="https://api.ppq.ai",
base_url_env_var="PPQ_BASE_URL",
),
"kimi-for-coding": HermesOverlay(
transport="openai_chat",
base_url_env_var="KIMI_BASE_URL",
@ -203,6 +210,10 @@ ALIASES: Dict[str, str] = {
"z.ai": "zai",
"zhipu": "zai",
# ppq
"payperq": "ppq",
"ppq.ai": "ppq",
# xai
"x-ai": "xai",
"x.ai": "xai",
@ -313,6 +324,7 @@ _LABEL_OVERRIDES: Dict[str, str] = {
"copilot-acp": "GitHub Copilot ACP",
"stepfun": "StepFun Step Plan",
"xiaomi": "Xiaomi MiMo",
"ppq": "PPQ (PayPerQ)",
"local": "Local endpoint",
"bedrock": "AWS Bedrock",
"ollama-cloud": "Ollama Cloud",