feat(cli): add Coding Plan Global/Intl region support

Add support for Coding Plan international region with separate base URL:
- Add CodingPlanRegion enum (CHINA, GLOBAL) for region management
- Add CODING_PLAN_INTL_MODELS template with intl base URL
- Add version storage for both regions (codingPlan.version/versionIntl)
- Update AuthDialog to show both region options
- Update useCodingPlanUpdates to handle region-specific updates
- Add i18n translations for all supported languages
- Fix and update unit tests

Users can now choose between:
- Coding Plan (Bailian, China) - https://coding.dashscope.aliyuncs.com/v1
- Coding Plan (Bailian, Global/Intl) - https://coding-intl.dashscope.aliyuncs.com/v1

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
This commit is contained in:
mingholy.lmh 2026-02-17 20:19:21 +08:00 committed by qwen-code-ci-bot
parent a0a0a70b12
commit 39360dc058
13 changed files with 684 additions and 219 deletions

View file

@ -11,23 +11,34 @@ import { TextInput } from './shared/TextInput.js';
import { theme } from '../semantic-colors.js';
import { useKeypress } from '../hooks/useKeypress.js';
import { t } from '../../i18n/index.js';
import { CodingPlanRegion } from '../../constants/codingPlan.js';
import Link from 'ink-link';
interface ApiKeyInputProps {
onSubmit: (apiKey: string) => void;
onCancel: () => void;
region?: CodingPlanRegion;
}
const CODING_PLAN_API_KEY_URL =
'https://bailian.console.aliyun.com/?tab=model#/efm/coding_plan';
const CODING_PLAN_INTL_API_KEY_URL =
'https://modelstudio.console.alibabacloud.com/ap-southeast-1/?tab=globalset#/efm/api_key';
export function ApiKeyInput({
onSubmit,
onCancel,
region = CodingPlanRegion.CHINA,
}: ApiKeyInputProps): React.JSX.Element {
const [apiKey, setApiKey] = useState('');
const [error, setError] = useState<string | null>(null);
const apiKeyUrl =
region === CodingPlanRegion.GLOBAL
? CODING_PLAN_INTL_API_KEY_URL
: CODING_PLAN_API_KEY_URL;
useKeypress(
(key) => {
if (key.name === 'escape') {
@ -59,9 +70,9 @@ export function ApiKeyInput({
<Text>{t('You can get your exclusive Coding Plan API-KEY here:')}</Text>
</Box>
<Box marginTop={0}>
<Link url={CODING_PLAN_API_KEY_URL} fallback={false}>
<Link url={apiKeyUrl} fallback={false}>
<Text color={theme.status.success} underline>
{CODING_PLAN_API_KEY_URL}
{apiKeyUrl}
</Text>
</Link>
</Box>