diff --git a/apps/desktop/src/renderer/settings/provider-display-copy.ts b/apps/desktop/src/renderer/settings/provider-display-copy.ts index 1deb0a6ec2..63b8e9300b 100644 --- a/apps/desktop/src/renderer/settings/provider-display-copy.ts +++ b/apps/desktop/src/renderer/settings/provider-display-copy.ts @@ -184,6 +184,10 @@ export const PROVIDER_DISPLAY_COPY = { zh: { name: 'DeepInfra', description: '开源模型托管推理 · OpenAI 兼容', badge: 'API' }, en: { name: 'DeepInfra', description: 'Hosted open-model inference · OpenAI-compatible', badge: 'API' }, }, + atlascloud: { + zh: { name: 'Atlas Cloud', description: '开源模型托管推理 · OpenAI 兼容', badge: 'API' }, + en: { name: 'Atlas Cloud', description: 'Hosted open-model inference · OpenAI-compatible', badge: 'API' }, + }, cohere: { zh: { name: 'Cohere', description: 'Cohere 官方接入', badge: 'API' }, en: { name: 'Cohere', description: 'Official Cohere Chat API access.', badge: 'API' }, diff --git a/packages/core/src/__tests__/llm-connections.test.ts b/packages/core/src/__tests__/llm-connections.test.ts index da43178bb7..57ae4130d8 100644 --- a/packages/core/src/__tests__/llm-connections.test.ts +++ b/packages/core/src/__tests__/llm-connections.test.ts @@ -58,6 +58,28 @@ test('provider registry satisfies shared structural invariants', () => { } }); +test('Atlas Cloud is wired as a ready OpenAI-compatible provider', () => { + assert.deepEqual(PROVIDER_REGISTRY.atlascloud, { + label: 'Atlas Cloud', + description: 'Hosted open-model inference with OpenAI-compatible chat and tool use.', + baseUrl: 'https://api.atlascloud.ai/v1', + authKind: 'api_key', + backendKind: 'ai-sdk', + fallbackModels: ['qwen/qwen3.8-max'], + status: 'ready', + protocol: 'openai', + runtimeAdapter: { kind: 'openai-compatible', name: 'provider' }, + modelDiscovery: { kind: 'protocol', filter: 'fallback-models' }, + category: 'overseas', + catalogGroup: 'api', + catalogBadge: 'API', + readyOrder: 29.5, + catalogOrder: 29.5, + }); + assert.equal(READY_PROVIDER_TYPES.includes('atlascloud'), true); + assert.equal(CATALOG_PROVIDER_TYPES.includes('atlascloud'), true); +}); + test('connection base URLs allow HTTP(S) and reject unsafe or malformed inputs', () => { for (const value of [ undefined, diff --git a/packages/core/src/__tests__/models-dev-sync-contract.test.ts b/packages/core/src/__tests__/models-dev-sync-contract.test.ts index 0f8a1da1de..24aeea97fb 100644 --- a/packages/core/src/__tests__/models-dev-sync-contract.test.ts +++ b/packages/core/src/__tests__/models-dev-sync-contract.test.ts @@ -55,6 +55,7 @@ const NOT_IN_MODELS_DEV: Readonly> = { 'volcengine-ark': 'models.dev does not cover Volcengine Ark', 'volcengine-coding-plan': 'models.dev does not cover Volcengine Ark', 'volcengine-agent-plan': 'models.dev does not cover Volcengine Ark', + atlascloud: 'models.dev does not cover Atlas Cloud', ollama: 'local runtime, not an upstream service', 'lm-studio': 'local runtime, not an upstream service', localai: 'local runtime, not an upstream service', diff --git a/packages/core/src/model-metadata.ts b/packages/core/src/model-metadata.ts index d57e78bbc6..fe9cec39fd 100644 --- a/packages/core/src/model-metadata.ts +++ b/packages/core/src/model-metadata.ts @@ -409,6 +409,13 @@ const STATIC_MODEL_METADATA: Partial