merge: pull mhiqrambg/9router-mibp-version into master

Merge the MIBP fork (v1.0.14, synced to decolua v0.5.81) into our master
(0.5.86) at merge-base a8c9d380. Keep HEAD's infra policy (untracked
lockfile, mirror-configurable Dockerfile, decolua GHCR/DockerHub, README)
while absorbing the fork's engine features:

- feat(providers): freebuff provider + executor + OAuth + usage tracking
- feat(providers): cline free-tier models, Freebuff catalog sync
- feat(proxy-pools): pool egress geo probe, proxy-pool fitness + retry
- fix(usage): hide noAuth providers (devin-cli, mimo-free) from usage list
- test(harness): DATA_DIR isolation so tests never write the real DB
- fix(codebuddy-intl): probe token in connection test, OAuth by identity
- chore(guards): durable markers so fixes aren't silently dropped

Resolutions:
- registry/index.js regenerated deterministically (122 providers, alpha
  order). trae/windsurf/devin-cli stay hidden per HEAD security posture
  (no tool-calling / local-agent shell access) — not re-enabled.
- nonStreamingHandler: drop the generic unconditional unwrapDataEnvelope
  call; envelope unwrap stays scoped to clineEnvelope-quirk providers
  (unwrapClineEnvelope), fixing a latent mibp bug where non-opted-in
  providers ({success,data} bodies) were stripped.
- Drop fork-local Docker lockfile policy (package-lock.json, AGENTS.md,
  .npmrc verify scripts): this repo keeps package-lock untracked (nix
  build deploy). .npmrc (audit=false/fund=false) kept.
- Keep gitbook-pages workflow enabled (ours); mibp disabled it.
- Restore 13 upstream tests mibp deleted (they cover features we keep).

