@kikkimo/claude-launcher 1.0.0 → 2.1.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/CHANGELOG.md +146 -0
- package/README.md +103 -41
- package/claude-launcher +1071 -576
- package/docs/README-zh.md +107 -45
- package/lib/api-manager.js +449 -0
- package/lib/auth/password-input.js +158 -0
- package/lib/auth/password-strength.js +154 -0
- package/lib/auth/password-validator.js +255 -0
- package/lib/crypto.js +85 -0
- package/lib/i18n/formatter.js +62 -0
- package/lib/i18n/index.js +218 -0
- package/lib/i18n/language-manager.js +160 -0
- package/lib/i18n/locales/de.js +538 -0
- package/lib/i18n/locales/en.js +539 -0
- package/lib/i18n/locales/es.js +538 -0
- package/lib/i18n/locales/fr.js +538 -0
- package/lib/i18n/locales/it.js +539 -0
- package/lib/i18n/locales/ja.js +538 -0
- package/lib/i18n/locales/ko.js +538 -0
- package/lib/i18n/locales/pt.js +539 -0
- package/lib/i18n/locales/ru.js +539 -0
- package/lib/i18n/locales/zh-TW.js +538 -0
- package/lib/i18n/locales/zh.js +538 -0
- package/lib/launcher.js +359 -0
- package/lib/presets/providers.js +148 -0
- package/lib/ui/colors.js +32 -0
- package/lib/ui/interactive-table.js +338 -0
- package/lib/ui/menu.js +383 -0
- package/lib/ui/prompts.js +571 -0
- package/lib/utils/stdin-manager.js +715 -0
- package/lib/utils/string-width.js +180 -0
- package/lib/utils/version-checker.js +240 -0
- package/lib/validators.js +130 -0
- package/package.json +2 -2
|
@@ -0,0 +1,539 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* English Language Pack
|
|
3
|
+
* Contains all translatable strings for English locale
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
module.exports = {
|
|
7
|
+
// Menu sections
|
|
8
|
+
menu: {
|
|
9
|
+
main: {
|
|
10
|
+
title: "Main Menu",
|
|
11
|
+
launch_default: "Launch Claude Code",
|
|
12
|
+
launch_skip: "Launch Claude Code (Auto Skip Permissions)",
|
|
13
|
+
launch_api: "Launch Claude Code with 3rd-party API",
|
|
14
|
+
launch_api_skip: "Launch Claude Code with 3rd-party API (Auto Skip Permissions)",
|
|
15
|
+
api_management: "3rd-party API Management",
|
|
16
|
+
language_settings: "Language Settings",
|
|
17
|
+
version_check: "Version Update Check",
|
|
18
|
+
exit: "Exit"
|
|
19
|
+
},
|
|
20
|
+
api_management: {
|
|
21
|
+
title: "3rd-party API Management",
|
|
22
|
+
add_new: "Add New 3rd-party API",
|
|
23
|
+
remove: "Remove API",
|
|
24
|
+
switch: "Switch Active API",
|
|
25
|
+
statistics: "View API Statistics",
|
|
26
|
+
export: "Export Configuration",
|
|
27
|
+
import: "Import Configuration",
|
|
28
|
+
change_password: "Change Password",
|
|
29
|
+
back: "Back to Main Menu"
|
|
30
|
+
},
|
|
31
|
+
language: {
|
|
32
|
+
title: "Language Settings",
|
|
33
|
+
current: "Current Language: {0}",
|
|
34
|
+
select_prompt: "Select your preferred language:",
|
|
35
|
+
changed_success: "Language changed to {0}",
|
|
36
|
+
restart_note: "Some changes may require restarting the application",
|
|
37
|
+
back: "Back to Main Menu"
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
|
|
41
|
+
// Message types
|
|
42
|
+
messages: {
|
|
43
|
+
info: {
|
|
44
|
+
no_apis: "No third-party APIs configured",
|
|
45
|
+
add_api_first: "Please add an API first using \"Add New 3rd-party API\"",
|
|
46
|
+
all_apis_removed: "All APIs have been removed",
|
|
47
|
+
apis_removed_or_none: "All APIs have been removed or none were configured.",
|
|
48
|
+
removal_cancelled: "Removal cancelled",
|
|
49
|
+
operation_cancelled: "Operation cancelled",
|
|
50
|
+
password_setup_skipped: "Password setup skipped, import/export functionality permanently disabled",
|
|
51
|
+
first_time_usage: "This is your first time using Claude Launcher",
|
|
52
|
+
export_disabled: "Import/export functionality is disabled",
|
|
53
|
+
no_apis_info_title: "No third-party APIs configured",
|
|
54
|
+
press_return_menu: "Press any key to return to main menu..."
|
|
55
|
+
},
|
|
56
|
+
success: {
|
|
57
|
+
api_added: "API added successfully!",
|
|
58
|
+
api_removed: "API removed successfully!",
|
|
59
|
+
api_switched: "API switched successfully!",
|
|
60
|
+
password_set: "Password set successfully! (Strength: {0})",
|
|
61
|
+
password_changed: "Password changed successfully!",
|
|
62
|
+
config_exported: "Configuration exported successfully!",
|
|
63
|
+
config_imported: "Configuration imported successfully! ({0} imported, {1} skipped)",
|
|
64
|
+
language_changed: "Language changed successfully!"
|
|
65
|
+
},
|
|
66
|
+
prompts: {
|
|
67
|
+
press_any_key: "Press any key to continue...",
|
|
68
|
+
press_any_key_menu: "Press any key to return to main menu...",
|
|
69
|
+
press_any_key_remove: "Press any key to continue selecting APIs to remove...",
|
|
70
|
+
confirm_deletion: "Are you sure you want to remove this API?",
|
|
71
|
+
confirm_password_skip: "Are you sure you want to permanently skip password setup?",
|
|
72
|
+
enter_password: "Enter password to verify identity: ",
|
|
73
|
+
enter_current_password: "Enter current password: ",
|
|
74
|
+
enter_new_password: "New Password: ",
|
|
75
|
+
confirm_new_password: "Confirm Password: ",
|
|
76
|
+
enter_api_name: "Enter API name (optional): ",
|
|
77
|
+
enter_base_url: "Enter base URL: ",
|
|
78
|
+
enter_auth_token: "Enter authentication token: ",
|
|
79
|
+
enter_model_name: "Enter model name: ",
|
|
80
|
+
select_provider: "Select provider: ",
|
|
81
|
+
enter_import_file: "Enter import file path: ",
|
|
82
|
+
ctrl_c_again: "Press Ctrl+C again to exit"
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
|
|
86
|
+
// Error messages
|
|
87
|
+
errors: {
|
|
88
|
+
api: {
|
|
89
|
+
invalid_url: "Invalid Base URL: {0}",
|
|
90
|
+
invalid_token: "Invalid Auth Token: {0}",
|
|
91
|
+
invalid_model: "Invalid Model: {0}",
|
|
92
|
+
invalid_name: "Invalid API Name: {0}",
|
|
93
|
+
duplicate_config: "{0} already exists for API: {1}",
|
|
94
|
+
failed_encrypt: "Failed to encrypt auth token: {0}",
|
|
95
|
+
failed_add: "Failed to add API: {0}",
|
|
96
|
+
failed_remove: "Failed to remove API: {0}",
|
|
97
|
+
failed_switch: "Failed to switch API: {0}",
|
|
98
|
+
invalid_index: "Invalid API index"
|
|
99
|
+
},
|
|
100
|
+
password: {
|
|
101
|
+
empty: "Password cannot be empty",
|
|
102
|
+
too_short: "Password must be at least 6 characters long",
|
|
103
|
+
verification_failed: "Password verification failed",
|
|
104
|
+
verification_error: "Password verification error: {0}",
|
|
105
|
+
verification_cancelled: "Password verification cancelled by user",
|
|
106
|
+
setup_cancelled: "Password setup cancelled by user",
|
|
107
|
+
current_incorrect: "Current password is incorrect",
|
|
108
|
+
strength_insufficient: "Password strength is {0} - minimum required strength is Good or above",
|
|
109
|
+
setup_failed: "Failed to set password: {0}",
|
|
110
|
+
change_failed: "Password change failed: {0}",
|
|
111
|
+
mismatch: "Passwords do not match, please try again",
|
|
112
|
+
requirements_not_met: "Password does not meet security requirements:",
|
|
113
|
+
max_attempts: "Maximum attempts reached. Password setup failed.",
|
|
114
|
+
confirm_skip_title: "Confirm Skip Password Setup",
|
|
115
|
+
setup_skipped: "Password setup skipped, import/export functionality permanently disabled",
|
|
116
|
+
verification_required: "Password verification required to confirm your identity",
|
|
117
|
+
change_password_title: "Change Password",
|
|
118
|
+
non_ascii: "Password must contain only ASCII characters",
|
|
119
|
+
contains_spaces: "Password cannot contain spaces or whitespace characters",
|
|
120
|
+
insufficient_types: "Password must contain at least 2 of the following: uppercase letters, lowercase letters, numbers, special characters",
|
|
121
|
+
weak_pattern: "Password contains common weak patterns - please choose a more secure password",
|
|
122
|
+
suggest_lowercase: "Add lowercase letters (a-z)",
|
|
123
|
+
suggest_uppercase: "Add uppercase letters (A-Z)",
|
|
124
|
+
suggest_numbers: "Add numbers (0-9)",
|
|
125
|
+
suggest_special: "Add special characters (!@#$%^&*()_+-=[]{}etc.)",
|
|
126
|
+
suggest_longer: "Try using a longer password with more character types",
|
|
127
|
+
suggest_more_types: "Consider adding uppercase letters, numbers, or special characters",
|
|
128
|
+
current_password_verified: "✓ Current password verified"
|
|
129
|
+
},
|
|
130
|
+
file: {
|
|
131
|
+
export_failed: "Failed to export configuration: {0}",
|
|
132
|
+
import_failed: "Failed to import configuration: {0}",
|
|
133
|
+
file_not_found: "File not found: {0}",
|
|
134
|
+
invalid_format: "Invalid configuration format - {0}",
|
|
135
|
+
read_failed: "Failed to read file: {0}",
|
|
136
|
+
write_failed: "Failed to write file: {0}",
|
|
137
|
+
no_apis_found: "No APIs found in configuration file"
|
|
138
|
+
},
|
|
139
|
+
general: {
|
|
140
|
+
unexpected_error: "Unexpected error: {0}",
|
|
141
|
+
operation_failed: "Operation failed: {0}",
|
|
142
|
+
invalid_input: "Invalid input: {0}",
|
|
143
|
+
cancelled_by_user: "Operation cancelled by user"
|
|
144
|
+
},
|
|
145
|
+
validation: {
|
|
146
|
+
base_url_empty: "Base URL is empty or missing",
|
|
147
|
+
invalid_url_format: "Invalid URL format",
|
|
148
|
+
auth_token_empty: "Auth token is empty or missing",
|
|
149
|
+
auth_token_too_short: "Auth token is too short (minimum 10 characters)",
|
|
150
|
+
model_name_empty: "Model name is empty or missing",
|
|
151
|
+
model_name_invalid: "Model name seems invalid or too short"
|
|
152
|
+
},
|
|
153
|
+
launcher: {
|
|
154
|
+
error_running_claude: "Error running Claude: {0}",
|
|
155
|
+
error_launching_claude: "Error launching Claude Code: {0}"
|
|
156
|
+
}
|
|
157
|
+
},
|
|
158
|
+
|
|
159
|
+
// Status messages
|
|
160
|
+
status: {
|
|
161
|
+
loading: "Loading...",
|
|
162
|
+
processing: "Processing...",
|
|
163
|
+
validating: "Validating...",
|
|
164
|
+
encrypting: "Encrypting...",
|
|
165
|
+
decrypting: "Decrypting...",
|
|
166
|
+
saving: "Saving configuration...",
|
|
167
|
+
exporting: "Exporting configuration...",
|
|
168
|
+
importing: "Importing configuration...",
|
|
169
|
+
switching_language: "Switching language...",
|
|
170
|
+
initializing: "Initializing..."
|
|
171
|
+
},
|
|
172
|
+
|
|
173
|
+
// API details and labels
|
|
174
|
+
api: {
|
|
175
|
+
details: {
|
|
176
|
+
provider: "Provider",
|
|
177
|
+
url: "URL",
|
|
178
|
+
model: "Model",
|
|
179
|
+
token: "Token",
|
|
180
|
+
usage: "Usage",
|
|
181
|
+
last_used: "Last Used",
|
|
182
|
+
created_at: "Created",
|
|
183
|
+
never_used: "Never",
|
|
184
|
+
times_suffix: "times",
|
|
185
|
+
currently_active: "Currently active API",
|
|
186
|
+
no_active_api: "No active API"
|
|
187
|
+
},
|
|
188
|
+
actions: {
|
|
189
|
+
select_to_switch: "Select API to switch to:",
|
|
190
|
+
select_to_remove: "Select API to remove:",
|
|
191
|
+
switch_success: "Active API: {0}",
|
|
192
|
+
remove_confirm: "API to remove: {0}",
|
|
193
|
+
cannot_undo: "This action cannot be undone!",
|
|
194
|
+
removed_info: "Removed: {0}"
|
|
195
|
+
}
|
|
196
|
+
},
|
|
197
|
+
|
|
198
|
+
// Password setup and management
|
|
199
|
+
password: {
|
|
200
|
+
setup: {
|
|
201
|
+
title: "Set Import/Export Password:",
|
|
202
|
+
change_title: "Change Password:",
|
|
203
|
+
warning: "Changing password will make existing export files inaccessible",
|
|
204
|
+
requirements_title: "Password Requirements:",
|
|
205
|
+
example: "Example strong password: {0}",
|
|
206
|
+
attempt_counter: "attempt {0}/{1}",
|
|
207
|
+
first_time_title: "First Time Import/Export Setup",
|
|
208
|
+
why_needed: "Why password is needed:",
|
|
209
|
+
why_needed_items: [
|
|
210
|
+
"Import/export features require password verification for user identity",
|
|
211
|
+
"Exported configurations are in plaintext format for cross-machine compatibility",
|
|
212
|
+
"Local configurations remain encrypted, password ensures only you can access them"
|
|
213
|
+
],
|
|
214
|
+
new_security_title: "New Enhanced Security Requirements:",
|
|
215
|
+
security_items: [
|
|
216
|
+
"Password must be at least 6 characters long",
|
|
217
|
+
"Must contain at least 2 types: uppercase, lowercase, numbers, or special characters",
|
|
218
|
+
"ASCII characters only, no spaces allowed",
|
|
219
|
+
"Advanced protection against weak password patterns"
|
|
220
|
+
],
|
|
221
|
+
options_title: "Options:",
|
|
222
|
+
option_set: "Set Password: Enable import/export functionality with identity verification",
|
|
223
|
+
option_skip: "Skip Setup: Permanently disable import/export features (cannot be undone)",
|
|
224
|
+
warning_skip: "WARNING: Skipping setup will permanently disable import/export functionality!",
|
|
225
|
+
menu_set_password: "Set Password (Recommended)",
|
|
226
|
+
menu_skip_setup: "Skip Setup (Permanently Disable Import/Export)",
|
|
227
|
+
menu_back: "Any other key: Back to Main Menu",
|
|
228
|
+
setup_instructions: [
|
|
229
|
+
"Password must be at least 6 characters long",
|
|
230
|
+
"Must contain at least 2 types: uppercase, lowercase, numbers, or special characters",
|
|
231
|
+
"ASCII characters only, no spaces allowed",
|
|
232
|
+
"Advanced protection against weak password patterns"
|
|
233
|
+
],
|
|
234
|
+
password_requirements_text: "Password Requirements:",
|
|
235
|
+
example_password: "Example strong password: {0}",
|
|
236
|
+
new_password_attempt: "New Password (attempt {0}/{1}): ",
|
|
237
|
+
confirm_password_prompt: "Confirm Password: ",
|
|
238
|
+
passwords_mismatch: "Passwords do not match, please try again",
|
|
239
|
+
password_success: "Password set successfully! (Strength: {0})",
|
|
240
|
+
press_continue: "Press any key to continue...",
|
|
241
|
+
enter_current_password: "Enter current password: "
|
|
242
|
+
},
|
|
243
|
+
requirements: [
|
|
244
|
+
"At least 6 characters long",
|
|
245
|
+
"At least 2 of the following character types:",
|
|
246
|
+
" • Uppercase letters (A-Z)",
|
|
247
|
+
" • Lowercase letters (a-z)",
|
|
248
|
+
" • Numbers (0-9)",
|
|
249
|
+
" • Special characters (!@#$%^&*()_+-=[]{}etc.)",
|
|
250
|
+
"ASCII characters only (no spaces or unusual characters)",
|
|
251
|
+
"Cannot contain common weak patterns",
|
|
252
|
+
"Minimum password strength: Good (Weak and Very Weak passwords are rejected)"
|
|
253
|
+
],
|
|
254
|
+
suggestions: [
|
|
255
|
+
"Add lowercase letters (a-z)",
|
|
256
|
+
"Add uppercase letters (A-Z)",
|
|
257
|
+
"Add numbers (0-9)",
|
|
258
|
+
"Add special characters (!@#$%^&*()_+-=[]{}etc.)",
|
|
259
|
+
"Try using a longer password with more character types",
|
|
260
|
+
"Consider adding uppercase letters, numbers, or special characters"
|
|
261
|
+
],
|
|
262
|
+
strength: {
|
|
263
|
+
very_weak: "Very Weak",
|
|
264
|
+
weak: "Weak",
|
|
265
|
+
good: "Good",
|
|
266
|
+
strong: "Strong",
|
|
267
|
+
very_strong: "Very Strong"
|
|
268
|
+
}
|
|
269
|
+
},
|
|
270
|
+
|
|
271
|
+
// Import/Export functionality
|
|
272
|
+
import_export: {
|
|
273
|
+
export: {
|
|
274
|
+
title: "Export Configuration",
|
|
275
|
+
description_title: "Export Function Description:",
|
|
276
|
+
description_items: [
|
|
277
|
+
"Password verification required to confirm your identity",
|
|
278
|
+
"Export saves a JSON file to your home directory",
|
|
279
|
+
"File contains plaintext API configurations for easy migration",
|
|
280
|
+
"File will be automatically opened after export"
|
|
281
|
+
],
|
|
282
|
+
success: "Configuration exported to: {0}",
|
|
283
|
+
success_title: "Configuration exported successfully!",
|
|
284
|
+
details_title: "Export Details:",
|
|
285
|
+
details_file_saved: "File saved to: {0}",
|
|
286
|
+
details_export_dir: "Export directory: {0}",
|
|
287
|
+
details_filename: "Filename: {0}",
|
|
288
|
+
opening_file: "Opening exported file with default application...",
|
|
289
|
+
tips_title: "Tips:",
|
|
290
|
+
tips_items: [
|
|
291
|
+
"Share this file to migrate configurations to other machines",
|
|
292
|
+
"Keep the file secure as it contains your API configurations"
|
|
293
|
+
],
|
|
294
|
+
password_required: "Password verification required for export",
|
|
295
|
+
enter_password_prompt: "Enter password to verify identity: ",
|
|
296
|
+
verification_failed: "Password verification failed",
|
|
297
|
+
cannot_proceed: "Cannot proceed with export",
|
|
298
|
+
press_return: "Press any key to return..."
|
|
299
|
+
},
|
|
300
|
+
import: {
|
|
301
|
+
title: "Import Configuration",
|
|
302
|
+
success: "Import completed: {0} APIs imported, {1} skipped",
|
|
303
|
+
password_required: "Password verification required for import",
|
|
304
|
+
file_prompt: "Enter the full path to the configuration file:",
|
|
305
|
+
processing: "Processing import file...",
|
|
306
|
+
validating_file: "Validating configuration file...",
|
|
307
|
+
verification_failed: "Password verification failed",
|
|
308
|
+
cannot_proceed: "Cannot proceed with import",
|
|
309
|
+
press_return: "Press any key to return..."
|
|
310
|
+
}
|
|
311
|
+
},
|
|
312
|
+
|
|
313
|
+
// Navigation and UI
|
|
314
|
+
navigation: {
|
|
315
|
+
use_arrows: "Use ↑↓ arrow keys to navigate, Enter to select, Double-tap Ctrl+C to exit",
|
|
316
|
+
use_arrows_esc: "Use ↑↓ to navigate, Enter to {0}, ESC to return to main menu",
|
|
317
|
+
use_number_keys: "Use number keys to select:",
|
|
318
|
+
currently_active: "Currently active API",
|
|
319
|
+
select_action: "Select an action:",
|
|
320
|
+
no_options: "No options available",
|
|
321
|
+
enter_choice: "Enter your choice ({0}, or any other key to return to main menu):",
|
|
322
|
+
arrow_keys_not_available: "Arrow keys not available. Enter selection number (1-{0}):",
|
|
323
|
+
enter_choice_prompt: "[>] Enter your choice (1-2, or any other key to return to main menu): "
|
|
324
|
+
},
|
|
325
|
+
|
|
326
|
+
// Launch process
|
|
327
|
+
launch: {
|
|
328
|
+
starting: "Starting Claude Code...",
|
|
329
|
+
command: "Command: {0}",
|
|
330
|
+
run_in_terminal: "Claude will run in current terminal.",
|
|
331
|
+
launcher_exit: "Launcher will exit to transfer control to Claude.",
|
|
332
|
+
no_active_api: "No Active Third-party API",
|
|
333
|
+
no_active_api_desc: "No third-party API is currently active.",
|
|
334
|
+
add_configure_first: "Please add and configure an API first, or switch to an existing one.",
|
|
335
|
+
press_key_return: "Press any key to return to main menu...",
|
|
336
|
+
environment_variables: "Environment variables:",
|
|
337
|
+
using_third_party_api: "Using Third-party API Configuration",
|
|
338
|
+
provider_optimizations_applied: "Provider Optimizations Applied",
|
|
339
|
+
extended_timeout_format: "Extended timeout: {0}s ({1} minutes)",
|
|
340
|
+
extended_timeout_format_singular: "Extended timeout: {0}s ({1} minute)",
|
|
341
|
+
non_essential_traffic_disabled: "Non-essential traffic disabled",
|
|
342
|
+
custom_env_var: "{0}={1}",
|
|
343
|
+
// Deprecated - kept for backward compatibility
|
|
344
|
+
deepseek_optimizations: "DeepSeek optimizations enabled:",
|
|
345
|
+
extended_timeout: "Extended timeout (600s)",
|
|
346
|
+
non_essential_disabled: "Non-essential traffic disabled"
|
|
347
|
+
},
|
|
348
|
+
|
|
349
|
+
// Provider notes
|
|
350
|
+
provider: {
|
|
351
|
+
note_prefix: "Note",
|
|
352
|
+
notes: {
|
|
353
|
+
deepseek: "Requires extended timeout for complex reasoning tasks",
|
|
354
|
+
zhipu: "Requires extended timeout for large responses",
|
|
355
|
+
zai: "Requires extended timeout for large responses"
|
|
356
|
+
}
|
|
357
|
+
},
|
|
358
|
+
|
|
359
|
+
// Additional UI messages
|
|
360
|
+
ui: {
|
|
361
|
+
general: {
|
|
362
|
+
after_skipping_password_setup: "After skipping password setup:",
|
|
363
|
+
file_path_empty: "File path cannot be empty",
|
|
364
|
+
max_attempts_import_cancelled: "Maximum attempts reached. Import cancelled.",
|
|
365
|
+
max_attempts_import_failed: "Maximum attempts reached. Import failed.",
|
|
366
|
+
check_file_path_json: "💡 Please check the file path and ensure it's a valid JSON file",
|
|
367
|
+
launcher_version: "Claude Launcher v2.0.0",
|
|
368
|
+
press_key_return_menu: "Press any key to return to menu...",
|
|
369
|
+
add_apis_first: "You need to add some APIs first.",
|
|
370
|
+
press_any_key_continue: "Press any key to continue...",
|
|
371
|
+
currently_active_api: "Currently Active API:",
|
|
372
|
+
confirm_delete_api: "Are you sure you want to delete this API configuration?",
|
|
373
|
+
action_cannot_undone: "This action cannot be undone!",
|
|
374
|
+
type_exit_cancel: "Type \"exit\" at any prompt to cancel",
|
|
375
|
+
type_exit_cancel_setup: "Type \"exit\" to cancel setup",
|
|
376
|
+
press_y_confirm: "Press Y to confirm, any other key to cancel...",
|
|
377
|
+
max_attempts_password_failed: "Maximum attempts reached. Password setup failed.",
|
|
378
|
+
passwords_mismatch: "Passwords do not match, please try again",
|
|
379
|
+
password_skip_consequences: [
|
|
380
|
+
"Import/export functionality will be permanently disabled",
|
|
381
|
+
"Cannot backup or migrate API configurations",
|
|
382
|
+
"This decision cannot be undone"
|
|
383
|
+
],
|
|
384
|
+
import_function_description: "Import Function Description:",
|
|
385
|
+
import_description_items: [
|
|
386
|
+
"Import reads a JSON file from the specified file path",
|
|
387
|
+
"Import data will be merged with current configuration (no overwrite)",
|
|
388
|
+
"Duplicate API configurations will be automatically skipped"
|
|
389
|
+
],
|
|
390
|
+
file_input_required: "File Input Required:",
|
|
391
|
+
file_input_items: [
|
|
392
|
+
"Provide the full path to your JSON configuration file",
|
|
393
|
+
"File must be a valid JSON file with .json extension",
|
|
394
|
+
"File will be validated before import"
|
|
395
|
+
],
|
|
396
|
+
validating_file: "🔍 Validating file...",
|
|
397
|
+
file_validation_successful: "✓ File validation successful",
|
|
398
|
+
import_successful: "✓ Configuration imported successfully!",
|
|
399
|
+
import_statistics: "📊 Import Statistics:",
|
|
400
|
+
import_stats_items: [
|
|
401
|
+
"Successfully imported: {0} API configurations",
|
|
402
|
+
"Skipped duplicates: {1} API configurations",
|
|
403
|
+
"Configuration merged with existing data",
|
|
404
|
+
"Source file: {0}"
|
|
405
|
+
],
|
|
406
|
+
import_tips: [
|
|
407
|
+
"💡 Please check the file content and format"
|
|
408
|
+
],
|
|
409
|
+
goodbye: "👋 Goodbye!",
|
|
410
|
+
configured_apis: "Configured APIs:",
|
|
411
|
+
press_continue_provider_selection: "Press any key to continue to provider selection...",
|
|
412
|
+
|
|
413
|
+
// API Configuration sections
|
|
414
|
+
add_new_api_title: "🔗 Add New Third-party API Configuration",
|
|
415
|
+
security_privacy_info: "🔒 Security & Privacy Information:",
|
|
416
|
+
security_items: [
|
|
417
|
+
"All API keys are encrypted using AES-256-CBC encryption",
|
|
418
|
+
"Encryption key is derived from machine-specific data",
|
|
419
|
+
"Your API keys are stored locally on this machine only",
|
|
420
|
+
"Keys cannot be decrypted on other machines",
|
|
421
|
+
"No data is sent to external servers except your API calls"
|
|
422
|
+
],
|
|
423
|
+
configuration_tips: "💡 Configuration Tips:",
|
|
424
|
+
config_tip_items: [
|
|
425
|
+
"Base URL: The API endpoint (e.g., https://api.example.com)",
|
|
426
|
+
"Auth Token: Your API key or authentication token",
|
|
427
|
+
"Model: The AI model to use (e.g., claude-3-sonnet-20240229)"
|
|
428
|
+
],
|
|
429
|
+
all_providers_compatible: "💡 All listed providers use Anthropic-compatible API format",
|
|
430
|
+
using_custom_provider: "✓ Using custom provider configuration",
|
|
431
|
+
suggestions: "Suggestions:",
|
|
432
|
+
current_password_strength: "Current password strength: {0}",
|
|
433
|
+
enter_json_file_path_attempt: "[>] Enter JSON file path (attempt {0}/{1}): ",
|
|
434
|
+
currently_active_api: "Currently active API",
|
|
435
|
+
file_validation_failed: "File validation failed: {0}",
|
|
436
|
+
model_name_prompt: "[>] Model Name: ",
|
|
437
|
+
provider_selection_required: "Please select a provider (1-{0})",
|
|
438
|
+
|
|
439
|
+
// Provider selection
|
|
440
|
+
compatible_providers_title: "📋 Claude Code Compatible API Providers:",
|
|
441
|
+
provider_anthropic: "🎯 Anthropic (Official)",
|
|
442
|
+
provider_anthropic_desc: "Official Anthropic API - Fully compatible",
|
|
443
|
+
provider_moonshot: "✅ Moonshot AI (Kimi-K2)",
|
|
444
|
+
provider_moonshot_desc: "Moonshot AI - Provides Anthropic-compatible API",
|
|
445
|
+
provider_deepseek: "✅ DeepSeek (DeepSeek V3/V3.1)",
|
|
446
|
+
provider_deepseek_desc: "DeepSeek AI - Anthropic-compatible endpoint",
|
|
447
|
+
provider_custom: "✅ Custom Anthropic-Compatible API",
|
|
448
|
+
provider_custom_desc: "Custom server with Anthropic-compatible API",
|
|
449
|
+
select_provider_prompt: "[>] Select provider (1-{0}) or Press ESC to Cancel: ",
|
|
450
|
+
|
|
451
|
+
// Provider configuration
|
|
452
|
+
selected_provider: "✓ Selected: {0}",
|
|
453
|
+
recommended_base_url: "Recommended Base URL: {0}",
|
|
454
|
+
reference_base_url: "Reference Base URL: {0}",
|
|
455
|
+
api_base_url_prompt: "[>] API Base URL: ",
|
|
456
|
+
base_url_required: "Base URL is required for custom providers",
|
|
457
|
+
press_enter_default_url: "[>] Press Enter to use default or enter custom URL: ",
|
|
458
|
+
expected_format: "Expected format: {0}",
|
|
459
|
+
auth_token_prompt: "[>] Authentication Token: ",
|
|
460
|
+
edit_url_hint: "(You can edit the URL above by typing)",
|
|
461
|
+
|
|
462
|
+
// Model selection
|
|
463
|
+
suggested_models: "Suggested models:",
|
|
464
|
+
select_model_prompt: "[>] Select model (1-{0}) or enter custom: ",
|
|
465
|
+
invalid_model_selection: "❌ Invalid selection. Please enter a number between 1-{0} or a custom model name",
|
|
466
|
+
invalid_provider_selection: "❌ Invalid selection. Please enter a number between 1-{0} or press Enter for custom",
|
|
467
|
+
invalid_provider_number: "❌ Invalid selection. Please enter a number between 1-{0}",
|
|
468
|
+
api_name_prompt: "[>] API Name (optional, for identification): ",
|
|
469
|
+
replace_url_model_note: "Note: Replace URL and model with your actual server details",
|
|
470
|
+
|
|
471
|
+
// API management
|
|
472
|
+
select_api_remove: "[!] Select API to remove:",
|
|
473
|
+
navigate_remove_instructions: "Use ↑↓ to navigate, Enter to remove, ESC to return to main menu",
|
|
474
|
+
confirm_deletion_prompt: "[?] Confirm deletion (y/N): ",
|
|
475
|
+
navigate_activate_instructions: "Use ↑↓ to navigate, Enter to activate, ESC to return to main menu",
|
|
476
|
+
summary: "Summary:",
|
|
477
|
+
|
|
478
|
+
// Skip confirmation options
|
|
479
|
+
confirm_skip_option: "→ I confirm to skip",
|
|
480
|
+
reconsider_option: "Reconsider, return to password setup",
|
|
481
|
+
|
|
482
|
+
// Password requirements details
|
|
483
|
+
password_requirements_title: "🔒 Password Requirements:",
|
|
484
|
+
password_requirements_list: [
|
|
485
|
+
"At least 6 characters long",
|
|
486
|
+
"At least 2 of the following character types:",
|
|
487
|
+
" • Uppercase letters (A-Z)",
|
|
488
|
+
" • Lowercase letters (a-z)",
|
|
489
|
+
" • Numbers (0-9)",
|
|
490
|
+
" • Special characters (!@#$%^&*()_+-=[]{}etc.)",
|
|
491
|
+
"ASCII characters only (no spaces or unusual characters)",
|
|
492
|
+
"Cannot contain common weak patterns",
|
|
493
|
+
"Minimum password strength: Good (Weak and Very Weak passwords are rejected)"
|
|
494
|
+
],
|
|
495
|
+
example_strong_password: "Example strong password: {0}",
|
|
496
|
+
new_password_attempt: "New Password (attempt {0}/{1}): ",
|
|
497
|
+
confirm_password_prompt: "Confirm Password: "
|
|
498
|
+
}
|
|
499
|
+
},
|
|
500
|
+
|
|
501
|
+
// Statistics and information
|
|
502
|
+
statistics: {
|
|
503
|
+
title: "API Statistics",
|
|
504
|
+
total_apis: "Total APIs: {0}",
|
|
505
|
+
active_api: "Active API: {0}",
|
|
506
|
+
most_used: "Most Used API: {0}",
|
|
507
|
+
total_usage: "Total Usage: {0} times",
|
|
508
|
+
no_usage: "No usage recorded"
|
|
509
|
+
},
|
|
510
|
+
|
|
511
|
+
// Version updates
|
|
512
|
+
version: {
|
|
513
|
+
update_available: "New version available: v{0} (current: v{1})",
|
|
514
|
+
install_command: "Run npm update -g @kikkimo/claude-launcher to update",
|
|
515
|
+
checking_updates: "Checking for updates...",
|
|
516
|
+
update_failed: "Failed to check for updates",
|
|
517
|
+
up_to_date: "Already up to date",
|
|
518
|
+
skip_version: "Skip this version",
|
|
519
|
+
current_version_info: "Current: v{0} | npm latest: v{1}",
|
|
520
|
+
npm_package_url: "npm package: {0}",
|
|
521
|
+
always_show_mode: "Version display mode: Always show",
|
|
522
|
+
update_only_mode: "Version display mode: Updates only"
|
|
523
|
+
},
|
|
524
|
+
|
|
525
|
+
// Version check feature
|
|
526
|
+
version_check: {
|
|
527
|
+
title: "Version Update Check",
|
|
528
|
+
checking: "Checking npm registry...",
|
|
529
|
+
please_wait: "Please wait",
|
|
530
|
+
error: "Check failed: {0}",
|
|
531
|
+
error_tips: "Tips: Check network connection or try again later",
|
|
532
|
+
update_available: "🎉 New version found!",
|
|
533
|
+
current_version: "Current version: v{0}",
|
|
534
|
+
latest_version: "Latest version: v{0}",
|
|
535
|
+
update_command: "Update command: npm update -g @kikkimo/claude-launcher",
|
|
536
|
+
up_to_date: "You are using the latest version",
|
|
537
|
+
unexpected_error: "Unexpected error occurred during check"
|
|
538
|
+
}
|
|
539
|
+
};
|