@nac3/forge-cli 1.25.0 → 1.27.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/dist/chat/cache_ttl.d.ts +143 -0
- package/dist/chat/cache_ttl.d.ts.map +1 -0
- package/dist/chat/cache_ttl.js +165 -0
- package/dist/chat/cache_ttl.js.map +1 -0
- package/dist/chat/claude.d.ts +1 -0
- package/dist/chat/claude.d.ts.map +1 -1
- package/dist/chat/claude.js +47 -5
- package/dist/chat/claude.js.map +1 -1
- package/dist/chat/claude_cli.d.ts +24 -0
- package/dist/chat/claude_cli.d.ts.map +1 -1
- package/dist/chat/claude_cli.js +76 -10
- package/dist/chat/claude_cli.js.map +1 -1
- package/dist/chat/panel.d.ts.map +1 -1
- package/dist/chat/panel.js +128 -17
- package/dist/chat/panel.js.map +1 -1
- package/dist/chat/server.d.ts.map +1 -1
- package/dist/chat/server.js +13 -1
- package/dist/chat/server.js.map +1 -1
- package/dist/chat/tools/evidence.d.ts +15 -0
- package/dist/chat/tools/evidence.d.ts.map +1 -1
- package/dist/chat/tools/evidence.js +16 -0
- package/dist/chat/tools/evidence.js.map +1 -1
- package/dist/chat/tools/reader.d.ts.map +1 -1
- package/dist/chat/tools/reader.js +24 -4
- package/dist/chat/tools/reader.js.map +1 -1
- package/dist/chat/tools/session_verbs.d.ts +3 -1
- package/dist/chat/tools/session_verbs.d.ts.map +1 -1
- package/dist/chat/tools/session_verbs.js +65 -2
- package/dist/chat/tools/session_verbs.js.map +1 -1
- package/dist/chat/tools/shell.d.ts +11 -0
- package/dist/chat/tools/shell.d.ts.map +1 -1
- package/dist/chat/tools/shell.js +46 -1
- package/dist/chat/tools/shell.js.map +1 -1
- package/dist/commands/chat.d.ts +6 -0
- package/dist/commands/chat.d.ts.map +1 -1
- package/dist/commands/chat.js +25 -0
- package/dist/commands/chat.js.map +1 -1
- package/dist/commands/limits.d.ts.map +1 -1
- package/dist/commands/limits.js +77 -6
- package/dist/commands/limits.js.map +1 -1
- package/dist/commands/operate.d.ts.map +1 -1
- package/dist/commands/operate.js +42 -0
- package/dist/commands/operate.js.map +1 -1
- package/dist/commands/urazuke.d.ts.map +1 -1
- package/dist/commands/urazuke.js +189 -9
- package/dist/commands/urazuke.js.map +1 -1
- package/dist/core/brain_pin.d.ts +74 -0
- package/dist/core/brain_pin.d.ts.map +1 -0
- package/dist/core/brain_pin.js +113 -0
- package/dist/core/brain_pin.js.map +1 -0
- package/dist/core/cost_router.d.ts.map +1 -1
- package/dist/core/cost_router.js +56 -0
- package/dist/core/cost_router.js.map +1 -1
- package/dist/core/limits_config.d.ts +19 -0
- package/dist/core/limits_config.d.ts.map +1 -1
- package/dist/core/limits_config.js +38 -0
- package/dist/core/limits_config.js.map +1 -1
- package/dist/core/machine_files.d.ts +27 -0
- package/dist/core/machine_files.d.ts.map +1 -0
- package/dist/core/machine_files.js +97 -0
- package/dist/core/machine_files.js.map +1 -0
- package/dist/docs/doctrine/session-orchestration.md +109 -91
- package/dist/docs/doctrine/urazuke.md +221 -221
- package/dist/llm/sse_stream.d.ts +2 -0
- package/dist/llm/sse_stream.d.ts.map +1 -1
- package/dist/llm/sse_stream.js +10 -1
- package/dist/llm/sse_stream.js.map +1 -1
- package/dist/nac3/dispatch_log.d.ts +16 -1
- package/dist/nac3/dispatch_log.d.ts.map +1 -1
- package/dist/nac3/dispatch_log.js +29 -10
- package/dist/nac3/dispatch_log.js.map +1 -1
- package/dist/nac3/internal_manifest.d.ts.map +1 -1
- package/dist/nac3/internal_manifest.js +2 -0
- package/dist/nac3/internal_manifest.js.map +1 -1
- package/dist/telemetry/battery_events.d.ts +91 -0
- package/dist/telemetry/battery_events.d.ts.map +1 -0
- package/dist/telemetry/battery_events.js +84 -0
- package/dist/telemetry/battery_events.js.map +1 -0
- package/dist/telemetry/usage.d.ts +107 -0
- package/dist/telemetry/usage.d.ts.map +1 -1
- package/dist/telemetry/usage.js +172 -13
- package/dist/telemetry/usage.js.map +1 -1
- package/dist/urazuke/evidence.d.ts +5 -0
- package/dist/urazuke/evidence.d.ts.map +1 -1
- package/dist/urazuke/evidence.js +2 -0
- package/dist/urazuke/evidence.js.map +1 -1
- package/dist/urazuke/freeze.d.ts.map +1 -1
- package/dist/urazuke/freeze.js +82 -16
- package/dist/urazuke/freeze.js.map +1 -1
- package/dist/urazuke/gates_data.d.ts +4 -1
- package/dist/urazuke/gates_data.d.ts.map +1 -1
- package/dist/urazuke/gates_data.js +7 -1
- package/dist/urazuke/gates_data.js.map +1 -1
- package/dist/urazuke/gates_ledger.d.ts +25 -1
- package/dist/urazuke/gates_ledger.d.ts.map +1 -1
- package/dist/urazuke/gates_ledger.js +30 -6
- package/dist/urazuke/gates_ledger.js.map +1 -1
- package/dist/urazuke/method_config.d.ts +116 -0
- package/dist/urazuke/method_config.d.ts.map +1 -0
- package/dist/urazuke/method_config.js +328 -0
- package/dist/urazuke/method_config.js.map +1 -0
- package/dist/urazuke/prompts_client.d.ts +42 -12
- package/dist/urazuke/prompts_client.d.ts.map +1 -1
- package/dist/urazuke/prompts_client.js +120 -16
- package/dist/urazuke/prompts_client.js.map +1 -1
- package/dist/urazuke/prompts_freeze.d.ts +186 -0
- package/dist/urazuke/prompts_freeze.d.ts.map +1 -0
- package/dist/urazuke/prompts_freeze.js +498 -0
- package/dist/urazuke/prompts_freeze.js.map +1 -0
- package/dist/urazuke/receipts.d.ts +28 -1
- package/dist/urazuke/receipts.d.ts.map +1 -1
- package/dist/urazuke/receipts.js +59 -6
- package/dist/urazuke/receipts.js.map +1 -1
- package/dist/urazuke/start.d.ts.map +1 -1
- package/dist/urazuke/start.js +42 -2
- package/dist/urazuke/start.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/docs/doctrine/session-orchestration.md +109 -91
- package/docs/doctrine/urazuke.md +221 -221
- package/package.json +124 -124
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/** Por debajo de esto, en entrada Y en salida, no es un turno de chat. El
|
|
2
|
+
* piso medido para un turno real en la maquina del dueno es 120 tokens de
|
|
3
|
+
* entrada; 1000 deja margen de casi un orden de magnitud. */
|
|
4
|
+
export const UMBRAL_TOKENS = 1000;
|
|
5
|
+
/** Modelos que solo existen en la bateria. Es una PISTA (se informa), no
|
|
6
|
+
* el criterio: el criterio es el tamano. */
|
|
7
|
+
export const MODELOS_DE_PRUEBA = ['m', 'claude', 'claude-test', 'claude-code-cli', 'sonnet', 'test'];
|
|
8
|
+
export function claseDeEvento(ev) {
|
|
9
|
+
const ent = ev.tokens_in ?? 0;
|
|
10
|
+
const sal = ev.tokens_out ?? 0;
|
|
11
|
+
return (ent < UMBRAL_TOKENS && sal < UMBRAL_TOKENS) ? 'bateria' : 'real';
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Clasificar una ventana de eventos. `desde_ms` es el borde inferior (0 =
|
|
15
|
+
* todo el archivo). No lee ni escribe nada: recibe los eventos.
|
|
16
|
+
*/
|
|
17
|
+
export function auditarUso(eventos, desde_ms = 0) {
|
|
18
|
+
const ventana = eventos.filter((e) => {
|
|
19
|
+
const t = Date.parse(e.ts ?? '');
|
|
20
|
+
return Number.isFinite(t) ? t >= desde_ms : desde_ms === 0;
|
|
21
|
+
});
|
|
22
|
+
const porModelo = new Map();
|
|
23
|
+
let bateria = 0;
|
|
24
|
+
let real = 0;
|
|
25
|
+
let desde;
|
|
26
|
+
let hasta;
|
|
27
|
+
for (const e of ventana) {
|
|
28
|
+
const clase = claseDeEvento(e);
|
|
29
|
+
if (clase === 'bateria')
|
|
30
|
+
bateria++;
|
|
31
|
+
else
|
|
32
|
+
real++;
|
|
33
|
+
const key = e.model || '(sin modelo)';
|
|
34
|
+
const row = porModelo.get(key) ?? {
|
|
35
|
+
model: key, bateria: 0, real: 0,
|
|
36
|
+
nombre_de_prueba: MODELOS_DE_PRUEBA.includes(key),
|
|
37
|
+
tokens_in_real: 0,
|
|
38
|
+
};
|
|
39
|
+
if (clase === 'bateria')
|
|
40
|
+
row.bateria++;
|
|
41
|
+
else {
|
|
42
|
+
row.real++;
|
|
43
|
+
row.tokens_in_real += e.tokens_in ?? 0;
|
|
44
|
+
}
|
|
45
|
+
porModelo.set(key, row);
|
|
46
|
+
if (e.ts) {
|
|
47
|
+
if (!desde || e.ts < desde)
|
|
48
|
+
desde = e.ts;
|
|
49
|
+
if (!hasta || e.ts > hasta)
|
|
50
|
+
hasta = e.ts;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return {
|
|
54
|
+
total: ventana.length,
|
|
55
|
+
bateria, real,
|
|
56
|
+
pct_bateria: ventana.length ? Math.round((1000 * bateria) / ventana.length) / 10 : 0,
|
|
57
|
+
...(desde ? { desde } : {}),
|
|
58
|
+
...(hasta ? { hasta } : {}),
|
|
59
|
+
por_modelo: [...porModelo.values()].sort((a, b) => (b.bateria + b.real) - (a.bateria + a.real)),
|
|
60
|
+
criterio: 'con forma de prueba = tokens_in < ' + UMBRAL_TOKENS + ' Y tokens_out < ' + UMBRAL_TOKENS
|
|
61
|
+
+ '. El criterio es el TAMANO, no el nombre del modelo: el nombre cambia cada vez que alguien'
|
|
62
|
+
+ ' escribe un test y el tamano es una propiedad del hecho. Nada se purga: esto clasifica,'
|
|
63
|
+
+ ' el archivo queda intacto.',
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
/** El informe en lineas, para el CLI. */
|
|
67
|
+
export function renderAuditoriaDeUso(a) {
|
|
68
|
+
const L = [];
|
|
69
|
+
L.push('eventos mirados: ' + a.total
|
|
70
|
+
+ (a.desde ? ' (' + a.desde.slice(0, 16) + ' -> ' + (a.hasta ?? '').slice(0, 16) + ')' : ''));
|
|
71
|
+
L.push('con forma de prueba: ' + a.bateria + ' (' + a.pct_bateria + '%) | turnos reales: ' + a.real);
|
|
72
|
+
L.push('criterio: ' + a.criterio);
|
|
73
|
+
if (a.por_modelo.length) {
|
|
74
|
+
L.push('por modelo:');
|
|
75
|
+
for (const m of a.por_modelo) {
|
|
76
|
+
L.push(' ' + m.model.padEnd(22) + ' prueba ' + String(m.bateria).padStart(6)
|
|
77
|
+
+ ' | real ' + String(m.real).padStart(5)
|
|
78
|
+
+ (m.real ? ' (' + m.tokens_in_real + ' tokens de entrada)' : '')
|
|
79
|
+
+ (m.nombre_de_prueba ? ' [nombre que solo aparece en la bateria]' : ''));
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return L;
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=battery_events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"battery_events.js","sourceRoot":"","sources":["../../src/telemetry/battery_events.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,15 @@ export interface UsageEvent {
|
|
|
18
18
|
* proveedor); 'subscription' = consumo de un plan de tarifa plana.
|
|
19
19
|
* Ausente en los eventos viejos, que son todos de API. */
|
|
20
20
|
billing?: 'api' | 'subscription';
|
|
21
|
+
/** input_tokens: entrada que se proceso a precio pleno (1x). */
|
|
22
|
+
tokens_fresh?: number;
|
|
23
|
+
/** cache_creation_input_tokens: lo que se escribio a la cache este evento. */
|
|
24
|
+
tokens_cache_write?: number;
|
|
25
|
+
/** cache_read_input_tokens: lo que se sirvio de la cache (0,10x). */
|
|
26
|
+
tokens_cache_read?: number;
|
|
27
|
+
/** La ventana con la que se escribio: decide si la escritura costo 1,25x
|
|
28
|
+
* (5m) o 2x (1h). Ver src/chat/cache_ttl.ts. */
|
|
29
|
+
cache_ttl?: '5m' | '1h';
|
|
21
30
|
}
|
|
22
31
|
export interface PricingTable {
|
|
23
32
|
models?: Record<string, {
|
|
@@ -28,8 +37,95 @@ export interface PricingTable {
|
|
|
28
37
|
tts_per_million_chars?: number;
|
|
29
38
|
stt_per_minute?: number;
|
|
30
39
|
};
|
|
40
|
+
/** Multiplicadores de cache sobre el precio base de ENTRADA del modelo
|
|
41
|
+
* (PND-273). Son los de Anthropic; viven en la tabla para que un cambio
|
|
42
|
+
* de precios sea un override en pricing.json y no un release. */
|
|
43
|
+
cache?: {
|
|
44
|
+
read_multiplier?: number;
|
|
45
|
+
write_5m_multiplier?: number;
|
|
46
|
+
write_1h_multiplier?: number;
|
|
47
|
+
};
|
|
31
48
|
}
|
|
32
49
|
export declare const DEFAULT_PRICING: PricingTable;
|
|
50
|
+
/** Normalizar el id de modelo para buscarlo en la tabla de precios.
|
|
51
|
+
*
|
|
52
|
+
* POR QUE (PND-273): el camino CLI informa el id con la fecha pegada
|
|
53
|
+
* ("claude-haiku-4-5-20251001"), y la busqueda era exacta, asi que NINGUN
|
|
54
|
+
* turno del camino CLI encontraba su fila y todos se valuaban en cero. La
|
|
55
|
+
* fecha no cambia el precio: se saca antes de buscar. */
|
|
56
|
+
export declare function normaliseModelId(model: string): string;
|
|
57
|
+
/** Valuar la ENTRADA de un evento en dolares.
|
|
58
|
+
*
|
|
59
|
+
* Con desglose: cada componente a su multiplicador. Sin desglose (eventos
|
|
60
|
+
* viejos): `tokens_in` a precio base, que es lo unico que se sabe de ellos
|
|
61
|
+
* -- y se declara como tal en el reporte para que nadie compare peras con
|
|
62
|
+
* manzanas. */
|
|
63
|
+
export declare function inputUsd(ev: Pick<UsageEvent, 'tokens_in' | 'tokens_fresh' | 'tokens_cache_write' | 'tokens_cache_read' | 'cache_ttl'>, base_per_mtok: number, cache: PricingTable['cache']): number;
|
|
64
|
+
/** La bateria NO escribe en la telemetria del dueno.
|
|
65
|
+
*
|
|
66
|
+
* MEDIDO AL CABLEAR EL DESGLOSE (2026-11-03, PND-273): de los 9.062
|
|
67
|
+
* eventos de la ventana de 30 dias en el usage.jsonl de la maquina, 2.347
|
|
68
|
+
* -- el 26% -- tenian modelo "claude", "m" o "claude-test", con marca de
|
|
69
|
+
* tiempo exacta de las corridas de la bateria de hoy. Son los tests que
|
|
70
|
+
* ejercitan ClaudeClient con un fetch falso y no aislan YF_CONFIG_DIR:
|
|
71
|
+
* recordUsage les escribe en el archivo real.
|
|
72
|
+
*
|
|
73
|
+
* Por que importa y no es cosmetico: este archivo es la unica fuente del
|
|
74
|
+
* reporte de costos, y el reporte es lo que acaba de volverse exacto. Una
|
|
75
|
+
* bateria que le mete un cuarto de los eventos lo vuelve inexacto de
|
|
76
|
+
* nuevo, por otra puerta -- y los eventos de test valen cero dolares, asi
|
|
77
|
+
* que bajan el promedio y hacen parecer mas barato de lo que es.
|
|
78
|
+
*
|
|
79
|
+
* Por que se frena ACA y no moviendo YF_CONFIG_DIR para toda la bateria:
|
|
80
|
+
* mover la config entera es un override ANCHO, y este repositorio ya tiene
|
|
81
|
+
* la cicatriz de uno (src/chat/instance_lock.ts: "un override angosto es
|
|
82
|
+
* el arreglo; uno ancho era el bug"). Hay tests que SI necesitan la config
|
|
83
|
+
* real. La telemetria, en cambio, no es nunca lo que un test afirma: el
|
|
84
|
+
* que mide costos se arma su propio YF_CONFIG_DIR, y ahi esta funcion no
|
|
85
|
+
* se niega -- solo se niega al archivo de la MAQUINA.
|
|
86
|
+
*
|
|
87
|
+
* Un test que quiera verificar el recibo pone su YF_CONFIG_DIR y sigue
|
|
88
|
+
* andando, que es como esta escrito tests/cache-ttl-y-desglose.test.ts. */
|
|
89
|
+
export declare function telemetryWritesAllowed(env?: Record<string, string | undefined>): boolean;
|
|
90
|
+
export interface UsageDestination {
|
|
91
|
+
allowed: boolean;
|
|
92
|
+
/** El archivo exacto, resuelto AHORA. Solo cuando allowed. */
|
|
93
|
+
file?: string;
|
|
94
|
+
dir?: string;
|
|
95
|
+
/** Por que se nego, para el test y para quien lea el motivo. */
|
|
96
|
+
why?: string;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* EL DESTINO DEL RECIBO, DECIDIDO DE UNA SOLA VEZ Y SIN AWAITS EN EL MEDIO.
|
|
100
|
+
*
|
|
101
|
+
* MEDIDO EL 2026-11-03, DESPUES DE DECLARAR ESTO ARREGLADO (y por eso esta
|
|
102
|
+
* escrito aca y no solo en un commit). La guarda de arriba, sola, NO
|
|
103
|
+
* alcanzaba: la bateria completa de 5.777 pruebas siguio escribiendo CUATRO
|
|
104
|
+
* eventos en el usage.jsonl del dueno. La causa es una carrera, no un
|
|
105
|
+
* permiso:
|
|
106
|
+
*
|
|
107
|
+
* 1. el test pone YF_CONFIG_DIR y llama al cliente;
|
|
108
|
+
* 2. el cliente hace `void recordUsage(...)` -- no lo espera;
|
|
109
|
+
* 3. recordUsage pasa la guarda (YF_CONFIG_DIR esta puesto) y se duerme
|
|
110
|
+
* en el primer await;
|
|
111
|
+
* 4. el test termina, su afterEach BORRA YF_CONFIG_DIR y borra el tmp;
|
|
112
|
+
* 5. recien ahi recordUsage despierta, llama usageFile() -> configDir()
|
|
113
|
+
* -- que lee el entorno DE NUEVO, y ya no esta -- y appendea en
|
|
114
|
+
* ~/.yujin-forge/usage.jsonl.
|
|
115
|
+
*
|
|
116
|
+
* La guarda miraba el entorno en el momento correcto; el PATH se resolvia
|
|
117
|
+
* en otro. Dos lecturas del mismo entorno en dos instantes distintos es la
|
|
118
|
+
* forma general del defecto, y por eso el arreglo no es mover la guarda:
|
|
119
|
+
* es resolver el destino COMPLETO antes del primer await y no volver a
|
|
120
|
+
* mirar el entorno en esa llamada.
|
|
121
|
+
*
|
|
122
|
+
* Y fail-closed: dentro de la bateria se niega TAMBIEN cuando el
|
|
123
|
+
* YF_CONFIG_DIR declarado apunta a la carpeta de la maquina. Si alguien
|
|
124
|
+
* vuelve a introducir una lectura tardia del entorno, el peor caso es que
|
|
125
|
+
* un recibo se pierda en un test, no que contamine la unica medicion de
|
|
126
|
+
* costo honesta que hay.
|
|
127
|
+
*/
|
|
128
|
+
export declare function usageDestination(env?: Record<string, string | undefined>): UsageDestination;
|
|
33
129
|
/**
|
|
34
130
|
* Append a usage event. Never throws -- failures swallowed.
|
|
35
131
|
*/
|
|
@@ -63,6 +159,17 @@ export interface CostBreakdown {
|
|
|
63
159
|
events_total: number;
|
|
64
160
|
events_window: number;
|
|
65
161
|
window_label: string;
|
|
162
|
+
/** El desglose de la entrada (PND-273). `events_sin_desglose` son los
|
|
163
|
+
* eventos viejos, valuados a precio base sobre el total porque es lo
|
|
164
|
+
* unico que se sabe de ellos: se informa el numero para que el lector
|
|
165
|
+
* sepa que parte del reporte es exacta y que parte es un piso. */
|
|
166
|
+
input: {
|
|
167
|
+
fresh: number;
|
|
168
|
+
cache_write: number;
|
|
169
|
+
cache_read: number;
|
|
170
|
+
cache_write_1h: number;
|
|
171
|
+
events_sin_desglose: number;
|
|
172
|
+
};
|
|
66
173
|
/** El consumo que NO se valua en dinero: los turnos de un plan de tarifa
|
|
67
174
|
* plana. Va aparte del total en USD a proposito -- sumarlo a cero
|
|
68
175
|
* haria parecer que no se consumio nada (F-04). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../../src/telemetry/usage.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../../src/telemetry/usage.ts"],"names":[],"mappings":"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"}
|
package/dist/telemetry/usage.js
CHANGED
|
@@ -29,11 +29,20 @@
|
|
|
29
29
|
*/
|
|
30
30
|
import { promises as fs } from 'node:fs';
|
|
31
31
|
import path from 'node:path';
|
|
32
|
+
import { machineFileDestination } from '../core/machine_files.js';
|
|
32
33
|
import { configDir } from '../license/index.js';
|
|
33
34
|
/* Defaults reflect early-2026 Anthropic + Google Cloud pricing.
|
|
34
35
|
* Users can override via ~/.yujin-forge/pricing.json. */
|
|
35
36
|
export const DEFAULT_PRICING = {
|
|
36
37
|
models: {
|
|
38
|
+
/* Linea vigente al 2026-11-03. Faltaba entera, y sin fila el evento se
|
|
39
|
+
* valuaba en CERO: el reporte decia que una sesion de Opus 5 no habia
|
|
40
|
+
* costado nada (PND-273). */
|
|
41
|
+
'claude-fable-5-1': { in_per_mtok: 10, out_per_mtok: 50 },
|
|
42
|
+
'claude-fable-5': { in_per_mtok: 10, out_per_mtok: 50 },
|
|
43
|
+
'claude-opus-5': { in_per_mtok: 5, out_per_mtok: 25 },
|
|
44
|
+
'claude-opus-4-8': { in_per_mtok: 5, out_per_mtok: 25 },
|
|
45
|
+
'claude-sonnet-5': { in_per_mtok: 2, out_per_mtok: 10 },
|
|
37
46
|
'claude-opus-4-7': { in_per_mtok: 15, out_per_mtok: 75 },
|
|
38
47
|
'claude-opus-4': { in_per_mtok: 15, out_per_mtok: 75 },
|
|
39
48
|
'claude-sonnet-4-6': { in_per_mtok: 3, out_per_mtok: 15 },
|
|
@@ -47,27 +56,136 @@ export const DEFAULT_PRICING = {
|
|
|
47
56
|
tts_per_million_chars: 16, /* Google Cloud TTS Neural2 */
|
|
48
57
|
stt_per_minute: 0.006, /* Google Cloud STT enhanced */
|
|
49
58
|
},
|
|
59
|
+
cache: {
|
|
60
|
+
read_multiplier: 0.10,
|
|
61
|
+
write_5m_multiplier: 1.25,
|
|
62
|
+
write_1h_multiplier: 2.00,
|
|
63
|
+
},
|
|
50
64
|
};
|
|
51
|
-
|
|
52
|
-
|
|
65
|
+
/** Normalizar el id de modelo para buscarlo en la tabla de precios.
|
|
66
|
+
*
|
|
67
|
+
* POR QUE (PND-273): el camino CLI informa el id con la fecha pegada
|
|
68
|
+
* ("claude-haiku-4-5-20251001"), y la busqueda era exacta, asi que NINGUN
|
|
69
|
+
* turno del camino CLI encontraba su fila y todos se valuaban en cero. La
|
|
70
|
+
* fecha no cambia el precio: se saca antes de buscar. */
|
|
71
|
+
export function normaliseModelId(model) {
|
|
72
|
+
return String(model || '').replace(/-20\d{6}$/, '');
|
|
53
73
|
}
|
|
54
|
-
function
|
|
55
|
-
|
|
74
|
+
function priceFor(pricing, model) {
|
|
75
|
+
const m = pricing.models ?? {};
|
|
76
|
+
return m[model] ?? m[normaliseModelId(model)];
|
|
56
77
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
78
|
+
/** Valuar la ENTRADA de un evento en dolares.
|
|
79
|
+
*
|
|
80
|
+
* Con desglose: cada componente a su multiplicador. Sin desglose (eventos
|
|
81
|
+
* viejos): `tokens_in` a precio base, que es lo unico que se sabe de ellos
|
|
82
|
+
* -- y se declara como tal en el reporte para que nadie compare peras con
|
|
83
|
+
* manzanas. */
|
|
84
|
+
export function inputUsd(ev, base_per_mtok, cache) {
|
|
85
|
+
const tieneDesglose = typeof ev.tokens_fresh === 'number'
|
|
86
|
+
|| typeof ev.tokens_cache_write === 'number'
|
|
87
|
+
|| typeof ev.tokens_cache_read === 'number';
|
|
88
|
+
if (!tieneDesglose) {
|
|
89
|
+
return ((ev.tokens_in ?? 0) / 1_000_000) * base_per_mtok;
|
|
60
90
|
}
|
|
61
|
-
|
|
91
|
+
const mulLectura = cache?.read_multiplier ?? 0.10;
|
|
92
|
+
const mulEscritura = ev.cache_ttl === '1h'
|
|
93
|
+
? (cache?.write_1h_multiplier ?? 2.00)
|
|
94
|
+
: (cache?.write_5m_multiplier ?? 1.25);
|
|
95
|
+
const porMtok = base_per_mtok / 1_000_000;
|
|
96
|
+
return (ev.tokens_fresh ?? 0) * porMtok
|
|
97
|
+
+ (ev.tokens_cache_write ?? 0) * porMtok * mulEscritura
|
|
98
|
+
+ (ev.tokens_cache_read ?? 0) * porMtok * mulLectura;
|
|
99
|
+
}
|
|
100
|
+
/** La bateria NO escribe en la telemetria del dueno.
|
|
101
|
+
*
|
|
102
|
+
* MEDIDO AL CABLEAR EL DESGLOSE (2026-11-03, PND-273): de los 9.062
|
|
103
|
+
* eventos de la ventana de 30 dias en el usage.jsonl de la maquina, 2.347
|
|
104
|
+
* -- el 26% -- tenian modelo "claude", "m" o "claude-test", con marca de
|
|
105
|
+
* tiempo exacta de las corridas de la bateria de hoy. Son los tests que
|
|
106
|
+
* ejercitan ClaudeClient con un fetch falso y no aislan YF_CONFIG_DIR:
|
|
107
|
+
* recordUsage les escribe en el archivo real.
|
|
108
|
+
*
|
|
109
|
+
* Por que importa y no es cosmetico: este archivo es la unica fuente del
|
|
110
|
+
* reporte de costos, y el reporte es lo que acaba de volverse exacto. Una
|
|
111
|
+
* bateria que le mete un cuarto de los eventos lo vuelve inexacto de
|
|
112
|
+
* nuevo, por otra puerta -- y los eventos de test valen cero dolares, asi
|
|
113
|
+
* que bajan el promedio y hacen parecer mas barato de lo que es.
|
|
114
|
+
*
|
|
115
|
+
* Por que se frena ACA y no moviendo YF_CONFIG_DIR para toda la bateria:
|
|
116
|
+
* mover la config entera es un override ANCHO, y este repositorio ya tiene
|
|
117
|
+
* la cicatriz de uno (src/chat/instance_lock.ts: "un override angosto es
|
|
118
|
+
* el arreglo; uno ancho era el bug"). Hay tests que SI necesitan la config
|
|
119
|
+
* real. La telemetria, en cambio, no es nunca lo que un test afirma: el
|
|
120
|
+
* que mide costos se arma su propio YF_CONFIG_DIR, y ahi esta funcion no
|
|
121
|
+
* se niega -- solo se niega al archivo de la MAQUINA.
|
|
122
|
+
*
|
|
123
|
+
* Un test que quiera verificar el recibo pone su YF_CONFIG_DIR y sigue
|
|
124
|
+
* andando, que es como esta escrito tests/cache-ttl-y-desglose.test.ts. */
|
|
125
|
+
export function telemetryWritesAllowed(env = process.env) {
|
|
126
|
+
return usageDestination(env).allowed;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* EL DESTINO DEL RECIBO, DECIDIDO DE UNA SOLA VEZ Y SIN AWAITS EN EL MEDIO.
|
|
130
|
+
*
|
|
131
|
+
* MEDIDO EL 2026-11-03, DESPUES DE DECLARAR ESTO ARREGLADO (y por eso esta
|
|
132
|
+
* escrito aca y no solo en un commit). La guarda de arriba, sola, NO
|
|
133
|
+
* alcanzaba: la bateria completa de 5.777 pruebas siguio escribiendo CUATRO
|
|
134
|
+
* eventos en el usage.jsonl del dueno. La causa es una carrera, no un
|
|
135
|
+
* permiso:
|
|
136
|
+
*
|
|
137
|
+
* 1. el test pone YF_CONFIG_DIR y llama al cliente;
|
|
138
|
+
* 2. el cliente hace `void recordUsage(...)` -- no lo espera;
|
|
139
|
+
* 3. recordUsage pasa la guarda (YF_CONFIG_DIR esta puesto) y se duerme
|
|
140
|
+
* en el primer await;
|
|
141
|
+
* 4. el test termina, su afterEach BORRA YF_CONFIG_DIR y borra el tmp;
|
|
142
|
+
* 5. recien ahi recordUsage despierta, llama usageFile() -> configDir()
|
|
143
|
+
* -- que lee el entorno DE NUEVO, y ya no esta -- y appendea en
|
|
144
|
+
* ~/.yujin-forge/usage.jsonl.
|
|
145
|
+
*
|
|
146
|
+
* La guarda miraba el entorno en el momento correcto; el PATH se resolvia
|
|
147
|
+
* en otro. Dos lecturas del mismo entorno en dos instantes distintos es la
|
|
148
|
+
* forma general del defecto, y por eso el arreglo no es mover la guarda:
|
|
149
|
+
* es resolver el destino COMPLETO antes del primer await y no volver a
|
|
150
|
+
* mirar el entorno en esa llamada.
|
|
151
|
+
*
|
|
152
|
+
* Y fail-closed: dentro de la bateria se niega TAMBIEN cuando el
|
|
153
|
+
* YF_CONFIG_DIR declarado apunta a la carpeta de la maquina. Si alguien
|
|
154
|
+
* vuelve a introducir una lectura tardia del entorno, el peor caso es que
|
|
155
|
+
* un recibo se pierda en un test, no que contamine la unica medicion de
|
|
156
|
+
* costo honesta que hay.
|
|
157
|
+
*/
|
|
158
|
+
export function usageDestination(env = process.env) {
|
|
159
|
+
/* La puerta es una sola y esta en src/core/machine_files.ts. Vivia aca
|
|
160
|
+
* primero porque el usage.jsonl fue el primero que se midio; cuando la
|
|
161
|
+
* misma pregunta ("escribe en algun otro archivo mio?") devolvio DOS
|
|
162
|
+
* archivos mas, tener tres copias de la misma guarda pasaba a ser el
|
|
163
|
+
* proximo defecto: la cuarta copia es la que alguien escribe sin la
|
|
164
|
+
* parte de la carrera. */
|
|
165
|
+
const d = machineFileDestination('usage.jsonl', env);
|
|
166
|
+
if (!d.allowed)
|
|
167
|
+
return { allowed: false, ...(d.why ? { why: d.why } : {}) };
|
|
168
|
+
return { allowed: true, ...(d.dir ? { dir: d.dir } : {}), ...(d.file ? { file: d.file } : {}) };
|
|
169
|
+
}
|
|
170
|
+
function pricingFile() {
|
|
171
|
+
return path.join(configDir(), 'pricing.json');
|
|
62
172
|
}
|
|
63
173
|
/**
|
|
64
174
|
* Append a usage event. Never throws -- failures swallowed.
|
|
65
175
|
*/
|
|
66
176
|
export async function recordUsage(ev) {
|
|
67
177
|
try {
|
|
68
|
-
|
|
178
|
+
/* Primero el destino, y de aca en adelante NO se vuelve a leer el
|
|
179
|
+
* entorno: ver usageDestination(). */
|
|
180
|
+
const destino = usageDestination();
|
|
181
|
+
if (!destino.allowed || !destino.file || !destino.dir)
|
|
182
|
+
return;
|
|
69
183
|
const line = { ts: ev.ts ?? new Date().toISOString(), ...ev };
|
|
70
|
-
|
|
184
|
+
try {
|
|
185
|
+
await fs.mkdir(destino.dir, { recursive: true });
|
|
186
|
+
}
|
|
187
|
+
catch { /* best effort */ }
|
|
188
|
+
await fs.appendFile(destino.file, JSON.stringify(line) + '\n', 'utf-8');
|
|
71
189
|
}
|
|
72
190
|
catch {
|
|
73
191
|
/* swallow -- telemetry must never break user flow */
|
|
@@ -83,6 +201,7 @@ export async function loadPricing() {
|
|
|
83
201
|
return {
|
|
84
202
|
models: { ...(DEFAULT_PRICING.models ?? {}), ...(override.models ?? {}) },
|
|
85
203
|
voice: { ...(DEFAULT_PRICING.voice ?? {}), ...(override.voice ?? {}) },
|
|
204
|
+
cache: { ...(DEFAULT_PRICING.cache ?? {}), ...(override.cache ?? {}) },
|
|
86
205
|
};
|
|
87
206
|
}
|
|
88
207
|
catch {
|
|
@@ -94,7 +213,9 @@ export async function loadPricing() {
|
|
|
94
213
|
*/
|
|
95
214
|
export async function readUsage() {
|
|
96
215
|
try {
|
|
97
|
-
|
|
216
|
+
/* La LECTURA no pasa por usageDestination(): leer el archivo del dueno
|
|
217
|
+
* no lo contamina, y un reporte de costos tiene que poder leerlo. */
|
|
218
|
+
const raw = await fs.readFile(path.join(configDir(), 'usage.jsonl'), 'utf-8');
|
|
98
219
|
return raw.split('\n')
|
|
99
220
|
.filter((l) => l.trim().length > 0)
|
|
100
221
|
.map((l) => {
|
|
@@ -129,6 +250,7 @@ export async function computeCosts(sinceDays = 30) {
|
|
|
129
250
|
events_total: events.length,
|
|
130
251
|
events_window: inWindow.length,
|
|
131
252
|
window_label: sinceDays === 0 ? 'all-time' : 'last ' + sinceDays + ' days',
|
|
253
|
+
input: { fresh: 0, cache_write: 0, cache_read: 0, cache_write_1h: 0, events_sin_desglose: 0 },
|
|
132
254
|
subscription: { events: 0, tokens_in: 0, tokens_out: 0 },
|
|
133
255
|
};
|
|
134
256
|
for (const ev of inWindow) {
|
|
@@ -143,9 +265,25 @@ export async function computeCosts(sinceDays = 30) {
|
|
|
143
265
|
}
|
|
144
266
|
if (ev.kind.startsWith('claude.')) {
|
|
145
267
|
const m = ev.model ?? 'unknown';
|
|
146
|
-
const p = pricing
|
|
268
|
+
const p = priceFor(pricing, m);
|
|
269
|
+
/* El desglose se acumula para TODOS los eventos de modelo, incluidos
|
|
270
|
+
* los de suscripcion: ahi no hay dolares pero si hay consumo del plan,
|
|
271
|
+
* y la re-escritura de cache lo quema igual. */
|
|
272
|
+
const tieneDesglose = typeof ev.tokens_fresh === 'number'
|
|
273
|
+
|| typeof ev.tokens_cache_write === 'number'
|
|
274
|
+
|| typeof ev.tokens_cache_read === 'number';
|
|
275
|
+
if (tieneDesglose) {
|
|
276
|
+
breakdown.input.fresh += ev.tokens_fresh ?? 0;
|
|
277
|
+
breakdown.input.cache_write += ev.tokens_cache_write ?? 0;
|
|
278
|
+
breakdown.input.cache_read += ev.tokens_cache_read ?? 0;
|
|
279
|
+
if (ev.cache_ttl === '1h')
|
|
280
|
+
breakdown.input.cache_write_1h += ev.tokens_cache_write ?? 0;
|
|
281
|
+
}
|
|
282
|
+
else {
|
|
283
|
+
breakdown.input.events_sin_desglose += 1;
|
|
284
|
+
}
|
|
147
285
|
if (p && !bySubscription) {
|
|
148
|
-
usd = (
|
|
286
|
+
usd = inputUsd(ev, p.in_per_mtok, pricing.cache)
|
|
149
287
|
+ ((ev.tokens_out ?? 0) / 1_000_000) * p.out_per_mtok;
|
|
150
288
|
}
|
|
151
289
|
if (!breakdown.by_model[m]) {
|
|
@@ -186,6 +324,27 @@ export function formatCosts(b) {
|
|
|
186
324
|
lines.push('Events total: ' + b.events_total);
|
|
187
325
|
lines.push('Events in window:' + b.events_window);
|
|
188
326
|
lines.push('Total USD: $' + b.total_usd.toFixed(4));
|
|
327
|
+
/* El desglose de la entrada, que es lo que hace comparable el numero de
|
|
328
|
+
* arriba: tres componentes con precios que difieren doce veces. */
|
|
329
|
+
const inTot = b.input.fresh + b.input.cache_write + b.input.cache_read;
|
|
330
|
+
if (inTot > 0) {
|
|
331
|
+
const pct = (n) => (inTot > 0 ? (100 * n / inTot).toFixed(0) : '0') + '%';
|
|
332
|
+
lines.push('Entrada: ' + inTot + ' tokens'
|
|
333
|
+
+ ' frescos=' + b.input.fresh + ' (' + pct(b.input.fresh) + ', 1x)'
|
|
334
|
+
+ ' cache escrita=' + b.input.cache_write + ' (' + pct(b.input.cache_write) + ', '
|
|
335
|
+
+ (b.input.cache_write_1h > 0 ? '1,25x/2x' : '1,25x') + ')'
|
|
336
|
+
+ ' cache leida=' + b.input.cache_read + ' (' + pct(b.input.cache_read) + ', 0,10x)');
|
|
337
|
+
if (b.input.cache_write > b.input.cache_read && b.input.cache_read > 0) {
|
|
338
|
+
lines.push(' AVISO: se escribio a la cache MAS de lo que se leyo. '
|
|
339
|
+
+ 'Un prefijo que se re-escribe en vez de leerse paga hasta 20 veces de mas; '
|
|
340
|
+
+ 'ver src/chat/cache_ttl.ts.');
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
if (b.input.events_sin_desglose > 0) {
|
|
344
|
+
lines.push(' ' + b.input.events_sin_desglose
|
|
345
|
+
+ ' evento(s) sin desglose (anteriores al cambio): valuados a precio base '
|
|
346
|
+
+ 'sobre el total de entrada, asi que su costo es un PISO, no el exacto.');
|
|
347
|
+
}
|
|
189
348
|
if (b.subscription.events > 0) {
|
|
190
349
|
/* Lo que se consumio del plan, dicho aparte: no es dinero, es cuota. */
|
|
191
350
|
lines.push('Suscripcion: ' + b.subscription.events + ' turnos, '
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage.js","sourceRoot":"","sources":["../../src/telemetry/usage.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"usage.js","sourceRoot":"","sources":["../../src/telemetry/usage.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,6 +21,11 @@ export interface RunEvidenceInput {
|
|
|
21
21
|
* the receipt. For the first block of a new project, where the previous
|
|
22
22
|
* version does not even have the module. */
|
|
23
23
|
mutation_diff?: string;
|
|
24
|
+
/** PND-127 -- 'exit_code' declara que el comando NO es un runner de
|
|
25
|
+
* tests (un escaneo, un verificador) y que su exit code es toda la
|
|
26
|
+
* evidencia. Viaja tal cual al recibo: es una declaracion del autor y
|
|
27
|
+
* tiene que quedar auditable ahi, no inferirse al leer. */
|
|
28
|
+
evidence?: 'tests' | 'exit_code';
|
|
24
29
|
note?: string;
|
|
25
30
|
}
|
|
26
31
|
export interface RunEvidenceResult {
|
|
@@ -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;AAS3F,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;AAED;;;6DAG6D;AAC7D,eAAO,MAAM,iBAAiB,QAAQ,CAAC;AAGvC,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;;;;;;;;;;;;;wEAawE;AACxE,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,CAsCpK;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,CA2E/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,
|
|
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;AAS3F,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;;;gEAG4D;IAC5D,QAAQ,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;6DAG6D;AAC7D,eAAO,MAAM,iBAAiB,QAAQ,CAAC;AAGvC,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;;;;;;;;;;;;;wEAawE;AACxE,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,CAsCpK;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,CA2E/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,CAqNrF;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"}
|
package/dist/urazuke/evidence.js
CHANGED
|
@@ -475,6 +475,7 @@ export async function runEvidence(input) {
|
|
|
475
475
|
...(mutation ? { mutation_diff: mutation } : {}),
|
|
476
476
|
exit_code: r.exit_code, started_at: started, duration_ms: r.duration_ms,
|
|
477
477
|
counts, output_tail: tail(r.output),
|
|
478
|
+
...(input.evidence ? { evidence: input.evidence } : {}),
|
|
478
479
|
...(input.pending_id ? { pending_id: input.pending_id } : {}),
|
|
479
480
|
...(input.step != null ? { step: input.step } : {}),
|
|
480
481
|
/* F-13 -- el entorno va al RECIBO y no solo a la nota: isStrongRed lo
|
|
@@ -506,6 +507,7 @@ export async function runEvidence(input) {
|
|
|
506
507
|
ref: head.ref, dirty: head.dirty,
|
|
507
508
|
exit_code: r.exit_code, started_at: started, duration_ms: r.duration_ms,
|
|
508
509
|
counts, output_tail: tail(r.output),
|
|
510
|
+
...(input.evidence ? { evidence: input.evidence } : {}),
|
|
509
511
|
...(input.pending_id ? { pending_id: input.pending_id } : {}),
|
|
510
512
|
...(input.step != null ? { step: input.step } : {}),
|
|
511
513
|
...(input.note ? { note: input.note } : {}),
|