xonecode 0.8.2 → 0.8.10

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.
@@ -0,0 +1,140 @@
1
+ /**
2
+ * ¿El turno CUMPLIÓ lo que se le pidió? Un juez para la pregunta que ningún `if` contesta.
3
+ *
4
+ * ## Por qué hace falta
5
+ *
6
+ * El harness sabe medir muchas cosas del turno —si el verificador quedó verde, qué ficheros
7
+ * cambiaron, si quedaron escrituras sin aprobar— y **ninguna de ellas contesta la pregunta
8
+ * de quien lo encargó**. Un turno puede cerrar con el simulador en verde, tres ficheros
9
+ * tocados y un resumen impecable, y no haber hecho lo que se pedía.
10
+ *
11
+ * Y eso pasa. MEDIDO en turnos reales del usuario, tres veces en la misma sesión:
12
+ * «el especialista se ha vuelto a cortar antes de darme el informe», «las dos tareas que
13
+ * lancé no llegaron a ejecutarse», «la devolución del verificador ha llegado cortada». En
14
+ * los tres el turno cerró y el resumen sonaba a trabajo terminado.
15
+ *
16
+ * ## El reparto: código para lo comprobable, juez para lo difuso
17
+ *
18
+ * Es el mismo de las tareas de fondo (`core/entrega.ts`), y por el mismo motivo: un juez
19
+ * que se equivoque en verde cierra un trabajo a medias sin que nadie lo vea. Así que los
20
+ * HECHOS los mide el código y se le dan hechos —no se le pide que los averigüe—, y lo único
21
+ * que se le pregunta es lo que de verdad es un juicio: si con esos hechos delante el
22
+ * encargo está cumplido.
23
+ *
24
+ * ## Fail-closed, y en la dirección que importa
25
+ *
26
+ * La respuesta peligrosa es «cumplido» cuando no lo está: cierra el turno en falso y quien
27
+ * lo pidió se entera al usar la app. Por eso lo que no se entiende es **`dudoso`** y nunca
28
+ * `cumplido` — igual que `indeterminado` no es verde en el juez de tareas.
29
+ */
30
+ export const PREGUNTA_POR_OMISION = "No tengo claro si esto es lo que querías. ¿Lo doy por bueno?";
31
+ /** Lo que el juez tiene que contestar, en el mismo formato que el de tareas: JSON y nada más. */
32
+ export function promptDelJuezDelTurno(caso) {
33
+ const h = caso.hechos;
34
+ const hechos = [];
35
+ // Cada hecho solo si CONSTA: una línea «verificador: no corrió» y otra «no consta» dicen
36
+ // cosas distintas, y mezclarlas es cómo el juez acaba afirmando lo que nadie midió.
37
+ if (h.verificador !== undefined)
38
+ hechos.push(`- El simulador de XOne quedó en ${h.verificador.toUpperCase()}.`);
39
+ else
40
+ hechos.push("- El simulador no llegó a correr, así que no consta que el proyecto esté sano.");
41
+ if (h.ficheros !== undefined) {
42
+ hechos.push(h.ficheros.length === 0
43
+ ? "- No se cambió ningún fichero del proyecto."
44
+ : `- Ficheros del proyecto cambiados: ${h.ficheros.join(", ")}.`);
45
+ }
46
+ if (h.escriturasSinResolver === true) {
47
+ hechos.push("- Quedaron escrituras SIN aplicar: nadie las aprobó o se agotó un tope.");
48
+ }
49
+ if (h.algunEspecialistaCortado === true) {
50
+ hechos.push("- Algún especialista se quedó sin presupuesto antes de terminar, así que su parte puede estar a medias.");
51
+ }
52
+ return [
53
+ "Eres el juez de un harness de desarrollo. Decides UNA cosa: si el turno hizo lo que se",
54
+ "le pidió. No revisas estilo, no propones mejoras y no juzgas si el trabajo es bonito.",
55
+ "",
56
+ "LO QUE SE PIDIÓ:",
57
+ caso.objetivo.trim(),
58
+ "",
59
+ "LO QUE EL AGENTE CONTESTÓ:",
60
+ caso.respuesta.trim() === "" ? "(no contestó nada)" : caso.respuesta.trim(),
61
+ "",
62
+ "HECHOS MEDIDOS POR EL HARNESS (no son opinión del agente):",
63
+ ...hechos,
64
+ "",
65
+ "Reglas:",
66
+ "- Que el agente DIGA que lo hizo no es que lo hiciera. Cruza lo que dice con los hechos.",
67
+ "- Hacer MÁS de lo que se pidió no es incumplir: si el encargo está hecho, está cumplido.",
68
+ "- Si el encargo era una pregunta o un análisis, cumplir es haberla contestado; no hace",
69
+ " falta que haya ficheros cambiados.",
70
+ "- Si no puedes decidirlo con lo que tienes, contesta «dudoso». No adivines.",
71
+ "",
72
+ "Contesta SOLO con este JSON, sin texto alrededor:",
73
+ '{"cumplimiento":"cumplido|no-cumplido|dudoso","motivo":"una frase"}',
74
+ "",
75
+ "El motivo dice QUÉ falta o QUÉ no cuadra, no «no se cumplió». Si está cumplido, una",
76
+ "frase corta de por qué lo das por bueno.",
77
+ ].join("\n");
78
+ }
79
+ /**
80
+ * El JSON del juez → veredicto. Lo que no se entiende es `dudoso`.
81
+ *
82
+ * Se busca el objeto dentro del texto en vez de exigir un JSON limpio: un modelo que
83
+ * envuelve su respuesta en ``` o le pone una frase delante ha contestado igual, y tirar ese
84
+ * veredicto por la envoltura sería perder la respuesta por su presentación.
85
+ */
86
+ export function veredictoDelTurnoDeTexto(texto) {
87
+ const objeto = objetoDelTexto(texto);
88
+ const crudo = objeto?.["cumplimiento"];
89
+ const motivo = typeof objeto?.["motivo"] === "string" ? objeto["motivo"].trim() : "";
90
+ if (crudo === "cumplido" || crudo === "no-cumplido" || crudo === "dudoso") {
91
+ return {
92
+ cumplimiento: crudo,
93
+ motivo: motivo === "" ? "el juez no dio motivo" : motivo,
94
+ };
95
+ }
96
+ return {
97
+ cumplimiento: "dudoso",
98
+ motivo: motivo === "" ? "no se entendió lo que contestó el juez" : motivo,
99
+ };
100
+ }
101
+ function objetoDelTexto(texto) {
102
+ const abre = texto.indexOf("{");
103
+ const cierra = texto.lastIndexOf("}");
104
+ if (abre < 0 || cierra <= abre)
105
+ return undefined;
106
+ try {
107
+ const valor = JSON.parse(texto.slice(abre, cierra + 1));
108
+ return typeof valor === "object" && valor !== null && !Array.isArray(valor)
109
+ ? valor
110
+ : undefined;
111
+ }
112
+ catch {
113
+ return undefined;
114
+ }
115
+ }
116
+ /**
117
+ * Del veredicto a lo que se hace, y las tres salidas no son intercambiables.
118
+ *
119
+ * - **Cumplido → NADA.** Ni una línea. Un juez que felicita en cada turno es ruido, y el
120
+ * ruido es cómo un aviso deja de leerse — la misma razón por la que los avisos de
121
+ * honestidad tienen alcance de turno y no salen cuando no ha pasado nada.
122
+ * - **No cumplido → AVISO.** No se pregunta: no hay nada que decidir, hay algo que decir.
123
+ * Quien lo lea ya está delante del turno y sabe qué hacer.
124
+ * - **Dudoso → PREGUNTAR**, si hay alguien a quien preguntar. Es la mitad que pidió el
125
+ * usuario y la que un `if` no puede dar: el juez no sabe, y el que sabe está ahí.
126
+ *
127
+ * **Sin humano, la duda se degrada a AVISO y no a silencio.** En una tarea de fondo no hay
128
+ * a quién preguntar —`consolaDeTarea` aparca en vez de contestar por nadie—, y tragarse la
129
+ * duda ahí sería cerrar en falso justo donde nadie está mirando.
130
+ */
131
+ export function accionDelJuez(veredicto, opciones) {
132
+ if (veredicto.cumplimiento === "cumplido")
133
+ return { tipo: "nada" };
134
+ if (veredicto.cumplimiento === "no-cumplido") {
135
+ return { tipo: "aviso", texto: `no parece que esto cumpla lo que pediste: ${veredicto.motivo}` };
136
+ }
137
+ const texto = `no está claro si esto cumple lo que pediste: ${veredicto.motivo}`;
138
+ return opciones.hayHumano ? { tipo: "preguntar", texto } : { tipo: "aviso", texto };
139
+ }
140
+ //# sourceMappingURL=juezDelTurno.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"juezDelTurno.js","sourceRoot":"","sources":["../../src/core/juezDelTurno.ts"],"names":[],"mappings":"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"}
@@ -40,26 +40,97 @@ export function collectPending(state) {
40
40
  continue;
41
41
  for (const interrupt of interrupts) {
42
42
  const { id, value } = interrupt;
43
- const action = value?.actionRequests?.[0];
44
- if (!id || !action?.name)
43
+ const acciones = value?.actionRequests ?? [];
44
+ if (!id || acciones.length === 0)
45
45
  continue;
46
- pending.push({
47
- id,
48
- tool: action.name,
49
- args: action.args ?? {},
50
- description: action.description ?? `Ejecutar ${action.name}`,
51
- allowedDecisions: value?.reviewConfigs?.[0]?.allowedDecisions ?? ["approve", "reject"],
46
+ /**
47
+ * **UNA entrada por acción, no por interrupción, y ahí estaba el fallo.**
48
+ *
49
+ * `actionRequests` es una LISTA: cuando el modelo pide varias escrituras en la misma
50
+ * tanda —lo hace DeepSeek, y cualquiera que paralelice—, la interrupción llega con
51
+ * todas dentro. Leer solo `[0]` tenía dos consecuencias, y la silenciosa era la peor:
52
+ * al usuario se le preguntaba por la PRIMERA y las demás no se veían; y al reanudar
53
+ * se mandaba UNA decisión para N llamadas colgadas, que la librería rechaza con
54
+ * «Number of human decisions (1) does not match number of hanging tool calls (3)».
55
+ *
56
+ * El `id` se compone porque es la CLAVE con la que todo lo de arriba empareja
57
+ * decisiones —mapas en `turnoReal.ts`, la tarjeta de aprobación, el cable— y cambiar
58
+ * su naturaleza obligaría a tocar las cuatro capas. Compuesto sigue siendo una cadena
59
+ * opaca para todos ellos, y `buildResume` es el único que lo abre. Lleva también el
60
+ * TOTAL porque al reanudar hay que entregar exactamente N decisiones y en ORDEN: sin
61
+ * el total, una decisión que faltara al final encogería la lista sin que se note.
62
+ */
63
+ acciones.forEach((action, indice) => {
64
+ if (!action?.name)
65
+ return;
66
+ pending.push({
67
+ id: componerId(id, indice, acciones.length),
68
+ tool: action.name,
69
+ args: action.args ?? {},
70
+ description: action.description ?? `Ejecutar ${action.name}`,
71
+ // Cada acción tiene su propia configuración de revisión; se cae a la primera
72
+ // porque la librería la omite cuando todas comparten la misma.
73
+ allowedDecisions: value?.reviewConfigs?.[indice]?.allowedDecisions
74
+ ?? value?.reviewConfigs?.[0]?.allowedDecisions
75
+ ?? ["approve", "reject"],
76
+ });
52
77
  });
53
78
  }
54
79
  }
55
80
  return pending;
56
81
  }
57
- /** El mapa `{ id → { decisions: [...] } }` que espera `new Command({ resume })`. */
82
+ /**
83
+ * El separador del id compuesto. Un carácter que no aparece en un id de interrupción de
84
+ * langgraph (son hexadecimales con guiones), así que partir por el PRIMERO es seguro.
85
+ */
86
+ const SEPARADOR_DE_ACCION = "#";
87
+ function componerId(id, indice, total) {
88
+ // Con una sola acción el id se queda como estaba: es el caso normal y así no cambia nada
89
+ // de lo que ya circula —transcripts guardados, tarjetas en vuelo— por un caso que no era.
90
+ return total === 1 ? id : `${id}${SEPARADOR_DE_ACCION}${indice}/${total}`;
91
+ }
92
+ /** `«abc#1/3»` → la interrupción, su índice y cuántas hay. Un id simple es `{indice:0,total:1}`. */
93
+ function descomponerId(compuesto) {
94
+ const corte = compuesto.indexOf(SEPARADOR_DE_ACCION);
95
+ if (corte < 0)
96
+ return { id: compuesto, indice: 0, total: 1 };
97
+ const [indice, total] = compuesto.slice(corte + 1).split("/").map(Number);
98
+ if (!Number.isInteger(indice) || !Number.isInteger(total) || total < 1) {
99
+ return { id: compuesto, indice: 0, total: 1 };
100
+ }
101
+ return { id: compuesto.slice(0, corte), indice: indice, total: total };
102
+ }
103
+ /**
104
+ * El mapa `{ id → { decisions: [...] } }` que espera `new Command({ resume })`.
105
+ *
106
+ * **Una interrupción con N acciones necesita N decisiones, en ORDEN.** Por eso esto vuelve
107
+ * a agrupar lo que `collectPending` desplegó: la lista se dimensiona con el total que viaja
108
+ * en el id, y cada decisión se coloca en su índice.
109
+ *
110
+ * **El hueco que quede se RECHAZA**, que es la dirección de siempre: una decisión que falta
111
+ * es una que nadie tomó, y aprobar por omisión una escritura sobre el proyecto del cliente
112
+ * es justo lo que la aprobación existe para impedir. Aquí no debería pasar nunca —quien
113
+ * llama resuelve todas las pendientes, a mano o automáticas—, pero si pasa, el turno sigue
114
+ * y lo que no se decidió no se aplica, en vez de reventar con un descuadre de números.
115
+ */
58
116
  export function buildResume(decisions) {
59
- const resume = {};
60
- for (const [id, decision] of decisions) {
61
- resume[id] = { decisions: [decision] };
117
+ const porInterrupcion = new Map();
118
+ for (const [compuesto, decision] of decisions) {
119
+ const { id, indice, total } = descomponerId(compuesto);
120
+ let lista = porInterrupcion.get(id);
121
+ if (lista === undefined) {
122
+ lista = Array.from({ length: total }, () => ({ type: "reject", message: REJECT_MESSAGE }));
123
+ porInterrupcion.set(id, lista);
124
+ }
125
+ // Una lista más corta de lo que dice este id significa dos totales distintos para la
126
+ // misma interrupción: se estira, porque quedarse corto es el descuadre que esto arregla.
127
+ while (lista.length < total)
128
+ lista.push({ type: "reject", message: REJECT_MESSAGE });
129
+ lista[indice] = decision;
62
130
  }
131
+ const resume = {};
132
+ for (const [id, lista] of porInterrupcion)
133
+ resume[id] = { decisions: lista };
63
134
  return resume;
64
135
  }
65
136
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"hitl.js","sourceRoot":"","sources":["../../src/vendor/hitl.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hitl.js","sourceRoot":"","sources":["../../src/vendor/hitl.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xonecode",
3
- "version": "0.8.2",
3
+ "version": "0.8.10",
4
4
  "description": "Consola CLI y harness de agente para desarrollar aplicaciones XOne",
5
5
  "type": "module",
6
6
  "license": "MIT",