xonecode 0.14.1 → 0.17.0
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.
- package/THIRD_PARTY_NOTICES.md +2 -2
- package/apps/web/dist/assets/index-CnskHXof.js +485 -0
- package/apps/web/dist/assets/index-DLfF2uEK.css +1 -0
- package/apps/web/dist/assets/{php-KZMIPXrN.js → php-8TR3jUGL.js} +1 -1
- package/apps/web/dist/assets/{ruby-jf5bWc_X.js → ruby-IynpAZS-.js} +1 -1
- package/apps/web/dist/index.html +2 -2
- package/dist/agent/conectores/gestorJira.js +164 -0
- package/dist/agent/conectores/gestorJira.js.map +1 -0
- package/dist/agent/conectores/gestorNotion.js +365 -0
- package/dist/agent/conectores/gestorNotion.js.map +1 -0
- package/dist/agent/conectores/servicioDeConectores.js +135 -34
- package/dist/agent/conectores/servicioDeConectores.js.map +1 -1
- package/dist/agent/config/configEnDisco.js +28 -0
- package/dist/agent/config/configEnDisco.js.map +1 -1
- package/dist/agent/config/selectorEnMaquina.js +9 -2
- package/dist/agent/config/selectorEnMaquina.js.map +1 -1
- package/dist/agent/config/settingsEnDisco.js +41 -1
- package/dist/agent/config/settingsEnDisco.js.map +1 -1
- package/dist/agent/grafo/marcarCriteriosDelPlan.js +85 -0
- package/dist/agent/grafo/marcarCriteriosDelPlan.js.map +1 -0
- package/dist/agent/grafo/xoneAgent.js +4 -0
- package/dist/agent/grafo/xoneAgent.js.map +1 -1
- package/dist/agent/motores/trueforge/sesionTrueforge.js +3 -0
- package/dist/agent/motores/trueforge/sesionTrueforge.js.map +1 -1
- package/dist/agent/sesiones/checkpointer.js +18 -0
- package/dist/agent/sesiones/checkpointer.js.map +1 -1
- package/dist/agent/sesiones/modeloDelCambio.js +5 -2
- package/dist/agent/sesiones/modeloDelCambio.js.map +1 -1
- package/dist/agent/sesiones/sesionGit.js +5 -1
- package/dist/agent/sesiones/sesionGit.js.map +1 -1
- package/dist/agent/subagentes/agentesEnDisco.js +13 -4
- package/dist/agent/subagentes/agentesEnDisco.js.map +1 -1
- package/dist/core/config.js +71 -0
- package/dist/core/config.js.map +1 -1
- package/dist/core/gestorDeTareas.js +202 -0
- package/dist/core/gestorDeTareas.js.map +1 -0
- package/dist/core/ports.js +43 -0
- package/dist/core/ports.js.map +1 -1
- package/dist/core/selectorDeCarpeta.js +12 -2
- package/dist/core/selectorDeCarpeta.js.map +1 -1
- package/dist/core/settings.js +38 -4
- package/dist/core/settings.js.map +1 -1
- package/dist/core/tareasDelPlan.js +66 -0
- package/dist/core/tareasDelPlan.js.map +1 -1
- package/dist/web/servidor/arranque.js +840 -36
- package/dist/web/servidor/arranque.js.map +1 -1
- package/dist/web/servidor/datosDeCierre.js +37 -0
- package/dist/web/servidor/datosDeCierre.js.map +1 -0
- package/dist/web/servidor/sesiones.js +20 -0
- package/dist/web/servidor/sesiones.js.map +1 -1
- package/dist/web/servidor/transporte.js.map +1 -1
- package/dist/web/servidor/vestibulo.js +79 -5
- package/dist/web/servidor/vestibulo.js.map +1 -1
- package/package.json +1 -1
- package/skills/xone-plan-builder/SKILL.md +7 -2
- package/apps/web/dist/assets/index-CWAPXNAO.css +0 -1
- package/apps/web/dist/assets/index-KJGPIrNa.js +0 -485
|
@@ -22,6 +22,34 @@
|
|
|
22
22
|
* citan sus «Bloqueada por». Con ese prefijo solo cuenta como dependencia un número que lo
|
|
23
23
|
* lleve: «T2 (resuelta la PENDIENTE 3)» es T2, no T2 y 3.
|
|
24
24
|
*/
|
|
25
|
+
/**
|
|
26
|
+
* Las cuatro palabras con que se escribe `**Estado:**` (`xone-plan-builder`, `TASKS-FORMAT.md`):
|
|
27
|
+
* quien desarrolla pone `implementada` al escribir el código y `hecha` cuando lo comprobó.
|
|
28
|
+
*/
|
|
29
|
+
export const ESTADOS_DE_TAREA = ["pendiente", "en curso", "implementada", "hecha"];
|
|
30
|
+
/**
|
|
31
|
+
* El estado del plan como una de las cuatro palabras, mirando solo cómo EMPIEZA: un plan real
|
|
32
|
+
* escribe «implementada — sin verificar en la app» o «pendiente — **NO hecha**», y lo que
|
|
33
|
+
* cuenta es la primera palabra, no la prosa de detrás (que tiene un «hecha» dentro).
|
|
34
|
+
*/
|
|
35
|
+
export function estadoReconocido(estado) {
|
|
36
|
+
if (estado === undefined)
|
|
37
|
+
return undefined;
|
|
38
|
+
const limpio = estado.replace(/[*_`]/g, "").trim().toLowerCase();
|
|
39
|
+
return ESTADOS_DE_TAREA.find((e) => limpio === e || new RegExp(`^${e}\\b`).test(limpio));
|
|
40
|
+
}
|
|
41
|
+
export function progresoDeTarea(estado, criterios) {
|
|
42
|
+
if (criterios.total > 0 && criterios.hechos === criterios.total)
|
|
43
|
+
return "finalizada";
|
|
44
|
+
const reconocido = estadoReconocido(estado);
|
|
45
|
+
if (reconocido === "hecha" && criterios.total === 0)
|
|
46
|
+
return "finalizada";
|
|
47
|
+
if (reconocido === "hecha" || reconocido === "implementada")
|
|
48
|
+
return "implementada";
|
|
49
|
+
if (reconocido === "en curso")
|
|
50
|
+
return "en-curso";
|
|
51
|
+
return "pendiente";
|
|
52
|
+
}
|
|
25
53
|
const CABECERA_DE_TAREA = /^#{2,3}\s+(T?\d{1,3})\s*[—–-]\s*(.+?)\s*$/;
|
|
26
54
|
/** «Ninguna …» o «nada»: la forma de decir que puede empezar ya. */
|
|
27
55
|
export const SIN_DEPENDENCIAS = /^(ninguna|nada)\b/i;
|
|
@@ -104,6 +132,7 @@ export function leerTareasDelPlan(texto) {
|
|
|
104
132
|
bloqueadaPor: nombra ? dependenciasDe(bloqueadaPorTexto, actual.numero.startsWith("T")) : [],
|
|
105
133
|
...(bloqueadaPorTexto === undefined ? {} : { bloqueadaPorTexto }),
|
|
106
134
|
criterios: { hechos, total },
|
|
135
|
+
progreso: progresoDeTarea(estado, { hechos, total }),
|
|
107
136
|
cuerpo: actual.lineas.join("\n").trim(),
|
|
108
137
|
});
|
|
109
138
|
actual = undefined;
|
|
@@ -126,4 +155,41 @@ export function leerTareasDelPlan(texto) {
|
|
|
126
155
|
cerrar();
|
|
127
156
|
return { ...(titulo === undefined || titulo === "" ? {} : { titulo }), tareas };
|
|
128
157
|
}
|
|
158
|
+
/**
|
|
159
|
+
* Marca como COMPROBADOS unos criterios de una tarea: cambia sus `- [ ]` a `- [x]`, contando las
|
|
160
|
+
* casillas de la sección de 1 en adelante, en el orden en que aparecen.
|
|
161
|
+
*
|
|
162
|
+
* Es lo que usa quien COMPRUEBA en el aparato (`marcar_criterios_del_plan`) y no puede escribir
|
|
163
|
+
* ficheros: por eso toca SOLO las casillas de UNA tarea, y nada más del fichero cambia. Un número
|
|
164
|
+
* que no existe se rechaza entero —marcar la mitad dejaría al modelo creyendo que marcó todo—.
|
|
165
|
+
*/
|
|
166
|
+
export function marcarCriterios(texto, numero, criterios) {
|
|
167
|
+
const saltos = texto.includes("\r\n") ? "\r\n" : "\n";
|
|
168
|
+
const lineas = texto.split(/\r?\n/);
|
|
169
|
+
const inicio = lineas.findIndex((l) => CABECERA_DE_TAREA.exec(l)?.[1] === numero);
|
|
170
|
+
if (inicio === -1)
|
|
171
|
+
return { error: `No hay ninguna tarea «${numero}» en el TASKS.md.` };
|
|
172
|
+
const casillas = [];
|
|
173
|
+
for (let i = inicio + 1; i < lineas.length && !/^##/.test(lineas[i]); i++) {
|
|
174
|
+
if (CASILLA.test(lineas[i]))
|
|
175
|
+
casillas.push(i);
|
|
176
|
+
}
|
|
177
|
+
const fuera = criterios.filter((n) => !Number.isInteger(n) || n < 1 || n > casillas.length);
|
|
178
|
+
if (fuera.length > 0) {
|
|
179
|
+
return { error: `La tarea ${numero} tiene ${casillas.length} criterio(s); no existe el ${fuera.join(", ")}.` };
|
|
180
|
+
}
|
|
181
|
+
const marcados = [];
|
|
182
|
+
const yaEstaban = [];
|
|
183
|
+
for (const n of [...new Set(criterios)].sort((a, b) => a - b)) {
|
|
184
|
+
const i = casillas[n - 1];
|
|
185
|
+
const c = CASILLA.exec(lineas[i]);
|
|
186
|
+
if (c[1] !== " ") {
|
|
187
|
+
yaEstaban.push(n);
|
|
188
|
+
continue;
|
|
189
|
+
}
|
|
190
|
+
lineas[i] = lineas[i].replace(/\[ \]/, "[x]");
|
|
191
|
+
marcados.push(n);
|
|
192
|
+
}
|
|
193
|
+
return { texto: lineas.join(saltos), marcados, yaEstaban };
|
|
194
|
+
}
|
|
129
195
|
//# sourceMappingURL=tareasDelPlan.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tareasDelPlan.js","sourceRoot":"","sources":["../../src/core/tareasDelPlan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;
|
|
1
|
+
{"version":3,"file":"tareasDelPlan.js","sourceRoot":"","sources":["../../src/core/tareasDelPlan.ts"],"names":[],"mappings":"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"}
|