diff --git a/packages/core/src/common/model-capabilities.ts b/packages/core/src/common/model-capabilities.ts index 4835bfe3..1fac7028 100644 --- a/packages/core/src/common/model-capabilities.ts +++ b/packages/core/src/common/model-capabilities.ts @@ -1,8 +1,9 @@ -export const DEEPSEEK_V4_MODELS = new Set(["deepseek-v4-flash", "deepseek-v4-pro"]); +export const DEEPSEEK_V4_MODELS = new Set(["deepseek-v4-flash", "deepseek-v4-pro", "deepseek-ai/deepseek-v4-pro"]); export const NON_MULTIMODAL_MODELS = new Set([ "deepseek-v4-pro", "deepseek-v4-flash", + "deepseek-ai/deepseek-v4-pro", "deepseek-chat", "deepseek-reasoner", ]); diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index d389348c..e7d4c5d8 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -18,6 +18,8 @@ export { getDefaultAutoCompactWindow, DEFAULT_MODEL, DEFAULT_BASE_URL, + ATLASCLOUD_DEFAULT_MODEL, + ATLASCLOUD_BASE_URL, } from "./settings"; export type { DeepcodingSettings, diff --git a/packages/core/src/settings.ts b/packages/core/src/settings.ts index da0e2d94..4c5b500f 100644 --- a/packages/core/src/settings.ts +++ b/packages/core/src/settings.ts @@ -518,6 +518,9 @@ export function resolveSettingsSources( ...projectEnv, ...systemEnv, }; + const explicitApiKey = trimString(env.API_KEY); + const atlasCloudApiKey = trimString(processEnv.ATLASCLOUD_API_KEY); + const useAtlasCloudDefaults = !explicitApiKey && Boolean(atlasCloudApiKey); const model = trimString(systemEnv.MODEL) || @@ -525,6 +528,7 @@ export function resolveSettingsSources( trimString(projectEnv.MODEL) || trimString(userSettings?.model) || trimString(userEnv.MODEL) || + (useAtlasCloudDefaults ? ATLASCLOUD_DEFAULT_MODEL : "") || defaults.model; const contextWindow = @@ -587,8 +591,8 @@ export function resolveSettingsSources( return { env, - apiKey: trimString(env.API_KEY) || undefined, - baseURL: trimString(env.BASE_URL) || defaults.baseURL, + apiKey: explicitApiKey || atlasCloudApiKey || undefined, + baseURL: trimString(env.BASE_URL) || (useAtlasCloudDefaults ? ATLASCLOUD_BASE_URL : defaults.baseURL), model, contextWindow, autoCompactWindow, @@ -650,6 +654,8 @@ export function applyModelConfigSelection( export const DEFAULT_MODEL = "deepseek-v4-pro"; export const DEFAULT_BASE_URL = "https://api.deepseek.com"; +export const ATLASCLOUD_DEFAULT_MODEL = "deepseek-ai/deepseek-v4-pro"; +export const ATLASCLOUD_BASE_URL = "https://api.atlascloud.ai/v1"; // --------------------------------------------------------------------------- // Settings file I/O diff --git a/packages/core/src/tests/settings-and-notify.test.ts b/packages/core/src/tests/settings-and-notify.test.ts index 93e8dc29..57e3e090 100644 --- a/packages/core/src/tests/settings-and-notify.test.ts +++ b/packages/core/src/tests/settings-and-notify.test.ts @@ -62,6 +62,47 @@ test("resolveSettings gives top-level model priority over env MODEL", () => { assert.equal(resolved.model, "deepseek-v4-flash"); }); +test("resolveSettings uses Atlas Cloud defaults with ATLASCLOUD_API_KEY", () => { + const resolved = resolveSettings( + {}, + { + model: "default-model", + baseURL: "https://default.example.com", + }, + { + ATLASCLOUD_API_KEY: "atlas-test-key", + } + ); + + assert.equal(resolved.apiKey, "atlas-test-key"); + assert.equal(resolved.baseURL, "https://api.atlascloud.ai/v1"); + assert.equal(resolved.model, "deepseek-ai/deepseek-v4-pro"); + assert.equal(resolved.thinkingEnabled, true); +}); + +test("resolveSettings gives explicit API settings priority over Atlas Cloud defaults", () => { + const resolved = resolveSettings( + { + env: { + API_KEY: "explicit-key", + BASE_URL: "https://explicit.example.com/v1", + MODEL: "explicit-model", + }, + }, + { + model: "default-model", + baseURL: "https://default.example.com", + }, + { + ATLASCLOUD_API_KEY: "atlas-test-key", + } + ); + + assert.equal(resolved.apiKey, "explicit-key"); + assert.equal(resolved.baseURL, "https://explicit.example.com/v1"); + assert.equal(resolved.model, "explicit-model"); +}); + test("resolveSettings derives model-specific context window defaults", () => { const regular = resolveSettings( {},