@runnerpro/backend 1.28.0 → 1.30.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.
@@ -200,11 +200,25 @@ function notifyCotFailure(modelLabel, rawText) {
200
200
  * });
201
201
  * ```
202
202
  */
203
+ /**
204
+ * Defaults de providerOptions para los modelos de Azure. Los GPT-5.5/5.6 y DeepSeek validan el
205
+ * json_schema en modo ESTRICTO por defecto y rechazan los esquemas históricos (campos opcionales
206
+ * fuera de `required`, oneOf, etc.), con lo que la llamada falla en TODA la cadena Azure y acaba
207
+ * en Gemini. strictJsonSchema=false restaura la validación laxa que aplicaba gpt-5.4-mini; zod
208
+ * sigue validando la salida en cliente y el retry/fallback cubre las desviaciones.
209
+ * La clave es 'openai' porque el modelo responses de @ai-sdk/azure comparte el parser de OpenAI
210
+ * ('azure' se añade por si el SDK cambia de clave); los providers de Google las ignoran.
211
+ * Lo que el caller pase explícitamente siempre gana.
212
+ */
213
+ function withLaxSchemaDefaults(options) {
214
+ const po = options.providerOptions;
215
+ return Object.assign(Object.assign({}, options), { providerOptions: Object.assign(Object.assign({}, po), { openai: Object.assign({ strictJsonSchema: false }, po === null || po === void 0 ? void 0 : po.openai), azure: Object.assign({ strictJsonSchema: false }, po === null || po === void 0 ? void 0 : po.azure) }) });
216
+ }
203
217
  function generateObject(options) {
204
218
  var _a;
205
219
  return __awaiter(this, void 0, void 0, function* () {
206
220
  let lastError;
207
- let currentOptions = options;
221
+ let currentOptions = withLaxSchemaDefaults(options);
208
222
  // [llm-cache] cache-aside: HIT → output guardado sin llamar al modelo (opt-out con options.cache === false)
209
223
  const co = currentOptions;
210
224
  const useCache = co.cache !== false;
@@ -376,7 +390,7 @@ function generateText(options) {
376
390
  var _a;
377
391
  return __awaiter(this, void 0, void 0, function* () {
378
392
  let lastError;
379
- let currentOptions = options;
393
+ let currentOptions = withLaxSchemaDefaults(options);
380
394
  const fallbackNames = ((_a = currentOptions.model) === null || _a === void 0 ? void 0 : _a._fallbackModelNames) || [];
381
395
  const maxAttempts = (1 + fallbackNames.length) * (1 + MIN_RETRIES);
382
396
  let transientRetries = 0;
@@ -78,16 +78,20 @@ const AZURE_PRIMARY_MODELS = {
78
78
  };
79
79
  exports.AZURE_PRIMARY_MODELS = AZURE_PRIMARY_MODELS;
80
80
  // Fallbacks Azure por tier (en orden): se anteponen a la cascada Gemini en createGoogleModel,
81
- // para agotar el proveedor primario antes de cambiar de nube. Los DeepSeek cierran el tramo
82
- // Azure como familia independiente: si Azure-OpenAI cae entero, se sigue quemando crédito
83
- // Azure antes de pagar Gemini. Parrilla de David (4-ago-2026):
84
- // PRO terra5.5 → Gemini
85
- // FLASH → terra → luna → DeepSeek-V4-Pro → Gemini
86
- // LITE → luna mini nano DeepSeek-V4-Flash Gemini
81
+ // para agotar el proveedor primario antes de cambiar de nube.
82
+ // PRO → 5.5 Gemini
83
+ // FLASH luna Gemini
84
+ // LITE mininano → Gemini
85
+ //
86
+ // ⚠️ Los DeepSeek NO entran aquí pese a estar desplegados: no sirven para generateObject.
87
+ // Con strictJsonSchema=true rechazan los esquemas del proyecto (piden additionalProperties y
88
+ // required completo) y con false ignoran el json_schema y contestan en prosa, que el SDK no
89
+ // puede parsear («No object generated»). Verificado el 5-ago-2026 contra el esquema real del
90
+ // agente entrenador. Siguen exportados por si se usan en generateText, donde sí responden bien.
87
91
  const AZURE_FALLBACK_MODELS = {
88
92
  PRO: [AZURE_GPT_5_5],
89
- FLASH: [AZURE_GPT_5_6_LUNA, AZURE_DEEPSEEK_V4_PRO],
90
- LITE: [AZURE_GPT_5_4_MINI, AZURE_GPT_5_4_NANO, AZURE_DEEPSEEK_V4_FLASH],
93
+ FLASH: [AZURE_GPT_5_6_LUNA],
94
+ LITE: [AZURE_GPT_5_4_MINI, AZURE_GPT_5_4_NANO],
91
95
  };
92
96
  exports.AZURE_FALLBACK_MODELS = AZURE_FALLBACK_MODELS;
93
97
  // ⚠️ Bedrock/Claude retirado del enrutado: el provider, las constantes BEDROCK_CLAUDE_*
@@ -1,27 +1,5 @@
1
1
  import { generateObject as originalGenerateObject, generateText as originalGenerateText } from 'ai';
2
2
  import { type CostResult } from './modelPricing';
3
- /**
4
- * Wrapper de generateObject con retry automático y cadena de fallbacks.
5
- * Calcula el coste de producción de la llamada y lo acumula automáticamente
6
- * si se ejecuta dentro de runWithCostTracking.
7
- *
8
- * Estrategia de resiliencia:
9
- * - Error de rate limit/cuota → salto inmediato al siguiente fallback
10
- * - Cualquier otro error → reintento transitorio, si falla → siguiente fallback
11
- *
12
- * @param options - Opciones para generateObject (model, schema, system, prompt, temperature, etc.)
13
- * @returns Objeto generado y coste de la llamada
14
- *
15
- * @example
16
- * ```typescript
17
- * const { object, cost } = await generateObject({
18
- * model: createGoogleModel('PRO'),
19
- * schema: myZodSchema,
20
- * system: 'Eres un asistente',
21
- * prompt: 'Genera un plan de entrenamiento',
22
- * });
23
- * ```
24
- */
25
3
  declare function generateObject(options: Parameters<typeof originalGenerateObject>[0]): Promise<{
26
4
  object: any;
27
5
  cost: CostResult;
@@ -1 +1 @@
1
- {"version":3,"file":"ai.d.ts","sourceRoot":"","sources":["../../../../src/prompt/ai.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,IAAI,sBAAsB,EAAE,YAAY,IAAI,oBAAoB,EAAE,MAAM,IAAI,CAAC;AAEpG,OAAO,EAAiB,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAwKhE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,iBAAe,cAAc,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,GAAG,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC,CAoD/H;AAkFD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,iBAAe,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC,CA4C5H;AA+ED;;;;;;;;;;;;;;;;;GAiBG;AACH,iBAAe,mBAAmB,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,CAAC,CAAC;IAAC,SAAS,EAAE,UAAU,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAgB5H;AAED,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,mBAAmB,EAAE,CAAC"}
1
+ {"version":3,"file":"ai.d.ts","sourceRoot":"","sources":["../../../../src/prompt/ai.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,IAAI,sBAAsB,EAAE,YAAY,IAAI,oBAAoB,EAAE,MAAM,IAAI,CAAC;AAEpG,OAAO,EAAiB,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAoNhE,iBAAe,cAAc,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,GAAG,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC,CAoD/H;AAkFD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,iBAAe,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC,CA4C5H;AA+ED;;;;;;;;;;;;;;;;;GAiBG;AACH,iBAAe,mBAAmB,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,CAAC,CAAC;IAAC,SAAS,EAAE,UAAU,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAgB5H;AAED,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,mBAAmB,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/prompt/constants.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/prompt/constants.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@runnerpro/backend",
3
- "version": "1.28.0",
3
+ "version": "1.30.0",
4
4
  "description": "A collection of common backend functions",
5
5
  "exports": {
6
6
  ".": "./lib/cjs/index.js"