@nac3/forge-cli 1.23.2 → 1.23.3

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.
@@ -57,6 +57,13 @@ export declare const E_VAULT_DECRYPT_FAILED = "E_VAULT_DECRYPT_FAILED";
57
57
  export declare const E_SHELL_EXEC_REJECTED = "E_SHELL_EXEC_REJECTED";
58
58
  /** No active project registered + the verb requires a project root. */
59
59
  export declare const E_PROJECT_NOT_REGISTERED = "E_PROJECT_NOT_REGISTERED";
60
+ /** El escritorio no devolvio la respuesta dentro del presupuesto. El turno
61
+ * puede seguir vivo: el trabajo probablemente se este haciendo o ya este
62
+ * hecho, y el resultado aparece en el chat del escritorio. */
63
+ export declare const E_MOBILE_TURN_UNANSWERED = "E_MOBILE_TURN_UNANSWERED";
64
+ /** El pedido no llego a entrar al escritorio (su servidor de chat no estaba
65
+ * escuchando). Aca no se hizo NADA, y hay que reintentar. */
66
+ export declare const E_MOBILE_TURN_UNDELIVERED = "E_MOBILE_TURN_UNDELIVERED";
60
67
  /** Build a ForgeError from a code + context.
61
68
  *
62
69
  * @param code Stable error code (E_*).
@@ -70,6 +77,26 @@ export declare function renderForgeError(code: string, context?: Record<string,
70
77
  export declare function listErrorCodes(): string[];
71
78
  /** Type guard. */
72
79
  export declare function isForgeError(x: unknown): x is ForgeError;
80
+ /**
81
+ * Un Error de JavaScript que LLEVA su ForgeError adentro.
82
+ *
83
+ * Existe porque los dos mundos no se tocaban: el catalogo produce objetos y
84
+ * el codigo que falla lanza excepciones, asi que todo `catch` terminaba
85
+ * reducido a `e.message` -- una linea sin codigo, sin causa y sin que hacer.
86
+ * De ahi salia el "fetch failed" que vio el usuario. Un `catch` que recibe
87
+ * esto puede recuperar el error del catalogo entero con `forgeErrorOf`.
88
+ *
89
+ * El `message` se arma con el `what` para que un `catch` que NO sepa de esto
90
+ * siga mostrando algo legible, nunca un texto de libreria.
91
+ */
92
+ export declare class ForgeFailure extends Error {
93
+ readonly forge: ForgeError;
94
+ constructor(forge: ForgeError, cause?: unknown);
95
+ }
96
+ /** El ForgeError que lleva una excepcion, o null si no lleva ninguno. Es lo
97
+ * que deja a un `catch` generico elegir el mensaje accionable cuando existe
98
+ * y su texto de siempre cuando no. */
99
+ export declare function forgeErrorOf(e: unknown): ForgeError | null;
73
100
  /** Get the catalog entry metadata for a code (severity, docs path, etc).
74
101
  * Returns null if the code is unknown. */
