@nac3/forge-cli 1.26.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/panel.d.ts.map +1 -1
- package/dist/chat/panel.js +26 -0
- package/dist/chat/panel.js.map +1 -1
- package/dist/chat/server.d.ts.map +1 -1
- package/dist/chat/server.js +10 -1
- package/dist/chat/server.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/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/limits_config.d.ts +8 -0
- package/dist/core/limits_config.d.ts.map +1 -1
- package/dist/core/limits_config.js +19 -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 -109
- package/dist/docs/doctrine/urazuke.md +221 -221
- 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/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.map +1 -1
- package/dist/telemetry/usage.js +11 -25
- package/dist/telemetry/usage.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/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 -109
- package/docs/doctrine/urazuke.md +221 -221
- package/package.json +124 -124
|
@@ -0,0 +1,498 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EL CONGELADO DE LOS PROMPTS -- la mitad del doble candado que no tenia
|
|
3
|
+
* candado (PND-277, pedido del dueno del experimento 2026-11-03).
|
|
4
|
+
*
|
|
5
|
+
* EL DEFECTO, DICHO EN UNA LINEA. `yf urazuke gates pull` MIDE lo que
|
|
6
|
+
* costaria adoptar la definicion publicada y no escribe nada;
|
|
7
|
+
* `yf urazuke prompts pull` ESCRIBIA los prompts canonicos encima de lo que
|
|
8
|
+
* hubiera. Mismo verbo, mismo comando padre, mismo proposito, semantica
|
|
9
|
+
* invertida. Un dueno que aprendio `gates pull` -- que es seguro por diseno,
|
|
10
|
+
* es el ensayo -- y corrio `prompts pull` por analogia ya se habia pisado
|
|
11
|
+
* los prompts del proyecto sin enterarse.
|
|
12
|
+
*
|
|
13
|
+
* Y EL AGUJERO DE ABAJO, QUE ERA PEOR. `.forge/urazuke-prompts.json` era UN
|
|
14
|
+
* archivo con DOS significados que el codigo no distinguia: la copia
|
|
15
|
+
* congelada del metodo Y el almacen de overrides del dueno. La condicion de
|
|
16
|
+
* "este proyecto ya esta congelado", en freeze.ts, era literalmente "el
|
|
17
|
+
* objeto de overrides tiene al menos una clave". De ahi salian dos cosas,
|
|
18
|
+
* las dos reales:
|
|
19
|
+
*
|
|
20
|
+
* 1. UN SOLO `prompts set` CONGELABA EL PROYECTO PARA SIEMPRE. El dueno
|
|
21
|
+
* cambiaba una linea de un prompt para probar algo y, a partir de ese
|
|
22
|
+
* momento, `yf urazuke freeze` informaba "prompts ya congelados" y no
|
|
23
|
+
* volvia a traer los publicados nunca mas. Un cambio exploratorio
|
|
24
|
+
* quedaba convertido en una decision permanente sin que nadie la
|
|
25
|
+
* tomara.
|
|
26
|
+
* 2. UN `pull` DE CUALQUIERA ERA INDISTINGUIBLE DE UN CONGELADO. Despues
|
|
27
|
+
* de corrido, el archivo tenia las mismas claves. No habia razon, ni
|
|
28
|
+
* version sellada, ni huella, ni quien. La diferencia entre "el dueno
|
|
29
|
+
* adopto la version nueva del metodo" y "alguien corrio un comando" no
|
|
30
|
+
* estaba guardada en ninguna parte.
|
|
31
|
+
*
|
|
32
|
+
* Por que esta mitad importa mas que la otra, con las palabras del dueno:
|
|
33
|
+
* una compuerta mal adoptada pone peldanos en rojo y SE VE; un prompt
|
|
34
|
+
* cambiado sin registro cambia lo que el agente hace en cada turno y no
|
|
35
|
+
* deja rastro en ningun veredicto. La mitad que no tenia candado es la que
|
|
36
|
+
* falla en silencio.
|
|
37
|
+
*
|
|
38
|
+
* LA DECISION DE DISENO: DOS ARCHIVOS, DOS SIGNIFICADOS.
|
|
39
|
+
*
|
|
40
|
+
* .forge/urazuke-prompts.json overrides del dueno (lo de hoy,
|
|
41
|
+
* intacto: `prompts set|reset` y el
|
|
42
|
+
* panel siguen escribiendo ahi).
|
|
43
|
+
* .forge/urazuke-prompts-frozen.json la copia congelada: el payload
|
|
44
|
+
* publicado VERBATIM -- con su
|
|
45
|
+
* version, su huella y su sello --
|
|
46
|
+
* mas la procedencia (cuando, de
|
|
47
|
+
* donde, con que razon, contra que
|
|
48
|
+
* registro).
|
|
49
|
+
*
|
|
50
|
+
* El payload se guarda tal cual vino, igual que el congelado de las
|
|
51
|
+
* compuertas, porque su sello es la huella del metodo sobre las claves que
|
|
52
|
+
* el metodo declara: re-serializarlo es la unica manera segura de convertir
|
|
53
|
+
* una copia verificable en una que no verifica. La procedencia va en claves
|
|
54
|
+
* que el sello EXCLUYE.
|
|
55
|
+
*
|
|
56
|
+
* ORDEN DE RESOLUCION (prompts_client.ts): overrides > CONGELADO >
|
|
57
|
+
* publicado > vendorizado. El congelado entra en el medio a proposito: fija
|
|
58
|
+
* la version del metodo sin quitarle al dueno el control del texto, que es
|
|
59
|
+
* la razon por la que los overrides existen.
|
|
60
|
+
*
|
|
61
|
+
* COMPATIBILIDAD, Y LO QUE NO SE ADIVINA. Hay proyectos con
|
|
62
|
+
* `.forge/urazuke-prompts.json` ya escrito por el `pull` viejo -- el brazo
|
|
63
|
+
* C1 del experimento es uno, y va 20 de 24 peldanos con esa copia. Ese
|
|
64
|
+
* archivo NO dice si es un congelado o una edicion a mano, y este modulo no
|
|
65
|
+
* lo adivina: lo sigue leyendo como override (con lo cual el texto efectivo
|
|
66
|
+
* no se mueve ni un byte, que es lo que un proyecto a mitad de la escalera
|
|
67
|
+
* necesita) y MIDE la unica cosa medible -- si su contenido coincide con el
|
|
68
|
+
* publicado -- para poder decir de que se trata sin afirmarlo. Convertirlo
|
|
69
|
+
* en un congelado declarado es `prompts adopt --reason`, que es un acto con
|
|
70
|
+
* autor.
|
|
71
|
+
*
|
|
72
|
+
* ASCII-only.
|
|
73
|
+
*/
|
|
74
|
+
import { promises as fs } from 'node:fs';
|
|
75
|
+
import path from 'node:path';
|
|
76
|
+
import { canonicalJson, sha256Hex } from './ruleset.js';
|
|
77
|
+
import { loadPublishedPrompts, readOverrides, } from './prompts_client.js';
|
|
78
|
+
import { verifyAgainstLedger } from './gates_ledger.js';
|
|
79
|
+
export const PROMPTS_FROZEN_REL = path.join('.forge', 'urazuke-prompts-frozen.json');
|
|
80
|
+
export function frozenPromptsPath(projectRoot) {
|
|
81
|
+
return path.join(projectRoot, PROMPTS_FROZEN_REL);
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* LA IDENTIDAD DE LO PUBLICADO, LEIDA DONDE EL METODO LA DECLARA.
|
|
85
|
+
*
|
|
86
|
+
* El payload trae DOS campos que parecen una version, y uno de los dos no
|
|
87
|
+
* sirve. Lo dice el propio payload, en version_note: el sha de `version`
|
|
88
|
+
* "es el sha del cambio ANTERIOR al que contiene este archivo, porque se
|
|
89
|
+
* calcula antes de guardar: la identidad de lo publicado es corpus_version
|
|
90
|
+
* + content_hash, y ninguna comparacion mira esto".
|
|
91
|
+
*
|
|
92
|
+
* Y el registro append-only anota sus entradas por corpus_version. Asi que
|
|
93
|
+
* contrastar por `version` seria mirar justo el campo que el metodo
|
|
94
|
+
* declara incomparable, y daria 'absent' para una version que el registro
|
|
95
|
+
* SI anota: un control que miro el lugar equivocado e informa como si
|
|
96
|
+
* hubiera mirado el correcto.
|
|
97
|
+
*
|
|
98
|
+
* El fallback a `version` existe para un payload viejo que no declare
|
|
99
|
+
* corpus_version (y para las pruebas que lo simulan).
|
|
100
|
+
*/
|
|
101
|
+
export const PROMPTS_VERSION_FIELD = 'corpus_version';
|
|
102
|
+
export function declaredPromptsVersion(file) {
|
|
103
|
+
const c = file[PROMPTS_VERSION_FIELD];
|
|
104
|
+
if (typeof c === 'string' && c.trim())
|
|
105
|
+
return c;
|
|
106
|
+
const v = file['version'];
|
|
107
|
+
return typeof v === 'string' ? v : '';
|
|
108
|
+
}
|
|
109
|
+
function esPayload(x) {
|
|
110
|
+
if (!x || typeof x !== 'object')
|
|
111
|
+
return false;
|
|
112
|
+
const p = x;
|
|
113
|
+
if (typeof p['version'] !== 'string')
|
|
114
|
+
return false;
|
|
115
|
+
const ch = p['content_hash'];
|
|
116
|
+
if (!ch || typeof ch !== 'object' || typeof ch.value !== 'string'
|
|
117
|
+
|| !Array.isArray(ch.covers) || !Array.isArray(ch.excludes))
|
|
118
|
+
return false;
|
|
119
|
+
const c = p['contracts'];
|
|
120
|
+
if (!c || typeof c !== 'object')
|
|
121
|
+
return false;
|
|
122
|
+
for (const v of Object.values(c)) {
|
|
123
|
+
if (!Array.isArray(v) || !v.every((s) => typeof s === 'string'))
|
|
124
|
+
return false;
|
|
125
|
+
}
|
|
126
|
+
return true;
|
|
127
|
+
}
|
|
128
|
+
/** Recalcular la huella sobre el payload cubierto y comparar. La forma
|
|
129
|
+
* canonica es la que declara el metodo y la que usa ruleset.ts, asi que una
|
|
130
|
+
* sola implementacion sirve para el sello y para esta verificacion. */
|
|
131
|
+
export function verifyPromptsSeal(file) {
|
|
132
|
+
const covered = {};
|
|
133
|
+
for (const k of file.content_hash.covers)
|
|
134
|
+
covered[k] = file[k];
|
|
135
|
+
const recomputed = sha256Hex(canonicalJson(covered));
|
|
136
|
+
const accounted = new Set([...file.content_hash.covers, ...file.content_hash.excludes]);
|
|
137
|
+
const uncovered = Object.keys(file).filter((k) => !accounted.has(k)).sort();
|
|
138
|
+
return {
|
|
139
|
+
ok: recomputed === file.content_hash.value && uncovered.length === 0,
|
|
140
|
+
declared: file.content_hash.value,
|
|
141
|
+
recomputed,
|
|
142
|
+
uncovered,
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
/** Leer el congelado del proyecto. Una copia que no verifica NO se usa y NO
|
|
146
|
+
* se pisa: puede ser una edicion a mano que el dueno quiso o una
|
|
147
|
+
* corrupcion que el dueno necesita ver, y las dos se destruyen igual si
|
|
148
|
+
* alguien la sobreescribe por conveniencia. */
|
|
149
|
+
export async function readFrozenPrompts(projectRoot) {
|
|
150
|
+
let raw;
|
|
151
|
+
try {
|
|
152
|
+
raw = JSON.parse(await fs.readFile(frozenPromptsPath(projectRoot), 'utf8'));
|
|
153
|
+
}
|
|
154
|
+
catch {
|
|
155
|
+
return {};
|
|
156
|
+
}
|
|
157
|
+
if (!esPayload(raw)) {
|
|
158
|
+
return { refused: ['el archivo ' + PROMPTS_FROZEN_REL + ' no tiene la forma de un payload de prompts publicado (version + content_hash + contracts)'] };
|
|
159
|
+
}
|
|
160
|
+
const seal = verifyPromptsSeal(raw);
|
|
161
|
+
if (!seal.ok) {
|
|
162
|
+
const problemas = ['la huella del congelado de prompts no cuadra: declarada '
|
|
163
|
+
+ seal.declared.slice(0, 16) + ', recalculada ' + seal.recomputed.slice(0, 16)];
|
|
164
|
+
if (seal.uncovered.length) {
|
|
165
|
+
problemas.push('claves sin proteger ni excluir: ' + seal.uncovered.join(', '));
|
|
166
|
+
}
|
|
167
|
+
return { refused: problemas };
|
|
168
|
+
}
|
|
169
|
+
return { prompts: raw };
|
|
170
|
+
}
|
|
171
|
+
export async function writeFrozenPrompts(projectRoot, file) {
|
|
172
|
+
const f = frozenPromptsPath(projectRoot);
|
|
173
|
+
await fs.mkdir(path.dirname(f), { recursive: true });
|
|
174
|
+
const tmp = f + '.tmp';
|
|
175
|
+
await fs.writeFile(tmp, JSON.stringify(file, null, 2) + '\n', 'utf8');
|
|
176
|
+
const { renameWithRetry } = await import('../core/atomic_write.js');
|
|
177
|
+
await renameWithRetry(tmp, f);
|
|
178
|
+
}
|
|
179
|
+
const RECORTE = 160;
|
|
180
|
+
function recorte(s) {
|
|
181
|
+
const t = s.replace(/\s+/g, ' ').trim();
|
|
182
|
+
return t.length > RECORTE ? t.slice(0, RECORTE) + '...' : t;
|
|
183
|
+
}
|
|
184
|
+
/** Comparar dos listas de prompts de un contrato. */
|
|
185
|
+
export function diffContract(key, antes, despues) {
|
|
186
|
+
const n = Math.max(antes.length, despues.length);
|
|
187
|
+
const idx = [];
|
|
188
|
+
const lines = [];
|
|
189
|
+
for (let i = 0; i < n; i++) {
|
|
190
|
+
const a = antes[i];
|
|
191
|
+
const d = despues[i];
|
|
192
|
+
if (a === d)
|
|
193
|
+
continue;
|
|
194
|
+
idx.push(i + 1);
|
|
195
|
+
if (a === undefined)
|
|
196
|
+
lines.push('[' + (i + 1) + '] NUEVO: ' + recorte(d ?? ''));
|
|
197
|
+
else if (d === undefined)
|
|
198
|
+
lines.push('[' + (i + 1) + '] SE VA: ' + recorte(a));
|
|
199
|
+
else
|
|
200
|
+
lines.push('[' + (i + 1) + '] antes: ' + recorte(a) + '\n ahora: ' + recorte(d));
|
|
201
|
+
}
|
|
202
|
+
if (!idx.length)
|
|
203
|
+
return undefined;
|
|
204
|
+
return { key, before: antes.length, after: despues.length, changed_indexes: idx, lines };
|
|
205
|
+
}
|
|
206
|
+
/** El payload publicado como archivo congelable (verbatim). */
|
|
207
|
+
function payloadComoCongelado(p) {
|
|
208
|
+
const any = p;
|
|
209
|
+
const ch = any['content_hash'];
|
|
210
|
+
if (!ch || typeof ch.value !== 'string' || !Array.isArray(ch.covers) || !Array.isArray(ch.excludes))
|
|
211
|
+
return undefined;
|
|
212
|
+
return any;
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* MEDIR lo que costaria adoptar los prompts publicados. NO ESCRIBE NADA.
|
|
216
|
+
*
|
|
217
|
+
* Para los prompts "medir" no es cuantos peldanos se ponen en rojo -- un
|
|
218
|
+
* prompt no decide un veredicto -- es QUE CONTRATOS CAMBIAN DE TEXTO,
|
|
219
|
+
* cuales no, y el diff. Y una cosa mas que el de las compuertas no
|
|
220
|
+
* necesita: que overrides del dueno van a TAPAR el texto nuevo, porque ahi
|
|
221
|
+
* el agente va a seguir leyendo lo viejo despues de adoptar y eso, sin
|
|
222
|
+
* aviso, parece que la adopcion no hizo nada.
|
|
223
|
+
*/
|
|
224
|
+
export async function previewPublishedPrompts(projectRoot, opts = {}) {
|
|
225
|
+
const out = {
|
|
226
|
+
ok: false, problems: [],
|
|
227
|
+
from: { kind: 'live', overridden: [] },
|
|
228
|
+
changed: [], unchanged: [], new_keys: [], gone_keys: [], shadowed: [],
|
|
229
|
+
adoptable: false, why_not: [],
|
|
230
|
+
};
|
|
231
|
+
const ov = await readOverrides(projectRoot);
|
|
232
|
+
const overridden = Object.keys(ov.overrides).sort();
|
|
233
|
+
const frozen = await readFrozenPrompts(projectRoot);
|
|
234
|
+
out.from.overridden = overridden;
|
|
235
|
+
if (frozen.prompts) {
|
|
236
|
+
out.from.kind = 'frozen';
|
|
237
|
+
out.from.version = declaredPromptsVersion(frozen.prompts);
|
|
238
|
+
out.from.hash = frozen.prompts.content_hash.value;
|
|
239
|
+
}
|
|
240
|
+
else if (frozen.refused?.length) {
|
|
241
|
+
out.problems.push(...frozen.refused);
|
|
242
|
+
out.why_not.push('hay un congelado de prompts en disco que NO verifica');
|
|
243
|
+
}
|
|
244
|
+
else if (overridden.length) {
|
|
245
|
+
out.from.kind = 'overrides';
|
|
246
|
+
}
|
|
247
|
+
const pub = await loadPublishedPrompts(opts);
|
|
248
|
+
if (!pub) {
|
|
249
|
+
out.problems.push('no pude traer los prompts publicados (ni la cache sirvio): sin eso no hay nada que medir');
|
|
250
|
+
out.why_not.push('la definicion publicada no esta disponible');
|
|
251
|
+
return out;
|
|
252
|
+
}
|
|
253
|
+
const file = payloadComoCongelado(pub.payload);
|
|
254
|
+
if (!file) {
|
|
255
|
+
out.problems.push('el payload publicado no declara content_hash con covers/excludes:'
|
|
256
|
+
+ ' no se puede sellar una copia que no trae su propio sello');
|
|
257
|
+
out.why_not.push('el payload publicado no trae sello');
|
|
258
|
+
return out;
|
|
259
|
+
}
|
|
260
|
+
const seal = verifyPromptsSeal(file);
|
|
261
|
+
if (!seal.ok) {
|
|
262
|
+
out.problems.push('la copia publicada no verifica su propia huella: declarada '
|
|
263
|
+
+ seal.declared.slice(0, 16) + ', recalculada ' + seal.recomputed.slice(0, 16)
|
|
264
|
+
+ (seal.uncovered.length ? ', claves sin proteger ni excluir: ' + seal.uncovered.join(', ') : ''));
|
|
265
|
+
out.why_not.push('la copia publicada no verifica su huella');
|
|
266
|
+
return out;
|
|
267
|
+
}
|
|
268
|
+
out.to = { version: declaredPromptsVersion(file), hash: seal.recomputed, contracts: Object.keys(file.contracts).length };
|
|
269
|
+
/* El texto EFECTIVO de hoy, contrato por contrato: override > congelado >
|
|
270
|
+
* publicado-de-la-cache. Lo que se compara es lo que el agente lee. */
|
|
271
|
+
const efectivo = {};
|
|
272
|
+
const base = frozen.prompts ? frozen.prompts.contracts : {};
|
|
273
|
+
for (const [k, v] of Object.entries(base))
|
|
274
|
+
efectivo[k] = v;
|
|
275
|
+
for (const [k, v] of Object.entries(ov.overrides))
|
|
276
|
+
efectivo[k] = v;
|
|
277
|
+
let iguales = 0;
|
|
278
|
+
for (const k of overridden) {
|
|
279
|
+
const pubk = file.contracts[k];
|
|
280
|
+
const mio = ov.overrides[k];
|
|
281
|
+
if (pubk && pubk.length === mio.length && pubk.every((s, i) => s === mio[i]))
|
|
282
|
+
iguales++;
|
|
283
|
+
}
|
|
284
|
+
if (out.from.kind === 'overrides')
|
|
285
|
+
out.from.overrides_iguales_al_publicado = iguales;
|
|
286
|
+
for (const k of Object.keys(file.contracts).sort()) {
|
|
287
|
+
const nuevo = file.contracts[k];
|
|
288
|
+
const viejo = efectivo[k];
|
|
289
|
+
if (viejo === undefined) {
|
|
290
|
+
out.new_keys.push(k);
|
|
291
|
+
continue;
|
|
292
|
+
}
|
|
293
|
+
const d = diffContract(k, viejo, nuevo);
|
|
294
|
+
if (d) {
|
|
295
|
+
out.changed.push(d);
|
|
296
|
+
if (ov.overrides[k])
|
|
297
|
+
out.shadowed.push(k);
|
|
298
|
+
}
|
|
299
|
+
else {
|
|
300
|
+
out.unchanged.push(k);
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
for (const k of Object.keys(efectivo).sort()) {
|
|
304
|
+
if (!file.contracts[k])
|
|
305
|
+
out.gone_keys.push(k);
|
|
306
|
+
}
|
|
307
|
+
if (!opts.skip_ledger) {
|
|
308
|
+
const lopts = { resource: 'prompts.json', version_field: PROMPTS_VERSION_FIELD };
|
|
309
|
+
if (opts.fetchImpl)
|
|
310
|
+
lopts.fetchImpl = opts.fetchImpl;
|
|
311
|
+
if (opts.ledger_url)
|
|
312
|
+
lopts.ledger_url = opts.ledger_url;
|
|
313
|
+
if (opts.timeout_ms != null)
|
|
314
|
+
lopts.timeout_ms = opts.timeout_ms;
|
|
315
|
+
out.ledger = await verifyAgainstLedger(file, lopts);
|
|
316
|
+
if (out.ledger.status === 'mismatch') {
|
|
317
|
+
out.why_not.push('el registro de versiones contradice esta copia: ' + out.ledger.detail);
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
out.ok = true;
|
|
321
|
+
out.adoptable = out.why_not.length === 0;
|
|
322
|
+
return out;
|
|
323
|
+
}
|
|
324
|
+
export const MIN_REASON = 15;
|
|
325
|
+
/**
|
|
326
|
+
* Adoptar los prompts publicados como el congelado del proyecto.
|
|
327
|
+
*
|
|
328
|
+
* Las mismas tres condiciones que las compuertas, y en el mismo orden: un
|
|
329
|
+
* payload que verifica su propio sello, un registro append-only que no lo
|
|
330
|
+
* contradice, y la razon escrita del dueno guardada ADENTRO del congelado.
|
|
331
|
+
*/
|
|
332
|
+
export async function adoptPublishedPrompts(projectRoot, opts) {
|
|
333
|
+
const out = { written: false, problems: [], path: frozenPromptsPath(projectRoot) };
|
|
334
|
+
const reason = (opts.reason ?? '').trim();
|
|
335
|
+
if (reason.length < MIN_REASON) {
|
|
336
|
+
out.problems.push('falta la razon escrita del dueno (minimo ' + MIN_REASON + ' caracteres).'
|
|
337
|
+
+ ' Los prompts son lo que el agente lee en cada turno: cambiarlos es una decision'
|
|
338
|
+
+ ' con autor, y queda escrita adentro del congelado.');
|
|
339
|
+
return out;
|
|
340
|
+
}
|
|
341
|
+
const existing = await readFrozenPrompts(projectRoot);
|
|
342
|
+
if ((existing.prompts || existing.refused?.length) && !opts.replace) {
|
|
343
|
+
out.problems.push('este proyecto ya tiene prompts congelados'
|
|
344
|
+
+ (existing.prompts ? ' (' + existing.prompts.version + ')' : ' en una copia que NO verifica')
|
|
345
|
+
+ ' y no la piso sin que me lo pidas expresamente (--replace).');
|
|
346
|
+
return out;
|
|
347
|
+
}
|
|
348
|
+
const preview = await previewPublishedPrompts(projectRoot, opts);
|
|
349
|
+
out.preview = preview;
|
|
350
|
+
if (!preview.ok || !preview.to) {
|
|
351
|
+
out.problems.push(...preview.problems);
|
|
352
|
+
return out;
|
|
353
|
+
}
|
|
354
|
+
if (preview.ledger?.status === 'mismatch') {
|
|
355
|
+
out.problems.push('no adopto una copia que el registro de versiones contradice: ' + preview.ledger.detail);
|
|
356
|
+
return out;
|
|
357
|
+
}
|
|
358
|
+
const pub = await loadPublishedPrompts(opts);
|
|
359
|
+
const file = pub ? payloadComoCongelado(pub.payload) : undefined;
|
|
360
|
+
if (!file) {
|
|
361
|
+
out.problems.push('no pude volver a traer la copia publicada para congelarla');
|
|
362
|
+
return out;
|
|
363
|
+
}
|
|
364
|
+
/* VERBATIM, y la procedencia en claves que el sello excluye -- mismo
|
|
365
|
+
* criterio que el congelado de las compuertas. Re-serializar el payload
|
|
366
|
+
* seria la unica forma de convertir una copia verificada en una que no
|
|
367
|
+
* verifica. */
|
|
368
|
+
const congelado = file;
|
|
369
|
+
congelado['frozen_at'] = new Date().toISOString();
|
|
370
|
+
congelado['frozen_from'] = 'portal';
|
|
371
|
+
congelado['frozen_reason'] = reason;
|
|
372
|
+
if (preview.ledger) {
|
|
373
|
+
congelado['frozen_ledger'] = {
|
|
374
|
+
status: preview.ledger.status,
|
|
375
|
+
ledger_url: preview.ledger.ledger_url,
|
|
376
|
+
expected: preview.ledger.expected ?? null,
|
|
377
|
+
checked_at: new Date().toISOString(),
|
|
378
|
+
};
|
|
379
|
+
}
|
|
380
|
+
for (const k of ['frozen_at', 'frozen_from', 'frozen_reason', 'frozen_ledger']) {
|
|
381
|
+
if (!congelado.content_hash.covers.includes(k) && !congelado.content_hash.excludes.includes(k)) {
|
|
382
|
+
congelado.content_hash.excludes.push(k);
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
/* Ultima compuerta antes de escribir: la copia que se va a congelar tiene
|
|
386
|
+
* que verificar por el MISMO camino que la va a leer. */
|
|
387
|
+
const check = verifyPromptsSeal(congelado);
|
|
388
|
+
if (!check.ok) {
|
|
389
|
+
out.problems.push('la copia que iba a congelar no verifica por el mismo camino que la lee:'
|
|
390
|
+
+ ' declarada ' + check.declared.slice(0, 16) + ', recalculada ' + check.recomputed.slice(0, 16)
|
|
391
|
+
+ (check.uncovered.length ? ', claves sin proteger ni excluir: ' + check.uncovered.join(', ') : ''));
|
|
392
|
+
return out;
|
|
393
|
+
}
|
|
394
|
+
await writeFrozenPrompts(projectRoot, congelado);
|
|
395
|
+
out.written = true;
|
|
396
|
+
out.version = declaredPromptsVersion(congelado);
|
|
397
|
+
return out;
|
|
398
|
+
}
|
|
399
|
+
/* ---------------- lo que ve el dueno ---------------- */
|
|
400
|
+
/** El ensayo en lineas, para el CLI y para el panel. */
|
|
401
|
+
export function renderPromptsPreview(p, opts = {}) {
|
|
402
|
+
const L = [];
|
|
403
|
+
if (!p.ok) {
|
|
404
|
+
L.push('no pude medir la adopcion: ' + p.problems.join('; '));
|
|
405
|
+
return L;
|
|
406
|
+
}
|
|
407
|
+
if (p.from.kind === 'frozen') {
|
|
408
|
+
L.push('en vigor: congelado ' + p.from.version + ' hash ' + (p.from.hash ?? '?').slice(0, 12)
|
|
409
|
+
+ (p.from.overridden.length ? ' + ' + p.from.overridden.length + ' contrato(s) con override del dueno' : ''));
|
|
410
|
+
}
|
|
411
|
+
else if (p.from.kind === 'overrides') {
|
|
412
|
+
L.push('en vigor: SIN congelado declarado, con ' + p.from.overridden.length
|
|
413
|
+
+ ' contrato(s) escritos en .forge/urazuke-prompts.json.');
|
|
414
|
+
L.push(' ese archivo no dice si es un congelado o una edicion a mano, y no lo adivino.'
|
|
415
|
+
+ ' Medido: ' + (p.from.overrides_iguales_al_publicado ?? 0) + ' de ' + p.from.overridden.length
|
|
416
|
+
+ ' coinciden exactamente con lo publicado'
|
|
417
|
+
+ ((p.from.overrides_iguales_al_publicado ?? 0) === p.from.overridden.length
|
|
418
|
+
? ' (compatible con una copia traida por el pull viejo, y tambien con que el dueno escribiera lo mismo).'
|
|
419
|
+
: ' (hay texto que el metodo no publico: alguien lo edito).'));
|
|
420
|
+
}
|
|
421
|
+
else {
|
|
422
|
+
L.push('en vigor: lo publicado (este proyecto no congelo los prompts).');
|
|
423
|
+
}
|
|
424
|
+
L.push('publicada: ' + p.to.version + ' hash ' + p.to.hash.slice(0, 12) + ' -- ' + p.to.contracts + ' contratos');
|
|
425
|
+
if (p.ledger)
|
|
426
|
+
L.push('registro de versiones: ' + p.ledger.status + ' -- ' + p.ledger.detail);
|
|
427
|
+
else
|
|
428
|
+
L.push('registro de versiones: no consultado (--skip-ledger)');
|
|
429
|
+
if (!p.changed.length && !p.new_keys.length && !p.gone_keys.length) {
|
|
430
|
+
L.push('ningun contrato cambia de texto: adoptar no moveria una sola palabra.');
|
|
431
|
+
}
|
|
432
|
+
else {
|
|
433
|
+
L.push('cambian de texto ' + p.changed.length + ' contrato(s); quedan igual ' + p.unchanged.length + '.');
|
|
434
|
+
for (const c of p.changed) {
|
|
435
|
+
L.push(' ' + c.key + ': ' + c.changed_indexes.length + ' prompt(s) [' + c.changed_indexes.join(', ') + ']'
|
|
436
|
+
+ (c.before !== c.after ? ' (' + c.before + ' -> ' + c.after + ')' : ''));
|
|
437
|
+
if (opts.full_diff !== false)
|
|
438
|
+
for (const l of c.lines)
|
|
439
|
+
L.push(' ' + l);
|
|
440
|
+
}
|
|
441
|
+
if (p.new_keys.length)
|
|
442
|
+
L.push(' contratos NUEVOS: ' + p.new_keys.join(', '));
|
|
443
|
+
if (p.gone_keys.length) {
|
|
444
|
+
L.push(' contratos que el metodo YA NO publica: ' + p.gone_keys.join(', ')
|
|
445
|
+
+ ' (adoptar no los borra: siguen leyendose de donde estan)');
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
if (p.shadowed.length) {
|
|
449
|
+
L.push('AVISO: ' + p.shadowed.length + ' contrato(s) con override del dueno van a TAPAR el texto nuevo ('
|
|
450
|
+
+ p.shadowed.join(', ') + '). Despues de adoptar, el agente sigue leyendo el override:'
|
|
451
|
+
+ ' quitalo con `yf urazuke prompts reset <contrato>` si querias el publicado.');
|
|
452
|
+
}
|
|
453
|
+
L.push(p.adoptable
|
|
454
|
+
? 'adoptable: si -- yf urazuke prompts adopt --reason "..."'
|
|
455
|
+
: 'adoptable: NO -- ' + p.why_not.join(' | '));
|
|
456
|
+
for (const l of avisoDeCambioDeSemantica(p))
|
|
457
|
+
L.push(l);
|
|
458
|
+
return L;
|
|
459
|
+
}
|
|
460
|
+
/**
|
|
461
|
+
* EL CAMBIO DE SEMANTICA, DICHO EN LA SALIDA DEL PROPIO COMANDO.
|
|
462
|
+
*
|
|
463
|
+
* `prompts pull` ESCRIBIA y pisaba; desde 1.27.0 MIDE y no escribe. Eso es
|
|
464
|
+
* un cambio incompatible de un comando que ya existia, y la via habitual
|
|
465
|
+
* para avisarlo -- un numero mayor -- la descarto el dueno con un motivo
|
|
466
|
+
* que es mejor que el numero: "un cambio de semantica anunciado en la
|
|
467
|
+
* propia salida del comando le sirve mas al dueno que un numero mayor que
|
|
468
|
+
* nadie lee" (2026-11-03). Asi que el aviso es parte del contrato de
|
|
469
|
+
* salida, no una cortesia, y tiene una prueba que lo exige.
|
|
470
|
+
*
|
|
471
|
+
* Dos niveles, porque el que ya uso la forma vieja necesita mas que el que
|
|
472
|
+
* llega nuevo:
|
|
473
|
+
*
|
|
474
|
+
* - SIEMPRE: que este pull no escribe, y cual es el comando que escribe.
|
|
475
|
+
* - Y cuando el proyecto tiene la FIRMA de un pull viejo -- overrides
|
|
476
|
+
* cuyo texto coincide exactamente con lo publicado, que es lo que
|
|
477
|
+
* dejaba el comando anterior -- se nombra el comando que hace lo que
|
|
478
|
+
* el viejo hacia (`copy-to-overrides`), porque ese usuario corrio el
|
|
479
|
+
* viejo y su proximo reflejo va a ser buscarlo.
|
|
480
|
+
*/
|
|
481
|
+
export function avisoDeCambioDeSemantica(p) {
|
|
482
|
+
const L = [];
|
|
483
|
+
L.push('CAMBIO DE SEMANTICA (1.27.0): este `pull` NO ESCRIBE NADA -- mide y se va.'
|
|
484
|
+
+ ' Hasta 1.26.0 escribia .forge/urazuke-prompts.json pisando lo que hubiera.'
|
|
485
|
+
+ ' Para escribir hay un solo camino y pide la razon del dueno:'
|
|
486
|
+
+ ' `yf urazuke prompts adopt --reason "..."`.');
|
|
487
|
+
const ov = p.from.kind === 'overrides' ? p.from : undefined;
|
|
488
|
+
const firmaDelViejo = !!ov && ov.overridden.length > 0
|
|
489
|
+
&& (ov.overrides_iguales_al_publicado ?? 0) === ov.overridden.length;
|
|
490
|
+
if (firmaDelViejo) {
|
|
491
|
+
L.push(' y este proyecto tiene la firma del pull viejo (' + ov.overridden.length
|
|
492
|
+
+ ' override(s) con el texto exacto de lo publicado): si lo que buscabas era eso'
|
|
493
|
+
+ ' -- copiar lo publicado a los overrides para editarlo a mano -- ahora se llama'
|
|
494
|
+
+ ' `yf urazuke prompts copy-to-overrides`, y sigue sin ser un congelado.');
|
|
495
|
+
}
|
|
496
|
+
return L;
|
|
497
|
+
}
|
|
498
|
+
//# sourceMappingURL=prompts_freeze.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompts_freeze.js","sourceRoot":"","sources":["../../src/urazuke/prompts_freeze.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../src/urazuke/start.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,uDAAuD;IACvD,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACxC,wCAAwC;IACxC,SAAS,EAAE,SAAS,GAAG,gBAAgB,GAAG,WAAW,CAAC;IACtD,MAAM,EAAE,MAAM,CAAC;IACf,8EAA8E;IAC9E,WAAW,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClE;;4EAEwE;IACxE,OAAO,CAAC,EAAE,OAAO,YAAY,EAAE,mBAAmB,CAAC;IACnD,kEAAkE;IAClE,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,gCAAgC;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,+EAA+E;IAC/E,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;IACjB,gEAAgE;IAChE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB;kFAC8E;IAC9E,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB;;;+DAG2D;IAC3D,MAAM,CAAC,EAAE,OAAO,aAAa,EAAE,YAAY,CAAC;CAC7C;AAgBD,kEAAkE;AAClE,wBAAgB,YAAY,CAAC,CAAC,EAAE,gBAAgB,GAAG,SAAS,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAKtF;AAUD,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAoBnG;
|
|
1
|
+
{"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../src/urazuke/start.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,uDAAuD;IACvD,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACxC,wCAAwC;IACxC,SAAS,EAAE,SAAS,GAAG,gBAAgB,GAAG,WAAW,CAAC;IACtD,MAAM,EAAE,MAAM,CAAC;IACf,8EAA8E;IAC9E,WAAW,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClE;;4EAEwE;IACxE,OAAO,CAAC,EAAE,OAAO,YAAY,EAAE,mBAAmB,CAAC;IACnD,kEAAkE;IAClE,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,gCAAgC;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,+EAA+E;IAC/E,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;IACjB,gEAAgE;IAChE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB;kFAC8E;IAC9E,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB;;;+DAG2D;IAC3D,MAAM,CAAC,EAAE,OAAO,aAAa,EAAE,YAAY,CAAC;CAC7C;AAgBD,kEAAkE;AAClE,wBAAgB,YAAY,CAAC,CAAC,EAAE,gBAAgB,GAAG,SAAS,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAKtF;AAUD,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAoBnG;AA+BD,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAkDhJ"}
|
package/dist/urazuke/start.js
CHANGED
|
@@ -70,6 +70,38 @@ export async function urazukeStartHint(slug, projectRoot) {
|
|
|
70
70
|
...(history.has_history ? { history, history_notice: notice } : {}),
|
|
71
71
|
};
|
|
72
72
|
}
|
|
73
|
+
/**
|
|
74
|
+
* EL MODO ESTRICTO Y EL AVISO DE VERSION NUEVA (PND-277, 2026-11-03).
|
|
75
|
+
*
|
|
76
|
+
* Se mira DESPUES del freeze -- que es idempotente y congela lo que el
|
|
77
|
+
* proyecto lee hoy -- asi que un proyecto estricto que simplemente no habia
|
|
78
|
+
* congelado todavia arranca igual: el freeze lo resuelve y la compuerta
|
|
79
|
+
* encuentra las dos mitades puestas. Lo que la compuerta frena es el caso
|
|
80
|
+
* que importa: el freeze NO pudo (el portal no respondio, o hay una copia
|
|
81
|
+
* que no verifica) y el proyecto declaro que no quiere correr la escalera
|
|
82
|
+
* midiendo con otra version del metodo que la que fijo. Para un equipo que
|
|
83
|
+
* esta midiendo, caer al catalogo compilado con una nota al pie es la
|
|
84
|
+
* familia del cero que informaba salud.
|
|
85
|
+
*/
|
|
86
|
+
async function methodGate(projectRoot) {
|
|
87
|
+
try {
|
|
88
|
+
const { methodState, renderMethodState } = await import('./method_config.js');
|
|
89
|
+
const { readLimitsConfig } = await import('../core/limits_config.js');
|
|
90
|
+
let machine;
|
|
91
|
+
try {
|
|
92
|
+
machine = (await readLimitsConfig()).urazuke.update_check;
|
|
93
|
+
}
|
|
94
|
+
catch { /* default */ }
|
|
95
|
+
const st = await methodState(projectRoot, { ...(machine ? { machine_update_check: machine } : {}) });
|
|
96
|
+
const notices = renderMethodState(st).filter((l) => l.startsWith('aviso:') || l.startsWith('VERSION NUEVA:'));
|
|
97
|
+
return st.strict.ok ? { notices } : { block: st.strict.detail, notices };
|
|
98
|
+
}
|
|
99
|
+
catch {
|
|
100
|
+
/* Una compuerta que no pudo leerse no frena un arranque: frenar por no
|
|
101
|
+
* poder mirar seria peor que el defecto que previene. */
|
|
102
|
+
return { notices: [] };
|
|
103
|
+
}
|
|
104
|
+
}
|
|
73
105
|
export async function startUrazuke(slug, projectRoot, opts = {}) {
|
|
74
106
|
const { urazukeEnabled, URAZUKE_DISABLED_MESSAGE } = await import('./enabled.js');
|
|
75
107
|
if (!(await urazukeEnabled()))
|
|
@@ -83,10 +115,14 @@ export async function startUrazuke(slug, projectRoot, opts = {}) {
|
|
|
83
115
|
* freeze is idempotent, so a project already frozen is untouched
|
|
84
116
|
* (PND-165). */
|
|
85
117
|
const freeze = await freezeFor(projectRoot);
|
|
118
|
+
const gate = await methodGate(projectRoot);
|
|
119
|
+
if (gate.block)
|
|
120
|
+
return { ok: false, created: false, reason: gate.block };
|
|
86
121
|
return {
|
|
87
122
|
ok: true, created: false, kind: hint.active.kind, code: hint.active.code, ...histNotice,
|
|
88
123
|
reason: 'la escalera ' + hint.active.code + ' ya estaba abierta: ' + describeNext(next, false)
|
|
89
|
-
+ (freeze ? ' -- ' + (await import('./freeze.js')).renderFreeze(freeze) : '')
|
|
124
|
+
+ (freeze ? ' -- ' + (await import('./freeze.js')).renderFreeze(freeze) : '')
|
|
125
|
+
+ (gate.notices.length ? ' | ' + gate.notices.join(' | ') : ''),
|
|
90
126
|
...(next ? { next } : {}),
|
|
91
127
|
...(freeze ? { freeze } : {}),
|
|
92
128
|
};
|
|
@@ -109,11 +145,15 @@ export async function startUrazuke(slug, projectRoot, opts = {}) {
|
|
|
109
145
|
* version of the method; this is the moment that makes that true, because
|
|
110
146
|
* it is the only one that covers the whole climb. */
|
|
111
147
|
const freeze = r.created ? await freezeFor(projectRoot) : undefined;
|
|
148
|
+
const gate = r.created ? await methodGate(projectRoot) : { notices: [] };
|
|
149
|
+
if (gate.block)
|
|
150
|
+
return { ok: false, created: false, reason: gate.block };
|
|
112
151
|
return {
|
|
113
152
|
ok: r.created, created: r.created, ...histNotice,
|
|
114
153
|
...(r.kind ? { kind: r.kind } : {}), ...(r.code ? { code: r.code } : {}),
|
|
115
154
|
reason: r.reason + (next ? '; ' + describeNext(next, true) : '')
|
|
116
|
-
+ (freeze ? '; ' + (await import('./freeze.js')).renderFreeze(freeze) : '')
|
|
155
|
+
+ (freeze ? '; ' + (await import('./freeze.js')).renderFreeze(freeze) : '')
|
|
156
|
+
+ (gate.notices.length ? ' | ' + gate.notices.join(' | ') : ''),
|
|
117
157
|
...(closed.length ? { closed } : {}),
|
|
118
158
|
...(next ? { next } : {}),
|
|
119
159
|
...(freeze ? { freeze } : {}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/urazuke/start.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/urazuke/start.ts"],"names":[],"mappings":"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"}
|