Verified: 2841 tests, 2687 pass, fail set byte-identical to HEAD (zero
new regressions); providers/alias/oauth baselines regenerated to merged
code and all green.
This commit is contained in:
asepharyana
2026-09-23 11:44:58 +07:00
96 changed files with 7709 additions and 1787 deletions
+2
View File
@@ -149,6 +149,7 @@
"deepseek": "deepseek",
"featherless": "featherless",
"fireworks": "fireworks",
"freebuff": "fb",
"gemini": "gemini",
"gemini-cli": "gc",
"github": "gh",
@@ -234,6 +235,7 @@
"edge-tts",
"elevenlabs-tts-models",
"fal-ai",
"fb",
"featherless",
"fireworks",
"gc",
+137 -115
View File
@@ -15,6 +15,22 @@
},
"format": "openai"
},
"alims-intl": {
"baseUrl": "https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions",
"headers": {},
"quirks": {
"preserveCacheControl": true
},
"format": "openai"
},
"alitp-intl": {
"baseUrl": "https://token-plan.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/chat/completions",
"headers": {},
"quirks": {
"preserveCacheControl": true
},
"format": "openai"
},
"anthropic": {
"baseUrl": "https://api.anthropic.com/v1/messages",
"format": "claude",
@@ -52,6 +68,16 @@
"clientSecret": "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",
"tokenUrl": "https://oauth2.googleapis.com/token"
},
"api-airforce": {
"baseUrl": "https://api.airforce/v1/chat/completions",
"validateUrl": "https://api.airforce/v1/models",
"headers": {
"HTTP-Referer": "https://endpoint-proxy.local",
"X-Title": "Endpoint Proxy"
},
"forceStream": true,
"format": "openai"
},
"assemblyai": {
"baseUrl": "https://api.assemblyai.com/v1/audio/transcriptions",
"validateUrl": "https://api.assemblyai.com/v1/account",
@@ -62,11 +88,26 @@
"headers": {},
"format": "openai"
},
"baidu": {
"baseUrl": "https://qianfan.baidubce.com/v2/chat/completions",
"validateUrl": "https://qianfan.baidubce.com/v2/models",
"format": "openai"
},
"bazaarlink": {
"baseUrl": "https://bazaarlink.ai/api/v1/chat/completions",
"validateUrl": "https://bazaarlink.ai/api/v1/models",
"format": "openai"
},
"blackbox": {
"baseUrl": "https://api.blackbox.ai/v1/chat/completions",
"thinkingFormat": "openai",
"format": "openai"
},
"bluesminds": {
"baseUrl": "https://api.bluesminds.com/v1/chat/completions",
"validateUrl": "https://api.bluesminds.com/v1/models",
"format": "openai"
},
"byteplus": {
"baseUrl": "https://ark.ap-southeast.bytepluses.com/api/coding/v3/chat/completions",
"headers": {},
@@ -93,7 +134,7 @@
"Anthropic-Version": "2023-06-01",
"Anthropic-Beta": "claude-code-20250219,oauth-2025-04-20,interleaved-thinking-2025-05-14,context-management-2025-06-27,prompt-caching-scope-2026-01-05,advanced-tool-use-2025-11-20,effort-2025-11-24,structured-outputs-2025-12-15,fast-mode-2026-02-01,redact-thinking-2026-02-12,token-efficient-tools-2026-03-28",
"Anthropic-Dangerous-Direct-Browser-Access": "true",
"User-Agent": "claude-cli/2.1.258 (external, sdk-cli)",
"User-Agent": "claude-cli/2.1.280 (external, sdk-cli)",
"X-App": "cli",
"X-Stainless-Helper-Method": "stream",
"X-Stainless-Retry-Count": "0",
@@ -141,6 +182,7 @@
"combined": true,
"header": "Authorization",
"scheme": "bearer",
"preserveHookAuth": true,
"hooks": [
"clineHeaders"
]
@@ -160,6 +202,7 @@
"combined": true,
"header": "Authorization",
"scheme": "bearer",
"preserveHookAuth": true,
"hooks": [
"clineHeaders"
]
@@ -195,6 +238,29 @@
"format": "openai",
"tokenUrl": "https://copilot.tencent.com/v2/plugin/auth/token"
},
"codebuddy-intl": {
"baseUrl": "https://www.codebuddy.ai/v2/chat/completions",
"forceStream": true,
"thinkingFormat": "openai",
"headers": {
"User-Agent": "IDE/2.108.1 CodeBuddy/2.108.1",
"X-Product": "SaaS",
"X-IDE-Type": "IDE",
"X-IDE-Name": "IDE",
"x-requested-with": "XMLHttpRequest",
"x-codebuddy-request": "1"
},
"auth": {
"combined": true,
"header": "Authorization",
"scheme": "bearer"
},
"usage": {
"url": "https://www.codebuddy.ai/v2/billing/meter/get-user-resource"
},
"format": "openai",
"tokenUrl": "https://www.codebuddy.ai/v2/plugin/auth/token"
},
"codex": {
"baseUrl": "https://chatgpt.com/backend-api/codex/responses",
"format": "openai-responses",
@@ -290,6 +356,26 @@
"validateUrl": "https://api.fireworks.ai/inference/v1/models",
"format": "openai"
},
"freebuff": {
"baseUrl": "https://www.codebuff.com/api/v1/chat/completions",
"format": "openai",
"headers": {
"User-Agent": "ai-sdk/openai-compatible/1.0/codebuff"
},
"retry": {
"429": {
"attempts": 2,
"delayMs": 2000
},
"503": {
"attempts": 2,
"delayMs": 1500
}
},
"usage": {
"url": "https://www.codebuff.com/api/v1/freebuff/session"
}
},
"gemini-cli": {
"baseUrl": "https://cloudcode-pa.googleapis.com/v1internal",
"format": "gemini-cli",
@@ -472,6 +558,11 @@
"clientSecret": "4Z3YjXycVsQvyGF1etiNlIBB4RsqSDtW",
"tokenUrl": "https://iflow.cn/oauth/token"
},
"kilo-gateway": {
"baseUrl": "https://api.kilo.ai/api/gateway/chat/completions",
"validateUrl": "https://api.kilo.ai/api/gateway/models",
"format": "openai"
},
"kilocode": {
"baseUrl": "https://api.kilo.ai/api/openrouter/chat/completions",
"headers": {},
@@ -573,6 +664,11 @@
"limitsPath": "/getUsageLimits"
}
},
"llm7": {
"baseUrl": "https://api.llm7.io/v1/chat/completions",
"validateUrl": "https://api.llm7.io/v1/models",
"format": "openai"
},
"mimo-free": {
"baseUrl": "https://api.xiaomimimo.com/api/free-ai/openai/chat",
"noAuth": true,
@@ -695,6 +791,11 @@
"noAuth": true,
"format": "openai"
},
"morph": {
"baseUrl": "https://api.morphllm.com/v1/chat/completions",
"validateUrl": "https://api.morphllm.com/v1/models",
"format": "openai"
},
"nanobanana": {
"baseUrl": "https://api.nanobananaapi.ai/v1/chat/completions",
"validateUrl": "https://api.nanobananaapi.ai/v1/models",
@@ -719,16 +820,6 @@
"validateUrl": "https://ollama.com/api/tags",
"format": "ollama"
},
"qoder-cn": {
"baseUrl": "https://gateway.qoder.com.cn/algo/api/v2/service/pro/sse/agent_chat_generation",
"headers": {},
"timeoutMs": 120000,
"stallTimeoutMs": 120000,
"usage": {
"url": "https://openapi.qoder.com.cn/api/v2/quota/usage"
},
"format": "openai"
},
"openai": {
"baseUrl": "https://api.openai.com/v1/chat/completions",
"forceStream": true,
@@ -833,6 +924,11 @@
},
"format": "openai"
},
"perplexity-agent": {
"baseUrl": "https://api.perplexity.ai/v1/responses",
"validateUrl": "https://api.perplexity.ai/v1/models",
"format": "openai-responses"
},
"perplexity-web": {
"baseUrl": "https://www.perplexity.ai/rest/sse/perplexity_ask",
"format": "perplexity-web",
@@ -843,10 +939,20 @@
"validateUrl": "https://api.perplexity.ai/models",
"format": "openai"
},
"perplexity-agent": {
"baseUrl": "https://api.perplexity.ai/v1/responses",
"validateUrl": "https://api.perplexity.ai/v1/models",
"format": "openai-responses"
"poolside": {
"baseUrl": "https://inference.poolside.ai/v1/chat/completions",
"validateUrl": "https://inference.poolside.ai/v1/models",
"format": "openai"
},
"qoder-cn": {
"baseUrl": "https://gateway.qoder.com.cn/algo/api/v2/service/pro/sse/agent_chat_generation",
"headers": {},
"timeoutMs": 120000,
"stallTimeoutMs": 120000,
"usage": {
"url": "https://openapi.qoder.com.cn/api/v2/quota/usage"
},
"format": "openai"
},
"qoder": {
"baseUrl": "https://api3.qoder.sh/algo/api/v2/service/pro/sse/agent_chat_generation",
@@ -858,17 +964,33 @@
},
"format": "openai"
},
"sambanova": {
"baseUrl": "https://api.sambanova.ai/v1/chat/completions",
"validateUrl": "https://api.sambanova.ai/v1/models",
"format": "openai"
},
"siliconflow": {
"baseUrl": "https://api.siliconflow.com/v1/chat/completions",
"validateUrl": "https://api.siliconflow.com/v1/models",
"thinkingFormat": "openai",
"format": "openai"
},
"tencent": {
"baseUrl": "https://api.hunyuan.cloud.tencent.com/v1/chat/completions",
"validateUrl": "https://api.hunyuan.cloud.tencent.com/v1/models",
"format": "openai"
},
"together": {
"baseUrl": "https://api.together.xyz/v1/chat/completions",
"validateUrl": "https://api.together.xyz/v1/models",
"format": "openai"
},
"tokenrouter": {
"baseUrl": "https://api.tokenrouter.com/v1/chat/completions",
"validateUrl": "https://api.tokenrouter.com/v1/models",
"thinkingFormat": "tokenrouter",
"format": "openai"
},
"venice": {
"baseUrl": "https://api.venice.ai/api/v1/chat/completions",
"validateUrl": "https://api.venice.ai/api/v1/models",
@@ -969,37 +1091,6 @@
}
]
},
"alims-intl": {
"baseUrl": "https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions",
"headers": {},
"quirks": {
"preserveCacheControl": true
},
"format": "openai"
},
"codebuddy-intl": {
"baseUrl": "https://www.codebuddy.ai/v2/chat/completions",
"forceStream": true,
"thinkingFormat": "openai",
"headers": {
"User-Agent": "IDE/2.108.1 CodeBuddy/2.108.1",
"X-Product": "SaaS",
"X-IDE-Type": "IDE",
"X-IDE-Name": "IDE",
"x-requested-with": "XMLHttpRequest",
"x-codebuddy-request": "1"
},
"auth": {
"combined": true,
"header": "Authorization",
"scheme": "bearer"
},
"usage": {
"url": "https://www.codebuddy.ai/v2/billing/meter/get-user-resource"
},
"format": "openai",
"tokenUrl": "https://www.codebuddy.ai/v2/plugin/auth/token"
},
"zed": {
"baseUrl": "https://cloud.zed.dev/completions",
"format": "openai",
@@ -1016,74 +1107,5 @@
"url": "https://cloud.zed.dev/client/users/me"
},
"modelsUrl": "https://cloud.zed.dev/models"
},
"api-airforce": {
"baseUrl": "https://api.airforce/v1/chat/completions",
"validateUrl": "https://api.airforce/v1/models",
"headers": {
"HTTP-Referer": "https://endpoint-proxy.local",
"X-Title": "Endpoint Proxy"
},
"forceStream": true,
"format": "openai"
},
"baidu": {
"baseUrl": "https://qianfan.baidubce.com/v2/chat/completions",
"validateUrl": "https://qianfan.baidubce.com/v2/models",
"format": "openai"
},
"bazaarlink": {
"baseUrl": "https://bazaarlink.ai/api/v1/chat/completions",
"validateUrl": "https://bazaarlink.ai/api/v1/models",
"format": "openai"
},
"bluesminds": {
"baseUrl": "https://api.bluesminds.com/v1/chat/completions",
"validateUrl": "https://api.bluesminds.com/v1/models",
"format": "openai"
},
"kilo-gateway": {
"baseUrl": "https://api.kilo.ai/api/gateway/chat/completions",
"validateUrl": "https://api.kilo.ai/api/gateway/models",
"format": "openai"
},
"llm7": {
"baseUrl": "https://api.llm7.io/v1/chat/completions",
"validateUrl": "https://api.llm7.io/v1/models",
"format": "openai"
},
"sambanova": {
"baseUrl": "https://api.sambanova.ai/v1/chat/completions",
"validateUrl": "https://api.sambanova.ai/v1/models",
"format": "openai"
},
"tencent": {
"baseUrl": "https://api.hunyuan.cloud.tencent.com/v1/chat/completions",
"validateUrl": "https://api.hunyuan.cloud.tencent.com/v1/models",
"format": "openai"
},
"morph": {
"baseUrl": "https://api.morphllm.com/v1/chat/completions",
"validateUrl": "https://api.morphllm.com/v1/models",
"format": "openai"
},
"poolside": {
"baseUrl": "https://inference.poolside.ai/v1/chat/completions",
"validateUrl": "https://inference.poolside.ai/v1/models",
"format": "openai"
},
"tokenrouter": {
"baseUrl": "https://api.tokenrouter.com/v1/chat/completions",
"validateUrl": "https://api.tokenrouter.com/v1/models",
"thinkingFormat": "tokenrouter",
"format": "openai"
},
"alitp-intl": {
"baseUrl": "https://token-plan.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/chat/completions",
"headers": {},
"quirks": {
"preserveCacheControl": true
},
"format": "openai"
}
}