@nac3/forge-cli 1.23.5 → 1.23.7
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/dist/bin/yf.d.ts.map +1 -1
- package/dist/bin/yf.js +2 -0
- package/dist/bin/yf.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +62 -0
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/temp.d.ts +36 -0
- package/dist/commands/temp.d.ts.map +1 -0
- package/dist/commands/temp.js +83 -0
- package/dist/commands/temp.js.map +1 -0
- package/dist/core/temp_janitor.d.ts +83 -0
- package/dist/core/temp_janitor.d.ts.map +1 -0
- package/dist/core/temp_janitor.js +160 -0
- package/dist/core/temp_janitor.js.map +1 -0
- package/dist/core/turn_classifier.d.ts +4 -3
- package/dist/core/turn_classifier.d.ts.map +1 -1
- package/dist/core/turn_classifier.js +65 -20
- package/dist/core/turn_classifier.js.map +1 -1
- package/dist/docs/doctrine/yf-commands.md +2 -0
- package/dist/urazuke/evidence.d.ts +44 -0
- package/dist/urazuke/evidence.d.ts.map +1 -1
- package/dist/urazuke/evidence.js +116 -26
- package/dist/urazuke/evidence.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/docs/doctrine/yf-commands.md +2 -0
- package/package.json +1 -1
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* El portero de %TEMP%: cuenta y barre los directorios temporales que deja
|
|
3
|
+
* la bateria (PND-241).
|
|
4
|
+
*
|
|
5
|
+
* MEDIDO el 31-oct-2026 en C:\Users\ASUS\AppData\Local\Temp: 26.034
|
|
6
|
+
* directorios yf-* huerfanos, sobre 47.484 entradas en total. La nota del
|
|
7
|
+
* commit 5f30f42 habia contado 5.905 nueve dias antes, asi que el stock
|
|
8
|
+
* crece con cada corrida y nadie lo limpia.
|
|
9
|
+
*
|
|
10
|
+
* Y la causa NO es que los tests no limpien. Los grandes aportantes SI
|
|
11
|
+
* tienen su afterEach con `fs.rm(tmpHome, {recursive, force, maxRetries})`,
|
|
12
|
+
* y la bateria pasa en verde -- si ese rm tirara, el hook fallaria. Lo que
|
|
13
|
+
* se midio al correr tests/vault-server.test.ts aislado (17 casos, 8
|
|
14
|
+
* directorios nuevos) es que lo que queda en pie contiene EXACTAMENTE esto:
|
|
15
|
+
*
|
|
16
|
+
* yf-vsrv-home-BqVTGW/AppData/Roaming <- y nada mas
|
|
17
|
+
*
|
|
18
|
+
* O sea: el rm borro el arbol y DESPUES alguien volvio a crear el camino,
|
|
19
|
+
* ya con el HOME del test restaurado. Es la forma de PND-237 otra vez: un
|
|
20
|
+
* escritor que sobrevive al cierre. Perseguir ese escritor en cada uno de
|
|
21
|
+
* los 230 archivos que hacen mkdtemp es la via larga y se vuelve a filtrar
|
|
22
|
+
* con el proximo test que se escriba.
|
|
23
|
+
*
|
|
24
|
+
* La via corta es cambiar DONDE caen: la bateria corre con su propio
|
|
25
|
+
* os.tmpdir() -- un unico padre yf-run-<pid>-<t> dentro del %TEMP% real --
|
|
26
|
+
* y al terminar se borra el padre entero. Un escritor rezagado que recrea
|
|
27
|
+
* su camino lo recrea ADENTRO del padre, asi que igual se va. Ver
|
|
28
|
+
* tests/global_temp_sandbox.ts, que es el que lo instala.
|
|
29
|
+
*
|
|
30
|
+
* Este modulo tiene las dos mitades y las comparten TRES consumidores (el
|
|
31
|
+
* cajon de arena de la bateria, `yf temp`, y el chequeo del doctor), para
|
|
32
|
+
* que la regla de que es "un temporal de Forge" viva en un solo lugar.
|
|
33
|
+
*
|
|
34
|
+
* ASCII puro.
|
|
35
|
+
*/
|
|
36
|
+
import { promises as fs } from 'node:fs';
|
|
37
|
+
import os from 'node:os';
|
|
38
|
+
import path from 'node:path';
|
|
39
|
+
/** Prefijo del padre por corrida que instala el cajon de arena. */
|
|
40
|
+
export const SANDBOX_PREFIX = 'yf-run-';
|
|
41
|
+
/** Edad minima por defecto para considerar huerfano a un temporal: 2 h.
|
|
42
|
+
*
|
|
43
|
+
* No es cosmetico. En esta maquina casi siempre hay OTRA bateria corriendo
|
|
44
|
+
* al lado (y cuatro paneles vivos), asi que borrar por nombre sin mirar la
|
|
45
|
+
* edad mata la corrida del vecino -- el riesgo que el propio PND-241 pide
|
|
46
|
+
* evitar. Una bateria completa tarda ~10 min medidos; 2 h deja doce veces
|
|
47
|
+
* ese margen. */
|
|
48
|
+
export const DEFAULT_MIN_AGE_MS = 2 * 60 * 60 * 1000;
|
|
49
|
+
/** Edad a la que el cajon de arena considera abandonado un padre de otra
|
|
50
|
+
* corrida (la suya la borra por nombre, no por edad). */
|
|
51
|
+
export const STALE_SANDBOX_MS = 6 * 60 * 60 * 1000;
|
|
52
|
+
/**
|
|
53
|
+
* La regla de que cuenta como temporal de Forge, en un solo lugar.
|
|
54
|
+
*
|
|
55
|
+
* Deliberadamente ANCLADA al arranque: `startsWith('yf-')` y no un
|
|
56
|
+
* `includes`, para no barrer el temporal de otra herramienta que mencione
|
|
57
|
+
* yf- en el medio de su nombre.
|
|
58
|
+
*/
|
|
59
|
+
export function isForgeTempName(name) {
|
|
60
|
+
return name.startsWith('yf-');
|
|
61
|
+
}
|
|
62
|
+
/** Nombre del padre por corrida. Lleva pid + reloj + azar para que dos
|
|
63
|
+
* baterias simultaneas no compartan cajon. */
|
|
64
|
+
export function newSandboxName(pid, now, rand = Math.random()) {
|
|
65
|
+
const salt = Math.floor(rand * 0xffffff).toString(36).padStart(4, '0');
|
|
66
|
+
return SANDBOX_PREFIX + pid + '-' + now.toString(36) + '-' + salt;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Cuenta los nombres `yf-*` de `tmpRoot` SIN hacer un stat por cada uno.
|
|
70
|
+
*
|
|
71
|
+
* Existe por costo: `listForgeTempDirs` hace un stat por entrada para poder
|
|
72
|
+
* mirar la edad, y en la maquina donde se abrio PND-241 eso eran 26.034
|
|
73
|
+
* stats. Un comando de diagnostico no puede pagar eso para decir "hay
|
|
74
|
+
* mucho". El que necesita la edad usa la otra; el que solo necesita el
|
|
75
|
+
* tamano del stock usa esta.
|
|
76
|
+
*/
|
|
77
|
+
export async function countForgeTempNames(tmpRoot = os.tmpdir()) {
|
|
78
|
+
try {
|
|
79
|
+
const names = await fs.readdir(tmpRoot);
|
|
80
|
+
return names.filter(isForgeTempName).length;
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
return 0;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
/** Lista los temporales de Forge que hay en `tmpRoot`. */
|
|
87
|
+
export async function listForgeTempDirs(tmpRoot = os.tmpdir()) {
|
|
88
|
+
let names;
|
|
89
|
+
try {
|
|
90
|
+
names = await fs.readdir(tmpRoot);
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
return [];
|
|
94
|
+
}
|
|
95
|
+
const out = [];
|
|
96
|
+
for (const name of names) {
|
|
97
|
+
if (!isForgeTempName(name))
|
|
98
|
+
continue;
|
|
99
|
+
const full = path.join(tmpRoot, name);
|
|
100
|
+
let mtimeMs = 0;
|
|
101
|
+
try {
|
|
102
|
+
const st = await fs.stat(full);
|
|
103
|
+
if (!st.isDirectory())
|
|
104
|
+
continue;
|
|
105
|
+
mtimeMs = st.mtimeMs;
|
|
106
|
+
}
|
|
107
|
+
catch {
|
|
108
|
+
/* Desaparecio entre el readdir y el stat: lo limpio alguien mas. */
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
111
|
+
out.push({ name, path: full, mtimeMs, sandbox: name.startsWith(SANDBOX_PREFIX) });
|
|
112
|
+
}
|
|
113
|
+
return out;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Barre los temporales de Forge huerfanos.
|
|
117
|
+
*
|
|
118
|
+
* Fail-open a proposito: un directorio que no se puede borrar (escritor
|
|
119
|
+
* vivo, permiso) se anota en `failed` y el barrido SIGUE. Un portero que
|
|
120
|
+
* aborta en el primer EBUSY deja el resto del stock en pie, que es
|
|
121
|
+
* exactamente el estado del que venimos.
|
|
122
|
+
*/
|
|
123
|
+
export async function sweepForgeTemp(opts = {}) {
|
|
124
|
+
const tmpRoot = opts.tmpRoot ?? os.tmpdir();
|
|
125
|
+
const now = opts.now ?? Date.now();
|
|
126
|
+
const minAgeMs = opts.minAgeMs ?? DEFAULT_MIN_AGE_MS;
|
|
127
|
+
const keep = new Set(opts.keep ?? []);
|
|
128
|
+
const entries = await listForgeTempDirs(tmpRoot);
|
|
129
|
+
const res = {
|
|
130
|
+
tmpRoot,
|
|
131
|
+
scanned: entries.length,
|
|
132
|
+
eligible: 0,
|
|
133
|
+
removed: 0,
|
|
134
|
+
failed: [],
|
|
135
|
+
skippedFresh: 0,
|
|
136
|
+
skippedKept: 0,
|
|
137
|
+
};
|
|
138
|
+
for (const e of entries) {
|
|
139
|
+
if (keep.has(e.name)) {
|
|
140
|
+
res.skippedKept++;
|
|
141
|
+
continue;
|
|
142
|
+
}
|
|
143
|
+
if (now - e.mtimeMs < minAgeMs) {
|
|
144
|
+
res.skippedFresh++;
|
|
145
|
+
continue;
|
|
146
|
+
}
|
|
147
|
+
res.eligible++;
|
|
148
|
+
if (opts.dryRun)
|
|
149
|
+
continue;
|
|
150
|
+
try {
|
|
151
|
+
await fs.rm(e.path, { recursive: true, force: true, maxRetries: 3, retryDelay: 50 });
|
|
152
|
+
res.removed++;
|
|
153
|
+
}
|
|
154
|
+
catch (err) {
|
|
155
|
+
res.failed.push({ name: e.name, error: err instanceof Error ? err.message : String(err) });
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
return res;
|
|
159
|
+
}
|
|
160
|
+
//# sourceMappingURL=temp_janitor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"temp_janitor.js","sourceRoot":"","sources":["../../src/core/temp_janitor.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,9 +14,10 @@
|
|
|
14
14
|
* shows what happened. The chat NEVER blocks on classifier
|
|
15
15
|
* availability.
|
|
16
16
|
*
|
|
17
|
-
* Cache: LRU keyed by sha256 of the user text + previous tier
|
|
18
|
-
*
|
|
19
|
-
*
|
|
17
|
+
* Cache: LRU keyed by sha256 of the user text + previous tier +
|
|
18
|
+
* QUIEN contesta (provider, modelo, huella de la key). 50 entries
|
|
19
|
+
* / 5 min TTL. Saves the classifier call on repeated short
|
|
20
|
+
* prompts ("hola", "ok", "si"). Un NO-veredicto no se guarda.
|
|
20
21
|
*
|
|
21
22
|
* ASCII-only.
|
|
22
23
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"turn_classifier.d.ts","sourceRoot":"","sources":["../../src/core/turn_classifier.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"turn_classifier.d.ts","sourceRoot":"","sources":["../../src/core/turn_classifier.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAIH,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,SAAS,GAAG,aAAa,CAAC;AAErE;;;;uDAIuD;AACvD,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,WAAW,CAAC;AAE3D,MAAM,WAAW,eAAe;IAC9B,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb;4CACwC;IACxC,SAAS,EAAE,KAAK,GAAG,UAAU,CAAC;IAC9B,iEAAiE;IACjE,aAAa,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC;IACnC,sDAAsD;IACtD,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,2DAA2D;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,oDAAoD;IACpD,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,oDAAoD;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,gCAAgC;IAChC,IAAI,EAAE,KAAK,GAAG,UAAU,CAAC;IACzB;oCACgC;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,+DAA+D;IAC/D,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAClC,2DAA2D;IAC3D,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,gDAAgD;IAChD,MAAM,EAAE,OAAO,CAAC;CACjB;AAuHD,8CAA8C;AAC9C,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C;AAiLD;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAsEpF"}
|
|
@@ -14,9 +14,10 @@
|
|
|
14
14
|
* shows what happened. The chat NEVER blocks on classifier
|
|
15
15
|
* availability.
|
|
16
16
|
*
|
|
17
|
-
* Cache: LRU keyed by sha256 of the user text + previous tier
|
|
18
|
-
*
|
|
19
|
-
*
|
|
17
|
+
* Cache: LRU keyed by sha256 of the user text + previous tier +
|
|
18
|
+
* QUIEN contesta (provider, modelo, huella de la key). 50 entries
|
|
19
|
+
* / 5 min TTL. Saves the classifier call on repeated short
|
|
20
|
+
* prompts ("hola", "ok", "si"). Un NO-veredicto no se guarda.
|
|
20
21
|
*
|
|
21
22
|
* ASCII-only.
|
|
22
23
|
*/
|
|
@@ -46,11 +47,42 @@ const SYSTEM_PROMPT = ('You are a routing classifier inside a developer tool. Gi
|
|
|
46
47
|
const CACHE_MAX = 50;
|
|
47
48
|
const CACHE_TTL_MS = 5 * 60 * 1000;
|
|
48
49
|
const _cache = new Map();
|
|
49
|
-
|
|
50
|
+
/**
|
|
51
|
+
* La clave del cache: el texto, el tier anterior Y QUIEN VA A CONTESTAR.
|
|
52
|
+
*
|
|
53
|
+
* El provider / modelo / identidad de la key entraron el 31-oct-2026. Antes
|
|
54
|
+
* la clave era solo (prev|texto), o sea "la misma pregunta" sin importar a
|
|
55
|
+
* quien se le preguntaba, y eso tiene dos consecuencias reales:
|
|
56
|
+
*
|
|
57
|
+
* 1. Una respuesta obtenida con el proveedor eco A seguia sirviendo despues
|
|
58
|
+
* de que el usuario cambiara a B (o rotara la key) durante 5 minutos.
|
|
59
|
+
* La respuesta de un clasificador es la respuesta DE ESE clasificador.
|
|
60
|
+
* 2. Un turno SIN key (vault vacio, key todavia sin cargar) comparte ranura
|
|
61
|
+
* con un turno CON key. Asi se colaba un veredicto de un lado al otro:
|
|
62
|
+
* es como se cruzaron dos archivos de la bateria el 31-oct-2026
|
|
63
|
+
* (turn_classifier deja cacheado "abrime una tab" -> simple con su fetch
|
|
64
|
+
* de juguete, y sticky_tier -- en el mismo worker, dentro del TTL de 5
|
|
65
|
+
* min -- recibia ese veredicto en vez del fallo que esperaba). El rojo
|
|
66
|
+
* aparecia o no segun que archivos compartian worker: una compuerta de
|
|
67
|
+
* publicacion que no es reproducible.
|
|
68
|
+
*
|
|
69
|
+
* De la key va solo una huella (sha256 truncado): la clave nunca lleva el
|
|
70
|
+
* secreto, y alcanza para distinguir una rotacion.
|
|
71
|
+
*/
|
|
72
|
+
function cacheKey(i) {
|
|
73
|
+
const huella = i.apiKey
|
|
74
|
+
? createHash('sha256').update(i.apiKey).digest('hex').slice(0, 16)
|
|
75
|
+
: 'sin-key';
|
|
50
76
|
const h = createHash('sha256');
|
|
51
|
-
h.update(prev || '');
|
|
77
|
+
h.update(i.prev || '');
|
|
52
78
|
h.update('|');
|
|
53
|
-
h.update(
|
|
79
|
+
h.update(i.provider);
|
|
80
|
+
h.update('|');
|
|
81
|
+
h.update(i.model);
|
|
82
|
+
h.update('|');
|
|
83
|
+
h.update(huella);
|
|
84
|
+
h.update('|');
|
|
85
|
+
h.update(i.text);
|
|
54
86
|
return h.digest('hex');
|
|
55
87
|
}
|
|
56
88
|
function cacheGet(key) {
|
|
@@ -66,7 +98,22 @@ function cacheGet(key) {
|
|
|
66
98
|
_cache.set(key, e);
|
|
67
99
|
return { ...e.result, cached: true };
|
|
68
100
|
}
|
|
101
|
+
/**
|
|
102
|
+
* Guarda un veredicto. UN NO-VEREDICTO NO SE GUARDA (31-oct-2026).
|
|
103
|
+
*
|
|
104
|
+
* Un `verdict: null` no es una respuesta: es "no se pudo preguntar" (sin key,
|
|
105
|
+
* inalcanzable, ilegible). Guardarlo 5 minutos convierte un parpadeo en
|
|
106
|
+
* politica: la key que entra un segundo despues, o el proveedor que vuelve,
|
|
107
|
+
* no se usan hasta que expire el TTL. Y como el fallo cae a frontier por
|
|
108
|
+
* politica (cost_router), el costo del cache del fallo se paga en plata.
|
|
109
|
+
*
|
|
110
|
+
* No es un disyuntor: la clave incluye el texto, asi que cachear el fallo no
|
|
111
|
+
* frenaba ninguna ronda de reintentos general -- solo silenciaba el reintento
|
|
112
|
+
* de ESE texto.
|
|
113
|
+
*/
|
|
69
114
|
function cacheSet(key, result) {
|
|
115
|
+
if (result.verdict === null)
|
|
116
|
+
return;
|
|
70
117
|
if (_cache.size >= CACHE_MAX) {
|
|
71
118
|
/* Drop oldest (first inserted) -- Map iteration order is
|
|
72
119
|
* insertion order. */
|
|
@@ -254,28 +301,30 @@ async function callAnthropic(text, apiKey, model, fetchImpl, timeoutMs) {
|
|
|
254
301
|
*/
|
|
255
302
|
export async function classifyTurn(input) {
|
|
256
303
|
const text = typeof input.text === 'string' ? input.text : '';
|
|
257
|
-
const
|
|
304
|
+
const apiKey = input.api_key ?? null;
|
|
305
|
+
/* Resueltos ANTES de tocar el cache: son parte de la clave, asi que los
|
|
306
|
+
* defaults tienen que ser los mismos que usa la llamada. */
|
|
307
|
+
const provider = input.provider ?? 'google_ai';
|
|
308
|
+
const model = input.model
|
|
309
|
+
?? (provider === 'anthropic' ? 'claude-haiku-4-5-20251001' : 'gemini-2.5-flash-lite');
|
|
310
|
+
const key = cacheKey({ text, prev: input.previous_tier, provider, model, apiKey });
|
|
258
311
|
const cached = cacheGet(key);
|
|
259
312
|
if (cached)
|
|
260
313
|
return cached;
|
|
261
314
|
const signals = [];
|
|
262
|
-
const apiKey = input.api_key ?? null;
|
|
263
315
|
if (!apiKey) {
|
|
264
316
|
signals.push('classifier_no_api_key');
|
|
265
|
-
|
|
317
|
+
/* Sin cacheSet: ver la politica en cacheSet (un no-veredicto no se
|
|
318
|
+
* guarda). Vale para los tres caminos de fallo de abajo. */
|
|
319
|
+
return {
|
|
266
320
|
tier: input.gate_tier,
|
|
267
321
|
confidence: 0.50,
|
|
268
322
|
verdict: null,
|
|
269
323
|
signals,
|
|
270
324
|
cached: false,
|
|
271
325
|
};
|
|
272
|
-
cacheSet(key, r);
|
|
273
|
-
return r;
|
|
274
326
|
}
|
|
275
327
|
const fetchImpl = input.fetchImpl ?? fetch;
|
|
276
|
-
const provider = input.provider ?? 'google_ai';
|
|
277
|
-
const model = input.model
|
|
278
|
-
?? (provider === 'anthropic' ? 'claude-haiku-4-5-20251001' : 'gemini-2.5-flash-lite');
|
|
279
328
|
const timeoutMs = input.timeoutMs ?? 2500;
|
|
280
329
|
let raw = '';
|
|
281
330
|
try {
|
|
@@ -286,28 +335,24 @@ export async function classifyTurn(input) {
|
|
|
286
335
|
catch (err) {
|
|
287
336
|
const msg = err instanceof Error ? err.message : String(err);
|
|
288
337
|
signals.push('classifier_unreachable[' + msg.slice(0, 60) + ']');
|
|
289
|
-
|
|
338
|
+
return {
|
|
290
339
|
tier: input.gate_tier,
|
|
291
340
|
confidence: 0.50,
|
|
292
341
|
verdict: null,
|
|
293
342
|
signals,
|
|
294
343
|
cached: false,
|
|
295
344
|
};
|
|
296
|
-
cacheSet(key, r);
|
|
297
|
-
return r;
|
|
298
345
|
}
|
|
299
346
|
const verdict = parseVerdict(raw);
|
|
300
347
|
if (!verdict) {
|
|
301
348
|
signals.push('classifier_unparseable[' + raw.slice(0, 30) + ']');
|
|
302
|
-
|
|
349
|
+
return {
|
|
303
350
|
tier: input.gate_tier,
|
|
304
351
|
confidence: 0.50,
|
|
305
352
|
verdict: null,
|
|
306
353
|
signals,
|
|
307
354
|
cached: false,
|
|
308
355
|
};
|
|
309
|
-
cacheSet(key, r);
|
|
310
|
-
return r;
|
|
311
356
|
}
|
|
312
357
|
signals.push('classifier_verdict[' + verdict + ']');
|
|
313
358
|
const tier = verdictToTier(verdict, input.gate_tier);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"turn_classifier.js","sourceRoot":"","sources":["../../src/core/turn_classifier.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"turn_classifier.js","sourceRoot":"","sources":["../../src/core/turn_classifier.ts"],"names":[],"mappings":"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"}
|
|
@@ -35,6 +35,8 @@ SHIP + DEPLOY
|
|
|
35
35
|
OBSERVABILITY
|
|
36
36
|
yf log per-scope log levels + redaction (SQ.K)
|
|
37
37
|
yf projects cross-device project registry
|
|
38
|
+
yf task background tasks (list / status / log / stop)
|
|
39
|
+
yf temp orphan temp dirs: status (count) / clean (delete)
|
|
38
40
|
|
|
39
41
|
QA HARNESSES
|
|
40
42
|
yf qa brain-matrix E2E test invariants against LLM brains
|
|
@@ -44,6 +44,50 @@ export declare function runCommand(command: string, cwd: string, timeout_ms: num
|
|
|
44
44
|
duration_ms: number;
|
|
45
45
|
timed_out: boolean;
|
|
46
46
|
}>;
|
|
47
|
+
/** What the overlay actually delivered to the worktree.
|
|
48
|
+
*
|
|
49
|
+
* It is returned, and recorded in the receipt, because the silence was
|
|
50
|
+
* half of PND-240: a worktree that is NOT the current code makes a
|
|
51
|
+
* mutation red prove something about OTHER code, and the receipt came out
|
|
52
|
+
* looking exactly like a good one. */
|
|
53
|
+
export interface OverlayReport {
|
|
54
|
+
/** Project-relative paths delivered to the worktree. */
|
|
55
|
+
copied: string[];
|
|
56
|
+
/** Paths removed there because they are gone here (a delete, or the old
|
|
57
|
+
* side of a rename). */
|
|
58
|
+
removed: string[];
|
|
59
|
+
/** Listed as changed but neither a file nor gone -- a dirty submodule.
|
|
60
|
+
* Left as the base ref has it, on purpose. */
|
|
61
|
+
skipped: string[];
|
|
62
|
+
/** Why the overlay cannot be trusted. Empty means it delivered. */
|
|
63
|
+
errors: string[];
|
|
64
|
+
}
|
|
65
|
+
/** Copy the uncommitted changes of the working tree (modified + untracked,
|
|
66
|
+
* minus node_modules) into the worktree, and delete there what was deleted
|
|
67
|
+
* here, so the worktree is the CURRENT code.
|
|
68
|
+
*
|
|
69
|
+
* WHY THIS DOES NOT USE git() -- PND-240, measured 2026-10-31 with
|
|
70
|
+
* scripts/probe_overlay_dirty.mts (three dirty files: alpha came back
|
|
71
|
+
* STALE, beta and gamma delivered). `git()` trims its output, and
|
|
72
|
+
* `git status --porcelain` encodes the state in the first TWO COLUMNS: an
|
|
73
|
+
* unstaged modification is " M path", with a LEADING SPACE. The trim ate
|
|
74
|
+
* that space on the FIRST line only, so `line.slice(3)` cut one character
|
|
75
|
+
* off the first path ("src/alpha.txt" -> "rc/alpha.txt"), the stat of that
|
|
76
|
+
* path failed, and the catch swallowed it. Consequence: the first dirty
|
|
77
|
+
* file of every mutation red proof was silently left at the base version
|
|
78
|
+
* -- which is why RCP-078/079 reported "patch does not apply" (the mutated
|
|
79
|
+
* file happened to sort first) and RCP-085 ran the committed version of a
|
|
80
|
+
* test file that had uncommitted changes.
|
|
81
|
+
*
|
|
82
|
+
* Two hardenings beyond the trim: `-z` (entries NUL terminated, paths
|
|
83
|
+
* literal -- no quoting of non-ASCII names, no " -> " to split for a
|
|
84
|
+
* rename), and the decision of copy-vs-remove taken from whether the file
|
|
85
|
+
* EXISTS here, not from decoding the status letters. */
|
|
86
|
+
export declare function overlayDirtyFiles(projectRoot: string, wt: string): Promise<OverlayReport>;
|
|
87
|
+
/** One line for the receipt: what the overlay delivered. A good run records
|
|
88
|
+
* it too, so an old receipt can be told apart from one whose worktree was
|
|
89
|
+
* only partially the current code. */
|
|
90
|
+
export declare function describeOverlay(rep: OverlayReport): string;
|
|
47
91
|
/** Remove ONLY the link at `p`, never what it points to. On Windows a
|
|
48
92
|
* junction is removed with rmdir; a symlink with unlink. Both leave the
|
|
49
93
|
* target untouched. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../../src/urazuke/evidence.ts"],"names":[],"mappings":"AAsBA,OAAO,EAA8B,KAAK,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAI3F,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;+CAE2C;IAC3C,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB;;;;;iDAK6C;IAC7C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAGD,eAAO,MAAM,2BAA2B,QAAiB,CAAC;AAC1D,eAAO,MAAM,uBAAuB,QAAiB,CAAC;AAEtD;;;;;mEAKmE;AACnE,wBAAgB,0BAA0B,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAEtE;AAiBD,8DAA8D;AAC9D,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAAC,CA4BpK;
|
|
1
|
+
{"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../../src/urazuke/evidence.ts"],"names":[],"mappings":"AAsBA,OAAO,EAA8B,KAAK,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAI3F,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;+CAE2C;IAC3C,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB;;;;;iDAK6C;IAC7C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAGD,eAAO,MAAM,2BAA2B,QAAiB,CAAC;AAC1D,eAAO,MAAM,uBAAuB,QAAiB,CAAC;AAEtD;;;;;mEAKmE;AACnE,wBAAgB,0BAA0B,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAEtE;AAiBD,8DAA8D;AAC9D,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAAC,CA4BpK;AAED;;;;;uCAKuC;AACvC,MAAM,WAAW,aAAa;IAC5B,wDAAwD;IACxD,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB;6BACyB;IACzB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB;mDAC+C;IAC/C,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,mEAAmE;IACnE,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAOD;;;;;;;;;;;;;;;;;;;;yDAoByD;AACzD,wBAAsB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAwD/F;AAED;;uCAEuC;AACvC,wBAAgB,eAAe,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CAI1D;AAOD;;wBAEwB;AACxB,wBAAsB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAIxD;AAMD;kDACkD;AAClD,wBAAsB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAsHrF;AAuBD;;0DAE0D;AAC1D,MAAM,WAAW,YAAa,SAAQ,gBAAgB;IACpD,4EAA4E;IAC5E,IAAI,EAAE,CAAC,CAAC;CACT;AAED,yDAAyD;AACzD,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAOhF;AAED;;sCAEsC;AACtC,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAYtF"}
|