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:
@@ -307,6 +307,12 @@ export const PATTERN_CAPABILITIES = [
|
||||
{ pattern: "*gpt-3.5*", caps: { contextWindow: 16385, maxOutput: 4096 } },
|
||||
{ pattern: "*gpt-oss*", caps: { reasoning: true, thinkingFormat: "openai", contextWindow: 128000 } },
|
||||
|
||||
// ── Cline free tier: Upstage Solar Pro + LongCat (agentic coding models;
|
||||
// windows unverified — 200K/32K conservative, same as laguna:free).
|
||||
// NOTE: placed before the o-series catch-alls — "solar-pro4" contains "o4".
|
||||
{ pattern: "*solar-pro*", caps: { reasoning: true, thinkingFormat: "openai", contextWindow: 200000, maxOutput: 32000 } },
|
||||
{ pattern: "*longcat*", caps: { reasoning: true, thinkingFormat: "openai", contextWindow: 200000, maxOutput: 32000 } },
|
||||
|
||||
// ── OpenAI o-series (reasoning, vision) ──────────────────────────
|
||||
{ pattern: "*o1-mini*", caps: { reasoning: true, thinkingFormat: "openai", contextWindow: 128000 } },
|
||||
{ pattern: "*o1*", caps: { vision: true, reasoning: true, thinkingFormat: "openai", contextWindow: 200000, maxOutput: 100000 } },
|
||||
|
||||
@@ -14,8 +14,9 @@ export default {
|
||||
},
|
||||
},
|
||||
category: "oauth",
|
||||
authModes: ["oauth"],
|
||||
authModes: ["oauth", "apikey"],
|
||||
hasOAuth: true,
|
||||
authHint: "API key dari app.cline.bot → Settings > API Keys, atau login OAuth via browser.",
|
||||
transport: {
|
||||
baseUrl: "https://api.cline.bot/api/v1/chat/completions",
|
||||
headers: {
|
||||
@@ -30,6 +31,9 @@ export default {
|
||||
combined: true,
|
||||
header: "Authorization",
|
||||
scheme: "bearer",
|
||||
// Hook owns Authorization: workos:-prefixed OAuth vs plain API key
|
||||
// (a merged token can't express both) — see applyAuth.
|
||||
preserveHookAuth: true,
|
||||
hooks: [
|
||||
"clineHeaders",
|
||||
],
|
||||
@@ -44,6 +48,16 @@ export default {
|
||||
{ id: "google/gemini-3.1-pro-preview", name: "Gemini 3.1 Pro Preview" },
|
||||
{ id: "google/gemini-3.1-flash-lite-preview", name: "Gemini 3.1 Flash Lite Preview" },
|
||||
{ id: "kwaipilot/kat-coder-pro", name: "KAT Coder Pro" },
|
||||
// Free tier (verified live via GET /api/v1/ai/cline/recommended-models):
|
||||
// billed $0 on usage, limited quota separate from ClinePass. The
|
||||
// cline-free/* aliases require Cline product headers (see shared/clineAuth.js)
|
||||
// or upstream 403s with "only available via Cline product surfaces".
|
||||
{ id: "cline-free/muse-spark-1.3-contributor", name: "Muse Spark 1.3 (Free)" },
|
||||
{ id: "deepseek/deepseek-v4-flash", name: "DeepSeek V4 Flash (Free)" },
|
||||
{ id: "z-ai/glm-5.3-flash", name: "GLM 5.3 Flash (Free)" },
|
||||
{ id: "cline-free/solar-pro4", name: "Solar Pro 4 (Free)" },
|
||||
{ id: "cline-free/longcat-2.0", name: "LongCat 2.0 (Free)" },
|
||||
{ id: "poolside/laguna-s-2.1:free", name: "Laguna S 2.1 (Free)" },
|
||||
],
|
||||
oauth: {
|
||||
appBaseUrl: "https://app.cline.bot",
|
||||
|
||||
@@ -31,6 +31,9 @@ export default {
|
||||
combined: true,
|
||||
header: "Authorization",
|
||||
scheme: "bearer",
|
||||
// Hook owns Authorization: workos:-prefixed OAuth vs plain API key
|
||||
// (a merged token can't express both) — see applyAuth.
|
||||
preserveHookAuth: true,
|
||||
hooks: [
|
||||
"clineHeaders",
|
||||
],
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1,130 +1,127 @@
|
||||
// Auto-generated: static imports for all registry entries
|
||||
import p0 from "./alicode-intl.js";
|
||||
import p1 from "./alicode.js";
|
||||
import p2 from "./anthropic.js";
|
||||
import p3 from "./antigravity.js";
|
||||
import p4 from "./assemblyai.js";
|
||||
import p5 from "./aws-polly.js";
|
||||
import p6 from "./azure.js";
|
||||
import p7 from "./black-forest-labs.js";
|
||||
import p8 from "./blackbox.js";
|
||||
import p9 from "./brave-search.js";
|
||||
import p10 from "./byteplus.js";
|
||||
import p11 from "./cartesia.js";
|
||||
import p12 from "./cerebras.js";
|
||||
import p13 from "./chutes.js";
|
||||
import p14 from "./claude.js";
|
||||
import p15 from "./cline.js";
|
||||
import p16 from "./clinepass.js";
|
||||
import p17 from "./cloudflare-ai.js";
|
||||
import p18 from "./codebuddy-cn.js";
|
||||
import p19 from "./codex.js";
|
||||
import p20 from "./cohere.js";
|
||||
import p21 from "./comfyui.js";
|
||||
import p22 from "./commandcode.js";
|
||||
import p23 from "./coqui.js";
|
||||
import p24 from "./cursor.js";
|
||||
import p25 from "./deepgram.js";
|
||||
import p26 from "./deepseek.js";
|
||||
import p27 from "./edge-tts.js";
|
||||
import p28 from "./elevenlabs.js";
|
||||
import p29 from "./exa.js";
|
||||
import p30 from "./fal-ai.js";
|
||||
import p31 from "./featherless.js";
|
||||
import p32 from "./firecrawl.js";
|
||||
import p33 from "./fireworks.js";
|
||||
import p34 from "./gemini-cli.js";
|
||||
import p35 from "./gemini.js";
|
||||
import p36 from "./github.js";
|
||||
import p37 from "./gitlab.js";
|
||||
import p38 from "./glm-cn.js";
|
||||
import p39 from "./glm.js";
|
||||
import p40 from "./google-pse.js";
|
||||
import p41 from "./google-tts.js";
|
||||
import p42 from "./grok-cli.js";
|
||||
import p43 from "./grok-web.js";
|
||||
import p44 from "./groq.js";
|
||||
import p45 from "./huggingface.js";
|
||||
import p46 from "./hyperbolic.js";
|
||||
import p47 from "./iflow.js";
|
||||
import p48 from "./inworld.js";
|
||||
import p49 from "./jina-ai.js";
|
||||
import p50 from "./jina-reader.js";
|
||||
import p51 from "./kilocode.js";
|
||||
import p52 from "./kimchi.js";
|
||||
import p53 from "./kimi.js";
|
||||
import p54 from "./kiro.js";
|
||||
import p55 from "./linkup.js";
|
||||
import p56 from "./local-device.js";
|
||||
import p57 from "./mimo-free.js";
|
||||
import p58 from "./minimax-cn.js";
|
||||
import p59 from "./minimax.js";
|
||||
import p60 from "./mistral.js";
|
||||
import p61 from "./mmf.js";
|
||||
import p62 from "./nanobanana.js";
|
||||
import p63 from "./nebius.js";
|
||||
import p64 from "./nvidia.js";
|
||||
import p65 from "./ollama-local.js";
|
||||
import p66 from "./ollama.js";
|
||||
import p123 from "./ollama-search.js";
|
||||
import p67 from "./openai.js";
|
||||
import p68 from "./opencode-go.js";
|
||||
import p68z from "./opencode-zen.js";
|
||||
import p69 from "./opencode.js";
|
||||
import p70 from "./openrouter.js";
|
||||
import p71 from "./perplexity-web.js";
|
||||
import p72 from "./perplexity.js";
|
||||
import p73 from "./perplexity-agent.js";
|
||||
import p74 from "./playht.js";
|
||||
import p75 from "./qoder.js";
|
||||
import p124 from "./qoder-cn.js";
|
||||
import p77 from "./recraft.js";
|
||||
import p78 from "./runwayml.js";
|
||||
import p79 from "./sdwebui.js";
|
||||
import p80 from "./searchapi.js";
|
||||
import p81 from "./searxng.js";
|
||||
import p82 from "./serper.js";
|
||||
import p83 from "./siliconflow.js";
|
||||
import p84 from "./stability-ai.js";
|
||||
import p85 from "./tavily.js";
|
||||
import p86 from "./together.js";
|
||||
import p87 from "./topaz.js";
|
||||
import p88 from "./tortoise.js";
|
||||
import p89 from "./venice.js";
|
||||
import p90 from "./vercel-ai-gateway.js";
|
||||
import p91 from "./vertex-partner.js";
|
||||
import p92 from "./vertex.js";
|
||||
import p93 from "./volcengine-ark.js";
|
||||
import p94 from "./voyage-ai.js";
|
||||
import p95 from "./xai.js";
|
||||
import p96 from "./xiaomi-mimo.js";
|
||||
import p97 from "./xiaomi-tokenplan.js";
|
||||
import p98 from "./youcom.js";
|
||||
import p99 from "./alims-intl.js";
|
||||
import p100 from "./codebuddy-intl.js";
|
||||
// Temporarily hidden — no tool calling support (trae SOLO agent / windsurf gRPC skip ToolCallChunk).
|
||||
// Re-enable by uncommenting both the import and the array entry below.
|
||||
// import p102 from "./trae.js";
|
||||
import p103 from "./zed.js";
|
||||
import p105 from "./api-airforce.js";
|
||||
import p106 from "./baidu.js";
|
||||
import p107 from "./bazaarlink.js";
|
||||
import p108 from "./bluesminds.js";
|
||||
import p109 from "./kilo-gateway.js";
|
||||
import p110 from "./llm7.js";
|
||||
import p111 from "./sambanova.js";
|
||||
import p112 from "./tencent.js";
|
||||
import p113 from "./morph.js";
|
||||
// import p114 from "./devin-cli.js";
|
||||
// import p104 from "./windsurf.js";
|
||||
import p115 from "./poolside.js";
|
||||
import p116 from "./tokenrouter.js";
|
||||
import p117 from "./selfhosted-stt.js";
|
||||
import p118 from "./selfhosted-tts.js";
|
||||
import p119 from "./selfhosted-embedding.js";
|
||||
import p120 from "./fish-audio.js";
|
||||
import p121 from "./alitp-intl.js";
|
||||
import p122 from "./xquik.js";
|
||||
import p2 from "./alims-intl.js";
|
||||
import p3 from "./alitp-intl.js";
|
||||
import p4 from "./anthropic.js";
|
||||
import p5 from "./antigravity.js";
|
||||
import p6 from "./api-airforce.js";
|
||||
import p7 from "./assemblyai.js";
|
||||
import p8 from "./aws-polly.js";
|
||||
import p9 from "./azure.js";
|
||||
import p10 from "./baidu.js";
|
||||
import p11 from "./bazaarlink.js";
|
||||
import p12 from "./black-forest-labs.js";
|
||||
import p13 from "./blackbox.js";
|
||||
import p14 from "./bluesminds.js";
|
||||
import p15 from "./brave-search.js";
|
||||
import p16 from "./byteplus.js";
|
||||
import p17 from "./cartesia.js";
|
||||
import p18 from "./cerebras.js";
|
||||
import p19 from "./chutes.js";
|
||||
import p20 from "./claude.js";
|
||||
import p21 from "./cline.js";
|
||||
import p22 from "./clinepass.js";
|
||||
import p23 from "./cloudflare-ai.js";
|
||||
import p24 from "./codebuddy-cn.js";
|
||||
import p25 from "./codebuddy-intl.js";
|
||||
import p26 from "./codex.js";
|
||||
import p27 from "./cohere.js";
|
||||
import p28 from "./comfyui.js";
|
||||
import p29 from "./commandcode.js";
|
||||
import p30 from "./coqui.js";
|
||||
import p31 from "./cursor.js";
|
||||
import p32 from "./deepgram.js";
|
||||
import p33 from "./deepseek.js";
|
||||
import p34 from "./edge-tts.js";
|
||||
import p35 from "./elevenlabs.js";
|
||||
import p36 from "./exa.js";
|
||||
import p37 from "./fal-ai.js";
|
||||
import p38 from "./featherless.js";
|
||||
import p39 from "./firecrawl.js";
|
||||
import p40 from "./fireworks.js";
|
||||
import p41 from "./fish-audio.js";
|
||||
import p42 from "./freebuff.js";
|
||||
import p43 from "./gemini-cli.js";
|
||||
import p44 from "./gemini.js";
|
||||
import p45 from "./github.js";
|
||||
import p46 from "./gitlab.js";
|
||||
import p47 from "./glm-cn.js";
|
||||
import p48 from "./glm.js";
|
||||
import p49 from "./google-pse.js";
|
||||
import p50 from "./google-tts.js";
|
||||
import p51 from "./grok-cli.js";
|
||||
import p52 from "./grok-web.js";
|
||||
import p53 from "./groq.js";
|
||||
import p54 from "./huggingface.js";
|
||||
import p55 from "./hyperbolic.js";
|
||||
import p56 from "./iflow.js";
|
||||
import p57 from "./inworld.js";
|
||||
import p58 from "./jina-ai.js";
|
||||
import p59 from "./jina-reader.js";
|
||||
import p60 from "./kilo-gateway.js";
|
||||
import p61 from "./kilocode.js";
|
||||
import p62 from "./kimchi.js";
|
||||
import p63 from "./kimi.js";
|
||||
import p64 from "./kiro.js";
|
||||
import p65 from "./linkup.js";
|
||||
import p66 from "./llm7.js";
|
||||
import p67 from "./local-device.js";
|
||||
import p68 from "./mimo-free.js";
|
||||
import p69 from "./minimax-cn.js";
|
||||
import p70 from "./minimax.js";
|
||||
import p71 from "./mistral.js";
|
||||
import p72 from "./mmf.js";
|
||||
import p73 from "./morph.js";
|
||||
import p74 from "./nanobanana.js";
|
||||
import p75 from "./nebius.js";
|
||||
import p76 from "./nvidia.js";
|
||||
import p77 from "./ollama-local.js";
|
||||
import p78 from "./ollama-search.js";
|
||||
import p79 from "./ollama.js";
|
||||
import p80 from "./openai.js";
|
||||
import p81 from "./opencode-go.js";
|
||||
import p82 from "./opencode-zen.js";
|
||||
import p83 from "./opencode.js";
|
||||
import p84 from "./openrouter.js";
|
||||
import p85 from "./perplexity-agent.js";
|
||||
import p86 from "./perplexity-web.js";
|
||||
import p87 from "./perplexity.js";
|
||||
import p88 from "./playht.js";
|
||||
import p89 from "./poolside.js";
|
||||
import p90 from "./qoder-cn.js";
|
||||
import p91 from "./qoder.js";
|
||||
import p92 from "./recraft.js";
|
||||
import p93 from "./runwayml.js";
|
||||
import p94 from "./sambanova.js";
|
||||
import p95 from "./sdwebui.js";
|
||||
import p96 from "./searchapi.js";
|
||||
import p97 from "./searxng.js";
|
||||
import p98 from "./selfhosted-embedding.js";
|
||||
import p99 from "./selfhosted-stt.js";
|
||||
import p100 from "./selfhosted-tts.js";
|
||||
import p101 from "./serper.js";
|
||||
import p102 from "./siliconflow.js";
|
||||
import p103 from "./stability-ai.js";
|
||||
import p104 from "./tavily.js";
|
||||
import p105 from "./tencent.js";
|
||||
import p106 from "./together.js";
|
||||
import p107 from "./tokenrouter.js";
|
||||
import p108 from "./topaz.js";
|
||||
import p109 from "./tortoise.js";
|
||||
import p110 from "./venice.js";
|
||||
import p111 from "./vercel-ai-gateway.js";
|
||||
import p112 from "./vertex-partner.js";
|
||||
import p113 from "./vertex.js";
|
||||
import p114 from "./volcengine-ark.js";
|
||||
import p115 from "./voyage-ai.js";
|
||||
import p116 from "./xai.js";
|
||||
import p117 from "./xiaomi-mimo.js";
|
||||
import p118 from "./xiaomi-tokenplan.js";
|
||||
import p119 from "./xquik.js";
|
||||
import p120 from "./youcom.js";
|
||||
import p121 from "./zed.js";
|
||||
|
||||
export default [
|
||||
p0,
|
||||
p1,
|
||||
@@ -193,11 +190,8 @@ export default [
|
||||
p64,
|
||||
p65,
|
||||
p66,
|
||||
p123,
|
||||
p124,
|
||||
p67,
|
||||
p68,
|
||||
p68z,
|
||||
p69,
|
||||
p70,
|
||||
p71,
|
||||
@@ -205,6 +199,7 @@ export default [
|
||||
p73,
|
||||
p74,
|
||||
p75,
|
||||
p76,
|
||||
p77,
|
||||
p78,
|
||||
p79,
|
||||
@@ -229,8 +224,10 @@ export default [
|
||||
p98,
|
||||
p99,
|
||||
p100,
|
||||
// p102, // trae — hidden, no tool calling
|
||||
p101,
|
||||
p102,
|
||||
p103,
|
||||
p104,
|
||||
p105,
|
||||
p106,
|
||||
p107,
|
||||
@@ -240,8 +237,7 @@ export default [
|
||||
p111,
|
||||
p112,
|
||||
p113,
|
||||
// p114, // devin-cli — hidden, spawns local agent with shell/fs access
|
||||
// p104, // windsurf — hidden, no tool calling
|
||||
p114,
|
||||
p115,
|
||||
p116,
|
||||
p117,
|
||||
@@ -249,5 +245,4 @@ export default [
|
||||
p119,
|
||||
p120,
|
||||
p121,
|
||||
p122,
|
||||
];
|
||||
|
||||
Reference in New Issue
Block a user