yymaxapi 1.0.110 → 1.0.112
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/yymaxapi.js +19 -17
- package/package.json +1 -1
package/bin/yymaxapi.js
CHANGED
|
@@ -1039,11 +1039,19 @@ function writeClaudeCodeSettings(baseUrl, apiKey, modelId = getDefaultClaudeMode
|
|
|
1039
1039
|
try { settings = JSON.parse(fs.readFileSync(settingsPath, 'utf8')); } catch { settings = {}; }
|
|
1040
1040
|
}
|
|
1041
1041
|
const normalizedBaseUrl = baseUrl.replace(/\/+$/, '');
|
|
1042
|
+
const normalizedModelId = String(modelId || getDefaultClaudeModel().id).trim() || getDefaultClaudeModel().id;
|
|
1043
|
+
const pinnedOpusModel = (CLAUDE_MODELS.find(model => /opus/i.test(model.id)) || {}).id || 'claude-opus-4-7';
|
|
1044
|
+
const pinnedSonnetModel = (CLAUDE_MODELS.find(model => /sonnet/i.test(model.id)) || {}).id || 'claude-sonnet-4-6';
|
|
1045
|
+
const pinnedHaikuModel = (CLAUDE_MODELS.find(model => /haiku/i.test(model.id)) || {}).id || 'claude-haiku-4-5';
|
|
1042
1046
|
settings.apiBaseUrl = normalizedBaseUrl;
|
|
1047
|
+
settings.model = normalizedModelId;
|
|
1043
1048
|
if (!settings.env) settings.env = {};
|
|
1044
|
-
settings.env.
|
|
1049
|
+
settings.env.ANTHROPIC_AUTH_TOKEN = apiKey;
|
|
1045
1050
|
settings.env.ANTHROPIC_BASE_URL = normalizedBaseUrl;
|
|
1046
|
-
|
|
1051
|
+
settings.env.ANTHROPIC_DEFAULT_OPUS_MODEL = pinnedOpusModel;
|
|
1052
|
+
settings.env.ANTHROPIC_DEFAULT_SONNET_MODEL = pinnedSonnetModel;
|
|
1053
|
+
settings.env.ANTHROPIC_DEFAULT_HAIKU_MODEL = pinnedHaikuModel;
|
|
1054
|
+
delete settings.env.ANTHROPIC_API_KEY;
|
|
1047
1055
|
delete settings.availableModels;
|
|
1048
1056
|
delete settings.env.ANTHROPIC_MODEL;
|
|
1049
1057
|
if (!fs.existsSync(claudeDir)) fs.mkdirSync(claudeDir, { recursive: true });
|
|
@@ -3923,18 +3931,17 @@ function readClaudeCodeCliConfig() {
|
|
|
3923
3931
|
const settings = readJsonIfExists(settingsPath) || {};
|
|
3924
3932
|
const settingsEnv = settings.env && typeof settings.env === 'object' ? settings.env : {};
|
|
3925
3933
|
const settingsApiKey = String(settingsEnv.ANTHROPIC_API_KEY || '').trim();
|
|
3926
|
-
const
|
|
3934
|
+
const settingsAuthToken = String(settingsEnv.ANTHROPIC_AUTH_TOKEN || '').trim();
|
|
3927
3935
|
const settingsBaseUrl = String(settingsEnv.ANTHROPIC_BASE_URL || settings.apiBaseUrl || '').trim();
|
|
3928
3936
|
return {
|
|
3929
3937
|
settingsPath,
|
|
3930
3938
|
modelId: settings.model || settingsEnv.ANTHROPIC_MODEL || process.env.ANTHROPIC_MODEL || getDefaultClaudeModel().id,
|
|
3931
3939
|
baseUrl: settingsBaseUrl || process.env.ANTHROPIC_BASE_URL || '',
|
|
3932
|
-
apiKey:
|
|
3940
|
+
apiKey: settingsAuthToken || settingsApiKey || process.env.ANTHROPIC_AUTH_TOKEN || process.env.ANTHROPIC_API_KEY || process.env.CLAUDE_API_KEY || '',
|
|
3933
3941
|
settingsBaseUrl,
|
|
3934
3942
|
settingsApiKey,
|
|
3935
|
-
|
|
3936
|
-
|
|
3937
|
-
usesLegacyAuthTokenOnly: !settingsApiKey && !!settingsLegacyAuthToken,
|
|
3943
|
+
settingsAuthToken,
|
|
3944
|
+
settingsAuthMode: settingsAuthToken ? 'auth_token' : (settingsApiKey ? 'api_key' : ''),
|
|
3938
3945
|
configured: fs.existsSync(settingsPath)
|
|
3939
3946
|
};
|
|
3940
3947
|
}
|
|
@@ -4053,15 +4060,8 @@ function testClaudeCodeCliConnection() {
|
|
|
4053
4060
|
|
|
4054
4061
|
const config = readClaudeCodeCliConfig();
|
|
4055
4062
|
if (!config.configured) return { name: 'Claude Code CLI', status: 'skipped', detail: '未检测到 ~/.claude/settings.json' };
|
|
4056
|
-
if (config.
|
|
4057
|
-
return {
|
|
4058
|
-
name: 'Claude Code CLI',
|
|
4059
|
-
status: 'failed',
|
|
4060
|
-
detail: '检测到旧版 Claude Code 配置字段 ANTHROPIC_AUTH_TOKEN,请重新运行 yymaxapi 以改写为 ANTHROPIC_API_KEY'
|
|
4061
|
-
};
|
|
4062
|
-
}
|
|
4063
|
-
if (!config.settingsBaseUrl || !config.settingsApiKey) {
|
|
4064
|
-
return { name: 'Claude Code CLI', status: 'failed', detail: 'Claude Code 配置缺少 settings.json 中的 Base URL 或 API Key' };
|
|
4063
|
+
if (!config.settingsBaseUrl || !config.apiKey) {
|
|
4064
|
+
return { name: 'Claude Code CLI', status: 'failed', detail: 'Claude Code 配置缺少 settings.json 中的 Base URL 或鉴权字段' };
|
|
4065
4065
|
}
|
|
4066
4066
|
|
|
4067
4067
|
const env = {
|
|
@@ -5435,7 +5435,9 @@ async function activateClaudeCode(paths, args = {}) {
|
|
|
5435
5435
|
console.log(chalk.gray(' API Key: 已设置'));
|
|
5436
5436
|
console.log(chalk.gray('\n 已写入:'));
|
|
5437
5437
|
console.log(chalk.gray(' • ~/.claude/settings.json'));
|
|
5438
|
-
console.log(chalk.gray(' •
|
|
5438
|
+
console.log(chalk.gray(' • 关键字段: apiBaseUrl + model + env.ANTHROPIC_AUTH_TOKEN + env.ANTHROPIC_BASE_URL'));
|
|
5439
|
+
console.log(chalk.gray(' • Claude Code 走 Bearer Token 网关鉴权,避免落入官方登录 / 批准自定义 API Key 流程'));
|
|
5440
|
+
console.log(chalk.gray(' • 已钉住 Claude alias 默认版本,避免第三方中转回落到官方旧别名'));
|
|
5439
5441
|
console.log(chalk.yellow('\n 提示: 如果 Claude Code 已在运行,重新打开一个会话即可读取新配置'));
|
|
5440
5442
|
|
|
5441
5443
|
if (await confirmImmediateTest(args, '是否立即测试 Claude Code CLI 连接?')) {
|