mirror of
https://github.com/tiennm99/ccs.git
synced 2026-09-02 12:19:35 +00:00
fix(cliproxy): use management auth-url route in paste callback
This commit is contained in:
@@ -253,6 +253,11 @@ export const CLIPROXY_AUTH_URL_PROVIDER_MAP: Record<CLIProxyProvider, string> =
|
|||||||
(provider) => getCLIProxyAuthUrlProviderName(provider)
|
(provider) => getCLIProxyAuthUrlProviderName(provider)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
export function getManagementAuthUrlPath(provider: CLIProxyProvider): string {
|
||||||
|
const authUrlProvider = CLIPROXY_AUTH_URL_PROVIDER_MAP[provider] || provider;
|
||||||
|
return `/v0/management/${authUrlProvider}-auth-url?is_webui=true`;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get OAuth config for provider
|
* Get OAuth config for provider
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -37,6 +37,7 @@ import {
|
|||||||
getOAuthConfig,
|
getOAuthConfig,
|
||||||
ProviderOAuthConfig,
|
ProviderOAuthConfig,
|
||||||
CLIPROXY_CALLBACK_PROVIDER_MAP,
|
CLIPROXY_CALLBACK_PROVIDER_MAP,
|
||||||
|
getManagementAuthUrlPath,
|
||||||
normalizeKiroAuthMethod,
|
normalizeKiroAuthMethod,
|
||||||
} from './auth-types';
|
} from './auth-types';
|
||||||
import { isHeadlessEnvironment, killProcessOnPort, showStep } from './environment-detector';
|
import { isHeadlessEnvironment, killProcessOnPort, showStep } from './environment-detector';
|
||||||
@@ -275,12 +276,9 @@ async function handlePasteCallbackMode(
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
// Request auth URL from CLIProxyAPI
|
// Request auth URL from CLIProxyAPI
|
||||||
// Note: Uses /oauth/${provider}/start endpoint (different from web-server routes which use
|
// Use management auth-url endpoint to match CLIProxyAPI route contract.
|
||||||
// /v0/management/${provider}-auth-url). Both start OAuth flows but this endpoint is simpler
|
const startResponse = await fetch(buildProxyUrl(target, getManagementAuthUrlPath(provider)), {
|
||||||
// for CLI paste-callback mode as it directly returns the auth URL without is_webui param.
|
headers: buildManagementHeaders(target),
|
||||||
const startResponse = await fetch(buildProxyUrl(target, `/oauth/${provider}/start`), {
|
|
||||||
method: 'POST',
|
|
||||||
headers: buildManagementHeaders(target, { 'Content-Type': 'application/json' }),
|
|
||||||
});
|
});
|
||||||
|
|
||||||
if (!startResponse.ok) {
|
if (!startResponse.ok) {
|
||||||
|
|||||||
@@ -0,0 +1,19 @@
|
|||||||
|
import { describe, expect, it } from 'bun:test';
|
||||||
|
import { getManagementAuthUrlPath } from '../../../src/cliproxy/auth/auth-types';
|
||||||
|
|
||||||
|
describe('auth-types management auth-url path', () => {
|
||||||
|
it('maps providers to CLIProxyAPI management auth-url routes', () => {
|
||||||
|
expect(getManagementAuthUrlPath('gemini')).toBe(
|
||||||
|
'/v0/management/gemini-cli-auth-url?is_webui=true'
|
||||||
|
);
|
||||||
|
expect(getManagementAuthUrlPath('codex')).toBe('/v0/management/codex-auth-url?is_webui=true');
|
||||||
|
expect(getManagementAuthUrlPath('agy')).toBe(
|
||||||
|
'/v0/management/antigravity-auth-url?is_webui=true'
|
||||||
|
);
|
||||||
|
expect(getManagementAuthUrlPath('claude')).toBe(
|
||||||
|
'/v0/management/anthropic-auth-url?is_webui=true'
|
||||||
|
);
|
||||||
|
expect(getManagementAuthUrlPath('ghcp')).toBe('/v0/management/github-auth-url?is_webui=true');
|
||||||
|
expect(getManagementAuthUrlPath('kiro')).toBe('/v0/management/kiro-auth-url?is_webui=true');
|
||||||
|
});
|
||||||
|
});
|
||||||
Reference in New Issue
Block a user