@kikkimo/claude-launcher 2.2.0 → 2.4.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 +67 -0
- package/README.md +22 -8
- package/claude-launcher +390 -42
- package/docs/README-zh.md +22 -8
- package/lib/api-manager.js +135 -1
- package/lib/i18n/locales/de.js +68 -3
- package/lib/i18n/locales/en.js +66 -2
- package/lib/i18n/locales/es.js +68 -3
- package/lib/i18n/locales/fr.js +68 -3
- package/lib/i18n/locales/it.js +66 -2
- package/lib/i18n/locales/ja.js +68 -3
- package/lib/i18n/locales/ko.js +68 -3
- package/lib/i18n/locales/pt.js +66 -2
- package/lib/i18n/locales/ru.js +66 -2
- package/lib/i18n/locales/zh-TW.js +68 -3
- package/lib/i18n/locales/zh.js +68 -3
- package/lib/presets/providers.js +97 -10
- package/lib/utils/model-upgrade-checker.js +103 -0
- package/lib/utils/version-checker.js +22 -3
- package/package.json +1 -1
package/lib/api-manager.js
CHANGED
|
@@ -133,8 +133,13 @@ class ApiManager {
|
|
|
133
133
|
model: modelValidation.value,
|
|
134
134
|
smallFastModel: modelValidation.value, // Same as model as requested
|
|
135
135
|
createdAt: new Date().toISOString(),
|
|
136
|
+
// Existing statistics fields
|
|
136
137
|
lastUsed: null,
|
|
137
|
-
usageCount: 0
|
|
138
|
+
usageCount: 0,
|
|
139
|
+
// New statistics fields
|
|
140
|
+
successCount: 0,
|
|
141
|
+
failCount: 0,
|
|
142
|
+
lastError: null
|
|
138
143
|
};
|
|
139
144
|
|
|
140
145
|
this.config.apis.push(newApi);
|
|
@@ -172,6 +177,18 @@ class ApiManager {
|
|
|
172
177
|
return removedApi;
|
|
173
178
|
}
|
|
174
179
|
|
|
180
|
+
/**
|
|
181
|
+
* Clear all API configurations
|
|
182
|
+
* @returns {number} Number of APIs cleared
|
|
183
|
+
*/
|
|
184
|
+
clearAllApis() {
|
|
185
|
+
const count = this.config.apis.length;
|
|
186
|
+
this.config.apis = [];
|
|
187
|
+
this.config.activeIndex = -1;
|
|
188
|
+
this.saveConfig();
|
|
189
|
+
return count;
|
|
190
|
+
}
|
|
191
|
+
|
|
175
192
|
/**
|
|
176
193
|
* Get all API configurations
|
|
177
194
|
*/
|
|
@@ -217,7 +234,60 @@ class ApiManager {
|
|
|
217
234
|
return null;
|
|
218
235
|
}
|
|
219
236
|
|
|
237
|
+
/**
|
|
238
|
+
* Update the model for a specific API
|
|
239
|
+
* @param {string} apiId - The API ID
|
|
240
|
+
* @param {string} newModel - The new model name
|
|
241
|
+
* @returns {Object} The updated API object
|
|
242
|
+
*/
|
|
243
|
+
updateApiModel(apiId, newModel) {
|
|
244
|
+
const index = this.config.apis.findIndex(api => api.id === apiId);
|
|
245
|
+
if (index === -1) {
|
|
246
|
+
throw new Error(`API not found: ${apiId}`);
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
this.config.apis[index].model = newModel;
|
|
250
|
+
this.config.apis[index].smallFastModel = newModel;
|
|
251
|
+
this.saveConfig();
|
|
252
|
+
return this.config.apis[index];
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
/**
|
|
256
|
+
* Record a successful API launch
|
|
257
|
+
* @returns {Object|null} The updated API object or null
|
|
258
|
+
*/
|
|
259
|
+
recordSuccessfulLaunch() {
|
|
260
|
+
const activeApi = this.getActiveApi();
|
|
261
|
+
if (activeApi) {
|
|
262
|
+
const index = this.config.activeIndex;
|
|
263
|
+
this.config.apis[index].lastUsed = new Date().toISOString();
|
|
264
|
+
this.config.apis[index].usageCount = (this.config.apis[index].usageCount || 0) + 1;
|
|
265
|
+
this.config.apis[index].successCount = (this.config.apis[index].successCount || 0) + 1;
|
|
266
|
+
this.config.apis[index].lastError = null;
|
|
267
|
+
this.saveConfig();
|
|
268
|
+
return this.config.apis[index];
|
|
269
|
+
}
|
|
270
|
+
return null;
|
|
271
|
+
}
|
|
220
272
|
|
|
273
|
+
/**
|
|
274
|
+
* Record a failed API launch
|
|
275
|
+
* @param {string} errorMessage - The error message
|
|
276
|
+
* @returns {Object|null} The updated API object or null
|
|
277
|
+
*/
|
|
278
|
+
recordFailedLaunch(errorMessage) {
|
|
279
|
+
const activeApi = this.getActiveApi();
|
|
280
|
+
if (activeApi) {
|
|
281
|
+
const index = this.config.activeIndex;
|
|
282
|
+
this.config.apis[index].lastUsed = new Date().toISOString();
|
|
283
|
+
this.config.apis[index].usageCount = (this.config.apis[index].usageCount || 0) + 1;
|
|
284
|
+
this.config.apis[index].failCount = (this.config.apis[index].failCount || 0) + 1;
|
|
285
|
+
this.config.apis[index].lastError = errorMessage;
|
|
286
|
+
this.saveConfig();
|
|
287
|
+
return this.config.apis[index];
|
|
288
|
+
}
|
|
289
|
+
return null;
|
|
290
|
+
}
|
|
221
291
|
|
|
222
292
|
/**
|
|
223
293
|
* Get statistics about API usage
|
|
@@ -236,6 +306,70 @@ class ApiManager {
|
|
|
236
306
|
};
|
|
237
307
|
}
|
|
238
308
|
|
|
309
|
+
/**
|
|
310
|
+
* Get enhanced statistics with success/fail tracking
|
|
311
|
+
* @returns {Object} Enhanced statistics object
|
|
312
|
+
*/
|
|
313
|
+
getEnhancedStatistics() {
|
|
314
|
+
const apis = this.config.apis;
|
|
315
|
+
const activeApi = this.getActiveApi();
|
|
316
|
+
|
|
317
|
+
const totalUsage = apis.reduce((sum, api) => sum + (api.usageCount || 0), 0);
|
|
318
|
+
const totalSuccess = apis.reduce((sum, api) => sum + (api.successCount || 0), 0);
|
|
319
|
+
const totalFail = apis.reduce((sum, api) => sum + (api.failCount || 0), 0);
|
|
320
|
+
|
|
321
|
+
const mostUsed = apis.reduce((prev, current) =>
|
|
322
|
+
(current.usageCount > (prev?.usageCount || 0)) ? current : prev, null);
|
|
323
|
+
|
|
324
|
+
return {
|
|
325
|
+
totalApis: apis.length,
|
|
326
|
+
activeApiName: activeApi?.name || 'None',
|
|
327
|
+
mostUsedApi: mostUsed?.name || 'None',
|
|
328
|
+
totalUsage,
|
|
329
|
+
totalSuccess,
|
|
330
|
+
totalFail,
|
|
331
|
+
successRate: totalUsage > 0 ? ((totalSuccess / totalUsage) * 100).toFixed(1) + '%' : 'N/A',
|
|
332
|
+
apiStats: apis.map(api => ({
|
|
333
|
+
name: api.name,
|
|
334
|
+
model: api.model,
|
|
335
|
+
provider: api.provider,
|
|
336
|
+
usageCount: api.usageCount || 0,
|
|
337
|
+
successCount: api.successCount || 0,
|
|
338
|
+
failCount: api.failCount || 0,
|
|
339
|
+
successRate: (api.usageCount || 0) > 0
|
|
340
|
+
? (((api.successCount || 0) / api.usageCount) * 100).toFixed(1) + '%'
|
|
341
|
+
: 'N/A',
|
|
342
|
+
lastUsed: api.lastUsed,
|
|
343
|
+
lastError: api.lastError
|
|
344
|
+
}))
|
|
345
|
+
};
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
/**
|
|
349
|
+
* Reset statistics for all APIs or a specific API
|
|
350
|
+
* @param {string|null} apiId - API ID to reset, or null for all
|
|
351
|
+
*/
|
|
352
|
+
resetStatistics(apiId = null) {
|
|
353
|
+
const resetFields = (api) => {
|
|
354
|
+
api.usageCount = 0;
|
|
355
|
+
api.successCount = 0;
|
|
356
|
+
api.failCount = 0;
|
|
357
|
+
api.lastUsed = null;
|
|
358
|
+
api.lastError = null;
|
|
359
|
+
};
|
|
360
|
+
|
|
361
|
+
if (apiId) {
|
|
362
|
+
const index = this.config.apis.findIndex(a => a.id === apiId);
|
|
363
|
+
if (index !== -1) {
|
|
364
|
+
resetFields(this.config.apis[index]);
|
|
365
|
+
}
|
|
366
|
+
} else {
|
|
367
|
+
this.config.apis.forEach(resetFields);
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
this.saveConfig();
|
|
371
|
+
}
|
|
372
|
+
|
|
239
373
|
/**
|
|
240
374
|
* Check if this is first time usage (no password set AND no APIs configured)
|
|
241
375
|
*/
|
package/lib/i18n/locales/de.js
CHANGED
|
@@ -28,6 +28,12 @@ module.exports = {
|
|
|
28
28
|
change_password: "Passwort ändern",
|
|
29
29
|
back: "Zurück zum Hauptmenü"
|
|
30
30
|
},
|
|
31
|
+
remove_api: {
|
|
32
|
+
title: "API entfernen",
|
|
33
|
+
delete_single: "Einzelne API löschen",
|
|
34
|
+
clear_all: "Alle APIs löschen",
|
|
35
|
+
back: "Zurück"
|
|
36
|
+
},
|
|
31
37
|
language: {
|
|
32
38
|
title: "Spracheinstellungen",
|
|
33
39
|
current: "Aktuelle Sprache: {0}",
|
|
@@ -44,6 +50,9 @@ module.exports = {
|
|
|
44
50
|
no_apis: "Keine Drittanbieter-APIs konfiguriert",
|
|
45
51
|
add_api_first: "Bitte fügen Sie zuerst eine API mit \"Neue Drittanbieter-API hinzufügen\" hinzu",
|
|
46
52
|
all_apis_removed: "Alle APIs wurden entfernt",
|
|
53
|
+
all_apis_cleared: "{0} APIs wurden gelöscht",
|
|
54
|
+
clear_cancelled: "Löschvorgang abgebrochen",
|
|
55
|
+
current_api_count: "Aktuelle APIs: {0}",
|
|
47
56
|
apis_removed_or_none: "Alle APIs wurden entfernt oder es waren keine konfiguriert.",
|
|
48
57
|
removal_cancelled: "Entfernung abgebrochen",
|
|
49
58
|
operation_cancelled: "Vorgang abgebrochen",
|
|
@@ -79,7 +88,9 @@ module.exports = {
|
|
|
79
88
|
enter_model_name: "Geben Sie den Modellnamen ein: ",
|
|
80
89
|
select_provider: "Anbieter auswählen: ",
|
|
81
90
|
enter_import_file: "Geben Sie den Import-Dateipfad ein: ",
|
|
82
|
-
ctrl_c_again: "Drücken Sie Ctrl+C erneut, um das Programm zu beenden"
|
|
91
|
+
ctrl_c_again: "Drücken Sie Ctrl+C erneut, um das Programm zu beenden",
|
|
92
|
+
confirm_clear_all: "Dies wird alle {0} APIs dauerhaft löschen. Diese Aktion kann nicht rückgängig gemacht werden.",
|
|
93
|
+
confirm_clear_all_input: "Geben Sie CLEAR ein, um zu bestätigen: "
|
|
83
94
|
}
|
|
84
95
|
},
|
|
85
96
|
|
|
@@ -493,7 +504,8 @@ module.exports = {
|
|
|
493
504
|
"Mindest-Passwort-Stärke: Gut (Schwache und sehr schwache Passwörter werden abgelehnt)"
|
|
494
505
|
],
|
|
495
506
|
example_strong_password: "Beispiel für starkes Passwort: {0}",
|
|
496
|
-
new_password_attempt: "Neues Passwort (Versuch {0}/{1}): "
|
|
507
|
+
new_password_attempt: "Neues Passwort (Versuch {0}/{1}): ",
|
|
508
|
+
confirm_password_prompt: "Passwort bestätigen: "
|
|
497
509
|
}
|
|
498
510
|
},
|
|
499
511
|
|
|
@@ -504,7 +516,27 @@ module.exports = {
|
|
|
504
516
|
active_api: "Aktive API: {0}",
|
|
505
517
|
most_used: "Meistgenutzte API: {0}",
|
|
506
518
|
total_usage: "Gesamtnutzung: {0} mal",
|
|
507
|
-
no_usage: "Keine Nutzung aufgezeichnet"
|
|
519
|
+
no_usage: "Keine Nutzung aufgezeichnet",
|
|
520
|
+
|
|
521
|
+
// Erweiterte Statistiken (neu)
|
|
522
|
+
success_rate: "Gesamterfolgsrate: {0}",
|
|
523
|
+
|
|
524
|
+
header_name: "API-Name",
|
|
525
|
+
header_usage: "Nutzung",
|
|
526
|
+
header_success: "Erfolg",
|
|
527
|
+
header_last_used: "Zuletzt verwendet",
|
|
528
|
+
|
|
529
|
+
time_never: "Nie",
|
|
530
|
+
time_just_now: "Gerade eben",
|
|
531
|
+
time_minutes_ago: "Vor {0}m",
|
|
532
|
+
time_hours_ago: "Vor {0}h",
|
|
533
|
+
time_days_ago: "Vor {0}d",
|
|
534
|
+
|
|
535
|
+
menu_view: "Statistikdetails anzeigen",
|
|
536
|
+
menu_reset: "Statistiken zurücksetzen",
|
|
537
|
+
menu_back: "Zurück",
|
|
538
|
+
reset_confirm: "Alle Statistiken zurücksetzen? [y/N]",
|
|
539
|
+
reset_success: "Statistiken erfolgreich zurückgesetzt"
|
|
508
540
|
},
|
|
509
541
|
|
|
510
542
|
// Versions-Updates
|
|
@@ -534,5 +566,38 @@ module.exports = {
|
|
|
534
566
|
update_command: "Update-Befehl: npm update -g @kikkimo/claude-launcher",
|
|
535
567
|
up_to_date: "Sie verwenden die neueste Version",
|
|
536
568
|
unexpected_error: "Unerwarteter Fehler während der Prüfung aufgetreten"
|
|
569
|
+
},
|
|
570
|
+
|
|
571
|
+
// Modell-Upgrade-Funktion
|
|
572
|
+
model_upgrade: {
|
|
573
|
+
notification: "Modell-Upgrade verfügbar: {0} → {1}",
|
|
574
|
+
notification_api: "API: {0}",
|
|
575
|
+
notification_hint: "Gehen Sie zu \"Drittanbieter-API-Verwaltung > Modell-Upgrade-Einstellungen\" zum Upgraden",
|
|
576
|
+
auto_upgraded: "Modell automatisch upgegradet: {0} → {1}",
|
|
577
|
+
|
|
578
|
+
settings_title: "Modell-Upgrade-Einstellungen",
|
|
579
|
+
current_config: "Aktuelle Konfiguration",
|
|
580
|
+
auto_upgrade_label: "Neuestes Modell automatisch verwenden",
|
|
581
|
+
auto_upgrade_on: "AN",
|
|
582
|
+
auto_upgrade_off: "AUS",
|
|
583
|
+
|
|
584
|
+
menu_toggle_auto_on: "Auto-Upgrade [● AN]",
|
|
585
|
+
menu_toggle_auto_off: "Auto-Upgrade [○ AUS]",
|
|
586
|
+
menu_manual_upgrade: "Alle Modelle manuell upgraden",
|
|
587
|
+
menu_back: "Zurück",
|
|
588
|
+
|
|
589
|
+
manual_title: "Modell-Upgrade-Prüfung",
|
|
590
|
+
manual_checking: "{0} API-Konfigurationen werden geprüft...",
|
|
591
|
+
manual_api_current: "Aktuell: {0}",
|
|
592
|
+
manual_api_latest: "Neueste: {0}",
|
|
593
|
+
manual_api_uptodate: "(Bereits aktuell)",
|
|
594
|
+
manual_api_no_info: "(Keine Upgrade-Info)",
|
|
595
|
+
manual_confirm: "Dieses Modell upgraden? [y/N]",
|
|
596
|
+
manual_upgraded: "Upgegradet: {0} → {1}",
|
|
597
|
+
manual_skipped: "Übersprungen",
|
|
598
|
+
|
|
599
|
+
manual_complete: "Upgrade abgeschlossen!",
|
|
600
|
+
manual_stats_upgraded: "Upgegradet: {0}",
|
|
601
|
+
manual_stats_skipped: "Übersprungen: {0} ({1} bereits aktuell, {2} keine Upgrade-Info)"
|
|
537
602
|
}
|
|
538
603
|
};
|
package/lib/i18n/locales/en.js
CHANGED
|
@@ -28,6 +28,12 @@ module.exports = {
|
|
|
28
28
|
change_password: "Change Password",
|
|
29
29
|
back: "Back to Main Menu"
|
|
30
30
|
},
|
|
31
|
+
remove_api: {
|
|
32
|
+
title: "Remove API",
|
|
33
|
+
delete_single: "Delete Single API",
|
|
34
|
+
clear_all: "Clear All APIs",
|
|
35
|
+
back: "Back"
|
|
36
|
+
},
|
|
31
37
|
language: {
|
|
32
38
|
title: "Language Settings",
|
|
33
39
|
current: "Current Language: {0}",
|
|
@@ -44,6 +50,9 @@ module.exports = {
|
|
|
44
50
|
no_apis: "No third-party APIs configured",
|
|
45
51
|
add_api_first: "Please add an API first using \"Add New 3rd-party API\"",
|
|
46
52
|
all_apis_removed: "All APIs have been removed",
|
|
53
|
+
all_apis_cleared: "{0} APIs have been cleared",
|
|
54
|
+
clear_cancelled: "Clear operation cancelled",
|
|
55
|
+
current_api_count: "Current APIs: {0}",
|
|
47
56
|
apis_removed_or_none: "All APIs have been removed or none were configured.",
|
|
48
57
|
removal_cancelled: "Removal cancelled",
|
|
49
58
|
operation_cancelled: "Operation cancelled",
|
|
@@ -79,7 +88,9 @@ module.exports = {
|
|
|
79
88
|
enter_model_name: "Enter model name: ",
|
|
80
89
|
select_provider: "Select provider: ",
|
|
81
90
|
enter_import_file: "Enter import file path: ",
|
|
82
|
-
ctrl_c_again: "Press Ctrl+C again to exit"
|
|
91
|
+
ctrl_c_again: "Press Ctrl+C again to exit",
|
|
92
|
+
confirm_clear_all: "This will permanently delete all {0} APIs. This action cannot be undone.",
|
|
93
|
+
confirm_clear_all_input: "Type CLEAR to confirm: "
|
|
83
94
|
}
|
|
84
95
|
},
|
|
85
96
|
|
|
@@ -505,7 +516,27 @@ module.exports = {
|
|
|
505
516
|
active_api: "Active API: {0}",
|
|
506
517
|
most_used: "Most Used API: {0}",
|
|
507
518
|
total_usage: "Total Usage: {0} times",
|
|
508
|
-
no_usage: "No usage recorded"
|
|
519
|
+
no_usage: "No usage recorded",
|
|
520
|
+
|
|
521
|
+
// Enhanced statistics (new)
|
|
522
|
+
success_rate: "Overall Success Rate: {0}",
|
|
523
|
+
|
|
524
|
+
header_name: "API Name",
|
|
525
|
+
header_usage: "Usage",
|
|
526
|
+
header_success: "Success",
|
|
527
|
+
header_last_used: "Last Used",
|
|
528
|
+
|
|
529
|
+
time_never: "Never",
|
|
530
|
+
time_just_now: "Just now",
|
|
531
|
+
time_minutes_ago: "{0}m ago",
|
|
532
|
+
time_hours_ago: "{0}h ago",
|
|
533
|
+
time_days_ago: "{0}d ago",
|
|
534
|
+
|
|
535
|
+
menu_view: "View Statistics Details",
|
|
536
|
+
menu_reset: "Reset Statistics",
|
|
537
|
+
menu_back: "Back",
|
|
538
|
+
reset_confirm: "Reset all statistics? [y/N]",
|
|
539
|
+
reset_success: "Statistics reset successfully"
|
|
509
540
|
},
|
|
510
541
|
|
|
511
542
|
// Version updates
|
|
@@ -535,5 +566,38 @@ module.exports = {
|
|
|
535
566
|
update_command: "Update command: npm update -g @kikkimo/claude-launcher",
|
|
536
567
|
up_to_date: "You are using the latest version",
|
|
537
568
|
unexpected_error: "Unexpected error occurred during check"
|
|
569
|
+
},
|
|
570
|
+
|
|
571
|
+
// Model upgrade feature
|
|
572
|
+
model_upgrade: {
|
|
573
|
+
notification: "Model upgrade available: {0} → {1}",
|
|
574
|
+
notification_api: "API: {0}",
|
|
575
|
+
notification_hint: "Go to \"3rd-party API Management > Model Upgrade Settings\" to upgrade",
|
|
576
|
+
auto_upgraded: "Model auto-upgraded: {0} → {1}",
|
|
577
|
+
|
|
578
|
+
settings_title: "Model Upgrade Settings",
|
|
579
|
+
current_config: "Current Configuration",
|
|
580
|
+
auto_upgrade_label: "Auto use latest model",
|
|
581
|
+
auto_upgrade_on: "ON",
|
|
582
|
+
auto_upgrade_off: "OFF",
|
|
583
|
+
|
|
584
|
+
menu_toggle_auto_on: "Auto Upgrade [● ON]",
|
|
585
|
+
menu_toggle_auto_off: "Auto Upgrade [○ OFF]",
|
|
586
|
+
menu_manual_upgrade: "Manual upgrade all models",
|
|
587
|
+
menu_back: "Back",
|
|
588
|
+
|
|
589
|
+
manual_title: "Model Upgrade Check",
|
|
590
|
+
manual_checking: "Checking {0} API configurations...",
|
|
591
|
+
manual_api_current: "Current: {0}",
|
|
592
|
+
manual_api_latest: "Latest: {0}",
|
|
593
|
+
manual_api_uptodate: "(Already latest)",
|
|
594
|
+
manual_api_no_info: "(No upgrade info)",
|
|
595
|
+
manual_confirm: "Upgrade this model? [y/N]",
|
|
596
|
+
manual_upgraded: "Upgraded: {0} → {1}",
|
|
597
|
+
manual_skipped: "Skipped",
|
|
598
|
+
|
|
599
|
+
manual_complete: "Upgrade complete!",
|
|
600
|
+
manual_stats_upgraded: "Upgraded: {0}",
|
|
601
|
+
manual_stats_skipped: "Skipped: {0} ({1} already latest, {2} no upgrade info)"
|
|
538
602
|
}
|
|
539
603
|
};
|
package/lib/i18n/locales/es.js
CHANGED
|
@@ -28,6 +28,12 @@ module.exports = {
|
|
|
28
28
|
change_password: "Cambiar contraseña",
|
|
29
29
|
back: "Volver al menú principal"
|
|
30
30
|
},
|
|
31
|
+
remove_api: {
|
|
32
|
+
title: "Eliminar API",
|
|
33
|
+
delete_single: "Eliminar API individual",
|
|
34
|
+
clear_all: "Borrar todas las API",
|
|
35
|
+
back: "Volver"
|
|
36
|
+
},
|
|
31
37
|
language: {
|
|
32
38
|
title: "Configuración de idioma",
|
|
33
39
|
current: "Idioma actual: {0}",
|
|
@@ -44,6 +50,9 @@ module.exports = {
|
|
|
44
50
|
no_apis: "No hay API de terceros configuradas",
|
|
45
51
|
add_api_first: "Por favor, primero agregue una API usando \"Agregar nueva API de terceros\"",
|
|
46
52
|
all_apis_removed: "Todas las API han sido eliminadas",
|
|
53
|
+
all_apis_cleared: "{0} API han sido borradas",
|
|
54
|
+
clear_cancelled: "Operación de borrado cancelada",
|
|
55
|
+
current_api_count: "APIs actuales: {0}",
|
|
47
56
|
apis_removed_or_none: "Todas las API han sido eliminadas o no había ninguna configurada.",
|
|
48
57
|
removal_cancelled: "Eliminación cancelada",
|
|
49
58
|
operation_cancelled: "Operación cancelada",
|
|
@@ -79,7 +88,9 @@ module.exports = {
|
|
|
79
88
|
enter_model_name: "Ingrese el nombre del modelo: ",
|
|
80
89
|
select_provider: "Seleccionar proveedor: ",
|
|
81
90
|
enter_import_file: "Ingrese la ruta del archivo de importación: ",
|
|
82
|
-
ctrl_c_again: "Presione Ctrl+C nuevamente para salir del programa"
|
|
91
|
+
ctrl_c_again: "Presione Ctrl+C nuevamente para salir del programa",
|
|
92
|
+
confirm_clear_all: "Esto eliminará permanentemente las {0} API. Esta acción no se puede deshacer.",
|
|
93
|
+
confirm_clear_all_input: "Escriba CLEAR para confirmar: "
|
|
83
94
|
}
|
|
84
95
|
},
|
|
85
96
|
|
|
@@ -493,7 +504,8 @@ module.exports = {
|
|
|
493
504
|
"Fuerza mínima de contraseña: Buena (se rechazan contraseñas débiles y muy débiles)"
|
|
494
505
|
],
|
|
495
506
|
example_strong_password: "Ejemplo de contraseña fuerte: {0}",
|
|
496
|
-
new_password_attempt: "Nueva contraseña (intento {0}/{1}): "
|
|
507
|
+
new_password_attempt: "Nueva contraseña (intento {0}/{1}): ",
|
|
508
|
+
confirm_password_prompt: "Confirmar contraseña: "
|
|
497
509
|
}
|
|
498
510
|
},
|
|
499
511
|
|
|
@@ -504,7 +516,27 @@ module.exports = {
|
|
|
504
516
|
active_api: "API activa: {0}",
|
|
505
517
|
most_used: "API más usada: {0}",
|
|
506
518
|
total_usage: "Uso total: {0} veces",
|
|
507
|
-
no_usage: "No hay uso registrado"
|
|
519
|
+
no_usage: "No hay uso registrado",
|
|
520
|
+
|
|
521
|
+
// Estadísticas mejoradas (nuevo)
|
|
522
|
+
success_rate: "Tasa de éxito general: {0}",
|
|
523
|
+
|
|
524
|
+
header_name: "Nombre de API",
|
|
525
|
+
header_usage: "Uso",
|
|
526
|
+
header_success: "Éxito",
|
|
527
|
+
header_last_used: "Último uso",
|
|
528
|
+
|
|
529
|
+
time_never: "Nunca",
|
|
530
|
+
time_just_now: "Ahora mismo",
|
|
531
|
+
time_minutes_ago: "Hace {0}m",
|
|
532
|
+
time_hours_ago: "Hace {0}h",
|
|
533
|
+
time_days_ago: "Hace {0}d",
|
|
534
|
+
|
|
535
|
+
menu_view: "Ver detalles de estadísticas",
|
|
536
|
+
menu_reset: "Restablecer estadísticas",
|
|
537
|
+
menu_back: "Volver",
|
|
538
|
+
reset_confirm: "¿Restablecer todas las estadísticas? [y/N]",
|
|
539
|
+
reset_success: "Estadísticas restablecidas con éxito"
|
|
508
540
|
},
|
|
509
541
|
|
|
510
542
|
// Actualizaciones de versión
|
|
@@ -534,5 +566,38 @@ module.exports = {
|
|
|
534
566
|
update_command: "Comando de actualización: npm update -g @kikkimo/claude-launcher",
|
|
535
567
|
up_to_date: "Está usando la última versión",
|
|
536
568
|
unexpected_error: "Error inesperado ocurrió durante la verificación"
|
|
569
|
+
},
|
|
570
|
+
|
|
571
|
+
// Función de actualización de modelo
|
|
572
|
+
model_upgrade: {
|
|
573
|
+
notification: "Actualización de modelo disponible: {0} → {1}",
|
|
574
|
+
notification_api: "API: {0}",
|
|
575
|
+
notification_hint: "Vaya a \"Gestión de API de terceros > Configuración de actualización de modelo\" para actualizar",
|
|
576
|
+
auto_upgraded: "Modelo actualizado automáticamente: {0} → {1}",
|
|
577
|
+
|
|
578
|
+
settings_title: "Configuración de actualización de modelo",
|
|
579
|
+
current_config: "Configuración actual",
|
|
580
|
+
auto_upgrade_label: "Usar automáticamente el último modelo",
|
|
581
|
+
auto_upgrade_on: "ACTIVADO",
|
|
582
|
+
auto_upgrade_off: "DESACTIVADO",
|
|
583
|
+
|
|
584
|
+
menu_toggle_auto_on: "Actualización auto [● ACTIVADO]",
|
|
585
|
+
menu_toggle_auto_off: "Actualización auto [○ DESACTIVADO]",
|
|
586
|
+
menu_manual_upgrade: "Actualizar todos los modelos manualmente",
|
|
587
|
+
menu_back: "Volver",
|
|
588
|
+
|
|
589
|
+
manual_title: "Verificación de actualización de modelo",
|
|
590
|
+
manual_checking: "Verificando {0} configuraciones de API...",
|
|
591
|
+
manual_api_current: "Actual: {0}",
|
|
592
|
+
manual_api_latest: "Último: {0}",
|
|
593
|
+
manual_api_uptodate: "(Ya actualizado)",
|
|
594
|
+
manual_api_no_info: "(Sin info de actualización)",
|
|
595
|
+
manual_confirm: "¿Actualizar este modelo? [y/N]",
|
|
596
|
+
manual_upgraded: "Actualizado: {0} → {1}",
|
|
597
|
+
manual_skipped: "Omitido",
|
|
598
|
+
|
|
599
|
+
manual_complete: "¡Actualización completa!",
|
|
600
|
+
manual_stats_upgraded: "Actualizados: {0}",
|
|
601
|
+
manual_stats_skipped: "Omitidos: {0} ({1} ya actualizados, {2} sin info de actualización)"
|
|
537
602
|
}
|
|
538
603
|
};
|
package/lib/i18n/locales/fr.js
CHANGED
|
@@ -28,6 +28,12 @@ module.exports = {
|
|
|
28
28
|
change_password: "Changer le mot de passe",
|
|
29
29
|
back: "Retour au menu principal"
|
|
30
30
|
},
|
|
31
|
+
remove_api: {
|
|
32
|
+
title: "Supprimer une API",
|
|
33
|
+
delete_single: "Supprimer une seule API",
|
|
34
|
+
clear_all: "Effacer toutes les API",
|
|
35
|
+
back: "Retour"
|
|
36
|
+
},
|
|
31
37
|
language: {
|
|
32
38
|
title: "Paramètres de langue",
|
|
33
39
|
current: "Langue actuelle : {0}",
|
|
@@ -44,6 +50,9 @@ module.exports = {
|
|
|
44
50
|
no_apis: "Aucune API tierce configurée",
|
|
45
51
|
add_api_first: "Veuillez d'abord ajouter une API en utilisant \"Ajouter une nouvelle API tierce\"",
|
|
46
52
|
all_apis_removed: "Toutes les API ont été supprimées",
|
|
53
|
+
all_apis_cleared: "{0} API ont été effacées",
|
|
54
|
+
clear_cancelled: "Opération d'effacement annulée",
|
|
55
|
+
current_api_count: "APIs actuelles : {0}",
|
|
47
56
|
apis_removed_or_none: "Toutes les API ont été supprimées ou aucune n'était configurée.",
|
|
48
57
|
removal_cancelled: "Suppression annulée",
|
|
49
58
|
operation_cancelled: "Opération annulée",
|
|
@@ -79,7 +88,9 @@ module.exports = {
|
|
|
79
88
|
enter_model_name: "Entrez le nom du modèle : ",
|
|
80
89
|
select_provider: "Sélectionner le fournisseur : ",
|
|
81
90
|
enter_import_file: "Entrez le chemin du fichier d'import : ",
|
|
82
|
-
ctrl_c_again: "Appuyez à nouveau sur Ctrl+C pour quitter le programme"
|
|
91
|
+
ctrl_c_again: "Appuyez à nouveau sur Ctrl+C pour quitter le programme",
|
|
92
|
+
confirm_clear_all: "Cela supprimera définitivement toutes les {0} API. Cette action ne peut pas être annulée.",
|
|
93
|
+
confirm_clear_all_input: "Tapez CLEAR pour confirmer : "
|
|
83
94
|
}
|
|
84
95
|
},
|
|
85
96
|
|
|
@@ -493,7 +504,8 @@ module.exports = {
|
|
|
493
504
|
"Force minimale du mot de passe : Bon (les mots de passe faibles et très faibles sont rejetés)"
|
|
494
505
|
],
|
|
495
506
|
example_strong_password: "Exemple de mot de passe fort : {0}",
|
|
496
|
-
new_password_attempt: "Nouveau mot de passe (tentative {0}/{1}) : "
|
|
507
|
+
new_password_attempt: "Nouveau mot de passe (tentative {0}/{1}) : ",
|
|
508
|
+
confirm_password_prompt: "Confirmer le mot de passe : "
|
|
497
509
|
}
|
|
498
510
|
},
|
|
499
511
|
|
|
@@ -504,7 +516,27 @@ module.exports = {
|
|
|
504
516
|
active_api: "API active : {0}",
|
|
505
517
|
most_used: "API la plus utilisée : {0}",
|
|
506
518
|
total_usage: "Utilisation totale : {0} fois",
|
|
507
|
-
no_usage: "Aucune utilisation enregistrée"
|
|
519
|
+
no_usage: "Aucune utilisation enregistrée",
|
|
520
|
+
|
|
521
|
+
// Statistiques améliorées (nouveau)
|
|
522
|
+
success_rate: "Taux de réussite global : {0}",
|
|
523
|
+
|
|
524
|
+
header_name: "Nom de l'API",
|
|
525
|
+
header_usage: "Utilisation",
|
|
526
|
+
header_success: "Succès",
|
|
527
|
+
header_last_used: "Dernière utilisation",
|
|
528
|
+
|
|
529
|
+
time_never: "Jamais",
|
|
530
|
+
time_just_now: "À l'instant",
|
|
531
|
+
time_minutes_ago: "Il y a {0}m",
|
|
532
|
+
time_hours_ago: "Il y a {0}h",
|
|
533
|
+
time_days_ago: "Il y a {0}j",
|
|
534
|
+
|
|
535
|
+
menu_view: "Voir les détails des statistiques",
|
|
536
|
+
menu_reset: "Réinitialiser les statistiques",
|
|
537
|
+
menu_back: "Retour",
|
|
538
|
+
reset_confirm: "Réinitialiser toutes les statistiques ? [y/N]",
|
|
539
|
+
reset_success: "Statistiques réinitialisées avec succès"
|
|
508
540
|
},
|
|
509
541
|
|
|
510
542
|
// Mises à jour de version
|
|
@@ -534,5 +566,38 @@ module.exports = {
|
|
|
534
566
|
update_command: "Commande de mise à jour : npm update -g @kikkimo/claude-launcher",
|
|
535
567
|
up_to_date: "Vous utilisez la dernière version",
|
|
536
568
|
unexpected_error: "Erreur inattendue survenue pendant la vérification"
|
|
569
|
+
},
|
|
570
|
+
|
|
571
|
+
// Fonction de mise à niveau du modèle
|
|
572
|
+
model_upgrade: {
|
|
573
|
+
notification: "Mise à niveau du modèle disponible : {0} → {1}",
|
|
574
|
+
notification_api: "API : {0}",
|
|
575
|
+
notification_hint: "Allez dans \"Gestion des API tierces > Paramètres de mise à niveau du modèle\" pour mettre à niveau",
|
|
576
|
+
auto_upgraded: "Modèle mis à niveau automatiquement : {0} → {1}",
|
|
577
|
+
|
|
578
|
+
settings_title: "Paramètres de mise à niveau du modèle",
|
|
579
|
+
current_config: "Configuration actuelle",
|
|
580
|
+
auto_upgrade_label: "Utiliser automatiquement le dernier modèle",
|
|
581
|
+
auto_upgrade_on: "ACTIVÉ",
|
|
582
|
+
auto_upgrade_off: "DÉSACTIVÉ",
|
|
583
|
+
|
|
584
|
+
menu_toggle_auto_on: "Mise à niveau auto [● ACTIVÉ]",
|
|
585
|
+
menu_toggle_auto_off: "Mise à niveau auto [○ DÉSACTIVÉ]",
|
|
586
|
+
menu_manual_upgrade: "Mettre à niveau tous les modèles manuellement",
|
|
587
|
+
menu_back: "Retour",
|
|
588
|
+
|
|
589
|
+
manual_title: "Vérification de mise à niveau du modèle",
|
|
590
|
+
manual_checking: "Vérification de {0} configurations d'API...",
|
|
591
|
+
manual_api_current: "Actuel : {0}",
|
|
592
|
+
manual_api_latest: "Dernier : {0}",
|
|
593
|
+
manual_api_uptodate: "(Déjà à jour)",
|
|
594
|
+
manual_api_no_info: "(Pas d'info de mise à niveau)",
|
|
595
|
+
manual_confirm: "Mettre à niveau ce modèle ? [y/N]",
|
|
596
|
+
manual_upgraded: "Mis à niveau : {0} → {1}",
|
|
597
|
+
manual_skipped: "Ignoré",
|
|
598
|
+
|
|
599
|
+
manual_complete: "Mise à niveau terminée !",
|
|
600
|
+
manual_stats_upgraded: "Mis à niveau : {0}",
|
|
601
|
+
manual_stats_skipped: "Ignoré : {0} ({1} déjà à jour, {2} sans info de mise à niveau)"
|
|
537
602
|
}
|
|
538
603
|
};
|