@bivelio/savings-layer 0.4.36 → 0.5.0-rc.1

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,83 @@
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
- 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 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
- "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 xe(e){if(!v(e))return h(e);switch(e.type){case "text":case "error-text":return typeof e.value==
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 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
- ...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
- 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
- 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(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
- |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 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??
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 "\
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.
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
+ 4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,
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);
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
+ 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
+ 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
+ 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){
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.
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??
48
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}:
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
- (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}`,
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}`,
53
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,
54
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??
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
- 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[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};
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};