@bivelio/savings-layer 0.5.2 → 1.0.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.
@@ -1,69 +1,69 @@
1
- import {createMiddleware}from'langchain';import {AIMessage}from'@langchain/core/messages';import {toJsonSchema}from'@langchain/core/utils/json_schema';import {createSavingsLayer,LicenseError}from'@bivelio/savings-layer';import {AsyncLocalStorage}from'async_hooks';var Y={"api.anthropic.com":"anthropic","api.openai.com":"openai","generativelanguage.googleapis.com":"google"};function ee(e){if(typeof e!="string")return null;try{let n=new URL(e);return n.protocol!==
2
- "https:"||n.port!==""?null:Y[n.hostname.toLowerCase()]??null}catch{return null}}function C(e){return ee(e)!==null?"oficial":"no-oficial"}var T=Symbol.for("@bivelio/savings-layer:provider-origin");var E=new Set;function j(e,n,t){e===true||E.has(n)||(E.add(n),console.warn(t));}var te="[bvsala] internal: the layer changed a request this adapter must forward unchanged; nothing was sent.",re="[bvsala] internal: the layer asked for a second model call within one framework call;\
3
- nothing more was sent.",oe="[bvsala] internal: the layer called the model outside a framework call; nothing was sent.";function q(e,n,t,r){return {renderizado:e,generar:n,...{},invocada:false,
4
- completada:false,...r!==void 0?{origen:r}:{}}}async function $(e,n){try{let t=await n();return e.completada=!0,t}catch(t){throw e.errorDelMarco={error:t},t}}function ae(e,n){if(e===n)return true;try{return U(
5
- e)===U(n)}catch{return false}}function I(e,n){let t=e??[],r=n??[];return t.length===r.length&&t.every((o,s)=>ae(o,r[s]))}function se(e,n){return e.model===n.model&&I(e.messages,n.messages)&&I(e.tools,n.tools)}
6
- function z(e,n){let t=o=>{let s=n.getStore();if(!s)throw new Error(oe);if(s.invocada)throw new Error(re);if(!se(o,s.renderizado))throw new Error(te);return s.invocada=true,s},r={id:`bivelio-adapter:${e}`,
7
- async generate(o,s){return t(o).generar(s?.signal)},async*generateStream(o,s){let a=t(o);if(a.transmitir){yield*a.transmitir(s?.signal);return}let i=await a.generar(s?.signal);i.text!==""&&(yield {type:"\
8
- text",delta:i.text}),yield {type:"done",response:i};}};return Object.defineProperty(r,T,{value:()=>n.getStore()?.origen}),r}function N(){return new AsyncLocalStorage}function U(e){return JSON.stringify(L(e))}function L(e){
9
- if(Array.isArray(e))return e.map(L);if(e&&typeof e=="object"){let n={};for(let t of Object.keys(e).sort())n[t]=L(e[t]);return n}return e}var le=["licenseKey","licenseServerUrl","serviceAccountKey","licenseRefresh","licenseRevocation","licensePollIntervalSeconds","licenseFetch","metering","meteringUrl","meteringFetch","costModels","defa\
10
- ultCostModel","exactCache","exactCacheTtlMs","resolvers","exactTokenizer","silenceWarnings","failOpen"];function F(e,n){return n instanceof LicenseError||e.errorDelMarco&&e.errorDelMarco.error===n?false:e.invocada&&
11
- e.completada}var J="[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 V(e,n){
12
- let t=N(),r={};for(let a of le)n[a]!==void 0&&(r[a]=n[a]);let o=createSavingsLayer({...r,provider:z(e,t)}),s=(a,i)=>j(n.silenceWarnings,`${e}:${a}`,i);return {ejecutar(a,i){return t.run(i,()=>o.generate(a))},async generar(a,i){
13
- try{let u=await t.run(i,()=>o.generate(a));return i.invocada?{tipo:"vivo",result:u}:{tipo:"atajo",result:u}}catch(u){if(F(i,u))return s("sin-informe",J),{tipo:"sin-informe"};throw u}},async transmitir(a,i,u){
14
- let d=t.run(i,()=>o.generateStream(a,u?{signal:u}:{})).result;i.resultado=d,d.catch(()=>{});let p;try{p=await Promise.race([i.abierta.then(()=>"abierta"),d.then(()=>"resuelta")]);}catch(h){if(F(i,h))return s(
15
- "sin-informe",J),{tipo:"sin-informe"};throw h}if(p==="abierta")return {tipo:"abierto"};let g=await d;return i.invocada?{tipo:"entero",result:g}:{tipo:"atajo",result:g}},informe(a){let i=JSON.parse(JSON.
16
- stringify(a));if(n.onReport)try{n.onReport(i);}catch{s("onreport","[bvsala] `onReport` threw; the error was caught and the model call was not affected.");}return i},avisar:s,close(){o.close();}}}var ue=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,
1
+ import {createMiddleware}from'langchain';import {AIMessage}from'@langchain/core/messages';import {toJsonSchema}from'@langchain/core/utils/json_schema';import {createSavingsLayer,LicenseError}from'@bivelio/savings-layer';import {AsyncLocalStorage}from'async_hooks';var Z={"api.anthropic.com":"anthropic","api.openai.com":"openai","generativelanguage.googleapis.com":"google"};function Y(e){if(typeof e!="string")return null;try{let n=new URL(e);return n.protocol!==
2
+ "https:"||n.port!==""?null:Z[n.hostname.toLowerCase()]??null}catch{return null}}function M(e){return Y(e)!==null?"oficial":"no-oficial"}var T=Symbol.for("@bivelio/savings-layer:provider-origin");var U=new Set;function E(e,n,t){e===true||U.has(n)||(U.add(n),console.warn(t));}var ne="[bvsala] internal: the layer changed a request this adapter must forward unchanged; nothing was sent.",te="[bvsala] internal: the layer asked for a second model call within one framework call;\
3
+ nothing more was sent.",re="[bvsala] internal: the layer called the model outside a framework call; nothing was sent.";function q(e,n,t,r){return {renderizado:e,generar:n,...{},invocada:false,
4
+ completada:false,...r!==void 0?{origen:r}:{}}}async function $(e,n){try{let t=await n();return e.completada=!0,t}catch(t){throw e.errorDelMarco={error:t},t}}function oe(e,n){if(e===n)return true;try{return j(
5
+ e)===j(n)}catch{return false}}function I(e,n){let t=e??[],r=n??[];return t.length===r.length&&t.every((o,a)=>oe(o,r[a]))}function ae(e,n){return e.model===n.model&&I(e.messages,n.messages)&&I(e.tools,n.tools)}
6
+ function z(e,n){let t=o=>{let a=n.getStore();if(!a)throw new Error(re);if(a.invocada)throw new Error(te);if(!ae(o,a.renderizado))throw new Error(ne);return a.invocada=true,a},r={id:`bivelio-adapter:${e}`,
7
+ async generate(o,a){return t(o).generar(a?.signal)},async*generateStream(o,a){let s=t(o);if(s.transmitir){yield*s.transmitir(a?.signal);return}let i=await s.generar(a?.signal);i.text!==""&&(yield {type:"\
8
+ text",delta:i.text}),yield {type:"done",response:i};}};return Object.defineProperty(r,T,{value:()=>n.getStore()?.origen}),r}function N(){return new AsyncLocalStorage}function j(e){return JSON.stringify(O(e))}function O(e){
9
+ if(Array.isArray(e))return e.map(O);if(e&&typeof e=="object"){let n={};for(let t of Object.keys(e).sort())n[t]=O(e[t]);return n}return e}var ce=["licenseKey","licenseServerUrl","serviceAccountKey","licenseRefresh","licenseRevocation","licensePollIntervalSeconds","licenseFetch","metering","meteringUrl","meteringFetch","costModels","defa\
10
+ ultCostModel","exactCache","exactCacheTtlMs","resolvers","exactTokenizer","silenceWarnings","failOpen"];function B(e,n){return n instanceof LicenseError||e.errorDelMarco&&e.errorDelMarco.error===n?false:e.invocada&&
11
+ e.completada}var F="[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 J(e,n){
12
+ let t=N(),r={};for(let s of ce)n[s]!==void 0&&(r[s]=n[s]);let o=createSavingsLayer({...r,provider:z(e,t)}),a=(s,i)=>E(n.silenceWarnings,`${e}:${s}`,i);return {ejecutar(s,i){return t.run(i,()=>o.generate(s))},async generar(s,i){
13
+ try{let c=await t.run(i,()=>o.generate(s));return i.invocada?{tipo:"vivo",result:c}:{tipo:"atajo",result:c}}catch(c){if(B(i,c))return a("sin-informe",F),{tipo:"sin-informe"};throw c}},async transmitir(s,i,c){
14
+ let f=t.run(i,()=>o.generateStream(s,c?{signal:c}:{})).result;i.resultado=f,f.catch(()=>{});let g;try{g=await Promise.race([i.abierta.then(()=>"abierta"),f.then(()=>"resuelta")]);}catch(p){if(B(i,p))return a(
15
+ "sin-informe",F),{tipo:"sin-informe"};throw p}if(g==="abierta")return {tipo:"abierto"};let x=await f;return i.invocada?{tipo:"entero",result:x}:{tipo:"atajo",result:x}},informe(s){let i=JSON.parse(JSON.
16
+ stringify(s));if(n.onReport)try{n.onReport(i);}catch{a("onreport","[bvsala] `onReport` threw; the error was caught and the model call was not affected.");}return i},avisar:a,close(){o.close();}}}var le=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,
17
17
  4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,
18
18
  1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,
19
- 1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),de=new TextEncoder;function x(e,n){return e>>>n|e<<32-n}function B(e){let n=de.encode(e),t=n.length*
20
- 8,r=(n.length+8>>6)+1,o=new Uint8Array(r*64);o.set(n),o[n.length]=128;let s=new DataView(o.buffer);s.setUint32(o.length-8,Math.floor(t/4294967296)),s.setUint32(o.length-4,t>>>0);let a=new Uint32Array(
21
- [1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),i=new Uint32Array(64);for(let f=0;f<o.length;f+=64){for(let c=0;c<16;c++)i[c]=s.getUint32(f+c*4);for(let c=16;c<
22
- 64;c++){let b=i[c-15],y=i[c-2],w=x(b,7)^x(b,18)^b>>>3,S=x(y,17)^x(y,19)^y>>>10;i[c]=i[c-16]+w+i[c-7]+S|0;}let d=a[0],p=a[1],g=a[2],h=a[3],m=a[4],R=a[5],A=a[6],v=a[7];for(let c=0;c<64;c++){let b=x(m,6)^
23
- x(m,11)^x(m,25),y=m&R^~m&A,w=v+b+y+ue[c]+i[c]|0,S=x(d,2)^x(d,13)^x(d,22),Z=d&p^d&g^p&g,Q=S+Z|0;v=A,A=R,R=m,m=h+w|0,h=g,g=p,p=d,d=w+Q|0;}a[0]=a[0]+d|0,a[1]=a[1]+p|0,a[2]=a[2]+g|0,a[3]=a[3]+h|0,a[4]=a[4]+
24
- m|0,a[5]=a[5]+R|0,a[6]=a[6]+A|0,a[7]=a[7]+v|0;}let u="";for(let f=0;f<8;f++)u+=(a[f]>>>0).toString(16).padStart(8,"0");return u}var fe={router:false,compression:false,elision:false,serialization:false,toolDiscovery:false,modelCascade:"off",outputCodebook:false,deferrable:false,semanticCache:false,verification:false};function pe(e,n,t={}){let r=o=>e?.[o]!==
19
+ 1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),ue=new TextEncoder;function y(e,n){return e>>>n|e<<32-n}function Q(e){return de(ue.encode(e))}function de(e){
20
+ let n=e.length*8,t=(e.length+8>>6)+1,r=new Uint8Array(t*64);r.set(e),r[e.length]=128;let o=new DataView(r.buffer);o.setUint32(r.length-8,Math.floor(n/4294967296)),o.setUint32(r.length-4,n>>>0);let a=new Uint32Array(
21
+ [1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),s=new Uint32Array(64);for(let c=0;c<r.length;c+=64){for(let l=0;l<16;l++)s[l]=o.getUint32(c+l*4);for(let l=16;l<
22
+ 64;l++){let m=s[l-15],v=s[l-2],h=y(m,7)^y(m,18)^m>>>3,S=y(v,17)^y(v,19)^v>>>10;s[l]=s[l-16]+h+s[l-7]+S|0;}let d=a[0],f=a[1],g=a[2],x=a[3],p=a[4],w=a[5],b=a[6],R=a[7];for(let l=0;l<64;l++){let m=y(p,6)^
23
+ y(p,11)^y(p,25),v=p&w^~p&b,h=R+m+v+le[l]+s[l]|0,S=y(d,2)^y(d,13)^y(d,22),k=d&f^d&g^f&g,X=S+k|0;R=b,b=w,w=p,p=x+h|0,x=g,g=f,f=d,d=h+X|0;}a[0]=a[0]+d|0,a[1]=a[1]+f|0,a[2]=a[2]+g|0,a[3]=a[3]+x|0,a[4]=a[4]+
24
+ p|0,a[5]=a[5]+w|0,a[6]=a[6]+b|0,a[7]=a[7]+R|0;}let i="";for(let c=0;c<8;c++)i+=(a[c]>>>0).toString(16).padStart(8,"0");return i}var fe={router:false,compression:false,elision:false,serialization:false,toolDiscovery:false,modelCascade:"off",outputCodebook:false,deferrable:false,semanticCache:false,verification:false};function pe(e,n,t={}){let r=o=>e?.[o]!==
25
25
  false&&n?.[o]!==false;return {...fe,exactCache:r("exactCache")&&t.sinReutilizar!==true,singleflight:r("singleflight")&&t.sinReutilizar!==true,deterministicResolvers:r("deterministicResolvers")&&t.sinResolvers!==
26
- true}}function ge(e,n){let t=e.readOnlyTools;if(typeof t=="function")try{return t(n)===!0}catch{return false}return Array.isArray(t)?t.includes(n):false}function M(e,n){let t=n.delProveedor!==true&&ge(e,n.nombre);
26
+ true}}function ge(e,n){let t=e.readOnlyTools;if(typeof t=="function")try{return t(n)===!0}catch{return false}return Array.isArray(t)?t.includes(n):false}function L(e,n){let t=n.delProveedor!==true&&ge(e,n.nombre);
27
27
  return {id:n.nombre,intents:[],risk:t?"read":"write",...n.parametros!==void 0&&n.parametros!==null&&typeof n.parametros=="object"?{parameters:n.parametros}:{},...typeof n.descripcion=="string"?{description:n.
28
28
  descripcion}:{}}}function D(e,n,t){if(e===null)return null;switch(typeof e){case "string":case "boolean":return e;case "number":return Number.isFinite(e)?e:String(e);case "bigint":return `${e.toString()}n`;case "\
29
29
  undefined":case "function":case "symbol":return}let r=e;if(r instanceof Uint8Array)return n.push(r),{$bytes:n.length-1};if(r instanceof ArrayBuffer)return n.push(new Uint8Array(r)),{$bytes:n.length-1};if(ArrayBuffer.
30
30
  isView(r))return n.push(new Uint8Array(r.buffer,r.byteOffset,r.byteLength)),{$bytes:n.length-1};if(r instanceof URL)return {$url:r.href};if(r instanceof Date)return {$date:Number.isNaN(r.getTime())?"inv\
31
- alid":r.toISOString()};if(t.has(r))return "$cycle";t.add(r);try{if(Array.isArray(r))return r.map(s=>{let a=D(s,n,t);return a===void 0?null:a});if(r instanceof Map)return {$map:[...r.entries()].map(s=>D(
32
- s,n,t))};if(r instanceof Set)return {$set:[...r.values()].map(s=>D(s,n,t))};let o={};for(let s of Object.keys(r).sort()){let a=D(r[s],n,t);a!==void 0&&(o[s]=a);}return o}finally{t.delete(r);}}async function W(e){
31
+ alid":r.toISOString()};if(t.has(r))return "$cycle";t.add(r);try{if(Array.isArray(r))return r.map(a=>{let s=D(a,n,t);return s===void 0?null:s});if(r instanceof Map)return {$map:[...r.entries()].map(a=>D(
32
+ a,n,t))};if(r instanceof Set)return {$set:[...r.values()].map(a=>D(a,n,t))};let o={};for(let a of Object.keys(r).sort()){let s=D(r[a],n,t);s!==void 0&&(o[a]=s);}return o}finally{t.delete(r);}}async function V(e){
33
33
  let n=globalThis.crypto?.subtle;if(n){let r=new Uint8Array(await n.digest("SHA-256",e));return Array.from(r,o=>o.toString(16).padStart(2,"0")).join("")}let t="";for(let r=0;r<e.length;r+=32768)t+=String.
34
- fromCharCode(...e.subarray(r,r+32768));return B(t)}async function me(e){try{let n=[],t=JSON.stringify(D(e,n,new WeakSet))??"null",r=await Promise.all(n.map(W)),o=new TextEncoder().encode(`${t}|${r.join(
35
- ",")}`);return await W(o)}catch{return null}}async function K(e,n){let t=await me(n.proyeccion),r=`${n.context?.authorizationScope??"default"}|bvsala-adapter:${t??"none"}`;return {model:n.model,messages:n.
34
+ fromCharCode(...e.subarray(r,r+32768));return Q(t)}async function me(e){try{let n=[],t=JSON.stringify(D(e,n,new WeakSet))??"null",r=await Promise.all(n.map(V)),o=new TextEncoder().encode(`${t}|${r.join(
35
+ ",")}`);return await V(o)}catch{return null}}async function W(e,n){let t=await me(n.proyeccion),r=`${n.context?.authorizationScope??"default"}|bvsala-adapter:${t??"none"}`;return {model:n.model,messages:n.
36
36
  messages,...n.tools.length>0?{tools:n.tools}:{},...typeof n.temperature=="number"?{temperature:n.temperature}:{},...typeof n.seed=="number"?{seed:n.seed}:{},context:{...n.context??{},authorizationScope:r},
37
- savings:pe(e.savings,n.savings,{...n.restricciones,...t===null?{sinReutilizar:true}:{}})}}function l(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function H(e){let n=e;try{if(typeof n.getType=="function")return n.getType();if(typeof n._getType=="function")return n._getType()}catch{}
38
- return typeof n.type=="string"?n.type:""}function _(e){return typeof e=="string"?e:Array.isArray(e)?e.filter(n=>l(n)&&n.type==="text"&&typeof n.text=="string").map(n=>n.text).join(`
39
- `):""}function X(e){if(typeof e=="string")return e;try{return JSON.stringify(e??{})}catch{return "{}"}}function P(e){return (Array.isArray(e.tool_calls)?e.tool_calls:[]).filter(l).map(t=>({...typeof t.id==
40
- "string"?{id:t.id}:{},name:String(t.name??""),arguments:X(t.args)}))}function he(e,n){let t=[],r=_(e?.content);r!==""&&t.push({role:"system",content:r});for(let o of n){if(!l(o))continue;let s=H(o);if(s===
41
- "system")t.push({role:"system",content:_(o.content)});else if(s==="human")t.push({role:"user",content:_(o.content)});else if(s==="ai"){let a=P(o);t.push({role:"assistant",content:_(o.content),...a.length>
42
- 0?{toolCalls:a}:{}});}else s==="tool"&&t.push({role:"tool",content:typeof o.content=="string"?o.content:X(o.content),...typeof o.tool_call_id=="string"?{toolCallId:o.tool_call_id}:{},...typeof o.name==
43
- "string"?{name:o.name}:{}});}return t}function G(e){if(!l(e))return e;let n=e.content,t=H(e),r={};for(let[o,s]of Object.entries(l(e.additional_kwargs)?e.additional_kwargs:{}))o==="tool_calls"||o==="fun\
44
- ction_call"||o.startsWith("__")||(r[o]=s);return {type:t,name:e.name,content:t==="tool"?n:typeof n=="string"?"$text":Array.isArray(n)?n.map(o=>l(o)&&o.type==="text"?{...o,text:void 0,id:void 0}:o):n,tool_calls:P(
45
- e).map(o=>({name:o.name,arguments:o.arguments})),status:e.status,additional_kwargs:r}}function be(e,n){let t=[],r=[];for(let o of n){if(!l(o))continue;if(typeof o.name=="string"&&"schema"in o){let a,i=true;
46
- try{a=toJsonSchema(o.schema);}catch{i=false;}let u=M(e,{nombre:o.name,descripcion:typeof o.description=="string"?o.description:void 0,parametros:a});t.push(i?u:{...u,risk:"write"}),r.push({name:o.name,description:o.
47
- description,parametros:a,returnDirect:o.returnDirect});continue}let s=l(o.function)?o.function:void 0;if(o.type==="function"&&s&&typeof s.name=="string"){t.push(M(e,{nombre:s.name,descripcion:typeof s.
48
- description=="string"?s.description:void 0,parametros:s.parameters})),r.push(o);continue}t.push(M(e,{nombre:String(o.name??o.type??"server-tool"),delProveedor:true})),r.push(o);}return {tools:t,definiciones:r}}
49
- function O(e){try{let n=e._llmType?.();return typeof n=="string"?n:""}catch{return ""}}function we(e){if(typeof e=="string")return e.replace(":","/");let n=e,t=n._defaultConfig;if(t&&typeof t=="object"&&
37
+ savings:pe(e.savings,n.savings,{...n.restricciones,...t===null?{sinReutilizar:true}:{}})}}function u(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function G(e){let n=e;try{if(typeof n.getType=="function")return n.getType();if(typeof n._getType=="function")return n._getType()}catch{}
38
+ return typeof n.type=="string"?n.type:""}function _(e){return typeof e=="string"?e:Array.isArray(e)?e.filter(n=>u(n)&&n.type==="text"&&typeof n.text=="string").map(n=>n.text).join(`
39
+ `):""}function H(e){if(typeof e=="string")return e;try{return JSON.stringify(e??{})}catch{return "{}"}}function C(e){return (Array.isArray(e.tool_calls)?e.tool_calls:[]).filter(u).map(t=>({...typeof t.id==
40
+ "string"?{id:t.id}:{},name:String(t.name??""),arguments:H(t.args)}))}function ve(e,n){let t=[],r=_(e?.content);r!==""&&t.push({role:"system",content:r});for(let o of n){if(!u(o))continue;let a=G(o);if(a===
41
+ "system")t.push({role:"system",content:_(o.content)});else if(a==="human")t.push({role:"user",content:_(o.content)});else if(a==="ai"){let s=C(o);t.push({role:"assistant",content:_(o.content),...s.length>
42
+ 0?{toolCalls:s}:{}});}else a==="tool"&&t.push({role:"tool",content:typeof o.content=="string"?o.content:H(o.content),...typeof o.tool_call_id=="string"?{toolCallId:o.tool_call_id}:{},...typeof o.name==
43
+ "string"?{name:o.name}:{}});}return t}function K(e){if(!u(e))return e;let n=e.content,t=G(e),r={};for(let[o,a]of Object.entries(u(e.additional_kwargs)?e.additional_kwargs:{}))o==="tool_calls"||o==="fun\
44
+ ction_call"||o.startsWith("__")||(r[o]=a);return {type:t,name:e.name,content:t==="tool"?n:typeof n=="string"?"$text":Array.isArray(n)?n.map(o=>u(o)&&o.type==="text"?{...o,text:void 0,id:void 0}:o):n,tool_calls:C(
45
+ e).map(o=>({name:o.name,arguments:o.arguments})),status:e.status,additional_kwargs:r}}function we(e,n){let t=[],r=[];for(let o of n){if(!u(o))continue;if(typeof o.name=="string"&&"schema"in o){let s,i=true;
46
+ try{s=toJsonSchema(o.schema);}catch{i=false;}let c=L(e,{nombre:o.name,descripcion:typeof o.description=="string"?o.description:void 0,parametros:s});t.push(i?c:{...c,risk:"write"}),r.push({name:o.name,description:o.
47
+ description,parametros:s,returnDirect:o.returnDirect});continue}let a=u(o.function)?o.function:void 0;if(o.type==="function"&&a&&typeof a.name=="string"){t.push(L(e,{nombre:a.name,descripcion:typeof a.
48
+ description=="string"?a.description:void 0,parametros:a.parameters})),r.push(o);continue}t.push(L(e,{nombre:String(o.name??o.type??"server-tool"),delProveedor:true})),r.push(o);}return {tools:t,definiciones:r}}
49
+ function P(e){try{let n=e._llmType?.();return typeof n=="string"?n:""}catch{return ""}}function be(e){if(typeof e=="string")return e.replace(":","/");let n=e,t=n._defaultConfig;if(t&&typeof t=="object"&&
50
50
  typeof t.model=="string"&&t.model!=="")return t.model.includes("/")?t.model:typeof t.modelProvider=="string"&&t.modelProvider!==""?`${t.modelProvider}/${t.model}`:t.model;let r=typeof n.model=="string"?
51
- n.model:typeof n.modelName=="string"?n.modelName:"";if(r.includes("/"))return r;let o=O(e);return o!==""?`${o}/${r}`:r}function Se(e){if(!l(e))return;try{if(typeof e.identifyingParams=="function"){let t=e.
52
- identifyingParams.call(e),r=l(t)?t.baseURL:void 0;if(typeof r=="string"&&r!=="")return C(r)}}catch{}let n=e.apiUrl;if(O(e)==="anthropic"&&typeof n=="string"&&n!=="")return C(n)}function Re(e){try{return e.
53
- invocationParams?.({})??null}catch{return null}}function Ae(e){let n=e.toolChoice;return n==="required"||l(n)?true:e.responseFormat!==void 0}function k(e){return typeof e=="number"&&Number.isFinite(e)?e:
54
- void 0}function ke(e,n){let t=l(e.usage_metadata)?e.usage_metadata:void 0,r=k(t?.input_tokens),o=k(t?.output_tokens),s=l(t?.input_token_details)?t.input_token_details:{},a=l(t?.output_token_details)?t.
55
- output_token_details:{},i=k(s.cache_read),u=k(s.cache_creation),f=k(a.reasoning),d=r!==void 0&&(i??0)+(u??0)<=r;return {inputTokens:r??0,outputTokens:o??0,...i!==void 0?{cachedInputTokens:i}:{},...u!==
56
- void 0?{cacheWriteInputTokens:u}:{},...f!==void 0?{reasoningTokens:f}:{},...n&&r!==void 0&&o!==void 0&&d?{}:{complete:false}}}function De(e){let n=l(e.response_metadata)?e.response_metadata:{},t=n.finish_reason??
51
+ n.model:typeof n.modelName=="string"?n.modelName:"";if(r.includes("/"))return r;let o=P(e);return o!==""?`${o}/${r}`:r}function Se(e){if(!u(e))return;try{if(typeof e.identifyingParams=="function"){let t=e.
52
+ identifyingParams.call(e),r=u(t)?t.baseURL:void 0;if(typeof r=="string"&&r!=="")return M(r)}}catch{}let n=e.apiUrl;if(P(e)==="anthropic"&&typeof n=="string"&&n!=="")return M(n)}function Ae(e){try{return e.
53
+ invocationParams?.({})??null}catch{return null}}function Re(e){let n=e.toolChoice;return n==="required"||u(n)?true:e.responseFormat!==void 0}function A(e){return typeof e=="number"&&Number.isFinite(e)?e:
54
+ void 0}function ke(e,n){let t=u(e.usage_metadata)?e.usage_metadata:void 0,r=A(t?.input_tokens),o=A(t?.output_tokens),a=u(t?.input_token_details)?t.input_token_details:{},s=u(t?.output_token_details)?t.
55
+ output_token_details:{},i=A(a.cache_read),c=A(a.cache_creation),d=A(s.reasoning),f=r!==void 0&&(i??0)+(c??0)<=r;return {inputTokens:r??0,outputTokens:o??0,...i!==void 0?{cachedInputTokens:i}:{},...c!==
56
+ void 0?{cacheWriteInputTokens:c}:{},...d!==void 0?{reasoningTokens:d}:{},...n&&r!==void 0&&o!==void 0&&f?{}:{complete:false}}}function De(e){let n=u(e.response_metadata)?e.response_metadata:{},t=n.finish_reason??
57
57
  n.stop_reason??n.finishReason;switch(t){case "end_turn":case "stop":case "STOP":return "stop";case "max_tokens":case "length":case "MAX_TOKENS":return "length";case "tool_use":case "tool_calls":return "tool_call\
58
- s";default:return typeof t=="string"?t:void 0}}function _e(e,n){if(n!=="stop")return false;if(Array.isArray(e.content)){for(let r of e.content)if(!l(r)||r.type!=="text"||Array.isArray(r.citations)&&r.citations.
59
- length>0||Array.isArray(r.annotations)&&r.annotations.length>0)return false}let t=l(e.additional_kwargs)?e.additional_kwargs:{};return !("reasoning"in t||"reasoning_content"in t||"audio"in t)}function Me(e,n){
60
- let t=De(e),r=P(e);return {text:_(e.content),...r.length>0?{toolCalls:r}:{},...t?{finishReason:t}:{},usage:ke(e,n),..._e(e,t)?{}:{replayable:false}}}function Ce(e,n){return new AIMessage({content:e.text,tool_calls:(e.
61
- toolCalls??[]).map((t,r)=>{let o={};try{let s=JSON.parse(t.arguments||"{}");l(s)&&(o=s);}catch{o={};}return {id:t.id??`bvsala-${e.requestId}-${r}`,name:t.name,args:o,type:"tool_call"}}),usage_metadata:{input_tokens:0,
62
- output_tokens:0,total_tokens:0},response_metadata:n?{bivelio:{savingsReport:n}}:{}})}var Le="[bvsala] this LangChain model has its own `cache` set, so a usage counter can be a cached copy rather than \
63
- a provider bill; its calls are reported as unmeasured.";function Xe(e){let n=V("langchain",e),t=e.reportInMetadata!==false,r=createMiddleware({name:"BivelioSavings",wrapModelCall:async(o,s)=>{let a=o,i=a.model,u=O(i),
64
- f=l(i)&&i.cache!==void 0&&i.cache!==null&&i.cache!==false;f&&n.avisar("cache-del-modelo",Le);let d=!u.toLowerCase().includes("fake")&&!f,p=e.modelId?e.modelId(i):we(i),g=Array.isArray(a.messages)?a.messages:
65
- [],{tools:h,definiciones:m}=be(e,Array.isArray(a.tools)?a.tools:[]),R=Ae(a),A=k(i?.temperature),v=await K(e,{model:p,messages:he(a.systemMessage,g),tools:h,temperature:A,context:e.context?.(o),proyeccion:{
66
- modelo:p,parametros:Re(i),sistema:G(a.systemMessage),mensajes:g.map(G),herramientas:m,toolChoice:a.toolChoice,responseFormat:a.responseFormat,modelSettings:a.modelSettings},restricciones:{sinResolvers:R,
67
- sinReutilizar:a.responseFormat!==void 0}}),c,b=q({model:v.model,messages:v.messages,...v.tools?{tools:v.tools}:{}},async()=>(c=await $(b,async()=>s(o)),Me(c,d)),void 0,Se(i)),y=await n.generar(v,b);if(y.
68
- tipo==="sin-informe")return c;let w=n.informe(y.result.report);if(y.tipo==="atajo")return Ce(y.result,t?w:void 0);let S=c;return t&&(S.response_metadata={...S.response_metadata??{},bivelio:{savingsReport:w}}),
69
- S}});return Object.assign(r,{close:()=>n.close()})}function Ze(e){let n=e?.response_metadata,t=l(n)?n.bivelio:void 0,r=l(t)?t.savingsReport:void 0;if(!(!l(r)||typeof r.requestId!="string"))return r}export{Ze as getSavingsReportFromMessage,Xe as savingsAgentMiddleware};
58
+ s";default:return typeof t=="string"?t:void 0}}function _e(e,n){if(n!=="stop")return false;if(Array.isArray(e.content)){for(let r of e.content)if(!u(r)||r.type!=="text"||Array.isArray(r.citations)&&r.citations.
59
+ length>0||Array.isArray(r.annotations)&&r.annotations.length>0)return false}let t=u(e.additional_kwargs)?e.additional_kwargs:{};return !("reasoning"in t||"reasoning_content"in t||"audio"in t)}function Le(e,n){
60
+ let t=De(e),r=C(e);return {text:_(e.content),...r.length>0?{toolCalls:r}:{},...t?{finishReason:t}:{},usage:ke(e,n),..._e(e,t)?{}:{replayable:false}}}function Me(e,n){return new AIMessage({content:e.text,tool_calls:(e.
61
+ toolCalls??[]).map((t,r)=>{let o={};try{let a=JSON.parse(t.arguments||"{}");u(a)&&(o=a);}catch{o={};}return {id:t.id??`bvsala-${e.requestId}-${r}`,name:t.name,args:o,type:"tool_call"}}),usage_metadata:{input_tokens:0,
62
+ output_tokens:0,total_tokens:0},response_metadata:n?{bivelio:{savingsReport:n}}:{}})}var Oe="[bvsala] this LangChain model has its own `cache` set, so a usage counter can be a cached copy rather than \
63
+ a provider bill; its calls are reported as unmeasured.";function He(e){let n=J("langchain",e),t=e.reportInMetadata!==false,r=createMiddleware({name:"BivelioSavings",wrapModelCall:async(o,a)=>{let s=o,i=s.model,c=P(i),
64
+ d=u(i)&&i.cache!==void 0&&i.cache!==null&&i.cache!==false;d&&n.avisar("cache-del-modelo",Oe);let f=!c.toLowerCase().includes("fake")&&!d,g=e.modelId?e.modelId(i):be(i),x=Array.isArray(s.messages)?s.messages:
65
+ [],{tools:p,definiciones:w}=we(e,Array.isArray(s.tools)?s.tools:[]),b=Re(s),R=A(i?.temperature),l=await W(e,{model:g,messages:ve(s.systemMessage,x),tools:p,temperature:R,context:e.context?.(o),proyeccion:{
66
+ modelo:g,parametros:Ae(i),sistema:K(s.systemMessage),mensajes:x.map(K),herramientas:w,toolChoice:s.toolChoice,responseFormat:s.responseFormat,modelSettings:s.modelSettings},restricciones:{sinResolvers:b,
67
+ sinReutilizar:s.responseFormat!==void 0}}),m,v=q({model:l.model,messages:l.messages,...l.tools?{tools:l.tools}:{}},async()=>(m=await $(v,async()=>a(o)),Le(m,f)),void 0,Se(i)),h=await n.generar(l,v);if(h.
68
+ tipo==="sin-informe")return m;let S=n.informe(h.result.report);if(h.tipo==="atajo")return Me(h.result,t?S:void 0);let k=m;return t&&(k.response_metadata={...k.response_metadata??{},bivelio:{savingsReport:S}}),
69
+ k}});return Object.assign(r,{close:()=>n.close()})}function Xe(e){let n=e?.response_metadata,t=u(n)?n.bivelio:void 0,r=u(t)?t.savingsReport:void 0;if(!(!u(r)||typeof r.requestId!="string"))return r}export{Xe as getSavingsReportFromMessage,He as savingsAgentMiddleware};
@@ -1,83 +1,83 @@
1
- import {createSavingsLayer,LicenseError}from'@bivelio/savings-layer';import {AsyncLocalStorage}from'async_hooks';var J=new Set;function V(e,t,n){e===true||J.has(t)||(J.add(t),console.warn(n));}var B=Symbol.for("@bivelio/savings-layer:provider-origin");var ye="[bvsala] internal: the layer changed a request this adapter must forward unchanged; nothing was sent.",xe="[bvsala] internal: the layer asked for a second model call within one framework call;\
2
- nothing more was sent.",be="[bvsala] internal: the layer called the model outside a framework call; nothing was sent.";function H(e,t,n,r){return {renderizado:e,generar:t,...{},invocada:false,
3
- completada:false,...{}}}function he(e,t){if(e===t)return true;try{return G(e)===G(t)}catch{return false}}function W(e,t){let n=e??[],r=t??[];return n.length===r.length&&n.every((s,i)=>he(s,r[i]))}function we(e,t){return e.model===t.
4
- model&&W(e.messages,t.messages)&&W(e.tools,t.tools)}function K(e,t){let n=s=>{let i=t.getStore();if(!i)throw new Error(be);if(i.invocada)throw new Error(xe);if(!we(s,i.renderizado))throw new Error(ye);
5
- return i.invocada=true,i},r={id:`bivelio-adapter:${e}`,async generate(s,i){return n(s).generar(i?.signal)},async*generateStream(s,i){let a=n(s);if(a.transmitir){yield*a.transmitir(i?.signal);return}let o=await a.
6
- generar(i?.signal);o.text!==""&&(yield {type:"text",delta:o.text}),yield {type:"done",response:o};}};return Object.defineProperty(r,B,{value:()=>t.getStore()?.origen}),r}function Z(){return new AsyncLocalStorage}function G(e){
7
- return JSON.stringify(U(e))}function U(e){if(Array.isArray(e))return e.map(U);if(e&&typeof e=="object"){let t={};for(let n of Object.keys(e).sort())t[n]=U(e[n]);return t}return e}var ke=["licenseKey","licenseServerUrl","serviceAccountKey","licenseRefresh","licenseRevocation","licensePollIntervalSeconds","licenseFetch","metering","meteringUrl","meteringFetch","costModels","defa\
8
- ultCostModel","exactCache","exactCacheTtlMs","resolvers","exactTokenizer","silenceWarnings","failOpen"];function Q(e,t){return t instanceof LicenseError||e.errorDelMarco&&e.errorDelMarco.error===t?false:e.invocada&&
9
- e.completada}var X="[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 Y(e,t){
10
- let n=Z(),r={};for(let a of ke)t[a]!==void 0&&(r[a]=t[a]);let s=createSavingsLayer({...r,provider:K(e,n)}),i=(a,o)=>V(t.silenceWarnings,`${e}:${a}`,o);return {ejecutar(a,o){return n.run(o,()=>s.generate(a))},async generar(a,o){
11
- try{let l=await n.run(o,()=>s.generate(a));return o.invocada?{tipo:"vivo",result:l}:{tipo:"atajo",result:l}}catch(l){if(Q(o,l))return i("sin-informe",X),{tipo:"sin-informe"};throw l}},async transmitir(a,o,l){
12
- let d=n.run(o,()=>s.generateStream(a,l?{signal:l}:{})).result;o.resultado=d,d.catch(()=>{});let m;try{m=await Promise.race([o.abierta.then(()=>"abierta"),d.then(()=>"resuelta")]);}catch(p){if(Q(o,p))return i(
13
- "sin-informe",X),{tipo:"sin-informe"};throw p}if(m==="abierta")return {tipo:"abierto"};let c=await d;return o.invocada?{tipo:"entero",result:c}:{tipo:"atajo",result:c}},informe(a){let o=JSON.parse(JSON.
14
- stringify(a));if(t.onReport)try{t.onReport(o);}catch{i("onreport","[bvsala] `onReport` threw; the error was caught and the model call was not affected.");}return o},avisar:i,close(){s.close();}}}function h(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ee(e){return typeof e=="string"?[{type:"text",text:e}]:Array.isArray(e)?e.filter(h):[]}function N(e){return e.filter(t=>t.
15
- type==="text"&&typeof t.text=="string").map(t=>t.text).join(`
16
- `)}function P(e){if(typeof e=="string")return e;try{return JSON.stringify(e??{})}catch{return "{}"}}function Ae(e){if(!h(e))return P(e);switch(e.type){case "text":case "error-text":return typeof e.value==
17
- "string"?e.value:P(e.value);case "json":case "error-json":return P(e.value);case "execution-denied":return `execution denied${typeof e.reason=="string"?`: ${e.reason}`:""}`;case "content":return N(t(e.value));default:
18
- return P(e)}function t(n){return Array.isArray(n)?n.filter(h):[]}}function te(e){let t=[];for(let n of Array.isArray(e)?e:[]){if(!h(n))continue;let r=ee(n.content);switch(n.role){case "system":t.push({
19
- role:"system",content:typeof n.content=="string"?n.content:N(r)});break;case "user":t.push({role:"user",content:N(r)});break;case "assistant":{let s=r.filter(i=>i.type==="tool-call"&&i.providerExecuted!==
20
- true).map(i=>({...typeof i.toolCallId=="string"?{id:i.toolCallId}:{},name:String(i.toolName??""),arguments:P(i.input??i.args)}));t.push({role:"assistant",content:N(r),...s.length>0?{toolCalls:s}:{}});break}case "\
1
+ import {createSavingsLayer,LicenseError}from'@bivelio/savings-layer';import {AsyncLocalStorage}from'async_hooks';var B=new Set;function F(e,t,n){e===true||B.has(t)||(B.add(t),console.warn(n));}var J=Symbol.for("@bivelio/savings-layer:provider-origin");var ve="[bvsala] internal: the layer changed a request this adapter must forward unchanged; nothing was sent.",xe="[bvsala] internal: the layer asked for a second model call within one framework call;\
2
+ nothing more was sent.",he="[bvsala] internal: the layer called the model outside a framework call; nothing was sent.";function W(e,t,n,r){return {renderizado:e,generar:t,...{},invocada:false,
3
+ completada:false,...{}}}function be(e,t){if(e===t)return true;try{return Q(e)===Q(t)}catch{return false}}function V(e,t){let n=e??[],r=t??[];return n.length===r.length&&n.every((s,o)=>be(s,r[o]))}function we(e,t){return e.model===t.
4
+ model&&V(e.messages,t.messages)&&V(e.tools,t.tools)}function G(e,t){let n=s=>{let o=t.getStore();if(!o)throw new Error(he);if(o.invocada)throw new Error(xe);if(!we(s,o.renderizado))throw new Error(ve);
5
+ return o.invocada=true,o},r={id:`bivelio-adapter:${e}`,async generate(s,o){return n(s).generar(o?.signal)},async*generateStream(s,o){let i=n(s);if(i.transmitir){yield*i.transmitir(o?.signal);return}let a=await i.
6
+ generar(o?.signal);a.text!==""&&(yield {type:"text",delta:a.text}),yield {type:"done",response:a};}};return Object.defineProperty(r,J,{value:()=>t.getStore()?.origen}),r}function H(){return new AsyncLocalStorage}function Q(e){
7
+ return JSON.stringify(z(e))}function z(e){if(Array.isArray(e))return e.map(z);if(e&&typeof e=="object"){let t={};for(let n of Object.keys(e).sort())t[n]=z(e[n]);return t}return e}var ke=["licenseKey","licenseServerUrl","serviceAccountKey","licenseRefresh","licenseRevocation","licensePollIntervalSeconds","licenseFetch","metering","meteringUrl","meteringFetch","costModels","defa\
8
+ ultCostModel","exactCache","exactCacheTtlMs","resolvers","exactTokenizer","silenceWarnings","failOpen"];function K(e,t){return t instanceof LicenseError||e.errorDelMarco&&e.errorDelMarco.error===t?false:e.invocada&&
9
+ e.completada}var Z="[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 X(e,t){
10
+ let n=H(),r={};for(let i of ke)t[i]!==void 0&&(r[i]=t[i]);let s=createSavingsLayer({...r,provider:G(e,n)}),o=(i,a)=>F(t.silenceWarnings,`${e}:${i}`,a);return {ejecutar(i,a){return n.run(a,()=>s.generate(i))},async generar(i,a){
11
+ try{let l=await n.run(a,()=>s.generate(i));return a.invocada?{tipo:"vivo",result:l}:{tipo:"atajo",result:l}}catch(l){if(K(a,l))return o("sin-informe",Z),{tipo:"sin-informe"};throw l}},async transmitir(i,a,l){
12
+ let d=n.run(a,()=>s.generateStream(i,l?{signal:l}:{})).result;a.resultado=d,d.catch(()=>{});let m;try{m=await Promise.race([a.abierta.then(()=>"abierta"),d.then(()=>"resuelta")]);}catch(p){if(K(a,p))return o(
13
+ "sin-informe",Z),{tipo:"sin-informe"};throw p}if(m==="abierta")return {tipo:"abierto"};let u=await d;return a.invocada?{tipo:"entero",result:u}:{tipo:"atajo",result:u}},informe(i){let a=JSON.parse(JSON.
14
+ stringify(i));if(t.onReport)try{t.onReport(a);}catch{o("onreport","[bvsala] `onReport` threw; the error was caught and the model call was not affected.");}return a},avisar:o,close(){s.close();}}}function h(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Y(e){return typeof e=="string"?[{type:"text",text:e}]:Array.isArray(e)?e.filter(h):[]}function j(e){return e.filter(t=>t.type===
15
+ "text"&&typeof t.text=="string").map(t=>t.text).join(`
16
+ `)}function A(e){if(typeof e=="string")return e;try{return JSON.stringify(e??{})}catch{return "{}"}}function Ae(e){if(!h(e))return A(e);switch(e.type){case "text":case "error-text":return typeof e.value==
17
+ "string"?e.value:A(e.value);case "json":case "error-json":return A(e.value);case "execution-denied":return `execution denied${typeof e.reason=="string"?`: ${e.reason}`:""}`;case "content":return j(t(e.value));default:
18
+ return A(e)}function t(n){return Array.isArray(n)?n.filter(h):[]}}function ee(e){let t=[];for(let n of Array.isArray(e)?e:[]){if(!h(n))continue;let r=Y(n.content);switch(n.role){case "system":t.push({role:"\
19
+ system",content:typeof n.content=="string"?n.content:j(r)});break;case "user":t.push({role:"user",content:j(r)});break;case "assistant":{let s=r.filter(o=>o.type==="tool-call"&&o.providerExecuted!==true).
20
+ map(o=>({...typeof o.toolCallId=="string"?{id:o.toolCallId}:{},name:String(o.toolName??""),arguments:A(o.input??o.args)}));t.push({role:"assistant",content:j(r),...s.length>0?{toolCalls:s}:{}});break}case "\
21
21
  tool":for(let s of r)s.type==="tool-result"&&t.push({role:"tool",content:Ae(s.output??s.result),...typeof s.toolCallId=="string"?{toolCallId:s.toolCallId}:{},...typeof s.toolName=="string"?{name:s.toolName}:
22
- {}});break}}return t}var De=new Set(["bivelio","mastra"]);function T(e){if(!h(e))return e;let t={};for(let[n,r]of Object.entries(e))De.has(n)||(t[n]=r);return t}function Pe(e){let t={};for(let[n,r]of Object.
23
- entries(e))if(!(n==="toolCallId"||n==="id")&&!(n==="text"&&e.type==="text")){if(n==="providerOptions"||n==="providerMetadata"){t[n]=T(r);continue}t[n]=r;}return t}function ne(e){return (Array.isArray(e)?
24
- e:[]).map(t=>h(t)?{role:t.role,content:typeof t.content=="string"?"$text":ee(t.content).map(Pe),providerOptions:T(t.providerOptions)}:t)}var Ce=new Set(["anthropic-beta","openai-beta"]);function re(e){
25
- if(!h(e))return;let t={};for(let[n,r]of Object.entries(e))Ce.has(n.toLowerCase())&&r!==void 0&&(t[n.toLowerCase()]=r);return Object.keys(t).length>0?t:void 0}function D(e){return typeof e=="number"&&Number.isFinite(e)?e:void 0}function oe(e,t){let n=h(e)?e:{},r=h(n.inputTokens)?n.inputTokens:void 0,s=h(n.outputTokens)?n.outputTokens:void 0;if(!r||!s){let m=D(
26
- n.inputTokens),c=D(n.outputTokens);return {inputTokens:m??0,outputTokens:c??0,complete:false}}let i=D(r.total),a=D(r.cacheRead),o=D(r.cacheWrite),l=D(s.total),u=D(s.reasoning);return {inputTokens:i??0,outputTokens:l??
27
- 0,...a!==void 0?{cachedInputTokens:a}:{},...o!==void 0?{cacheWriteInputTokens:o}:{},...u!==void 0?{reasoningTokens:u}:{},...i!==void 0&&l!==void 0&&!t?{}:{complete:false}}}function ae(e){switch(e){case void 0:return;case "tool-calls":return "tool_calls";case "content-filter":return "content_filter";default:return e}}function se(e){let t=String(e.modelId??"");if(t.includes("/"))return t;let n=String(e.provider??"").split(".")[0]??"";return n!==""?`${n}/${t}`:t}function ie(e){return typeof e.provider=="string"&&e.provider.
22
+ {}});break}}return t}var De=new Set(["bivelio","mastra"]);function O(e){if(!h(e))return e;let t={};for(let[n,r]of Object.entries(e))De.has(n)||(t[n]=r);return t}function Pe(e){let t={};for(let[n,r]of Object.
23
+ entries(e))if(!(n==="toolCallId"||n==="id")&&!(n==="text"&&e.type==="text")){if(n==="providerOptions"||n==="providerMetadata"){t[n]=O(r);continue}t[n]=r;}return t}function te(e){return (Array.isArray(e)?
24
+ e:[]).map(t=>h(t)?{role:t.role,content:typeof t.content=="string"?"$text":Y(t.content).map(Pe),providerOptions:O(t.providerOptions)}:t)}var Ce=new Set(["anthropic-beta","openai-beta"]);function ne(e){
25
+ if(!h(e))return;let t={};for(let[n,r]of Object.entries(e))Ce.has(n.toLowerCase())&&r!==void 0&&(t[n.toLowerCase()]=r);return Object.keys(t).length>0?t:void 0}function k(e){return typeof e=="number"&&Number.isFinite(e)?e:void 0}function re(e,t){let n=h(e)?e:{},r=h(n.inputTokens)?n.inputTokens:void 0,s=h(n.outputTokens)?n.outputTokens:void 0;if(!r||!s){let m=k(
26
+ n.inputTokens),u=k(n.outputTokens);return {inputTokens:m??0,outputTokens:u??0,complete:false}}let o=k(r.total),i=k(r.cacheRead),a=k(r.cacheWrite),l=k(s.total),c=k(s.reasoning);return {inputTokens:o??0,outputTokens:l??
27
+ 0,...i!==void 0?{cachedInputTokens:i}:{},...a!==void 0?{cacheWriteInputTokens:a}:{},...c!==void 0?{reasoningTokens:c}:{},...o!==void 0&&l!==void 0&&!t?{}:{complete:false}}}function oe(e){switch(e){case void 0:return;case "tool-calls":return "tool_calls";case "content-filter":return "content_filter";default:return e}}function ae(e){let t=String(e.modelId??"");if(t.includes("/"))return t;let n=String(e.provider??"").split(".")[0]??"";return n!==""?`${n}/${t}`:t}function se(e){return typeof e.provider=="string"&&e.provider.
28
28
  toLowerCase().startsWith("mock")}var Oe=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,
