chocolatito-code 1.6.0 → 1.6.2

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.
@@ -9,6 +9,7 @@ import { soltarPie } from "../pieFijo.js";
9
9
  import { clearTyped } from "../typeAhead.js";
10
10
  import { enPantallaFija } from "../pantalla.js";
11
11
  import { pedirOrden } from "./control.js";
12
+ import { renderUserPrompt } from "../renderer.js";
12
13
  /**
13
14
  * EL PUENTE ENTRE INK Y EL BUCLE DE SIEMPRE
14
15
  *
@@ -71,8 +72,17 @@ export async function preguntarConInk(promptSymbol = "❯", cwd = process.cwd())
71
72
  if (enPantallaFija()) {
72
73
  const orden = await pedirOrden(promptSymbol, cwd);
73
74
  const entero = expandirPegados(orden);
74
- if (entero.trim())
75
+ if (entero.trim()) {
75
76
  apuntarEnHistorial(entero);
77
+ // Y al historial DE LA PANTALLA, que es distinto: el de arriba es el de
78
+ // las flechas y vive en disco.
79
+ //
80
+ // Antes esto no hacia falta porque el marco se quedaba en el historial del
81
+ // terminal al cerrarse el prompt, y ahi quedaba lo escrito. Con el arbol
82
+ // unico el marco es transitorio: si nadie lo apunta, el mensaje del usuario
83
+ // desaparece de la conversacion justo al enviarlo.
84
+ renderUserPrompt(entero);
85
+ }
76
86
  limpiarPegados();
77
87
  return entero;
78
88
  }
@@ -1,21 +1,25 @@
1
1
  /**
2
- * Fija POR DEFECTO.
2
+ * Fija SOLO SI SE PIDE, otra vez.
3
3
  *
4
- * Estuvo detras de un interruptor un dia, y fue un error: el usuario pidio
5
- * cuatro veces que la caja no se moviera y lo que recibio fue una opcion que
6
- * habia que acordarse de encender. Una funcion que hay que activar a mano es,
7
- * para quien la pidio, una funcion que no esta.
4
+ * Estuvo por defecto media hora y la sesion salia en negro: "esta fallando, no
5
+ * sale nada, se bugea". Lo puse de serie sin haberlo podido abrir en un terminal
6
+ * de verdad -aqui no hay TTY- y se publico roto para los clientes.
8
7
  *
9
- * `CHOCOLATITO_PANTALLA=normal` devuelve el comportamiento de siempre: el
10
- * historial vuelve a ser del terminal y la rueda del raton a servir, a cambio de
11
- * que la barra suba con el scroll.
8
+ * La leccion no es "la pantalla fija es mala": es que un cambio que se lleva por
9
+ * delante TODO el dibujado no puede entrar por defecto verificado solo con
10
+ * pruebas. Las pruebas dicen que el arbol pinta lo que debe; no dicen que la
11
+ * consola de verdad se comporte como el emulador de la libreria.
12
+ *
13
+ * Vuelve a estar detras de CHOCOLATITO_PANTALLA=fija hasta que este vista
14
+ * funcionando en una consola. El comportamiento normal es el que llevaba
15
+ * funcionando toda la semana.
12
16
  */
13
17
  export declare function pantallaFijaPedida(): boolean;
14
18
  /**
15
19
  * Enciende o apaga el modo a mano, SIN tocar el terminal.
16
20
  *
17
- * Las pruebas lo necesitan: entrar de verdad escribiria la secuencia de la
18
- * pantalla alternativa en la consola de quien corre las pruebas y le dejaria el
21
+ * Las pruebas lo necesitan: entrar de verdad escribiría la secuencia de la
22
+ * pantalla alternativa en la consola de quien corre las pruebas y le dejaría el
19
23
  * informe en una pantalla que desaparece al acabar.
20
24
  */
21
25
  export declare function forzarPantallaFija(valor: boolean | null): void;
@@ -32,29 +32,31 @@ const SALIR = "\x1b[?1049l";
32
32
  let dentro = false;
33
33
  let logOriginal = null;
34
34
  /**
35
- * Fija POR DEFECTO.
35
+ * Fija SOLO SI SE PIDE, otra vez.
36
36
  *
37
- * Estuvo detras de un interruptor un dia, y fue un error: el usuario pidio
38
- * cuatro veces que la caja no se moviera y lo que recibio fue una opcion que
39
- * habia que acordarse de encender. Una funcion que hay que activar a mano es,
40
- * para quien la pidio, una funcion que no esta.
37
+ * Estuvo por defecto media hora y la sesion salia en negro: "esta fallando, no
38
+ * sale nada, se bugea". Lo puse de serie sin haberlo podido abrir en un terminal
39
+ * de verdad -aqui no hay TTY- y se publico roto para los clientes.
41
40
  *
42
- * `CHOCOLATITO_PANTALLA=normal` devuelve el comportamiento de siempre: el
43
- * historial vuelve a ser del terminal y la rueda del raton a servir, a cambio de
44
- * que la barra suba con el scroll.
41
+ * La leccion no es "la pantalla fija es mala": es que un cambio que se lleva por
42
+ * delante TODO el dibujado no puede entrar por defecto verificado solo con
43
+ * pruebas. Las pruebas dicen que el arbol pinta lo que debe; no dicen que la
44
+ * consola de verdad se comporte como el emulador de la libreria.
45
+ *
46
+ * Vuelve a estar detras de CHOCOLATITO_PANTALLA=fija hasta que este vista
47
+ * funcionando en una consola. El comportamiento normal es el que llevaba
48
+ * funcionando toda la semana.
45
49
  */
