fleetbo-cockpit-cli 1.0.143 → 1.0.145

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.
Files changed (2) hide show
  1. package/cli.js +26 -41
  2. package/package.json +1 -1
package/cli.js CHANGED
@@ -639,10 +639,9 @@ if (command === 'alex') {
639
639
  process.stdout.write('\n\x1b[F');
640
640
  rl.prompt();
641
641
 
642
- let inputBuffer = []; // 👈 C'est devenu un Tableau (Array) !
642
+ let inputBuffer = [];
643
643
  let isProcessing = false;
644
- let burstTimer = null;
645
- let isPastingMode = false;
644
+ let isPasteMode = false;
646
645
 
647
646
  const executePrompt = async (text) => {
648
647
  if (['exit', 'quit'].includes(text.toLowerCase())) {
@@ -670,54 +669,40 @@ if (command === 'alex') {
670
669
  }
671
670
  };
672
671
 
673
- rl.on('line', (line) => {
672
+ rl.on('line', async (line) => {
674
673
  if (isProcessing) return;
675
674
 
676
- // 1. SI ON EST DÉJÀ EN MODE "MANUEL" (Suite à un collage)
677
- if (isPastingMode) {
678
- if (line.trim() === "") {
679
- // Le pilote a fait "Entrée" à vide pour valider
675
+ // 1. SI LE MODE COLLAGE EST ACTIF
676
+ if (isPasteMode) {
677
+ // Dès que tu tapes EOF, on assemble tout le texte et on l'envoie à Alex
678
+ if (line.trim().toUpperCase() === "EOF") {
680
679
  const finalPrompt = inputBuffer.join('\n').trim();
681
- inputBuffer = []; // On vide le panier
682
- isPastingMode = false;
683
- executePrompt(finalPrompt);
680
+ inputBuffer = [];
681
+ isPasteMode = false;
682
+ await executePrompt(finalPrompt);
684
683
  } else {
685
- // Le pilote continue d'écrire en dessous de son collage
684
+ // On accumule le texte collé silencieusement
686
685
  inputBuffer.push(line);
687
686
  }
688
687
  return;
689
688
  }
690
689
 
691
- // 2. ACCUMULATION (Frappe ou Collage)
692
- inputBuffer.push(line);
693
-
694
- // On annule le timer à chaque nouvelle ligne entrante
695
- if (burstTimer) clearTimeout(burstTimer);
696
-
697
- // 3. ANALYSE DU PANIER (30ms après la dernière ligne reçue)
698
- burstTimer = setTimeout(() => {
699
- burstTimer = null;
690
+ // 2. ACTIVATION DU MODE COLLAGE
691
+ if (line.trim().toLowerCase() === "/paste") {
692
+ isPasteMode = true;
693
+ console.log('\x1b[36m [Mode Éditeur] Collez votre long texte ici. Tapez EOF sur une nouvelle ligne pour envoyer.\x1b[0m');
694
+ // On efface le prompt "jojo ❯" pour que ton code collé s'affiche parfaitement !
695
+ rl.setPrompt("");
696
+ return;
697
+ }
700
698
 
701
- if (inputBuffer.length === 1) {
702
- // 👉 CAS A : Le panier ne contient qu'UNE SEULE ligne.
703
- // C'est un humain qui a tapé une phrase et appuyé sur Entrée.
704
- const finalPrompt = inputBuffer[0].trim();
705
- inputBuffer = []; // On vide le panier
706
-
707
- if (finalPrompt === "") {
708
- rl.prompt(); // Entrée dans le vide
709
- } else {
710
- executePrompt(finalPrompt); // Envoi direct !
711
- }
712
- } else {
713
- // 👉 CAS B : Le panier contient PLUSIEURS lignes d'un coup.
714
- // C'est mathématiquement un copier-coller (même avec des sauts de lignes dedans).
715
- isPastingMode = true;
716
- // On ajoute un petit indicateur visuel ultra-propre pour te prévenir
717
- console.log('\x1b[90m [Copier-coller détecté. Appuyez sur Entrée (ligne vide) pour valider]\x1b[0m');
718
- rl.prompt();
719
- }
720
- }, 30);
699
+ // 3. MODE CHAT CLASSIQUE (1 Entrée = 1 Envoi)
700
+ const finalPrompt = line.trim();
701
+ if (finalPrompt === "") {
702
+ rl.prompt(); // Touche Entrée dans le vide
703
+ } else {
704
+ await executePrompt(finalPrompt); // Envoi instantané
705
+ }
721
706
  });
722
707
  };
723
708
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fleetbo-cockpit-cli",
3
- "version": "1.0.143",
3
+ "version": "1.0.145",
4
4
  "description": "Fleetbo CLI - Build native mobile apps with React",
5
5
  "author": "Fleetbo",
6
6
  "license": "MIT",