@bivelio/savings-layer 0.4.20 → 0.4.21

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.
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- var Qs="2026-09-06",bt={"gpt-4.1":{inputPer1k:.002,outputPer1k:.008,cachedInputPer1k:5e-4},"gpt-4.1-mini":{inputPer1k:4e-4,outputPer1k:.0016,cachedInputPer1k:1e-4},"gpt-4.1-nano":{inputPer1k:1e-4,outputPer1k:4e-4,
1
+ var oi="2026-09-06",yt={"gpt-4.1":{inputPer1k:.002,outputPer1k:.008,cachedInputPer1k:5e-4},"gpt-4.1-mini":{inputPer1k:4e-4,outputPer1k:.0016,cachedInputPer1k:1e-4},"gpt-4.1-nano":{inputPer1k:1e-4,outputPer1k:4e-4,
2
2
  cachedInputPer1k:25e-6},"gpt-4o":{inputPer1k:.0025,outputPer1k:.01,cachedInputPer1k:.00125},"gpt-4o-mini":{inputPer1k:15e-5,outputPer1k:6e-4,cachedInputPer1k:75e-6},"gpt-4-turbo":{inputPer1k:.01,outputPer1k:.03},
3
3
  "gpt-4":{inputPer1k:.03,outputPer1k:.06},"gpt-3.5-turbo":{inputPer1k:5e-4,outputPer1k:.0015},"gpt-5":{inputPer1k:.00125,outputPer1k:.01,cachedInputPer1k:125e-6},"gpt-5-codex":{inputPer1k:.00125,outputPer1k:.01,
4
4
  cachedInputPer1k:125e-6},"gpt-5-mini":{inputPer1k:25e-5,outputPer1k:.002,cachedInputPer1k:25e-6},"gpt-5-nano":{inputPer1k:5e-5,outputPer1k:4e-4,cachedInputPer1k:5e-6},"gpt-5.1-codex":{inputPer1k:.00125,
@@ -16,236 +16,237 @@ u-4-5":{inputPer1k:.001,outputPer1k:.005,cachedInputPer1k:1e-4},"claude-3-5-sonn
16
16
  "claude-3-opus":{inputPer1k:.015,outputPer1k:.075,cachedInputPer1k:.0015},"claude-3-haiku":{inputPer1k:25e-5,outputPer1k:.00125,cachedInputPer1k:3e-5},"gemini-3.7-flash":{inputPer1k:75e-5,outputPer1k:.00375,
17
17
  cachedInputPer1k:75e-6},"gemini-3.5-flash":{inputPer1k:.0015,outputPer1k:.009,cachedInputPer1k:15e-5},"gemini-3.5-flash-lite":{inputPer1k:3e-4,outputPer1k:.0025,cachedInputPer1k:3e-5},"gemini-3.1-pro-\
18
18
  preview":{inputPer1k:.002,outputPer1k:.012,cachedInputPer1k:2e-4},"gemini-2.5-pro":{inputPer1k:.00125,outputPer1k:.01,cachedInputPer1k:125e-6},"gemini-2.5-flash":{inputPer1k:3e-4,outputPer1k:.0025,cachedInputPer1k:3e-5}};
19
- function dn(t,e,n){if(!n)return;let o=t[n];if(o)return o;let r=n.lastIndexOf("/"),s=r>=0?n.slice(r+1):n,i=t[s];if(i)return i;for(let a of e){if(!s.startsWith(a))continue;let c=s.charAt(a.length);if(c!==
20
- ""&&c!=="-"&&c!=="."&&c!=="_")continue;let l=s.slice(a.length+1);if(!(/^\d/.test(l)&&!/^\d{4}/.test(l)))return t[a]}}function pn(t){return Object.keys(t).sort((e,n)=>n.length-e.length)}var ei=pn(bt);function xt(t){
21
- return dn(bt,ei,t)}Object.fromEntries(Object.keys(bt).map(t=>[t,t]));var fn="0.4.20",No="x-bvsala-version";var ti=0;function mn(){let t=globalThis.crypto;if(t?.randomUUID)return t.randomUUID();let e=new Uint8Array(16);if(t?.getRandomValues)t.getRandomValues(e);else {let o=++ti,r=Date.now?Date.now():0;for(let s=0;s<
19
+ function pn(t,e,n){if(!n)return;let o=t[n];if(o)return o;let r=n.lastIndexOf("/"),s=r>=0?n.slice(r+1):n,i=t[s];if(i)return i;for(let a of e){if(!s.startsWith(a))continue;let c=s.charAt(a.length);if(c!==
20
+ ""&&c!=="-"&&c!=="."&&c!=="_")continue;let l=s.slice(a.length+1);if(!(/^\d/.test(l)&&!/^\d{4}/.test(l)))return t[a]}}function fn(t){return Object.keys(t).sort((e,n)=>n.length-e.length)}var ri=fn(yt);function xt(t){
21
+ return pn(yt,ri,t)}Object.fromEntries(Object.keys(yt).map(t=>[t,t]));var mn="0.4.21",$o="x-bvsala-version";var si=0;function hn(){let t=globalThis.crypto;if(t?.randomUUID)return t.randomUUID();let e=new Uint8Array(16);if(t?.getRandomValues)t.getRandomValues(e);else {let o=++si,r=Date.now?Date.now():0;for(let s=0;s<
22
22
  16;s++)e[s]=(s<6?o>>>s*8:r>>>(s-6)*8)&255;}e[6]=e[6]&15|64,e[8]=e[8]&63|128;let n=[];for(let o=0;o<16;o++)n.push(e[o].toString(16).padStart(2,"0"));return `${n[0]}${n[1]}${n[2]}${n[3]}-${n[4]}${n[5]}-${n[6]}${n[7]}\
23
- -${n[8]}${n[9]}-${n[10]}${n[11]}${n[12]}${n[13]}${n[14]}${n[15]}`}var Zc=["exact","task_equivalent","not_verified","bounded_degradation","rejected"];function Qc(t){return {v:1,task:t.task,goal:t.goal,rules:t.rules??[],facts:t.facts??[],refs:t.refs??[],...t.delta?{delta:t.delta}:{},outputContract:t.outputContract}}var hn=class{id;exact=false;constructor(e="heuristic"){this.id=e;}count(e){if(e.length===0)return 0;let n=e.match(/[A-Za-z]+|\d+|\s+|[^\sA-Za-z\d]/g)??[],o=0;for(let r of n){let s=r[0];if(/\s/.test(s)){let i=(r.
23
+ -${n[8]}${n[9]}-${n[10]}${n[11]}${n[12]}${n[13]}${n[14]}${n[15]}`}var nl=["exact","task_equivalent","not_verified","bounded_degradation","rejected"];function rl(t){return {v:1,task:t.task,goal:t.goal,rules:t.rules??[],facts:t.facts??[],refs:t.refs??[],...t.delta?{delta:t.delta}:{},outputContract:t.outputContract}}var gn=class{id;exact=false;constructor(e="heuristic"){this.id=e;}count(e){if(e.length===0)return 0;let n=e.match(/[A-Za-z]+|\d+|\s+|[^\sA-Za-z\d]/g)??[],o=0;for(let r of n){let s=r[0];if(/\s/.test(s)){let i=(r.
24
24
  match(/\n/g)??[]).length;o+=i+Math.floor(Math.max(0,r.length-1)/2);}else /[A-Za-z]/.test(s)?o+=Math.max(1,Math.ceil(r.length/4)):/\d/.test(s)?o+=Math.max(1,Math.ceil(r.length/2)):o+=1;}return Math.max(o,
25
- Math.ceil(e.length/4))}},Ne=new hn;var gn=class{estimators=new Map;modelToTokenizer=new Map;fallbackId;constructor(e=Ne){this.fallbackId=e.id,this.estimators.set(e.id,e);}register(e){return this.estimators.set(e.id,e),this}mapModel(e,n){
25
+ Math.ceil(e.length/4))}},Ne=new gn;var bn=class{estimators=new Map;modelToTokenizer=new Map;fallbackId;constructor(e=Ne){this.fallbackId=e.id,this.estimators.set(e.id,e);}register(e){return this.estimators.set(e.id,e),this}mapModel(e,n){
26
26
  return this.modelToTokenizer.set(e,n),this}resolve(e){let n=e.tokenizer?this.estimators.get(e.tokenizer):void 0;if(n)return n;if(e.model){let o=this.modelToTokenizer.get(e.model);if(o){let r=this.estimators.
27
- get(o);if(r)return r}}return this.estimators.get(this.fallbackId)}count(e,n){return this.resolve(n).count(e)}},jo=new gn;var bn=class{constructor(e,n){this.encoder=n;this.id=e;}encoder;id;exact=true;count(e){return e.length===0?0:this.encoder.encode(e).length}},$o={o200k_base:["gpt-4o","gpt-4o-mini","gpt-4.1","gpt-4.1-mini",
28
- "gpt-4.1-nano","o1","o1-mini","o3","o3-mini","o4-mini"],cl100k_base:["gpt-4","gpt-4-turbo","gpt-3.5-turbo","text-embedding-3-small","text-embedding-3-large"]};async function ni(t,e={}){let n=e.codificaciones??
29
- ["o200k_base","cl100k_base"],o=false;for(let r of n){let s;try{s=await import(`gpt-tokenizer/encoding/${r}`);}catch{continue}if(typeof s.encode=="function"){t.register(new bn(r,s)),o=true;for(let i of $o[r]??
30
- [])t.mapModel(i,r),t.mapModel(`openai/${i}`,r);}}return o}var al=$o,cl=ni;var je=class{avoidedLlm=0;baselineLlm=1;actualLlm=0;baselineRetrieval=0;actualRetrieval=0;baselineTools=0;actualTools=0;retries=0;baselineInput=0;actualInput=0;eliminatedInput=0;compressedInput=0;baselineOutput=0;actualOutput=0;eliminatedOutput=0;providerCachedInput=0;cacheWriteInputTokens=0;cacheWritePremiumUsd=0;sentInputLocal=0;removedInputLocal=0;elididoLocal=0;estimatorExact=false;repairOutput=0;repairInput=0;discoveryInput=0;discoveryOutput=0;extraCostUsd=0;cascadeInput=0;cascadeOutput=0;cascadeAttempt(e,n){
27
+ get(o);if(r)return r}}return this.estimators.get(this.fallbackId)}count(e,n){return this.resolve(n).count(e)}},Fo=new bn;var yn=class{constructor(e,n){this.encoder=n;this.id=e;}encoder;id;exact=true;count(e){return e.length===0?0:this.encoder.encode(e).length}},zo={o200k_base:["gpt-4o","gpt-4o-mini","gpt-4.1","gpt-4.1-mini",
28
+ "gpt-4.1-nano","o1","o1-mini","o3","o3-mini","o4-mini"],cl100k_base:["gpt-4","gpt-4-turbo","gpt-3.5-turbo","text-embedding-3-small","text-embedding-3-large"]};async function ii(t,e={}){let n=e.codificaciones??
29
+ ["o200k_base","cl100k_base"],o=false;for(let r of n){let s;try{s=await import(`gpt-tokenizer/encoding/${r}`);}catch{continue}if(typeof s.encode=="function"){t.register(new yn(r,s)),o=true;for(let i of zo[r]??
30
+ [])t.mapModel(i,r),t.mapModel(`openai/${i}`,r);}}return o}var pl=zo,fl=ii;var je=class{avoidedLlm=0;baselineLlm=1;actualLlm=0;baselineRetrieval=0;actualRetrieval=0;baselineTools=0;actualTools=0;retries=0;baselineInput=0;actualInput=0;eliminatedInput=0;compressedInput=0;baselineOutput=0;actualOutput=0;eliminatedOutput=0;providerCachedInput=0;cacheWriteInputTokens=0;cacheWritePremiumUsd=0;sentInputLocal=0;removedInputLocal=0;elididoLocal=0;estimatorExact=false;repairOutput=0;repairInput=0;discoveryInput=0;discoveryOutput=0;extraCostUsd=0;cascadeInput=0;cascadeOutput=0;cascadeAttempt(e,n){
31
31
  this.cascadeInput+=Math.max(0,e.inputTokens),this.cascadeOutput+=Math.max(0,e.outputTokens),this.extraCostUsd+=Math.max(0,e.inputTokens)/1e3*n.inputPer1k+Math.max(0,e.outputTokens)/1e3*n.outputPer1k;}cacheWritePremium(e,n,o){
32
32
  let r=Math.max(0,e);this.cacheWriteInputTokens+=r,this.cacheWritePremiumUsd+=r/1e3*o.inputPer1k*Math.max(0,n-1);}compressionReport=void 0;eliminate(e){this.eliminatedInput+=Math.max(0,e);}compress(e,n){
33
33
  this.compressedInput+=Math.max(0,e-n);}providerCached(e){this.providerCachedInput+=Math.max(0,e);}avoidCall(e,n){this.avoidedLlm+=1,this.actualLlm=0,this.baselineInput=e,this.baselineOutput=n;}get publishedBaselineOutput(){
34
34
  return this.avoidedLlm===0?Math.max(0,this.actualOutput-this.repairOutput-this.discoveryOutput):this.baselineOutput}estimateCost(e){let n=this.avoidedLlm===0,o="estimated";if(n)if(this.actualInput>0&&
35
- this.sentInputLocal>0){let d=this.actualInput/this.sentInputLocal,m=Math.max(0,this.actualInput-this.repairInput-this.discoveryInput);this.baselineInput=m+Math.round(d*this.removedInputLocal),o=this.removedInputLocal===
35
+ this.sentInputLocal>0){let d=this.actualInput/this.sentInputLocal,f=Math.max(0,this.actualInput-this.repairInput-this.discoveryInput);this.baselineInput=f+Math.round(d*this.removedInputLocal),o=this.removedInputLocal===
36
36
  0?"measured":"estimated";}else this.actualInput>0?(this.baselineInput=this.actualInput,o="measured"):(this.baselineInput=0,o="unmeasured");let r=n?Math.max(0,this.actualOutput-this.repairOutput-this.discoveryOutput):
37
37
  this.baselineOutput,s=e.cachedInputPer1k??e.inputPer1k,i=Math.min(this.providerCachedInput,this.actualInput),a=d=>Math.max(0,d-i)/1e3*e.inputPer1k+i/1e3*s,c=a(this.baselineInput)+r/1e3*e.outputPer1k,l=a(
38
- this.actualInput)+this.actualOutput/1e3*e.outputPer1k+this.extraCostUsd+this.cacheWritePremiumUsd,u=c===0?0:1-l/c;return {baselineEstimate:Fo(c),actual:Fo(l),netSavings:oi(u),basis:o}}};function Fo(t){
39
- return Math.round(t*1e10)/1e10}function oi(t){return Math.round(t*1e6)/1e6}var ri=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,
38
+ this.actualInput)+this.actualOutput/1e3*e.outputPer1k+this.extraCostUsd+this.cacheWritePremiumUsd,u=c===0?0:1-l/c;return {baselineEstimate:Vo(c),actual:Vo(l),netSavings:ai(u),basis:o}}};function Vo(t){
39
+ return Math.round(t*1e10)/1e10}function ai(t){return Math.round(t*1e6)/1e6}var ci=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,
40
40
  4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,
41
41
  1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,
42
- 1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),si=new TextEncoder;function se(t,e){return t>>>e|t<<32-e}function zo(t){let e=si.encode(t),n=e.length*
42
+ 1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),li=new TextEncoder;function se(t,e){return t>>>e|t<<32-e}function Uo(t){let e=li.encode(t),n=e.length*
43
43
  8,o=(e.length+8>>6)+1,r=new Uint8Array(o*64);r.set(e),r[e.length]=128;let s=new DataView(r.buffer);s.setUint32(r.length-8,Math.floor(n/4294967296)),s.setUint32(r.length-4,n>>>0);let i=new Uint32Array(
44
44
  [1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),a=new Uint32Array(64);for(let l=0;l<r.length;l+=64){for(let b=0;b<16;b++)a[b]=s.getUint32(l+b*4);for(let b=16;b<
45
- 64;b++){let y=a[b-15],T=a[b-2],E=se(y,7)^se(y,18)^y>>>3,R=se(T,17)^se(T,19)^T>>>10;a[b]=a[b-16]+E+a[b-7]+R|0;}let u=i[0],d=i[1],m=i[2],f=i[3],h=i[4],g=i[5],p=i[6],x=i[7];for(let b=0;b<64;b++){let y=se(
46
- h,6)^se(h,11)^se(h,25),T=h&g^~h&p,E=x+y+T+ri[b]+a[b]|0,R=se(u,2)^se(u,13)^se(u,22),C=u&d^u&m^d&m,D=R+C|0;x=p,p=g,g=h,h=f+E|0,f=m,m=d,d=u,u=E+D|0;}i[0]=i[0]+u|0,i[1]=i[1]+d|0,i[2]=i[2]+m|0,i[3]=i[3]+f|0,
47
- i[4]=i[4]+h|0,i[5]=i[5]+g|0,i[6]=i[6]+p|0,i[7]=i[7]+x|0;}let c="";for(let l=0;l<8;l++)c+=(i[l]>>>0).toString(16).padStart(8,"0");return c}var ii=/\s+/g,ai=[[/′′/g,'"'],[/[‘’‚‛′´`]/g,"'"],[/[“”„‟″«»]/g,'"'],[/[‐-―−]/g,"-"],[/⁄/g,"/"],[/…/g,""]],ci=/[¿?¡!;.,:'"·•]/g,li=/([a-z])\p{M}+/gu,ui=/(^|\s)\p{M}+/gu,
48
- xn=/\p{L}/u;function Y(t){return t>="0"&&t<="9"}function yt(t){let e=t.normalize("NFKC").toLowerCase();for(let[n,o]of ai)e=e.replace(n,o);return e=e.normalize("NFD").replace(li,"$1").replace(ui,"$1").
49
- normalize("NFC"),e=e.replace(ci,(n,o,r)=>{let s=r[o-1]??"",i=r[o+1]??"";switch(n){case "\xBF":case "?":case "\xA1":case ";":return Y(s)&&Y(i)?n:"";case "!":return Y(s)?n:"";case ".":case ",":return Y(s)&&Y(i)||
50
- Y(i)&&!Y(s)&&!xn.test(s)?n:"";case ":":return Y(s)&&Y(i)?n:"";case "'":case '"':return xn.test(s)&&xn.test(i)||Y(s)||Y(i)?n:"";default:return Y(s)||Y(i)?n:""}}),e.replace(ii," ").trim()}function ie(t){return zo(
51
- t)}function Se(t){return JSON.stringify(yn(t))}function yn(t){if(Array.isArray(t))return t.map(yn);if(t&&typeof t=="object"){let e={};for(let n of Object.keys(t).sort())e[n]=yn(t[n]);return e}return t}
52
- function vn(t){return t.replace(/[-_]?\d{4,}.*$/,"").replace(/[-_](mini|nano|small|large|latest)$/i,"")}function kn(t){let e=t.context??{},n=t.messages.filter(s=>s.role==="system").map(s=>s.content).join(
45
+ 64;b++){let x=a[b-15],T=a[b-2],E=se(x,7)^se(x,18)^x>>>3,R=se(T,17)^se(T,19)^T>>>10;a[b]=a[b-16]+E+a[b-7]+R|0;}let u=i[0],d=i[1],f=i[2],m=i[3],h=i[4],g=i[5],p=i[6],y=i[7];for(let b=0;b<64;b++){let x=se(
46
+ h,6)^se(h,11)^se(h,25),T=h&g^~h&p,E=y+x+T+ci[b]+a[b]|0,R=se(u,2)^se(u,13)^se(u,22),C=u&d^u&f^d&f,D=R+C|0;y=p,p=g,g=h,h=m+E|0,m=f,f=d,d=u,u=E+D|0;}i[0]=i[0]+u|0,i[1]=i[1]+d|0,i[2]=i[2]+f|0,i[3]=i[3]+m|0,
47
+ i[4]=i[4]+h|0,i[5]=i[5]+g|0,i[6]=i[6]+p|0,i[7]=i[7]+y|0;}let c="";for(let l=0;l<8;l++)c+=(i[l]>>>0).toString(16).padStart(8,"0");return c}var ui=/\s+/g,di=[[/′′/g,'"'],[/[‘’‚‛′´`]/g,"'"],[/[“”„‟″«»]/g,'"'],[/[‐-―−]/g,"-"],[/⁄/g,"/"],[/…/g,""]],pi=/[¿?¡!;.,:'"·•]/g,fi=/([a-z])\p{M}+/gu,mi=/(^|\s)\p{M}+/gu,
48
+ xn=/\p{L}/u;function Y(t){return t>="0"&&t<="9"}function vt(t){let e=t.normalize("NFKC").toLowerCase();for(let[n,o]of di)e=e.replace(n,o);return e=e.normalize("NFD").replace(fi,"$1").replace(mi,"$1").
49
+ normalize("NFC"),e=e.replace(pi,(n,o,r)=>{let s=r[o-1]??"",i=r[o+1]??"";switch(n){case "\xBF":case "?":case "\xA1":case ";":return Y(s)&&Y(i)?n:"";case "!":return Y(s)?n:"";case ".":case ",":return Y(s)&&Y(i)||
50
+ Y(i)&&!Y(s)&&!xn.test(s)?n:"";case ":":return Y(s)&&Y(i)?n:"";case "'":case '"':return xn.test(s)&&xn.test(i)||Y(s)||Y(i)?n:"";default:return Y(s)||Y(i)?n:""}}),e.replace(ui," ").trim()}function ie(t){return Uo(
51
+ t)}function Se(t){return JSON.stringify(vn(t))}function vn(t){if(Array.isArray(t))return t.map(vn);if(t&&typeof t=="object"){let e={};for(let n of Object.keys(t).sort())e[n]=vn(t[n]);return e}return t}
52
+ function kn(t){return t.replace(/[-_]?\d{4,}.*$/,"").replace(/[-_](mini|nano|small|large|latest)$/i,"")}function wn(t){let e=t.context??{},n=t.messages.filter(s=>s.role==="system").map(s=>s.content).join(
53
53
  `
54
- `),o=t.messages.filter(s=>s.role!=="system").map(s=>`${s.role}:${yt(s.content)}`).join(`
55
- `),r=(t.tools??[]).map(s=>({id:s.id,risk:s.risk,parameters:s.parameters??null})).sort((s,i)=>s.id.localeCompare(i.id));return {model:t.model,modelFamily:vn(t.model),messages:t.messages,normalizedText:o,
54
+ `),o=t.messages.filter(s=>s.role!=="system").map(s=>`${s.role}:${vt(s.content)}`).join(`
55
+ `),r=(t.tools??[]).map(s=>({id:s.id,risk:s.risk,parameters:s.parameters??null})).sort((s,i)=>s.id.localeCompare(i.id));return {model:t.model,modelFamily:kn(t.model),messages:t.messages,normalizedText:o,
56
56
  systemPromptHash:ie(n),toolsetHash:ie(Se(r)),structuredDataHash:t.structuredData!==void 0?ie(Se(t.structuredData)):"none",schemaVersion:t.response?.version??t.response?.contractId??"none",contractId:t.
57
57
  response?.contractId??null,temperature:t.temperature??null,seed:t.seed??null,tenantId:e.tenantId??"anonymous",authorizationScope:e.authorizationScope??"default",principal:e.sessionId??null,locale:e.locale??
58
- "und",knowledgeEpoch:e.knowledgeEpoch??"none",freshnessBucket:e.freshnessBucket??"any",safetyPolicyVersion:e.safetyPolicyVersion??"none",tokenizer:t.tokenizer,original:t}}var Vo="n2";function wn(t,e={}){let n=e.servedModel??t.model,o=Se({tenant:t.tenantId,scope:t.authorizationScope,principal:t.principal,text:t.normalizedText,modelFamily:n===t.model?t.modelFamily:vn(n),
58
+ "und",knowledgeEpoch:e.knowledgeEpoch??"none",freshnessBucket:e.freshnessBucket??"any",safetyPolicyVersion:e.safetyPolicyVersion??"none",tokenizer:t.tokenizer,original:t}}var qo="n2";function Sn(t,e={}){let n=e.servedModel??t.model,o=Se({tenant:t.tenantId,scope:t.authorizationScope,principal:t.principal,text:t.normalizedText,modelFamily:n===t.model?t.modelFamily:kn(n),
59
59
  model:n,system:t.systemPromptHash,contract:t.contractId,schema:t.schemaVersion,tools:t.toolsetHash,data:t.structuredDataHash,locale:t.locale,temperature:t.temperature,seed:t.seed,knowledgeEpoch:t.knowledgeEpoch,
60
- freshness:t.freshnessBucket,safety:t.safetyPolicyVersion});return `bvsala:exact:${Vo}:${ie(o)}`}function Uo(t,e={}){let n=Se({tenant:t.tenantId,scope:t.authorizationScope,principal:t.principal,text:t.normalizedText,
60
+ freshness:t.freshnessBucket,safety:t.safetyPolicyVersion});return `bvsala:exact:${qo}:${ie(o)}`}function Ho(t,e={}){let n=Se({tenant:t.tenantId,scope:t.authorizationScope,principal:t.principal,text:t.normalizedText,
61
61
  model:e.servedModel??t.model,system:t.systemPromptHash,contract:t.contractId,schema:t.schemaVersion,tools:t.toolsetHash,data:t.structuredDataHash,temperature:t.temperature,seed:t.seed,deferrable:e.deferrable===
62
- true,toolDiscovery:e.toolDiscovery===true,maxOut:e.maxOutputTokens??null});return `bvsala:inflight:${Vo}:${ie(n)}`}var di=new RegExp("\\b("+["now|today|current|currently|latest|live|price|prices|stock|availability|weather|score|breaking","ahora|hoy|actual|actualmente|ultimo|\xFAltimo|precio|precios|disponibilidad|cot\
62
+ true,toolDiscovery:e.toolDiscovery===true,maxOut:e.maxOutputTokens??null});return `bvsala:inflight:${qo}:${ie(n)}`}var hi=new RegExp("\\b("+["now|today|current|currently|latest|live|price|prices|stock|availability|weather|score|breaking","ahora|hoy|actual|actualmente|ultimo|\xFAltimo|precio|precios|disponibilidad|cot\
63
63
  izacion|cotizaci\xF3n","ara|avui|preu|preus|disponibilitat|darrer","maintenant|aujourd'hui|actuel|actuelle|dernier|prix|disponibilite|disponibilit\xE9|meteo|m\xE9t\xE9o","jetzt|heute|aktuell|aktuelle|\
64
64
  neueste|preis|preise|verfugbarkeit|verf\xFCgbarkeit|wetter|kurs","adesso|oggi|attuale|ultimo|prezzo|prezzi|disponibilita|disponibilit\xE0|meteo","agora|hoje|atual|ultimo|\xFAltimo|preco|pre\xE7o|precos|pre\xE7\
65
65
  os|disponibilidade|cotacao|cota\xE7\xE3o","nu|vandaag|huidige|laatste|prijs|prijzen|beschikbaarheid|weer|koers","teraz|dzisiaj|dzis|dzi\u015B|aktualny|aktualna|najnowszy|cena|ceny|dostepnosc|dost\u0119pno\u015B\u0107|pog\
66
66
  oda","simdi|\u015Fimdi|bugun|bug\xFCn|guncel|g\xFCncel|son|fiyat|fiyatlar|stok|hava","sekarang|hari ini|terkini|terbaru|harga|ketersediaan|cuaca","bay gio|b\xE2y gi\u1EDD|hom nay|h\xF4m nay|hien tai|hi\u1EC7n t\u1EA1i|moi\
67
- nhat|m\u1EDBi nh\u1EA5t|gia|gi\xE1|thoi tiet|th\u1EDDi ti\u1EBFt"].join("|")+")\\b","i"),pi=new RegExp("\\b("+["my|mine|our|ours|account|balance|subscription|invoice|order|profile","mi|mis|mio|m\xEDo|nu\
67
+ nhat|m\u1EDBi nh\u1EA5t|gia|gi\xE1|thoi tiet|th\u1EDDi ti\u1EBFt"].join("|")+")\\b","i"),gi=new RegExp("\\b("+["my|mine|our|ours|account|balance|subscription|invoice|order|profile","mi|mis|mio|m\xEDo|nu\
68
68
  estro|nuestra|cuenta|factura|pedido|saldo|suscripcion|suscripci\xF3n|perfil","meu|meva|nostre|compte|factura|comanda|saldo|subscripcio|subscripci\xF3|perfil","mon|ma|mes|notre|nos|compte|solde|facture\
69
69
  |commande|abonnement|profil","mein|meine|meinem|unser|unsere|konto|kontostand|saldo|rechnung|bestellung|abo|abonnement|profil","mio|mia|miei|nostro|nostra|conto|saldo|fattura|ordine|abbonamento|profil\
70
70
  o","meu|minha|meus|nosso|nossa|conta|saldo|fatura|pedido|assinatura|perfil","mijn|onze|ons|rekening|saldo|factuur|bestelling|abonnement|profiel","moj|m\xF3j|moja|moje|nasz|nasza|konto|saldo|faktura|zamow\
71
71
  ienie|zam\xF3wienie|subskrypcja|profil","benim|bizim|hesap|hesabim|hesab\u0131m|bakiye|fatura|siparis|sipari\u015F|abonelik|profil","saya|kami|akun|saldo|tagihan|pesanan|langganan|profil","cua toi|c\u1EE7a\
72
- t\xF4i|tai khoan|t\xE0i kho\u1EA3n|so du|s\u1ED1 d\u01B0|hoa don|h\xF3a \u0111\u01A1n|don hang|\u0111\u01A1n h\xE0ng|thue bao|thu\xEA bao"].join("|")+")\\b","i");function Sn(t){let e=[],n=t.normalizedText,
73
- o=(t.original.tools??[]).some(f=>f.risk==="write"||f.risk==="destructive"),r=t.freshnessBucket==="live"||t.freshnessBucket==="hour"||di.test(n),s=pi.test(n),i=(t.temperature??0)>.3&&t.seed==null;o&&e.
72
+ t\xF4i|tai khoan|t\xE0i kho\u1EA3n|so du|s\u1ED1 d\u01B0|hoa don|h\xF3a \u0111\u01A1n|don hang|\u0111\u01A1n h\xE0ng|thue bao|thu\xEA bao"].join("|")+")\\b","i");function Tn(t){let e=[],n=t.normalizedText,
73
+ o=(t.original.tools??[]).some(m=>m.risk==="write"||m.risk==="destructive"),r=t.freshnessBucket==="live"||t.freshnessBucket==="hour"||hi.test(n),s=gi.test(n),i=(t.temperature??0)>.3&&t.seed==null;o&&e.
74
74
  push("write/destructive tools present"),r&&e.push("freshness-sensitive request"),s&&e.push("personalized/account-scoped request"),i&&e.push("stochastic sampling (temp>0.3, no seed)");let a=r&&(t.freshnessBucket==
75
75
  null||t.freshnessBucket==="any"),c=t.freshnessBucket==="live",l=s&&t.principal==null,u=!i&&!a&&!c&&!l&&!o;o&&e.push("write/destructive tools \u2192 exact cache off (side effects must execute)"),c&&e.push(
76
76
  "freshnessBucket=live \u2192 exact cache off (answer must be current)"),a&&e.push("freshness-sensitive without a freshness bucket \u2192 exact cache off"),l&&e.push("personalized request with no princ\
77
- ipal (context.sessionId) \u2192 exact cache off");let d=!o&&!r&&!s&&!i&&t.freshnessBucket!=="day",m=!o&&!r&&!s&&!i&&t.freshnessBucket!=="day";return {allowExactCache:u,allowSemanticCache:d,allowElision:m,
78
- allowSingleflight:!o&&!l,allowCompression:true,requiresFreshData:r,hasSideEffects:o,isPersonalized:s,maxCacheAgeMs:t.freshnessBucket==="hour"?36e5:t.freshnessBucket==="day"?864e5:null,reasons:e}}var vt=class{store=new Map;maxEntries;now;constructor(e={}){this.maxEntries=e.maxEntries??1e4,this.now=e.now??(()=>Date.now());}async get(e){let n=this.store.get(e);return n?n.expiresAtMs!==null&&this.
79
- now()>n.expiresAtMs?(this.store.delete(e),null):(this.store.delete(e),this.store.set(e,n),n.value):null}async set(e,n,o){if(this.store.size>=this.maxEntries&&!this.store.has(e)){let r=this.store.keys().
80
- next().value;r!==void 0&&this.store.delete(r);}this.store.set(e,{value:n,expiresAtMs:o!=null?this.now()+o:null});}async delete(e){this.store.delete(e);}get size(){return this.store.size}};var kt=class{inflight=new Map;waiters=new Map;async run(e,n){let o=this.inflight.get(e);if(o)return this.waiters.set(e,(this.waiters.get(e)??1)+1),{value:await o,coalesced:true};let r=(async()=>n())();this.
81
- inflight.set(e,r),this.waiters.set(e,1);try{return {value:await r,coalesced:!1}}finally{this.inflight.delete(e),this.waiters.delete(e);}}get activeKeys(){return this.inflight.size}};function fi(t){let e=2166136261;for(let n=0;n<t.length;n++)e^=t.charCodeAt(n),e=Math.imul(e,16777619)>>>0;return e}function mi(t){return t.toLowerCase().normalize("NFKC").split(/[^\p{L}\p{N}]+/u).filter(
82
- Boolean)}function hi(t){let e=new Array(256).fill(0),n=mi(t);if(n.length===0)return e;let o=new Map;for(let s=0;s<n.length;s++){let i=n[s];if(o.set(i,(o.get(i)??0)+1),s+1<n.length){let a=`${i}\0${n[s+
83
- 1]}`;o.set(a,(o.get(a)??0)+1);}}for(let[s,i]of o){let a=fi(s),c=a%256,l=a>>>31===1?-1:1;e[c]+=l*(1+Math.log(i));}let r=0;for(let s of e)r+=s*s;if(r=Math.sqrt(r),r===0)return e;for(let s=0;s<e.length;s++)
84
- e[s]/=r;return e}function qo(t){return hi(t)}var Ho=.72;function gi(t,e){let n=Math.min(t.length,e.length),o=0,r=0,s=0;for(let i=0;i<n;i++){let a=t[i],c=e[i];o+=a*c,r+=a*a,s+=c*c;}return r===0||s===0?0:o/(Math.sqrt(r)*Math.sqrt(s))}var bi=new Set(["no","not",
85
- "never","none","cannot","cant","without","nor","nt","isnt","arent","wasnt","werent","dont","doesnt","didnt","wont","shouldnt","sin","nunca","jamas","jam\xE1s","tampoco","ni","ningun","ning\xFAn","ning\
86
- una","ninguno","nada","nadie","sense","mai","tampoc","cap","gens","ningu","ning\xFA","res"]),xi=new Set(["the","a","an","of","to","in","on","for","and","or","is","are","was","were","what","whats","whi\
87
- ch","who","whom","how","when","where","me","my","i","you","please","tell","give","show","find","do","does","did","be","that","this","it","with","as","at","by","from","about","into","over","than","then",
88
- "s","el","la","los","las","un","una","unos","unas","de","del","al","en","por","para","con","sin","sobre","y","o","u","es","son","era","eran","ser","estar","esta","este","esto","estos","estas","ese","e\
89
- sa","eso","que","cual","cuales","quien","quienes","como","cuando","donde","dame","dime","quiero","necesito","puedes","podrias","favor","porfavor","gracias","me","mi","mis","tu","tus","su","sus","lo","\
90
- le","se","hay","el","la","els","les","un","una","uns","unes","de","del","dels","al","als","en","per","amb","sense","sobre","i","o","es","son","era","eren","ser","estar","aquest","aquesta","aquests","a\
91
- questes","aquell","aquella","que","quin","quina","qui","com","quan","on","dona","vull","necessito","pots","podries","sisplau","gracies","meu","meva","seu","seva","hi"]);function et(t){return (t.match(/\d[\d.,:/-]*/g)??
92
- []).map(e=>e.replace(/[.,:/-]+$/,""))}function Tn(t,e){if(t.length!==e.length)return false;let n=new Map;for(let o of t)n.set(o,(n.get(o)??0)+1);for(let o of e){let r=n.get(o);if(!r)return false;n.set(o,r-1);}
93
- return true}function tt(t){return t.split(/\s+/).filter(Boolean)}function nt(t){return t.filter(e=>bi.has(e.replace(/'/g,""))||e.endsWith("n't")).length}var yi=/^(system|user|assistant|tool):/;function Ko(t){
94
- return t.split(`
95
- `).map(e=>{let n=yi.exec(e);return n?{rol:n[1],texto:e.slice(n[0].length)}:{rol:"",texto:e}})}function vi(t,e){let n=Ko(t),o=Ko(e);if(n.length!==o.length)return false;for(let r=0;r<n.length;r++)if(n[r].rol!==
96
- o[r].rol||!ki(n[r].texto,o[r].texto))return false;return true}function ki(t,e){if(!Tn(et(t),et(e)))return false;let n=tt(t),o=tt(e);if(nt(n)!==nt(o))return false;let r=l=>l.length>1&&!xi.has(l)&&!/^\d/.test(l),s=new Set(
97
- n.filter(r)),i=new Set(o.filter(r));if(s.size===0&&i.size===0)return true;let a=0;for(let l of s)i.has(l)&&a++;let c=s.size+i.size-a;return c===0?true:a/c>=.75}var Jo=class{records=[];embed;verify;similarityThreshold;acceptThreshold;ttlMs;maxRecords;now;constructor(e={}){
98
- let n=e.embed==null;this.embed=e.embed??qo,this.verify=e.verify,this.similarityThreshold=e.similarityThreshold??(n?Ho:.9),this.acceptThreshold=e.acceptThreshold??.85,this.ttlMs=e.ttlMs,this.maxRecords=
77
+ ipal (context.sessionId) \u2192 exact cache off");let d=!o&&!r&&!s&&!i&&t.freshnessBucket!=="day",f=!o&&!r&&!s&&!i&&t.freshnessBucket!=="day";return {allowExactCache:u,allowSemanticCache:d,allowElision:f,
78
+ allowSingleflight:!o&&!l,allowCompression:true,requiresFreshData:r,hasSideEffects:o,isPersonalized:s,maxCacheAgeMs:t.freshnessBucket==="hour"?36e5:t.freshnessBucket==="day"?864e5:null,reasons:e}}var kt=class{store=new Map;maxEntries;now;constructor(e={}){this.maxEntries=e.maxEntries??1e4,this.now=e.now??(()=>Date.now());}async get(e){let n=this.store.get(e);return n?n.expiresAtMs!==null&&this.
79
+ now()>n.expiresAtMs?(this.store.delete(e),null):(this.store.delete(e),this.store.set(e,n),Ko(n.value)):null}async set(e,n,o){if(this.store.size>=this.maxEntries&&!this.store.has(e)){let r=this.store.keys().
80
+ next().value;r!==void 0&&this.store.delete(r);}this.store.set(e,{value:Ko(n),expiresAtMs:o!=null?this.now()+o:null});}async delete(e){this.store.delete(e);}get size(){return this.store.size}};function Ko(t){
81
+ try{return structuredClone(t)}catch{return t}}var wt=class{inflight=new Map;waiters=new Map;async run(e,n){let o=this.inflight.get(e);if(o)return this.waiters.set(e,(this.waiters.get(e)??1)+1),{value:await o,coalesced:true};let r=(async()=>n())();this.
82
+ inflight.set(e,r),this.waiters.set(e,1);try{return {value:await r,coalesced:!1}}finally{this.inflight.delete(e),this.waiters.delete(e);}}get activeKeys(){return this.inflight.size}};function bi(t){let e=2166136261;for(let n=0;n<t.length;n++)e^=t.charCodeAt(n),e=Math.imul(e,16777619)>>>0;return e}function yi(t){return t.toLowerCase().normalize("NFKC").split(/[^\p{L}\p{N}]+/u).filter(
83
+ Boolean)}function xi(t){let e=new Array(256).fill(0),n=yi(t);if(n.length===0)return e;let o=new Map;for(let s=0;s<n.length;s++){let i=n[s];if(o.set(i,(o.get(i)??0)+1),s+1<n.length){let a=`${i}\0${n[s+
84
+ 1]}`;o.set(a,(o.get(a)??0)+1);}}for(let[s,i]of o){let a=bi(s),c=a%256,l=a>>>31===1?-1:1;e[c]+=l*(1+Math.log(i));}let r=0;for(let s of e)r+=s*s;if(r=Math.sqrt(r),r===0)return e;for(let s=0;s<e.length;s++)
85
+ e[s]/=r;return e}function Jo(t){return xi(t)}var Wo=.72;function vi(t,e){if(t.length!==e.length)return 0;let n=t.length,o=0,r=0,s=0;for(let i=0;i<n;i++){let a=t[i],c=e[i];o+=a*c,r+=a*a,s+=c*c;}return r===0||s===0?0:o/(Math.sqrt(r)*Math.sqrt(s))}var ki=new Set(
86
+ ["no","not","never","none","cannot","cant","without","nor","nt","isnt","arent","wasnt","werent","dont","doesnt","didnt","wont","shouldnt","sin","nunca","jamas","jam\xE1s","tampoco","ni","ningun","ning\
87
+ \xFAn","ninguna","ninguno","nada","nadie","sense","mai","tampoc","cap","gens","ningu","ning\xFA","res"]),wi=new Set(["the","a","an","of","to","in","on","for","and","or","is","are","was","were","what",
88
+ "whats","which","who","whom","how","when","where","me","my","i","you","please","tell","give","show","find","do","does","did","be","that","this","it","with","as","at","by","from","about","into","over",
89
+ "than","then","s","el","la","los","las","un","una","unos","unas","de","del","al","en","por","para","con","sin","sobre","y","o","u","es","son","era","eran","ser","estar","esta","este","esto","estos","e\
90
+ stas","ese","esa","eso","que","cual","cuales","quien","quienes","como","cuando","donde","dame","dime","quiero","necesito","puedes","podrias","favor","porfavor","gracias","me","mi","mis","tu","tus","su",
91
+ "sus","lo","le","se","hay","el","la","els","les","un","una","uns","unes","de","del","dels","al","als","en","per","amb","sense","sobre","i","o","es","son","era","eren","ser","estar","aquest","aquesta",
92
+ "aquests","aquestes","aquell","aquella","que","quin","quina","qui","com","quan","on","dona","vull","necessito","pots","podries","sisplau","gracies","meu","meva","seu","seva","hi"]);function tt(t){return (t.
93
+ match(/\d[\d.,:/-]*/g)??[]).map(e=>e.replace(/[.,:/-]+$/,""))}function En(t,e){if(t.length!==e.length)return false;let n=new Map;for(let o of t)n.set(o,(n.get(o)??0)+1);for(let o of e){let r=n.get(o);if(!r)
94
+ return false;n.set(o,r-1);}return true}function nt(t){return t.split(/\s+/).filter(Boolean)}function ot(t){return t.filter(e=>ki.has(e.replace(/'/g,""))||e.endsWith("n't")).length}var Si=/^(system|user|assistant|tool):/;
95
+ function Go(t){return t.split(`
96
+ `).map(e=>{let n=Si.exec(e);return n?{rol:n[1],texto:e.slice(n[0].length)}:{rol:"",texto:e}})}function Ti(t,e){let n=Go(t),o=Go(e);if(n.length!==o.length)return false;for(let r=0;r<n.length;r++)if(n[r].rol!==
97
+ o[r].rol||!Ei(n[r].texto,o[r].texto))return false;return true}function Ei(t,e){if(!En(tt(t),tt(e)))return false;let n=nt(t),o=nt(e);if(ot(n)!==ot(o))return false;let r=l=>l.length>1&&!wi.has(l)&&!/^\d/.test(l),s=new Set(
98
+ n.filter(r)),i=new Set(o.filter(r));if(s.size===0&&i.size===0)return true;let a=0;for(let l of s)i.has(l)&&a++;let c=s.size+i.size-a;return c===0?true:a/c>=.75}var Yo=class{records=[];embed;verify;similarityThreshold;acceptThreshold;ttlMs;maxRecords;now;constructor(e={}){
99
+ let n=e.embed==null;this.embed=e.embed??Jo,this.verify=e.verify,this.similarityThreshold=e.similarityThreshold??(n?Wo:.9),this.acceptThreshold=e.acceptThreshold??.85,this.ttlMs=e.ttlMs,this.maxRecords=
99
100
  e.maxRecords??5e3,this.now=e.now??(()=>Date.now());}async find(e){if(this.records.length===0)return null;let n=await this.embed(e.normalizedText),o=null;for(let r of this.records){if(r.tenantId!==e.tenantId||
100
101
  r.authorizationScope!==e.authorizationScope||r.principal!==e.principal||r.knowledgeEpoch!==e.knowledgeEpoch||r.contractId!==e.contractId||r.model!==e.model||r.systemPromptHash!==e.systemPromptHash||r.
101
102
  structuredDataHash!==e.structuredDataHash||r.locale!==e.locale||r.schemaVersion!==e.schemaVersion||r.safetyPolicyVersion!==e.safetyPolicyVersion||this.ttlMs!=null&&this.now()-r.storedAtMs>this.ttlMs)continue;
102
- let s=gi(n,r.embedding);if(s<this.similarityThreshold||!vi(e.normalizedText,r.query))continue;let i=this.verify?await this.verify(e.normalizedText,r.query):s,a=Math.min(s,i);a<this.acceptThreshold||(!o||
103
+ let s=vi(n,r.embedding);if(s<this.similarityThreshold||!Ti(e.normalizedText,r.query))continue;let i=this.verify?await this.verify(e.normalizedText,r.query):s,a=Math.min(s,i);a<this.acceptThreshold||(!o||
103
104
  a>o.confidence)&&(o={record:r,similarity:s,verifierScore:i,confidence:a,ageMs:this.now()-r.storedAtMs});}return o}async store(e,n){let o=await this.embed(e.normalizedText);this.records.length>=this.maxRecords&&
104
105
  this.records.shift(),this.records.push({embedding:o,query:e.normalizedText,answer:n,tenantId:e.tenantId,authorizationScope:e.authorizationScope,principal:e.principal,knowledgeEpoch:e.knowledgeEpoch,contractId:e.
105
106
  contractId,model:e.model,systemPromptHash:e.systemPromptHash,structuredDataHash:e.structuredDataHash,locale:e.locale,schemaVersion:e.schemaVersion,safetyPolicyVersion:e.safetyPolicyVersion,storedAtMs:this.
106
- now()});}invalidateEpoch(e){let n=0;for(let o=this.records.length-1;o>=0;o--)this.records[o].knowledgeEpoch===e&&(this.records.splice(o,1),n++);return n}get size(){return this.records.length}};var En=class{resolvers=[];register(e){return this.resolvers.push(e),this}try(e){for(let n of this.resolvers)try{let o=n.try(e);if(o)return o}catch{}return null}get size(){return this.resolvers.length}},
107
- wi={name:"arithmetic",try(t){let n=(t.normalizedText.match(/(?:what\s+is|calculate|compute|how\s+much\s+is|cu[aá]nto\s+es)\s+([0-9+\-*/%.()\s]+)\??$/i)?.[1]??Si(t.normalizedText))?.trim();if(!n)return null;
108
- let o=Ei(n);return o===null||!Number.isFinite(o)?null:{text:Ti(o),data:{value:o},resolver:"arithmetic"}}};function Si(t){return /^[0-9+\-*/%.()\s]+$/.test(t.trim())&&/[+\-*/%]/.test(t)?t.trim():null}function Ti(t){
109
- return Number.isInteger(t)?String(t):String(Math.round(t*1e9)/1e9)}function Ei(t){let e=t.match(/\d+\.?\d*|[+\-*/%()]/g);if(!e||e.join("")!==t.replace(/\s+/g,""))return null;let n=[],o=[],r={"+":1,"-":1,
107
+ now()});}invalidateEpoch(e){let n=0;for(let o=this.records.length-1;o>=0;o--)this.records[o].knowledgeEpoch===e&&(this.records.splice(o,1),n++);return n}get size(){return this.records.length}};var Rn=class{resolvers=[];register(e){return this.resolvers.push(e),this}try(e){for(let n of this.resolvers)try{let o=n.try(e);if(o)return o}catch{}return null}get size(){return this.resolvers.length}},
108
+ Ri={name:"arithmetic",try(t){let n=(t.normalizedText.match(/(?:what\s+is|calculate|compute|how\s+much\s+is|cu[aá]nto\s+es)\s+([0-9+\-*/%.()\s]+)\??$/i)?.[1]??Ci(t.normalizedText))?.trim();if(!n)return null;
109
+ let o=Oi(n);return o===null||!Number.isFinite(o)?null:{text:Ii(o),data:{value:o},resolver:"arithmetic"}}};function Ci(t){return /^[0-9+\-*/%.()\s]+$/.test(t.trim())&&/[+\-*/%]/.test(t)?t.trim():null}function Ii(t){
110
+ return Number.isInteger(t)?String(t):String(Math.round(t*1e9)/1e9)}function Oi(t){let e=t.match(/\d+\.?\d*|[+\-*/%()]/g);if(!e||e.join("")!==t.replace(/\s+/g,""))return null;let n=[],o=[],r={"+":1,"-":1,
110
111
  "*":2,"/":2,"%":2},s=a=>{let c=n.pop(),l=n.pop();if(l===void 0||c===void 0)return false;switch(a){case "+":return n.push(l+c),true;case "-":return n.push(l-c),true;case "*":return n.push(l*c),true;case "/":return c===
111
112
  0?false:(n.push(l/c),true);case "%":return c===0?false:(n.push(l%c),true);default:return false}},i=true;for(let a of e)if(/^\d/.test(a))n.push(Number(a)),i=false;else if(a==="(")o.push(a),i=true;else if(a===")"){for(;o.length&&
112
113
  o[o.length-1]!=="(";)if(!s(o.pop()))return null;if(o.pop()!=="(")return null;i=false;}else {if(i)return null;for(;o.length&&o[o.length-1]!=="("&&r[o[o.length-1]]>=r[a];)if(!s(o.pop()))return null;o.push(a),
113
- i=true;}for(;o.length;){let a=o.pop();if(a==="("||!s(a))return null}return n.length===1?n[0]:null}function Wo(){return new En().register(wi)}var Ri=/\b(compare|versus|\bvs\b|difference between|both|and then|after that|which is (?:better|cheaper|faster)|compar[ae]|diferencia entre)\b/i,Go=/\b(who|what|when|where|which|how many|how much|define|definition|qui[eé]n|qu[eé]|cu[aá]ndo|d[oó]nde|cu[aá]nto)\b/i,
114
- Ci=/\b(summarize|rewrite|translate|classify|extract|reformat|fix|convert|the following|below|above|this text|resume|reescribe|traduce|clasifica)\b/i,wt=class{classifier;maxRounds;constructor(e={}){this.
114
+ i=true;}for(;o.length;){let a=o.pop();if(a==="("||!s(a))return null}return n.length===1?n[0]:null}function Zo(){return new Rn().register(Ri)}var _i=/\b(compare|versus|\bvs\b|difference between|both|and then|after that|which is (?:better|cheaper|faster)|compar[ae]|diferencia entre)\b/i,Xo=/\b(who|what|when|where|which|how many|how much|define|definition|qui[eé]n|qu[eé]|cu[aá]ndo|d[oó]nde|cu[aá]nto)\b/i,
115
+ Ai=/\b(summarize|rewrite|translate|classify|extract|reformat|fix|convert|the following|below|above|this text|resume|reescribe|traduce|clasifica)\b/i,St=class{classifier;maxRounds;constructor(e={}){this.
115
116
  classifier=e.classifier,this.maxRounds=e.maxRounds??2;}classify(e){let n=e.original.retrieval?.mode,o=e.normalizedText;if((e.original.tools??[]).some(i=>i.risk==="write"||i.risk==="destructive")&&/\b(create|update|delete|send|pay|book|cancel|crea|actualiza|elimina|env[ií]a|paga)\b/i.
116
- test(o))return me("TOOL_ACTION",.9,"imperative + write tool available",0);if(n==="off")return me("NO_RETRIEVAL",1,"retrieval disabled by caller",0);if(Ci.test(o)&&!Go.test(o))return me("NO_RETRIEVAL",
117
- .8,"self-contained transformation",0);let s=this.classifier?.classify(o);return s&&s.confidence>=.75?me(s.executionClass,s.confidence,"local classifier",Ii(s.executionClass,this.maxRounds)):n==="singl\
118
- e"?me("SINGLE_RETRIEVAL",.7,"caller hint: single",1):n==="multi"?me("MULTI_HOP_RETRIEVAL",.7,"caller hint: multi",Math.min(this.maxRounds,2)):Ri.test(o)?me("MULTI_HOP_RETRIEVAL",.7,"comparison/compoun\
119
- d question",Math.min(this.maxRounds,2)):Go.test(o)?me("SINGLE_RETRIEVAL",.65,"single factual lookup",1):me("NO_RETRIEVAL",.5,"no retrieval signal (conservative default)",0)}};function Ii(t,e){return t===
120
- "SINGLE_RETRIEVAL"?1:t==="MULTI_HOP_RETRIEVAL"?Math.min(e,2):0}function me(t,e,n,o){return {executionClass:t,confidence:e,reason:n,rounds:o}}var Rn=class{constructor(e=512){this.cap=e;}cap;map=new Map;read(e){return this.map.get(e)}record(e,n,o){this.map.size>=this.cap&&!this.map.has(e)&&this.map.clear(),this.map.set(e,{ids:n,turns:o});}};function Oi(t){
121
- return !t.some(e=>Array.isArray(e.intents)&&e.intents.length>0)&&!t.some(e=>typeof e.risk=="string")}var St=class{maxTools;scoreIntentMatch;learningTurns;freezer;constructor(e={}){this.maxTools=e.maxTools??
122
- 8,this.scoreIntentMatch=e.scoreIntentMatch??_i,this.learningTurns=e.learningTurns??16,this.freezer=e.freezer??new Rn;}passthrough(e){if(!e||e.length===0)return {tools:[],droppedIds:[],reason:"no tools p\
117
+ test(o))return me("TOOL_ACTION",.9,"imperative + write tool available",0);if(n==="off")return me("NO_RETRIEVAL",1,"retrieval disabled by caller",0);if(Ai.test(o)&&!Xo.test(o))return me("NO_RETRIEVAL",
118
+ .8,"self-contained transformation",0);let s=this.classifier?.classify(o);return s&&s.confidence>=.75?me(s.executionClass,s.confidence,"local classifier",Di(s.executionClass,this.maxRounds)):n==="singl\
119
+ e"?me("SINGLE_RETRIEVAL",.7,"caller hint: single",1):n==="multi"?me("MULTI_HOP_RETRIEVAL",.7,"caller hint: multi",Math.min(this.maxRounds,2)):_i.test(o)?me("MULTI_HOP_RETRIEVAL",.7,"comparison/compoun\
120
+ d question",Math.min(this.maxRounds,2)):Xo.test(o)?me("SINGLE_RETRIEVAL",.65,"single factual lookup",1):me("NO_RETRIEVAL",.5,"no retrieval signal (conservative default)",0)}};function Di(t,e){return t===
121
+ "SINGLE_RETRIEVAL"?1:t==="MULTI_HOP_RETRIEVAL"?Math.min(e,2):0}function me(t,e,n,o){return {executionClass:t,confidence:e,reason:n,rounds:o}}var Cn=class{constructor(e=512){this.cap=e;}cap;map=new Map;read(e){return this.map.get(e)}record(e,n,o){this.map.size>=this.cap&&!this.map.has(e)&&this.map.clear(),this.map.set(e,{ids:n,turns:o});}};function Pi(t){
122
+ return !t.some(e=>Array.isArray(e.intents)&&e.intents.length>0)&&!t.some(e=>typeof e.risk=="string")}var Tt=class{maxTools;scoreIntentMatch;learningTurns;freezer;constructor(e={}){this.maxTools=e.maxTools??
123
+ 8,this.scoreIntentMatch=e.scoreIntentMatch??Li,this.learningTurns=e.learningTurns??16,this.freezer=e.freezer??new Cn;}passthrough(e){if(!e||e.length===0)return {tools:[],droppedIds:[],reason:"no tools p\
123
124
  rovided",setIsStable:true};let n=e.slice(0,this.maxTools),o=e.slice(this.maxTools).map(r=>r.id);return {tools:n,droppedIds:o,reason:`router off: caller tools passed through unfiltered (${n.length}/${e.length}\
124
125
  , capped at maxTools=${this.maxTools}; risk gating is the caller's responsibility while routing is off)`,setIsStable:true}}select(e,n,o,r){if(!n||n.length===0)return {tools:[],droppedIds:[],reason:"no to\
125
- ols provided",setIsStable:true};if(Oi(n)){let p=this.passthrough(n);return {...p,reason:`catalogue declares no \`intents\` and no \`risk\`: nothing to select on, passed through (${p.tools.length}/${n.length}\
126
+ ols provided",setIsStable:true};if(Pi(n)){let p=this.passthrough(n);return {...p,reason:`catalogue declares no \`intents\` and no \`risk\`: nothing to select on, passed through (${p.tools.length}/${n.length}\
126
127
  , capped at maxTools=${this.maxTools}). Declare ToolDescriptor.intents/risk to enable pruning`}}let s=o==="TOOL_ACTION",i=n.filter(p=>s||p.risk==="read"),a=p=>s&&p.risk!=="read",c=i.filter(p=>!a(p)),l=i.
127
- filter(p=>a(p)),u=l.map(p=>({tool:p,score:this.scoreIntentMatch(e,p)})).sort((p,x)=>x.score-p.score).map(p=>p.tool),d=c.map(p=>({tool:p,score:this.scoreIntentMatch(e,p)})).filter(p=>p.score>0).sort((p,x)=>x.
128
- score-p.score).map(p=>p.tool),f=[...u.slice(0,this.maxTools),...d.slice(0,Math.max(0,this.maxTools-l.length))].map(p=>({tool:p})).map(p=>p.tool).sort((p,x)=>p.id<x.id?-1:p.id>x.id?1:0);if(r!==void 0){
129
- let p=this.freezer.read(r),x=(p?.turns??0)+1;if(p&&x>this.learningTurns){let y=new Set(p.ids),T=n.filter(R=>y.has(R.id));this.freezer.record(r,p.ids,x);let E=new Set(T.map(R=>R.id));return {tools:T,droppedIds:n.
128
+ filter(p=>a(p)),u=l.map(p=>({tool:p,score:this.scoreIntentMatch(e,p)})).sort((p,y)=>y.score-p.score).map(p=>p.tool),d=c.map(p=>({tool:p,score:this.scoreIntentMatch(e,p)})).filter(p=>p.score>0).sort((p,y)=>y.
129
+ score-p.score).map(p=>p.tool),m=[...u.slice(0,this.maxTools),...d.slice(0,Math.max(0,this.maxTools-l.length))].map(p=>({tool:p})).map(p=>p.tool).sort((p,y)=>p.id<y.id?-1:p.id>y.id?1:0);if(r!==void 0){
130
+ let p=this.freezer.read(r),y=(p?.turns??0)+1;if(p&&y>this.learningTurns){let x=new Set(p.ids),T=n.filter(R=>x.has(R.id));this.freezer.record(r,p.ids,y);let E=new Set(T.map(R=>R.id));return {tools:T,droppedIds:n.
130
131
  filter(R=>!E.has(R.id)).map(R=>R.id),reason:`frozen tool set after ${this.learningTurns} turns (${T.length}/${n.length}): it no longer depends on this request's text, so the prefix cache survives`,setIsStable:true}}
131
- let b=[...new Set([...p?.ids??[],...f.map(y=>y.id)])].sort().slice(0,this.maxTools);this.freezer.record(r,b,x);}let h=new Set(f.map(p=>p.id)),g=n.filter(p=>!h.has(p.id)).map(p=>p.id);return {tools:f,droppedIds:g,
132
- reason:`selected ${f.length}/${n.length} by intent match (writes ${s?"allowed":"blocked"})`,setIsStable:g.length===0}}};function _i(t,e){let n=yt(t),o=0;for(let r of Array.isArray(e.intents)?e.intents:
133
- []){let s=yt(r);s&&(n.includes(s)?o+=2:s.split(/\s+/).some(i=>i.length>3&&n.includes(i))&&(o+=1));}return o}function Ai(t){let e=new Set,n=[];for(let o of t){let r=o.hash??Pi(o.text);e.has(r)||(e.add(r),n.push(o));}return n}function Di(t,e={maxDocuments:5}){let n=e.minDocuments??1,o=[...t].sort((i,a)=>(a.score??
132
+ let b=[...new Set([...p?.ids??[],...m.map(x=>x.id)])].sort().slice(0,this.maxTools);this.freezer.record(r,b,y);}let h=new Set(m.map(p=>p.id)),g=n.filter(p=>!h.has(p.id)).map(p=>p.id);return {tools:m,droppedIds:g,
133
+ reason:`selected ${m.length}/${n.length} by intent match (writes ${s?"allowed":"blocked"})`,setIsStable:g.length===0}}};function Li(t,e){let n=vt(t),o=0;for(let r of Array.isArray(e.intents)?e.intents:
134
+ []){let s=vt(r);s&&(n.includes(s)?o+=2:s.split(/\s+/).some(i=>i.length>3&&n.includes(i))&&(o+=1));}return o}function Mi(t){let e=new Set,n=[];for(let o of t){let r=o.hash??Ni(o.text);e.has(r)||(e.add(r),n.push(o));}return n}function Bi(t,e={maxDocuments:5}){let n=e.minDocuments??1,o=[...t].sort((i,a)=>(a.score??
134
135
  0)-(i.score??0));if(o.length<=n)return o;let r=o[0]?.score??0;if(r<=0)return o.slice(0,e.maxDocuments);let s=[];for(let i of o){let a=(i.score??0)/r;if(s.length<n||a>=.4&&s.length<e.maxDocuments)s.push(
135
- i);else break}return s}async function Yo(t,e){if(t.execution==="NO_RETRIEVAL"||t.execution==="TOOL_ACTION"||t.execution==="NON_CACHEABLE"||!e.retriever)return {docs:[],rounds:0,retrievedCount:0,keptCount:0};
136
- let n=t.execution==="MULTI_HOP_RETRIEVAL"?Math.min(t.maxRounds,2):1,o=[];for(let i=0;i<n;i++){let a=await e.retriever.retrieve(t.query,t.maxDocuments*2);o.push(...a);}let r=o.length;o=Ai(o),e.reranker&&
137
- (o=await e.reranker.rerank(t.query,o));let s=Di(o,{maxDocuments:t.maxDocuments});return {docs:s,rounds:n,retrievedCount:r,keptCount:s.length}}function Pi(t){return t.trim().replace(/\s+/g," ").toLowerCase()}function Gl(){return {goals:[],confirmedFacts:{},userPreferences:{},decisions:[],openItems:[],evidenceRefs:[]}}function Yl(t,e){let n={goals:[...t.goals],confirmedFacts:{...t.confirmedFacts},userPreferences:{
138
- ...t.userPreferences},decisions:[...t.decisions],openItems:[...t.openItems],evidenceRefs:[...t.evidenceRefs]};for(let[o,r]of Object.entries(e.set??{}))o==="userPreferences"&&Ni(r)?Object.assign(n.userPreferences,
139
- r):n.confirmedFacts[o]=r;for(let[o,r]of Object.entries(e.append??{})){let s=Mi(n,o);s?s.push(...r.map(String)):n.confirmedFacts[o]=r;}for(let o of e.remove??[])delete n.confirmedFacts[o],delete n.userPreferences[o],
140
- Bi(n,o);return n}function Zl(t){let e=t.rawTurns??3,n=[],o=Li(t.state);o&&n.push({role:"system",content:`Conversation state:
141
- ${o}`});let r=t.history.slice(-e);return n.push(...r,t.current),n}function Li(t){let e=[];return t.goals.length&&e.push(`goals: ${t.goals.join("; ")}`),Object.keys(t.confirmedFacts).length&&e.push(`fa\
136
+ i);else break}return s}async function Qo(t,e){if(t.execution==="NO_RETRIEVAL"||t.execution==="TOOL_ACTION"||t.execution==="NON_CACHEABLE"||!e.retriever)return {docs:[],rounds:0,retrievedCount:0,keptCount:0};
137
+ let n=t.execution==="MULTI_HOP_RETRIEVAL"?Math.min(t.maxRounds,2):1,o=[];for(let i=0;i<n;i++){let a=await e.retriever.retrieve(t.query,t.maxDocuments*2);o.push(...a);}let r=o.length;o=Mi(o),e.reranker&&
138
+ (o=await e.reranker.rerank(t.query,o));let s=Bi(o,{maxDocuments:t.maxDocuments});return {docs:s,rounds:n,retrievedCount:r,keptCount:s.length}}function Ni(t){return t.trim().replace(/\s+/g," ").toLowerCase()}function eu(){return {goals:[],confirmedFacts:{},userPreferences:{},decisions:[],openItems:[],evidenceRefs:[]}}function tu(t,e){let n={goals:[...t.goals],confirmedFacts:{...t.confirmedFacts},userPreferences:{
139
+ ...t.userPreferences},decisions:[...t.decisions],openItems:[...t.openItems],evidenceRefs:[...t.evidenceRefs]};for(let[o,r]of Object.entries(e.set??{}))o==="userPreferences"&&zi(r)?Object.assign(n.userPreferences,
140
+ r):n.confirmedFacts[o]=r;for(let[o,r]of Object.entries(e.append??{})){let s=$i(n,o);s?s.push(...r.map(String)):n.confirmedFacts[o]=r;}for(let o of e.remove??[])delete n.confirmedFacts[o],delete n.userPreferences[o],
141
+ Fi(n,o);return n}function nu(t){let e=t.rawTurns??3,n=[],o=ji(t.state);o&&n.push({role:"system",content:`Conversation state:
142
+ ${o}`});let r=t.history.slice(-e);return n.push(...r,t.current),n}function ji(t){let e=[];return t.goals.length&&e.push(`goals: ${t.goals.join("; ")}`),Object.keys(t.confirmedFacts).length&&e.push(`fa\
142
143
  cts: ${JSON.stringify(t.confirmedFacts)}`),Object.keys(t.userPreferences).length&&e.push(`preferences: ${JSON.stringify(t.userPreferences)}`),t.decisions.length&&e.push(`decisions: ${t.decisions.join(
143
144
  "; ")}`),t.openItems.length&&e.push(`open: ${t.openItems.join("; ")}`),e.join(`
144
- `)}function Mi(t,e){switch(e){case "goals":return t.goals;case "decisions":return t.decisions;case "openItems":return t.openItems;case "evidenceRefs":return t.evidenceRefs;default:return null}}function Bi(t,e){
145
- for(let n of ["goals","decisions","openItems","evidenceRefs"]){let o=t[n].indexOf(e);o>=0&&t[n].splice(o,1);}}function Ni(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}var Zo={format:"json-compact",supports(){return true},encode(t){return JSON.stringify(t)},instruction(){return ""}};function Xo(t,e={}){let n=e.delimiter??",",o=e.indent??" ",s=t.split(`
146
- `).filter(c=>c.trim().length>0).map(c=>({indent:ji(c,o),content:c.slice(Qo(c,o))}));if(s.length===0)return {};let i=s[0];if(i.indent===0){let c=i.content.match(/^\[(\d+)\]\{(.*)\}:\s*$/);if(c){let u=$e(
147
- c[2],n),d=Number(c[1]),m=[];for(let f=0,h=1;f<d&&h<s.length;f++,h++){let g=s[h];if(g.indent!==1)break;let p=$e(g.content,n),x={};u.forEach((b,y)=>{x[b]=ot(p[y]??"null");}),m.push(x);}return m}let l=i.content.
148
- match(/^\[(\d+)\]:\s*(.*)$/);if(l){let u=l[2];return Number(l[1])===0||u.trim()===""?[]:$e(u,n).map(ot)}}let[a]=er(s,0,0,n);return a}function Qo(t,e){let n=0;for(;t.startsWith(e,n);)n+=e.length;return n}
149
- function ji(t,e){return Qo(t,e)/e.length}function er(t,e,n,o){let r={},s=e;for(;s<t.length;){let i=t[s];if(i.indent<n)break;if(i.indent>n){s++;continue}let a=$i(i.content,o);if(!a){s++;continue}let{key:c,
145
+ `)}function $i(t,e){switch(e){case "goals":return t.goals;case "decisions":return t.decisions;case "openItems":return t.openItems;case "evidenceRefs":return t.evidenceRefs;default:return null}}function Fi(t,e){
146
+ for(let n of ["goals","decisions","openItems","evidenceRefs"]){let o=t[n].indexOf(e);o>=0&&t[n].splice(o,1);}}function zi(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}var er={format:"json-compact",supports(){return true},encode(t){return JSON.stringify(t)},instruction(){return ""}};function tr(t,e={}){let n=e.delimiter??",",o=e.indent??" ",s=t.split(`
147
+ `).filter(c=>c.trim().length>0).map(c=>({indent:Vi(c,o),content:c.slice(nr(c,o))}));if(s.length===0)return {};let i=s[0];if(i.indent===0){let c=i.content.match(/^\[(\d+)\]\{(.*)\}:\s*$/);if(c){let u=$e(
148
+ c[2],n),d=Number(c[1]),f=[];for(let m=0,h=1;m<d&&h<s.length;m++,h++){let g=s[h];if(g.indent!==1)break;let p=$e(g.content,n),y={};u.forEach((b,x)=>{y[b]=rt(p[x]??"null");}),f.push(y);}return f}let l=i.content.
149
+ match(/^\[(\d+)\]:\s*(.*)$/);if(l){let u=l[2];return Number(l[1])===0||u.trim()===""?[]:$e(u,n).map(rt)}}let[a]=or(s,0,0,n);return a}function nr(t,e){let n=0;for(;t.startsWith(e,n);)n+=e.length;return n}
150
+ function Vi(t,e){return nr(t,e)/e.length}function or(t,e,n,o){let r={},s=e;for(;s<t.length;){let i=t[s];if(i.indent<n)break;if(i.indent>n){s++;continue}let a=Ui(i.content,o);if(!a){s++;continue}let{key:c,
150
151
  kind:l}=a;if(l.type==="scalar")r[c]=l.value,s++;else if(l.type==="inlineArray")r[c]=l.values,s++;else if(l.type==="emptyArray")r[c]=[],s++;else if(l.type==="table"){let u=[];s++;for(let d=0;d<l.count&&
151
- s<t.length;d++,s++){let m=t[s];if(m.indent!==n+1)break;let f=$e(m.content,o),h={};l.columns.forEach((g,p)=>{h[g]=ot(f[p]??"null");}),u.push(h);}r[c]=u;}else {let[u,d]=er(t,s+1,n+1,o);r[c]=u,s=d;}}return [r,
152
- s]}function $i(t,e){let n=t.match(/^([^[:]+)\[(\d+)\]\{(.*)\}:\s*$/);if(n)return {key:Tt(n[1]),kind:{type:"table",count:Number(n[2]),columns:$e(n[3],e)}};let o=t.match(/^([^[:]+)\[(\d+)\]:\s*(.*)$/);if(o){
153
- let s=Number(o[2]),i=o[3];return s===0||i.trim()===""?{key:Tt(o[1]),kind:{type:"emptyArray"}}:{key:Tt(o[1]),kind:{type:"inlineArray",values:$e(i,e).map(ot)}}}let r=t.match(/^([^:]+):\s*(.*)$/);if(r){let s=Tt(
154
- r[1]),i=r[2];return i===""?{key:s,kind:{type:"object"}}:{key:s,kind:{type:"scalar",value:ot(i)}}}return null}function $e(t,e){let n=[],o="",r=false;for(let s=0;s<t.length;s++){let i=t[s];r?i==='"'?t[s+1]===
155
- '"'?(o+='"',s++):r=false:o+=i:i==='"'?r=true:i===e?(n.push(o),o=""):o+=i;}return n.push(o),n.map(s=>s.trim())}function ot(t){return t.startsWith('"')&&t.endsWith('"')&&t.length>=2?t.slice(1,-1).replace(/""/g,
156
- '"'):t==="null"?null:t==="true"?true:t==="false"?false:/^-?\d+$/.test(t)||/^-?\d*\.\d+$/.test(t)?Number(t):t}function Tt(t){let e=t.trim();return e.startsWith('"')&&e.endsWith('"')?e.slice(1,-1).replace(/""/g,
157
- '"'):e}function Fi(t,e={}){let n=e.delimiter??",",o=e.indent??" ",r=[];return On(null,t,0,r,n,o),r.join(`
158
- `)}function On(t,e,n,o,r,s){let i=s.repeat(n),a=t===null?"":`${Vi(t)}`;if(Array.isArray(e)){zi(a,e,n,o,r,s);return}if(In(e)){t!==null&&o.push(`${i}${a}:`);let c=t===null?n:n+1;for(let[l,u]of Object.entries(
159
- e))On(l,u,c,o,r,s);return}o.push(`${i}${a}: ${Et(e,r)}`);}function zi(t,e,n,o,r,s){let i=s.repeat(n),a=t===""?"":t;if(e.length===0){o.push(`${i}${a}[0]:`);return}if(e.every(Cn)){let d=e.map(m=>Et(m,r)).
160
- join(r);o.push(`${i}${a}[${e.length}]: ${d}`);return}let c=Rt(e);if(c){o.push(`${i}${a}[${e.length}]{${c.join(r)}}:`);let d=s.repeat(n+1);for(let m of e){let f=c.map(h=>Et(m[h],r)).join(r);o.push(`${d}${f}`);}
161
- return}o.push(`${i}${a}[${e.length}]:`);let l=n+1,u=s.repeat(l);for(let d of e)if(Cn(d))o.push(`${u}- ${Et(d,r)}`);else {let m=[];On(null,d,0,m,r,s);let[f,...h]=m;o.push(`${u}- ${f??""}`);for(let g of h)
162
- o.push(`${u}${s}${g}`);}}function Rt(t){if(t.length===0)return null;let e=t[0];if(!In(e))return null;let n=Object.keys(e);if(n.length===0)return null;let o=n.slice().sort().join("\0");for(let r of t){if(!In(
163
- r))return null;let s=Object.keys(r);if(s.slice().sort().join("\0")!==o)return null;for(let i of s)if(!Cn(r[i]))return null}return n}function Vi(t){return /^[A-Za-z_][A-Za-z0-9_]*$/.test(t)?t:tr(t)}function Et(t,e){
152
+ s<t.length;d++,s++){let f=t[s];if(f.indent!==n+1)break;let m=$e(f.content,o),h={};l.columns.forEach((g,p)=>{h[g]=rt(m[p]??"null");}),u.push(h);}r[c]=u;}else {let[u,d]=or(t,s+1,n+1,o);r[c]=u,s=d;}}return [r,
153
+ s]}function Ui(t,e){let n=t.match(/^([^[:]+)\[(\d+)\]\{(.*)\}:\s*$/);if(n)return {key:Et(n[1]),kind:{type:"table",count:Number(n[2]),columns:$e(n[3],e)}};let o=t.match(/^([^[:]+)\[(\d+)\]:\s*(.*)$/);if(o){
154
+ let s=Number(o[2]),i=o[3];return s===0||i.trim()===""?{key:Et(o[1]),kind:{type:"emptyArray"}}:{key:Et(o[1]),kind:{type:"inlineArray",values:$e(i,e).map(rt)}}}let r=t.match(/^([^:]+):\s*(.*)$/);if(r){let s=Et(
155
+ r[1]),i=r[2];return i===""?{key:s,kind:{type:"object"}}:{key:s,kind:{type:"scalar",value:rt(i)}}}return null}function $e(t,e){let n=[],o="",r=false;for(let s=0;s<t.length;s++){let i=t[s];r?i==='"'?t[s+1]===
156
+ '"'?(o+='"',s++):r=false:o+=i:i==='"'?r=true:i===e?(n.push(o),o=""):o+=i;}return n.push(o),n.map(s=>s.trim())}function rt(t){return t.startsWith('"')&&t.endsWith('"')&&t.length>=2?t.slice(1,-1).replace(/""/g,
157
+ '"'):t==="null"?null:t==="true"?true:t==="false"?false:/^-?\d+$/.test(t)||/^-?\d*\.\d+$/.test(t)?Number(t):t}function Et(t){let e=t.trim();return e.startsWith('"')&&e.endsWith('"')?e.slice(1,-1).replace(/""/g,
158
+ '"'):e}function qi(t,e={}){let n=e.delimiter??",",o=e.indent??" ",r=[];return _n(null,t,0,r,n,o),r.join(`
159
+ `)}function _n(t,e,n,o,r,s){let i=s.repeat(n),a=t===null?"":`${Ki(t)}`;if(Array.isArray(e)){Hi(a,e,n,o,r,s);return}if(On(e)){t!==null&&o.push(`${i}${a}:`);let c=t===null?n:n+1;for(let[l,u]of Object.entries(
160
+ e))_n(l,u,c,o,r,s);return}o.push(`${i}${a}: ${Rt(e,r)}`);}function Hi(t,e,n,o,r,s){let i=s.repeat(n),a=t===""?"":t;if(e.length===0){o.push(`${i}${a}[0]:`);return}if(e.every(In)){let d=e.map(f=>Rt(f,r)).
161
+ join(r);o.push(`${i}${a}[${e.length}]: ${d}`);return}let c=Ct(e);if(c){o.push(`${i}${a}[${e.length}]{${c.join(r)}}:`);let d=s.repeat(n+1);for(let f of e){let m=c.map(h=>Rt(f[h],r)).join(r);o.push(`${d}${m}`);}
162
+ return}o.push(`${i}${a}[${e.length}]:`);let l=n+1,u=s.repeat(l);for(let d of e)if(In(d))o.push(`${u}- ${Rt(d,r)}`);else {let f=[];_n(null,d,0,f,r,s);let[m,...h]=f;o.push(`${u}- ${m??""}`);for(let g of h)
163
+ o.push(`${u}${s}${g}`);}}function Ct(t){if(t.length===0)return null;let e=t[0];if(!On(e))return null;let n=Object.keys(e);if(n.length===0)return null;let o=n.slice().sort().join("\0");for(let r of t){if(!On(
164
+ r))return null;let s=Object.keys(r);if(s.slice().sort().join("\0")!==o)return null;for(let i of s)if(!In(r[i]))return null}return n}function Ki(t){return /^[A-Za-z_][A-Za-z0-9_]*$/.test(t)?t:rr(t)}function Rt(t,e){
164
165
  if(t==null)return "null";if(typeof t=="number")return Number.isFinite(t)?String(t):"null";if(typeof t=="boolean")return t?"true":"false";let n=String(t);return n===""||n.includes(e)||n.includes(`
165
- `)||n.includes('"')||n!==n.trim()||/^(true|false|null)$/.test(n)||/^-?\d/.test(n)?tr(n):n}function tr(t){return `"${t.replace(/"/g,'""')}"`}function Cn(t){return t===null||typeof t=="string"||typeof t==
166
- "number"||typeof t=="boolean"}function In(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}var Ui="Data is the compact encoder: `key[N]{c1,c2}:` declares an N-row table with columns c1,c2; ea\
167
- ch following indented line is one row of delimiter-separated values. `key[N]: a,b` is an inline list. Quoted values use CSV-style escaping.";function qi(t={}){return {format:"compact-rows",supports(){return true},
168
- encode(e){return Fi(e,t)},instruction(){return Ui},decode(e){return Xo(e,t)}}}var nr=qi();var rr={format:"csv",supports(t){return Array.isArray(t)&&Rt(t)!==null},encode(t){let e=t,n=Rt(e),o=n.map(or).join(","),r=e.map(s=>n.map(i=>or(s[i])).join(","));return [o,...r].join(`
169
- `)},instruction(){return "Data is CSV: first line is the header row; each subsequent line is one record."}};function or(t){if(t==null)return "";let e=String(t);return /[",\n]/.test(e)?`"${e.replace(/"/g,
170
- '""')}"`:e}var Ct=class{tokenizer;serializers;minSavingsTokens;minSavingsRatio;qualityPenalty;constructor(e){this.tokenizer=e.tokenizer,this.serializers=e.serializers??[Zo,nr,rr],this.minSavingsTokens=e.minimumSavingsTokens??
166
+ `)||n.includes('"')||n!==n.trim()||/^(true|false|null)$/.test(n)||/^-?\d/.test(n)?rr(n):n}function rr(t){return `"${t.replace(/"/g,'""')}"`}function In(t){return t===null||typeof t=="string"||typeof t==
167
+ "number"||typeof t=="boolean"}function On(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}var Ji="Data is the compact encoder: `key[N]{c1,c2}:` declares an N-row table with columns c1,c2; ea\
168
+ ch following indented line is one row of delimiter-separated values. `key[N]: a,b` is an inline list. Quoted values use CSV-style escaping.";function Wi(t={}){return {format:"compact-rows",supports(){return true},
169
+ encode(e){return qi(e,t)},instruction(){return Ji},decode(e){return tr(e,t)}}}var sr=Wi();var ar={format:"csv",supports(t){return Array.isArray(t)&&Ct(t)!==null},encode(t){let e=t,n=Ct(e),o=n.map(ir).join(","),r=e.map(s=>n.map(i=>ir(s[i])).join(","));return [o,...r].join(`
170
+ `)},instruction(){return "Data is CSV: first line is the header row; each subsequent line is one record."}};function ir(t){if(t==null)return "";let e=String(t);return /[",\n]/.test(e)?`"${e.replace(/"/g,
171
+ '""')}"`:e}var It=class{tokenizer;serializers;minSavingsTokens;minSavingsRatio;qualityPenalty;constructor(e){this.tokenizer=e.tokenizer,this.serializers=e.serializers??[er,sr,ar],this.minSavingsTokens=e.minimumSavingsTokens??
171
172
  64,this.minSavingsRatio=e.minimumSavingsRatio??.08,this.qualityPenalty=e.qualityPenalty??(()=>0);}choose(e,n){let o={model:n.model,tokenizer:n.tokenizer},r=[];for(let l of this.serializers){if(!l.supports(
172
- e))continue;let u=l.encode(e);if(l.format!=="json-compact"&&!Hi(l,u,e))continue;let d=l.instruction(e),m=this.tokenizer.count(u,o),f=d?this.tokenizer.count(d,o):0,h=this.qualityPenalty(n.model??"",l.format);
173
- r.push({format:l.format,encoded:u,instruction:d,payloadTokens:m,instructionTokens:f,penalty:h,total:m+f+h});}let s=r.find(l=>l.format==="json-compact"),i={};for(let l of r)i[l.format]=l.total;if(!s){let l=r[0];
174
- return l?sr(l,i,"json baseline unavailable"):{chosen:"json-compact",encoded:JSON.stringify(e),instruction:"",candidateTokens:i,instructionOverheadTokens:0,reason:"no serializer supported payload; defa\
173
+ e))continue;let u=l.encode(e);if(l.format!=="json-compact"&&!Gi(l,u,e))continue;let d=l.instruction(e),f=this.tokenizer.count(u,o),m=d?this.tokenizer.count(d,o):0,h=this.qualityPenalty(n.model??"",l.format);
174
+ r.push({format:l.format,encoded:u,instruction:d,payloadTokens:f,instructionTokens:m,penalty:h,total:f+m+h});}let s=r.find(l=>l.format==="json-compact"),i={};for(let l of r)i[l.format]=l.total;if(!s){let l=r[0];
175
+ return l?cr(l,i,"json baseline unavailable"):{chosen:"json-compact",encoded:JSON.stringify(e),instruction:"",candidateTokens:i,instructionOverheadTokens:0,reason:"no serializer supported payload; defa\
175
176
  ulted to JSON"}}let a=s,c="json baseline (no challenger cleared thresholds)";for(let l of r){if(l.format==="json-compact")continue;let u=s.total-l.total,d=s.total===0?0:u/s.total;u>=this.minSavingsTokens&&
176
- d>=this.minSavingsRatio&&l.total<a.total&&(a=l,c=`${l.format} saved ${u} tokens (${(d*100).toFixed(1)}%) vs json`);}return sr(a,i,c)}};function Hi(t,e,n){if(!t.decode)return false;try{return _n(t.decode(e),
177
- n)}catch{return false}}function _n(t,e){if(t===e)return true;if(t===null||e===null||typeof t!="object"||typeof e!="object")return false;let n=Array.isArray(t),o=Array.isArray(e);if(n||o){if(!n||!o||t.length!==e.
178
- length)return false;for(let i=0;i<t.length;i++)if(!_n(t[i],e[i]))return false;return true}let r=Object.keys(t),s=Object.keys(e);if(r.length!==s.length)return false;for(let i of r)if(!Object.prototype.hasOwnProperty.
179
- call(e,i)||!_n(t[i],e[i]))return false;return true}function sr(t,e,n){return {chosen:t.format,encoded:t.encoded,instruction:t.instruction,candidateTokens:e,instructionOverheadTokens:t.instructionTokens,reason:n}}function ae(t,e,n="$"){let o=[];return An(t,e,n,o),{valid:o.length===0,errors:o}}function Ki(t){if(Array.isArray(t))return "array";if(t===null)return "null";switch(typeof t){case "object":return "object";case "\
180
- string":return "string";case "number":return "number";case "boolean":return "boolean";default:return}}function An(t,e,n,o){switch(e.enum&&!e.enum.some(s=>Zi(s,t))&&o.push({path:n,message:"value not in enum"}),
181
- e.type??Ki(t)){case "object":Ji(t,e,n,o);break;case "array":Wi(t,e,n,o);break;case "string":Gi(t,e,n,o);break;case "number":case "integer":Yi(t,e,n,o);break;case "boolean":typeof t!="boolean"&&o.push({path:n,
182
- message:"expected boolean"});break;case "null":t!==null&&o.push({path:n,message:"expected null"});break;}}function Ji(t,e,n,o){if(typeof t!="object"||t===null||Array.isArray(t)){o.push({path:n,
177
+ d>=this.minSavingsRatio&&l.total<a.total&&(a=l,c=`${l.format} saved ${u} tokens (${(d*100).toFixed(1)}%) vs json`);}return cr(a,i,c)}};function Gi(t,e,n){if(!t.decode)return false;try{return An(t.decode(e),
178
+ n)}catch{return false}}function An(t,e){if(t===e)return true;if(t===null||e===null||typeof t!="object"||typeof e!="object")return false;let n=Array.isArray(t),o=Array.isArray(e);if(n||o){if(!n||!o||t.length!==e.
179
+ length)return false;for(let i=0;i<t.length;i++)if(!An(t[i],e[i]))return false;return true}let r=Object.keys(t),s=Object.keys(e);if(r.length!==s.length)return false;for(let i of r)if(!Object.prototype.hasOwnProperty.
180
+ call(e,i)||!An(t[i],e[i]))return false;return true}function cr(t,e,n){return {chosen:t.format,encoded:t.encoded,instruction:t.instruction,candidateTokens:e,instructionOverheadTokens:t.instructionTokens,reason:n}}function ae(t,e,n="$"){let o=[];return Dn(t,e,n,o),{valid:o.length===0,errors:o}}function Yi(t){if(Array.isArray(t))return "array";if(t===null)return "null";switch(typeof t){case "object":return "object";case "\
181
+ string":return "string";case "number":return "number";case "boolean":return "boolean";default:return}}function Dn(t,e,n,o){switch(e.enum&&!e.enum.some(s=>ta(s,t))&&o.push({path:n,message:"value not in enum"}),
182
+ e.type??Yi(t)){case "object":Zi(t,e,n,o);break;case "array":Xi(t,e,n,o);break;case "string":Qi(t,e,n,o);break;case "number":case "integer":ea(t,e,n,o);break;case "boolean":typeof t!="boolean"&&o.push({path:n,
183
+ message:"expected boolean"});break;case "null":t!==null&&o.push({path:n,message:"expected null"});break;}}function Zi(t,e,n,o){if(typeof t!="object"||t===null||Array.isArray(t)){o.push({path:n,
183
184
  message:"expected object"});return}let r=t;for(let s of e.required??[])s in r||o.push({path:`${n}.${s}`,message:"missing required property"});if(e.additionalProperties===false&&e.properties){let s=new Set(
184
185
  Object.keys(e.properties));for(let i of Object.keys(r))s.has(i)||o.push({path:`${n}.${i}`,message:"additional property not allowed"});}if(e.properties)for(let[s,i]of Object.entries(e.properties))s in r&&
185
- An(r[s],i,`${n}.${s}`,o);}function Wi(t,e,n,o){if(!Array.isArray(t)){o.push({path:n,message:"expected array"});return}e.maxItems!=null&&t.length>e.maxItems&&o.push({path:n,message:`array exceeds maxIte\
186
- ms ${e.maxItems}`}),e.minItems!=null&&t.length<e.minItems&&o.push({path:n,message:`array below minItems ${e.minItems}`}),e.items&&t.forEach((r,s)=>An(r,e.items,`${n}[${s}]`,o));}function Gi(t,e,n,o){if(typeof t!=
186
+ Dn(r[s],i,`${n}.${s}`,o);}function Xi(t,e,n,o){if(!Array.isArray(t)){o.push({path:n,message:"expected array"});return}e.maxItems!=null&&t.length>e.maxItems&&o.push({path:n,message:`array exceeds maxIte\
187
+ ms ${e.maxItems}`}),e.minItems!=null&&t.length<e.minItems&&o.push({path:n,message:`array below minItems ${e.minItems}`}),e.items&&t.forEach((r,s)=>Dn(r,e.items,`${n}[${s}]`,o));}function Qi(t,e,n,o){if(typeof t!=
187
188
  "string"){o.push({path:n,message:"expected string"});return}if(e.maxLength!=null&&t.length>e.maxLength&&o.push({path:n,message:`string exceeds maxLength ${e.maxLength}`}),e.minLength!=null&&t.length<e.
188
189
  minLength&&o.push({path:n,message:`string below minLength ${e.minLength}`}),e.pattern){let r=null;try{r=new RegExp(e.pattern);}catch{o.push({path:n,message:`schema pattern is not a valid regular expres\
189
- sion: ${e.pattern}`});}r&&!r.test(t)&&o.push({path:n,message:"string does not match pattern"});}}function Yi(t,e,n,o){if(typeof t!="number"||Number.isNaN(t)){o.push({path:n,message:"expected number"});return}
190
+ sion: ${e.pattern}`});}r&&!r.test(t)&&o.push({path:n,message:"string does not match pattern"});}}function ea(t,e,n,o){if(typeof t!="number"||Number.isNaN(t)){o.push({path:n,message:"expected number"});return}
190
191
  e.type==="integer"&&!Number.isInteger(t)&&o.push({path:n,message:"expected integer"}),e.maximum!=null&&t>e.maximum&&o.push({path:n,message:`number exceeds maximum ${e.maximum}`}),e.minimum!=null&&t<e.
191
- minimum&&o.push({path:n,message:`number below minimum ${e.minimum}`});}function Zi(t,e){return t===e?true:typeof t!=typeof e?false:t&&e&&typeof t=="object"?JSON.stringify(t)===JSON.stringify(e):false}var It=class{contracts=new Map;register(e){return this.contracts.set(e.contractId,e),this}resolve(e){return this.contracts.get(e)}has(e){return this.contracts.has(e)}static lint(e,n="$"){let o=[];return Dn(
192
- e,n,o),o}};function Dn(t,e,n){if(t.type==="object"){t.additionalProperties!==false&&n.push(`${e}: object should set additionalProperties:false`);for(let[o,r]of Object.entries(t.properties??{}))Dn(r,`${e}\
193
- .${o}`,n);}t.type==="array"&&(t.maxItems==null&&n.push(`${e}: array should set maxItems to bound output`),t.items&&Dn(t.items,`${e}[]`,n)),t.type==="string"&&t.maxLength==null&&!t.enum&&n.push(`${e}: s\
194
- tring should set maxLength or use an enum`);}function ir(t,e,n){for(let o of n)if(o.supports(t,e))return {backend:o.id,reason:`first supporting backend: ${o.id}`};return {backend:"none",reason:"no constrained-decoding backend available; will valid\
195
- ate + repair"}}function vu(t=()=>true){return {id:"provider-native",supports:t}}function Pn(t){let e=t.minimumContextTokens??2e3,n=t.minimumNetTokens??200;if(t.contextTokens<e)return {compress:false,reason:`context ${t.contextTokens} < ${e} min`};let o=t.projectedEliminable-t.compressorCostTokens;
196
- return o<n?{compress:false,reason:`net saving ${o} < ${n} min`}:{compress:true,reason:`net saving ${o} tokens`}}function Cu(t){return {async compress(e){let n=e.protectedSpans??[],o=e.text,r=[];n.forEach((c,l)=>{
192
+ minimum&&o.push({path:n,message:`number below minimum ${e.minimum}`});}function ta(t,e){return t===e?true:typeof t!=typeof e?false:t&&e&&typeof t=="object"?JSON.stringify(t)===JSON.stringify(e):false}var Ot=class{contracts=new Map;register(e){return this.contracts.set(e.contractId,e),this}resolve(e){return this.contracts.get(e)}has(e){return this.contracts.has(e)}static lint(e,n="$"){let o=[];return Pn(
193
+ e,n,o),o}};function Pn(t,e,n){if(t.type==="object"){t.additionalProperties!==false&&n.push(`${e}: object should set additionalProperties:false`);for(let[o,r]of Object.entries(t.properties??{}))Pn(r,`${e}\
194
+ .${o}`,n);}t.type==="array"&&(t.maxItems==null&&n.push(`${e}: array should set maxItems to bound output`),t.items&&Pn(t.items,`${e}[]`,n)),t.type==="string"&&t.maxLength==null&&!t.enum&&n.push(`${e}: s\
195
+ tring should set maxLength or use an enum`);}function lr(t,e,n){for(let o of n)if(o.supports(t,e))return {backend:o.id,reason:`first supporting backend: ${o.id}`};return {backend:"none",reason:"no constrained-decoding backend available; will valid\
196
+ ate + repair"}}function Eu(t=()=>true){return {id:"provider-native",supports:t}}function Ln(t){let e=t.minimumContextTokens??2e3,n=t.minimumNetTokens??200;if(t.contextTokens<e)return {compress:false,reason:`context ${t.contextTokens} < ${e} min`};let o=t.projectedEliminable-t.compressorCostTokens;
197
+ return o<n?{compress:false,reason:`net saving ${o} < ${n} min`}:{compress:true,reason:`net saving ${o} tokens`}}function Du(t){return {async compress(e){let n=e.protectedSpans??[],o=e.text,r=[];n.forEach((c,l)=>{
197
198
  let u=`\0PROTECT_${l}\0`;r.push({token:u,span:c}),o=o.split(c.text).join(u);});let s=await t.compress({text:o,...e.targetRatio!=null?{targetRatio:e.targetRatio}:{}}),i=s.compressed,a=true;for(let{token:c,
198
199
  span:l}of r){if(!i.includes(c)){a=false;break}i=i.split(c).join(l.text);}return a?{...s,compressed:i,protectedSpans:n.length,fidelityPassed:true}:{compressed:e.text,originalTokens:s.originalTokens,compressedTokens:s.
199
- originalTokens,protectedSpans:n.length,fidelityPassed:false,skipped:true,reason:"protected span lost during compression; fell back to original"}}}}var Iu={async compress(t){return {compressed:t.text,originalTokens:0,
200
- compressedTokens:0,protectedSpans:(t.protectedSpans??[]).length,fidelityPassed:true,skipped:true,reason:"no compressor configured (noop)"}}};function ar(t,e){let n=i=>i.toLowerCase().replace(/[.,;:!¡?¿()[\]{}"«»…]/g,
200
+ originalTokens,protectedSpans:n.length,fidelityPassed:false,skipped:true,reason:"protected span lost during compression; fell back to original"}}}}var Pu={async compress(t){return {compressed:t.text,originalTokens:0,
201
+ compressedTokens:0,protectedSpans:(t.protectedSpans??[]).length,fidelityPassed:true,skipped:true,reason:"no compressor configured (noop)"}}};function ur(t,e){let n=i=>i.toLowerCase().replace(/[.,;:!¡?¿()[\]{}"«»…]/g,
201
202
  " ").replace(/\s+/g," ").trim(),r=n((i=>{let a=new Set,c=[];for(let l of i.split(`
202
203
  `)){let u=l.trim();u&&a.has(u)||(u&&a.add(u),c.push(l));}return c.join(`
203
- `)})(t)),s=n(e);return !(!Tn(et(r),et(s))||nt(tt(r))!==nt(tt(s)))}var cr=new WeakSet;function lr(t){cr.add(t);}var Ln=class{id="mock";options;constructor(e={}){this.options=e,lr(this);}async generate(e){let n=e.messages.map(a=>a.content).join(`
204
+ `)})(t)),s=n(e);return !(!En(tt(r),tt(s))||ot(nt(r))!==ot(nt(s)))}var dr=new WeakSet;function pr(t){dr.add(t);}var Mn=class{id="mock";options;constructor(e={}){this.options=e,pr(this);}async generate(e){let n=e.messages.map(a=>a.content).join(`
204
205
  `),o=Ne.count(n);if(e.tools&&e.tools.length>0){let a=JSON.stringify(e.tools.map(c=>({name:c.id,description:c.description,parameters:c.parameters??{}})));o+=Ne.count(a);}let r,s=false;if(e.schema){let a=this.
205
- options.data??Ot(e.schema);r=JSON.stringify(a),s=true;}else r=this.options.answer??`mock-response(${e.model})`;let i=Math.min(e.maxOutputTokens??Number.MAX_SAFE_INTEGER,Ne.count(r));return {text:r,usage:{
206
- inputTokens:o,outputTokens:i,...this.options.cachedInputTokens!=null?{cachedInputTokens:this.options.cachedInputTokens}:{}},structuredNatively:s}}};function Ot(t){if(t.enum&&t.enum.length>0)return t.enum[0];
207
- switch(t.type){case "object":{let e={};for(let n of t.required??[]){let o=t.properties?.[n];e[n]=o?Ot(o):null;}for(let[n,o]of Object.entries(t.properties??{}))n in e||(e[n]=Ot(o));return e}case "array":return t.
208
- items?[Ot(t.items)]:[];case "string":return "mock";case "number":case "integer":return t.minimum??0;case "boolean":return true;case "null":return null;default:return null}}function Mu(t){return new Ln(t)}var Xi={flex:.5,default:1,auto:1,priority:1,fast:1,scale:1,standard:1,batch:.5},_t="flex";function dr(t){if(t==null||t==="")return null;let e=Xi[t];return e==null?{servido:t,factor:null,conDescuento:false}:
209
- {servido:t,factor:e,conDescuento:e<1}}function pr(t,e){return !t||t.factor==null||!t.conDescuento||!Number.isFinite(e)||e<=0?null:e*(1-t.factor)}var Qi="slower and variable: OpenAI publishes no latency\
206
+ options.data??_t(e.schema);r=JSON.stringify(a),s=true;}else r=this.options.answer??`mock-response(${e.model})`;let i=Math.min(e.maxOutputTokens??Number.MAX_SAFE_INTEGER,Ne.count(r));return {text:r,usage:{
207
+ inputTokens:o,outputTokens:i,...this.options.cachedInputTokens!=null?{cachedInputTokens:this.options.cachedInputTokens}:{}},structuredNatively:s}}};function _t(t){if(t.enum&&t.enum.length>0)return t.enum[0];
208
+ switch(t.type){case "object":{let e={};for(let n of t.required??[]){let o=t.properties?.[n];e[n]=o?_t(o):null;}for(let[n,o]of Object.entries(t.properties??{}))n in e||(e[n]=_t(o));return e}case "array":return t.
209
+ items?[_t(t.items)]:[];case "string":return "mock";case "number":case "integer":return t.minimum??0;case "boolean":return true;case "null":return null;default:return null}}function Fu(t){return new Mn(t)}var na={flex:.5,default:1,auto:1,priority:1,fast:1,scale:1,standard:1,batch:.5},At="flex";function mr(t){if(t==null||t==="")return null;let e=na[t];return e==null?{servido:t,factor:null,conDescuento:false}:
210
+ {servido:t,factor:e,conDescuento:e<1}}function hr(t,e){return !t||t.factor==null||!t.conDescuento||!Number.isFinite(e)||e<=0?null:e*(1-t.factor)}var oa="slower and variable: OpenAI publishes no latency\
210
211
  commitment for the flex tier. What IS documented is the failure shape \u2014 the default SDK timeout is 10 minutes and a request that exceeds it returns 408, and when flex capacity is short the request re\
211
- turns 429 and is not charged. Do not put a deferrable request on a user-facing path.",ea="unchanged: this provider has no cheaper synchronous processing tier, so nothing was asked for and the request \
212
- was scheduled exactly as it would have been.",fr="this provider has no cheaper synchronous processing tier, so the request was sent unchanged and nothing is credited; on this provider the deferred dis\
213
- count lives only in the asynchronous batch API, which is not a request/response call";function mr(t){return t==null||t===""?ea:t===_t?Qi:`unknown: this layer has no published latency statement for the\
214
- "${t}" tier.`}var hr=new Set;function G(t,e){hr.has(t)||(hr.add(t),console.warn(e));}function Ae(t){if(t==null||typeof t!="object")return true;let e=t,n=e.properties;if(n&&typeof n=="object"){if(e.additionalProperties!==false)return false;let r=Object.keys(n),s=Array.isArray(e.required)?e.required.
212
+ turns 429 and is not charged. Do not put a deferrable request on a user-facing path.",ra="unchanged: this provider has no cheaper synchronous processing tier, so nothing was asked for and the request \
213
+ was scheduled exactly as it would have been.",gr="this provider has no cheaper synchronous processing tier, so the request was sent unchanged and nothing is credited; on this provider the deferred dis\
214
+ count lives only in the asynchronous batch API, which is not a request/response call";function br(t){return t==null||t===""?ra:t===At?oa:`unknown: this layer has no published latency statement for the\
215
+ "${t}" tier.`}var yr=new Set;function G(t,e){yr.has(t)||(yr.add(t),console.warn(e));}function Ae(t){if(t==null||typeof t!="object")return true;let e=t,n=e.properties;if(n&&typeof n=="object"){if(e.additionalProperties!==false)return false;let r=Object.keys(n),s=Array.isArray(e.required)?e.required.
215
216
  map(String):[];if(r.some(i=>!s.includes(i)))return false;for(let i of Object.values(n))if(!Ae(i))return false}if(e.items!==void 0&&!Ae(e.items))return false;for(let r of ["anyOf","oneOf","allOf"]){let s=e[r];if(Array.
216
- isArray(s)&&s.some(i=>!Ae(i)))return false}let o=e.$defs??e.definitions;return !(o&&typeof o=="object"&&Object.values(o).some(r=>!Ae(r)))}function ta(t){return !/response_format/i.test(t)||/invalid schema/i.
217
- test(t)?false:/invalid parameter|not supported|unsupported|unrecognized request argument|unknown parameter/i.test(t)}function na(t){return `Respond with a single JSON object and nothing else: no prose, no\
217
+ isArray(s)&&s.some(i=>!Ae(i)))return false}let o=e.$defs??e.definitions;return !(o&&typeof o=="object"&&Object.values(o).some(r=>!Ae(r)))}function sa(t){return !/response_format/i.test(t)||/invalid schema/i.
218
+ test(t)?false:/invalid parameter|not supported|unsupported|unrecognized request argument|unknown parameter/i.test(t)}function ia(t){return `Respond with a single JSON object and nothing else: no prose, no\
218
219
  explanation, no markdown code fences. The object must validate against this JSON Schema:
219
- `+JSON.stringify(t)}var gr=class{id;opts;fetchImpl;sinResponseFormat=new Set;constructor(e){this.opts=e,this.id=`openai-compatible:${e.baseUrl}`,this.fetchImpl=e.fetchImpl??fetch;}async generate(e){let n=this.
220
- opts.stripProviderPrefix?e.model.replace(/^[^/]+\//,""):e.model,o=e.schema!=null&&!this.sinResponseFormat.has(n),r=await this.enviar(n,e,o);if(!r.ok&&r.status===400&&o){let s=await br(r);if(!ta(s))throw new Error(
220
+ `+JSON.stringify(t)}var xr=class{id;opts;fetchImpl;sinResponseFormat=new Set;constructor(e){this.opts=e,this.id=`openai-compatible:${e.baseUrl}`,this.fetchImpl=e.fetchImpl??fetch;}async generate(e){let n=this.
221
+ opts.stripProviderPrefix?e.model.replace(/^[^/]+\//,""):e.model,o=e.schema!=null&&!this.sinResponseFormat.has(n),r=await this.enviar(n,e,o);if(!r.ok&&r.status===400&&o){let s=await vr(r);if(!sa(s))throw new Error(
221
222
  `provider ${r.status}: ${s}`);this.sinResponseFormat.add(n),G(`sin-response-format:${n}`,`[bvsala] El modelo "${n}" rechaza \`response_format\` con un 400: no tiene structured outputs. Se repite la peti\
222
223
  ci\xF3n pidiendo el JSON por prompt (una sola vez: el modelo queda anotado y las siguientes van directas). El esquema sigue viajando y el layer sigue validando, pero la garant\xEDa la da el layer, no el pro\
223
224
  veedor, y el informe lo dice: \`constraints.backend: "none"\`. Para recuperar la garant\xEDa nativa, usa un modelo con structured outputs (gpt-4o o posterior).`),o=false,r=await this.enviar(n,e,false);}if(!r.
224
- ok){let s=await br(r);throw new Error(`provider ${r.status}: ${s}`)}return this.leer(r,e,o)}async enviar(e,n,o){let r=n.messages.map(i=>i.role==="tool"?{role:"tool",content:i.content,tool_call_id:i.toolCallId??
225
+ ok){let s=await vr(r);throw new Error(`provider ${r.status}: ${s}`)}return this.leer(r,e,o)}async enviar(e,n,o){let r=n.messages.map(i=>i.role==="tool"?{role:"tool",content:i.content,tool_call_id:i.toolCallId??
225
226
  i.metadata?.tool_call_id,...i.name?{name:i.name}:{}}:i.role==="assistant"&&i.toolCalls&&i.toolCalls.length>0?{role:"assistant",content:i.content||null,tool_calls:i.toolCalls.map((a,c)=>({id:a.id??`cal\
226
- l_${c}`,type:"function",function:{name:a.name,arguments:a.arguments}}))}:{role:i.role,content:i.content});n.schema&&!o&&r.push({role:"system",content:na(n.schema)});let s={model:e,messages:r};if(n.maxOutputTokens!=
227
+ l_${c}`,type:"function",function:{name:a.name,arguments:a.arguments}}))}:{role:i.role,content:i.content});n.schema&&!o&&r.push({role:"system",content:ia(n.schema)});let s={model:e,messages:r};if(n.maxOutputTokens!=
227
228
  null&&(s.max_tokens=n.maxOutputTokens),n.temperature!=null&&(s.temperature=n.temperature),n.seed!=null&&(s.seed=n.seed),n.promptCacheKey!=null&&(s.prompt_cache_key=n.promptCacheKey),n.deferrable===true&&
228
- (s.service_tier=_t),n.schema&&o){let i=Ae(n.schema);i||G("strict-incompatible","[bvsala] El contrato de respuesta no cumple el modo `strict` de OpenAI (en strict, `required` debe listar TODAS las clav\
229
+ (s.service_tier=At),n.schema&&o){let i=Ae(n.schema);i||G("strict-incompatible","[bvsala] El contrato de respuesta no cumple el modo `strict` de OpenAI (en strict, `required` debe listar TODAS las clav\
229
230
  es de `properties`, y todo objeto necesita `additionalProperties: false`). Se env\xEDa el esquema con `strict: false`: el modelo sigue guiado y el layer sigue validando, pero la garant\xEDa la da el layer, \
230
231
  no el proveedor. Para recuperarla, haz obligatorias todas las claves del contrato."),s.response_format={type:"json_schema",json_schema:{name:"bvsala_contract",schema:n.schema,strict:i}};}return n.tools&&
231
232
  n.tools.length>0&&(s.tools=n.tools.map(i=>({type:"function",function:{name:i.id,...i.description?{description:i.description}:{},parameters:i.parameters??{type:"object",properties:{}}}}))),await this.fetchImpl(
232
233
  `${this.opts.baseUrl.replace(/\/$/,"")}/chat/completions`,{method:"POST",headers:{"content-type":"application/json",...this.opts.apiKey?{authorization:`Bearer ${this.opts.apiKey}`}:{},...this.opts.headers},
233
234
  body:JSON.stringify(s)})}async leer(e,n,o){let r=await e.json(),s=r.choices?.[0]?.message,i=s?.content??"",a=(s?.tool_calls??[]).map(g=>({...g.id?{id:g.id}:{},name:g.function?.name??"",arguments:g.function?.
234
- arguments??""})).filter(g=>g.name!==""),c=r.usage??{},l=c.prompt_tokens??0,u=c.completion_tokens??0,d=typeof c.prompt_tokens!="number",m=typeof c.completion_tokens!="number";if(this.opts.requireUsage&&
235
- (d||m))throw new Error(`provider returned incomplete usage (prompt=${c.prompt_tokens??"absent"}, completion=${c.completion_tokens??"absent"}); cannot measure cost. For gateways/streaming, ensure usage\
236
- reporting is enabled.`);let f=r.choices?.[0]?.finish_reason,h=typeof r.service_tier=="string"&&r.service_tier!==""?r.service_tier:void 0;return {text:i,...a.length>0?{toolCalls:a}:{},...f?{finishReason:f}:
237
- {},...h?{servedServiceTier:h}:{},...n.deferrable===true?{requestedServiceTier:_t}:{},usage:{inputTokens:l,outputTokens:u,...c.prompt_tokens_details?.cached_tokens!=null?{cachedInputTokens:c.prompt_tokens_details.
238
- cached_tokens}:{}},structuredNatively:n.schema!=null&&o,raw:r}}};async function br(t){try{return (await t.text()).slice(0,500)}catch{return "<no body>"}}function xr(t){return `Respond with a single JSON object and nothing else: no prose, no explanation, no markdown code fences. The object must validate against this JSON Schema:
239
- `+JSON.stringify(t)}var At=4,Fe="bvsala_contract",yr=class{id;opts;fetchImpl;constructor(e={}){this.opts=e,this.id=`anthropic:${e.baseUrl??"https://api.anthropic.com/v1"}`,this.fetchImpl=e.fetchImpl??fetch;}async generate(e){
235
+ arguments??""})).filter(g=>g.name!==""),c=r.usage??{},l=c.prompt_tokens??0,u=c.completion_tokens??0,d=typeof c.prompt_tokens!="number",f=typeof c.completion_tokens!="number";if(this.opts.requireUsage&&
236
+ (d||f))throw new Error(`provider returned incomplete usage (prompt=${c.prompt_tokens??"absent"}, completion=${c.completion_tokens??"absent"}); cannot measure cost. For gateways/streaming, ensure usage\
237
+ reporting is enabled.`);let m=r.choices?.[0]?.finish_reason,h=typeof r.service_tier=="string"&&r.service_tier!==""?r.service_tier:void 0;return {text:i,...a.length>0?{toolCalls:a}:{},...m?{finishReason:m}:
238
+ {},...h?{servedServiceTier:h}:{},...n.deferrable===true?{requestedServiceTier:At}:{},usage:{inputTokens:l,outputTokens:u,...c.prompt_tokens_details?.cached_tokens!=null?{cachedInputTokens:c.prompt_tokens_details.
239
+ cached_tokens}:{}},structuredNatively:n.schema!=null&&o,raw:r}}};async function vr(t){try{return (await t.text()).slice(0,500)}catch{return "<no body>"}}function kr(t){return `Respond with a single JSON object and nothing else: no prose, no explanation, no markdown code fences. The object must validate against this JSON Schema:
240
+ `+JSON.stringify(t)}var Dt=4,Fe="bvsala_contract",wr=class{id;opts;fetchImpl;constructor(e={}){this.opts=e,this.id=`anthropic:${e.baseUrl??"https://api.anthropic.com/v1"}`,this.fetchImpl=e.fetchImpl??fetch;}async generate(e){
240
241
  let n=this.construirCuerpo(e),o=(this.opts.baseUrl??"https://api.anthropic.com/v1").replace(/\/$/,""),r=await this.fetchImpl(`${o}/messages`,{method:"POST",headers:{"content-type":"application/json","\
241
242
  anthropic-version":this.opts.apiVersion??"2023-06-01",...this.opts.apiKey?{"x-api-key":this.opts.apiKey}:{},...this.opts.headers},body:JSON.stringify(n.body)});if(!r.ok)throw new Error(`provider ${r.status}\
242
- : ${await sa(r)}`);return this.leer(r,e,n.contratoNativo)}construirCuerpo(e){let{system:n,messages:o,prefijoEnMensajes:r,prefijoEnSystem:s}=oa(e);if(o.length===0)throw new Error("anthropic: the reques\
243
+ : ${await la(r)}`);return this.leer(r,e,n.contratoNativo)}construirCuerpo(e){let{system:n,messages:o,prefijoEnMensajes:r,prefijoEnSystem:s}=aa(e);if(o.length===0)throw new Error("anthropic: the reques\
243
244
  t has no user/assistant message. The Messages API needs at least one, and system prompts travel in the `system` field \u2014 they do not count.");let i=(e.tools??[]).map(d=>({name:d.id,...d.description?
244
- {description:d.description}:{},input_schema:d.parameters??{type:"object",properties:{}}})),a=false,c=false;if(e.schema){let d=i.length>0,m=i.some(h=>h.name===Fe),f=Ae(e.schema);m?(n.push({type:"text",text:xr(
245
+ {description:d.description}:{},input_schema:d.parameters??{type:"object",properties:{}}})),a=false,c=false;if(e.schema){let d=i.length>0,f=i.some(h=>h.name===Fe),m=Ae(e.schema);f?(n.push({type:"text",text:kr(
245
246
  e.schema)}),G("anthropic-contrato-nombre-ocupado",`[bvsala] One of your tools is already named \`${Fe}\`, so the output contract cannot travel as a tool without colliding with it (duplicate tool names \
246
- are a provider error). The schema is sent as prompt text instead, which is measurably more expensive on this API. Rename that tool to get the cheaper path.`)):(!f&&!d&&G("anthropic-strict-incompatible",
247
+ are a provider error). The schema is sent as prompt text instead, which is measurably more expensive on this API. Rename that tool to get the cheaper path.`)):(!m&&!d&&G("anthropic-strict-incompatible",
247
248
  "[bvsala] El contrato de respuesta no cumple el modo `strict` (en strict, `required` debe listar TODAS las claves de `properties`, y todo objeto necesita `additionalProperties: false`). Se env\xEDa el es\
248
- quema sin `strict`: el modelo sigue guiado y el layer sigue validando, pero la garant\xEDa la da el layer, no el proveedor."),a=f&&!d,i.push({name:Fe,description:d?"Return the final answer in the requ\
249
+ quema sin `strict`: el modelo sigue guiado y el layer sigue validando, pero la garant\xEDa la da el layer, no el proveedor."),a=m&&!d,i.push({name:Fe,description:d?"Return the final answer in the requ\
249
250
  ired shape. Use the other tools first if you need data; call this one instead of writing the answer as text.":"Return the final answer in the required shape.",input_schema:e.schema,...a?{strict:true}:{}}),
250
251
  d&&(c=this.opts.forceAnswerThroughTool!==false,G("anthropic-contrato-con-herramientas","[bvsala] This request carries BOTH your tools and an output contract. On Anthropic's Messages API a specific shape \
251
252
  is only GUARANTEED by forcing that exact tool, and forcing ours would leave the model unable to call yours. The contract travels as one extra tool"+(c?' and the request is sent with `tool_choice: {typ\
@@ -256,37 +257,37 @@ d.")+" Dropping either the tools or the contract from this request is what makes
256
257
  n.length>0&&(l.system=n),e.temperature!=null&&(l.temperature=e.temperature),i.length>0&&(l.tools=i),a?l.tool_choice={type:"tool",name:Fe}:c&&(l.tool_choice={type:"any"}),e.deferrable===true&&G("anthropi\
257
258
  c-sin-tier-diferible","[bvsala] Esta petici\xF3n se declar\xF3 diferible, pero la API de Mensajes de Anthropic NO tiene un tier s\xEDncrono m\xE1s barato: su `service_tier` elige entre capacidad prioritaria (m\xE1s \
258
259
  cara) y est\xE1ndar, no un flex. La petici\xF3n sale sin cambios y el informe no acredita ning\xFAn descuento. El 50% por diferir existe en la Message Batches API, que es as\xEDncrona y no cabe en una llamada de \
259
- petici\xF3n/respuesta.");let u=this.marcarCache(e,n,o,r,s);return this.opts.automaticCache===true&&e.stablePrefixMessages!=null&&u<Math.min(this.opts.maxCacheBreakpoints??At,At)&&(l.cache_control={type:"\
260
- ephemeral"}),{body:l,contratoNativo:a}}marcarCache(e,n,o,r,s){if(e.promptCacheKey!=null,e.stablePrefixMessages==null)return 0;let i=Math.min(this.opts.maxCacheBreakpoints??At,At);if(i<=0)return 0;let a=i,
260
+ petici\xF3n/respuesta.");let u=this.marcarCache(e,n,o,r,s);return this.opts.automaticCache===true&&e.stablePrefixMessages!=null&&u<Math.min(this.opts.maxCacheBreakpoints??Dt,Dt)&&(l.cache_control={type:"\
261
+ ephemeral"}),{body:l,contratoNativo:a}}marcarCache(e,n,o,r,s){if(e.promptCacheKey!=null,e.stablePrefixMessages==null)return 0;let i=Math.min(this.opts.maxCacheBreakpoints??Dt,Dt);if(i<=0)return 0;let a=i,
261
262
  c=s>0?n[s-1]:void 0;if(c&&(c.cache_control={type:"ephemeral"},i-=1),i>0&&r>0){let l=o[Math.min(r,o.length)-1],u=l?.content[l.content.length-1];u&&(u.cache_control={type:"ephemeral"},i-=1);}return a-i}async leer(e,n,o){
262
263
  let r=await e.json(),s=r.content??[],i=s.filter(b=>b.type==="text").map(b=>b.text??"").join(""),a=s.filter(b=>b.type==="tool_use"&&b.name!==Fe).map(b=>({...b.id?{id:b.id}:{},name:b.name??"",arguments:JSON.
263
- stringify(b.input??{})})).filter(b=>b.name!==""),c=s.find(b=>b.type==="tool_use"&&b.name===Fe),l=c?JSON.stringify(c.input??{}):i,u=r.usage??{},d=u.cache_read_input_tokens,m=u.cache_creation_input_tokens,
264
- f=(u.input_tokens??0)+(m??0)+(d??0),h=u.output_tokens??0,g=typeof u.input_tokens!="number",p=typeof u.output_tokens!="number";if(this.opts.requireUsage&&(g||p))throw new Error(`provider returned incom\
265
- plete usage (input=${u.input_tokens??"absent"}, output=${u.output_tokens??"absent"}); cannot measure cost.`);let x=typeof u.service_tier=="string"&&u.service_tier!==""?u.service_tier:void 0;return {text:l,
266
- ...a.length>0?{toolCalls:a}:{},...r.stop_reason?{finishReason:ra(r.stop_reason)}:{},...x?{servedServiceTier:x}:{},usage:{inputTokens:f,outputTokens:h,...d!=null?{cachedInputTokens:d}:{},...m!=null?{cacheWriteInputTokens:m}:
267
- {}},structuredNatively:n.schema!=null&&o,raw:r}}};function oa(t){let e=[],n=[],o=t.stablePrefixMessages??0,r=0,s=0,i=true;return t.messages.forEach((a,c)=>{if(a.role==="system"&&i){e.push({type:"text",text:a.
264
+ stringify(b.input??{})})).filter(b=>b.name!==""),c=s.find(b=>b.type==="tool_use"&&b.name===Fe),l=c?JSON.stringify(c.input??{}):i,u=r.usage??{},d=u.cache_read_input_tokens,f=u.cache_creation_input_tokens,
265
+ m=(u.input_tokens??0)+(f??0)+(d??0),h=u.output_tokens??0,g=typeof u.input_tokens!="number",p=typeof u.output_tokens!="number";if(this.opts.requireUsage&&(g||p))throw new Error(`provider returned incom\
266
+ plete usage (input=${u.input_tokens??"absent"}, output=${u.output_tokens??"absent"}); cannot measure cost.`);let y=typeof u.service_tier=="string"&&u.service_tier!==""?u.service_tier:void 0;return {text:l,
267
+ ...a.length>0?{toolCalls:a}:{},...r.stop_reason?{finishReason:ca(r.stop_reason)}:{},...y?{servedServiceTier:y}:{},usage:{inputTokens:m,outputTokens:h,...d!=null?{cachedInputTokens:d}:{},...f!=null?{cacheWriteInputTokens:f}:
268
+ {}},structuredNatively:n.schema!=null&&o,raw:r}}};function aa(t){let e=[],n=[],o=t.stablePrefixMessages??0,r=0,s=0,i=true;return t.messages.forEach((a,c)=>{if(a.role==="system"&&i){e.push({type:"text",text:a.
268
269
  content}),c<o&&(s=e.length);return}i=false,n.push({role:a.role==="assistant"?"assistant":"user",content:[{type:"text",text:a.content}]}),c<o&&(r=n.length);}),n.length>0&&n[0].role==="assistant"&&(n.unshift(
269
- {role:"user",content:[{type:"text",text:"(continue)"}]}),r>0&&(r+=1)),{system:e,messages:n,prefijoEnMensajes:r,prefijoEnSystem:s}}function ra(t){switch(t){case "end_turn":return "stop";case "max_tokens":
270
- return "length";case "tool_use":return "tool_calls";case "refusal":return "content_filter";default:return t}}async function sa(t){try{return (await t.text()).slice(0,500)}catch{return "<no body>"}}var rt=class{events=[];start;now;constructor(e=()=>Date.now()){this.now=e,this.start=e();}record(e,n,o){this.events.push({stage:e,outcome:n,...o?{detail:o}:{},atMs:this.now()-this.start});}elapsed(){return this.
271
- now()-this.start}all(){return this.events}};var De=class extends Error{status;constructor(e,n){super(e),this.name="LicenseError",n&&(this.status=n);}};function Mn(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"&&"BYTES_PER_ELEMENT"in t&&t.BYTES_PER_ELEMENT===1}function Dt(t,e=""){if(typeof t!="number"){let n=e&&
270
+ {role:"user",content:[{type:"text",text:"(continue)"}]}),r>0&&(r+=1)),{system:e,messages:n,prefijoEnMensajes:r,prefijoEnSystem:s}}function ca(t){switch(t){case "end_turn":return "stop";case "max_tokens":
271
+ return "length";case "tool_use":return "tool_calls";case "refusal":return "content_filter";default:return t}}async function la(t){try{return (await t.text()).slice(0,500)}catch{return "<no body>"}}var st=class{events=[];start;now;constructor(e=()=>Date.now()){this.now=e,this.start=e();}record(e,n,o){this.events.push({stage:e,outcome:n,...o?{detail:o}:{},atMs:this.now()-this.start});}elapsed(){return this.
272
+ now()-this.start}all(){return this.events}};var De=class extends Error{status;constructor(e,n){super(e),this.name="LicenseError",n&&(this.status=n);}};function Bn(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"&&"BYTES_PER_ELEMENT"in t&&t.BYTES_PER_ELEMENT===1}function Pt(t,e=""){if(typeof t!="number"){let n=e&&
272
273
  `"${e}" `;throw new TypeError(`${n}expected number, got ${typeof t}`)}if(!Number.isSafeInteger(t)||t<0){let n=e&&`"${e}" `;throw new RangeError(`${n}expected integer >= 0, got ${t}`)}}function oe(t,e,n=""){
273
- let o=Mn(t),r=t?.length,s=e!==void 0;if(!o||s&&r!==e){let i=n&&`"${n}" `,a=s?` of length ${e}`:"",c=o?`length=${r}`:`type=${typeof t}`,l=i+"expected Uint8Array"+a+", got "+c;throw o?new RangeError(l):
274
- new TypeError(l)}return t}function Bn(t,e=true){if(t.destroyed)throw new Error("Hash instance has been destroyed");if(e&&t.finished)throw new Error("Hash#digest() has already been called")}function kr(t,e){oe(t,void 0,"digestInt\
275
- o() output");let n=e.outputLen;if(t.length<n)throw new RangeError('"digestInto() output" expected to be of length >='+n)}function st(...t){for(let e=0;e<t.length;e++)t[e].fill(0);}function Pt(t){return new DataView(t.buffer,t.byteOffset,t.byteLength)}var wr=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",ia=Array.from({length:256},(t,e)=>e.toString(16).padStart(2,"0"));function Lt(t){if(oe(t),wr)return t.toHex();
276
- let e="";for(let n=0;n<t.length;n++)e+=ia[t[n]];return e}var he={_0:48,_9:57,A:65,F:70,a:97,f:102};function vr(t){if(t>=he._0&&t<=he._9)return t-he._0;if(t>=he.A&&t<=he.F)return t-(he.A-10);if(t>=he.a&&
277
- t<=he.f)return t-(he.a-10)}function it(t){if(typeof t!="string")throw new TypeError("hex string expected, got "+typeof t);if(wr)try{return Uint8Array.fromHex(t)}catch(r){throw r instanceof SyntaxError?
278
- new RangeError(r.message):r}let e=t.length,n=e/2;if(e%2)throw new RangeError("hex string expected, got unpadded hex of length "+e);let o=new Uint8Array(n);for(let r=0,s=0;r<n;r++,s+=2){let i=vr(t.charCodeAt(
279
- s)),a=vr(t.charCodeAt(s+1));if(i===void 0||a===void 0){let c=t[s]+t[s+1];throw new RangeError('hex string expected, got non-hex character "'+c+'" at index '+s)}o[r]=i*16+a;}return o}function Nn(...t){let e=0;for(let o=0;o<t.length;o++){let r=t[o];oe(r),e+=r.length;}let n=new Uint8Array(e);for(let o=0,r=0;o<t.length;o++){let s=t[o];n.set(s,r),r+=s.length;}return n}function Sr(t,e={}){let n=(r,s)=>t(s).update(r).digest(),o=t(void 0);return n.outputLen=o.outputLen,n.blockLen=o.blockLen,n.canXOF=o.canXOF,n.create=r=>t(r),Object.assign(n,e),Object.freeze(n)}function Tr(t=32){
280
- Dt(t,"bytesLength");let e=typeof globalThis=="object"?globalThis.crypto:null;if(typeof e?.getRandomValues!="function")throw new Error("crypto.getRandomValues must be defined");if(t>65536)throw new RangeError(
281
- `"bytesLength" expected <= 65536, got ${t}`);return e.getRandomValues(new Uint8Array(t))}var Er=t=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,t])});var Mt=class{blockLen;outputLen;canXOF=false;padOffset;isLE;buffer;view;finished=false;length=0;pos=0;destroyed=false;constructor(e,n,o,r){this.blockLen=e,this.outputLen=n,this.padOffset=o,this.isLE=r,this.buffer=
282
- new Uint8Array(e),this.view=Pt(this.buffer);}update(e){Bn(this),oe(e);let{view:n,buffer:o,blockLen:r}=this,s=e.length;for(let i=0;i<s;){let a=Math.min(r-this.pos,s-i);if(a===r){let c=Pt(e);for(;r<=s-i;i+=
283
- r)this.process(c,i);continue}o.set(e.subarray(i,i+a),this.pos),this.pos+=a,i+=a,this.pos===r&&(this.process(n,0),this.pos=0);}return this.length+=e.length,this.roundClean(),this}digestInto(e){Bn(this),
284
- kr(e,this),this.finished=true;let{buffer:n,view:o,blockLen:r,isLE:s}=this,{pos:i}=this;n[i++]=128,st(this.buffer.subarray(i)),this.padOffset>r-i&&(this.process(o,0),i=0);for(let d=i;d<r;d++)n[d]=0;o.setBigUint64(
285
- r-8,BigInt(this.length*8),s),this.process(o,0);let a=Pt(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen must be aligned to 32bit");let l=c/4,u=this.get();if(l>u.length)throw new Error("_s\
274
+ let o=Bn(t),r=t?.length,s=e!==void 0;if(!o||s&&r!==e){let i=n&&`"${n}" `,a=s?` of length ${e}`:"",c=o?`length=${r}`:`type=${typeof t}`,l=i+"expected Uint8Array"+a+", got "+c;throw o?new RangeError(l):
275
+ new TypeError(l)}return t}function Nn(t,e=true){if(t.destroyed)throw new Error("Hash instance has been destroyed");if(e&&t.finished)throw new Error("Hash#digest() has already been called")}function Tr(t,e){oe(t,void 0,"digestInt\
276
+ o() output");let n=e.outputLen;if(t.length<n)throw new RangeError('"digestInto() output" expected to be of length >='+n)}function it(...t){for(let e=0;e<t.length;e++)t[e].fill(0);}function Lt(t){return new DataView(t.buffer,t.byteOffset,t.byteLength)}var Er=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",ua=Array.from({length:256},(t,e)=>e.toString(16).padStart(2,"0"));function Mt(t){if(oe(t),Er)return t.toHex();
277
+ let e="";for(let n=0;n<t.length;n++)e+=ua[t[n]];return e}var he={_0:48,_9:57,A:65,F:70,a:97,f:102};function Sr(t){if(t>=he._0&&t<=he._9)return t-he._0;if(t>=he.A&&t<=he.F)return t-(he.A-10);if(t>=he.a&&
278
+ t<=he.f)return t-(he.a-10)}function at(t){if(typeof t!="string")throw new TypeError("hex string expected, got "+typeof t);if(Er)try{return Uint8Array.fromHex(t)}catch(r){throw r instanceof SyntaxError?
279
+ new RangeError(r.message):r}let e=t.length,n=e/2;if(e%2)throw new RangeError("hex string expected, got unpadded hex of length "+e);let o=new Uint8Array(n);for(let r=0,s=0;r<n;r++,s+=2){let i=Sr(t.charCodeAt(
280
+ s)),a=Sr(t.charCodeAt(s+1));if(i===void 0||a===void 0){let c=t[s]+t[s+1];throw new RangeError('hex string expected, got non-hex character "'+c+'" at index '+s)}o[r]=i*16+a;}return o}function jn(...t){let e=0;for(let o=0;o<t.length;o++){let r=t[o];oe(r),e+=r.length;}let n=new Uint8Array(e);for(let o=0,r=0;o<t.length;o++){let s=t[o];n.set(s,r),r+=s.length;}return n}function Rr(t,e={}){let n=(r,s)=>t(s).update(r).digest(),o=t(void 0);return n.outputLen=o.outputLen,n.blockLen=o.blockLen,n.canXOF=o.canXOF,n.create=r=>t(r),Object.assign(n,e),Object.freeze(n)}function Cr(t=32){
281
+ Pt(t,"bytesLength");let e=typeof globalThis=="object"?globalThis.crypto:null;if(typeof e?.getRandomValues!="function")throw new Error("crypto.getRandomValues must be defined");if(t>65536)throw new RangeError(
282
+ `"bytesLength" expected <= 65536, got ${t}`);return e.getRandomValues(new Uint8Array(t))}var Ir=t=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,t])});var Bt=class{blockLen;outputLen;canXOF=false;padOffset;isLE;buffer;view;finished=false;length=0;pos=0;destroyed=false;constructor(e,n,o,r){this.blockLen=e,this.outputLen=n,this.padOffset=o,this.isLE=r,this.buffer=
283
+ new Uint8Array(e),this.view=Lt(this.buffer);}update(e){Nn(this),oe(e);let{view:n,buffer:o,blockLen:r}=this,s=e.length;for(let i=0;i<s;){let a=Math.min(r-this.pos,s-i);if(a===r){let c=Lt(e);for(;r<=s-i;i+=
284
+ r)this.process(c,i);continue}o.set(e.subarray(i,i+a),this.pos),this.pos+=a,i+=a,this.pos===r&&(this.process(n,0),this.pos=0);}return this.length+=e.length,this.roundClean(),this}digestInto(e){Nn(this),
285
+ Tr(e,this),this.finished=true;let{buffer:n,view:o,blockLen:r,isLE:s}=this,{pos:i}=this;n[i++]=128,it(this.buffer.subarray(i)),this.padOffset>r-i&&(this.process(o,0),i=0);for(let d=i;d<r;d++)n[d]=0;o.setBigUint64(
286
+ r-8,BigInt(this.length*8),s),this.process(o,0);let a=Lt(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen must be aligned to 32bit");let l=c/4,u=this.get();if(l>u.length)throw new Error("_s\
286
287
  ha2: outputLen bigger than state");for(let d=0;d<l;d++)a.setUint32(4*d,u[d],s);}digest(){let{buffer:e,outputLen:n}=this;this.digestInto(e);let o=e.slice(0,n);return this.destroy(),o}_cloneInto(e){e||=new this.
287
- constructor,e.set(...this.get());let{blockLen:n,buffer:o,length:r,finished:s,destroyed:i,pos:a}=this;return e.destroyed=i,e.finished=s,e.length=r,e.pos=a,r%n&&e.buffer.set(o),e}clone(){return this._cloneInto()}};var K=Uint32Array.from([1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209]);var Bt=BigInt(4294967295),Rr=BigInt(32);function aa(t,e=false){return e?{h:Number(t&Bt),l:Number(t>>Rr&Bt)}:{h:Number(t>>Rr&Bt)|0,l:Number(t&Bt)|0}}function Cr(t,e=false){let n=t.length,o=new Uint32Array(n),
288
- r=new Uint32Array(n);for(let s=0;s<n;s++){let{h:i,l:a}=aa(t[s],e);[o[s],r[s]]=[i,a];}return [o,r]}var jn=(t,e,n)=>t>>>n,$n=(t,e,n)=>t<<32-n|e>>>n,Pe=(t,e,n)=>t>>>n|e<<32-n,Le=(t,e,n)=>t<<32-n|e>>>n,at=(t,e,n)=>t<<64-n|e>>>n-32,ct=(t,e,n)=>t>>>n-32|e<<64-n;function ce(t,e,n,o){let r=(e>>>0)+(o>>>0);return {h:t+n+(r/2**32|0)|0,l:r|0}}var Ir=(t,e,n)=>(t>>>0)+(e>>>0)+(n>>>0),Or=(t,e,n,o)=>e+n+o+(t/2**32|0)|0,_r=(t,e,n,o)=>(t>>>0)+(e>>>0)+(n>>>0)+(o>>>0),Ar=(t,e,n,o,r)=>e+
289
- n+o+r+(t/2**32|0)|0,Dr=(t,e,n,o,r)=>(t>>>0)+(e>>>0)+(n>>>0)+(o>>>0)+(r>>>0),Pr=(t,e,n,o,r,s)=>e+n+o+r+s+(t/2**32|0)|0;var Lr=Cr(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242",
288
+ constructor,e.set(...this.get());let{blockLen:n,buffer:o,length:r,finished:s,destroyed:i,pos:a}=this;return e.destroyed=i,e.finished=s,e.length=r,e.pos=a,r%n&&e.buffer.set(o),e}clone(){return this._cloneInto()}};var K=Uint32Array.from([1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209]);var Nt=BigInt(4294967295),Or=BigInt(32);function da(t,e=false){return e?{h:Number(t&Nt),l:Number(t>>Or&Nt)}:{h:Number(t>>Or&Nt)|0,l:Number(t&Nt)|0}}function _r(t,e=false){let n=t.length,o=new Uint32Array(n),
289
+ r=new Uint32Array(n);for(let s=0;s<n;s++){let{h:i,l:a}=da(t[s],e);[o[s],r[s]]=[i,a];}return [o,r]}var $n=(t,e,n)=>t>>>n,Fn=(t,e,n)=>t<<32-n|e>>>n,Pe=(t,e,n)=>t>>>n|e<<32-n,Le=(t,e,n)=>t<<32-n|e>>>n,ct=(t,e,n)=>t<<64-n|e>>>n-32,lt=(t,e,n)=>t>>>n-32|e<<64-n;function ce(t,e,n,o){let r=(e>>>0)+(o>>>0);return {h:t+n+(r/2**32|0)|0,l:r|0}}var Ar=(t,e,n)=>(t>>>0)+(e>>>0)+(n>>>0),Dr=(t,e,n,o)=>e+n+o+(t/2**32|0)|0,Pr=(t,e,n,o)=>(t>>>0)+(e>>>0)+(n>>>0)+(o>>>0),Lr=(t,e,n,o,r)=>e+
290
+ n+o+r+(t/2**32|0)|0,Mr=(t,e,n,o,r)=>(t>>>0)+(e>>>0)+(n>>>0)+(o>>>0)+(r>>>0),Br=(t,e,n,o,r,s)=>e+n+o+r+s+(t/2**32|0)|0;var Nr=_r(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242",
290
291
  "0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc6\
291
292
  8b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","\
292
293
  0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3\
@@ -294,155 +295,157 @@ c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a6
294
295
  x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5d\
295
296
  efb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0x\
296
297
  eada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c1\
297
- 00d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(t=>BigInt(t))),la=Lr[0],ua=Lr[1],Te=new Uint32Array(80),Ee=new Uint32Array(80),Fn=class extends Mt{constructor(e){
298
- super(128,e,16,false);}get(){let{Ah:e,Al:n,Bh:o,Bl:r,Ch:s,Cl:i,Dh:a,Dl:c,Eh:l,El:u,Fh:d,Fl:m,Gh:f,Gl:h,Hh:g,Hl:p}=this;return [e,n,o,r,s,i,a,c,l,u,d,m,f,h,g,p]}set(e,n,o,r,s,i,a,c,l,u,d,m,f,h,g,p){this.Ah=
299
- e|0,this.Al=n|0,this.Bh=o|0,this.Bl=r|0,this.Ch=s|0,this.Cl=i|0,this.Dh=a|0,this.Dl=c|0,this.Eh=l|0,this.El=u|0,this.Fh=d|0,this.Fl=m|0,this.Gh=f|0,this.Gl=h|0,this.Hh=g|0,this.Hl=p|0;}process(e,n){for(let y=0;y<
300
- 16;y++,n+=4)Te[y]=e.getUint32(n),Ee[y]=e.getUint32(n+=4);for(let y=16;y<80;y++){let T=Te[y-15]|0,E=Ee[y-15]|0,R=Pe(T,E,1)^Pe(T,E,8)^jn(T,E,7),C=Le(T,E,1)^Le(T,E,8)^$n(T,E,7),D=Te[y-2]|0,I=Ee[y-2]|0,S=Pe(
301
- D,I,19)^at(D,I,61)^jn(D,I,6),B=Le(D,I,19)^ct(D,I,61)^$n(D,I,6),k=_r(C,B,Ee[y-7],Ee[y-16]),w=Ar(k,R,S,Te[y-7],Te[y-16]);Te[y]=w|0,Ee[y]=k|0;}let{Ah:o,Al:r,Bh:s,Bl:i,Ch:a,Cl:c,Dh:l,Dl:u,Eh:d,El:m,Fh:f,Fl:h,
302
- Gh:g,Gl:p,Hh:x,Hl:b}=this;for(let y=0;y<80;y++){let T=Pe(d,m,14)^Pe(d,m,18)^at(d,m,41),E=Le(d,m,14)^Le(d,m,18)^ct(d,m,41),R=d&f^~d&g,C=m&h^~m&p,D=Dr(b,E,C,ua[y],Ee[y]),I=Pr(D,x,T,R,la[y],Te[y]),S=D|0,
303
- B=Pe(o,r,28)^at(o,r,34)^at(o,r,39),k=Le(o,r,28)^ct(o,r,34)^ct(o,r,39),w=o&s^o&a^s&a,_=r&i^r&c^i&c;x=g|0,b=p|0,g=f|0,p=h|0,f=d|0,h=m|0,{h:d,l:m}=ce(l|0,u|0,I|0,S|0),l=a|0,u=c|0,a=s|0,c=i|0,s=o|0,i=r|0;
304
- let P=Ir(S,k,_);o=Or(P,I,B,w),r=P|0;}(({h:o,l:r}=ce(this.Ah|0,this.Al|0,o|0,r|0))),{h:s,l:i}=ce(this.Bh|0,this.Bl|0,s|0,i|0),{h:a,l:c}=ce(this.Ch|0,this.Cl|0,a|0,c|0),{h:l,l:u}=ce(this.Dh|0,this.Dl|0,l|0,
305
- u|0),{h:d,l:m}=ce(this.Eh|0,this.El|0,d|0,m|0),{h:f,l:h}=ce(this.Fh|0,this.Fl|0,f|0,h|0),{h:g,l:p}=ce(this.Gh|0,this.Gl|0,g|0,p|0),{h:x,l:b}=ce(this.Hh|0,this.Hl|0,x|0,b|0),this.set(o,r,s,i,a,c,l,u,d,
306
- m,f,h,g,p,x,b);}roundClean(){st(Te,Ee);}destroy(){this.destroyed=true,st(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);}},zn=class extends Fn{Ah=K[0]|0;Al=K[1]|0;Bh=K[2]|0;Bl=K[3]|0;Ch=K[4]|0;Cl=K[5]|
307
- 0;Dh=K[6]|0;Dl=K[7]|0;Eh=K[8]|0;El=K[9]|0;Fh=K[10]|0;Fl=K[11]|0;Gh=K[12]|0;Gl=K[13]|0;Hh=K[14]|0;Hl=K[15]|0;constructor(){super(64);}};var Nt=Sr(()=>new zn,Er(3));var z=(t,e,n)=>oe(t,e,n),Un=Dt,qn=Lt,le=(...t)=>Nn(...t),Mr=t=>it(t),Ft=Mn,Br=t=>Tr(t),$t=BigInt(0),Vn=BigInt(1);function ze(t,e=""){if(typeof t!="boolean"){let n=e&&`"${e}" `;throw new TypeError(n+"e\
308
- xpected boolean, got type="+typeof t)}return t}function da(t){if(typeof t=="bigint"){if(!jt(t))throw new RangeError("positive bigint expected, got "+t)}else Un(t);return t}function ge(t,e=""){if(typeof t!=
309
- "number"){let n=e&&`"${e}" `;throw new TypeError(n+"expected number, got type="+typeof t)}if(!Number.isSafeInteger(t)){let n=e&&`"${e}" `;throw new RangeError(n+"expected safe integer, got "+t)}}function Nr(t){if(typeof t!="string")throw new TypeError("hex string expected, got "+typeof t);return t===""?$t:BigInt("0x"+t)}function Hn(t){return Nr(Lt(t))}function be(t){return Nr(Lt(lt(oe(t)).reverse()))}
310
- function Kn(t,e){if(Dt(e),e===0)throw new RangeError("zero length");t=da(t);let n=t.toString(16);if(n.length>e*2)throw new RangeError("number too large");return it(n.padStart(e*2,"0"))}function jr(t,e){
311
- return Kn(t,e).reverse()}function $r(t,e){if(t=z(t),e=z(e),t.length!==e.length)return false;let n=0;for(let o=0;o<t.length;o++)n|=t[o]^e[o];return n===0}function lt(t){return Uint8Array.from(z(t))}var jt=t=>typeof t=="bigint"&&$t<=t;function pa(t,e,n){return jt(t)&&jt(e)&&jt(n)&&e<=t&&t<n}function Jn(t,e,n,o){if(!pa(e,n,o))throw new RangeError(
312
- "expected valid "+t+": "+n+" <= n < "+o+", got "+e)}function Wn(t){if(t<$t)throw new Error("expected non-negative bigint, got "+t);let e;for(e=0;t>$t;t>>=Vn,e+=1);return e}var Fr=t=>(Vn<<BigInt(t))-Vn;function Me(t,e={},n={}){if(Object.prototype.toString.call(t)!=="[object Object]")throw new TypeError("expected valid options object");function o(s,i,a){if(!a&&i!=="function"&&!Object.hasOwn(t,s))throw new TypeError(
298
+ 00d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(t=>BigInt(t))),fa=Nr[0],ma=Nr[1],Te=new Uint32Array(80),Ee=new Uint32Array(80),zn=class extends Bt{constructor(e){
299
+ super(128,e,16,false);}get(){let{Ah:e,Al:n,Bh:o,Bl:r,Ch:s,Cl:i,Dh:a,Dl:c,Eh:l,El:u,Fh:d,Fl:f,Gh:m,Gl:h,Hh:g,Hl:p}=this;return [e,n,o,r,s,i,a,c,l,u,d,f,m,h,g,p]}set(e,n,o,r,s,i,a,c,l,u,d,f,m,h,g,p){this.Ah=
300
+ e|0,this.Al=n|0,this.Bh=o|0,this.Bl=r|0,this.Ch=s|0,this.Cl=i|0,this.Dh=a|0,this.Dl=c|0,this.Eh=l|0,this.El=u|0,this.Fh=d|0,this.Fl=f|0,this.Gh=m|0,this.Gl=h|0,this.Hh=g|0,this.Hl=p|0;}process(e,n){for(let x=0;x<
301
+ 16;x++,n+=4)Te[x]=e.getUint32(n),Ee[x]=e.getUint32(n+=4);for(let x=16;x<80;x++){let T=Te[x-15]|0,E=Ee[x-15]|0,R=Pe(T,E,1)^Pe(T,E,8)^$n(T,E,7),C=Le(T,E,1)^Le(T,E,8)^Fn(T,E,7),D=Te[x-2]|0,I=Ee[x-2]|0,S=Pe(
302
+ D,I,19)^ct(D,I,61)^$n(D,I,6),B=Le(D,I,19)^lt(D,I,61)^Fn(D,I,6),k=Pr(C,B,Ee[x-7],Ee[x-16]),w=Lr(k,R,S,Te[x-7],Te[x-16]);Te[x]=w|0,Ee[x]=k|0;}let{Ah:o,Al:r,Bh:s,Bl:i,Ch:a,Cl:c,Dh:l,Dl:u,Eh:d,El:f,Fh:m,Fl:h,
303
+ Gh:g,Gl:p,Hh:y,Hl:b}=this;for(let x=0;x<80;x++){let T=Pe(d,f,14)^Pe(d,f,18)^ct(d,f,41),E=Le(d,f,14)^Le(d,f,18)^lt(d,f,41),R=d&m^~d&g,C=f&h^~f&p,D=Mr(b,E,C,ma[x],Ee[x]),I=Br(D,y,T,R,fa[x],Te[x]),S=D|0,
304
+ B=Pe(o,r,28)^ct(o,r,34)^ct(o,r,39),k=Le(o,r,28)^lt(o,r,34)^lt(o,r,39),w=o&s^o&a^s&a,_=r&i^r&c^i&c;y=g|0,b=p|0,g=m|0,p=h|0,m=d|0,h=f|0,{h:d,l:f}=ce(l|0,u|0,I|0,S|0),l=a|0,u=c|0,a=s|0,c=i|0,s=o|0,i=r|0;
305
+ let P=Ar(S,k,_);o=Dr(P,I,B,w),r=P|0;}(({h:o,l:r}=ce(this.Ah|0,this.Al|0,o|0,r|0))),{h:s,l:i}=ce(this.Bh|0,this.Bl|0,s|0,i|0),{h:a,l:c}=ce(this.Ch|0,this.Cl|0,a|0,c|0),{h:l,l:u}=ce(this.Dh|0,this.Dl|0,l|0,
306
+ u|0),{h:d,l:f}=ce(this.Eh|0,this.El|0,d|0,f|0),{h:m,l:h}=ce(this.Fh|0,this.Fl|0,m|0,h|0),{h:g,l:p}=ce(this.Gh|0,this.Gl|0,g|0,p|0),{h:y,l:b}=ce(this.Hh|0,this.Hl|0,y|0,b|0),this.set(o,r,s,i,a,c,l,u,d,
307
+ f,m,h,g,p,y,b);}roundClean(){it(Te,Ee);}destroy(){this.destroyed=true,it(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);}},Vn=class extends zn{Ah=K[0]|0;Al=K[1]|0;Bh=K[2]|0;Bl=K[3]|0;Ch=K[4]|0;Cl=K[5]|
308
+ 0;Dh=K[6]|0;Dl=K[7]|0;Eh=K[8]|0;El=K[9]|0;Fh=K[10]|0;Fl=K[11]|0;Gh=K[12]|0;Gl=K[13]|0;Hh=K[14]|0;Hl=K[15]|0;constructor(){super(64);}};var jt=Rr(()=>new Vn,Ir(3));var z=(t,e,n)=>oe(t,e,n),qn=Pt,Hn=Mt,le=(...t)=>jn(...t),jr=t=>at(t),zt=Bn,$r=t=>Cr(t),Ft=BigInt(0),Un=BigInt(1);function ze(t,e=""){if(typeof t!="boolean"){let n=e&&`"${e}" `;throw new TypeError(n+"e\
309
+ xpected boolean, got type="+typeof t)}return t}function ha(t){if(typeof t=="bigint"){if(!$t(t))throw new RangeError("positive bigint expected, got "+t)}else qn(t);return t}function ge(t,e=""){if(typeof t!=
310
+ "number"){let n=e&&`"${e}" `;throw new TypeError(n+"expected number, got type="+typeof t)}if(!Number.isSafeInteger(t)){let n=e&&`"${e}" `;throw new RangeError(n+"expected safe integer, got "+t)}}function Fr(t){if(typeof t!="string")throw new TypeError("hex string expected, got "+typeof t);return t===""?Ft:BigInt("0x"+t)}function Kn(t){return Fr(Mt(t))}function be(t){return Fr(Mt(ut(oe(t)).reverse()))}
311
+ function Jn(t,e){if(Pt(e),e===0)throw new RangeError("zero length");t=ha(t);let n=t.toString(16);if(n.length>e*2)throw new RangeError("number too large");return at(n.padStart(e*2,"0"))}function zr(t,e){
312
+ return Jn(t,e).reverse()}function Vr(t,e){if(t=z(t),e=z(e),t.length!==e.length)return false;let n=0;for(let o=0;o<t.length;o++)n|=t[o]^e[o];return n===0}function ut(t){return Uint8Array.from(z(t))}var $t=t=>typeof t=="bigint"&&Ft<=t;function ga(t,e,n){return $t(t)&&$t(e)&&$t(n)&&e<=t&&t<n}function Wn(t,e,n,o){if(!ga(e,n,o))throw new RangeError(
313
+ "expected valid "+t+": "+n+" <= n < "+o+", got "+e)}function Gn(t){if(t<Ft)throw new Error("expected non-negative bigint, got "+t);let e;for(e=0;t>Ft;t>>=Un,e+=1);return e}var Ur=t=>(Un<<BigInt(t))-Un;function Me(t,e={},n={}){if(Object.prototype.toString.call(t)!=="[object Object]")throw new TypeError("expected valid options object");function o(s,i,a){if(!a&&i!=="function"&&!Object.hasOwn(t,s))throw new TypeError(
313
314
  `param "${s}" is invalid: expected own property`);let c=t[s];if(a&&c===void 0)return;let l=typeof c;if(l!==i||c===null)throw new TypeError(`param "${s}" is invalid: expected ${i}, got ${l}`)}let r=(s,i)=>Object.
314
- entries(s).forEach(([a,c])=>o(a,c,i));r(e,false),r(n,true);}var Gn=()=>{throw new Error("not implemented")};var J=BigInt(0),q=BigInt(1),Be=BigInt(2),qr=BigInt(3),Hr=BigInt(4),Kr=BigInt(5),fa=BigInt(7),Jr=BigInt(8),ma=BigInt(9),Wr=BigInt(16);function j(t,e){if(e<=J)throw new Error("mod: expected positive mod\
315
- ulus, got "+e);let n=t%e;return n>=J?n:e+n}function re(t,e,n){if(e<J)throw new Error("pow2: expected non-negative exponent, got "+e);let o=t;for(;e-- >J;)o*=o,o%=n;return o}function zr(t,e){if(t===J)throw new Error("invert: expected non-zero n\
315
+ entries(s).forEach(([a,c])=>o(a,c,i));r(e,false),r(n,true);}var Yn=()=>{throw new Error("not implemented")};var J=BigInt(0),q=BigInt(1),Be=BigInt(2),Jr=BigInt(3),Wr=BigInt(4),Gr=BigInt(5),ba=BigInt(7),Yr=BigInt(8),ya=BigInt(9),Zr=BigInt(16);function j(t,e){if(e<=J)throw new Error("mod: expected positive mod\
316
+ ulus, got "+e);let n=t%e;return n>=J?n:e+n}function re(t,e,n){if(e<J)throw new Error("pow2: expected non-negative exponent, got "+e);let o=t;for(;e-- >J;)o*=o,o%=n;return o}function qr(t,e){if(t===J)throw new Error("invert: expected non-zero n\
316
317
  umber");if(e<=J)throw new Error("invert: expected positive modulus, got "+e);let n=j(t,e),o=e,r=J,i=q;for(;n!==J;){let l=o/n,u=o-n*l,d=r-i*l;o=n,n=u,r=i,i=d;}if(o!==q)throw new Error(
317
- "invert: does not exist");return j(r,e)}function Yn(t,e,n){let o=t;if(!o.eql(o.sqr(e),n))throw new Error("Cannot find square root")}function Gr(t,e){let n=t,o=(n.ORDER+q)/Hr,r=n.pow(e,o);return Yn(n,r,
318
- e),r}function ha(t,e){let n=t,o=(n.ORDER-Kr)/Jr,r=n.mul(e,Be),s=n.pow(r,o),i=n.mul(e,s),a=n.mul(n.mul(i,Be),s),c=n.mul(i,n.sub(a,n.ONE));return Yn(n,c,e),c}function ga(t){let e=qt(t),n=Yr(t),o=n(e,e.neg(
319
- e.ONE)),r=n(e,o),s=n(e,e.neg(o)),i=(t+fa)/Wr;return((a,c)=>{let l=a,u=l.pow(c,i),d=l.mul(u,o),m=l.mul(u,r),f=l.mul(u,s),h=l.eql(l.sqr(d),c),g=l.eql(l.sqr(m),c);u=l.cmov(u,d,h),d=l.cmov(f,m,g);let p=l.
320
- eql(l.sqr(d),c),x=l.cmov(u,d,p);return Yn(l,x,c),x})}function Yr(t){if(t<qr)throw new Error("sqrt is not defined for small field");let e=t-q,n=0;for(;e%Be===J;)e/=Be,n++;let o=Be,r=qt(t);for(;Vr(r,o)===
321
- 1;)if(o++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(n===1)return Gr;let s=r.pow(o,e),i=(e+q)/Be;return function(c,l){let u=c;if(u.is0(l))return l;if(Vr(u,l)!==1)throw new Error(
322
- "Cannot find square root");let d=n,m=u.mul(u.ONE,s),f=u.pow(l,e),h=u.pow(l,i);for(;!u.eql(f,u.ONE);){if(u.is0(f))return u.ZERO;let g=1,p=u.sqr(f);for(;!u.eql(p,u.ONE);)if(g++,p=u.sqr(p),g===d)throw new Error(
323
- "Cannot find square root");let x=q<<BigInt(d-g-1),b=u.pow(m,x);d=g,m=u.sqr(b),f=u.mul(f,m),h=u.mul(h,b);}return h}}function ba(t){return t%Hr===qr?Gr:t%Jr===Kr?ha:t%Wr===ma?ga(t):Yr(t)}var xe=(t,e)=>(j(
324
- t,e)&q)===q,xa=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function Zr(t){let e={ORDER:"bigint",BYTES:"number",BITS:"number"},n=xa.
318
+ "invert: does not exist");return j(r,e)}function Zn(t,e,n){let o=t;if(!o.eql(o.sqr(e),n))throw new Error("Cannot find square root")}function Xr(t,e){let n=t,o=(n.ORDER+q)/Wr,r=n.pow(e,o);return Zn(n,r,
319
+ e),r}function xa(t,e){let n=t,o=(n.ORDER-Gr)/Yr,r=n.mul(e,Be),s=n.pow(r,o),i=n.mul(e,s),a=n.mul(n.mul(i,Be),s),c=n.mul(i,n.sub(a,n.ONE));return Zn(n,c,e),c}function va(t){let e=Ht(t),n=Qr(t),o=n(e,e.neg(
320
+ e.ONE)),r=n(e,o),s=n(e,e.neg(o)),i=(t+ba)/Zr;return((a,c)=>{let l=a,u=l.pow(c,i),d=l.mul(u,o),f=l.mul(u,r),m=l.mul(u,s),h=l.eql(l.sqr(d),c),g=l.eql(l.sqr(f),c);u=l.cmov(u,d,h),d=l.cmov(m,f,g);let p=l.
321
+ eql(l.sqr(d),c),y=l.cmov(u,d,p);return Zn(l,y,c),y})}function Qr(t){if(t<Jr)throw new Error("sqrt is not defined for small field");let e=t-q,n=0;for(;e%Be===J;)e/=Be,n++;let o=Be,r=Ht(t);for(;Hr(r,o)===
322
+ 1;)if(o++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(n===1)return Xr;let s=r.pow(o,e),i=(e+q)/Be;return function(c,l){let u=c;if(u.is0(l))return l;if(Hr(u,l)!==1)throw new Error(
323
+ "Cannot find square root");let d=n,f=u.mul(u.ONE,s),m=u.pow(l,e),h=u.pow(l,i);for(;!u.eql(m,u.ONE);){if(u.is0(m))return u.ZERO;let g=1,p=u.sqr(m);for(;!u.eql(p,u.ONE);)if(g++,p=u.sqr(p),g===d)throw new Error(
324
+ "Cannot find square root");let y=q<<BigInt(d-g-1),b=u.pow(f,y);d=g,f=u.sqr(b),m=u.mul(m,f),h=u.mul(h,b);}return h}}function ka(t){return t%Wr===Jr?Xr:t%Yr===Gr?xa:t%Zr===ya?va(t):Qr(t)}var ye=(t,e)=>(j(
325
+ t,e)&q)===q,wa=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function es(t){let e={ORDER:"bigint",BYTES:"number",BITS:"number"},n=wa.
325
326
  reduce((o,r)=>(o[r]="function",o),e);if(Me(t,n),ge(t.BYTES,"BYTES"),ge(t.BITS,"BITS"),t.BYTES<1||t.BITS<1)throw new Error("invalid field: expected BYTES/BITS > 0");if(t.ORDER<=q)throw new Error("inval\
326
- id field: expected ORDER > 1, got "+t.ORDER);return t}function ya(t,e,n){let o=t;if(n<J)throw new Error("invalid exponent, negatives unsupported");if(n===J)return o.ONE;if(n===q)return e;let r=o.ONE,s=e;
327
- for(;n>J;)n&q&&(r=o.mul(r,s)),s=o.sqr(s),n>>=q;return r}function Ut(t,e,n=false){let o=t,r=new Array(e.length).fill(n?o.ZERO:void 0),s=e.reduce((a,c,l)=>o.is0(c)?a:(r[l]=a,o.mul(a,c)),o.ONE),i=o.inv(s);return e.
328
- reduceRight((a,c,l)=>o.is0(c)?a:(r[l]=o.mul(a,r[l]),o.mul(a,c)),i),r}function Vr(t,e){let n=t,o=(n.ORDER-q)/Be,r=n.pow(e,o),s=n.eql(r,n.ONE),i=n.eql(r,n.ZERO),a=n.eql(r,n.neg(n.ONE));if(!s&&!i&&!a)throw new Error("invalid Legendre symbol result");return s?1:i?0:-1}function va(t,e){if(e!==void 0&&Un(e),t<=J)throw new Error("invalid n length: expected positive n, got "+t);if(e!==void 0&&e<1)throw new Error("invalid n length: expected positive bit length, got "+e);
329
- let n=Wn(t);if(e!==void 0&&e<n)throw new Error(`invalid n length: expected bit length (${n}) >= n.length (${e})`);let o=e!==void 0?e:n,r=Math.ceil(o/8);return {nBitLength:o,nByteLength:r}}var Ur=new WeakMap,
330
- Vt=class{ORDER;BITS;BYTES;isLE;ZERO=J;ONE=q;_lengths;_mod;constructor(e,n={}){if(e<=q)throw new Error("invalid field: expected ORDER > 1, got "+e);let o;this.isLE=false,n!=null&&typeof n=="object"&&(typeof n.
327
+ id field: expected ORDER > 1, got "+t.ORDER);return t}function Sa(t,e,n){let o=t;if(n<J)throw new Error("invalid exponent, negatives unsupported");if(n===J)return o.ONE;if(n===q)return e;let r=o.ONE,s=e;
328
+ for(;n>J;)n&q&&(r=o.mul(r,s)),s=o.sqr(s),n>>=q;return r}function qt(t,e,n=false){let o=t,r=new Array(e.length).fill(n?o.ZERO:void 0),s=e.reduce((a,c,l)=>o.is0(c)?a:(r[l]=a,o.mul(a,c)),o.ONE),i=o.inv(s);return e.
329
+ reduceRight((a,c,l)=>o.is0(c)?a:(r[l]=o.mul(a,r[l]),o.mul(a,c)),i),r}function Hr(t,e){let n=t,o=(n.ORDER-q)/Be,r=n.pow(e,o),s=n.eql(r,n.ONE),i=n.eql(r,n.ZERO),a=n.eql(r,n.neg(n.ONE));if(!s&&!i&&!a)throw new Error("invalid Legendre symbol result");return s?1:i?0:-1}function Ta(t,e){if(e!==void 0&&qn(e),t<=J)throw new Error("invalid n length: expected positive n, got "+t);if(e!==void 0&&e<1)throw new Error("invalid n length: expected positive bit length, got "+e);
330
+ let n=Gn(t);if(e!==void 0&&e<n)throw new Error(`invalid n length: expected bit length (${n}) >= n.length (${e})`);let o=e!==void 0?e:n,r=Math.ceil(o/8);return {nBitLength:o,nByteLength:r}}var Kr=new WeakMap,
331
+ Ut=class{ORDER;BITS;BYTES;isLE;ZERO=J;ONE=q;_lengths;_mod;constructor(e,n={}){if(e<=q)throw new Error("invalid field: expected ORDER > 1, got "+e);let o;this.isLE=false,n!=null&&typeof n=="object"&&(typeof n.
331
332
  BITS=="number"&&(o=n.BITS),typeof n.sqrt=="function"&&Object.defineProperty(this,"sqrt",{value:n.sqrt,enumerable:true}),typeof n.isLE=="boolean"&&(this.isLE=n.isLE),n.allowedLengths&&(this._lengths=Object.
332
- freeze(n.allowedLengths.slice())),typeof n.modFromBytes=="boolean"&&(this._mod=n.modFromBytes));let{nBitLength:r,nByteLength:s}=va(e,o);if(s>2048)throw new Error("invalid field: expected ORDER of <= 2\
333
+ freeze(n.allowedLengths.slice())),typeof n.modFromBytes=="boolean"&&(this._mod=n.modFromBytes));let{nBitLength:r,nByteLength:s}=Ta(e,o);if(s>2048)throw new Error("invalid field: expected ORDER of <= 2\
333
334
  048 bytes");this.ORDER=e,this.BITS=r,this.BYTES=s,Object.freeze(this);}create(e){return j(e,this.ORDER)}isValid(e){if(typeof e!="bigint")throw new TypeError("invalid field element: expected bigint, got\
334
335
  "+typeof e);return J<=e&&e<this.ORDER}is0(e){return e===J}isValidNot0(e){return !this.is0(e)&&this.isValid(e)}isOdd(e){return (e&q)===q}neg(e){return j(-e,this.ORDER)}eql(e,n){return e===n}sqr(e){return j(
335
- e*e,this.ORDER)}add(e,n){return j(e+n,this.ORDER)}sub(e,n){return j(e-n,this.ORDER)}mul(e,n){return j(e*n,this.ORDER)}pow(e,n){return ya(this,e,n)}div(e,n){return j(e*zr(n,this.ORDER),this.ORDER)}sqrN(e){
336
- return e*e}addN(e,n){return e+n}subN(e,n){return e-n}mulN(e,n){return e*n}inv(e){return zr(e,this.ORDER)}sqrt(e){let n=Ur.get(this);return n||Ur.set(this,n=ba(this.ORDER)),n(this,e)}toBytes(e){return this.
337
- isLE?jr(e,this.BYTES):Kn(e,this.BYTES)}fromBytes(e,n=false){z(e);let{_lengths:o,BYTES:r,isLE:s,ORDER:i,_mod:a}=this;if(o){if(e.length<1||!o.includes(e.length)||e.length>r)throw new Error("Field.fromBytes\
336
+ e*e,this.ORDER)}add(e,n){return j(e+n,this.ORDER)}sub(e,n){return j(e-n,this.ORDER)}mul(e,n){return j(e*n,this.ORDER)}pow(e,n){return Sa(this,e,n)}div(e,n){return j(e*qr(n,this.ORDER),this.ORDER)}sqrN(e){
337
+ return e*e}addN(e,n){return e+n}subN(e,n){return e-n}mulN(e,n){return e*n}inv(e){return qr(e,this.ORDER)}sqrt(e){let n=Kr.get(this);return n||Kr.set(this,n=ka(this.ORDER)),n(this,e)}toBytes(e){return this.
338
+ isLE?zr(e,this.BYTES):Jn(e,this.BYTES)}fromBytes(e,n=false){z(e);let{_lengths:o,BYTES:r,isLE:s,ORDER:i,_mod:a}=this;if(o){if(e.length<1||!o.includes(e.length)||e.length>r)throw new Error("Field.fromBytes\
338
339
  : expected "+o+" bytes, got "+e.length);let l=new Uint8Array(r);l.set(e,s?0:l.length-e.length),e=l;}if(e.length!==r)throw new Error("Field.fromBytes: expected "+r+" bytes, got "+e.length);let c=s?be(e):
339
- Hn(e);if(a&&(c=j(c,i)),!n&&!this.isValid(c))throw new Error("invalid field element: outside of range 0..ORDER");return c}invertBatch(e){return Ut(this,e)}cmov(e,n,o){return ze(o,"condition"),o?n:e}};Object.
340
- freeze(Vt.prototype);function qt(t,e={}){return new Vt(t,e)}var Ht=BigInt(0),eo=BigInt(1);function Xr(t,e){let n=e.negate();return t?n:e}function Jt(t,e){let n=Ut(t.Fp,e.map(o=>o.Z));return e.map((o,r)=>t.fromAffine(o.toAffine(n[r])))}function ns(t,e){if(!Number.isSafeInteger(t)||t<=0||t>e)
341
- throw new Error("invalid window size, expected [1.."+e+"], got W="+t)}function Zn(t,e){ns(t,e);let n=Math.ceil(e/t)+1,o=2**(t-1),r=2**t,s=Fr(t),i=BigInt(t);return {windows:n,windowSize:o,mask:s,maxNumber:r,
342
- shiftBy:i}}function Qr(t,e,n){let{windowSize:o,mask:r,maxNumber:s,shiftBy:i}=n,a=Number(t&r),c=t>>i;a>o&&(a-=s,c+=eo);let l=e*o,u=l+Math.abs(a)-1,d=a===0,m=a<0,f=e%2!==0;return {nextN:c,offset:u,isZero:d,
343
- isNeg:m,isNegF:f,offsetF:l}}var Xn=new WeakMap,os=new WeakMap;function Qn(t){return os.get(t)||1}function es(t){if(t!==Ht)throw new Error("invalid wNAF")}var Kt=class{BASE;ZERO;Fn;bits;constructor(e,n){this.BASE=e.BASE,this.ZERO=
344
- e.ZERO,this.Fn=e.Fn,this.bits=n;}_unsafeLadder(e,n,o=this.ZERO){let r=e;for(;n>Ht;)n&eo&&(o=o.add(r)),r=r.double(),n>>=eo;return o}precomputeWindow(e,n){let{windows:o,windowSize:r}=Zn(n,this.bits),s=[],
340
+ Kn(e);if(a&&(c=j(c,i)),!n&&!this.isValid(c))throw new Error("invalid field element: outside of range 0..ORDER");return c}invertBatch(e){return qt(this,e)}cmov(e,n,o){return ze(o,"condition"),o?n:e}};Object.
341
+ freeze(Ut.prototype);function Ht(t,e={}){return new Ut(t,e)}var Kt=BigInt(0),to=BigInt(1);function ts(t,e){let n=e.negate();return t?n:e}function Wt(t,e){let n=qt(t.Fp,e.map(o=>o.Z));return e.map((o,r)=>t.fromAffine(o.toAffine(n[r])))}function ss(t,e){if(!Number.isSafeInteger(t)||t<=0||t>e)
342
+ throw new Error("invalid window size, expected [1.."+e+"], got W="+t)}function Xn(t,e){ss(t,e);let n=Math.ceil(e/t)+1,o=2**(t-1),r=2**t,s=Ur(t),i=BigInt(t);return {windows:n,windowSize:o,mask:s,maxNumber:r,
343
+ shiftBy:i}}function ns(t,e,n){let{windowSize:o,mask:r,maxNumber:s,shiftBy:i}=n,a=Number(t&r),c=t>>i;a>o&&(a-=s,c+=to);let l=e*o,u=l+Math.abs(a)-1,d=a===0,f=a<0,m=e%2!==0;return {nextN:c,offset:u,isZero:d,
344
+ isNeg:f,isNegF:m,offsetF:l}}var Qn=new WeakMap,is=new WeakMap;function eo(t){return is.get(t)||1}function os(t){if(t!==Kt)throw new Error("invalid wNAF")}var Jt=class{BASE;ZERO;Fn;bits;constructor(e,n){this.BASE=e.BASE,this.ZERO=
345
+ e.ZERO,this.Fn=e.Fn,this.bits=n;}_unsafeLadder(e,n,o=this.ZERO){let r=e;for(;n>Kt;)n&to&&(o=o.add(r)),r=r.double(),n>>=to;return o}precomputeWindow(e,n){let{windows:o,windowSize:r}=Xn(n,this.bits),s=[],
345
346
  i=e,a=i;for(let c=0;c<o;c++){a=i,s.push(a);for(let l=1;l<r;l++)a=a.add(i),s.push(a);i=a.double();}return s}wNAF(e,n,o){if(!this.Fn.isValid(o))throw new Error("invalid scalar");let r=this.ZERO,s=this.BASE,
346
- i=Zn(e,this.bits);for(let a=0;a<i.windows;a++){let{nextN:c,offset:l,isZero:u,isNeg:d,isNegF:m,offsetF:f}=Qr(o,a,i);o=c,u?s=s.add(Xr(m,n[f])):r=r.add(Xr(d,n[l]));}return es(o),{p:r,f:s}}wNAFUnsafe(e,n,o,r=this.
347
- ZERO){let s=Zn(e,this.bits);for(let i=0;i<s.windows&&o!==Ht;i++){let{nextN:a,offset:c,isZero:l,isNeg:u}=Qr(o,i,s);if(o=a,!l){let d=n[c];r=r.add(u?d.negate():d);}}return es(o),r}getPrecomputes(e,n,o){let r=Xn.
348
- get(n);return r||(r=this.precomputeWindow(n,e),e!==1&&(typeof o=="function"&&(r=o(r)),Xn.set(n,r))),r}cached(e,n,o){let r=Qn(e);return this.wNAF(r,this.getPrecomputes(r,e,o),n)}unsafe(e,n,o,r){let s=Qn(
349
- e);return s===1?this._unsafeLadder(e,n,r):this.wNAFUnsafe(s,this.getPrecomputes(s,e,o),n,r)}createCache(e,n){ns(n,this.bits),os.set(e,n),Xn.delete(e);}hasCache(e){return Qn(e)!==1}};function ts(t,e,n){if(e){if(e.ORDER!==t)throw new Error("Field.ORDER must match order: Fp == p, Fn == n");return Zr(e),e}else return qt(t,{isLE:n})}function rs(t,e,n={},o){if(o===void 0&&(o=t==="edwar\
350
- ds"),!e||typeof e!="object")throw new Error(`expected valid ${t} CURVE object`);for(let c of ["p","n","h"]){let l=e[c];if(!(typeof l=="bigint"&&l>Ht))throw new Error(`CURVE.${c} must be positive bigint`)}
351
- let r=ts(e.p,n.Fp,o),s=ts(e.n,n.Fn,o),a=["Gx","Gy","a","d"];for(let c of a)if(!r.isValid(e[c]))throw new Error(`CURVE.${c} must be valid field element of CURVE.Fp`);return e=Object.
352
- freeze(Object.assign({},e)),{CURVE:e,Fp:r,Fn:s}}function ss(t,e){return function(o){let r=t(o);return {secretKey:r,publicKey:e(r)}}}var Re=BigInt(0),H=BigInt(1),to=BigInt(2),ka=BigInt(8);function wa(t,e,n,o){let r=t.sqr(n),s=t.sqr(o),i=t.add(t.mul(e.a,r),s),a=t.add(t.ONE,t.mul(e.d,t.mul(r,s)));return t.eql(i,a)}function is(t,e={}){
353
- let n=e,o=rs("edwards",t,n,n.FpFnLE),{Fp:r,Fn:s}=o,i=o.CURVE,{h:a}=i;Me(n,{},{uvRatio:"function"});let c=to<<BigInt(s.BYTES*8)-H,l=g=>r.create(g),u=n.uvRatio===void 0?(g,p)=>{try{return {isValid:!0,value:r.
354
- sqrt(r.div(g,p))}}catch{return {isValid:false,value:Re}}}:n.uvRatio;if(!wa(r,i,i.Gx,i.Gy))throw new Error("bad curve params: generator point");function d(g,p,x=false){let b=x?H:Re;return Jn("coordinate "+g,p,
355
- b,c),p}function m(g){if(!(g instanceof f))throw new Error("EdwardsPoint expected")}class f{static BASE=new f(i.Gx,i.Gy,H,l(i.Gx*i.Gy));static ZERO=new f(Re,H,H,Re);static Fp=r;static Fn=s;X;Y;Z;T;constructor(p,x,b,y){
356
- this.X=d("x",p),this.Y=d("y",x),this.Z=d("z",b,true),this.T=d("t",y),Object.freeze(this);}static CURVE(){return i}static fromAffine(p){if(p instanceof f)throw new Error("extended point not allowed");let{
357
- x,y:b}=p||{};return d("x",x),d("y",b),new f(x,b,H,l(x*b))}static fromBytes(p,x=false){let b=r.BYTES,{a:y,d:T}=i;p=lt(z(p,b,"point")),ze(x,"zip215");let E=lt(p),R=p[b-1];E[b-1]=R&-129;let C=be(E),D=x?c:r.
358
- ORDER;Jn("point.y",C,Re,D);let I=l(C*C),S=l(I-H),B=l(T*I-y),{isValid:k,value:w}=u(S,B);if(!k)throw new Error("bad point: invalid y coordinate");let _=(w&H)===H,P=(R&128)!==0;if(!x&&w===Re&&P)throw new Error(
359
- "bad point: x=0 and x_0=1");return P!==_&&(w=l(-w)),f.fromAffine({x:w,y:C})}static fromHex(p,x=false){return f.fromBytes(Mr(p),x)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(p=8,x=true){
360
- return h.createCache(this,p),x||this.multiply(to),this}assertValidity(){let p=this,{a:x,d:b}=i;if(p.is0())throw new Error("bad point: ZERO");let{X:y,Y:T,Z:E,T:R}=p,C=l(y*y),D=l(T*T),I=l(E*E),S=l(I*I),
361
- B=l(C*x),k=l(I*l(B+D)),w=l(S+l(b*l(C*D)));if(k!==w)throw new Error("bad point: equation left != right (1)");let _=l(y*T),P=l(E*R);if(_!==P)throw new Error("bad point: equation left != right (2)")}equals(p){
362
- m(p);let{X:x,Y:b,Z:y}=this,{X:T,Y:E,Z:R}=p,C=l(x*R),D=l(T*y),I=l(b*R),S=l(E*y);return C===D&&I===S}is0(){return this.equals(f.ZERO)}negate(){return new f(l(-this.X),this.Y,this.Z,l(-this.T))}double(){
363
- let{a:p}=i,{X:x,Y:b,Z:y}=this,T=l(x*x),E=l(b*b),R=l(to*l(y*y)),C=l(p*T),D=x+b,I=l(l(D*D)-T-E),S=C+E,B=S-R,k=C-E,w=l(I*B),_=l(S*k),P=l(I*k),N=l(B*S);return new f(w,_,N,P)}add(p){m(p);let{a:x,d:b}=i,{X:y,
364
- Y:T,Z:E,T:R}=this,{X:C,Y:D,Z:I,T:S}=p,B=l(y*C),k=l(T*D),w=l(R*b*S),_=l(E*I),P=l((y+T)*(C+D)-B-k),N=_-w,V=_+w,O=l(k-x*B),X=l(P*N),$=l(V*O),Q=l(P*O),W=l(N*V);return new f(X,$,W,Q)}subtract(p){return m(p),
365
- this.add(p.negate())}multiply(p){if(!s.isValidNot0(p))throw new RangeError("invalid scalar: expected 1 <= sc < curve.n");let{p:x,f:b}=h.cached(this,p,y=>Jt(f,y));return Jt(f,[x,b])[0]}multiplyUnsafe(p){
366
- if(!s.isValid(p))throw new RangeError("invalid scalar: expected 0 <= sc < curve.n");return p===Re?f.ZERO:this.is0()||p===H?this:h.unsafe(this,p,x=>Jt(f,x))}isSmallOrder(){return this.clearCofactor().is0()}isTorsionFree(){
367
- return h.unsafe(this,i.n).is0()}toAffine(p){let x=this,b=p,{X:y,Y:T,Z:E}=x,R=x.is0();b==null&&(b=R?ka:r.inv(E));let C=l(y*b),D=l(T*b),I=r.mul(E,b);if(R)return {x:Re,y:H};if(I!==H)throw new Error("invZ \
368
- was invalid");return {x:C,y:D}}clearCofactor(){return a===H?this:this.multiplyUnsafe(a)}toBytes(){let{x:p,y:x}=this.toAffine(),b=r.toBytes(x);return b[b.length-1]|=p&H?128:0,b}toHex(){return qn(this.toBytes())}toString(){
369
- return `<Point ${this.is0()?"ZERO":this.toHex()}>`}}let h=new Kt(f,s.BITS);return s.BITS>=8&&f.BASE.precompute(8),Object.freeze(f.prototype),Object.freeze(f),f}var Wt=class{static BASE;static ZERO;static Fp;static Fn;ep;constructor(e){
370
- this.ep=e;}static fromBytes(e){Gn();}static fromHex(e){Gn();}get x(){return this.toAffine().x}get y(){return this.toAffine().y}clearCofactor(){return this}assertValidity(){this.ep.assertValidity();}toAffine(e){
371
- return this.ep.toAffine(e)}toHex(){return qn(this.toBytes())}toString(){return this.toHex()}isTorsionFree(){return true}isSmallOrder(){return false}add(e){return this.assertSame(e),this.init(this.ep.add(e.ep))}subtract(e){
347
+ i=Xn(e,this.bits);for(let a=0;a<i.windows;a++){let{nextN:c,offset:l,isZero:u,isNeg:d,isNegF:f,offsetF:m}=ns(o,a,i);o=c,u?s=s.add(ts(f,n[m])):r=r.add(ts(d,n[l]));}return os(o),{p:r,f:s}}wNAFUnsafe(e,n,o,r=this.
348
+ ZERO){let s=Xn(e,this.bits);for(let i=0;i<s.windows&&o!==Kt;i++){let{nextN:a,offset:c,isZero:l,isNeg:u}=ns(o,i,s);if(o=a,!l){let d=n[c];r=r.add(u?d.negate():d);}}return os(o),r}getPrecomputes(e,n,o){let r=Qn.
349
+ get(n);return r||(r=this.precomputeWindow(n,e),e!==1&&(typeof o=="function"&&(r=o(r)),Qn.set(n,r))),r}cached(e,n,o){let r=eo(e);return this.wNAF(r,this.getPrecomputes(r,e,o),n)}unsafe(e,n,o,r){let s=eo(
350
+ e);return s===1?this._unsafeLadder(e,n,r):this.wNAFUnsafe(s,this.getPrecomputes(s,e,o),n,r)}createCache(e,n){ss(n,this.bits),is.set(e,n),Qn.delete(e);}hasCache(e){return eo(e)!==1}};function rs(t,e,n){if(e){if(e.ORDER!==t)throw new Error("Field.ORDER must match order: Fp == p, Fn == n");return es(e),e}else return Ht(t,{isLE:n})}function as(t,e,n={},o){if(o===void 0&&(o=t==="edwar\
351
+ ds"),!e||typeof e!="object")throw new Error(`expected valid ${t} CURVE object`);for(let c of ["p","n","h"]){let l=e[c];if(!(typeof l=="bigint"&&l>Kt))throw new Error(`CURVE.${c} must be positive bigint`)}
352
+ let r=rs(e.p,n.Fp,o),s=rs(e.n,n.Fn,o),a=["Gx","Gy","a","d"];for(let c of a)if(!r.isValid(e[c]))throw new Error(`CURVE.${c} must be valid field element of CURVE.Fp`);return e=Object.
353
+ freeze(Object.assign({},e)),{CURVE:e,Fp:r,Fn:s}}function cs(t,e){return function(o){let r=t(o);return {secretKey:r,publicKey:e(r)}}}var Re=BigInt(0),H=BigInt(1),no=BigInt(2),Ea=BigInt(8);function Ra(t,e,n,o){let r=t.sqr(n),s=t.sqr(o),i=t.add(t.mul(e.a,r),s),a=t.add(t.ONE,t.mul(e.d,t.mul(r,s)));return t.eql(i,a)}function ls(t,e={}){
354
+ let n=e,o=as("edwards",t,n,n.FpFnLE),{Fp:r,Fn:s}=o,i=o.CURVE,{h:a}=i;Me(n,{},{uvRatio:"function"});let c=no<<BigInt(s.BYTES*8)-H,l=g=>r.create(g),u=n.uvRatio===void 0?(g,p)=>{try{return {isValid:!0,value:r.
355
+ sqrt(r.div(g,p))}}catch{return {isValid:false,value:Re}}}:n.uvRatio;if(!Ra(r,i,i.Gx,i.Gy))throw new Error("bad curve params: generator point");function d(g,p,y=false){let b=y?H:Re;return Wn("coordinate "+g,p,
356
+ b,c),p}function f(g){if(!(g instanceof m))throw new Error("EdwardsPoint expected")}class m{static BASE=new m(i.Gx,i.Gy,H,l(i.Gx*i.Gy));static ZERO=new m(Re,H,H,Re);static Fp=r;static Fn=s;X;Y;Z;T;constructor(p,y,b,x){
357
+ this.X=d("x",p),this.Y=d("y",y),this.Z=d("z",b,true),this.T=d("t",x),Object.freeze(this);}static CURVE(){return i}static fromAffine(p){if(p instanceof m)throw new Error("extended point not allowed");let{
358
+ x:y,y:b}=p||{};return d("x",y),d("y",b),new m(y,b,H,l(y*b))}static fromBytes(p,y=false){let b=r.BYTES,{a:x,d:T}=i;p=ut(z(p,b,"point")),ze(y,"zip215");let E=ut(p),R=p[b-1];E[b-1]=R&-129;let C=be(E),D=y?c:
359
+ r.ORDER;Wn("point.y",C,Re,D);let I=l(C*C),S=l(I-H),B=l(T*I-x),{isValid:k,value:w}=u(S,B);if(!k)throw new Error("bad point: invalid y coordinate");let _=(w&H)===H,P=(R&128)!==0;if(!y&&w===Re&&P)throw new Error(
360
+ "bad point: x=0 and x_0=1");return P!==_&&(w=l(-w)),m.fromAffine({x:w,y:C})}static fromHex(p,y=false){return m.fromBytes(jr(p),y)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(p=8,y=true){
361
+ return h.createCache(this,p),y||this.multiply(no),this}assertValidity(){let p=this,{a:y,d:b}=i;if(p.is0())throw new Error("bad point: ZERO");let{X:x,Y:T,Z:E,T:R}=p,C=l(x*x),D=l(T*T),I=l(E*E),S=l(I*I),
362
+ B=l(C*y),k=l(I*l(B+D)),w=l(S+l(b*l(C*D)));if(k!==w)throw new Error("bad point: equation left != right (1)");let _=l(x*T),P=l(E*R);if(_!==P)throw new Error("bad point: equation left != right (2)")}equals(p){
363
+ f(p);let{X:y,Y:b,Z:x}=this,{X:T,Y:E,Z:R}=p,C=l(y*R),D=l(T*x),I=l(b*R),S=l(E*x);return C===D&&I===S}is0(){return this.equals(m.ZERO)}negate(){return new m(l(-this.X),this.Y,this.Z,l(-this.T))}double(){
364
+ let{a:p}=i,{X:y,Y:b,Z:x}=this,T=l(y*y),E=l(b*b),R=l(no*l(x*x)),C=l(p*T),D=y+b,I=l(l(D*D)-T-E),S=C+E,B=S-R,k=C-E,w=l(I*B),_=l(S*k),P=l(I*k),N=l(B*S);return new m(w,_,N,P)}add(p){f(p);let{a:y,d:b}=i,{X:x,
365
+ Y:T,Z:E,T:R}=this,{X:C,Y:D,Z:I,T:S}=p,B=l(x*C),k=l(T*D),w=l(R*b*S),_=l(E*I),P=l((x+T)*(C+D)-B-k),N=_-w,V=_+w,O=l(k-y*B),X=l(P*N),$=l(V*O),Q=l(P*O),W=l(N*V);return new m(X,$,W,Q)}subtract(p){return f(p),
366
+ this.add(p.negate())}multiply(p){if(!s.isValidNot0(p))throw new RangeError("invalid scalar: expected 1 <= sc < curve.n");let{p:y,f:b}=h.cached(this,p,x=>Wt(m,x));return Wt(m,[y,b])[0]}multiplyUnsafe(p){
367
+ if(!s.isValid(p))throw new RangeError("invalid scalar: expected 0 <= sc < curve.n");return p===Re?m.ZERO:this.is0()||p===H?this:h.unsafe(this,p,y=>Wt(m,y))}isSmallOrder(){return this.clearCofactor().is0()}isTorsionFree(){
368
+ return h.unsafe(this,i.n).is0()}toAffine(p){let y=this,b=p,{X:x,Y:T,Z:E}=y,R=y.is0();b==null&&(b=R?Ea:r.inv(E));let C=l(x*b),D=l(T*b),I=r.mul(E,b);if(R)return {x:Re,y:H};if(I!==H)throw new Error("invZ \
369
+ was invalid");return {x:C,y:D}}clearCofactor(){return a===H?this:this.multiplyUnsafe(a)}toBytes(){let{x:p,y}=this.toAffine(),b=r.toBytes(y);return b[b.length-1]|=p&H?128:0,b}toHex(){return Hn(this.toBytes())}toString(){
370
+ return `<Point ${this.is0()?"ZERO":this.toHex()}>`}}let h=new Jt(m,s.BITS);return s.BITS>=8&&m.BASE.precompute(8),Object.freeze(m.prototype),Object.freeze(m),m}var Gt=class{static BASE;static ZERO;static Fp;static Fn;ep;constructor(e){
371
+ this.ep=e;}static fromBytes(e){Yn();}static fromHex(e){Yn();}get x(){return this.toAffine().x}get y(){return this.toAffine().y}clearCofactor(){return this}assertValidity(){this.ep.assertValidity();}toAffine(e){
372
+ return this.ep.toAffine(e)}toHex(){return Hn(this.toBytes())}toString(){return this.toHex()}isTorsionFree(){return true}isSmallOrder(){return false}add(e){return this.assertSame(e),this.init(this.ep.add(e.ep))}subtract(e){
372
373
  return this.assertSame(e),this.init(this.ep.subtract(e.ep))}multiply(e){return this.init(this.ep.multiply(e))}multiplyUnsafe(e){return this.init(this.ep.multiplyUnsafe(e))}double(){return this.init(this.
373
- ep.double())}negate(){return this.init(this.ep.negate())}precompute(e,n){return this.ep.precompute(e,n),this}};function as(t,e,n={}){if(typeof e!="function")throw new Error('"hash" function param is r\
374
+ ep.double())}negate(){return this.init(this.ep.negate())}precompute(e,n){return this.ep.precompute(e,n),this}};function us(t,e,n={}){if(typeof e!="function")throw new Error('"hash" function param is r\
374
375
  equired');let o=e,r=n;Me(r,{},{adjustScalarBytes:"function",randomBytes:"function",domain:"function",prehash:"function",zip215:"boolean",mapToCurve:"function"});let{prehash:s}=r,{BASE:i,Fp:a,Fn:c}=t,l=o.
375
- outputLen,u=2*a.BYTES;if(l!==void 0&&(ge(l,"hash.outputLen"),l!==u))throw new Error(`hash.outputLen must be ${u}, got ${l}`);let d=r.randomBytes===void 0?Br:r.randomBytes,m=r.adjustScalarBytes===void 0?
376
- k=>k:r.adjustScalarBytes,f=r.domain===void 0?(k,w,_)=>{if(ze(_,"phflag"),w.length||_)throw new Error("Contexts/pre-hash are not supported");return k}:r.domain;function h(k){return c.create(be(k))}function g(k){
377
- let w=C.secretKey;z(k,C.secretKey,"secretKey");let _=z(o(k),2*w,"hashedSecretKey"),P=m(_.slice(0,w)),N=_.slice(w,2*w),V=h(P);return {head:P,prefix:N,scalar:V}}function p(k){let{head:w,prefix:_,scalar:P}=g(
378
- k),N=i.multiply(P),V=N.toBytes();return {head:w,prefix:_,scalar:P,point:N,pointBytes:V}}function x(k){return p(k).pointBytes}function b(k=Uint8Array.of(),...w){let _=le(...w);return h(o(f(_,z(k,void 0,
379
- "context"),!!s)))}function y(k,w,_={}){k=z(k,void 0,"message"),s&&(k=s(k));let{prefix:P,scalar:N,pointBytes:V}=p(w),O=b(_.context,P,k),X=i.multiply(O).toBytes(),$=b(_.context,X,V,k),Q=c.create(O+$*N);
376
+ outputLen,u=2*a.BYTES;if(l!==void 0&&(ge(l,"hash.outputLen"),l!==u))throw new Error(`hash.outputLen must be ${u}, got ${l}`);let d=r.randomBytes===void 0?$r:r.randomBytes,f=r.adjustScalarBytes===void 0?
377
+ k=>k:r.adjustScalarBytes,m=r.domain===void 0?(k,w,_)=>{if(ze(_,"phflag"),w.length||_)throw new Error("Contexts/pre-hash are not supported");return k}:r.domain;function h(k){return c.create(be(k))}function g(k){
378
+ let w=C.secretKey;z(k,C.secretKey,"secretKey");let _=z(o(k),2*w,"hashedSecretKey"),P=f(_.slice(0,w)),N=_.slice(w,2*w),V=h(P);return {head:P,prefix:N,scalar:V}}function p(k){let{head:w,prefix:_,scalar:P}=g(
379
+ k),N=i.multiply(P),V=N.toBytes();return {head:w,prefix:_,scalar:P,point:N,pointBytes:V}}function y(k){return p(k).pointBytes}function b(k=Uint8Array.of(),...w){let _=le(...w);return h(o(m(_,z(k,void 0,
380
+ "context"),!!s)))}function x(k,w,_={}){k=z(k,void 0,"message"),s&&(k=s(k));let{prefix:P,scalar:N,pointBytes:V}=p(w),O=b(_.context,P,k),X=i.multiply(O).toBytes(),$=b(_.context,X,V,k),Q=c.create(O+$*N);
380
381
  if(!c.isValid(Q))throw new Error("sign failed: invalid s");let W=le(X,c.toBytes(Q));return z(W,C.signature,"result")}let T={zip215:r.zip215};function E(k,w,_,P=T){let{context:N}=P,V=P.zip215===void 0?
381
382
  !!T.zip215:P.zip215,O=C.signature;k=z(k,O,"signature"),w=z(w,void 0,"message"),_=z(_,C.publicKey,"publicKey"),V!==void 0&&ze(V,"zip215"),s&&(w=s(w));let X=O/2,$=k.subarray(0,X),Q=be(k.subarray(X,O)),W,
382
383
  ue,ve;try{W=t.fromBytes(_,V),ue=t.fromBytes($,V),ve=i.multiplyUnsafe(Q);}catch{return false}if(!V&&W.isSmallOrder())return false;let ke=b(N,$,_,w);return ue.add(W.multiplyUnsafe(ke)).subtract(ve).clearCofactor().
383
- is0()}let R=a.BYTES,C={secretKey:R,publicKey:R,signature:2*R,seed:R};function D(k){return k=k===void 0?d(C.seed):k,z(k,C.seed,"seed")}function I(k){return Ft(k)&&k.length===C.secretKey}function S(k,w){
384
+ is0()}let R=a.BYTES,C={secretKey:R,publicKey:R,signature:2*R,seed:R};function D(k){return k=k===void 0?d(C.seed):k,z(k,C.seed,"seed")}function I(k){return zt(k)&&k.length===C.secretKey}function S(k,w){
384
385
  try{return !!t.fromBytes(k,w===void 0?T.zip215:w)}catch{return false}}let B={getExtendedPublicKey:p,randomSecretKey:D,isValidSecretKey:I,isValidPublicKey:S,toMontgomery(k){let{y:w}=t.fromBytes(k),_=C.publicKey,
385
386
  P=_===32;if(!P&&_!==57)throw new Error("only defined for 25519 and 448");let N=P?a.div(H+w,H-w):a.div(w-H,w+H);return a.toBytes(N)},toMontgomerySecret(k){let w=C.secretKey;z(k,w);let _=o(k.subarray(0,
386
- w));return m(_).subarray(0,w)}};return Object.freeze(C),Object.freeze(B),Object.freeze({keygen:ss(D,x),getPublicKey:x,sign:y,verify:E,utils:B,Point:t,lengths:C})}var Ea=BigInt(0),ye=BigInt(1),ls=BigInt(2);var Ra=BigInt(5),Ca=BigInt(8),Ve=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed"),io={p:Ve,n:BigInt("0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed"),h:Ca,
387
+ w));return f(_).subarray(0,w)}};return Object.freeze(C),Object.freeze(B),Object.freeze({keygen:cs(D,y),getPublicKey:y,sign:x,verify:E,utils:B,Point:t,lengths:C})}var Oa=BigInt(0),xe=BigInt(1),ps=BigInt(2);var _a=BigInt(5),Aa=BigInt(8),Ve=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed"),ao={p:Ve,n:BigInt("0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed"),h:Aa,
387
388
  a:BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec"),d:BigInt("0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3"),Gx:BigInt("0x216936d3cd6e53fec0a4e231fdd6d\
388
- c5c692cc7609525a7b2c9562d608f25d51a"),Gy:BigInt("0x6666666666666666666666666666666666666666666666666666666666666658")};function Ia(t){let e=BigInt(10),n=BigInt(20),o=BigInt(40),r=BigInt(80),s=Ve,a=t*t%
389
- s*t%s,c=re(a,ls,s)*a%s,l=re(c,ye,s)*t%s,u=re(l,Ra,s)*l%s,d=re(u,e,s)*u%s,m=re(d,n,s)*d%s,f=re(m,o,s)*m%s,h=re(f,r,s)*f%s,g=re(h,r,s)*f%s,p=re(g,e,s)*u%s;return {pow_p_5_8:re(p,ls,s)*t%s,b2:a}}function Oa(t){
390
- return t[0]&=248,t[31]&=127,t[31]|=64,t}var oo=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752");function ao(t,e){let n=Ve,o=j(e*e*e,n),r=j(o*o*e,n),s=Ia(t*r).pow_p_5_8,
391
- i=j(t*o*s,n),a=j(e*i*i,n),c=i,l=j(i*oo,n),u=a===t,d=a===j(-t,n),m=a===j(-t*oo,n);return u&&(i=c),(d||m)&&(i=l),xe(i,n)&&(i=j(-i,n)),{isValid:u||d,value:i}}var Ie=is(io,{uvRatio:ao}),Ce=Ie.Fp,ps=Ie.Fn;function _a(t){return as(Ie,Nt,Object.assign({adjustScalarBytes:Oa,zip215:true},t))}var fs=_a({});var ro=oo;BigInt("25063068953384623474111414158702152701244531502492656460079210482610430750235");var Da=BigInt("54469307008909316920995813868745141605393597292927456921205312896311721017578");BigInt(
392
- "1159843021668779879193775521855586647937357759715417654439879720876111806838");BigInt("40440834346308536858101042469323190826248399146238708352240133220865137265952");var us=t=>ao(ye,t),Ma=BigInt("0x7\
393
- fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),so=t=>Ce.create(be(t)&Ma);var Oe=class t extends Wt{static BASE=new t(
394
- Ie.BASE);static ZERO=new t(Ie.ZERO);static Fp=Ce;static Fn=ps;constructor(e){super(e);}static fromAffine(e){return new t(Ie.fromAffine(e))}assertSame(e){if(!(e instanceof t))throw new Error("RistrettoP\
395
- oint expected")}init(e){return new t(e)}static fromBytes(e){oe(e,32);let{a:n,d:o}=io,r=Ve,s=T=>Ce.create(T),i=so(e);if(!$r(Ce.toBytes(i),e)||xe(i,r))throw new Error("invalid ristretto255 encoding 1");
396
- let a=s(i*i),c=s(ye+n*a),l=s(ye-n*a),u=s(c*c),d=s(l*l),m=s(n*o*u-d),{isValid:f,value:h}=us(s(m*d)),g=s(h*l),p=s(h*g*m),x=s((i+i)*g);xe(x,r)&&(x=s(-x));let b=s(c*p),y=s(x*b);if(!f||xe(y,r)||b===Ea)throw new Error(
397
- "invalid ristretto255 encoding 2");return new t(new Ie(x,b,ye,y))}static fromHex(e){return t.fromBytes(it(e))}toBytes(){let{X:e,Y:n,Z:o,T:r}=this.ep,s=Ve,i=p=>Ce.create(p),a=i(i(o+n)*i(o-n)),c=i(e*n),
398
- l=i(c*c),{value:u}=us(i(a*l)),d=i(u*a),m=i(u*c),f=i(d*m*r),h;if(xe(r*f,s)){let p=i(n*ro),x=i(e*ro);e=p,n=x,h=i(d*Da);}else h=m;xe(e*f,s)&&(n=i(-n));let g=i((o-n)*h);return xe(g,s)&&(g=i(-g)),Ce.toBytes(
389
+ c5c692cc7609525a7b2c9562d608f25d51a"),Gy:BigInt("0x6666666666666666666666666666666666666666666666666666666666666658")};function Da(t){let e=BigInt(10),n=BigInt(20),o=BigInt(40),r=BigInt(80),s=Ve,a=t*t%
390
+ s*t%s,c=re(a,ps,s)*a%s,l=re(c,xe,s)*t%s,u=re(l,_a,s)*l%s,d=re(u,e,s)*u%s,f=re(d,n,s)*d%s,m=re(f,o,s)*f%s,h=re(m,r,s)*m%s,g=re(h,r,s)*m%s,p=re(g,e,s)*u%s;return {pow_p_5_8:re(p,ps,s)*t%s,b2:a}}function Pa(t){
391
+ return t[0]&=248,t[31]&=127,t[31]|=64,t}var ro=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752");function co(t,e){let n=Ve,o=j(e*e*e,n),r=j(o*o*e,n),s=Da(t*r).pow_p_5_8,
392
+ i=j(t*o*s,n),a=j(e*i*i,n),c=i,l=j(i*ro,n),u=a===t,d=a===j(-t,n),f=a===j(-t*ro,n);return u&&(i=c),(d||f)&&(i=l),ye(i,n)&&(i=j(-i,n)),{isValid:u||d,value:i}}var Ie=ls(ao,{uvRatio:co}),Ce=Ie.Fp,hs=Ie.Fn;function La(t){return us(Ie,jt,Object.assign({adjustScalarBytes:Pa,zip215:true},t))}var gs=La({});var so=ro;BigInt("25063068953384623474111414158702152701244531502492656460079210482610430750235");var Ba=BigInt("54469307008909316920995813868745141605393597292927456921205312896311721017578");BigInt(
393
+ "1159843021668779879193775521855586647937357759715417654439879720876111806838");BigInt("40440834346308536858101042469323190826248399146238708352240133220865137265952");var fs=t=>co(xe,t),$a=BigInt("0x7\
394
+ fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),io=t=>Ce.create(be(t)&$a);var Oe=class t extends Gt{static BASE=new t(
395
+ Ie.BASE);static ZERO=new t(Ie.ZERO);static Fp=Ce;static Fn=hs;constructor(e){super(e);}static fromAffine(e){return new t(Ie.fromAffine(e))}assertSame(e){if(!(e instanceof t))throw new Error("RistrettoP\
396
+ oint expected")}init(e){return new t(e)}static fromBytes(e){oe(e,32);let{a:n,d:o}=ao,r=Ve,s=T=>Ce.create(T),i=io(e);if(!Vr(Ce.toBytes(i),e)||ye(i,r))throw new Error("invalid ristretto255 encoding 1");
397
+ let a=s(i*i),c=s(xe+n*a),l=s(xe-n*a),u=s(c*c),d=s(l*l),f=s(n*o*u-d),{isValid:m,value:h}=fs(s(f*d)),g=s(h*l),p=s(h*g*f),y=s((i+i)*g);ye(y,r)&&(y=s(-y));let b=s(c*p),x=s(y*b);if(!m||ye(x,r)||b===Oa)throw new Error(
398
+ "invalid ristretto255 encoding 2");return new t(new Ie(y,b,xe,x))}static fromHex(e){return t.fromBytes(at(e))}toBytes(){let{X:e,Y:n,Z:o,T:r}=this.ep,s=Ve,i=p=>Ce.create(p),a=i(i(o+n)*i(o-n)),c=i(e*n),
399
+ l=i(c*c),{value:u}=fs(i(a*l)),d=i(u*a),f=i(u*c),m=i(d*f*r),h;if(ye(r*m,s)){let p=i(n*so),y=i(e*so);e=p,n=y,h=i(d*Ba);}else h=f;ye(e*m,s)&&(n=i(-n));let g=i((o-n)*h);return ye(g,s)&&(g=i(-g)),Ce.toBytes(
399
400
  g)}equals(e){this.assertSame(e);let{X:n,Y:o}=this.ep,{X:r,Y:s}=e.ep,i=l=>Ce.create(l),a=i(n*s)===i(o*r),c=i(o*s)===i(n*r);return a||c}is0(){return this.equals(t.ZERO)}};Object.freeze(Oe.BASE);Object.freeze(
400
- Oe.ZERO);Object.freeze(Oe.prototype);Object.freeze(Oe);var ms=`-----BEGIN PUBLIC KEY-----
401
+ Oe.ZERO);Object.freeze(Oe.prototype);Object.freeze(Oe);var bs=`-----BEGIN PUBLIC KEY-----
401
402
  MCowBQYDK2VwAyEAWBiklf0kmDIVmM7nMiCxwiEAkwQIiqWGuRiRDJonsFY=
402
- -----END PUBLIC KEY-----`;function hs(t){let e=atob(t),n=new Uint8Array(e.length);for(let o=0;o<e.length;o++)n[o]=e.charCodeAt(o);return n}function co(t){let e=t.replace(/-/g,"+").replace(/_/g,"/"),n=e.
403
- length%4?"=".repeat(4-e.length%4):"";return hs(e+n)}function Na(t){let e=t.replace(/-----[^-]+-----/g,"").replace(/\s+/g,""),n=hs(e);return n.subarray(n.length-32)}var ja=new TextEncoder,gs=new TextDecoder;
404
- function $a(t){return typeof t=="object"&&t!==null&&"keys"in t}function lo(t,e){let n=t.split(".");if(n.length!==3)return {ok:false,reason:"malformed token"};let o=n[0],r=n[1],s=n[2],i;try{i=JSON.parse(gs.
405
- decode(co(o)));}catch{return {ok:false,reason:"header is not valid JSON"}}let a;if($a(e)){let u=typeof i.kid=="string"?i.kid:e.defaultKid,d=e.keys[u];if(!d)return {ok:false,reason:`unknown key id "${u}"`};a=d;}else {
406
- if(!e)return {ok:false,reason:"no verification key"};a=e;}let c;try{if(c=Na(a),c.length!==32)return {ok:!1,reason:"invalid public key"}}catch{return {ok:false,reason:"invalid public key"}}let l=false;try{l=fs.verify(
407
- co(s),ja.encode(`${o}.${r}`),c);}catch{return {ok:false,reason:"signature verification error"}}return l?{ok:true,header:i,payloadBytes:co(r)}:{ok:false,reason:"bad signature"}}function Ue(t,e){let n=lo(t,e);if(!n.
408
- ok||!n.payloadBytes)return {signatureValid:false,...n.reason?{reason:n.reason}:{}};try{return {signatureValid:!0,payload:JSON.parse(gs.decode(n.payloadBytes))}}catch{return {signatureValid:false,reason:"payloa\
409
- d is not valid JSON"}}}function uo(t,e,n){if(n?.has(t.jti))return "revoked";let o=t.expires_at+t.grace_days*86400;return e<=t.expires_at?"active":e<=o?"grace":"expired"}function Bd(t,e,n={}){let o=Ue(t,
410
- e);if(!o.signatureValid||!o.payload)return {status:"invalid",...o.reason?{reason:o.reason}:{}};let r=o.payload,s=n.nowSeconds??Math.floor(Date.now()/1e3),i=uo(r,s,n.revoked);return i==="revoked"?{status:i,
411
- payload:r,reason:"license revoked"}:{status:i,payload:r}}var bs="BVSALA-REVOC",Fa=300,za=new TextDecoder;function xs(t,e,n={}){let o=l=>({ok:false,seq:-1,asOf:0,revoked:new Set,reason:l}),r=lo(t,e);if(!r.ok||!r.payloadBytes)return o(r.reason??"bad signature");
412
- if(r.header?.typ!==bs)return o(`unexpected token type "${String(r.header?.typ??"")}" (want ${bs})`);let s;try{s=JSON.parse(za.decode(r.payloadBytes));}catch{return o("payload is not valid JSON")}if(typeof s.
403
+ -----END PUBLIC KEY-----`;function ys(t){let e=atob(t),n=new Uint8Array(e.length);for(let o=0;o<e.length;o++)n[o]=e.charCodeAt(o);return n}function lo(t){let e=t.replace(/-/g,"+").replace(/_/g,"/"),n=e.
404
+ length%4?"=".repeat(4-e.length%4):"";return ys(e+n)}function za(t){let e=t.replace(/-----[^-]+-----/g,"").replace(/\s+/g,""),n=ys(e);return n.subarray(n.length-32)}var Va=new TextEncoder,xs=new TextDecoder;
405
+ function Ua(t){return typeof t=="object"&&t!==null&&"keys"in t}function Ue(t){let e=t.trim(),n=/^(["'])([\s\S]*)\1$/.exec(e);return n&&(e=n[2].trim()),e=e.replace(/^bearer\s+/i,""),e.trim()}var qa=/^[A-Za-z0-9_-]+$/;
406
+ function vs(t){let e=t.split(".");return e.length===3&&e.every(n=>qa.test(n))}function uo(t){return t===""?"empty":vs(t)?"token":"malformed"}function po(t,e){if(!vs(t))return {ok:false,reason:"malformed t\
407
+ oken"};let n=t.split("."),o=n[0],r=n[1],s=n[2],i;try{i=JSON.parse(xs.decode(lo(o)));}catch{return {ok:false,reason:"header is not valid JSON"}}let a;if(Ua(e)){let u=typeof i.kid=="string"?i.kid:e.defaultKid,
408
+ d=e.keys[u];if(!d)return {ok:false,reason:`unknown key id "${u}"`};a=d;}else {if(!e)return {ok:false,reason:"no verification key"};a=e;}let c;try{if(c=za(a),c.length!==32)return {ok:!1,reason:"invalid public key"}}catch{
409
+ return {ok:false,reason:"invalid public key"}}let l=false;try{l=gs.verify(lo(s),Va.encode(`${o}.${r}`),c);}catch{return {ok:false,reason:"signature verification error"}}return l?{ok:true,header:i,payloadBytes:lo(r)}:
410
+ {ok:false,reason:"bad signature"}}function qe(t,e){let n=po(t,e);if(!n.ok||!n.payloadBytes)return {signatureValid:false,...n.reason?{reason:n.reason}:{}};try{return {signatureValid:!0,payload:JSON.parse(xs.decode(
411
+ n.payloadBytes))}}catch{return {signatureValid:false,reason:"payload is not valid JSON"}}}function fo(t,e,n){if(n?.has(t.jti))return "revoked";let o=t.expires_at+t.grace_days*86400;return e<=t.expires_at?"\
412
+ active":e<=o?"grace":"expired"}function zd(t,e,n={}){let o=Ue(t);if(uo(o)==="empty")return {status:"none",reason:"empty"};let s=qe(o,e);if(!s.signatureValid||!s.payload)return {status:"invalid",...s.reason?
413
+ {reason:s.reason}:{}};let i=s.payload,a=n.nowSeconds??Math.floor(Date.now()/1e3),c=fo(i,a,n.revoked);return c==="revoked"?{status:c,payload:i,reason:"license revoked"}:{status:c,payload:i}}var ks="BVSALA-REVOC",Ha=300,Ka=new TextDecoder;function ws(t,e,n={}){let o=l=>({ok:false,seq:-1,asOf:0,revoked:new Set,reason:l}),r=po(t,e);if(!r.ok||!r.payloadBytes)return o(r.reason??"bad signature");
414
+ if(r.header?.typ!==ks)return o(`unexpected token type "${String(r.header?.typ??"")}" (want ${ks})`);let s;try{s=JSON.parse(Ka.decode(r.payloadBytes));}catch{return o("payload is not valid JSON")}if(typeof s.
413
415
  seq!="number"||typeof s.asOf!="number"||!Array.isArray(s.revoked))return o("malformed revocation payload");let i=n.minSeq??0;if(s.seq<i)return o(`stale/rolled-back list (seq ${s.seq} < ${i})`);let a=n.
414
- nowSeconds??Math.floor(Date.now()/1e3),c=n.maxSkewSeconds??Fa;return s.asOf>a+c?o(`asOf too far in the future (${s.asOf} > ${a+c})`):{ok:true,seq:s.seq,asOf:s.asOf,revoked:new Set(s.revoked)}}var qe=class{_seq=-1;_asOf=0;_lastContactAt=0;set=new Set;get seq(){
416
+ nowSeconds??Math.floor(Date.now()/1e3),c=n.maxSkewSeconds??Ha;return s.asOf>a+c?o(`asOf too far in the future (${s.asOf} > ${a+c})`):{ok:true,seq:s.seq,asOf:s.asOf,revoked:new Set(s.revoked)}}var He=class{_seq=-1;_asOf=0;_lastContactAt=0;set=new Set;get seq(){
415
417
  return this._seq}get asOf(){return this._asOf}get lastContactAt(){return this._lastContactAt}markContact(e){e>this._lastContactAt&&(this._lastContactAt=e);}has(e){return this.set.has(e)}snapshot(){return this.
416
418
  set}apply(e){if(e.seq<this._seq)return false;let n=this.set.size;for(let s of e.revoked)this.set.add(s);let o=this.set.size>n,r=e.seq>this._seq;return e.seq>this._seq&&(this._seq=e.seq),e.asOf>this._asOf&&
417
- (this._asOf=e.asOf),o||r}};function Gt(t,e,n){let o=()=>Math.floor((n.now?n.now():Date.now())/1e3),r=n.startedAt??o(),s=Ue(t,e),i=s.signatureValid?s.payload:void 0,a=new Set(i?.features??[]),c=()=>{if(!i)return "invalid";let u=uo(
418
- i,o(),n.revocation.snapshot());if(n.maxStalenessSeconds!=null&&(u==="active"||u==="grace")){let d=i.expires_at+i.grace_days*86400,m=Math.min(r,d),f=Math.max(n.revocation.lastContactAt,m);if(o()-f>n.maxStalenessSeconds)
419
- return "stale"}return u},l=()=>{let u=c();return u==="active"||u==="grace"};return {isEntitled:u=>l()&&a.has(u),isActive:()=>l(),status:c,refreshAfter:()=>{if(i)return Math.min(i.expires_at,o()+86400)}}}function ys(t,e,n){return Gt(t,e,{revocation:new qe,...n?{now:n}:{}})}var He={pollIntervalSeconds:900,floorSeconds:300,maxIntervalSeconds:3600,jitterRatio:.1,maxSkewSeconds:300,requestTimeoutMs:3e4},vs=3,Va=12;function Ua(t){let e=t.random??Math.random,n;if(t.consecutiveFailures>
419
+ (this._asOf=e.asOf),o||r}};function Yt(t,e,n){let o=()=>Math.floor((n.now?n.now():Date.now())/1e3),r=n.startedAt??o(),s=Ue(t),i=uo(s),a=i==="token"?qe(s,e):{signatureValid:false,reason:i},c=a.signatureValid?a.payload:void 0,l=new Set(
420
+ c?.features??[]),u=()=>{if(i==="empty")return "none";if(!c)return "invalid";let f=fo(c,o(),n.revocation.snapshot());if(n.maxStalenessSeconds!=null&&(f==="active"||f==="grace")){let m=c.expires_at+c.grace_days*
421
+ 86400,h=Math.min(r,m),g=Math.max(n.revocation.lastContactAt,h);if(o()-g>n.maxStalenessSeconds)return "stale"}return f},d=()=>{let f=u();return f==="active"||f==="grace"};return {isEntitled:f=>d()&&l.has(
422
+ f),isActive:()=>d(),status:u,reason:()=>c?void 0:a.reason,refreshAfter:()=>{if(c)return Math.min(c.expires_at,o()+86400)}}}function Ss(t,e,n){return Yt(t,e,{revocation:new He,...n?{now:n}:{}})}var Ke={pollIntervalSeconds:900,floorSeconds:300,maxIntervalSeconds:3600,jitterRatio:.1,maxSkewSeconds:300,requestTimeoutMs:3e4},Ts=3,Ja=12;function Wa(t){let e=t.random??Math.random,n;if(t.consecutiveFailures>
420
423
  0){let r=Math.pow(2,Math.min(t.consecutiveFailures,4));n=Math.min(t.maxIntervalSeconds,t.floorSeconds*r);}else {let r=t.refreshAfter!=null?t.refreshAfter-t.nowSeconds:t.pollIntervalSeconds,s=r<0?t.pollIntervalSeconds:
421
- r;n=Math.min(t.pollIntervalSeconds,Math.max(t.floorSeconds,s));}let o=1+(e()*2-1)*t.jitterRatio;return Math.max(t.floorSeconds,n*o)}var qa=10,Yt=class{constructor(e){this.opts=e;}opts;timer=null;controller=null;consecutiveFailures=0;stopped=false;started=false;warnedNoFetch=false;lastEtag=null;consecutive304=0;now(){
424
+ r;n=Math.min(t.pollIntervalSeconds,Math.max(t.floorSeconds,s));}let o=1+(e()*2-1)*t.jitterRatio;return Math.max(t.floorSeconds,n*o)}var Ga=10,Zt=class{constructor(e){this.opts=e;}opts;timer=null;controller=null;consecutiveFailures=0;stopped=false;started=false;warnedNoFetch=false;lastEtag=null;consecutive304=0;now(){
422
425
  return this.opts.nowSeconds?this.opts.nowSeconds():Math.floor(Date.now()/1e3)}resolveFetch(){return this.opts.fetchImpl?this.opts.fetchImpl:typeof fetch<"u"?fetch:void 0}async pollOnce(){let e=this.resolveFetch();
423
426
  if(!e){this.warnedNoFetch||(this.warnedNoFetch=true,console.warn("[bv-sala] no global fetch available; revocation call-home disabled (offline). License expiry is still enforced from the token.")),this.opts.
424
- onEvent?.({type:"no-fetch"});return}let n=new AbortController;this.controller=n;let o=this.opts.requestTimeoutMs??He.requestTimeoutMs,r=setTimeout(()=>n.abort(),o);r.unref?.();let s={accept:"applicati\
427
+ onEvent?.({type:"no-fetch"});return}let n=new AbortController;this.controller=n;let o=this.opts.requestTimeoutMs??Ke.requestTimeoutMs,r=setTimeout(()=>n.abort(),o);r.unref?.();let s={accept:"applicati\
425
428
  on/json"};this.lastEtag&&(s["if-none-match"]=this.lastEtag);try{let i=await e(this.opts.url,{signal:n.signal,headers:s});if(i.status===304){this.consecutiveFailures=0,this.opts.snapshot.markContact(this.
426
- now()),this.opts.onEvent?.({type:"unchanged",seq:this.opts.snapshot.seq}),this.consecutive304+=1,this.consecutive304>=qa&&(this.consecutive304=0,this.lastEtag=null);return}if(this.consecutive304=0,!i.
427
- ok)throw new Error(`revocations HTTP ${i.status}`);let a=i.headers.get("etag"),c=await i.json();if(!c.list)throw new Error("response missing `list`");this.consecutiveFailures=0;let l=xs(c.list,this.opts.
428
- publicKeyPem,{minSeq:this.opts.snapshot.seq,nowSeconds:this.now(),maxSkewSeconds:this.opts.maxSkewSeconds??He.maxSkewSeconds});if(!l.ok){let d=l.reason??"rejected";this.opts.onEvent?.({type:"rejected",
429
+ now()),this.opts.onEvent?.({type:"unchanged",seq:this.opts.snapshot.seq}),this.consecutive304+=1,this.consecutive304>=Ga&&(this.consecutive304=0,this.lastEtag=null);return}if(this.consecutive304=0,!i.
430
+ ok)throw new Error(`revocations HTTP ${i.status}`);let a=i.headers.get("etag"),c=await i.json();if(!c.list)throw new Error("response missing `list`");this.consecutiveFailures=0;let l=ws(c.list,this.opts.
431
+ publicKeyPem,{minSeq:this.opts.snapshot.seq,nowSeconds:this.now(),maxSkewSeconds:this.opts.maxSkewSeconds??Ke.maxSkewSeconds});if(!l.ok){let d=l.reason??"rejected";this.opts.onEvent?.({type:"rejected",
429
432
  reason:d}),this.avisar(`rechazada:${d}`,`[bv-sala] la lista de revocaciones NO verifica (${d}). Se mantiene la \xFAltima buena conocida, as\xED que las revocaciones YA conocidas se siguen aplicando, pero la\
430
433
  s nuevas no llegan. Revise ${this.opts.url}.`);return}a&&(this.lastEtag=a),this.opts.snapshot.markContact(this.now());let u=this.opts.snapshot.apply(l);this.opts.onEvent?.(u?{type:"applied",seq:l.seq,
431
434
  size:this.opts.snapshot.snapshot().size}:{type:"unchanged",seq:l.seq});}catch(i){this.consecutiveFailures++,this.opts.onEvent?.({type:"error",error:i}),this.avisarFalloDeRed(i);}finally{clearTimeout(r),
432
435
  this.controller=null;}}callado(){return !!(this.opts.silenceWarnings??this.opts.silenciarAvisos)}avisar(e,n){this.callado()||G(`poller:${this.opts.url}:${e}`,n);}avisarFalloDeRed(e){if(this.callado())return;
433
- let n=this.consecutiveFailures;if(n<vs||(n-vs)%Va!==0)return;let o=e instanceof Error?e.message:String(e);console.warn(`[bv-sala] no se ha podido contactar con el servidor de revocaciones ${n} veces s\
436
+ let n=this.consecutiveFailures;if(n<Ts||(n-Ts)%Ja!==0)return;let o=e instanceof Error?e.message:String(e);console.warn(`[bv-sala] no se ha podido contactar con el servidor de revocaciones ${n} veces s\
434
437
  eguidas (${o}). La licencia SIGUE funcionando y las revocaciones ya conocidas se siguen aplicando, pero las NUEVAS no est\xE1n llegando. Compruebe la salida hacia ${this.opts.url}.`);}start(){this.started||
435
- this.stopped||(this.started=true,this.pollOnce().finally(()=>this.schedule()));}schedule(){if(this.stopped)return;let e=Ua({refreshAfter:this.opts.getRefreshAfter?.(),nowSeconds:this.now(),consecutiveFailures:this.
436
- consecutiveFailures,floorSeconds:this.opts.floorSeconds??He.floorSeconds,pollIntervalSeconds:this.opts.pollIntervalSeconds??He.pollIntervalSeconds,maxIntervalSeconds:this.opts.maxIntervalSeconds??He.maxIntervalSeconds,
437
- jitterRatio:this.opts.jitterRatio??He.jitterRatio,...this.opts.random?{random:this.opts.random}:{}});this.timer=setTimeout(()=>{this.pollOnce().finally(()=>this.schedule());},e*1e3),this.timer.unref?.();}stop(){
438
- this.stopped=true,this.timer&&(clearTimeout(this.timer),this.timer=null),this.controller?.abort();}};var dt=class{options;now;flushIntervalMs;maxBatch;maxBuffer;buffer=[];seatId;ci;timer;inflight=null;fallosSeguidos=0;constructor(e){this.options=e,this.now=e.now??(()=>Date.now()),this.flushIntervalMs=
438
+ this.stopped||(this.started=true,this.pollOnce().finally(()=>this.schedule()));}schedule(){if(this.stopped)return;let e=Wa({refreshAfter:this.opts.getRefreshAfter?.(),nowSeconds:this.now(),consecutiveFailures:this.
439
+ consecutiveFailures,floorSeconds:this.opts.floorSeconds??Ke.floorSeconds,pollIntervalSeconds:this.opts.pollIntervalSeconds??Ke.pollIntervalSeconds,maxIntervalSeconds:this.opts.maxIntervalSeconds??Ke.maxIntervalSeconds,
440
+ jitterRatio:this.opts.jitterRatio??Ke.jitterRatio,...this.opts.random?{random:this.opts.random}:{}});this.timer=setTimeout(()=>{this.pollOnce().finally(()=>this.schedule());},e*1e3),this.timer.unref?.();}stop(){
441
+ this.stopped=true,this.timer&&(clearTimeout(this.timer),this.timer=null),this.controller?.abort();}};var pt=class{options;now;flushIntervalMs;maxBatch;maxBuffer;buffer=[];seatId;ci;timer;inflight=null;fallosSeguidos=0;constructor(e){this.options=e,this.now=e.now??(()=>Date.now()),this.flushIntervalMs=
439
442
  e.flushIntervalMs??15e3,this.maxBatch=e.maxBatch??50,this.maxBuffer=e.maxBuffer??1e3,this.ci=e.ci??false;}setSeat(e,n){e&&(this.seatId=e),this.ci=n;}record(e){this.buffer.push({report:e,at:this.now()}),this.
440
443
  buffer.length>this.maxBuffer&&this.buffer.splice(0,this.buffer.length-this.maxBuffer),this.buffer.length>=this.maxBatch&&this.flush();}start(){this.timer||(this.timer=setInterval(()=>{this.flush();},this.
441
444
  flushIntervalMs),this.timer.unref?.());}stop(){this.timer&&(clearInterval(this.timer),this.timer=void 0),this.flush();}async stopAndDrain(e){this.timer&&(clearInterval(this.timer),this.timer=void 0);let n=e??
442
445
  Math.ceil(this.maxBuffer/this.maxBatch)+4,o=0;for(let r=0;r<n&&this.buffer.length>0;r++){let s=this.buffer.length;if(await this.flush(),o=this.buffer.length>=s?o+1:0,o>=2)break}}async flush(){if(this.
443
446
  inflight)return this.inflight;if(this.buffer.length!==0){this.inflight=this.hacerFlush();try{await this.inflight;}finally{this.inflight=null;}}}async hacerFlush(){let e=this.options.fetchImpl??globalThis.
444
447
  fetch;if(!e)return;let n=this.buffer.splice(0,this.maxBatch);try{let o=n.map(s=>this.toWire(s)),r=await e(this.options.url,{method:"POST",headers:{"content-type":"application/json",authorization:`Bear\
445
- er ${this.options.serviceAccountKey}`,[No]:`${this.options.surface??"sdk"}/${fn}`},body:JSON.stringify(o)});r.ok?this.fallosSeguidos=0:r.status>=500?(this.fallosSeguidos++,this.requeue(n),this.avisarDeFallo(
448
+ er ${this.options.serviceAccountKey}`,[$o]:`${this.options.surface??"sdk"}/${mn}`},body:JSON.stringify(o)});r.ok?this.fallosSeguidos=0:r.status>=500?(this.fallosSeguidos++,this.requeue(n),this.avisarDeFallo(
446
449
  `el servidor respondi\xF3 ${r.status}`)):r.status===401||r.status===403?(G(`metering-auth-${r.status}`,`[bv-sala] el env\xEDo de uso est\xE1 siendo rechazado con HTTP ${r.status} en ${this.options.url}\
447
450
  . Revisa 'serviceAccountKey' (\xBFrotada? \xBFrevocada? \xBFde otra organizaci\xF3n?). Mientras no funcione NO se reporta uso: el panel dir\xE1 que no ve tr\xE1fico y los asientos facturables saldr\xE1n a cero.`),
448
451
  this.options.onAuthError?.(r.status)):(this.fallosSeguidos++,this.avisarDeFallo(r.status===404||r.status===405?`HTTP ${r.status}: la URL de env\xEDo parece equivocada`:`el servidor rechaz\xF3 el lote con\
@@ -454,250 +457,252 @@ this.buffer=[...e,...this.buffer],this.buffer.length>this.maxBuffer&&(this.buffe
454
457
  eliminatedInputTokens:n.tokens.eliminatedInput,compressedInputTokens:n.tokens.compressedInput,baselineOutputTokens:n.tokens.baselineOutput,actualOutputTokens:n.tokens.actualOutput,providerCachedInputTokens:n.
455
458
  tokens.providerCachedInput??0,cacheResult:n.cache.result,...n.cost.eliminatedInputFloorCost!==void 0&&Number.isFinite(n.cost.eliminatedInputFloorCost)&&n.cost.eliminatedInputFloorCost>0&&n.tokens.eliminatedInput>
456
459
  0?{eliminatedInputFloorCost:n.cost.eliminatedInputFloorCost}:{},baselineCost:n.cost.baselineEstimate,actualCost:n.cost.actual,netSavings:n.cost.netSavings,...n.cost.basis?{basis:n.cost.basis}:{},...n.
457
- attribution?.sessionId?{sessionId:n.attribution.sessionId}:{},...n.attribution?.agentId?{agentId:n.attribution.agentId}:{}}}};function Zt(){return globalThis.process}function Ha(t){if(/^[0-9a-f]{12}$/.test(t)||/^\d{1,3}(\.\d{1,3}){3}$/.test(t)||/^ip-\d{1,3}(-\d{1,3}){3}$/i.test(t))return true;let e="[bcdfghjklmnpqrstvwxz2456789\
458
- ]";return new RegExp(`-${e}{8,10}-${e}{5}$`).test(t)}function Ka(t){return !!(t.AWS_LAMBDA_FUNCTION_NAME??t.LAMBDA_TASK_ROOT??t.VERCEL??t.VERCEL_ENV??t.K_SERVICE??t.FUNCTION_TARGET??t.FUNCTIONS_WORKER_RUNTIME??
459
- t.NETLIFY)}async function Ja(){if(Zt()?.execPath)try{let e=await import(["node","os"].join(":")),n=typeof e.hostname=="function"?e.hostname():"";return n.length>0?n:void 0}catch{return}}async function Wa(t,e=Ja){
460
- if(t.KUBERNETES_SERVICE_HOST||Ka(t))return;let n=t.HOSTNAME??t.COMPUTERNAME??await e();if(!(!n||Ha(n)))return n}async function Ga(){let t=Zt();if(!t||!t.env)return;let e=t.env,n=await Wa(e),o=[t.platform,
461
- t.arch,t.execPath,n,e.USER??e.USERNAME??e.LOGNAME,e.HOME??e.USERPROFILE].filter(r=>typeof r=="string"&&r.length>0);return o.length?o.join("|"):void 0}var Ya=["CI","CONTINUOUS_INTEGRATION","GITHUB_ACTI\
462
- ONS","GITLAB_CI","CIRCLECI","TRAVIS","JENKINS_URL","BUILDKITE","TF_BUILD","TEAMCITY_VERSION","BITBUCKET_BUILD_NUMBER","CODEBUILD_BUILD_ID","HEROKU_TEST_RUN_ID","DRONE"];function po(){let t=Zt()?.env;if(!t)
463
- return false;for(let e of Ya){let n=t[e];if(n&&n!=="false"&&n!=="0")return true}return false}async function Za(t,e){let n=globalThis.crypto,o=new TextEncoder;if(n?.subtle)try{let i=await n.subtle.importKey("raw",
460
+ attribution?.sessionId?{sessionId:n.attribution.sessionId}:{},...n.attribution?.agentId?{agentId:n.attribution.agentId}:{}}}};function Xt(){return globalThis.process}function Ya(t){if(/^[0-9a-f]{12}$/.test(t)||/^\d{1,3}(\.\d{1,3}){3}$/.test(t)||/^ip-\d{1,3}(-\d{1,3}){3}$/i.test(t))return true;let e="[bcdfghjklmnpqrstvwxz2456789\
461
+ ]";return new RegExp(`-${e}{8,10}-${e}{5}$`).test(t)}function Za(t){return !!(t.AWS_LAMBDA_FUNCTION_NAME??t.LAMBDA_TASK_ROOT??t.VERCEL??t.VERCEL_ENV??t.K_SERVICE??t.FUNCTION_TARGET??t.FUNCTIONS_WORKER_RUNTIME??
462
+ t.NETLIFY)}async function Xa(){if(Xt()?.execPath)try{let e=await import(["node","os"].join(":")),n=typeof e.hostname=="function"?e.hostname():"";return n.length>0?n:void 0}catch{return}}async function Qa(t,e=Xa){
463
+ if(t.KUBERNETES_SERVICE_HOST||Za(t))return;let n=t.HOSTNAME??t.COMPUTERNAME??await e();if(!(!n||Ya(n)))return n}async function ec(){let t=Xt();if(!t||!t.env)return;let e=t.env,n=await Qa(e),o=[t.platform,
464
+ t.arch,t.execPath,n,e.USER??e.USERNAME??e.LOGNAME,e.HOME??e.USERPROFILE].filter(r=>typeof r=="string"&&r.length>0);return o.length?o.join("|"):void 0}var tc=["CI","CONTINUOUS_INTEGRATION","GITHUB_ACTI\
465
+ ONS","GITLAB_CI","CIRCLECI","TRAVIS","JENKINS_URL","BUILDKITE","TF_BUILD","TEAMCITY_VERSION","BITBUCKET_BUILD_NUMBER","CODEBUILD_BUILD_ID","HEROKU_TEST_RUN_ID","DRONE"];function mo(){let t=Xt()?.env;if(!t)
466
+ return false;for(let e of tc){let n=t[e];if(n&&n!=="false"&&n!=="0")return true}return false}async function nc(t,e){let n=globalThis.crypto,o=new TextEncoder;if(n?.subtle)try{let i=await n.subtle.importKey("raw",
464
467
  o.encode(t),{name:"HMAC",hash:"SHA-256"},!1,["sign"]),a=await n.subtle.sign("HMAC",i,o.encode(e));return [...new Uint8Array(a)].map(c=>c.toString(16).padStart(2,"0")).join("")}catch{}let r=2166136261,s=`${t}\
465
- |${e}`;for(let i=0;i<s.length;i++)r^=s.charCodeAt(i),r=Math.imul(r,16777619);return (r>>>0).toString(16).padStart(8,"0")}async function fo(t){let n=Zt()?.env?.BVSALA_SEAT_ID;if(n&&Xa.test(n))return n;let o=await Ga();
466
- if(!o)return;let r=await Za(t,o);if(r)return `m-${r.slice(0,32)}`}var Xa=/^[A-Za-z0-9._:/-]{1,128}$/;var ks={inputPer1k:5e-4,outputPer1k:.0015,cachedInputPer1k:5e-5};function ws(t){return {exactCache:t.exactCache??new vt,semanticCache:t.semanticCache,singleflight:t.singleflight??new kt,resolvers:t.resolvers??Wo(),router:t.router??new wt,toolSelector:t.toolSelector??
467
- new St,formatSelector:t.formatSelector??new Ct({tokenizer:t.tokenizer}),schemaRegistry:t.schemaRegistry??new It,constraintBackends:t.constraintBackends??[]}}var Qa=36e5,ec=7*86400,tc=3e4,Xt=class{opts;pollIntervalMs;refreshLeadSeconds;timer=null;enVuelo=false;parado=false;controller=null;avisadoDeCredencial=false;currentExpiresAt;currentOrg;constructor(e){this.opts=
468
- e,this.pollIntervalMs=e.pollIntervalMs??Qa,this.refreshLeadSeconds=e.refreshLeadSeconds??ec;let n=Ue(e.initialToken,e.publicKey);this.currentExpiresAt=n.signatureValid&&n.payload?n.payload.expires_at:
468
+ |${e}`;for(let i=0;i<s.length;i++)r^=s.charCodeAt(i),r=Math.imul(r,16777619);return (r>>>0).toString(16).padStart(8,"0")}async function ho(t){let n=Xt()?.env?.BVSALA_SEAT_ID;if(n&&oc.test(n))return n;let o=await ec();
469
+ if(!o)return;let r=await nc(t,o);if(r)return `m-${r.slice(0,32)}`}var oc=/^[A-Za-z0-9._:/-]{1,128}$/;var Es={inputPer1k:5e-4,outputPer1k:.0015,cachedInputPer1k:5e-5};function Rs(t){return {exactCache:t.exactCache??new kt,semanticCache:t.semanticCache,singleflight:t.singleflight??new wt,resolvers:t.resolvers??Zo(),router:t.router??new St,toolSelector:t.toolSelector??
470
+ new Tt,formatSelector:t.formatSelector??new It({tokenizer:t.tokenizer}),schemaRegistry:t.schemaRegistry??new Ot,constraintBackends:t.constraintBackends??[]}}var rc=36e5,sc=7*86400,ic=3e4,Qt=class{opts;pollIntervalMs;refreshLeadSeconds;timer=null;enVuelo=false;parado=false;controller=null;avisadoDeCredencial=false;currentExpiresAt;currentOrg;constructor(e){this.opts=
471
+ e,this.pollIntervalMs=e.pollIntervalMs??rc,this.refreshLeadSeconds=e.refreshLeadSeconds??sc;let n=qe(Ue(e.initialToken),e.publicKey);this.currentExpiresAt=n.signatureValid&&n.payload?n.payload.expires_at:
469
472
  0,this.currentOrg=n.signatureValid?n.payload?.org_id:void 0;}start(){this.timer||(this.checkNow(),this.timer=setInterval(()=>{this.checkNow();},this.pollIntervalMs),this.timer.unref?.());}stop(){this.parado=
470
473
  true,this.timer&&clearInterval(this.timer),this.timer=null,this.controller?.abort(),this.controller=null;}nowSeconds(){return Math.floor((this.opts.now?this.opts.now():Date.now())/1e3)}async checkNow(){if(this.
471
474
  enVuelo||this.parado||this.currentExpiresAt-this.nowSeconds()>this.refreshLeadSeconds)return false;this.enVuelo=true;let e=new AbortController;this.controller=e;let n=setTimeout(()=>e.abort(),this.opts.requestTimeoutMs??
472
- tc);n.unref?.();try{let r=await(this.opts.fetchImpl??globalThis.fetch.bind(globalThis))(this.opts.url,{signal:e.signal,headers:{authorization:`Bearer ${this.opts.serviceAccountKey}`,accept:"applicatio\
475
+ ic);n.unref?.();try{let r=await(this.opts.fetchImpl??globalThis.fetch.bind(globalThis))(this.opts.url,{signal:e.signal,headers:{authorization:`Bearer ${this.opts.serviceAccountKey}`,accept:"applicatio\
473
476
  n/json"}});if(!r.ok)return (r.status===401||r.status===403||r.status===404)&&!this.avisadoDeCredencial&&(this.avisadoDeCredencial=!0,console.warn(`[bv-sala] la recogida autom\xE1tica de la licencia renova\
474
477
  da falla con HTTP ${r.status} en ${this.opts.url}. Revisa 'serviceAccountKey' (\xBFrotada? \xBFde otra organizaci\xF3n?) y 'licenseServerUrl': mientras no funcione, el token NO se renovar\xE1 solo y el SDK dejar\xE1\
475
- de operar al terminar el periodo de gracia.`)),!1;let s=await r.json();if(typeof s.token!="string")return !1;let i=Ue(s.token,this.opts.publicKey);return !i.signatureValid||!i.payload||i.payload.expires_at<=
476
- this.currentExpiresAt||this.currentOrg&&i.payload.org_id!==this.currentOrg||this.opts.revocados?.snapshot().has(i.payload.jti)||this.parado?!1:(this.currentExpiresAt=i.payload.expires_at,this.currentOrg=
477
- i.payload.org_id,this.opts.onNewToken(s.token),!0)}catch{return false}finally{clearTimeout(n),this.controller===e&&(this.controller=null),this.enVuelo=false;}}};var mo={minimumCacheTokens:1024,cacheReadMultiplier:.5,cacheWriteMultiplier:1},Ss={minimumCacheTokens:1024,cacheReadMultiplier:.1,cacheWriteMultiplier:1.25},nc=[["claude-fable-5-1",512],["claude-mytho\
478
+ de operar al terminar el periodo de gracia.`)),!1;let s=await r.json();if(typeof s.token!="string")return !1;let i=Ue(s.token),a=qe(i,this.opts.publicKey);return !a.signatureValid||!a.payload||a.payload.
479
+ expires_at<=this.currentExpiresAt||this.currentOrg&&a.payload.org_id!==this.currentOrg||this.opts.revocados?.snapshot().has(a.payload.jti)||this.parado?!1:(this.currentExpiresAt=a.payload.expires_at,this.
480
+ currentOrg=a.payload.org_id,this.opts.onNewToken(i),!0)}catch{return false}finally{clearTimeout(n),this.controller===e&&(this.controller=null),this.enVuelo=false;}}};var go={minimumCacheTokens:1024,cacheReadMultiplier:.5,cacheWriteMultiplier:1},Cs={minimumCacheTokens:1024,cacheReadMultiplier:.1,cacheWriteMultiplier:1.25},ac=[["claude-fable-5-1",512],["claude-mytho\
478
481
  s-5-1",512],["claude-fable-5",512],["claude-mythos-5",512],["claude-opus-5",512],["claude-opus-4-7",2048],["claude-opus-4-6",4096],["claude-opus-4-5",4096],["claude-haiku-4-5",4096],["claude-3-5-haiku",
479
- 2048]];function ho(t){for(let[e,n]of nc)if(t===e||t.startsWith(`${e}-`))return {...Ss,minimumCacheTokens:n};return Ss}var go={minimumCacheTokens:1024,cacheReadMultiplier:.1,cacheWriteMultiplier:1};var Ts={minimumCacheTokens:1024,cacheReadMultiplier:1,cacheWriteMultiplier:1};function Qt(t,e,n,o){let r=o.minimumCacheTokens;if(r==null||t<r)return t;let s=Math.min(e,t),i=t-s,a=Math.min(1,Math.max(0,
480
- n)),c=a*s*o.cacheReadMultiplier+(1-a)*s*o.cacheWriteMultiplier;return i+c}function bo(t){let e=Qt(t.originalTokens,t.stablePrefixTokens,t.prefixHitRate,t.tier),n=Qt(t.compressedTokens,0,0,t.tier)+(t.compressorCostTokens??
482
+ 2048]];function bo(t){for(let[e,n]of ac)if(t===e||t.startsWith(`${e}-`))return {...Cs,minimumCacheTokens:n};return Cs}var yo={minimumCacheTokens:1024,cacheReadMultiplier:.1,cacheWriteMultiplier:1};var Is={minimumCacheTokens:1024,cacheReadMultiplier:1,cacheWriteMultiplier:1};function en(t,e,n,o){let r=o.minimumCacheTokens;if(r==null||t<r)return t;let s=Math.min(e,t),i=t-s,a=Math.min(1,Math.max(0,
483
+ n)),c=a*s*o.cacheReadMultiplier+(1-a)*s*o.cacheWriteMultiplier;return i+c}function xo(t){let e=en(t.originalTokens,t.stablePrefixTokens,t.prefixHitRate,t.tier),n=en(t.compressedTokens,0,0,t.tier)+(t.compressorCostTokens??
481
484
  0),o=e-n,r=t.tier.minimumCacheTokens,i=r!=null&&t.originalTokens>=r&&t.compressedTokens<r,a;if(o<=0){let c=e<t.originalTokens;a=i?`compressing drops the prompt out of the cacheable tier (${t.compressedTokens}\
482
485
  < ${r}) and costs more than it saves`:c?`not compressing is cheaper: the provider's prefix cache already discounts this prompt (${e.toFixed(0)} vs ${n.toFixed(0)} equivalent tokens, at a ${(t.prefixHitRate*
483
486
  100).toFixed(0)}% hit rate)`:"the saving does not cover the compressor's cost";}else i?a=`pays off even after losing the prefix cache (${(t.prefixHitRate*100).toFixed(0)}% hit rate)`:a="pays off and do\
484
- es not touch the cache tier";return {comprimir:o>0,costeComprimido:n,costeSinComprimir:e,ganancia:o,razon:a}}function Es(t){let e=r=>bo({...t,prefixHitRate:r}).ganancia;if(e(0)<=0||e(1)>0)return null;let n=0,
485
- o=1;for(let r=0;r<40;r++){let s=(n+o)/2;e(s)>0?n=s:o=s;}return (n+o)/2}function oc(t){let e=Es({originalTokens:t.totalTokens,compressedTokens:t.totalTokens,stablePrefixTokens:t.stablePrefixTokens,tier:t.tier});return e??(Qt(t.totalTokens,t.stablePrefixTokens,0,t.tier)<=t.
486
- totalTokens?null:1)}var en=class{exploracion;estados=new Map;constructor(e={}){this.exploracion=Math.max(1,e.exploracion??8);}costeDeExploracion(e,n){return this.exploracion*Math.max(0,n.cacheWriteMultiplier-
487
- 1)*e}estado(e){return this.estados.get(e)}decidir(e,n){let o=oc(n),r=this.estados.get(e),s=rc(r);return n.stablePrefixTokens<=0?{marcar:false,razon:"no stable prefix to cache",umbral:o,observada:s}:o==null?
488
- {marcar:true,razon:"marking cannot lose money at this tier (no write premium)",umbral:o,observada:s}:r?.apagada?{marcar:false,razon:`prefix-cache marking OFF: measured hit rate ${Ke(s)} did not reach the ${Ke(
487
+ es not touch the cache tier";return {comprimir:o>0,costeComprimido:n,costeSinComprimir:e,ganancia:o,razon:a}}function Os(t){let e=r=>xo({...t,prefixHitRate:r}).ganancia;if(e(0)<=0||e(1)>0)return null;let n=0,
488
+ o=1;for(let r=0;r<40;r++){let s=(n+o)/2;e(s)>0?n=s:o=s;}return (n+o)/2}function cc(t){let e=Os({originalTokens:t.totalTokens,compressedTokens:t.totalTokens,stablePrefixTokens:t.stablePrefixTokens,tier:t.tier});return e??(en(t.totalTokens,t.stablePrefixTokens,0,t.tier)<=t.
489
+ totalTokens?null:1)}var tn=class{exploracion;estados=new Map;constructor(e={}){this.exploracion=Math.max(1,e.exploracion??8);}costeDeExploracion(e,n){return this.exploracion*Math.max(0,n.cacheWriteMultiplier-
490
+ 1)*e}estado(e){return this.estados.get(e)}decidir(e,n){let o=cc(n),r=this.estados.get(e),s=lc(r);return n.stablePrefixTokens<=0?{marcar:false,razon:"no stable prefix to cache",umbral:o,observada:s}:o==null?
491
+ {marcar:true,razon:"marking cannot lose money at this tier (no write premium)",umbral:o,observada:s}:r?.apagada?{marcar:false,razon:`prefix-cache marking OFF: measured hit rate ${Je(s)} did not reach the ${Je(
489
492
  o)} break-even, so marking was costing money`,umbral:o,observada:s}:r==null||r.marcadas<this.exploracion?{marcar:true,razon:`exploring the prefix cache (${r?.marcadas??0}/${this.exploracion}); hit rate \
490
- is only observable on requests that were marked`,umbral:o,observada:s}:s!=null&&s>o?{marcar:true,razon:`measured hit rate ${Ke(s)} beats the ${Ke(o)} break-even`,umbral:o,observada:s}:(r.apagada=true,{marcar:false,
491
- razon:`prefix-cache marking OFF: measured hit rate ${Ke(s)} did not reach the ${Ke(o)} break-even, so marking was costing money`,umbral:o,observada:s})}registrar(e,n){let o=this.estados.get(e)??{marcadas:0,
492
- tokensLeidos:0,tokensEscritos:0,apagada:false};o.marcadas+=1,o.tokensLeidos+=Math.max(0,n.cachedInputTokens??0),o.tokensEscritos+=Math.max(0,n.cacheWriteInputTokens??0),this.estados.set(e,o);}};function rc(t){
493
- if(!t)return null;let e=t.tokensLeidos+t.tokensEscritos;return e<=0?t.marcadas>0?0:null:t.tokensLeidos/e}function Ke(t){return t==null?"n/a":`${(t*100).toFixed(1)}%`}var Rs=.5;function sc(t,e){return e.inputPer1k<=0||e.outputPer1k<=0?null:Math.max(t.inputPer1k/e.inputPer1k,t.outputPer1k/e.outputPer1k)}function ic(t){return 1-t}function ac(t,e=Rs){return e-t}function Cs(t,e,n=Rs){
494
- if(!t||!e)return null;let o=sc(t,e);if(o==null||!Number.isFinite(o))return null;let r=ic(o),s=ac(o,n),i=s>0,a=c=>`${(c*100).toFixed(1)}%`;return {r:o,equilibrio:r,escaladoMaximo:s,viable:i,razon:i?`the\
493
+ is only observable on requests that were marked`,umbral:o,observada:s}:s!=null&&s>o?{marcar:true,razon:`measured hit rate ${Je(s)} beats the ${Je(o)} break-even`,umbral:o,observada:s}:(r.apagada=true,{marcar:false,
494
+ razon:`prefix-cache marking OFF: measured hit rate ${Je(s)} did not reach the ${Je(o)} break-even, so marking was costing money`,umbral:o,observada:s})}registrar(e,n){let o=this.estados.get(e)??{marcadas:0,
495
+ tokensLeidos:0,tokensEscritos:0,apagada:false};o.marcadas+=1,o.tokensLeidos+=Math.max(0,n.cachedInputTokens??0),o.tokensEscritos+=Math.max(0,n.cacheWriteInputTokens??0),this.estados.set(e,o);}};function lc(t){
496
+ if(!t)return null;let e=t.tokensLeidos+t.tokensEscritos;return e<=0?t.marcadas>0?0:null:t.tokensLeidos/e}function Je(t){return t==null?"n/a":`${(t*100).toFixed(1)}%`}var _s=.5;function uc(t,e){return e.inputPer1k<=0||e.outputPer1k<=0?null:Math.max(t.inputPer1k/e.inputPer1k,t.outputPer1k/e.outputPer1k)}function dc(t){return 1-t}function pc(t,e=_s){return e-t}function As(t,e,n=_s){
497
+ if(!t||!e)return null;let o=uc(t,e);if(o==null||!Number.isFinite(o))return null;let r=dc(o),s=pc(o,n),i=s>0,a=c=>`${(c*100).toFixed(1)}%`;return {r:o,equilibrio:r,escaladoMaximo:s,viable:i,razon:i?`the\
495
498
  cheap model costs ${a(o)} of the strong one, so routing pays off while escalations stay under ${a(s)} (it stops saving money at ${a(r)})`:`the cheap model costs ${a(o)} of the strong one: even with z\
496
- ero escalations it cannot reach the ${a(n)} target, so this pair is not worth the quality risk`}}var xo={"gpt-4":"gpt-4o","gpt-4-turbo":"gpt-4o-mini","gpt-4o":"gpt-4o-mini","gpt-4.1":"gpt-4.1-mini","c\
497
- laude-opus-4":"claude-haiku-4-5","claude-sonnet-4":"claude-haiku-4-5","claude-3-opus":"claude-3-haiku","claude-3-5-sonnet":"claude-3-5-haiku"};function cc(t){return Object.keys(t).sort((e,n)=>n.length-
498
- e.length||e.localeCompare(n))}function Is(t,e=xo){if(!t)return null;let n=t.lastIndexOf("/"),o=n>=0?t.slice(0,n+1):"",r=n>=0?t.slice(n+1):t,s=e[t]??e[r]??lc(r,e);return !s||s===r?null:o+s}function lc(t,e){
499
- for(let n of cc(e))if(t.startsWith(n)&&t.charAt(n.length)==="-"&&/^\d{4}/.test(t.slice(n.length+1)))return e[n]}var tn=class{exploracion;estados=new Map;constructor(e={}){this.exploracion=Math.max(1,e.exploracion??20);}costeDeExploracion(e){return this.exploracion*Math.max(0,e)}estado(e){return this.estados.get(
500
- e)}decidir(e,n){let o=this.estados.get(e),r=uc(o),s=o?.enrutadas??0,i=a=>a==null?"n/a":`${(a*100).toFixed(1)}%`;return o?.apagada?{enrutar:false,razon:`model cascade OFF for this workload: measured escal\
499
+ ero escalations it cannot reach the ${a(n)} target, so this pair is not worth the quality risk`}}var vo={"gpt-4":"gpt-4o","gpt-4-turbo":"gpt-4o-mini","gpt-4o":"gpt-4o-mini","gpt-4.1":"gpt-4.1-mini","c\
500
+ laude-opus-4":"claude-haiku-4-5","claude-sonnet-4":"claude-haiku-4-5","claude-3-opus":"claude-3-haiku","claude-3-5-sonnet":"claude-3-5-haiku"};function fc(t){return Object.keys(t).sort((e,n)=>n.length-
501
+ e.length||e.localeCompare(n))}function Ds(t,e=vo){if(!t)return null;let n=t.lastIndexOf("/"),o=n>=0?t.slice(0,n+1):"",r=n>=0?t.slice(n+1):t,s=e[t]??e[r]??mc(r,e);return !s||s===r?null:o+s}function mc(t,e){
502
+ for(let n of fc(e))if(t.startsWith(n)&&t.charAt(n.length)==="-"&&/^\d{4}/.test(t.slice(n.length+1)))return e[n]}var nn=class{exploracion;estados=new Map;constructor(e={}){this.exploracion=Math.max(1,e.exploracion??20);}costeDeExploracion(e){return this.exploracion*Math.max(0,e)}estado(e){return this.estados.get(
503
+ e)}decidir(e,n){let o=this.estados.get(e),r=hc(o),s=o?.enrutadas??0,i=a=>a==null?"n/a":`${(a*100).toFixed(1)}%`;return o?.apagada?{enrutar:false,razon:`model cascade OFF for this workload: measured escal\
501
504
  ation rate ${i(r)} is at or above the ${i(n.equilibrio)} break-even, so routing was costing money`,observada:r,muestras:s}:s<this.exploracion?{enrutar:true,razon:`measuring this workload (${s}/${this.exploracion}\
502
505
  ); the escalation rate is only observable on requests that were actually routed`,observada:r,muestras:s}:r!=null&&r<n.equilibrio?{enrutar:true,razon:`measured escalation rate ${i(r)} stays under the ${i(
503
506
  n.equilibrio)} break-even (this is a MONEY check, not a quality one)`,observada:r,muestras:s}:(o&&(o.apagada=true),{enrutar:false,razon:`model cascade OFF for this workload: measured escalation rate ${i(r)}\
504
507
  is at or above the ${i(n.equilibrio)} break-even, so routing was costing money`,observada:r,muestras:s})}registrar(e,n){let o=this.estados.get(e)??{enrutadas:0,escaladas:0,apagada:false};o.enrutadas+=1,
505
- n&&(o.escaladas+=1),this.estados.set(e,o);}};function uc(t){return !t||t.enrutadas<=0?null:t.escaladas/t.enrutadas}var dc=["enum","pattern","maximum","minimum","maxLength","minLength","maxItems","minItems"];function pc(t){return t?yo(t)?"value-constrained":"structural":"none"}function yo(t,e=0){if(e>12)return false;let n=t;
506
- for(let o of dc)if(n[o]!==void 0)return true;if(t.properties){for(let o of Object.values(t.properties))if(yo(o,e+1))return true}return !!(t.items&&yo(t.items,e+1))}function Os(t){let e=pc(t.schema),n=(t.tools??
508
+ n&&(o.escaladas+=1),this.estados.set(e,o);}};function hc(t){return !t||t.enrutadas<=0?null:t.escaladas/t.enrutadas}var gc=["enum","pattern","maximum","minimum","maxLength","minLength","maxItems","minItems"];function bc(t){return t?ko(t)?"value-constrained":"structural":"none"}function ko(t,e=0){if(e>12)return false;let n=t;
509
+ for(let o of gc)if(n[o]!==void 0)return true;if(t.properties){for(let o of Object.values(t.properties))if(ko(o,e+1))return true}return !!(t.items&&ko(t.items,e+1))}function Ps(t){let e=bc(t.schema),n=(t.tools??
507
510
  []).filter(o=>o.risk==="write"||o.risk==="destructive");return n.length>0?{elegible:false,fuerza:e,razon:`the request carries ${n.length} write/destructive tool(s); a cheaper model's choice of ACTION can\
508
511
  not be checked by an output contract, so the cascade never applies here`}:e==="none"?{elegible:false,fuerza:e,razon:"no output contract: the deterministic verifier would accept anything, which would repo\
509
512
  rt a perfect escalation rate over answers nobody checked. Declare `response.schema` to route"}:{elegible:true,fuerza:e,razon:e==="value-constrained"?"output contract carries value constraints, so wrong \
510
- content has somewhere to fall":"output contract checks shape only: a well-formed answer with wrong content passes"}}function vo(t){let e=[];if(e.push("non-empty"),t.texto.trim()==="")return {acepta:false,
513
+ content has somewhere to fall":"output contract checks shape only: a well-formed answer with wrong content passes"}}function wo(t){let e=[];if(e.push("non-empty"),t.texto.trim()==="")return {acepta:false,
511
514
  motivo:"the cheap model returned an empty answer",comprobaciones:e};if(e.push("final-answer"),t.pidioHerramientas)return {acepta:false,motivo:"the cheap model asked to run tools: that is an action, not a \
512
515
  final answer, and the output contract cannot check it",comprobaciones:e};if(e.push("not-truncated"),t.finishReason==="length")return {acepta:false,motivo:"the cheap model's answer was cut off by maxOutput\
513
516
  Tokens",comprobaciones:e};if(e.push("output-contract"),!t.schema)return {acepta:false,motivo:"no output contract to verify against",comprobaciones:e};let n;try{n=JSON.parse(t.texto);}catch{return {acepta:false,
514
517
  motivo:"the cheap model's answer is not valid JSON",comprobaciones:e}}let o=ae(n,t.schema);return o.valid?{acepta:true,motivo:"the cheap model's answer satisfies the output contract",comprobaciones:e}:{
515
- acepta:false,motivo:`the cheap model's answer does not satisfy the output contract (${o.errors.slice(0,3).map(s=>`${s.path}: ${s.message}`).join("; ")})`,comprobaciones:e}}function _s(t,e){let n,o;try{n=
516
- JSON.parse(t),o=JSON.parse(e);}catch{return {divergen:false,motivo:"not comparable (at least one answer is not JSON)"}}let r=nn(n),s=nn(o);return r.length===0&&s.length===0?{divergen:false,motivo:"no comparab\
517
- le facts (free prose only)"}:mc(r,s)?{divergen:false,motivo:"the hard values agree"}:{divergen:true,motivo:"both answers satisfy the contract but disagree on at least one hard value; this is the signature \
518
- of a false valid \u2014 it is a reason to look, never a verdict"}}var fc=40;function nn(t,e=0,n=[]){if(e>12)return n;if(typeof t=="number"&&Number.isFinite(t))n.push(`n:${t}`);else if(typeof t=="boole\
519
- an")n.push(`b:${t}`);else if(typeof t=="string"){let o=t.trim();o.length>0&&o.length<=fc&&n.push(`s:${o.toLowerCase()}`);}else if(Array.isArray(t))for(let o of t)nn(o,e+1,n);else if(t&&typeof t=="objec\
520
- t")for(let o of Object.keys(t).sort())nn(t[o],e+1,n);return n.sort()}function mc(t,e){if(t.length!==e.length)return false;for(let n=0;n<t.length;n++)if(t[n]!==e[n])return false;return true}var As="the layer measures both worlds against the same provider so that no baseline can be fabricated, keeps one ledger per lever, and refuses to publish a saving whose answer got worse along the way\
521
- , because a number nobody can check is not a number at all but a promise, and this product exists to stop making those. ";function hc(t){if(t<=0)return "";let e=As;for(;e.length<t;)e+=As;return e.slice(
522
- 0,t)}function gc(t){let e=t[0],n=-1;for(let o of t){let r=JSON.stringify(o)?.length??0;r>n&&(n=r,e=o);}return e}function ko(t){if(t.enum&&t.enum.length>0)return {valor:gc(t.enum)};switch(t.type??(t.properties?
523
- "object":t.items?"array":void 0)){case "string":return t.maxLength!=null?{valor:hc(t.maxLength)}:void 0;case "boolean":return {valor:false};case "null":return {valor:null};case "integer":return t.maximum!=null?
524
- {valor:Math.trunc(t.maximum)}:void 0;case "number":return;case "array":{if(t.maxItems==null||!t.items)return;let n=ko(t.items);return n?{valor:Array.from({length:t.maxItems},()=>n.valor)}:void 0}case "ob\
525
- ject":{if(t.additionalProperties!==false||!t.properties)return;let n={};for(let[o,r]of Object.entries(t.properties)){let s=ko(r);if(!s)return;n[o]=s.valor;}return {valor:n}}default:return}}function bc(t){let e=ko(
526
- t);return e?JSON.stringify(e.valor):null}function Ds(t,e){let n=bc(t);return n===null?null:e(n)}var on=16,Ps=64,xc=8,yc="measured live on the same triage contract, 8 paired reps each: gpt-4o-mini wrote 16 tokens MORE (-8.2% net) and gpt-4o wrote 3 tokens FEWER (+8.0% net)";function Ls(t,e,n,o={}){
527
- let r=o.minimumSavingsTokens??xc,s;try{if(To(t,0))return {applied:!1,reason:"schema has a pattern; no witness can be synthesised to prove the round trip"};s=Ro(t,0);}catch(S){return {applied:false,reason:S instanceof
518
+ acepta:false,motivo:`the cheap model's answer does not satisfy the output contract (${o.errors.slice(0,3).map(s=>`${s.path}: ${s.message}`).join("; ")})`,comprobaciones:e}}function Ls(t,e){let n,o;try{n=
519
+ JSON.parse(t),o=JSON.parse(e);}catch{return {divergen:false,motivo:"not comparable (at least one answer is not JSON)"}}let r=on(n),s=on(o);return r.length===0&&s.length===0?{divergen:false,motivo:"no comparab\
520
+ le facts (free prose only)"}:xc(r,s)?{divergen:false,motivo:"the hard values agree"}:{divergen:true,motivo:"both answers satisfy the contract but disagree on at least one hard value; this is the signature \
521
+ of a false valid \u2014 it is a reason to look, never a verdict"}}var yc=40;function on(t,e=0,n=[]){if(e>12)return n;if(typeof t=="number"&&Number.isFinite(t))n.push(`n:${t}`);else if(typeof t=="boole\
522
+ an")n.push(`b:${t}`);else if(typeof t=="string"){let o=t.trim();o.length>0&&o.length<=yc&&n.push(`s:${o.toLowerCase()}`);}else if(Array.isArray(t))for(let o of t)on(o,e+1,n);else if(t&&typeof t=="objec\
523
+ t")for(let o of Object.keys(t).sort())on(t[o],e+1,n);return n.sort()}function xc(t,e){if(t.length!==e.length)return false;for(let n=0;n<t.length;n++)if(t[n]!==e[n])return false;return true}var Ms="the layer measures both worlds against the same provider so that no baseline can be fabricated, keeps one ledger per lever, and refuses to publish a saving whose answer got worse along the way\
524
+ , because a number nobody can check is not a number at all but a promise, and this product exists to stop making those. ";function vc(t){if(t<=0)return "";let e=Ms;for(;e.length<t;)e+=Ms;return e.slice(
525
+ 0,t)}function kc(t){let e=t[0],n=-1;for(let o of t){let r=JSON.stringify(o)?.length??0;r>n&&(n=r,e=o);}return e}function So(t){if(t.enum&&t.enum.length>0)return {valor:kc(t.enum)};switch(t.type??(t.properties?
526
+ "object":t.items?"array":void 0)){case "string":return t.maxLength!=null?{valor:vc(t.maxLength)}:void 0;case "boolean":return {valor:false};case "null":return {valor:null};case "integer":return t.maximum!=null?
527
+ {valor:Math.trunc(t.maximum)}:void 0;case "number":return;case "array":{if(t.maxItems==null||!t.items)return;let n=So(t.items);return n?{valor:Array.from({length:t.maxItems},()=>n.valor)}:void 0}case "ob\
528
+ ject":{if(t.additionalProperties!==false||!t.properties)return;let n={};for(let[o,r]of Object.entries(t.properties)){let s=So(r);if(!s)return;n[o]=s.valor;}return {valor:n}}default:return}}function wc(t){let e=So(
529
+ t);return e?JSON.stringify(e.valor):null}function Bs(t,e){let n=wc(t);return n===null?null:e(n)}var rn=16,Ns=64,Sc=8,Tc="measured live on the same triage contract, 8 paired reps each: gpt-4o-mini wrote 16 tokens MORE (-8.2% net) and gpt-4o wrote 3 tokens FEWER (+8.0% net)";function js(t,e,n,o={}){
530
+ let r=o.minimumSavingsTokens??Sc,s;try{if(Ro(t,0))return {applied:!1,reason:"schema has a pattern; no witness can be synthesised to prove the round trip"};s=Io(t,0);}catch(S){return {applied:false,reason:S instanceof
528
531
  RangeError?"schema too deep or cyclic":"schema could not be compacted"}}if(s.renamed===0&&s.coded===0)return {applied:false,reason:"nothing to compact (no renameable keys, no codeable enums)"};let i=s.node;
529
- if(!i)return {applied:false,reason:"nothing to compact"};let a=S=>Je(S,i,true),c=S=>Je(S,i,false),l=Ec(t),u=vc(t,s.compact,i,l);if(!u.ok)return {applied:false,reason:u.reason};let d=e(JSON.stringify(t)),m=e(JSON.stringify(
530
- s.compact)),f=d-m,h=Number.POSITIVE_INFINITY;for(let S of l){let B=e(JSON.stringify(S))-e(JSON.stringify(a(S)));B<h&&(h=B);}Number.isFinite(h)||(h=0);let g=S=>S/1e3*n.inputPer1k,p=S=>S/1e3*n.outputPer1k,
531
- x=g(r),b=n.outputPer1k>0?(r-f)*n.inputPer1k/n.outputPer1k:Number.NEGATIVE_INFINITY,y=Number.isFinite(b)?b.toFixed(1):"any",T=n.inputPer1k>0?`${(n.outputPer1k/n.inputPer1k).toFixed(1)}x`:"more than",E=o.
532
+ if(!i)return {applied:false,reason:"nothing to compact"};let a=S=>We(S,i,true),c=S=>We(S,i,false),l=_c(t),u=Ec(t,s.compact,i,l);if(!u.ok)return {applied:false,reason:u.reason};let d=e(JSON.stringify(t)),f=e(JSON.stringify(
533
+ s.compact)),m=d-f,h=Number.POSITIVE_INFINITY;for(let S of l){let B=e(JSON.stringify(S))-e(JSON.stringify(a(S)));B<h&&(h=B);}Number.isFinite(h)||(h=0);let g=S=>S/1e3*n.inputPer1k,p=S=>S/1e3*n.outputPer1k,
534
+ y=g(r),b=n.outputPer1k>0?(r-m)*n.inputPer1k/n.outputPer1k:Number.NEGATIVE_INFINITY,x=Number.isFinite(b)?b.toFixed(1):"any",T=n.inputPer1k>0?`${(n.outputPer1k/n.inputPer1k).toFixed(1)}x`:"more than",E=o.
532
535
  evidencia;if(E==null)return {applied:false,reason:`no measured output delta for this model, so the codebook is not applied. Short field names change how much the model WRITES, and that is a property of th\
533
- e model, not of the schema: ${yc}. Here the compact contract saves ${f} input tokens and output is billed ${T} input, so it only pays while the output delta stays above ${y} tokens. Measure yours (ben\
536
+ e model, not of the schema: ${Tc}. Here the compact contract saves ${m} input tokens and output is billed ${T} input, so it only pays while the output delta stays above ${x} tokens. Measure yours (ben\
534
537
  chmarks/ab-live.ts) and pass it in`};let R=E.deltaTokens;if(R<0)return {applied:false,reason:`the measured output delta is ${R} tokens: this model writes MORE from a compact contract (${E.procedencia}). T\
535
- he input win is capped by the size of the schema while the output loss grows with the answer and is billed ${T} input, so no schema is big enough to buy it back`};let C=g(f)+p(R),D=n.inputPer1k>0?C*1e3/
536
- n.inputPer1k:f,I=`+${R} tokens (${R>0?"the model wrote LESS":"no measured change"}), ${E.procedencia}`;return C<x?{applied:false,reason:`net saving $${C.toFixed(9)}/request is below the floor of ${r} inp\
537
- ut tokens ($${x.toFixed(9)}): the compact contract saves ${f} input tokens and the measured output delta is ${I}; break-even at ${y}`}:{applied:true,reason:`net saving $${C.toFixed(9)}/request (${D.toFixed(
538
- 1)} input tokens equivalent): the compact contract saves ${f} input tokens and the measured output delta is ${I}; break-even at ${y}`,plan:{compactSchema:s.compact,expand:c,compact:a,renamedKeys:s.renamed,
539
- codedEnumValues:s.coded,schemaTokensOriginal:d,schemaTokensCompact:m,modelledShapeSavingTokens:h,measuredOutputDeltaTokens:R,outputDeltaProvenance:E.procedencia,breakEvenOutputDeltaTokens:b,netSavingUsd:C}}}
540
- function vc(t,e,n,o){for(let r of o){if(!ae(r,t).valid)return {ok:false,reason:"synthesised witness does not satisfy the caller's own schema; nothing can be proven"};let s=Je(r,n,true);if(!ae(s,e).valid)return {
541
- ok:false,reason:"compact witness does not validate against the compact schema"};if(!Eo(Je(s,n,false),r))return {ok:false,reason:"round trip is not the identity"}}return {ok:true}}function Ms(t){return t.type==="ob\
542
- ject"||t.type==null&&t.properties!=null}function Bs(t){return t.type==="array"||t.type==null&&t.items!=null}function kc(t){let e=t.enum;return !e||e.length===0||e.length>Ps||!e.every(n=>typeof n=="stri\
543
- ng")?null:e}function Ro(t,e){if(e>on)throw new RangeError("schema too deep");let n=kc(t);if(n){if(t.minLength!=null)return {compact:t,renamed:0,coded:0};let o=Ns(n,true);if(!o)return {compact:t,renamed:0,
538
+ he input win is capped by the size of the schema while the output loss grows with the answer and is billed ${T} input, so no schema is big enough to buy it back`};let C=g(m)+p(R),D=n.inputPer1k>0?C*1e3/
539
+ n.inputPer1k:m,I=`+${R} tokens (${R>0?"the model wrote LESS":"no measured change"}), ${E.procedencia}`;return C<y?{applied:false,reason:`net saving $${C.toFixed(9)}/request is below the floor of ${r} inp\
540
+ ut tokens ($${y.toFixed(9)}): the compact contract saves ${m} input tokens and the measured output delta is ${I}; break-even at ${x}`}:{applied:true,reason:`net saving $${C.toFixed(9)}/request (${D.toFixed(
541
+ 1)} input tokens equivalent): the compact contract saves ${m} input tokens and the measured output delta is ${I}; break-even at ${x}`,plan:{compactSchema:s.compact,expand:c,compact:a,renamedKeys:s.renamed,
542
+ codedEnumValues:s.coded,schemaTokensOriginal:d,schemaTokensCompact:f,modelledShapeSavingTokens:h,measuredOutputDeltaTokens:R,outputDeltaProvenance:E.procedencia,breakEvenOutputDeltaTokens:b,netSavingUsd:C}}}
543
+ function Ec(t,e,n,o){for(let r of o){if(!ae(r,t).valid)return {ok:false,reason:"synthesised witness does not satisfy the caller's own schema; nothing can be proven"};let s=We(r,n,true);if(!ae(s,e).valid)return {
544
+ ok:false,reason:"compact witness does not validate against the compact schema"};if(!Co(We(s,n,false),r))return {ok:false,reason:"round trip is not the identity"}}return {ok:true}}function $s(t){return t.type==="ob\
545
+ ject"||t.type==null&&t.properties!=null}function Fs(t){return t.type==="array"||t.type==null&&t.items!=null}function Rc(t){let e=t.enum;return !e||e.length===0||e.length>Ns||!e.every(n=>typeof n=="stri\
546
+ ng")?null:e}function Io(t,e){if(e>rn)throw new RangeError("schema too deep");let n=Rc(t);if(n){if(t.minLength!=null)return {compact:t,renamed:0,coded:0};let o=zs(n,true);if(!o)return {compact:t,renamed:0,
544
547
  coded:0};let r=[...o].filter(([i,a])=>i!==a).length;if(r===0)return {compact:t,renamed:0,coded:0};let s=new Map;for(let[i,a]of o)s.set(a,i);return {compact:{...t,enum:n.map(i=>o.get(i))},node:{enumFwd:o,
545
- enumBack:s},renamed:0,coded:r}}return Ms(t)?wc(t,e):Bs(t)?Sc(t,e):{compact:t,renamed:0,coded:0}}function wc(t,e){let n=Object.entries(t.properties??{});if(n.length===0)return {compact:t,renamed:0,coded:0};
546
- let o=0,r=0,s=new Map,i=new Map;for(let[m,f]of n){let h=Ro(f,e+1);i.set(m,h.compact),h.node&&s.set(m,h.node),o+=h.renamed,r+=h.coded;}let a=null;t.additionalProperties===false&&(a=Ns(n.map(([m])=>m),false));
547
- let c={};for(let[m]of n)c[a?.get(m)??m]=i.get(m);let l={...t,properties:c};t.required&&(l.required=t.required.map(m=>a?.get(m)??m));let u={};if(a){let m=new Map;for(let[h,g]of a)m.set(g,h);let f=false;for(let[
548
- h,g]of a)h!==g&&(f=true);if(f){u.keysFwd=a,u.keysBack=m;for(let[h,g]of a)h!==g&&(o+=1);}}s.size>0&&(u.props=s);let d=!u.keysFwd&&!u.props;return {compact:l,...d?{}:{node:u},renamed:o,coded:r}}function Sc(t,e){
549
- if(!t.items)return {compact:t,renamed:0,coded:0};let n=Ro(t.items,e+1);return {compact:{...t,items:n.compact},...n.node?{node:{items:n.node}}:{},renamed:n.renamed,coded:n.coded}}function Ns(t,e){let n=[
548
+ enumBack:s},renamed:0,coded:r}}return $s(t)?Cc(t,e):Fs(t)?Ic(t,e):{compact:t,renamed:0,coded:0}}function Cc(t,e){let n=Object.entries(t.properties??{});if(n.length===0)return {compact:t,renamed:0,coded:0};
549
+ let o=0,r=0,s=new Map,i=new Map;for(let[f,m]of n){let h=Io(m,e+1);i.set(f,h.compact),h.node&&s.set(f,h.node),o+=h.renamed,r+=h.coded;}let a=null;t.additionalProperties===false&&(a=zs(n.map(([f])=>f),false));
550
+ let c={};for(let[f]of n)c[a?.get(f)??f]=i.get(f);let l={...t,properties:c};t.required&&(l.required=t.required.map(f=>a?.get(f)??f));let u={};if(a){let f=new Map;for(let[h,g]of a)f.set(g,h);let m=false;for(let[
551
+ h,g]of a)h!==g&&(m=true);if(m){u.keysFwd=a,u.keysBack=f;for(let[h,g]of a)h!==g&&(o+=1);}}s.size>0&&(u.props=s);let d=!u.keysFwd&&!u.props;return {compact:l,...d?{}:{node:u},renamed:o,coded:r}}function Ic(t,e){
552
+ if(!t.items)return {compact:t,renamed:0,coded:0};let n=Io(t.items,e+1);return {compact:{...t,items:n.compact},...n.node?{node:{items:n.node}}:{},renamed:n.renamed,coded:n.coded}}function zs(t,e){let n=[
550
553
  ...t].sort(),o=new Set,r=new Map;n.forEach((i,a)=>{let c=e?i.toUpperCase():i,l=i;for(let u=1;u<i.length;u++){let d=c.slice(0,u);if(!o.has(d)){l=d;break}}if(l===i){let u=a.toString(36);u.length<i.length&&
551
- !o.has(u)&&(l=u);}o.add(l),r.set(i,l);});let s=new Set(t);for(let[i,a]of r)if(a!==i&&s.has(a))return null;return r}function Je(t,e,n){let o=n?e.enumFwd:e.enumBack;if(o&&typeof t=="string")return o.get(t)??
552
- t;if(e.items&&Array.isArray(t))return t.map(s=>Je(s,e.items,n));let r=n?e.keysFwd:e.keysBack;if((r||e.props)&&Tc(t)){let s={};for(let[i,a]of Object.entries(t)){let c=r?.get(i)??i,l=n?i:c,u=e.props?.get(
553
- l);s[c]=u?Je(a,u,n):a;}return s}return t}function Tc(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function Ec(t){let e=Math.min(Ps,Math.max(1,wo(t,0))),n=[];for(let o=0;o<e;o++)n.push(So(t,
554
- o,0));return n}function wo(t,e){if(e>on)return 0;let n=t.enum?.length??0;for(let o of Object.values(t.properties??{}))n=Math.max(n,wo(o,e+1));return t.items&&(n=Math.max(n,wo(t.items,e+1))),n}function So(t,e,n){
555
- if(n>on)return null;if(t.enum&&t.enum.length>0)return t.enum[Math.min(e,t.enum.length-1)];if(Ms(t)){let o={};for(let[r,s]of Object.entries(t.properties??{}))o[r]=So(s,e,n+1);return o}if(Bs(t)){if(t.maxItems===
556
- 0)return [];let o=Math.max(1,t.minItems??1),r=t.maxItems!=null?Math.min(o,t.maxItems):o,s=t.items;return Array.from({length:r},()=>s?So(s,e,n+1):null)}switch(t.type){case "string":{if(t.maxLength===0)return "";
554
+ !o.has(u)&&(l=u);}o.add(l),r.set(i,l);});let s=new Set(t);for(let[i,a]of r)if(a!==i&&s.has(a))return null;return r}function We(t,e,n){let o=n?e.enumFwd:e.enumBack;if(o&&typeof t=="string")return o.get(t)??
555
+ t;if(e.items&&Array.isArray(t))return t.map(s=>We(s,e.items,n));let r=n?e.keysFwd:e.keysBack;if((r||e.props)&&Oc(t)){let s={};for(let[i,a]of Object.entries(t)){let c=r?.get(i)??i,l=n?i:c,u=e.props?.get(
556
+ l);s[c]=u?We(a,u,n):a;}return s}return t}function Oc(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function _c(t){let e=Math.min(Ns,Math.max(1,To(t,0))),n=[];for(let o=0;o<e;o++)n.push(Eo(t,
557
+ o,0));return n}function To(t,e){if(e>rn)return 0;let n=t.enum?.length??0;for(let o of Object.values(t.properties??{}))n=Math.max(n,To(o,e+1));return t.items&&(n=Math.max(n,To(t.items,e+1))),n}function Eo(t,e,n){
558
+ if(n>rn)return null;if(t.enum&&t.enum.length>0)return t.enum[Math.min(e,t.enum.length-1)];if($s(t)){let o={};for(let[r,s]of Object.entries(t.properties??{}))o[r]=Eo(s,e,n+1);return o}if(Fs(t)){if(t.maxItems===
559
+ 0)return [];let o=Math.max(1,t.minItems??1),r=t.maxItems!=null?Math.min(o,t.maxItems):o,s=t.items;return Array.from({length:r},()=>s?Eo(s,e,n+1):null)}switch(t.type){case "string":{if(t.maxLength===0)return "";
557
560
  let o=Math.max(1,t.minLength??1),r=t.maxLength!=null?Math.min(o,t.maxLength):o;return "x".repeat(r)}case "number":case "integer":{let o=t.minimum??1;return t.maximum!=null&&o>t.maximum&&(o=t.maximum),t.type===
558
- "integer"?Math.round(o):o}case "boolean":return true;case "null":return null;default:return null}}function To(t,e){if(e>on)throw new RangeError("schema too deep");if(t.pattern!=null)return true;for(let n of Object.
559
- values(t.properties??{}))if(To(n,e+1))return true;return !!(t.items&&To(t.items,e+1))}function Eo(t,e){if(t===e)return true;if(t===null||e===null||typeof t!="object"||typeof e!="object")return false;let n=Array.
560
- isArray(t),o=Array.isArray(e);if(n||o){if(!n||!o||t.length!==e.length)return false;for(let i=0;i<t.length;i++)if(!Eo(t[i],e[i]))return false;return true}let r=Object.keys(t),s=Object.keys(e);if(r.length!==s.length)
561
- return false;for(let i of r)if(!Object.prototype.hasOwnProperty.call(e,i)||!Eo(t[i],e[i]))return false;return true}var Rc="2026-08-14",js={"gpt-4o-mini":{deltaTokens:-16,salidaDelBrazoA:72,contrato:"triage (6 fields, long enums)",pares:8},"gpt-4o":{deltaTokens:3,salidaDelBrazoA:75,contrato:"triage (6 fields, long \
562
- enums)",pares:8}},Cc=pn(js);function Ic(t){return dn(js,Cc,t)}var rn=class t{deltas=new Map;static clave(e,n){return `${e}\0${n}`}recordar(e,n,o){this.deltas.set(t.clave(e,n),o);}resolver(e,n,o){if(o!=null&&
561
+ "integer"?Math.round(o):o}case "boolean":return true;case "null":return null;default:return null}}function Ro(t,e){if(e>rn)throw new RangeError("schema too deep");if(t.pattern!=null)return true;for(let n of Object.
562
+ values(t.properties??{}))if(Ro(n,e+1))return true;return !!(t.items&&Ro(t.items,e+1))}function Co(t,e){if(t===e)return true;if(t===null||e===null||typeof t!="object"||typeof e!="object")return false;let n=Array.
563
+ isArray(t),o=Array.isArray(e);if(n||o){if(!n||!o||t.length!==e.length)return false;for(let i=0;i<t.length;i++)if(!Co(t[i],e[i]))return false;return true}let r=Object.keys(t),s=Object.keys(e);if(r.length!==s.length)
564
+ return false;for(let i of r)if(!Object.prototype.hasOwnProperty.call(e,i)||!Co(t[i],e[i]))return false;return true}var Ac="2026-08-14",Vs={"gpt-4o-mini":{deltaTokens:-16,salidaDelBrazoA:72,contrato:"triage (6 fields, long enums)",pares:8},"gpt-4o":{deltaTokens:3,salidaDelBrazoA:75,contrato:"triage (6 fields, long \
565
+ enums)",pares:8}},Dc=fn(Vs);function Pc(t){return pn(Vs,Dc,t)}var sn=class t{deltas=new Map;static clave(e,n){return `${e}\0${n}`}recordar(e,n,o){this.deltas.set(t.clave(e,n),o);}resolver(e,n,o){if(o!=null&&
563
566
  Number.isFinite(o))return this.recordar(e,n,o),{deltaTokens:o,origen:"caller",procedencia:`measured by the caller for this contract on ${e}`};let r=this.deltas.get(t.clave(e,n));if(r!=null)return {deltaTokens:r,
564
- origen:"remembered",procedencia:`measured by the caller on an earlier request for this contract on ${e}`};let s=Ic(e);return s?{deltaTokens:s.deltaTokens,origen:"catalogue",procedencia:`measured by Bi\
565
- Velio on ${e} (${Rc}, ${s.pares} paired reps, ${s.contrato}, ${s.salidaDelBrazoA}-token answers) \u2014 NOT measured on YOUR contract`}:null}};var Io="[BiVelio Savings: resultado de herramienta antiguo recortado para bajar el coste; los resultados recientes viajan enteros.]",Oc=new TextEncoder;function _c(t){return Oc.encode(t).length}function Ac(t,e){if(!t)return null;let n=(e??"").trim();if(n===""||n==="{}"||n==="[]")return null;let o;try{let r=JSON.parse(n);if(r&&typeof r=="object"&&!Array.isArray(r)&&Object.keys(r).length===0)return null;
566
- o=Co(r);}catch{o=n;}return `${t} ${o}`}function Co(t){return t===null||typeof t!="object"?JSON.stringify(t)??"null":Array.isArray(t)?`[${t.map(Co).join(",")}]`:`{${Object.keys(t).sort().map(n=>`${JSON.stringify(
567
- n)}:${Co(t[n])}`).join(",")}}`}function $s(t){let e=new Map,n=new Map;for(let l of t)if(l.role==="assistant"&&l.toolCalls)for(let u of l.toolCalls)u.id&&(e.set(u.id,u.arguments),n.set(u.id,u.name));let o=[],
568
- r=new Map;for(let l=0;l<t.length;l++){let u=t[l];if(u.role!=="tool")continue;o.push(l);let d=(u.toolCallId?n.get(u.toolCallId):void 0)??u.name,m=u.toolCallId?e.get(u.toolCallId):void 0,f=Ac(d,m);f!==null&&
569
- r.set(l,f);}let s=o.length?o[o.length-1]:-1,i=new Map;for(let l of o){let u=r.get(l);if(u===void 0)continue;let d=i.get(u);(d===void 0||l>d)&&i.set(u,l);}let a=[],c=0;for(let l of o){if(l===s)continue;let u=r.
570
- get(l);if(u===void 0||i.get(u)===l)continue;let d=_c(t[l].content);d<1024||(a.push(l),c+=d);}return {indices:a,bytesOriginales:c}}function Fs(t,e){if(e.length===0)return t;let n=new Set(e);return t.map(
571
- (o,r)=>n.has(r)?{...o,content:Io}:o)}function Oo(t,e){if(e?.cacheTier)return e.cacheTier;let n=t.toLowerCase(),o=n.indexOf("/"),r=o>0?n.slice(0,o):"",s=o>=0?n.slice(o+1):n;return r==="openai"||r==="azure-openai"?mo:r==="anthropic"?ho(s):
572
- r==="google"||r==="google-vertex"?go:/^(gpt-|o[1-9](-|$)|chatgpt)/.test(s)?mo:s.startsWith("claude")?ho(s):s.startsWith("gemini")?go:Ts}function zs(t){let e=t.prefix!=null,n=bo({originalTokens:t.originalTokens,
567
+ origen:"remembered",procedencia:`measured by the caller on an earlier request for this contract on ${e}`};let s=Pc(e);return s?{deltaTokens:s.deltaTokens,origen:"catalogue",procedencia:`measured by Bi\
568
+ Velio on ${e} (${Ac}, ${s.pares} paired reps, ${s.contrato}, ${s.salidaDelBrazoA}-token answers) \u2014 NOT measured on YOUR contract`}:null}};var _o="[BiVelio Savings: resultado de herramienta antiguo recortado para bajar el coste; los resultados recientes viajan enteros.]",Lc=new TextEncoder;function Mc(t){return Lc.encode(t).length}function Bc(t,e){if(!t)return null;let n=(e??"").trim();if(n===""||n==="{}"||n==="[]")return null;let o;try{let r=JSON.parse(n);if(r&&typeof r=="object"&&!Array.isArray(r)&&Object.keys(r).length===0)return null;
569
+ o=Oo(r);}catch{o=n;}return `${t} ${o}`}function Oo(t){return t===null||typeof t!="object"?JSON.stringify(t)??"null":Array.isArray(t)?`[${t.map(Oo).join(",")}]`:`{${Object.keys(t).sort().map(n=>`${JSON.stringify(
570
+ n)}:${Oo(t[n])}`).join(",")}}`}function Us(t){let e=new Map,n=new Map;for(let l of t)if(l.role==="assistant"&&l.toolCalls)for(let u of l.toolCalls)u.id&&(e.set(u.id,u.arguments),n.set(u.id,u.name));let o=[],
571
+ r=new Map;for(let l=0;l<t.length;l++){let u=t[l];if(u.role!=="tool")continue;o.push(l);let d=(u.toolCallId?n.get(u.toolCallId):void 0)??u.name,f=u.toolCallId?e.get(u.toolCallId):void 0,m=Bc(d,f);m!==null&&
572
+ r.set(l,m);}let s=o.length?o[o.length-1]:-1,i=new Map;for(let l of o){let u=r.get(l);if(u===void 0)continue;let d=i.get(u);(d===void 0||l>d)&&i.set(u,l);}let a=[],c=0;for(let l of o){if(l===s)continue;let u=r.
573
+ get(l);if(u===void 0||i.get(u)===l)continue;let d=Mc(t[l].content);d<1024||(a.push(l),c+=d);}return {indices:a,bytesOriginales:c}}function qs(t,e){if(e.length===0)return t;let n=new Set(e);return t.map(
574
+ (o,r)=>n.has(r)?{...o,content:_o}:o)}function Ao(t,e){if(e?.cacheTier)return e.cacheTier;let n=t.toLowerCase(),o=n.indexOf("/"),r=o>0?n.slice(0,o):"",s=o>=0?n.slice(o+1):n;return r==="openai"||r==="azure-openai"?go:r==="anthropic"?bo(s):
575
+ r==="google"||r==="google-vertex"?yo:/^(gpt-|o[1-9](-|$)|chatgpt)/.test(s)?go:s.startsWith("claude")?bo(s):s.startsWith("gemini")?yo:Is}function Hs(t){let e=t.prefix!=null,n=xo({originalTokens:t.originalTokens,
573
576
  compressedTokens:t.compressedTokens,stablePrefixTokens:t.prefix?.stableTokens??0,prefixHitRate:t.prefix?.hitRate??0,tier:t.tier,...t.compressorCostTokens!=null?{compressorCostTokens:t.compressorCostTokens}:
574
577
  {}});if(e)return n;let o=t.tier.minimumCacheTokens;return o!=null&&t.originalTokens>=o&&t.compressedTokens<o?{...n,comprimir:false,razon:`compressing would drop the prompt out of the cacheable tier (${t.
575
- compressedTokens} < ${o}) and nobody has measured the prefix hit rate, so it cannot be claimed to pay for itself. Declare it in \`compressionEconomics.prefix\` to unlock the full decision`}:n}function Us(t){let e=u=>u/1e3*t.precio.inputPer1k,n=u=>u/1e3*t.precio.outputPer1k,o=e(t.promptTokens+t.descriptoresLigeros)+n(t.salidaDelSondeo),r=e(t.promptTokens+t.esquemasCompletos)+n(t.salidaFinal),
578
+ compressedTokens} < ${o}) and nobody has measured the prefix hit rate, so it cannot be claimed to pay for itself. Declare it in \`compressionEconomics.prefix\` to unlock the full decision`}:n}function Js(t){let e=u=>u/1e3*t.precio.inputPer1k,n=u=>u/1e3*t.precio.outputPer1k,o=e(t.promptTokens+t.descriptoresLigeros)+n(t.salidaDelSondeo),r=e(t.promptTokens+t.esquemasCompletos)+n(t.salidaFinal),
576
579
  s=o+e(t.promptTokens+t.esquemasDeLaSegunda)+n(t.salidaFinal),i=r-s,a=o,c=i>0&&i>=a,l;return i<=0?l=`descubrir cuesta m\xE1s de lo que ahorra: el prompt (${t.promptTokens} tokens) se paga dos veces y l\
577
580
  os esquemas que se evitan (${t.esquemasCompletos-t.esquemasDeLaSegunda}) no lo cubren`:c?l=`se evitan ${t.esquemasCompletos-t.esquemasDeLaSegunda} tokens de esquema en el peor caso, bastante para paga\
578
581
  r el prompt repetido y el sondeo`:l="la ganancia no cubre el coste de degradar: si el sondeo no elige, la petici\xF3n sale igual con todos los esquemas y el sondeo es coste puro",{aplicar:c,costeDeUnaLlamada:r,
579
- costeDeDosLlamadas:s,ganancia:i,perdidaSiDegrada:a,razon:l}}function qs(t){let n=(t.description??(Array.isArray(t.intents)?t.intents.join("; "):"")).trim().split(/\r?\n/,1)[0]??"",o=n.length>Vs?n.slice(
580
- 0,Vs-1).trimEnd()+"\u2026":n;return {id:t.id,intents:t.intents,risk:t.risk,...o?{description:o}:{}}}var Vs=200;function Hs(t,e,n){let o=new Map(e.map(c=>[c.id,c])),r=[],s=[],i=new Set;for(let c of t){let l=o.
581
- get(c);if(!l){s.push(c);continue}r.includes(l.id)||(r.push(l.id),l.risk==="read"&&i.size<Math.max(0,n)&&i.add(l.id));}return {tools:e.filter(c=>c.risk!=="read"||i.has(c.id)),reconocidos:r,ignorados:s}}function Ks(t,e){
582
- let n=0,o=[];for(let r of t)r.risk==="read"?o.push(r.tokens):n+=r.tokens;o.sort((r,s)=>s-r);for(let r of o.slice(0,Math.max(0,e)))n+=r;return n}var _o=true,Ys=new WeakSet;function Dc(t){typeof t=="object"&&t!==null&&Ys.add(t);}function Pc(t){return typeof t=="object"&&t!==null&&Ys.has(t)}function Gs(t){switch(t){case "none":return Lc();case "inval\
583
- id":return "BiVelio license key is not valid (it does not verify). Check you pasted the WHOLE key, and that it is the license key from your dashboard \u2014 not the `bvk_` service-account key, which goes in\
584
- `serviceAccountKey`. Keys: https://savings.bivelio.com/dashboard/install (license status: invalid)";case "revoked":return "BiVelio license has been revoked. If this is unexpected, check your billing st\
585
- atus at https://savings.bivelio.com/dashboard/account or write to support@bivelio.com (license status: revoked)";case "stale":return "BiVelio could not confirm your license with the control plane in tim\
586
- e \u2014 this is a connectivity problem, not a billing one: your license is still valid. Allow outbound HTTPS to your `licenseServerUrl` (https://savings.bivelio.com by default) and retry. (license status:\
587
- stale)";case "expired":case "grace":return `BiVelio license is not active. Renew your subscription at https://savings.bivelio.com/dashboard/account (license status: ${t})`;default:return `BiVelio license\
588
- is not active. See https://savings.bivelio.com/dashboard/account${t?` (license status: ${t})`:""}`}}function Lc(){return "BiVelio license required: none was configured. Pass { licenseKey } \u2014 the signe\
589
- d token from your subscription, verified offline. This published package has no unlicensed mode. Copy your key and a ready-to-paste snippet at https://savings.bivelio.com/dashboard/install (license st\
590
- atus: none)"}function Mc(){return "licenseGate must implement isActive(): a gate that cannot prove the license is live is refused. In this published package an injected gate is not a licensing path at \
591
- all \u2014 pass { licenseKey } instead, from https://savings.bivelio.com/dashboard/install (license status: invalid)"}var sn=class{deps;config;now;generateId;contratosQueIncumplen;verjaDeCache=new en;verjaDeCascada;memoriaDelCodebook=new rn;constructor(e){
592
- this.config=e,this.deps=ws(e),this.now=e.now??(()=>Date.now()),this.generateId=e.generateId??(()=>mn()),this.contratosQueIncumplen=e.constraintMemory??new Set,this.verjaDeCascada=new tn(e.modelCascade?.
582
+ costeDeDosLlamadas:s,ganancia:i,perdidaSiDegrada:a,razon:l}}function Ws(t){let n=(t.description??(Array.isArray(t.intents)?t.intents.join("; "):"")).trim().split(/\r?\n/,1)[0]??"",o=n.length>Ks?n.slice(
583
+ 0,Ks-1).trimEnd()+"\u2026":n;return {id:t.id,intents:t.intents,risk:t.risk,...o?{description:o}:{}}}var Ks=200;function Gs(t,e,n){let o=new Map(e.map(c=>[c.id,c])),r=[],s=[],i=new Set;for(let c of t){let l=o.
584
+ get(c);if(!l){s.push(c);continue}r.includes(l.id)||(r.push(l.id),l.risk==="read"&&i.size<Math.max(0,n)&&i.add(l.id));}return {tools:e.filter(c=>c.risk!=="read"||i.has(c.id)),reconocidos:r,ignorados:s}}function Ys(t,e){
585
+ let n=0,o=[];for(let r of t)r.risk==="read"?o.push(r.tokens):n+=r.tokens;o.sort((r,s)=>s-r);for(let r of o.slice(0,Math.max(0,e)))n+=r;return n}var Do=true,ei=new WeakSet;function Nc(t){typeof t=="object"&&t!==null&&ei.add(t);}function jc(t){return typeof t=="object"&&t!==null&&ei.has(t)}function Qs(t,e){switch(t){case "none":return $c();case "inv\
586
+ alid":return e==="malformed"?"BiVelio license key is not a license token (malformed): a BiVelio license key looks like `xxxx.yyyy.zzzz` \u2014 three dot-separated base64url segments, several hundred charac\
587
+ ters long \u2014 did you paste the `bvk_` service-account key by mistake? That one goes in `serviceAccountKey`; the license key is the other value on https://savings.bivelio.com/dashboard/install (license \
588
+ status: invalid)":"BiVelio license key is not valid (it does not verify). Check you pasted the WHOLE key, and that it is the license key from your dashboard \u2014 not the `bvk_` service-account key, which\
589
+ goes in `serviceAccountKey`. Keys: https://savings.bivelio.com/dashboard/install (license status: invalid)";case "revoked":return "BiVelio license has been revoked. If this is unexpected, check your bi\
590
+ lling status at https://savings.bivelio.com/dashboard/account or write to support@bivelio.com (license status: revoked)";case "stale":return "BiVelio could not confirm your license with the control plan\
591
+ e in time \u2014 this is a connectivity problem, not a billing one: your license is still valid. Allow outbound HTTPS to your `licenseServerUrl` (https://savings.bivelio.com by default) and retry. (license\
592
+ status: stale)";case "expired":case "grace":return `BiVelio license is not active. Renew your subscription at https://savings.bivelio.com/dashboard/account (license status: ${t})`;default:return `BiVelio\
593
+ license is not active. See https://savings.bivelio.com/dashboard/account${t?` (license status: ${t})`:""}`}}function $c(){return "BiVelio license required: none was configured. Pass { licenseKey } \u2014 t\
594
+ he signed token from your subscription, verified offline. This published package has no unlicensed mode. Copy your key and a ready-to-paste snippet at https://savings.bivelio.com/dashboard/install (li\
595
+ cense status: none)"}function Fc(){return "licenseGate must implement isActive(): a gate that cannot prove the license is live is refused. In this published package an injected gate is not a licensing \
596
+ path at all \u2014 pass { licenseKey } instead, from https://savings.bivelio.com/dashboard/install (license status: invalid)"}var an=class{deps;config;now;generateId;contratosQueIncumplen;verjaDeCache=new tn;verjaDeCascada;memoriaDelCodebook=new sn;constructor(e){
597
+ this.config=e,this.deps=Rs(e),this.now=e.now??(()=>Date.now()),this.generateId=e.generateId??(()=>hn()),this.contratosQueIncumplen=e.constraintMemory??new Set,this.verjaDeCascada=new nn(e.modelCascade?.
593
598
  exploration!=null?{exploracion:e.modelCascade.exploration}:{});}async generate(e){this.assertLicensed();let n={llamadas:0,falloDelProveedor:false};try{return await this.generateOptimized(e,n)}catch(o){if(o instanceof
594
- De||this.config.failOpen===false||n.falloDelProveedor||n.llamadas>0||Pc(o))throw o;return await this.failOpenDirect(e,o)}}async llamarProveedor(e,n){n.llamadas+=1;try{return await this.config.provider.generate(
595
- e)}catch(o){throw n.falloDelProveedor=true,o}}decidirMarcadoDeCache(e,n,o,r,s,i,a){let c={marcar:false,huella:"",mensajesDePrefijo:0,cacheWriteMultiplier:1},l=Uc(n,this.config.compressionEconomics);if(!l)return a.
599
+ De||this.config.failOpen===false||n.falloDelProveedor||n.llamadas>0||jc(o))throw o;return await this.failOpenDirect(e,o)}}async llamarProveedor(e,n){n.llamadas+=1;try{return await this.config.provider.generate(
600
+ e)}catch(o){throw n.falloDelProveedor=true,o}}decidirMarcadoDeCache(e,n,o,r,s,i,a){let c={marcar:false,huella:"",mensajesDePrefijo:0,cacheWriteMultiplier:1},l=Wc(n,this.config.compressionEconomics);if(!l)return a.
596
601
  record("prefix-cache","skipped",{reason:`no cache read discount for model "${n}" (unrecognised provider, or a declared tier that does not discount reads): not claiming a cacheable prefix`}),c;if(!r.setIsStable)
597
602
  return a.record("prefix-cache","skipped",{reason:"the tool SET is selected per request; tools render first, so the prefix cannot hit. Pruning wins here (it is a measured saving); pass the tools you wa\
598
603
  nt fixed."}),c;if(s)return a.record("prefix-cache","skipped",{reason:"savings.toolDiscovery is on: which schemas travel is decided by a non-deterministic probe, so the tool block \u2014 which renders first\
599
604
  \u2014 varies across requests that would share a prefix fingerprint. Marking would pay the 1.25x write premium for a prefix that cannot hit. Turn tool discovery off to reclaim the prefix cache."}),c;
600
- if(i<=0)return c;let u=o.slice(0,i),d=this.tokensFor(this.assemblePromptText(u,r.tools),e),m=this.tokensFor(this.assemblePromptText(o,r.tools),e),f=ie(Se({model:n,tools:(r.tools??[]).map(g=>g.id),prefijo:u.
601
- map(g=>`${g.role}:${g.content}`)})),h=this.verjaDeCache.decidir(f,{totalTokens:m,stablePrefixTokens:d,tier:l});return a.record("prefix-cache",h.marcar?"marked":"skipped",{reason:h.razon,stablePrefixTokens:d,
602
- breakEvenHitRate:h.umbral,observedHitRate:h.observada}),h.marcar?{marcar:true,huella:f,mensajesDePrefijo:i,cacheWriteMultiplier:l.cacheWriteMultiplier}:c}decidirCascada(e,n,o,r){let s=o.modelCascade??"o\
605
+ if(i<=0)return c;let u=o.slice(0,i),d=this.tokensFor(this.assemblePromptText(u,r.tools),e),f=this.tokensFor(this.assemblePromptText(o,r.tools),e),m=ie(Se({model:n,tools:(r.tools??[]).map(g=>g.id),prefijo:u.
606
+ map(g=>`${g.role}:${g.content}`)})),h=this.verjaDeCache.decidir(m,{totalTokens:f,stablePrefixTokens:d,tier:l});return a.record("prefix-cache",h.marcar?"marked":"skipped",{reason:h.razon,stablePrefixTokens:d,
607
+ breakEvenHitRate:h.umbral,observedHitRate:h.observada}),h.marcar?{marcar:true,huella:m,mensajesDePrefijo:i,cacheWriteMultiplier:l.cacheWriteMultiplier}:c}decidirCascada(e,n,o,r){let s=o.modelCascade??"o\
603
608
  ff",i={modo:"off",modeloPedido:e.model,modeloServido:e.model,candidato:null,enruta:false,elegible:false,razon:"the model cascade is off",fuerza:"none",bucket:"",economia:null,observada:null,muestras:0,precioBarato:null,
604
- tasaDeMuestreo:0};if(s==="off")return i;let a=Os({schema:e.response?.schema,tools:e.tools}),c=Is(e.model,this.config.modelCascade?.pairs??xo),l=this.precioConocido(e.model),u=c?this.precioConocido(c):
605
- void 0,d=Cs(u,l),m=ie(Se({tenant:n.tenantId,scope:n.authorizationScope,contract:n.contractId,schema:n.schemaVersion,fuerte:e.model,barato:c,tools:n.toolsetHash})),f=this.verjaDeCascada.estado(m),h={modo:s,
606
- modeloPedido:e.model,modeloServido:e.model,candidato:c,enruta:false,elegible:false,razon:a.razon,fuerza:a.fuerza,bucket:m,economia:d,observada:f&&f.enrutadas>0?f.escaladas/f.enrutadas:null,muestras:f?.enrutadas??
609
+ tasaDeMuestreo:0};if(s==="off")return i;let a=Ps({schema:e.response?.schema,tools:e.tools}),c=Ds(e.model,this.config.modelCascade?.pairs??vo),l=this.precioConocido(e.model),u=c?this.precioConocido(c):
610
+ void 0,d=As(u,l),f=ie(Se({tenant:n.tenantId,scope:n.authorizationScope,contract:n.contractId,schema:n.schemaVersion,fuerte:e.model,barato:c,tools:n.toolsetHash})),m=this.verjaDeCascada.estado(f),h={modo:s,
611
+ modeloPedido:e.model,modeloServido:e.model,candidato:c,enruta:false,elegible:false,razon:a.razon,fuerza:a.fuerza,bucket:f,economia:d,observada:m&&m.enrutadas>0?m.escaladas/m.enrutadas:null,muestras:m?.enrutadas??
607
612
  0,precioBarato:u??null,tasaDeMuestreo:0},g=b=>(r.record("model-cascade",s==="on"?"not routed":"not eligible",{reason:b}),{...h,razon:b});if(!a.elegible)return g(a.razon);if(!c)return g(`no cheaper mod\
608
613
  el is paired with "${e.model}"; declare one in createSavingsLayer({ modelCascade: { pairs } }) if your provider has one`);if(!d){let b=[...this.precioConocido(e.model)?[]:[e.model],...u?[]:[c]];return g(
609
- `no known price for ${b.map(y=>`"${y}"`).join(" or ")||"this pair"}, so the arithmetic that decides whether routing pays cannot be run. The illustrative default price is deliberately NOT used here: it\
614
+ `no known price for ${b.map(x=>`"${x}"`).join(" or ")||"this pair"}, so the arithmetic that decides whether routing pays cannot be run. The illustrative default price is deliberately NOT used here: it\
610
615
  would approve a pair nobody has priced. Pass \`costModels\` for both models to enable the cascade for them`)}if(!d.viable)return g(d.razon);let p=Math.min(1,Math.max(0,this.config.modelCascade?.shadowSampleRate??
611
- 0));if(s==="shadow")return r.record("model-cascade","shadow",{candidateModel:c,costRatio:d.r,breakEvenEscalationRate:d.equilibrio,verifier:a.fuerza,workload:m,note:"measuring only: the request goes to\
612
- the model you asked for. The escalation rate is not a quality score \u2014 a well-formed answer with wrong content passes the verifier."}),{...h,elegible:true,razon:a.razon,tasaDeMuestreo:p};let x=this.
613
- verjaDeCascada.decidir(m,d);return x.enrutar?(this.avisar(`cascada:${e.model}->${c}`,`[bv-sala] model cascade ON: requests for "${e.model}" may be answered by "${c}" when a deterministic gate accepts \
616
+ 0));if(s==="shadow")return r.record("model-cascade","shadow",{candidateModel:c,costRatio:d.r,breakEvenEscalationRate:d.equilibrio,verifier:a.fuerza,workload:f,note:"measuring only: the request goes to\
617
+ the model you asked for. The escalation rate is not a quality score \u2014 a well-formed answer with wrong content passes the verifier."}),{...h,elegible:true,razon:a.razon,tasaDeMuestreo:p};let y=this.
618
+ verjaDeCascada.decidir(f,d);return y.enrutar?(this.avisar(`cascada:${e.model}->${c}`,`[bv-sala] model cascade ON: requests for "${e.model}" may be answered by "${c}" when a deterministic gate accepts \
614
619
  the answer. The gate checks the SHAPE of the answer against your output contract, never its meaning, so a well-formed answer with wrong content is served and counted as a success. report.model always \
615
- names the model that answered, and report.qualityStatus reads "bounded_degradation".`),r.record("model-cascade","routed",{candidateModel:c,costRatio:d.r,breakEvenEscalationRate:d.equilibrio,observedEscalationRate:x.
616
- observada,verifier:a.fuerza,workload:m,reason:x.razon}),{...h,modeloServido:c,enruta:true,elegible:true,razon:x.razon,observada:x.observada,muestras:x.muestras,tasaDeMuestreo:0}):(r.record("model-cascade",
617
- "off (gate)",{reason:x.razon,observedEscalationRate:x.observada,breakEvenEscalationRate:d.equilibrio}),{...h,elegible:true,razon:x.razon,observada:x.observada,muestras:x.muestras})}devOpen(){return false}assertLicensed(){
618
- if(this.devOpen())return;let e=this.config.licenseGate;if(e&&typeof e.isActive=="function"){if(e.isActive())return;let n=typeof e.status=="function"?e.status():void 0;throw new De(Gs(n),n)}throw e?new De(
619
- Mc(),"invalid"):new De(Gs("none"),"none")}avisar(e,n){this.config.silenceWarnings||G(e,n);}avisarDeTruncado(e,n,o,r,s){let i=e.response?.maxOutputTokens,a=ht(e)||"(sin contractId)",c=s?" La capa lo ha \
620
- APUNTADO: las siguientes peticiones de este contrato llevar\xE1n sus l\xEDmites de valor escritos en el prompt, que es lo \xFAnico que puede corregirlo sin tocarte el tope. Si aun as\xED se corta, es que la tarea\
621
- no cabe en el contrato: ensancha el esquema y sube el tope con \xE9l.":"",l=r===null?" El esquema no acota la respuesta (falta `maxLength`/`maxItems`), as\xED que no hay forma de saber de antemano cu\xE1nt\
622
- o necesita: ac\xF3talo y el tope deja de ser una apuesta.":i==null?` El contrato autoriza ~${r} tokens y esta petici\xF3n no declara tope, as\xED que quien cort\xF3 fue un tope del PROVEEDOR (la API de Anthrop\
623
- ic exige \`max_tokens\` y el adaptador manda 4096 por defecto). Declara \`maxOutputTokens\` y el corte deja de ser una sorpresa.`:r>i?` El contrato autoriza respuestas de hasta ~${r} tokens con este m\
624
- odelo (lo que permiten sus \`maxLength\`/\`maxItems\`) y el tope son ${i}: ninguna respuesta que use lo que el propio esquema permite cabe. Un tope calibrado con otro modelo NO se hereda \u2014 el esquema \
625
- acota CARACTERES, que son iguales en todas partes, y el tope acota TOKENS, que son distintos en cada tokenizador.`:` El contrato autoriza ~${r} tokens y el tope son ${i}, as\xED que el tope no es el prob\
626
- lema: este modelo est\xE1 escribiendo m\xE1s de lo que su propio esquema permite (ning\xFAn modo estructurado impone \`maxLength\`).${c}`;this.avisar(`salida-truncada:${a}:${n}`,`[bvsala] La respuesta\
627
- se cort\xF3 al agotar \`maxOutputTokens\`${i!=null?` (${i})`:""} con el modelo ${n} y el contrato \xAB${a}\xBB: el proveedor devolvi\xF3 finish_reason "length" y ${o} tokens de salida, as\xED que el JSO\
628
- N no valida. NO se reintenta: con el mismo tope volver\xEDa a cortarse y ser\xEDa una llamada pagada para el mismo fallo.${l}`);}avisarDePalancasSinConfigurar(e){this.config.silenceWarnings||((e.compression===
629
- true||e.compression==="auto")&&!this.config.compressor&&this.avisar("palanca-sin-compresor","[bv-sala] se pidi\xF3 `savings.compression` pero esta capa no tiene compresor, as\xED que NO se comprime nada: el c\
630
- ontexto largo viaja y se paga entero. En el informe, `report.compression` sale AUSENTE y `tokens.eliminatedInput` a 0 \u2014 lo mismo que se ve cuando no hab\xEDa nada que comprimir. El compresor es un sideca\
631
- r porque a\xF1ade latencia y c\xF3mputo que solo usted debe decidir pagar: ench\xFAfelo con `createSavingsLayer({ compressor })`, cualquier objeto con `compress({ text })`. Si su plan no incluye `long_context\
632
- _compression`, har\xE1 falta adem\xE1s esa funci\xF3n. El resto de la capa sigue ahorrando igual."),e.semanticCache&&!this.deps.semanticCache&&this.avisar("palanca-sin-cache-semantica",'[bv-sala] se p\
633
- idi\xF3 `savings.semanticCache` pero esta capa no tiene cach\xE9 sem\xE1ntica, as\xED que toda pregunta reformulada saldr\xE1 `cache: "miss"` y se pagar\xE1 al proveedor otra vez. No viene por defecto porque necesita u\
634
- n embebedor, que es coste y proveedor suyos: ench\xFAfela con `createSavingsLayer({ semanticCache: new InMemorySemanticCache({ embed }) })`. La cach\xE9 exacta y el resto de la capa siguen funcionando.'));}async generateOptimized(e,n={
635
- llamadas:0,falloDelProveedor:false}){this.assertLicensed();let o=new rt(this.now),r=new je,s=kn(e),i=Sn(s),a=e.savings??{};this.avisarDePalancasSinConfigurar(a);let c=this.decidirCascada(e,s,a,o),l=this.
636
- costModelFor(c.modeloServido);o.record("canonicalize","done",{tenant:s.tenantId,contract:s.contractId}),o.record("policy",i.reasons.join("; ")||"no restrictions",{allowExactCache:i.allowExactCache,allowSemanticCache:i.
637
- allowSemanticCache});let u=this.tokensFor(this.assembleBaselinePrompt(e),e),d=e.response?.maxOutputTokens??256;if(r.baselineInput=u,r.baselineOutput=d,r.baselineTools=e.tools?.length??0,a.deterministicResolvers!==
638
- false){let g=this.deps.resolvers.try(s);if(g)return r.avoidCall(u,this.tokensFor(g.text,e)),o.record("resolver",g.resolver,{avoided:true}),this.finish(e,s,{text:g.text,data:g.data,storedAtMs:this.now()},"d\
639
- eterministic",r,l,o,ft(),mt(),void 0,void 0,void 0,void 0,void 0,this.informeDeCascada(c,{servedModel:e.model}))}let m=wn(s,{servedModel:c.modeloServido});if(i.allowExactCache&&a.exactCache!==false){let g=await this.
640
- deps.exactCache.get(m);if(g)return r.avoidCall(u,this.tokensFor(g.text,e)),o.record("exact-cache","hit",{ageMs:this.now()-g.storedAtMs}),this.finish(e,s,g,"exact",r,l,o,ft(),mt(),this.now()-g.storedAtMs,
641
- void 0,void 0,void 0,void 0,this.informeDeCascada(c));o.record("exact-cache","miss");}let f=Uo(s,{servedModel:c.modeloServido,deferrable:a.deferrable===true,toolDiscovery:a.toolDiscovery===true,...e.response?.
642
- maxOutputTokens!=null?{maxOutputTokens:e.response.maxOutputTokens}:{}}),h=async()=>{try{return await this.expensivePath(n,e,s,i,a,r,l,o,m,u,c)}catch(g){throw (n.falloDelProveedor||n.llamadas>0)&&Dc(g),
643
- g}};if(i.allowSingleflight&&a.singleflight!==false){let{value:g,coalesced:p}=await this.deps.singleflight.run(f,h);return p?(o.record("singleflight","coalesced",{key:f}),this.asCoalescedFollower(g,u,this.
644
- tokensFor(g.text??"",e),l,e)):g}return h()}async expensivePath(e,n,o,r,s,i,a,c,l,u,d){let m=this.entitled("semantic_cache");if(r.allowSemanticCache&&s.semanticCache&&this.deps.semanticCache&&!m&&c.record(
645
- "semantic-cache","degraded: feature not licensed (free tier)"),r.allowSemanticCache&&s.semanticCache&&this.deps.semanticCache&&m){let v=await this.deps.semanticCache.find(o);if(v)return i.avoidCall(u,
646
- this.tokensFor(v.record.answer.text,n)),c.record("semantic-cache","hit",{confidence:v.confidence,similarity:v.similarity}),this.finish(n,o,v.record.answer,"semantic",i,a,c,ft(),mt(),v.ageMs,v.confidence,
647
- void 0,void 0,void 0,this.informeDeCascada(d,{servedModel:n.model}));c.record("semantic-cache","miss");}let f=s.router===false,h=f?ft():this.deps.router.classify(o);c.record("router",h.executionClass,{confidence:h.
648
- confidence,reason:h.reason});let g=f?this.deps.toolSelector.passthrough(n.tools):this.deps.toolSelector.select(o.normalizedText,n.tools,h.executionClass,o.toolsetHash);if(i.actualTools=g.tools.length,
649
- g.droppedIds.length){let v=new Set(g.droppedIds),A=(n.tools??[]).filter(M=>v.has(M.id)).reduce((M,U)=>M+this.tokensFor(Ao(U),n),0);i.eliminate(A),c.record("tool-selector",g.reason,{dropped:g.droppedIds,
650
- eliminatedTokens:A});}i.baselineRetrieval=h.rounds;let p=await Yo({execution:h.executionClass,query:o.normalizedText,maxRounds:n.retrieval?.maxRounds??h.rounds,maxDocuments:n.retrieval?.maxDocuments??5},
651
- {...this.config.retriever?{retriever:this.config.retriever}:{},...this.config.reranker?{reranker:this.config.reranker}:{}});i.actualRetrieval=p.rounds,p.retrievedCount>0&&c.record("retrieval",`kept ${p.
652
- keptCount}/${p.retrievedCount}`,{rounds:p.rounds});let x=mt(),b=[...n.messages],y=Po(n.messages),T=false,E=p.docs.length>0?{role:"system",content:`Retrieved context \u2014 answer using only this evidence and \
653
- cite sources by [id]:
620
+ names the model that answered, and report.qualityStatus reads "bounded_degradation".`),r.record("model-cascade","routed",{candidateModel:c,costRatio:d.r,breakEvenEscalationRate:d.equilibrio,observedEscalationRate:y.
621
+ observada,verifier:a.fuerza,workload:f,reason:y.razon}),{...h,modeloServido:c,enruta:true,elegible:true,razon:y.razon,observada:y.observada,muestras:y.muestras,tasaDeMuestreo:0}):(r.record("model-cascade",
622
+ "off (gate)",{reason:y.razon,observedEscalationRate:y.observada,breakEvenEscalationRate:d.equilibrio}),{...h,elegible:true,razon:y.razon,observada:y.observada,muestras:y.muestras})}devOpen(){return false}assertLicensed(){
623
+ if(this.devOpen())return;let e=this.config.licenseGate;if(e&&typeof e.isActive=="function"){if(e.isActive())return;let n=typeof e.status=="function"?e.status():void 0,o=typeof e.reason=="function"?e.reason():
624
+ void 0;throw new De(Qs(n,o),n)}throw e?new De(Fc(),"invalid"):new De(Qs("none"),"none")}avisar(e,n){this.config.silenceWarnings||G(e,n);}avisarDeTruncado(e,n,o,r,s){let i=e.response?.maxOutputTokens,a=gt(
625
+ e)||"(sin contractId)",c=s?" La capa lo ha APUNTADO: las siguientes peticiones de este contrato llevar\xE1n sus l\xEDmites de valor escritos en el prompt, que es lo \xFAnico que puede corregirlo sin tocarte el\
626
+ tope. Si aun as\xED se corta, es que la tarea no cabe en el contrato: ensancha el esquema y sube el tope con \xE9l.":"",l=r===null?" El esquema no acota la respuesta (falta `maxLength`/`maxItems`), a\
627
+ s\xED que no hay forma de saber de antemano cu\xE1nto necesita: ac\xF3talo y el tope deja de ser una apuesta.":i==null?` El contrato autoriza ~${r} tokens y esta petici\xF3n no declara tope, as\xED que quie\
628
+ n cort\xF3 fue un tope del PROVEEDOR (la API de Anthropic exige \`max_tokens\` y el adaptador manda 4096 por defecto). Declara \`maxOutputTokens\` y el corte deja de ser una sorpresa.`:r>i?` El contra\
629
+ to autoriza respuestas de hasta ~${r} tokens con este modelo (lo que permiten sus \`maxLength\`/\`maxItems\`) y el tope son ${i}: ninguna respuesta que use lo que el propio esquema permite cabe. Un to\
630
+ pe calibrado con otro modelo NO se hereda \u2014 el esquema acota CARACTERES, que son iguales en todas partes, y el tope acota TOKENS, que son distintos en cada tokenizador.`:` El contrato autoriza ~${r}\
631
+ tokens y el tope son ${i}, as\xED que el tope no es el problema: este modelo est\xE1 escribiendo m\xE1s de lo que su propio esquema permite (ning\xFAn modo estructurado impone \`maxLength\`).${c}`;this.
632
+ avisar(`salida-truncada:${a}:${n}`,`[bvsala] La respuesta se cort\xF3 al agotar \`maxOutputTokens\`${i!=null?` (${i})`:""} con el modelo ${n} y el contrato \xAB${a}\xBB: el proveedor devolvi\xF3 finish_reas\
633
+ on "length" y ${o} tokens de salida, as\xED que el JSON no valida. NO se reintenta: con el mismo tope volver\xEDa a cortarse y ser\xEDa una llamada pagada para el mismo fallo.${l}`);}avisarDePalancasSinConfigurar(e){
634
+ this.config.silenceWarnings||((e.compression===true||e.compression==="auto")&&!this.config.compressor&&this.avisar("palanca-sin-compresor","[bv-sala] se pidi\xF3 `savings.compression` pero esta capa no tie\
635
+ ne compresor, as\xED que NO se comprime nada: el contexto largo viaja y se paga entero. En el informe, `report.compression` sale AUSENTE y `tokens.eliminatedInput` a 0 \u2014 lo mismo que se ve cuando no hab\xED\
636
+ a nada que comprimir. El compresor es un sidecar porque a\xF1ade latencia y c\xF3mputo que solo usted debe decidir pagar: ench\xFAfelo con `createSavingsLayer({ compressor })`, cualquier objeto con `compress(\
637
+ { text })`. Si su plan no incluye `long_context_compression`, har\xE1 falta adem\xE1s esa funci\xF3n. El resto de la capa sigue ahorrando igual."),e.semanticCache&&!this.deps.semanticCache&&this.avisar(
638
+ "palanca-sin-cache-semantica",'[bv-sala] se pidi\xF3 `savings.semanticCache` pero esta capa no tiene cach\xE9 sem\xE1ntica, as\xED que toda pregunta reformulada saldr\xE1 `cache: "miss"` y se pagar\xE1 al proveedor otr\
639
+ a vez. No viene por defecto porque necesita un embebedor, que es coste y proveedor suyos: ench\xFAfela con `createSavingsLayer({ semanticCache: new InMemorySemanticCache({ embed }) })`. La cach\xE9 exacta y\
640
+ el resto de la capa siguen funcionando.'));}async generateOptimized(e,n={llamadas:0,falloDelProveedor:false}){this.assertLicensed();let o=new st(this.now),r=new je,s=wn(e),i=Tn(s),a=e.savings??{};this.avisarDePalancasSinConfigurar(
641
+ a);let c=this.decidirCascada(e,s,a,o),l=this.costModelFor(c.modeloServido);o.record("canonicalize","done",{tenant:s.tenantId,contract:s.contractId}),o.record("policy",i.reasons.join("; ")||"no restric\
642
+ tions",{allowExactCache:i.allowExactCache,allowSemanticCache:i.allowSemanticCache});let u=this.tokensFor(this.assembleBaselinePrompt(e),e),d=e.response?.maxOutputTokens??256;if(r.baselineInput=u,r.baselineOutput=
643
+ d,r.baselineTools=e.tools?.length??0,a.deterministicResolvers!==false){let g=this.deps.resolvers.try(s);if(g)return r.avoidCall(u,this.tokensFor(g.text,e)),o.record("resolver",g.resolver,{avoided:true}),this.
644
+ finish(e,s,{text:g.text,data:g.data,storedAtMs:this.now()},"deterministic",r,l,o,mt(),ht(),void 0,void 0,void 0,void 0,void 0,this.informeDeCascada(c,{servedModel:e.model}))}let f=Sn(s,{servedModel:c.
645
+ modeloServido});if(i.allowExactCache&&a.exactCache!==false){let g=await this.deps.exactCache.get(f);if(g)return r.avoidCall(u,this.tokensFor(g.text,e)),o.record("exact-cache","hit",{ageMs:this.now()-g.storedAtMs}),
646
+ this.finish(e,s,g,"exact",r,l,o,mt(),ht(),this.now()-g.storedAtMs,void 0,void 0,void 0,void 0,this.informeDeCascada(c));o.record("exact-cache","miss");}let m=Ho(s,{servedModel:c.modeloServido,deferrable:a.
647
+ deferrable===true,toolDiscovery:a.toolDiscovery===true,...e.response?.maxOutputTokens!=null?{maxOutputTokens:e.response.maxOutputTokens}:{}}),h=async()=>{try{return await this.expensivePath(n,e,s,i,a,r,l,
648
+ o,f,u,c)}catch(g){throw (n.falloDelProveedor||n.llamadas>0)&&Nc(g),g}};if(i.allowSingleflight&&a.singleflight!==false){let{value:g,coalesced:p}=await this.deps.singleflight.run(m,h);return p?(o.record("si\
649
+ ngleflight","coalesced",{key:m}),this.asCoalescedFollower(g,u,this.tokensFor(g.text??"",e),l,e)):g}return h()}async expensivePath(e,n,o,r,s,i,a,c,l,u,d){let f=this.entitled("semantic_cache");if(r.allowSemanticCache&&
650
+ s.semanticCache&&this.deps.semanticCache&&!f&&c.record("semantic-cache","degraded: feature not licensed (free tier)"),r.allowSemanticCache&&s.semanticCache&&this.deps.semanticCache&&f){let v=await this.
651
+ deps.semanticCache.find(o);if(v)return i.avoidCall(u,this.tokensFor(v.record.answer.text,n)),c.record("semantic-cache","hit",{confidence:v.confidence,similarity:v.similarity}),this.finish(n,o,v.record.
652
+ answer,"semantic",i,a,c,mt(),ht(),v.ageMs,v.confidence,void 0,void 0,void 0,this.informeDeCascada(d,{servedModel:n.model}));c.record("semantic-cache","miss");}let m=s.router===false,h=m?mt():this.deps.router.
653
+ classify(o);c.record("router",h.executionClass,{confidence:h.confidence,reason:h.reason});let g=m?this.deps.toolSelector.passthrough(n.tools):this.deps.toolSelector.select(o.normalizedText,n.tools,h.executionClass,
654
+ o.toolsetHash);if(i.actualTools=g.tools.length,g.droppedIds.length){let v=new Set(g.droppedIds),A=(n.tools??[]).filter(M=>v.has(M.id)).reduce((M,U)=>M+this.tokensFor(Po(U),n),0);i.eliminate(A),c.record(
655
+ "tool-selector",g.reason,{dropped:g.droppedIds,eliminatedTokens:A});}i.baselineRetrieval=this.config.retriever?h.rounds:0;let p=await Qo({execution:h.executionClass,query:o.normalizedText,maxRounds:n.retrieval?.
656
+ maxRounds??h.rounds,maxDocuments:n.retrieval?.maxDocuments??5},{...this.config.retriever?{retriever:this.config.retriever}:{},...this.config.reranker?{reranker:this.config.reranker}:{}});i.actualRetrieval=
657
+ p.rounds,p.retrievedCount>0&&c.record("retrieval",`kept ${p.keptCount}/${p.retrievedCount}`,{rounds:p.rounds});let y=ht(),b=[...n.messages],x=Mo(n.messages),T=false,E=p.docs.length>0?{role:"system",content:`\
658
+ Retrieved context \u2014 answer using only this evidence and cite sources by [id]:
654
659
 
655
660
  `+p.docs.map((v,A)=>`[${v.source??v.id??`doc${A+1}`}]
656
661
  ${v.text}`).join(`
657
662
 
658
- `)}:null,R=ht(n),C=n.response?.maxOutputTokens!=null?Math.floor(n.response.maxOutputTokens*3.2):null,D=this.contratosQueIncumplen.has(R)?Do(n.response?.schema,"",C):"";if(D&&gt(b,{role:"system",content:`\
659
- JSON limits (not API-enforced): ${D}`}),n.structuredData!==void 0){let v=JSON.stringify(n.structuredData),A=this.tokensFor(v,n);if(s.serialization!==false){x=this.deps.formatSelector.choose(n.structuredData,
660
- {model:n.model,...n.tokenizer?{tokenizer:n.tokenizer}:{}});let M=this.tokensFor(x.encoded+x.instruction,n);i.compress(A,M),gt(b,{role:"system",content:(x.instruction?x.instruction+`
661
- `:"")+x.encoded}),c.record("serialization",x.chosen,{reason:x.reason,jsonTokens:A,chosenTokens:M});}else gt(b,{role:"system",content:v}),c.record("serialization","json-compact",{reason:"format selector\
662
- disabled; sent compact JSON"});}if(E&&gt(b,E),(s.compression===true||s.compression==="auto")&&r.allowCompression&&this.config.compressor&&this.entitled("long_context_compression")){let v=this.config.compressionEconomics??
663
- {},A=Oo(n.model,v),M={compressorCostTokens:v.compressorCostTokens??0,...v.minimumContextTokens!=null?{minimumContextTokens:v.minimumContextTokens}:{},...v.minimumNetTokens!=null?{minimumNetTokens:v.minimumNetTokens}:
664
- {}},U=0,L=0;for(let F of b)F.role==="system"?U+=1:L+=this.tokensFor(F.content,n);let ee=this.tokensFor(this.assemblePromptText(b,g.tools),n),te=Pn({...M,contextTokens:L,projectedEliminable:L}),ne=0,de=0,
665
- Ze=false,pe=te.reason;if(te.compress){let F=[];for(let fe of b){if(fe.role==="system"){F.push(fe);continue}let Xe=this.tokensFor(fe.content,n),Qe=await this.config.compressor.compress({text:fe.content}),
666
- Mo=!Qe.skipped&&Qe.fidelityPassed&&ar(fe.content,Qe.compressed),Bo=Mo?this.tokensFor(Qe.compressed,n):Xe;Mo&&Bo<Xe?(F.push({...fe,content:Qe.compressed}),ne+=Xe,de+=Bo):F.push(fe);}let Lo=this.tokensFor(
667
- this.assemblePromptText(F,g.tools),n),Z=Pn({...M,contextTokens:L,projectedEliminable:ne-de}),un=zs({originalTokens:ee,compressedTokens:Lo,tier:A,...v.prefix?{prefix:v.prefix}:{},compressorCostTokens:M.
668
- compressorCostTokens});de>=ne?pe="no fidelity-passed net reduction":Z.compress?un.comprimir?(Ze=true,pe=un.razon,T=F.slice(0,y).some((fe,Xe)=>fe.content!==b[Xe]?.content),b=F,i.compress(ne,de)):pe=un.razon:
669
- pe=Z.reason;}Ze||(ne=0,de=0),c.record("compression",Ze?"applied":"skipped",{reason:pe,before:ne,after:de,contextTokens:L,promptTokens:ee,cacheTierMinimum:A.minimumCacheTokens,protectedSystemMessages:U,
670
- prefixRewritten:T}),i.compressionReport={originalTokens:ne,compressedTokens:de,protectedSpans:U,fidelityPassed:true};}if(s.elision!==false&&r.allowElision&&this.entitled("tool_result_elision")){let v=$s(b);
671
- if(v.indices.length>0){let A=this.tokensFor(Io,n),M=0;for(let U of v.indices){let L=this.tokensFor(b[U].content,n);M+=Math.max(0,L-A);}(v.indices.some(U=>U<y)&&(T=true),b=Fs(b,v.indices),i.eliminate(
672
- M),i.elididoLocal+=M),c.record("elision","applied",{elided:v.indices.length,eliminatedTokens:M,grossBytes:v.bytesOriginales,live:_o});}else c.record("elision","skipped",{reason:"no old/larg\
673
- e tool_result over the age\xD7size threshold"});}let I=n.response?.schema,S=I&&s.outputCodebook===true?Ls(I,v=>this.tokensFor(v,n),a,{evidencia:this.memoriaDelCodebook.resolver(d.modeloServido,ht(n),s.outputCodebookMeasuredOutputDeltaTokens)}):
663
+ `)}:null,R=gt(n),C=n.response?.maxOutputTokens!=null?Math.floor(n.response.maxOutputTokens*3.2):null,D=this.contratosQueIncumplen.has(R)?Lo(n.response?.schema,"",C):"";if(D&&bt(b,{role:"system",content:`\
664
+ JSON limits (not API-enforced): ${D}`}),n.structuredData!==void 0){let v=JSON.stringify(n.structuredData),A=this.tokensFor(v,n);if(s.serialization!==false){y=this.deps.formatSelector.choose(n.structuredData,
665
+ {model:n.model,...n.tokenizer?{tokenizer:n.tokenizer}:{}});let M=this.tokensFor(y.encoded+y.instruction,n);i.compress(A,M),bt(b,{role:"system",content:(y.instruction?y.instruction+`
666
+ `:"")+y.encoded}),c.record("serialization",y.chosen,{reason:y.reason,jsonTokens:A,chosenTokens:M});}else bt(b,{role:"system",content:v}),c.record("serialization","json-compact",{reason:"format selector\
667
+ disabled; sent compact JSON"});}if(E&&bt(b,E),(s.compression===true||s.compression==="auto")&&r.allowCompression&&this.config.compressor&&this.entitled("long_context_compression")){let v=this.config.compressionEconomics??
668
+ {},A=Ao(n.model,v),M={compressorCostTokens:v.compressorCostTokens??0,...v.minimumContextTokens!=null?{minimumContextTokens:v.minimumContextTokens}:{},...v.minimumNetTokens!=null?{minimumNetTokens:v.minimumNetTokens}:
669
+ {}},U=0,L=0;for(let F of b)F.role==="system"?U+=1:L+=this.tokensFor(F.content,n);let ee=this.tokensFor(this.assemblePromptText(b,g.tools),n),te=Ln({...M,contextTokens:L,projectedEliminable:L}),ne=0,de=0,
670
+ Xe=false,pe=te.reason;if(te.compress){let F=[];for(let fe of b){if(fe.role==="system"){F.push(fe);continue}let Qe=this.tokensFor(fe.content,n),et=await this.config.compressor.compress({text:fe.content}),
671
+ No=!et.skipped&&et.fidelityPassed&&ur(fe.content,et.compressed),jo=No?this.tokensFor(et.compressed,n):Qe;No&&jo<Qe?(F.push({...fe,content:et.compressed}),ne+=Qe,de+=jo):F.push(fe);}let Bo=this.tokensFor(
672
+ this.assemblePromptText(F,g.tools),n),Z=Ln({...M,contextTokens:L,projectedEliminable:ne-de}),dn=Hs({originalTokens:ee,compressedTokens:Bo,tier:A,...v.prefix?{prefix:v.prefix}:{},compressorCostTokens:M.
673
+ compressorCostTokens});de>=ne?pe="no fidelity-passed net reduction":Z.compress?dn.comprimir?(Xe=true,pe=dn.razon,T=F.slice(0,x).some((fe,Qe)=>fe.content!==b[Qe]?.content),b=F,i.compress(ne,de)):pe=dn.razon:
674
+ pe=Z.reason;}Xe||(ne=0,de=0),c.record("compression",Xe?"applied":"skipped",{reason:pe,before:ne,after:de,contextTokens:L,promptTokens:ee,cacheTierMinimum:A.minimumCacheTokens,protectedSystemMessages:U,
675
+ prefixRewritten:T}),i.compressionReport={originalTokens:ne,compressedTokens:de,protectedSpans:U,fidelityPassed:true};}if(s.elision!==false&&r.allowElision&&this.entitled("tool_result_elision")){let v=Us(b);
676
+ if(v.indices.length>0){let A=this.tokensFor(_o,n),M=0;for(let U of v.indices){let L=this.tokensFor(b[U].content,n);M+=Math.max(0,L-A);}(v.indices.some(U=>U<x)&&(T=true),b=qs(b,v.indices),i.eliminate(
677
+ M),i.elididoLocal+=M),c.record("elision","applied",{elided:v.indices.length,eliminatedTokens:M,grossBytes:v.bytesOriginales,live:Do});}else c.record("elision","skipped",{reason:"no old/larg\
678
+ e tool_result over the age\xD7size threshold"});}let I=n.response?.schema,S=I&&s.outputCodebook===true?js(I,v=>this.tokensFor(v,n),a,{evidencia:this.memoriaDelCodebook.resolver(d.modeloServido,gt(n),s.outputCodebookMeasuredOutputDeltaTokens)}):
674
679
  null;S&&c.record("output-codebook",S.applied?"applied":"skipped",{reason:S.reason,...S.applied?{renamedKeys:S.plan.renamedKeys,codedEnumValues:S.plan.codedEnumValues,schemaTokensOriginal:S.plan.schemaTokensOriginal,
675
680
  schemaTokensCompact:S.plan.schemaTokensCompact,modelledShapeSavingTokens:S.plan.modelledShapeSavingTokens,measuredOutputDeltaTokens:S.plan.measuredOutputDeltaTokens,outputDeltaProvenance:S.plan.outputDeltaProvenance,
676
- breakEvenOutputDeltaTokens:S.plan.breakEvenOutputDeltaTokens,netSavingUsd:S.plan.netSavingUsd,pricedForModel:d.modeloServido}:{}});let B=S?.applied?S.plan.compactSchema:I,k=B?ir(d.modeloServido,B,this.
681
+ breakEvenOutputDeltaTokens:S.plan.breakEvenOutputDeltaTokens,netSavingUsd:S.plan.netSavingUsd,pricedForModel:d.modeloServido}:{}});let B=S?.applied?S.plan.compactSchema:I,k=B?lr(d.modeloServido,B,this.
677
682
  deps.constraintBackends):{backend:"none",reason:"no output contract"};c.record("constraints",k.backend,{reason:k.reason});let w=this.decidirMarcadoDeCache(n,d.modeloServido,b,g,s.toolDiscovery===true,T?
678
- Po(b,true):y,c),_=this.now(),P=await this.descubrirHerramientas(e,n,s,g.tools,b,i,a,c),N=P.tools;i.actualTools=N.length;let V={messages:b,...N.length?{tools:N}:{},...B?{schema:B}:{},...n.response?.maxOutputTokens!=
683
+ Mo(b,true):x,c),_=this.now(),P=await this.descubrirHerramientas(e,n,s,g.tools,b,i,a,c),N=P.tools;i.actualTools=N.length;let V={messages:b,...N.length?{tools:N}:{},...B?{schema:B}:{},...n.response?.maxOutputTokens!=
679
684
  null?{maxOutputTokens:n.response.maxOutputTokens}:{},...n.temperature!=null?{temperature:n.temperature}:{},...n.seed!=null?{seed:n.seed}:{},...s.deferrable?{deferrable:true}:{},constraintBackend:k.backend},
680
- O=await this.llamarProveedor({model:d.modeloServido,...V,...w.marcar?{stablePrefixMessages:w.mensajesDePrefijo,promptCacheKey:w.huella}:{}},e);i.actualLlm+=1;let X=v=>{if(!S?.applied)return v;let A=We(
681
- v);return A.ok?JSON.stringify(S.plan.expand(A.value)):v},$=X(O.text),Q=O.usage,W=false;if(d.enruta){let v=vo({texto:$,schema:I,finishReason:O.finishReason,pidioHerramientas:(O.toolCalls?.length??0)>0});this.
685
+ O=await this.llamarProveedor({model:d.modeloServido,...V,...w.marcar?{stablePrefixMessages:w.mensajesDePrefijo,promptCacheKey:w.huella}:{}},e);i.actualLlm+=1;let X=v=>{if(!S?.applied)return v;let A=Ge(
686
+ v);return A.ok?JSON.stringify(S.plan.expand(A.value)):v},$=X(O.text),Q=O.usage,W=false;if(d.enruta){let v=wo({texto:$,schema:I,finishReason:O.finishReason,pidioHerramientas:(O.toolCalls?.length??0)>0});this.
682
687
  verjaDeCascada.registrar(d.bucket,!v.acepta),c.record("model-cascade",v.acepta?"accepted":"escalating",{servedModel:d.modeloServido,reason:v.motivo,checks:v.comprobaciones}),v.acepta||(W=true,i.cascadeAttempt(
683
688
  O.usage,d.precioBarato??a),i.actualLlm+=1,O=await this.llamarProveedor({model:n.model,...V},e),$=X(O.text));}let ue=W?n.model:d.modeloServido,ve=W?this.costModelFor(n.model):a;i.actualInput+=O.usage.inputTokens,
684
- i.actualOutput+=O.usage.outputTokens,S?.applied&&c.record("output-codebook",We(O.text).ok?"expanded":"not-expanded (response was not JSON)",We(O.text).ok?{localOutputTokensCompact:this.tokensFor(O.text,
689
+ i.actualOutput+=O.usage.outputTokens,S?.applied&&c.record("output-codebook",Ge(O.text).ok?"expanded":"not-expanded (response was not JSON)",Ge(O.text).ok?{localOutputTokensCompact:this.tokensFor(O.text,
685
690
  n),localOutputTokensExpanded:this.tokensFor($,n),creditedLedger:"none",note:"local count of the served answer in both shapes; not credited to any ledger"}:{}),I&&k.backend==="provider-native"&&O.structuredNatively===
686
691
  false&&(k={backend:"none",reason:"provider did not enforce the contract natively; the schema travelled in the prompt and the layer is the only validator"},c.record("constraints","none",{downgradedFrom:"p\
687
692
  rovider-native",reason:k.reason})),i.sentInputLocal=this.tokensFor(this.assemblePromptText(b,N),n),i.removedInputLocal=Math.max(0,u-i.sentInputLocal-i.elididoLocal),i.sentInputLocal+=P.tokensLocalesDelSondeo,
688
693
  i.estimatorExact=this.estimatorEsExacto(n),O.usage.cachedInputTokens&&i.providerCached(O.usage.cachedInputTokens),w.marcar&&(i.cacheWritePremium(Q.cacheWriteInputTokens??0,w.cacheWriteMultiplier,d.precioBarato??
689
694
  a),this.verjaDeCache.registrar(w.huella,Q),c.record("prefix-cache","measured",{cacheRead:Q.cachedInputTokens??0,cacheWritePremiumTokens:Q.cacheWriteInputTokens??0}));let ke=null;if(d.modo==="shadow"&&
690
- d.elegible&&d.candidato&&d.precioBarato&&zc(l,d.tasaDeMuestreo))try{let v=await this.llamarProveedor({model:d.candidato,...V},e);i.actualLlm+=1;let A=i.extraCostUsd;i.cascadeAttempt(v.usage,d.precioBarato);
691
- let M=X(v.text),U=vo({texto:M,schema:I,finishReason:v.finishReason,pidioHerramientas:(v.toolCalls?.length??0)>0});this.verjaDeCascada.registrar(d.bucket,!U.acepta);let L=U.acepta?_s(M,$):null;ke={coste:i.
695
+ d.elegible&&d.candidato&&d.precioBarato&&Kc(l,d.tasaDeMuestreo))try{let v=await this.llamarProveedor({model:d.candidato,...V},e);i.actualLlm+=1;let A=i.extraCostUsd;i.cascadeAttempt(v.usage,d.precioBarato);
696
+ let M=X(v.text),U=wo({texto:M,schema:I,finishReason:v.finishReason,pidioHerramientas:(v.toolCalls?.length??0)>0});this.verjaDeCascada.registrar(d.bucket,!U.acepta);let L=U.acepta?Ls(M,$):null;ke={coste:i.
692
697
  extraCostUsd-A,divergio:L?L.divergen:null},c.record("model-cascade",U.acepta?"sample accepted":"sample escalated",{candidateModel:d.candidato,reason:U.motivo,sampleCost:ke.coste,...L?{diverged:L.divergen,
693
698
  divergence:L.motivo}:{},note:"measurement only: this answer was NEVER served. The escalation rate it feeds is a money figure, not a quality one"});}catch(v){c.record("model-cascade","sample failed (mea\
694
- surement only; the answer is unaffected)",{error:v instanceof Error?v.message:String(v)});}let Ge=$,_e=true,Ye=(O.toolCalls?.length??0)>0;if(Ye&&(_e=null,I&&c.record("validation","n/a: model requested to\
695
- ol calls (the output contract applies to the final answer)")),I&&!Ye){let v=We($),A=v.ok?ae(v.value,I):{valid:false,errors:[{path:"$",message:"not valid JSON"}]};v.ok&&v.rescatado!=null&&A.valid&&($=v.rescatado,
696
- c.record("validation","rescued-locally",{reason:"the model wrapped valid JSON in prose or a markdown fence; it was extracted locally instead of paying a repair call"})),!A.valid&&Vc(A.errors)&&this.contratosQueIncumplen.
697
- add(ht(n));let M=O.finishReason==="length",U=!A.valid&&A.errors.some(L=>/not a valid regular expression/.test(L.message));if(!A.valid&&U)c.record("validation","repair-skipped",{reason:"schema defect (\
699
+ surement only; the answer is unaffected)",{error:v instanceof Error?v.message:String(v)});}let Ye=$,_e=true,Ze=(O.toolCalls?.length??0)>0;if(Ze&&(_e=null,I&&c.record("validation","n/a: model requested to\
700
+ ol calls (the output contract applies to the final answer)")),I&&!Ze){let v=Ge($),A=v.ok?ae(v.value,I):{valid:false,errors:[{path:"$",message:"not valid JSON"}]};v.ok&&v.rescatado!=null&&A.valid&&($=v.rescatado,
701
+ c.record("validation","rescued-locally",{reason:"the model wrapped valid JSON in prose or a markdown fence; it was extracted locally instead of paying a repair call"})),!A.valid&&Jc(A.errors)&&this.contratosQueIncumplen.
702
+ add(gt(n));let M=O.finishReason==="length",U=!A.valid&&A.errors.some(L=>/not a valid regular expression/.test(L.message));if(!A.valid&&U)c.record("validation","repair-skipped",{reason:"schema defect (\
698
703
  uncompilable pattern); no output can satisfy it, a retry is a wasted call",errors:A.errors}),this.avisar("esquema-roto","[bvsala] El contrato de respuesta tiene un `pattern` que no es un regex valido,\
699
- asi que ninguna respuesta puede cumplirlo. NO se reintenta (seria una llamada pagada para el mismo fallo). Corrige el `pattern` del esquema.");else if(!A.valid&&M){let L=Ds(I,ne=>this.tokensFor(ne,n)),
700
- ee=n.response?.maxOutputTokens??null,te=L!==null&&ee!=null&&L<=ee;te&&this.contratosQueIncumplen.add(ht(n)),c.record("validation","repair-skipped",{reason:"output truncated by maxOutputTokens; a retry\
704
+ asi que ninguna respuesta puede cumplirlo. NO se reintenta (seria una llamada pagada para el mismo fallo). Corrige el `pattern` del esquema.");else if(!A.valid&&M){let L=Bs(I,ne=>this.tokensFor(ne,n)),
705
+ ee=n.response?.maxOutputTokens??null,te=L!==null&&ee!=null&&L<=ee;te&&this.contratosQueIncumplen.add(gt(n)),c.record("validation","repair-skipped",{reason:"output truncated by maxOutputTokens; a retry\
701
706
  with the same cap would truncate again",maxOutputTokens:n.response?.maxOutputTokens??null,outputTokens:O.usage.outputTokens,model:ue,...L!==null?{schemaAllowsTokens:L}:{},learnedValueLimits:te}),this.
702
707
  avisarDeTruncado(n,ue,O.usage.outputTokens,L,te);}else if(!A.valid&&k.backend==="none"){let L=A.errors.slice(0,5).map(Z=>`- ${Z.path}: ${Z.message}`).join(`
703
708
  `),ee=[{role:"user",content:`Your previous reply did not satisfy the required JSON contract.
@@ -709,98 +714,98 @@ Problems found:
709
714
  ${L}
710
715
 
711
716
  Return ONLY the corrected JSON object. Keep the same content; fix only what is listed.`}],te=this.tokensFor(this.assemblePromptText(ee),n),ne=i.sentInputLocal>0?i.actualInput/i.sentInputLocal:1,de=Math.
712
- round(ne*te),Ze=Math.min(O.usage.outputTokens,n.response?.maxOutputTokens??Number.POSITIVE_INFINITY),pe=de/1e3*ve.inputPer1k+Ze/1e3*ve.outputPer1k,F=this.config.skipRepairAboveBaseline?i.estimateCost(
717
+ round(ne*te),Xe=Math.min(O.usage.outputTokens,n.response?.maxOutputTokens??Number.POSITIVE_INFINITY),pe=de/1e3*ve.inputPer1k+Xe/1e3*ve.outputPer1k,F=this.config.skipRepairAboveBaseline?i.estimateCost(
713
718
  ve):void 0;if(F!=null&&F.baselineEstimate>0&&F.actual+pe>F.baselineEstimate&&F!=null)c.record("validation","repair-skipped",{reason:"repairing would cost more than not using the layer at all; the inva\
714
719
  lid answer is served as-is and reported as invalid",errors:A.errors,baselineUsd:F.baselineEstimate,actualUsd:F.actual,repairEstimateUsd:pe}),this.avisar("reparacion-mas-cara-que-el-baseline",`[bvsala]\
715
720
  The answer did not satisfy the output contract, and repairing it would have cost MORE than sending this request without the layer at all (baseline ~$${F.baselineEstimate}, already spent ~$${F.actual}\
716
721
  , repair ~$${pe.toFixed(6)}). The repair was skipped and the invalid answer is returned with \`constraints.structurallyValid: false\` \u2014 check it before using it. This combination is usually a request ca\
717
722
  rrying both tools and an output contract; see the adapter warning for the cheaper shapes.`);else {i.retries=1,c.record("validation","repair-attempt",{errors:A.errors}),O=await this.llamarProveedor({model:ue,
718
723
  messages:ee,schema:I,...n.response?.maxOutputTokens!=null?{maxOutputTokens:n.response.maxOutputTokens}:{}},e),i.actualLlm+=1,i.actualInput+=O.usage.inputTokens,i.actualOutput+=O.usage.outputTokens,i.repairOutput+=
719
- O.usage.outputTokens,i.repairInput+=O.usage.inputTokens,i.sentInputLocal+=te,$=O.text;let Z=We($);A=Z.ok?ae(Z.value,I):{valid:false,errors:[{path:"$",message:"not valid JSON"}]},Z.ok&&(Ge=Z.value,Z.rescatado!=
720
- null&&A.valid&&($=Z.rescatado));}}else v.ok&&(Ge=v.value);_e=A.valid,c.record("validation",_e?"valid":"invalid");}let Zs=this.now()-_,Xs=jc(Ge),cn={text:$,data:Ge,rendered:Xs,storedAtMs:this.now()},we=this.
724
+ O.usage.outputTokens,i.repairInput+=O.usage.inputTokens,i.sentInputLocal+=te,$=O.text;let Z=Ge($);A=Z.ok?ae(Z.value,I):{valid:false,errors:[{path:"$",message:"not valid JSON"}]},Z.ok&&(Ye=Z.value,Z.rescatado!=
725
+ null&&A.valid&&($=Z.rescatado));}}else v.ok&&(Ye=v.value);_e=A.valid,c.record("validation",_e?"valid":"invalid");}let ti=this.now()-_,ni=Uc(Ye),ln={text:$,data:Ye,rendered:ni,storedAtMs:this.now()},we=this.
721
726
  informeDeDiferido(s,O,ve);we&&c.record("deferred-tier",we.credited?"credited":"not-credited",{...we.requestedTier?{requestedTier:we.requestedTier}:{},...we.servedTier?{servedTier:we.servedTier}:{},creditedLedger:"\
722
- none",reason:we.reason});try{let v=P.aplicado,A=O.finishReason==="length",M=_e!==!1&&!Ye&&!v&&!A;M||c.record("cache-write",Ye?"skipped: tool-call turn (an action request must not be replayed from cach\
727
+ none",reason:we.reason});try{let v=P.aplicado,A=O.finishReason==="length",M=_e!==!1&&!Ze&&!v&&!A;M||c.record("cache-write",Ze?"skipped: tool-call turn (an action request must not be replayed from cach\
723
728
  e)":_e===!1?"skipped: response fails its output contract":A?'skipped: answer cut off by the output cap (finish_reason "length"); replaying half an answer would bill it as a 100% avoided call':"skipped\
724
- : answered with a reduced tool view (tool discovery), so it must not be replayed");let U=W?wn(o,{servedModel:ue}):l;if(M&&r.allowExactCache&&s.exactCache!==!1){let ee=this.config.exactCacheTtlMs??864e5,
725
- te=r.maxCacheAgeMs==null?ee:Math.min(ee,r.maxCacheAgeMs);await this.deps.exactCache.set(U,cn,te);}let L=ue!==n.model;M&&!L&&r.allowSemanticCache&&s.semanticCache&&this.deps.semanticCache?await this.deps.
726
- semanticCache.store(o,cn):M&&L&&s.semanticCache&&c.record("cache-write","semantic write skipped: a cheaper model answered, and this cache keys on the model the caller asked for");}catch(v){c.record("ca\
727
- che-write","failed (non-fatal; answer already served)",{error:v instanceof Error?v.message:String(v)});}let ln=this.finish(n,o,cn,"miss",i,ve,c,h,x,void 0,void 0,_e,k.backend,Zs,this.informeDeCascada(d,
728
- {servedModel:ue,...d.enruta?{escalated:W}:{},...d.elegible&&d.precioBarato?{estimatedSwapSaving:Fc(i,W,d.precioBarato,this.costModelFor(n.model))}:{},...ke?{sampled:true,sampleCost:an(ke.coste),...ke.divergio!==
729
- null?{divergedOnSample:ke.divergio}:{}}:{},...i.cascadeInput>0||i.cascadeOutput>0?{cascadeInputTokens:i.cascadeInput,cascadeOutputTokens:i.cascadeOutput}:{}}),we);return Ye&&(ln.toolCalls=O.toolCalls),
730
- O.finishReason!==void 0&&(ln.finishReason=O.finishReason),ln}async descubrirHerramientas(e,n,o,r,s,i,a,c){let l={tools:r,tokensLocalesDelSondeo:0,aplicado:false};if(o.toolDiscovery!==true)return l;if(r.length<
731
- 2)return c.record("tool-discovery","skipped (nothing to discover)",{candidates:r.length}),l;let u=p=>this.tokensFor(Ao(p),n),d=r.map(qs),m=Us({promptTokens:this.tokensFor(this.assemblePromptText(s),n),
732
- esquemasCompletos:r.reduce((p,x)=>p+u(x),0),descriptoresLigeros:d.reduce((p,x)=>p+u(x),0),esquemasDeLaSegunda:Ks(r.map(p=>({risk:p.risk,tokens:u(p)})),3),salidaFinal:n.response?.maxOutputTokens??256,salidaDelSondeo:96,
733
- precio:a});if(!m.aplicar)return c.record("tool-discovery","skipped (not worth a second call)",{reason:m.razon,oneCall:m.costeDeUnaLlamada,twoCalls:m.costeDeDosLlamadas}),l;let f,h=this.tokensFor(this.
734
- assemblePromptText(s,d),n);try{f=await this.llamarProveedor({model:n.model,messages:s,tools:d,maxOutputTokens:96,...n.temperature!=null?{temperature:n.temperature}:{},...n.seed!=null?{seed:n.seed}:{}},
735
- e);}catch(p){return c.record("tool-discovery","failed (falling back to a single call with every schema)",{error:p instanceof Error?p.message:String(p)}),l}i.actualLlm+=1,i.actualInput+=f.usage.inputTokens,
736
- i.actualOutput+=f.usage.outputTokens,i.discoveryInput+=f.usage.inputTokens,i.discoveryOutput+=f.usage.outputTokens;let g=Hs((f.toolCalls??[]).map(p=>p.name),r,3);return g.reconocidos.length===0?(c.record(
737
- "tool-discovery","degraded: probe named no known tool",{finishReason:f.finishReason??null,...g.ignorados.length?{unknownNames:g.ignorados}:{}}),{tools:r,tokensLocalesDelSondeo:h,aplicado:false}):(c.record(
729
+ : answered with a reduced tool view (tool discovery), so it must not be replayed");let U=W?Sn(o,{servedModel:ue}):l;if(M&&r.allowExactCache&&s.exactCache!==!1){let ee=this.config.exactCacheTtlMs??864e5,
730
+ te=r.maxCacheAgeMs==null?ee:Math.min(ee,r.maxCacheAgeMs);await this.deps.exactCache.set(U,ln,te);}let L=ue!==n.model;M&&!L&&r.allowSemanticCache&&s.semanticCache&&this.deps.semanticCache?await this.deps.
731
+ semanticCache.store(o,ln):M&&L&&s.semanticCache&&c.record("cache-write","semantic write skipped: a cheaper model answered, and this cache keys on the model the caller asked for");}catch(v){c.record("ca\
732
+ che-write","failed (non-fatal; answer already served)",{error:v instanceof Error?v.message:String(v)});}let un=this.finish(n,o,ln,"miss",i,ve,c,h,y,void 0,void 0,_e,k.backend,ti,this.informeDeCascada(d,
733
+ {servedModel:ue,...d.enruta?{escalated:W}:{},...d.elegible&&d.precioBarato?{estimatedSwapSaving:Hc(i,W,d.precioBarato,this.costModelFor(n.model))}:{},...ke?{sampled:true,sampleCost:cn(ke.coste),...ke.divergio!==
734
+ null?{divergedOnSample:ke.divergio}:{}}:{},...i.cascadeInput>0||i.cascadeOutput>0?{cascadeInputTokens:i.cascadeInput,cascadeOutputTokens:i.cascadeOutput}:{}}),we);return Ze&&(un.toolCalls=O.toolCalls),
735
+ O.finishReason!==void 0&&(un.finishReason=O.finishReason),un}async descubrirHerramientas(e,n,o,r,s,i,a,c){let l={tools:r,tokensLocalesDelSondeo:0,aplicado:false};if(o.toolDiscovery!==true)return l;if(r.length<
736
+ 2)return c.record("tool-discovery","skipped (nothing to discover)",{candidates:r.length}),l;let u=p=>this.tokensFor(Po(p),n),d=r.map(Ws),f=Js({promptTokens:this.tokensFor(this.assemblePromptText(s),n),
737
+ esquemasCompletos:r.reduce((p,y)=>p+u(y),0),descriptoresLigeros:d.reduce((p,y)=>p+u(y),0),esquemasDeLaSegunda:Ys(r.map(p=>({risk:p.risk,tokens:u(p)})),3),salidaFinal:n.response?.maxOutputTokens??256,salidaDelSondeo:96,
738
+ precio:a});if(!f.aplicar)return c.record("tool-discovery","skipped (not worth a second call)",{reason:f.razon,oneCall:f.costeDeUnaLlamada,twoCalls:f.costeDeDosLlamadas}),l;let m,h=this.tokensFor(this.
739
+ assemblePromptText(s,d),n);try{m=await this.llamarProveedor({model:n.model,messages:s,tools:d,maxOutputTokens:96,...n.temperature!=null?{temperature:n.temperature}:{},...n.seed!=null?{seed:n.seed}:{}},
740
+ e);}catch(p){return c.record("tool-discovery","failed (falling back to a single call with every schema)",{error:p instanceof Error?p.message:String(p)}),l}i.actualLlm+=1,i.actualInput+=m.usage.inputTokens,
741
+ i.actualOutput+=m.usage.outputTokens,i.discoveryInput+=m.usage.inputTokens,i.discoveryOutput+=m.usage.outputTokens;let g=Gs((m.toolCalls??[]).map(p=>p.name),r,3);return g.reconocidos.length===0?(c.record(
742
+ "tool-discovery","degraded: probe named no known tool",{finishReason:m.finishReason??null,...g.ignorados.length?{unknownNames:g.ignorados}:{}}),{tools:r,tokensLocalesDelSondeo:h,aplicado:false}):(c.record(
738
743
  "tool-discovery","applied (two provider calls)",{chosen:g.reconocidos,sent:g.tools.map(p=>p.id),candidates:r.length,...g.ignorados.length?{unknownNames:g.ignorados}:{}}),{tools:g.tools,tokensLocalesDelSondeo:h,
739
744
  aplicado:true})}informeDeCascada(e,n={}){if(e.modo!=="off")return {mode:e.modo,servedModel:n.servedModel??e.modeloServido,eligible:e.elegible,reason:e.razon,verifier:e.fuerza,creditedLedger:"none",...e.candidato?
740
- {candidateModel:e.candidato}:{},...e.economia?{costRatio:pt(e.economia.r),breakEvenEscalationRate:pt(e.economia.equilibrio),targetEscalationRate:pt(e.economia.escaladoMaximo)}:{},...e.bucket?{workload:e.
741
- bucket}:{},...e.observada!=null?{escalationRate:pt(e.observada),escalationSamples:e.muestras}:{},...n,requestedModel:e.modeloPedido}}informeDeDiferido(e,n,o){if(e.deferrable!==true)return;let r=n.requestedServiceTier,
742
- s=dr(n.servedServiceTier),i={...r?{requestedTier:r}:{},...s?{servedTier:s.servido}:{},credited:false,creditedLedger:"none",latency:mr(r),reason:""};if(!r)return {...i,reason:fr};if(!s)return {...i,reason:`\
745
+ {candidateModel:e.candidato}:{},...e.economia?{costRatio:ft(e.economia.r),breakEvenEscalationRate:ft(e.economia.equilibrio),targetEscalationRate:ft(e.economia.escaladoMaximo)}:{},...e.bucket?{workload:e.
746
+ bucket}:{},...e.observada!=null?{escalationRate:ft(e.observada),escalationSamples:e.muestras}:{},...n,requestedModel:e.modeloPedido}}informeDeDiferido(e,n,o){if(e.deferrable!==true)return;let r=n.requestedServiceTier,
747
+ s=mr(n.servedServiceTier),i={...r?{requestedTier:r}:{},...s?{servedTier:s.servido}:{},credited:false,creditedLedger:"none",latency:br(r),reason:""};if(!r)return {...i,reason:gr};if(!s)return {...i,reason:`\
743
748
  asked the provider for the "${r}" tier, and it reported none back: the rate this request was billed at cannot be known, so nothing is credited`};if(s.factor==null)return {...i,reason:`asked for "${r}" \
744
749
  and the provider reports serving "${s.servido}", a tier this layer has no published rate for: nothing is credited`};if(!s.conDescuento)return {...i,reason:`asked for "${r}" and the provider reports ser\
745
750
  ving "${s.servido}", which bills at the standard rate: this request was billed as if it had never been deferred`};let a=n.usage,c=Math.min(Math.max(0,a.cachedInputTokens??0),Math.max(0,a.inputTokens)),
746
- l=o.cachedInputPer1k??o.inputPer1k,u=(Math.max(0,a.inputTokens)-c)/1e3*o.inputPer1k+c/1e3*l+Math.max(0,a.outputTokens)/1e3*o.outputPer1k,d=pr(s,u);return {...i,credited:true,discountRate:pt(s.factor),...d!=
747
- null?{estimatedTierSaving:an(d)}:{},reason:`the provider reports serving the "${s.servido}" tier, which bills at ${(s.factor*100).toFixed(0)}% of the standard rate; the discount stacks with provider p\
751
+ l=o.cachedInputPer1k??o.inputPer1k,u=(Math.max(0,a.inputTokens)-c)/1e3*o.inputPer1k+c/1e3*l+Math.max(0,a.outputTokens)/1e3*o.outputPer1k,d=hr(s,u);return {...i,credited:true,discountRate:ft(s.factor),...d!=
752
+ null?{estimatedTierSaving:cn(d)}:{},reason:`the provider reports serving the "${s.servido}" tier, which bills at ${(s.factor*100).toFixed(0)}% of the standard rate; the discount stacks with provider p\
748
753
  refix caching rather than replacing it`}}diferidoSinLlamada(e){if(e.savings?.deferrable===true)return {credited:false,creditedLedger:"none",latency:"not applicable: no provider call was made for this reques\
749
- t.",reason:"no provider call was made, so no processing tier was served and none is credited; the call was avoided outright, which is worth more than any tier discount on it"}}finish(e,n,o,r,s,i,a,c,l,u,d,m,f="\
750
- none",h=0,g,p){let x=e.response?.schema,b=m===null?null:m??(x?ae(o.data,x).valid:true),y=this.buildReport(e,n,r,s,i,a,c,l,u,d,b,f,h,g,p??this.diferidoSinLlamada(e));return {requestId:y.requestId,data:o.data,
751
- text:o.text,...o.rendered!==void 0?{rendered:o.rendered}:{},report:y}}buildReport(e,n,o,r,s,i,a,c,l,u,d,m,f,h,g){let p=r.estimateCost(s),x=i.elapsed(),b=h!=null&&h.servedModel!==h.requestedModel;return {
754
+ t.",reason:"no provider call was made, so no processing tier was served and none is credited; the call was avoided outright, which is worth more than any tier discount on it"}}finish(e,n,o,r,s,i,a,c,l,u,d,f,m="\
755
+ none",h=0,g,p){let y=e.response?.schema,b=f===null?null:f??(y?ae(o.data,y).valid:true),x=this.buildReport(e,n,r,s,i,a,c,l,u,d,b,m,h,g,p??this.diferidoSinLlamada(e));return {requestId:x.requestId,data:o.data,
756
+ text:o.text,...o.rendered!==void 0?{rendered:o.rendered}:{},report:x}}buildReport(e,n,o,r,s,i,a,c,l,u,d,f,m,h,g){let p=r.estimateCost(s),y=i.elapsed(),b=h!=null&&h.servedModel!==h.requestedModel;return {
752
757
  requestId:this.generateId(),model:h?.servedModel??e.model,calls:{baselineLlm:r.baselineLlm,actualLlm:r.actualLlm,avoidedLlm:r.avoidedLlm,baselineRetrieval:r.baselineRetrieval,actualRetrieval:r.actualRetrieval,
753
758
  baselineTools:r.baselineTools,actualTools:r.actualTools,retries:r.retries},tokens:{baselineInput:r.baselineInput,actualInput:r.actualInput,eliminatedInput:r.eliminatedInput,compressedInput:r.compressedInput,
754
759
  baselineOutput:r.publishedBaselineOutput,actualOutput:r.actualOutput,eliminatedOutput:r.eliminatedOutput,...r.providerCachedInput?{providerCachedInput:r.providerCachedInput}:{}},cache:{result:o,...u!==
755
760
  void 0?{confidence:u}:{},...l!==void 0?{ageMs:l}:{}},routing:{executionClass:a.executionClass,confidence:a.confidence,rounds:r.actualRetrieval,reason:a.reason},serialization:{chosen:c.chosen,candidateTokens:c.
756
- candidateTokens,instructionOverheadTokens:c.instructionOverheadTokens},...r.compressionReport?{compression:r.compressionReport}:{},constraints:{backend:m,schemaVersion:n.schemaVersion,...d===null?{}:{
757
- structurallyValid:d}},qualityStatus:$c(o,d,b),...h?{modelCascade:h}:{},...g?{deferred:g}:{},quality:{...o!=="miss"?{freshnessPassed:!Sn(n).requiresFreshData}:{}},cost:p,latencyMs:{total:x,preprocessing:Math.
758
- max(0,x-f),provider:f},traces:i.all()}}async failOpenDirect(e,n){let o=new rt(this.now);o.record("fail-open","internal optimizer error \u2014 bypassed to a direct provider call",{error:n instanceof Error?
759
- n.message:String(n)});let r=new je,s=this.costModelFor(e.model),i;try{i=kn(e);}catch{i={schemaVersion:e.response?.version??e.response?.contractId??"none"};}let a=e.response?.schema,c=[...e.messages];e.structuredData!==
760
- void 0&&gt(c,{role:"system",content:JSON.stringify(e.structuredData)});let l=this.now(),u=await this.config.provider.generate({model:e.model,messages:c,...e.tools?.length?{tools:e.tools}:{},...a?{schema:a}:
761
+ candidateTokens,instructionOverheadTokens:c.instructionOverheadTokens},...r.compressionReport?{compression:r.compressionReport}:{},constraints:{backend:f,schemaVersion:n.schemaVersion,...d===null?{}:{
762
+ structurallyValid:d}},qualityStatus:qc(o,d,b),...h?{modelCascade:h}:{},...g?{deferred:g}:{},quality:{...o!=="miss"?{freshnessPassed:!Tn(n).requiresFreshData}:{}},cost:p,latencyMs:{total:y,preprocessing:Math.
763
+ max(0,y-m),provider:m},traces:i.all()}}async failOpenDirect(e,n){let o=new st(this.now);o.record("fail-open","internal optimizer error \u2014 bypassed to a direct provider call",{error:n instanceof Error?
764
+ n.message:String(n)});let r=new je,s=this.costModelFor(e.model),i;try{i=wn(e);}catch{i={schemaVersion:e.response?.version??e.response?.contractId??"none"};}let a=e.response?.schema,c=[...e.messages];e.structuredData!==
765
+ void 0&&bt(c,{role:"system",content:JSON.stringify(e.structuredData)});let l=this.now(),u=await this.config.provider.generate({model:e.model,messages:c,...e.tools?.length?{tools:e.tools}:{},...a?{schema:a}:
761
766
  {},...e.response?.maxOutputTokens!=null?{maxOutputTokens:e.response.maxOutputTokens}:{},...e.temperature!=null?{temperature:e.temperature}:{},...e.seed!=null?{seed:e.seed}:{}}),d=this.now()-l;r.baselineLlm=
762
767
  1,r.actualLlm=1,r.actualInput=u.usage.inputTokens,r.actualOutput=u.usage.outputTokens,r.baselineInput=u.usage.inputTokens,r.baselineOutput=u.usage.outputTokens,u.usage.cachedInputTokens&&r.providerCached(
763
- u.usage.cachedInputTokens);let m=u.text,f=true,h=(u.toolCalls?.length??0)>0;if(h&&(f=null),a&&!h){let p=We(u.text);f=p.ok?ae(p.value,a).valid:false,p.ok&&(m=p.value);}let g=this.buildReport(e,i,"miss",r,s,o,
764
- ft(),mt(),void 0,void 0,f,"none",d,void 0,e.savings?.deferrable===true?{credited:false,creditedLedger:"none",latency:"unchanged: the fail-open path asks for no processing tier, so this request was schedule\
768
+ u.usage.cachedInputTokens);let f=u.text,m=true,h=(u.toolCalls?.length??0)>0;if(h&&(m=null),a&&!h){let p=Ge(u.text);m=p.ok?ae(p.value,a).valid:false,p.ok&&(f=p.value);}let g=this.buildReport(e,i,"miss",r,s,o,
769
+ mt(),ht(),void 0,void 0,m,"none",d,void 0,e.savings?.deferrable===true?{credited:false,creditedLedger:"none",latency:"unchanged: the fail-open path asks for no processing tier, so this request was schedule\
765
770
  d exactly as an ordinary one.",reason:"the optimizer failed and this request went out on the direct fail-open path, which asks for no cheaper tier: that tier can be refused for lack of capacity, and t\
766
- rading availability for a discount on a last-resort call is the wrong trade"}:void 0);return {requestId:g.requestId,data:m,text:u.text,...h?{toolCalls:u.toolCalls}:{},...u.finishReason!==void 0?{finishReason:u.
767
- finishReason}:{},report:g}}asCoalescedFollower(e,n,o,r,s){let i=new je;i.avoidCall(n,o);let a=i.estimateCost(r),c=this.generateId(),l=this.diferidoSinLlamada(s),u=l?{deferred:l}:{},{deferred:d,...m}=e.
768
- report;return {...e,requestId:c,report:{...m,requestId:c,calls:{...e.report.calls,actualLlm:0,avoidedLlm:1},tokens:{baselineInput:i.baselineInput,actualInput:i.actualInput,eliminatedInput:i.eliminatedInput,
771
+ rading availability for a discount on a last-resort call is the wrong trade"}:void 0);return {requestId:g.requestId,data:f,text:u.text,...h?{toolCalls:u.toolCalls}:{},...u.finishReason!==void 0?{finishReason:u.
772
+ finishReason}:{},report:g}}asCoalescedFollower(e,n,o,r,s){let i=new je;i.avoidCall(n,o);let a=i.estimateCost(r),c=this.generateId(),l=this.diferidoSinLlamada(s),u=l?{deferred:l}:{},{deferred:d,...f}=e.
773
+ report;return {...e,requestId:c,report:{...f,requestId:c,calls:{...e.report.calls,actualLlm:0,avoidedLlm:1},tokens:{baselineInput:i.baselineInput,actualInput:i.actualInput,eliminatedInput:i.eliminatedInput,
769
774
  compressedInput:i.compressedInput,baselineOutput:i.publishedBaselineOutput,actualOutput:i.actualOutput,eliminatedOutput:i.eliminatedOutput,...i.providerCachedInput?{providerCachedInput:i.providerCachedInput}:
770
775
  {}},cache:{result:"singleflight"},...u,cost:a}}}assembleBaselinePrompt(e){return this.assemblePromptText(e.messages,e.tools,e.structuredData)}assemblePromptText(e,n,o){let r=e.map(s=>s.content);o!==void 0&&
771
- r.push(JSON.stringify(o));for(let s of n??[])r.push(Ao(s));return r.join(`
776
+ r.push(JSON.stringify(o));for(let s of n??[])r.push(Po(s));return r.join(`
772
777
  `)}tokensFor(e,n){return this.config.tokenizer.count(e,{...n.tokenizer?{tokenizer:n.tokenizer}:{},model:n.model})}estimatorEsExacto(e){let n=this.config.tokenizer;if(typeof n.resolve!="function")return false;
773
778
  try{return n.resolve({...e.tokenizer?{tokenizer:e.tokenizer}:{},model:e.model}).exact===!0}catch{return false}}entitled(e){return this.devOpen()?true:!!this.config.licenseGate&&this.config.licenseGate.isEntitled(
774
779
  e)}precioConocido(e){let n=this.config.costModels;if(n){let o=n[e];if(o)return o;let r=e.indexOf("/");if(r>=0){let s=n[e.slice(r+1)];if(s)return s}}return xt(e)}costModelFor(e){let n=this.precioConocido(
775
780
  e);return n||(this.config.defaultCostModel?this.config.defaultCostModel:(this.avisar(`precio-ilustrativo:${e}`,`[bv-sala] no cost model configured for "${e}"; falling back to the ILLUSTRATIVE default \
776
- price. Dollar figures will not match your bill. Pass { costModels: { "${e}": { inputPer1k, outputPer1k } } }.`),ks))}};function We(t){try{return {ok:!0,value:JSON.parse(t)}}catch{}for(let e of Bc(t))try{
777
- return {ok:!0,value:JSON.parse(e),rescatado:e}}catch{continue}return {ok:false}}function Bc(t){let e=[],n=/```[ \t]*[a-zA-Z0-9_-]*[ \t]*\r?\n([\s\S]*?)```/g;for(let o of t.matchAll(n)){let r=o[1]?.trim();r&&
778
- e.push(r);}for(let o of ["{","["]){let r=t.indexOf(o);if(r===-1)continue;let s=Nc(t,r);s&&e.push(s);}return e}function Nc(t,e){let n=t[e],o=n==="{"?"}":"]",r=0,s=false,i=false;for(let a=e;a<t.length;a+=1){let c=t[a];
779
- if(s){i?i=false:c==="\\"?i=true:c==='"'&&(s=false);continue}if(c==='"'){s=true;continue}if(c===n)r+=1;else if(c===o&&(r-=1,r===0))return t.slice(e,a+1)}}function jc(t){return typeof t=="string"?t:JSON.stringify(
780
- t,null,2)}function $c(t,e,n=false){if(e===false)return "rejected";if(n)return "bounded_degradation";switch(t){case "deterministic":case "exact":return "exact";case "semantic":return "task_equivalent";default:return "\
781
- not_verified"}}function pt(t){return Math.round(t*1e6)/1e6}function an(t){let e=Math.round(t*1e10)/1e10;return e===0?0:e}function Fc(t,e,n,o){if(e)return an(-t.extraCostUsd);let r=s=>t.actualInput/1e3*
782
- s.inputPer1k+t.actualOutput/1e3*s.outputPer1k;return an(r(o)-r(n))}function zc(t,e){if(!(e>0))return false;if(e>=1)return true;let n=ie(`${t}:cascade-sample`);return Number.parseInt(n.slice(0,13),16)/2**52<e}
783
- function ft(){return {executionClass:"NO_RETRIEVAL",confidence:1,reason:"n/a (short-circuited)",rounds:0}}function mt(){return {chosen:"json-compact",encoded:"",instruction:"",candidateTokens:{},instructionOverheadTokens:0,
784
- reason:"no structured payload"}}function Do(t,e="",n=null){if(t==null||typeof t!="object")return "";let o=t,r=[],s=e||"the value",i=h=>typeof o[h]=="number"?o[h]:null,a=i("maxLength"),c=i("minLength"),
785
- l=i("maxItems"),u=i("minItems"),d=i("maximum"),m=i("minimum");if(a!=null){let h=n!=null?Math.min(a,n):a;r.push(`${s}<=${h}ch`);}c!=null&&r.push(`${s}>=${c}ch`),l!=null&&r.push(`${s}<=${l} items`),u!=null&&
786
- r.push(`${s}>=${u} items`),d!=null&&r.push(`${s}<=${d}`),m!=null&&r.push(`${s}>=${m}`),typeof o.pattern=="string"&&r.push(`${s} matches /${o.pattern}/`);let f=o.properties;if(f&&typeof f=="object")for(let[
787
- h,g]of Object.entries(f)){let p=Do(g,e?`${e}.${h}`:h,n);p&&r.push(p);}if(o.items!==void 0){let h=Do(o.items,`${s} entries`,n);h&&r.push(h);}return r.join("; ")}function ht(t){let e=t.response;return e?e.
788
- contractId??e.version??JSON.stringify(e.schema??{}).slice(0,200):""}function Vc(t){return t.some(e=>/exceeds maxItems|exceeds maxLength|match pattern|exceeds maximum|below minimum|below minLength|below minItems/.
789
- test(e.message))}function Ao(t){return JSON.stringify({type:"function",function:{name:t.id,...t.description?{description:t.description}:{},parameters:t.parameters??{type:"object",properties:{}}}})}function gt(t,e){
790
- for(let n=t.length-1;n>=0;n--)if(t[n].role==="user"){t.splice(n,0,e);return}t.push(e);}function Po(t,e=false){if(e){let n=0;for(;n<t.length&&t[n].role==="system";)n+=1;return n}for(let n=t.length-1;n>=0;n--)
791
- if(t[n].role==="user")return n;return Po(t,true)}function Uc(t,e){let n=Oo(t,e);return n.cacheReadMultiplier<1?n:null}var qc=72*3600;function vf(t){t.licenseGate&&(console.warn("[bvsala] Ignoring the injected `licenseGate`: in the published package a license is only accepted as a `licenseKey` verified against BiVelio\
792
- 's embedded public key. Get yours at https://savings.bivelio.com/dashboard/install"),t={...t,licenseGate:void 0});let n={...t,tokenizer:t.tokenizer??jo},o,r;if(t.licenseKey&&!t.licenseGate){let a=ms;if(t.licenseServerUrl){let c=new qe,l=m=>Gt(m,a,{revocation:c,...t.now?{now:t.now}:{},maxStalenessSeconds:t.licenseRevocation?.maxStalenessSeconds??qc}),u=l(t.licenseKey);n.licenseGate=
793
- {isEntitled:m=>u.isEntitled(m),isActive:()=>u.isActive(),status:()=>u.status()};let d=`${t.licenseServerUrl.replace(/\/+$/,"")}/licenses/revocations`;o=new Yt({url:d,publicKeyPem:a,snapshot:c,getRefreshAfter:()=>u.
794
- refreshAfter?.(),...t.now?{nowSeconds:()=>Math.floor(t.now()/1e3)}:{},...t.licenseFetch?{fetchImpl:t.licenseFetch}:{},...t.licensePollIntervalSeconds!=null?{pollIntervalSeconds:t.licensePollIntervalSeconds}:
795
- {},...t.silenceWarnings!=null?{silenceWarnings:t.silenceWarnings}:{},...t.licenseRevocation??{}}),o.start(),t.serviceAccountKey&&t.licenseRefresh?.enabled!==false&&(r=new Xt({url:`${t.licenseServerUrl.replace(
796
- /\/+$/,"")}/api/license/current`,serviceAccountKey:t.serviceAccountKey,publicKey:a,initialToken:t.licenseKey,revocados:c,onNewToken:m=>{u=l(m);},...t.licenseFetch?{fetchImpl:t.licenseFetch}:{},...t.now?
797
- {now:t.now}:{},...t.licenseRefresh?.intervalMs!=null?{pollIntervalMs:t.licenseRefresh.intervalMs}:{},...t.licenseRefresh?.leadSeconds!=null?{refreshLeadSeconds:t.licenseRefresh.leadSeconds}:{}}),r.start());}else
798
- n.licenseGate=ys(t.licenseKey,a,t.now);}let s=new sn(n),i;if(t.serviceAccountKey&&t.metering?.enabled!==false){let a=t.meteringUrl??(t.licenseServerUrl?`${t.licenseServerUrl.replace(/\/+$/,"")}/api/meteri\
799
- ng/usage`:void 0);if(a){i=new dt({url:a,serviceAccountKey:t.serviceAccountKey,surface:"sdk",...t.metering?.orgId?{orgId:t.metering.orgId}:{},...t.metering?.flushIntervalMs!=null?{flushIntervalMs:t.metering.
800
- flushIntervalMs}:{},...t.metering?.maxBatch!=null?{maxBatch:t.metering.maxBatch}:{},...t.metering?.maxBuffer!=null?{maxBuffer:t.metering.maxBuffer}:{},...t.meteringFetch?{fetchImpl:t.meteringFetch}:t.
801
- licenseFetch?{fetchImpl:t.licenseFetch}:{},...t.now?{now:t.now}:{},...t.metering?.ci!=null?{ci:t.metering.ci}:{},...t.silenceWarnings!=null?{silenceWarnings:t.silenceWarnings}:{}});let c=t.metering?.ci??
802
- po();if(t.metering?.seatId)i.setSeat(t.metering.seatId,c);else {let l=i;fo(t.serviceAccountKey).then(u=>l.setSeat(u,c)).catch(()=>{});}i.start();}}return {generate:async a=>{let c=await s.generate(a);if(i)
803
- try{i.record(c.report);}catch{}return c},close:()=>{o?.stop(),r?.stop(),i?.stop();}}}/*! Bundled license information:
781
+ price. Dollar figures will not match your bill. Pass { costModels: { "${e}": { inputPer1k, outputPer1k } } }.`),Es))}};function Ge(t){try{return {ok:!0,value:JSON.parse(t)}}catch{}for(let e of zc(t))try{
782
+ return {ok:!0,value:JSON.parse(e),rescatado:e}}catch{continue}return {ok:false}}function zc(t){let e=[],n=/```[ \t]*[a-zA-Z0-9_-]*[ \t]*\r?\n([\s\S]*?)```/g;for(let o of t.matchAll(n)){let r=o[1]?.trim();r&&
783
+ e.push(r);}for(let o of ["{","["]){let r=t.indexOf(o);if(r===-1)continue;let s=Vc(t,r);s&&e.push(s);}return e}function Vc(t,e){let n=t[e],o=n==="{"?"}":"]",r=0,s=false,i=false;for(let a=e;a<t.length;a+=1){let c=t[a];
784
+ if(s){i?i=false:c==="\\"?i=true:c==='"'&&(s=false);continue}if(c==='"'){s=true;continue}if(c===n)r+=1;else if(c===o&&(r-=1,r===0))return t.slice(e,a+1)}}function Uc(t){return typeof t=="string"?t:JSON.stringify(
785
+ t,null,2)}function qc(t,e,n=false){if(e===false)return "rejected";if(n)return "bounded_degradation";switch(t){case "deterministic":case "exact":return "exact";case "semantic":return "task_equivalent";default:return "\
786
+ not_verified"}}function ft(t){return Math.round(t*1e6)/1e6}function cn(t){let e=Math.round(t*1e10)/1e10;return e===0?0:e}function Hc(t,e,n,o){if(e)return cn(-t.extraCostUsd);let r=s=>t.actualInput/1e3*
787
+ s.inputPer1k+t.actualOutput/1e3*s.outputPer1k;return cn(r(o)-r(n))}function Kc(t,e){if(!(e>0))return false;if(e>=1)return true;let n=ie(`${t}:cascade-sample`);return Number.parseInt(n.slice(0,13),16)/2**52<e}
788
+ function mt(){return {executionClass:"NO_RETRIEVAL",confidence:1,reason:"n/a (short-circuited)",rounds:0}}function ht(){return {chosen:"json-compact",encoded:"",instruction:"",candidateTokens:{},instructionOverheadTokens:0,
789
+ reason:"no structured payload"}}function Lo(t,e="",n=null){if(t==null||typeof t!="object")return "";let o=t,r=[],s=e||"the value",i=h=>typeof o[h]=="number"?o[h]:null,a=i("maxLength"),c=i("minLength"),
790
+ l=i("maxItems"),u=i("minItems"),d=i("maximum"),f=i("minimum");if(a!=null){let h=n!=null?Math.min(a,n):a;r.push(`${s}<=${h}ch`);}c!=null&&r.push(`${s}>=${c}ch`),l!=null&&r.push(`${s}<=${l} items`),u!=null&&
791
+ r.push(`${s}>=${u} items`),d!=null&&r.push(`${s}<=${d}`),f!=null&&r.push(`${s}>=${f}`),typeof o.pattern=="string"&&r.push(`${s} matches /${o.pattern}/`);let m=o.properties;if(m&&typeof m=="object")for(let[
792
+ h,g]of Object.entries(m)){let p=Lo(g,e?`${e}.${h}`:h,n);p&&r.push(p);}if(o.items!==void 0){let h=Lo(o.items,`${s} entries`,n);h&&r.push(h);}return r.join("; ")}function gt(t){let e=t.response;return e?e.
793
+ contractId??e.version??JSON.stringify(e.schema??{}).slice(0,200):""}function Jc(t){return t.some(e=>/exceeds maxItems|exceeds maxLength|match pattern|exceeds maximum|below minimum|below minLength|below minItems/.
794
+ test(e.message))}function Po(t){return JSON.stringify({type:"function",function:{name:t.id,...t.description?{description:t.description}:{},parameters:t.parameters??{type:"object",properties:{}}}})}function bt(t,e){
795
+ for(let n=t.length-1;n>=0;n--)if(t[n].role==="user"){t.splice(n,0,e);return}t.push(e);}function Mo(t,e=false){if(e){let n=0;for(;n<t.length&&t[n].role==="system";)n+=1;return n}for(let n=t.length-1;n>=0;n--)
796
+ if(t[n].role==="user")return n;return Mo(t,true)}function Wc(t,e){let n=Ao(t,e);return n.cacheReadMultiplier<1?n:null}var Gc=72*3600;function Ef(t){t.licenseGate&&(console.warn("[bvsala] Ignoring the injected `licenseGate`: in the published package a license is only accepted as a `licenseKey` verified against BiVelio\
797
+ 's embedded public key. Get yours at https://savings.bivelio.com/dashboard/install"),t={...t,licenseGate:void 0});let n={...t,tokenizer:t.tokenizer??Fo},o,r;if(t.licenseKey&&!t.licenseGate){let a=bs;if(t.licenseServerUrl){let c=new He,l=f=>Yt(f,a,{revocation:c,...t.now?{now:t.now}:{},maxStalenessSeconds:t.licenseRevocation?.maxStalenessSeconds??Gc}),u=l(t.licenseKey);n.licenseGate=
798
+ {isEntitled:f=>u.isEntitled(f),isActive:()=>u.isActive(),status:()=>u.status(),reason:()=>u.reason()};let d=`${t.licenseServerUrl.replace(/\/+$/,"")}/licenses/revocations`;o=new Zt({url:d,publicKeyPem:a,
799
+ snapshot:c,getRefreshAfter:()=>u.refreshAfter?.(),...t.now?{nowSeconds:()=>Math.floor(t.now()/1e3)}:{},...t.licenseFetch?{fetchImpl:t.licenseFetch}:{},...t.licensePollIntervalSeconds!=null?{pollIntervalSeconds:t.
800
+ licensePollIntervalSeconds}:{},...t.silenceWarnings!=null?{silenceWarnings:t.silenceWarnings}:{},...t.licenseRevocation??{}}),o.start(),t.serviceAccountKey&&t.licenseRefresh?.enabled!==false&&(r=new Qt({
801
+ url:`${t.licenseServerUrl.replace(/\/+$/,"")}/api/license/current`,serviceAccountKey:t.serviceAccountKey,publicKey:a,initialToken:t.licenseKey,revocados:c,onNewToken:f=>{u=l(f);},...t.licenseFetch?{fetchImpl:t.
802
+ licenseFetch}:{},...t.now?{now:t.now}:{},...t.licenseRefresh?.intervalMs!=null?{pollIntervalMs:t.licenseRefresh.intervalMs}:{},...t.licenseRefresh?.leadSeconds!=null?{refreshLeadSeconds:t.licenseRefresh.
803
+ leadSeconds}:{}}),r.start());}else n.licenseGate=Ss(t.licenseKey,a,t.now);}let s=new an(n),i;if(t.serviceAccountKey&&t.metering?.enabled!==false){let a=t.meteringUrl??(t.licenseServerUrl?`${t.licenseServerUrl.
804
+ replace(/\/+$/,"")}/api/metering/usage`:void 0);if(a){i=new pt({url:a,serviceAccountKey:t.serviceAccountKey,surface:"sdk",...t.metering?.orgId?{orgId:t.metering.orgId}:{},...t.metering?.flushIntervalMs!=
805
+ null?{flushIntervalMs:t.metering.flushIntervalMs}:{},...t.metering?.maxBatch!=null?{maxBatch:t.metering.maxBatch}:{},...t.metering?.maxBuffer!=null?{maxBuffer:t.metering.maxBuffer}:{},...t.meteringFetch?
806
+ {fetchImpl:t.meteringFetch}:t.licenseFetch?{fetchImpl:t.licenseFetch}:{},...t.now?{now:t.now}:{},...t.metering?.ci!=null?{ci:t.metering.ci}:{},...t.silenceWarnings!=null?{silenceWarnings:t.silenceWarnings}:
807
+ {}});let c=t.metering?.ci??mo();if(t.metering?.seatId)i.setSeat(t.metering.seatId,c);else {let l=i;ho(t.serviceAccountKey).then(u=>l.setSeat(u,c)).catch(()=>{});}i.start();}}return {generate:async a=>{let c=await s.
808
+ generate(a);if(i)try{i.record(c.report);}catch{}return c},close:()=>{o?.stop(),r?.stop(),i?.stop();}}}/*! Bundled license information:
804
809
 
805
810
  @noble/curves/utils.js:
806
811
  @noble/curves/abstract/modular.js:
@@ -808,4 +813,4 @@ try{i.record(c.report);}catch{}return c},close:()=>{o?.stop(),r?.stop(),i?.stop(
808
813
  @noble/curves/abstract/edwards.js:
809
814
  @noble/curves/ed25519.js:
810
815
  (*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) *)
811
- */export{yr as AnthropicProvider,fn as BV_SALA_VERSION,bt as CATALOGO,Ui as COMPACT_ROWS_INSTRUCTION,ks as DEFAULT_COST_MODEL,qc as DEFAULT_MAX_STALENESS_SECONDS,ms as EMBEDDED_PUBLIC_KEY,bn as ExactTokenizer,wt as ExecutionRouter,Ct as FormatSelector,hn as HeuristicEstimator,vt as InMemoryExactCache,Jo as InMemorySemanticCache,Rn as InMemoryToolSetFreezer,De as LicenseError,al as MODELOS_POR_CODIFICACION,$o as MODELS_BY_ENCODING,Ln as MockProvider,gr as OpenAICompatibleProvider,Qs as PRECIOS_AL_DIA,Zc as QUALITY_STATUSES,En as ResolverRegistry,Yt as RevocationPoller,qe as RevocationSnapshot,je as SavingsLedger,It as SchemaRegistry,kt as Singleflight,gn as TokenizerRegistry,St as ToolSelector,rt as TraceCollector,Ho as UMBRAL_LOCAL,dt as UsageEmitter,Di as adaptiveK,wi as arithmeticResolver,wn as buildExactKey,Uo as buildInflightKey,kn as canonicalize,nr as compactRowsSerializer,ar as compresionFiel,Ua as computeNextDelay,gi as cosine,qi as createCompactRowsSerializer,Wo as createDefaultResolvers,Qc as createHandoff,Mu as createMockProvider,vf as createSavingsLayer,rr as csvSerializer,Xo as decodeCompactRows,Ai as dedupe,jo as defaultTokenizerRegistry,fo as deriveSeatId,uo as deriveStatus,po as detectCi,qo as embebedorLocal,Gl as emptyState,Fi as encodeCompactRows,Ei as evalArithmetic,Sn as evaluatePolicy,Yo as executeRetrievalPlan,ys as gateFromKey,Ne as heuristicEstimator,$a as isKeyset,Ae as isStrictCompatible,Zo as jsonCompactSerializer,vi as keyTokensMatch,Gt as liveGateFromKey,Yl as mergeDelta,vn as modelFamilyOf,Tn as multisetEqual,nt as negationCount,Iu as noopCompressor,yt as normalizeText,et as numericTokens,xt as precioDeLista,Zl as projectContext,vu as providerNativeBackend,mn as randomId,ni as registerExactTokenizer,cl as registrarTokenizadorExacto,Li as renderState,ir as resolveConstraintBackend,ws as resolveDependencies,Bd as resolveLicense,ie as sha256,Pn as shouldCompress,Se as stableStringify,Rt as uniformColumns,ae as validateAgainstSchema,hi as vectorLocal,lo as verifyCompactSignature,Ue as verifyLicenseToken,xs as verifyRevocationList,Cu as withProtectedSpans,tt as words};
816
+ */export{wr as AnthropicProvider,mn as BV_SALA_VERSION,yt as CATALOGO,Ji as COMPACT_ROWS_INSTRUCTION,Es as DEFAULT_COST_MODEL,Gc as DEFAULT_MAX_STALENESS_SECONDS,bs as EMBEDDED_PUBLIC_KEY,yn as ExactTokenizer,St as ExecutionRouter,It as FormatSelector,gn as HeuristicEstimator,kt as InMemoryExactCache,Yo as InMemorySemanticCache,Cn as InMemoryToolSetFreezer,De as LicenseError,pl as MODELOS_POR_CODIFICACION,zo as MODELS_BY_ENCODING,Mn as MockProvider,xr as OpenAICompatibleProvider,oi as PRECIOS_AL_DIA,nl as QUALITY_STATUSES,Rn as ResolverRegistry,Zt as RevocationPoller,He as RevocationSnapshot,je as SavingsLedger,Ot as SchemaRegistry,wt as Singleflight,bn as TokenizerRegistry,Tt as ToolSelector,st as TraceCollector,Wo as UMBRAL_LOCAL,pt as UsageEmitter,Bi as adaptiveK,Ri as arithmeticResolver,Sn as buildExactKey,Ho as buildInflightKey,wn as canonicalize,sr as compactRowsSerializer,ur as compresionFiel,Wa as computeNextDelay,vi as cosine,Wi as createCompactRowsSerializer,Zo as createDefaultResolvers,rl as createHandoff,Fu as createMockProvider,Ef as createSavingsLayer,ar as csvSerializer,tr as decodeCompactRows,Mi as dedupe,Fo as defaultTokenizerRegistry,ho as deriveSeatId,fo as deriveStatus,mo as detectCi,Jo as embebedorLocal,eu as emptyState,qi as encodeCompactRows,Oi as evalArithmetic,Tn as evaluatePolicy,Qo as executeRetrievalPlan,Ss as gateFromKey,Ne as heuristicEstimator,Ua as isKeyset,Ae as isStrictCompatible,er as jsonCompactSerializer,Ti as keyTokensMatch,uo as licenseKeyShape,Yt as liveGateFromKey,tu as mergeDelta,kn as modelFamilyOf,En as multisetEqual,ot as negationCount,Pu as noopCompressor,Ue as normalizeLicenseKey,vt as normalizeText,tt as numericTokens,xt as precioDeLista,nu as projectContext,Eu as providerNativeBackend,hn as randomId,ii as registerExactTokenizer,fl as registrarTokenizadorExacto,ji as renderState,lr as resolveConstraintBackend,Rs as resolveDependencies,zd as resolveLicense,ie as sha256,Ln as shouldCompress,Se as stableStringify,Ct as uniformColumns,ae as validateAgainstSchema,xi as vectorLocal,po as verifyCompactSignature,qe as verifyLicenseToken,ws as verifyRevocationList,Du as withProtectedSpans,nt as words};