29
29
  4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,
30
30
  1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,
31
- 1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Te=new TextEncoder;function w(e,t){return e>>>t|e<<32-t}function le(e){let t=Te.encode(e),n=t.length*
32
- 8,r=(t.length+8>>6)+1,s=new Uint8Array(r*64);s.set(t),s[t.length]=128;let i=new DataView(s.buffer);i.setUint32(s.length-8,Math.floor(n/4294967296)),i.setUint32(s.length-4,n>>>0);let a=new Uint32Array(
33
- [1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),o=new Uint32Array(64);for(let u=0;u<s.length;u+=64){for(let f=0;f<16;f++)o[f]=i.getUint32(u+f*4);for(let f=16;f<
34
- 64;f++){let y=o[f-15],S=o[f-2],A=w(y,7)^w(y,18)^y>>>3,C=w(S,17)^w(S,19)^S>>>10;o[f]=o[f-16]+A+o[f-7]+C|0;}let d=a[0],m=a[1],c=a[2],p=a[3],v=a[4],b=a[5],k=a[6],R=a[7];for(let f=0;f<64;f++){let y=w(v,6)^
35
- w(v,11)^w(v,25),S=v&b^~v&k,A=R+y+S+Oe[f]+o[f]|0,C=w(d,2)^w(d,13)^w(d,22),E=d&m^d&c^m&c,z=C+E|0;R=k,k=b,b=v,v=p+A|0,p=c,c=m,m=d,d=A+z|0;}a[0]=a[0]+d|0,a[1]=a[1]+m|0,a[2]=a[2]+c|0,a[3]=a[3]+p|0,a[4]=a[4]+
36
- v|0,a[5]=a[5]+b|0,a[6]=a[6]+k|0,a[7]=a[7]+R|0;}let l="";for(let u=0;u<8;u++)l+=(a[u]>>>0).toString(16).padStart(8,"0");return l}var Le={router:false,compression:false,elision:false,serialization:false,toolDiscovery:false,modelCascade:"off",outputCodebook:false,deferrable:false,semanticCache:false,verification:false};function Me(e,t,n={}){let r=s=>e?.[s]!==
37
- false&&t?.[s]!==false;return {...Le,exactCache:r("exactCache")&&n.sinReutilizar!==true,singleflight:r("singleflight")&&n.sinReutilizar!==true,deterministicResolvers:r("deterministicResolvers")&&n.sinResolvers!==
38
- true}}function Ee(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 ue(e,t){let n=t.delProveedor!==true&&Ee(e,t.nombre);
31
+ 1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Le=new TextEncoder;function b(e,t){return e>>>t|e<<32-t}function ie(e){return Te(Le.encode(e))}function Te(e){
32
+ let t=e.length*8,n=(e.length+8>>6)+1,r=new Uint8Array(n*64);r.set(e),r[e.length]=128;let s=new DataView(r.buffer);s.setUint32(r.length-8,Math.floor(t/4294967296)),s.setUint32(r.length-4,t>>>0);let o=new Uint32Array(
33
+ [1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),i=new Uint32Array(64);for(let l=0;l<r.length;l+=64){for(let f=0;f<16;f++)i[f]=s.getUint32(l+f*4);for(let f=16;f<
34
+ 64;f++){let R=i[f-15],y=i[f-2],S=b(R,7)^b(R,18)^R>>>3,P=b(y,17)^b(y,19)^y>>>10;i[f]=i[f-16]+S+i[f-7]+P|0;}let c=o[0],d=o[1],m=o[2],u=o[3],p=o[4],w=o[5],x=o[6],D=o[7];for(let f=0;f<64;f++){let R=b(p,6)^
35
+ b(p,11)^b(p,25),y=p&w^~p&x,S=D+R+y+Oe[f]+i[f]|0,P=b(c,2)^b(c,13)^b(c,22),U=c&d^c&m^d&m,E=P+U|0;D=x,x=w,w=p,p=u+S|0,u=m,m=d,d=c,c=S+E|0;}o[0]=o[0]+c|0,o[1]=o[1]+d|0,o[2]=o[2]+m|0,o[3]=o[3]+u|0,o[4]=o[4]+
36
+ p|0,o[5]=o[5]+w|0,o[6]=o[6]+x|0,o[7]=o[7]+D|0;}let a="";for(let l=0;l<8;l++)a+=(o[l]>>>0).toString(16).padStart(8,"0");return a}var Ee={router:false,compression:false,elision:false,serialization:false,toolDiscovery:false,modelCascade:"off",outputCodebook:false,deferrable:false,semanticCache:false,verification:false};function Me(e,t,n={}){let r=s=>e?.[s]!==
37
+ false&&t?.[s]!==false;return {...Ee,exactCache:r("exactCache")&&n.sinReutilizar!==true,singleflight:r("singleflight")&&n.sinReutilizar!==true,deterministicResolvers:r("deterministicResolvers")&&n.sinResolvers!==
38
+ true}}function Ie(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 ce(e,t){let n=t.delProveedor!==true&&Ie(e,t.nombre);
39
39
  return {id:t.nombre,intents:[],risk:n?"read":"write",...t.parametros!==void 0&&t.parametros!==null&&typeof t.parametros=="object"?{parameters:t.parametros}:{},...typeof t.descripcion=="string"?{description:t.
40
40
  descripcion}:{}}}function L(e,t,n){if(e===null)return null;switch(typeof e){case "string":case "boolean":return e;case "number":return Number.isFinite(e)?e:String(e);case "bigint":return `${e.toString()}n`;case "\
41
41
  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)return t.push(new Uint8Array(r)),{$bytes:t.length-1};if(ArrayBuffer.
42
42
  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};if(r instanceof Date)return {$date:Number.isNaN(r.getTime())?"inv\
43
- alid":r.toISOString()};if(n.has(r))return "$cycle";n.add(r);try{if(Array.isArray(r))return r.map(i=>{let a=L(i,t,n);return a===void 0?null:a});if(r instanceof Map)return {$map:[...r.entries()].map(i=>L(
44
- i,t,n))};if(r instanceof Set)return {$set:[...r.values()].map(i=>L(i,t,n))};let s={};for(let i of Object.keys(r).sort()){let a=L(r[i],t,n);a!==void 0&&(s[i]=a);}return s}finally{n.delete(r);}}async function ce(e){
43
+ alid":r.toISOString()};if(n.has(r))return "$cycle";n.add(r);try{if(Array.isArray(r))return r.map(o=>{let i=L(o,t,n);return i===void 0?null:i});if(r instanceof Map)return {$map:[...r.entries()].map(o=>L(
44
+ o,t,n))};if(r instanceof Set)return {$set:[...r.values()].map(o=>L(o,t,n))};let s={};for(let o of Object.keys(r).sort()){let i=L(r[o],t,n);i!==void 0&&(s[o]=i);}return s}finally{n.delete(r);}}async function le(e){
45
45
  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(2,"0")).join("")}let n="";for(let r=0;r<e.length;r+=32768)n+=String.
