🚀 Fix: Résolution critique du flux d'authentification - NeuraTerm v2.0 opérationnel
Corrections majeures pour permettre le démarrage complet de l'application: • AUTHENTIFICATION: Suppression du process.exit(1) bloquant dans keyManager • DÉMARRAGE: Gestion gracieuse de l'absence de clés API au lancement • UX: Messages informatifs non-bloquants pour guider l'utilisateur • SÉCURITÉ: Protection des fonctions IA sans clés avec messages appropriés • INTERFACE: Aide complète intégrée dans ModernInterface ✅ NeuraTerm v2.0 démarre maintenant parfaitement avec architecture C4 ✅ Boucle de commandes interactive fonctionnelle ✅ Mode limité disponible sans clés, configuration possible via 'setup' ✅ Toutes les fonctionnalités accessibles une fois les clés configurées 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
f248062ef1
commit
865d0d3a48
@ -29,10 +29,8 @@ export class AuthManager {
|
|||||||
export async function initAuthentication(config: any): Promise<AuthManager> {
|
export async function initAuthentication(config: any): Promise<AuthManager> {
|
||||||
const authManager = new AuthManager(config);
|
const authManager = new AuthManager(config);
|
||||||
|
|
||||||
// Vérifier les clés au démarrage
|
// Ne pas forcer l'authentification au démarrage
|
||||||
if (!authManager.isAuthenticated()) {
|
// L'utilisateur peut configurer les clés plus tard avec "setup"
|
||||||
await authManager.authenticate();
|
|
||||||
}
|
|
||||||
|
|
||||||
return authManager;
|
return authManager;
|
||||||
}
|
}
|
||||||
|
@ -143,11 +143,16 @@ export class KeyManager {
|
|||||||
|
|
||||||
// Vérifier qu'au moins une clé est disponible
|
// Vérifier qu'au moins une clé est disponible
|
||||||
if (!keys.openai && !keys.mistral) {
|
if (!keys.openai && !keys.mistral) {
|
||||||
console.log('\n❌ Erreur: Au moins une clé API est requise pour utiliser NeuraTerm.');
|
console.log('\n⚠️ Aucune clé API configurée.');
|
||||||
console.log('Vous pouvez aussi définir les variables d\'environnement:');
|
console.log('NeuraTerm fonctionnera en mode limité.');
|
||||||
console.log(' export OPENAI_API_KEY="votre_clé"');
|
console.log('\nVous pouvez configurer les clés plus tard avec:');
|
||||||
console.log(' export MISTRAL_API_KEY="votre_clé"');
|
console.log(' - key set openai');
|
||||||
process.exit(1);
|
console.log(' - key set mistral');
|
||||||
|
console.log('Ou définir les variables d\'environnement:');
|
||||||
|
console.log(' - export OPENAI_API_KEY="votre_clé"');
|
||||||
|
console.log(' - export MISTRAL_API_KEY="votre_clé"');
|
||||||
|
console.log('\n💡 Tapez "setup" pour configurer les clés maintenant.');
|
||||||
|
return keys; // Retourner les clés vides au lieu de quitter
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sauvegarder les nouvelles clés
|
// Sauvegarder les nouvelles clés
|
||||||
|
@ -373,6 +373,13 @@ export class CommandProcessor {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Vérifier si les clés API sont disponibles
|
||||||
|
if (!this.dependencies.auth.isAuthenticated()) {
|
||||||
|
console.log('\n⚠️ Planification IA non disponible - Aucune clé API configurée');
|
||||||
|
console.log('💡 Tapez "setup" pour configurer vos clés API');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
console.log('\n📋 Création du plan d\'action...');
|
console.log('\n📋 Création du plan d\'action...');
|
||||||
const plan = await this.taskPlanner.createPlan(request);
|
const plan = await this.taskPlanner.createPlan(request);
|
||||||
@ -445,6 +452,13 @@ export class CommandProcessor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private async handleSmartQuery(query: string): Promise<void> {
|
private async handleSmartQuery(query: string): Promise<void> {
|
||||||
|
// Vérifier si les clés API sont disponibles
|
||||||
|
if (!this.dependencies.auth.isAuthenticated()) {
|
||||||
|
console.log('\n⚠️ Fonctionnalités IA non disponibles - Aucune clé API configurée');
|
||||||
|
console.log('💡 Tapez "setup" pour configurer vos clés API');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Déterminer si la demande nécessite des commandes système
|
// Déterminer si la demande nécessite des commandes système
|
||||||
const analysisPrompt = `
|
const analysisPrompt = `
|
||||||
|
@ -129,10 +129,12 @@ export async function run(app: AppInstance): Promise<void> {
|
|||||||
// Présentation de l'identité NeuraTerm
|
// Présentation de l'identité NeuraTerm
|
||||||
console.log(app.identity.generateIntroduction());
|
console.log(app.identity.generateIntroduction());
|
||||||
|
|
||||||
// Authentification des clés API si nécessaire
|
// Vérification des clés API sans bloquer
|
||||||
if (!app.auth.isAuthenticated()) {
|
if (!app.auth.isAuthenticated()) {
|
||||||
console.log('\n🔑 Configuration des clés API requise...');
|
console.log('\n⚠️ Aucune clé API configurée - Fonctionnement en mode limité');
|
||||||
await app.auth.authenticate();
|
console.log('💡 Tapez "setup" pour configurer vos clés API ou "help" pour voir les commandes disponibles');
|
||||||
|
} else {
|
||||||
|
console.log('\n✅ Clés API configurées - Toutes les fonctionnalités disponibles');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Enregistrer le démarrage en mémoire
|
// Enregistrer le démarrage en mémoire
|
||||||
|
@ -398,6 +398,62 @@ ${this.theme.muted('Tapez')} ${this.theme.primary('help')} ${this.theme.muted('p
|
|||||||
return truncated + this.theme.muted('... (tronqué)');
|
return truncated + this.theme.muted('... (tronqué)');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Afficher l'aide des commandes
|
||||||
|
*/
|
||||||
|
displayHelp(): void {
|
||||||
|
console.log(`\n${this.theme.primary('📚 Aide NeuraTerm v2.0.0')}`);
|
||||||
|
console.log(this.theme.primary('─'.repeat(50)));
|
||||||
|
|
||||||
|
console.log(`\n${this.theme.info('🔧 Commandes système:')}`);
|
||||||
|
console.log(` ${this.theme.accent('help')} - Afficher cette aide`);
|
||||||
|
console.log(` ${this.theme.accent('clear')} - Effacer l'écran`);
|
||||||
|
console.log(` ${this.theme.accent('exit/quit')} - Quitter NeuraTerm`);
|
||||||
|
console.log(` ${this.theme.accent('config')} - Afficher la configuration`);
|
||||||
|
|
||||||
|
console.log(`\n${this.theme.info('🔑 Gestion des clés API:')}`);
|
||||||
|
console.log(` ${this.theme.accent('setup')} - Configuration interactive des clés`);
|
||||||
|
console.log(` ${this.theme.accent('keys')} - Statut des clés API`);
|
||||||
|
console.log(` ${this.theme.accent('key set <provider>')} - Configurer une clé (openai/mistral)`);
|
||||||
|
console.log(` ${this.theme.accent('key status')} - Afficher le statut des clés`);
|
||||||
|
|
||||||
|
console.log(`\n${this.theme.info('🤖 Providers IA:')}`);
|
||||||
|
console.log(` ${this.theme.accent('providers')} - Lister les providers disponibles`);
|
||||||
|
console.log(` ${this.theme.accent('provider <nom>')} - Changer de provider`);
|
||||||
|
console.log(` ${this.theme.accent('stats [provider]')} - Statistiques d'utilisation`);
|
||||||
|
console.log(` ${this.theme.accent('cost')} - Coût total`);
|
||||||
|
|
||||||
|
console.log(`\n${this.theme.info('🛠️ Exécution et planification:')}`);
|
||||||
|
console.log(` ${this.theme.accent('exec <commande>')} - Exécuter une commande système`);
|
||||||
|
console.log(` ${this.theme.accent('plan <demande>')} - Créer un plan d'action`);
|
||||||
|
console.log(` ${this.theme.accent('run')} - Exécuter le plan actuel`);
|
||||||
|
console.log(` ${this.theme.accent('cancel')} - Annuler le plan actuel`);
|
||||||
|
|
||||||
|
console.log(`\n${this.theme.info('🧠 Mode IA intelligent:')}`);
|
||||||
|
console.log(` ${this.theme.muted('Tapez simplement votre demande pour une analyse automatique')}`);
|
||||||
|
console.log(` ${this.theme.muted('NeuraTerm déterminera s\'il faut exécuter des commandes')}`);
|
||||||
|
|
||||||
|
console.log(`\n${this.theme.muted('💡 Astuce: Les commandes précédées de')} ${this.theme.primary('@neura')} ${this.theme.muted('activent le mode IA')}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Afficher un message de bienvenue
|
||||||
|
*/
|
||||||
|
displayWelcome(): void {
|
||||||
|
this.displayBanner();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Afficher le contenu d'une réponse (pour compatibilité)
|
||||||
|
*/
|
||||||
|
displayResponse(response: any): void {
|
||||||
|
this.displayAIResponse(response, {
|
||||||
|
showProvider: true,
|
||||||
|
showTokens: true,
|
||||||
|
showCost: true
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Effacer l'écran avec style
|
* Effacer l'écran avec style
|
||||||
*/
|
*/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user