@bivelio/savings-layer 0.4.26 → 0.4.29

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.
@@ -1,74 +1,74 @@
1
- import {createSavingsLayer,LicenseError,sha256,stableStringify}from'@bivelio/savings-layer';import {AsyncLocalStorage}from'async_hooks';var N=new Set;function $(e,t,n){e===true||N.has(t)||(N.add(t),console.warn(n));}var fe="[bvsala] internal: the layer changed a request this adapter must forward unchanged; no\
2
- thing was sent.",ge="[bvsala] internal: the layer asked for a second model call within one framework call; nothing more was sent.",me="[bvsala] internal: the layer called the model outside a framework\
3
- call; nothing was sent.";function F(e,t,n){return {renderizado:e,generar:t,...{},invocada:false,completada:false}}function ve(e,t){if(e===t)return true;try{return stableStringify(e)===stableStringify(t)}catch{return false}}function _(e,t){let n=e??[],r=t??[];return n.length===r.length&&n.every((a,s)=>ve(a,r[s]))}function ye(e,t){return e.model===t.
4
- model&&_(e.messages,t.messages)&&_(e.tools,t.tools)}function J(e,t){let n=r=>{let a=t.getStore();if(!a)throw new Error(me);if(a.invocada)throw new Error(ge);if(!ye(r,a.renderizado))throw new Error(fe);
5
- return a.invocada=true,a};return {id:`bivelio-adapter:${e}`,async generate(r,a){return n(r).generar(a?.signal)},async*generateStream(r,a){let s=n(r);if(s.transmitir){yield*s.transmitir(a?.signal);return}
6
- let i=await s.generar(a?.signal);i.text!==""&&(yield {type:"text",delta:i.text}),yield {type:"done",response:i};}}}function B(){return new AsyncLocalStorage}var Re=["licenseKey","licenseServerUrl","serviceAccountKey","licenseRefresh","licenseRevocation","licensePollIntervalSeconds","licenseFetch","metering","meteringUrl","meteringFetch","costModels","defa\
1
+ import {createSavingsLayer,LicenseError,sha256,stableStringify}from'@bivelio/savings-layer';import {AsyncLocalStorage}from'async_hooks';var N=new Set;function $(e,t,n){e===true||N.has(t)||(N.add(t),console.warn(n));}var _=Symbol.for("@bivelio/savings-layer:provider-origin");var ge="[bvsala] internal: the layer changed a request this adapter must forward unchanged; nothing was sent.",me="[bvsala] internal: the layer asked for a second model call within one framework call;\
2
+ nothing more was sent.",ve="[bvsala] internal: the layer called the model outside a framework call; nothing was sent.";function J(e,t,n,r){return {renderizado:e,generar:t,...{},invocada:false,
3
+ completada:false,...{}}}function ye(e,t){if(e===t)return true;try{return stableStringify(e)===stableStringify(t)}catch{return false}}function F(e,t){let n=e??[],r=t??[];return n.length===r.length&&n.every((s,a)=>ye(s,r[a]))}function he(e,t){return e.model===t.
4
+ model&&F(e.messages,t.messages)&&F(e.tools,t.tools)}function V(e,t){let n=s=>{let a=t.getStore();if(!a)throw new Error(ve);if(a.invocada)throw new Error(me);if(!he(s,a.renderizado))throw new Error(ge);
5
+ return a.invocada=true,a},r={id:`bivelio-adapter:${e}`,async generate(s,a){return n(s).generar(a?.signal)},async*generateStream(s,a){let i=n(s);if(i.transmitir){yield*i.transmitir(a?.signal);return}let o=await i.
6
+ generar(a?.signal);o.text!==""&&(yield {type:"text",delta:o.text}),yield {type:"done",response:o};}};return Object.defineProperty(r,_,{value:()=>t.getStore()?.origen}),r}function B(){return new AsyncLocalStorage}var we=["licenseKey","licenseServerUrl","serviceAccountKey","licenseRefresh","licenseRevocation","licensePollIntervalSeconds","licenseFetch","metering","meteringUrl","meteringFetch","costModels","defa\
7
7
  ultCostModel","exactCache","exactCacheTtlMs","resolvers","exactTokenizer","silenceWarnings","failOpen"];function W(e,t){return t instanceof LicenseError||e.errorDelMarco&&e.errorDelMarco.error===t?false:e.invocada&&
8
- e.completada}var V="[bvsala] the model answered, but the savings layer failed while accounting for it; the answer is returned unchanged, without a savings report and without a usage record.";function G(e,t){
9
- let n=B(),r={};for(let i of Re)t[i]!==void 0&&(r[i]=t[i]);let a=createSavingsLayer({...r,provider:J(e,n)}),s=(i,o)=>$(t.silenceWarnings,`${e}:${i}`,o);return {ejecutar(i,o){return n.run(o,()=>a.generate(i))},async generar(i,o){
10
- try{let l=await n.run(o,()=>a.generate(i));return o.invocada?{tipo:"vivo",result:l}:{tipo:"atajo",result:l}}catch(l){if(W(o,l))return s("sin-informe",V),{tipo:"sin-informe"};throw l}},async transmitir(i,o,l){
11
- let d=n.run(o,()=>a.generateStream(i,l?{signal:l}:{})).result;o.resultado=d,d.catch(()=>{});let g;try{g=await Promise.race([o.abierta.then(()=>"abierta"),d.then(()=>"resuelta")]);}catch(p){if(W(o,p))return s(
12
- "sin-informe",V),{tipo:"sin-informe"};throw p}if(g==="abierta")return {tipo:"abierto"};let u=await d;return o.invocada?{tipo:"entero",result:u}:{tipo:"atajo",result:u}},informe(i){let o=JSON.parse(JSON.
13
- stringify(i));if(t.onReport)try{t.onReport(o);}catch{s("onreport","[bvsala] `onReport` threw; the error was caught and the model call was not affected.");}return o},avisar:s,close(){a.close();}}}function v(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function H(e){return typeof e=="string"?[{type:"text",text:e}]:Array.isArray(e)?e.filter(v):[]}function T(e){return e.filter(t=>t.type===
8
+ e.completada}var G="[bvsala] the model answered, but the savings layer failed while accounting for it; the answer is returned unchanged, without a savings report and without a usage record.";function H(e,t){
9
+ let n=B(),r={};for(let i of we)t[i]!==void 0&&(r[i]=t[i]);let s=createSavingsLayer({...r,provider:V(e,n)}),a=(i,o)=>$(t.silenceWarnings,`${e}:${i}`,o);return {ejecutar(i,o){return n.run(o,()=>s.generate(i))},async generar(i,o){
10
+ try{let l=await n.run(o,()=>s.generate(i));return o.invocada?{tipo:"vivo",result:l}:{tipo:"atajo",result:l}}catch(l){if(W(o,l))return a("sin-informe",G),{tipo:"sin-informe"};throw l}},async transmitir(i,o,l){
11
+ let d=n.run(o,()=>s.generateStream(i,l?{signal:l}:{})).result;o.resultado=d,d.catch(()=>{});let g;try{g=await Promise.race([o.abierta.then(()=>"abierta"),d.then(()=>"resuelta")]);}catch(p){if(W(o,p))return a(
12
+ "sin-informe",G),{tipo:"sin-informe"};throw p}if(g==="abierta")return {tipo:"abierto"};let u=await d;return o.invocada?{tipo:"entero",result:u}:{tipo:"atajo",result:u}},informe(i){let o=JSON.parse(JSON.
13
+ stringify(i));if(t.onReport)try{t.onReport(o);}catch{a("onreport","[bvsala] `onReport` threw; the error was caught and the model call was not affected.");}return o},avisar:a,close(){s.close();}}}function v(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function K(e){return typeof e=="string"?[{type:"text",text:e}]:Array.isArray(e)?e.filter(v):[]}function T(e){return e.filter(t=>t.type===
14
14
  "text"&&typeof t.text=="string").map(t=>t.text).join(`
15
- `)}function h(e){if(typeof e=="string")return e;try{return JSON.stringify(e??{})}catch{return "{}"}}function we(e){if(!v(e))return h(e);switch(e.type){case "text":case "error-text":return typeof e.value==
15
+ `)}function h(e){if(typeof e=="string")return e;try{return JSON.stringify(e??{})}catch{return "{}"}}function xe(e){if(!v(e))return h(e);switch(e.type){case "text":case "error-text":return typeof e.value==
16
16
  "string"?e.value:h(e.value);case "json":case "error-json":return h(e.value);case "execution-denied":return `execution denied${typeof e.reason=="string"?`: ${e.reason}`:""}`;case "content":return T(t(e.value));default:
17
- return h(e)}function t(n){return Array.isArray(n)?n.filter(v):[]}}function K(e){let t=[];for(let n of Array.isArray(e)?e:[]){if(!v(n))continue;let r=H(n.content);switch(n.role){case "system":t.push({role:"\
18
- system",content:typeof n.content=="string"?n.content:T(r)});break;case "user":t.push({role:"user",content:T(r)});break;case "assistant":{let a=r.filter(s=>s.type==="tool-call"&&s.providerExecuted!==true).
19
- map(s=>({...typeof s.toolCallId=="string"?{id:s.toolCallId}:{},name:String(s.toolName??""),arguments:h(s.input??s.args)}));t.push({role:"assistant",content:T(r),...a.length>0?{toolCalls:a}:{}});break}case "\
20
- tool":for(let a of r)a.type==="tool-result"&&t.push({role:"tool",content:we(a.output??a.result),...typeof a.toolCallId=="string"?{toolCallId:a.toolCallId}:{},...typeof a.toolName=="string"?{name:a.toolName}:
21
- {}});break}}return t}var xe=new Set(["bivelio","mastra"]);function x(e){if(!v(e))return e;let t={};for(let[n,r]of Object.entries(e))xe.has(n)||(t[n]=r);return t}function Se(e){let t={};for(let[n,r]of Object.
22
- entries(e))if(!(n==="toolCallId"||n==="id")&&!(n==="text"&&e.type==="text")){if(n==="providerOptions"||n==="providerMetadata"){t[n]=x(r);continue}t[n]=r;}return t}function Z(e){return (Array.isArray(e)?
23
- e:[]).map(t=>v(t)?{role:t.role,content:typeof t.content=="string"?"$text":H(t.content).map(Se),providerOptions:x(t.providerOptions)}:t)}var ke=new Set(["anthropic-beta","openai-beta"]);function Q(e){if(!v(
24
- e))return;let t={};for(let[n,r]of Object.entries(e))ke.has(n.toLowerCase())&&r!==void 0&&(t[n.toLowerCase()]=r);return Object.keys(t).length>0?t:void 0}function y(e){return typeof e=="number"&&Number.isFinite(e)?e:void 0}function X(e,t){let n=v(e)?e:{},r=v(n.inputTokens)?n.inputTokens:void 0,a=v(n.outputTokens)?n.outputTokens:void 0;if(!r||!a){let g=y(
25
- n.inputTokens),u=y(n.outputTokens);return {inputTokens:g??0,outputTokens:u??0,complete:false}}let s=y(r.total),i=y(r.cacheRead),o=y(r.cacheWrite),l=y(a.total),c=y(a.reasoning);return {inputTokens:s??0,outputTokens:l??
26
- 0,...i!==void 0?{cachedInputTokens:i}:{},...o!==void 0?{cacheWriteInputTokens:o}:{},...c!==void 0?{reasoningTokens:c}:{},...s!==void 0&&l!==void 0&&!t?{}:{complete:false}}}function Y(e){switch(e){case void 0:return;case "tool-calls":return "tool_calls";case "content-filter":return "content_filter";default:return e}}function ee(e){let t=String(e.modelId??"");if(t.includes("/"))return t;let n=String(e.provider??"").split(".")[0]??"";return n!==""?`${n}/${t}`:t}function te(e){return typeof e.provider=="string"&&e.provider.
27
- toLowerCase().startsWith("mock")}var De={router:false,compression:false,elision:false,serialization:false,toolDiscovery:false,modelCascade:"off",outputCodebook:false,deferrable:false,semanticCache:false,verification:false};
28
- function Pe(e,t,n={}){let r=a=>e?.[a]!==false&&t?.[a]!==false;return {...De,exactCache:r("exactCache")&&n.sinReutilizar!==true,singleflight:r("singleflight")&&n.sinReutilizar!==true,deterministicResolvers:r("det\
29
- erministicResolvers")&&n.sinResolvers!==true}}function Ce(e,t){let n=e.readOnlyTools;if(typeof n=="function")try{return n(t)===!0}catch{return false}return Array.isArray(n)?n.includes(t):false}function re(e,t){
30
- let n=t.delProveedor!==true&&Ce(e,t.nombre);return {id:t.nombre,intents:[],risk:n?"read":"write",...t.parametros!==void 0&&t.parametros!==null&&typeof t.parametros=="object"?{parameters:t.parametros}:{},
17
+ return h(e)}function t(n){return Array.isArray(n)?n.filter(v):[]}}function Z(e){let t=[];for(let n of Array.isArray(e)?e:[]){if(!v(n))continue;let r=K(n.content);switch(n.role){case "system":t.push({role:"\
18
+ system",content:typeof n.content=="string"?n.content:T(r)});break;case "user":t.push({role:"user",content:T(r)});break;case "assistant":{let s=r.filter(a=>a.type==="tool-call"&&a.providerExecuted!==true).
19
+ map(a=>({...typeof a.toolCallId=="string"?{id:a.toolCallId}:{},name:String(a.toolName??""),arguments:h(a.input??a.args)}));t.push({role:"assistant",content:T(r),...s.length>0?{toolCalls:s}:{}});break}case "\
20
+ tool":for(let s of r)s.type==="tool-result"&&t.push({role:"tool",content:xe(s.output??s.result),...typeof s.toolCallId=="string"?{toolCallId:s.toolCallId}:{},...typeof s.toolName=="string"?{name:s.toolName}:
21
+ {}});break}}return t}var Se=new Set(["bivelio","mastra"]);function x(e){if(!v(e))return e;let t={};for(let[n,r]of Object.entries(e))Se.has(n)||(t[n]=r);return t}function ke(e){let t={};for(let[n,r]of Object.
22
+ entries(e))if(!(n==="toolCallId"||n==="id")&&!(n==="text"&&e.type==="text")){if(n==="providerOptions"||n==="providerMetadata"){t[n]=x(r);continue}t[n]=r;}return t}function Q(e){return (Array.isArray(e)?
23
+ e:[]).map(t=>v(t)?{role:t.role,content:typeof t.content=="string"?"$text":K(t.content).map(ke),providerOptions:x(t.providerOptions)}:t)}var Ae=new Set(["anthropic-beta","openai-beta"]);function X(e){if(!v(
24
+ e))return;let t={};for(let[n,r]of Object.entries(e))Ae.has(n.toLowerCase())&&r!==void 0&&(t[n.toLowerCase()]=r);return Object.keys(t).length>0?t:void 0}function y(e){return typeof e=="number"&&Number.isFinite(e)?e:void 0}function Y(e,t){let n=v(e)?e:{},r=v(n.inputTokens)?n.inputTokens:void 0,s=v(n.outputTokens)?n.outputTokens:void 0;if(!r||!s){let g=y(
25
+ n.inputTokens),u=y(n.outputTokens);return {inputTokens:g??0,outputTokens:u??0,complete:false}}let a=y(r.total),i=y(r.cacheRead),o=y(r.cacheWrite),l=y(s.total),c=y(s.reasoning);return {inputTokens:a??0,outputTokens:l??
26
+ 0,...i!==void 0?{cachedInputTokens:i}:{},...o!==void 0?{cacheWriteInputTokens:o}:{},...c!==void 0?{reasoningTokens:c}:{},...a!==void 0&&l!==void 0&&!t?{}:{complete:false}}}function ee(e){switch(e){case void 0:return;case "tool-calls":return "tool_calls";case "content-filter":return "content_filter";default:return e}}function te(e){let t=String(e.modelId??"");if(t.includes("/"))return t;let n=String(e.provider??"").split(".")[0]??"";return n!==""?`${n}/${t}`:t}function ne(e){return typeof e.provider=="string"&&e.provider.
27
+ toLowerCase().startsWith("mock")}var Ce={router:false,compression:false,elision:false,serialization:false,toolDiscovery:false,modelCascade:"off",outputCodebook:false,deferrable:false,semanticCache:false,verification:false};
28
+ function Pe(e,t,n={}){let r=s=>e?.[s]!==false&&t?.[s]!==false;return {...Ce,exactCache:r("exactCache")&&n.sinReutilizar!==true,singleflight:r("singleflight")&&n.sinReutilizar!==true,deterministicResolvers:r("det\
29
+ erministicResolvers")&&n.sinResolvers!==true}}function Te(e,t){let n=e.readOnlyTools;if(typeof n=="function")try{return n(t)===!0}catch{return false}return Array.isArray(n)?n.includes(t):false}function oe(e,t){
30
+ let n=t.delProveedor!==true&&Te(e,t.nombre);return {id:t.nombre,intents:[],risk:n?"read":"write",...t.parametros!==void 0&&t.parametros!==null&&typeof t.parametros=="object"?{parameters:t.parametros}:{},
31
31
  ...typeof t.descripcion=="string"?{description:t.descripcion}:{}}}function S(e,t,n){if(e===null)return null;switch(typeof e){case "string":case "boolean":return e;case "number":return Number.isFinite(e)?
32
32
  e:String(e);case "bigint":return `${e.toString()}n`;case "undefined":case "function":case "symbol":return}let r=e;if(r instanceof Uint8Array)return t.push(r),{$bytes:t.length-1};if(r instanceof ArrayBuffer)
33
33
  return t.push(new Uint8Array(r)),{$bytes:t.length-1};if(ArrayBuffer.isView(r))return t.push(new Uint8Array(r.buffer,r.byteOffset,r.byteLength)),{$bytes:t.length-1};if(r instanceof URL)return {$url:r.href};
34
- if(r instanceof Date)return {$date:Number.isNaN(r.getTime())?"invalid":r.toISOString()};if(n.has(r))return "$cycle";n.add(r);try{if(Array.isArray(r))return r.map(s=>{let i=S(s,t,n);return i===void 0?null:
35
- i});if(r instanceof Map)return {$map:[...r.entries()].map(s=>S(s,t,n))};if(r instanceof Set)return {$set:[...r.values()].map(s=>S(s,t,n))};let a={};for(let s of Object.keys(r).sort()){let i=S(r[s],t,n);
36
- i!==void 0&&(a[s]=i);}return a}finally{n.delete(r);}}async function ne(e){let t=globalThis.crypto?.subtle;if(t){let r=new Uint8Array(await t.digest("SHA-256",e));return Array.from(r,a=>a.toString(16).padStart(
37
- 2,"0")).join("")}let n="";for(let r=0;r<e.length;r+=32768)n+=String.fromCharCode(...e.subarray(r,r+32768));return sha256(n)}async function Te(e){try{let t=[],n=JSON.stringify(S(e,t,new WeakSet))??"null",r=await Promise.
38
- all(t.map(ne)),a=new TextEncoder().encode(`${n}|${r.join(",")}`);return await ne(a)}catch{return null}}async function oe(e,t){let n=await Te(t.proyeccion),r=`${t.context?.authorizationScope??"default"}\
34
+ if(r instanceof Date)return {$date:Number.isNaN(r.getTime())?"invalid":r.toISOString()};if(n.has(r))return "$cycle";n.add(r);try{if(Array.isArray(r))return r.map(a=>{let i=S(a,t,n);return i===void 0?null:
35
+ i});if(r instanceof Map)return {$map:[...r.entries()].map(a=>S(a,t,n))};if(r instanceof Set)return {$set:[...r.values()].map(a=>S(a,t,n))};let s={};for(let a of Object.keys(r).sort()){let i=S(r[a],t,n);
36
+ i!==void 0&&(s[a]=i);}return s}finally{n.delete(r);}}async function re(e){let t=globalThis.crypto?.subtle;if(t){let r=new Uint8Array(await t.digest("SHA-256",e));return Array.from(r,s=>s.toString(16).padStart(
37
+ 2,"0")).join("")}let n="";for(let r=0;r<e.length;r+=32768)n+=String.fromCharCode(...e.subarray(r,r+32768));return sha256(n)}async function Oe(e){try{let t=[],n=JSON.stringify(S(e,t,new WeakSet))??"null",r=await Promise.
38
+ all(t.map(re)),s=new TextEncoder().encode(`${n}|${r.join(",")}`);return await re(s)}catch{return null}}async function ae(e,t){let n=await Oe(t.proyeccion),r=`${t.context?.authorizationScope??"default"}\
39
39
  |bvsala-adapter:${n??"none"}`;return {model:t.model,messages:t.messages,...t.tools.length>0?{tools:t.tools}:{},...typeof t.temperature=="number"?{temperature:t.temperature}:{},...typeof t.seed=="number"?
40
- {seed:t.seed}:{},context:{...t.context??{},authorizationScope:r},savings:Pe(e.savings,t.savings,{...t.restricciones,...n===null?{sinReutilizar:true}:{}})}}function ae(e,t){if(!(!e&&!t))return {...e??{},...t??
41
- {}}}function se(e){if(!e||typeof e!="object")return {};let t=e,n={};return t.context&&typeof t.context=="object"&&(n.context=t.context),t.savings&&typeof t.savings=="object"&&(n.savings=t.savings),n}function f(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var ie="bivelio.paso",k="bivelio.pendiente";function le(e){for(let t of [e.parameters,e.inputSchema]){if(f(t)&&f(t.jsonSchema))return {
42
- esquema:t.jsonSchema,legible:true};if(f(t)&&(t.type==="object"||f(t.properties)))return {esquema:t,legible:true}}return {legible:false}}function Me(e){let t=[],n=false,r=Array.isArray(e.activeTools)?new Set(e.activeTools.
43
- map(String)):void 0;for(let[i,o]of Object.entries(f(e.tools)?e.tools:{})){if(r&&!r.has(i)||!f(o))continue;let{esquema:l,legible:c}=le(o),d=c;try{JSON.stringify(l);}catch{d=false;}d||(n=true),t.push({nombre:i,
44
- ...typeof o.description=="string"?{descripcion:o.description}:{},...d?{parametros:l}:{},delProveedor:o.type==="provider-defined"||o.type==="provider"});}let a=f(e.structuredOutput)?e.structuredOutput:void 0,
45
- s;if(a){let{esquema:i}=le({inputSchema:a.schema});s=i??true;}return {paso:typeof e.stepNumber=="number"?e.stepNumber:-1,herramientas:t,esquemaIlegible:n,toolChoice:e.toolChoice,activeTools:e.activeTools,providerOptions:e.
46
- providerOptions,modelSettings:e.modelSettings,...s!==void 0?{salidaEstructurada:s}:{}}}function Le(e){if(!f(e))return;let t={};for(let[n,r]of Object.entries(e))n==="maxRetries"||n==="abortSignal"||n===
47
- "headers"||(t[n]=r);return t.headers=Q(e.headers),t}function Oe(e,t){let n="",r=[],a=true,s;for(let u of e){if(!f(u))continue;let p=f(u.payload)?u.payload:{};switch(u.type){case "error":return {error:p.error??
48
- new Error("[bvsala] the model call failed")};case "text-delta":typeof p.text=="string"&&(n+=p.text);break;case "tool-call":p.providerExecuted===true?a=false:r.push({...typeof p.toolCallId=="string"?{id:p.toolCallId}:
40
+ {seed:t.seed}:{},context:{...t.context??{},authorizationScope:r},savings:Pe(e.savings,t.savings,{...t.restricciones,...n===null?{sinReutilizar:true}:{}})}}function se(e,t){if(!(!e&&!t))return {...e??{},...t??
41
+ {}}}function ie(e){if(!e||typeof e!="object")return {};let t=e,n={};return t.context&&typeof t.context=="object"&&(n.context=t.context),t.savings&&typeof t.savings=="object"&&(n.savings=t.savings),n}function f(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var le="bivelio.paso",k="bivelio.pendiente";function ue(e){for(let t of [e.parameters,e.inputSchema]){if(f(t)&&f(t.jsonSchema))return {
42
+ esquema:t.jsonSchema,legible:true};if(f(t)&&(t.type==="object"||f(t.properties)))return {esquema:t,legible:true}}return {legible:false}}function Le(e){let t=[],n=false,r=Array.isArray(e.activeTools)?new Set(e.activeTools.
43
+ map(String)):void 0;for(let[i,o]of Object.entries(f(e.tools)?e.tools:{})){if(r&&!r.has(i)||!f(o))continue;let{esquema:l,legible:c}=ue(o),d=c;try{JSON.stringify(l);}catch{d=false;}d||(n=true),t.push({nombre:i,
44
+ ...typeof o.description=="string"?{descripcion:o.description}:{},...d?{parametros:l}:{},delProveedor:o.type==="provider-defined"||o.type==="provider"});}let s=f(e.structuredOutput)?e.structuredOutput:void 0,
45
+ a;if(s){let{esquema:i}=ue({inputSchema:s.schema});a=i??true;}return {paso:typeof e.stepNumber=="number"?e.stepNumber:-1,herramientas:t,esquemaIlegible:n,toolChoice:e.toolChoice,activeTools:e.activeTools,providerOptions:e.
46
+ providerOptions,modelSettings:e.modelSettings,...a!==void 0?{salidaEstructurada:a}:{}}}function Me(e){if(!f(e))return;let t={};for(let[n,r]of Object.entries(e))n==="maxRetries"||n==="abortSignal"||n===
47
+ "headers"||(t[n]=r);return t.headers=X(e.headers),t}function Ee(e,t){let n="",r=[],s=true,a;for(let u of e){if(!f(u))continue;let p=f(u.payload)?u.payload:{};switch(u.type){case "error":return {error:p.error??
48
+ new Error("[bvsala] the model call failed")};case "text-delta":typeof p.text=="string"&&(n+=p.text);break;case "tool-call":p.providerExecuted===true?s=false:r.push({...typeof p.toolCallId=="string"?{id:p.toolCallId}:
49
49
  {},name:String(p.toolName??""),arguments:h(p.args??p.input)});break;case "reasoning-start":case "reasoning-delta":case "reasoning-end":f(p.providerMetadata)&&Object.keys(x(p.providerMetadata)).length>0&&
50
- (a=false);break;case "finish":s=p;break;case "step-start":case "response-metadata":case "text-start":case "text-end":case "tool-call-input-streaming-start":case "tool-call-delta":case "tool-call-input-streaming-\
51
- end":case "raw":break;default:a=false;}}let i=f(s?.stepResult)?s.stepResult:{},o=typeof i.reason=="string"?i.reason:void 0,l=Y(o),c=f(s?.output)?s.output:{},d=f(c.usage)?c.usage:void 0,g=X(d?.raw,t);return {
52
- text:n,...r.length>0?{toolCalls:r}:{},...l?{finishReason:l}:{},usage:s?g:{inputTokens:0,outputTokens:0,complete:false},...a&&o==="stop"?{}:{replayable:false}}}function Ie(e,t,n){let r=`bvsala-${e.requestId}`,
53
- a=[{type:"step-start",payload:{request:{},warnings:[],...typeof n=="string"?{messageId:n}:{},startedAt:Date.now()}},{type:"response-metadata",payload:{type:"response-metadata",id:r,modelId:e.report.model,
54
- timestamp:new Date}}];e.text!==""&&(a.push({type:"text-start",payload:{id:r}}),a.push({type:"text-delta",payload:{id:r,text:e.text}}),a.push({type:"text-end",payload:{type:"text-end",id:r}})),(e.toolCalls??
55
- []).forEach((i,o)=>{let l={};try{l=JSON.parse(i.arguments||"{}");}catch{l={};}a.push({type:"tool-call",payload:{toolCallId:i.id??`${r}-${o}`,toolName:i.name,args:l}});});let s=(e.toolCalls?.length??0)>0;
56
- return a.push({type:"finish",payload:{type:"finish",stepResult:{reason:s?"tool-calls":"stop"},output:{usage:{inputTokens:0,outputTokens:0,totalTokens:0}},metadata:t?{providerMetadata:{bivelio:{savingsReport:t}}}:
57
- {},messages:{all:[],user:[],nonUser:[]}}}),a}var Ee=900*1e3;function Qe(e){let t=G("mastra",e),n=Math.max(1,e.providerTimeoutMs??Ee),r=new Map,a=0,s=(o,l)=>{let c=r.get(o);c&&(r.delete(o),clearTimeout(
50
+ (s=false);break;case "finish":a=p;break;case "step-start":case "response-metadata":case "text-start":case "text-end":case "tool-call-input-streaming-start":case "tool-call-delta":case "tool-call-input-streaming-\
51
+ end":case "raw":break;default:s=false;}}let i=f(a?.stepResult)?a.stepResult:{},o=typeof i.reason=="string"?i.reason:void 0,l=ee(o),c=f(a?.output)?a.output:{},d=f(c.usage)?c.usage:void 0,g=Y(d?.raw,t);return {
52
+ text:n,...r.length>0?{toolCalls:r}:{},...l?{finishReason:l}:{},usage:a?g:{inputTokens:0,outputTokens:0,complete:false},...s&&o==="stop"?{}:{replayable:false}}}function Ie(e,t,n){let r=`bvsala-${e.requestId}`,
53
+ s=[{type:"step-start",payload:{request:{},warnings:[],...typeof n=="string"?{messageId:n}:{},startedAt:Date.now()}},{type:"response-metadata",payload:{type:"response-metadata",id:r,modelId:e.report.model,
54
+ timestamp:new Date}}];e.text!==""&&(s.push({type:"text-start",payload:{id:r}}),s.push({type:"text-delta",payload:{id:r,text:e.text}}),s.push({type:"text-end",payload:{type:"text-end",id:r}})),(e.toolCalls??
55
+ []).forEach((i,o)=>{let l={};try{l=JSON.parse(i.arguments||"{}");}catch{l={};}s.push({type:"tool-call",payload:{toolCallId:i.id??`${r}-${o}`,toolName:i.name,args:l}});});let a=(e.toolCalls?.length??0)>0;
56
+ return s.push({type:"finish",payload:{type:"finish",stepResult:{reason:a?"tool-calls":"stop"},output:{usage:{inputTokens:0,outputTokens:0,totalTokens:0}},metadata:t?{providerMetadata:{bivelio:{savingsReport:t}}}:
57
+ {},messages:{all:[],user:[],nonUser:[]}}}),s}var qe=900*1e3;function et(e){let t=H("mastra",e),n=Math.max(1,e.providerTimeoutMs??qe),r=new Map,s=0,a=(o,l)=>{let c=r.get(o);c&&(r.delete(o),clearTimeout(
58
58
  c.plazo),c.signal&&c.alAbortar&&c.signal.removeEventListener("abort",c.alAbortar),c.llamada.errorDelMarco={error:l},c.rechazar(l));};return {id:"bivelio-savings",name:"BiVelio savings",processInputStep(o){
59
- let l=o.state;l[ie]=Me(o),typeof o.messageId=="string"&&(l["bivelio.messageId"]=o.messageId);},async processLLMRequest(o){let l=o.state,c=f(o.model)?o.model:{},d=typeof o.stepNumber=="number"?o.stepNumber:
60
- -1,g=l[ie],u=g&&g.paso===d?g:void 0,p=e.modelId?e.modelId({provider:String(c.provider??""),modelId:String(c.modelId??"")}):ee(c),M=(u?.herramientas??[]).map(m=>re(e,{nombre:m.nombre,descripcion:m.descripcion,
61
- parametros:m.parametros,delProveedor:m.delProveedor})),b=f(u?.modelSettings)?u.modelSettings:{},O=se(f(u?.providerOptions)?u.providerOptions.bivelio:void 0),A=u?.toolChoice,ue=A==="required"||f(A)&&(A.
62
- type==="tool"||A.type==="required"),R=await oe(e,{model:p,messages:K(o.prompt),tools:M,temperature:typeof b.temperature=="number"?b.temperature:void 0,seed:typeof b.seed=="number"?b.seed:void 0,context:ae(
63
- e.context?.({requestContext:o.requestContext}),O.context),savings:{...O.savings,singleflight:false},proyeccion:{modelo:p,prompt:Z(o.prompt),herramientas:u?.herramientas??null,toolChoice:u?.toolChoice,activeTools:u?.
64
- activeTools,providerOptions:x(u?.providerOptions),ajustes:Le(u?.modelSettings),salidaEstructurada:u?.salidaEstructurada},restricciones:{sinResolvers:u===void 0||ue||u.salidaEstructurada!==void 0,sinReutilizar:u===
65
- void 0||u.esquemaIlegible}}),I,E,ce=new Promise((m,L)=>{I=m,E=L;}),q,de=new Promise(m=>{q=()=>m("invocada");}),j=F({model:R.model,messages:R.messages,...R.tools?{tools:R.tools}:{}},()=>(q(),ce)),D=t.ejecutar(
66
- R,j);if(D.catch(()=>{}),await Promise.race([de,D.then(()=>"resuelta")])==="resuelta"){let m=await D,L=t.informe(m.report);return {response:{chunks:Ie(m,L,l["bivelio.messageId"])}}}let P=`bvsala-${++a}-${Date.
67
- now().toString(36)}`,z=setTimeout(()=>s(P,new Error("[bvsala] Mastra never reported this model call back; nothing was recorded.")),n);z.unref?.();let w={resolver:I,rechazar:E,llamada:j,resultado:D,plazo:z},
68
- C=o.abortSignal instanceof AbortSignal?o.abortSignal:void 0;C&&(w.signal=C,w.alAbortar=()=>s(P,new Error("[bvsala] the model call was aborted; nothing was recorded.")),C.aborted?w.alAbortar():C.addEventListener(
69
- "abort",w.alAbortar,{once:true})),r.set(P,w),l[k]=P;},async processLLMResponse(o){if(o.fromCache===true)return;let l=o.state,c=l[k];if(delete l[k],typeof c!="string")return;let d=r.get(c);if(!d)return;r.delete(
70
- c),clearTimeout(d.plazo),d.signal&&d.alAbortar&&d.signal.removeEventListener("abort",d.alAbortar);let g=f(o.model)?o.model:{},u=Oe(Array.isArray(o.chunks)?o.chunks:[],te(g));if("error"in u){d.llamada.
71
- errorDelMarco={error:u.error},d.rechazar(u.error);return}d.llamada.completada=true,d.resolver(u);try{let p=await d.resultado,M=t.informe(p.report);e.emitReportPart===!0&&await o.writer?.custom?.({type:"\
72
- data-bivelio-savings-report",data:M});}catch{t.avisar("sin-informe","[bvsala] the model answered, but the savings layer failed while accounting for it; the answer is unchanged, without a savings report\
73
- and without a usage record.");}},processAPIError(o){let l=o.state,c=l[k];typeof c=="string"&&(delete l[k],s(c,o.error??new Error("[bvsala] the model call failed")));},close(){for(let o of [...r.keys()])
74
- s(o,new Error("[bvsala] the savings layer was closed; nothing was recorded."));t.close();}}}export{Qe as savingsProcessor};
59
+ let l=o.state;l[le]=Le(o),typeof o.messageId=="string"&&(l["bivelio.messageId"]=o.messageId);},async processLLMRequest(o){let l=o.state,c=f(o.model)?o.model:{},d=typeof o.stepNumber=="number"?o.stepNumber:
60
+ -1,g=l[le],u=g&&g.paso===d?g:void 0,p=e.modelId?e.modelId({provider:String(c.provider??""),modelId:String(c.modelId??"")}):te(c),O=(u?.herramientas??[]).map(m=>oe(e,{nombre:m.nombre,descripcion:m.descripcion,
61
+ parametros:m.parametros,delProveedor:m.delProveedor})),b=f(u?.modelSettings)?u.modelSettings:{},M=ie(f(u?.providerOptions)?u.providerOptions.bivelio:void 0),A=u?.toolChoice,ce=A==="required"||f(A)&&(A.
62
+ type==="tool"||A.type==="required"),R=await ae(e,{model:p,messages:Z(o.prompt),tools:O,temperature:typeof b.temperature=="number"?b.temperature:void 0,seed:typeof b.seed=="number"?b.seed:void 0,context:se(
63
+ e.context?.({requestContext:o.requestContext}),M.context),savings:{...M.savings,singleflight:false},proyeccion:{modelo:p,prompt:Q(o.prompt),herramientas:u?.herramientas??null,toolChoice:u?.toolChoice,activeTools:u?.
64
+ activeTools,providerOptions:x(u?.providerOptions),ajustes:Me(u?.modelSettings),salidaEstructurada:u?.salidaEstructurada},restricciones:{sinResolvers:u===void 0||ce||u.salidaEstructurada!==void 0,sinReutilizar:u===
65
+ void 0||u.esquemaIlegible}}),E,I,de=new Promise((m,L)=>{E=m,I=L;}),q,pe=new Promise(m=>{q=()=>m("invocada");}),j=J({model:R.model,messages:R.messages,...R.tools?{tools:R.tools}:{}},()=>(q(),de)),D=t.ejecutar(
66
+ R,j);if(D.catch(()=>{}),await Promise.race([pe,D.then(()=>"resuelta")])==="resuelta"){let m=await D,L=t.informe(m.report);return {response:{chunks:Ie(m,L,l["bivelio.messageId"])}}}let C=`bvsala-${++s}-${Date.
67
+ now().toString(36)}`,z=setTimeout(()=>a(C,new Error("[bvsala] Mastra never reported this model call back; nothing was recorded.")),n);z.unref?.();let w={resolver:E,rechazar:I,llamada:j,resultado:D,plazo:z},
68
+ P=o.abortSignal instanceof AbortSignal?o.abortSignal:void 0;P&&(w.signal=P,w.alAbortar=()=>a(C,new Error("[bvsala] the model call was aborted; nothing was recorded.")),P.aborted?w.alAbortar():P.addEventListener(
69
+ "abort",w.alAbortar,{once:true})),r.set(C,w),l[k]=C;},async processLLMResponse(o){if(o.fromCache===true)return;let l=o.state,c=l[k];if(delete l[k],typeof c!="string")return;let d=r.get(c);if(!d)return;r.delete(
70
+ c),clearTimeout(d.plazo),d.signal&&d.alAbortar&&d.signal.removeEventListener("abort",d.alAbortar);let g=f(o.model)?o.model:{},u=Ee(Array.isArray(o.chunks)?o.chunks:[],ne(g));if("error"in u){d.llamada.
71
+ errorDelMarco={error:u.error},d.rechazar(u.error);return}d.llamada.completada=true,d.resolver(u);try{let p=await d.resultado,O=t.informe(p.report);e.emitReportPart===!0&&await o.writer?.custom?.({type:"\
72
+ data-bivelio-savings-report",data:O});}catch{t.avisar("sin-informe","[bvsala] the model answered, but the savings layer failed while accounting for it; the answer is unchanged, without a savings report\
73
+ and without a usage record.");}},processAPIError(o){let l=o.state,c=l[k];typeof c=="string"&&(delete l[k],a(c,o.error??new Error("[bvsala] the model call failed")));},close(){for(let o of [...r.keys()])
74
+ a(o,new Error("[bvsala] the savings layer was closed; nothing was recorded."));t.close();}}}export{et as savingsProcessor};