75
102
  export declare function getCatalogEntry(code: string): {
@@ -1 +1 @@
1
- {"version":3,"file":"error_catalog.d.ts","sourceRoot":"","sources":["../../src/core/error_catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAY,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAEpE,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;AAExE,MAAM,WAAW,UAAU;IACzB,kEAAkE;IAClE,IAAI,EAAE,MAAM,CAAC;IACb,0DAA0D;IAC1D,IAAI,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,GAAG,EAAE,MAAM,CAAC;IACZ,0EAA0E;IAC1E,GAAG,EAAE,MAAM,CAAC;IACZ,qCAAqC;IACrC,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,qEAAqE;IACrE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,qFAAqF;IACrF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mEAAmE;IACnE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iFAAiF;IACjF,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;CACrD;AAMD,oEAAoE;AACpE,eAAO,MAAM,wBAAwB,6BAA6B,CAAC;AACnE,+DAA+D;AAC/D,eAAO,MAAM,mBAAmB,wBAAwB,CAAC;AACzD,sDAAsD;AACtD,eAAO,MAAM,kBAAkB,uBAAuB,CAAC;AACvD,4EAA4E;AAC5E,eAAO,MAAM,oBAAoB,yBAAyB,CAAC;AAC3D,iEAAiE;AACjE,eAAO,MAAM,mBAAmB,wBAAwB,CAAC;AACzD,oDAAoD;AACpD,eAAO,MAAM,kBAAkB,uBAAuB,CAAC;AACvD,iEAAiE;AACjE,eAAO,MAAM,oBAAoB,yBAAyB,CAAC;AAC3D,qEAAqE;AACrE,eAAO,MAAM,sBAAsB,2BAA2B,CAAC;AAC/D,yEAAyE;AACzE,eAAO,MAAM,qBAAqB,0BAA0B,CAAC;AAC7D,uEAAuE;AACvE,eAAO,MAAM,wBAAwB,6BAA6B,CAAC;AA2EnE;;;;;;;4DAO4D;AAC5D,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAM,EACvD,IAAI,CAAC,EAAE,iBAAiB,GACvB,UAAU,CA4BZ;AAcD,wEAAwE;AACxE,wBAAgB,cAAc,IAAI,MAAM,EAAE,CAEzC;AAED,kBAAkB;AAClB,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,UAAU,CAOxD;AAED;2CAC2C;AAC3C,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,kBAAkB,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CAI1H"}
1
+ {"version":3,"file":"error_catalog.d.ts","sourceRoot":"","sources":["../../src/core/error_catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAY,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAEpE,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;AAExE,MAAM,WAAW,UAAU;IACzB,kEAAkE;IAClE,IAAI,EAAE,MAAM,CAAC;IACb,0DAA0D;IAC1D,IAAI,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,GAAG,EAAE,MAAM,CAAC;IACZ,0EAA0E;IAC1E,GAAG,EAAE,MAAM,CAAC;IACZ,qCAAqC;IACrC,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,qEAAqE;IACrE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,qFAAqF;IACrF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mEAAmE;IACnE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iFAAiF;IACjF,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;CACrD;AAMD,oEAAoE;AACpE,eAAO,MAAM,wBAAwB,6BAA6B,CAAC;AACnE,+DAA+D;AAC/D,eAAO,MAAM,mBAAmB,wBAAwB,CAAC;AACzD,sDAAsD;AACtD,eAAO,MAAM,kBAAkB,uBAAuB,CAAC;AACvD,4EAA4E;AAC5E,eAAO,MAAM,oBAAoB,yBAAyB,CAAC;AAC3D,iEAAiE;AACjE,eAAO,MAAM,mBAAmB,wBAAwB,CAAC;AACzD,oDAAoD;AACpD,eAAO,MAAM,kBAAkB,uBAAuB,CAAC;AACvD,iEAAiE;AACjE,eAAO,MAAM,oBAAoB,yBAAyB,CAAC;AAC3D,qEAAqE;AACrE,eAAO,MAAM,sBAAsB,2BAA2B,CAAC;AAC/D,yEAAyE;AACzE,eAAO,MAAM,qBAAqB,0BAA0B,CAAC;AAC7D,uEAAuE;AACvE,eAAO,MAAM,wBAAwB,6BAA6B,CAAC;AAKnE;;+DAE+D;AAC/D,eAAO,MAAM,wBAAwB,6BAA6B,CAAC;AACnE;8DAC8D;AAC9D,eAAO,MAAM,yBAAyB,8BAA8B,CAAC;AAwFrE;;;;;;;4DAO4D;AAC5D,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAM,EACvD,IAAI,CAAC,EAAE,iBAAiB,GACvB,UAAU,CA4BZ;AAcD,wEAAwE;AACxE,wBAAgB,cAAc,IAAI,MAAM,EAAE,CAEzC;AAED,kBAAkB;AAClB,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,UAAU,CAOxD;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,YAAa,SAAQ,KAAK;IACrC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;gBACf,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,OAAO;CAM/C;AAED;;uCAEuC;AACvC,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,IAAI,CAI1D;AAED;2CAC2C;AAC3C,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,kBAAkB,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CAI1H"}
@@ -39,6 +39,17 @@ export const E_VAULT_DECRYPT_FAILED = 'E_VAULT_DECRYPT_FAILED';
39
39
  export const E_SHELL_EXEC_REJECTED = 'E_SHELL_EXEC_REJECTED';
40
40
  /** No active project registered + the verb requires a project root. */
41
41
  export const E_PROJECT_NOT_REGISTERED = 'E_PROJECT_NOT_REGISTERED';
42
+ /* Un turno que PIDIO el telefono. Los dos casos se separan a proposito
43
+ * porque el consejo es OPUESTO: uno de los dos significa que el trabajo
44
+ * probablemente SI se hizo, y decirle al usuario que no se hizo es mentirle
45
+ * sobre el resultado. Ver src/relay/loopback_turn.ts. */
46
+ /** El escritorio no devolvio la respuesta dentro del presupuesto. El turno
47
+ * puede seguir vivo: el trabajo probablemente se este haciendo o ya este
48
+ * hecho, y el resultado aparece en el chat del escritorio. */
49
+ export const E_MOBILE_TURN_UNANSWERED = 'E_MOBILE_TURN_UNANSWERED';
50
+ /** El pedido no llego a entrar al escritorio (su servidor de chat no estaba
51
+ * escuchando). Aca no se hizo NADA, y hay que reintentar. */
52
+ export const E_MOBILE_TURN_UNDELIVERED = 'E_MOBILE_TURN_UNDELIVERED';
42
53
  const CATALOG = {
43
54
  [E_CAP_FRONTIER_EXHAUSTED]: {
44
55
  key_prefix: 'error.cap_frontier_exhausted',
@@ -90,6 +101,19 @@ const CATALOG = {
90
101
  has_cmd: true, severity: 'error',
91
102
  docs_path: 'docs/errors/E_PROJECT_NOT_REGISTERED.html',
92
103
  },
104
+ /* severity 'warning' y no 'error': el pedido no fracaso, lo que fracaso es
105
+ * la espera. Pintarlo como error haria que el usuario descarte un trabajo
106
+ * que probablemente este hecho. */
107
+ [E_MOBILE_TURN_UNANSWERED]: {
108
+ key_prefix: 'error.mobile_turn_unanswered',
109
+ has_cmd: false, severity: 'warning',
110
+ docs_path: 'docs/errors/E_MOBILE_TURN_UNANSWERED.html',
111
+ },
112
+ [E_MOBILE_TURN_UNDELIVERED]: {
113
+ key_prefix: 'error.mobile_turn_undelivered',
114
+ has_cmd: true, severity: 'error',
115
+ docs_path: 'docs/errors/E_MOBILE_TURN_UNDELIVERED.html',
116
+ },
93
117
  };
94
118
  /* ===================================================================
95
119
  * Public API
@@ -157,6 +181,37 @@ export function isForgeError(x) {
157
181
  && typeof e.why === 'string'
158
182
  && typeof e.fix === 'string';
159
183
  }
184
+ /**
185
+ * Un Error de JavaScript que LLEVA su ForgeError adentro.
186
+ *
187
+ * Existe porque los dos mundos no se tocaban: el catalogo produce objetos y
188
+ * el codigo que falla lanza excepciones, asi que todo `catch` terminaba
189
+ * reducido a `e.message` -- una linea sin codigo, sin causa y sin que hacer.
190
+ * De ahi salia el "fetch failed" que vio el usuario. Un `catch` que recibe
191
+ * esto puede recuperar el error del catalogo entero con `forgeErrorOf`.
192
+ *
193
+ * El `message` se arma con el `what` para que un `catch` que NO sepa de esto
194
+ * siga mostrando algo legible, nunca un texto de libreria.
195
+ */
196
+ export class ForgeFailure extends Error {
197
+ forge;
198
+ constructor(forge, cause) {
199
+ super(forge.what);
200
+ this.name = 'ForgeFailure';
201
+ this.forge = forge;
202
+ if (cause !== undefined)
203
+ this.cause = cause;
204
+ }
205
+ }
206
+ /** El ForgeError que lleva una excepcion, o null si no lleva ninguno. Es lo
207
+ * que deja a un `catch` generico elegir el mensaje accionable cuando existe
208
+ * y su texto de siempre cuando no. */
209
+ export function forgeErrorOf(e) {
210
+ if (e instanceof ForgeFailure)
211
+ return e.forge;
212
+ const f = e?.forge;
213
+ return isForgeError(f) ? f : null;
214
+ }
160
215
  /** Get the catalog entry metadata for a code (severity, docs path, etc).
161
216
  * Returns null if the code is unknown. */
162
217
  export function getCatalogEntry(code) {
@@ -1 +1 @@
1
- {"version":3,"file":"error_catalog.js","sourceRoot":"","sources":["../../src/core/error_catalog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"error_catalog.js","sourceRoot":"","sources":["../../src/core/error_catalog.ts"],"names":[],"mappings":"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"}
@@ -16,6 +16,18 @@ import { type SupportedLanguage } from '../i18n/index.js';
16
16
  * @param err The error.
17
17
  * @param lang Optional UI language for the labels. Default 'es'. */
18
18
  export declare function formatForgeErrorCli(err: ForgeError, lang?: SupportedLanguage): string;
19
+ /**
20
+ * Format a ForgeError as PLAIN text, for a surface that renders neither
21
+ * ANSI nor HTML -- today that is the chat reply the phone receives over the
22
+ * relay (src/relay/command_consumer.ts).
23
+ *
24
+ * No colours, no rules, no severity banner: a phone bubble is narrow and a
25
+ * row of dashes costs a whole line. What survives is the only part that is
26
+ * load-bearing -- what happened, why, and what to do -- with the labels
27
+ * coming from the same i18n keys the other two renderers use, so a new
28
+ * language lands on all three at once.
29
+ */
30
+ export declare function formatForgeErrorText(err: ForgeError, lang?: SupportedLanguage): string;
19
31
  /** Format a ForgeError as safe HTML for the chat panel. The panel
20
32
  * is expected to have CSS for .forge-err / .forge-err--{severity}
21
33
  * / .forge-err__copy-btn etc; this returns ONLY the markup.
@@ -1 +1 @@
1
- {"version":3,"file":"error_formatter.d.ts","sourceRoot":"","sources":["../../src/core/error_formatter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAsB,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAY,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AA+BpE;;sEAEsE;AACtE,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,GAAE,iBAAwB,GAAG,MAAM,CA4B3F;AAwBD;;;;sEAIsE;AACtE,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,GAAE,iBAAwB,GAAG,MAAM,CA4B5F;AAMD,yDAAyD;AACzD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAa7E;AAMD;6DAC6D;AAC7D,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM,CAG5D"}
1
+ {"version":3,"file":"error_formatter.d.ts","sourceRoot":"","sources":["../../src/core/error_formatter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAsB,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAY,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AA+BpE;;sEAEsE;AACtE,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,GAAE,iBAAwB,GAAG,MAAM,CA4B3F;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,GAAE,iBAAwB,GAAG,MAAM,CAM5F;AAwBD;;;;sEAIsE;AACtE,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,GAAE,iBAAwB,GAAG,MAAM,CA4B5F;AAMD,yDAAyD;AACzD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAa7E;AAMD;6DAC6D;AAC7D,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM,CAG5D"}
@@ -68,6 +68,25 @@ export function formatForgeErrorCli(err, lang = 'es') {
68
68
  parts.push('');
69
69
  return parts.join('\n');
70
70
  }
71
+ /**
72
+ * Format a ForgeError as PLAIN text, for a surface that renders neither
73
+ * ANSI nor HTML -- today that is the chat reply the phone receives over the
74
+ * relay (src/relay/command_consumer.ts).
75
+ *
76
+ * No colours, no rules, no severity banner: a phone bubble is narrow and a
77
+ * row of dashes costs a whole line. What survives is the only part that is
78
+ * load-bearing -- what happened, why, and what to do -- with the labels
79
+ * coming from the same i18n keys the other two renderers use, so a new
80
+ * language lands on all three at once.
81
+ */
82
+ export function formatForgeErrorText(err, lang = 'es') {
83
+ const parts = [err.what];
84
+ parts.push(tForLang(lang, 'error_ui.label.why') + ': ' + err.why);
85
+ parts.push(tForLang(lang, 'error_ui.label.fix') + ': ' + err.fix);
86
+ if (err.cmd)
87
+ parts.push(tForLang(lang, 'error_ui.label.cmd') + ': ' + err.cmd);
88
+ return parts.join('\n');
89
+ }
71
90
  /* ===================================================================
72
91
  * HTML formatter (chat panel, safe)
73
92
  * ================================================================ */
@@ -1 +1 @@
1
- {"version":3,"file":"error_formatter.js","sourceRoot":"","sources":["../../src/core/error_formatter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"error_formatter.js","sourceRoot":"","sources":["../../src/core/error_formatter.ts"],"names":[],"mappings":"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"}
@@ -63,6 +63,16 @@ export interface CommandConsumerDeps {
63
63
  * resolve the reply text. `projectSlug` binds the turn to the project the
64
64
  * phone composed it against (Pablo 2026-06-23). */
65
65
  runTurn: (text: string, sessionId?: string, projectSlug?: string) => Promise<string>;
66
+ /** Como contar al usuario un turno que fallo. Devuelve el texto accionable
67
+ * cuando el error trae uno (un ForgeError del catalogo: que paso, por que
68
+ * y que hacer) y null cuando no, para que el loop caiga a su texto de
69
+ * siempre.
70
+ *
71
+ * Se INYECTA en vez de importar el catalogo aca porque este modulo no toca
72
+ * el disco a proposito -- es lo que deja probar el loop entero sin red y
73
+ * sin servidor -- y el catalogo de i18n lee sus diez archivos al cargarse.
74
+ * El que lo arma es el servidor, que ya los tiene cargados. */
75
+ describeError?: (e: unknown) => string | null;
66
76
  /** Handle a control command (switch_project, interrupt, ...) and
67
77
  * resolve a short status string to send back. Optional: when absent,
68
78
  * control commands are reported as unsupported. (tasks #33, #29) */
@@ -1 +1 @@
1
- {"version":3,"file":"command_consumer.d.ts","sourceRoot":"","sources":["../../src/relay/command_consumer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,MAAM,WAAW,eAAe;IAC9B,gEAAgE;IAChE,EAAE,EAAE,MAAM,CAAC;IACX,4DAA4D;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,qCAAqC;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;4DACwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;wEAEoE;IACpE,OAAO,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC;IAC5D;;2EAEuE;IACvE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;4DAGwD;IACxD,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,mBAAmB;IAClC;iEAC6D;IAC7D,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;QACvC,EAAE,EAAE,OAAO,CAAC;QACZ,MAAM,EAAE,KAAK,CAAC;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAAC,EAAE,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC9E,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;IACH;;wDAEoD;IACpD,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACrF;;yEAEqE;IACrE,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/E,oDAAoD;IACpD,KAAK,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAChE;;;;8CAI0C;IAC1C,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,4DAA4D;IAC5D,OAAO,EAAE,MAAM,OAAO,CAAC;IACvB;;;+EAG2E;IAC3E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;+CAI2C;IAC3C,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,OAAO,CAAC;IAC3C,sCAAsC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;2CAKuC;IACvC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,2EAA2E;IAC3E,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,yCAAyC;IACzC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,IAAI,IAAI,CAAC;IACb,uDAAuD;IACvD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAMD,sEAAsE;AACtE,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,eAAe,GAAG,IAAI,CAwBrF;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,mBAAmB,GAAG,qBAAqB,CA4ErF"}
1
+ {"version":3,"file":"command_consumer.d.ts","sourceRoot":"","sources":["../../src/relay/command_consumer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,MAAM,WAAW,eAAe;IAC9B,gEAAgE;IAChE,EAAE,EAAE,MAAM,CAAC;IACX,4DAA4D;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,qCAAqC;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;4DACwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;wEAEoE;IACpE,OAAO,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC;IAC5D;;2EAEuE;IACvE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;4DAGwD;IACxD,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,mBAAmB;IAClC;iEAC6D;IAC7D,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;QACvC,EAAE,EAAE,OAAO,CAAC;QACZ,MAAM,EAAE,KAAK,CAAC;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAAC,EAAE,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC9E,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;IACH;;wDAEoD;IACpD,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACrF;;;;;;;;oEAQgE;IAChE,aAAa,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,MAAM,GAAG,IAAI,CAAC;IAC9C;;yEAEqE;IACrE,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/E,oDAAoD;IACpD,KAAK,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAChE;;;;8CAI0C;IAC1C,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,4DAA4D;IAC5D,OAAO,EAAE,MAAM,OAAO,CAAC;IACvB;;;+EAG2E;IAC3E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;+CAI2C;IAC3C,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,OAAO,CAAC;IAC3C,sCAAsC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;2CAKuC;IACvC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,2EAA2E;IAC3E,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,yCAAyC;IACzC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,IAAI,IAAI,CAAC;IACb,uDAAuD;IACvD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAMD,sEAAsE;AACtE,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,eAAe,GAAG,IAAI,CAwBrF;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,mBAAmB,GAAG,qBAAqB,CAyFrF"}
@@ -112,7 +112,16 @@ export function startCommandConsumer(deps) {
112
112
  }
113
113
  catch (e) {
114
114
  deps.onError?.(e);
115
- deps.reply(cmd.id, 'No pude completar tu pedido: ' + errMsg(e), true);
115
+ /* Un error que llega con su ForgeError adentro se reporta CON lo
116
+ * que trae: que paso, por que y que hacer. Antes todo terminaba
117
+ * reducido a `e.message`, y de ahi salia el "No pude completar tu
118
+ * pedido: fetch failed" que vio el usuario -- un texto de libreria
119
+ * que no dice nada y que ademas MENTIA, porque el caso comun era
120
+ * un turno que si se completo y cuya respuesta el telefono nunca
121
+ * recibio (PND-234). El texto de siempre queda para los errores
122
+ * que todavia no pasan por el catalogo. */
123
+ const descrito = deps.describeError ? deps.describeError(e) : null;
124
+ deps.reply(cmd.id, descrito || ('No pude completar tu pedido: ' + errMsg(e)), true);
116
125
  }
117
126
  }
118
127
  }
@@ -1 +1 @@
1
- {"version":3,"file":"command_consumer.js","sourceRoot":"","sources":["../../src/relay/command_consumer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"command_consumer.js","sourceRoot":"","sources":["../../src/relay/command_consumer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Como el escritorio ejecuta un turno que PIDIO el telefono.
3
+ *
4
+ * El relay no corre nada: deja el pedido en su log y el escritorio lo levanta
5
+ * (command_consumer.ts). Para correrlo, el escritorio hace un POST por
6
+ * loopback a su PROPIO servidor de chat -- el mismo /api/chat que usa el
7
+ * panel -- y espera la respuesta. Esa indireccion es deliberada: un turno que
8
+ * viene del telefono recorre exactamente el mismo camino que uno del panel,
9
+ * sin una segunda implementacion que se desincronice.
10
+ *
11
+ * EL DEFECTO QUE ESTE MODULO CIERRA (PND-234. Pablo, 29-oct-2026, desde el
12
+ * telefono: "No pude completar tu pedido: fetch failed").
13
+ *
14
+ * La respuesta de /api/chat es un JSON, no un stream, asi que sus CABECERAS
15
+ * recien salen cuando el turno entero termino. Con `fetch` sin opciones ese
16
+ * POST hereda el headersTimeout de undici, que es un limite pensado para una
17
+ * llamada corta, y pasado ese punto muere el fetch -- no el turno. El
18
+ * escritorio seguia trabajando y terminaba el trabajo, pero el telefono ya
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.
50
+ *
51
+ * ASCII puro.
52
+ */
53
+ /**
54
+ * Techo de tiempo total para un turno pedido desde el telefono.
55
+ *
56
+ * Una hora. El numero no sale de la nada: el turno que destapo el defecto
57
+ * duro 22 minutos y termino bien, asi que el techo tiene que estar bastante
58
+ * arriba de eso. Y tiene que seguir siendo finito porque el consumidor
59
+ * atiende de a uno: con el escritorio colgado, este es el tiempo que el
60
+ * telefono queda sin poder pedir nada. Una hora deja pasar cualquier turno
61
+ * real y acota el peor caso a algo que el dueno nota en el dia.
62
+ */
63
+ export declare const MOBILE_TURN_BUDGET_MS: number;
64
+ /** El techo efectivo, con el override de operacion. */
65
+ export declare function mobileTurnBudgetMs(env?: NodeJS.ProcessEnv): number;
66
+ export interface LoopbackResponse {
67
+ status: number;
68
+ body: string;
69
+ }
70
+ /**
71
+ * POST al /api/chat local, esperando lo que tarde el turno.
72
+ *
73
+ * Devuelve el status y el cuerpo crudo; parsear es del llamador, que es el
74
+ * que conoce la forma de la respuesta.
75
+ */
76
+ export declare function postChatTurn(args: {
77
+ port: number;
78
+ payload: Record<string, unknown>;
79
+ budgetMs?: number;
80
+ path?: string;
81
+ }): Promise<LoopbackResponse>;
82
+ //# sourceMappingURL=loopback_turn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loopback_turn.d.ts","sourceRoot":"","sources":["../../src/relay/loopback_turn.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AAQH;;;;;;;;;GASG;AACH,eAAO,MAAM,qBAAqB,QAAc,CAAC;AAEjD,uDAAuD;AACvD,wBAAgB,kBAAkB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAU/E;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA6E5B"}
@@ -0,0 +1,171 @@
1
+ /**
2
+ * Como el escritorio ejecuta un turno que PIDIO el telefono.
3
+ *
4
+ * El relay no corre nada: deja el pedido en su log y el escritorio lo levanta
5
+ * (command_consumer.ts). Para correrlo, el escritorio hace un POST por
6
+ * loopback a su PROPIO servidor de chat -- el mismo /api/chat que usa el
7
+ * panel -- y espera la respuesta. Esa indireccion es deliberada: un turno que
8
+ * viene del telefono recorre exactamente el mismo camino que uno del panel,
9
+ * sin una segunda implementacion que se desincronice.
10
+ *
11
+ * EL DEFECTO QUE ESTE MODULO CIERRA (PND-234. Pablo, 29-oct-2026, desde el
12
+ * telefono: "No pude completar tu pedido: fetch failed").
13
+ *
14
+ * La respuesta de /api/chat es un JSON, no un stream, asi que sus CABECERAS
15
+ * recien salen cuando el turno entero termino. Con `fetch` sin opciones ese
16
+ * POST hereda el headersTimeout de undici, que es un limite pensado para una
17
+ * llamada corta, y pasado ese punto muere el fetch -- no el turno. El
18
+ * escritorio seguia trabajando y terminaba el trabajo, pero el telefono ya
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.
50
+ *
51
+ * ASCII puro.
52
+ */
53
+ import http from 'node:http';
54
+ import { renderForgeError, ForgeFailure } from '../core/error_catalog.js';
55
+ import { E_MOBILE_TURN_UNANSWERED, E_MOBILE_TURN_UNDELIVERED, } from '../core/error_catalog.js';
56
+ /**
57
+ * Techo de tiempo total para un turno pedido desde el telefono.
58
+ *
59
+ * Una hora. El numero no sale de la nada: el turno que destapo el defecto
60
+ * duro 22 minutos y termino bien, asi que el techo tiene que estar bastante
61
+ * arriba de eso. Y tiene que seguir siendo finito porque el consumidor
62
+ * atiende de a uno: con el escritorio colgado, este es el tiempo que el
63
+ * telefono queda sin poder pedir nada. Una hora deja pasar cualquier turno
64
+ * real y acota el peor caso a algo que el dueno nota en el dia.
65
+ */
66
+ export const MOBILE_TURN_BUDGET_MS = 60 * 60_000;
67
+ /** El techo efectivo, con el override de operacion. */
68
+ export function mobileTurnBudgetMs(env = process.env) {
69
+ const raw = env['YF_MOBILE_TURN_BUDGET_MS'];
70
+ if (raw === undefined || raw === '')
71
+ return MOBILE_TURN_BUDGET_MS;
72
+ const n = Number(raw);
73
+ /* Un valor invalido o no positivo NO apaga la guarda ni la pone en cero:
74
+ * cae al default. Un "0" en una variable de entorno es casi siempre un
75
+ * descuido, y leerlo como "sin limite" convertiria un typo en un
76
+ * consumidor trabado para siempre. */
77
+ if (!Number.isFinite(n) || n <= 0)
78
+ return MOBILE_TURN_BUDGET_MS;
79
+ return n;
80
+ }
81
+ /**
82
+ * POST al /api/chat local, esperando lo que tarde el turno.
83
+ *
84
+ * Devuelve el status y el cuerpo crudo; parsear es del llamador, que es el
85
+ * que conoce la forma de la respuesta.
86
+ */
87
+ export async function postChatTurn(args) {
88
+ const budget = args.budgetMs ?? mobileTurnBudgetMs();
89
+ const body = Buffer.from(JSON.stringify(args.payload), 'utf8');
90
+ const minutes = Math.max(1, Math.round(budget / 60_000));
91
+ return new Promise((resolve, reject) => {
92
+ let settled = false;
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',
101
+ port: args.port,
102
+ path: args.path ?? '/api/chat',
103
+ method: 'POST',
104
+ headers: {
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));
124
+ });
125
+ const timer = setTimeout(() => {
126
+ vencido = true;
127
+ req.destroy(new Error('presupuesto de turno vencido'));
128
+ }, budget);
129
+ /* Que este temporizador no sea lo que mantiene vivo al proceso. */
130
+ if (typeof timer.unref === 'function') {
131
+ timer.unref();
132
+ }
133
+ const fail = (cause, yaCorrio) => {
134
+ if (settled)
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';
170
+ }
171
+ //# sourceMappingURL=loopback_turn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loopback_turn.js","sourceRoot":"","sources":["../../src/relay/loopback_turn.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.2";
5
+ export declare const VERSION = "1.23.3";
6
6
  //# sourceMappingURL=version.d.ts.map
package/dist/version.js 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 const VERSION = '1.23.2';
5
+ export const VERSION = '1.23.3';
6
6
  //# sourceMappingURL=version.js.map