fleetbo-cockpit-cli 1.0.109 → 1.0.110

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 +47 -39
  2. package/package.json +1 -1
package/cli.js CHANGED
@@ -12,7 +12,7 @@ const axios = require('axios');
12
12
  const dotenv = require('dotenv');
13
13
  const os = require('os');
14
14
  const archiver = require('archiver');
15
- // readline remplacé par @inquirer/prompts (gestion paste + single Enter)
15
+ const readline = require('readline');
16
16
 
17
17
  // ============================================
18
18
  // FLEETBO CLI - Centralized Package
@@ -629,53 +629,61 @@ if (command === 'alex') {
629
629
  console.log('');
630
630
  console.log(' \x1b[32m Alex ❯\x1b[0m Describe your feature.');
631
631
  console.log('');
632
-
633
- // ── Boucle interactive avec @inquirer/prompts ──
634
- // Soumet sur une seule Entrée, gère le paste multi-lignes correctement,
635
- // curseur clignotant natif du terminal.
636
- const { input } = await import('@inquirer/prompts');
637
632
 
633
+ const rl = readline.createInterface({
634
+ input: process.stdin,
635
+ output: process.stdout,
636
+ prompt: `\x1b[34m${dynamicUsername} ❯ \x1b[0m`
637
+ });
638
+
639
+ process.stdout.write('\x1b[F');
640
+ rl.prompt();
641
+
642
+ let inputBuffer = "";
638
643
  let isProcessing = false;
639
644
 
640
- const runLoop = async () => {
641
- while (true) {
642
- let answer;
643
- try {
644
- answer = await input({
645
- message: `\x1b[34m${dynamicUsername} ❯\x1b[0m`,
646
- theme: {
647
- prefix: '',
648
- style: { answer: (t) => `\x1b[0m${t}` }
649
- }
650
- });
651
- } catch (e) {
652
- // Ctrl+C ou Ctrl+D
653
- console.log('\n\x1b[90m Alex session closed.\x1b[0m');
654
- process.exit(0);
655
- }
645
+ rl.on('line', async (line) => {
646
+ if (isProcessing) return;
647
+
648
+ const trimmedLine = line.trim();
656
649
 
657
- const trimmed = answer.trim();
650
+ if (['exit', 'quit'].includes(trimmedLine.toLowerCase())) {
651
+ console.log('\n\x1b[90m Alex session closed.\x1b[0m');
652
+ rl.close();
653
+ return;
654
+ }
658
655
 
659
- if (!trimmed) continue;
656
+ if (trimmedLine !== "") {
657
+ // Accumule + invite à confirmer
658
+ inputBuffer += (inputBuffer ? "\n" : "") + line;
659
+ rl.setPrompt(" \x1b[90m↵ to confirm · type more to add lines\x1b[0m\n ");
660
+ rl.prompt();
661
+ } else {
662
+ if (inputBuffer.trim() !== "") {
663
+ const finalPrompt = inputBuffer.trim();
664
+ inputBuffer = "";
665
+
666
+ if (finalPrompt.length > 1000) {
667
+ console.log(`\n\x1b[31m⛔ [Alex Safety] Mission rejected: Excessive size (${finalPrompt.length}/1000 characters).\x1b[0m`);
668
+ rl.setPrompt(`\x1b[34m${dynamicUsername} ❯ \x1b[0m`);
669
+ rl.prompt();
670
+ return;
671
+ }
660
672
 
661
- if (['exit', 'quit'].includes(trimmed.toLowerCase())) {
662
- console.log('\n\x1b[90m Alex session closed.\x1b[0m');
663
- process.exit(0);
664
- }
673
+ isProcessing = true;
674
+ rl.setPrompt("");
675
+ await processAlexRequest(finalPrompt);
676
+ isProcessing = false;
665
677
 
666
- if (trimmed.length > 1000) {
667
- console.log(`\n\x1b[31m⛔ [Alex Safety] Mission rejected: Excessive size (${trimmed.length}/1000 characters).\x1b[0m`);
668
- continue;
678
+ console.log('');
679
+ rl.setPrompt(`\x1b[34m${dynamicUsername} ❯ \x1b[0m`);
680
+ rl.prompt();
681
+ } else {
682
+ rl.setPrompt(`\x1b[34m${dynamicUsername} ❯ \x1b[0m`);
683
+ rl.prompt();
669
684
  }
670
-
671
- isProcessing = true;
672
- await processAlexRequest(trimmed);
673
- isProcessing = false;
674
- console.log('');
675
685
  }
676
- };
677
-
678
- runLoop();
686
+ });
679
687
  };
680
688
 
681
689
  if (!initialPrompt || initialPrompt === '?') startAlexSession();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fleetbo-cockpit-cli",
3
- "version": "1.0.109",
3
+ "version": "1.0.110",
4
4
  "description": "Fleetbo CLI - Build native mobile apps with React",
5
5
  "author": "Fleetbo",
6
6
  "license": "MIT",