@vibeapi/api-helper 2.0.0
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/LICENSE +25 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +18 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/auth.d.ts +1 -0
- package/dist/commands/auth.js +119 -0
- package/dist/commands/auth.js.map +1 -0
- package/dist/commands/config.d.ts +1 -0
- package/dist/commands/config.js +130 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/doctor.d.ts +1 -0
- package/dist/commands/doctor.js +105 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/index.d.ts +4 -0
- package/dist/commands/index.js +5 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/lang.d.ts +1 -0
- package/dist/commands/lang.js +28 -0
- package/dist/commands/lang.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/api-validator.d.ts +12 -0
- package/dist/lib/api-validator.js +79 -0
- package/dist/lib/api-validator.js.map +1 -0
- package/dist/lib/claude-code-manager.d.ts +86 -0
- package/dist/lib/claude-code-manager.js +233 -0
- package/dist/lib/claude-code-manager.js.map +1 -0
- package/dist/lib/command.d.ts +10 -0
- package/dist/lib/command.js +168 -0
- package/dist/lib/command.js.map +1 -0
- package/dist/lib/config.d.ts +64 -0
- package/dist/lib/config.js +226 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/i18n.d.ts +20 -0
- package/dist/lib/i18n.js +149 -0
- package/dist/lib/i18n.js.map +1 -0
- package/dist/lib/opencode-manager.d.ts +55 -0
- package/dist/lib/opencode-manager.js +134 -0
- package/dist/lib/opencode-manager.js.map +1 -0
- package/dist/lib/tool-manager.d.ts +25 -0
- package/dist/lib/tool-manager.js +280 -0
- package/dist/lib/tool-manager.js.map +1 -0
- package/dist/lib/wizard.d.ts +23 -0
- package/dist/lib/wizard.js +360 -0
- package/dist/lib/wizard.js.map +1 -0
- package/dist/locales/en_US.json +146 -0
- package/dist/locales/zh_CN.json +146 -0
- package/dist/utils/logger.d.ts +55 -0
- package/dist/utils/logger.js +202 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/string-width.d.ts +38 -0
- package/dist/utils/string-width.js +131 -0
- package/dist/utils/string-width.js.map +1 -0
- package/package.json +73 -0
|
@@ -0,0 +1,360 @@
|
|
|
1
|
+
import inquirer from 'inquirer';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import ora from 'ora';
|
|
4
|
+
import { configManager, DEFAULT_MODELS } from './config.js';
|
|
5
|
+
import { toolManager, SUPPORTED_TOOLS } from './tool-manager.js';
|
|
6
|
+
import { i18n } from './i18n.js';
|
|
7
|
+
import { createBorderLine, createContentLine } from '../utils/string-width.js';
|
|
8
|
+
import { validateApiKey } from './api-validator.js';
|
|
9
|
+
export class Wizard {
|
|
10
|
+
static instance;
|
|
11
|
+
BOX_WIDTH = 63;
|
|
12
|
+
constructor() { }
|
|
13
|
+
static getInstance() {
|
|
14
|
+
if (!Wizard.instance) {
|
|
15
|
+
Wizard.instance = new Wizard();
|
|
16
|
+
}
|
|
17
|
+
return Wizard.instance;
|
|
18
|
+
}
|
|
19
|
+
createBox(title) {
|
|
20
|
+
console.log(chalk.cyan.bold('\n' + createBorderLine('╔', '╗', '═', this.BOX_WIDTH)));
|
|
21
|
+
console.log(chalk.cyan.bold(createContentLine(title, '║', '║', this.BOX_WIDTH, 'center')));
|
|
22
|
+
console.log(chalk.cyan.bold(createBorderLine('╚', '╝', '═', this.BOX_WIDTH)));
|
|
23
|
+
console.log('');
|
|
24
|
+
}
|
|
25
|
+
showOperationHints() {
|
|
26
|
+
const hints = [
|
|
27
|
+
chalk.gray(i18n.t('wizard.hint_navigate')),
|
|
28
|
+
chalk.gray(i18n.t('wizard.hint_confirm'))
|
|
29
|
+
];
|
|
30
|
+
console.log(chalk.gray('💡 ') + hints.join(chalk.gray(' | ')) + '\n');
|
|
31
|
+
}
|
|
32
|
+
async promptWithHints(questions) {
|
|
33
|
+
this.showOperationHints();
|
|
34
|
+
return inquirer.prompt(questions);
|
|
35
|
+
}
|
|
36
|
+
printBanner() {
|
|
37
|
+
const BANNER_WIDTH = 65;
|
|
38
|
+
const subtitle = i18n.t('wizard.banner_subtitle');
|
|
39
|
+
const subtitleLine = createContentLine(subtitle, '║', '║', BANNER_WIDTH, 'center');
|
|
40
|
+
const emptyLine = createContentLine('', '║', '║', BANNER_WIDTH, 'center');
|
|
41
|
+
const titleLine = createContentLine('API Helper v1.0.0', '║', '║', BANNER_WIDTH, 'center');
|
|
42
|
+
const asciiLines = [
|
|
43
|
+
' ▄▀▄ █▀▄ █ █▄█ ██▀ █ █▀▄ ██▀ █▀▄ ',
|
|
44
|
+
' █▀█ █▀ █ █ █ █▄▄ █▄▄ █▀ █▄▄ █▀▄ '
|
|
45
|
+
].map(line => createContentLine(line, '║', '║', BANNER_WIDTH, 'center'));
|
|
46
|
+
const bannerLines = [
|
|
47
|
+
createBorderLine('╔', '╗', '═', BANNER_WIDTH),
|
|
48
|
+
emptyLine,
|
|
49
|
+
...asciiLines,
|
|
50
|
+
emptyLine,
|
|
51
|
+
titleLine,
|
|
52
|
+
subtitleLine,
|
|
53
|
+
createBorderLine('╚', '╝', '═', BANNER_WIDTH)
|
|
54
|
+
];
|
|
55
|
+
console.log(chalk.cyan.bold('\n' + bannerLines.join('\n')));
|
|
56
|
+
}
|
|
57
|
+
resetScreen() {
|
|
58
|
+
console.clear();
|
|
59
|
+
this.printBanner();
|
|
60
|
+
}
|
|
61
|
+
async runFirstTimeSetup() {
|
|
62
|
+
this.resetScreen();
|
|
63
|
+
console.log(chalk.cyan.bold('\n' + i18n.t('wizard.welcome')));
|
|
64
|
+
console.log(chalk.gray(i18n.t('wizard.privacy_note') + '\n'));
|
|
65
|
+
await this.configLanguage();
|
|
66
|
+
await this.configApiKey();
|
|
67
|
+
await this.configModels();
|
|
68
|
+
await this.selectAndConfigureTool();
|
|
69
|
+
}
|
|
70
|
+
async configLanguage() {
|
|
71
|
+
while (true) {
|
|
72
|
+
this.resetScreen();
|
|
73
|
+
this.createBox(i18n.t('wizard.select_language'));
|
|
74
|
+
const currentLanguage = i18n.getLocale();
|
|
75
|
+
const { language } = await this.promptWithHints([
|
|
76
|
+
{
|
|
77
|
+
type: 'list',
|
|
78
|
+
name: 'language',
|
|
79
|
+
message: '✨ ' + i18n.t('wizard.select_language'),
|
|
80
|
+
choices: [
|
|
81
|
+
{ name: '[EN] English' + (currentLanguage === 'en_US' ? chalk.green(' ✓ (' + i18n.t('wizard.current_active') + ')') : ''), value: 'en_US' },
|
|
82
|
+
{ name: '[CN] 中文' + (currentLanguage === 'zh_CN' ? chalk.green(' ✓ (' + i18n.t('wizard.current_active') + ')') : ''), value: 'zh_CN' },
|
|
83
|
+
new inquirer.Separator(),
|
|
84
|
+
{ name: '<- ' + i18n.t('wizard.nav_return'), value: 'back' },
|
|
85
|
+
{ name: 'x ' + i18n.t('wizard.nav_exit'), value: 'exit' }
|
|
86
|
+
],
|
|
87
|
+
default: 'zh_CN'
|
|
88
|
+
}
|
|
89
|
+
]);
|
|
90
|
+
if (language === 'exit') {
|
|
91
|
+
console.log(chalk.green('\n👋 ' + i18n.t('wizard.goodbye_message')));
|
|
92
|
+
process.exit(0);
|
|
93
|
+
}
|
|
94
|
+
else if (language === 'back') {
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
configManager.setLang(language);
|
|
98
|
+
i18n.setLocale(language);
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
async configModels() {
|
|
103
|
+
this.resetScreen();
|
|
104
|
+
this.createBox('Model Configuration');
|
|
105
|
+
const { useDefault } = await inquirer.prompt([{
|
|
106
|
+
type: 'confirm',
|
|
107
|
+
name: 'useDefault',
|
|
108
|
+
message: 'Use default model configuration?',
|
|
109
|
+
default: true
|
|
110
|
+
}]);
|
|
111
|
+
if (useDefault) {
|
|
112
|
+
configManager.setModels(DEFAULT_MODELS);
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
const models = await inquirer.prompt([
|
|
116
|
+
{ type: 'input', name: 'haiku', message: 'Haiku model:', default: DEFAULT_MODELS.haiku },
|
|
117
|
+
{ type: 'input', name: 'sonnet', message: 'Sonnet model:', default: DEFAULT_MODELS.sonnet },
|
|
118
|
+
{ type: 'input', name: 'opus', message: 'Opus model:', default: DEFAULT_MODELS.opus },
|
|
119
|
+
{ type: 'input', name: 'reasoning', message: 'Reasoning model:', default: DEFAULT_MODELS.reasoning }
|
|
120
|
+
]);
|
|
121
|
+
configManager.setModels(models);
|
|
122
|
+
}
|
|
123
|
+
async configApiKey() {
|
|
124
|
+
while (true) {
|
|
125
|
+
this.resetScreen();
|
|
126
|
+
this.createBox(i18n.t('wizard.input_api_key'));
|
|
127
|
+
const currentConfig = configManager.getConfig();
|
|
128
|
+
const { action } = await this.promptWithHints([
|
|
129
|
+
{
|
|
130
|
+
type: 'list',
|
|
131
|
+
name: 'action',
|
|
132
|
+
message: '🔑 ' + i18n.t('wizard.select_action'),
|
|
133
|
+
choices: [
|
|
134
|
+
{ name: i18n.t('wizard.input_api_key'), value: 'input' },
|
|
135
|
+
new inquirer.Separator(),
|
|
136
|
+
{ name: '<- ' + i18n.t('wizard.nav_return'), value: 'back' },
|
|
137
|
+
{ name: 'x ' + i18n.t('wizard.nav_exit'), value: 'exit' }
|
|
138
|
+
]
|
|
139
|
+
}
|
|
140
|
+
]);
|
|
141
|
+
if (action === 'exit') {
|
|
142
|
+
console.log(chalk.green('\n👋 ' + i18n.t('wizard.goodbye_message')));
|
|
143
|
+
process.exit(0);
|
|
144
|
+
}
|
|
145
|
+
else if (action === 'back') {
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
else if (action === 'input') {
|
|
149
|
+
const { apiKey } = await inquirer.prompt([
|
|
150
|
+
{
|
|
151
|
+
type: 'password',
|
|
152
|
+
name: 'apiKey',
|
|
153
|
+
message: i18n.t('wizard.input_your_api_key'),
|
|
154
|
+
mask: '*'
|
|
155
|
+
}
|
|
156
|
+
]);
|
|
157
|
+
if (!apiKey || apiKey.trim() === '') {
|
|
158
|
+
console.log(chalk.red('\n' + i18n.t('wizard.api_key_required')));
|
|
159
|
+
await inquirer.prompt([{ type: 'input', name: 'continue', message: i18n.t('wizard.press_enter') }]);
|
|
160
|
+
continue;
|
|
161
|
+
}
|
|
162
|
+
const spinner = ora(i18n.t('wizard.validating_api_key')).start();
|
|
163
|
+
const result = await validateApiKey(apiKey.trim());
|
|
164
|
+
spinner.stop();
|
|
165
|
+
if (result.valid) {
|
|
166
|
+
configManager.setApiKey(apiKey.trim());
|
|
167
|
+
console.log(chalk.green('\n✓ ' + i18n.t('wizard.api_key_valid')));
|
|
168
|
+
await inquirer.prompt([{ type: 'input', name: 'continue', message: i18n.t('wizard.press_enter') }]);
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
if (result.error === 'invalid_api_key') {
|
|
173
|
+
console.log(chalk.red('\n✗ ' + i18n.t('wizard.api_key_invalid')));
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
console.log(chalk.red('\n✗ ' + i18n.t('wizard.api_key_network_error')));
|
|
177
|
+
}
|
|
178
|
+
await inquirer.prompt([{ type: 'input', name: 'continue', message: i18n.t('wizard.press_enter') }]);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
async selectAndConfigureTool() {
|
|
184
|
+
while (true) {
|
|
185
|
+
this.resetScreen();
|
|
186
|
+
this.createBox(i18n.t('wizard.select_tool'));
|
|
187
|
+
const { tool } = await this.promptWithHints([
|
|
188
|
+
{
|
|
189
|
+
type: 'list',
|
|
190
|
+
name: 'tool',
|
|
191
|
+
message: '🛠️ ' + i18n.t('wizard.select_tool'),
|
|
192
|
+
choices: [
|
|
193
|
+
{ name: 'Claude Code', value: 'claude-code' },
|
|
194
|
+
{ name: 'OpenCode', value: 'opencode' },
|
|
195
|
+
new inquirer.Separator(),
|
|
196
|
+
{ name: '<- ' + i18n.t('wizard.nav_return'), value: 'back' },
|
|
197
|
+
{ name: 'x ' + i18n.t('wizard.nav_exit'), value: 'exit' }
|
|
198
|
+
]
|
|
199
|
+
}
|
|
200
|
+
]);
|
|
201
|
+
if (tool === 'exit') {
|
|
202
|
+
console.log(chalk.green('\n👋 ' + i18n.t('wizard.goodbye_message')));
|
|
203
|
+
process.exit(0);
|
|
204
|
+
}
|
|
205
|
+
else if (tool === 'back') {
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
await this.configureTool(tool);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
async configureTool(toolName) {
|
|
212
|
+
const toolInfo = SUPPORTED_TOOLS[toolName];
|
|
213
|
+
if (!toolInfo)
|
|
214
|
+
return;
|
|
215
|
+
const isInstalled = toolManager.isToolInstalled(toolName);
|
|
216
|
+
if (!isInstalled) {
|
|
217
|
+
console.log(chalk.yellow('\n' + i18n.t('wizard.tool_not_installed', { tool: toolInfo.displayName })));
|
|
218
|
+
const { install } = await inquirer.prompt([{
|
|
219
|
+
type: 'confirm',
|
|
220
|
+
name: 'install',
|
|
221
|
+
message: i18n.t('wizard.install_tool_confirm'),
|
|
222
|
+
default: true
|
|
223
|
+
}]);
|
|
224
|
+
if (install) {
|
|
225
|
+
try {
|
|
226
|
+
await toolManager.installTool(toolName);
|
|
227
|
+
}
|
|
228
|
+
catch (error) {
|
|
229
|
+
console.log(chalk.red(i18n.t('wizard.install_failed')));
|
|
230
|
+
return;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
else {
|
|
234
|
+
return;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
await this.showToolMenu(toolName);
|
|
238
|
+
}
|
|
239
|
+
async showToolMenu(toolName) {
|
|
240
|
+
while (true) {
|
|
241
|
+
this.resetScreen();
|
|
242
|
+
const toolInfo = SUPPORTED_TOOLS[toolName];
|
|
243
|
+
if (!toolInfo)
|
|
244
|
+
return;
|
|
245
|
+
this.createBox(toolInfo.displayName + ' Menu');
|
|
246
|
+
const { action } = await this.promptWithHints([
|
|
247
|
+
{
|
|
248
|
+
type: 'list',
|
|
249
|
+
name: 'action',
|
|
250
|
+
message: '⚙️ Select action',
|
|
251
|
+
choices: [
|
|
252
|
+
{ name: '📥 Load Configuration', value: 'load' },
|
|
253
|
+
{ name: '📤 Unload Configuration', value: 'unload' },
|
|
254
|
+
new inquirer.Separator(),
|
|
255
|
+
{ name: '<- ' + i18n.t('wizard.nav_return'), value: 'back' },
|
|
256
|
+
{ name: 'x ' + i18n.t('wizard.nav_exit'), value: 'exit' }
|
|
257
|
+
]
|
|
258
|
+
}
|
|
259
|
+
]);
|
|
260
|
+
if (action === 'exit') {
|
|
261
|
+
console.log(chalk.green('\n👋 ' + i18n.t('wizard.goodbye_message')));
|
|
262
|
+
process.exit(0);
|
|
263
|
+
}
|
|
264
|
+
else if (action === 'back') {
|
|
265
|
+
return;
|
|
266
|
+
}
|
|
267
|
+
else if (action === 'load') {
|
|
268
|
+
await this.loadConfig(toolName);
|
|
269
|
+
}
|
|
270
|
+
else if (action === 'unload') {
|
|
271
|
+
await this.unloadConfig(toolName);
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
async loadConfig(toolName) {
|
|
276
|
+
const apiKey = configManager.getApiKey();
|
|
277
|
+
const models = configManager.getModels();
|
|
278
|
+
if (!apiKey) {
|
|
279
|
+
console.log(chalk.red('\nNo API Key configured'));
|
|
280
|
+
await inquirer.prompt([{ type: 'input', name: 'continue', message: i18n.t('wizard.press_enter') }]);
|
|
281
|
+
return;
|
|
282
|
+
}
|
|
283
|
+
const spinner = ora('Loading configuration...').start();
|
|
284
|
+
try {
|
|
285
|
+
toolManager.loadPrivateConfig(toolName, apiKey, models);
|
|
286
|
+
spinner.succeed('Configuration loaded successfully');
|
|
287
|
+
}
|
|
288
|
+
catch (error) {
|
|
289
|
+
spinner.fail('Failed to load configuration');
|
|
290
|
+
console.log(chalk.red(error instanceof Error ? error.message : String(error)));
|
|
291
|
+
}
|
|
292
|
+
await inquirer.prompt([{ type: 'input', name: 'continue', message: i18n.t('wizard.press_enter') }]);
|
|
293
|
+
}
|
|
294
|
+
async unloadConfig(toolName) {
|
|
295
|
+
const { confirm } = await inquirer.prompt([
|
|
296
|
+
{
|
|
297
|
+
type: 'confirm',
|
|
298
|
+
name: 'confirm',
|
|
299
|
+
message: 'Confirm unload configuration?',
|
|
300
|
+
default: false
|
|
301
|
+
}
|
|
302
|
+
]);
|
|
303
|
+
if (!confirm)
|
|
304
|
+
return;
|
|
305
|
+
const spinner = ora('Unloading configuration...').start();
|
|
306
|
+
try {
|
|
307
|
+
toolManager.unloadPrivateConfig(toolName);
|
|
308
|
+
spinner.succeed('Configuration unloaded successfully');
|
|
309
|
+
}
|
|
310
|
+
catch (error) {
|
|
311
|
+
spinner.fail('Failed to unload configuration');
|
|
312
|
+
console.log(chalk.red(error instanceof Error ? error.message : String(error)));
|
|
313
|
+
}
|
|
314
|
+
await inquirer.prompt([{ type: 'input', name: 'continue', message: i18n.t('wizard.press_enter') }]);
|
|
315
|
+
}
|
|
316
|
+
async run() {
|
|
317
|
+
const config = configManager.getConfig();
|
|
318
|
+
if (!config.api_key) {
|
|
319
|
+
await this.runFirstTimeSetup();
|
|
320
|
+
}
|
|
321
|
+
else {
|
|
322
|
+
await this.showMainMenu();
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
async showMainMenu() {
|
|
326
|
+
while (true) {
|
|
327
|
+
this.resetScreen();
|
|
328
|
+
this.createBox('Main Menu');
|
|
329
|
+
const { action } = await this.promptWithHints([
|
|
330
|
+
{
|
|
331
|
+
type: 'list',
|
|
332
|
+
name: 'action',
|
|
333
|
+
message: 'Select action',
|
|
334
|
+
choices: [
|
|
335
|
+
{ name: '🌐 ' + i18n.t('wizard.menu_config_language'), value: 'language' },
|
|
336
|
+
{ name: '🔑 ' + i18n.t('wizard.menu_config_api_key'), value: 'apikey' },
|
|
337
|
+
{ name: '🛠️ ' + i18n.t('wizard.menu_config_tool'), value: 'tools' },
|
|
338
|
+
new inquirer.Separator(),
|
|
339
|
+
{ name: 'x ' + i18n.t('wizard.nav_exit'), value: 'exit' }
|
|
340
|
+
]
|
|
341
|
+
}
|
|
342
|
+
]);
|
|
343
|
+
if (action === 'exit') {
|
|
344
|
+
console.log(chalk.green('\n👋 ' + i18n.t('wizard.goodbye_message')));
|
|
345
|
+
process.exit(0);
|
|
346
|
+
}
|
|
347
|
+
else if (action === 'language') {
|
|
348
|
+
await this.configLanguage();
|
|
349
|
+
}
|
|
350
|
+
else if (action === 'apikey') {
|
|
351
|
+
await this.configApiKey();
|
|
352
|
+
}
|
|
353
|
+
else if (action === 'tools') {
|
|
354
|
+
await this.selectAndConfigureTool();
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
export const wizard = Wizard.getInstance();
|
|
360
|
+
//# sourceMappingURL=wizard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wizard.js","sourceRoot":"","sources":["../../src/lib/wizard.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cli": {
|
|
3
|
+
"title": "Coding Tool Helper (chelper)",
|
|
4
|
+
"usage": "Usage: chelper <command> [options]",
|
|
5
|
+
"commands": "Commands:",
|
|
6
|
+
"examples": "Examples:",
|
|
7
|
+
"error_unknown": "Unknown command: {{command}}",
|
|
8
|
+
"error_general": "Error:"
|
|
9
|
+
},
|
|
10
|
+
"commands": {
|
|
11
|
+
"help": "Show help information",
|
|
12
|
+
"version": "Show version information",
|
|
13
|
+
"init": "Run interactive initialization wizard",
|
|
14
|
+
"lang": "Language management",
|
|
15
|
+
"auth": "API key management",
|
|
16
|
+
"doctor": "Health check",
|
|
17
|
+
"enter": "Configuration management",
|
|
18
|
+
"tool": "Tool management"
|
|
19
|
+
},
|
|
20
|
+
"lang": {
|
|
21
|
+
"current": "Current language",
|
|
22
|
+
"show_usage": "chelper lang show - Show current language",
|
|
23
|
+
"set_usage": "chelper lang set <zh_CN|en_US> - Set language",
|
|
24
|
+
"changed": "Language changed from {{from}} to {{to}}",
|
|
25
|
+
"invalid": "Unsupported language: {{lang}}",
|
|
26
|
+
"available": "Available languages"
|
|
27
|
+
},
|
|
28
|
+
"auth": {
|
|
29
|
+
"set_usage": "chelper auth <token> - Set API key",
|
|
30
|
+
"token_prompt": "Enter API key",
|
|
31
|
+
"token_required": "API key cannot be empty",
|
|
32
|
+
"saved": "API key saved",
|
|
33
|
+
"revoke_confirm": "Are you sure you want to revoke the API key?",
|
|
34
|
+
"revoked": "API key revoked",
|
|
35
|
+
"not_revoked": "Revoke operation cancelled",
|
|
36
|
+
"get_api_key_hint": "To obtain API Key, please visit: {{url}}"
|
|
37
|
+
},
|
|
38
|
+
"wizard": {
|
|
39
|
+
"banner_subtitle": "Manage Your Claude Code and Other Coding Tools",
|
|
40
|
+
"welcome": "Welcome to Coding Tool Helper!",
|
|
41
|
+
"privacy_note": "We value your privacy. All configurations are stored locally only.",
|
|
42
|
+
"select_language": "Select interface language",
|
|
43
|
+
"input_api_key": "Enter API key",
|
|
44
|
+
"input_your_api_key": "Please input your API key here, Enter to confirm:",
|
|
45
|
+
"update_api_key": "Update API key",
|
|
46
|
+
"api_key_required": "API key cannot be empty",
|
|
47
|
+
"select_tool": "Select coding tool to configure",
|
|
48
|
+
"tool_not_installed": "{{tool}} is not installed",
|
|
49
|
+
"install_tool_confirm": "Install now?",
|
|
50
|
+
"installing_tool": "Installing tool...",
|
|
51
|
+
"tool_installed": "Tool installed successfully",
|
|
52
|
+
"install_failed": "Installation failed",
|
|
53
|
+
"install_skipped": "Installation skipped. You can install manually later.",
|
|
54
|
+
"menu_title": "Management Menu",
|
|
55
|
+
"select_action": "Select action",
|
|
56
|
+
"action_load_config": "Apply Configuration - (Apply your API configuration to {{tool}})",
|
|
57
|
+
"action_unload_config": "Unload Configuration - (Remove API configuration from {{tool}})",
|
|
58
|
+
"action_view_config": "Current Configuration",
|
|
59
|
+
"action_back": "Back",
|
|
60
|
+
"action_exit": "Exit",
|
|
61
|
+
"goodbye": "Goodbye!",
|
|
62
|
+
"loading_config": "Loading configuration...",
|
|
63
|
+
"config_loaded": "Configuration loaded successfully, you can now use {{tool}} for coding.",
|
|
64
|
+
"config_failed": "Failed to load configuration",
|
|
65
|
+
"confirm_unload_config": "Are you sure you want to unload configuration from {{tool}}?",
|
|
66
|
+
"unloading_config": "Unloading configuration...",
|
|
67
|
+
"config_unloaded": "Configuration unloaded successfully",
|
|
68
|
+
"config_unload_failed": "Failed to unload configuration",
|
|
69
|
+
"tool_not_supported": "This operation is not supported for this tool",
|
|
70
|
+
"missing_config": "Missing required configuration (API key)",
|
|
71
|
+
"current_config": "Current Configuration",
|
|
72
|
+
"config_language": "Interface Language",
|
|
73
|
+
"config_api_key": "API Key",
|
|
74
|
+
"config_models": "Model Configuration",
|
|
75
|
+
"config_title": "Configuration",
|
|
76
|
+
"not_set": "Not set",
|
|
77
|
+
"press_enter": "Press Enter to continue",
|
|
78
|
+
"main_menu_title": "Main Menu",
|
|
79
|
+
"current_config_status": "Current Configuration Status:",
|
|
80
|
+
"api_key_set": "Set",
|
|
81
|
+
"api_key_get_hint": "To obtain API Key, please visit: {{url}}",
|
|
82
|
+
"menu_config_language": "Interface Language",
|
|
83
|
+
"menu_config_api_key": "API Key",
|
|
84
|
+
"menu_config_models": "Model Configuration",
|
|
85
|
+
"menu_config_tool": "Coding Tool",
|
|
86
|
+
"menu_exit": "Exit",
|
|
87
|
+
"select_operation": "Select operation:",
|
|
88
|
+
"goodbye_message": "Goodbye!",
|
|
89
|
+
"nav_return": "Return",
|
|
90
|
+
"nav_exit": "Exit",
|
|
91
|
+
"current_active": "Current",
|
|
92
|
+
"operation_hint": "Operation Hint",
|
|
93
|
+
"hint_navigate": "↑↓ Navigate",
|
|
94
|
+
"hint_confirm": "Enter Confirm",
|
|
95
|
+
"detected_config_title": "Claude Code Current Configuration",
|
|
96
|
+
"chelper_config_title": "Chelper Configuration",
|
|
97
|
+
"claude_code_config_title": "Claude Code Current Global Configuration",
|
|
98
|
+
"config_synced": "Configuration synced",
|
|
99
|
+
"config_out_of_sync": "Configuration out of sync, refresh recommended",
|
|
100
|
+
"config_not_loaded": "{{tool}} configuration not loaded",
|
|
101
|
+
"action_refresh_config": "Refresh Configuration - (Update {{tool}} configuration)",
|
|
102
|
+
"global_config_warning": "⚠️ Warning: You are modifying {{tool}} global configuration, changes will affect all workspaces",
|
|
103
|
+
"global_label": "Global",
|
|
104
|
+
"set_success": "Set successfully",
|
|
105
|
+
"start_tool": "Start {{tool}} - (Recommended to open a new terminal in your workspace and run {{shell}})",
|
|
106
|
+
"starting_tool": "Starting...",
|
|
107
|
+
"validating_api_key": "Validating API Key...",
|
|
108
|
+
"api_key_valid": "API Key is valid",
|
|
109
|
+
"api_key_invalid": "API Key is invalid or expired",
|
|
110
|
+
"api_key_network_error": "Network error, please check your connection",
|
|
111
|
+
"select_model_config": "Select model configuration method",
|
|
112
|
+
"use_default_models": "Use default models",
|
|
113
|
+
"use_custom_models": "Customize models",
|
|
114
|
+
"model_haiku": "Haiku Model (Fast)",
|
|
115
|
+
"model_sonnet": "Sonnet Model (Balanced)",
|
|
116
|
+
"model_opus": "Opus Model (Powerful)",
|
|
117
|
+
"model_reasoning": "Reasoning Model (Reasoning)",
|
|
118
|
+
"input_model_name": "Enter model name",
|
|
119
|
+
"models_saved": "Model configuration saved"
|
|
120
|
+
},
|
|
121
|
+
"doctor": {
|
|
122
|
+
"checking": "Running health check...",
|
|
123
|
+
"check_path": "Check PATH environment variable",
|
|
124
|
+
"check_api_key_network": "Check API Key and network connection",
|
|
125
|
+
"check_api_key": "Check API key",
|
|
126
|
+
"check_tools": "Check installed tools",
|
|
127
|
+
"all_good": "All checks passed!",
|
|
128
|
+
"tool_installed": "Installed",
|
|
129
|
+
"tool_not_found": "Tool not found: {{tool}}",
|
|
130
|
+
"network_error": "Network connection failed",
|
|
131
|
+
"api_key_invalid": "API Key is invalid or expired",
|
|
132
|
+
"api_key_network_ok": "API Key and network validation passed",
|
|
133
|
+
"api_key_missing": "API key not configured",
|
|
134
|
+
"claude_code_installed": "Claude Code is installed",
|
|
135
|
+
"claude_code_not_installed": "Claude Code is not installed. Please download from https://claude.ai/download",
|
|
136
|
+
"suggestions": "Suggestions",
|
|
137
|
+
"check_git_env": "Check Git environment",
|
|
138
|
+
"git_not_installed": "Git is not installed. Please download from https://git-scm.com/downloads"
|
|
139
|
+
},
|
|
140
|
+
"messages": {
|
|
141
|
+
"initializing": "Initializing...",
|
|
142
|
+
"args": "Arguments:",
|
|
143
|
+
"first_run": "First run detected, starting initialization wizard...",
|
|
144
|
+
"config_saved": "Configuration saved"
|
|
145
|
+
}
|
|
146
|
+
}
|