46
- fromCharCode(...e.subarray(r,r+32768));return le(n)}async function Ie(e){try{let t=[],n=JSON.stringify(L(e,t,new WeakSet))??"null",r=await Promise.all(t.map(ce)),s=new TextEncoder().encode(`${n}|${r.join(
47
- ",")}`);return await ce(s)}catch{return null}}async function de(e,t){let n=await Ie(t.proyeccion),r=`${t.context?.authorizationScope??"default"}|bvsala-adapter:${n??"none"}`;return {model:t.model,messages:t.
46
+ fromCharCode(...e.subarray(r,r+32768));return ie(n)}async function qe(e){try{let t=[],n=JSON.stringify(L(e,t,new WeakSet))??"null",r=await Promise.all(t.map(le)),s=new TextEncoder().encode(`${n}|${r.join(
47
+ ",")}`);return await le(s)}catch{return null}}async function ue(e,t){let n=await qe(t.proyeccion),r=`${t.context?.authorizationScope??"default"}|bvsala-adapter:${n??"none"}`;return {model:t.model,messages:t.
48
48
  messages,...t.tools.length>0?{tools:t.tools}:{},...typeof t.temperature=="number"?{temperature:t.temperature}:{},...typeof t.seed=="number"?{seed:t.seed}:{},context:{...t.context??{},authorizationScope:r},
49
- savings:Me(e.savings,t.savings,{...t.restricciones,...n===null?{sinReutilizar:true}:{}})}}function pe(e,t){if(!(!e&&!t))return {...e??{},...t??{}}}function fe(e){if(!e||typeof e!="object")return {};let t=e,
50
- n={};return t.context&&typeof t.context=="object"&&(n.context=t.context),t.savings&&typeof t.savings=="object"&&(n.savings=t.savings),n}function g(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var ge="bivelio.paso",M="bivelio.pendiente";function me(e){for(let t of [e.parameters,e.inputSchema]){if(g(t)&&g(t.jsonSchema))return {
51
- esquema:t.jsonSchema,legible:true};if(g(t)&&(t.type==="object"||g(t.properties)))return {esquema:t,legible:true}}return {legible:false}}function qe(e){let t=[],n=false,r=Array.isArray(e.activeTools)?new Set(e.activeTools.
52
- map(String)):void 0;for(let[a,o]of Object.entries(g(e.tools)?e.tools:{})){if(r&&!r.has(a)||!g(o))continue;let{esquema:l,legible:u}=me(o),d=u;try{JSON.stringify(l);}catch{d=false;}d||(n=true),t.push({nombre:a,
53
- ...typeof o.description=="string"?{descripcion:o.description}:{},...d?{parametros:l}:{},delProveedor:o.type==="provider-defined"||o.type==="provider"});}let s=g(e.structuredOutput)?e.structuredOutput:void 0,
54
- i;if(s){let{esquema:a}=me({inputSchema:s.schema});i=a??true;}return {paso:typeof e.stepNumber=="number"?e.stepNumber:-1,herramientas:t,esquemaIlegible:n,toolChoice:e.toolChoice,activeTools:e.activeTools,providerOptions:e.
55
- providerOptions,modelSettings:e.modelSettings,...i!==void 0?{salidaEstructurada:i}:{}}}function je(e){if(!g(e))return;let t={};for(let[n,r]of Object.entries(e))n==="maxRetries"||n==="abortSignal"||n===
56
- "headers"||(t[n]=r);return t.headers=re(e.headers),t}function Ne(e,t){let n="",r=[],s=true,i;for(let c of e){if(!g(c))continue;let p=g(c.payload)?c.payload:{};switch(c.type){case "error":return {error:p.error??
49
+ savings:Me(e.savings,t.savings,{...t.restricciones,...n===null?{sinReutilizar:true}:{}})}}function de(e,t){if(!(!e&&!t))return {...e??{},...t??{}}}function pe(e){if(!e||typeof e!="object")return {};let t=e,
50
+ n={};return t.context&&typeof t.context=="object"&&(n.context=t.context),t.savings&&typeof t.savings=="object"&&(n.savings=t.savings),n}function g(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var fe="bivelio.paso",T="bivelio.pendiente";function ge(e){for(let t of [e.parameters,e.inputSchema]){if(g(t)&&g(t.jsonSchema))return {
51
+ esquema:t.jsonSchema,legible:true};if(g(t)&&(t.type==="object"||g(t.properties)))return {esquema:t,legible:true}}return {legible:false}}function je(e){let t=[],n=false,r=Array.isArray(e.activeTools)?new Set(e.activeTools.
52
+ map(String)):void 0;for(let[i,a]of Object.entries(g(e.tools)?e.tools:{})){if(r&&!r.has(i)||!g(a))continue;let{esquema:l,legible:c}=ge(a),d=c;try{JSON.stringify(l);}catch{d=false;}d||(n=true),t.push({nombre:i,
53
+ ...typeof a.description=="string"?{descripcion:a.description}:{},...d?{parametros:l}:{},delProveedor:a.type==="provider-defined"||a.type==="provider"});}let s=g(e.structuredOutput)?e.structuredOutput:void 0,
54
+ o;if(s){let{esquema:i}=ge({inputSchema:s.schema});o=i??true;}return {paso:typeof e.stepNumber=="number"?e.stepNumber:-1,herramientas:t,esquemaIlegible:n,toolChoice:e.toolChoice,activeTools:e.activeTools,providerOptions:e.
55
+ providerOptions,modelSettings:e.modelSettings,...o!==void 0?{salidaEstructurada:o}:{}}}function Ue(e){if(!g(e))return;let t={};for(let[n,r]of Object.entries(e))n==="maxRetries"||n==="abortSignal"||n===
56
+ "headers"||(t[n]=r);return t.headers=ne(e.headers),t}function Ne(e,t){let n="",r=[],s=true,o;for(let u of e){if(!g(u))continue;let p=g(u.payload)?u.payload:{};switch(u.type){case "error":return {error:p.error??
57
57
  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}:
58
- {},name:String(p.toolName??""),arguments:P(p.args??p.input)});break;case "reasoning-start":case "reasoning-delta":case "reasoning-end":g(p.providerMetadata)&&Object.keys(T(p.providerMetadata)).length>0&&
59
- (s=false);break;case "finish":i=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-\
60
- end":case "raw":break;default:s=false;}}let a=g(i?.stepResult)?i.stepResult:{},o=typeof a.reason=="string"?a.reason:void 0,l=ae(o),u=g(i?.output)?i.output:{},d=g(u.usage)?u.usage:void 0,m=oe(d?.raw,t);return {
61
- text:n,...r.length>0?{toolCalls:r}:{},...l?{finishReason:l}:{},usage:i?m:{inputTokens:0,outputTokens:0,complete:false},...s&&o==="stop"?{}:{replayable:false}}}function ze(e,t,n){let r=`bvsala-${e.requestId}`,
58
+ {},name:String(p.toolName??""),arguments:A(p.args??p.input)});break;case "reasoning-start":case "reasoning-delta":case "reasoning-end":g(p.providerMetadata)&&Object.keys(O(p.providerMetadata)).length>0&&
59
+ (s=false);break;case "finish":o=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-\
60
+ end":case "raw":break;default:s=false;}}let i=g(o?.stepResult)?o.stepResult:{},a=typeof i.reason=="string"?i.reason:void 0,l=oe(a),c=g(o?.output)?o.output:{},d=g(c.usage)?c.usage:void 0,m=re(d?.raw,t);return {
61
+ text:n,...r.length>0?{toolCalls:r}:{},...l?{finishReason:l}:{},usage:o?m:{inputTokens:0,outputTokens:0,complete:false},...s&&a==="stop"?{}:{replayable:false}}}function ze(e,t,n){let r=`bvsala-${e.requestId}`,
62
62
  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,
63
63
  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??
64
- []).forEach((a,o)=>{let l={};try{l=JSON.parse(a.arguments||"{}");}catch{l={};}s.push({type:"tool-call",payload:{toolCallId:a.id??`${r}-${o}`,toolName:a.name,args:l}});});let i=(e.toolCalls?.length??0)>0;
65
- return s.push({type:"finish",payload:{type:"finish",stepResult:{reason:i?"tool-calls":"stop"},output:{usage:{inputTokens:0,outputTokens:0,totalTokens:0}},metadata:t?{providerMetadata:{bivelio:{savingsReport:t}}}:
66
- {},messages:{all:[],user:[],nonUser:[]}}}),s}var $e=900*1e3;function ot(e){let t=Y("mastra",e),n=Math.max(1,e.providerTimeoutMs??$e),r=new Map,s=0,i=(o,l)=>{let u=r.get(o);u&&(r.delete(o),clearTimeout(
67
- u.plazo),u.signal&&u.alAbortar&&u.signal.removeEventListener("abort",u.alAbortar),u.llamada.errorDelMarco={error:l},u.rechazar(l));};return {id:"bivelio-savings",name:"BiVelio savings",processInputStep(o){
68
- let l=o.state;l[ge]=qe(o),typeof o.messageId=="string"&&(l["bivelio.messageId"]=o.messageId);},async processLLMRequest(o){let l=o.state,u=g(o.model)?o.model:{},d=typeof o.stepNumber=="number"?o.stepNumber:
69
- -1,m=l[ge],c=m&&m.paso===d?m:void 0,p=e.modelId?e.modelId({provider:String(u.provider??""),modelId:String(u.modelId??"")}):se(u),v=(c?.herramientas??[]).map(x=>ue(e,{nombre:x.nombre,descripcion:x.descripcion,
70
- parametros:x.parametros,delProveedor:x.delProveedor})),b=g(c?.modelSettings)?c.modelSettings:{},k=fe(g(c?.providerOptions)?c.providerOptions.bivelio:void 0),R=c?.toolChoice,f=R==="required"||g(R)&&(R.
71
- type==="tool"||R.type==="required"),y=await de(e,{model:p,messages:te(o.prompt),tools:v,temperature:typeof b.temperature=="number"?b.temperature:void 0,seed:typeof b.seed=="number"?b.seed:void 0,context:pe(
72
- e.context?.({requestContext:o.requestContext}),k.context),savings:{...k.savings,singleflight:false},proyeccion:{modelo:p,prompt:ne(o.prompt),herramientas:c?.herramientas??null,toolChoice:c?.toolChoice,activeTools:c?.
73
- activeTools,providerOptions:T(c?.providerOptions),ajustes:je(c?.modelSettings),salidaEstructurada:c?.salidaEstructurada},restricciones:{sinResolvers:c===void 0||f||c.salidaEstructurada!==void 0,sinReutilizar:c===
74
- void 0||c.esquemaIlegible}}),S,A,C=new Promise((x,$)=>{S=x,A=$;}),E,z=new Promise(x=>{E=()=>x("invocada");}),_=H({model:y.model,messages:y.messages,...y.tools?{tools:y.tools}:{}},()=>(E(),C)),I=t.ejecutar(
75
- y,_);if(I.catch(()=>{}),await Promise.race([z,I.then(()=>"resuelta")])==="resuelta"){let x=await I,$=t.informe(x.report);return {response:{chunks:ze(x,$,l["bivelio.messageId"])}}}let q=`bvsala-${++s}-${Date.
76
- now().toString(36)}`,F=setTimeout(()=>i(q,new Error("[bvsala] Mastra never reported this model call back; nothing was recorded.")),n);F.unref?.();let O={resolver:S,rechazar:A,llamada:_,resultado:I,plazo:F},
77
- j=o.abortSignal instanceof AbortSignal?o.abortSignal:void 0;j&&(O.signal=j,O.alAbortar=()=>i(q,new Error("[bvsala] the model call was aborted; nothing was recorded.")),j.aborted?O.alAbortar():j.addEventListener(
78
- "abort",O.alAbortar,{once:true})),r.set(q,O),l[M]=q;},async processLLMResponse(o){if(o.fromCache===true)return;let l=o.state,u=l[M];if(delete l[M],typeof u!="string")return;let d=r.get(u);if(!d)return;r.delete(
79
- u),clearTimeout(d.plazo),d.signal&&d.alAbortar&&d.signal.removeEventListener("abort",d.alAbortar);let m=g(o.model)?o.model:{},c=Ne(Array.isArray(o.chunks)?o.chunks:[],ie(m));if("error"in c){d.llamada.
80
- errorDelMarco={error:c.error},d.rechazar(c.error);return}d.llamada.completada=true,d.resolver(c);try{let p=await d.resultado,v=t.informe(p.report);e.emitReportPart===!0&&await o.writer?.custom?.({type:"\
81
- data-bivelio-savings-report",data:v});}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\
82
- and without a usage record.");}},processAPIError(o){let l=o.state,u=l[M];typeof u=="string"&&(delete l[M],i(u,o.error??new Error("[bvsala] the model call failed")));},close(){for(let o of [...r.keys()])
83
- i(o,new Error("[bvsala] the savings layer was closed; nothing was recorded."));t.close();}}}export{ot as savingsProcessor};
64
+ []).forEach((i,a)=>{let l={};try{l=JSON.parse(i.arguments||"{}");}catch{l={};}s.push({type:"tool-call",payload:{toolCallId:i.id??`${r}-${a}`,toolName:i.name,args:l}});});let o=(e.toolCalls?.length??0)>0;
65
+ return s.push({type:"finish",payload:{type:"finish",stepResult:{reason:o?"tool-calls":"stop"},output:{usage:{inputTokens:0,outputTokens:0,totalTokens:0}},metadata:t?{providerMetadata:{bivelio:{savingsReport:t}}}:
66
+ {},messages:{all:[],user:[],nonUser:[]}}}),s}var $e=900*1e3;function at(e){let t=X("mastra",e),n=Math.max(1,e.providerTimeoutMs??$e),r=new Map,s=0,o=(a,l)=>{let c=r.get(a);c&&(r.delete(a),clearTimeout(
67
+ 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(a){
68
+ let l=a.state;l[fe]=je(a),typeof a.messageId=="string"&&(l["bivelio.messageId"]=a.messageId);},async processLLMRequest(a){let l=a.state,c=g(a.model)?a.model:{},d=typeof a.stepNumber=="number"?a.stepNumber:
69
+ -1,m=l[fe],u=m&&m.paso===d?m:void 0,p=e.modelId?e.modelId({provider:String(c.provider??""),modelId:String(c.modelId??"")}):ae(c),w=(u?.herramientas??[]).map(v=>ce(e,{nombre:v.nombre,descripcion:v.descripcion,
70
+ parametros:v.parametros,delProveedor:v.delProveedor})),x=g(u?.modelSettings)?u.modelSettings:{},D=pe(g(u?.providerOptions)?u.providerOptions.bivelio:void 0),f=u?.toolChoice,R=f==="required"||g(f)&&(f.
71
+ type==="tool"||f.type==="required"),y=await ue(e,{model:p,messages:ee(a.prompt),tools:w,temperature:typeof x.temperature=="number"?x.temperature:void 0,seed:typeof x.seed=="number"?x.seed:void 0,context:de(
72
+ e.context?.({requestContext:a.requestContext}),D.context),savings:{...D.savings,singleflight:false},proyeccion:{modelo:p,prompt:te(a.prompt),herramientas:u?.herramientas??null,toolChoice:u?.toolChoice,activeTools:u?.
73
+ activeTools,providerOptions:O(u?.providerOptions),ajustes:Ue(u?.modelSettings),salidaEstructurada:u?.salidaEstructurada},restricciones:{sinResolvers:u===void 0||R||u.salidaEstructurada!==void 0,sinReutilizar:u===
74
+ void 0||u.esquemaIlegible}}),S,P,U=new Promise((v,N)=>{S=v,P=N;}),E,me=new Promise(v=>{E=()=>v("invocada");}),$=W({model:y.model,messages:y.messages,...y.tools?{tools:y.tools}:{}},()=>(E(),U)),M=t.ejecutar(
75
+ y,$);if(M.catch(()=>{}),await Promise.race([me,M.then(()=>"resuelta")])==="resuelta"){let v=await M,N=t.informe(v.report);return {response:{chunks:ze(v,N,l["bivelio.messageId"])}}}let I=`bvsala-${++s}-${Date.
76
+ now().toString(36)}`,_=setTimeout(()=>o(I,new Error("[bvsala] Mastra never reported this model call back; nothing was recorded.")),n);_.unref?.();let C={resolver:S,rechazar:P,llamada:$,resultado:M,plazo:_},
77
+ q=a.abortSignal instanceof AbortSignal?a.abortSignal:void 0;q&&(C.signal=q,C.alAbortar=()=>o(I,new Error("[bvsala] the model call was aborted; nothing was recorded.")),q.aborted?C.alAbortar():q.addEventListener(
78
+ "abort",C.alAbortar,{once:true})),r.set(I,C),l[T]=I;},async processLLMResponse(a){if(a.fromCache===true)return;let l=a.state,c=l[T];if(delete l[T],typeof c!="string")return;let d=r.get(c);if(!d)return;r.delete(
79
+ c),clearTimeout(d.plazo),d.signal&&d.alAbortar&&d.signal.removeEventListener("abort",d.alAbortar);let m=g(a.model)?a.model:{},u=Ne(Array.isArray(a.chunks)?a.chunks:[],se(m));if("error"in u){d.llamada.
80
+ errorDelMarco={error:u.error},d.rechazar(u.error);return}d.llamada.completada=true,d.resolver(u);try{let p=await d.resultado,w=t.informe(p.report);e.emitReportPart===!0&&await a.writer?.custom?.({type:"\
81
+ data-bivelio-savings-report",data:w});}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\
82
+ and without a usage record.");}},processAPIError(a){let l=a.state,c=l[T];typeof c=="string"&&(delete l[T],o(c,a.error??new Error("[bvsala] the model call failed")));},close(){for(let a of [...r.keys()])
83
+ o(a,new Error("[bvsala] the savings layer was closed; nothing was recorded."));t.close();}}}export{at as savingsProcessor};