base_parts_ai 1.0.40 → 1.0.42
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/lib/claude_utils.js +0 -1
- package/lib/setapi.js +35 -21
- package/lib/setkey.js +7 -5
- package/package.json +2 -4
- package/test_home/.claude/jcc.json +2 -2
- package/test_home/.claude/settings.json +6 -7
package/lib/claude_utils.js
CHANGED
|
@@ -9,7 +9,6 @@ var fs = require('fs');
|
|
|
9
9
|
var path = require('path');
|
|
10
10
|
var http = require('http');
|
|
11
11
|
var { execSync } = require('child_process');
|
|
12
|
-
var { select } = require('@inquirer/prompts');
|
|
13
12
|
|
|
14
13
|
// ============================================================
|
|
15
14
|
// AI 渠道列表(运行时由 fetchConfig 从服务端拉取填充)
|
package/lib/setapi.js
CHANGED
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
* 若渠道无缓存 Key,则提示用户输入并保存到 ~/.claude/jcc.json
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
-
// inquirer
|
|
11
|
-
var
|
|
10
|
+
// inquirer@8 使用传统 prompt API
|
|
11
|
+
var inquirer = require('inquirer');
|
|
12
12
|
var utils = require('./claude_utils');
|
|
13
13
|
var { execSync } = require('child_process');
|
|
14
14
|
|
|
@@ -28,11 +28,14 @@ module.exports = async function (cmd, buildCfg) {
|
|
|
28
28
|
});
|
|
29
29
|
|
|
30
30
|
// 弹出渠道选择列表,默认选中当前渠道
|
|
31
|
-
var
|
|
31
|
+
var answers = await inquirer.prompt([{
|
|
32
|
+
type: 'list',
|
|
33
|
+
name: 'channelId',
|
|
32
34
|
message: '请选择 AI 渠道:',
|
|
33
35
|
choices: choices,
|
|
34
36
|
default: settings.__jid || undefined,
|
|
35
|
-
});
|
|
37
|
+
}]);
|
|
38
|
+
var channelId = answers.channelId;
|
|
36
39
|
|
|
37
40
|
// 找到选中的渠道配置
|
|
38
41
|
var selected = utils.API_CHANNELS.find(function (c) { return c.id === channelId; });
|
|
@@ -48,7 +51,6 @@ module.exports = async function (cmd, buildCfg) {
|
|
|
48
51
|
claudeJson.hasCompletedOnboarding = true;
|
|
49
52
|
utils.writeJsonFile(buildCfg.claudeJsonPath, claudeJson);
|
|
50
53
|
|
|
51
|
-
// 强制合入 claudeSettingsPath(~/.claude/settings.json)的固定字段
|
|
52
54
|
// 设置 SessionStart Hook(上报提示)、界面语言、更新渠道
|
|
53
55
|
settings.hooks = {
|
|
54
56
|
"SessionStart": [
|
|
@@ -78,46 +80,48 @@ module.exports = async function (cmd, buildCfg) {
|
|
|
78
80
|
if (selected.useSettingsFile) {
|
|
79
81
|
// 手动输入 ANTHROPIC_BASE_URL,默认值取自当前 settings.env
|
|
80
82
|
var defaultBaseUrl = settings.env.ANTHROPIC_BASE_URL || '';
|
|
81
|
-
var
|
|
83
|
+
var baseUrlAnswer = await inquirer.prompt([{
|
|
84
|
+
type: 'input',
|
|
85
|
+
name: 'value',
|
|
82
86
|
message: '请输入 ANTHROPIC_BASE_URL:',
|
|
83
87
|
default: defaultBaseUrl,
|
|
84
88
|
validate: function (v) {
|
|
85
89
|
return v.trim().length > 0 ? true : 'ANTHROPIC_BASE_URL 不能为空';
|
|
86
90
|
},
|
|
87
|
-
});
|
|
88
|
-
settings.env.ANTHROPIC_BASE_URL =
|
|
91
|
+
}]);
|
|
92
|
+
settings.env.ANTHROPIC_BASE_URL = baseUrlAnswer.value.trim();
|
|
89
93
|
|
|
90
94
|
// 手动输入 ANTHROPIC_AUTH_TOKEN,默认值取自当前 settings.env
|
|
91
95
|
var defaultToken = settings.env.ANTHROPIC_AUTH_TOKEN || '';
|
|
92
|
-
var
|
|
96
|
+
var tokenAnswer = await inquirer.prompt([{
|
|
97
|
+
type: 'input',
|
|
98
|
+
name: 'value',
|
|
93
99
|
message: '请输入 ANTHROPIC_AUTH_TOKEN:',
|
|
94
100
|
default: defaultToken,
|
|
95
101
|
validate: function (v) {
|
|
96
102
|
return v.trim().length > 0 ? true : 'ANTHROPIC_AUTH_TOKEN 不能为空';
|
|
97
103
|
},
|
|
98
|
-
});
|
|
99
|
-
settings.env.ANTHROPIC_AUTH_TOKEN =
|
|
104
|
+
}]);
|
|
105
|
+
settings.env.ANTHROPIC_AUTH_TOKEN = tokenAnswer.value.trim();
|
|
100
106
|
|
|
101
107
|
// 写入 settings.json(useSettingsFile 模式不缓存 Key 到 jcc.json)
|
|
102
|
-
utils.writeJsonFile(buildCfg.claudeSettingsPath, settings);
|
|
103
108
|
console.log('✅ 已切换到渠道: ' + selected.name);
|
|
104
109
|
console.log(' BASE_URL: ' + settings.env.ANTHROPIC_BASE_URL);
|
|
105
110
|
console.log(' Token: ' + utils.maskKey(settings.env.ANTHROPIC_AUTH_TOKEN));
|
|
106
111
|
} else {
|
|
107
112
|
// 查询该渠道是否有缓存的 Key,作为输入框默认值(方便用户确认或修改)
|
|
108
113
|
var savedKey = (jccJson.keys && jccJson.keys[selected.id]) || '';
|
|
109
|
-
var
|
|
114
|
+
var keyAnswer = await inquirer.prompt([{
|
|
115
|
+
type: 'input',
|
|
116
|
+
name: 'value',
|
|
110
117
|
message: '请输入 ANTHROPIC_AUTH_TOKEN:',
|
|
111
118
|
default: savedKey,
|
|
112
119
|
validate: function (v) {
|
|
113
120
|
return v.trim().length > 0 ? true : 'Key 不能为空';
|
|
114
121
|
},
|
|
115
|
-
});
|
|
116
|
-
newKey =
|
|
117
|
-
|
|
118
|
-
// 写入 settings.json
|
|
122
|
+
}]);
|
|
123
|
+
var newKey = keyAnswer.value.trim();
|
|
119
124
|
settings.env.ANTHROPIC_AUTH_TOKEN = newKey;
|
|
120
|
-
utils.writeJsonFile(buildCfg.claudeSettingsPath, settings);
|
|
121
125
|
|
|
122
126
|
// 缓存到 jcc.json
|
|
123
127
|
if (!jccJson.keys) { jccJson.keys = {}; }
|
|
@@ -141,11 +145,13 @@ module.exports = async function (cmd, buildCfg) {
|
|
|
141
145
|
var ctxChoices = ctxKeys.map(function (k) {
|
|
142
146
|
return { name: k + ' (Claude ' + ccVersionList[k] + ')', value: k };
|
|
143
147
|
});
|
|
144
|
-
var
|
|
148
|
+
var ctxAnswer = await inquirer.prompt([{
|
|
149
|
+
type: 'list',
|
|
150
|
+
name: 'selectedCtx',
|
|
145
151
|
message: '请选择上下文大小:',
|
|
146
152
|
choices: ctxChoices,
|
|
147
|
-
});
|
|
148
|
-
requiredVer = ccVersionList[selectedCtx];
|
|
153
|
+
}]);
|
|
154
|
+
requiredVer = ccVersionList[ctxAnswer.selectedCtx];
|
|
149
155
|
}
|
|
150
156
|
|
|
151
157
|
// 检测当前 Claude 版本是否与渠道要求一致,不一致则通过 npm registry 安装
|
|
@@ -165,5 +171,13 @@ module.exports = async function (cmd, buildCfg) {
|
|
|
165
171
|
} else if (requiredVer) {
|
|
166
172
|
console.log('✅ Claude 版本匹配: ' + currentVer);
|
|
167
173
|
}
|
|
174
|
+
|
|
175
|
+
// 如果是22版本,清除大小标记
|
|
176
|
+
if (settings.model && requiredVer === '2.1.22') {
|
|
177
|
+
settings.model = settings.model.split('[')[0];
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
// 写入 settings.json
|
|
181
|
+
utils.writeJsonFile(buildCfg.claudeSettingsPath, settings);
|
|
168
182
|
};
|
|
169
183
|
|
package/lib/setkey.js
CHANGED
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
* 当前渠道通过 settings.__jid 字段识别
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
-
// inquirer
|
|
11
|
-
var
|
|
10
|
+
// inquirer@8 使用传统 prompt API
|
|
11
|
+
var inquirer = require('inquirer');
|
|
12
12
|
var utils = require('./claude_utils');
|
|
13
13
|
|
|
14
14
|
module.exports = async function (cmd, buildCfg) {
|
|
@@ -19,13 +19,15 @@ module.exports = async function (cmd, buildCfg) {
|
|
|
19
19
|
utils.printCurrentInfo(settings);
|
|
20
20
|
|
|
21
21
|
// 提示用户输入新 Key
|
|
22
|
-
var
|
|
22
|
+
var keyAnswer = await inquirer.prompt([{
|
|
23
|
+
type: 'input',
|
|
24
|
+
name: 'value',
|
|
23
25
|
message: '请输入新的 ANTHROPIC_AUTH_TOKEN:',
|
|
24
26
|
validate: function (v) {
|
|
25
27
|
return v.trim().length > 0 ? true : 'Key 不能为空';
|
|
26
28
|
},
|
|
27
|
-
});
|
|
28
|
-
newKey =
|
|
29
|
+
}]);
|
|
30
|
+
var newKey = keyAnswer.value.trim();
|
|
29
31
|
|
|
30
32
|
// 写入 settings.json
|
|
31
33
|
settings.env.ANTHROPIC_AUTH_TOKEN = newKey;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "base_parts_ai",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.42",
|
|
4
4
|
"description": "jaskle base_parts_ai",
|
|
5
5
|
"main": "./main.js",
|
|
6
6
|
"registry": true,
|
|
@@ -19,8 +19,6 @@
|
|
|
19
19
|
"license": "ISC",
|
|
20
20
|
"dependencies": {
|
|
21
21
|
"commander": "^14.0.3",
|
|
22
|
-
"inquirer": "^
|
|
23
|
-
},
|
|
24
|
-
"devDependencies": {
|
|
22
|
+
"inquirer": "^8.2.7"
|
|
25
23
|
}
|
|
26
24
|
}
|
|
@@ -1,17 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"env": {
|
|
3
|
-
"
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "cc_haiku",
|
|
3
|
+
"ANTHROPIC_DEFAULT_OPUS_MODEL": "glm-5-turbo",
|
|
4
|
+
"ANTHROPIC_DEFAULT_SONNET_MODEL": "glm-5",
|
|
5
|
+
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "glm-4.7",
|
|
7
6
|
"API_TIMEOUT_MS": "100000",
|
|
8
7
|
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1",
|
|
9
8
|
"DISABLE_AUTOUPDATER": "1",
|
|
10
9
|
"CLAUDE_CODE_ATTRIBUTION_HEADER": "0",
|
|
11
|
-
"
|
|
12
|
-
"
|
|
10
|
+
"ANTHROPIC_AUTH_TOKEN": "sk-second-channel-xxxx",
|
|
11
|
+
"ANTHROPIC_BASE_URL": "http://116.62.243.108:6030"
|
|
13
12
|
},
|
|
14
|
-
"__jid": "
|
|
13
|
+
"__jid": "jai_low_cost",
|
|
15
14
|
"hooks": {
|
|
16
15
|
"SessionStart": [
|
|
17
16
|
{
|