@nac3/forge-cli 1.23.3 → 1.23.5
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.js +0 -0
- package/dist/chat/doctrine_digest.d.ts.map +1 -1
- package/dist/chat/doctrine_digest.js +4 -1
- package/dist/chat/doctrine_digest.js.map +1 -1
- package/dist/chat/server.d.ts.map +1 -1
- package/dist/chat/server.js +72 -19
- package/dist/chat/server.js.map +1 -1
- package/dist/chat/tools/evidence.d.ts +34 -2
- package/dist/chat/tools/evidence.d.ts.map +1 -1
- package/dist/chat/tools/evidence.js +90 -12
- package/dist/chat/tools/evidence.js.map +1 -1
- package/dist/commands/urazuke.d.ts.map +1 -1
- package/dist/commands/urazuke.js +27 -0
- package/dist/commands/urazuke.js.map +1 -1
- package/dist/core/error_catalog.d.ts +4 -0
- package/dist/core/error_catalog.d.ts.map +1 -1
- package/dist/core/error_catalog.js +16 -0
- package/dist/core/error_catalog.js.map +1 -1
- package/dist/core/loopback_post.d.ts +101 -0
- package/dist/core/loopback_post.d.ts.map +1 -0
- package/dist/core/loopback_post.js +156 -0
- package/dist/core/loopback_post.js.map +1 -0
- package/dist/docs/doctrine/urazuke.md +50 -38
- package/dist/mcp/forge_panel_server.d.ts +1 -26
- package/dist/mcp/forge_panel_server.d.ts.map +1 -1
- package/dist/mcp/forge_panel_server.js +5 -26
- package/dist/mcp/forge_panel_server.js.map +1 -1
- package/dist/mcp/forge_verbs_server.d.ts +1 -11
- package/dist/mcp/forge_verbs_server.d.ts.map +1 -1
- package/dist/mcp/forge_verbs_server.js +7 -23
- package/dist/mcp/forge_verbs_server.js.map +1 -1
- package/dist/mcp/panel_invoke.d.ts +51 -0
- package/dist/mcp/panel_invoke.d.ts.map +1 -0
- package/dist/mcp/panel_invoke.js +102 -0
- package/dist/mcp/panel_invoke.js.map +1 -0
- package/dist/nac3/internal_manifest.d.ts +2 -0
- package/dist/nac3/internal_manifest.d.ts.map +1 -1
- package/dist/nac3/internal_manifest.js +18 -3
- package/dist/nac3/internal_manifest.js.map +1 -1
- package/dist/nac3/verb_budget.d.ts +110 -0
- package/dist/nac3/verb_budget.d.ts.map +1 -0
- package/dist/nac3/verb_budget.js +142 -0
- package/dist/nac3/verb_budget.js.map +1 -0
- package/dist/relay/in_flight_turn.d.ts +52 -11
- package/dist/relay/in_flight_turn.d.ts.map +1 -1
- package/dist/relay/in_flight_turn.js +98 -30
- package/dist/relay/in_flight_turn.js.map +1 -1
- package/dist/relay/loopback_turn.d.ts +15 -42
- package/dist/relay/loopback_turn.d.ts.map +1 -1
- package/dist/relay/loopback_turn.js +27 -115
- package/dist/relay/loopback_turn.js.map +1 -1
- package/dist/urazuke/evidence.d.ts +22 -0
- package/dist/urazuke/evidence.d.ts.map +1 -1
- package/dist/urazuke/evidence.js +42 -3
- package/dist/urazuke/evidence.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/docs/doctrine/urazuke.md +50 -38
- package/package.json +20 -18
- package/src/i18n/catalogs/ar.json +3 -0
- package/src/i18n/catalogs/de.json +3 -0
- package/src/i18n/catalogs/en.json +3 -0
- package/src/i18n/catalogs/es.json +3 -0
- package/src/i18n/catalogs/fr.json +3 -0
- package/src/i18n/catalogs/hi.json +3 -0
- package/src/i18n/catalogs/it.json +3 -0
- package/src/i18n/catalogs/ja.json +3 -0
- package/src/i18n/catalogs/pt.json +3 -0
- package/src/i18n/catalogs/zh.json +3 -0
|
@@ -9,50 +9,22 @@
|
|
|
9
9
|
* sin una segunda implementacion que se desincronice.
|
|
10
10
|
*
|
|
11
11
|
* EL DEFECTO QUE ESTE MODULO CIERRA (PND-234. Pablo, 29-oct-2026, desde el
|
|
12
|
-
* telefono: "No pude completar tu pedido: fetch failed").
|
|
12
|
+
* telefono: "No pude completar tu pedido: fetch failed"). La respuesta de
|
|
13
|
+
* /api/chat es un JSON que recien se arma cuando el turno entero termino, asi
|
|
14
|
+
* que con `fetch` el POST moria a los cinco minutos y el usuario recibia un
|
|
15
|
+
* fracaso por un trabajo que el escritorio estaba terminando bien.
|
|
13
16
|
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
* habia recibido "fetch failed" y el usuario quedaba creyendo que no se hizo
|
|
20
|
-
* nada.
|
|
21
|
-
*
|
|
22
|
-
* El limite esta MEDIDO, no estimado: contra un servidor que acepta la
|
|
23
|
-
* conexion y nunca responde, el fetch global de Node 22.16 murio a los
|
|
24
|
-
* 305.677 ms con name=TypeError, message="fetch failed" y
|
|
25
|
-
* cause.code=UND_ERR_HEADERS_TIMEOUT. El turno del reporte habia durado 22
|
|
26
|
-
* minutos (turn_routing.jsonl 13:36:33Z; los archivos que escribio tienen
|
|
27
|
-
* mtime hasta 10:58 local). O sea: cinco minutos de techo para turnos que
|
|
28
|
-
* duran veinte. El defecto es determinista y crece con la utilidad del
|
|
29
|
-
* pedido -- cuanto mas trabajo pide el usuario desde el telefono, mas seguro
|
|
30
|
-
* es que no vea el resultado.
|
|
31
|
-
*
|
|
32
|
-
* POR QUE node:http Y NO fetch. Es la unica forma de mandar los tiempos sin
|
|
33
|
-
* depender de undici: Node lo trae adentro pero no lo expone como paquete, y
|
|
34
|
-
* construir un Agent con otro headersTimeout exigiria declarar una
|
|
35
|
-
* dependencia nueva para algo que el stdlib ya hace. La conexion es loopback
|
|
36
|
-
* y en claro, asi que no se pierde nada por bajar de capa.
|
|
37
|
-
*
|
|
38
|
-
* EL PRESUPUESTO NO DESAPARECE, cambia de escala. Sin ningun limite, un
|
|
39
|
-
* servidor de chat colgado dejaria al consumidor esperando para siempre -- y
|
|
40
|
-
* como atiende un pedido a la vez, ningun pedido POSTERIOR del telefono se
|
|
41
|
-
* correria nunca. Lo que no se usa es `req.setTimeout`, que mide INACTIVIDAD
|
|
42
|
-
* del socket: un turno que piensa diez minutos no manda un byte, y ese
|
|
43
|
-
* temporizador lo mataria sin motivo, que es la forma exacta del bug que esto
|
|
44
|
-
* cierra. Lo que se mide es el tiempo TOTAL, con un techo mas alto que
|
|
45
|
-
* cualquier turno legitimo.
|
|
46
|
-
*
|
|
47
|
-
* Y al vencerse, el usuario recibe algo accionable y VERDADERO: que el
|
|
48
|
-
* escritorio puede seguir trabajando y donde ver el resultado. El mensaje
|
|
49
|
-
* anterior ("no pude completar tu pedido") era falso en el caso mas comun.
|
|
17
|
+
* EL TRANSPORTE YA NO VIVE ACA (PND-235). El mismo techo aparecio identico en
|
|
18
|
+
* el canal de los verbos MCP, asi que el POST con presupuesto se mudo a
|
|
19
|
+
* core/loopback_post.ts y lo comparten los dos caminos. Lo que queda aca es lo
|
|
20
|
+
* que SI es del telefono: el techo de una hora y como se le cuenta el corte al
|
|
21
|
+
* usuario. El detalle de por que node:http y no fetch esta en ese modulo.
|
|
50
22
|
*
|
|
51
23
|
* ASCII puro.
|
|
52
24
|
*/
|
|
53
|
-
import http from 'node:http';
|
|
54
25
|
import { renderForgeError, ForgeFailure } from '../core/error_catalog.js';
|
|
55
26
|
import { E_MOBILE_TURN_UNANSWERED, E_MOBILE_TURN_UNDELIVERED, } from '../core/error_catalog.js';
|
|
27
|
+
import { postLoopbackJson, LoopbackCut } from '../core/loopback_post.js';
|
|
56
28
|
/**
|
|
57
29
|
* Techo de tiempo total para un turno pedido desde el telefono.
|
|
58
30
|
*
|
|
@@ -82,90 +54,30 @@ export function mobileTurnBudgetMs(env = process.env) {
|
|
|
82
54
|
* POST al /api/chat local, esperando lo que tarde el turno.
|
|
83
55
|
*
|
|
84
56
|
* Devuelve el status y el cuerpo crudo; parsear es del llamador, que es el
|
|
85
|
-
* que conoce la forma de la respuesta.
|
|
57
|
+
* que conoce la forma de la respuesta. Al cortarse, el usuario recibe algo
|
|
58
|
+
* accionable y VERDADERO: que el escritorio puede seguir trabajando y donde
|
|
59
|
+
* ver el resultado. El mensaje anterior ("no pude completar tu pedido") era
|
|
60
|
+
* falso en el caso mas comun.
|
|
86
61
|
*/
|
|
87
62
|
export async function postChatTurn(args) {
|
|
88
63
|
const budget = args.budgetMs ?? mobileTurnBudgetMs();
|
|
89
|
-
const body = Buffer.from(JSON.stringify(args.payload), 'utf8');
|
|
90
64
|
const minutes = Math.max(1, Math.round(budget / 60_000));
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
/* Que se vencio el presupuesto se recuerda aparte del error del socket:
|
|
94
|
-
* `req.destroy()` llega al handler de error como un ECONNRESET cualquiera,
|
|
95
|
-
* y sin esta marca el usuario recibiria el mensaje de "no se entrego" --
|
|
96
|
-
* el que dice que no se ejecuto nada -- justamente en el caso en que si se
|
|
97
|
-
* ejecuto. Era el error del que venimos. */
|
|
98
|
-
let vencido = false;
|
|
99
|
-
const req = http.request({
|
|
100
|
-
host: '127.0.0.1',
|
|
65
|
+
try {
|
|
66
|
+
return await postLoopbackJson({
|
|
101
67
|
port: args.port,
|
|
102
68
|
path: args.path ?? '/api/chat',
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
'content-type': 'application/json',
|
|
106
|
-
'content-length': String(body.byteLength),
|
|
107
|
-
},
|
|
108
|
-
}, (res) => {
|
|
109
|
-
const chunks = [];
|
|
110
|
-
res.on('data', (c) => chunks.push(c));
|
|
111
|
-
res.on('end', () => {
|
|
112
|
-
if (settled)
|
|
113
|
-
return;
|
|
114
|
-
settled = true;
|
|
115
|
-
clearTimeout(timer);
|
|
116
|
-
resolve({
|
|
117
|
-
status: res.statusCode ?? 0,
|
|
118
|
-
body: Buffer.concat(chunks).toString('utf8'),
|
|
119
|
-
});
|
|
120
|
-
});
|
|
121
|
-
/* Un corte MIENTRAS baja el cuerpo tampoco es "no se entrego": el turno
|
|
122
|
-
* ya corrio y el servidor ya estaba contestando. */
|
|
123
|
-
res.on('error', (e) => fail(e, true));
|
|
69
|
+
payload: args.payload,
|
|
70
|
+
budgetMs: budget,
|
|
124
71
|
});
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
if (
|
|
131
|
-
|
|
72
|
+
}
|
|
73
|
+
catch (e) {
|
|
74
|
+
/* "No se entrego" se dice SOLO con prueba positiva de que nada corrio, y
|
|
75
|
+
* esa clasificacion la hace el transporte (es conocimiento del socket).
|
|
76
|
+
* Aca se traduce a los codigos del telefono y a su idioma. */
|
|
77
|
+
if (e instanceof LoopbackCut && e.kind === 'undelivered') {
|
|
78
|
+
throw new ForgeFailure(renderForgeError(E_MOBILE_TURN_UNDELIVERED, { port: args.port }), e.cause ?? e);
|
|
132
79
|
}
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
return;
|
|
136
|
-
settled = true;
|
|
137
|
-
clearTimeout(timer);
|
|
138
|
-
/* "No se entrego" se dice SOLO con prueba positiva de que nada corrio,
|
|
139
|
-
* y la unica prueba positiva es que la conexion no se llego a
|
|
140
|
-
* establecer. Cualquier otro corte -- el socket se cayo despues del
|
|
141
|
-
* saludo, el servidor murio a mitad del turno -- deja abierta la
|
|
142
|
-
* posibilidad de que el turno si haya corrido, y en la duda no se le
|
|
143
|
-
* dice al usuario que no se hizo nada: se le dice que no hubo respuesta
|
|
144
|
-
* y donde mirar. Es la misma doctrina que decidePick e
|
|
145
|
-
* liveBelongsToProject en el lado del telefono: descartar solo con
|
|
146
|
-
* prueba de lo contrario. */
|
|
147
|
-
const noEntrego = !vencido && !yaCorrio && esRechazoDeConexion(cause);
|
|
148
|
-
if (noEntrego) {
|
|
149
|
-
reject(new ForgeFailure(renderForgeError(E_MOBILE_TURN_UNDELIVERED, { port: args.port }), cause));
|
|
150
|
-
return;
|
|
151
|
-
}
|
|
152
|
-
reject(new ForgeFailure(renderForgeError(E_MOBILE_TURN_UNANSWERED, { minutes }), cause));
|
|
153
|
-
};
|
|
154
|
-
req.on('error', (e) => fail(e, false));
|
|
155
|
-
req.end(body);
|
|
156
|
-
});
|
|
157
|
-
}
|
|
158
|
-
/**
|
|
159
|
-
* El socket nunca llego a conectar: no hay servidor escuchando ahi.
|
|
160
|
-
*
|
|
161
|
-
* Es la unica evidencia de que el turno NO corrio. Se mira el errno y no el
|
|
162
|
-
* texto porque el texto cambia entre versiones de Node y entre sistemas.
|
|
163
|
-
*/
|
|
164
|
-
function esRechazoDeConexion(e) {
|
|
165
|
-
const code = e?.code;
|
|
166
|
-
if (!code)
|
|
167
|
-
return false;
|
|
168
|
-
return code === 'ECONNREFUSED' || code === 'ENOTFOUND'
|
|
169
|
-
|| code === 'EADDRNOTAVAIL' || code === 'EHOSTUNREACH';
|
|
80
|
+
throw new ForgeFailure(renderForgeError(E_MOBILE_TURN_UNANSWERED, { minutes }), e instanceof LoopbackCut ? (e.cause ?? e) : e);
|
|
81
|
+
}
|
|
170
82
|
}
|
|
171
83
|
//# sourceMappingURL=loopback_turn.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loopback_turn.js","sourceRoot":"","sources":["../../src/relay/loopback_turn.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"loopback_turn.js","sourceRoot":"","sources":["../../src/relay/loopback_turn.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,EACL,wBAAwB,EAAE,yBAAyB,GACpD,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAyB,MAAM,0BAA0B,CAAC;AAIhG;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,GAAG,MAAM,CAAC;AAEjD,uDAAuD;AACvD,MAAM,UAAU,kBAAkB,CAAC,MAAyB,OAAO,CAAC,GAAG;IACrE,MAAM,GAAG,GAAG,GAAG,CAAC,0BAA0B,CAAC,CAAC;IAC5C,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,qBAAqB,CAAC;IAClE,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACtB;;;0CAGsC;IACtC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,qBAAqB,CAAC;IAChE,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAKlC;IACC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,IAAI,kBAAkB,EAAE,CAAC;IACrD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC;QACH,OAAO,MAAM,gBAAgB,CAAC;YAC5B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,WAAW;YAC9B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,QAAQ,EAAE,MAAM;SACjB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX;;sEAE8D;QAC9D,IAAI,CAAC,YAAY,WAAW,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YACzD,MAAM,IAAI,YAAY,CACpB,gBAAgB,CAAC,yBAAyB,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAC/E,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,YAAY,CACpB,gBAAgB,CAAC,wBAAwB,EAAE,EAAE,OAAO,EAAE,CAAC,EACvD,CAAC,YAAY,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAC9C,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -28,6 +28,15 @@ export interface RunEvidenceResult {
|
|
|
28
28
|
/** For red_proof: the worktree was created at this path (already removed). */
|
|
29
29
|
worktree?: string;
|
|
30
30
|
}
|
|
31
|
+
export declare const EVIDENCE_DEFAULT_TIMEOUT_MS: number;
|
|
32
|
+
export declare const EVIDENCE_MAX_TIMEOUT_MS: number;
|
|
33
|
+
/** El tope que de verdad se va a aplicar a una corrida.
|
|
34
|
+
*
|
|
35
|
+
* Lo exporta el runner y lo usa TAMBIEN el handler del verbo para decidir si
|
|
36
|
+
* la corrida entra en la ventana de bloqueo o se va al fondo (PND-236). Si
|
|
37
|
+
* cada uno hiciera su propia cuenta, un dia divergirian y el handler mandaria
|
|
38
|
+
* al fondo corridas que el runner recorta -- o peor, al reves. */
|
|
39
|
+
export declare function effectiveEvidenceTimeoutMs(timeout_ms?: number): number;
|
|
31
40
|
/** Spawn a shell command, capture everything, never throw. */
|
|
32
41
|
export declare function runCommand(command: string, cwd: string, timeout_ms: number): Promise<{
|
|
33
42
|
exit_code: number;
|
|
@@ -42,4 +51,17 @@ export declare function unlinkDir(p: string): Promise<void>;
|
|
|
42
51
|
/** Run a command and record its receipt. For red_proof, run it in a base
|
|
43
52
|
* worktree with the new test files copied in. */
|
|
44
53
|
export declare function runEvidence(input: RunEvidenceInput): Promise<RunEvidenceResult>;
|
|
54
|
+
/** Lo que el proceso destacado necesita para correr y dejar el recibo. El
|
|
55
|
+
* spec viaja por archivo y no por argv: mutation_diff puede ser largo y el
|
|
56
|
+
* limite de linea de comandos de Windows es de 32 KB. */
|
|
57
|
+
export interface EvidenceSpec extends RunEvidenceInput {
|
|
58
|
+
/** Marca de version del formato, para que un spec viejo no se corra mal. */
|
|
59
|
+
spec: 1;
|
|
60
|
+
}
|
|
61
|
+
/** Escribe el spec en un temporal y devuelve su path. */
|
|
62
|
+
export declare function writeEvidenceSpec(input: RunEvidenceInput): Promise<string>;
|
|
63
|
+
/** Corre lo que dice el spec y deja el recibo. El spec se borra despues, haya
|
|
64
|
+
* salido bien o mal: es un temporal, y dejarlo seria otra fuga como la del
|
|
65
|
+
* Temp que ya costo una medicion. */
|
|
66
|
+
export declare function runEvidenceFromSpec(specPath: string): Promise<RunEvidenceResult>;
|
|
45
67
|
//# sourceMappingURL=evidence.d.ts.map
|
|
@@ -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;
|
|
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;AAgCD;;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,CAoGrF;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
|
@@ -23,8 +23,17 @@ import path from 'node:path';
|
|
|
23
23
|
import { appendReceipt, parseCounts } from './receipts.js';
|
|
24
24
|
const execFileP = promisify(execFile);
|
|
25
25
|
const TAIL_CHARS = 4000;
|
|
26
|
-
const
|
|
27
|
-
const
|
|
26
|
+
export const EVIDENCE_DEFAULT_TIMEOUT_MS = 10 * 60 * 1000;
|
|
27
|
+
export const EVIDENCE_MAX_TIMEOUT_MS = 30 * 60 * 1000;
|
|
28
|
+
/** El tope que de verdad se va a aplicar a una corrida.
|
|
29
|
+
*
|
|
30
|
+
* Lo exporta el runner y lo usa TAMBIEN el handler del verbo para decidir si
|
|
31
|
+
* la corrida entra en la ventana de bloqueo o se va al fondo (PND-236). Si
|
|
32
|
+
* cada uno hiciera su propia cuenta, un dia divergirian y el handler mandaria
|
|
33
|
+
* al fondo corridas que el runner recorta -- o peor, al reves. */
|
|
34
|
+
export function effectiveEvidenceTimeoutMs(timeout_ms) {
|
|
35
|
+
return Math.min(Math.max(timeout_ms ?? EVIDENCE_DEFAULT_TIMEOUT_MS, 1000), EVIDENCE_MAX_TIMEOUT_MS);
|
|
36
|
+
}
|
|
28
37
|
async function git(cwd, args) {
|
|
29
38
|
const { stdout } = await execFileP('git', args, { cwd, encoding: 'utf8', windowsHide: true });
|
|
30
39
|
return stdout.trim();
|
|
@@ -150,7 +159,7 @@ function tail(s) {
|
|
|
150
159
|
/** Run a command and record its receipt. For red_proof, run it in a base
|
|
151
160
|
* worktree with the new test files copied in. */
|
|
152
161
|
export async function runEvidence(input) {
|
|
153
|
-
const timeout =
|
|
162
|
+
const timeout = effectiveEvidenceTimeoutMs(input.timeout_ms);
|
|
154
163
|
const head = await gitRef(input.projectRoot);
|
|
155
164
|
const started = Date.now();
|
|
156
165
|
if (input.kind === 'red_proof') {
|
|
@@ -269,4 +278,34 @@ export async function runEvidence(input) {
|
|
|
269
278
|
});
|
|
270
279
|
return { receipt };
|
|
271
280
|
}
|
|
281
|
+
/** Escribe el spec en un temporal y devuelve su path. */
|
|
282
|
+
export async function writeEvidenceSpec(input) {
|
|
283
|
+
const dir = path.join(os.tmpdir(), 'yujin-forge', 'evidence');
|
|
284
|
+
await fs.mkdir(dir, { recursive: true });
|
|
285
|
+
const p = path.join(dir, 'spec-' + Date.now() + '-' + Math.random().toString(36).slice(2, 8) + '.json');
|
|
286
|
+
const spec = { spec: 1, ...input };
|
|
287
|
+
await fs.writeFile(p, JSON.stringify(spec), 'utf8');
|
|
288
|
+
return p;
|
|
289
|
+
}
|
|
290
|
+
/** Corre lo que dice el spec y deja el recibo. El spec se borra despues, haya
|
|
291
|
+
* salido bien o mal: es un temporal, y dejarlo seria otra fuga como la del
|
|
292
|
+
* Temp que ya costo una medicion. */
|
|
293
|
+
export async function runEvidenceFromSpec(specPath) {
|
|
294
|
+
const raw = await fs.readFile(specPath, 'utf8');
|
|
295
|
+
const spec = JSON.parse(raw);
|
|
296
|
+
if (spec.spec !== 1)
|
|
297
|
+
throw new Error('spec de evidencia con formato desconocido: ' + String(spec.spec));
|
|
298
|
+
if (!spec.slug || !spec.projectRoot || !spec.kind || !spec.command) {
|
|
299
|
+
throw new Error('spec de evidencia incompleto (slug / projectRoot / kind / command)');
|
|
300
|
+
}
|
|
301
|
+
try {
|
|
302
|
+
return await runEvidence(spec);
|
|
303
|
+
}
|
|
304
|
+
finally {
|
|
305
|
+
try {
|
|
306
|
+
await fs.unlink(specPath);
|
|
307
|
+
}
|
|
308
|
+
catch { /* ya no esta */ }
|
|
309
|
+
}
|
|
310
|
+
}
|
|
272
311
|
//# sourceMappingURL=evidence.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evidence.js","sourceRoot":"","sources":["../../src/urazuke/evidence.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"evidence.js","sourceRoot":"","sources":["../../src/urazuke/evidence.ts"],"names":[],"mappings":"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"}
|
package/dist/version.d.ts
CHANGED
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
* Yujin Forge CLI version. Kept in sync with package.json by the npm
|
|
3
3
|
* "version" lifecycle (scripts/sync_version.mjs) so the two never drift.
|
|
4
4
|
*/
|
|
5
|
-
export declare const VERSION = "1.23.
|
|
5
|
+
export declare const VERSION = "1.23.5";
|
|
6
6
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.js
CHANGED
package/docs/doctrine/urazuke.md
CHANGED
|
@@ -1,38 +1,50 @@
|
|
|
1
|
-
# Urazuke -- the evidence method, as Forge runs it
|
|
2
|
-
|
|
3
|
-
Urazuke (github.com/pkuschnirof/urazuke) is the method behind every project
|
|
4
|
-
Forge builds or maintains: 24 ordered steps in four stretches, each with an
|
|
5
|
-
exact prompt, the inputs the owner prepares, the artifacts the agent leaves
|
|
6
|
-
in the repository, and a completion check the owner does WITHOUT reading
|
|
7
|
-
code. An existing system built without it goes through eight normalisation
|
|
8
|
-
stations (N0..N7) first and enters the loop at step 5.
|
|
9
|
-
|
|
10
|
-
## What is mechanical (not prose)
|
|
11
|
-
|
|
12
|
-
- The project's workflow is `urazuke` (no code) or `urazuke-legacy` (code
|
|
13
|
-
without the method's artifacts). Every canonical task carries its step.
|
|
14
|
-
- The CURRENT step's prompt is injected into your system prompt every turn,
|
|
15
|
-
with the state of its checks (section "URAZUKE -- peldano NN"). Act on
|
|
16
|
-
that prompt as if the owner had pasted it. Do not skip ahead.
|
|
17
|
-
- A canonical task closes ONLY when `evaluateStep()` is GREEN: the files
|
|
18
|
-
the step names exist, are not stubs, say what they must; the sizing
|
|
19
|
-
record is admissible (G9); the plan items carry a spec; the evidence
|
|
20
|
-
receipts exist. `yujin.pending.close` refuses a red step. An override
|
|
21
|
-
needs the OWNER's written `force_reason` (kept in history); never pass
|
|
22
|
-
one on your own initiative.
|
|
23
|
-
- Evidence is a RECEIPT Forge records (command, ref, exit code, counts),
|
|
24
|
-
never your summary. "Tests pass" without a receipt is a claim.
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
1
|
+
# Urazuke -- the evidence method, as Forge runs it
|
|
2
|
+
|
|
3
|
+
Urazuke (github.com/pkuschnirof/urazuke) is the method behind every project
|
|
4
|
+
Forge builds or maintains: 24 ordered steps in four stretches, each with an
|
|
5
|
+
exact prompt, the inputs the owner prepares, the artifacts the agent leaves
|
|
6
|
+
in the repository, and a completion check the owner does WITHOUT reading
|
|
7
|
+
code. An existing system built without it goes through eight normalisation
|
|
8
|
+
stations (N0..N7) first and enters the loop at step 5.
|
|
9
|
+
|
|
10
|
+
## What is mechanical (not prose)
|
|
11
|
+
|
|
12
|
+
- The project's workflow is `urazuke` (no code) or `urazuke-legacy` (code
|
|
13
|
+
without the method's artifacts). Every canonical task carries its step.
|
|
14
|
+
- The CURRENT step's prompt is injected into your system prompt every turn,
|
|
15
|
+
with the state of its checks (section "URAZUKE -- peldano NN"). Act on
|
|
16
|
+
that prompt as if the owner had pasted it. Do not skip ahead.
|
|
17
|
+
- A canonical task closes ONLY when `evaluateStep()` is GREEN: the files
|
|
18
|
+
the step names exist, are not stubs, say what they must; the sizing
|
|
19
|
+
record is admissible (G9); the plan items carry a spec; the evidence
|
|
20
|
+
receipts exist. `yujin.pending.close` refuses a red step. An override
|
|
21
|
+
needs the OWNER's written `force_reason` (kept in history); never pass
|
|
22
|
+
one on your own initiative.
|
|
23
|
+
- Evidence is a RECEIPT Forge records (command, ref, exit code, counts),
|
|
24
|
+
never your summary. "Tests pass" without a receipt is a claim.
|
|
25
|
+
- A LONG run leaves its receipt the same way. `yujin.evidence.run` blocks
|
|
26
|
+
the turn only while the run fits the blocking window (10 min, lowered with
|
|
27
|
+
`limits.claude_cli_silence_ms`); over that, or with `background: true`, it
|
|
28
|
+
is launched detached and returns a HANDLE. That is not a degraded mode:
|
|
29
|
+
the receipt is written by whoever runs, not by whoever waits. Read it with
|
|
30
|
+
`yujin.evidence.list` when the task finishes (`yujin.task.status({id})`
|
|
31
|
+
for the progress). Do NOT relaunch a run that already has a handle.
|
|
32
|
+
- And the corollary for any invocation that dies waiting: a verb call that
|
|
33
|
+
comes back UNANSWERED (E_VERB_CALL_UNANSWERED) did not necessarily fail.
|
|
34
|
+
Before redoing the work, LOOK FOR THE TRACE -- `yujin.evidence.list` for a
|
|
35
|
+
receipt, `yujin.task.list` for a task. Two closes were reported as
|
|
36
|
+
"believed" over a receipt that existed on disk the whole time.
|
|
37
|
+
|
|
38
|
+
## How to work inside it
|
|
39
|
+
|
|
40
|
+
1. Read the URAZUKE section: red checks are what is missing. Produce the
|
|
41
|
+
artifact at the path named, with real content, or ask the owner for the
|
|
42
|
+
input that is theirs (`antes de enviar`). Never invent an owner input.
|
|
43
|
+
2. When the section says GREEN, close the task with `yujin.pending.close`
|
|
44
|
+
(full expediente) and the next step's prompt arrives on the next turn.
|
|
45
|
+
3. `yujin.urazuke.status` shows the whole ladder; `yujin.urazuke.step`
|
|
46
|
+
shows any step in full (prompts, inputs, artifacts, checklist).
|
|
47
|
+
4. The plan is the pendings: each item needs `spec` (acceptance "given /
|
|
48
|
+
when / then" + `how_verified`) before it is implemented (step 5).
|
|
49
|
+
5. No deadlines, ever: the method fixes the order and the gates, not the
|
|
50
|
+
calendar. Speed is a consequence, not the objective.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nac3/forge-cli",
|
|
3
|
-
"version": "1.23.
|
|
3
|
+
"version": "1.23.5",
|
|
4
4
|
"description": "Yujin Forge -- voice-first NAC-3 React development framework. CLI + chat panel + spec ingest + 10-format document reader + voice loop.",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"author": "Pablo Kuschnirof <pablo@rpaforce.com>",
|
|
@@ -15,6 +15,23 @@
|
|
|
15
15
|
"exports": {
|
|
16
16
|
".": "./dist/index.js"
|
|
17
17
|
},
|
|
18
|
+
"scripts": {
|
|
19
|
+
"version": "node scripts/sync_version.mjs && git add src/version.ts",
|
|
20
|
+
"build": "node scripts/clean_dist.mjs && tsc && node scripts/copy_qa_assets.mjs",
|
|
21
|
+
"dev": "tsx watch src/bin/yf.ts",
|
|
22
|
+
"typecheck": "tsc --noEmit",
|
|
23
|
+
"typecheck:all": "pnpm typecheck && pnpm --filter @yujin/hito4-server typecheck && pnpm --filter @yujin/forge-mobile typecheck",
|
|
24
|
+
"test": "vitest run",
|
|
25
|
+
"test:watch": "vitest",
|
|
26
|
+
"lint": "tsc --noEmit",
|
|
27
|
+
"yf": "tsx src/bin/yf.ts",
|
|
28
|
+
"catalog:lint": "node scripts/catalog_lint.mjs",
|
|
29
|
+
"pairing:check": "node scripts/check_pairing_sync.mjs",
|
|
30
|
+
"brain-matrix:gate": "node scripts/brain_matrix_gate.mjs",
|
|
31
|
+
"hito4:lint": "node scripts/hito4_lint_bundle.mjs",
|
|
32
|
+
"publish-alpha-emergency": "node scripts/publish_alpha_emergency.mjs",
|
|
33
|
+
"prepublishOnly": "pnpm run build && pnpm run typecheck && pnpm run catalog:lint && pnpm run test && pnpm run brain-matrix:gate && pnpm run hito4:lint"
|
|
34
|
+
},
|
|
18
35
|
"dependencies": {
|
|
19
36
|
"@anthropic-ai/sdk": "^0.32.1",
|
|
20
37
|
"@aws-sdk/client-ecs": "^3.1053.0",
|
|
@@ -51,6 +68,7 @@
|
|
|
51
68
|
"node": ">=18.17",
|
|
52
69
|
"pnpm": ">=9"
|
|
53
70
|
},
|
|
71
|
+
"packageManager": "pnpm@11.3.0",
|
|
54
72
|
"files": [
|
|
55
73
|
"dist",
|
|
56
74
|
"templates",
|
|
@@ -95,21 +113,5 @@
|
|
|
95
113
|
"publishConfig": {
|
|
96
114
|
"access": "public",
|
|
97
115
|
"tag": "latest"
|
|
98
|
-
},
|
|
99
|
-
"scripts": {
|
|
100
|
-
"version": "node scripts/sync_version.mjs && git add src/version.ts",
|
|
101
|
-
"build": "node scripts/clean_dist.mjs && tsc && node scripts/copy_qa_assets.mjs",
|
|
102
|
-
"dev": "tsx watch src/bin/yf.ts",
|
|
103
|
-
"typecheck": "tsc --noEmit",
|
|
104
|
-
"typecheck:all": "pnpm typecheck && pnpm --filter @yujin/hito4-server typecheck && pnpm --filter @yujin/forge-mobile typecheck",
|
|
105
|
-
"test": "vitest run",
|
|
106
|
-
"test:watch": "vitest",
|
|
107
|
-
"lint": "tsc --noEmit",
|
|
108
|
-
"yf": "tsx src/bin/yf.ts",
|
|
109
|
-
"catalog:lint": "node scripts/catalog_lint.mjs",
|
|
110
|
-
"pairing:check": "node scripts/check_pairing_sync.mjs",
|
|
111
|
-
"brain-matrix:gate": "node scripts/brain_matrix_gate.mjs",
|
|
112
|
-
"hito4:lint": "node scripts/hito4_lint_bundle.mjs",
|
|
113
|
-
"publish-alpha-emergency": "node scripts/publish_alpha_emergency.mjs"
|
|
114
116
|
}
|
|
115
|
-
}
|
|
117
|
+
}
|
|
@@ -135,6 +135,9 @@
|
|
|
135
135
|
"error.mobile_turn_undelivered.why": "خادم المحادثة في سطح المكتب لم يكن يستمع على المنفذ {port}. لم يُنفَّذ أي شيء هنا.",
|
|
136
136
|
"error.mobile_turn_undelivered.fix": "افتح لوحة Forge على سطح المكتب (أو شغّلها بـ yf chat) ثم أعد إرسال الطلب.",
|
|
137
137
|
"error.mobile_turn_undelivered.cmd": "yf chat",
|
|
138
|
+
"error.verb_call_unanswered.what": "لم يُرجع استدعاء {verb} أي استجابة خلال {minutes} دقيقة.",
|
|
139
|
+
"error.verb_call_unanswered.why": "ما انتهت مدته هو الانتظار لا العمل: قد يستمر هذا الفعل في العمل على جانب Forge وينتهي بنجاح.",
|
|
140
|
+
"error.verb_call_unanswered.fix": "لا تُعد المحاولة بشكل أعمى. إذا كان الفعل يترك أثرًا فاقرأ الأثر أولًا: yujin.evidence.list للإيصال، وyujin.task.list للمهمة الخلفية.",
|
|
138
141
|
"panel.button.agents": "الوكلاء",
|
|
139
142
|
"panel.agents.title": "الوكلاء",
|
|
140
143
|
"panel.agents.subtitle": "المدير والوكلاء الفرعيون المسجلون في هذا المشروع",
|
|
@@ -135,6 +135,9 @@
|
|
|
135
135
|
"error.mobile_turn_undelivered.why": "Der Chat-Server des Desktops lauschte nicht auf Port {port}. Hier wurde nichts ausgefuehrt.",
|
|
136
136
|
"error.mobile_turn_undelivered.fix": "Oeffne das Forge-Panel auf dem Desktop (oder starte es mit yf chat) und sende die Anfrage erneut.",
|
|
137
137
|
"error.mobile_turn_undelivered.cmd": "yf chat",
|
|
138
|
+
"error.verb_call_unanswered.what": "Der Aufruf von {verb} hat in {minutes} Minuten keine Antwort geliefert.",
|
|
139
|
+
"error.verb_call_unanswered.why": "Abgelaufen ist das Warten, nicht die Arbeit: das Verb kann auf der Forge-Seite weiterlaufen und korrekt enden.",
|
|
140
|
+
"error.verb_call_unanswered.fix": "Nicht blind wiederholen. Wenn das Verb eine Spur hinterlasst, lies zuerst die Spur: yujin.evidence.list fuer einen Beleg, yujin.task.list fuer einen Hintergrundauftrag.",
|
|
138
141
|
"panel.button.agents": "Agenten",
|
|
139
142
|
"panel.agents.title": "Agenten",
|
|
140
143
|
"panel.agents.subtitle": "Director und Sub-Agenten registriert in diesem Projekt",
|
|
@@ -135,6 +135,9 @@
|
|
|
135
135
|
"error.mobile_turn_undelivered.why": "The desktop chat server was not listening on port {port}. Nothing ran here.",
|
|
136
136
|
"error.mobile_turn_undelivered.fix": "Open the Forge panel on the desktop (or start it with yf chat) and send the request again.",
|
|
137
137
|
"error.mobile_turn_undelivered.cmd": "yf chat",
|
|
138
|
+
"error.verb_call_unanswered.what": "The call to {verb} returned no response within {minutes} minutes.",
|
|
139
|
+
"error.verb_call_unanswered.why": "What expired is the wait, not the work: the verb may still be running on the Forge side and finish fine.",
|
|
140
|
+
"error.verb_call_unanswered.fix": "Do not blindly retry. If the verb leaves a trace, read the trace first: yujin.evidence.list for a receipt, yujin.task.list for a background task.",
|
|
138
141
|
"panel.button.agents": "Agents",
|
|
139
142
|
"panel.agents.title": "Agents",
|
|
140
143
|
"panel.agents.subtitle": "Director and sub-agents registered in this project",
|
|
@@ -135,6 +135,9 @@
|
|
|
135
135
|
"error.mobile_turn_undelivered.why": "El servidor de chat del escritorio no estaba escuchando en el puerto {port}. Aca no se ejecuto nada.",
|
|
136
136
|
"error.mobile_turn_undelivered.fix": "Abri el panel de Forge en el escritorio (o arrancalo con yf chat) y volve a mandar el pedido.",
|
|
137
137
|
"error.mobile_turn_undelivered.cmd": "yf chat",
|
|
138
|
+
"error.verb_call_unanswered.what": "La invocacion de {verb} no devolvio respuesta en {minutes} minutos.",
|
|
139
|
+
"error.verb_call_unanswered.why": "Lo que vencio es la espera, no el trabajo: el verbo puede seguir corriendo del lado de Forge y terminar bien.",
|
|
140
|
+
"error.verb_call_unanswered.fix": "No lo repitas a ciegas. Si el verbo deja rastro, mira el rastro primero: yujin.evidence.list para un recibo, yujin.task.list para una tarea de fondo.",
|
|
138
141
|
"panel.button.agents": "Agentes",
|
|
139
142
|
"panel.agents.title": "Agentes",
|
|
140
143
|
"panel.agents.subtitle": "Director + sub-agentes registrados en este proyecto",
|
|
@@ -135,6 +135,9 @@
|
|
|
135
135
|
"error.mobile_turn_undelivered.why": "Le serveur de chat du bureau n'ecoutait pas sur le port {port}. Rien n'a ete execute ici.",
|
|
136
136
|
"error.mobile_turn_undelivered.fix": "Ouvre le panneau Forge sur le bureau (ou lance-le avec yf chat) puis renvoie la demande.",
|
|
137
137
|
"error.mobile_turn_undelivered.cmd": "yf chat",
|
|
138
|
+
"error.verb_call_unanswered.what": "L'appel de {verb} n'a pas renvoye de reponse en {minutes} minutes.",
|
|
139
|
+
"error.verb_call_unanswered.why": "Ce qui a expire, c'est l'attente, pas le travail : le verbe peut continuer a tourner cote Forge et se terminer correctement.",
|
|
140
|
+
"error.verb_call_unanswered.fix": "Ne relancez pas a l'aveugle. Si le verbe laisse une trace, lisez-la d'abord : yujin.evidence.list pour un recu, yujin.task.list pour une tache de fond.",
|
|
138
141
|
"panel.button.agents": "Agents",
|
|
139
142
|
"panel.agents.title": "Agents",
|
|
140
143
|
"panel.agents.subtitle": "Director et sous-agents enregistres dans ce projet",
|
|
@@ -135,6 +135,9 @@
|
|
|
135
135
|
"error.mobile_turn_undelivered.why": "डेस्कटॉप का चैट सर्वर पोर्ट {port} पर सुन नहीं रहा था। यहां कुछ भी नहीं चला।",
|
|
136
136
|
"error.mobile_turn_undelivered.fix": "डेस्कटॉप पर Forge पैनल खोलें (या yf chat से शुरू करें) और अनुरोध दोबारा भेजें।",
|
|
137
137
|
"error.mobile_turn_undelivered.cmd": "yf chat",
|
|
138
|
+
"error.verb_call_unanswered.what": "{verb} की कॉल ने {minutes} मिनट में कोई उत्तर नहीं लौटाया।",
|
|
139
|
+
"error.verb_call_unanswered.why": "समय-सीमा प्रतीक्षा की समाप्त हुई, काम की नहीं: यह वर्ब Forge की ओर चलता रह सकता है और ठीक से पूरा हो सकता है।",
|
|
140
|
+
"error.verb_call_unanswered.fix": "आंख मूंदकर दोबारा न चलाएं। यदि वर्ब कोई निशान छोड़ता है, तो पहले निशान देखें: रसीद के लिए yujin.evidence.list, बैकग्राउंड कार्य के लिए yujin.task.list।",
|
|
138
141
|
"panel.button.agents": "एजेंट",
|
|
139
142
|
"panel.agents.title": "एजेंट",
|
|
140
143
|
"panel.agents.subtitle": "इस परियोजना में पंजीकृत निदेशक और उप-एजेंट",
|
|
@@ -135,6 +135,9 @@
|
|
|
135
135
|
"error.mobile_turn_undelivered.why": "Il server di chat del desktop non era in ascolto sulla porta {port}. Qui non e stato eseguito nulla.",
|
|
136
136
|
"error.mobile_turn_undelivered.fix": "Apri il pannello Forge sul desktop (o avvialo con yf chat) e rimanda la richiesta.",
|
|
137
137
|
"error.mobile_turn_undelivered.cmd": "yf chat",
|
|
138
|
+
"error.verb_call_unanswered.what": "La chiamata di {verb} non ha restituito risposta in {minutes} minuti.",
|
|
139
|
+
"error.verb_call_unanswered.why": "Cio che e scaduto e l'attesa, non il lavoro: il verbo puo continuare a girare dal lato Forge e finire bene.",
|
|
140
|
+
"error.verb_call_unanswered.fix": "Non ripetere alla cieca. Se il verbo lascia una traccia, guarda prima la traccia: yujin.evidence.list per una ricevuta, yujin.task.list per un'attivita in background.",
|
|
138
141
|
"panel.button.agents": "Agenti",
|
|
139
142
|
"panel.agents.title": "Agenti",
|
|
140
143
|
"panel.agents.subtitle": "Director e sub-agenti registrati in questo progetto",
|
|
@@ -135,6 +135,9 @@
|
|
|
135
135
|
"error.mobile_turn_undelivered.why": "デスクトップのチャットサーバーがポート {port} で待ち受けていませんでした。ここでは何も実行されていません。",
|
|
136
136
|
"error.mobile_turn_undelivered.fix": "デスクトップで Forge パネルを開き (または yf chat で起動し)、もう一度リクエストを送ってください。",
|
|
137
137
|
"error.mobile_turn_undelivered.cmd": "yf chat",
|
|
138
|
+
"error.verb_call_unanswered.what": "{verb} の呼び出しは {minutes} 分以内に応答を返しませんでした。",
|
|
139
|
+
"error.verb_call_unanswered.why": "期限切れになったのは待機であって、作業ではありません。この動詞は Forge 側で動き続け、正常に終わる可能性があります。",
|
|
140
|
+
"error.verb_call_unanswered.fix": "やみくもに再実行しないでください。痕跡が残る動詞なら、まず痕跡を見てください: レシートは yujin.evidence.list、バックグラウンド処理は yujin.task.list。",
|
|
138
141
|
"panel.button.agents": "エージェント",
|
|
139
142
|
"panel.agents.title": "エージェント",
|
|
140
143
|
"panel.agents.subtitle": "このプロジェクトに登録されたディレクターとサブエージェント",
|