46
50
  export function pantallaFijaPedida() {
47
- if (process.env.CHOCOLATITO_PANTALLA === "normal")
48
- return false;
49
- return true;
51
+ return process.env.CHOCOLATITO_PANTALLA === "fija";
50
52
  }
51
53
  /** `null` = manda el estado real. Las pruebas lo fuerzan. */
52
54
  let forzado = null;
53
55
  /**
54
56
  * Enciende o apaga el modo a mano, SIN tocar el terminal.
55
57
  *
56
- * Las pruebas lo necesitan: entrar de verdad escribiria la secuencia de la
57
- * pantalla alternativa en la consola de quien corre las pruebas y le dejaria el
58
+ * Las pruebas lo necesitan: entrar de verdad escribiría la secuencia de la
59
+ * pantalla alternativa en la consola de quien corre las pruebas y le dejaría el
58
60
  * informe en una pantalla que desaparece al acabar.
59
61
  */
60
62
  export function forzarPantallaFija(valor) {
@@ -1,3 +1,22 @@
1
+ /**
2
+ * LO QUE ACABAS DE MANDAR, EN EL HISTORIAL
3
+ *
4
+ * Un ">" y el texto sobre un fondo plomo. Sin barras: las barras son el MARCO
5
+ * DE ESCRIBIR, y ese marco vive abajo y no se va nunca. Repetirlo aqui haria que
6
+ * la conversacion se llenara de cajas iguales y costara distinguir cual es la
7
+ * que espera tu orden.
8
+ *
9
+ * POR QUE HACE FALTA AHORA Y ANTES NO
10
+ *
11
+ * Antes el marco lo dejaba el terminal en su historial al cerrarse el prompt, y
12
+ * ahi quedaba lo que habias escrito. Con el arbol unico el marco es transitorio
13
+ * -React lo dibuja y lo borra-, asi que si nadie apunta la orden, tu mensaje
14
+ * desaparece de la conversacion en cuanto se envia.
15
+ *
16
+ * Las lineas se pintan una a una: un fondo de color sobre un texto con saltos
17
+ * dentro deja el color colgando hasta el borde derecho en unas terminales y no
18
+ * en otras.
19
+ */
1
20
  export declare function renderUserPrompt(text: string): void;
2
21
  export declare function renderToolStart(name: string, summary: string): void;
3
22
  export declare function renderToolSuccess(name: string, resultSummary: string): void;
@@ -34,10 +34,32 @@ const marked = new Marked(markedTerminal({
34
34
  },
35
35
  },
36
36
  }));
37
+ /**
38
+ * LO QUE ACABAS DE MANDAR, EN EL HISTORIAL
39
+ *
40
+ * Un ">" y el texto sobre un fondo plomo. Sin barras: las barras son el MARCO
41
+ * DE ESCRIBIR, y ese marco vive abajo y no se va nunca. Repetirlo aqui haria que
42
+ * la conversacion se llenara de cajas iguales y costara distinguir cual es la
43
+ * que espera tu orden.
44
+ *
45
+ * POR QUE HACE FALTA AHORA Y ANTES NO
46
+ *
47
+ * Antes el marco lo dejaba el terminal en su historial al cerrarse el prompt, y
48
+ * ahi quedaba lo que habias escrito. Con el arbol unico el marco es transitorio
49
+ * -React lo dibuja y lo borra-, asi que si nadie apunta la orden, tu mensaje
50
+ * desaparece de la conversacion en cuanto se envia.
51
+ *
52
+ * Las lineas se pintan una a una: un fondo de color sobre un texto con saltos
53
+ * dentro deja el color colgando hasta el borde derecho en unas terminales y no
54
+ * en otras.
55
+ */
37
56
  export function renderUserPrompt(text) {
38
- const symbol = chalk.bold.hex("#D97757")("");
39
- const shaded = chalk.bgHex("#242730").hex("#F4F4F5").bold(` ${text.trim()} `);
40
- salida.linea(`\n${symbol} ${shaded}\n`);
57
+ const lineas = text.trim().split("\n");
58
+ const pintadas = lineas.map((linea, i) => {
59
+ const marca = i === 0 ? chalk.gray(">") : " ";
60
+ return `${marca} ${chalk.bgHex("#2A2D34").hex("#E8E8EA")(` ${linea} `)}`;
61
+ });
62
+ salida.linea(`\n${pintadas.join("\n")}\n`);
41
63
  }
42
64
  // Tool call rendering as specified in §B5
43
65
  export function renderToolStart(name, summary) {
@@ -2,7 +2,7 @@
2
2
  "manifest_version": 3,
3
3
  "minimum_chrome_version": "102",
4
4
  "name": "Chocolatito Code",
5
- "version": "1.6.0",
5
+ "version": "1.6.2",
6
6
  "description": "Deja que Chocolatito Code trabaje dentro de tu Chrome, en segundo plano y con tus sesiones ya iniciadas.",
7
7
  "permissions": [
8
8
  "tabs",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "chocolatito-code",
3
- "version": "1.6.0",
3
+ "version": "1.6.2",
4
4
  "description": "Agente autónomo de programación para la terminal, con control real del ordenador y del navegador. Desarrollado por Chocolatito.",
5
5
  "type": "module",
6
6
  "bin": {