feat(provider): add CodeBuddy CN provider (copilot.tencent.com)

Add Tencent CodeBuddy CN (codebuddy-cn) OAuth provider with full support:
OAuth login (GET poll with state query param), token refresh, 15-model
catalog, /v2 inference endpoint, forced streaming, OpenAI-style reasoning,
and per-model capabilities. Renamed from codebuddy to codebuddy-cn to allow
a future codebuddy-ai variant.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Janu Yoga
2026-06-19 15:33:26 +07:00
committed by decolua
co-authored by Cursor
parent db4499d6df
commit efd20be8d8
18 changed files with 234 additions and 59 deletions
@@ -151,7 +151,7 @@ export async function GET(request, { params }) {
: undefined;
// Providers that don't use PKCE for device code
const noPkceDeviceProviders = ["github", "kiro", "kimi-coding", "kilocode", "codebuddy", "qoder"];
const noPkceDeviceProviders = ["github", "kiro", "kimi-coding", "kilocode", "codebuddy-cn", "qoder"];
let deviceData;
if (noPkceDeviceProviders.includes(provider)) {
deviceData = await requestDeviceCode(provider, undefined, deviceOptions);
@@ -271,7 +271,7 @@ export async function POST(request, { params }) {
}
// Providers that don't use PKCE for device code
const noPkceProviders = ["github", "kimi-coding", "kilocode", "codebuddy"];
const noPkceProviders = ["github", "kimi-coding", "kilocode", "codebuddy-cn"];
let result;
if (noPkceProviders.includes(provider)) {
result = await pollForToken(provider, deviceCode);
+1 -1
View File
@@ -90,7 +90,7 @@ const OAUTH_TEST_CONFIG = {
authHeader: "Authorization",
authPrefix: "Bearer ",
},
codebuddy: { tokenExists: true },
"codebuddy-cn": { tokenExists: true },
};
async function probeClineAccessToken(accessToken) {