omnigateway 0.15.3 → 0.15.4
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/README.md +90 -6
- package/bin/omni.js +218 -190
- package/gateway.js +390 -338
- package/package.json +1 -1
- package/public/assets/_app-kgxk7ake.js +1 -0
- package/public/assets/_app.accounts-3jabfvcs.js +1 -0
- package/public/assets/_app.console-y69399jc.js +1 -0
- package/public/assets/_app.database-r5kg3838.js +1 -0
- package/public/assets/_app.index-22awhb38.js +1 -0
- package/public/assets/_app.keys-7vh81n1w.js +1 -0
- package/public/assets/_app.logs-rssv5a6z.js +1 -0
- package/public/assets/_app.models-82m2f0kr.js +1 -0
- package/public/assets/_app.plugins.$pluginId-e4xva5tz.js +1 -0
- package/public/assets/_app.settings-fqzg7wnn.js +1 -0
- package/public/assets/_app.usage-32vje0s7.js +1 -0
- package/public/assets/client-d3mjj5ey.js +1 -0
- package/public/assets/index-0j7sghrn.js +2 -0
- package/public/assets/index-4dz4bgrb.js +2 -0
- package/public/assets/index-85cnhw3e.js +2 -0
- package/public/assets/index-8bewp9z1.js +6 -0
- package/public/assets/index-938qd7p2.js +2 -0
- package/public/assets/index-d09hs7ex.js +2 -0
- package/public/assets/index-d0t1fj1y.js +2 -0
- package/public/assets/index-dq2f7yk0.js +2 -0
- package/public/assets/index-f7t0kve8.js +2 -0
- package/public/assets/index-fcew0gga.js +2 -0
- package/public/assets/index-h3nb7n4d.css +1 -0
- package/public/assets/index-hk28xepa.js +2 -0
- package/public/assets/index-nnpqs2w6.js +2 -0
- package/public/assets/index-p9vbm21a.js +46 -0
- package/public/assets/index-sbe0ydnc.js +2 -0
- package/public/assets/index-t1cs42r4.js +2 -0
- package/public/assets/index-v31xha7b.js +2 -0
- package/public/assets/index-wjqdtafp.js +2 -0
- package/public/assets/index-xdyjb1an.js +2 -0
- package/public/assets/index-z7c4qz9d.js +54 -0
- package/public/assets/index-zkt5p0qd.js +2 -0
- package/public/assets/login-p97b96t9.js +1 -0
- package/public/index.html +5 -13
- package/public/shared/chunks/react-e7vf2dk6.js +2 -0
- package/public/shared/chunks/react-mv7wrde1.js +2 -0
- package/public/shared/chunks/react-ybbhws22.js +2 -0
- package/public/shared/chunks/react-z0w6knjn.js +2 -0
- package/public/shared/dashboard-sdk.js +1 -1
- package/public/shared/jsx-runtime.js +1 -1
- package/public/shared/react-dom-client.js +9 -9
- package/public/shared/react-dom.js +1 -1
- package/public/shared/react-query.js +1 -1
- package/public/shared/react.js +1 -1
- package/public/shared/styled-components.js +5 -6
- package/public/assets/Chip-B2iXmJJC.js +0 -37
- package/public/assets/CopyValue-CWSTp4v8.js +0 -27
- package/public/assets/Field-CUEEy19T.js +0 -60
- package/public/assets/Lamp-CL0i4yaa.js +0 -26
- package/public/assets/Meter-stpt3vQu.js +0 -14
- package/public/assets/Panel-CsovmtxF.js +0 -225
- package/public/assets/Rack-1lijWt5h.js +0 -483
- package/public/assets/Readout-DlT5oxGO.js +0 -31
- package/public/assets/RequestTable-uRTmuPwB.js +0 -93
- package/public/assets/Select-C0c13SKD.js +0 -141
- package/public/assets/SummaryDeck-DnQnRmQ8.js +0 -15
- package/public/assets/Table-CVDZ69Zx.js +0 -38
- package/public/assets/Toggle-BvVa_jla.js +0 -39
- package/public/assets/TokenBreakdown-B8cSaOOr.js +0 -32
- package/public/assets/WindowChart-CaPUJ4GJ.js +0 -11
- package/public/assets/_app-CSru2YTE.js +0 -1
- package/public/assets/_app.accounts-DmJhe6QV.js +0 -70
- package/public/assets/_app.console-DQlcBpSu.js +0 -24
- package/public/assets/_app.database-DoDu8HOG.js +0 -24
- package/public/assets/_app.index-BEeD4XSS.js +0 -67
- package/public/assets/_app.keys-MXvgkBUB.js +0 -120
- package/public/assets/_app.logs-CjUjeVHg.js +0 -46
- package/public/assets/_app.models-mNIL-1oS.js +0 -148
- package/public/assets/_app.plugins._pluginId-CsJXQg6X.js +0 -20
- package/public/assets/_app.settings-CYMwWA8D.js +0 -88
- package/public/assets/_app.usage-Dd33vB8x.js +0 -78
- package/public/assets/chevron-right-ocqzquMZ.js +0 -1
- package/public/assets/client-KUNw8ZtZ.js +0 -48
- package/public/assets/index-B9izdV6t.js +0 -14
- package/public/assets/index-Co2s5xMk.css +0 -1
- package/public/assets/limits-iRyDMg04.js +0 -1
- package/public/assets/login-DrbTJF6e.js +0 -45
- package/public/assets/plus-D_lvSfDL.js +0 -1
- package/public/assets/preload-helper-1xe0b53X.js +0 -1
- package/public/assets/reasons-Du1OBWAM.js +0 -1
- package/public/assets/rotate-ccw-CwTftDdz.js +0 -1
- package/public/assets/shared-HVgLEGgl.js +0 -77
- package/public/assets/trash-CmuxOGpN.js +0 -1
- package/public/shared/chunks/jsx-runtime-CznXPbDH.js +0 -1
- package/public/shared/chunks/react-DK6rpPfu.js +0 -1
- package/public/shared/chunks/react-dom-Wr82bmbV.js +0 -1
- package/public/shared/chunks/rolldown-runtime-CbXtAM7H.js +0 -1
- /package/public/assets/{archivo-latin-ext-standard-normal-7khWdh9v.woff2 → archivo-latin-ext-standard-normal-5717f37059660ca5.woff2} +0 -0
- /package/public/assets/{archivo-latin-standard-normal-DY7AcnAa.woff2 → archivo-latin-standard-normal-e3a28eade21a900c.woff2} +0 -0
- /package/public/assets/{archivo-vietnamese-standard-normal-rJmnGBSt.woff2 → archivo-vietnamese-standard-normal-332e6f66de84927c.woff2} +0 -0
- /package/public/assets/{spline-sans-mono-latin-ext-wght-normal-Dh0aNLWd.woff2 → spline-sans-mono-latin-ext-wght-normal-0ca9a3989044d1f9.woff2} +0 -0
- /package/public/assets/{spline-sans-mono-latin-wght-normal-DlaB5ohX.woff2 → spline-sans-mono-latin-wght-normal-46b7dcafe3e51dbe.woff2} +0 -0
package/bin/omni.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env bun
|
|
2
2
|
// @bun
|
|
3
|
-
var
|
|
3
|
+
var Yd={reset:"\x1B[0m",dim:"\x1B[2m",red:"\x1B[31m",green:"\x1B[32m",yellow:"\x1B[33m",blue:"\x1B[34m",magenta:"\x1B[35m",cyan:"\x1B[36m",orange:"\x1B[38;5;208m",violet:"\x1B[38;5;99m",azure:"\x1B[38;5;33m"},ep={out:(e)=>{process.stdout.write(`${e}
|
|
4
4
|
`)},err:(e)=>{process.stderr.write(`${e}
|
|
5
|
-
`)},raw:(e)=>{process.stdout.write(e)}};function
|
|
6
|
-
`)}function
|
|
7
|
-
`)}function R(e,t,n,r){if(e.json){t.out(JSON.stringify(n,null,2));return}let o=r();if(o.length>0)t.out(o)}function X(e,t,n){if(!e.json)t.err(n)}function oe(e){if(e===null||!Number.isFinite(e))return"\u2014";let t=new Date(e);if(Number.isNaN(t.getTime()))return"out of range";return t.toISOString().replace("T"," ").slice(0,19)}function Gl(e,t){if(e===null||!Number.isFinite(e))return"\u2014";let n=Math.max(0,Math.round((t-e)/1000));if(n<60)return`${n}s`;if(n<3600)return`${Math.round(n/60)}m`;if(n<86400)return`${Math.round(n/3600)}h`;return`${Math.round(n/86400)}d`}var jl=(e)=>String(e).padStart(2,"0");function io(e){let t=Math.max(0,Math.round(e/1000));if(t<60)return`${t}s`;if(t<3600)return`${Math.floor(t/60)}m`;if(t<86400)return`${Math.floor(t/3600)}h${jl(Math.floor(t/60)%60)}m`;return`${Math.floor(t/86400)}d${jl(Math.floor(t/3600)%24)}h`}function Xn(e){return`$${e.toFixed(e<1?4:2)}`}function ce(e){if(!Number.isFinite(e)||e<0)return"\u2014";if(e<1024)return`${Math.round(e)} B`;let t=e/1024;if(t<1024)return`${t.toFixed(1)} KB`;return`${(t/1024).toFixed(1)} MB`}import{existsSync as qN,mkdirSync as HN,readFileSync as WN,renameSync as jN,rmSync as KN,writeFileSync as GN}from"fs";import{homedir as ZN}from"os";function Qn(e){let t=Object.values(e).filter((r)=>typeof r==="number");return Object.entries(e).filter(([r,o])=>t.indexOf(+r)===-1).map(([r,o])=>o)}function Js(e,t="|"){return e.map((n)=>na(n)).join(t)}function Yn(e,t){if(typeof t==="bigint")return t.toString();return t}class Xl{constructor(e){this._getter=e,this._value=void 0}get value(){let e=this._getter;if(e!==void 0)this._value=e(),this._getter=void 0;return this._value}}function Jn(e){return new Xl(e)}function Vl(e){return e===null||e===void 0}function so(e){let t=e.startsWith("^")?1:0,n=e.endsWith("$")?e.length-1:e.length;return e.slice(t,n)}function Ql(e,t){let n=e/t,r=Math.round(n),o=4*Number.EPSILON*Math.max(Math.abs(n),1);if(Math.abs(n-r)<o)return 0;return n-r}function je(e,t,n){Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0})}function er(e){let t=Object.getOwnPropertyDescriptor(e,"shape");return t?.get?t.get.raw:t?.value}function Et(e){return er(e._zod.def)??e._zod.def.shape}function Yl(e,t,n){Object.defineProperty(e,t,{get(){let r=n();return je(this,t,r),r},enumerable:!0,configurable:!0})}function Jl(e,t,n){if(t in e)je(e,t,n);else e[t]=n}function en(e,t,n,r){let o=Et(t);for(let i of n){let s=Object.getOwnPropertyDescriptor(o,i);if(!s.enumerable)continue;if(s.get)Yl(e,i,()=>{let a=t._zod.def.shape[i];return r?r(a,i):a});else Jl(e,i,r?r(s.value,i):s.value)}}function dT(e,t){for(let n of Reflect.ownKeys(t)){let r=Object.getOwnPropertyDescriptor(t,n);if(!r.enumerable)continue;if(r.get)Yl(e,n,()=>t[n]);else Jl(e,n,r.value)}}function Ne(...e){let t={};for(let n of e){let r=Object.getOwnPropertyDescriptors(n);Object.assign(t,r)}return Object.defineProperties({},t)}function ep(e){return JSON.stringify(e)}function tp(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}var ea="captureStackTrace"in Error?Error.captureStackTrace:(...e)=>{};function En(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}var np=Jn(()=>{if(Se.jitless)return!1;if(typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{return new Function(""),!0}catch(e){return!1}});function tn(e){if(En(e)===!1)return!1;let t=e.constructor;if(t===void 0)return!0;if(typeof t!=="function")return!0;let n=t.prototype;if(En(n)===!1)return!1;if(Object.prototype.hasOwnProperty.call(n,"isPrototypeOf")===!1)return!1;return!0}function ta(e){if(tn(e))return{...e};if(Array.isArray(e))return[...e];if(e instanceof Map)return new Map(e);if(e instanceof Set)return new Set(e);return e}var rp=new Set(["string","number","symbol"]);function Dt(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function ut(e,t,n){let r=new e._zod.constr(t??e._zod.def);if(!t||n?.parent)r._zod.parent=e;return r}function x(e){let t=e;if(!t)return{};if(typeof t==="string")return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");t.error=t.message}if(delete t.message,typeof t.error==="string")return{...t,error:()=>t.error};return t}function na(e){if(typeof e==="bigint")return e.toString()+"n";if(typeof e==="string")return`"${e}"`;return`${e}`}function op(e){return Object.keys(e).filter((t)=>e[t]._zod.optin!==void 0&&e[t]._zod.optout==="optional")}var ao=(()=>({safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-340282346638528860000000000000000000000,340282346638528860000000000000000000000],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]}))(),ra={int64:[BigInt("-9223372036854775808"),BigInt("9223372036854775807")],uint64:[BigInt(0),BigInt("18446744073709551615")]};function lT(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(".pick() cannot be used on object schemas containing refinements");let i={};return en(i,e,uo(e,t)),ut(e,Ne(n,{shape:i,checks:[]}))}function uo(e,t){let n=Et(e),r=[];for(let o of Reflect.ownKeys(t)){if(!Object.getOwnPropertyDescriptor(n,o)?.enumerable)throw Error(`Unrecognized key: "${String(o)}"`);if(t[o])r.push(o)}return r}function pT(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(".omit() cannot be used on object schemas containing refinements");let i=new Set(uo(e,t)),s={};return en(s,e,Reflect.ownKeys(Et(e)).filter((a)=>!i.has(a))),ut(e,Ne(n,{shape:s,checks:[]}))}function mT(e,t){if(!tn(t))throw Error("Invalid input to extend: expected a plain object");let n=e._zod.def.checks;if(n&&n.length>0){let o=Et(e);for(let i of Reflect.ownKeys(t))if(Object.getOwnPropertyDescriptor(o,i)!==void 0)throw Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}return ut(e,Ne(e._zod.def,{shape:ip(e,t)}))}function ip(e,t){let n={};return en(n,e,Reflect.ownKeys(Et(e))),dT(n,t),n}function fT(e,t){if(!tn(t))throw Error("Invalid input to safeExtend: expected a plain object");return ut(e,Ne(e._zod.def,{shape:ip(e,t)}))}function gT(e,t){if(!t?._zod?.def)throw Error("Invalid input to merge: expected an object schema. To merge a plain shape, use `.extend()`.");if(e._zod.def.checks?.length)throw Error(".merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.");let n={};en(n,e,Reflect.ownKeys(Et(e))),en(n,t,Reflect.ownKeys(Et(t)));let r=Ne(e._zod.def,{shape:n,get catchall(){return t._zod.def.catchall},checks:t._zod.def.checks??[]});return ut(e,r)}function sp(e,t,n,r="partial"){let i=t._zod.def.checks;if(i&&i.length>0)throw Error(`.${r}() cannot be used on object schemas containing refinements`);let a=n?new Set(uo(t,n)):void 0,u={};return en(u,t,Reflect.ownKeys(Et(t)),e&&((c,d)=>a&&!a.has(d)?c:new e({type:"optional",innerType:c}))),ut(t,Ne(t._zod.def,{shape:u,checks:[]}))}function hT(e,t,n){let r=n?new Set(uo(t,n)):void 0,o={};return en(o,t,Reflect.ownKeys(Et(t)),(i,s)=>r&&!r.has(s)?i:new e({type:"nonoptional",innerType:i})),ut(t,Ne(t._zod.def,{shape:o}))}function ct(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n<e.issues.length;n++)if(e.issues[n]?.continue!==!0)return!0;return!1}function ap(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n<e.issues.length;n++)if(e.issues[n]?.continue===!1)return!0;return!1}function Tt(e,t){return t.map((n)=>{var r;return(r=n).path??(r.path=[]),n.path.unshift(e),n})}function Vn(e){return typeof e==="string"?e:e?.message}function oa(e,t,n){var r;for(let o=t;o<e.length;o++)(r=e[o]).schema??(r.schema=n)}function dt(e,t,n){var r;let o=e.inst?._zod?.traits;if(o?.has("$ZodType"))if(o.has("$ZodCheck"))(r=e).schema??(r.schema=e.inst);else e.schema=e.inst;let i=e.schema!==e.inst?e.schema?._zod.def?.error:void 0,s=e.message?e.message:Vn(e.inst?._zod.def?.error?.(e))??Vn(i?.(e))??Vn(t?.error?.(e))??Vn(n.customError?.(e))??Vn(n.localeError?.(e))??"Invalid input",a={};for(let u of Object.keys(e)){if(u==="inst"||u==="schema"||u==="continue"||u==="input"||u==="__proto__")continue;a[u]=e[u]}if(a.path??(a.path=[]),a.message=s,t?.reportInput)a.input=e.input;return a}var yT=/[\uD800-\uDBFF]/;function co(e){let t=e.length;if(!yT.test(e))return t;let n=t;for(let r=0;r<t-1;r++)if((e.charCodeAt(r)&64512)===55296&&(e.charCodeAt(r+1)&64512)===56320)n--,r++;return n}function lo(e){if(Array.isArray(e))return"array";if(typeof e==="string")return"string";return"unknown"}function up(e){let t=typeof e;switch(t){case"number":return Number.isNaN(e)?"nan":"number";case"object":{if(e===null)return"null";if(Array.isArray(e))return"array";let n=e;if(n&&Object.getPrototypeOf(n)!==Object.prototype&&"constructor"in n&&n.constructor)return n.constructor.name}}return t}function nn(...e){let[t,n,r]=e;if(typeof t==="string")return{message:t,code:"custom",input:n,inst:r};return{...t}}function cp(e,t){for(let n in t){let r=Object.getOwnPropertyDescriptor(t,n);if(r.get)Object.defineProperty(e,n,{...r,enumerable:!1});else Zl(e,n,r.value)}for(let n of Object.getOwnPropertySymbols(t))Zl(e,n,t[n])}function vt(e,t,n,r=!0){return Object.defineProperty(e,t,{configurable:!0,writable:!0,enumerable:r,value:n}),n}function ia(e,t,n){return vt(e,t,n,!1)}function dp(e,t){for(let n in e){let r=e[n];Object.defineProperty(t,n,{configurable:!0,enumerable:!0,get(){return vt(this,n,r(this))},set(o){vt(this,n,o)}})}return t}function Zl(e,t,n){Object.defineProperty(e,t,{configurable:!0,get(){return this==null?n:vt(this,t,n.bind(this))},set(r){vt(this,t,r)}})}function _T(e,t){let n=Object.getPrototypeOf(e);return t in n?void 0:n}var Ys,Nt=!1,wT={configurable:!0,get(){Nt=!0;return}};function F(e,t,n){let r=Object.getPrototypeOf(e._zod);if(t in r&&Ys!==e._zod){Ys=void 0;return}Ys=e._zod,Object.defineProperty(r,t,{configurable:!0,get(){Object.defineProperty(this,t,wT);let o=Nt;Nt=!1;try{let i=n(this);if(Nt)delete this[t];else Object.defineProperty(this,t,{configurable:!0,writable:!0,value:i});return Nt=Nt||o,i}catch(i){throw delete this[t],Nt=Nt||o,i}},set(o){Object.defineProperty(this,t,{configurable:!0,writable:!0,value:o})}})}function bT(e,t,n,r){let o=_T(e,t);if(!o)return;Object.defineProperty(o,t,{configurable:!0,get(){let i={configurable:!0,writable:!0,enumerable:r,value:void 0};return Object.defineProperty(this,t,i),i.value=n(this),Object.defineProperty(this,t,i),i.value},set(i){Object.defineProperty(this,t,{configurable:!0,writable:!0,enumerable:r,value:i})}})}var kT="~constantCatch";function lp(e){let t=()=>e;return t[kT]=!0,t}var pp;var sa={value:void 0,enumerable:!1},mp="captureStackTrace"in Error?Error:null;function ET(e){let t=mp;if(t){let n=t.stackTraceLimit;if(typeof n==="number"){try{t.stackTraceLimit=0}catch{return mp=null,new e}try{return new e}finally{t.stackTraceLimit=n}}}return new e}function E(e,t,n,r){let o={};function i(l){this.def=l,this.constr=p,this.traits=new Set}i.prototype=o;let s=n,a=s&&new WeakSet;function u(l,m){if(!l._zod){sa.value=new i(m);try{Object.defineProperty(l,"_zod",sa)}finally{sa.value=void 0}}if(l._zod.traits.has(e))return;if(l._zod.traits.add(e),t(l,m),a){let h=Object.getPrototypeOf(l),f=l._zod.constr.prototype,y=h;while(y&&y!==f)y=Object.getPrototypeOf(y);let _=y??h;if(!a.has(_))a.add(_),cp(_,s)}let g=p.prototype;for(let h in g){if(!Object.prototype.hasOwnProperty.call(g,h))continue;if(!(h in l))l[h]=g[h].bind(l)}}let c=r?.Parent??Object;class d extends c{}Object.defineProperty(d,"name",{value:e});function p(l){let m=r?.Parent?ET(d):this;u(m,l);let g=m._zod.deferred;if(g){for(let f of g)f();m._zod.deferred=void 0}let h=globalThis.__zod_globalConfig?.postProcessor;if(h)h(m);return m}return Object.defineProperty(p,"init",{value:u}),Object.defineProperty(p,Symbol.hasInstance,{value:(l)=>{if(r?.Parent&&l instanceof r.Parent)return!0;return l?._zod?.traits?.has(e)}}),Object.defineProperty(p,"name",{value:e}),p}class lt extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}}class tr extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`);this.name="ZodEncodeError"}}(pp=globalThis).__zod_globalConfig??(pp.__zod_globalConfig={});var Se=globalThis.__zod_globalConfig;function De(e){if(e)Object.assign(Se,e);return Se}function vT(){let e=this._zod;return e.message??(e.message=JSON.stringify(e.def,Yn,2)),e.message}function TT(e){this._zod.message=e}var RT={get:vT,set:TT,enumerable:!0,configurable:!0},ua={value:void 0,enumerable:!1},fp=new WeakSet([Object.prototype,Error.prototype]),gp=(e,t)=>{e.name="$ZodError",ua.value=t,Object.defineProperty(e,"issues",ua),ua.value=void 0,Object.defineProperty(e,"message",RT);let n=Object.getPrototypeOf(e);if(!fp.has(n))fp.add(n),Object.defineProperty(n,"toString",{configurable:!0,enumerable:!1,get(){let r=()=>this.message;return Object.defineProperty(this,"toString",{value:r,configurable:!0,writable:!0}),r},set(r){Object.defineProperty(this,"toString",{value:r,configurable:!0,writable:!0})}})},hp=E("$ZodError",gp),JN=E("$ZodError",gp,void 0,{Parent:Error});function ST(e,t,n){if(!Object.prototype.hasOwnProperty.call(e,t))if(t==="__proto__")Object.defineProperty(e,t,{value:n(),writable:!0,enumerable:!0,configurable:!0});else e[t]=n();return e[t]}function yp(e,t=(n)=>n.message){let n={},r=[];for(let o of e.issues)if(o.path.length>0)ST(n,o.path[0],()=>[]).push(t(o));else r.push(t(o));return{formErrors:r,fieldErrors:n}}function _p(e,t=(n)=>n.message){let n={_errors:[]},r=(o,i=[])=>{for(let s of o.issues)if(s.code==="invalid_union"&&s.errors.length)s.errors.map((a)=>r({issues:a},[...i,...s.path]));else if(s.code==="invalid_key")r({issues:s.issues},[...i,...s.path]);else if(s.code==="invalid_element")r({issues:s.issues},[...i,...s.path]);else{let a=[...i,...s.path];if(a.length===0)n._errors.push(t(s));else{let u=n,c=0;while(c<a.length){let d=a[c],p=c===a.length-1;if(d==="_errors"){if(p)u._errors.push(t(s));c++;continue}if(!Object.prototype.hasOwnProperty.call(u,d))Object.defineProperty(u,d,{value:{_errors:[]},enumerable:!0,writable:!0,configurable:!0});let l=u[d];if(p)l._errors.push(t(s));u=l,c++}}}};return r(e),n}function po(e,t){return{callee:t?.callee??e,Err:t?.Err}}var mo=(e)=>{let t=(n,r,o,i)=>{let s=o?{...o,async:!1}:{async:!1},a=n._zod.run({value:r,issues:[]},s);if(a instanceof Promise)throw new lt;if(a.issues.length){let u=new(i?.Err??e)(a.issues.map((c)=>dt(c,s,De())));throw ea(u,i?.callee??t),u}return a.value};return t};var fo=(e)=>{let t=async(n,r,o,i)=>{let s=o?{...o,async:!0}:{async:!0},a=n._zod.run({value:r,issues:[]},s);if(a instanceof Promise)a=await a;if(a.issues.length){let u=new(i?.Err??e)(a.issues.map((c)=>dt(c,s,De())));throw ea(u,i?.callee??t),u}return a.value};return t};var go=(e)=>(t,n,r)=>{let o=r?{...r,async:!1}:{async:!1},i=t._zod.run({value:n,issues:[]},o);if(i instanceof Promise)throw new lt;return i.issues.length?wp(e,i.issues,o):{success:!0,data:i.value}};function wp(e,t,n){let r;return{success:!1,get error(){if(!r)r=new e(t.map((o)=>dt(o,n,De()))),t=void 0,n=void 0;return r},set error(o){r=o,t=void 0,n=void 0}}}var ho=(e)=>async(t,n,r)=>{let o=r?{...r,async:!0}:{async:!0},i=t._zod.run({value:n,issues:[]},o);if(i instanceof Promise)i=await i;return i.issues.length?wp(e,i.issues,o):{success:!0,data:i.value}};var xT=Symbol.for("zod.compile.invalid"),AT=Symbol.for("zod.compile.fallback"),ca=(e,t,n)=>{let r=e._zod.bag.validator;if(r!==void 0){if(r(t)!==xT)return!0;if(r.definite===!0&&n===void 0)return!1}return OT(e,t,n)};function OT(e,t,n){let r=n?{...n,async:!1,abortEarly:!0}:{async:!1,abortEarly:!0},o=e._zod.bag.fallbackRun,i;if(o)r[AT]=!0,i=o({value:t,issues:[]},r);else i=e._zod.run({value:t,issues:[]},r);if(i instanceof Promise)throw new lt;return i.issues.length===0}var da=async(e,t,n)=>{let r=n?{...n,async:!0,abortEarly:!0}:{async:!0,abortEarly:!0},o=e._zod.run({value:t,issues:[]},r);if(o instanceof Promise)o=await o;return o.issues.length===0},bp=(e)=>{let t=mo(e),n=(r,o,i,s)=>{let a=i?{...i,direction:"backward"}:{direction:"backward"};return t(r,o,a,po(n,s))};return n};var kp=(e)=>{let t=mo(e),n=(r,o,i,s)=>t(r,o,i,po(n,s));return n};var Ep=(e)=>{let t=fo(e),n=async(r,o,i,s)=>{let a=i?{...i,direction:"backward"}:{direction:"backward"};return await t(r,o,a,po(n,s))};return n};var vp=(e)=>{let t=fo(e),n=async(r,o,i,s)=>await t(r,o,i,po(n,s));return n};var Tp=(e)=>(t,n,r)=>{let o=r?{...r,direction:"backward"}:{direction:"backward"};return go(e)(t,n,o)};var Rp=(e)=>(t,n,r)=>go(e)(t,n,r);var Sp=(e)=>async(t,n,r)=>{let o=r?{...r,direction:"backward"}:{direction:"backward"};return ho(e)(t,n,o)};var xp=(e)=>async(t,n,r)=>ho(e)(t,n,r);var Ap=/^[cC][0-9a-z]{6,}$/,Op=/^[0-9a-z]+$/,Cp=/^[0-7][0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{25}$/,Pp=/^[0-9a-vA-V]{20}$/,Ip=/^[A-Za-z0-9]{27}$/,Lp=/^[a-zA-Z0-9_-]{21}$/;function Np(e){return new RegExp(`^[a-zA-Z0-9_-]{${e}}$`)}var Dp=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/;var Up=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,pa=(e)=>{if(!e)return/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/;return new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`)};var Mp=/^(?:[A-Za-z0-9_'+\-]+\.)*[A-Za-z0-9_'+\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/;var CT="^(?=[\\s\\S]*[\\p{Extended_Pictographic}\\p{Regional_Indicator}\\u20E3])[\\p{Extended_Pictographic}\\p{Emoji_Component}]+$";function $p(){return new RegExp(CT,"u")}var Fp=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,Bp=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/;var zp=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,qp=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,Hp=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,Wp=/^(?:[A-Za-z0-9_-]{4})*(?:[A-Za-z0-9_-]{2,3})?$/;var jp=/^https?$/,Kp=/^\+[1-9]\d{6,14}$/;var Gp="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))";function PT(e){return new RegExp(`^${e}$`)}var Zp=PT(Gp);function la(e){return typeof e.precision==="number"?e.precision===-1?"(?:[01]\\d|2[0-3]):[0-5]\\d":e.precision===0?"(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d":`(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{${e.precision}}`:e.seconds?"(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?":"(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?"}function Xp(e){return new RegExp(`^${la(e)}$`)}function Vp(e){let t=["Z"];if(e.offset)t.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)");let n=`${la({precision:e.precision,seconds:!0})}(?:${t.join("|")})`,r=e.local?`${n}|${la({precision:e.precision})}`:n;return new RegExp(`^${Gp}T(?:${r})$`)}var Qp=/^[\s\S]{0,}$/;var ma=/^-?\d+$/,nr=/^-?\d+(?:\.\d+)?$/,Yp=/^(?:true|false)$/i;var Jp=/^[^A-Z]*$/,em=/^[^a-z]*$/;var pe=E("$ZodCheck",(e,t)=>{var n;e._zod??(e._zod={}),e._zod.def=t,(n=e._zod).onattach??(n.onattach=[])});var fa=(e)=>{let t=e.value;return!Vl(t)&&t.length!==void 0},yo={number:"number",bigint:"bigint",object:"date"},ga=E("$ZodCheckLessThan",(e,t)=>{pe.init(e,t);let n=yo[typeof t.value];e._zod.check=(r)=>{if(t.inclusive?r.value<=t.value:r.value<t.value)return;r.issues.push({origin:yo[typeof r.value]??n,code:"too_big",maximum:typeof t.value==="object"?t.value.getTime():t.value,input:r.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),ha=E("$ZodCheckGreaterThan",(e,t)=>{pe.init(e,t);let n=yo[typeof t.value];e._zod.check=(r)=>{if(t.inclusive?r.value>=t.value:r.value>t.value)return;r.issues.push({origin:yo[typeof r.value]??n,code:"too_small",minimum:typeof t.value==="object"?t.value.getTime():t.value,input:r.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),tm=E("$ZodCheckMultipleOf",(e,t)=>{pe.init(e,t),e._zod.check=(n)=>{if(typeof n.value!==typeof t.value)throw Error("Cannot mix number and bigint in multiple_of check.");if(typeof n.value==="bigint"?t.value!==BigInt(0)&&n.value%t.value===BigInt(0):Ql(n.value,t.value)===0)return;n.issues.push({origin:typeof n.value,code:"not_multiple_of",divisor:t.value,input:n.value,inst:e,continue:!t.abort})}}),nm=E("$ZodCheckNumberFormat",(e,t)=>{pe.init(e,t),t.format=t.format||"float64";let n=t.format?.includes("int"),r=n?"int":"number",[o,i]=ao[t.format];e._zod.check=(s)=>{let a=s.value;if(n){if(!Number.isInteger(a)){s.issues.push({expected:r,format:t.format,code:"invalid_type",continue:!1,input:a,inst:e});return}if(!Number.isSafeInteger(a)){if(a>0)s.issues.push({input:a,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:r,inclusive:!0,continue:!t.abort});else s.issues.push({input:a,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:r,inclusive:!0,continue:!t.abort});return}}if(a<o)s.issues.push({origin:"number",input:a,code:"too_small",minimum:o,inclusive:!0,inst:e,continue:!t.abort});if(a>i)s.issues.push({origin:"number",input:a,code:"too_big",maximum:i,inclusive:!0,inst:e,continue:!t.abort})}});var rm=E("$ZodCheckMaxLength",(e,t)=>{var n;pe.init(e,t),(n=e._zod.def).when??(n.when=fa),e._zod.check=(r)=>{let o=r.value,i=o.length;if((typeof o==="string"&&i>t.maximum?co(o):i)<=t.maximum)return;let a=lo(o);r.issues.push({origin:a,code:"too_big",maximum:t.maximum,inclusive:!0,input:o,inst:e,continue:!t.abort})}}),om=E("$ZodCheckMinLength",(e,t)=>{var n;pe.init(e,t),(n=e._zod.def).when??(n.when=fa),e._zod.check=(r)=>{let o=r.value,i=o.length;if((typeof o==="string"&&i>=t.minimum&&i<t.minimum*2?co(o):i)>=t.minimum)return;let a=lo(o);r.issues.push({origin:a,code:"too_small",minimum:t.minimum,inclusive:!0,input:o,inst:e,continue:!t.abort})}}),im=E("$ZodCheckLengthEquals",(e,t)=>{var n;pe.init(e,t),(n=e._zod.def).when??(n.when=fa),e._zod.check=(r)=>{let o=r.value,i=o.length,s=typeof o==="string"&&i>=t.length&&i<=t.length*2?co(o):i;if(s===t.length)return;let a=lo(o),u=s>t.length;r.issues.push({origin:a,...u?{code:"too_big",maximum:t.length}:{code:"too_small",minimum:t.length},inclusive:!0,exact:!0,input:r.value,inst:e,continue:!t.abort})}}),or=E("$ZodCheckStringFormat",(e,t)=>{var n,r;if(pe.init(e,t),t.pattern)(n=e._zod).check??(n.check=(o)=>{if(t.pattern.lastIndex=0,t.pattern.test(o.value))return;o.issues.push({origin:"string",code:"invalid_format",format:t.format,input:o.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})});else(r=e._zod).check??(r.check=()=>{})}),sm=E("$ZodCheckRegex",(e,t)=>{or.init(e,t),e._zod.check=(n)=>{if(t.pattern.lastIndex=0,t.pattern.test(n.value))return;n.issues.push({origin:"string",code:"invalid_format",format:"regex",input:n.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),am=E("$ZodCheckLowerCase",(e,t)=>{t.pattern??(t.pattern=Jp),or.init(e,t)}),um=E("$ZodCheckUpperCase",(e,t)=>{t.pattern??(t.pattern=em),or.init(e,t)}),cm=E("$ZodCheckIncludes",(e,t)=>{pe.init(e,t);let n=Dt(t.includes),r=new RegExp(typeof t.position==="number"?`^.{${t.position},}${n}`:n);t.pattern=r,e._zod.check=(o)=>{if(o.value.includes(t.includes,t.position))return;o.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:t.includes,input:o.value,inst:e,continue:!t.abort})}}),dm=E("$ZodCheckStartsWith",(e,t)=>{pe.init(e,t);let n=new RegExp(`^${Dt(t.prefix)}.*`);t.pattern??(t.pattern=n),e._zod.check=(r)=>{if(r.value.startsWith(t.prefix))return;r.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:t.prefix,input:r.value,inst:e,continue:!t.abort})}}),lm=E("$ZodCheckEndsWith",(e,t)=>{pe.init(e,t);let n=new RegExp(`.*${Dt(t.suffix)}$`);t.pattern??(t.pattern=n),e._zod.check=(r)=>{if(r.value.endsWith(t.suffix))return;r.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:t.suffix,input:r.value,inst:e,continue:!t.abort})}});var pm=E("$ZodCheckOverwrite",(e,t)=>{pe.init(e,t),e._zod.check=(n)=>{n.value=t.tx(n.value)}});class ya{constructor(e=[],t={}){this.content=[],this.indent=0,this.args=e,this.closed=t}indented(e){this.indent+=1;try{e(this)}finally{this.indent-=1}}write(e){if(typeof e==="function"){e(this,{execution:"sync"}),e(this,{execution:"async"});return}let n=e.split(`
|
|
5
|
+
`)},raw:(e)=>{process.stdout.write(e)}};function R(e,t,n){return e.color?`${Yd[t]}${n}${Yd.reset}`:n}function Qs(e){return e.replace(/\u001b\[[0-9;]*m/g,"").length}function K(e,t){let n=e.map((o,i)=>t.reduce((s,a)=>Math.max(s,Qs(a[i]??"")),Qs(o.header))),r=(o)=>o.map((i,s)=>{let a=" ".repeat(Math.max(0,(n[s]??0)-Qs(i)));return e[s]?.align==="right"?a+i:i+a}).join(" ").trimEnd();return[r(e.map((o)=>o.header)),...t.map((o)=>r(o))].join(`
|
|
6
|
+
`)}function z(e){let t=e.reduce((n,[r])=>Math.max(n,r.length),0);return e.map(([n,r])=>`${n.padEnd(t)} ${r}`).join(`
|
|
7
|
+
`)}function S(e,t,n,r){if(e.json){t.out(JSON.stringify(n,null,2));return}let o=r();if(o.length>0)t.out(o)}function Z(e,t,n){if(!e.json)t.err(n)}function oe(e){if(e===null||!Number.isFinite(e))return"\u2014";let t=new Date(e);if(Number.isNaN(t.getTime()))return"out of range";return t.toISOString().replace("T"," ").slice(0,19)}function tp(e,t){if(e===null||!Number.isFinite(e))return"\u2014";let n=Math.max(0,Math.round((t-e)/1000));if(n<60)return`${n}s`;if(n<3600)return`${Math.round(n/60)}m`;if(n<86400)return`${Math.round(n/3600)}h`;return`${Math.round(n/86400)}d`}var Jd=(e)=>String(e).padStart(2,"0");function ao(e){let t=Math.max(0,Math.round(e/1000));if(t<60)return`${t}s`;if(t<3600)return`${Math.floor(t/60)}m`;if(t<86400)return`${Math.floor(t/3600)}h${Jd(Math.floor(t/60)%60)}m`;return`${Math.floor(t/86400)}d${Jd(Math.floor(t/3600)%24)}h`}function Jn(e){return`$${e.toFixed(e<1?4:2)}`}function ce(e){if(!Number.isFinite(e)||e<0)return"\u2014";if(e<1024)return`${Math.round(e)} B`;let t=e/1024;if(t<1024)return`${t.toFixed(1)} KB`;return`${(t/1024).toFixed(1)} MB`}import{existsSync as ZN,mkdirSync as XN,readFileSync as VN,renameSync as QN,rmSync as YN,writeFileSync as JN}from"fs";import{homedir as eD}from"os";function tr(e){let t=Object.values(e).filter((r)=>typeof r==="number");return Object.entries(e).filter(([r,o])=>t.indexOf(+r)===-1).map(([r,o])=>o)}function Js(e,t="|"){return e.map((n)=>na(n)).join(t)}function nr(e,t){if(typeof t==="bigint")return t.toString();return t}class rp{constructor(e){this._getter=e,this._value=void 0}get value(){let e=this._getter;if(e!==void 0)this._value=e(),this._getter=void 0;return this._value}}function rr(e){return new rp(e)}function op(e){return e===null||e===void 0}function uo(e){let t=e.startsWith("^")?1:0,n=e.endsWith("$")?e.length-1:e.length;return e.slice(t,n)}function ip(e,t){let n=e/t,r=Math.round(n),o=4*Number.EPSILON*Math.max(Math.abs(n),1);if(Math.abs(n-r)<o)return 0;return n-r}function Ge(e,t,n){Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0})}function or(e){let t=Object.getOwnPropertyDescriptor(e,"shape");return t?.get?t.get.raw:t?.value}function Tt(e){return or(e._zod.def)??e._zod.def.shape}function sp(e,t,n){Object.defineProperty(e,t,{get(){let r=n();return Ge(this,t,r),r},enumerable:!0,configurable:!0})}function ap(e,t,n){if(t in e)Ge(e,t,n);else e[t]=n}function nn(e,t,n,r){let o=Tt(t);for(let i of n){let s=Object.getOwnPropertyDescriptor(o,i);if(!s.enumerable)continue;if(s.get)sp(e,i,()=>{let a=t._zod.def.shape[i];return r?r(a,i):a});else ap(e,i,r?r(s.value,i):s.value)}}function kT(e,t){for(let n of Reflect.ownKeys(t)){let r=Object.getOwnPropertyDescriptor(t,n);if(!r.enumerable)continue;if(r.get)sp(e,n,()=>t[n]);else ap(e,n,r.value)}}function Me(...e){let t={};for(let n of e){let r=Object.getOwnPropertyDescriptors(n);Object.assign(t,r)}return Object.defineProperties({},t)}function up(e){return JSON.stringify(e)}function cp(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}var ea="captureStackTrace"in Error?Error.captureStackTrace:(...e)=>{};function Tn(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}var lp=rr(()=>{if(xe.jitless)return!1;if(typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{return new Function(""),!0}catch(e){return!1}});function rn(e){if(Tn(e)===!1)return!1;let t=e.constructor;if(t===void 0)return!0;if(typeof t!=="function")return!0;let n=t.prototype;if(Tn(n)===!1)return!1;if(Object.prototype.hasOwnProperty.call(n,"isPrototypeOf")===!1)return!1;return!0}function ta(e){if(rn(e))return{...e};if(Array.isArray(e))return[...e];if(e instanceof Map)return new Map(e);if(e instanceof Set)return new Set(e);return e}var dp=new Set(["string","number","symbol"]);function Ut(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function dt(e,t,n){let r=new e._zod.constr(t??e._zod.def);if(!t||n?.parent)r._zod.parent=e;return r}function A(e){let t=e;if(!t)return{};if(typeof t==="string")return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");t.error=t.message}if(delete t.message,typeof t.error==="string")return{...t,error:()=>t.error};return t}function na(e){if(typeof e==="bigint")return e.toString()+"n";if(typeof e==="string")return`"${e}"`;return`${e}`}function pp(e){return Object.keys(e).filter((t)=>e[t]._zod.optin!==void 0&&e[t]._zod.optout==="optional")}var co=(()=>({safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-340282346638528860000000000000000000000,340282346638528860000000000000000000000],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]}))(),ra={int64:[BigInt("-9223372036854775808"),BigInt("9223372036854775807")],uint64:[BigInt(0),BigInt("18446744073709551615")]};function ET(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(".pick() cannot be used on object schemas containing refinements");let i={};return nn(i,e,lo(e,t)),dt(e,Me(n,{shape:i,checks:[]}))}function lo(e,t){let n=Tt(e),r=[];for(let o of Reflect.ownKeys(t)){if(!Object.getOwnPropertyDescriptor(n,o)?.enumerable)throw Error(`Unrecognized key: "${String(o)}"`);if(t[o])r.push(o)}return r}function vT(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(".omit() cannot be used on object schemas containing refinements");let i=new Set(lo(e,t)),s={};return nn(s,e,Reflect.ownKeys(Tt(e)).filter((a)=>!i.has(a))),dt(e,Me(n,{shape:s,checks:[]}))}function TT(e,t){if(!rn(t))throw Error("Invalid input to extend: expected a plain object");let n=e._zod.def.checks;if(n&&n.length>0){let o=Tt(e);for(let i of Reflect.ownKeys(t))if(Object.getOwnPropertyDescriptor(o,i)!==void 0)throw Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}return dt(e,Me(e._zod.def,{shape:mp(e,t)}))}function mp(e,t){let n={};return nn(n,e,Reflect.ownKeys(Tt(e))),kT(n,t),n}function RT(e,t){if(!rn(t))throw Error("Invalid input to safeExtend: expected a plain object");return dt(e,Me(e._zod.def,{shape:mp(e,t)}))}function ST(e,t){if(!t?._zod?.def)throw Error("Invalid input to merge: expected an object schema. To merge a plain shape, use `.extend()`.");if(e._zod.def.checks?.length)throw Error(".merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.");let n={};nn(n,e,Reflect.ownKeys(Tt(e))),nn(n,t,Reflect.ownKeys(Tt(t)));let r=Me(e._zod.def,{shape:n,get catchall(){return t._zod.def.catchall},checks:t._zod.def.checks??[]});return dt(e,r)}function fp(e,t,n,r="partial"){let i=t._zod.def.checks;if(i&&i.length>0)throw Error(`.${r}() cannot be used on object schemas containing refinements`);let a=n?new Set(lo(t,n)):void 0,u={};return nn(u,t,Reflect.ownKeys(Tt(t)),e&&((l,c)=>a&&!a.has(c)?l:new e({type:"optional",innerType:l}))),dt(t,Me(t._zod.def,{shape:u,checks:[]}))}function xT(e,t,n){let r=n?new Set(lo(t,n)):void 0,o={};return nn(o,t,Reflect.ownKeys(Tt(t)),(i,s)=>r&&!r.has(s)?i:new e({type:"nonoptional",innerType:i})),dt(t,Me(t._zod.def,{shape:o}))}function pt(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n<e.issues.length;n++)if(e.issues[n]?.continue!==!0)return!0;return!1}function gp(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n<e.issues.length;n++)if(e.issues[n]?.continue===!1)return!0;return!1}function St(e,t){return t.map((n)=>{var r;return(r=n).path??(r.path=[]),n.path.unshift(e),n})}function er(e){return typeof e==="string"?e:e?.message}function oa(e,t,n){var r;for(let o=t;o<e.length;o++)(r=e[o]).schema??(r.schema=n)}function mt(e,t,n){var r;let o=e.inst?._zod?.traits;if(o?.has("$ZodType"))if(o.has("$ZodCheck"))(r=e).schema??(r.schema=e.inst);else e.schema=e.inst;let i=e.schema!==e.inst?e.schema?._zod.def?.error:void 0,s=e.message?e.message:er(e.inst?._zod.def?.error?.(e))??er(i?.(e))??er(t?.error?.(e))??er(n.customError?.(e))??er(n.localeError?.(e))??"Invalid input",a={};for(let u of Object.keys(e)){if(u==="inst"||u==="schema"||u==="continue"||u==="input"||u==="__proto__")continue;a[u]=e[u]}if(a.path??(a.path=[]),a.message=s,t?.reportInput)a.input=e.input;return a}var AT=/[\uD800-\uDBFF]/;function po(e){let t=e.length;if(!AT.test(e))return t;let n=t;for(let r=0;r<t-1;r++)if((e.charCodeAt(r)&64512)===55296&&(e.charCodeAt(r+1)&64512)===56320)n--,r++;return n}function mo(e){if(Array.isArray(e))return"array";if(typeof e==="string")return"string";return"unknown"}function hp(e){let t=typeof e;switch(t){case"number":return Number.isNaN(e)?"nan":"number";case"object":{if(e===null)return"null";if(Array.isArray(e))return"array";let n=e;if(n&&Object.getPrototypeOf(n)!==Object.prototype&&"constructor"in n&&n.constructor)return n.constructor.name}}return t}function on(...e){let[t,n,r]=e;if(typeof t==="string")return{message:t,code:"custom",input:n,inst:r};return{...t}}function yp(e,t){for(let n in t){let r=Object.getOwnPropertyDescriptor(t,n);if(r.get)Object.defineProperty(e,n,{...r,enumerable:!1});else np(e,n,r.value)}for(let n of Object.getOwnPropertySymbols(t))np(e,n,t[n])}function Rt(e,t,n,r=!0){return Object.defineProperty(e,t,{configurable:!0,writable:!0,enumerable:r,value:n}),n}function ia(e,t,n){return Rt(e,t,n,!1)}function _p(e,t){for(let n in e){let r=e[n];Object.defineProperty(t,n,{configurable:!0,enumerable:!0,get(){return Rt(this,n,r(this))},set(o){Rt(this,n,o)}})}return t}function np(e,t,n){Object.defineProperty(e,t,{configurable:!0,get(){return this==null?n:Rt(this,t,n.bind(this))},set(r){Rt(this,t,r)}})}function OT(e,t){let n=Object.getPrototypeOf(e);return t in n?void 0:n}var Ys,Mt=!1,CT={configurable:!0,get(){Mt=!0;return}};function F(e,t,n){let r=Object.getPrototypeOf(e._zod);if(t in r&&Ys!==e._zod){Ys=void 0;return}Ys=e._zod,Object.defineProperty(r,t,{configurable:!0,get(){Object.defineProperty(this,t,CT);let o=Mt;Mt=!1;try{let i=n(this);if(Mt)delete this[t];else Object.defineProperty(this,t,{configurable:!0,writable:!0,value:i});return Mt=Mt||o,i}catch(i){throw delete this[t],Mt=Mt||o,i}},set(o){Object.defineProperty(this,t,{configurable:!0,writable:!0,value:o})}})}function PT(e,t,n,r){let o=OT(e,t);if(!o)return;Object.defineProperty(o,t,{configurable:!0,get(){let i={configurable:!0,writable:!0,enumerable:r,value:void 0};return Object.defineProperty(this,t,i),i.value=n(this),Object.defineProperty(this,t,i),i.value},set(i){Object.defineProperty(this,t,{configurable:!0,writable:!0,enumerable:r,value:i})}})}var IT="~constantCatch";function wp(e){let t=()=>e;return t[IT]=!0,t}var bp;var sa={value:void 0,enumerable:!1},kp="captureStackTrace"in Error?Error:null;function LT(e){let t=kp;if(t){let n=t.stackTraceLimit;if(typeof n==="number"){try{t.stackTraceLimit=0}catch{return kp=null,new e}try{return new e}finally{t.stackTraceLimit=n}}}return new e}function E(e,t,n,r){let o={};function i(d){this.def=d,this.constr=p,this.traits=new Set}i.prototype=o;let s=n,a=s&&new WeakSet;function u(d,m){if(!d._zod){sa.value=new i(m);try{Object.defineProperty(d,"_zod",sa)}finally{sa.value=void 0}}if(d._zod.traits.has(e))return;if(d._zod.traits.add(e),t(d,m),a){let h=Object.getPrototypeOf(d),f=d._zod.constr.prototype,y=h;while(y&&y!==f)y=Object.getPrototypeOf(y);let _=y??h;if(!a.has(_))a.add(_),yp(_,s)}let g=p.prototype;for(let h in g){if(!Object.prototype.hasOwnProperty.call(g,h))continue;if(!(h in d))d[h]=g[h].bind(d)}}let l=r?.Parent??Object;class c extends l{}Object.defineProperty(c,"name",{value:e});function p(d){let m=r?.Parent?LT(c):this;u(m,d);let g=m._zod.deferred;if(g){for(let f of g)f();m._zod.deferred=void 0}let h=globalThis.__zod_globalConfig?.postProcessor;if(h)h(m);return m}return Object.defineProperty(p,"init",{value:u}),Object.defineProperty(p,Symbol.hasInstance,{value:(d)=>{if(r?.Parent&&d instanceof r.Parent)return!0;return d?._zod?.traits?.has(e)}}),Object.defineProperty(p,"name",{value:e}),p}class ft extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}}class ir extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`);this.name="ZodEncodeError"}}(bp=globalThis).__zod_globalConfig??(bp.__zod_globalConfig={});var xe=globalThis.__zod_globalConfig;function Ue(e){if(e)Object.assign(xe,e);return xe}function NT(){let e=this._zod;return e.message??(e.message=JSON.stringify(e.def,nr,2)),e.message}function DT(e){this._zod.message=e}var MT={get:NT,set:DT,enumerable:!0,configurable:!0},ua={value:void 0,enumerable:!1},Ep=new WeakSet([Object.prototype,Error.prototype]),vp=(e,t)=>{e.name="$ZodError",ua.value=t,Object.defineProperty(e,"issues",ua),ua.value=void 0,Object.defineProperty(e,"message",MT);let n=Object.getPrototypeOf(e);if(!Ep.has(n))Ep.add(n),Object.defineProperty(n,"toString",{configurable:!0,enumerable:!1,get(){let r=()=>this.message;return Object.defineProperty(this,"toString",{value:r,configurable:!0,writable:!0}),r},set(r){Object.defineProperty(this,"toString",{value:r,configurable:!0,writable:!0})}})},Tp=E("$ZodError",vp),iD=E("$ZodError",vp,void 0,{Parent:Error});function UT(e,t,n){if(!Object.prototype.hasOwnProperty.call(e,t))if(t==="__proto__")Object.defineProperty(e,t,{value:n(),writable:!0,enumerable:!0,configurable:!0});else e[t]=n();return e[t]}function Rp(e,t=(n)=>n.message){let n={},r=[];for(let o of e.issues)if(o.path.length>0)UT(n,o.path[0],()=>[]).push(t(o));else r.push(t(o));return{formErrors:r,fieldErrors:n}}function Sp(e,t=(n)=>n.message){let n={_errors:[]},r=(o,i=[])=>{for(let s of o.issues)if(s.code==="invalid_union"&&s.errors.length)s.errors.map((a)=>r({issues:a},[...i,...s.path]));else if(s.code==="invalid_key")r({issues:s.issues},[...i,...s.path]);else if(s.code==="invalid_element")r({issues:s.issues},[...i,...s.path]);else{let a=[...i,...s.path];if(a.length===0)n._errors.push(t(s));else{let u=n,l=0;while(l<a.length){let c=a[l],p=l===a.length-1;if(c==="_errors"){if(p)u._errors.push(t(s));l++;continue}if(!Object.prototype.hasOwnProperty.call(u,c))Object.defineProperty(u,c,{value:{_errors:[]},enumerable:!0,writable:!0,configurable:!0});let d=u[c];if(p)d._errors.push(t(s));u=d,l++}}}};return r(e),n}function fo(e,t){return{callee:t?.callee??e,Err:t?.Err}}var go=(e)=>{let t=(n,r,o,i)=>{let s=o?{...o,async:!1}:{async:!1},a=n._zod.run({value:r,issues:[]},s);if(a instanceof Promise)throw new ft;if(a.issues.length){let u=new(i?.Err??e)(a.issues.map((l)=>mt(l,s,Ue())));throw ea(u,i?.callee??t),u}return a.value};return t};var ho=(e)=>{let t=async(n,r,o,i)=>{let s=o?{...o,async:!0}:{async:!0},a=n._zod.run({value:r,issues:[]},s);if(a instanceof Promise)a=await a;if(a.issues.length){let u=new(i?.Err??e)(a.issues.map((l)=>mt(l,s,Ue())));throw ea(u,i?.callee??t),u}return a.value};return t};var yo=(e)=>(t,n,r)=>{let o=r?{...r,async:!1}:{async:!1},i=t._zod.run({value:n,issues:[]},o);if(i instanceof Promise)throw new ft;return i.issues.length?xp(e,i.issues,o):{success:!0,data:i.value}};function xp(e,t,n){let r;return{success:!1,get error(){if(!r)r=new e(t.map((o)=>mt(o,n,Ue()))),t=void 0,n=void 0;return r},set error(o){r=o,t=void 0,n=void 0}}}var _o=(e)=>async(t,n,r)=>{let o=r?{...r,async:!0}:{async:!0},i=t._zod.run({value:n,issues:[]},o);if(i instanceof Promise)i=await i;return i.issues.length?xp(e,i.issues,o):{success:!0,data:i.value}};var $T=Symbol.for("zod.compile.invalid"),FT=Symbol.for("zod.compile.fallback"),ca=(e,t,n)=>{let r=e._zod.bag.validator;if(r!==void 0){if(r(t)!==$T)return!0;if(r.definite===!0&&n===void 0)return!1}return BT(e,t,n)};function BT(e,t,n){let r=n?{...n,async:!1,abortEarly:!0}:{async:!1,abortEarly:!0},o=e._zod.bag.fallbackRun,i;if(o)r[FT]=!0,i=o({value:t,issues:[]},r);else i=e._zod.run({value:t,issues:[]},r);if(i instanceof Promise)throw new ft;return i.issues.length===0}var la=async(e,t,n)=>{let r=n?{...n,async:!0,abortEarly:!0}:{async:!0,abortEarly:!0},o=e._zod.run({value:t,issues:[]},r);if(o instanceof Promise)o=await o;return o.issues.length===0},Ap=(e)=>{let t=go(e),n=(r,o,i,s)=>{let a=i?{...i,direction:"backward"}:{direction:"backward"};return t(r,o,a,fo(n,s))};return n};var Op=(e)=>{let t=go(e),n=(r,o,i,s)=>t(r,o,i,fo(n,s));return n};var Cp=(e)=>{let t=ho(e),n=async(r,o,i,s)=>{let a=i?{...i,direction:"backward"}:{direction:"backward"};return await t(r,o,a,fo(n,s))};return n};var Pp=(e)=>{let t=ho(e),n=async(r,o,i,s)=>await t(r,o,i,fo(n,s));return n};var Ip=(e)=>(t,n,r)=>{let o=r?{...r,direction:"backward"}:{direction:"backward"};return yo(e)(t,n,o)};var Lp=(e)=>(t,n,r)=>yo(e)(t,n,r);var Np=(e)=>async(t,n,r)=>{let o=r?{...r,direction:"backward"}:{direction:"backward"};return _o(e)(t,n,o)};var Dp=(e)=>async(t,n,r)=>_o(e)(t,n,r);var Mp=/^[cC][0-9a-z]{6,}$/,Up=/^[0-9a-z]+$/,$p=/^[0-7][0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{25}$/,Fp=/^[0-9a-vA-V]{20}$/,Bp=/^[A-Za-z0-9]{27}$/,zp=/^[a-zA-Z0-9_-]{21}$/;function qp(e){return new RegExp(`^[a-zA-Z0-9_-]{${e}}$`)}var Hp=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/;var Wp=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,pa=(e)=>{if(!e)return/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/;return new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`)};var jp=/^(?:[A-Za-z0-9_'+\-]+\.)*[A-Za-z0-9_'+\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/;var zT="^(?=[\\s\\S]*[\\p{Extended_Pictographic}\\p{Regional_Indicator}\\u20E3])[\\p{Extended_Pictographic}\\p{Emoji_Component}]+$";function Kp(){return new RegExp(zT,"u")}var Gp=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,Zp=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/;var Xp=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,Vp=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,Qp=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,Yp=/^(?:[A-Za-z0-9_-]{4})*(?:[A-Za-z0-9_-]{2,3})?$/;var Jp=/^https?$/,em=/^\+[1-9]\d{6,14}$/;var tm="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))";function qT(e){return new RegExp(`^${e}$`)}var nm=qT(tm);function da(e){return typeof e.precision==="number"?e.precision===-1?"(?:[01]\\d|2[0-3]):[0-5]\\d":e.precision===0?"(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d":`(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{${e.precision}}`:e.seconds?"(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?":"(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?"}function rm(e){return new RegExp(`^${da(e)}$`)}function om(e){let t=["Z"];if(e.offset)t.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)");let n=`${da({precision:e.precision,seconds:!0})}(?:${t.join("|")})`,r=e.local?`${n}|${da({precision:e.precision})}`:n;return new RegExp(`^${tm}T(?:${r})$`)}var im=/^[\s\S]{0,}$/;var ma=/^-?\d+$/,sr=/^-?\d+(?:\.\d+)?$/,sm=/^(?:true|false)$/i;var am=/^[^A-Z]*$/,um=/^[^a-z]*$/;var pe=E("$ZodCheck",(e,t)=>{var n;e._zod??(e._zod={}),e._zod.def=t,(n=e._zod).onattach??(n.onattach=[])});var fa=(e)=>{let t=e.value;return!op(t)&&t.length!==void 0},wo={number:"number",bigint:"bigint",object:"date"},ga=E("$ZodCheckLessThan",(e,t)=>{pe.init(e,t);let n=wo[typeof t.value];e._zod.check=(r)=>{if(t.inclusive?r.value<=t.value:r.value<t.value)return;r.issues.push({origin:wo[typeof r.value]??n,code:"too_big",maximum:typeof t.value==="object"?t.value.getTime():t.value,input:r.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),ha=E("$ZodCheckGreaterThan",(e,t)=>{pe.init(e,t);let n=wo[typeof t.value];e._zod.check=(r)=>{if(t.inclusive?r.value>=t.value:r.value>t.value)return;r.issues.push({origin:wo[typeof r.value]??n,code:"too_small",minimum:typeof t.value==="object"?t.value.getTime():t.value,input:r.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),cm=E("$ZodCheckMultipleOf",(e,t)=>{pe.init(e,t),e._zod.check=(n)=>{if(typeof n.value!==typeof t.value)throw Error("Cannot mix number and bigint in multiple_of check.");if(typeof n.value==="bigint"?t.value!==BigInt(0)&&n.value%t.value===BigInt(0):ip(n.value,t.value)===0)return;n.issues.push({origin:typeof n.value,code:"not_multiple_of",divisor:t.value,input:n.value,inst:e,continue:!t.abort})}}),lm=E("$ZodCheckNumberFormat",(e,t)=>{pe.init(e,t),t.format=t.format||"float64";let n=t.format?.includes("int"),r=n?"int":"number",[o,i]=co[t.format];e._zod.check=(s)=>{let a=s.value;if(n){if(!Number.isInteger(a)){s.issues.push({expected:r,format:t.format,code:"invalid_type",continue:!1,input:a,inst:e});return}if(!Number.isSafeInteger(a)){if(a>0)s.issues.push({input:a,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:r,inclusive:!0,continue:!t.abort});else s.issues.push({input:a,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:r,inclusive:!0,continue:!t.abort});return}}if(a<o)s.issues.push({origin:"number",input:a,code:"too_small",minimum:o,inclusive:!0,inst:e,continue:!t.abort});if(a>i)s.issues.push({origin:"number",input:a,code:"too_big",maximum:i,inclusive:!0,inst:e,continue:!t.abort})}});var dm=E("$ZodCheckMaxLength",(e,t)=>{var n;pe.init(e,t),(n=e._zod.def).when??(n.when=fa),e._zod.check=(r)=>{let o=r.value,i=o.length;if((typeof o==="string"&&i>t.maximum?po(o):i)<=t.maximum)return;let a=mo(o);r.issues.push({origin:a,code:"too_big",maximum:t.maximum,inclusive:!0,input:o,inst:e,continue:!t.abort})}}),pm=E("$ZodCheckMinLength",(e,t)=>{var n;pe.init(e,t),(n=e._zod.def).when??(n.when=fa),e._zod.check=(r)=>{let o=r.value,i=o.length;if((typeof o==="string"&&i>=t.minimum&&i<t.minimum*2?po(o):i)>=t.minimum)return;let a=mo(o);r.issues.push({origin:a,code:"too_small",minimum:t.minimum,inclusive:!0,input:o,inst:e,continue:!t.abort})}}),mm=E("$ZodCheckLengthEquals",(e,t)=>{var n;pe.init(e,t),(n=e._zod.def).when??(n.when=fa),e._zod.check=(r)=>{let o=r.value,i=o.length,s=typeof o==="string"&&i>=t.length&&i<=t.length*2?po(o):i;if(s===t.length)return;let a=mo(o),u=s>t.length;r.issues.push({origin:a,...u?{code:"too_big",maximum:t.length}:{code:"too_small",minimum:t.length},inclusive:!0,exact:!0,input:r.value,inst:e,continue:!t.abort})}}),ur=E("$ZodCheckStringFormat",(e,t)=>{var n,r;if(pe.init(e,t),t.pattern)(n=e._zod).check??(n.check=(o)=>{if(t.pattern.lastIndex=0,t.pattern.test(o.value))return;o.issues.push({origin:"string",code:"invalid_format",format:t.format,input:o.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})});else(r=e._zod).check??(r.check=()=>{})}),fm=E("$ZodCheckRegex",(e,t)=>{ur.init(e,t),e._zod.check=(n)=>{if(t.pattern.lastIndex=0,t.pattern.test(n.value))return;n.issues.push({origin:"string",code:"invalid_format",format:"regex",input:n.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),gm=E("$ZodCheckLowerCase",(e,t)=>{t.pattern??(t.pattern=am),ur.init(e,t)}),hm=E("$ZodCheckUpperCase",(e,t)=>{t.pattern??(t.pattern=um),ur.init(e,t)}),ym=E("$ZodCheckIncludes",(e,t)=>{pe.init(e,t);let n=Ut(t.includes),r=new RegExp(typeof t.position==="number"?`^.{${t.position},}${n}`:n);t.pattern=r,e._zod.check=(o)=>{if(o.value.includes(t.includes,t.position))return;o.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:t.includes,input:o.value,inst:e,continue:!t.abort})}}),_m=E("$ZodCheckStartsWith",(e,t)=>{pe.init(e,t);let n=new RegExp(`^${Ut(t.prefix)}.*`);t.pattern??(t.pattern=n),e._zod.check=(r)=>{if(r.value.startsWith(t.prefix))return;r.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:t.prefix,input:r.value,inst:e,continue:!t.abort})}}),wm=E("$ZodCheckEndsWith",(e,t)=>{pe.init(e,t);let n=new RegExp(`.*${Ut(t.suffix)}$`);t.pattern??(t.pattern=n),e._zod.check=(r)=>{if(r.value.endsWith(t.suffix))return;r.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:t.suffix,input:r.value,inst:e,continue:!t.abort})}});var bm=E("$ZodCheckOverwrite",(e,t)=>{pe.init(e,t),e._zod.check=(n)=>{n.value=t.tx(n.value)}});class ya{constructor(e=[],t={}){this.content=[],this.indent=0,this.args=e,this.closed=t}indented(e){this.indent+=1;try{e(this)}finally{this.indent-=1}}write(e){if(typeof e==="function"){e(this,{execution:"sync"}),e(this,{execution:"async"});return}let n=e.split(`
|
|
8
8
|
`).filter((i)=>i),r=Math.min(...n.map((i)=>i.length-i.trimStart().length)),o=n.map((i)=>i.slice(r)).map((i)=>" ".repeat(this.indent*2)+i);for(let i of o)this.content.push(i)}compile(){let e=Function,t=this?.content??[""];return new e(...Object.keys(this.closed),`return function (${this.args.join(", ")}) {
|
|
9
9
|
${t.join(`
|
|
10
10
|
`)}
|
|
11
|
-
};`)(...Object.values(this.closed))}}var fm={major:4,minor:6,patch:1};var Y=E("$ZodType",(e,t)=>{var n;e??(e={}),e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=fm;let r=e._zod.def.checks,o=e._zod.traits.has("$ZodCheck")?[e,...r??[]]:r?.length?[...r]:[];for(let i of o)for(let s of i._zod.onattach)s(e);if(o.length===0)(n=e._zod).deferred??(n.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{let i=(a,u,c)=>{if(a.memo)return a;let d=ct(a),p;for(let l of u){if(l._zod.def.when){if(ap(a))continue;if(!l._zod.def.when(a))continue}else if(d)continue;let m=a.issues.length,g=l._zod.check(a);if(g instanceof Promise&&c?.async===!1)throw new lt;if(p||g instanceof Promise)p=(p??Promise.resolve()).then(async()=>{if(await g,a.issues.length===m)return;if(oa(a.issues,m,e),!d)d=ct(a,m)});else{if(a.issues.length===m)continue;if(oa(a.issues,m,e),!d)d=ct(a,m)}}if(p)return p.then(()=>a);return a},s=(a,u,c)=>{if(ct(a))return a.aborted=!0,a;let d=i(u,o,c);if(d instanceof Promise){if(c.async===!1)throw new lt;return d.then((p)=>e._zod.parse(p,c))}return e._zod.parse(d,c)};e._zod.run=(a,u)=>{if(u.skipChecks)return e._zod.parse(a,u);if(u.direction==="backward"){let d=e._zod.parse({value:a.value,issues:[]},{...u,skipChecks:!0});if(d instanceof Promise)return d.then((p)=>s(p,a,u));return s(d,a,u)}let c=e._zod.parse(a,u);if(c instanceof Promise){if(u.async===!1)throw new lt;return c.then((d)=>i(d,o,u))}return i(c,o,u)}}},{get "~standard"(){return ia(this,"~standard",wa(this))},set "~standard"(e){vt(this,"~standard",e)}}),Rm=(e,t)=>e.issues.length?{issues:e.issues.map((n)=>dt(n,t,De()))}:{value:e.value};async function IT(e,t){let n={async:!0};return Rm(await e._zod.run({value:t,issues:[]},n),n)}function wa(e){return{validate:(t)=>{let n={async:!1};try{let r=e._zod.run({value:t,issues:[]},n);if(!(r instanceof Promise))return Rm(r,n)}catch(r){}return IT(e,t)},vendor:"zod",version:1}}var bo=E("$ZodString",(e,t)=>{Y.init(e,t),e._zod.pattern=t.pattern??Qp,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=String(n.value)}catch(o){}if(typeof n.value==="string")return n;return n.issues.push({expected:"string",code:"invalid_type",input:n.value,inst:e}),n}}),J=E("$ZodStringFormat",(e,t)=>{or.init(e,t),bo.init(e,t)}),Sm=E("$ZodGUID",(e,t)=>{t.pattern??(t.pattern=Up),J.init(e,t)}),xm=E("$ZodUUID",(e,t)=>{if(t.version){let r={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[t.version];if(r===void 0)throw Error(`Invalid UUID version: "${t.version}"`);t.pattern??(t.pattern=pa(r))}else t.pattern??(t.pattern=pa());J.init(e,t)}),Am=E("$ZodEmail",(e,t)=>{t.pattern??(t.pattern=Mp),J.init(e,t)}),Om=1,Cm=2;function LT(e,t){if(!t.normalize&&t.protocol?.source===jp.source&&!/^https?:\/\//i.test(e))return Om;try{return new URL(e)}catch{return Cm}}var NT=/[\t\n\r]/g;function DT(e){return e.replace(NT,"")}function UT(e,t){return t.lastIndex=0,t.test(e.hostname)}function MT(e,t){return t.lastIndex=0,t.test(e.protocol.endsWith(":")?e.protocol.slice(0,-1):e.protocol)}var Pm=E("$ZodURL",(e,t)=>{J.init(e,t),e._zod.check=(n)=>{try{let r=n.value.trim(),o=LT(r,t);if(o===Om){n.issues.push({code:"invalid_format",format:"url",note:"Invalid URL format",input:n.value,inst:e,continue:!t.abort});return}if(o===Cm){n.issues.push({code:"invalid_format",format:"url",input:n.value,inst:e,continue:!t.abort});return}if(t.hostname&&!UT(o,t.hostname))n.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:t.hostname.source,input:n.value,inst:e,continue:!t.abort});if(t.protocol&&!MT(o,t.protocol))n.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:t.protocol.source,input:n.value,inst:e,continue:!t.abort});n.value=t.normalize?o.href:DT(r);return}catch(r){n.issues.push({code:"invalid_format",format:"url",input:n.value,inst:e,continue:!t.abort})}}}),Im=E("$ZodEmoji",(e,t)=>{t.pattern??(t.pattern=$p()),J.init(e,t)}),Lm=E("$ZodNanoID",(e,t)=>{if(t.length!==void 0&&(!Number.isInteger(t.length)||t.length<1))throw Error(`Invalid nanoid length: ${t.length}`);t.pattern??(t.pattern=t.length===void 0?Lp:Np(t.length)),J.init(e,t)}),Nm=E("$ZodCUID",(e,t)=>{t.pattern??(t.pattern=Ap),J.init(e,t)}),Dm=E("$ZodCUID2",(e,t)=>{t.pattern??(t.pattern=Op),J.init(e,t)}),Um=E("$ZodULID",(e,t)=>{t.pattern??(t.pattern=Cp),J.init(e,t)}),Mm=E("$ZodXID",(e,t)=>{t.pattern??(t.pattern=Pp),J.init(e,t)}),$m=E("$ZodKSUID",(e,t)=>{t.pattern??(t.pattern=Ip),J.init(e,t)}),Fm=E("$ZodISODateTime",(e,t)=>{t.pattern??(t.pattern=Vp(t)),J.init(e,t)}),Bm=E("$ZodISODate",(e,t)=>{t.pattern??(t.pattern=Zp),J.init(e,t)}),zm=E("$ZodISOTime",(e,t)=>{t.pattern??(t.pattern=Xp(t)),J.init(e,t)}),qm=E("$ZodISODuration",(e,t)=>{t.pattern??(t.pattern=Dp),J.init(e,t)}),Hm=E("$ZodIPv4",(e,t)=>{t.pattern??(t.pattern=Fp),J.init(e,t)}),$T=/^[0-9a-fA-F:.]+$/;function Wm(e){if(!$T.test(e))return!1;try{return new URL(`http://[${e}]`),!0}catch{return!1}}var jm=E("$ZodIPv6",(e,t)=>{t.pattern??(t.pattern=Bp),J.init(e,t),e._zod.check=(n)=>{if(!Wm(n.value))n.issues.push({code:"invalid_format",format:"ipv6",input:n.value,inst:e,continue:!t.abort})}});var Km=E("$ZodCIDRv4",(e,t)=>{t.pattern??(t.pattern=zp),J.init(e,t)});function FT(e){let t=e.split("/");if(t.length!==2)return!1;let[n,r]=t;if(!r)return!1;let o=Number(r);if(`${o}`!==r)return!1;if(o<0||o>128)return!1;return Wm(n)}var Gm=E("$ZodCIDRv6",(e,t)=>{t.pattern??(t.pattern=qp),J.init(e,t),e._zod.check=(n)=>{if(!FT(n.value))n.issues.push({code:"invalid_format",format:"cidrv6",input:n.value,inst:e,continue:!t.abort})}});function Zm(e){if(e==="")return!0;if(/\s/.test(e))return!1;if(e.length%4!==0)return!1;try{return atob(e),!0}catch{return!1}}var ba=/^[0-9a-zA-Z+/]*={0,2}$/,Xm=E("$ZodBase64",(e,t)=>{t.pattern??(t.pattern=ba),J.init(e,t),e._zod.check=(n)=>{if(Zm(n.value))return;n.issues.push({code:"invalid_format",format:"base64",input:n.value,inst:e,continue:!t.abort})}}),ko=/^[A-Za-z0-9_-]*$/;function BT(e){if(!ko.test(e))return!1;let t=e.replace(/[-_]/g,(r)=>r==="-"?"+":"/"),n=t.padEnd(Math.ceil(t.length/4)*4,"=");return Zm(n)}var Vm=E("$ZodBase64URL",(e,t)=>{t.pattern??(t.pattern=ko),J.init(e,t),e._zod.check=(n)=>{if(BT(n.value))return;n.issues.push({code:"invalid_format",format:"base64url",input:n.value,inst:e,continue:!t.abort})}}),Qm=E("$ZodE164",(e,t)=>{t.pattern??(t.pattern=Kp),J.init(e,t)});function zT(e,t=null){try{let n=e.split(".");if(n.length!==3)return!1;let[r]=n;if(!r)return!1;let o=JSON.parse(atob(r));if("typ"in o&&o?.typ!=="JWT")return!1;if(!o.alg)return!1;if(t&&(!("alg"in o)||o.alg!==t))return!1;return!0}catch{return!1}}var Ym=E("$ZodJWT",(e,t)=>{J.init(e,t),e._zod.check=(n)=>{if(zT(n.value,t.alg))return;n.issues.push({code:"invalid_format",format:"jwt",input:n.value,inst:e,continue:!t.abort})}});var ka=E("$ZodNumber",(e,t)=>{Y.init(e,t),e._zod.pattern=nr,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=Number(n.value)}catch(s){}let o=n.value;if(typeof o==="number"&&!Number.isNaN(o)&&Number.isFinite(o))return n;let i=typeof o==="number"?Number.isNaN(o)?"NaN":!Number.isFinite(o)?String(o):void 0:void 0;return n.issues.push({expected:"number",code:"invalid_type",input:o,inst:e,...i?{received:i}:{}}),n}}),Jm=E("$ZodNumberFormat",(e,t)=>{nm.init(e,t),ka.init(e,t)}),ef=E("$ZodBoolean",(e,t)=>{Y.init(e,t),e._zod.pattern=Yp,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=Boolean(n.value)}catch(i){}let o=n.value;if(typeof o==="boolean")return n;return n.issues.push({expected:"boolean",code:"invalid_type",input:o,inst:e}),n}});var tf=E("$ZodUnknown",(e,t)=>{Y.init(e,t),e._zod.parse=(n)=>n}),nf=E("$ZodNever",(e,t)=>{Y.init(e,t),e._zod.parse=(n,r)=>(n.issues.push({expected:"never",code:"invalid_type",input:n.value,inst:e}),n)});function gm(e,t,n){if(e.issues.length)t.issues.push(...Tt(n,e.issues));t.value[n]=e.value}var rf=E("$ZodArray",(e,t)=>{Y.init(e,t);let n=Se.memoizer;n?.attach(e),e._zod.parse=(r,o)=>{let i=r.value;if(!Array.isArray(i))return r.issues.push({expected:"array",code:"invalid_type",input:i,inst:e}),r;r.value=n?n.alloc(e,r,Array(i.length),o):Array(i.length);let s=[],a=o?.abortEarly;for(let u=0;u<i.length;u++){let c=i[u],d=t.element._zod.run({value:c,issues:[]},o);if(d instanceof Promise)s.push(d.then((p)=>gm(p,r,u)));else if(gm(d,r,u),a&&d.issues.length!==0&&ct(d))break}if(s.length)return Promise.all(s).then(()=>r);return r}});function wo(e,t,n,r,o,i){let s=n in r,a=i==="optional";if(!s&&a&&o==="optional")return;if(e.issues.length){if(o!==void 0&&a&&!s)return;t.issues.push(...Tt(n,e.issues))}if(!s&&o===void 0){if(!e.issues.length)t.issues.push({code:"invalid_type",expected:"nonoptional",input:void 0,path:[n]});return}if(e.value===void 0){if(s)t.value[n]=void 0}else t.value[n]=e.value}var qT=[];function of(e){let t=Object.keys(e.shape),n=Object.getOwnPropertySymbols(e.shape),r=n.length?n:qT,o=r.length?[...t,...r]:t;for(let s of o)if(!e.shape?.[s]?._zod?.traits?.has("$ZodType"))throw Error(`Invalid element at key "${String(s)}": expected a Zod schema`);let i=op(e.shape);return{...e,allKeys:o,symbolKeys:r,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(i)}}function sf(e,t,n,r,o,i,s){let a=[],u=o.keySet,c=o.catchall._zod,d=c.def.type,{optin:p,optout:l}=c,m=0;for(let g in t){if(s&&n.issues.length!==m){if(ct(n,m))break;m=n.issues.length}if(u.has(g))continue;if(g==="__proto__"){if(d==="never")a.push(g);continue}if(d==="never"){a.push(g);continue}let h=c.run({value:t[g],issues:[]},r);if(h instanceof Promise)e.push(h.then((f)=>wo(f,n,g,t,p,l)));else wo(h,n,g,t,p,l)}if(a.length)n.issues.push({code:"unrecognized_keys",keys:a,input:t,inst:i,continue:!0});if(!e.length)return n;return Promise.all(e).then(()=>n)}var HT=E("$ZodObject",(e,t)=>{Y.init(e,t);let n=Object.getOwnPropertyDescriptor(t,"shape"),r=n?.get?n.get.raw:t.shape??{};if(r){let c=()=>{let d={...r};return Object.defineProperty(t,"shape",{value:d}),c.raw=d,d};c.raw=r,Object.defineProperty(t,"shape",{get:c})}let o=Jn(()=>of(t));F(e,"propValues",(c)=>{let d=c.def.shape,p={};for(let l in d){let m=d[l]._zod;if(m.values){if(!Object.prototype.hasOwnProperty.call(p,l))je(p,l,new Set);for(let g of m.values)p[l].add(g);if(m.optin!==void 0)p[l].add(void 0)}}return p});let i=En,s=t.catchall,a,u=Se.memoizer;u?.attach(e),e._zod.parse=(c,d)=>{a??(a=o.value);let p=c.value;if(!i(p))return c.issues.push({expected:"object",code:"invalid_type",input:p,inst:e}),c;c.value=u?u.alloc(e,c,{},d):{};let l=[],m=a.shape,g=d?.abortEarly,h=c.issues.length;for(let f of a.allKeys){if(g&&c.issues.length!==h){if(ct(c,h))break;h=c.issues.length}if(f==="__proto__")continue;let y=m[f],_=y._zod.optin,w=y._zod.optout,v=y._zod.run({value:p[f],issues:[]},d);if(v instanceof Promise)l.push(v.then((k)=>wo(k,c,f,p,_,w)));else wo(v,c,f,p,_,w)}if(!s)return l.length?Promise.all(l).then(()=>c):c;return sf(l,p,c,d,o.value,e,g===!0)}}),af=E("$ZodObjectJIT",(e,t)=>{HT.init(e,t);let n=e._zod.parse,r=Jn(()=>of(t)),o=Se.memoizer,i=(m)=>{let g=r.value,h=g.symbolKeys,f=new ya(["payload","ctx"],{shape:m,inst:e,memo:o,syms:h}),y=(k)=>`shape[${k}]._zod.run({ value: input[${k}], issues: [] }, ctx)`,_=(k,T)=>`
|
|
11
|
+
};`)(...Object.values(this.closed))}}var Em={major:4,minor:6,patch:1};var V=E("$ZodType",(e,t)=>{var n;e??(e={}),e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=Em;let r=e._zod.def.checks,o=e._zod.traits.has("$ZodCheck")?[e,...r??[]]:r?.length?[...r]:[];for(let i of o)for(let s of i._zod.onattach)s(e);if(o.length===0)(n=e._zod).deferred??(n.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{let i=(a,u,l)=>{if(a.memo)return a;let c=pt(a),p;for(let d of u){if(d._zod.def.when){if(gp(a))continue;if(!d._zod.def.when(a))continue}else if(c)continue;let m=a.issues.length,g=d._zod.check(a);if(g instanceof Promise&&l?.async===!1)throw new ft;if(p||g instanceof Promise)p=(p??Promise.resolve()).then(async()=>{if(await g,a.issues.length===m)return;if(oa(a.issues,m,e),!c)c=pt(a,m)});else{if(a.issues.length===m)continue;if(oa(a.issues,m,e),!c)c=pt(a,m)}}if(p)return p.then(()=>a);return a},s=(a,u,l)=>{if(pt(a))return a.aborted=!0,a;let c=i(u,o,l);if(c instanceof Promise){if(l.async===!1)throw new ft;return c.then((p)=>e._zod.parse(p,l))}return e._zod.parse(c,l)};e._zod.run=(a,u)=>{if(u.skipChecks)return e._zod.parse(a,u);if(u.direction==="backward"){let c=e._zod.parse({value:a.value,issues:[]},{...u,skipChecks:!0});if(c instanceof Promise)return c.then((p)=>s(p,a,u));return s(c,a,u)}let l=e._zod.parse(a,u);if(l instanceof Promise){if(u.async===!1)throw new ft;return l.then((c)=>i(c,o,u))}return i(l,o,u)}}},{get "~standard"(){return ia(this,"~standard",wa(this))},set "~standard"(e){Rt(this,"~standard",e)}}),Lm=(e,t)=>e.issues.length?{issues:e.issues.map((n)=>mt(n,t,Ue()))}:{value:e.value};async function HT(e,t){let n={async:!0};return Lm(await e._zod.run({value:t,issues:[]},n),n)}function wa(e){return{validate:(t)=>{let n={async:!1};try{let r=e._zod.run({value:t,issues:[]},n);if(!(r instanceof Promise))return Lm(r,n)}catch(r){}return HT(e,t)},vendor:"zod",version:1}}var Eo=E("$ZodString",(e,t)=>{V.init(e,t),e._zod.pattern=t.pattern??im,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=String(n.value)}catch(o){}if(typeof n.value==="string")return n;return n.issues.push({expected:"string",code:"invalid_type",input:n.value,inst:e}),n}}),Q=E("$ZodStringFormat",(e,t)=>{ur.init(e,t),Eo.init(e,t)}),Nm=E("$ZodGUID",(e,t)=>{t.pattern??(t.pattern=Wp),Q.init(e,t)}),Dm=E("$ZodUUID",(e,t)=>{if(t.version){let r={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[t.version];if(r===void 0)throw Error(`Invalid UUID version: "${t.version}"`);t.pattern??(t.pattern=pa(r))}else t.pattern??(t.pattern=pa());Q.init(e,t)}),Mm=E("$ZodEmail",(e,t)=>{t.pattern??(t.pattern=jp),Q.init(e,t)}),Um=1,$m=2;function WT(e,t){if(!t.normalize&&t.protocol?.source===Jp.source&&!/^https?:\/\//i.test(e))return Um;try{return new URL(e)}catch{return $m}}var jT=/[\t\n\r]/g;function KT(e){return e.replace(jT,"")}function GT(e,t){return t.lastIndex=0,t.test(e.hostname)}function ZT(e,t){return t.lastIndex=0,t.test(e.protocol.endsWith(":")?e.protocol.slice(0,-1):e.protocol)}var Fm=E("$ZodURL",(e,t)=>{Q.init(e,t),e._zod.check=(n)=>{try{let r=n.value.trim(),o=WT(r,t);if(o===Um){n.issues.push({code:"invalid_format",format:"url",note:"Invalid URL format",input:n.value,inst:e,continue:!t.abort});return}if(o===$m){n.issues.push({code:"invalid_format",format:"url",input:n.value,inst:e,continue:!t.abort});return}if(t.hostname&&!GT(o,t.hostname))n.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:t.hostname.source,input:n.value,inst:e,continue:!t.abort});if(t.protocol&&!ZT(o,t.protocol))n.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:t.protocol.source,input:n.value,inst:e,continue:!t.abort});n.value=t.normalize?o.href:KT(r);return}catch(r){n.issues.push({code:"invalid_format",format:"url",input:n.value,inst:e,continue:!t.abort})}}}),Bm=E("$ZodEmoji",(e,t)=>{t.pattern??(t.pattern=Kp()),Q.init(e,t)}),zm=E("$ZodNanoID",(e,t)=>{if(t.length!==void 0&&(!Number.isInteger(t.length)||t.length<1))throw Error(`Invalid nanoid length: ${t.length}`);t.pattern??(t.pattern=t.length===void 0?zp:qp(t.length)),Q.init(e,t)}),qm=E("$ZodCUID",(e,t)=>{t.pattern??(t.pattern=Mp),Q.init(e,t)}),Hm=E("$ZodCUID2",(e,t)=>{t.pattern??(t.pattern=Up),Q.init(e,t)}),Wm=E("$ZodULID",(e,t)=>{t.pattern??(t.pattern=$p),Q.init(e,t)}),jm=E("$ZodXID",(e,t)=>{t.pattern??(t.pattern=Fp),Q.init(e,t)}),Km=E("$ZodKSUID",(e,t)=>{t.pattern??(t.pattern=Bp),Q.init(e,t)}),Gm=E("$ZodISODateTime",(e,t)=>{t.pattern??(t.pattern=om(t)),Q.init(e,t)}),Zm=E("$ZodISODate",(e,t)=>{t.pattern??(t.pattern=nm),Q.init(e,t)}),Xm=E("$ZodISOTime",(e,t)=>{t.pattern??(t.pattern=rm(t)),Q.init(e,t)}),Vm=E("$ZodISODuration",(e,t)=>{t.pattern??(t.pattern=Hp),Q.init(e,t)}),Qm=E("$ZodIPv4",(e,t)=>{t.pattern??(t.pattern=Gp),Q.init(e,t)}),XT=/^[0-9a-fA-F:.]+$/;function Ym(e){if(!XT.test(e))return!1;try{return new URL(`http://[${e}]`),!0}catch{return!1}}var Jm=E("$ZodIPv6",(e,t)=>{t.pattern??(t.pattern=Zp),Q.init(e,t),e._zod.check=(n)=>{if(!Ym(n.value))n.issues.push({code:"invalid_format",format:"ipv6",input:n.value,inst:e,continue:!t.abort})}});var ef=E("$ZodCIDRv4",(e,t)=>{t.pattern??(t.pattern=Xp),Q.init(e,t)});function VT(e){let t=e.split("/");if(t.length!==2)return!1;let[n,r]=t;if(!r)return!1;let o=Number(r);if(`${o}`!==r)return!1;if(o<0||o>128)return!1;return Ym(n)}var tf=E("$ZodCIDRv6",(e,t)=>{t.pattern??(t.pattern=Vp),Q.init(e,t),e._zod.check=(n)=>{if(!VT(n.value))n.issues.push({code:"invalid_format",format:"cidrv6",input:n.value,inst:e,continue:!t.abort})}});function nf(e){if(e==="")return!0;if(/\s/.test(e))return!1;if(e.length%4!==0)return!1;try{return atob(e),!0}catch{return!1}}var ba=/^[0-9a-zA-Z+/]*={0,2}$/,rf=E("$ZodBase64",(e,t)=>{t.pattern??(t.pattern=ba),Q.init(e,t),e._zod.check=(n)=>{if(nf(n.value))return;n.issues.push({code:"invalid_format",format:"base64",input:n.value,inst:e,continue:!t.abort})}}),vo=/^[A-Za-z0-9_-]*$/;function QT(e){if(!vo.test(e))return!1;let t=e.replace(/[-_]/g,(r)=>r==="-"?"+":"/"),n=t.padEnd(Math.ceil(t.length/4)*4,"=");return nf(n)}var of=E("$ZodBase64URL",(e,t)=>{t.pattern??(t.pattern=vo),Q.init(e,t),e._zod.check=(n)=>{if(QT(n.value))return;n.issues.push({code:"invalid_format",format:"base64url",input:n.value,inst:e,continue:!t.abort})}}),sf=E("$ZodE164",(e,t)=>{t.pattern??(t.pattern=em),Q.init(e,t)});function YT(e,t=null){try{let n=e.split(".");if(n.length!==3)return!1;let[r]=n;if(!r)return!1;let o=JSON.parse(atob(r));if("typ"in o&&o?.typ!=="JWT")return!1;if(!o.alg)return!1;if(t&&(!("alg"in o)||o.alg!==t))return!1;return!0}catch{return!1}}var af=E("$ZodJWT",(e,t)=>{Q.init(e,t),e._zod.check=(n)=>{if(YT(n.value,t.alg))return;n.issues.push({code:"invalid_format",format:"jwt",input:n.value,inst:e,continue:!t.abort})}});var ka=E("$ZodNumber",(e,t)=>{V.init(e,t),e._zod.pattern=sr,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=Number(n.value)}catch(s){}let o=n.value;if(typeof o==="number"&&!Number.isNaN(o)&&Number.isFinite(o))return n;let i=typeof o==="number"?Number.isNaN(o)?"NaN":!Number.isFinite(o)?String(o):void 0:void 0;return n.issues.push({expected:"number",code:"invalid_type",input:o,inst:e,...i?{received:i}:{}}),n}}),uf=E("$ZodNumberFormat",(e,t)=>{lm.init(e,t),ka.init(e,t)}),cf=E("$ZodBoolean",(e,t)=>{V.init(e,t),e._zod.pattern=sm,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=Boolean(n.value)}catch(i){}let o=n.value;if(typeof o==="boolean")return n;return n.issues.push({expected:"boolean",code:"invalid_type",input:o,inst:e}),n}});var lf=E("$ZodUnknown",(e,t)=>{V.init(e,t),e._zod.parse=(n)=>n}),df=E("$ZodNever",(e,t)=>{V.init(e,t),e._zod.parse=(n,r)=>(n.issues.push({expected:"never",code:"invalid_type",input:n.value,inst:e}),n)});function vm(e,t,n){if(e.issues.length)t.issues.push(...St(n,e.issues));t.value[n]=e.value}var pf=E("$ZodArray",(e,t)=>{V.init(e,t);let n=xe.memoizer;n?.attach(e),e._zod.parse=(r,o)=>{let i=r.value;if(!Array.isArray(i))return r.issues.push({expected:"array",code:"invalid_type",input:i,inst:e}),r;r.value=n?n.alloc(e,r,Array(i.length),o):Array(i.length);let s=[],a=o?.abortEarly;for(let u=0;u<i.length;u++){let l=i[u],c=t.element._zod.run({value:l,issues:[]},o);if(c instanceof Promise)s.push(c.then((p)=>vm(p,r,u)));else if(vm(c,r,u),a&&c.issues.length!==0&&pt(c))break}if(s.length)return Promise.all(s).then(()=>r);return r}});function ko(e,t,n,r,o,i){let s=n in r,a=i==="optional";if(!s&&a&&o==="optional")return;if(e.issues.length){if(o!==void 0&&a&&!s)return;t.issues.push(...St(n,e.issues))}if(!s&&o===void 0){if(!e.issues.length)t.issues.push({code:"invalid_type",expected:"nonoptional",input:void 0,path:[n]});return}if(e.value===void 0){if(s)t.value[n]=void 0}else t.value[n]=e.value}var JT=[];function mf(e){let t=Object.keys(e.shape),n=Object.getOwnPropertySymbols(e.shape),r=n.length?n:JT,o=r.length?[...t,...r]:t;for(let s of o)if(!e.shape?.[s]?._zod?.traits?.has("$ZodType"))throw Error(`Invalid element at key "${String(s)}": expected a Zod schema`);let i=pp(e.shape);return{...e,allKeys:o,symbolKeys:r,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(i)}}function ff(e,t,n,r,o,i,s){let a=[],u=o.keySet,l=o.catchall._zod,c=l.def.type,{optin:p,optout:d}=l,m=0;for(let g in t){if(s&&n.issues.length!==m){if(pt(n,m))break;m=n.issues.length}if(u.has(g))continue;if(g==="__proto__"){if(c==="never")a.push(g);continue}if(c==="never"){a.push(g);continue}let h=l.run({value:t[g],issues:[]},r);if(h instanceof Promise)e.push(h.then((f)=>ko(f,n,g,t,p,d)));else ko(h,n,g,t,p,d)}if(a.length)n.issues.push({code:"unrecognized_keys",keys:a,input:t,inst:i,continue:!0});if(!e.length)return n;return Promise.all(e).then(()=>n)}var eR=E("$ZodObject",(e,t)=>{V.init(e,t);let n=Object.getOwnPropertyDescriptor(t,"shape"),r=n?.get?n.get.raw:t.shape??{};if(r){let l=()=>{let c={...r};return Object.defineProperty(t,"shape",{value:c}),l.raw=c,c};l.raw=r,Object.defineProperty(t,"shape",{get:l})}let o=rr(()=>mf(t));F(e,"propValues",(l)=>{let c=l.def.shape,p={};for(let d in c){let m=c[d]._zod;if(m.values){if(!Object.prototype.hasOwnProperty.call(p,d))Ge(p,d,new Set);for(let g of m.values)p[d].add(g);if(m.optin!==void 0)p[d].add(void 0)}}return p});let i=Tn,s=t.catchall,a,u=xe.memoizer;u?.attach(e),e._zod.parse=(l,c)=>{a??(a=o.value);let p=l.value;if(!i(p))return l.issues.push({expected:"object",code:"invalid_type",input:p,inst:e}),l;l.value=u?u.alloc(e,l,{},c):{};let d=[],m=a.shape,g=c?.abortEarly,h=l.issues.length;for(let f of a.allKeys){if(g&&l.issues.length!==h){if(pt(l,h))break;h=l.issues.length}if(f==="__proto__")continue;let y=m[f],_=y._zod.optin,w=y._zod.optout,v=y._zod.run({value:p[f],issues:[]},c);if(v instanceof Promise)d.push(v.then((k)=>ko(k,l,f,p,_,w)));else ko(v,l,f,p,_,w)}if(!s)return d.length?Promise.all(d).then(()=>l):l;return ff(d,p,l,c,o.value,e,g===!0)}}),gf=E("$ZodObjectJIT",(e,t)=>{eR.init(e,t);let n=e._zod.parse,r=rr(()=>mf(t)),o=xe.memoizer,i=(m)=>{let g=r.value,h=g.symbolKeys,f=new ya(["payload","ctx"],{shape:m,inst:e,memo:o,syms:h}),y=(k)=>`shape[${k}]._zod.run({ value: input[${k}], issues: [] }, ctx)`,_=(k,T)=>`
|
|
12
12
|
let ${k}_ab = false;
|
|
13
13
|
for (let i = 0; i < ${k}.issues.length; i++) {
|
|
14
14
|
const iss = ${k}.issues[i];
|
|
@@ -19,27 +19,27 @@ ${t.join(`
|
|
|
19
19
|
if (${k}_ab && ctx && ctx.abortEarly) {
|
|
20
20
|
payload.value = newResult;
|
|
21
21
|
return payload;
|
|
22
|
-
}`;f.write("const input = payload.value;");let w=Object.create(null),v=0;for(let k of g.allKeys)w[k]=`key_${v++}`;f.write(o?"const newResult = memo.alloc(inst, payload, {}, ctx);":"const newResult = {};");for(let k of g.allKeys){if(k==="__proto__")continue;let T=w[k],
|
|
23
|
-
const ${T}_present = ${
|
|
22
|
+
}`;f.write("const input = payload.value;");let w=Object.create(null),v=0;for(let k of g.allKeys)w[k]=`key_${v++}`;f.write(o?"const newResult = memo.alloc(inst, payload, {}, ctx);":"const newResult = {};");for(let k of g.allKeys){if(k==="__proto__")continue;let T=w[k],x=typeof k==="symbol"?`syms[${h.indexOf(k)}]`:up(k),Y=`${x} in input`,_e=m[k],Ne=_e?._zod?.optin,te=Ne!==void 0,Je=_e?._zod?.optout==="optional";if(f.write(`const ${T} = ${y(x)};`),te&&Je){let Ke=Ne==="optional"?`${T}_present`:`${T}.value !== undefined || ${T}_present`;f.write(`
|
|
23
|
+
const ${T}_present = ${Y};
|
|
24
24
|
if (!${T}.issues.length || ${T}_present) {
|
|
25
|
-
if (${T}.issues.length) {${_(T,
|
|
25
|
+
if (${T}.issues.length) {${_(T,x)}
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
-
if (${
|
|
29
|
-
newResult[${
|
|
28
|
+
if (${Ke}) {
|
|
29
|
+
newResult[${x}] = ${T}.value;
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
-
`)}else if(!
|
|
34
|
-
const ${T}_present = ${
|
|
35
|
-
if (${T}.issues.length) {${_(T,
|
|
33
|
+
`)}else if(!te)f.write(`
|
|
34
|
+
const ${T}_present = ${Y};
|
|
35
|
+
if (${T}.issues.length) {${_(T,x)}
|
|
36
36
|
}
|
|
37
37
|
if (!${T}_present && !${T}.issues.length) {
|
|
38
38
|
payload.issues.push({
|
|
39
39
|
code: "invalid_type",
|
|
40
40
|
expected: "nonoptional",
|
|
41
41
|
input: undefined,
|
|
42
|
-
path: [${
|
|
42
|
+
path: [${x}]
|
|
43
43
|
});
|
|
44
44
|
if (ctx && ctx.abortEarly) {
|
|
45
45
|
payload.value = newResult;
|
|
@@ -48,24 +48,24 @@ ${t.join(`
|
|
|
48
48
|
}
|
|
49
49
|
|
|
50
50
|
if (${T}_present) {
|
|
51
|
-
newResult[${
|
|
51
|
+
newResult[${x}] = ${T}.value;
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
`);else f.write(`
|
|
55
|
-
if (${T}.issues.length) {${_(T,
|
|
55
|
+
if (${T}.issues.length) {${_(T,x)}
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
if (${T}.value === undefined) {
|
|
59
|
-
if (${
|
|
60
|
-
newResult[${
|
|
59
|
+
if (${Y}) {
|
|
60
|
+
newResult[${x}] = undefined;
|
|
61
61
|
}
|
|
62
62
|
} else {
|
|
63
|
-
newResult[${
|
|
63
|
+
newResult[${x}] = ${T}.value;
|
|
64
64
|
}
|
|
65
65
|
|
|
66
|
-
`)}return f.write("payload.value = newResult;"),f.write("return payload;"),f.compile()},s,a=En,u=!Se.jitless,d=u&&np.value,p=t.catchall,l;e._zod.parse=(m,g)=>{l??(l=r.value);let h=m.value;if(!a(h))return m.issues.push({expected:"object",code:"invalid_type",input:h,inst:e}),m;if(u&&d&&g?.async===!1&&g.jitless!==!0){if(!s)s=i(t.shape);if(m=s(m,g),!p)return m;return sf([],h,m,g,l,e,g?.abortEarly===!0)}return n(m,g)}});function hm(e,t,n,r){for(let i of e)if(i.issues.length===0)return t.value=i.value,t;let o=e.filter((i)=>!ct(i));if(o.length===1)return t.value=o[0].value,o[0];return t.issues.push({code:"invalid_union",input:t.value,inst:n,errors:e.map((i)=>i.issues.map((s)=>dt(s,r,De())))}),t}var Ea=E("$ZodUnion",(e,t)=>{Y.init(e,t),F(e,"optin",(r)=>r.def.options.some((o)=>o._zod.optin==="defaulted")?"defaulted":r.def.options.some((o)=>o._zod.optin!==void 0)?"optional":void 0),F(e,"optout",(r)=>r.def.options.some((o)=>o._zod.optout==="optional")?"optional":void 0),F(e,"values",(r)=>{if(r.def.options.every((o)=>o._zod.values))return new Set(r.def.options.flatMap((o)=>Array.from(o._zod.values)));return}),F(e,"pattern",(r)=>{if(r.def.options.every((o)=>o._zod.pattern)){let o=r.def.options.map((i)=>i._zod.pattern);return new RegExp(`^(${o.map((i)=>so(i.source)).join("|")})$`)}return});let n=t.options.length===1?t.options[0]._zod.run:null;e._zod.parse=(r,o)=>{if(n)return n(r,o);let i=!1,s=[];for(let a of t.options){let u=a._zod.run({value:r.value,issues:[]},o);if(u instanceof Promise)s.push(u),i=!0;else{if(u.issues.length===0)return u;s.push(u)}}if(!i)return hm(s,r,e,o);return Promise.all(s).then((a)=>hm(a,r,e,o))}});function WT(e){let t=new Map;for(let n of e.options){let r=n._zod.propValues?.[e.discriminator];if(!r||r.size===0)throw Error(`Invalid discriminated union option at index "${e.options.indexOf(n)}"`);for(let o of r)if(t.has(o)){if(o!==void 0)throw Error(`Duplicate discriminator value "${String(o)}"`);t.set(o,null)}else t.set(o,n)}return t}var uf=E("$ZodDiscriminatedUnion",(e,t)=>{t.inclusive=!1,Ea.init(e,t);let n=e._zod.parse;F(e,"propValues",(o)=>{let i={},s=0;for(let a of o.def.options){let u=a._zod.propValues;if(!u||Object.keys(u).length===0)throw Error(`Invalid discriminated union option at index "${o.def.options.indexOf(a)}"`);if(u[o.def.discriminator]?.has(void 0))s++;for(let[c,d]of Object.entries(u)){if(!Object.prototype.hasOwnProperty.call(i,c))je(i,c,new Set);for(let p of d)i[c].add(p)}}if(!o.def.unionFallback&&s>1)i[o.def.discriminator]?.delete(void 0);return i}),t.options.forEach((o,i)=>{let s=er(o._zod.def);if(s&&!Object.prototype.hasOwnProperty.call(s,t.discriminator))throw Error(`Invalid discriminated union option at index "${i}"`)});let r=Jn(()=>WT(t));e._zod.parse=(o,i)=>{let s=o.value;if(!En(s))return o.issues.push({code:"invalid_type",expected:"object",input:s,inst:e}),o;let a=s?.[t.discriminator],u=r.value.get(a);if(u&&(a!==void 0||i.direction!=="backward"))return u._zod.run(o,i);if(t.unionFallback||i.direction==="backward")return n(o,i);return o.issues.push({code:"invalid_union",errors:[],note:"No matching discriminator",discriminator:t.discriminator,options:Array.from(r.value.keys()).filter((c)=>r.value.get(c)!==null),input:s,path:[t.discriminator],inst:e}),o}}),cf=E("$ZodIntersection",(e,t)=>{Y.init(e,t),e._zod.parse=(n,r)=>{let o=n.value,i=t.left._zod.run({value:o,issues:[]},r),s=t.right._zod.run({value:o,issues:[]},r);if(i instanceof Promise||s instanceof Promise)return Promise.all([i,s]).then(([u,c])=>ym(n,u,c));return ym(n,i,s)}});function _a(e,t){if(e===t)return{valid:!0,data:e};if(e instanceof Date&&t instanceof Date&&+e===+t)return{valid:!0,data:e};if(tn(e)&&tn(t)){let n=Object.keys(t),r=Object.keys(e).filter((i)=>n.indexOf(i)!==-1),o={...e,...t};if(Object.prototype.hasOwnProperty.call(o,"__proto__"))delete o.__proto__;for(let i of r){if(i==="__proto__")continue;let s=_a(e[i],t[i]);if(!s.valid)return{valid:!1,mergeErrorPath:[i,...s.mergeErrorPath]};o[i]=s.data}return{valid:!0,data:o}}if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return{valid:!1,mergeErrorPath:[]};let n=[];for(let r=0;r<e.length;r++){let o=e[r],i=t[r],s=_a(o,i);if(!s.valid)return{valid:!1,mergeErrorPath:[r,...s.mergeErrorPath]};n.push(s.data)}return{valid:!0,data:n}}return{valid:!1,mergeErrorPath:[]}}function ym(e,t,n){let r=new Map,o,i=new Map,s=(c,d)=>{let p;if(c.code==="unrecognized_keys"&&!c.path?.length)o??(o=c),p=c.keys;else if(c.code==="invalid_key"&&c.origin==="record"&&c.path?.length===1){let l=String(c.path[0]);if(!i.has(l))i.set(l,c);p=[l]}else return!1;for(let l of p){if(!r.has(l))r.set(l,{});r.get(l)[d]=!0}return!0};for(let c of t.issues)if(!s(c,"l"))e.issues.push(c);for(let c of n.issues)if(!s(c,"r"))e.issues.push(c);let a=[...r].filter(([,c])=>c.l&&c.r).map(([c])=>c);if(a.length){let c=o?a.filter((d)=>o.keys.includes(d)):[];if(c.length)e.issues.push({...o,keys:c});for(let d of a)if(!c.includes(d)&&i.has(d))e.issues.push(i.get(d))}let u=_a(t.value,n.value);if(!u.valid){if(ct(e))return e;throw Error(`Unmergable intersection. Error path: ${JSON.stringify(u.mergeErrorPath)}`)}return e.value=u.data,e}var df=E("$ZodRecord",(e,t)=>{Y.init(e,t);let n=Se.memoizer;n?.attach(e),e._zod.parse=(r,o)=>{let i=r.value;if(!tn(i))return r.issues.push({expected:"record",code:"invalid_type",input:i,inst:e}),r;let s=[],a=t.keyType._zod.values;if(a&&!t.partial){r.value=n?n.alloc(e,r,{},o):{};let u=new Set;for(let d of a)if(typeof d==="string"||typeof d==="number"||typeof d==="symbol"){if(u.add(typeof d==="number"?d.toString():d),d==="__proto__")continue;let p=t.keyType._zod.run({value:d,issues:[]},o);if(p instanceof Promise)throw Error("Async schemas not supported in object keys currently");if(p.issues.length){r.issues.push({code:"invalid_key",origin:"record",issues:p.issues.map((g)=>dt(g,o,De())),input:d,path:[d],inst:e});continue}let l=p.value;if(l==="__proto__")continue;let m=t.valueType._zod.run({value:i[d],issues:[]},o);if(m instanceof Promise)s.push(m.then((g)=>{if(g.issues.length)r.issues.push(...Tt(d,g.issues));r.value[l]=g.value}));else{if(m.issues.length)r.issues.push(...Tt(d,m.issues));r.value[l]=m.value}}let c;for(let d in i)if(!u.has(d))if(t.mode==="loose"){if(d==="__proto__")continue;r.value[d]=i[d]}else c=c??[],c.push(d);if(c&&c.length>0)r.issues.push({code:"unrecognized_keys",input:i,inst:e,keys:c,continue:!0})}else{r.value=n?n.alloc(e,r,{},o):{};let u;for(let c of Reflect.ownKeys(i)){if(c==="__proto__")continue;if(!Object.prototype.propertyIsEnumerable.call(i,c))continue;let d=t.keyType._zod.run({value:c,issues:[]},o);if(d instanceof Promise)throw Error("Async schemas not supported in object keys currently");if(typeof c==="string"&&nr.test(c)&&d.issues.length){let g=t.keyType._zod.run({value:Number(c),issues:[]},o);if(g instanceof Promise)throw Error("Async schemas not supported in object keys currently");if(g.issues.length===0)d=g}if(d.issues.length){if(t.mode==="loose")r.value[c]=i[c];else if(a)u=u??[],u.push(c);else r.issues.push({code:"invalid_key",origin:"record",issues:d.issues.map((g)=>dt(g,o,De())),input:c,path:[c],inst:e});continue}let l=d.value;if(l==="__proto__")continue;let m=t.valueType._zod.run({value:i[c],issues:[]},o);if(m instanceof Promise)s.push(m.then((g)=>{if(g.issues.length)r.issues.push(...Tt(c,g.issues));r.value[l]=g.value}));else{if(m.issues.length)r.issues.push(...Tt(c,m.issues));r.value[l]=m.value}}if(u&&u.length>0)r.issues.push({code:"unrecognized_keys",input:i,inst:e,keys:u,continue:!0})}if(s.length)return Promise.all(s).then(()=>r);return r}});var lf=E("$ZodEnum",(e,t)=>{Y.init(e,t);let n=Qn(t.entries),r=new Set(n);e._zod.values=r,F(e,"pattern",(o)=>{let i=Qn(o.def.entries).filter((s)=>rp.has(typeof s));return new RegExp(i.length?`^(${i.map((s)=>Dt(s.toString())).join("|")})$`:"^[^\\s\\S]$")}),e._zod.parse=(o,i)=>{let s=o.value;if(r.has(s))return o;return o.issues.push({code:"invalid_value",values:n,input:s,inst:e}),o}}),pf=E("$ZodLiteral",(e,t)=>{Y.init(e,t);let n=new Set(t.values);e._zod.values=n,F(e,"pattern",(r)=>{let o=r.def.values;return new RegExp(o.length?`^(${o.map((i)=>typeof i==="string"?Dt(i):i?Dt(i.toString()):String(i)).join("|")})$`:"^[^\\s\\S]$")}),e._zod.parse=(r,o)=>{let i=r.value;if(n.has(i))return r;return r.issues.push({code:"invalid_value",values:t.values,input:i,inst:e}),r}});var mf=E("$ZodTransform",(e,t)=>{Y.init(e,t),e._zod.optin="optional",Se.memoizer?.guard(e),e._zod.parse=(n,r)=>{if(r.direction==="backward")throw new tr(e.constructor.name);let o=t.transform(n.value,n);if(r.async)return(o instanceof Promise?o:Promise.resolve(o)).then((s)=>(n.value=s,n));if(o instanceof Promise)throw new lt;return n.value=o,n}});function _m(e,t){return e.value=t.issues.length?void 0:t.value,e}var va=E("$ZodOptional",(e,t)=>{Y.init(e,t),F(e,"optin",(n)=>n.def.innerType._zod.optin==="defaulted"?"defaulted":"optional"),e._zod.optout="optional",F(e,"values",(n)=>{let r=n.def.innerType._zod.values;return r?new Set([...r,void 0]):void 0}),F(e,"pattern",(n)=>{let r=n.def.innerType._zod.pattern;return r?new RegExp(`^(${so(r.source)})?$`):void 0}),e._zod.parse=(n,r)=>{if(n.value===void 0){if(t.innerType._zod.optin!=="defaulted")return n;let o=t.innerType._zod.run({value:n.value,issues:[]},r);if(o instanceof Promise)return o.then((i)=>_m(n,i));return _m(n,o)}return t.innerType._zod.run(n,r)}}),ff=E("$ZodExactOptional",(e,t)=>{va.init(e,t),F(e,"values",(n)=>n.def.innerType._zod.values),F(e,"pattern",(n)=>n.def.innerType._zod.pattern),e._zod.parse=(n,r)=>t.innerType._zod.run(n,r)}),gf=E("$ZodNullable",(e,t)=>{Y.init(e,t),F(e,"optin",(n)=>n.def.innerType._zod.optin),F(e,"optout",(n)=>n.def.innerType._zod.optout),F(e,"pattern",(n)=>{let r=n.def.innerType._zod.pattern;return r?new RegExp(`^(${so(r.source)}|null)$`):void 0}),F(e,"values",(n)=>n.def.innerType._zod.values?new Set([...n.def.innerType._zod.values,null]):void 0),e._zod.parse=(n,r)=>{if(n.value===null)return n;return t.innerType._zod.run(n,r)}}),hf=E("$ZodDefault",(e,t)=>{Y.init(e,t),e._zod.optin="defaulted",F(e,"values",(n)=>n.def.innerType._zod.values),e._zod.parse=(n,r)=>{if(r.direction==="backward")return t.innerType._zod.run(n,r);if(n.value===void 0)return n.value=t.defaultValue,n;let o=t.innerType._zod.run(n,r);if(o instanceof Promise)return o.then((i)=>wm(i,t));return wm(o,t)}});function wm(e,t){if(e.value===void 0)e.value=t.defaultValue;return e}var yf=E("$ZodPrefault",(e,t)=>{Y.init(e,t),e._zod.optin="defaulted",F(e,"values",(n)=>n.def.innerType._zod.values),e._zod.parse=(n,r)=>{if(r.direction==="backward")return t.innerType._zod.run(n,r);if(n.value===void 0)n.value=t.defaultValue;return t.innerType._zod.run(n,r)}}),_f=E("$ZodNonOptional",(e,t)=>{Y.init(e,t),F(e,"values",(n)=>{let r=n.def.innerType._zod.values;return r?new Set([...r].filter((o)=>o!==void 0)):void 0}),e._zod.parse=(n,r)=>{let o=t.innerType._zod.run(n,r);if(o instanceof Promise)return o.then((i)=>bm(i,e));return bm(o,e)}});function bm(e,t){if(!e.issues.length&&e.value===void 0)e.issues.push({code:"invalid_type",expected:"nonoptional",input:e.value,inst:t});return e}function km(e,t,n,r){if(!t.issues.length){if(e.value=t.value,t.memo)e.memo=!0;return e}return e.value=n.catchValue({...t,value:e.value,error:{issues:t.issues.map((o)=>dt(o,r,De()))},input:e.value}),e}var wf=E("$ZodCatch",(e,t)=>{Y.init(e,t),F(e,"optin",(n)=>n.def.innerType._zod.optin==="defaulted"?"defaulted":"optional"),F(e,"optout",(n)=>n.def.innerType._zod.optout),F(e,"values",(n)=>n.def.innerType._zod.values),e._zod.parse=(n,r)=>{if(r.direction==="backward")return t.innerType._zod.run(n,r);let o=t.innerType._zod.run({value:n.value,issues:[]},r);if(o instanceof Promise)return o.then((i)=>km(n,i,t,r));return km(n,o,t,r)}});var bf=E("$ZodPipe",(e,t)=>{Y.init(e,t),F(e,"values",(n)=>n.def.in._zod.values),F(e,"optin",(n)=>n.def.in._zod.optin),F(e,"optout",(n)=>n.def.out._zod.optout),F(e,"propValues",(n)=>n.def.in._zod.propValues),e._zod.parse=(n,r)=>{if(r.direction==="backward"){let i=t.out._zod.run(n,r);if(i instanceof Promise)return i.then((s)=>_o(s,t.in,r));return _o(i,t.in,r)}let o=t.in._zod.run(n,r);if(o instanceof Promise)return o.then((i)=>_o(i,t.out,r));return _o(o,t.out,r)}});function _o(e,t,n){if(e.issues.some((r)=>r.code!=="unrecognized_keys"))return e.aborted=!0,e;return t._zod.run({value:e.value,issues:e.issues},n)}var kf=E("$ZodReadonly",(e,t)=>{Y.init(e,t),F(e,"propValues",(n)=>n.def.innerType._zod.propValues),F(e,"values",(n)=>n.def.innerType._zod.values),F(e,"optin",(n)=>n.def.innerType?._zod?.optin),F(e,"optout",(n)=>n.def.innerType?._zod?.optout),e._zod.parse=(n,r)=>{if(r.direction==="backward")return t.innerType._zod.run(n,r);let o=t.innerType._zod.run(n,r);if(o instanceof Promise)return o.then(Em);return Em(o)}});function Em(e){if(!e.memo)e.value=Object.freeze(e.value);return e}var Ef=E("$ZodCustom",(e,t)=>{pe.init(e,t),Y.init(e,t),e._zod.parse=(n,r)=>n,e._zod.check=(n)=>{let r=n.value,o=t.fn(r);if(o instanceof Promise)return o.then((i)=>vm(i,n,r,e));vm(o,n,r,e);return}});function vm(e,t,n,r){if(!e){let o={code:"custom",input:n,inst:r,path:[...r._zod.def.path??[]],continue:!r._zod.def.abort};if(r._zod.def.params)o.params=r._zod.def.params;t.issues.push(nn(o))}}function Tm(e,t,n){if(e.issues.length)t.issues.push(...Tt(n,e.issues))}var jT=E("$ZodProperties",(e,t)=>{Y.init(e,t),pe.init(e,t);let n=Se.memoizer;n?.attach(e);let r,o=(i,s)=>{r??(r=Reflect.ownKeys(t.shape).map((c)=>[c,t.shape[c]]));let a=i.value,u;for(let[c,d]of r){let p=d._zod.run({value:a[c],issues:[]},s);if(p instanceof Promise)u??(u=[]),u.push(p.then((l)=>Tm(l,i,c)));else Tm(p,i,c)}if(u)return Promise.all(u).then(()=>{return});return};e._zod.parse=(i,s)=>{let a=i.value;if(a===null||typeof a!=="object"&&typeof a!=="function")return i.issues.push({expected:"object",code:"invalid_type",input:a,inst:e}),i;if(s.direction==="backward")s={...s,direction:"forward"};if(n)n.alloc(e,i,a,s);let u=o(i,s);return u instanceof Promise?u.then(()=>i):i},e._zod.check=(i)=>{if(i.value==null){i.issues.push({expected:"object",code:"invalid_type",input:i.value,inst:e});return}return o(i,{})}},{*[Symbol.iterator](){yield this}});class Tf extends Error{constructor(){super("Cannot parse a reference cycle that closes through a transform");this.name="ZodCyclicError"}}var Ra="~memo",vf=[];function Rf(e){return e!==null&&(typeof e==="object"||typeof e==="function")}function Ta(e){return e.map((t)=>t.path?{...t,path:t.path.slice()}:{...t})}var Sf=new WeakMap,ir=0,To=1,sr=2;function Ro(e,t,n){let r=Sf.get(e);if(r!==void 0)return r?sr:ir;if(t.has(e))return sr;t.add(e);let o=ir,i=(d)=>{if(o!==sr&&d?._zod){let p=Ro(d,t,n);if(p>o)o=p}},s=(d,p)=>{let l=ir;for(let m of Reflect.ownKeys(d)){let g=Object.getOwnPropertyDescriptor(d,m);if(p&&!g.enumerable)continue;let h=g.get?To:g.value?._zod?Ro(g.value,t,n):ir;if(h>l)l=h}return l},a=(d)=>{if(d>o)o=d},u=e._zod.def,c=u.type;switch(c){case"object":{let d=er(u);a(d?s(d,!0):To),i(u.catchall);break}case"properties":a(s(u.shape,!1));break;case"array":i(u.element);break;case"tuple":for(let d of u.items)i(d);i(u.rest);break;case"record":case"map":i(u.keyType),i(u.valueType);break;case"set":i(u.valueType);break;case"union":for(let d of u.options)i(d);break;case"intersection":i(u.left),i(u.right);break;case"optional":case"nullable":case"default":case"prefault":case"catch":case"readonly":case"nonoptional":case"promise":case"success":i(u.innerType);break;case"pipe":i(u.in),i(u.out);break;case"function":i(u.input),i(u.output);break;case"lazy":{let d=u._cachedInner??(n?e._zod.innerType:void 0);a(d?Ro(d,t,!1):To);break}case"template_literal":case"string":case"number":case"int":case"boolean":case"bigint":case"symbol":case"undefined":case"null":case"void":case"never":case"any":case"unknown":case"date":case"nan":case"enum":case"literal":case"file":case"transform":case"custom":break;default:for(let d in u){let p=Object.getOwnPropertyDescriptor(u,d);if(!p||p.get)continue;let l=p.value;if(!l||typeof l!=="object")continue;if(l._zod)i(l);else if(Array.isArray(l))for(let m of l)i(m)}}return t.delete(e),KT(e,o)}function KT(e,t){if(t!==To)Sf.set(e,t===sr);return t}function GT(e,t){let n=e.buckets.get(t);if(!n)n=new WeakMap,e.buckets.set(t,n);return n}var Eo,vo=[],ZT={alloc(e,t,n){let r=Eo;if(!r)return n;Eo=void 0;let o={value:n,issues:null};return r.set(t.value,o),vo.push(o),n},guard(e){var t;(t=e._zod).deferred??(t.deferred=[]),e._zod.deferred.push(()=>{let n=e._zod.parse,r=(o,i)=>{if(i.direction!=="backward"&&XT(i,o.value))throw new Tf;return n(o,i)};if(e._zod.parse=r,e._zod.run===n)e._zod.run=r})},attach(e){var t;let n,r=!1,o,i;(t=e._zod).deferred??(t.deferred=[]),e._zod.deferred.push(()=>{let s=e._zod.parse,a=(u,c)=>{if(n===void 0){let y=Ro(e,new Set,!1);if(y===ir){if(e._zod.parse=s,e._zod.run===a)e._zod.run=s;return s(u,c)}if(y===sr||r)n=!0;else r=!0}let d=u.value;if(!Rf(d))return s(u,c);let p=c[Ra];if(!p)p={buckets:new WeakMap,backEdges:void 0},c[Ra]=p;let l;if(o===c)l=i;else l=GT(p,e),o=c,i=l;let m=l.get(d);if(m){if(u.value=m.value,m.issues){if(m.issues.length)u.issues.push(...Ta(m.issues))}else u.memo=!0,p.backEdges??(p.backEdges=new WeakSet),p.backEdges.add(m.value);return u}Eo=l;let g=vo.length,h=s(u,c);Eo=void 0;let f=vo.length>g?vo.pop():void 0;if(h instanceof Promise)return h.then((y)=>{if(f)f.issues=y.issues.length?Ta(y.issues):vf;return y});if(f)f.issues=h.issues.length?Ta(h.issues):vf;return h};if(e._zod.parse=a,e._zod.run===s)e._zod.run=a})}};function xf(){return ZT}function XT(e,t){let n=e[Ra]?.backEdges;return n!==void 0&&Rf(t)&&n.has(t)}var VT=()=>{let e={string:{unit:"characters",verb:"to have"},file:{unit:"bytes",verb:"to have"},array:{unit:"items",verb:"to have"},set:{unit:"items",verb:"to have"},map:{unit:"entries",verb:"to have"}};function t(i){return e[i]??null}let n={regex:"input",email:"email address",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO datetime",date:"ISO date",time:"ISO time",duration:"ISO duration",ipv4:"IPv4 address",ipv6:"IPv6 address",mac:"MAC address",cidrv4:"IPv4 range",cidrv6:"IPv6 range",base64:"base64-encoded string",base64url:"base64url-encoded string",json_string:"JSON string",e164:"E.164 number",credit_card:"credit card number",iban:"IBAN",jwt:"JWT",template_literal:"input"},r={nan:"NaN"};function o(i,s){if(i==="number"&&typeof s==="number"&&!Number.isFinite(s))return String(s);return r[i]??i}return(i)=>{switch(i.code){case"invalid_type":{let s=o(i.expected),a=up(i.input),u=o(a,i.input);return`Invalid input: expected ${s}, received ${u}`}case"invalid_value":if(i.values.length===1)return`Invalid input: expected ${na(i.values[0])}`;return`Invalid option: expected one of ${Js(i.values,"|")}`;case"too_big":{let s=i.exact?"exactly ":i.inclusive?"<=":"<",a=t(i.origin);if(a)return`Too big: expected ${i.origin??"value"} to have ${s}${i.maximum.toString()} ${a.unit??"elements"}`;return`Too big: expected ${i.origin??"value"} to be ${s}${i.maximum.toString()}`}case"too_small":{let s=i.exact?"exactly ":i.inclusive?">=":">",a=t(i.origin);if(a)return`Too small: expected ${i.origin} to have ${s}${i.minimum.toString()} ${a.unit}`;return`Too small: expected ${i.origin} to be ${s}${i.minimum.toString()}`}case"invalid_format":{let s=i;if(s.format==="starts_with")return`Invalid string: must start with "${s.prefix}"`;if(s.format==="ends_with")return`Invalid string: must end with "${s.suffix}"`;if(s.format==="includes")return`Invalid string: must include "${s.includes}"`;if(s.format==="regex")return`Invalid string: must match pattern ${s.pattern}`;return`Invalid ${n[s.format]??i.format}`}case"not_multiple_of":return`Invalid number: must be a multiple of ${i.divisor}`;case"unrecognized_keys":return`Unrecognized key${i.keys.length>1?"s":""}: ${Js(i.keys,", ")}`;case"invalid_key":return`Invalid key in ${i.origin}`;case"invalid_union":if(i.options&&Array.isArray(i.options)&&i.options.length>0)return`Invalid discriminator value. Expected ${i.options.map((a)=>`'${a}'`).join(" | ")}`;if(i.inclusive===!1)return"Invalid input: more than one option matched";return"Invalid input";case"invalid_element":return`Invalid value in ${i.origin}`;default:return"Invalid input"}}};function Sa(){return{localeError:VT()}}var Af;class Of{constructor(){this._map=new WeakMap,this._idmap=new Map}add(e,...t){let n=t[0];if(this._map.set(e,n),n&&typeof n==="object"&&"id"in n)this._idmap.set(n.id,e);return this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(e){let t=this._map.get(e);if(t&&typeof t==="object"&&"id"in t)this._idmap.delete(t.id);return this._map.delete(e),this}get(e){let t=e._zod.parent;if(t){let n={...this.get(t)??{}};delete n.id;let r={...n,...this._map.get(e)};return Object.keys(r).length?r:void 0}return this._map.get(e)}has(e){return this._map.has(e)}}function QT(){return new Of}(Af=globalThis).__zod_globalRegistry??(Af.__zod_globalRegistry=QT());var rn=globalThis.__zod_globalRegistry;function Cf(e,t){return new e({type:"string",...x(t)})}function Pf(e,t){return new e({type:"string",format:"email",check:"string_format",abort:!1,...x(t)})}function If(e,t){return new e({type:"string",format:"guid",check:"string_format",abort:!1,...x(t)})}function Lf(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,...x(t)})}function Nf(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...x(t)})}function Df(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...x(t)})}function Uf(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...x(t)})}function Mf(e,t){return new e({type:"string",format:"url",check:"string_format",abort:!1,...x(t)})}function $f(e,t){return new e({type:"string",format:"emoji",check:"string_format",abort:!1,...x(t)})}function Ff(e,t){return new e({type:"string",format:"nanoid",check:"string_format",abort:!1,...x(t)})}function Bf(e,t){return new e({type:"string",format:"cuid",check:"string_format",abort:!1,...x(t)})}function zf(e,t){return new e({type:"string",format:"cuid2",check:"string_format",abort:!1,...x(t)})}function qf(e,t){return new e({type:"string",format:"ulid",check:"string_format",abort:!1,...x(t)})}function Hf(e,t){return new e({type:"string",format:"xid",check:"string_format",abort:!1,...x(t)})}function Wf(e,t){return new e({type:"string",format:"ksuid",check:"string_format",abort:!1,...x(t)})}function jf(e,t){return new e({type:"string",format:"ipv4",check:"string_format",abort:!1,...x(t)})}function Kf(e,t){return new e({type:"string",format:"ipv6",check:"string_format",abort:!1,...x(t)})}function Gf(e,t){return new e({type:"string",format:"cidrv4",check:"string_format",abort:!1,...x(t)})}function Zf(e,t){return new e({type:"string",format:"cidrv6",check:"string_format",abort:!1,...x(t)})}function Xf(e,t){return new e({type:"string",format:"base64",check:"string_format",abort:!1,...x(t)})}function Vf(e,t){return new e({type:"string",format:"base64url",check:"string_format",abort:!1,...x(t)})}function Qf(e,t){return new e({type:"string",format:"e164",check:"string_format",abort:!1,...x(t)})}function Yf(e,t){return new e({type:"string",format:"jwt",check:"string_format",abort:!1,...x(t)})}function Jf(e,t){return new e({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...x(t)})}function eg(e,t){return new e({type:"string",format:"date",check:"string_format",...x(t)})}function tg(e,t){return new e({type:"string",format:"time",check:"string_format",precision:null,...x(t)})}function ng(e,t){return new e({type:"string",format:"duration",check:"string_format",...x(t)})}function rg(e,t){return new e({type:"number",checks:[],...x(t)})}function og(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"safeint",...x(t)})}function ig(e,t){return new e({type:"boolean",...x(t)})}function sg(e){return new e({type:"unknown"})}function ag(e,t){return new e({type:"never",...x(t)})}function So(e,t){return new ga({check:"less_than",...x(t),value:e,inclusive:!1})}function ar(e,t){return new ga({check:"less_than",...x(t),value:e,inclusive:!0})}function xo(e,t){return new ha({check:"greater_than",...x(t),value:e,inclusive:!1})}function ur(e,t){return new ha({check:"greater_than",...x(t),value:e,inclusive:!0})}function Ao(e,t){return new tm({check:"multiple_of",...x(t),value:e})}function Oo(e,t){return new rm({check:"max_length",...x(t),maximum:e})}function vn(e,t){return new om({check:"min_length",...x(t),minimum:e})}function Co(e,t){return new im({check:"length_equals",...x(t),length:e})}function xa(e,t){return new sm({check:"string_format",format:"regex",...x(t),pattern:e})}function Aa(e){return new am({check:"string_format",format:"lowercase",...x(e)})}function Oa(e){return new um({check:"string_format",format:"uppercase",...x(e)})}function Ca(e,t){return new cm({check:"string_format",format:"includes",...x(t),includes:e})}function Pa(e,t){return new dm({check:"string_format",format:"starts_with",...x(t),prefix:e})}function Ia(e,t){return new lm({check:"string_format",format:"ends_with",...x(t),suffix:e})}function Ut(e){return new pm({check:"overwrite",tx:e})}function La(e){return Ut((t)=>t.normalize(e))}function Na(){return Ut((e)=>e.trim())}function Da(){return Ut((e)=>e.toLowerCase())}function Ua(){return Ut((e)=>e.toUpperCase())}function Ma(){return Ut((e)=>tp(e))}function ug(e,t,n){return new e({type:"array",element:t,...x(n)})}function cg(e,t,n){return new e({type:"custom",check:"custom",fn:t,...x(n)})}function dg(e,t){let n=YT((r)=>(r.addIssue=(o)=>{if(typeof o==="string")r.issues.push(nn(o,r.value,n._zod.def));else{let i=o;if(i.fatal)i.continue=!1;if(i.code??(i.code="custom"),!("input"in i))i.input=r.value;i.inst??(i.inst=n),i.continue??(i.continue=!n._zod.def.abort),r.issues.push(nn(i))}},e(r.value,r)),t);return n}function YT(e,t){let n=new pe({check:"custom",...x(t)});return n._zod.check=e,n}function cr(e,...t){for(let n of t)for(let r of Reflect.ownKeys(n))if(Object.prototype.propertyIsEnumerable.call(n,r))je(e,r,n[r]);return e}function Fa(e){let t=e?.target??"draft-2020-12";if(t==="draft-4")t="draft-04";if(t==="draft-7")t="draft-07";return{processors:e.processors??{},metadataRegistry:e?.metadata??rn,target:t,unrepresentable:e?.unrepresentable??"throw",override:e?.override??(()=>{}),io:e?.io??"output",counter:0,seen:new Map,sharedDefsExtractedFor:void 0,sharedEmitDoneFor:void 0,cycles:e?.cycles??"ref",reused:e?.reused??"inline",intersections:[],deferred:[],external:e?.external??void 0}}function Rt(e,t,n,r,o){let i=typeof t.unrepresentable==="function"?t.unrepresentable({zodSchema:e,path:r.path,message:o}):t.unrepresentable;if(i==="any")return!1;if(i===void 0||i==="throw")throw Error(o);return Object.assign(n,i),!0}function ie(e,t,n={path:[],schemaPath:[]}){var r;let o=e._zod.def,i=t.seen.get(e);if(i){if(i.count++,n.schemaPath.includes(e))i.cycle=n.path;return i.schema}let s={schema:{},count:1,cycle:void 0,path:n.path};t.seen.set(e,s),t.sharedDefsExtractedFor=void 0,t.sharedEmitDoneFor=void 0;let a=e._zod.toJSONSchema?.();if(a)s.schema=a;else{let d={...n,schemaPath:[...n.schemaPath,e],path:n.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(t,s.schema,d);else{let l=s.schema,m=t.processors[o.type];if(!m)throw Error(`[toJSONSchema]: Non-representable type encountered: ${o.type}`);m(e,t,l,d)}let p=e._zod.parent;if(p){if(!s.ref)s.ref=p;ie(p,t,d),t.seen.get(p).isParent=!0}}let u=t.metadataRegistry.get(e);if(u)cr(s.schema,u);if(t.io==="input"&&ke(e))delete s.schema.examples,delete s.schema.default;if(t.io==="input"&&"_prefault"in s.schema)(r=s.schema).default??(r.default=s.schema._prefault);return delete s.schema._prefault,t.seen.get(e).schema}function lg(e){return e.replace(/~/g,"~0").replace(/\//g,"~1")}function Ba(e,t){let n=e.seen.get(t);if(!n)throw Error("Unprocessed schema. This is a bug in Zod.");if(e.external&&e.sharedDefsExtractedFor===e.external)return;let r=new Map;for(let s of e.seen.entries()){let a=e.metadataRegistry.get(s[0])?.id;if(a){let u=r.get(a);if(u&&u!==s[0])throw Error(`Duplicate schema id "${a}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);r.set(a,s[0])}}let o=(s)=>{let a=e.target==="draft-2020-12"?"$defs":"definitions";if(e.external){let p=e.external.registry.get(s[0])?.id,l=e.external.uri??((g)=>g);if(p)return{ref:l(p)};let m=s[1].defId??s[1].schema.id??`schema${e.counter++}`;return s[1].defId=m,{defId:m,ref:`${l("__shared")}#/${a}/${lg(m)}`}}let u="#",c=`${u}/${a}/`;if(s[1]===n&&!s[1].schema.id)return{ref:u};let d=s[1].schema.id??`__schema${e.counter++}`;return{defId:d,ref:c+lg(d)}},i=(s)=>{if(s[1].schema.$ref)return;let a=s[1],{ref:u,defId:c}=o(s);if(a.def={...a.schema},c)a.defId=c;let d=a.schema;for(let p in d)delete d[p];d.$ref=u};if(e.cycles==="throw")for(let s of e.seen.entries()){let a=s[1];if(a.cycle)throw Error(`Cycle detected: #/${a.cycle?.join("/")}/<root>
|
|
66
|
+
`)}return f.write("payload.value = newResult;"),f.write("return payload;"),f.compile()},s,a=Tn,u=!xe.jitless,c=u&&lp.value,p=t.catchall,d;e._zod.parse=(m,g)=>{d??(d=r.value);let h=m.value;if(!a(h))return m.issues.push({expected:"object",code:"invalid_type",input:h,inst:e}),m;if(u&&c&&g?.async===!1&&g.jitless!==!0){if(!s)s=i(t.shape);if(m=s(m,g),!p)return m;return ff([],h,m,g,d,e,g?.abortEarly===!0)}return n(m,g)}});function Tm(e,t,n,r){for(let i of e)if(i.issues.length===0)return t.value=i.value,t;let o=e.filter((i)=>!pt(i));if(o.length===1)return t.value=o[0].value,o[0];return t.issues.push({code:"invalid_union",input:t.value,inst:n,errors:e.map((i)=>i.issues.map((s)=>mt(s,r,Ue())))}),t}var Ea=E("$ZodUnion",(e,t)=>{V.init(e,t),F(e,"optin",(r)=>r.def.options.some((o)=>o._zod.optin==="defaulted")?"defaulted":r.def.options.some((o)=>o._zod.optin!==void 0)?"optional":void 0),F(e,"optout",(r)=>r.def.options.some((o)=>o._zod.optout==="optional")?"optional":void 0),F(e,"values",(r)=>{if(r.def.options.every((o)=>o._zod.values))return new Set(r.def.options.flatMap((o)=>Array.from(o._zod.values)));return}),F(e,"pattern",(r)=>{if(r.def.options.every((o)=>o._zod.pattern)){let o=r.def.options.map((i)=>i._zod.pattern);return new RegExp(`^(${o.map((i)=>uo(i.source)).join("|")})$`)}return});let n=t.options.length===1?t.options[0]._zod.run:null;e._zod.parse=(r,o)=>{if(n)return n(r,o);let i=!1,s=[];for(let a of t.options){let u=a._zod.run({value:r.value,issues:[]},o);if(u instanceof Promise)s.push(u),i=!0;else{if(u.issues.length===0)return u;s.push(u)}}if(!i)return Tm(s,r,e,o);return Promise.all(s).then((a)=>Tm(a,r,e,o))}});function tR(e){let t=new Map;for(let n of e.options){let r=n._zod.propValues?.[e.discriminator];if(!r||r.size===0)throw Error(`Invalid discriminated union option at index "${e.options.indexOf(n)}"`);for(let o of r)if(t.has(o)){if(o!==void 0)throw Error(`Duplicate discriminator value "${String(o)}"`);t.set(o,null)}else t.set(o,n)}return t}var hf=E("$ZodDiscriminatedUnion",(e,t)=>{t.inclusive=!1,Ea.init(e,t);let n=e._zod.parse;F(e,"propValues",(o)=>{let i={},s=0;for(let a of o.def.options){let u=a._zod.propValues;if(!u||Object.keys(u).length===0)throw Error(`Invalid discriminated union option at index "${o.def.options.indexOf(a)}"`);if(u[o.def.discriminator]?.has(void 0))s++;for(let[l,c]of Object.entries(u)){if(!Object.prototype.hasOwnProperty.call(i,l))Ge(i,l,new Set);for(let p of c)i[l].add(p)}}if(!o.def.unionFallback&&s>1)i[o.def.discriminator]?.delete(void 0);return i}),t.options.forEach((o,i)=>{let s=or(o._zod.def);if(s&&!Object.prototype.hasOwnProperty.call(s,t.discriminator))throw Error(`Invalid discriminated union option at index "${i}"`)});let r=rr(()=>tR(t));e._zod.parse=(o,i)=>{let s=o.value;if(!Tn(s))return o.issues.push({code:"invalid_type",expected:"object",input:s,inst:e}),o;let a=s?.[t.discriminator],u=r.value.get(a);if(u&&(a!==void 0||i.direction!=="backward"))return u._zod.run(o,i);if(t.unionFallback||i.direction==="backward")return n(o,i);return o.issues.push({code:"invalid_union",errors:[],note:"No matching discriminator",discriminator:t.discriminator,options:Array.from(r.value.keys()).filter((l)=>r.value.get(l)!==null),input:s,path:[t.discriminator],inst:e}),o}}),yf=E("$ZodIntersection",(e,t)=>{V.init(e,t),e._zod.parse=(n,r)=>{let o=n.value,i=t.left._zod.run({value:o,issues:[]},r),s=t.right._zod.run({value:o,issues:[]},r);if(i instanceof Promise||s instanceof Promise)return Promise.all([i,s]).then(([u,l])=>Rm(n,u,l));return Rm(n,i,s)}});function _a(e,t){if(e===t)return{valid:!0,data:e};if(e instanceof Date&&t instanceof Date&&+e===+t)return{valid:!0,data:e};if(rn(e)&&rn(t)){let n=Object.keys(t),r=Object.keys(e).filter((i)=>n.indexOf(i)!==-1),o={...e,...t};if(Object.prototype.hasOwnProperty.call(o,"__proto__"))delete o.__proto__;for(let i of r){if(i==="__proto__")continue;let s=_a(e[i],t[i]);if(!s.valid)return{valid:!1,mergeErrorPath:[i,...s.mergeErrorPath]};o[i]=s.data}return{valid:!0,data:o}}if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return{valid:!1,mergeErrorPath:[]};let n=[];for(let r=0;r<e.length;r++){let o=e[r],i=t[r],s=_a(o,i);if(!s.valid)return{valid:!1,mergeErrorPath:[r,...s.mergeErrorPath]};n.push(s.data)}return{valid:!0,data:n}}return{valid:!1,mergeErrorPath:[]}}function Rm(e,t,n){let r=new Map,o,i=new Map,s=(l,c)=>{let p;if(l.code==="unrecognized_keys"&&!l.path?.length)o??(o=l),p=l.keys;else if(l.code==="invalid_key"&&l.origin==="record"&&l.path?.length===1){let d=String(l.path[0]);if(!i.has(d))i.set(d,l);p=[d]}else return!1;for(let d of p){if(!r.has(d))r.set(d,{});r.get(d)[c]=!0}return!0};for(let l of t.issues)if(!s(l,"l"))e.issues.push(l);for(let l of n.issues)if(!s(l,"r"))e.issues.push(l);let a=[...r].filter(([,l])=>l.l&&l.r).map(([l])=>l);if(a.length){let l=o?a.filter((c)=>o.keys.includes(c)):[];if(l.length)e.issues.push({...o,keys:l});for(let c of a)if(!l.includes(c)&&i.has(c))e.issues.push(i.get(c))}let u=_a(t.value,n.value);if(!u.valid){if(pt(e))return e;throw Error(`Unmergable intersection. Error path: ${JSON.stringify(u.mergeErrorPath)}`)}return e.value=u.data,e}var _f=E("$ZodRecord",(e,t)=>{V.init(e,t);let n=xe.memoizer;n?.attach(e),e._zod.parse=(r,o)=>{let i=r.value;if(!rn(i))return r.issues.push({expected:"record",code:"invalid_type",input:i,inst:e}),r;let s=[],a=t.keyType._zod.values;if(a&&!t.partial){r.value=n?n.alloc(e,r,{},o):{};let u=new Set;for(let c of a)if(typeof c==="string"||typeof c==="number"||typeof c==="symbol"){if(u.add(typeof c==="number"?c.toString():c),c==="__proto__")continue;let p=t.keyType._zod.run({value:c,issues:[]},o);if(p instanceof Promise)throw Error("Async schemas not supported in object keys currently");if(p.issues.length){r.issues.push({code:"invalid_key",origin:"record",issues:p.issues.map((g)=>mt(g,o,Ue())),input:c,path:[c],inst:e});continue}let d=p.value;if(d==="__proto__")continue;let m=t.valueType._zod.run({value:i[c],issues:[]},o);if(m instanceof Promise)s.push(m.then((g)=>{if(g.issues.length)r.issues.push(...St(c,g.issues));r.value[d]=g.value}));else{if(m.issues.length)r.issues.push(...St(c,m.issues));r.value[d]=m.value}}let l;for(let c in i)if(!u.has(c))if(t.mode==="loose"){if(c==="__proto__")continue;r.value[c]=i[c]}else l=l??[],l.push(c);if(l&&l.length>0)r.issues.push({code:"unrecognized_keys",input:i,inst:e,keys:l,continue:!0})}else{r.value=n?n.alloc(e,r,{},o):{};let u;for(let l of Reflect.ownKeys(i)){if(l==="__proto__")continue;if(!Object.prototype.propertyIsEnumerable.call(i,l))continue;let c=t.keyType._zod.run({value:l,issues:[]},o);if(c instanceof Promise)throw Error("Async schemas not supported in object keys currently");if(typeof l==="string"&&sr.test(l)&&c.issues.length){let g=t.keyType._zod.run({value:Number(l),issues:[]},o);if(g instanceof Promise)throw Error("Async schemas not supported in object keys currently");if(g.issues.length===0)c=g}if(c.issues.length){if(t.mode==="loose")r.value[l]=i[l];else if(a)u=u??[],u.push(l);else r.issues.push({code:"invalid_key",origin:"record",issues:c.issues.map((g)=>mt(g,o,Ue())),input:l,path:[l],inst:e});continue}let d=c.value;if(d==="__proto__")continue;let m=t.valueType._zod.run({value:i[l],issues:[]},o);if(m instanceof Promise)s.push(m.then((g)=>{if(g.issues.length)r.issues.push(...St(l,g.issues));r.value[d]=g.value}));else{if(m.issues.length)r.issues.push(...St(l,m.issues));r.value[d]=m.value}}if(u&&u.length>0)r.issues.push({code:"unrecognized_keys",input:i,inst:e,keys:u,continue:!0})}if(s.length)return Promise.all(s).then(()=>r);return r}});var wf=E("$ZodEnum",(e,t)=>{V.init(e,t);let n=tr(t.entries),r=new Set(n);e._zod.values=r,F(e,"pattern",(o)=>{let i=tr(o.def.entries).filter((s)=>dp.has(typeof s));return new RegExp(i.length?`^(${i.map((s)=>Ut(s.toString())).join("|")})$`:"^[^\\s\\S]$")}),e._zod.parse=(o,i)=>{let s=o.value;if(r.has(s))return o;return o.issues.push({code:"invalid_value",values:n,input:s,inst:e}),o}}),bf=E("$ZodLiteral",(e,t)=>{V.init(e,t);let n=new Set(t.values);e._zod.values=n,F(e,"pattern",(r)=>{let o=r.def.values;return new RegExp(o.length?`^(${o.map((i)=>typeof i==="string"?Ut(i):i?Ut(i.toString()):String(i)).join("|")})$`:"^[^\\s\\S]$")}),e._zod.parse=(r,o)=>{let i=r.value;if(n.has(i))return r;return r.issues.push({code:"invalid_value",values:t.values,input:i,inst:e}),r}});var kf=E("$ZodTransform",(e,t)=>{V.init(e,t),e._zod.optin="optional",xe.memoizer?.guard(e),e._zod.parse=(n,r)=>{if(r.direction==="backward")throw new ir(e.constructor.name);let o=t.transform(n.value,n);if(r.async)return(o instanceof Promise?o:Promise.resolve(o)).then((s)=>(n.value=s,n));if(o instanceof Promise)throw new ft;return n.value=o,n}});function Sm(e,t){return e.value=t.issues.length?void 0:t.value,e}var va=E("$ZodOptional",(e,t)=>{V.init(e,t),F(e,"optin",(n)=>n.def.innerType._zod.optin==="defaulted"?"defaulted":"optional"),e._zod.optout="optional",F(e,"values",(n)=>{let r=n.def.innerType._zod.values;return r?new Set([...r,void 0]):void 0}),F(e,"pattern",(n)=>{let r=n.def.innerType._zod.pattern;return r?new RegExp(`^(${uo(r.source)})?$`):void 0}),e._zod.parse=(n,r)=>{if(n.value===void 0){if(t.innerType._zod.optin!=="defaulted")return n;let o=t.innerType._zod.run({value:n.value,issues:[]},r);if(o instanceof Promise)return o.then((i)=>Sm(n,i));return Sm(n,o)}return t.innerType._zod.run(n,r)}}),Ef=E("$ZodExactOptional",(e,t)=>{va.init(e,t),F(e,"values",(n)=>n.def.innerType._zod.values),F(e,"pattern",(n)=>n.def.innerType._zod.pattern),e._zod.parse=(n,r)=>t.innerType._zod.run(n,r)}),vf=E("$ZodNullable",(e,t)=>{V.init(e,t),F(e,"optin",(n)=>n.def.innerType._zod.optin),F(e,"optout",(n)=>n.def.innerType._zod.optout),F(e,"pattern",(n)=>{let r=n.def.innerType._zod.pattern;return r?new RegExp(`^(${uo(r.source)}|null)$`):void 0}),F(e,"values",(n)=>n.def.innerType._zod.values?new Set([...n.def.innerType._zod.values,null]):void 0),e._zod.parse=(n,r)=>{if(n.value===null)return n;return t.innerType._zod.run(n,r)}}),Tf=E("$ZodDefault",(e,t)=>{V.init(e,t),e._zod.optin="defaulted",F(e,"values",(n)=>n.def.innerType._zod.values),e._zod.parse=(n,r)=>{if(r.direction==="backward")return t.innerType._zod.run(n,r);if(n.value===void 0)return n.value=t.defaultValue,n;let o=t.innerType._zod.run(n,r);if(o instanceof Promise)return o.then((i)=>xm(i,t));return xm(o,t)}});function xm(e,t){if(e.value===void 0)e.value=t.defaultValue;return e}var Rf=E("$ZodPrefault",(e,t)=>{V.init(e,t),e._zod.optin="defaulted",F(e,"values",(n)=>n.def.innerType._zod.values),e._zod.parse=(n,r)=>{if(r.direction==="backward")return t.innerType._zod.run(n,r);if(n.value===void 0)n.value=t.defaultValue;return t.innerType._zod.run(n,r)}}),Sf=E("$ZodNonOptional",(e,t)=>{V.init(e,t),F(e,"values",(n)=>{let r=n.def.innerType._zod.values;return r?new Set([...r].filter((o)=>o!==void 0)):void 0}),e._zod.parse=(n,r)=>{let o=t.innerType._zod.run(n,r);if(o instanceof Promise)return o.then((i)=>Am(i,e));return Am(o,e)}});function Am(e,t){if(!e.issues.length&&e.value===void 0)e.issues.push({code:"invalid_type",expected:"nonoptional",input:e.value,inst:t});return e}function Om(e,t,n,r){if(!t.issues.length){if(e.value=t.value,t.memo)e.memo=!0;return e}return e.value=n.catchValue({...t,value:e.value,error:{issues:t.issues.map((o)=>mt(o,r,Ue()))},input:e.value}),e}var xf=E("$ZodCatch",(e,t)=>{V.init(e,t),F(e,"optin",(n)=>n.def.innerType._zod.optin==="defaulted"?"defaulted":"optional"),F(e,"optout",(n)=>n.def.innerType._zod.optout),F(e,"values",(n)=>n.def.innerType._zod.values),e._zod.parse=(n,r)=>{if(r.direction==="backward")return t.innerType._zod.run(n,r);let o=t.innerType._zod.run({value:n.value,issues:[]},r);if(o instanceof Promise)return o.then((i)=>Om(n,i,t,r));return Om(n,o,t,r)}});var Af=E("$ZodPipe",(e,t)=>{V.init(e,t),F(e,"values",(n)=>n.def.in._zod.values),F(e,"optin",(n)=>n.def.in._zod.optin),F(e,"optout",(n)=>n.def.out._zod.optout),F(e,"propValues",(n)=>n.def.in._zod.propValues),e._zod.parse=(n,r)=>{if(r.direction==="backward"){let i=t.out._zod.run(n,r);if(i instanceof Promise)return i.then((s)=>bo(s,t.in,r));return bo(i,t.in,r)}let o=t.in._zod.run(n,r);if(o instanceof Promise)return o.then((i)=>bo(i,t.out,r));return bo(o,t.out,r)}});function bo(e,t,n){if(e.issues.some((r)=>r.code!=="unrecognized_keys"))return e.aborted=!0,e;return t._zod.run({value:e.value,issues:e.issues},n)}var Of=E("$ZodReadonly",(e,t)=>{V.init(e,t),F(e,"propValues",(n)=>n.def.innerType._zod.propValues),F(e,"values",(n)=>n.def.innerType._zod.values),F(e,"optin",(n)=>n.def.innerType?._zod?.optin),F(e,"optout",(n)=>n.def.innerType?._zod?.optout),e._zod.parse=(n,r)=>{if(r.direction==="backward")return t.innerType._zod.run(n,r);let o=t.innerType._zod.run(n,r);if(o instanceof Promise)return o.then(Cm);return Cm(o)}});function Cm(e){if(!e.memo)e.value=Object.freeze(e.value);return e}var Cf=E("$ZodCustom",(e,t)=>{pe.init(e,t),V.init(e,t),e._zod.parse=(n,r)=>n,e._zod.check=(n)=>{let r=n.value,o=t.fn(r);if(o instanceof Promise)return o.then((i)=>Pm(i,n,r,e));Pm(o,n,r,e);return}});function Pm(e,t,n,r){if(!e){let o={code:"custom",input:n,inst:r,path:[...r._zod.def.path??[]],continue:!r._zod.def.abort};if(r._zod.def.params)o.params=r._zod.def.params;t.issues.push(on(o))}}function Im(e,t,n){if(e.issues.length)t.issues.push(...St(n,e.issues))}var nR=E("$ZodProperties",(e,t)=>{V.init(e,t),pe.init(e,t);let n=xe.memoizer;n?.attach(e);let r,o=(i,s)=>{r??(r=Reflect.ownKeys(t.shape).map((l)=>[l,t.shape[l]]));let a=i.value,u;for(let[l,c]of r){let p=c._zod.run({value:a[l],issues:[]},s);if(p instanceof Promise)u??(u=[]),u.push(p.then((d)=>Im(d,i,l)));else Im(p,i,l)}if(u)return Promise.all(u).then(()=>{return});return};e._zod.parse=(i,s)=>{let a=i.value;if(a===null||typeof a!=="object"&&typeof a!=="function")return i.issues.push({expected:"object",code:"invalid_type",input:a,inst:e}),i;if(s.direction==="backward")s={...s,direction:"forward"};if(n)n.alloc(e,i,a,s);let u=o(i,s);return u instanceof Promise?u.then(()=>i):i},e._zod.check=(i)=>{if(i.value==null){i.issues.push({expected:"object",code:"invalid_type",input:i.value,inst:e});return}return o(i,{})}},{*[Symbol.iterator](){yield this}});class If extends Error{constructor(){super("Cannot parse a reference cycle that closes through a transform");this.name="ZodCyclicError"}}var Ra="~memo",Pf=[];function Lf(e){return e!==null&&(typeof e==="object"||typeof e==="function")}function Ta(e){return e.map((t)=>t.path?{...t,path:t.path.slice()}:{...t})}var Nf=new WeakMap,cr=0,So=1,lr=2;function xo(e,t,n){let r=Nf.get(e);if(r!==void 0)return r?lr:cr;if(t.has(e))return lr;t.add(e);let o=cr,i=(c)=>{if(o!==lr&&c?._zod){let p=xo(c,t,n);if(p>o)o=p}},s=(c,p)=>{let d=cr;for(let m of Reflect.ownKeys(c)){let g=Object.getOwnPropertyDescriptor(c,m);if(p&&!g.enumerable)continue;let h=g.get?So:g.value?._zod?xo(g.value,t,n):cr;if(h>d)d=h}return d},a=(c)=>{if(c>o)o=c},u=e._zod.def,l=u.type;switch(l){case"object":{let c=or(u);a(c?s(c,!0):So),i(u.catchall);break}case"properties":a(s(u.shape,!1));break;case"array":i(u.element);break;case"tuple":for(let c of u.items)i(c);i(u.rest);break;case"record":case"map":i(u.keyType),i(u.valueType);break;case"set":i(u.valueType);break;case"union":for(let c of u.options)i(c);break;case"intersection":i(u.left),i(u.right);break;case"optional":case"nullable":case"default":case"prefault":case"catch":case"readonly":case"nonoptional":case"promise":case"success":i(u.innerType);break;case"pipe":i(u.in),i(u.out);break;case"function":i(u.input),i(u.output);break;case"lazy":{let c=u._cachedInner??(n?e._zod.innerType:void 0);a(c?xo(c,t,!1):So);break}case"template_literal":case"string":case"number":case"int":case"boolean":case"bigint":case"symbol":case"undefined":case"null":case"void":case"never":case"any":case"unknown":case"date":case"nan":case"enum":case"literal":case"file":case"transform":case"custom":break;default:for(let c in u){let p=Object.getOwnPropertyDescriptor(u,c);if(!p||p.get)continue;let d=p.value;if(!d||typeof d!=="object")continue;if(d._zod)i(d);else if(Array.isArray(d))for(let m of d)i(m)}}return t.delete(e),rR(e,o)}function rR(e,t){if(t!==So)Nf.set(e,t===lr);return t}function oR(e,t){let n=e.buckets.get(t);if(!n)n=new WeakMap,e.buckets.set(t,n);return n}var To,Ro=[],iR={alloc(e,t,n){let r=To;if(!r)return n;To=void 0;let o={value:n,issues:null};return r.set(t.value,o),Ro.push(o),n},guard(e){var t;(t=e._zod).deferred??(t.deferred=[]),e._zod.deferred.push(()=>{let n=e._zod.parse,r=(o,i)=>{if(i.direction!=="backward"&&sR(i,o.value))throw new If;return n(o,i)};if(e._zod.parse=r,e._zod.run===n)e._zod.run=r})},attach(e){var t;let n,r=!1,o,i;(t=e._zod).deferred??(t.deferred=[]),e._zod.deferred.push(()=>{let s=e._zod.parse,a=(u,l)=>{if(n===void 0){let y=xo(e,new Set,!1);if(y===cr){if(e._zod.parse=s,e._zod.run===a)e._zod.run=s;return s(u,l)}if(y===lr||r)n=!0;else r=!0}let c=u.value;if(!Lf(c))return s(u,l);let p=l[Ra];if(!p)p={buckets:new WeakMap,backEdges:void 0},l[Ra]=p;let d;if(o===l)d=i;else d=oR(p,e),o=l,i=d;let m=d.get(c);if(m){if(u.value=m.value,m.issues){if(m.issues.length)u.issues.push(...Ta(m.issues))}else u.memo=!0,p.backEdges??(p.backEdges=new WeakSet),p.backEdges.add(m.value);return u}To=d;let g=Ro.length,h=s(u,l);To=void 0;let f=Ro.length>g?Ro.pop():void 0;if(h instanceof Promise)return h.then((y)=>{if(f)f.issues=y.issues.length?Ta(y.issues):Pf;return y});if(f)f.issues=h.issues.length?Ta(h.issues):Pf;return h};if(e._zod.parse=a,e._zod.run===s)e._zod.run=a})}};function Df(){return iR}function sR(e,t){let n=e[Ra]?.backEdges;return n!==void 0&&Lf(t)&&n.has(t)}var aR=()=>{let e={string:{unit:"characters",verb:"to have"},file:{unit:"bytes",verb:"to have"},array:{unit:"items",verb:"to have"},set:{unit:"items",verb:"to have"},map:{unit:"entries",verb:"to have"}};function t(i){return e[i]??null}let n={regex:"input",email:"email address",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO datetime",date:"ISO date",time:"ISO time",duration:"ISO duration",ipv4:"IPv4 address",ipv6:"IPv6 address",mac:"MAC address",cidrv4:"IPv4 range",cidrv6:"IPv6 range",base64:"base64-encoded string",base64url:"base64url-encoded string",json_string:"JSON string",e164:"E.164 number",credit_card:"credit card number",iban:"IBAN",jwt:"JWT",template_literal:"input"},r={nan:"NaN"};function o(i,s){if(i==="number"&&typeof s==="number"&&!Number.isFinite(s))return String(s);return r[i]??i}return(i)=>{switch(i.code){case"invalid_type":{let s=o(i.expected),a=hp(i.input),u=o(a,i.input);return`Invalid input: expected ${s}, received ${u}`}case"invalid_value":if(i.values.length===1)return`Invalid input: expected ${na(i.values[0])}`;return`Invalid option: expected one of ${Js(i.values,"|")}`;case"too_big":{let s=i.exact?"exactly ":i.inclusive?"<=":"<",a=t(i.origin);if(a)return`Too big: expected ${i.origin??"value"} to have ${s}${i.maximum.toString()} ${a.unit??"elements"}`;return`Too big: expected ${i.origin??"value"} to be ${s}${i.maximum.toString()}`}case"too_small":{let s=i.exact?"exactly ":i.inclusive?">=":">",a=t(i.origin);if(a)return`Too small: expected ${i.origin} to have ${s}${i.minimum.toString()} ${a.unit}`;return`Too small: expected ${i.origin} to be ${s}${i.minimum.toString()}`}case"invalid_format":{let s=i;if(s.format==="starts_with")return`Invalid string: must start with "${s.prefix}"`;if(s.format==="ends_with")return`Invalid string: must end with "${s.suffix}"`;if(s.format==="includes")return`Invalid string: must include "${s.includes}"`;if(s.format==="regex")return`Invalid string: must match pattern ${s.pattern}`;return`Invalid ${n[s.format]??i.format}`}case"not_multiple_of":return`Invalid number: must be a multiple of ${i.divisor}`;case"unrecognized_keys":return`Unrecognized key${i.keys.length>1?"s":""}: ${Js(i.keys,", ")}`;case"invalid_key":return`Invalid key in ${i.origin}`;case"invalid_union":if(i.options&&Array.isArray(i.options)&&i.options.length>0)return`Invalid discriminator value. Expected ${i.options.map((a)=>`'${a}'`).join(" | ")}`;if(i.inclusive===!1)return"Invalid input: more than one option matched";return"Invalid input";case"invalid_element":return`Invalid value in ${i.origin}`;default:return"Invalid input"}}};function Sa(){return{localeError:aR()}}var Mf;class Uf{constructor(){this._map=new WeakMap,this._idmap=new Map}add(e,...t){let n=t[0];if(this._map.set(e,n),n&&typeof n==="object"&&"id"in n)this._idmap.set(n.id,e);return this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(e){let t=this._map.get(e);if(t&&typeof t==="object"&&"id"in t)this._idmap.delete(t.id);return this._map.delete(e),this}get(e){let t=e._zod.parent;if(t){let n={...this.get(t)??{}};delete n.id;let r={...n,...this._map.get(e)};return Object.keys(r).length?r:void 0}return this._map.get(e)}has(e){return this._map.has(e)}}function uR(){return new Uf}(Mf=globalThis).__zod_globalRegistry??(Mf.__zod_globalRegistry=uR());var sn=globalThis.__zod_globalRegistry;function $f(e,t){return new e({type:"string",...A(t)})}function Ff(e,t){return new e({type:"string",format:"email",check:"string_format",abort:!1,...A(t)})}function Bf(e,t){return new e({type:"string",format:"guid",check:"string_format",abort:!1,...A(t)})}function zf(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,...A(t)})}function qf(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...A(t)})}function Hf(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...A(t)})}function Wf(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...A(t)})}function jf(e,t){return new e({type:"string",format:"url",check:"string_format",abort:!1,...A(t)})}function Kf(e,t){return new e({type:"string",format:"emoji",check:"string_format",abort:!1,...A(t)})}function Gf(e,t){return new e({type:"string",format:"nanoid",check:"string_format",abort:!1,...A(t)})}function Zf(e,t){return new e({type:"string",format:"cuid",check:"string_format",abort:!1,...A(t)})}function Xf(e,t){return new e({type:"string",format:"cuid2",check:"string_format",abort:!1,...A(t)})}function Vf(e,t){return new e({type:"string",format:"ulid",check:"string_format",abort:!1,...A(t)})}function Qf(e,t){return new e({type:"string",format:"xid",check:"string_format",abort:!1,...A(t)})}function Yf(e,t){return new e({type:"string",format:"ksuid",check:"string_format",abort:!1,...A(t)})}function Jf(e,t){return new e({type:"string",format:"ipv4",check:"string_format",abort:!1,...A(t)})}function eg(e,t){return new e({type:"string",format:"ipv6",check:"string_format",abort:!1,...A(t)})}function tg(e,t){return new e({type:"string",format:"cidrv4",check:"string_format",abort:!1,...A(t)})}function ng(e,t){return new e({type:"string",format:"cidrv6",check:"string_format",abort:!1,...A(t)})}function rg(e,t){return new e({type:"string",format:"base64",check:"string_format",abort:!1,...A(t)})}function og(e,t){return new e({type:"string",format:"base64url",check:"string_format",abort:!1,...A(t)})}function ig(e,t){return new e({type:"string",format:"e164",check:"string_format",abort:!1,...A(t)})}function sg(e,t){return new e({type:"string",format:"jwt",check:"string_format",abort:!1,...A(t)})}function ag(e,t){return new e({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...A(t)})}function ug(e,t){return new e({type:"string",format:"date",check:"string_format",...A(t)})}function cg(e,t){return new e({type:"string",format:"time",check:"string_format",precision:null,...A(t)})}function lg(e,t){return new e({type:"string",format:"duration",check:"string_format",...A(t)})}function dg(e,t){return new e({type:"number",checks:[],...A(t)})}function pg(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"safeint",...A(t)})}function mg(e,t){return new e({type:"boolean",...A(t)})}function fg(e){return new e({type:"unknown"})}function gg(e,t){return new e({type:"never",...A(t)})}function Ao(e,t){return new ga({check:"less_than",...A(t),value:e,inclusive:!1})}function dr(e,t){return new ga({check:"less_than",...A(t),value:e,inclusive:!0})}function Oo(e,t){return new ha({check:"greater_than",...A(t),value:e,inclusive:!1})}function pr(e,t){return new ha({check:"greater_than",...A(t),value:e,inclusive:!0})}function Co(e,t){return new cm({check:"multiple_of",...A(t),value:e})}function Po(e,t){return new dm({check:"max_length",...A(t),maximum:e})}function Rn(e,t){return new pm({check:"min_length",...A(t),minimum:e})}function Io(e,t){return new mm({check:"length_equals",...A(t),length:e})}function xa(e,t){return new fm({check:"string_format",format:"regex",...A(t),pattern:e})}function Aa(e){return new gm({check:"string_format",format:"lowercase",...A(e)})}function Oa(e){return new hm({check:"string_format",format:"uppercase",...A(e)})}function Ca(e,t){return new ym({check:"string_format",format:"includes",...A(t),includes:e})}function Pa(e,t){return new _m({check:"string_format",format:"starts_with",...A(t),prefix:e})}function Ia(e,t){return new wm({check:"string_format",format:"ends_with",...A(t),suffix:e})}function $t(e){return new bm({check:"overwrite",tx:e})}function La(e){return $t((t)=>t.normalize(e))}function Na(){return $t((e)=>e.trim())}function Da(){return $t((e)=>e.toLowerCase())}function Ma(){return $t((e)=>e.toUpperCase())}function Ua(){return $t((e)=>cp(e))}function hg(e,t,n){return new e({type:"array",element:t,...A(n)})}function yg(e,t,n){return new e({type:"custom",check:"custom",fn:t,...A(n)})}function _g(e,t){let n=cR((r)=>(r.addIssue=(o)=>{if(typeof o==="string")r.issues.push(on(o,r.value,n._zod.def));else{let i=o;if(i.fatal)i.continue=!1;if(i.code??(i.code="custom"),!("input"in i))i.input=r.value;i.inst??(i.inst=n),i.continue??(i.continue=!n._zod.def.abort),r.issues.push(on(i))}},e(r.value,r)),t);return n}function cR(e,t){let n=new pe({check:"custom",...A(t)});return n._zod.check=e,n}function mr(e,...t){for(let n of t)for(let r of Reflect.ownKeys(n))if(Object.prototype.propertyIsEnumerable.call(n,r))Ge(e,r,n[r]);return e}function Fa(e){let t=e?.target??"draft-2020-12";if(t==="draft-4")t="draft-04";if(t==="draft-7")t="draft-07";return{processors:e.processors??{},metadataRegistry:e?.metadata??sn,target:t,unrepresentable:e?.unrepresentable??"throw",override:e?.override??(()=>{}),io:e?.io??"output",counter:0,seen:new Map,sharedDefsExtractedFor:void 0,sharedEmitDoneFor:void 0,cycles:e?.cycles??"ref",reused:e?.reused??"inline",intersections:[],deferred:[],external:e?.external??void 0}}function xt(e,t,n,r,o){let i=typeof t.unrepresentable==="function"?t.unrepresentable({zodSchema:e,path:r.path,message:o}):t.unrepresentable;if(i==="any")return!1;if(i===void 0||i==="throw")throw Error(o);return Object.assign(n,i),!0}function ie(e,t,n={path:[],schemaPath:[]}){var r;let o=e._zod.def,i=t.seen.get(e);if(i){if(i.count++,n.schemaPath.includes(e))i.cycle=n.path;return i.schema}let s={schema:{},count:1,cycle:void 0,path:n.path};t.seen.set(e,s),t.sharedDefsExtractedFor=void 0,t.sharedEmitDoneFor=void 0;let a=e._zod.toJSONSchema?.();if(a)s.schema=a;else{let c={...n,schemaPath:[...n.schemaPath,e],path:n.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(t,s.schema,c);else{let d=s.schema,m=t.processors[o.type];if(!m)throw Error(`[toJSONSchema]: Non-representable type encountered: ${o.type}`);m(e,t,d,c)}let p=e._zod.parent;if(p){if(!s.ref)s.ref=p;ie(p,t,c),t.seen.get(p).isParent=!0}}let u=t.metadataRegistry.get(e);if(u)mr(s.schema,u);if(t.io==="input"&&Ee(e))delete s.schema.examples,delete s.schema.default;if(t.io==="input"&&"_prefault"in s.schema)(r=s.schema).default??(r.default=s.schema._prefault);return delete s.schema._prefault,t.seen.get(e).schema}function wg(e){return e.replace(/~/g,"~0").replace(/\//g,"~1")}function Ba(e,t){let n=e.seen.get(t);if(!n)throw Error("Unprocessed schema. This is a bug in Zod.");if(e.external&&e.sharedDefsExtractedFor===e.external)return;let r=new Map;for(let s of e.seen.entries()){let a=e.metadataRegistry.get(s[0])?.id;if(a){let u=r.get(a);if(u&&u!==s[0])throw Error(`Duplicate schema id "${a}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);r.set(a,s[0])}}let o=(s)=>{let a=e.target==="draft-2020-12"?"$defs":"definitions";if(e.external){let p=e.external.registry.get(s[0])?.id,d=e.external.uri??((g)=>g);if(p)return{ref:d(p)};let m=s[1].defId??s[1].schema.id??`schema${e.counter++}`;return s[1].defId=m,{defId:m,ref:`${d("__shared")}#/${a}/${wg(m)}`}}let u="#",l=`${u}/${a}/`;if(s[1]===n&&!s[1].schema.id)return{ref:u};let c=s[1].schema.id??`__schema${e.counter++}`;return{defId:c,ref:l+wg(c)}},i=(s)=>{if(s[1].schema.$ref)return;let a=s[1],{ref:u,defId:l}=o(s);if(a.def={...a.schema},l)a.defId=l;let c=a.schema;for(let p in c)delete c[p];c.$ref=u};if(e.cycles==="throw")for(let s of e.seen.entries()){let a=s[1];if(a.cycle)throw Error(`Cycle detected: #/${a.cycle?.join("/")}/<root>
|
|
67
67
|
|
|
68
|
-
Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let s of e.seen.entries()){let a=s[1];if(t===s[0]){i(s);continue}if(e.external){let c=e.external.registry.get(s[0])?.id;if(t!==s[0]&&c){i(s);continue}}if(e.metadataRegistry.get(s[0])?.id){i(s);continue}if(a.cycle){i(s);continue}if(a.count>1){if(e.reused==="ref")i(s)}}if(e.external)e.sharedDefsExtractedFor=e.external}function fg(e){let t=e.anyOf;if(!Array.isArray(t)||t.length===0||e.type!==void 0)return;let n=[];for(let r of t){if(!r||typeof r!=="object")return;fg(r);let o=Object.keys(r);if(o.length!==1||o[0]!=="type")return;let i=r.type;for(let s of Array.isArray(i)?i:[i]){if(typeof s!=="string")return;if(!n.includes(s))n.push(s)}}delete e.anyOf,e.type=n.length===1?n[0]:n}var gg=new Set(["type","properties","required","additionalProperties"]),pg=["oneOf","anyOf"];function mg(e){let t=e.additionalProperties;if(t===void 0||t===!1||typeof t!=="object"||t===null)return null;return Object.keys(t).length?t:null}function $a(e){let t=[];for(let i of e){if(typeof i!=="object"||i.type!=="object")return null;for(let s in i)if(!gg.has(s))return null;t.push(i)}let n={},r=new Set;for(let i of t){for(let s in i.properties){if(Object.prototype.hasOwnProperty.call(n,s))continue;let a=[];for(let c of t){let d=c.properties?.[s]??mg(c);if(d===null||d===void 0)continue;if(!a.some((p)=>JSON.stringify(p)===JSON.stringify(d)))a.push(d)}let u=a.length===1?a[0]:$a(a)??{allOf:a};je(n,s,u)}for(let s of i.required??[])r.add(s)}let o={type:"object",properties:n};if(r.size)o.required=[...r];if(t.every((i)=>i.additionalProperties===!1))o.additionalProperties=!1;else{let i=[];for(let s of t){let a=mg(s);if(a&&!i.some((u)=>JSON.stringify(u)===JSON.stringify(a)))i.push(a)}if(i.length===1)o.additionalProperties=i[0];else if(i.length>1)o.additionalProperties={allOf:i}}return o}function JT(e){let t=e.allOf;if(!Array.isArray(t)||t.length<2)return;for(let o of gg)if(o in e)return;let n=t.filter((o)=>pg.some((i)=>Array.isArray(o[i]))),r=null;if(!n.length)r=$a(t);else{let o=n[0],i=pg.find((u)=>Array.isArray(o[u]));if(Object.keys(o).length!==1)return;let s=t.filter((u)=>u!==o),a=o[i].map((u)=>$a([...s,u]));if(a.some((u)=>!u))return;r={[i]:a}}if(!r)return;delete e.allOf,cr(e,r)}function za(e,t){let n=e.seen.get(t);if(!n)throw Error("Unprocessed schema. This is a bug in Zod.");let r=(a)=>{let u=e.seen.get(a);if(u.ref===null)return;let c=u.def??u.schema,d={...c},p=u.ref;if(u.ref=null,p){r(p);let m=e.seen.get(p),g=m.schema;if(g.$ref&&(e.target==="draft-07"||e.target==="draft-04"||e.target==="openapi-3.0"))c.allOf=c.allOf??[],c.allOf.push(g);else cr(c,g);if(cr(c,d),a._zod.parent===p)for(let f in c){if(f==="$ref"||f==="allOf")continue;if(!(f in d))delete c[f]}if(g.$ref&&m.def)for(let f in c){if(f==="$ref"||f==="allOf")continue;if(f in m.def&&JSON.stringify(c[f])===JSON.stringify(m.def[f]))delete c[f]}}let l=a._zod.parent;if(l&&l!==p){r(l);let m=e.seen.get(l);if(m?.schema.$ref){if(c.$ref=m.schema.$ref,m.def)for(let g in c){if(g==="$ref"||g==="allOf")continue;if(g in m.def&&JSON.stringify(c[g])===JSON.stringify(m.def[g]))delete c[g]}}}e.override({zodSchema:a,jsonSchema:c,path:u.path??[]})};if(!e.external||e.sharedEmitDoneFor!==e.external){for(let a of[...e.seen.entries()].reverse())r(a[0]);if(e.target!=="openapi-3.0")for(let a of e.seen.entries())fg(a[1].def??a[1].schema);for(let a of e.deferred)a();if(e.intersections.length){let a=new Map;for(let u of e.seen.values())for(let c of[u.schema,u.def]){let d=c?.allOf;if(!Array.isArray(d))continue;let p=a.get(d);if(p)p.push(c);else a.set(d,[c])}for(let u of e.intersections)for(let c of a.get(u)??[])JT(c)}}let o={};if(e.target==="draft-2020-12")o.$schema="https://json-schema.org/draft/2020-12/schema";else if(e.target==="draft-07")o.$schema="http://json-schema.org/draft-07/schema#";else if(e.target==="draft-04")o.$schema="http://json-schema.org/draft-04/schema#";else if(e.target==="openapi-3.0");if(e.external?.uri){let a=e.external.registry.get(t)?.id;if(!a)throw Error("Schema is missing an `id` property");o.$id=e.external.uri(a)}cr(o,n.defId?n.schema:n.def??n.schema);let i=e.metadataRegistry.get(t)?.id;if(i!==void 0&&o.id===i)delete o.id;let s=e.external?.defs??{};if(!e.external||e.sharedEmitDoneFor!==e.external)for(let a of e.seen.entries()){let u=a[1];if(u.def&&u.defId){if(u.def.id===u.defId)delete u.def.id;je(s,u.defId,u.def)}}if(e.external)e.sharedEmitDoneFor=e.external;if(e.external);else if(Object.keys(s).length>0)if(e.target==="draft-2020-12")o.$defs=s;else o.definitions=s;try{let a=JSON.parse(JSON.stringify(o));return Object.defineProperty(a,"~standard",{value:{...t["~standard"],jsonSchema:{input:dr(t,"input",e.processors),output:dr(t,"output",e.processors)}},enumerable:!1,writable:!1}),a}catch(a){throw Error("Error converting schema to JSON.")}}function ke(e,t){let n=t??{seen:new Set};if(n.seen.has(e))return!1;n.seen.add(e);let r=e._zod.def;if(r.type==="transform")return!0;if(r.type==="array")return ke(r.element,n);if(r.type==="set")return ke(r.valueType,n);if(r.type==="lazy")return ke(r.getter(),n);if(r.type==="promise"||r.type==="optional"||r.type==="nonoptional"||r.type==="nullable"||r.type==="readonly"||r.type==="default"||r.type==="prefault"||r.type==="catch")return ke(r.innerType,n);if(r.type==="intersection")return ke(r.left,n)||ke(r.right,n);if(r.type==="record"||r.type==="map")return ke(r.keyType,n)||ke(r.valueType,n);if(r.type==="pipe"){if(e._zod.traits.has("$ZodCodec"))return!0;return ke(r.in,n)||ke(r.out,n)}if(r.type==="object"){for(let o in r.shape)if(ke(r.shape[o],n))return!0;return!1}if(r.type==="union"){for(let o of r.options)if(ke(o,n))return!0;return!1}if(r.type==="tuple"){for(let o of r.items)if(ke(o,n))return!0;if(r.rest&&ke(r.rest,n))return!0;return!1}return!1}var hg=(e,t={})=>(n)=>{let r=Fa({...n,processors:t});return ie(e,r),Ba(r,e),za(r,e)},dr=(e,t,n={})=>(r)=>{let{libraryOptions:o,target:i}=r??{},s=Fa({...o??{},target:i,io:t,processors:n});return ie(e,s),Ba(s,e),za(s,e)};var Tn=(e,t,n)=>{if(e[t]===void 0||n>e[t])e[t]=n},Rn=(e,t,n)=>{if(e[t]===void 0||n<e[t])e[t]=n},yg=(e,t)=>{Tn(e,"minimum",t),Rn(e,"maximum",t)},kg=(e,t)=>{if(e.multipleOf??(e.multipleOf=[]),!e.multipleOf.includes(t))e.multipleOf.push(t)},Eg=(e,t)=>{e.patterns??(e.patterns=new Set),e.patterns.add(t)},vg=(e,t)=>{e.mime=e.mime?e.mime.filter((n)=>t.includes(n)):[...t]},Tg=(e,t)=>{if(e.format=t,t.includes("int"))e.isInt=!0},_g=(e,t)=>Tn(e,"minimum",t.minimum),wg=(e,t)=>Rn(e,"maximum",t.maximum),bg=(e)=>(t,n)=>{Tg(t,n.format);let[r,o]=e[n.format];Tn(t,"minimum",r),Rn(t,"maximum",o)},eR={greater_than:(e,t)=>Tn(e,t.inclusive?"minimum":"exclusiveMinimum",t.value),less_than:(e,t)=>Rn(e,t.inclusive?"maximum":"exclusiveMaximum",t.value),multiple_of:(e,t)=>kg(e,t.value),number_format:bg(ao),bigint_format:bg(ra),min_length:_g,max_length:wg,length_equals:(e,t)=>yg(e,t.length),min_size:_g,max_size:wg,size_equals:(e,t)=>yg(e,t.size),string_format:(e,t)=>{if(Tg(e,t.format),t.pattern)Eg(e,t.pattern);if(t.format==="base64"||t.format==="base64url")e.contentEncoding=t.format;if(t.local||t.precision===-1)e.laxFormat=!0},mime_type:(e,t)=>vg(e,t.mime)};function Ke(e){let t={},n=e._zod.def,r=e._zod.traits.has("$ZodCheck")?[e,...n.checks??[]]:n.checks??[];for(let i of r)eR[i._zod.def.check]?.(t,i._zod.def);let o=e._zod.bag;if(o.minimum!==void 0)Tn(t,"minimum",o.minimum);if(o.exclusiveMinimum!==void 0)Tn(t,"exclusiveMinimum",o.exclusiveMinimum);if(o.maximum!==void 0)Rn(t,"maximum",o.maximum);if(o.exclusiveMaximum!==void 0)Rn(t,"exclusiveMaximum",o.exclusiveMaximum);if(o.multipleOf!==void 0)kg(t,o.multipleOf);if(o.format!==void 0){if(t.format??(t.format=o.format),o.format.includes("int"))t.isInt=!0}if(o.mime)vg(t,o.mime);for(let i of o.patterns??[])Eg(t,i);return t}var tR={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},nR=new Map([[ba,Hp],[ko,Wp]]),Rg=(e)=>nR.get(e)??e,Sg=(e,t,n,r)=>{let o=n;o.type="string";let{minimum:i,maximum:s,format:a,patterns:u,contentEncoding:c,laxFormat:d}=Ke(e);if(typeof i==="number")o.minLength=i;if(typeof s==="number")o.maxLength=s;if(a){if(o.format=tR[a]??a,o.format==="")delete o.format;if(a==="time"||d)delete o.format}if(c)o.contentEncoding=c;if(u&&u.size>0){let p=[...u].map(Rg);if(p.length===1)o.pattern=p[0].source;else if(p.length>1)o.allOf=[...p.map((l)=>({...t.target==="draft-07"||t.target==="draft-04"||t.target==="openapi-3.0"?{type:"string"}:{},pattern:l.source}))]}},xg=(e,t,n,r)=>{let o=n,{minimum:i,maximum:s,multipleOf:a,exclusiveMaximum:u,exclusiveMinimum:c,isInt:d}=Ke(e);o.type=d?"integer":"number";let p=typeof c==="number"&&c>=(i??Number.NEGATIVE_INFINITY),l=typeof u==="number"&&u<=(s??Number.POSITIVE_INFINITY),m=t.target==="draft-04"||t.target==="openapi-3.0";if(p)if(m)o.minimum=c,o.exclusiveMinimum=!0;else o.exclusiveMinimum=c;else if(typeof i==="number")o.minimum=i;if(l)if(m)o.maximum=u,o.exclusiveMaximum=!0;else o.exclusiveMaximum=u;else if(typeof s==="number")o.maximum=s;if(a){let g=new Set;for(let y of a)if(Number.isFinite(y)&&y!==0)g.add(Math.abs(y));else Rt(e,t,o,r,`A multipleOf divisor of ${y} cannot be represented in JSON Schema`);let[h,...f]=g;if(h!==void 0)o.multipleOf=h;if(f.length)o.allOf=[...o.allOf??[],...f.map((y)=>({multipleOf:y}))]}},Ag=(e,t,n,r)=>{n.type="boolean"};var Og=(e,t,n,r)=>{n.not={}};var Cg=(e,t,n,r)=>{};var Pg=(e,t,n,r)=>{let o=e._zod.def,i=Qn(o.entries);if(i.length===0){n.not={};return}if(i.every((s)=>typeof s==="number"))n.type="number";if(i.every((s)=>typeof s==="string"))n.type="string";n.enum=i},Ig=(e,t,n,r)=>{let o=e._zod.def;if(o.values.length===0){n.not={};return}let i=[];for(let s of o.values)if(s===void 0){if(Rt(e,t,n,r,"Literal `undefined` cannot be represented in JSON Schema"))return}else if(typeof s==="bigint"){if(Rt(e,t,n,r,"BigInt literals cannot be represented in JSON Schema"))return;i.push(Number(s))}else i.push(s);if(i.length===0);else if(i.length===1){let s=i[0];if(n.type=s===null?"null":typeof s,t.target==="draft-04"||t.target==="openapi-3.0")n.enum=[s];else n.const=s}else{if(i.every((s)=>typeof s==="number"))n.type="number";if(i.every((s)=>typeof s==="string"))n.type="string";if(i.every((s)=>typeof s==="boolean"))n.type="boolean";if(i.every((s)=>s===null))n.type="null";n.enum=i}};var Lg=(e,t,n,r)=>{Rt(e,t,n,r,"Custom types cannot be represented in JSON Schema")};var Ng=(e,t,n,r)=>{Rt(e,t,n,r,"Transforms cannot be represented in JSON Schema")};var Dg=(e,t,n,r)=>{let o=n,i=e._zod.def,{minimum:s,maximum:a}=Ke(e);if(typeof s==="number")o.minItems=s;if(typeof a==="number")o.maxItems=a;o.type="array",o.items=ie(i.element,t,{...r,path:[...r.path,"items"]})};function Po(e){let t=e._zod.def;if(t.type==="pipe"&&t.in._zod.traits.has("$ZodTransform"))return Po(t.out);if(t.type==="catch")return Po(t.innerType);return e._zod.optin}var Ug=(e,t,n,r)=>{let o=n,i=e._zod.def,s=i.shape;if(Object.getOwnPropertySymbols(s).length&&Rt(e,t,o,r,"Symbol keys cannot be represented in JSON Schema"))return;o.type="object",o.properties={};for(let d in s)je(o.properties,d,ie(s[d],t,{...r,path:[...r.path,"properties",d]}));let u=new Set(Object.keys(s)),c=new Set([...u].filter((d)=>{let p=i.shape[d];if(t.io==="input")return Po(p)===void 0;else return p._zod.optout===void 0}));if(c.size>0)o.required=Array.from(c);if(i.catchall?._zod.def.type==="never")o.additionalProperties=!1;else if(!i.catchall){if(t.io==="output")o.additionalProperties=!1}else if(i.catchall)o.additionalProperties=ie(i.catchall,t,{...r,path:[...r.path,"additionalProperties"]})};var Mg=(e,t,n,r)=>{let o=e._zod.def,i=o.inclusive===!1,s=o.options.map((a,u)=>ie(a,t,{...r,path:[...r.path,i?"oneOf":"anyOf",u]}));if(i)n.oneOf=s;else n.anyOf=s},$g=(e,t,n,r)=>{let o=e._zod.def,i=ie(o.left,t,{...r,path:[...r.path,"allOf",0]}),s=ie(o.right,t,{...r,path:[...r.path,"allOf",1]}),a=(c)=>("allOf"in c)&&Object.keys(c).length===1,u=[...a(i)?i.allOf:[i],...a(s)?s.allOf:[s]];n.allOf=u,t.intersections.push(u)};function qa(e,t,n){if(t.$ref){if(n.has(t))return t;n.add(t);let g=e.get(t)?.def;if(!g)return t;let h=qa(e,g,n);return h===g?t:h}for(let g of["anyOf","oneOf"]){let h=t[g];if(!Array.isArray(h))continue;let f=h.map((y)=>qa(e,y,n));if(f.some((y,_)=>y!==h[_]))t={...t,[g]:f}}let r=Array.isArray(t.type)?t.type:[t.type],o=!r.includes("string")&&r.some((g)=>g==="number"||g==="integer"),i=t.enum??(t.const!==void 0?[t.const]:void 0);if(!o&&!i?.some((g)=>typeof g==="number"))return t;let{minimum:s,maximum:a,exclusiveMinimum:u,exclusiveMaximum:c,multipleOf:d,format:p,id:l,...m}=t;if(m.enum)m.enum=m.enum.map((g)=>typeof g==="number"?String(g):g);else if(typeof m.const==="number")m.const=String(m.const);if(!o)return m;if(m.type="string",!i)m.pattern=(r.includes("number")?nr:ma).source;return m}var Ha=new WeakMap;function rR(e){let t=new Map;for(let r of e.seen.values())if(r.def&&!t.has(r.schema))t.set(r.schema,r);let n=new Map;for(let r of Ha.get(e)??[]){let o=e.seen.get(r),i=(o?.def??o?.schema)?.propertyNames;if(!i||i===!0||n.has(i))continue;let s=qa(t,i,new Set);if(s!==i)n.set(i,s)}if(!n.size)return;for(let r of e.seen.values())for(let o of[r.schema,r.def]){let i=o&&n.get(o.propertyNames);if(i)o.propertyNames=i}}var Fg=(e,t,n,r)=>{let o=n,i=e._zod.def;o.type="object";let s=i.keyType,a=Ke(s).patterns;if(i.mode==="loose"&&a&&a.size>0){let d=ie(i.valueType,t,{...r,path:[...r.path,"patternProperties","*"]});o.patternProperties={};for(let p of a)je(o.patternProperties,Rg(p).source,d)}else{if(t.target==="draft-07"||t.target==="draft-2020-12"){o.propertyNames=ie(i.keyType,t,{...r,path:[...r.path,"propertyNames"]});let d=Ha.get(t);if(!d)d=[],Ha.set(t,d),t.deferred.push(()=>rR(t));d.push(e)}o.additionalProperties=ie(i.valueType,t,{...r,path:[...r.path,"additionalProperties"]})}let u=s._zod.values,c=t.io==="input"&&Po(i.valueType)!==void 0;if(u&&!i.partial&&!c){let d=[...u].filter((p)=>typeof p==="string"||typeof p==="number");if(d.length>0)o.required=d.map(String)}},Bg=(e,t,n,r)=>{let o=e._zod.def,i=ie(o.innerType,t,r),s=t.seen.get(e);if(t.target==="openapi-3.0")s.ref=o.innerType,n.nullable=!0;else n.anyOf=[i,{type:"null"}]},zg=(e,t,n,r)=>{let o=e._zod.def;ie(o.innerType,t,r);let i=t.seen.get(e);i.ref=o.innerType},Wa=Symbol();function qg(e,t,n,r,o){let i=!1,s=JSON.stringify(e,(a,u)=>{if(typeof u!=="bigint")return u;return i=!0,null});if(!i)return JSON.parse(s);return Rt(t,n,r,o,"BigInt defaults cannot be represented in JSON Schema"),Wa}var Hg=(e,t,n,r)=>{let o=e._zod.def;ie(o.innerType,t,r);let i=t.seen.get(e);i.ref=o.innerType;let s=qg(o.defaultValue,e,t,n,r);if(s!==Wa)n.default=s},Wg=(e,t,n,r)=>{let o=e._zod.def;ie(o.innerType,t,r);let i=t.seen.get(e);if(i.ref=o.innerType,t.io!=="input")return;let s=qg(o.defaultValue,e,t,n,r);if(s!==Wa)n._prefault=s},jg=(e,t,n,r)=>{let o=e._zod.def;ie(o.innerType,t,r);let i=t.seen.get(e);i.ref=o.innerType;let s;try{s=o.catchValue(void 0)}catch{Rt(e,t,n,r,"Dynamic catch values are not supported in JSON Schema");return}n.default=s},Kg=(e,t,n,r)=>{let o=e._zod.def,i=o.in._zod.traits.has("$ZodTransform"),s=t.io==="input"?i?o.out:o.in:o.out;ie(s,t,r);let a=t.seen.get(e);a.ref=s},Gg=(e,t,n,r)=>{let o=e._zod.def;ie(o.innerType,t,r);let i=t.seen.get(e);i.ref=o.innerType,n.readOnly=!0};var ja=(e,t,n,r)=>{let o=e._zod.def;ie(o.innerType,t,r);let i=t.seen.get(e);i.ref=o.innerType};var Zg=new WeakSet([Object.prototype,Error.prototype]);function Io(e,t,n){Object.defineProperty(e,t,{configurable:!0,enumerable:!1,get(){let r=n(this);return Object.defineProperty(this,t,{value:r,configurable:!0,writable:!0}),r},set(r){Object.defineProperty(this,t,{value:r,configurable:!0,writable:!0})}})}var dR=(e,t)=>{hp.init(e,t),e.name="ZodError";let n=Object.getPrototypeOf(e);if(Zg.has(n))return;Zg.add(n),Io(n,"format",(r)=>(o)=>_p(r,o)),Io(n,"flatten",(r)=>(o)=>yp(r,o)),Io(n,"addIssue",(r)=>(o)=>{r.issues.push(o),r.message=JSON.stringify(r.issues,Yn,2)}),Io(n,"addIssues",(r)=>(o)=>{r.issues.push(...o),r.message=JSON.stringify(r.issues,Yn,2)}),Object.defineProperty(n,"isEmpty",{configurable:!0,enumerable:!1,get(){return this.issues.length===0}})};var Ue=E("ZodError",dR,void 0,{Parent:Error});var Xg=mo(Ue),Vg=fo(Ue),Qg=go(Ue),Yg=ho(Ue),Jg=bp(Ue),eh=kp(Ue),th=Ep(Ue),nh=vp(Ue),rh=Tp(Ue),oh=Rp(Ue),ih=Sp(Ue),sh=xp(Ue);function pR(){if(!Se.localeError)De(Sa())}function No(){if(!Se.memoizer)De({memoizer:xf()})}var te=E("ZodType",(e,t)=>(pR(),Y.init(e,t),e.def=t,e.type=t.type,e),{check(...e){let t=this.def;return this.clone(Ne(t,{checks:[...t.checks??[],...e.map((n)=>typeof n==="function"?{_zod:{check:n,def:{check:"custom"},onattach:[]}}:n)]}),{parent:!0})},with(...e){return this.check(...e)},clone(e,t){return ut(this,e,t)},brand(){return this},register(e,t){return e.add(this,t),this},refine(e,t){return this.check(cS(e,t))},superRefine(e,t){return this.check(dS(e,t))},overwrite(e){return this.check(Ut(e))},optional(){return ch(this)},exactOptional(){return VR(this)},nullable(){return dh(this)},nullish(){return ch(dh(this))},nonoptional(e){return nS(this,e)},array(){return Sn(this)},or(e){return Xa([this,e])},and(e){return KR(this,e)},transform(e){return lh(this,XR(e))},default(e){return JR(this,e)},prefault(e){return tS(this,e)},catch(e){return oS(this,e)},pipe(e){return lh(this,e)},readonly(){return aS(this)},describe(e){let t=this.clone();return rn.add(t,{description:e}),t},meta(...e){if(e.length===0)return rn.get(this);let t=this.clone();return rn.add(t,e[0]),t},isOptional(){return this.safeParse(void 0).success},isNullable(){return this.safeParse(null).success},apply(e,...t){return t.length===0?e(this):e(this,...t)},get "~standard"(){return ia(this,"~standard",{...wa(this),jsonSchema:{input:dr(this,"input"),output:dr(this,"output")}})},set "~standard"(e){vt(this,"~standard",e)},parse:function e(t,n){return Xg(this,t,n,{callee:e})},parseAsync:async function e(t,n){return await Vg(this,t,n,{callee:e})},safeParse(e,t){return Qg(this,e,t)},async safeParseAsync(e,t){return Yg(this,e,t)},get spa(){return this?.safeParseAsync},set spa(e){vt(this,"spa",e)},validate(e,t){return ca(this,e,t)},validateAsync(e,t){return da(this,e,t)},encode:function e(t,n){return Jg(this,t,n,{callee:e})},decode:function e(t,n){return eh(this,t,n,{callee:e})},encodeAsync:async function e(t,n){return await th(this,t,n,{callee:e})},decodeAsync:async function e(t,n){return await nh(this,t,n,{callee:e})},safeEncode(e,t){return rh(this,e,t)},safeDecode(e,t){return oh(this,e,t)},async safeEncodeAsync(e,t){return ih(this,e,t)},async safeDecodeAsync(e,t){return sh(this,e,t)},toJSONSchema(e){return hg(this,{})(e)},get description(){return rn.get(this)?.description},get _def(){return this._zod.def}}),ph=E("_ZodString",(e,t)=>{bo.init(e,t),te.init(e,t),e._zod.processJSONSchema=(n,r,o)=>Sg(e,n,r,o)},dp({format:(e)=>Ke(e).format??null,minLength:(e)=>Ke(e).minimum??null,maxLength:(e)=>Ke(e).maximum??null},{regex(...e){return this.check(xa(...e))},includes(...e){return this.check(Ca(...e))},startsWith(...e){return this.check(Pa(...e))},endsWith(...e){return this.check(Ia(...e))},min(...e){return this.check(vn(...e))},max(...e){return this.check(Oo(...e))},length(...e){return this.check(Co(...e))},nonempty(...e){return this.check(vn(1,...e))},lowercase(e){return this.check(Aa(e))},uppercase(e){return this.check(Oa(e))},trim(){return this.check(Na())},normalize(...e){return this.check(La(...e))},toLowerCase(){return this.check(Da())},toUpperCase(){return this.check(Ua())},slugify(){return this.check(Ma())}})),mR=E("ZodString",(e,t)=>{bo.init(e,t),ph.init(e,t)},{email(e){return this.check(Pf(_R,e))},url(e){return this.check(Mf(bR,e))},jwt(e){return this.check(Yf(DR,e))},emoji(e){return this.check($f(kR,e))},guid(e){return this.check(If(wR,e))},uuid(e){return this.check(Lf(Lo,e))},uuidv4(e){return this.check(Nf(Lo,e))},uuidv6(e){return this.check(Df(Lo,e))},uuidv7(e){return this.check(Uf(Lo,e))},nanoid(e){return this.check(Ff(ER,e))},cuid(e){return this.check(Bf(vR,e))},cuid2(e){return this.check(zf(TR,e))},ulid(e){return this.check(qf(RR,e))},base64(e){return this.check(Xf(IR,e))},base64url(e){return this.check(Vf(LR,e))},xid(e){return this.check(Hf(SR,e))},ksuid(e){return this.check(Wf(xR,e))},ipv4(e){return this.check(jf(AR,e))},ipv6(e){return this.check(Kf(OR,e))},cidrv4(e){return this.check(Gf(CR,e))},cidrv6(e){return this.check(Zf(PR,e))},e164(e){return this.check(Qf(NR,e))},datetime(e){return this.check(Jf(fR,e))},date(e){return this.check(eg(gR,e))},time(e){return this.check(tg(hR,e))},duration(e){return this.check(ng(yR,e))}});function K(e){return Cf(mR,e)}var ne=E("ZodStringFormat",(e,t)=>{J.init(e,t),ph.init(e,t)}),fR=E("ZodISODateTime",(e,t)=>{Fm.init(e,t),ne.init(e,t)}),gR=E("ZodISODate",(e,t)=>{Bm.init(e,t),ne.init(e,t)}),hR=E("ZodISOTime",(e,t)=>{zm.init(e,t),ne.init(e,t)}),yR=E("ZodISODuration",(e,t)=>{qm.init(e,t),ne.init(e,t)}),_R=E("ZodEmail",(e,t)=>{Am.init(e,t),ne.init(e,t)});var wR=E("ZodGUID",(e,t)=>{Sm.init(e,t),ne.init(e,t)});var Lo=E("ZodUUID",(e,t)=>{xm.init(e,t),ne.init(e,t)});var bR=E("ZodURL",(e,t)=>{Pm.init(e,t),ne.init(e,t)});var kR=E("ZodEmoji",(e,t)=>{Im.init(e,t),ne.init(e,t)});var ER=E("ZodNanoID",(e,t)=>{Lm.init(e,t),ne.init(e,t)});var vR=E("ZodCUID",(e,t)=>{Nm.init(e,t),ne.init(e,t)});var TR=E("ZodCUID2",(e,t)=>{Dm.init(e,t),ne.init(e,t)});var RR=E("ZodULID",(e,t)=>{Um.init(e,t),ne.init(e,t)});var SR=E("ZodXID",(e,t)=>{Mm.init(e,t),ne.init(e,t)});var xR=E("ZodKSUID",(e,t)=>{$m.init(e,t),ne.init(e,t)});var AR=E("ZodIPv4",(e,t)=>{Hm.init(e,t),ne.init(e,t)});var OR=E("ZodIPv6",(e,t)=>{jm.init(e,t),ne.init(e,t)});var CR=E("ZodCIDRv4",(e,t)=>{Km.init(e,t),ne.init(e,t)});var PR=E("ZodCIDRv6",(e,t)=>{Gm.init(e,t),ne.init(e,t)});var IR=E("ZodBase64",(e,t)=>{Xm.init(e,t),ne.init(e,t)});var LR=E("ZodBase64URL",(e,t)=>{Vm.init(e,t),ne.init(e,t)});var NR=E("ZodE164",(e,t)=>{Qm.init(e,t),ne.init(e,t)});var DR=E("ZodJWT",(e,t)=>{Ym.init(e,t),ne.init(e,t)});var mh=E("ZodNumber",(e,t)=>{ka.init(e,t),te.init(e,t),e._zod.processJSONSchema=(n,r,o)=>xg(e,n,r,o),e.isFinite=!0},dp({minValue:(e)=>{let{minimum:t,exclusiveMinimum:n}=Ke(e);return Math.max(t??Number.NEGATIVE_INFINITY,n??Number.NEGATIVE_INFINITY)},maxValue:(e)=>{let{maximum:t,exclusiveMaximum:n}=Ke(e);return Math.min(t??Number.POSITIVE_INFINITY,n??Number.POSITIVE_INFINITY)},isInt:(e)=>{let{isInt:t,multipleOf:n}=Ke(e);return!!t||!!n?.some(Number.isSafeInteger)},format:(e)=>Ke(e).format??null},{gt(e,t){return this.check(xo(e,t))},gte(e,t){return this.check(ur(e,t))},min(e,t){return this.check(ur(e,t))},lt(e,t){return this.check(So(e,t))},lte(e,t){return this.check(ar(e,t))},max(e,t){return this.check(ar(e,t))},int(e){return this.check(ah(e))},safe(e){return this.check(ah(e))},positive(e){return this.check(xo(0,e))},nonnegative(e){return this.check(ur(0,e))},negative(e){return this.check(So(0,e))},nonpositive(e){return this.check(ar(0,e))},multipleOf(e,t){return this.check(Ao(e,t))},step(e,t){return this.check(Ao(e,t))},finite(){return this}}));function N(e){return rg(mh,e)}var UR=E("ZodNumberFormat",(e,t)=>{Jm.init(e,t),mh.init(e,t)});function ah(e){return og(UR,e)}var MR=E("ZodBoolean",(e,t)=>{ef.init(e,t),te.init(e,t),e._zod.processJSONSchema=(n,r,o)=>Ag(e,n,r,o)});function Me(e){return ig(MR,e)}var $R=E("ZodUnknown",(e,t)=>{tf.init(e,t),te.init(e,t),e._zod.processJSONSchema=(n,r,o)=>Cg(e,n,r,o)});function Ga(){return sg($R)}var FR=E("ZodNever",(e,t)=>{nf.init(e,t),te.init(e,t),e._zod.processJSONSchema=(n,r,o)=>Og(e,n,r,o)});function BR(e){return ag(FR,e)}var zR=E("ZodArray",(e,t)=>{No(),rf.init(e,t),te.init(e,t),e._zod.processJSONSchema=(n,r,o)=>Dg(e,n,r,o),e.element=t.element},{min(e,t){return this.check(vn(e,t))},nonempty(e){return this.check(vn(1,e))},max(e,t){return this.check(Oo(e,t))},length(e,t){return this.check(Co(e,t))},unwrap(){return this.element}});function Sn(e,t){return ug(zR,e,t)}var qR=E("ZodObject",(e,t)=>{No(),af.init(e,t),te.init(e,t),e._zod.processJSONSchema=(n,r,o)=>Ug(e,n,r,o),bT(e,"shape",(n)=>n._zod.def.shape,!1)},{keyof(){return St(Object.keys(this._zod.def.shape))},catchall(e){return this.clone(Ne(this._zod.def,{catchall:e}))},passthrough(){return this.clone(Ne(this._zod.def,{catchall:Ga()}))},loose(){return this.clone(Ne(this._zod.def,{catchall:Ga()}))},strict(){return this.clone(Ne(this._zod.def,{catchall:BR()}))},strip(){return this.clone(Ne(this._zod.def,{catchall:void 0}))},extend(e){return mT(this,e)},safeExtend(e){return fT(this,e)},merge(e){return gT(this,e)},pick(e){return lT(this,e)},omit(e){return pT(this,e)},partial(...e){return sp(yh,this,e[0])},exactPartial(...e){return sp(_h,this,e[0],"exactPartial")},required(...e){return hT(wh,this,e[0])}});function re(e,t){let n={type:"object",shape:e??{},...x(t)};return new qR(n)}var fh=E("ZodUnion",(e,t)=>{Ea.init(e,t),te.init(e,t),e._zod.processJSONSchema=(n,r,o)=>Mg(e,n,r,o),e.options=t.options});function Xa(e,t){return new fh({type:"union",options:e,...x(t)})}var HR=E("ZodDiscriminatedUnion",(e,t)=>{fh.init(e,t),uf.init(e,t)});function WR(e,t,n){return new HR({type:"union",options:t,discriminator:e,...x(n)})}var jR=E("ZodIntersection",(e,t)=>{cf.init(e,t),te.init(e,t),e._zod.processJSONSchema=(n,r,o)=>$g(e,n,r,o)});function KR(e,t){return new jR({type:"intersection",left:e,right:t})}var uh=E("ZodRecord",(e,t)=>{No(),df.init(e,t),te.init(e,t),e._zod.processJSONSchema=(n,r,o)=>Fg(e,n,r,o),e.keyType=t.keyType,e.valueType=t.valueType});function gh(e,t,n){if(!t||!t._zod)return new uh({type:"record",keyType:K(),valueType:e,...x(t)});return new uh({type:"record",keyType:e,valueType:t,...x(n)})}var Za=E("ZodEnum",(e,t)=>{lf.init(e,t),te.init(e,t),e._zod.processJSONSchema=(r,o,i)=>Pg(e,r,o,i),e.enum=t.entries,e.options=[...e._zod.values];let n=new Set(Object.keys(t.entries));e.extract=(r,o)=>{let i={};for(let s of r)if(n.has(s))i[s]=t.entries[s];else throw Error(`Key ${s} not found in enum`);return new Za({...t,checks:[],...x(o),entries:i})},e.exclude=(r,o)=>{let i={...t.entries};for(let s of r)if(n.has(s))delete i[s];else throw Error(`Key ${s} not found in enum`);return new Za({...t,checks:[],...x(o),entries:i})}});function St(e,t){let n=Array.isArray(e)?Object.fromEntries(e.map((r)=>[r,r])):e;return new Za({type:"enum",entries:n,...x(t)})}var GR=E("ZodLiteral",(e,t)=>{pf.init(e,t),te.init(e,t),e._zod.processJSONSchema=(n,r,o)=>Ig(e,n,r,o),e.values=new Set(t.values),Object.defineProperty(e,"value",{get(){if(t.values.length>1)throw Error("This schema contains multiple valid literal values. Use `.values` instead.");return t.values[0]}})});function hh(e,t){return new GR({type:"literal",values:Array.isArray(e)?e:[e],...x(t)})}var ZR=E("ZodTransform",(e,t)=>{No(),mf.init(e,t),te.init(e,t),e._zod.processJSONSchema=(n,r,o)=>Ng(e,n,r,o),e._zod.parse=(n,r)=>{if(r.direction==="backward")throw new tr(e.constructor.name);n.addIssue=(i)=>{if(typeof i==="string")n.issues.push(nn(i,n.value,t));else{let s=i;if(s.fatal)s.continue=!1;if(s.code??(s.code="custom"),!("input"in s))s.input=n.value;s.inst??(s.inst=e),n.issues.push(nn(s))}};let o=t.transform(n.value,n);if(o instanceof Promise)return o.then((i)=>(n.value=i,n));return n.value=o,n}});function XR(e){return new ZR({type:"transform",transform:e})}var yh=E("ZodOptional",(e,t)=>{va.init(e,t),te.init(e,t),e._zod.processJSONSchema=(n,r,o)=>ja(e,n,r,o),e.unwrap=()=>e._zod.def.innerType});function ch(e){return new yh({type:"optional",innerType:e})}var _h=E("ZodExactOptional",(e,t)=>{ff.init(e,t),te.init(e,t),e._zod.processJSONSchema=(n,r,o)=>ja(e,n,r,o),e.unwrap=()=>e._zod.def.innerType});function VR(e){return new _h({type:"optional",innerType:e})}var QR=E("ZodNullable",(e,t)=>{gf.init(e,t),te.init(e,t),e._zod.processJSONSchema=(n,r,o)=>Bg(e,n,r,o),e.unwrap=()=>e._zod.def.innerType});function dh(e){return new QR({type:"nullable",innerType:e})}var YR=E("ZodDefault",(e,t)=>{hf.init(e,t),te.init(e,t),e._zod.processJSONSchema=(n,r,o)=>Hg(e,n,r,o),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function JR(e,t){return new YR({type:"default",innerType:e,get defaultValue(){return typeof t==="function"?t():ta(t)}})}var eS=E("ZodPrefault",(e,t)=>{yf.init(e,t),te.init(e,t),e._zod.processJSONSchema=(n,r,o)=>Wg(e,n,r,o),e.unwrap=()=>e._zod.def.innerType});function tS(e,t){return new eS({type:"prefault",innerType:e,get defaultValue(){return typeof t==="function"?t():ta(t)}})}var wh=E("ZodNonOptional",(e,t)=>{_f.init(e,t),te.init(e,t),e._zod.processJSONSchema=(n,r,o)=>zg(e,n,r,o),e.unwrap=()=>e._zod.def.innerType});function nS(e,t){return new wh({type:"nonoptional",innerType:e,...x(t)})}var rS=E("ZodCatch",(e,t)=>{wf.init(e,t),te.init(e,t),e._zod.processJSONSchema=(n,r,o)=>jg(e,n,r,o),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function oS(e,t){return new rS({type:"catch",innerType:e,catchValue:typeof t==="function"?t:lp(t)})}var iS=E("ZodPipe",(e,t)=>{bf.init(e,t),te.init(e,t),e._zod.processJSONSchema=(n,r,o)=>Kg(e,n,r,o),e.in=t.in,e.out=t.out});function lh(e,t){return new iS({type:"pipe",in:e,out:t})}var sS=E("ZodReadonly",(e,t)=>{kf.init(e,t),te.init(e,t),e._zod.processJSONSchema=(n,r,o)=>Gg(e,n,r,o),e.unwrap=()=>e._zod.def.innerType});function aS(e){return new sS({type:"readonly",innerType:e})}var uS=E("ZodCustom",(e,t)=>{Ef.init(e,t),te.init(e,t),e._zod.processJSONSchema=(n,r,o)=>Lg(e,n,r,o)});function cS(e,t={}){return cg(uS,e,t)}function dS(e,t){return dg(e,t)}var xn=["1m","5h","1w"],Mo={"1m":60000,"5h":18000000,"1w":604800000},Uo=N().int().positive().nullable(),bh=N().positive().nullable(),kh=re({"1m":Uo.optional(),"5h":Uo.optional(),"1w":Uo.optional()}).strict(),lS=re({"5h":bh.optional(),"1w":bh.optional()}).strict(),Va=re({requests:kh.optional(),tokens:kh.optional(),spend:lS.optional(),concurrency:Uo.optional()}).strict(),Eh=64,pS=256;function mS(e){if(e.concurrency!==void 0&&e.concurrency!==null)return!0;for(let t of["requests","tokens","spend"]){let n=e[t];if(n===void 0)continue;for(let r of xn){let o=n[r];if(o!==void 0&&o!==null)return!0}}return!1}var fS=Va.refine(mS,{message:"a model override must set at least one limit; omit the model to remove it"}),lr=Va.extend({models:gh(K().min(1).max(pS),fS).refine((e)=>Object.keys(e).length<=Eh,{message:`at most ${Eh} model overrides per key`}).optional()}).strict();function Qa(e,t){let n=e.models;if(n===void 0||!Object.hasOwn(n,t))return;return n[t]}function vh(e,t){if(typeof e!=="object"||e===null)return;for(let n of Object.getOwnPropertyNames(e)){if(n==="__proto__")throw Error(`limits cannot name "__proto__"${t===""?"":` under ${t}`}`);vh(e[n],t===""?n:`${t}.${n}`)}}function Je(e){return vh(e,""),lr.parse(e)}class $o{windowMs;stamps=[];constructor(e){this.windowMs=e}count(e){let t=e-this.windowMs,n=0;for(let r of this.stamps){if(r>t)break;n++}if(n>0)this.stamps.splice(0,n);return this.stamps.length}record(e){this.stamps.push(e)}forget(e){for(let t=this.stamps.length-1;t>=0;t--){let n=this.stamps[t];if(n===void 0||n<e)return;if(n===e){this.stamps.splice(t,1);return}}}resetAt(e){let t=this.stamps[0];return t===void 0?e:t+this.windowMs}get empty(){return this.stamps.length===0}}class Fo extends Error{constructor(e){super(`LOCK_UNAVAILABLE: ${e}`);this.name="LockUnavailable"}}var gS=1000;function Mt(e={}){let t=e.now??(()=>Date.now()),n=new Map,r=new Map,o=(f)=>{if(f===void 0)return;if(f==="")throw TypeError("gauge holder must be a non-empty string");return f},i=(f)=>{let y=t(),_=(r.get(f)??[]).filter((w)=>w.expiresAt>y);if(_.length===0)r.delete(f);else r.set(f,_);return _},s=new Map,a=new Map,u=new Map,c=new Map,d=new Set,p=new Map,l=Number.NEGATIVE_INFINITY,m=(f,y)=>Math.floor(y/f)*f,g=(f,y,_,w)=>{let v=u.get(f);if(v===void 0)return;let k=m(y,w-_);for(let T of v.keys())if(T<k)v.delete(T)},h=(f)=>{let y=f-l;if(y>=0&&y<gS)return;l=f;for(let[_,w]of n)if(w.count(f),w.empty)n.delete(_)};return{liveWindows:()=>n.size,window:{claim(f,y,_){h(_);let w=n.get(f);if(w===void 0)w=new $o(y),n.set(f,w);let v={used:w.count(_),resetAt:w.resetAt(_)};return w.record(_),Promise.resolve({stamp:_,before:v})},rollback(f,y){return n.get(f)?.forget(y),Promise.resolve()}},gauge:{acquire(f,y,_){let w=o(_),v=i(f),k=t()+y,T=w===void 0?-1:v.findIndex((V)=>V.holder===w);if(T!==-1&&w!==void 0)return v[T]={expiresAt:k,holder:w},r.set(f,v),Promise.resolve(v.length-1);let C=v.length;return v.push(w===void 0?{expiresAt:k}:{expiresAt:k,holder:w}),r.set(f,v),Promise.resolve(C)},renew(f,y,_){o(y);let w=i(f),v=w.findIndex((k)=>k.holder===y);if(v!==-1)w[v]={expiresAt:t()+_,holder:y},r.set(f,w);return Promise.resolve()},release(f,y){o(y);let _=i(f);if(y===void 0)_.sort((w,v)=>w.expiresAt-v.expiresAt).shift();else{let w=_.findIndex((v)=>v.holder===y);if(w!==-1)_.splice(w,1)}if(_.length===0)r.delete(f);else r.set(f,_);return Promise.resolve()},read(f){return Promise.resolve(i(f).length)},snapshot(f){let y=new Map;for(let _ of[...r.keys()]){if(!_.startsWith(f))continue;let w=i(_).length;if(w>0)y.set(_,w)}return Promise.resolve(y)}},buckets:{add(f,y,_,w,v){g(f,y,_,w);let k=u.get(f);if(k===void 0)return Promise.resolve();let T=m(y,w),C=k.get(T)??{requests:0,tokens:0,costUsd:0};return k.set(T,{requests:C.requests+v.requests,tokens:C.tokens+v.tokens,costUsd:C.costUsd+v.costUsd}),Promise.resolve()},sum(f,y,_,w){g(f,y,_,w);let v=u.get(f);if(v===void 0)return Promise.resolve(null);let k={requests:0,tokens:0,costUsd:0};for(let T of v.values())k.requests+=T.requests,k.tokens+=T.tokens,k.costUsd+=T.costUsd;return Promise.resolve(k)},seed(f,y,_,w,v){let k=new Map;for(let[T,C]of v)k.set(m(y,T),{...C});return u.set(f,k),g(f,y,_,w),Promise.resolve()}},lease:{acquire(f,y,_){let w=c.get(f),v=t();if(w!==void 0&&w.holder!==y&&w.expiresAt>v)return Promise.resolve(!1);return c.set(f,{holder:y,expiresAt:v+_}),Promise.resolve(!0)},release(f,y){if(c.get(f)?.holder===y)c.delete(f);return Promise.resolve()}},pubsub:{publish(f,y){for(let _ of d)if(_.pattern.endsWith("*")?f.startsWith(_.pattern.slice(0,-1)):f===_.pattern)_.fn(f,y);return Promise.resolve()},publishSequenced(f,y,_){let w=(p.get(_)??0)+1;return p.set(_,w),this.publish(f,`${w}:${y}`).then(()=>w)},subscribe(f,y){let _={pattern:f,fn:y};return d.add(_),()=>{d.delete(_)}}},incr(f){let y=(p.get(f)??0)+1;return p.set(f,y),Promise.resolve(y)},kv:{set(f,y,_){return a.set(f,{value:y,expiresAt:t()+_}),Promise.resolve()},get(f){let y=a.get(f);if(y===void 0)return Promise.resolve(null);if(y.expiresAt<=t())return a.delete(f),Promise.resolve(null);return Promise.resolve(y.value)},del(f){return a.delete(f),Promise.resolve()},delPrefix(f){for(let y of a.keys())if(y.startsWith(f))a.delete(y);return Promise.resolve()}},mutex:{async withLock(f,y,_,w){let v,k=new Promise((C)=>{v=setTimeout(()=>C("expired"),_)});try{for(;;){let C=s.get(f);if(C===void 0)break;if(await Promise.race([C.then(()=>"released"),k])==="expired")throw new Fo(f)}}finally{clearTimeout(v)}let T=()=>{};s.set(f,new Promise((C)=>{T=C}));try{return await w()}finally{s.delete(f),T()}}}}}import{mkdir as AS,open as OS,readdir as CS,rmdir as PS,unlink as IS,writeFile as LS}from"fs/promises";import{dirname as qo,join as gr,sep as NS}from"path";import{promisify as xh}from"util";import{gunzip as DS,gzip as US}from"zlib";var hS=new TextEncoder().encode("omnigateway-field-encryption-v1");async function Bo(e){let t=await crypto.subtle.importKey("raw",new TextEncoder().encode(e),"PBKDF2",!1,["deriveKey"]);return crypto.subtle.deriveKey({name:"PBKDF2",salt:hS,iterations:210000,hash:"SHA-256"},t,{name:"AES-GCM",length:256},!1,["encrypt","decrypt"])}async function zo(e,t){let n=crypto.getRandomValues(new Uint8Array(12)),r=new Uint8Array(await crypto.subtle.encrypt({name:"AES-GCM",iv:n,tagLength:128},e,new TextEncoder().encode(t))),o=r.subarray(0,r.length-16),i=r.subarray(r.length-16);return["enc:v1",Ja(n),Ja(o),Ja(i)].join(":")}var yS=/^[0-9a-f]*$/;function Ya(e){return e.length%2===0&&yS.test(e)}async function An(e,t){let n=t.split(":"),[r,o,i,s,a]=n;if(n.length!==5||r!=="enc"||o!=="v1"||!i||!a||s===void 0||!Ya(i)||!Ya(s)||!Ya(a))throw Error("malformed ciphertext");let u=new Uint8Array([...eu(s),...eu(a)]),c=await crypto.subtle.decrypt({name:"AES-GCM",iv:eu(i),tagLength:128},e,u);return new TextDecoder().decode(c)}function Ja(e){return Array.from(e,(t)=>t.toString(16).padStart(2,"0")).join("")}function eu(e){let t=new Uint8Array(e.length/2);for(let n=0;n<t.length;n++)t[n]=Number.parseInt(e.slice(n*2,n*2+2),16);return t}var Th=new TextEncoder,_S=new TextDecoder,wS=65536-Th.encode("\u2026[truncated]").length-3;function bS(e){let t=Th.encode(e);if(t.length<=65536)return e;return _S.decode(t.subarray(0,wS))+"\u2026[truncated]"}function pr(e){let t=!1,n=(o,i)=>{if(typeof o==="string"){let s=bS(o);if(s!==o)t=!0;return s}if(Array.isArray(o)){if(i>6)return t=!0,"[omitted: nesting past 6 levels]";let s=o.length>24?o.slice(-24):o;if(s.length!==o.length)t=!0;return s.map((a)=>n(a,i+1))}if(o!==null&&typeof o==="object"){if(i>6)return t=!0,"[omitted: nesting past 6 levels]";let s=Object.entries(o),a=s.length>80?s.slice(0,80):s;if(a.length!==s.length)t=!0;return Object.fromEntries(a.map(([u,c])=>[u,n(c,i+1)]))}return o};return{value:n(e,1),truncated:t}}var kS=/\b(bearer)\s+[A-Za-z0-9._~+/=-]+/gi,ES=/(?<![A-Za-z0-9_-])(?:sk|ak|pk)-[A-Za-z0-9_-]{8,}/g,vS=/(?<![A-Za-z0-9_-])(?:gh[posu]_|github_pat_|AIza|GOCSPX-)[A-Za-z0-9_-]{8,}/g,TS=/^(?:gh[posu]_|github_pat_|AIza|GOCSPX-)/,RS=/(?<![A-Za-z0-9_-])xai-[A-Za-z0-9_]{8,}/g,SS=/[A-Za-z0-9_-]{41,}/g,xS=[{id:"bearer",pattern:kS,keep:(e)=>e.length-e.replace(/^bearer\s+/i,"").length},{id:"prefixedKey",pattern:ES,keep:()=>3},{id:"vendorKey",pattern:vS,keep:(e)=>TS.exec(e)?.[0].length??0},{id:"xaiKey",pattern:RS,keep:()=>4},{id:"opaque",pattern:SS,keep:()=>0}];function tu(e){return xS.reduce((t,n)=>t.replace(n.pattern,(r)=>`${r.slice(0,n.keep(r))}[redacted]`),e)}function On(e){if(typeof e==="string")return tu(e);if(Array.isArray(e))return e.map(On);if(e!==null&&typeof e==="object")return Object.fromEntries(Object.entries(e).map(([t,n])=>[t,On(n)]));return e}var Ah=1,xt=524288,hr=1e5,Oh="request_bodies",ru=new TextEncoder;function yr(e){return gr(qo(e),Oh)}var MS=/^[A-Za-z0-9_-]{1,128}$/;function Wo(e){return MS.test(e)}function jo(e,t){let n=new Date(t),r=String(n.getUTCFullYear()).padStart(4,"0"),o=String(n.getUTCMonth()+1).padStart(2,"0"),i=String(n.getUTCDate()).padStart(2,"0");return`${r}/${o}/${i}/${e}.json.enc`}async function Ch(e){let t=await crypto.subtle.digest("SHA-256",new Uint8Array(e));return Array.from(new Uint8Array(t),(n)=>n.toString(16).padStart(2,"0")).join("")}function Rh(e){let t=pr(On(e.request)),n=pr(On(e.response));return{request:t.value,response:n.value,truncated:e.truncated===!0||t.truncated||n.truncated}}function $S(e){return{omitted:!0,reason:`artifact exceeded ${xt} bytes after structural bounding`,serializedBytes:e}}function FS(e,t){return{...e,client:{request:t,response:t,truncated:!0},attempts:e.attempts.map((n)=>({attempt:n.attempt,provider:n.provider,request:t,response:t,streamChunks:null,truncated:!0}))}}function Ko(e){let t=Rh(e.client),n=e.attempts.map((p)=>{let l=Rh(p),m=p.streamChunks===null?null:pr(p.streamChunks.map(tu));return{attempt:p.attempt,provider:p.provider,request:l.request,response:l.response,streamChunks:m===null?null:m.value,truncated:l.truncated||(m?.truncated??!1)}}),r=pr(On(e.error)),o={schemaVersion:Ah,requestId:e.requestId,at:e.at,client:t,attempts:n,error:r.value},i=JSON.stringify(o),s=Buffer.byteLength(i);if(s<=xt)return{artifact:o,json:i};let a=$S(s),u=FS(o,a),c=JSON.stringify(u);if(Buffer.byteLength(c)<=xt)return{artifact:u,json:c};let d={...u,error:a};return{artifact:d,json:JSON.stringify(d)}}var Go=2*xt+65,Ph=ru.encode("OGBA"),BS=ru.encode("enc:v1:"),Ih=1,$t=10,fr=12,ou=16,Ho=$t+fr+ou,zS=xt+Ho,iu=0,Lh=1;var qS=18,qM=xh(US),HS=xh(DS);function mr(e,t,n){return e.slice(t,n)}function WS(e){let t=ru.encode(e);if(t.length<1||t.length>xt)throw Error("artifact plaintext is outside the binary envelope's bounds");return t}async function Zo(e,t){let n=WS(t);return jS(e,n.length,iu,n)}async function jS(e,t,n,r){let o=new Uint8Array(Ho+r.length);o.set(Ph,0),o[4]=Ih,o[5]=n,new DataView(o.buffer).setUint32(6,t,!1);let i=crypto.getRandomValues(new Uint8Array(fr)),s=await crypto.subtle.encrypt({name:"AES-GCM",iv:i,additionalData:mr(o,0,$t),tagLength:ou*8},e,mr(r,0));return o.set(i,$t),o.set(new Uint8Array(s),$t+fr),{bytes:o,sha256:await Ch(o)}}async function Nh(e,t,n,r){let o=await KS(gr(t,n));if(!(o instanceof Uint8Array))return{ok:!1,failure:o};return su(e,o,r)}async function KS(e){let t;try{t=await OS(e,"r")}catch{return"missing"}try{let{size:n}=await t.stat();if(n>Go)return"corrupt";let r=new Uint8Array(n+1),o=0;while(o<r.length){let{bytesRead:i}=await t.read(r,o,r.length-o,o);if(i===0)break;o+=i}return o>n?"corrupt":r.subarray(0,o)}catch{return"missing"}finally{await t.close().catch(()=>{})}}var nu=/^(?:[0-9a-f]{2})*$/,GS=24,ZS=32;function XS(e){let t=e.split(":"),[n,r,o,i,s]=t;return t.length===5&&n==="enc"&&r==="v1"&&o!==void 0&&i!==void 0&&s!==void 0&&o.length===GS&&s.length===ZS&&nu.test(o)&&nu.test(i)&&nu.test(s)}function VS(e,t,n){switch(e){case iu:return t===n;case Lh:return t>=qS;default:return!1}}async function QS(e,t,n){switch(e){case iu:return t;case Lh:return YS(t,n);default:throw Error("unsupported artifact codec")}}async function YS(e,t){let n=await HS(e,{maxOutputLength:xt,info:!0}),r=JS(n);if(r===null)throw Error("gzip result has an unexpected shape");if(r.consumed!==e.length)throw Error("bytes follow the gzip stream");if(r.output.length!==t)throw Error("gzip output is not the claimed length");return r.output}function JS(e){if(typeof e!=="object"||e===null)return null;if(!("buffer"in e)||!("engine"in e))return null;let{buffer:t,engine:n}=e;if(!(t instanceof Uint8Array)||typeof n!=="object"||n===null)return null;if(!("bytesWritten"in n)||typeof n.bytesWritten!=="number")return null;return{output:t,consumed:n.bytesWritten}}function ex(e){if(e.length<Ho||e.length>zS)return null;let t=new DataView(e.buffer,e.byteOffset,e.byteLength),n=t.getUint8(4),r=t.getUint8(5),o=t.getUint32(6,!1);if(n!==Ih)return null;if(o<1||o>xt)return null;if(!VS(r,e.length-Ho,o))return null;return{header:mr(e,0,$t),codec:r,claimed:o,iv:mr(e,$t,$t+fr),sealed:mr(e,$t+fr)}}async function tx(e,t){let n=await crypto.subtle.decrypt({name:"AES-GCM",iv:t.iv,additionalData:t.header,tagLength:ou*8},e,t.sealed);return new TextDecoder("utf-8",{fatal:!0}).decode(await QS(t.codec,new Uint8Array(n),t.claimed))}function Sh(e,t){if(e.length<t.length)return!1;return t.every((n,r)=>e[r]===n)}async function su(e,t,n){let r={ok:!1,failure:"corrupt"};try{if(t.length>Go)return r;let o;if(Sh(t,Ph)){let s=ex(t);if(s===null)return r;o=()=>tx(e,s)}else if(Sh(t,BS)){let s=new TextDecoder().decode(t);if(!XS(s))return r;o=()=>An(e,s)}else return r;if(n!==null&&await Ch(t)!==n)return r;let i=JSON.parse(await o());if(i===null||typeof i!=="object"||Array.isArray(i))return r;return{ok:!0,artifact:i}}catch{return r}}async function Dh(e,t,n){let r=gr(e,t);await AS(qo(r),{recursive:!0}),await LS(r,n)}async function au(e,t){let n=gr(e,t);try{await IS(n)}catch{return}let r=qo(n);while(r.length>e.length&&r.startsWith(e+NS)){try{await PS(r)}catch{return}r=qo(r)}}async function Uh(e){let t=[],n=async(r,o)=>{let i;try{i=await CS(r,{withFileTypes:!0})}catch{return}for(let s of i){let a=o===""?s.name:`${o}/${s.name}`;if(s.isDirectory())await n(gr(r,s.name),a);else if(s.isFile())t.push(a)}};return await n(e,""),t}var Ee="context-1m-2025-08-07",Mh=1e6;var ee={AUTH:!0,RATE_LIMIT:!0,QUOTA_EXHAUSTED:!0,OVERLOADED:!0,MODEL_UNAVAILABLE:!0,CAPABILITY_MISMATCH:!0,UPSTREAM:!0,TIMEOUT:!0,NETWORK:!0,BAD_REQUEST:!1,CONFLICT:!1,CONTENT_FILTER:!1,FINGERPRINT_REFUSED:!1,NO_CANDIDATES:!1,ALL_CANDIDATES_FAILED:!1,INTERNAL:!1};function H(e,t){if(!(e instanceof Error))return t;return e.message.length>0?e.message:e.name}class b extends Error{code;retryable;provider;upstreamStatus;gatewayAuthored;retryAfterMs;degradations;constructor(e,t,n){super(t,n?.cause===void 0?void 0:{cause:n.cause});this.name="GatewayError",this.code=e,this.retryable=ee[e],this.provider=n?.provider,this.upstreamStatus=n?.status,this.gatewayAuthored=n?.gatewayAuthored??!1,this.retryAfterMs=n?.retryAfterMs,this.degradations=[...n?.degradations??[]]}}var Xo={debug:10,info:20,warn:30,error:40};function on(e){let t=typeof e==="string"?e:String(e);return/^[A-Za-z0-9_.:/+-]{1,64}$/.test(t)?t:"(unprintable)"}var nx=/\u001B\[[0-9;]*m/g,rx=/^(\S+) (DEBUG|INFO|WARN|ERROR) {1,2}(.*)$/,ox=/ {2}(?=[a-zA-Z]+=)/;function $h(e){let t={raw:e,at:null,level:null,msg:null},n=rx.exec(e.replace(nx,""));if(n===null)return t;let[,r,o,i]=n;if(r===void 0||o===void 0||i===void 0)return t;let s=Date.parse(r);if(Number.isNaN(s))return t;let a=i.split(ox,1)[0]??i;return{raw:e,at:s,level:o.toLowerCase(),msg:a}}var se={debug:()=>{},info:()=>{},warn:()=>{},error:()=>{},enabled:()=>!1};function Vo(e){let t=e?.trim().toLowerCase();if(t===void 0||t.length===0)return null;return Object.hasOwn(Xo,t)?t:null}function pt(e){return e.type==="thinking"?void 0:e.cacheControl}function xe(e,t,n,r=0){return{inputTokens:Math.max(0,e-n-r),outputTokens:t,cacheReadTokens:n,cacheWriteTokens:r}}var ix=4,Fh=1600,Ft=4,Bh=4;function Ae(e){return Math.ceil(e.length/ix)}function Cn(e){switch(e.type){case"text":return Ft+Ae(e.text);case"image":return Ft+Fh;case"thinking":return Ft+Ae(e.text);case"toolUse":return Ft+Ae(e.name)+Ae(Qo(e.input));case"toolResult":return Ft+Ae(e.toolUseId)+Ae(e.content)+(e.images?.length??0)*Fh+(e.files??[]).reduce((t,n)=>t+Ae(n.data),0)+(e.native??[]).reduce((t,n)=>t+Cn(n),0);case"providerNative":return Ft+Ae(e.blockType)+Ae(Qo(e.data))}}function zh(e){let t=Bh;for(let n of e.content)t+=Cn(n);return t}function uu(e){if(e.kind==="provider")return Ft+Ae(e.name)+Ae(e.type)+Ae(Qo(e.wire));return Ft+Ae(e.name)+Ae(e.description??"")+Ae(Qo(e.inputSchema))}function Qo(e){try{return JSON.stringify(e)??""}catch{return""}}function qh(e){let t=0;for(let n of e.system??[])t+=Cn(n);for(let n of e.messages)t+=zh(n);for(let n of e.tools??[])t+=uu(n);return t}function Hh(e){let t=0;for(let o of e.tools??[])t+=uu(o);let n=t;for(let o of e.system??[])n+=Cn(o);let r=n;for(let o of e.messages)r+=zh(o);return{tools:t,toolsAndSystem:n,total:r}}function Yo(e){let t=0,n=0;for(let r of e.tools??[])if(t+=uu(r),r.cacheControl!==void 0)n=t;for(let r of e.system??[])if(t+=Cn(r),pt(r)!==void 0)n=t;for(let r of e.messages){t+=Bh;for(let o of r.content){if(t+=Cn(o),pt(o)!==void 0)n=t;if(o.type==="toolResult"&&[...o.images??[],...o.native??[]].some((i)=>i.cacheControl!==void 0))n=t}}return n}var ve=3600000;function $e(e){return Math.floor(e/3600000)}var Wh=86400000;function et(){return-new Date().getTimezoneOffset()||0}function mt(e,t){let n=t*60000;return Math.floor((e+n)/Wh)*Wh-n}var sx=`
|
|
68
|
+
Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let s of e.seen.entries()){let a=s[1];if(t===s[0]){i(s);continue}if(e.external){let l=e.external.registry.get(s[0])?.id;if(t!==s[0]&&l){i(s);continue}}if(e.metadataRegistry.get(s[0])?.id){i(s);continue}if(a.cycle){i(s);continue}if(a.count>1){if(e.reused==="ref")i(s)}}if(e.external)e.sharedDefsExtractedFor=e.external}function Eg(e){let t=e.anyOf;if(!Array.isArray(t)||t.length===0||e.type!==void 0)return;let n=[];for(let r of t){if(!r||typeof r!=="object")return;Eg(r);let o=Object.keys(r);if(o.length!==1||o[0]!=="type")return;let i=r.type;for(let s of Array.isArray(i)?i:[i]){if(typeof s!=="string")return;if(!n.includes(s))n.push(s)}}delete e.anyOf,e.type=n.length===1?n[0]:n}var vg=new Set(["type","properties","required","additionalProperties"]),bg=["oneOf","anyOf"];function kg(e){let t=e.additionalProperties;if(t===void 0||t===!1||typeof t!=="object"||t===null)return null;return Object.keys(t).length?t:null}function $a(e){let t=[];for(let i of e){if(typeof i!=="object"||i.type!=="object")return null;for(let s in i)if(!vg.has(s))return null;t.push(i)}let n={},r=new Set;for(let i of t){for(let s in i.properties){if(Object.prototype.hasOwnProperty.call(n,s))continue;let a=[];for(let l of t){let c=l.properties?.[s]??kg(l);if(c===null||c===void 0)continue;if(!a.some((p)=>JSON.stringify(p)===JSON.stringify(c)))a.push(c)}let u=a.length===1?a[0]:$a(a)??{allOf:a};Ge(n,s,u)}for(let s of i.required??[])r.add(s)}let o={type:"object",properties:n};if(r.size)o.required=[...r];if(t.every((i)=>i.additionalProperties===!1))o.additionalProperties=!1;else{let i=[];for(let s of t){let a=kg(s);if(a&&!i.some((u)=>JSON.stringify(u)===JSON.stringify(a)))i.push(a)}if(i.length===1)o.additionalProperties=i[0];else if(i.length>1)o.additionalProperties={allOf:i}}return o}function lR(e){let t=e.allOf;if(!Array.isArray(t)||t.length<2)return;for(let o of vg)if(o in e)return;let n=t.filter((o)=>bg.some((i)=>Array.isArray(o[i]))),r=null;if(!n.length)r=$a(t);else{let o=n[0],i=bg.find((u)=>Array.isArray(o[u]));if(Object.keys(o).length!==1)return;let s=t.filter((u)=>u!==o),a=o[i].map((u)=>$a([...s,u]));if(a.some((u)=>!u))return;r={[i]:a}}if(!r)return;delete e.allOf,mr(e,r)}function za(e,t){let n=e.seen.get(t);if(!n)throw Error("Unprocessed schema. This is a bug in Zod.");let r=(a)=>{let u=e.seen.get(a);if(u.ref===null)return;let l=u.def??u.schema,c={...l},p=u.ref;if(u.ref=null,p){r(p);let m=e.seen.get(p),g=m.schema;if(g.$ref&&(e.target==="draft-07"||e.target==="draft-04"||e.target==="openapi-3.0"))l.allOf=l.allOf??[],l.allOf.push(g);else mr(l,g);if(mr(l,c),a._zod.parent===p)for(let f in l){if(f==="$ref"||f==="allOf")continue;if(!(f in c))delete l[f]}if(g.$ref&&m.def)for(let f in l){if(f==="$ref"||f==="allOf")continue;if(f in m.def&&JSON.stringify(l[f])===JSON.stringify(m.def[f]))delete l[f]}}let d=a._zod.parent;if(d&&d!==p){r(d);let m=e.seen.get(d);if(m?.schema.$ref){if(l.$ref=m.schema.$ref,m.def)for(let g in l){if(g==="$ref"||g==="allOf")continue;if(g in m.def&&JSON.stringify(l[g])===JSON.stringify(m.def[g]))delete l[g]}}}e.override({zodSchema:a,jsonSchema:l,path:u.path??[]})};if(!e.external||e.sharedEmitDoneFor!==e.external){for(let a of[...e.seen.entries()].reverse())r(a[0]);if(e.target!=="openapi-3.0")for(let a of e.seen.entries())Eg(a[1].def??a[1].schema);for(let a of e.deferred)a();if(e.intersections.length){let a=new Map;for(let u of e.seen.values())for(let l of[u.schema,u.def]){let c=l?.allOf;if(!Array.isArray(c))continue;let p=a.get(c);if(p)p.push(l);else a.set(c,[l])}for(let u of e.intersections)for(let l of a.get(u)??[])lR(l)}}let o={};if(e.target==="draft-2020-12")o.$schema="https://json-schema.org/draft/2020-12/schema";else if(e.target==="draft-07")o.$schema="http://json-schema.org/draft-07/schema#";else if(e.target==="draft-04")o.$schema="http://json-schema.org/draft-04/schema#";else if(e.target==="openapi-3.0");if(e.external?.uri){let a=e.external.registry.get(t)?.id;if(!a)throw Error("Schema is missing an `id` property");o.$id=e.external.uri(a)}mr(o,n.defId?n.schema:n.def??n.schema);let i=e.metadataRegistry.get(t)?.id;if(i!==void 0&&o.id===i)delete o.id;let s=e.external?.defs??{};if(!e.external||e.sharedEmitDoneFor!==e.external)for(let a of e.seen.entries()){let u=a[1];if(u.def&&u.defId){if(u.def.id===u.defId)delete u.def.id;Ge(s,u.defId,u.def)}}if(e.external)e.sharedEmitDoneFor=e.external;if(e.external);else if(Object.keys(s).length>0)if(e.target==="draft-2020-12")o.$defs=s;else o.definitions=s;try{let a=JSON.parse(JSON.stringify(o));return Object.defineProperty(a,"~standard",{value:{...t["~standard"],jsonSchema:{input:fr(t,"input",e.processors),output:fr(t,"output",e.processors)}},enumerable:!1,writable:!1}),a}catch(a){throw Error("Error converting schema to JSON.")}}function Ee(e,t){let n=t??{seen:new Set};if(n.seen.has(e))return!1;n.seen.add(e);let r=e._zod.def;if(r.type==="transform")return!0;if(r.type==="array")return Ee(r.element,n);if(r.type==="set")return Ee(r.valueType,n);if(r.type==="lazy")return Ee(r.getter(),n);if(r.type==="promise"||r.type==="optional"||r.type==="nonoptional"||r.type==="nullable"||r.type==="readonly"||r.type==="default"||r.type==="prefault"||r.type==="catch")return Ee(r.innerType,n);if(r.type==="intersection")return Ee(r.left,n)||Ee(r.right,n);if(r.type==="record"||r.type==="map")return Ee(r.keyType,n)||Ee(r.valueType,n);if(r.type==="pipe"){if(e._zod.traits.has("$ZodCodec"))return!0;return Ee(r.in,n)||Ee(r.out,n)}if(r.type==="object"){for(let o in r.shape)if(Ee(r.shape[o],n))return!0;return!1}if(r.type==="union"){for(let o of r.options)if(Ee(o,n))return!0;return!1}if(r.type==="tuple"){for(let o of r.items)if(Ee(o,n))return!0;if(r.rest&&Ee(r.rest,n))return!0;return!1}return!1}var Tg=(e,t={})=>(n)=>{let r=Fa({...n,processors:t});return ie(e,r),Ba(r,e),za(r,e)},fr=(e,t,n={})=>(r)=>{let{libraryOptions:o,target:i}=r??{},s=Fa({...o??{},target:i,io:t,processors:n});return ie(e,s),Ba(s,e),za(s,e)};var Sn=(e,t,n)=>{if(e[t]===void 0||n>e[t])e[t]=n},xn=(e,t,n)=>{if(e[t]===void 0||n<e[t])e[t]=n},Rg=(e,t)=>{Sn(e,"minimum",t),xn(e,"maximum",t)},Og=(e,t)=>{if(e.multipleOf??(e.multipleOf=[]),!e.multipleOf.includes(t))e.multipleOf.push(t)},Cg=(e,t)=>{e.patterns??(e.patterns=new Set),e.patterns.add(t)},Pg=(e,t)=>{e.mime=e.mime?e.mime.filter((n)=>t.includes(n)):[...t]},Ig=(e,t)=>{if(e.format=t,t.includes("int"))e.isInt=!0},Sg=(e,t)=>Sn(e,"minimum",t.minimum),xg=(e,t)=>xn(e,"maximum",t.maximum),Ag=(e)=>(t,n)=>{Ig(t,n.format);let[r,o]=e[n.format];Sn(t,"minimum",r),xn(t,"maximum",o)},dR={greater_than:(e,t)=>Sn(e,t.inclusive?"minimum":"exclusiveMinimum",t.value),less_than:(e,t)=>xn(e,t.inclusive?"maximum":"exclusiveMaximum",t.value),multiple_of:(e,t)=>Og(e,t.value),number_format:Ag(co),bigint_format:Ag(ra),min_length:Sg,max_length:xg,length_equals:(e,t)=>Rg(e,t.length),min_size:Sg,max_size:xg,size_equals:(e,t)=>Rg(e,t.size),string_format:(e,t)=>{if(Ig(e,t.format),t.pattern)Cg(e,t.pattern);if(t.format==="base64"||t.format==="base64url")e.contentEncoding=t.format;if(t.local||t.precision===-1)e.laxFormat=!0},mime_type:(e,t)=>Pg(e,t.mime)};function Ze(e){let t={},n=e._zod.def,r=e._zod.traits.has("$ZodCheck")?[e,...n.checks??[]]:n.checks??[];for(let i of r)dR[i._zod.def.check]?.(t,i._zod.def);let o=e._zod.bag;if(o.minimum!==void 0)Sn(t,"minimum",o.minimum);if(o.exclusiveMinimum!==void 0)Sn(t,"exclusiveMinimum",o.exclusiveMinimum);if(o.maximum!==void 0)xn(t,"maximum",o.maximum);if(o.exclusiveMaximum!==void 0)xn(t,"exclusiveMaximum",o.exclusiveMaximum);if(o.multipleOf!==void 0)Og(t,o.multipleOf);if(o.format!==void 0){if(t.format??(t.format=o.format),o.format.includes("int"))t.isInt=!0}if(o.mime)Pg(t,o.mime);for(let i of o.patterns??[])Cg(t,i);return t}var pR={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},mR=new Map([[ba,Qp],[vo,Yp]]),Lg=(e)=>mR.get(e)??e,Ng=(e,t,n,r)=>{let o=n;o.type="string";let{minimum:i,maximum:s,format:a,patterns:u,contentEncoding:l,laxFormat:c}=Ze(e);if(typeof i==="number")o.minLength=i;if(typeof s==="number")o.maxLength=s;if(a){if(o.format=pR[a]??a,o.format==="")delete o.format;if(a==="time"||c)delete o.format}if(l)o.contentEncoding=l;if(u&&u.size>0){let p=[...u].map(Lg);if(p.length===1)o.pattern=p[0].source;else if(p.length>1)o.allOf=[...p.map((d)=>({...t.target==="draft-07"||t.target==="draft-04"||t.target==="openapi-3.0"?{type:"string"}:{},pattern:d.source}))]}},Dg=(e,t,n,r)=>{let o=n,{minimum:i,maximum:s,multipleOf:a,exclusiveMaximum:u,exclusiveMinimum:l,isInt:c}=Ze(e);o.type=c?"integer":"number";let p=typeof l==="number"&&l>=(i??Number.NEGATIVE_INFINITY),d=typeof u==="number"&&u<=(s??Number.POSITIVE_INFINITY),m=t.target==="draft-04"||t.target==="openapi-3.0";if(p)if(m)o.minimum=l,o.exclusiveMinimum=!0;else o.exclusiveMinimum=l;else if(typeof i==="number")o.minimum=i;if(d)if(m)o.maximum=u,o.exclusiveMaximum=!0;else o.exclusiveMaximum=u;else if(typeof s==="number")o.maximum=s;if(a){let g=new Set;for(let y of a)if(Number.isFinite(y)&&y!==0)g.add(Math.abs(y));else xt(e,t,o,r,`A multipleOf divisor of ${y} cannot be represented in JSON Schema`);let[h,...f]=g;if(h!==void 0)o.multipleOf=h;if(f.length)o.allOf=[...o.allOf??[],...f.map((y)=>({multipleOf:y}))]}},Mg=(e,t,n,r)=>{n.type="boolean"};var Ug=(e,t,n,r)=>{n.not={}};var $g=(e,t,n,r)=>{};var Fg=(e,t,n,r)=>{let o=e._zod.def,i=tr(o.entries);if(i.length===0){n.not={};return}if(i.every((s)=>typeof s==="number"))n.type="number";if(i.every((s)=>typeof s==="string"))n.type="string";n.enum=i},Bg=(e,t,n,r)=>{let o=e._zod.def;if(o.values.length===0){n.not={};return}let i=[];for(let s of o.values)if(s===void 0){if(xt(e,t,n,r,"Literal `undefined` cannot be represented in JSON Schema"))return}else if(typeof s==="bigint"){if(xt(e,t,n,r,"BigInt literals cannot be represented in JSON Schema"))return;i.push(Number(s))}else i.push(s);if(i.length===0);else if(i.length===1){let s=i[0];if(n.type=s===null?"null":typeof s,t.target==="draft-04"||t.target==="openapi-3.0")n.enum=[s];else n.const=s}else{if(i.every((s)=>typeof s==="number"))n.type="number";if(i.every((s)=>typeof s==="string"))n.type="string";if(i.every((s)=>typeof s==="boolean"))n.type="boolean";if(i.every((s)=>s===null))n.type="null";n.enum=i}};var zg=(e,t,n,r)=>{xt(e,t,n,r,"Custom types cannot be represented in JSON Schema")};var qg=(e,t,n,r)=>{xt(e,t,n,r,"Transforms cannot be represented in JSON Schema")};var Hg=(e,t,n,r)=>{let o=n,i=e._zod.def,{minimum:s,maximum:a}=Ze(e);if(typeof s==="number")o.minItems=s;if(typeof a==="number")o.maxItems=a;o.type="array",o.items=ie(i.element,t,{...r,path:[...r.path,"items"]})};function Lo(e){let t=e._zod.def;if(t.type==="pipe"&&t.in._zod.traits.has("$ZodTransform"))return Lo(t.out);if(t.type==="catch")return Lo(t.innerType);return e._zod.optin}var Wg=(e,t,n,r)=>{let o=n,i=e._zod.def,s=i.shape;if(Object.getOwnPropertySymbols(s).length&&xt(e,t,o,r,"Symbol keys cannot be represented in JSON Schema"))return;o.type="object",o.properties={};for(let c in s)Ge(o.properties,c,ie(s[c],t,{...r,path:[...r.path,"properties",c]}));let u=new Set(Object.keys(s)),l=new Set([...u].filter((c)=>{let p=i.shape[c];if(t.io==="input")return Lo(p)===void 0;else return p._zod.optout===void 0}));if(l.size>0)o.required=Array.from(l);if(i.catchall?._zod.def.type==="never")o.additionalProperties=!1;else if(!i.catchall){if(t.io==="output")o.additionalProperties=!1}else if(i.catchall)o.additionalProperties=ie(i.catchall,t,{...r,path:[...r.path,"additionalProperties"]})};var jg=(e,t,n,r)=>{let o=e._zod.def,i=o.inclusive===!1,s=o.options.map((a,u)=>ie(a,t,{...r,path:[...r.path,i?"oneOf":"anyOf",u]}));if(i)n.oneOf=s;else n.anyOf=s},Kg=(e,t,n,r)=>{let o=e._zod.def,i=ie(o.left,t,{...r,path:[...r.path,"allOf",0]}),s=ie(o.right,t,{...r,path:[...r.path,"allOf",1]}),a=(l)=>("allOf"in l)&&Object.keys(l).length===1,u=[...a(i)?i.allOf:[i],...a(s)?s.allOf:[s]];n.allOf=u,t.intersections.push(u)};function qa(e,t,n){if(t.$ref){if(n.has(t))return t;n.add(t);let g=e.get(t)?.def;if(!g)return t;let h=qa(e,g,n);return h===g?t:h}for(let g of["anyOf","oneOf"]){let h=t[g];if(!Array.isArray(h))continue;let f=h.map((y)=>qa(e,y,n));if(f.some((y,_)=>y!==h[_]))t={...t,[g]:f}}let r=Array.isArray(t.type)?t.type:[t.type],o=!r.includes("string")&&r.some((g)=>g==="number"||g==="integer"),i=t.enum??(t.const!==void 0?[t.const]:void 0);if(!o&&!i?.some((g)=>typeof g==="number"))return t;let{minimum:s,maximum:a,exclusiveMinimum:u,exclusiveMaximum:l,multipleOf:c,format:p,id:d,...m}=t;if(m.enum)m.enum=m.enum.map((g)=>typeof g==="number"?String(g):g);else if(typeof m.const==="number")m.const=String(m.const);if(!o)return m;if(m.type="string",!i)m.pattern=(r.includes("number")?sr:ma).source;return m}var Ha=new WeakMap;function fR(e){let t=new Map;for(let r of e.seen.values())if(r.def&&!t.has(r.schema))t.set(r.schema,r);let n=new Map;for(let r of Ha.get(e)??[]){let o=e.seen.get(r),i=(o?.def??o?.schema)?.propertyNames;if(!i||i===!0||n.has(i))continue;let s=qa(t,i,new Set);if(s!==i)n.set(i,s)}if(!n.size)return;for(let r of e.seen.values())for(let o of[r.schema,r.def]){let i=o&&n.get(o.propertyNames);if(i)o.propertyNames=i}}var Gg=(e,t,n,r)=>{let o=n,i=e._zod.def;o.type="object";let s=i.keyType,a=Ze(s).patterns;if(i.mode==="loose"&&a&&a.size>0){let c=ie(i.valueType,t,{...r,path:[...r.path,"patternProperties","*"]});o.patternProperties={};for(let p of a)Ge(o.patternProperties,Lg(p).source,c)}else{if(t.target==="draft-07"||t.target==="draft-2020-12"){o.propertyNames=ie(i.keyType,t,{...r,path:[...r.path,"propertyNames"]});let c=Ha.get(t);if(!c)c=[],Ha.set(t,c),t.deferred.push(()=>fR(t));c.push(e)}o.additionalProperties=ie(i.valueType,t,{...r,path:[...r.path,"additionalProperties"]})}let u=s._zod.values,l=t.io==="input"&&Lo(i.valueType)!==void 0;if(u&&!i.partial&&!l){let c=[...u].filter((p)=>typeof p==="string"||typeof p==="number");if(c.length>0)o.required=c.map(String)}},Zg=(e,t,n,r)=>{let o=e._zod.def,i=ie(o.innerType,t,r),s=t.seen.get(e);if(t.target==="openapi-3.0")s.ref=o.innerType,n.nullable=!0;else n.anyOf=[i,{type:"null"}]},Xg=(e,t,n,r)=>{let o=e._zod.def;ie(o.innerType,t,r);let i=t.seen.get(e);i.ref=o.innerType},Wa=Symbol();function Vg(e,t,n,r,o){let i=!1,s=JSON.stringify(e,(a,u)=>{if(typeof u!=="bigint")return u;return i=!0,null});if(!i)return JSON.parse(s);return xt(t,n,r,o,"BigInt defaults cannot be represented in JSON Schema"),Wa}var Qg=(e,t,n,r)=>{let o=e._zod.def;ie(o.innerType,t,r);let i=t.seen.get(e);i.ref=o.innerType;let s=Vg(o.defaultValue,e,t,n,r);if(s!==Wa)n.default=s},Yg=(e,t,n,r)=>{let o=e._zod.def;ie(o.innerType,t,r);let i=t.seen.get(e);if(i.ref=o.innerType,t.io!=="input")return;let s=Vg(o.defaultValue,e,t,n,r);if(s!==Wa)n._prefault=s},Jg=(e,t,n,r)=>{let o=e._zod.def;ie(o.innerType,t,r);let i=t.seen.get(e);i.ref=o.innerType;let s;try{s=o.catchValue(void 0)}catch{xt(e,t,n,r,"Dynamic catch values are not supported in JSON Schema");return}n.default=s},eh=(e,t,n,r)=>{let o=e._zod.def,i=o.in._zod.traits.has("$ZodTransform"),s=t.io==="input"?i?o.out:o.in:o.out;ie(s,t,r);let a=t.seen.get(e);a.ref=s},th=(e,t,n,r)=>{let o=e._zod.def;ie(o.innerType,t,r);let i=t.seen.get(e);i.ref=o.innerType,n.readOnly=!0};var ja=(e,t,n,r)=>{let o=e._zod.def;ie(o.innerType,t,r);let i=t.seen.get(e);i.ref=o.innerType};var nh=new WeakSet([Object.prototype,Error.prototype]);function No(e,t,n){Object.defineProperty(e,t,{configurable:!0,enumerable:!1,get(){let r=n(this);return Object.defineProperty(this,t,{value:r,configurable:!0,writable:!0}),r},set(r){Object.defineProperty(this,t,{value:r,configurable:!0,writable:!0})}})}var kR=(e,t)=>{Tp.init(e,t),e.name="ZodError";let n=Object.getPrototypeOf(e);if(nh.has(n))return;nh.add(n),No(n,"format",(r)=>(o)=>Sp(r,o)),No(n,"flatten",(r)=>(o)=>Rp(r,o)),No(n,"addIssue",(r)=>(o)=>{r.issues.push(o),r.message=JSON.stringify(r.issues,nr,2)}),No(n,"addIssues",(r)=>(o)=>{r.issues.push(...o),r.message=JSON.stringify(r.issues,nr,2)}),Object.defineProperty(n,"isEmpty",{configurable:!0,enumerable:!1,get(){return this.issues.length===0}})};var $e=E("ZodError",kR,void 0,{Parent:Error});var rh=go($e),oh=ho($e),ih=yo($e),sh=_o($e),ah=Ap($e),uh=Op($e),ch=Cp($e),lh=Pp($e),dh=Ip($e),ph=Lp($e),mh=Np($e),fh=Dp($e);function vR(){if(!xe.localeError)Ue(Sa())}function Mo(){if(!xe.memoizer)Ue({memoizer:Df()})}var ne=E("ZodType",(e,t)=>(vR(),V.init(e,t),e.def=t,e.type=t.type,e),{check(...e){let t=this.def;return this.clone(Me(t,{checks:[...t.checks??[],...e.map((n)=>typeof n==="function"?{_zod:{check:n,def:{check:"custom"},onattach:[]}}:n)]}),{parent:!0})},with(...e){return this.check(...e)},clone(e,t){return dt(this,e,t)},brand(){return this},register(e,t){return e.add(this,t),this},refine(e,t){return this.check(bS(e,t))},superRefine(e,t){return this.check(kS(e,t))},overwrite(e){return this.check($t(e))},optional(){return yh(this)},exactOptional(){return aS(this)},nullable(){return _h(this)},nullish(){return yh(_h(this))},nonoptional(e){return mS(this,e)},array(){return An(this)},or(e){return Xa([this,e])},and(e){return rS(this,e)},transform(e){return wh(this,sS(e))},default(e){return lS(this,e)},prefault(e){return pS(this,e)},catch(e){return gS(this,e)},pipe(e){return wh(this,e)},readonly(){return _S(this)},describe(e){let t=this.clone();return sn.add(t,{description:e}),t},meta(...e){if(e.length===0)return sn.get(this);let t=this.clone();return sn.add(t,e[0]),t},isOptional(){return this.safeParse(void 0).success},isNullable(){return this.safeParse(null).success},apply(e,...t){return t.length===0?e(this):e(this,...t)},get "~standard"(){return ia(this,"~standard",{...wa(this),jsonSchema:{input:fr(this,"input"),output:fr(this,"output")}})},set "~standard"(e){Rt(this,"~standard",e)},parse:function e(t,n){return rh(this,t,n,{callee:e})},parseAsync:async function e(t,n){return await oh(this,t,n,{callee:e})},safeParse(e,t){return ih(this,e,t)},async safeParseAsync(e,t){return sh(this,e,t)},get spa(){return this?.safeParseAsync},set spa(e){Rt(this,"spa",e)},validate(e,t){return ca(this,e,t)},validateAsync(e,t){return la(this,e,t)},encode:function e(t,n){return ah(this,t,n,{callee:e})},decode:function e(t,n){return uh(this,t,n,{callee:e})},encodeAsync:async function e(t,n){return await ch(this,t,n,{callee:e})},decodeAsync:async function e(t,n){return await lh(this,t,n,{callee:e})},safeEncode(e,t){return dh(this,e,t)},safeDecode(e,t){return ph(this,e,t)},async safeEncodeAsync(e,t){return mh(this,e,t)},async safeDecodeAsync(e,t){return fh(this,e,t)},toJSONSchema(e){return Tg(this,{})(e)},get description(){return sn.get(this)?.description},get _def(){return this._zod.def}}),bh=E("_ZodString",(e,t)=>{Eo.init(e,t),ne.init(e,t),e._zod.processJSONSchema=(n,r,o)=>Ng(e,n,r,o)},_p({format:(e)=>Ze(e).format??null,minLength:(e)=>Ze(e).minimum??null,maxLength:(e)=>Ze(e).maximum??null},{regex(...e){return this.check(xa(...e))},includes(...e){return this.check(Ca(...e))},startsWith(...e){return this.check(Pa(...e))},endsWith(...e){return this.check(Ia(...e))},min(...e){return this.check(Rn(...e))},max(...e){return this.check(Po(...e))},length(...e){return this.check(Io(...e))},nonempty(...e){return this.check(Rn(1,...e))},lowercase(e){return this.check(Aa(e))},uppercase(e){return this.check(Oa(e))},trim(){return this.check(Na())},normalize(...e){return this.check(La(...e))},toLowerCase(){return this.check(Da())},toUpperCase(){return this.check(Ma())},slugify(){return this.check(Ua())}})),TR=E("ZodString",(e,t)=>{Eo.init(e,t),bh.init(e,t)},{email(e){return this.check(Ff(OR,e))},url(e){return this.check(jf(PR,e))},jwt(e){return this.check(sg(KR,e))},emoji(e){return this.check(Kf(IR,e))},guid(e){return this.check(Bf(CR,e))},uuid(e){return this.check(zf(Do,e))},uuidv4(e){return this.check(qf(Do,e))},uuidv6(e){return this.check(Hf(Do,e))},uuidv7(e){return this.check(Wf(Do,e))},nanoid(e){return this.check(Gf(LR,e))},cuid(e){return this.check(Zf(NR,e))},cuid2(e){return this.check(Xf(DR,e))},ulid(e){return this.check(Vf(MR,e))},base64(e){return this.check(rg(HR,e))},base64url(e){return this.check(og(WR,e))},xid(e){return this.check(Qf(UR,e))},ksuid(e){return this.check(Yf($R,e))},ipv4(e){return this.check(Jf(FR,e))},ipv6(e){return this.check(eg(BR,e))},cidrv4(e){return this.check(tg(zR,e))},cidrv6(e){return this.check(ng(qR,e))},e164(e){return this.check(ig(jR,e))},datetime(e){return this.check(ag(RR,e))},date(e){return this.check(ug(SR,e))},time(e){return this.check(cg(xR,e))},duration(e){return this.check(lg(AR,e))}});function B(e){return $f(TR,e)}var re=E("ZodStringFormat",(e,t)=>{Q.init(e,t),bh.init(e,t)}),RR=E("ZodISODateTime",(e,t)=>{Gm.init(e,t),re.init(e,t)}),SR=E("ZodISODate",(e,t)=>{Zm.init(e,t),re.init(e,t)}),xR=E("ZodISOTime",(e,t)=>{Xm.init(e,t),re.init(e,t)}),AR=E("ZodISODuration",(e,t)=>{Vm.init(e,t),re.init(e,t)}),OR=E("ZodEmail",(e,t)=>{Mm.init(e,t),re.init(e,t)});var CR=E("ZodGUID",(e,t)=>{Nm.init(e,t),re.init(e,t)});var Do=E("ZodUUID",(e,t)=>{Dm.init(e,t),re.init(e,t)});var PR=E("ZodURL",(e,t)=>{Fm.init(e,t),re.init(e,t)});var IR=E("ZodEmoji",(e,t)=>{Bm.init(e,t),re.init(e,t)});var LR=E("ZodNanoID",(e,t)=>{zm.init(e,t),re.init(e,t)});var NR=E("ZodCUID",(e,t)=>{qm.init(e,t),re.init(e,t)});var DR=E("ZodCUID2",(e,t)=>{Hm.init(e,t),re.init(e,t)});var MR=E("ZodULID",(e,t)=>{Wm.init(e,t),re.init(e,t)});var UR=E("ZodXID",(e,t)=>{jm.init(e,t),re.init(e,t)});var $R=E("ZodKSUID",(e,t)=>{Km.init(e,t),re.init(e,t)});var FR=E("ZodIPv4",(e,t)=>{Qm.init(e,t),re.init(e,t)});var BR=E("ZodIPv6",(e,t)=>{Jm.init(e,t),re.init(e,t)});var zR=E("ZodCIDRv4",(e,t)=>{ef.init(e,t),re.init(e,t)});var qR=E("ZodCIDRv6",(e,t)=>{tf.init(e,t),re.init(e,t)});var HR=E("ZodBase64",(e,t)=>{rf.init(e,t),re.init(e,t)});var WR=E("ZodBase64URL",(e,t)=>{of.init(e,t),re.init(e,t)});var jR=E("ZodE164",(e,t)=>{sf.init(e,t),re.init(e,t)});var KR=E("ZodJWT",(e,t)=>{af.init(e,t),re.init(e,t)});var kh=E("ZodNumber",(e,t)=>{ka.init(e,t),ne.init(e,t),e._zod.processJSONSchema=(n,r,o)=>Dg(e,n,r,o),e.isFinite=!0},_p({minValue:(e)=>{let{minimum:t,exclusiveMinimum:n}=Ze(e);return Math.max(t??Number.NEGATIVE_INFINITY,n??Number.NEGATIVE_INFINITY)},maxValue:(e)=>{let{maximum:t,exclusiveMaximum:n}=Ze(e);return Math.min(t??Number.POSITIVE_INFINITY,n??Number.POSITIVE_INFINITY)},isInt:(e)=>{let{isInt:t,multipleOf:n}=Ze(e);return!!t||!!n?.some(Number.isSafeInteger)},format:(e)=>Ze(e).format??null},{gt(e,t){return this.check(Oo(e,t))},gte(e,t){return this.check(pr(e,t))},min(e,t){return this.check(pr(e,t))},lt(e,t){return this.check(Ao(e,t))},lte(e,t){return this.check(dr(e,t))},max(e,t){return this.check(dr(e,t))},int(e){return this.check(gh(e))},safe(e){return this.check(gh(e))},positive(e){return this.check(Oo(0,e))},nonnegative(e){return this.check(pr(0,e))},negative(e){return this.check(Ao(0,e))},nonpositive(e){return this.check(dr(0,e))},multipleOf(e,t){return this.check(Co(e,t))},step(e,t){return this.check(Co(e,t))},finite(){return this}}));function N(e){return dg(kh,e)}var GR=E("ZodNumberFormat",(e,t)=>{uf.init(e,t),kh.init(e,t)});function gh(e){return pg(GR,e)}var ZR=E("ZodBoolean",(e,t)=>{cf.init(e,t),ne.init(e,t),e._zod.processJSONSchema=(n,r,o)=>Mg(e,n,r,o)});function ve(e){return mg(ZR,e)}var XR=E("ZodUnknown",(e,t)=>{lf.init(e,t),ne.init(e,t),e._zod.processJSONSchema=(n,r,o)=>$g(e,n,r,o)});function Ga(){return fg(XR)}var VR=E("ZodNever",(e,t)=>{df.init(e,t),ne.init(e,t),e._zod.processJSONSchema=(n,r,o)=>Ug(e,n,r,o)});function QR(e){return gg(VR,e)}var YR=E("ZodArray",(e,t)=>{Mo(),pf.init(e,t),ne.init(e,t),e._zod.processJSONSchema=(n,r,o)=>Hg(e,n,r,o),e.element=t.element},{min(e,t){return this.check(Rn(e,t))},nonempty(e){return this.check(Rn(1,e))},max(e,t){return this.check(Po(e,t))},length(e,t){return this.check(Io(e,t))},unwrap(){return this.element}});function An(e,t){return hg(YR,e,t)}var JR=E("ZodObject",(e,t)=>{Mo(),gf.init(e,t),ne.init(e,t),e._zod.processJSONSchema=(n,r,o)=>Wg(e,n,r,o),PT(e,"shape",(n)=>n._zod.def.shape,!1)},{keyof(){return At(Object.keys(this._zod.def.shape))},catchall(e){return this.clone(Me(this._zod.def,{catchall:e}))},passthrough(){return this.clone(Me(this._zod.def,{catchall:Ga()}))},loose(){return this.clone(Me(this._zod.def,{catchall:Ga()}))},strict(){return this.clone(Me(this._zod.def,{catchall:QR()}))},strip(){return this.clone(Me(this._zod.def,{catchall:void 0}))},extend(e){return TT(this,e)},safeExtend(e){return RT(this,e)},merge(e){return ST(this,e)},pick(e){return ET(this,e)},omit(e){return vT(this,e)},partial(...e){return fp(Rh,this,e[0])},exactPartial(...e){return fp(Sh,this,e[0],"exactPartial")},required(...e){return xT(xh,this,e[0])}});function J(e,t){let n={type:"object",shape:e??{},...A(t)};return new JR(n)}var Eh=E("ZodUnion",(e,t)=>{Ea.init(e,t),ne.init(e,t),e._zod.processJSONSchema=(n,r,o)=>jg(e,n,r,o),e.options=t.options});function Xa(e,t){return new Eh({type:"union",options:e,...A(t)})}var eS=E("ZodDiscriminatedUnion",(e,t)=>{Eh.init(e,t),hf.init(e,t)});function tS(e,t,n){return new eS({type:"union",options:t,discriminator:e,...A(n)})}var nS=E("ZodIntersection",(e,t)=>{yf.init(e,t),ne.init(e,t),e._zod.processJSONSchema=(n,r,o)=>Kg(e,n,r,o)});function rS(e,t){return new nS({type:"intersection",left:e,right:t})}var hh=E("ZodRecord",(e,t)=>{Mo(),_f.init(e,t),ne.init(e,t),e._zod.processJSONSchema=(n,r,o)=>Gg(e,n,r,o),e.keyType=t.keyType,e.valueType=t.valueType});function vh(e,t,n){if(!t||!t._zod)return new hh({type:"record",keyType:B(),valueType:e,...A(t)});return new hh({type:"record",keyType:e,valueType:t,...A(n)})}var Za=E("ZodEnum",(e,t)=>{wf.init(e,t),ne.init(e,t),e._zod.processJSONSchema=(r,o,i)=>Fg(e,r,o,i),e.enum=t.entries,e.options=[...e._zod.values];let n=new Set(Object.keys(t.entries));e.extract=(r,o)=>{let i={};for(let s of r)if(n.has(s))i[s]=t.entries[s];else throw Error(`Key ${s} not found in enum`);return new Za({...t,checks:[],...A(o),entries:i})},e.exclude=(r,o)=>{let i={...t.entries};for(let s of r)if(n.has(s))delete i[s];else throw Error(`Key ${s} not found in enum`);return new Za({...t,checks:[],...A(o),entries:i})}});function At(e,t){let n=Array.isArray(e)?Object.fromEntries(e.map((r)=>[r,r])):e;return new Za({type:"enum",entries:n,...A(t)})}var oS=E("ZodLiteral",(e,t)=>{bf.init(e,t),ne.init(e,t),e._zod.processJSONSchema=(n,r,o)=>Bg(e,n,r,o),e.values=new Set(t.values),Object.defineProperty(e,"value",{get(){if(t.values.length>1)throw Error("This schema contains multiple valid literal values. Use `.values` instead.");return t.values[0]}})});function Th(e,t){return new oS({type:"literal",values:Array.isArray(e)?e:[e],...A(t)})}var iS=E("ZodTransform",(e,t)=>{Mo(),kf.init(e,t),ne.init(e,t),e._zod.processJSONSchema=(n,r,o)=>qg(e,n,r,o),e._zod.parse=(n,r)=>{if(r.direction==="backward")throw new ir(e.constructor.name);n.addIssue=(i)=>{if(typeof i==="string")n.issues.push(on(i,n.value,t));else{let s=i;if(s.fatal)s.continue=!1;if(s.code??(s.code="custom"),!("input"in s))s.input=n.value;s.inst??(s.inst=e),n.issues.push(on(s))}};let o=t.transform(n.value,n);if(o instanceof Promise)return o.then((i)=>(n.value=i,n));return n.value=o,n}});function sS(e){return new iS({type:"transform",transform:e})}var Rh=E("ZodOptional",(e,t)=>{va.init(e,t),ne.init(e,t),e._zod.processJSONSchema=(n,r,o)=>ja(e,n,r,o),e.unwrap=()=>e._zod.def.innerType});function yh(e){return new Rh({type:"optional",innerType:e})}var Sh=E("ZodExactOptional",(e,t)=>{Ef.init(e,t),ne.init(e,t),e._zod.processJSONSchema=(n,r,o)=>ja(e,n,r,o),e.unwrap=()=>e._zod.def.innerType});function aS(e){return new Sh({type:"optional",innerType:e})}var uS=E("ZodNullable",(e,t)=>{vf.init(e,t),ne.init(e,t),e._zod.processJSONSchema=(n,r,o)=>Zg(e,n,r,o),e.unwrap=()=>e._zod.def.innerType});function _h(e){return new uS({type:"nullable",innerType:e})}var cS=E("ZodDefault",(e,t)=>{Tf.init(e,t),ne.init(e,t),e._zod.processJSONSchema=(n,r,o)=>Qg(e,n,r,o),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function lS(e,t){return new cS({type:"default",innerType:e,get defaultValue(){return typeof t==="function"?t():ta(t)}})}var dS=E("ZodPrefault",(e,t)=>{Rf.init(e,t),ne.init(e,t),e._zod.processJSONSchema=(n,r,o)=>Yg(e,n,r,o),e.unwrap=()=>e._zod.def.innerType});function pS(e,t){return new dS({type:"prefault",innerType:e,get defaultValue(){return typeof t==="function"?t():ta(t)}})}var xh=E("ZodNonOptional",(e,t)=>{Sf.init(e,t),ne.init(e,t),e._zod.processJSONSchema=(n,r,o)=>Xg(e,n,r,o),e.unwrap=()=>e._zod.def.innerType});function mS(e,t){return new xh({type:"nonoptional",innerType:e,...A(t)})}var fS=E("ZodCatch",(e,t)=>{xf.init(e,t),ne.init(e,t),e._zod.processJSONSchema=(n,r,o)=>Jg(e,n,r,o),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function gS(e,t){return new fS({type:"catch",innerType:e,catchValue:typeof t==="function"?t:wp(t)})}var hS=E("ZodPipe",(e,t)=>{Af.init(e,t),ne.init(e,t),e._zod.processJSONSchema=(n,r,o)=>eh(e,n,r,o),e.in=t.in,e.out=t.out});function wh(e,t){return new hS({type:"pipe",in:e,out:t})}var yS=E("ZodReadonly",(e,t)=>{Of.init(e,t),ne.init(e,t),e._zod.processJSONSchema=(n,r,o)=>th(e,n,r,o),e.unwrap=()=>e._zod.def.innerType});function _S(e){return new yS({type:"readonly",innerType:e})}var wS=E("ZodCustom",(e,t)=>{Cf.init(e,t),ne.init(e,t),e._zod.processJSONSchema=(n,r,o)=>zg(e,n,r,o)});function bS(e,t={}){return yg(wS,e,t)}function kS(e,t){return _g(e,t)}var On=["1m","5h","1w"],Fo={"1m":60000,"5h":18000000,"1w":604800000},$o=N().int().positive().nullable(),Ah=N().positive().nullable(),Oh=J({"1m":$o.optional(),"5h":$o.optional(),"1w":$o.optional()}).strict(),ES=J({"5h":Ah.optional(),"1w":Ah.optional()}).strict(),Va=J({requests:Oh.optional(),tokens:Oh.optional(),spend:ES.optional(),concurrency:$o.optional()}).strict(),Ch=64,vS=256;function TS(e){if(e.concurrency!==void 0&&e.concurrency!==null)return!0;for(let t of["requests","tokens","spend"]){let n=e[t];if(n===void 0)continue;for(let r of On){let o=n[r];if(o!==void 0&&o!==null)return!0}}return!1}var RS=Va.refine(TS,{message:"a model override must set at least one limit; omit the model to remove it"}),gr=Va.extend({models:vh(B().min(1).max(vS),RS).refine((e)=>Object.keys(e).length<=Ch,{message:`at most ${Ch} model overrides per key`}).optional()}).strict();function Qa(e,t){let n=e.models;if(n===void 0||!Object.hasOwn(n,t))return;return n[t]}function Ph(e,t){if(typeof e!=="object"||e===null)return;for(let n of Object.getOwnPropertyNames(e)){if(n==="__proto__")throw Error(`limits cannot name "__proto__"${t===""?"":` under ${t}`}`);Ph(e[n],t===""?n:`${t}.${n}`)}}function tt(e){return Ph(e,""),gr.parse(e)}class Bo{windowMs;stamps=[];constructor(e){this.windowMs=e}count(e){let t=e-this.windowMs,n=0;for(let r of this.stamps){if(r>t)break;n++}if(n>0)this.stamps.splice(0,n);return this.stamps.length}record(e){this.stamps.push(e)}forget(e){for(let t=this.stamps.length-1;t>=0;t--){let n=this.stamps[t];if(n===void 0||n<e)return;if(n===e){this.stamps.splice(t,1);return}}}resetAt(e){let t=this.stamps[0];return t===void 0?e:t+this.windowMs}get empty(){return this.stamps.length===0}}class zo extends Error{constructor(e){super(`LOCK_UNAVAILABLE: ${e}`);this.name="LockUnavailable"}}var SS=1000;function Ft(e={}){let t=e.now??(()=>Date.now()),n=new Map,r=new Map,o=(f)=>{if(f===void 0)return;if(f==="")throw TypeError("gauge holder must be a non-empty string");return f},i=(f)=>{let y=t(),_=(r.get(f)??[]).filter((w)=>w.expiresAt>y);if(_.length===0)r.delete(f);else r.set(f,_);return _},s=new Map,a=new Map,u=new Map,l=new Map,c=new Set,p=new Map,d=Number.NEGATIVE_INFINITY,m=(f,y)=>Math.floor(y/f)*f,g=(f,y,_,w)=>{let v=u.get(f);if(v===void 0)return;let k=m(y,w-_);for(let T of v.keys())if(T<k)v.delete(T)},h=(f)=>{let y=f-d;if(y>=0&&y<SS)return;d=f;for(let[_,w]of n)if(w.count(f),w.empty)n.delete(_)};return{liveWindows:()=>n.size,window:{claim(f,y,_){h(_);let w=n.get(f);if(w===void 0)w=new Bo(y),n.set(f,w);let v={used:w.count(_),resetAt:w.resetAt(_)};return w.record(_),Promise.resolve({stamp:_,before:v})},rollback(f,y){return n.get(f)?.forget(y),Promise.resolve()}},gauge:{acquire(f,y,_){let w=o(_),v=i(f),k=t()+y,T=w===void 0?-1:v.findIndex((Y)=>Y.holder===w);if(T!==-1&&w!==void 0)return v[T]={expiresAt:k,holder:w},r.set(f,v),Promise.resolve(v.length-1);let x=v.length;return v.push(w===void 0?{expiresAt:k}:{expiresAt:k,holder:w}),r.set(f,v),Promise.resolve(x)},renew(f,y,_){o(y);let w=i(f),v=w.findIndex((k)=>k.holder===y);if(v!==-1)w[v]={expiresAt:t()+_,holder:y},r.set(f,w);return Promise.resolve()},release(f,y){o(y);let _=i(f);if(y===void 0)_.sort((w,v)=>w.expiresAt-v.expiresAt).shift();else{let w=_.findIndex((v)=>v.holder===y);if(w!==-1)_.splice(w,1)}if(_.length===0)r.delete(f);else r.set(f,_);return Promise.resolve()},read(f){return Promise.resolve(i(f).length)},snapshot(f){let y=new Map;for(let _ of[...r.keys()]){if(!_.startsWith(f))continue;let w=i(_).length;if(w>0)y.set(_,w)}return Promise.resolve(y)}},buckets:{add(f,y,_,w,v){g(f,y,_,w);let k=u.get(f);if(k===void 0)return Promise.resolve();let T=m(y,w),x=k.get(T)??{requests:0,tokens:0,costUsd:0};return k.set(T,{requests:x.requests+v.requests,tokens:x.tokens+v.tokens,costUsd:x.costUsd+v.costUsd}),Promise.resolve()},sum(f,y,_,w){g(f,y,_,w);let v=u.get(f);if(v===void 0)return Promise.resolve(null);let k={requests:0,tokens:0,costUsd:0};for(let T of v.values())k.requests+=T.requests,k.tokens+=T.tokens,k.costUsd+=T.costUsd;return Promise.resolve(k)},seed(f,y,_,w,v){let k=new Map;for(let[T,x]of v)k.set(m(y,T),{...x});return u.set(f,k),g(f,y,_,w),Promise.resolve()}},lease:{acquire(f,y,_){let w=l.get(f),v=t();if(w!==void 0&&w.holder!==y&&w.expiresAt>v)return Promise.resolve(!1);return l.set(f,{holder:y,expiresAt:v+_}),Promise.resolve(!0)},release(f,y){if(l.get(f)?.holder===y)l.delete(f);return Promise.resolve()}},pubsub:{publish(f,y){for(let _ of c)if(_.pattern.endsWith("*")?f.startsWith(_.pattern.slice(0,-1)):f===_.pattern)_.fn(f,y);return Promise.resolve()},publishSequenced(f,y,_){let w=(p.get(_)??0)+1;return p.set(_,w),this.publish(f,`${w}:${y}`).then(()=>w)},subscribe(f,y){let _={pattern:f,fn:y};return c.add(_),()=>{c.delete(_)}}},incr(f){let y=(p.get(f)??0)+1;return p.set(f,y),Promise.resolve(y)},kv:{set(f,y,_){return a.set(f,{value:y,expiresAt:t()+_}),Promise.resolve()},get(f){let y=a.get(f);if(y===void 0)return Promise.resolve(null);if(y.expiresAt<=t())return a.delete(f),Promise.resolve(null);return Promise.resolve(y.value)},del(f){return a.delete(f),Promise.resolve()},delPrefix(f){for(let y of a.keys())if(y.startsWith(f))a.delete(y);return Promise.resolve()}},mutex:{async withLock(f,y,_,w){let v,k=new Promise((x)=>{v=setTimeout(()=>x("expired"),_)});try{for(;;){let x=s.get(f);if(x===void 0)break;if(await Promise.race([x.then(()=>"released"),k])==="expired")throw new zo(f)}}finally{clearTimeout(v)}let T=()=>{};s.set(f,new Promise((x)=>{T=x}));try{return await w()}finally{s.delete(f),T()}}}}}import{mkdir as FS,open as BS,readdir as zS,rmdir as qS,unlink as HS,writeFile as WS}from"fs/promises";import{dirname as Wo,join as wr,sep as jS}from"path";import{promisify as KS}from"util";import{gunzip as GS}from"zlib";var xS=new TextEncoder().encode("omnigateway-field-encryption-v1");async function qo(e){let t=await crypto.subtle.importKey("raw",new TextEncoder().encode(e),"PBKDF2",!1,["deriveKey"]);return crypto.subtle.deriveKey({name:"PBKDF2",salt:xS,iterations:210000,hash:"SHA-256"},t,{name:"AES-GCM",length:256},!1,["encrypt","decrypt"])}async function Ho(e,t){let n=crypto.getRandomValues(new Uint8Array(12)),r=new Uint8Array(await crypto.subtle.encrypt({name:"AES-GCM",iv:n,tagLength:128},e,new TextEncoder().encode(t))),o=r.subarray(0,r.length-16),i=r.subarray(r.length-16);return["enc:v1",Ja(n),Ja(o),Ja(i)].join(":")}var AS=/^[0-9a-f]*$/;function Ya(e){return e.length%2===0&&AS.test(e)}async function Cn(e,t){let n=t.split(":"),[r,o,i,s,a]=n;if(n.length!==5||r!=="enc"||o!=="v1"||!i||!a||s===void 0||!Ya(i)||!Ya(s)||!Ya(a))throw Error("malformed ciphertext");let u=new Uint8Array([...eu(s),...eu(a)]),l=await crypto.subtle.decrypt({name:"AES-GCM",iv:eu(i),tagLength:128},e,u);return new TextDecoder().decode(l)}function Ja(e){return Array.from(e,(t)=>t.toString(16).padStart(2,"0")).join("")}function eu(e){let t=new Uint8Array(e.length/2);for(let n=0;n<t.length;n++)t[n]=Number.parseInt(e.slice(n*2,n*2+2),16);return t}var Ih=new TextEncoder,OS=new TextDecoder,CS=65536-Ih.encode("\u2026[truncated]").length-3;function PS(e){let t=Ih.encode(e);if(t.length<=65536)return e;return OS.decode(t.subarray(0,CS))+"\u2026[truncated]"}function hr(e){let t=!1,n=(o,i)=>{if(typeof o==="string"){let s=PS(o);if(s!==o)t=!0;return s}if(Array.isArray(o)){if(i>6)return t=!0,"[omitted: nesting past 6 levels]";let s=o.length>24?o.slice(-24):o;if(s.length!==o.length)t=!0;return s.map((a)=>n(a,i+1))}if(o!==null&&typeof o==="object"){if(i>6)return t=!0,"[omitted: nesting past 6 levels]";let s=Object.entries(o),a=s.length>80?s.slice(0,80):s;if(a.length!==s.length)t=!0;return Object.fromEntries(a.map(([u,l])=>[u,n(l,i+1)]))}return o};return{value:n(e,1),truncated:t}}var IS=/\b(bearer)\s+[A-Za-z0-9._~+/=-]+/gi,LS=/(?<![A-Za-z0-9_-])(?:sk|ak|pk)-[A-Za-z0-9_-]{8,}/g,NS=/(?<![A-Za-z0-9_-])(?:gh[posu]_|github_pat_|AIza|GOCSPX-)[A-Za-z0-9_-]{8,}/g,DS=/^(?:gh[posu]_|github_pat_|AIza|GOCSPX-)/,MS=/(?<![A-Za-z0-9_-])xai-[A-Za-z0-9_]{8,}/g,US=/[A-Za-z0-9_-]{41,}/g,$S=[{id:"bearer",pattern:IS,keep:(e)=>e.length-e.replace(/^bearer\s+/i,"").length},{id:"prefixedKey",pattern:LS,keep:()=>3},{id:"vendorKey",pattern:NS,keep:(e)=>DS.exec(e)?.[0].length??0},{id:"xaiKey",pattern:MS,keep:()=>4},{id:"opaque",pattern:US,keep:()=>0}];function tu(e){return $S.reduce((t,n)=>t.replace(n.pattern,(r)=>`${r.slice(0,n.keep(r))}[redacted]`),e)}function Pn(e){if(typeof e==="string")return tu(e);if(Array.isArray(e))return e.map(Pn);if(e!==null&&typeof e==="object")return Object.fromEntries(Object.entries(e).map(([t,n])=>[t,Pn(n)]));return e}var Dh=1,Ot=524288,br=1e5,Mh="request_bodies",ru=new TextEncoder;function kr(e){return wr(Wo(e),Mh)}var ZS=/^[A-Za-z0-9_-]{1,128}$/;function Ko(e){return ZS.test(e)}function Go(e,t){let n=new Date(t),r=String(n.getUTCFullYear()).padStart(4,"0"),o=String(n.getUTCMonth()+1).padStart(2,"0"),i=String(n.getUTCDate()).padStart(2,"0");return`${r}/${o}/${i}/${e}.json.enc`}async function Uh(e){let t=await crypto.subtle.digest("SHA-256",new Uint8Array(e));return Array.from(new Uint8Array(t),(n)=>n.toString(16).padStart(2,"0")).join("")}function Lh(e){let t=hr(Pn(e.request)),n=hr(Pn(e.response));return{request:t.value,response:n.value,truncated:e.truncated===!0||t.truncated||n.truncated}}function XS(e){return{omitted:!0,reason:`artifact exceeded ${Ot} bytes after structural bounding`,serializedBytes:e}}function VS(e,t){return{...e,client:{request:t,response:t,truncated:!0},attempts:e.attempts.map((n)=>({attempt:n.attempt,provider:n.provider,request:t,response:t,streamChunks:null,truncated:!0}))}}function Zo(e){let t=Lh(e.client),n=e.attempts.map((p)=>{let d=Lh(p),m=p.streamChunks===null?null:hr(p.streamChunks.map(tu));return{attempt:p.attempt,provider:p.provider,request:d.request,response:d.response,streamChunks:m===null?null:m.value,truncated:d.truncated||(m?.truncated??!1)}}),r=hr(Pn(e.error)),o={schemaVersion:Dh,requestId:e.requestId,at:e.at,client:t,attempts:n,error:r.value},i=JSON.stringify(o),s=Buffer.byteLength(i);if(s<=Ot)return{artifact:o,json:i};let a=XS(s),u=VS(o,a),l=JSON.stringify(u);if(Buffer.byteLength(l)<=Ot)return{artifact:u,json:l};let c={...u,error:a};return{artifact:c,json:JSON.stringify(c)}}var Xo=2*Ot+65,$h=ru.encode("OGBA"),QS=ru.encode("enc:v1:"),Fh=1,Bt=10,_r=12,ou=16,jo=Bt+_r+ou,YS=Ot+jo,iu=0,Bh=1;var JS=18,ex=KS(GS);function yr(e,t,n){return e.slice(t,n)}function tx(e){let t=ru.encode(e);if(t.length<1||t.length>Ot)throw Error("artifact plaintext is outside the binary envelope's bounds");return t}async function Vo(e,t){let n=tx(t);return nx(e,n.length,iu,n)}async function nx(e,t,n,r){let o=new Uint8Array(jo+r.length);o.set($h,0),o[4]=Fh,o[5]=n,new DataView(o.buffer).setUint32(6,t,!1);let i=crypto.getRandomValues(new Uint8Array(_r)),s=await crypto.subtle.encrypt({name:"AES-GCM",iv:i,additionalData:yr(o,0,Bt),tagLength:ou*8},e,yr(r,0));return o.set(i,Bt),o.set(new Uint8Array(s),Bt+_r),{bytes:o,sha256:await Uh(o)}}async function zh(e,t,n,r){let o=await rx(wr(t,n));if(!(o instanceof Uint8Array))return{ok:!1,failure:o};return su(e,o,r)}async function rx(e){let t;try{t=await BS(e,"r")}catch{return"missing"}try{let{size:n}=await t.stat();if(n>Xo)return"corrupt";let r=new Uint8Array(n+1),o=0;while(o<r.length){let{bytesRead:i}=await t.read(r,o,r.length-o,o);if(i===0)break;o+=i}return o>n?"corrupt":r.subarray(0,o)}catch{return"missing"}finally{await t.close().catch(()=>{})}}var nu=/^(?:[0-9a-f]{2})*$/,ox=24,ix=32;function sx(e){let t=e.split(":"),[n,r,o,i,s]=t;return t.length===5&&n==="enc"&&r==="v1"&&o!==void 0&&i!==void 0&&s!==void 0&&o.length===ox&&s.length===ix&&nu.test(o)&&nu.test(i)&&nu.test(s)}function ax(e,t,n){switch(e){case iu:return t===n;case Bh:return t>=JS;default:return!1}}async function ux(e,t,n){switch(e){case iu:return t;case Bh:return cx(t,n);default:throw Error("unsupported artifact codec")}}async function cx(e,t){let n=await ex(e,{maxOutputLength:Ot,info:!0}),r=lx(n);if(r===null)throw Error("gzip result has an unexpected shape");if(r.consumed!==e.length)throw Error("bytes follow the gzip stream");if(r.output.length!==t)throw Error("gzip output is not the claimed length");return r.output}function lx(e){if(typeof e!=="object"||e===null)return null;if(!("buffer"in e)||!("engine"in e))return null;let{buffer:t,engine:n}=e;if(!(t instanceof Uint8Array)||typeof n!=="object"||n===null)return null;if(!("bytesWritten"in n)||typeof n.bytesWritten!=="number")return null;return{output:t,consumed:n.bytesWritten}}function dx(e){if(e.length<jo||e.length>YS)return null;let t=new DataView(e.buffer,e.byteOffset,e.byteLength),n=t.getUint8(4),r=t.getUint8(5),o=t.getUint32(6,!1);if(n!==Fh)return null;if(o<1||o>Ot)return null;if(!ax(r,e.length-jo,o))return null;return{header:yr(e,0,Bt),codec:r,claimed:o,iv:yr(e,Bt,Bt+_r),sealed:yr(e,Bt+_r)}}async function px(e,t){let n=await crypto.subtle.decrypt({name:"AES-GCM",iv:t.iv,additionalData:t.header,tagLength:ou*8},e,t.sealed);return new TextDecoder("utf-8",{fatal:!0}).decode(await ux(t.codec,new Uint8Array(n),t.claimed))}function Nh(e,t){if(e.length<t.length)return!1;return t.every((n,r)=>e[r]===n)}async function su(e,t,n){let r={ok:!1,failure:"corrupt"};try{if(t.length>Xo)return r;let o;if(Nh(t,$h)){let s=dx(t);if(s===null)return r;o=()=>px(e,s)}else if(Nh(t,QS)){let s=new TextDecoder().decode(t);if(!sx(s))return r;o=()=>Cn(e,s)}else return r;if(n!==null&&await Uh(t)!==n)return r;let i=JSON.parse(await o());if(i===null||typeof i!=="object"||Array.isArray(i))return r;return{ok:!0,artifact:i}}catch{return r}}async function qh(e,t,n){let r=wr(e,t);await FS(Wo(r),{recursive:!0}),await WS(r,n)}async function au(e,t){let n=wr(e,t);try{await HS(n)}catch{return}let r=Wo(n);while(r.length>e.length&&r.startsWith(e+jS)){try{await qS(r)}catch{return}r=Wo(r)}}async function Hh(e){let t=[],n=async(r,o)=>{let i;try{i=await zS(r,{withFileTypes:!0})}catch{return}for(let s of i){let a=o===""?s.name:`${o}/${s.name}`;if(s.isDirectory())await n(wr(r,s.name),a);else if(s.isFile())t.push(a)}};return await n(e,""),t}var Te="context-1m-2025-08-07",Wh=1e6;var ee={AUTH:!0,RATE_LIMIT:!0,QUOTA_EXHAUSTED:!0,OVERLOADED:!0,MODEL_UNAVAILABLE:!0,CAPABILITY_MISMATCH:!0,UPSTREAM:!0,TIMEOUT:!0,NETWORK:!0,BAD_REQUEST:!1,CONFLICT:!1,CONTENT_FILTER:!1,FINGERPRINT_REFUSED:!1,NO_CANDIDATES:!1,ALL_CANDIDATES_FAILED:!1,INTERNAL:!1};function W(e,t){if(!(e instanceof Error))return t;return e.message.length>0?e.message:e.name}class b extends Error{code;retryable;provider;upstreamStatus;gatewayAuthored;retryAfterMs;degradations;constructor(e,t,n){super(t,n?.cause===void 0?void 0:{cause:n.cause});this.name="GatewayError",this.code=e,this.retryable=ee[e],this.provider=n?.provider,this.upstreamStatus=n?.status,this.gatewayAuthored=n?.gatewayAuthored??!1,this.retryAfterMs=n?.retryAfterMs,this.degradations=[...n?.degradations??[]]}}var Qo={debug:10,info:20,warn:30,error:40};function an(e){let t=typeof e==="string"?e:String(e);return/^[A-Za-z0-9_.:/+-]{1,64}$/.test(t)?t:"(unprintable)"}var mx=/\u001B\[[0-9;]*m/g,fx=/^(\S+) (DEBUG|INFO|WARN|ERROR) {1,2}(.*)$/,gx=/ {2}(?=[a-zA-Z]+=)/;function jh(e){let t={raw:e,at:null,level:null,msg:null},n=fx.exec(e.replace(mx,""));if(n===null)return t;let[,r,o,i]=n;if(r===void 0||o===void 0||i===void 0)return t;let s=Date.parse(r);if(Number.isNaN(s))return t;let a=i.split(gx,1)[0]??i;return{raw:e,at:s,level:o.toLowerCase(),msg:a}}var se={debug:()=>{},info:()=>{},warn:()=>{},error:()=>{},enabled:()=>!1};function Yo(e){let t=e?.trim().toLowerCase();if(t===void 0||t.length===0)return null;return Object.hasOwn(Qo,t)?t:null}function gt(e){return e.type==="thinking"?void 0:e.cacheControl}function Ae(e,t,n,r=0){return{inputTokens:Math.max(0,e-n-r),outputTokens:t,cacheReadTokens:n,cacheWriteTokens:r}}var hx=4,Kh=1600,zt=4,Gh=4;function Oe(e){return Math.ceil(e.length/hx)}function In(e){switch(e.type){case"text":return zt+Oe(e.text);case"image":return zt+Kh;case"thinking":return zt+Oe(e.text);case"toolUse":return zt+Oe(e.name)+Oe(Jo(e.input));case"toolResult":return zt+Oe(e.toolUseId)+Oe(e.content)+(e.images?.length??0)*Kh+(e.files??[]).reduce((t,n)=>t+Oe(n.data),0)+(e.native??[]).reduce((t,n)=>t+In(n),0);case"providerNative":return zt+Oe(e.blockType)+Oe(Jo(e.data))}}function Zh(e){let t=Gh;for(let n of e.content)t+=In(n);return t}function uu(e){if(e.kind==="provider")return zt+Oe(e.name)+Oe(e.type)+Oe(Jo(e.wire));return zt+Oe(e.name)+Oe(e.description??"")+Oe(Jo(e.inputSchema))}function Jo(e){try{return JSON.stringify(e)??""}catch{return""}}function Xh(e){let t=0;for(let n of e.system??[])t+=In(n);for(let n of e.messages)t+=Zh(n);for(let n of e.tools??[])t+=uu(n);return t}function Vh(e){let t=0;for(let o of e.tools??[])t+=uu(o);let n=t;for(let o of e.system??[])n+=In(o);let r=n;for(let o of e.messages)r+=Zh(o);return{tools:t,toolsAndSystem:n,total:r}}function ei(e){let t=0,n=0;for(let r of e.tools??[])if(t+=uu(r),r.cacheControl!==void 0)n=t;for(let r of e.system??[])if(t+=In(r),gt(r)!==void 0)n=t;for(let r of e.messages){t+=Gh;for(let o of r.content){if(t+=In(o),gt(o)!==void 0)n=t;if(o.type==="toolResult"&&[...o.images??[],...o.native??[]].some((i)=>i.cacheControl!==void 0))n=t}}return n}var Re=3600000;function Fe(e){return Math.floor(e/3600000)}var Qh=86400000;function nt(){return-new Date().getTimezoneOffset()||0}function ht(e,t){let n=t*60000;return Math.floor((e+n)/Qh)*Qh-n}var yx=`
|
|
69
69
|
INSERT INTO usage_daily
|
|
70
70
|
(day, provider, credential_id, requested_model, resolved_model, api_key_id,
|
|
71
71
|
requests, errors, input_tokens, output_tokens, cache_read_tokens,
|
|
@@ -82,7 +82,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
82
82
|
rtk_saved_tokens = rtk_saved_tokens + excluded.rtk_saved_tokens,
|
|
83
83
|
rtk_applied_requests = rtk_applied_requests + excluded.rtk_applied_requests,
|
|
84
84
|
cost_usd = cost_usd + excluded.cost_usd,
|
|
85
|
-
duration_ms_sum = duration_ms_sum + excluded.duration_ms_sum`;function
|
|
85
|
+
duration_ms_sum = duration_ms_sum + excluded.duration_ms_sum`;function _x(e,t){return[ht(e.at,t),e.resolvedProvider??"",e.credentialId??"",e.requestedModel,e.resolvedModel??"",e.apiKeyId??""]}function wx(e){return{requests:1,errors:e.status>=400?1:0,inputTokens:e.inputTokens,outputTokens:e.outputTokens,cacheReadTokens:e.cacheReadTokens,cacheWriteTokens:e.cacheWriteTokens,rtkSavedTokens:e.rtkEstimatedTokensSaved,rtkAppliedRequests:e.rtkApplied?1:0,costUsd:e.costUsd,durationMsSum:e.durationMs}}var bx=`
|
|
86
86
|
INSERT INTO usage_daily
|
|
87
87
|
(day, provider, credential_id, requested_model, resolved_model, api_key_id,
|
|
88
88
|
requests, errors, input_tokens, output_tokens, cache_read_tokens,
|
|
@@ -97,10 +97,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
97
97
|
cache_read_tokens = cache_read_tokens + excluded.cache_read_tokens,
|
|
98
98
|
cache_write_tokens = cache_write_tokens + excluded.cache_write_tokens,
|
|
99
99
|
cost_usd = cost_usd + excluded.cost_usd,
|
|
100
|
-
duration_ms_sum = duration_ms_sum + excluded.duration_ms_sum`;function
|
|
100
|
+
duration_ms_sum = duration_ms_sum + excluded.duration_ms_sum`;function kx(e,t,n){e.run(bx,[...t,n.requests,n.errors,n.inputTokens,n.outputTokens,n.cacheReadTokens,n.cacheWriteTokens,n.costUsd,n.durationMsSum])}function Ex(e,t,n){e.run(yx,[...t,n.requests,n.errors,n.inputTokens,n.outputTokens,n.cacheReadTokens,n.cacheWriteTokens,n.rtkSavedTokens,n.rtkAppliedRequests,n.costUsd,n.durationMsSum])}function Yh(e,t,n){Ex(e,_x(t,n),wx(t))}function Jh(e,t){let n=new Map;for(let r of e.query(`SELECT at, api_key_id, requested_model, resolved_provider, resolved_model, credential_id,
|
|
101
101
|
status, input_tokens, output_tokens, cache_read_tokens, cache_write_tokens,
|
|
102
102
|
duration_ms, cost_usd
|
|
103
|
-
FROM request_logs`).all()){let o=[
|
|
103
|
+
FROM request_logs`).all()){let o=[ht(r.at,t),r.resolved_provider??"",r.credential_id??"",r.requested_model,r.resolved_model??"",r.api_key_id??""],i=o.join("\x00"),s=n.get(i),a=s?.counters??{requests:0,errors:0,inputTokens:0,outputTokens:0,cacheReadTokens:0,cacheWriteTokens:0,rtkSavedTokens:0,rtkAppliedRequests:0,costUsd:0,durationMsSum:0};if(a.requests+=1,a.errors+=r.status>=400?1:0,a.inputTokens+=r.input_tokens,a.outputTokens+=r.output_tokens,a.cacheReadTokens+=r.cache_read_tokens,a.cacheWriteTokens+=r.cache_write_tokens,a.costUsd+=r.cost_usd,a.durationMsSum+=r.duration_ms,s===void 0)n.set(i,{key:o,counters:a})}for(let r of n.values())kx(e,r.key,r.counters);return n.size}var vx=`
|
|
104
104
|
INSERT INTO usage_rollup
|
|
105
105
|
(api_key_id, hour, requests, input_tokens, output_tokens,
|
|
106
106
|
cache_read_tokens, cache_write_tokens, cost_usd)
|
|
@@ -112,7 +112,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
112
112
|
output_tokens = output_tokens + excluded.output_tokens,
|
|
113
113
|
cache_read_tokens = cache_read_tokens + excluded.cache_read_tokens,
|
|
114
114
|
cache_write_tokens = cache_write_tokens + excluded.cache_write_tokens,
|
|
115
|
-
cost_usd = cost_usd + excluded.cost_usd`;function
|
|
115
|
+
cost_usd = cost_usd + excluded.cost_usd`;function ey(e,t){let n=t.apiKeyId;if(n===null)return;e.run(vx,[n,Fe(t.at),1,t.inputTokens,t.outputTokens,t.cacheReadTokens,t.cacheWriteTokens,t.costUsd])}var Tx=`
|
|
116
116
|
INSERT INTO usage_rollup
|
|
117
117
|
(api_key_id, hour, requests, input_tokens, output_tokens,
|
|
118
118
|
cache_read_tokens, cache_write_tokens, cost_usd)
|
|
@@ -126,7 +126,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
126
126
|
COALESCE(SUM(cost_usd), 0)
|
|
127
127
|
FROM request_logs
|
|
128
128
|
WHERE state = 'done' AND api_key_id IS NOT NULL
|
|
129
|
-
GROUP BY api_key_id, CAST(at / 3600000 AS INTEGER)`;function
|
|
129
|
+
GROUP BY api_key_id, CAST(at / 3600000 AS INTEGER)`;function ti(e){e.run("DELETE FROM usage_rollup"),e.run(Tx)}function ty(e){let t=e.query(`WITH truth AS (
|
|
130
130
|
SELECT api_key_id AS k,
|
|
131
131
|
CAST(at / 3600000 AS INTEGER) AS h,
|
|
132
132
|
COUNT(*) AS requests,
|
|
@@ -155,13 +155,13 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
155
155
|
FROM usage_rollup r
|
|
156
156
|
LEFT JOIN truth ON r.api_key_id = truth.k AND r.hour = truth.h
|
|
157
157
|
WHERE truth.k IS NULL
|
|
158
|
-
) AS orphans`).get(),n=t?.buckets??0,r=(t?.mismatched??0)+(t?.orphans??0);return{buckets:n,mismatched:r,ok:r===0}}function
|
|
158
|
+
) AS orphans`).get(),n=t?.buckets??0,r=(t?.mismatched??0)+(t?.orphans??0);return{buckets:n,mismatched:r,ok:r===0}}function ny(e,t){let n=new Map;for(let r of e.query(`SELECT at, api_key_id, requested_model, resolved_provider, resolved_model, credential_id,
|
|
159
159
|
rtk_applied, rtk_estimated_tokens_saved
|
|
160
160
|
FROM request_logs
|
|
161
|
-
WHERE state = 'done'`).all()){let o=[
|
|
161
|
+
WHERE state = 'done'`).all()){let o=[ht(r.at,t),r.resolved_provider??"",r.credential_id??"",r.requested_model,r.resolved_model??"",r.api_key_id??""],i=o.join("\x00"),s=n.get(i)??{key:o,saved:0,applied:0};s.saved+=r.rtk_estimated_tokens_saved,s.applied+=r.rtk_applied===1?1:0,n.set(i,s)}for(let{key:r,saved:o,applied:i}of n.values())e.run(`UPDATE usage_daily
|
|
162
162
|
SET rtk_saved_tokens = ?, rtk_applied_requests = ?
|
|
163
163
|
WHERE day = ? AND provider = ? AND credential_id = ? AND requested_model = ?
|
|
164
|
-
AND resolved_model = ? AND api_key_id = ?`,[o,i,...r])}var{SQL:
|
|
164
|
+
AND resolved_model = ? AND api_key_id = ?`,[o,i,...r])}var{SQL:Lx}=globalThis.Bun;var ry=`-- The SQLite schema as it stands after its migrations 001 through 012, written
|
|
165
165
|
-- once. This track is numbered from 001 on its own and never shares a number
|
|
166
166
|
-- with the SQLite one: a Postgres install has no history to walk forward, so
|
|
167
167
|
-- the reasoning each SQLite migration recorded is kept beside the column it
|
|
@@ -460,7 +460,7 @@ CREATE TRIGGER settings_config_version
|
|
|
460
460
|
CREATE TRIGGER api_keys_config_version
|
|
461
461
|
AFTER INSERT OR UPDATE OR DELETE ON api_keys
|
|
462
462
|
FOR EACH STATEMENT EXECUTE FUNCTION bump_config_version();
|
|
463
|
-
`;var
|
|
463
|
+
`;var oy=`-- DEPLOY HAZARD \u2014 read before applying to a fleet.
|
|
464
464
|
--
|
|
465
465
|
-- This migration drops two columns that every gateway before it writes on
|
|
466
466
|
-- the success path (\`UPSERT_HEALTH\` names \`ewma_ttft_ms\` and \`last_used_at\`).
|
|
@@ -517,7 +517,7 @@ CREATE TRIGGER credential_health_config_version_ins
|
|
|
517
517
|
CREATE TRIGGER credential_health_config_version_del
|
|
518
518
|
AFTER DELETE ON credential_health
|
|
519
519
|
FOR EACH STATEMENT EXECUTE FUNCTION bump_config_version();
|
|
520
|
-
`;var
|
|
520
|
+
`;var iy=`-- The Postgres half of the sqlite migration of the same name. \`BIGINT\`, like
|
|
521
521
|
-- every other epoch-ms column in this schema, and read back through \`numOrNull\`.
|
|
522
522
|
--
|
|
523
523
|
-- Nullable rather than \`NOT NULL DEFAULT\`: the column is a deadline, and every
|
|
@@ -534,7 +534,7 @@ CREATE TRIGGER credential_health_config_version_del
|
|
|
534
534
|
-- nullable column and drops nothing, so a replica running the previous image
|
|
535
535
|
-- keeps serving \u2014 \`SELECT *\` gains a field its mapper ignores.
|
|
536
536
|
ALTER TABLE api_keys ADD COLUMN expires_at BIGINT;
|
|
537
|
-
`;var
|
|
537
|
+
`;var sy=`-- Indexes for the keyset traversal of \`request_logs\`. The SQLite copy,
|
|
538
538
|
-- \`015_log_keyset.sql\`, carries the reasoning: \`id\` in the index is what makes
|
|
539
539
|
-- "the row after this one" a question with one answer when \`at\` repeats, and
|
|
540
540
|
-- the three shorter indexes are replaced rather than kept because a redundant
|
|
@@ -546,7 +546,7 @@ DROP INDEX IF EXISTS idx_request_logs_cred;
|
|
|
546
546
|
CREATE INDEX idx_request_logs_at ON request_logs (at DESC, id DESC);
|
|
547
547
|
CREATE INDEX idx_request_logs_key_at ON request_logs (api_key_id, at DESC, id DESC);
|
|
548
548
|
CREATE INDEX idx_request_logs_cred ON request_logs (credential_id, at DESC, id DESC);
|
|
549
|
-
`;var
|
|
549
|
+
`;var ay=`-- An index for the provider filter on \`request_logs\`. Filtering by a provider
|
|
550
550
|
-- with no traffic has nothing to seek, so proving the absence reads every row,
|
|
551
551
|
-- and the console offers exactly that query because its dropdown is built from
|
|
552
552
|
-- the provider catalog rather than from traffic. Measured here at 500,000 rows,
|
|
@@ -576,7 +576,7 @@ CREATE INDEX idx_request_logs_cred ON request_logs (credential_id, at DESC, id D
|
|
|
576
576
|
-- cost 15MB to 58MB and a wider row per insert, and bought 0.25ms of 86ms. The
|
|
577
577
|
-- backends share the predicate in \`logPage.ts\`, not the index shape.
|
|
578
578
|
CREATE INDEX idx_request_logs_provider ON request_logs (resolved_provider, at DESC, id DESC);
|
|
579
|
-
`;var
|
|
579
|
+
`;var uy=`-- The per-model long-window reads behind a key's model overrides, on this
|
|
580
580
|
-- backend: \`usage.sumSince\`, \`sumBuckets\` and \`oldestSince\` narrowed to one
|
|
581
581
|
-- requested model, read from the log because \`usage_rollup\` has no model
|
|
582
582
|
-- column. The SQLite copy is \`018_model_window_index.sql\`, same shape.
|
|
@@ -598,7 +598,7 @@ CREATE INDEX idx_request_logs_provider ON request_logs (resolved_provider, at DE
|
|
|
598
598
|
-- everyone else's. 15MB at 500,000 rows, against 19MB for the key/time index.
|
|
599
599
|
-- Neither partial nor covering, for the reasons the SQLite file records.
|
|
600
600
|
CREATE INDEX idx_request_logs_key_model_at ON request_logs (api_key_id, requested_model, at);
|
|
601
|
-
`;var
|
|
601
|
+
`;var cy=`-- The Postgres half of the sqlite migration \`019_key_guardrail.sql\`: an
|
|
602
602
|
-- optional usage policy on a gateway API key, NULL meaning no guardrail.
|
|
603
603
|
--
|
|
604
604
|
-- No backfill: every existing key was minted without a policy. Safe under a
|
|
@@ -606,7 +606,18 @@ CREATE INDEX idx_request_logs_key_model_at ON request_logs (api_key_id, requeste
|
|
|
606
606
|
-- previous image keeps serving, ignoring the field (and therefore not judging
|
|
607
607
|
-- that key's requests until it is replaced, which README's upgrade notes say).
|
|
608
608
|
ALTER TABLE api_keys ADD COLUMN guardrail_policy TEXT;
|
|
609
|
-
`;var
|
|
609
|
+
`;var ly=`-- The Postgres half of the sqlite migration \`020_key_smart_routing.sql\`: a flag
|
|
610
|
+
-- on a gateway API key saying its requests are judged for confidential content
|
|
611
|
+
-- and, when they are, routed to the operator's local model.
|
|
612
|
+
--
|
|
613
|
+
-- NOT NULL DEFAULT FALSE; no backfill: every existing key was minted without
|
|
614
|
+
-- the flag. Safe under a rolling deploy \u2014 one added column with a default and
|
|
615
|
+
-- nothing dropped, so a replica on the previous image keeps serving, ignoring
|
|
616
|
+
-- the field (and therefore sending that key's confidential requests to the
|
|
617
|
+
-- external model it named until it is replaced: rollback fails open, which
|
|
618
|
+
-- README's upgrade notes say).
|
|
619
|
+
ALTER TABLE api_keys ADD COLUMN smart_routing BOOLEAN NOT NULL DEFAULT FALSE;
|
|
620
|
+
`;var I=(e)=>Number(e),ae=(e)=>e===null?null:Number(e),ni=7140641,Nx=[{id:1,sql:ry},{id:2,sql:oy},{id:3,sql:iy},{id:4,sql:sy},{id:5,sql:ay},{id:6,sql:uy},{id:7,sql:cy},{id:8,sql:ly}];async function dy(e){let t=new Lx({url:e}),n=await t.reserve();try{await n.unsafe(`SELECT pg_advisory_lock(${ni})`);try{await n.unsafe("CREATE TABLE IF NOT EXISTS migrations (id INTEGER PRIMARY KEY, applied_at BIGINT NOT NULL)");let r=new Set((await n.unsafe("SELECT id FROM migrations")).map((o)=>o.id));for(let o of Nx){if(r.has(o.id))continue;await n.unsafe("BEGIN");try{await n.unsafe(o.sql),await n.unsafe("INSERT INTO migrations (id, applied_at) VALUES ($1, $2)",[o.id,Date.now()]),await n.unsafe("COMMIT")}catch(i){throw await n.unsafe("ROLLBACK"),i}}}finally{await n.unsafe(`SELECT pg_advisory_unlock(${ni})`)}}finally{n.release()}return t}function Dx(e){return e==="ready"||e==="missing"||e==="corrupt"?e:"none"}var cu=(e)=>({requestId:e.request_id,at:I(e.at),relPath:e.rel_path,sizeBytes:I(e.size_bytes),sha256:e.sha256,detailState:Dx(e.detail_state),truncated:e.truncated}),lu="request_id, at, rel_path, size_bytes, sha256, detail_state, truncated";function py(e,t){let n=async(o)=>{if(o.length>0)await e.unsafe("DELETE FROM request_bodies WHERE request_id IN (SELECT jsonb_array_elements_text($1::jsonb))",[o.map((i)=>i.requestId)]);return o.length},r=async(o,i)=>{await e.unsafe("UPDATE request_bodies SET detail_state = $1 WHERE request_id = $2",[i,o])};return{async put(o){if(!Ko(o.requestId))throw Error("request id is not safe to use as an artifact path segment");let i=Zo(o),s=await Vo(t,i.json),a=Go(o.requestId,o.at),u=i.artifact.client.truncated||i.artifact.attempts.some((c)=>c.truncated),l={requestId:o.requestId,at:o.at,relPath:a,sizeBytes:s.bytes.length,sha256:s.sha256,detailState:"ready",truncated:u};return await e.unsafe(`INSERT INTO request_bodies
|
|
610
621
|
(request_id, at, rel_path, size_bytes, sha256, detail_state, truncated, bytes)
|
|
611
622
|
VALUES ($1,$2,$3,$4,$5,$6,$7,$8)
|
|
612
623
|
ON CONFLICT (request_id) DO UPDATE SET
|
|
@@ -616,14 +627,14 @@ ALTER TABLE api_keys ADD COLUMN guardrail_policy TEXT;
|
|
|
616
627
|
sha256 = EXCLUDED.sha256,
|
|
617
628
|
detail_state = EXCLUDED.detail_state,
|
|
618
629
|
truncated = EXCLUDED.truncated,
|
|
619
|
-
bytes = EXCLUDED.bytes`,[
|
|
630
|
+
bytes = EXCLUDED.bytes`,[l.requestId,l.at,l.relPath,l.sizeBytes,l.sha256,l.detailState,l.truncated,s.bytes]),l},async get(o){let i=(await e.unsafe(`SELECT ${lu},
|
|
620
631
|
CASE WHEN octet_length(bytes) <= $2 THEN bytes ELSE NULL END AS bytes,
|
|
621
632
|
octet_length(bytes) AS encoded_size
|
|
622
|
-
FROM request_bodies WHERE request_id = $1`,[o,
|
|
633
|
+
FROM request_bodies WHERE request_id = $1`,[o,Xo]))[0];if(i===void 0)return null;let s=cu(i);if(s.relPath===null||s.detailState==="none")return{row:s,artifact:null};let a=i.encoded_size===null?{ok:!1,failure:"missing"}:i.bytes===null?{ok:!1,failure:"corrupt"}:await su(t,new Uint8Array(i.bytes),s.sha256);if(a.ok){if(s.detailState!=="ready")await r(o,"ready");return{row:{...s,detailState:"ready"},artifact:a.artifact}}return await r(o,a.failure),{row:{...s,detailState:a.failure},artifact:null}},async prune(o){let i=await e.unsafe(`SELECT ${lu} FROM request_bodies WHERE at < $1`,[o]);return n(i.map(cu))},async pruneToCap(o=br){let i=I((await e.unsafe("SELECT COUNT(*) AS n FROM request_bodies"))[0]?.n??0);if(i<=o)return 0;let s=await e.unsafe(`SELECT ${lu} FROM request_bodies ORDER BY at ASC, request_id ASC LIMIT $1`,[i-o]);return n(s.map(cu))},async sweepOrphans(){return 0}}}var du=["off","lite","full","ultra"],Mx=new Set(du);function ri(e){return Mx.has(e)}var Ux={fiveHour:18000000,daily:86400000,weekly:604800000};function oi(e,t){return t!==null&&t>0?t:Ux[e]}var $x=60000;function ii(e,t){if(e===null||t===null)return e===t;return Math.abs(e-t)<=$x}function Er(e,t){return e.resetsAt!==null&&e.resetsAt<=t}function fy(e,t){if(t===void 0)return"unknown";if(e.observedAt>0&&t.stale)return"stale";if(t.ratePerHour===null||e.limit===null||e.limit<=0)return"unknown";if(t.survives===!1&&t.exhaustsAt!==null)return"empty";return t.survives===!0?"ok":"unknown"}var Fx=0.1;function gy(e){return e.cacheRead??e.input*Fx}function mu(e,t){if(t.provider!==e.provider)return!1;let n=Symbol("unusable-endpoint"),r=(i)=>i===void 0||i===""?void 0:i,o=(i)=>{if(i===void 0)return;return typeof i==="string"&&i!==""?i:n};if(r(e.endpointId)!==o(t.providerData.endpointId))return!1;return e.credentialId===void 0||t.id===e.credentialId}function Ln(e,t){if(e.credentialId===void 0)return;return t.find((n)=>mu(e,n))}var hy=4000,fu=60000,gu=4000,hu=60000,yy="Personal data: names together with ID numbers, addresses, phone numbers, emails, national ID (NIK), passport, bank or card numbers. Credentials and secrets: passwords, API keys, tokens, private keys, connection strings. Salaries and HR records. Customer or patient records. Non-public financial figures. Internal documents marked confidential or internal. Source code marked proprietary.",yu=10,vr=(e,t)=>e.revokedAt===null&&(e.expiresAt===null||e.expiresAt>t),_u=(e,t)=>e.authType==="oauth"&&e.expiresAt!==null&&e.expiresAt<=t,si=(e,t)=>_u(e,t)&&!e.hasRefreshToken,qt=60000,me={weights:{tier:10,health:3,quota:2,load:2,cost:1,latency:1},maxAttempts:3,requestDeadlineMs:0,breakerThreshold:3,breakerCooldownMs:30000,logRetentionDays:30,bodyRetentionDays:1,quotaPollIntervalMs:300000,rtkEnabled:!1,autoCacheEnabled:!0,ponytailMode:"off",bodyLoggingEnabled:!1,bodyLoggingCaptureStreamChunks:!1,snapshotKeepLatest:5,snapshotMaxAgeDays:30,guardrailModel:null,guardrailTimeoutMs:1e4,guardrailHistoryTurns:3,smartRouterEnabled:!1,smartRouterClassifierModel:null,smartRouterLocalModel:null,smartRouterPolicy:yy,smartRouterTimeoutMs:1e4},pu=(e,t)=>typeof e==="number"&&Number.isInteger(e)&&e>=1&&e<=t;function ai(e){let{guardrailModel:t,guardrailTimeoutMs:n,guardrailHistoryTurns:r}=e;return{guardrailModel:typeof t==="string"&&t.trim()!==""?t:null,guardrailTimeoutMs:pu(n,fu)?n:me.guardrailTimeoutMs,guardrailHistoryTurns:pu(r,yu)?r:me.guardrailHistoryTurns}}var my=(e)=>typeof e==="string"&&e.trim()!==""?e:null;function ui(e){let{smartRouterPolicy:t,smartRouterTimeoutMs:n}=e,r=typeof t==="string"?t.trim():"";return{smartRouterEnabled:e.smartRouterEnabled===!0,smartRouterClassifierModel:my(e.smartRouterClassifierModel),smartRouterLocalModel:my(e.smartRouterLocalModel),smartRouterPolicy:r!==""&&r.length<=gu?r:yy,smartRouterTimeoutMs:pu(n,hu)?n:me.smartRouterTimeoutMs}}var _y="settings",wu="adminPasswordHash",bu="viewerPasswordHash";function Bx(e){let t=me.weights,n=(r)=>{let o=e?.[r];return typeof o==="number"&&Number.isFinite(o)?o:t[r]};return{tier:n("tier"),health:n("health"),quota:n("quota"),load:n("load"),cost:n("cost"),latency:n("latency")}}function wy(e,t){let n=async(o)=>(await e.unsafe("SELECT value FROM settings WHERE key = $1",[o]))[0]?.value??null,r=async(o,i)=>{await e.unsafe("INSERT INTO settings (key, value) VALUES ($1, $2) ON CONFLICT (key) DO UPDATE SET value = EXCLUDED.value",[o,i])};return{async listModels(){return(await e.unsafe("SELECT * FROM virtual_models ORDER BY id")).map((i)=>({id:i.id,targets:JSON.parse(i.targets),strategy:i.strategy,isAlias:i.is_alias}))},async putModel(o){await e.unsafe(`INSERT INTO virtual_models (id, targets, strategy, is_alias) VALUES ($1,$2,$3,$4)
|
|
623
634
|
ON CONFLICT (id) DO UPDATE SET
|
|
624
635
|
targets = EXCLUDED.targets,
|
|
625
636
|
strategy = EXCLUDED.strategy,
|
|
626
|
-
is_alias = EXCLUDED.is_alias`,[o.id,JSON.stringify(o.targets),o.strategy,o.isAlias]),t({type:"modelsChanged"})},async removeModel(o){await e.unsafe("DELETE FROM virtual_models WHERE id = $1",[o]),t({type:"modelsChanged"})},async getSettings(){let o=await n(
|
|
637
|
+
is_alias = EXCLUDED.is_alias`,[o.id,JSON.stringify(o.targets),o.strategy,o.isAlias]),t({type:"modelsChanged"})},async removeModel(o){await e.unsafe("DELETE FROM virtual_models WHERE id = $1",[o]),t({type:"modelsChanged"})},async getSettings(){let o=await n(_y);if(o===null)return me;try{let i=JSON.parse(o),s=i!==null&&typeof i==="object"&&!Array.isArray(i)?i:{};return{...me,...s,rtkEnabled:s.rtkEnabled===!0,autoCacheEnabled:s.autoCacheEnabled===void 0?!0:s.autoCacheEnabled===!0,ponytailMode:ri(s.ponytailMode)?s.ponytailMode:"off",bodyRetentionDays:Number.isInteger(s.bodyRetentionDays)&&(s.bodyRetentionDays??0)>=1&&(s.bodyRetentionDays??0)<=3650?s.bodyRetentionDays:me.bodyRetentionDays,bodyLoggingEnabled:s.bodyLoggingEnabled===!0,bodyLoggingCaptureStreamChunks:s.bodyLoggingCaptureStreamChunks===!0,weights:Bx(s.weights),...ai(s),...ui(s)}}catch{return me}},async putSettings(o){let i=await this.getSettings(),s={...i,...o,weights:{...i.weights,...o.weights}};return await r(_y,JSON.stringify(s)),t({type:"settingsChanged"}),s},async getAdminPasswordHash(){return n(wu)},async setAdminPasswordHashIfAbsent(o){return(await e.unsafe("INSERT INTO settings (key, value) VALUES ($1, $2) ON CONFLICT (key) DO NOTHING",[wu,o])).count===1},async setAdminPasswordHash(o){await r(wu,o)},async getViewerPasswordHash(){return n(bu)},async setViewerPasswordHash(o){if(o===null){await e.unsafe("DELETE FROM settings WHERE key = $1",[bu]);return}await r(bu,o)}}}function by(e){return{credentialId:e.credential_id,model:e.model,breakerState:e.breaker_state,consecutiveFailures:e.consecutive_failures,openedAt:ae(e.opened_at),rateLimitedUntil:ae(e.rate_limited_until)}}var zx=`INSERT INTO credential_health
|
|
627
638
|
(credential_id, model, breaker_state, consecutive_failures, opened_at,
|
|
628
639
|
rate_limited_until)
|
|
629
640
|
VALUES ($1,$2,$3,$4,$5,$6)
|
|
@@ -631,17 +642,17 @@ ALTER TABLE api_keys ADD COLUMN guardrail_policy TEXT;
|
|
|
631
642
|
breaker_state = EXCLUDED.breaker_state,
|
|
632
643
|
consecutive_failures = EXCLUDED.consecutive_failures,
|
|
633
644
|
opened_at = EXCLUDED.opened_at,
|
|
634
|
-
rate_limited_until = EXCLUDED.rate_limited_until`,
|
|
645
|
+
rate_limited_until = EXCLUDED.rate_limited_until`,qx=(e)=>[e.credentialId,e.model,e.breakerState,e.consecutiveFailures,e.openedAt,e.rateLimitedUntil];function ky(e,t,n){let r=async(d)=>d===null?null:Cn(t,d),o=async(d)=>({accessToken:await r(d.access_token),refreshToken:await r(d.refresh_token),apiKey:await r(d.api_key),idToken:await r(d.id_token)}),i=async(d,m,g)=>{let f=(await d.unsafe(`SELECT ${m} FROM credentials WHERE id = $1`,[g]))[0];if(f===void 0)throw Error(`credential ${g} no longer exists`);return f},s=async(d)=>o(await i(e,"access_token, refresh_token, api_key, id_token",d)),a=async(d,m)=>{if(m==="oauth"){let h=await i(e,"access_token",d);return{accessToken:await r(h.access_token),apiKey:null}}let g=await i(e,"api_key",d);return{accessToken:null,apiKey:await r(g.api_key)}},u=async(d)=>{let m=await i(e,"refresh_token",d);return{refreshToken:await r(m.refresh_token)}},l=async(d)=>{let m=await i(e,"access_token",d);return{accessToken:await r(m.access_token)}},c=(d,m=!1)=>({id:d.id,provider:d.provider,label:d.label,authType:d.auth_type,enabled:d.enabled,tier:d.tier,weight:d.weight,expiresAt:ae(d.expires_at),accountEmail:d.account_email,providerData:JSON.parse(d.provider_data),disabledReason:d.disabled_reason,disabledAt:ae(d.disabled_at),hasRefreshToken:d.refresh_token!==null,tokenVersion:d.token_version,createdAt:I(d.created_at),updatedAt:I(d.updated_at),secrets:()=>m?s(d.id):o(d),openForInference:async()=>{if(m)return a(d.id,d.auth_type);if(d.auth_type==="oauth")return{accessToken:await r(d.access_token),apiKey:null};return{accessToken:null,apiKey:await r(d.api_key)}},openForRefresh:async()=>m?u(d.id):{refreshToken:await r(d.refresh_token)},openForUsage:async()=>m?l(d.id):{accessToken:await r(d.access_token)}}),p=async(d)=>d===null||d===void 0?null:Ho(t,d);return{async list(){return(await e.unsafe("SELECT * FROM credentials ORDER BY tier, label")).map((m)=>c(m))},async listRouting(){return(await e.unsafe(`SELECT id, provider, label, auth_type, enabled, tier, weight, expires_at,
|
|
635
646
|
account_email, provider_data, disabled_reason, disabled_at,
|
|
636
647
|
NULL AS access_token,
|
|
637
648
|
CASE WHEN refresh_token IS NULL THEN NULL ELSE 'present' END AS refresh_token,
|
|
638
649
|
NULL AS api_key, NULL AS id_token, created_at, updated_at, token_version
|
|
639
650
|
FROM credentials
|
|
640
|
-
ORDER BY tier, label`)).map((m)=>
|
|
651
|
+
ORDER BY tier, label`)).map((m)=>c(m,!0))},async get(d){let g=(await e.unsafe("SELECT * FROM credentials WHERE id = $1",[d]))[0];return g===void 0?null:c(g)},async create(d){let m=Date.now();await e.unsafe(`INSERT INTO credentials
|
|
641
652
|
(id, provider, label, auth_type, enabled, tier, weight, expires_at, account_email,
|
|
642
653
|
provider_data, disabled_reason, disabled_at, access_token, refresh_token, api_key,
|
|
643
654
|
id_token, created_at, updated_at)
|
|
644
|
-
VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18)`,[
|
|
655
|
+
VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18)`,[d.id,d.provider,d.label,d.authType,d.enabled,d.tier,d.weight,d.expiresAt,d.accountEmail,JSON.stringify(d.providerData),d.disabledReason,d.disabledAt,await p(d.accessToken),await p(d.refreshToken),await p(d.apiKey),await p(d.idToken),m,m]);let{accessToken:g,refreshToken:h,apiKey:f,idToken:y,..._}=d;return n({type:"credentialsChanged"}),{..._,hasRefreshToken:h!=null,tokenVersion:0,createdAt:m,updatedAt:m}},async update(d,m){let g=[],h=[],f=(y,_)=>{h.push(_),g.push(`${y} = $${h.length}`)};if(m.label!==void 0)f("label",m.label);if(m.enabled!==void 0)f("enabled",m.enabled);if(m.tier!==void 0)f("tier",m.tier);if(m.weight!==void 0)f("weight",m.weight);if(m.expiresAt!==void 0)f("expires_at",m.expiresAt);if(m.accountEmail!==void 0)f("account_email",m.accountEmail);if(m.providerData!==void 0)f("provider_data",JSON.stringify(m.providerData));if(m.disabledReason!==void 0)f("disabled_reason",m.disabledReason);if(m.disabledAt!==void 0)f("disabled_at",m.disabledAt);if(g.length===0)return;f("updated_at",Date.now()),await e.unsafe(`UPDATE credentials SET ${g.join(", ")} WHERE id = $${h.length+1}`,[...h,d]),n({type:"credentialsChanged"})},async updateSecrets(d,m,g,h){let f=[],y=[],_=(k,T)=>{y.push(T),f.push(`${k} = $${y.length}`)};if(m.accessToken!==void 0)_("access_token",await p(m.accessToken));if(m.refreshToken!==void 0)_("refresh_token",await p(m.refreshToken));if(m.apiKey!==void 0)_("api_key",await p(m.apiKey));if(m.idToken!==void 0)_("id_token",await p(m.idToken));_("expires_at",g),_("updated_at",Date.now()),f.push("token_version = token_version + 1"),y.push(d);let w=`WHERE id = $${y.length}`;if(h!==void 0)y.push(h),w+=` AND token_version = $${y.length}`;let v=await e.unsafe(`UPDATE credentials SET ${f.join(", ")} ${w}`,y);if(v.count>0)n({type:"credentialsChanged"});return v.count>0},async remove(d){await e.unsafe("DELETE FROM credentials WHERE id = $1",[d]),n({type:"credentialsChanged"})},async listHealth(){return(await e.unsafe("SELECT * FROM credential_health")).map(by)},async updateHealth(d,m,g){let h=await e.begin(async(f)=>{await f.unsafe("SELECT pg_advisory_xact_lock(hashtext($1))",[`${d}|${m}`]);let _=(await f.unsafe("SELECT * FROM credential_health WHERE credential_id = $1 AND model = $2 FOR UPDATE",[d,m]))[0],w=g(_===void 0?null:by(_));return await f.unsafe(zx,qx(w)),w});return n({type:"healthSaved",rows:[h]}),h},async listQuota(){return(await e.unsafe("SELECT * FROM quota_windows")).map((m)=>({credentialId:m.credential_id,windowType:m.window_type,startsAt:I(m.starts_at),used:I(m.used),limit:ae(m.limit_value),resetsAt:ae(m.resets_at),observedAt:I(m.observed_at),windowMs:ae(m.window_ms)}))},async saveQuota(d){let m=new Map;for(let g of d){let h=m.get(g.credentialId);if(h===void 0)m.set(g.credentialId,[g.windowType]);else h.push(g.windowType)}await e.begin(async(g)=>{for(let h of d){await g.unsafe(`INSERT INTO quota_windows
|
|
645
656
|
(credential_id, window_type, starts_at, used, limit_value, resets_at, observed_at,
|
|
646
657
|
window_ms)
|
|
647
658
|
VALUES ($1,$2,$3,$4,$5,$6,$7,$8)
|
|
@@ -655,7 +666,7 @@ ALTER TABLE api_keys ADD COLUMN guardrail_policy TEXT;
|
|
|
655
666
|
FROM quota_samples
|
|
656
667
|
WHERE credential_id = $1 AND window_type = $2
|
|
657
668
|
ORDER BY observed_at DESC
|
|
658
|
-
LIMIT 1`,[h.credentialId,h.windowType]))[0];if(f!==void 0&&
|
|
669
|
+
LIMIT 1`,[h.credentialId,h.windowType]))[0];if(f!==void 0&&I(f.used)===h.used&&ae(f.limit_value)===h.limit&&ii(ae(f.resets_at),h.resetsAt)&&ae(f.window_ms)===h.windowMs)continue;await g.unsafe(`INSERT INTO quota_samples
|
|
659
670
|
(credential_id, window_type, observed_at, used, limit_value, resets_at, window_ms)
|
|
660
671
|
VALUES ($1,$2,$3,$4,$5,$6,$7)
|
|
661
672
|
ON CONFLICT (credential_id, window_type, observed_at) DO UPDATE SET
|
|
@@ -664,18 +675,18 @@ ALTER TABLE api_keys ADD COLUMN guardrail_policy TEXT;
|
|
|
664
675
|
resets_at = EXCLUDED.resets_at,
|
|
665
676
|
window_ms = EXCLUDED.window_ms`,[h.credentialId,h.windowType,h.observedAt,h.used,h.limit,h.resetsAt,h.windowMs])}for(let[h,f]of m)await g.unsafe(`DELETE FROM quota_windows
|
|
666
677
|
WHERE credential_id = $1
|
|
667
|
-
AND window_type NOT IN (SELECT jsonb_array_elements_text($2::jsonb))`,[h,f])}),n({type:"quotaSaved",rows:
|
|
678
|
+
AND window_type NOT IN (SELECT jsonb_array_elements_text($2::jsonb))`,[h,f])}),n({type:"quotaSaved",rows:d})},async listQuotaSamples(d){let m=d.limit!==void 0,g=[d.since,d.until],h="";if(d.credentialId!==void 0)g.push(d.credentialId),h=` AND credential_id = $${g.length}`;let f="";if(d.limit!==void 0)g.push(d.limit),f=`LIMIT $${g.length}`;let _=(await e.unsafe(`SELECT * FROM quota_samples
|
|
668
679
|
WHERE observed_at >= $1 AND observed_at <= $2${h}
|
|
669
680
|
ORDER BY ${m?"observed_at DESC":'credential_id COLLATE "C", window_type COLLATE "C", observed_at'}
|
|
670
|
-
${f}`,g)).map((w)=>({credentialId:w.credential_id,windowType:w.window_type,observedAt:
|
|
681
|
+
${f}`,g)).map((w)=>({credentialId:w.credential_id,windowType:w.window_type,observedAt:I(w.observed_at),used:I(w.used),limit:ae(w.limit_value),resetsAt:ae(w.resets_at),windowMs:ae(w.window_ms)}));if(m){let w=(v,k)=>v<k?-1:v>k?1:0;_.sort((v,k)=>w(v.credentialId,k.credentialId)||w(v.windowType,k.windowType)||v.observedAt-k.observedAt)}return _},async pruneQuotaSamples(d){return(await e.unsafe("DELETE FROM quota_samples WHERE observed_at < $1",[d])).count}}}function Hx(e,t,n){try{let r=JSON.parse(t);return tt(r)}catch{return n.error("api key limits unreadable",{apiKeyId:e}),null}}var Ey=(e,t)=>({id:e.id,label:e.label,prefix:e.prefix,hash:e.hash,modelAllowlist:e.model_allowlist===null?null:JSON.parse(e.model_allowlist),limits:Hx(e.id,e.limits,t),bodyLoggingOptOut:e.body_logging_opt_out,createdAt:I(e.created_at),revokedAt:ae(e.revoked_at),expiresAt:ae(e.expires_at),guardrailPolicy:e.guardrail_policy,smartRouting:e.smart_routing});function vy(e,t){let n=async(r,o)=>{let s=(await e.unsafe(`SELECT * FROM api_keys WHERE ${r} = $1`,[o]))[0];return s===void 0?null:Ey(s,t)};return{async list(){return(await e.unsafe("SELECT * FROM api_keys ORDER BY created_at DESC")).map((o)=>Ey(o,t))},findByHash:(r)=>n("hash",r),get:(r)=>n("id",r),async create(r){let o=Date.now();return await e.unsafe(`INSERT INTO api_keys (id, label, prefix, hash, model_allowlist, limits,
|
|
671
682
|
body_logging_opt_out, created_at, revoked_at, expires_at,
|
|
672
|
-
guardrail_policy)
|
|
673
|
-
VALUES ($1,$2,$3,$4,$5,$6,$7,$8,NULL,$9,$10)`,[r.id,r.label,r.prefix,r.hash,r.modelAllowlist===null?null:JSON.stringify(r.modelAllowlist),JSON.stringify(
|
|
683
|
+
guardrail_policy, smart_routing)
|
|
684
|
+
VALUES ($1,$2,$3,$4,$5,$6,$7,$8,NULL,$9,$10,$11)`,[r.id,r.label,r.prefix,r.hash,r.modelAllowlist===null?null:JSON.stringify(r.modelAllowlist),JSON.stringify(tt(r.limits)),r.bodyLoggingOptOut,o,r.expiresAt,r.guardrailPolicy,r.smartRouting]),{...r,createdAt:o,revokedAt:null}},async importRow(r){if(r.limits===null)throw Error(`api key ${r.id} has unreadable limits`);await e.unsafe(`INSERT INTO api_keys (id, label, prefix, hash, model_allowlist, limits,
|
|
674
685
|
body_logging_opt_out, created_at, revoked_at, expires_at,
|
|
675
|
-
guardrail_policy)
|
|
676
|
-
VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11)`,[r.id,r.label,r.prefix,r.hash,r.modelAllowlist===null?null:JSON.stringify(r.modelAllowlist),JSON.stringify(
|
|
686
|
+
guardrail_policy, smart_routing)
|
|
687
|
+
VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12)`,[r.id,r.label,r.prefix,r.hash,r.modelAllowlist===null?null:JSON.stringify(r.modelAllowlist),JSON.stringify(tt(r.limits)),r.bodyLoggingOptOut,r.createdAt,r.revokedAt,r.expiresAt,r.guardrailPolicy,r.smartRouting])},async setLimits(r,o){await e.unsafe("UPDATE api_keys SET limits = $1 WHERE id = $2",[JSON.stringify(tt(o)),r])},async setModelAllowlist(r,o){await e.unsafe("UPDATE api_keys SET model_allowlist = $1 WHERE id = $2",[o===null?null:JSON.stringify(o),r])},async setExpiry(r,o){await e.unsafe("UPDATE api_keys SET expires_at = $1 WHERE id = $2",[o,r])},async setGuardrailPolicy(r,o){await e.unsafe("UPDATE api_keys SET guardrail_policy = $1 WHERE id = $2",[o,r])},async setSmartRouting(r,o){await e.unsafe("UPDATE api_keys SET smart_routing = $1 WHERE id = $2",[o,r])},async revoke(r){await e.unsafe("UPDATE api_keys SET revoked_at = $1 WHERE id = $2",[Date.now(),r])}}}var ku=()=>{throw new b("BAD_REQUEST","not available on a Postgres store; use pg_dump",{gatewayAuthored:!0})};function Ty(e,t){return{async heartbeat(n){await e.unsafe("INSERT INTO nodes (id, seen_at) VALUES ($1, $2) ON CONFLICT (id) DO UPDATE SET seen_at = EXCLUDED.seen_at",[t,n]),await e.unsafe("DELETE FROM nodes WHERE seen_at < $1",[n-86400000])},async nodes(n){return(await e.unsafe("SELECT id, seen_at FROM nodes WHERE seen_at > $1 ORDER BY seen_at DESC",[n-qt])).map((o)=>({id:o.id,seenAt:I(o.seen_at)}))},async stats(){let n=(await e.unsafe(`SELECT pg_database_size(current_database()) AS bytes,
|
|
677
688
|
current_setting('block_size')::int AS block_size,
|
|
678
|
-
(SELECT MAX(id) FROM migrations) AS version`))[0],r=n?.block_size??0;return{pageSize:r,pageCount:n===void 0||r===0?0:Math.ceil(
|
|
689
|
+
(SELECT MAX(id) FROM migrations) AS version`))[0],r=n?.block_size??0;return{pageSize:r,pageCount:n===void 0||r===0?0:Math.ceil(I(n.bytes)/r),freelistCount:0,schemaVersion:n?.version??0}},async tables(){return(await e.unsafe(`SELECT c.relname AS name,
|
|
679
690
|
pg_total_relation_size(c.oid) AS bytes,
|
|
680
691
|
GREATEST(c.reltuples, 0)::bigint AS rows,
|
|
681
692
|
COALESCE(s.n_dead_tup, 0) AS dead_rows
|
|
@@ -683,12 +694,12 @@ ALTER TABLE api_keys ADD COLUMN guardrail_policy TEXT;
|
|
|
683
694
|
JOIN pg_namespace n ON n.oid = c.relnamespace
|
|
684
695
|
LEFT JOIN pg_stat_user_tables s ON s.relid = c.oid
|
|
685
696
|
WHERE c.relkind = 'r' AND n.nspname = current_schema()
|
|
686
|
-
ORDER BY bytes DESC, name`)).map((r)=>({name:r.name,bytes:
|
|
687
|
-
`)n+=1;t+=" "}else if(r==="/"&&o==="*"){n+=2;while(n<e.length&&!(e[n]==="*"&&e[n+1]==="/"))n+=1;n+=2,t+=" "}else t+=r,n+=1}return t}function
|
|
697
|
+
ORDER BY bytes DESC, name`)).map((r)=>({name:r.name,bytes:I(r.bytes),rows:I(r.rows),deadRows:I(r.dead_rows)}))},vacuum:async()=>ku(),snapshotTo:async()=>ku(),inspect:async()=>ku()}}import{AsyncLocalStorage as Qx}from"async_hooks";var Tr=/^[a-z][a-z0-9-]{0,31}$/,Ry=/^[a-z][a-z0-9_]{0,31}$/,Wx=/\{\{([^{}]*)\}\}/g,Sy=["api_keys","credential_health","credentials","migrations","nodes","plugin_migrations","quota_samples","quota_windows","request_bodies","request_logs","settings","usage_daily","usage_rollup","virtual_models"],jx=["config_version"],Kx=new RegExp(`\\b(?:${[...Sy,...jx].join("|")})\\b`,"i"),ci="plugin_";function Gx(e){let t="",n=0;while(n<e.length){let r=e[n],o=e[n+1];if(r==='"'||r==="`"||r==="["){let i=r==="["?"]":r;t+=r,n+=1;while(n<e.length){if(e[n]===i){if(i!=="]"&&e[n+1]===i){t+=i+i,n+=2;continue}break}t+=e[n],n+=1}t+=i,n+=1}else if(r==="'"){n+=1;while(n<e.length)if(e[n]==="'")if(e[n+1]==="'")n+=2;else break;else n+=1;n+=1,t+=" "}else if(r==="-"&&o==="-"){while(n<e.length&&e[n]!==`
|
|
698
|
+
`)n+=1;t+=" "}else if(r==="/"&&o==="*"){n+=2;while(n<e.length&&!(e[n]==="*"&&e[n+1]==="/"))n+=1;n+=2,t+=" "}else t+=r,n+=1}return t}function Zx(e,t){return`"plugin_${e}_${t}"`}function un(e){return`plugin_${e}_`}function rt(e){if(!Tr.test(e))throw Error(`plugin id ${JSON.stringify(e)} is not a valid identifier`)}var Xx=/^\s*(pragma|attach|detach|vacuum|set|reset)\b/i;function li(e,t){rt(e);let n=t.replace(Wx,(s,a)=>{if(!Ry.test(a))throw Error(`plugin table placeholder ${JSON.stringify(a)} must match ${Ry.source}`);return Zx(e,a)}),r=Gx(n),o=Xx.exec(r);if(o!==null)throw Error(`plugin sql may not ${o[1]?.toUpperCase()}: the database handle is the gateway's, and this would reconfigure it for everything sharing it`);let i=Kx.exec(r);if(i!==null)throw Error(`plugin sql may not reference the core table ${i[0]}`);return n}function Vx(e,t){if(e===null||typeof e==="string"||typeof e==="number"||typeof e==="bigint"||typeof e==="boolean"||e instanceof Uint8Array)return e;throw Error(`plugin sql parameter ${t} is not a bindable value`)}var Ht=(e)=>(e??[]).map(Vx);var di=li;async function xy(e){let t=await e.unsafe(`SELECT c.relname FROM pg_class c
|
|
688
699
|
JOIN pg_namespace n ON n.oid = c.relnamespace
|
|
689
|
-
WHERE n.nspname = current_schema()`);return new Set(t.map((n)=>n.relname))}async function
|
|
700
|
+
WHERE n.nspname = current_schema()`);return new Set(t.map((n)=>n.relname))}async function Yx(e,t,n){let r=un(t);for(let o of await xy(e)){if(n.has(o)||o.startsWith(r))continue;throw Error(`plugin migration created ${o}, which is outside this plugin's namespace \u2014 `+`name it {{\u2026}} so it becomes ${r}\u2026`)}}function Ay(e){let t=new Qx,n=()=>t.getStore()??e,r=async()=>(await e.unsafe(`SELECT table_name FROM information_schema.tables
|
|
690
701
|
WHERE table_schema = current_schema() AND table_type = 'BASE TABLE'
|
|
691
|
-
ORDER BY table_name COLLATE "C"`)).map((i)=>i.table_name).filter((i)=>i.startsWith(
|
|
702
|
+
ORDER BY table_name COLLATE "C"`)).map((i)=>i.table_name).filter((i)=>i.startsWith(ci)&&i!=="plugin_migrations"),o=async(i)=>{let s=un(i);return(await r()).filter((a)=>a.startsWith(s))};return{async migrate(i,s){rt(i);let a=[],u=[...s].sort((l,c)=>l.version-c.version);for(let l of u)try{if(!Number.isSafeInteger(l.version)||l.version<1)throw Error("migration version must be a positive integer");let c=di(i,l.sql);if(await e.begin(async(d)=>{if(await d.unsafe(`SELECT pg_advisory_xact_lock(${ni})`),(await d.unsafe("SELECT 1 FROM plugin_migrations WHERE plugin_id = $1 AND version = $2",[i,l.version])).length>0)return!1;let g=await xy(d);return await d.unsafe(c),await Yx(d,i,g),await d.unsafe("INSERT INTO plugin_migrations (plugin_id, version, applied_at) VALUES ($1,$2,$3)",[i,l.version,Date.now()]),!0}))a.push(l.version)}catch(c){return{applied:a,failed:{version:l.version,reason:W(c,String(c))}}}return{applied:a}},async run(i,s,a){await n().unsafe(di(i,s),Ht(a))},async all(i,s,a){return[...await n().unsafe(di(i,s),Ht(a))]},async get(i,s,a){return(await n().unsafe(di(i,s),Ht(a)))[0]??null},async transaction(i,s){return rt(i),e.begin((a)=>t.run(a,s))},async listTables(i){return rt(i),o(i)},async dropAll(i){rt(i);let s=await o(i);return await e.begin(async(a)=>{for(let u of s)await a.unsafe(`DROP TABLE IF EXISTS "${u}"`);await a.unsafe("DELETE FROM plugin_migrations WHERE plugin_id = $1",[i])}),s.length},async orphanTables(i){let s=i.filter((a)=>Tr.test(a)).map(un);return(await r()).filter((a)=>!s.some((u)=>a.startsWith(u)))}}}var Jx=["git-diff","git-status","git-log","grep","path-list","numbered-read","build-output","test-output","deduplicate-log","smart-truncate","lint-output","package-output","tree-output","git-operation","docker-build"],eA=new Set(Jx);function pi(e){return eA.has(e)}function mi(e,t,n="LIKE"){let r=[],o=[],i=(u)=>(o.push(u),t(o.length)),s=(u,l)=>{if(l===void 0)return;let c=l.replace(/[\\%_]/g,"\\$&");r.push(`${u} ${n} ${i(`%${c}%`)} ESCAPE '\\'`)},a=(u,l)=>{if(l!==void 0)r.push(`${u} = ${i(l)}`)};if(e.cursor!==null){let u=e.cursor;r.push(`(at < ${i(u.at)} OR (at = ${i(u.at)} AND id < ${i(u.id)}))`)}if(a("api_key_id",e.apiKeyId),a("credential_id",e.credentialId),a("resolved_provider",e.provider),a("state",e.state),s("requested_model",e.requestedModel),s("resolved_model",e.resolvedModel),s("error_code",e.errorCode),e.model!==void 0){let u=r.length;s("requested_model",e.model),s("resolved_model",e.model),r.push(`(${r.splice(u).join(" OR ")})`)}if(e.since!==void 0)r.push(`at >= ${i(e.since)}`);if(e.until!==void 0)r.push(`at <= ${i(e.until)}`);if(e.failed===!0)r.push("state = 'done' AND status >= 400");return{where:r.length===0?"":`WHERE ${r.join(" AND ")}`,bindings:o}}function fi(e,t){if(e.length<=t)return{logs:e,next:null};let n=e.slice(0,t),r=n[n.length-1];return{logs:n,next:r===void 0?null:{at:r.at,id:r.id}}}var tA=`
|
|
692
703
|
INSERT INTO usage_daily
|
|
693
704
|
(day, provider, credential_id, requested_model, resolved_model, api_key_id,
|
|
694
705
|
requests, errors, input_tokens, output_tokens, cache_read_tokens,
|
|
@@ -705,7 +716,7 @@ ALTER TABLE api_keys ADD COLUMN guardrail_policy TEXT;
|
|
|
705
716
|
rtk_saved_tokens = usage_daily.rtk_saved_tokens + EXCLUDED.rtk_saved_tokens,
|
|
706
717
|
rtk_applied_requests = usage_daily.rtk_applied_requests + EXCLUDED.rtk_applied_requests,
|
|
707
718
|
cost_usd = usage_daily.cost_usd + EXCLUDED.cost_usd,
|
|
708
|
-
duration_ms_sum = usage_daily.duration_ms_sum + EXCLUDED.duration_ms_sum`;async function
|
|
719
|
+
duration_ms_sum = usage_daily.duration_ms_sum + EXCLUDED.duration_ms_sum`;async function Oy(e,t,n){await e.unsafe(tA,[ht(t.at,n),t.resolvedProvider??"",t.credentialId??"",t.requestedModel,t.resolvedModel??"",t.apiKeyId??"",1,t.status>=400?1:0,t.inputTokens,t.outputTokens,t.cacheReadTokens,t.cacheWriteTokens,t.rtkEstimatedTokensSaved,t.rtkApplied?1:0,t.costUsd,t.durationMs])}var nA=`
|
|
709
720
|
INSERT INTO usage_rollup
|
|
710
721
|
(api_key_id, hour, requests, input_tokens, output_tokens,
|
|
711
722
|
cache_read_tokens, cache_write_tokens, cost_usd)
|
|
@@ -717,7 +728,7 @@ ALTER TABLE api_keys ADD COLUMN guardrail_policy TEXT;
|
|
|
717
728
|
output_tokens = usage_rollup.output_tokens + EXCLUDED.output_tokens,
|
|
718
729
|
cache_read_tokens = usage_rollup.cache_read_tokens + EXCLUDED.cache_read_tokens,
|
|
719
730
|
cache_write_tokens = usage_rollup.cache_write_tokens + EXCLUDED.cache_write_tokens,
|
|
720
|
-
cost_usd = usage_rollup.cost_usd + EXCLUDED.cost_usd`;async function
|
|
731
|
+
cost_usd = usage_rollup.cost_usd + EXCLUDED.cost_usd`;async function Cy(e,t){let n=t.apiKeyId;if(n===null)return;await e.unsafe(nA,[n,Fe(t.at),1,t.inputTokens,t.outputTokens,t.cacheReadTokens,t.cacheWriteTokens,t.costUsd])}var rA=`
|
|
721
732
|
INSERT INTO usage_rollup
|
|
722
733
|
(api_key_id, hour, requests, input_tokens, output_tokens,
|
|
723
734
|
cache_read_tokens, cache_write_tokens, cost_usd)
|
|
@@ -731,7 +742,7 @@ ALTER TABLE api_keys ADD COLUMN guardrail_policy TEXT;
|
|
|
731
742
|
COALESCE(SUM(cost_usd), 0)
|
|
732
743
|
FROM request_logs
|
|
733
744
|
WHERE state = 'done' AND api_key_id IS NOT NULL
|
|
734
|
-
GROUP BY api_key_id, at / 3600000`;async function
|
|
745
|
+
GROUP BY api_key_id, at / 3600000`;async function Py(e){await e.unsafe("DELETE FROM usage_rollup"),await e.unsafe(rA)}async function Iy(e){let t=(await e.unsafe(`WITH truth AS (
|
|
735
746
|
SELECT api_key_id AS k,
|
|
736
747
|
at / 3600000 AS h,
|
|
737
748
|
COUNT(*) AS requests,
|
|
@@ -760,15 +771,15 @@ ALTER TABLE api_keys ADD COLUMN guardrail_policy TEXT;
|
|
|
760
771
|
FROM usage_rollup r
|
|
761
772
|
LEFT JOIN truth ON r.api_key_id = truth.k AND r.hour = truth.h
|
|
762
773
|
WHERE truth.k IS NULL
|
|
763
|
-
) AS orphans`))[0],n=t===void 0?0:
|
|
774
|
+
) AS orphans`))[0],n=t===void 0?0:I(t.buckets),r=t===void 0?0:I(t.mismatched)+I(t.orphans);return{buckets:n,mismatched:r,ok:r===0}}function oA(e){try{let t=JSON.parse(e);return Array.isArray(t)?t.filter(pi):[]}catch{return[]}}var Rr=(e)=>({id:e.id,state:e.state==="pending"?"pending":"done",at:I(e.at),apiKeyId:e.api_key_id,requestedModel:e.requested_model,resolvedProvider:e.resolved_provider,resolvedModel:e.resolved_model,credentialId:e.credential_id,attempts:e.attempts,status:e.status,errorCode:e.error_code,inputTokens:I(e.input_tokens),outputTokens:I(e.output_tokens),cacheReadTokens:I(e.cache_read_tokens),cacheWriteTokens:I(e.cache_write_tokens),ttftMs:ae(e.ttft_ms),durationMs:I(e.duration_ms),costUsd:e.cost_usd,degradations:JSON.parse(e.degradations),rtkApplied:e.rtk_applied,rtkFilterHits:I(e.rtk_filter_hits),rtkOriginalCodeUnits:I(e.rtk_original_code_units),rtkCompressedCodeUnits:I(e.rtk_compressed_code_units),rtkEstimatedTokensSaved:I(e.rtk_estimated_tokens_saved),rtkFilters:oA(e.rtk_filters)}),iA={raw:{credential:"credential_id",model:"resolved_model",requestedModel:"requested_model",apiKey:"api_key_id",provider:"resolved_provider",hour:"at / 3600000",day:null},daily:{credential:"credential_id",model:"resolved_model",requestedModel:"requested_model",apiKey:"api_key_id",provider:"provider",hour:null,day:"day"}};function Ly(e,t){let n=iA[e][t];if(n===null)throw Error(`usage grain ${e} cannot group by ${t}`);return n}var sA={raw:`COUNT(*) AS requests,
|
|
764
775
|
COALESCE(SUM(CASE WHEN status >= 400 THEN 1 ELSE 0 END), 0) AS errors,
|
|
765
776
|
COALESCE(SUM(duration_ms), 0) AS duration_ms_sum`,daily:`COALESCE(SUM(requests), 0) AS requests,
|
|
766
777
|
COALESCE(SUM(errors), 0) AS errors,
|
|
767
|
-
COALESCE(SUM(duration_ms_sum), 0) AS duration_ms_sum`};function
|
|
778
|
+
COALESCE(SUM(duration_ms_sum), 0) AS duration_ms_sum`};function Ny(e){if(e===null)return"unknown";let t=String(e);return t.length===0?"unknown":t}var My=`(id, state, node_id, at, api_key_id, requested_model, resolved_provider,
|
|
768
779
|
resolved_model, credential_id, attempts, status, error_code, input_tokens,
|
|
769
780
|
output_tokens, cache_read_tokens, cache_write_tokens, ttft_ms, duration_ms,
|
|
770
781
|
cost_usd, degradations, rtk_applied, rtk_filter_hits, rtk_original_code_units,
|
|
771
|
-
rtk_compressed_code_units, rtk_estimated_tokens_saved, rtk_filters)`,
|
|
782
|
+
rtk_compressed_code_units, rtk_estimated_tokens_saved, rtk_filters)`,Uy=`(${Array.from({length:26},(e,t)=>`$${t+1}`).join(",")})`;function Dy(e,t,n){return[e.id,t,n,e.at,e.apiKeyId,e.requestedModel,e.resolvedProvider,e.resolvedModel,e.credentialId,e.attempts,e.status,e.errorCode,e.inputTokens,e.outputTokens,e.cacheReadTokens,e.cacheWriteTokens,e.ttftMs,e.durationMs,e.costUsd,JSON.stringify(e.degradations),e.rtkApplied===!0,e.rtkFilterHits??0,e.rtkOriginalCodeUnits??0,e.rtkCompressedCodeUnits??0,e.rtkEstimatedTokensSaved??0,JSON.stringify(e.rtkFilters??[])]}var aA=`INSERT INTO request_logs ${My} VALUES ${Uy}
|
|
772
783
|
ON CONFLICT (id) DO UPDATE SET
|
|
773
784
|
state = 'done',
|
|
774
785
|
requested_model = COALESCE(NULLIF(EXCLUDED.requested_model, ''), request_logs.requested_model),
|
|
@@ -793,7 +804,7 @@ ALTER TABLE api_keys ADD COLUMN guardrail_policy TEXT;
|
|
|
793
804
|
rtk_compressed_code_units = EXCLUDED.rtk_compressed_code_units,
|
|
794
805
|
rtk_estimated_tokens_saved = EXCLUDED.rtk_estimated_tokens_saved,
|
|
795
806
|
rtk_filters = EXCLUDED.rtk_filters
|
|
796
|
-
WHERE request_logs.state = 'pending'`,
|
|
807
|
+
WHERE request_logs.state = 'pending'`,Sr=(e)=>({requests:e===void 0?0:I(e.requests),tokens:e===void 0?0:I(e.tokens),costUsd:e===void 0?0:e.cost_usd}),Eu={sumSince:`SELECT COUNT(*) AS requests,
|
|
797
808
|
COALESCE(SUM(input_tokens + output_tokens
|
|
798
809
|
+ cache_read_tokens + cache_write_tokens), 0) AS tokens,
|
|
799
810
|
COALESCE(SUM(cost_usd), 0) AS cost_usd
|
|
@@ -806,39 +817,39 @@ ALTER TABLE api_keys ADD COLUMN guardrail_policy TEXT;
|
|
|
806
817
|
WHERE api_key_id = $3 AND requested_model = $4 AND state = 'done' AND at >= $5
|
|
807
818
|
GROUP BY 1`,oldestSince:`SELECT MIN(at) AS at
|
|
808
819
|
FROM request_logs
|
|
809
|
-
WHERE api_key_id = $1 AND requested_model = $2 AND state = 'done' AND at >= $3`};function
|
|
820
|
+
WHERE api_key_id = $1 AND requested_model = $2 AND state = 'done' AND at >= $3`};function $y(e,t,n){let r=async(o,i)=>{if((await o.unsafe(aA,Dy(i,"done",t))).count===0)return;let a=(await o.unsafe("SELECT * FROM request_logs WHERE id = $1",[i.id]))[0];if(a!==void 0){let u=Rr(a);await Oy(o,u,n),await Cy(o,u)}};return{async begin(o){await e.unsafe(`INSERT INTO request_logs ${My} VALUES ${Uy}`,Dy(o,"pending",t))},async route(o,i){await e.unsafe(`UPDATE request_logs
|
|
810
821
|
SET resolved_provider = $1, resolved_model = $2, credential_id = $3
|
|
811
822
|
WHERE id = $4 AND state = 'pending'`,[i.provider,i.model,i.credentialId,o])},async append(o){await e.begin((i)=>r(i,o))},async sweepPending(o){let i=(await e.unsafe(`SELECT * FROM request_logs
|
|
812
823
|
WHERE state = 'pending'
|
|
813
|
-
AND (node_id = $1 OR node_id NOT IN (SELECT id FROM nodes WHERE seen_at > $2))`,[t,o-
|
|
814
|
-
ORDER BY at DESC, id DESC LIMIT $${s.length+1}`,[...s,o.limit+1])).map(
|
|
824
|
+
AND (node_id = $1 OR node_id NOT IN (SELECT id FROM nodes WHERE seen_at > $2))`,[t,o-qt])).map(Rr);for(let s of i)await e.begin((a)=>r(a,{...s,status:499,errorCode:"interrupted",durationMs:0}));return i.length},async recent(o,i){return(i===void 0?await e.unsafe("SELECT * FROM request_logs ORDER BY at DESC LIMIT $1",[o]):await e.unsafe("SELECT * FROM request_logs WHERE api_key_id = $1 ORDER BY at DESC LIMIT $2",[i,o])).map(Rr)},async page(o){let{where:i,bindings:s}=mi(o,(u)=>`$${u}`,"ILIKE"),a=(await e.unsafe(`SELECT * FROM request_logs ${i}
|
|
825
|
+
ORDER BY at DESC, id DESC LIMIT $${s.length+1}`,[...s,o.limit+1])).map(Rr);return fi(a,o.limit)},async lastUsedByCredential(o){let i=await e.unsafe("SELECT MAX(at) AS at FROM request_logs WHERE credential_id = $1",[o]);return ae(i[0]?.at??null)},async scan(o,i){return(o===null?await e.unsafe("SELECT * FROM request_logs ORDER BY at, id LIMIT $1",[i]):await e.unsafe(`SELECT * FROM request_logs
|
|
815
826
|
WHERE at > $1 OR (at = $1 AND id > $2)
|
|
816
|
-
ORDER BY at, id LIMIT $3`,[o.at,o.id,i])).map(
|
|
827
|
+
ORDER BY at, id LIMIT $3`,[o.at,o.id,i])).map(Rr)},async sumSince(o,i,s){if(s!==void 0){let d=await e.unsafe(Eu.sumSince,[o,s,i]);return Sr(d[0])}let a=Fe(i),u=await e.unsafe(`SELECT COALESCE(SUM(requests), 0) AS requests,
|
|
817
828
|
COALESCE(SUM(input_tokens + output_tokens
|
|
818
829
|
+ cache_read_tokens + cache_write_tokens), 0) AS tokens,
|
|
819
830
|
COALESCE(SUM(cost_usd), 0) AS cost_usd
|
|
820
831
|
FROM usage_rollup
|
|
821
|
-
WHERE api_key_id = $1 AND hour > $2`,[o,a]),
|
|
832
|
+
WHERE api_key_id = $1 AND hour > $2`,[o,a]),l=await e.unsafe(`SELECT COUNT(*) AS requests,
|
|
822
833
|
COALESCE(SUM(input_tokens + output_tokens
|
|
823
834
|
+ cache_read_tokens + cache_write_tokens), 0) AS tokens,
|
|
824
835
|
COALESCE(SUM(cost_usd), 0) AS cost_usd
|
|
825
836
|
FROM request_logs
|
|
826
|
-
WHERE api_key_id = $1 AND state = 'done' AND at >= $2 AND at < $3`,[o,i,(a+1)*
|
|
837
|
+
WHERE api_key_id = $1 AND state = 'done' AND at >= $2 AND at < $3`,[o,i,(a+1)*Re]),c=Sr(u[0]),p=Sr(l[0]);return{requests:c.requests+p.requests,tokens:c.tokens+p.tokens,costUsd:c.costUsd+p.costUsd}},async sumBuckets(o,i,s,a){if(a!==void 0){let l=s===Re?Fe(i)*Re:i;return(await e.unsafe(Eu.sumBuckets,[s,s,o,a,l])).map((p)=>[I(p.bucket),Sr(p)])}return(s===Re?await e.unsafe(`SELECT hour * ${Re} AS bucket, requests,
|
|
827
838
|
input_tokens + output_tokens + cache_read_tokens + cache_write_tokens
|
|
828
839
|
AS tokens,
|
|
829
840
|
cost_usd
|
|
830
841
|
FROM usage_rollup
|
|
831
|
-
WHERE api_key_id = $1 AND hour >= $2`,[o
|
|
842
|
+
WHERE api_key_id = $1 AND hour >= $2`,[o,Fe(i)]):await e.unsafe(`SELECT (at / $1) * $2 AS bucket, COUNT(*) AS requests,
|
|
832
843
|
COALESCE(SUM(input_tokens + output_tokens
|
|
833
844
|
+ cache_read_tokens + cache_write_tokens), 0) AS tokens,
|
|
834
845
|
COALESCE(SUM(cost_usd), 0) AS cost_usd
|
|
835
846
|
FROM request_logs
|
|
836
847
|
WHERE api_key_id = $3 AND state = 'done' AND at >= $4
|
|
837
|
-
GROUP BY 1`,[s,s,o,i])).map((
|
|
848
|
+
GROUP BY 1`,[s,s,o,i])).map((l)=>[I(l.bucket),Sr(l)])},async rebuildRollup(){await e.begin((o)=>Py(o))},async auditRollup(){return Iy(e)},async oldestSince(o,i,s){let a=(s===void 0?await e.unsafe(`SELECT MIN(at) AS at
|
|
838
849
|
FROM request_logs
|
|
839
|
-
WHERE api_key_id = $1 AND state = 'done' AND at >= $2`,[o,i]):await e.unsafe(
|
|
850
|
+
WHERE api_key_id = $1 AND state = 'done' AND at >= $2`,[o,i]):await e.unsafe(Eu.oldestSince,[o,s,i]))[0];return a===void 0?null:ae(a.at)},async aggregate(o){let i=o.grain??"raw",s=i==="daily",a=Ly(i,o.groupBy),u=o.splitBy===void 0?null:Ly(i,o.splitBy),l=s?ht(o.since,n):o.since,c=o.until??Number.MAX_SAFE_INTEGER,p=s?"day":"at",d=[l,c],m="";if(o.apiKeyId!==void 0)d.push(o.apiKeyId),m+=` AND api_key_id = $${d.length}`;if(o.credentialId!==void 0)d.push(o.credentialId),m+=` AND credential_id = $${d.length}`;return(await e.unsafe(`SELECT ${a} AS key,
|
|
840
851
|
${u??"NULL"} AS split,
|
|
841
|
-
${
|
|
852
|
+
${sA[i]},
|
|
842
853
|
COALESCE(SUM(input_tokens), 0) AS input_tokens,
|
|
843
854
|
COALESCE(SUM(output_tokens), 0) AS output_tokens,
|
|
844
855
|
COALESCE(SUM(cache_read_tokens), 0) AS cache_read_tokens,
|
|
@@ -849,7 +860,7 @@ ALTER TABLE api_keys ADD COLUMN guardrail_policy TEXT;
|
|
|
849
860
|
FROM ${s?"usage_daily":"request_logs"}
|
|
850
861
|
WHERE ${s?"":"state = 'done' AND "}${p} >= $1 AND ${p} <= $2${m}
|
|
851
862
|
GROUP BY 1${u===null?"":", 2"}
|
|
852
|
-
ORDER BY requests DESC`,
|
|
863
|
+
ORDER BY requests DESC`,d)).map((h)=>{let f={key:Ny(h.key),requests:I(h.requests),inputTokens:I(h.input_tokens),outputTokens:I(h.output_tokens),cacheReadTokens:I(h.cache_read_tokens),cacheWriteTokens:I(h.cache_write_tokens),rtkSavedTokens:I(h.rtk_saved_tokens),rtkAppliedRequests:I(h.rtk_applied_requests),costUsd:h.cost_usd,errors:I(h.errors),durationMsSum:I(h.duration_ms_sum)};return u===null?f:{...f,split:Ny(h.split)}})},async prune(o){return e.begin(async(i)=>{let s=(await i.unsafe("DELETE FROM request_logs WHERE at < $1",[o])).count,a=Fe(o);return await i.unsafe("DELETE FROM usage_rollup WHERE hour <= $1",[a]),await i.unsafe(`INSERT INTO usage_rollup
|
|
853
864
|
(api_key_id, hour, requests, input_tokens, output_tokens,
|
|
854
865
|
cache_read_tokens, cache_write_tokens, cost_usd)
|
|
855
866
|
SELECT api_key_id, $1::bigint, COUNT(*),
|
|
@@ -860,7 +871,7 @@ ALTER TABLE api_keys ADD COLUMN guardrail_policy TEXT;
|
|
|
860
871
|
COALESCE(SUM(cost_usd), 0)
|
|
861
872
|
FROM request_logs
|
|
862
873
|
WHERE state = 'done' AND api_key_id IS NOT NULL AND at >= $2 AND at < $3
|
|
863
|
-
GROUP BY api_key_id`,[a,a*
|
|
874
|
+
GROUP BY api_key_id`,[a,a*Re,(a+1)*Re]),s})},async pruneDaily(o){return(await e.unsafe("DELETE FROM usage_daily WHERE day < $1",[o])).count}}}function Fy(e){try{let t=new URL(e);if(t.password!=="")t.password="***";return t.toString()}catch{return"postgres://<unparseable>"}}async function gi(e){let t=e.logger??se,n=e.nodeId??crypto.randomUUID(),r=e.dayOffsetMinutes??nt(),o=new Set,i=(p)=>{for(let d of o)try{d(p)}catch{}},s=await dy(e.url);t.debug("store opened",{path:Fy(e.url)});let a=await l(),u=null;async function l(){let p=await s.unsafe("SELECT version FROM config_version WHERE id = 1");return I(p[0]?.version??0)}let c=()=>{if(u!==null)return;u=l().then((p)=>{a=p}).catch(()=>{}).finally(()=>{u=null})};return{engine:"postgres",databasePath:Fy(e.url),credentials:ky(s,e.encryptionKey,i),config:wy(s,i),keys:vy(s,t),usage:$y(s,n,r),bodies:py(s,e.encryptionKey),maintenance:Ty(s,n),plugins:Ay(s),routing:{version:()=>(c(),a),subscribe(p){return o.add(p),()=>o.delete(p)}},async reopen(){},close:()=>{s.close()}}}function uA(e){return e==="ready"||e==="missing"||e==="corrupt"?e:"none"}var vu=(e)=>({requestId:e.request_id,at:e.at,relPath:e.rel_path,sizeBytes:e.size_bytes,sha256:e.sha256,detailState:uA(e.detail_state),truncated:e.truncated===1});function Tu(e,t,n){let r=async(i)=>{for(let a of i)if(a.relPath!==null)await au(n,a.relPath);let s=e.prepare("DELETE FROM request_bodies WHERE request_id = ?");return e.transaction(()=>{for(let a of i)s.run(a.requestId)})(),i.length},o=(i,s)=>{e.run("UPDATE request_bodies SET detail_state = ? WHERE request_id = ?",[s,i])};return{async put(i){if(!Ko(i.requestId))throw Error("request id is not safe to use as an artifact path segment");let s=Zo(i),a=await Vo(t,s.json),u=Go(i.requestId,i.at);await qh(n,u,a.bytes);let l=s.artifact.client.truncated||s.artifact.attempts.some((p)=>p.truncated),c={requestId:i.requestId,at:i.at,relPath:u,sizeBytes:a.bytes.length,sha256:a.sha256,detailState:"ready",truncated:l};return e.run(`INSERT INTO request_bodies (request_id, at, rel_path, size_bytes, sha256, detail_state, truncated)
|
|
864
875
|
VALUES (?,?,?,?,?,?,?)
|
|
865
876
|
ON CONFLICT (request_id) DO UPDATE SET
|
|
866
877
|
at = excluded.at,
|
|
@@ -868,11 +879,11 @@ ALTER TABLE api_keys ADD COLUMN guardrail_policy TEXT;
|
|
|
868
879
|
size_bytes = excluded.size_bytes,
|
|
869
880
|
sha256 = excluded.sha256,
|
|
870
881
|
detail_state = excluded.detail_state,
|
|
871
|
-
truncated = excluded.truncated`,[
|
|
882
|
+
truncated = excluded.truncated`,[c.requestId,c.at,c.relPath,c.sizeBytes,c.sha256,c.detailState,c.truncated?1:0]),c},async get(i){let s=e.query("SELECT * FROM request_bodies WHERE request_id = ?").get(i);if(s===null)return null;let a=vu(s);if(a.relPath===null||a.detailState==="none")return{row:a,artifact:null};let u=await zh(t,n,a.relPath,a.sha256);if(u.ok){if(a.detailState!=="ready")o(i,"ready");return{row:{...a,detailState:"ready"},artifact:u.artifact}}return o(i,u.failure),{row:{...a,detailState:u.failure},artifact:null}},async prune(i){let s=e.query("SELECT * FROM request_bodies WHERE at < ?").all(i).map(vu);return r(s)},async pruneToCap(i=br){let s=e.query("SELECT COUNT(*) AS n FROM request_bodies").get()?.n??0;if(s<=i)return 0;let a=e.query("SELECT * FROM request_bodies ORDER BY at ASC, request_id ASC LIMIT ?").all(s-i).map(vu);return r(a)},async sweepOrphans(){let i=new Set(e.query("SELECT rel_path FROM request_bodies WHERE rel_path IS NOT NULL").all().map((u)=>u.rel_path)),s=e.query("SELECT COUNT(*) AS n FROM request_bodies WHERE rel_path = ?"),a=0;for(let u of await Hh(n)){if(i.has(u))continue;if((s.get(u)?.n??0)>0)continue;await au(n,u),a+=1}return a}}}var By="settings",Ru="adminPasswordHash",Su="viewerPasswordHash";function cA(e){let t=me.weights,n=(r)=>{let o=e?.[r];return typeof o==="number"&&Number.isFinite(o)?o:t[r]};return{tier:n("tier"),health:n("health"),quota:n("quota"),load:n("load"),cost:n("cost"),latency:n("latency")}}function xu(e,t=()=>{}){let n=(o)=>e.query("SELECT value FROM settings WHERE key = ?").get(o)?.value??null,r=(o,i)=>{e.run("INSERT INTO settings (key, value) VALUES (?, ?) ON CONFLICT (key) DO UPDATE SET value = excluded.value",[o,i])};return{async listModels(){return e.query("SELECT * FROM virtual_models ORDER BY id").all().map((o)=>({id:o.id,targets:JSON.parse(o.targets),strategy:o.strategy,isAlias:o.is_alias===1}))},async putModel(o){e.run(`INSERT INTO virtual_models (id, targets, strategy, is_alias) VALUES (?,?,?,?)
|
|
872
883
|
ON CONFLICT (id) DO UPDATE SET
|
|
873
884
|
targets = excluded.targets,
|
|
874
885
|
strategy = excluded.strategy,
|
|
875
|
-
is_alias = excluded.is_alias`,[o.id,JSON.stringify(o.targets),o.strategy,o.isAlias?1:0]),t({type:"modelsChanged"})},async removeModel(o){e.run("DELETE FROM virtual_models WHERE id = ?",[o]),t({type:"modelsChanged"})},async getSettings(){let o=n(
|
|
886
|
+
is_alias = excluded.is_alias`,[o.id,JSON.stringify(o.targets),o.strategy,o.isAlias?1:0]),t({type:"modelsChanged"})},async removeModel(o){e.run("DELETE FROM virtual_models WHERE id = ?",[o]),t({type:"modelsChanged"})},async getSettings(){let o=n(By);if(o===null)return me;try{let i=JSON.parse(o),s=i!==null&&typeof i==="object"&&!Array.isArray(i)?i:{};return{...me,...s,rtkEnabled:s.rtkEnabled===!0,autoCacheEnabled:s.autoCacheEnabled===void 0?!0:s.autoCacheEnabled===!0,ponytailMode:ri(s.ponytailMode)?s.ponytailMode:"off",bodyRetentionDays:Number.isInteger(s.bodyRetentionDays)&&(s.bodyRetentionDays??0)>=1&&(s.bodyRetentionDays??0)<=3650?s.bodyRetentionDays:me.bodyRetentionDays,bodyLoggingEnabled:s.bodyLoggingEnabled===!0,bodyLoggingCaptureStreamChunks:s.bodyLoggingCaptureStreamChunks===!0,weights:cA(s.weights),...ai(s),...ui(s)}}catch{return me}},async putSettings(o){let i=await this.getSettings(),s={...i,...o,weights:{...i.weights,...o.weights}};return r(By,JSON.stringify(s)),t({type:"settingsChanged"}),s},async getAdminPasswordHash(){return n(Ru)},async setAdminPasswordHashIfAbsent(o){return e.run("INSERT INTO settings (key, value) VALUES (?, ?) ON CONFLICT (key) DO NOTHING",[Ru,o]).changes===1},async setAdminPasswordHash(o){r(Ru,o)},async getViewerPasswordHash(){return n(Su)},async setViewerPasswordHash(o){if(o===null){e.run("DELETE FROM settings WHERE key = ?",[Su]);return}r(Su,o)}}}function zy(e){return{credentialId:e.credential_id,model:e.model,breakerState:e.breaker_state,consecutiveFailures:e.consecutive_failures,openedAt:e.opened_at,rateLimitedUntil:e.rate_limited_until}}var lA=`INSERT INTO credential_health
|
|
876
887
|
(credential_id, model, breaker_state, consecutive_failures, opened_at,
|
|
877
888
|
rate_limited_until)
|
|
878
889
|
VALUES (?,?,?,?,?,?)
|
|
@@ -880,17 +891,17 @@ ALTER TABLE api_keys ADD COLUMN guardrail_policy TEXT;
|
|
|
880
891
|
breaker_state = excluded.breaker_state,
|
|
881
892
|
consecutive_failures = excluded.consecutive_failures,
|
|
882
893
|
opened_at = excluded.opened_at,
|
|
883
|
-
rate_limited_until = excluded.rate_limited_until`;function
|
|
894
|
+
rate_limited_until = excluded.rate_limited_until`;function Au(e,t,n=()=>{}){let r=async(d)=>d===null?null:Cn(t,d),o=async(d)=>({accessToken:await r(d.access_token),refreshToken:await r(d.refresh_token),apiKey:await r(d.api_key),idToken:await r(d.id_token)}),i=(d,m)=>{if(d===null)throw Error(`credential ${m} no longer exists`);return d},s=async(d)=>{let m=i(e.query("SELECT access_token, refresh_token, api_key, id_token FROM credentials WHERE id = ?").get(d),d);return o(m)},a=async(d,m)=>{if(m==="oauth"){let h=i(e.query("SELECT access_token FROM credentials WHERE id = ?").get(d),d);return{accessToken:await r(h.access_token),apiKey:null}}let g=i(e.query("SELECT api_key FROM credentials WHERE id = ?").get(d),d);return{accessToken:null,apiKey:await r(g.api_key)}},u=async(d)=>{let m=i(e.query("SELECT refresh_token FROM credentials WHERE id = ?").get(d),d);return{refreshToken:await r(m.refresh_token)}},l=async(d)=>{let m=i(e.query("SELECT access_token FROM credentials WHERE id = ?").get(d),d);return{accessToken:await r(m.access_token)}},c=(d,m=!1)=>({id:d.id,provider:d.provider,label:d.label,authType:d.auth_type,enabled:d.enabled===1,tier:d.tier,weight:d.weight,expiresAt:d.expires_at,accountEmail:d.account_email,providerData:JSON.parse(d.provider_data),disabledReason:d.disabled_reason,disabledAt:d.disabled_at,hasRefreshToken:d.refresh_token!==null,tokenVersion:d.token_version,createdAt:d.created_at,updatedAt:d.updated_at,secrets:()=>m?s(d.id):o(d),openForInference:async()=>{if(m)return a(d.id,d.auth_type);if(d.auth_type==="oauth")return{accessToken:await r(d.access_token),apiKey:null};return{accessToken:null,apiKey:await r(d.api_key)}},openForRefresh:async()=>m?u(d.id):{refreshToken:await r(d.refresh_token)},openForUsage:async()=>m?l(d.id):{accessToken:await r(d.access_token)}}),p=async(d)=>d===null||d===void 0?null:Ho(t,d);return{async list(){return e.query("SELECT * FROM credentials ORDER BY tier, label").all().map((d)=>c(d))},async listRouting(){return e.query(`SELECT id, provider, label, auth_type, enabled, tier, weight, expires_at,
|
|
884
895
|
account_email, provider_data, disabled_reason, disabled_at,
|
|
885
896
|
NULL AS access_token,
|
|
886
897
|
CASE WHEN refresh_token IS NULL THEN NULL ELSE 'present' END AS refresh_token,
|
|
887
898
|
NULL AS api_key, NULL AS id_token, created_at, updated_at, token_version
|
|
888
899
|
FROM credentials
|
|
889
|
-
ORDER BY tier, label`).all().map((
|
|
900
|
+
ORDER BY tier, label`).all().map((d)=>c(d,!0))},async get(d){let m=e.query("SELECT * FROM credentials WHERE id = ?").get(d);return m?c(m):null},async create(d){let m=Date.now();e.run(`INSERT INTO credentials
|
|
890
901
|
(id, provider, label, auth_type, enabled, tier, weight, expires_at, account_email,
|
|
891
902
|
provider_data, disabled_reason, disabled_at, access_token, refresh_token, api_key,
|
|
892
903
|
id_token, created_at, updated_at)
|
|
893
|
-
VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)`,[
|
|
904
|
+
VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)`,[d.id,d.provider,d.label,d.authType,d.enabled?1:0,d.tier,d.weight,d.expiresAt,d.accountEmail,JSON.stringify(d.providerData),d.disabledReason,d.disabledAt,await p(d.accessToken),await p(d.refreshToken),await p(d.apiKey),await p(d.idToken),m,m]);let{accessToken:g,refreshToken:h,apiKey:f,idToken:y,..._}=d;return n({type:"credentialsChanged"}),{..._,hasRefreshToken:h!=null,tokenVersion:0,createdAt:m,updatedAt:m}},async update(d,m){let g=[],h=[],f=(y,_)=>{g.push(`${y} = ?`),h.push(_)};if(m.label!==void 0)f("label",m.label);if(m.enabled!==void 0)f("enabled",m.enabled?1:0);if(m.tier!==void 0)f("tier",m.tier);if(m.weight!==void 0)f("weight",m.weight);if(m.expiresAt!==void 0)f("expires_at",m.expiresAt);if(m.accountEmail!==void 0)f("account_email",m.accountEmail);if(m.providerData!==void 0)f("provider_data",JSON.stringify(m.providerData));if(m.disabledReason!==void 0)f("disabled_reason",m.disabledReason);if(m.disabledAt!==void 0)f("disabled_at",m.disabledAt);if(g.length===0)return;f("updated_at",Date.now()),e.run(`UPDATE credentials SET ${g.join(", ")} WHERE id = ?`,[...h,d]),n({type:"credentialsChanged"})},async updateSecrets(d,m,g,h){let f=[],y=[];if(m.accessToken!==void 0)f.push("access_token = ?"),y.push(await p(m.accessToken));if(m.refreshToken!==void 0)f.push("refresh_token = ?"),y.push(await p(m.refreshToken));if(m.apiKey!==void 0)f.push("api_key = ?"),y.push(await p(m.apiKey));if(m.idToken!==void 0)f.push("id_token = ?"),y.push(await p(m.idToken));f.push("expires_at = ?","updated_at = ?","token_version = token_version + 1"),y.push(g,Date.now());let _=h===void 0?"WHERE id = ?":"WHERE id = ? AND token_version = ?",w=h===void 0?[...y,d]:[...y,d,h],v=e.run(`UPDATE credentials SET ${f.join(", ")} ${_}`,w).changes;if(v>0)n({type:"credentialsChanged"});return v>0},async remove(d){e.run("DELETE FROM credentials WHERE id = ?",[d]),n({type:"credentialsChanged"})},async listHealth(){return e.query("SELECT * FROM credential_health").all().map(zy)},async updateHealth(d,m,g){let h=e.prepare("SELECT * FROM credential_health WHERE credential_id = ? AND model = ?"),f=e.prepare(lA),y=e.transaction(()=>{let _=h.get(d,m),w=g(_===null?null:zy(_));return f.run(w.credentialId,w.model,w.breakerState,w.consecutiveFailures,w.openedAt,w.rateLimitedUntil),w})();return n({type:"healthSaved",rows:[y]}),y},async listQuota(){return e.query("SELECT * FROM quota_windows").all().map((d)=>({credentialId:d.credential_id,windowType:d.window_type,startsAt:d.starts_at,used:d.used,limit:d.limit_value,resetsAt:d.resets_at,observedAt:d.observed_at,windowMs:d.window_ms}))},async saveQuota(d){let m=e.prepare(`INSERT INTO quota_windows
|
|
894
905
|
(credential_id, window_type, starts_at, used, limit_value, resets_at, observed_at,
|
|
895
906
|
window_ms)
|
|
896
907
|
VALUES (?,?,?,?,?,?,?,?)
|
|
@@ -911,10 +922,10 @@ ALTER TABLE api_keys ADD COLUMN guardrail_policy TEXT;
|
|
|
911
922
|
used = excluded.used,
|
|
912
923
|
limit_value = excluded.limit_value,
|
|
913
924
|
resets_at = excluded.resets_at,
|
|
914
|
-
window_ms = excluded.window_ms`),y=new Map;for(let _ of
|
|
925
|
+
window_ms = excluded.window_ms`),y=new Map;for(let _ of d){let w=y.get(_.credentialId);if(w===void 0)y.set(_.credentialId,[_.windowType]);else w.push(_.windowType)}e.transaction(()=>{for(let _ of d){m.run(_.credentialId,_.windowType,_.startsAt,_.used,_.limit,_.resetsAt,_.observedAt,_.windowMs);let w=h.get(_.credentialId,_.windowType);if(w!==null&&w.used===_.used&&w.limit_value===_.limit&&ii(w.resets_at,_.resetsAt)&&w.window_ms===_.windowMs)continue;f.run(_.credentialId,_.windowType,_.observedAt,_.used,_.limit,_.resetsAt,_.windowMs)}for(let[_,w]of y)g.run(_,JSON.stringify(w))})(),n({type:"quotaSaved",rows:d})},async listQuotaSamples(d){let m=d.limit!==void 0,g=(y)=>`SELECT * FROM quota_samples
|
|
915
926
|
WHERE observed_at >= ? AND observed_at <= ?${y}
|
|
916
927
|
ORDER BY ${m?"observed_at DESC":"credential_id, window_type, observed_at"}
|
|
917
|
-
${
|
|
928
|
+
${d.limit===void 0?"":"LIMIT ?"}`,h=[d.since,d.until];if(d.credentialId!==void 0)h.push(d.credentialId);if(d.limit!==void 0)h.push(d.limit);let f=e.query(g(d.credentialId===void 0?"":" AND credential_id = ?")).all(...h);if(m){let y=(_,w)=>_<w?-1:_>w?1:0;f.sort((_,w)=>y(_.credential_id,w.credential_id)||y(_.window_type,w.window_type)||_.observed_at-w.observed_at)}return f.map((y)=>({credentialId:y.credential_id,windowType:y.window_type,observedAt:y.observed_at,used:y.used,limit:y.limit_value,resetsAt:y.resets_at,windowMs:y.window_ms}))},async pruneQuotaSamples(d){return e.run("DELETE FROM quota_samples WHERE observed_at < ?",[d]),e.query("SELECT changes() AS n").get()?.n??0}}}import{Database as PA}from"bun:sqlite";var qy=`CREATE TABLE credentials (
|
|
918
929
|
id TEXT PRIMARY KEY,
|
|
919
930
|
provider TEXT NOT NULL,
|
|
920
931
|
label TEXT NOT NULL,
|
|
@@ -1001,7 +1012,7 @@ CREATE TABLE settings (
|
|
|
1001
1012
|
key TEXT PRIMARY KEY,
|
|
1002
1013
|
value TEXT NOT NULL
|
|
1003
1014
|
);
|
|
1004
|
-
`;var
|
|
1015
|
+
`;var Hy=`-- Pre-aggregated request counters, one row per day and dimension tuple.
|
|
1005
1016
|
--
|
|
1006
1017
|
-- \`request_logs\` is pruned at the configured retention (30 days by default), so
|
|
1007
1018
|
-- it cannot answer "what did the last year look like". This table is written in
|
|
@@ -1033,7 +1044,7 @@ CREATE TABLE usage_daily (
|
|
|
1033
1044
|
) WITHOUT ROWID;
|
|
1034
1045
|
|
|
1035
1046
|
CREATE INDEX idx_usage_daily_day ON usage_daily (day);
|
|
1036
|
-
`;var
|
|
1047
|
+
`;var Wy=`-- Provider-reported quota, and why a credential stopped routing.
|
|
1037
1048
|
--
|
|
1038
1049
|
-- \`quota_windows\` was designed for operator-typed limits and nothing ever wrote
|
|
1039
1050
|
-- it. It now holds what the provider itself reports, so a row needs to say when
|
|
@@ -1051,7 +1062,7 @@ ALTER TABLE quota_windows ADD COLUMN observed_at INTEGER NOT NULL DEFAULT 0;
|
|
|
1051
1062
|
-- refresh token was repudiated looks exactly like one somebody switched off.
|
|
1052
1063
|
ALTER TABLE credentials ADD COLUMN disabled_reason TEXT;
|
|
1053
1064
|
ALTER TABLE credentials ADD COLUMN disabled_at INTEGER;
|
|
1054
|
-
`;var
|
|
1065
|
+
`;var jy=`-- Whether a request is still running.
|
|
1055
1066
|
--
|
|
1056
1067
|
-- A row used to be written once, after the response stream drained, so a long
|
|
1057
1068
|
-- stream was invisible for its whole life and the console showed an idle
|
|
@@ -1069,15 +1080,15 @@ ALTER TABLE request_logs ADD COLUMN state TEXT NOT NULL DEFAULT 'done';
|
|
|
1069
1080
|
-- Partial, because pending rows are a handful at any moment while the table
|
|
1070
1081
|
-- holds a month of finished ones.
|
|
1071
1082
|
CREATE INDEX idx_request_logs_pending ON request_logs(state) WHERE state = 'pending';
|
|
1072
|
-
`;var
|
|
1083
|
+
`;var Ky=`ALTER TABLE request_logs ADD COLUMN rtk_applied INTEGER NOT NULL DEFAULT 0;
|
|
1073
1084
|
ALTER TABLE request_logs ADD COLUMN rtk_filter_hits INTEGER NOT NULL DEFAULT 0;
|
|
1074
1085
|
ALTER TABLE request_logs ADD COLUMN rtk_original_code_units INTEGER NOT NULL DEFAULT 0;
|
|
1075
1086
|
ALTER TABLE request_logs ADD COLUMN rtk_compressed_code_units INTEGER NOT NULL DEFAULT 0;
|
|
1076
1087
|
ALTER TABLE request_logs ADD COLUMN rtk_estimated_tokens_saved INTEGER NOT NULL DEFAULT 0;
|
|
1077
1088
|
ALTER TABLE request_logs ADD COLUMN rtk_filters TEXT NOT NULL DEFAULT '[]';
|
|
1078
|
-
`;var
|
|
1089
|
+
`;var Gy=`ALTER TABLE usage_daily ADD COLUMN rtk_saved_tokens INTEGER NOT NULL DEFAULT 0;
|
|
1079
1090
|
ALTER TABLE usage_daily ADD COLUMN rtk_applied_requests INTEGER NOT NULL DEFAULT 0;
|
|
1080
|
-
`;var
|
|
1091
|
+
`;var Zy=`-- Retained provider quota readings, and the duration a window really runs for.
|
|
1081
1092
|
--
|
|
1082
1093
|
-- \`quota_windows\` is keyed (credential_id, window_type) and overwritten in
|
|
1083
1094
|
-- place, so every reading is lost the moment the next probe lands. That is
|
|
@@ -1119,7 +1130,7 @@ CREATE INDEX quota_samples_observed ON quota_samples (observed_at);
|
|
|
1119
1130
|
-- place it about two hours too early. Null means the provider said nothing,
|
|
1120
1131
|
-- which is the normal state for Anthropic and Kimi.
|
|
1121
1132
|
ALTER TABLE quota_windows ADD COLUMN window_ms INTEGER;
|
|
1122
|
-
`;var
|
|
1133
|
+
`;var Xy=`-- Captured request and response bodies, and the api key opt-out that suppresses
|
|
1123
1134
|
-- them.
|
|
1124
1135
|
--
|
|
1125
1136
|
-- The row holds a pointer, never a body. Bodies are the largest thing this
|
|
@@ -1179,7 +1190,7 @@ CREATE INDEX idx_request_bodies_at ON request_bodies (at DESC);
|
|
|
1179
1190
|
-- asked to trust a global switch they do not control. Default 0 keeps every
|
|
1180
1191
|
-- existing key on the installation-wide setting, which is itself off by default.
|
|
1181
1192
|
ALTER TABLE api_keys ADD COLUMN body_logging_opt_out INTEGER NOT NULL DEFAULT 0;
|
|
1182
|
-
`;var
|
|
1193
|
+
`;var Vy=`-- Per-key limits as a sparse \`(dimension, window)\` matrix, replacing the single
|
|
1183
1194
|
-- requests-per-minute integer.
|
|
1184
1195
|
--
|
|
1185
1196
|
-- One JSON column rather than a column per pair, because the matrix is sparse
|
|
@@ -1237,7 +1248,7 @@ ALTER TABLE api_keys DROP COLUMN rate_limit_per_min;
|
|
|
1237
1248
|
-- Composite order matters: \`(api_key_id, at DESC)\` lets the range scan start at
|
|
1238
1249
|
-- the key. \`(at DESC, api_key_id)\` does not.
|
|
1239
1250
|
CREATE INDEX idx_request_logs_key_at ON request_logs (api_key_id, at DESC);
|
|
1240
|
-
`;var
|
|
1251
|
+
`;var Qy=`-- Per-key hourly counters, so a long sliding window is read rather than scanned.
|
|
1241
1252
|
--
|
|
1242
1253
|
-- \`sumSince\` is on the admission path of every request, and \`bun:sqlite\` is
|
|
1243
1254
|
-- synchronous: a \`SELECT SUM\` over a week of one key's rows blocks the entire
|
|
@@ -1285,7 +1296,7 @@ CREATE TABLE usage_rollup (
|
|
|
1285
1296
|
-- it is the same \`rebuildRollup\` a restore runs. Seeding an existing install and
|
|
1286
1297
|
-- repairing a suspect one are the same statement, so they are the same code and
|
|
1287
1298
|
-- cannot drift into disagreeing about which rows count.
|
|
1288
|
-
`;var
|
|
1299
|
+
`;var Yy=`-- The plugin migration ledger, kept deliberately apart from core's \`migrations\`.
|
|
1289
1300
|
--
|
|
1290
1301
|
-- Core's track is a single ascending integer owned by this repository. A plugin
|
|
1291
1302
|
-- ships its own numbered migrations and knows nothing about ours, so the two
|
|
@@ -1315,7 +1326,7 @@ CREATE TABLE plugin_migrations (
|
|
|
1315
1326
|
applied_at INTEGER NOT NULL,
|
|
1316
1327
|
PRIMARY KEY (plugin_id, version)
|
|
1317
1328
|
);
|
|
1318
|
-
`;var
|
|
1329
|
+
`;var Jy=`-- Which process owns a pending request, and which processes are alive.
|
|
1319
1330
|
--
|
|
1320
1331
|
-- \`sweepPending\` used to retire every pending row at boot, on the premise that
|
|
1321
1332
|
-- an installation is one process. With several, a replica booting into a live
|
|
@@ -1339,7 +1350,7 @@ CREATE TABLE nodes (
|
|
|
1339
1350
|
-- provider already invalidated. The refresher passes the version it read, and a
|
|
1340
1351
|
-- write whose version has moved is refused rather than applied.
|
|
1341
1352
|
ALTER TABLE credentials ADD COLUMN token_version INTEGER NOT NULL DEFAULT 0;
|
|
1342
|
-
`;var
|
|
1353
|
+
`;var e_=`-- DEPLOY HAZARD \u2014 read before upgrading an install that is still serving.
|
|
1343
1354
|
--
|
|
1344
1355
|
-- This migration drops two columns that every gateway before it writes on
|
|
1345
1356
|
-- the success path (\`UPSERT_HEALTH\` names \`ewma_ttft_ms\` and \`last_used_at\`).
|
|
@@ -1364,7 +1375,7 @@ ALTER TABLE credentials ADD COLUMN token_version INTEGER NOT NULL DEFAULT 0;
|
|
|
1364
1375
|
-- Neither column is indexed or constrained, so \`DROP COLUMN\` is permitted.
|
|
1365
1376
|
ALTER TABLE credential_health DROP COLUMN ewma_ttft_ms;
|
|
1366
1377
|
ALTER TABLE credential_health DROP COLUMN last_used_at;
|
|
1367
|
-
`;var
|
|
1378
|
+
`;var t_=`-- An optional expiry on a gateway API key: an absolute epoch-ms instant after
|
|
1368
1379
|
-- which the key is refused, spelled exactly as \`credentials.expires_at\` is.
|
|
1369
1380
|
--
|
|
1370
1381
|
-- Nullable rather than \`NOT NULL DEFAULT\`, which is the opposite of the choice
|
|
@@ -1390,7 +1401,7 @@ ALTER TABLE credential_health DROP COLUMN last_used_at;
|
|
|
1390
1401
|
-- to help; and nothing sweeps expired keys, because an expired key stays listed
|
|
1391
1402
|
-- exactly as a revoked one does so its usage history keeps its attribution.
|
|
1392
1403
|
ALTER TABLE api_keys ADD COLUMN expires_at INTEGER;
|
|
1393
|
-
`;var
|
|
1404
|
+
`;var n_="-- Indexes for the keyset traversal of `request_logs`.\n--\n-- Ordering by `at DESC, id DESC` is what makes a page boundary exact: `at`\n-- repeats within a millisecond, so an index on `at` alone leaves SQLite to\n-- resolve the tie however the scan happens to reach it, and the resolution can\n-- differ between two reads of the same table. The `id` column in the index is\n-- therefore not a tie-break for display \u2014 it is what makes \"the row after this\n-- one\" a question with one answer.\n--\n-- Each of the three replaces a shorter index with the same leading columns, so\n-- they are dropped rather than kept beside the new ones. A redundant prefix\n-- index costs a write on every row inserted and answers no query the longer one\n-- does not: `(at DESC, id DESC)` seeks and scans exactly as `(at DESC)` did for\n-- every reader that never mentions `id`, including `prune`'s range delete and\n-- `aggregate`'s window.\n--\n-- The key and credential indexes are the two scoped reads that must stay\n-- bounded. `api_key_id` is every client page and every scoped operator read,\n-- and it is also the sliding-window limiter's edge scan, which runs on the\n-- request hot path. `credential_id` is `lastUsedByCredential` \u2014 one seek to a\n-- head \u2014 and the account investigation an operator reaches for first.\n--\n-- Deliberately no index for `provider`, `resolved_model`, `state` or\n-- `error_code`. One index per filter is a combinatorial answer to a question\n-- nobody has measured yet, paid for on every insert; the cursor and the time\n-- bounds already keep a filtered page's scan to the rows above it. A production\n-- measurement of the query distribution is what should buy the next index.\nDROP INDEX IF EXISTS idx_request_logs_at;\nDROP INDEX IF EXISTS idx_request_logs_key_at;\nDROP INDEX IF EXISTS idx_request_logs_cred;\n\nCREATE INDEX idx_request_logs_at ON request_logs (at DESC, id DESC);\nCREATE INDEX idx_request_logs_key_at ON request_logs (api_key_id, at DESC, id DESC);\nCREATE INDEX idx_request_logs_cred ON request_logs (credential_id, at DESC, id DESC);\n";var r_=`-- An index for the provider filter on \`request_logs\`, which \`015_log_keyset.sql\`
|
|
1394
1405
|
-- deliberately left out pending a measurement. This is that measurement.
|
|
1395
1406
|
--
|
|
1396
1407
|
-- Without it, filtering by a provider that has *no* traffic scans the whole
|
|
@@ -1423,7 +1434,7 @@ ALTER TABLE api_keys ADD COLUMN expires_at INTEGER;
|
|
|
1423
1434
|
-- substrings, which no B-tree can seek. \`017_log_text_search.sql\` carries them,
|
|
1424
1435
|
-- and carries them inside the keyset index rather than beside it.
|
|
1425
1436
|
CREATE INDEX idx_request_logs_provider ON request_logs (resolved_provider, at DESC, id DESC);
|
|
1426
|
-
`;var
|
|
1437
|
+
`;var o_=`-- Indexes the typed log filters, which match substrings rather than values.
|
|
1427
1438
|
--
|
|
1428
1439
|
-- \`requested_model\`, \`resolved_model\`, \`error_code\`, and the \`model\` filter that
|
|
1429
1440
|
-- reads the first two, became \`LIKE '%value%'\`, because an exact match on a name
|
|
@@ -1489,7 +1500,7 @@ DROP INDEX IF EXISTS idx_request_logs_error_code;
|
|
|
1489
1500
|
DROP INDEX IF EXISTS idx_request_logs_at;
|
|
1490
1501
|
CREATE INDEX idx_request_logs_at
|
|
1491
1502
|
ON request_logs (at DESC, id DESC, requested_model, resolved_model, error_code);
|
|
1492
|
-
`;var
|
|
1503
|
+
`;var i_=`-- An index for the per-model long-window reads behind a key's model overrides:
|
|
1493
1504
|
-- \`usage.sumSince\`, \`sumBuckets\` and \`oldestSince\` narrowed to one requested
|
|
1494
1505
|
-- model. \`usage_rollup\` has no model column, so those reads come from the log,
|
|
1495
1506
|
-- and without this they walk \`idx_request_logs_key_at\` across the key's whole
|
|
@@ -1522,7 +1533,7 @@ CREATE INDEX idx_request_logs_at
|
|
|
1522
1533
|
-- plan. This shape leaves every key-wide read on \`idx_request_logs_key_at\`,
|
|
1523
1534
|
-- which \`migrations.test.ts\` asserts beside the narrowed plans.
|
|
1524
1535
|
CREATE INDEX idx_request_logs_key_model_at ON request_logs (api_key_id, requested_model, at);
|
|
1525
|
-
`;var
|
|
1536
|
+
`;var s_=`-- An optional usage policy on a gateway API key: free text the operator wrote
|
|
1526
1537
|
-- about what the key may be used for, judged by a classifier model before each
|
|
1527
1538
|
-- inference request (\`apps/gateway/src/guardrail/\`).
|
|
1528
1539
|
--
|
|
@@ -1537,29 +1548,46 @@ CREATE INDEX idx_request_logs_key_model_at ON request_logs (api_key_id, requeste
|
|
|
1537
1548
|
-- accepted and documented: a rollback to a build without this column ignores
|
|
1538
1549
|
-- it and stops judging \u2014 the guardrail fails open across a downgrade.
|
|
1539
1550
|
ALTER TABLE api_keys ADD COLUMN guardrail_policy TEXT;
|
|
1540
|
-
`;var
|
|
1551
|
+
`;var a_=`-- Whether a gateway API key is judged for confidential content before routing
|
|
1552
|
+
-- (\`apps/gateway/src/smartRouter/\`): a request the local classifier calls
|
|
1553
|
+
-- confidential is sent to the operator's local model instead of the model it
|
|
1554
|
+
-- named. Only consulted while the global \`smartRouterEnabled\` setting is on.
|
|
1555
|
+
--
|
|
1556
|
+
-- NOT NULL DEFAULT 0, and 0 is "off". No backfill, for the reason migrations 14
|
|
1557
|
+
-- and 19 have none: every existing key was minted without the flag, and
|
|
1558
|
+
-- switching it on would start rewriting its client's requests on an upgrade the
|
|
1559
|
+
-- operator never connected to it.
|
|
1560
|
+
--
|
|
1561
|
+
-- Its own column rather than a member of \`limits\`. A routing switch is not a
|
|
1562
|
+
-- limit, and nesting it there would bind it to the \`@omni/ratelimit/catalog\`
|
|
1563
|
+
-- storage contract, which fails closed on any name it does not know. The cost is
|
|
1564
|
+
-- accepted and documented: a rollback to a build without this column ignores it
|
|
1565
|
+
-- and stops judging \u2014 smart routing fails open across a downgrade, sending
|
|
1566
|
+
-- everything to the external model the client asked for.
|
|
1567
|
+
ALTER TABLE api_keys ADD COLUMN smart_routing INTEGER NOT NULL DEFAULT 0;
|
|
1568
|
+
`;var IA=[{id:1,sql:qy},{id:2,sql:Hy,after:Jh},{id:3,sql:Wy},{id:4,sql:jy},{id:5,sql:Ky},{id:6,sql:Gy,after:ny},{id:7,sql:Zy},{id:8,sql:Xy},{id:9,sql:Vy},{id:10,sql:Qy,after:ti},{id:11,sql:Yy},{id:12,sql:Jy},{id:13,sql:e_},{id:14,sql:t_},{id:15,sql:n_},{id:16,sql:r_},{id:17,sql:o_},{id:18,sql:i_},{id:19,sql:s_},{id:20,sql:a_}];function LA(e){return e.split(`
|
|
1541
1569
|
`).filter((t)=>!t.trimStart().startsWith("--")).join(`
|
|
1542
|
-
`).split(/;[ \t]*(?:\n|$)/).map((t)=>t.trim()).filter((t)=>t.length>0)}function
|
|
1570
|
+
`).split(/;[ \t]*(?:\n|$)/).map((t)=>t.trim()).filter((t)=>t.length>0)}function Ou(e,t=nt()){let n=new PA(e,{create:!0});n.run("PRAGMA journal_mode = WAL"),n.run("PRAGMA synchronous = NORMAL"),n.run("PRAGMA foreign_keys = ON"),n.run("PRAGMA busy_timeout = 5000"),n.run("CREATE TABLE IF NOT EXISTS migrations (id INTEGER PRIMARY KEY, applied_at INTEGER NOT NULL)");let r=new Set(n.query("SELECT id FROM migrations").all().map((o)=>o.id));for(let o of IA){if(r.has(o.id))continue;n.transaction(()=>{for(let i of LA(o.sql))n.run(i);o.after?.(n,t),n.run("INSERT INTO migrations (id, applied_at) VALUES (?, ?)",[o.id,Date.now()])})()}return n}var NA="sk-omni-";function Pu(){let e=crypto.getRandomValues(new Uint8Array(32)),t=btoa(String.fromCharCode(...e)).replaceAll("+","-").replaceAll("/","_").replaceAll("=","");return NA+t}async function xr(e){let t=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(e));return Array.from(new Uint8Array(t),(n)=>n.toString(16).padStart(2,"0")).join("")}function DA(e,t,n){try{let r=JSON.parse(t);return tt(r)}catch{return n.error("api key limits unreadable",{apiKeyId:e}),null}}var Cu=(e,t)=>({id:e.id,label:e.label,prefix:e.prefix,hash:e.hash,modelAllowlist:e.model_allowlist===null?null:JSON.parse(e.model_allowlist),limits:DA(e.id,e.limits,t),bodyLoggingOptOut:e.body_logging_opt_out===1,createdAt:e.created_at,revokedAt:e.revoked_at,expiresAt:e.expires_at,guardrailPolicy:e.guardrail_policy,smartRouting:e.smart_routing===1});function Iu(e,t=se){return{async list(){return e.query("SELECT * FROM api_keys ORDER BY created_at DESC").all().map((n)=>Cu(n,t))},async findByHash(n){let r=e.query("SELECT * FROM api_keys WHERE hash = ?").get(n);return r?Cu(r,t):null},async get(n){let r=e.query("SELECT * FROM api_keys WHERE id = ?").get(n);return r?Cu(r,t):null},async create(n){let r=Date.now();return e.run(`INSERT INTO api_keys (id, label, prefix, hash, model_allowlist, limits,
|
|
1543
1571
|
body_logging_opt_out, created_at, revoked_at, expires_at,
|
|
1544
|
-
guardrail_policy)
|
|
1545
|
-
VALUES (?,?,?,?,?,?,?,?,NULL
|
|
1572
|
+
guardrail_policy, smart_routing)
|
|
1573
|
+
VALUES (?,?,?,?,?,?,?,?,NULL,?,?,?)`,[n.id,n.label,n.prefix,n.hash,n.modelAllowlist===null?null:JSON.stringify(n.modelAllowlist),JSON.stringify(tt(n.limits)),n.bodyLoggingOptOut?1:0,r,n.expiresAt,n.guardrailPolicy,n.smartRouting?1:0]),{...n,createdAt:r,revokedAt:null}},async importRow(n){if(n.limits===null)throw Error(`api key ${n.id} has unreadable limits`);e.run(`INSERT INTO api_keys (id, label, prefix, hash, model_allowlist, limits,
|
|
1546
1574
|
body_logging_opt_out, created_at, revoked_at, expires_at,
|
|
1547
|
-
guardrail_policy)
|
|
1548
|
-
VALUES (
|
|
1575
|
+
guardrail_policy, smart_routing)
|
|
1576
|
+
VALUES (?,?,?,?,?,?,?,?,?,?,?,?)`,[n.id,n.label,n.prefix,n.hash,n.modelAllowlist===null?null:JSON.stringify(n.modelAllowlist),JSON.stringify(tt(n.limits)),n.bodyLoggingOptOut?1:0,n.createdAt,n.revokedAt,n.expiresAt,n.guardrailPolicy,n.smartRouting?1:0])},async setLimits(n,r){e.run("UPDATE api_keys SET limits = ? WHERE id = ?",[JSON.stringify(tt(r)),n])},async setModelAllowlist(n,r){e.run("UPDATE api_keys SET model_allowlist = ? WHERE id = ?",[r===null?null:JSON.stringify(r),n])},async setExpiry(n,r){e.run("UPDATE api_keys SET expires_at = ? WHERE id = ?",[r,n])},async setGuardrailPolicy(n,r){e.run("UPDATE api_keys SET guardrail_policy = ? WHERE id = ?",[r,n])},async setSmartRouting(n,r){e.run("UPDATE api_keys SET smart_routing = ? WHERE id = ?",[r?1:0,n])},async revoke(n){e.run("UPDATE api_keys SET revoked_at = ? WHERE id = ?",[Date.now(),n])}}}import{Database as MA}from"bun:sqlite";var u_=["api_keys","credential_health","credentials","migrations","quota_windows","request_logs","settings","virtual_models"],Lu="unreadable";function UA(e){return`'${e.replaceAll("'","''")}'`}function Nu(e,t){return{async heartbeat(n){e.run("INSERT OR REPLACE INTO nodes (id, seen_at) VALUES (?, ?)",[t,n]),e.run("DELETE FROM nodes WHERE seen_at < ?",[n-86400000])},async nodes(n){return e.query("SELECT id, seen_at FROM nodes WHERE seen_at > ? ORDER BY seen_at DESC").all(n-qt).map((r)=>({id:r.id,seenAt:r.seen_at}))},async stats(){let n=e.query("PRAGMA page_size").get(),r=e.query("PRAGMA page_count").get(),o=e.query("PRAGMA freelist_count").get(),i=e.query("SELECT MAX(id) AS version FROM migrations").get();return{pageSize:n?.page_size??0,pageCount:r?.page_count??0,freelistCount:o?.freelist_count??0,schemaVersion:i?.version??0}},async tables(){return e.query(`SELECT m.tbl_name AS name,
|
|
1549
1577
|
SUM(s.pgsize) AS bytes,
|
|
1550
1578
|
SUM(CASE WHEN s.pagetype = 'leaf' AND s.name = m.tbl_name THEN s.ncell ELSE 0 END) AS rows
|
|
1551
1579
|
FROM dbstat s JOIN sqlite_master m ON m.name = s.name
|
|
1552
1580
|
WHERE m.tbl_name NOT LIKE 'sqlite_%'
|
|
1553
1581
|
GROUP BY m.tbl_name
|
|
1554
|
-
ORDER BY bytes DESC, name`).all().map((n)=>({...n,deadRows:null}))},async vacuum(){e.run("VACUUM"),e.run("PRAGMA wal_checkpoint(TRUNCATE)")},async snapshotTo(n){e.run(`VACUUM INTO ${
|
|
1582
|
+
ORDER BY bytes DESC, name`).all().map((n)=>({...n,deadRows:null}))},async vacuum(){e.run("VACUUM"),e.run("PRAGMA wal_checkpoint(TRUNCATE)")},async snapshotTo(n){e.run(`VACUUM INTO ${UA(n)}`)},async inspect(n){let r;try{r=new MA(n,{readonly:!0})}catch{return{ok:!1,quickCheck:Lu,tables:[],counts:{}}}try{let i=r.query("PRAGMA quick_check").all()[0]?.quick_check??Lu,s=r.query("SELECT name FROM sqlite_master WHERE type = 'table' AND name NOT LIKE 'sqlite_%' ORDER BY name").all().map((c)=>c.name),a=new Set(s),u={};for(let c of u_){if(!a.has(c))continue;let p=r.query(`SELECT COUNT(*) AS n FROM ${c}`).get();u[c]=p?.n??0}let l=u_.every((c)=>a.has(c));return{ok:i==="ok"&&l,quickCheck:i,tables:s,counts:u}}catch{return{ok:!1,quickCheck:Lu,tables:[],counts:{}}}finally{r.close()}}}}var hi=li,c_=ci;function l_(e){let t=e.query("SELECT name FROM sqlite_master").all();return new Set(t.map((n)=>n.name))}function $A(e,t,n){let r=`${c_}${t}_`;for(let o of l_(e)){if(n.has(o)||o.startsWith(r)||o.startsWith("sqlite_"))continue;throw Error(`plugin migration created ${o}, which is outside this plugin's namespace \u2014 `+`name it {{\u2026}} so it becomes ${r}\u2026`)}}function Du(e){let t=()=>e.query("SELECT name FROM sqlite_master WHERE type = 'table' ORDER BY name").all().map((o)=>o.name).filter((o)=>o.startsWith(c_)&&o!=="plugin_migrations"),n=(o)=>{let i=un(o);return t().filter((s)=>s.startsWith(i))},r=(o)=>new Set(e.query("SELECT version FROM plugin_migrations WHERE plugin_id = ?").all(o).map((i)=>i.version));return{async migrate(o,i){rt(o);let s=r(o),a=[],u=[...i].sort((l,c)=>l.version-c.version);for(let l of u){if(s.has(l.version))continue;try{if(!Number.isSafeInteger(l.version)||l.version<1)throw Error("migration version must be a positive integer");let c=hi(o,l.sql),p=l_(e);e.transaction(()=>{e.run(c),$A(e,o,p),e.run("INSERT INTO plugin_migrations (plugin_id, version, applied_at) VALUES (?,?,?)",[o,l.version,Date.now()])})(),a.push(l.version)}catch(c){return{applied:a,failed:{version:l.version,reason:W(c,String(c))}}}}return{applied:a}},async run(o,i,s){e.run(hi(o,i),Ht(s))},async all(o,i,s){return e.prepare(hi(o,i)).all(...Ht(s))},async get(o,i,s){let a=e.prepare(hi(o,i)).get(...Ht(s));return a===null||a===void 0?null:a},async transaction(o,i){rt(o),e.run("BEGIN");try{let s=await i();return e.run("COMMIT"),s}catch(s){throw e.run("ROLLBACK"),s}},async listTables(o){return rt(o),n(o)},async dropAll(o){rt(o);let i=n(o);return e.transaction(()=>{for(let s of i)e.run(`DROP TABLE IF EXISTS "${s}"`);e.run("DELETE FROM plugin_migrations WHERE plugin_id = ?",[o])})(),i.length},async orphanTables(o){let i=o.filter((s)=>Tr.test(s)).map(un);return t().filter((s)=>!i.some((a)=>s.startsWith(a)))}}}function FA(e){try{let t=JSON.parse(e);return Array.isArray(t)?t.filter(pi):[]}catch{return[]}}var Nn=(e)=>({id:e.id,state:e.state==="pending"?"pending":"done",at:e.at,apiKeyId:e.api_key_id,requestedModel:e.requested_model,resolvedProvider:e.resolved_provider,resolvedModel:e.resolved_model,credentialId:e.credential_id,attempts:e.attempts,status:e.status,errorCode:e.error_code,inputTokens:e.input_tokens,outputTokens:e.output_tokens,cacheReadTokens:e.cache_read_tokens,cacheWriteTokens:e.cache_write_tokens,ttftMs:e.ttft_ms,durationMs:e.duration_ms,costUsd:e.cost_usd,degradations:JSON.parse(e.degradations),rtkApplied:e.rtk_applied===1,rtkFilterHits:e.rtk_filter_hits,rtkOriginalCodeUnits:e.rtk_original_code_units,rtkCompressedCodeUnits:e.rtk_compressed_code_units,rtkEstimatedTokensSaved:e.rtk_estimated_tokens_saved,rtkFilters:FA(e.rtk_filters)}),BA={raw:{credential:"credential_id",model:"resolved_model",requestedModel:"requested_model",apiKey:"api_key_id",provider:"resolved_provider",hour:"CAST(at / 3600000 AS INTEGER)",day:null},daily:{credential:"credential_id",model:"resolved_model",requestedModel:"requested_model",apiKey:"api_key_id",provider:"provider",hour:null,day:"day"}};function d_(e,t){let n=BA[e][t];if(n===null)throw Error(`usage grain ${e} cannot group by ${t}`);return n}var zA={raw:`COUNT(*) AS requests,
|
|
1555
1583
|
COALESCE(SUM(CASE WHEN status >= 400 THEN 1 ELSE 0 END), 0) AS errors,
|
|
1556
1584
|
COALESCE(SUM(duration_ms), 0) AS duration_ms_sum`,daily:`COALESCE(SUM(requests), 0) AS requests,
|
|
1557
1585
|
COALESCE(SUM(errors), 0) AS errors,
|
|
1558
|
-
COALESCE(SUM(duration_ms_sum), 0) AS duration_ms_sum`};function
|
|
1586
|
+
COALESCE(SUM(duration_ms_sum), 0) AS duration_ms_sum`};function p_(e){if(e===null)return"unknown";let t=String(e);return t.length===0?"unknown":t}var f_=`(id, state, node_id, at, api_key_id, requested_model, resolved_provider,
|
|
1559
1587
|
resolved_model, credential_id, attempts, status, error_code, input_tokens,
|
|
1560
1588
|
output_tokens, cache_read_tokens, cache_write_tokens, ttft_ms, duration_ms,
|
|
1561
1589
|
cost_usd, degradations, rtk_applied, rtk_filter_hits, rtk_original_code_units,
|
|
1562
|
-
rtk_compressed_code_units, rtk_estimated_tokens_saved, rtk_filters)`,
|
|
1590
|
+
rtk_compressed_code_units, rtk_estimated_tokens_saved, rtk_filters)`,g_="(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";function m_(e,t,n){return[e.id,t,n,e.at,e.apiKeyId,e.requestedModel,e.resolvedProvider,e.resolvedModel,e.credentialId,e.attempts,e.status,e.errorCode,e.inputTokens,e.outputTokens,e.cacheReadTokens,e.cacheWriteTokens,e.ttftMs,e.durationMs,e.costUsd,JSON.stringify(e.degradations),e.rtkApplied===!0?1:0,e.rtkFilterHits??0,e.rtkOriginalCodeUnits??0,e.rtkCompressedCodeUnits??0,e.rtkEstimatedTokensSaved??0,JSON.stringify(e.rtkFilters??[])]}var qA=`INSERT INTO request_logs ${f_} VALUES ${g_}
|
|
1563
1591
|
ON CONFLICT(id) DO UPDATE SET
|
|
1564
1592
|
state = 'done',
|
|
1565
1593
|
requested_model = COALESCE(NULLIF(excluded.requested_model, ''), request_logs.requested_model),
|
|
@@ -1584,7 +1612,7 @@ ALTER TABLE api_keys ADD COLUMN guardrail_policy TEXT;
|
|
|
1584
1612
|
rtk_compressed_code_units = excluded.rtk_compressed_code_units,
|
|
1585
1613
|
rtk_estimated_tokens_saved = excluded.rtk_estimated_tokens_saved,
|
|
1586
1614
|
rtk_filters = excluded.rtk_filters
|
|
1587
|
-
WHERE request_logs.state = 'pending'`,
|
|
1615
|
+
WHERE request_logs.state = 'pending'`,Mu={sumSince:`SELECT COUNT(*) AS requests,
|
|
1588
1616
|
COALESCE(SUM(input_tokens + output_tokens
|
|
1589
1617
|
+ cache_read_tokens + cache_write_tokens), 0) AS tokens,
|
|
1590
1618
|
COALESCE(SUM(cost_usd), 0) AS cost_usd
|
|
@@ -1597,7 +1625,7 @@ ALTER TABLE api_keys ADD COLUMN guardrail_policy TEXT;
|
|
|
1597
1625
|
WHERE api_key_id = ? AND requested_model = ? AND state = 'done' AND at >= ?
|
|
1598
1626
|
GROUP BY bucket`,oldestSince:`SELECT MIN(at) AS at
|
|
1599
1627
|
FROM request_logs
|
|
1600
|
-
WHERE api_key_id = ? AND requested_model = ? AND state = 'done' AND at >= ?`};function
|
|
1628
|
+
WHERE api_key_id = ? AND requested_model = ? AND state = 'done' AND at >= ?`};function Uu(e,t,n=nt()){let r=e.transaction((i)=>{if(e.run(qA,m_(i,"done",t)).changes===0)return;let s=e.query("SELECT * FROM request_logs WHERE id = ?").get(i.id);if(s!==null){let a=Nn(s);Yh(e,a,n),ey(e,a)}}),o=e.transaction((i)=>{e.run("DELETE FROM request_logs WHERE at < ?",[i]);let s=e.query("SELECT changes() AS n").get()?.n??0,a=Fe(i);return e.run("DELETE FROM usage_rollup WHERE hour <= ?",[a]),e.run(`INSERT INTO usage_rollup
|
|
1601
1629
|
(api_key_id, hour, requests, input_tokens, output_tokens,
|
|
1602
1630
|
cache_read_tokens, cache_write_tokens, cost_usd)
|
|
1603
1631
|
SELECT api_key_id, ?, COUNT(*),
|
|
@@ -1608,38 +1636,38 @@ ALTER TABLE api_keys ADD COLUMN guardrail_policy TEXT;
|
|
|
1608
1636
|
COALESCE(SUM(cost_usd), 0)
|
|
1609
1637
|
FROM request_logs
|
|
1610
1638
|
WHERE state = 'done' AND api_key_id IS NOT NULL AND at >= ? AND at < ?
|
|
1611
|
-
GROUP BY api_key_id`,[a,a*
|
|
1639
|
+
GROUP BY api_key_id`,[a,a*Re,(a+1)*Re]),s});return{async begin(i){e.run(`INSERT INTO request_logs ${f_} VALUES ${g_}`,m_(i,"pending",t))},async route(i,s){e.run(`UPDATE request_logs
|
|
1612
1640
|
SET resolved_provider = ?, resolved_model = ?, credential_id = ?
|
|
1613
1641
|
WHERE id = ? AND state = 'pending'`,[s.provider,s.model,s.credentialId,i])},async append(i){r(i)},async sweepPending(i){let s=e.query(`SELECT * FROM request_logs
|
|
1614
1642
|
WHERE state = 'pending'
|
|
1615
|
-
AND (node_id = ? OR node_id NOT IN (SELECT id FROM nodes WHERE seen_at > ?))`).all(t,i-
|
|
1643
|
+
AND (node_id = ? OR node_id NOT IN (SELECT id FROM nodes WHERE seen_at > ?))`).all(t,i-qt).map(Nn);for(let a of s)r({...a,status:499,errorCode:"interrupted",durationMs:0});return s.length},async recent(i,s){if(s===void 0)return e.query("SELECT * FROM request_logs ORDER BY at DESC LIMIT ?").all(i).map(Nn);return e.query("SELECT * FROM request_logs WHERE api_key_id = ? ORDER BY at DESC LIMIT ?").all(s,i).map(Nn)},async page(i){let{where:s,bindings:a}=mi(i,()=>"?"),u=e.query(`SELECT * FROM request_logs ${s} ORDER BY at DESC, id DESC LIMIT ?`).all(...a,i.limit+1).map(Nn);return fi(u,i.limit)},async lastUsedByCredential(i){return e.query("SELECT MAX(at) AS at FROM request_logs WHERE credential_id = ?").get(i)?.at??null},async scan(i,s){return(i===null?e.query("SELECT * FROM request_logs ORDER BY at, id LIMIT ?").all(s):e.query(`SELECT * FROM request_logs
|
|
1616
1644
|
WHERE at > ? OR (at = ? AND id > ?)
|
|
1617
|
-
ORDER BY at, id LIMIT ?`).all(i.at,i.at,i.id,s)).map(
|
|
1645
|
+
ORDER BY at, id LIMIT ?`).all(i.at,i.at,i.id,s)).map(Nn)},async sumSince(i,s,a){if(a!==void 0){let p=e.query(Mu.sumSince).get(i,a,s);return{requests:p?.requests??0,tokens:p?.tokens??0,costUsd:p?.cost_usd??0}}let u=Fe(s),l=e.query(`SELECT COALESCE(SUM(requests), 0) AS requests,
|
|
1618
1646
|
COALESCE(SUM(input_tokens + output_tokens
|
|
1619
1647
|
+ cache_read_tokens + cache_write_tokens), 0) AS tokens,
|
|
1620
1648
|
COALESCE(SUM(cost_usd), 0) AS cost_usd
|
|
1621
1649
|
FROM usage_rollup
|
|
1622
|
-
WHERE api_key_id = ? AND hour > ?`).get(i,u),
|
|
1650
|
+
WHERE api_key_id = ? AND hour > ?`).get(i,u),c=e.query(`SELECT COUNT(*) AS requests,
|
|
1623
1651
|
COALESCE(SUM(input_tokens + output_tokens
|
|
1624
1652
|
+ cache_read_tokens + cache_write_tokens), 0) AS tokens,
|
|
1625
1653
|
COALESCE(SUM(cost_usd), 0) AS cost_usd
|
|
1626
1654
|
FROM request_logs
|
|
1627
|
-
WHERE api_key_id = ? AND state = 'done' AND at >= ? AND at < ?`).get(i,s,(u+1)*
|
|
1655
|
+
WHERE api_key_id = ? AND state = 'done' AND at >= ? AND at < ?`).get(i,s,(u+1)*Re);return{requests:(l?.requests??0)+(c?.requests??0),tokens:(l?.tokens??0)+(c?.tokens??0),costUsd:(l?.cost_usd??0)+(c?.cost_usd??0)}},async sumBuckets(i,s,a,u){if(u!==void 0){let c=a===Re?Fe(s)*Re:s;return e.query(Mu.sumBuckets).all(a,a,i,u,c).map((d)=>[d.bucket,{requests:d.requests,tokens:d.tokens,costUsd:d.cost_usd}])}return(a===Re?e.query(`SELECT hour * ${Re} AS bucket, requests,
|
|
1628
1656
|
input_tokens + output_tokens + cache_read_tokens + cache_write_tokens
|
|
1629
1657
|
AS tokens,
|
|
1630
1658
|
cost_usd
|
|
1631
1659
|
FROM usage_rollup
|
|
1632
|
-
WHERE api_key_id = ? AND hour >= ?`).all(i
|
|
1660
|
+
WHERE api_key_id = ? AND hour >= ?`).all(i,Fe(s)):e.query(`SELECT (at / ?) * ? AS bucket, COUNT(*) AS requests,
|
|
1633
1661
|
COALESCE(SUM(input_tokens + output_tokens
|
|
1634
1662
|
+ cache_read_tokens + cache_write_tokens), 0) AS tokens,
|
|
1635
1663
|
COALESCE(SUM(cost_usd), 0) AS cost_usd
|
|
1636
1664
|
FROM request_logs
|
|
1637
1665
|
WHERE api_key_id = ? AND state = 'done' AND at >= ?
|
|
1638
|
-
GROUP BY bucket`).all(a,a,i,s)).map((
|
|
1666
|
+
GROUP BY bucket`).all(a,a,i,s)).map((c)=>[c.bucket,{requests:c.requests,tokens:c.tokens,costUsd:c.cost_usd}])},async rebuildRollup(){ti(e)},async auditRollup(){return ty(e)},async oldestSince(i,s,a){return(a===void 0?e.query(`SELECT MIN(at) AS at
|
|
1639
1667
|
FROM request_logs
|
|
1640
|
-
WHERE api_key_id = ? AND state = 'done' AND at >= ?`).get(i,s):e.query(
|
|
1641
|
-
${
|
|
1642
|
-
${
|
|
1668
|
+
WHERE api_key_id = ? AND state = 'done' AND at >= ?`).get(i,s):e.query(Mu.oldestSince).get(i,a,s))?.at??null},async aggregate(i){let s=i.grain??"raw",a=s==="daily",u=d_(s,i.groupBy),l=i.splitBy===void 0?null:d_(s,i.splitBy),c=a?ht(i.since,n):i.since,p=i.until??Number.MAX_SAFE_INTEGER,d=a?"day":"at",m=[c,p],g="";if(i.apiKeyId!==void 0)g+=" AND api_key_id = ?",m.push(i.apiKeyId);if(i.credentialId!==void 0)g+=" AND credential_id = ?",m.push(i.credentialId);return e.query(`SELECT ${u} AS key,
|
|
1669
|
+
${l??"NULL"} AS split,
|
|
1670
|
+
${zA[s]},
|
|
1643
1671
|
COALESCE(SUM(input_tokens), 0) AS input_tokens,
|
|
1644
1672
|
COALESCE(SUM(output_tokens), 0) AS output_tokens,
|
|
1645
1673
|
COALESCE(SUM(cache_read_tokens), 0) AS cache_read_tokens,
|
|
@@ -1648,53 +1676,53 @@ ALTER TABLE api_keys ADD COLUMN guardrail_policy TEXT;
|
|
|
1648
1676
|
COALESCE(SUM(${a?"rtk_applied_requests":"CASE WHEN rtk_applied = 1 THEN 1 ELSE 0 END"}), 0) AS rtk_applied_requests,
|
|
1649
1677
|
COALESCE(SUM(cost_usd), 0) AS cost_usd
|
|
1650
1678
|
FROM ${a?"usage_daily":"request_logs"}
|
|
1651
|
-
WHERE ${a?"":"state = 'done' AND "}${
|
|
1652
|
-
GROUP BY key${
|
|
1653
|
-
ORDER BY requests DESC`).all(...m).map((f)=>{let y={key:n_(f.key),requests:f.requests,inputTokens:f.input_tokens,outputTokens:f.output_tokens,cacheReadTokens:f.cache_read_tokens,cacheWriteTokens:f.cache_write_tokens,rtkSavedTokens:f.rtk_saved_tokens,rtkAppliedRequests:f.rtk_applied_requests,costUsd:f.cost_usd,errors:f.errors,durationMsSum:f.duration_ms_sum};return c===null?y:{...y,split:n_(f.split)}})},async prune(i){return o(i)},async pruneDaily(i){return e.run("DELETE FROM usage_daily WHERE day < ?",[i]),e.query("SELECT changes() AS n").get()?.n??0}}}async function fi(e){let t=e.logger??se,n=e.nodeId??crypto.randomUUID(),r=e.dayOffsetMinutes??et(),o=new Set,i=(d)=>{for(let p of o)try{p(d)}catch{}},s=()=>{let d=Su(e.path,r);return t.debug("store opened",{path:e.path}),{db:d,credentials:Ru(d,e.encryptionKey,i),config:Tu(d,i),keys:Ou(d,t),usage:Nu(d,n,r),bodies:ku(d,e.encryptionKey,yr(e.path)),maintenance:Pu(d,n),plugins:Iu(d)}},a=s(),u=!0,c=()=>{if(!u)return;a.db.close(),u=!1};return{engine:"sqlite",databasePath:e.path,credentials:{list:()=>a.credentials.list(),listRouting:()=>a.credentials.listRouting(),get:(d)=>a.credentials.get(d),create:(d)=>a.credentials.create(d),update:(d,p)=>a.credentials.update(d,p),updateSecrets:(d,p,l,m)=>a.credentials.updateSecrets(d,p,l,m),remove:(d)=>a.credentials.remove(d),listHealth:()=>a.credentials.listHealth(),updateHealth:(d,p,l)=>a.credentials.updateHealth(d,p,l),listQuota:()=>a.credentials.listQuota(),saveQuota:(d)=>a.credentials.saveQuota(d),listQuotaSamples:(d)=>a.credentials.listQuotaSamples(d),pruneQuotaSamples:(d)=>a.credentials.pruneQuotaSamples(d)},config:{listModels:()=>a.config.listModels(),putModel:(d)=>a.config.putModel(d),removeModel:(d)=>a.config.removeModel(d),getSettings:()=>a.config.getSettings(),putSettings:(d)=>a.config.putSettings(d),getAdminPasswordHash:()=>a.config.getAdminPasswordHash(),setAdminPasswordHashIfAbsent:(d)=>a.config.setAdminPasswordHashIfAbsent(d),setAdminPasswordHash:(d)=>a.config.setAdminPasswordHash(d),getViewerPasswordHash:()=>a.config.getViewerPasswordHash(),setViewerPasswordHash:(d)=>a.config.setViewerPasswordHash(d)},keys:{list:()=>a.keys.list(),findByHash:(d)=>a.keys.findByHash(d),get:(d)=>a.keys.get(d),create:(d)=>a.keys.create(d),importRow:(d)=>a.keys.importRow(d),setLimits:(d,p)=>a.keys.setLimits(d,p),setModelAllowlist:(d,p)=>a.keys.setModelAllowlist(d,p),setExpiry:(d,p)=>a.keys.setExpiry(d,p),setGuardrailPolicy:(d,p)=>a.keys.setGuardrailPolicy(d,p),revoke:(d)=>a.keys.revoke(d)},usage:{begin:(d)=>a.usage.begin(d),route:(d,p)=>a.usage.route(d,p),append:(d)=>a.usage.append(d),sweepPending:(d)=>a.usage.sweepPending(d),recent:(d,p)=>a.usage.recent(d,p),page:(d)=>a.usage.page(d),lastUsedByCredential:(d)=>a.usage.lastUsedByCredential(d),scan:(d,p)=>a.usage.scan(d,p),aggregate:(d)=>a.usage.aggregate(d),sumSince:(d,p,l)=>a.usage.sumSince(d,p,l),sumBuckets:(d,p,l,m)=>a.usage.sumBuckets(d,p,l,m),oldestSince:(d,p,l)=>a.usage.oldestSince(d,p,l),rebuildRollup:()=>a.usage.rebuildRollup(),auditRollup:()=>a.usage.auditRollup(),prune:(d)=>a.usage.prune(d),pruneDaily:(d)=>a.usage.pruneDaily(d)},bodies:{put:(d)=>a.bodies.put(d),get:(d)=>a.bodies.get(d),prune:(d)=>a.bodies.prune(d),pruneToCap:(d)=>a.bodies.pruneToCap(d),sweepOrphans:()=>a.bodies.sweepOrphans()},maintenance:{stats:()=>a.maintenance.stats(),tables:()=>a.maintenance.tables(),heartbeat:(d)=>a.maintenance.heartbeat(d),nodes:(d)=>a.maintenance.nodes(d),vacuum:()=>a.maintenance.vacuum(),snapshotTo:(d)=>a.maintenance.snapshotTo(d),inspect:(d)=>a.maintenance.inspect(d)},plugins:{migrate:(d,p)=>a.plugins.migrate(d,p),run:(d,p,l)=>a.plugins.run(d,p,l),all(d,p,l){return a.plugins.all(d,p,l)},get(d,p,l){return a.plugins.get(d,p,l)},transaction(d,p){return a.plugins.transaction(d,p)},listTables:(d)=>a.plugins.listTables(d),dropAll:(d)=>a.plugins.dropAll(d),orphanTables:(d)=>a.plugins.orphanTables(d)},routing:{version:()=>a.db.query("PRAGMA data_version").get()?.data_version??0,subscribe(d){return o.add(d),()=>o.delete(d)}},async reopen(){c(),a=s(),u=!0},close:c}}var At=12,Du={algorithm:"argon2id",memoryCost:19456,timeCost:2},gi="sess:";function s_(e,t){return`${gi}${e}:${new Bun.CryptoHasher("sha256").update(t).digest("hex")}`}function Tr(e,t){let n=t.coord??Mt({now:t.now}),r=async(c)=>{let d=Buffer.from(crypto.getRandomValues(new Uint8Array(32))).toString("base64url"),p={expiresAt:t.now()+t.sessionTtlMs,principal:c};return await n.kv.set(s_(c.kind,d),JSON.stringify(p),t.sessionTtlMs),d},o=(c)=>n.kv.delPrefix(`${gi}${c}:`),i=async(c)=>{for(let d of["admin","viewer","client"]){let p=s_(d,c),l=await n.kv.get(p);if(l!==null)return{key:p,session:JSON.parse(l)}}return null},s=async(c,d)=>{if(c===null)return!1;try{return await Bun.password.verify(d,c)}catch{return!1}},a=async(c)=>{let d=await e.keys.get(c);return d!==null&&wr(d,t.now())},u=async(c)=>{if(c.length<At)throw Error(`admin password must be at least ${At} characters`);await e.config.setAdminPasswordHash(await Bun.password.hash(c,Du)),await n.kv.delPrefix(gi)};return{async isConfigured(){return await e.config.getAdminPasswordHash()!==null},setPassword:u,async setInitialPassword(c){if(c.length<At)throw Error(`admin password must be at least ${At} characters`);return e.config.setAdminPasswordHashIfAbsent(await Bun.password.hash(c,Du))},async changePassword(c,d){if(d.length<At)throw Error(`admin password must be at least ${At} characters`);let p=await e.config.getAdminPasswordHash();if(!await s(p,c))return!1;return await u(d),!0},async login(c){let d=await e.config.getAdminPasswordHash();if(!await s(d,c))return null;return r({kind:"admin"})},async isViewerConfigured(){return await e.config.getViewerPasswordHash()!==null},async setViewerPassword(c){if(c!==null&&c.length<At)throw Error(`viewer password must be at least ${At} characters`);await e.config.setViewerPasswordHash(c===null?null:await Bun.password.hash(c,Du)),await o("viewer")},async loginViewer(c){let d=await e.config.getViewerPasswordHash();if(!await s(d,c))return null;return r({kind:"viewer"})},async loginClient(c){let d=await e.keys.findByHash(await vr(c));if(d===null||!wr(d,t.now()))return null;return r({kind:"client",apiKeyId:d.id})},async verify(c){let d=await i(c);if(d===null)return null;let{key:p,session:l}=d;if(l.expiresAt<=t.now())return await n.kv.del(p),null;if(l.principal.kind==="client"){if(!await a(l.principal.apiKeyId))return await n.kv.del(p),null}return l.principal},async logout(c){let d=await i(c);if(d!==null)await n.kv.del(d.key)},invalidateSessions(){return n.kv.delPrefix(gi)},invalidateKind(c){return o(c)}}}async function Uu(e,t){let n=await e.bodies.get(t);if(n===null)return{requestId:t,detailState:"none",truncated:!1,sizeBytes:0,at:null,artifact:null};return{requestId:n.row.requestId,detailState:n.row.detailState,truncated:n.row.truncated,sizeBytes:n.row.sizeBytes,at:n.row.at,artifact:n.artifact}}var Rr={defaultModel:"claude-opus-5-5",authTypes:["oauth","apiKey"],models:[{id:"claude-fable-5-1",label:"Claude Fable 5.1",pricing:{input:10,output:50,cacheRead:0.25,cacheWrite5m:12.5,cacheWrite1h:20},limits:{contextWindow:1e6,maxOutputTokens:128000}},{id:"claude-opus-5-5",label:"Claude Opus 5.5",pricing:{input:4,output:20,cacheRead:0.2,cacheWrite5m:5,cacheWrite1h:8},limits:{contextWindow:1e6,maxOutputTokens:128000}},{id:"claude-fable-5",label:"Claude Fable 5",pricing:{input:10,output:50,cacheRead:1,cacheWrite5m:12.5,cacheWrite1h:20},limits:{contextWindow:1e6,maxOutputTokens:128000}},{id:"claude-opus-5",label:"Claude Opus 5",pricing:{input:5,output:25,cacheRead:0.5,cacheWrite5m:6.25,cacheWrite1h:10},limits:{contextWindow:1e6,maxOutputTokens:128000}},{id:"claude-sonnet-5-5",label:"Claude Sonnet 5.5",pricing:{input:2,output:10,cacheRead:0.1,cacheWrite5m:2.5,cacheWrite1h:4},limits:{contextWindow:1e6,maxOutputTokens:128000}},{id:"claude-sonnet-5",label:"Claude Sonnet 5",pricing:{input:2,output:10,cacheRead:0.2,cacheWrite5m:2.5,cacheWrite1h:4},limits:{contextWindow:1e6,maxOutputTokens:128000}},{id:"claude-haiku-5-5",label:"Claude Haiku 5.5",pricing:{input:0.1,output:0.5,cacheRead:0.01,cacheWrite5m:0.125,cacheWrite1h:0.2},limits:{contextWindow:1e6,maxOutputTokens:128000}},{id:"claude-haiku-4-5",label:"Claude Haiku 4.5",pricing:{input:1,output:5,cacheRead:0.1,cacheWrite5m:1.25,cacheWrite1h:2},limits:{contextWindow:200000,maxOutputTokens:64000},reasoningForm:"budget"}]};var CA=/-\d{8}$/;function a_(e){let t=e.trim();if(t.toLowerCase().endsWith("[1m]"))t=t.slice(0,-4).trim();return t=t.replace(CA,""),Rr.models.find((n)=>n.id===t)}function Mu(e){return a_(e)?.reasoningForm??"adaptive"}function u_(e){return a_(e)?.limits.maxOutputTokens}var hi={id:"anthropic",capabilities:{tools:!0,images:!0,reasoning:!0},writeOverInput:{fiveMinute:1.25,oneHour:2},catalog:Rr,modelPrefixes:["claude-"],presentation:{label:"Anthropic",order:1,tone:"magenta",colour:{light:"oklch(0.56 0.13 45)",dark:"oklch(0.74 0.12 48)"},pasteHint:"Authorize in the browser, then paste the code Anthropic shows you."}};var yi=65536;var me={cacheWrite5m:0,cacheWrite1h:0},PA={input:0,output:0,cacheRead:0,...me},Fe={contextWindow:1048576,maxOutputTokens:65536},Sr={contextWindow:1048576,maxOutputTokens:65535},_i={defaultModel:"gemini-3.8-flash-high",authTypes:["oauth"],models:[{id:"gemini-3.8-flash-high",label:"Gemini 3.8 Flash (High)",pricing:{input:1.5,output:7.5,cacheRead:0.15,...me},limits:Fe},{id:"gemini-3.8-flash-medium",label:"Gemini 3.8 Flash (Medium)",pricing:{input:1.5,output:7.5,cacheRead:0.15,...me},limits:Fe},{id:"gemini-3.8-flash-low",label:"Gemini 3.8 Flash (Low)",pricing:{input:1.5,output:7.5,cacheRead:0.15,...me},limits:Fe},{id:"gemini-3.7-flash-high",label:"Gemini 3.7 Flash (High)",pricing:{input:1.5,output:7.5,cacheRead:0.15,...me},limits:Fe},{id:"gemini-3.7-flash-medium",label:"Gemini 3.7 Flash (Medium)",pricing:{input:1.5,output:7.5,cacheRead:0.15,...me},limits:Fe},{id:"gemini-3.7-flash-low",label:"Gemini 3.7 Flash (Low)",pricing:{input:1.5,output:7.5,cacheRead:0.15,...me},limits:Fe},{id:"gemini-3.6-flash-high",label:"Gemini 3.6 Flash (High)",pricing:{input:1.5,output:7.5,cacheRead:0.15,...me},limits:Fe},{id:"gemini-3.6-flash-medium",label:"Gemini 3.6 Flash (Medium)",pricing:{input:1.5,output:7.5,cacheRead:0.15,...me},limits:Fe},{id:"gemini-3.6-flash-low",label:"Gemini 3.6 Flash (Low)",pricing:{input:1.5,output:7.5,cacheRead:0.15,...me},limits:Fe},{id:"gemini-3-flash-agent",label:"Gemini 3.5 Flash (High)",pricing:{input:1.5,output:9,cacheRead:0.15,...me},limits:Fe},{id:"gemini-3.5-flash-low",label:"Gemini 3.5 Flash (Medium)",pricing:{input:1.5,output:9,cacheRead:0.15,...me},limits:Fe},{id:"gemini-3.5-flash-extra-low",label:"Gemini 3.5 Flash (Low)",pricing:{input:1.5,output:9,cacheRead:0.15,...me},limits:Fe},{id:"gemini-3-flash",label:"Gemini 3 Flash",pricing:PA,limits:Fe},{id:"gemini-3.5-flash-lite",label:"Gemini 3.5 Flash Lite",pricing:{input:0.3,output:2.5,cacheRead:0.03,...me},limits:Sr},{id:"gemini-pro-agent",label:"Gemini 3.1 Pro (High)",pricing:{input:2,output:12,cacheRead:0.2,...me},limits:Sr},{id:"gemini-3.1-pro-low",label:"Gemini 3.1 Pro (Low)",pricing:{input:2,output:12,cacheRead:0.2,...me},limits:Sr},{id:"gemini-3.1-flash-lite",label:"Gemini 3.1 Flash Lite",pricing:{input:0.25,output:1.5,cacheRead:0.025,...me},limits:Sr},{id:"gemini-2.5-pro",label:"Gemini 2.5 Pro",pricing:{input:1.25,output:10,cacheRead:0.125,...me},limits:Sr}]};var wi={id:"antigravity",capabilities:{tools:!0,images:!0,reasoning:!0},writeOverInput:{fiveMinute:0,oneHour:0},catalog:_i,modelPrefixes:["gemini-"],callback:{uri:"https://antigravity.google/oauth-callback",label:"Antigravity"},presentation:{label:"Antigravity",order:6,tone:"violet",colour:{light:"oklch(0.52 0.14 277)",dark:"oklch(0.74 0.14 277)"},pasteHint:"Approve in any browser, then paste the whole URL it lands on. A code shown on its own works too."}};var bi={defaultModel:"",authTypes:["apiKey"],models:[]};var ki={id:"custom",capabilities:{tools:!0,images:!0,reasoning:!0},writeOverInput:{fiveMinute:0,oneHour:0},catalog:bi,modelPrefixes:[],presentation:{label:"OpenAI Compatible",order:8,tone:"cyan",colour:{light:"oklch(0.5 0.03 258)",dark:"oklch(0.72 0.03 258)"},pasteHint:"Enter endpoint metadata and API key."}};var Ei={defaultModel:"grok-4.6",authTypes:["oauth","apiKey"],models:[{id:"grok-4.6",label:"Grok 4.6",pricing:{input:2,output:6,cacheRead:0.5,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:500000,maxOutputTokens:128000}},{id:"grok-4.5",label:"Grok 4.5",pricing:{input:2,output:6,cacheRead:0.3,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:500000,maxOutputTokens:128000}},{id:"grok-4.3",label:"Grok 4.3",pricing:{input:1.25,output:2.5,cacheRead:0.2,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:1e6,maxOutputTokens:128000}},{id:"grok-4.20-0309-reasoning",label:"Grok 4.20 \u2014 reasoning",pricing:{input:1.25,output:2.5,cacheRead:0.2,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:1e6,maxOutputTokens:128000}},{id:"grok-4.20-0309-non-reasoning",label:"Grok 4.20 \u2014 non-reasoning",pricing:{input:1.25,output:2.5,cacheRead:0.2,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:1e6,maxOutputTokens:128000}},{id:"grok-4.20-multi-agent-0309",label:"Grok 4.20 \u2014 multi-agent",pricing:{input:1.25,output:2.5,cacheRead:0.2,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:1e6,maxOutputTokens:128000}}]};var vi={id:"grok",capabilities:{tools:!0,images:!0,reasoning:!0},writeOverInput:{fiveMinute:0,oneHour:0},catalog:Ei,modelPrefixes:["grok-"],callback:{uri:"http://127.0.0.1:56121/callback",label:"Grok"},presentation:{label:"Grok",order:5,tone:"yellow",colour:{light:"oklch(0.52 0.14 125)",dark:"oklch(0.74 0.14 125)"},pasteHint:"Authorize in the browser. When it redirects to 127.0.0.1, paste the whole URL."}};var Ti={defaultModel:"anthropic/claude-sonnet-5",authTypes:["oauth","apiKey"],models:[{id:"anthropic/claude-fable-5",label:"Claude Fable 5",pricing:{input:10,output:50,cacheRead:1,cacheWrite5m:12.5,cacheWrite1h:12.5},limits:{contextWindow:1e6,maxOutputTokens:128000}},{id:"anthropic/claude-opus-5",label:"Claude Opus 5",pricing:{input:5,output:25,cacheRead:0.5,cacheWrite5m:6.25,cacheWrite1h:6.25},limits:{contextWindow:1e6,maxOutputTokens:128000}},{id:"anthropic/claude-sonnet-5",label:"Claude Sonnet 5",pricing:{input:2,output:10,cacheRead:0.2,cacheWrite5m:2.5,cacheWrite1h:2.5},limits:{contextWindow:1e6,maxOutputTokens:128000}},{id:"anthropic/claude-haiku-4.5",label:"Claude Haiku 4.5",pricing:{input:1,output:5,cacheRead:0.1,cacheWrite5m:1.25,cacheWrite1h:1.25},limits:{contextWindow:200000,maxOutputTokens:64000}},{id:"openai/gpt-5.6-sol",label:"GPT-5.6 Sol",pricing:{input:5,output:30,cacheRead:0.5,cacheWrite5m:6.25,cacheWrite1h:6.25},limits:{contextWindow:1050000,maxOutputTokens:128000}},{id:"openai/gpt-5.6-terra",label:"GPT-5.6 Terra",pricing:{input:2,output:12,cacheRead:0.2,cacheWrite5m:2.5,cacheWrite1h:2.5},limits:{contextWindow:1050000,maxOutputTokens:128000}},{id:"openai/gpt-5.6-luna",label:"GPT-5.6 Luna",pricing:{input:0.2,output:1.2,cacheRead:0.02,cacheWrite5m:0.25,cacheWrite1h:0.25},limits:{contextWindow:1050000,maxOutputTokens:128000}},{id:"google/gemini-3.1-pro-preview",label:"Gemini 3.1 Pro Preview",pricing:{input:2,output:12,cacheRead:0.2,cacheWrite5m:0.375,cacheWrite1h:0.375},limits:{contextWindow:1048576,maxOutputTokens:65536}},{id:"google/gemini-3.7-flash",label:"Gemini 3.7 Flash",pricing:{input:0.75,output:3.75,cacheRead:0.075,cacheWrite5m:0.041667,cacheWrite1h:0.041667},limits:{contextWindow:1048576,maxOutputTokens:65536}},{id:"moonshotai/kimi-k3",label:"Kimi K3",pricing:{input:3,output:15,cacheRead:0.3,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:1048576,maxOutputTokens:131072}},{id:"nvidia/nemotron-3-ultra-550b-a55b:free",label:"Nemotron 3 Ultra 550B \u2014 free",pricing:{input:0,output:0,cacheRead:0,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:1e6,maxOutputTokens:65536},auth:["apiKey"]},{id:"nvidia/nemotron-3.5-lightning:free",label:"Nemotron 3.5 Lightning \u2014 free",pricing:{input:0,output:0,cacheRead:0,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:1e6,maxOutputTokens:65536},auth:["apiKey"]},{id:"dots-studio/dots-3-note-preview:free",label:"Dots 3 Note Preview \u2014 free",pricing:{input:0,output:0,cacheRead:0,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:512000,maxOutputTokens:512000},auth:["apiKey"]},{id:"cohere/north-mini-code:free",label:"North Mini Code \u2014 free",pricing:{input:0,output:0,cacheRead:0,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:256000,maxOutputTokens:64000},auth:["apiKey"]},{id:"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free",label:"Nemotron 3 Nano Omni 30B Reasoning \u2014 free",pricing:{input:0,output:0,cacheRead:0,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:256000,maxOutputTokens:65536},auth:["apiKey"]},{id:"stepfun/step-3.7-flash:free",label:"Step 3.7 Flash \u2014 free",pricing:{input:0,output:0,cacheRead:0,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:262144,maxOutputTokens:262144},auth:["apiKey"]},{id:"nvidia/nemotron-3-super-120b-a12b:free",label:"Nemotron 3 Super 120B \u2014 free",pricing:{input:0,output:0,cacheRead:0,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:262144,maxOutputTokens:262144},auth:["apiKey"]},{id:"tencent/hy3:free",label:"Tencent HY3 \u2014 free",pricing:{input:0,output:0,cacheRead:0,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:262144,maxOutputTokens:128000},auth:["apiKey"]},{id:"poolside/laguna-s-2.1:free",label:"Laguna S 2.1 \u2014 free",pricing:{input:0,output:0,cacheRead:0,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:262144,maxOutputTokens:32768},auth:["apiKey"]},{id:"poolside/laguna-xs-2.1:free",label:"Laguna XS 2.1 \u2014 free",pricing:{input:0,output:0,cacheRead:0,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:262144,maxOutputTokens:32768},auth:["apiKey"]},{id:"liquid/lfm-2.5-2.6b:free",label:"LFM 2.5 2.6B \u2014 free",pricing:{input:0,output:0,cacheRead:0,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:128000,maxOutputTokens:8192},auth:["apiKey"]},{id:"nvidia/nemotron-3.5-content-safety:free",label:"Nemotron 3.5 Content Safety \u2014 free",pricing:{input:0,output:0,cacheRead:0,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:128000,maxOutputTokens:8192},auth:["apiKey"]},{id:"kilo-auto/frontier",label:"Kilo Auto \u2014 Frontier",pricing:{input:0,output:0,cacheRead:0,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:1e6,maxOutputTokens:128000},auth:["apiKey"]},{id:"kilo-auto/balanced",label:"Kilo Auto \u2014 Balanced",pricing:{input:0,output:0,cacheRead:0,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:1e6,maxOutputTokens:65536},auth:["apiKey"]},{id:"kilo-auto/efficient",label:"Kilo Auto \u2014 Efficient",pricing:{input:0,output:0,cacheRead:0,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:1e6,maxOutputTokens:65536},auth:["apiKey"]},{id:"kilo-auto/small",label:"Kilo Auto \u2014 Small",pricing:{input:0.05,output:0.4,cacheRead:0.005,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:262144,maxOutputTokens:32768},auth:["apiKey"]},{id:"kilo-auto/free",label:"Kilo Auto \u2014 Free",pricing:{input:0,output:0,cacheRead:0,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:256000,maxOutputTokens:1e4},auth:["apiKey"]}]};var Ri={id:"kilo",capabilities:{tools:!0,images:!0,reasoning:!0},writeOverInput:{fiveMinute:0,oneHour:0},catalog:Ti,modelPrefixes:[],presentation:{label:"Kilo",order:4,tone:"orange",colour:{light:"oklch(0.52 0.14 224)",dark:"oklch(0.74 0.14 224)"},pasteHint:"Approve the code on Kilo's device page. This dialog finishes on its own."}};var Si={defaultModel:"k3-256k",authTypes:["oauth","apiKey"],models:[{id:"k3-256k",label:"Kimi K3 \u2014 256K",pricing:{input:3,output:15,cacheRead:0.3,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:262144,maxOutputTokens:131072}},{id:"k3",label:"Kimi K3 \u2014 up to 1M",pricing:{input:3,output:15,cacheRead:0.3,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:1048576,maxOutputTokens:131072}},{id:"kimi-for-coding",label:"Kimi K2.7 Code",pricing:{input:0.95,output:4,cacheRead:0.19,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:262144,maxOutputTokens:131072}},{id:"kimi-for-coding-highspeed",label:"Kimi K2.7 Code \u2014 High Speed",pricing:{input:0.95,output:8,cacheRead:0.19,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:262144,maxOutputTokens:131072}}]};var xi={id:"kimi",capabilities:{tools:!0,images:!1,reasoning:!1},writeOverInput:{fiveMinute:0,oneHour:0},catalog:Si,modelPrefixes:["kimi-","moonshot"],presentation:{label:"Kimi",order:3,tone:"blue",colour:{light:"oklch(0.53 0.17 330)",dark:"oklch(0.72 0.16 330)"},pasteHint:"Enter the code on Kimi's device page. This dialog finishes on its own."}};var Ai={defaultModel:"muse-spark-1.3",authTypes:["oauth","apiKey"],models:[{id:"muse-spark-1.3",label:"Muse Spark 1.3",pricing:{input:1.25,output:4.25,cacheRead:0.15,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:1048576,maxOutputTokens:943718}},{id:"muse-spark-1.3-contributor",label:"Muse Spark 1.3 \u2014 Meta trains on this traffic",pricing:{input:0.1,output:0.2,cacheRead:0.002,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:1048576,maxOutputTokens:943718}},{id:"muse-spark-1.2",label:"Muse Spark 1.2",pricing:{input:1.25,output:4.25,cacheRead:0.15,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:1048576,maxOutputTokens:943718}},{id:"muse-spark-1.2-contributor",label:"Muse Spark 1.2 \u2014 Meta trains on this traffic",pricing:{input:0.1,output:0.2,cacheRead:0.002,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:1048576,maxOutputTokens:943718}}]};var Oi={id:"muse",capabilities:{tools:!0,images:!0,reasoning:!0},writeOverInput:{fiveMinute:0,oneHour:0},catalog:Ai,modelPrefixes:["muse-","muse-spark"],presentation:{label:"Muse",order:7,tone:"azure",colour:{light:"oklch(0.55 0.23 262)",dark:"oklch(0.72 0.17 262)"},pasteHint:"Enter the code on Meta's device page. This dialog finishes on its own."}};var Ci={defaultModel:"gpt-6.1-sol",authTypes:["oauth","apiKey"],models:[{id:"gpt-6-astra",label:"GPT-6 Astra",pricing:{input:10,output:50,cacheRead:1,cacheWrite5m:12.5,cacheWrite1h:0},limits:{contextWindow:922000,maxOutputTokens:128000},oauthLimits:{contextWindow:272000,maxOutputTokens:128000}},{id:"gpt-6.1-sol",label:"GPT-6.1 Sol",pricing:{input:2,output:10,cacheRead:0.1,cacheWrite5m:2.5,cacheWrite1h:0},limits:{contextWindow:922000,maxOutputTokens:128000},oauthLimits:{contextWindow:272000,maxOutputTokens:128000}},{id:"gpt-6-sol",label:"GPT-6 Sol",pricing:{input:2,output:10,cacheRead:0.2,cacheWrite5m:2.5,cacheWrite1h:0},limits:{contextWindow:922000,maxOutputTokens:128000},oauthLimits:{contextWindow:272000,maxOutputTokens:128000}},{id:"gpt-6-luna",label:"GPT-6 Luna",pricing:{input:0.1,output:0.5,cacheRead:0.01,cacheWrite5m:0.125,cacheWrite1h:0},limits:{contextWindow:922000,maxOutputTokens:128000},oauthLimits:{contextWindow:272000,maxOutputTokens:128000}},{id:"gpt-5.6",label:"GPT-5.6 \u2014 routes to Sol",pricing:{input:4,output:20,cacheRead:0.4,cacheWrite5m:5,cacheWrite1h:0},limits:{contextWindow:922000,maxOutputTokens:128000},oauthLimits:{contextWindow:272000,maxOutputTokens:128000}},{id:"gpt-5.6-sol",label:"GPT-5.6 Sol",pricing:{input:4,output:20,cacheRead:0.4,cacheWrite5m:5,cacheWrite1h:0},limits:{contextWindow:922000,maxOutputTokens:128000},oauthLimits:{contextWindow:272000,maxOutputTokens:128000}},{id:"gpt-5.6-terra",label:"GPT-5.6 Terra",pricing:{input:2,output:12,cacheRead:0.2,cacheWrite5m:2.5,cacheWrite1h:0},limits:{contextWindow:922000,maxOutputTokens:128000},oauthLimits:{contextWindow:272000,maxOutputTokens:128000}},{id:"gpt-5.6-luna",label:"GPT-5.6 Luna",pricing:{input:0.2,output:1.2,cacheRead:0.02,cacheWrite5m:0.25,cacheWrite1h:0},limits:{contextWindow:922000,maxOutputTokens:128000},oauthLimits:{contextWindow:272000,maxOutputTokens:128000}}]};var Pi={id:"openai",capabilities:{tools:!0,images:!0,reasoning:!0},writeOverInput:{fiveMinute:0,oneHour:0},catalog:Ci,modelPrefixes:["gpt-","o1","o3","o4"],callback:{uri:"http://localhost:1455/auth/callback",label:"OpenAI"},presentation:{label:"OpenAI",order:2,tone:"green",colour:{light:"oklch(0.5 0.09 190)",dark:"oklch(0.76 0.1 190)"},pasteHint:"Authorize in the browser. When it redirects to localhost, paste the whole URL."}};var an=/^[a-z][a-z0-9-]{0,31}$/;function $u(e){return typeof e==="string"&&an.test(e)}var M={anthropic:hi,openai:Pi,kimi:xi,kilo:Ri,grok:vi,antigravity:wi,muse:Oi,custom:ki};Object.setPrototypeOf(M,null);var c_=Object.keys(M);var d_=16,l_=new Set(["1","true","yes","on"]),p_=/^\d+$/,IA=/^-?\d+$/;function Fu(e,t){return e?.trim()||t}function Bu(e){let t=e.OMNI_ENCRYPTION_KEY;if(typeof t!=="string"||t.length<d_)throw Error(`OMNI_ENCRYPTION_KEY must be set to at least ${d_} characters. Generate one with: openssl rand -base64 32`);let n=Fu(e.OMNI_HOST,"127.0.0.1"),r=e.OMNI_PORT??"9000",o=Number(r);if(!p_.test(r)||!Number.isInteger(o)||o<1||o>65535)throw Error(`OMNI_PORT must be an integer between 1 and 65535, got "${r}"`);let i=`http://${n}:${o}`,s=Fu(e.OMNI_BASE_URL,i).replace(/\/+$/,"")||i,a=e.OMNI_STATIC_DIR?.trim(),u=e.OMNI_LOG_FILE?.trim(),c=l_.has((e.OMNI_CLUSTER_MODE??"").trim().toLowerCase()),d=e.OMNI_DATABASE_URL?.trim()||void 0,p=e.OMNI_REDIS_URL?.trim()||void 0;if(c){if(d===void 0||!d.startsWith("postgres"))throw Error("OMNI_CLUSTER_MODE=true needs OMNI_DATABASE_URL to be a postgres:// URL");if(p===void 0)throw Error("OMNI_CLUSTER_MODE=true needs OMNI_REDIS_URL")}else if(d!==void 0||p!==void 0)throw Error("OMNI_DATABASE_URL and OMNI_REDIS_URL are cluster-mode settings; set OMNI_CLUSTER_MODE=true or unset them");let l=e.OMNI_DAY_OFFSET_MINUTES?.trim(),m=l===void 0?NaN:Number(l),g=l!==void 0&&IA.test(l)&&Number.isInteger(m)&&m>=-1440&&m<=1440,h=g?m:et(),f=l!==void 0&&!g?l:null,y=l_.has((e.OMNI_BODY_LOGGING_ALLOWED??"").trim().toLowerCase()),_=e.OMNI_LOG_LEVEL?.trim(),w=Vo(_),v=e.OMNI_METRICS_TOKEN?.trim()||null,k=e.OMNI_METRICS_MAX_SERIES??"5000",T=Number(k);if(!p_.test(k)||T<1)throw Error(`OMNI_METRICS_MAX_SERIES must be a positive integer, got "${k}"`);let C=e.OMNI_OTLP_ENDPOINT?.trim().replace(/\/+$/,"")||null,V=e.OMNI_OTLP_HEADERS?.trim()||null,Re=e.OMNI_TRACE_SAMPLE??"1.0",W=Number(Re);if(!Number.isFinite(W)||W<0||W>1)throw Error(`OMNI_TRACE_SAMPLE must be between 0 and 1, got "${Re}"`);return{logLevel:w??"info",logLevelFallbackFrom:w===null&&_?_:null,port:o,host:n,databasePath:Fu(e.OMNI_DB_PATH,"./omnigateway.db"),encryptionKey:t,baseUrl:s,staticDir:a===void 0||a.length===0?null:a,bodyLoggingAllowed:y,logFile:u===void 0||u.length===0?null:u,clusterMode:c,databaseUrl:c?d??null:null,redisUrl:c?p??null:null,dayOffsetMinutes:h,dayOffsetFallbackFrom:f,metricsToken:v,metricsMaxSeries:T,otlpEndpoint:C,otlpHeaders:V,traceSample:W}}var Ii="oauth:pending:";function zu(e){let t=e.coord??Mt({now:e.now});return{async put(n){let r=Buffer.from(crypto.getRandomValues(new Uint8Array(32))).toString("base64url");return await t.kv.set(Ii+r,JSON.stringify(n),e.ttlMs),r},async take(n){let r=await t.kv.get(Ii+n);if(r===null)return null;return await t.kv.del(Ii+n),JSON.parse(r)},async peek(n){let r=await t.kv.get(Ii+n);return r===null?null:JSON.parse(r)}}}function LA(e){if(e===401||e===403)return"AUTH";if(e===402)return"QUOTA_EXHAUSTED";if(e===404)return"MODEL_UNAVAILABLE";if(e===413||e===422||e===400)return"BAD_REQUEST";if(e===429)return"RATE_LIMIT";if(e===529)return"OVERLOADED";if(e>=500)return"UPSTREAM";return"UPSTREAM"}function m_(e,t){if(e===null)return;let n=Number(e);if(Number.isFinite(n))return Math.max(0,n*1000);let r=Date.parse(e);return Number.isNaN(r)?void 0:Math.max(0,r-t)}async function qu(e,t,n=Date.now()){let r=await e.text().catch(()=>""),o=r.slice(0,500),i=LA(e.status);try{let a=JSON.parse(r);if(typeof a.error?.message==="string")o=a.error.message.slice(0,500);else if(typeof a.detail==="string")o=a.detail.slice(0,500);let u=a.error?.type??a.error?.code;if(u==="overloaded_error")i="OVERLOADED";else if(u==="insufficient_quota")i="QUOTA_EXHAUSTED";else if(u==="context_length_exceeded")i="BAD_REQUEST";else if(u==="content_policy_violation")i="CONTENT_FILTER"}catch{}let s=m_(e.headers.get("retry-after"),n);return new b(i,o||`${t} returned ${e.status}`,{provider:t,status:e.status,...s===void 0?{}:{retryAfterMs:s}})}function xr(e,t){let n;try{n=new URL(e)}catch{return!1}return t.some((r)=>{try{return new URL(r).origin===n.origin}catch{return!1}})}function Ar(e){if(typeof e!=="string")return!1;try{let t=new URL(e);return t.protocol==="https:"||t.protocol==="http:"}catch{return!1}}var NA=new Set(["GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS"]);function Or(e){return typeof e==="string"&&NA.has(e)}function Ln(e,t,n){return new b("UPSTREAM",`${e} codec ${t} ${n}`,{provider:e,gatewayAuthored:!0})}function DA(e,t,n){let r=(c)=>e.filter(([d])=>d.toLowerCase()===c),o=r("content-length"),i=r("content-encoding");if(n!==void 0)return o.length===0&&i.length===1&&i[0]?.[1].trim().toLowerCase()===n;if(o.length>1||i.length>1)return!1;let s=o[0]?.[1],a=new TextEncoder().encode(t).byteLength;if(s!==void 0&&s!==String(a))return!1;let u=i[0]?.[1];return u===void 0||u.trim().toLowerCase()==="identity"}function Li(e){if(!Array.isArray(e))return[];return e.filter((t)=>typeof t==="string").slice(0,16).map((t)=>t.slice(0,64))}function f_(e,t){return new b(t.code,t.message,{provider:e,...t.upstreamStatus===void 0?{}:{status:t.upstreamStatus},...t.retryAfterMs===void 0?{}:{retryAfterMs:t.retryAfterMs},degradations:Li(t.degradations),cause:t})}function UA(e){return e instanceof Error&&e.name==="GatewayError"}function Hu(e,t,n){try{return n()}catch(r){if(!(r instanceof b)&&UA(r))throw Ln(e,t,"threw a GatewayError from its own bundled copy, whose classification the host cannot trust; build the error with input.fail() instead");if(r instanceof b)throw f_(e,r);throw Ln(e,t,"threw")}}async function*MA(e,t){try{yield*t}catch(n){if(n instanceof b)throw n;throw Ln(e,"decode","threw")}}function de(e,t,n,r){return{id:e,capabilities:t,async send(o){let i=(m,g,h)=>new b(m,g,{provider:e,...h?.status===void 0?{}:{status:h.status},...h?.retryAfterMs===void 0?{}:{retryAfterMs:h.retryAfterMs},degradations:Li(h?.degradations)}),s=Hu(e,"buildRequest",()=>n.buildRequest({request:o.request,model:o.model,credentials:o.credentials,fail:i,...o.requestId===void 0?{}:{requestId:o.requestId},...o.autoCache===void 0?{}:{autoCacheEnabled:o.autoCache},...o.maxOutputTokens===void 0?{}:{maxOutputTokens:o.maxOutputTokens},...o.requestStartedAt===void 0?{}:{requestStartedAt:o.requestStartedAt}})),a=s?.request??{},u={url:a.url,method:a.method,headers:Array.isArray(a.headers)?[...a.headers]:a.headers,body:a.body,bodyEncoding:a.bodyEncoding};if(typeof u.body!=="string"||u.bodyEncoding!==void 0&&u.bodyEncoding!=="zstd"||!Ar(u.url)||!Or(u.method)||!Array.isArray(u.headers)||!u.headers.every((m)=>Array.isArray(m)&&m.length===2&&typeof m[0]==="string"&&typeof m[1]==="string")||!DA(u.headers,u.body,u.bodyEncoding))throw Ln(e,"buildRequest","did not return a usable request");let c={url:u.url,method:u.method,headers:u.headers,body:u.body,...u.bodyEncoding==="zstd"?{bodyEncoding:u.bodyEncoding}:{}};if(r!==void 0&&!xr(u.url,r))throw Ln(e,"buildRequest","described a request to an origin its manifest does not declare");let d=await o.http({provider:e,...c,signal:o.signal,...o.requestId===void 0?{}:{requestId:o.requestId}});if(d.status<200||d.status>=300){let m=await d.text().catch(()=>""),g=await qu({status:d.status,headers:d.headers,body:null,text:async()=>m},e);Object.freeze(g.degradations),Object.freeze(g);let h=Hu(e,"classifyError",()=>n.classifyError?.({status:d.status,body:m,headers:d.headers,fallback:g,fail:i,degradations:Li(s.degradations),decodeState:s.decodeState}));if(h!==void 0){if(!(h instanceof b))throw Ln(e,"classifyError","returned something that is not an error");throw f_(e,h)}throw g}let p=d.body;if(p===null)throw new b("UPSTREAM","empty response body",{provider:e,gatewayAuthored:!0});let l=s.cloakedTools;return{events:MA(e,Hu(e,"decode",()=>n.decode({body:p,decodeState:s.decodeState,headers:d.headers,fail:i}))),degradations:Li(s.degradations),...Number.isInteger(l)&&(l??0)>=0?{cloakedTools:l}:{}}}}}import{createHash as WA}from"crypto";var Wu=/^[\x20-\x7E]{1,200}$/;function G(e,t){let n=Bun.env[e];if(typeof n!=="string"||n.length===0)return t;return Wu.test(n)?n:t}function ju(e){let t=Bun.env[e];if(typeof t!=="string"||t.length===0)return null;return Wu.test(t)?t:null}function Le(e,t){let n=Bun.env[e];if(typeof n!=="string"||n.length===0)return t;let r=n.split(",").map((o)=>o.trim()).filter((o)=>o.length>0&&Wu.test(o));return r.length>0?r:t}function Ku(e,t){return{os:e==="darwin"?"MacOS":e==="linux"?"Linux":e==="win32"?"Windows":"Unknown",arch:t}}function Gu(e,t){return{os:e.toLowerCase(),arch:t==="arm64"?"aarch64":t}}function fe(e,t){let n=[...e],r=[];for(let o of t){let i=o.toLowerCase(),s=n.findIndex(([a])=>a.toLowerCase()===i);if(s!==-1)r.push(...n.splice(s,1))}return r.push(...n),r}function ge(e,t){let n=[...e];for(let[r,o]of t){let i=r.toLowerCase(),s=n.findIndex(([a])=>a.toLowerCase()===i);if(s===-1)n.push([r,o]);else n[s]=[r,o]}return n}var g_=Ku(process.platform,process.arch),un=G("OMNI_ANTHROPIC_CLI_VERSION","2.1.296"),Ge={headers:[["User-Agent",G("OMNI_UA_ANTHROPIC",`claude-cli/${un} (external, cli)`)],["x-app","cli"],["anthropic-dangerous-direct-browser-access","true"],["X-Stainless-Lang","js"],["X-Stainless-Package-Version",G("OMNI_ANTHROPIC_STAINLESS_PACKAGE_VERSION","0.128.0")],["X-Stainless-OS",ju("OMNI_ANTHROPIC_STAINLESS_OS")??g_.os],["X-Stainless-Arch",ju("OMNI_ANTHROPIC_STAINLESS_ARCH")??g_.arch],["X-Stainless-Runtime","node"],["X-Stainless-Runtime-Version",G("OMNI_ANTHROPIC_STAINLESS_RUNTIME_VERSION","v26.3.0")],["X-Stainless-Retry-Count","0"],["Accept","application/json"]],order:Le("OMNI_ORDER_ANTHROPIC",["Accept","Authorization","Content-Type","User-Agent","X-Stainless-Arch","X-Stainless-Lang","X-Stainless-OS","X-Stainless-Package-Version","X-Stainless-Retry-Count","X-Stainless-Runtime","X-Stainless-Runtime-Version","X-Stainless-Timeout","anthropic-beta","anthropic-dangerous-direct-browser-access","anthropic-version","x-api-key","x-app","Connection","Host","Accept-Encoding","Content-Length"])},Cr=["model","messages","system","tools","tool_choice","metadata","max_tokens","temperature","thinking","context_management","output_config","stream"];var $A=G("OMNI_ANTIGRAVITY_IDE_VERSION","2.12.2"),FA="darwin/arm64",nt={headers:[["User-Agent",G("OMNI_UA_ANTIGRAVITY",`antigravity/ide/${$A} ${FA}`)],["Content-Type","application/json"],["Accept","text/event-stream"]],order:Le("OMNI_ORDER_ANTIGRAVITY",["Host","Content-Type","Authorization","User-Agent","X-Goog-Api-Client","Accept","Accept-Encoding","Content-Length"])},h_=["project","requestId","model","userAgent","requestType","request"];var Zu={headers:[],order:[]},y_=[];var __=G("OMNI_GROK_CLI_VERSION","0.2.120"),w_=Gu(process.platform,process.arch),Ot={headers:[["User-Agent",G("OMNI_UA_GROK",`grok-shell/${__} (${w_.os}; ${w_.arch})`)],["x-grok-client-identifier","grok-shell"],["x-grok-client-version",__],["x-grok-client-mode","headless"],["Accept","text/event-stream"]],order:Le("OMNI_ORDER_GROK",["Host","Content-Type","Authorization","X-XAI-Token-Auth","x-authenticateresponse","x-grok-client-identifier","x-grok-client-version","x-grok-client-mode","x-grok-agent-id","x-grok-req-id","x-grok-conv-id","x-grok-session-id","x-grok-model-override","User-Agent","Accept","Accept-Encoding","Content-Length"])},Ni=["model","stream","input","instructions","store","reasoning","prompt_cache_key","tools","tool_choice","include","service_tier","client_metadata","parallel_tool_calls","metadata"];var BA=G("OMNI_KILO_CLI_VERSION","4.140.0"),ft={headers:[["User-Agent",G("OMNI_UA_KILO",`Kilo-Code/${BA}`)],["X-KILOCODE-EDITORNAME",G("OMNI_KILO_EDITOR_NAME","vscode")],["Accept","text/event-stream"]],order:Le("OMNI_ORDER_KILO",["Host","Content-Type","Authorization","X-Kilocode-OrganizationID","X-KILOCODE-EDITORNAME","User-Agent","Accept","Accept-Encoding","Content-Length"])},Di=["model","messages","tools","tool_choice","max_tokens","temperature","reasoning","stream"];var b_=G("OMNI_KIMI_CLI_VERSION","0.26.0"),Ct={headers:[["User-Agent",G("OMNI_UA_KIMI",`kimi-code-cli/${b_}`)],["X-Msh-Platform","kimi_code_cli"],["X-Msh-Version",b_],["Accept","application/json"]],order:Le("OMNI_ORDER_KIMI",["Host","Content-Type","Authorization","X-Msh-Platform","X-Msh-Version","X-Msh-Device-Id","X-Msh-Device-Name","X-Msh-Device-Model","X-Msh-Os-Version","User-Agent","Accept","Accept-Encoding","Content-Length"])},Ui=["model","messages","tools","tool_choice","max_tokens","temperature","stream"];var zA=G("OMNI_MUSE_CLI_VERSION","1.0.3"),gt={headers:[["User-Agent",G("OMNI_UA_MUSE",`muse-code/${zA}`)],["x-api-version",G("OMNI_MUSE_API_VERSION","1.0.0")],["Accept","text/event-stream"]],order:Le("OMNI_ORDER_MUSE",["Host","Content-Type","Authorization","x-meta-ai-gateway-session-id","x-api-version","Accept","User-Agent","Accept-Encoding","Content-Length"])},Mi=["model","stream","input","instructions","store","reasoning","prompt_cache_key","max_output_tokens","temperature","tools","tool_choice","include","parallel_tool_calls","metadata"];var Xu=G("OMNI_OPENAI_CLI_VERSION","0.163.0"),Vu=G("OMNI_OPENAI_UA_PLATFORM","Windows 10.0.26200"),qA=G("OMNI_OPENAI_UA_ARCH","x86_64"),HA=G("OMNI_OPENAI_UA_TERMINAL","WindowsTerminal"),Pr=G("OMNI_OPENAI_ORIGINATOR","codex-tui"),k_=Vu.startsWith("Windows")?"windows_elevated":/^(Mac OS|macOS)/.test(Vu)?"seatbelt":"seccomp",rt={headers:[["user-agent",G("OMNI_UA_OPENAI",`${Pr}/${Xu} (${Vu}; ${qA}) ${HA} (${Pr}; ${Xu})`)],["originator",Pr],["version",Xu],["x-codex-beta-features","remote_compaction_v2"],["accept","text/event-stream"]],order:Le("OMNI_ORDER_OPENAI",["version","x-codex-beta-features","x-codex-window-id","x-codex-turn-metadata","x-openai-internal-codex-responses-lite","x-codex-routing-hint","x-client-request-id","session-id","thread-id","accept","content-encoding","content-type","authorization","chatgpt-account-id","originator","user-agent","host","content-length"])},$i=["model","stream","service_tier","input","instructions","tools","tool_choice","parallel_tool_calls","reasoning","store","stream_options","include","prompt_cache_key","text","client_metadata","access_programs","metadata"];var Qu={anthropic:Cr,openai:$i,kimi:Ui,kilo:Di,grok:Ni,antigravity:h_,muse:Mi,custom:y_};Object.setPrototypeOf(Qu,null);function Be(e,t){let n={},r=new Set;for(let o of t)if(Object.hasOwn(e,o))n[o]=e[o],r.add(o);for(let o of Object.keys(e))if(!r.has(o))n[o]=e[o];return n}var E_="00000",jA=0x6e52736ac806831en,KA=0xfffffn,GA="59cf53e54c78",Ir="x-anthropic-billing-header:",Fi="You are a Claude agent, built on Anthropic's Claude Agent SDK.";function ZA(e){let t=[4,7,20].map((n)=>e[n]??"0").join("");return WA("sha256").update(`${GA}${t}${un}`).digest("hex").slice(0,3)}function XA(e){return`${Ir} cc_version=${un}.${ZA(e)}; cc_entrypoint=cli; cch=${E_};`}var VA=["github.com/anomalyco/opencode","opencode.ai/docs","github.com/cline/cline","github.com/getcursor/cursor","continue.dev","hermes-agent.nousresearch.com"],QA=["You are OpenCode","You are Hermes Agent"],YA=[["if OpenCode honestly","if the assistant honestly"],["Here is some useful information about the environment you are running in:","Environment context you are running in:"]];function v_(e,t){let n=[];for(let r of e){let i=r.text.split(/\n{2,}/).filter((s)=>!VA.some((a)=>s.includes(a))).filter((s)=>!QA.some((a)=>s.trimStart().startsWith(a))).filter((s)=>!s.includes(Ir)).filter((s)=>s.trim()!==Fi).join(`
|
|
1654
|
-
|
|
1655
|
-
`);for(let[s,a]of
|
|
1656
|
-
`);while(p!==-1){let g=
|
|
1657
|
-
`,p+1);continue}
|
|
1658
|
-
`,g)}let
|
|
1679
|
+
WHERE ${a?"":"state = 'done' AND "}${d} >= ? AND ${d} <= ?${g}
|
|
1680
|
+
GROUP BY key${l===null?"":", split"}
|
|
1681
|
+
ORDER BY requests DESC`).all(...m).map((f)=>{let y={key:p_(f.key),requests:f.requests,inputTokens:f.input_tokens,outputTokens:f.output_tokens,cacheReadTokens:f.cache_read_tokens,cacheWriteTokens:f.cache_write_tokens,rtkSavedTokens:f.rtk_saved_tokens,rtkAppliedRequests:f.rtk_applied_requests,costUsd:f.cost_usd,errors:f.errors,durationMsSum:f.duration_ms_sum};return l===null?y:{...y,split:p_(f.split)}})},async prune(i){return o(i)},async pruneDaily(i){return e.run("DELETE FROM usage_daily WHERE day < ?",[i]),e.query("SELECT changes() AS n").get()?.n??0}}}async function yi(e){let t=e.logger??se,n=e.nodeId??crypto.randomUUID(),r=e.dayOffsetMinutes??nt(),o=new Set,i=(c)=>{for(let p of o)try{p(c)}catch{}},s=()=>{let c=Ou(e.path,r);return t.debug("store opened",{path:e.path}),{db:c,credentials:Au(c,e.encryptionKey,i),config:xu(c,i),keys:Iu(c,t),usage:Uu(c,n,r),bodies:Tu(c,e.encryptionKey,kr(e.path)),maintenance:Nu(c,n),plugins:Du(c)}},a=s(),u=!0,l=()=>{if(!u)return;a.db.close(),u=!1};return{engine:"sqlite",databasePath:e.path,credentials:{list:()=>a.credentials.list(),listRouting:()=>a.credentials.listRouting(),get:(c)=>a.credentials.get(c),create:(c)=>a.credentials.create(c),update:(c,p)=>a.credentials.update(c,p),updateSecrets:(c,p,d,m)=>a.credentials.updateSecrets(c,p,d,m),remove:(c)=>a.credentials.remove(c),listHealth:()=>a.credentials.listHealth(),updateHealth:(c,p,d)=>a.credentials.updateHealth(c,p,d),listQuota:()=>a.credentials.listQuota(),saveQuota:(c)=>a.credentials.saveQuota(c),listQuotaSamples:(c)=>a.credentials.listQuotaSamples(c),pruneQuotaSamples:(c)=>a.credentials.pruneQuotaSamples(c)},config:{listModels:()=>a.config.listModels(),putModel:(c)=>a.config.putModel(c),removeModel:(c)=>a.config.removeModel(c),getSettings:()=>a.config.getSettings(),putSettings:(c)=>a.config.putSettings(c),getAdminPasswordHash:()=>a.config.getAdminPasswordHash(),setAdminPasswordHashIfAbsent:(c)=>a.config.setAdminPasswordHashIfAbsent(c),setAdminPasswordHash:(c)=>a.config.setAdminPasswordHash(c),getViewerPasswordHash:()=>a.config.getViewerPasswordHash(),setViewerPasswordHash:(c)=>a.config.setViewerPasswordHash(c)},keys:{list:()=>a.keys.list(),findByHash:(c)=>a.keys.findByHash(c),get:(c)=>a.keys.get(c),create:(c)=>a.keys.create(c),importRow:(c)=>a.keys.importRow(c),setLimits:(c,p)=>a.keys.setLimits(c,p),setModelAllowlist:(c,p)=>a.keys.setModelAllowlist(c,p),setExpiry:(c,p)=>a.keys.setExpiry(c,p),setGuardrailPolicy:(c,p)=>a.keys.setGuardrailPolicy(c,p),setSmartRouting:(c,p)=>a.keys.setSmartRouting(c,p),revoke:(c)=>a.keys.revoke(c)},usage:{begin:(c)=>a.usage.begin(c),route:(c,p)=>a.usage.route(c,p),append:(c)=>a.usage.append(c),sweepPending:(c)=>a.usage.sweepPending(c),recent:(c,p)=>a.usage.recent(c,p),page:(c)=>a.usage.page(c),lastUsedByCredential:(c)=>a.usage.lastUsedByCredential(c),scan:(c,p)=>a.usage.scan(c,p),aggregate:(c)=>a.usage.aggregate(c),sumSince:(c,p,d)=>a.usage.sumSince(c,p,d),sumBuckets:(c,p,d,m)=>a.usage.sumBuckets(c,p,d,m),oldestSince:(c,p,d)=>a.usage.oldestSince(c,p,d),rebuildRollup:()=>a.usage.rebuildRollup(),auditRollup:()=>a.usage.auditRollup(),prune:(c)=>a.usage.prune(c),pruneDaily:(c)=>a.usage.pruneDaily(c)},bodies:{put:(c)=>a.bodies.put(c),get:(c)=>a.bodies.get(c),prune:(c)=>a.bodies.prune(c),pruneToCap:(c)=>a.bodies.pruneToCap(c),sweepOrphans:()=>a.bodies.sweepOrphans()},maintenance:{stats:()=>a.maintenance.stats(),tables:()=>a.maintenance.tables(),heartbeat:(c)=>a.maintenance.heartbeat(c),nodes:(c)=>a.maintenance.nodes(c),vacuum:()=>a.maintenance.vacuum(),snapshotTo:(c)=>a.maintenance.snapshotTo(c),inspect:(c)=>a.maintenance.inspect(c)},plugins:{migrate:(c,p)=>a.plugins.migrate(c,p),run:(c,p,d)=>a.plugins.run(c,p,d),all(c,p,d){return a.plugins.all(c,p,d)},get(c,p,d){return a.plugins.get(c,p,d)},transaction(c,p){return a.plugins.transaction(c,p)},listTables:(c)=>a.plugins.listTables(c),dropAll:(c)=>a.plugins.dropAll(c),orphanTables:(c)=>a.plugins.orphanTables(c)},routing:{version:()=>a.db.query("PRAGMA data_version").get()?.data_version??0,subscribe(c){return o.add(c),()=>o.delete(c)}},async reopen(){l(),a=s(),u=!0},close:l}}var Ct=12,$u={algorithm:"argon2id",memoryCost:19456,timeCost:2},_i="sess:";function h_(e,t){return`${_i}${e}:${new Bun.CryptoHasher("sha256").update(t).digest("hex")}`}function Ar(e,t){let n=t.coord??Ft({now:t.now}),r=async(l)=>{let c=Buffer.from(crypto.getRandomValues(new Uint8Array(32))).toString("base64url"),p={expiresAt:t.now()+t.sessionTtlMs,principal:l};return await n.kv.set(h_(l.kind,c),JSON.stringify(p),t.sessionTtlMs),c},o=(l)=>n.kv.delPrefix(`${_i}${l}:`),i=async(l)=>{for(let c of["admin","viewer","client"]){let p=h_(c,l),d=await n.kv.get(p);if(d!==null)return{key:p,session:JSON.parse(d)}}return null},s=async(l,c)=>{if(l===null)return!1;try{return await Bun.password.verify(c,l)}catch{return!1}},a=async(l)=>{let c=await e.keys.get(l);return c!==null&&vr(c,t.now())},u=async(l)=>{if(l.length<Ct)throw Error(`admin password must be at least ${Ct} characters`);await e.config.setAdminPasswordHash(await Bun.password.hash(l,$u)),await n.kv.delPrefix(_i)};return{async isConfigured(){return await e.config.getAdminPasswordHash()!==null},setPassword:u,async setInitialPassword(l){if(l.length<Ct)throw Error(`admin password must be at least ${Ct} characters`);return e.config.setAdminPasswordHashIfAbsent(await Bun.password.hash(l,$u))},async changePassword(l,c){if(c.length<Ct)throw Error(`admin password must be at least ${Ct} characters`);let p=await e.config.getAdminPasswordHash();if(!await s(p,l))return!1;return await u(c),!0},async login(l){let c=await e.config.getAdminPasswordHash();if(!await s(c,l))return null;return r({kind:"admin"})},async isViewerConfigured(){return await e.config.getViewerPasswordHash()!==null},async setViewerPassword(l){if(l!==null&&l.length<Ct)throw Error(`viewer password must be at least ${Ct} characters`);await e.config.setViewerPasswordHash(l===null?null:await Bun.password.hash(l,$u)),await o("viewer")},async loginViewer(l){let c=await e.config.getViewerPasswordHash();if(!await s(c,l))return null;return r({kind:"viewer"})},async loginClient(l){let c=await e.keys.findByHash(await xr(l));if(c===null||!vr(c,t.now()))return null;return r({kind:"client",apiKeyId:c.id})},async verify(l){let c=await i(l);if(c===null)return null;let{key:p,session:d}=c;if(d.expiresAt<=t.now())return await n.kv.del(p),null;if(d.principal.kind==="client"){if(!await a(d.principal.apiKeyId))return await n.kv.del(p),null}return d.principal},async logout(l){let c=await i(l);if(c!==null)await n.kv.del(c.key)},invalidateSessions(){return n.kv.delPrefix(_i)},invalidateKind(l){return o(l)}}}async function Fu(e,t){let n=await e.bodies.get(t);if(n===null)return{requestId:t,detailState:"none",truncated:!1,sizeBytes:0,at:null,artifact:null};return{requestId:n.row.requestId,detailState:n.row.detailState,truncated:n.row.truncated,sizeBytes:n.row.sizeBytes,at:n.row.at,artifact:n.artifact}}var Or={defaultModel:"claude-opus-5-5",authTypes:["oauth","apiKey"],models:[{id:"claude-fable-5-1",label:"Claude Fable 5.1",pricing:{input:10,output:50,cacheRead:0.25,cacheWrite5m:12.5,cacheWrite1h:20},limits:{contextWindow:1e6,maxOutputTokens:128000}},{id:"claude-opus-5-5",label:"Claude Opus 5.5",pricing:{input:4,output:20,cacheRead:0.2,cacheWrite5m:5,cacheWrite1h:8},limits:{contextWindow:1e6,maxOutputTokens:128000}},{id:"claude-fable-5",label:"Claude Fable 5",pricing:{input:10,output:50,cacheRead:1,cacheWrite5m:12.5,cacheWrite1h:20},limits:{contextWindow:1e6,maxOutputTokens:128000}},{id:"claude-opus-5",label:"Claude Opus 5",pricing:{input:5,output:25,cacheRead:0.5,cacheWrite5m:6.25,cacheWrite1h:10},limits:{contextWindow:1e6,maxOutputTokens:128000}},{id:"claude-sonnet-5-5",label:"Claude Sonnet 5.5",pricing:{input:2,output:10,cacheRead:0.1,cacheWrite5m:2.5,cacheWrite1h:4},limits:{contextWindow:1e6,maxOutputTokens:128000}},{id:"claude-sonnet-5",label:"Claude Sonnet 5",pricing:{input:2,output:10,cacheRead:0.2,cacheWrite5m:2.5,cacheWrite1h:4},limits:{contextWindow:1e6,maxOutputTokens:128000}},{id:"claude-haiku-5-5",label:"Claude Haiku 5.5",pricing:{input:0.1,output:0.5,cacheRead:0.01,cacheWrite5m:0.125,cacheWrite1h:0.2},limits:{contextWindow:1e6,maxOutputTokens:128000}},{id:"claude-haiku-4-5",label:"Claude Haiku 4.5",pricing:{input:1,output:5,cacheRead:0.1,cacheWrite5m:1.25,cacheWrite1h:2},limits:{contextWindow:200000,maxOutputTokens:64000},reasoningForm:"budget"}]};var HA=/-\d{8}$/;function y_(e){let t=e.trim();if(t.toLowerCase().endsWith("[1m]"))t=t.slice(0,-4).trim();return t=t.replace(HA,""),Or.models.find((n)=>n.id===t)}function Bu(e){return y_(e)?.reasoningForm??"adaptive"}function __(e){return y_(e)?.limits.maxOutputTokens}var wi={id:"anthropic",capabilities:{tools:!0,images:!0,reasoning:!0},writeOverInput:{fiveMinute:1.25,oneHour:2},catalog:Or,modelPrefixes:["claude-"],presentation:{label:"Anthropic",order:1,tone:"magenta",colour:{light:"oklch(0.56 0.13 45)",dark:"oklch(0.74 0.12 48)"},pasteHint:"Authorize in the browser, then paste the code Anthropic shows you."}};var bi=65536;var fe={cacheWrite5m:0,cacheWrite1h:0},WA={input:0,output:0,cacheRead:0,...fe},Be={contextWindow:1048576,maxOutputTokens:65536},Cr={contextWindow:1048576,maxOutputTokens:65535},ki={defaultModel:"gemini-3.8-flash-high",authTypes:["oauth"],models:[{id:"gemini-3.8-flash-high",label:"Gemini 3.8 Flash (High)",pricing:{input:1.5,output:7.5,cacheRead:0.15,...fe},limits:Be},{id:"gemini-3.8-flash-medium",label:"Gemini 3.8 Flash (Medium)",pricing:{input:1.5,output:7.5,cacheRead:0.15,...fe},limits:Be},{id:"gemini-3.8-flash-low",label:"Gemini 3.8 Flash (Low)",pricing:{input:1.5,output:7.5,cacheRead:0.15,...fe},limits:Be},{id:"gemini-3.7-flash-high",label:"Gemini 3.7 Flash (High)",pricing:{input:1.5,output:7.5,cacheRead:0.15,...fe},limits:Be},{id:"gemini-3.7-flash-medium",label:"Gemini 3.7 Flash (Medium)",pricing:{input:1.5,output:7.5,cacheRead:0.15,...fe},limits:Be},{id:"gemini-3.7-flash-low",label:"Gemini 3.7 Flash (Low)",pricing:{input:1.5,output:7.5,cacheRead:0.15,...fe},limits:Be},{id:"gemini-3.6-flash-high",label:"Gemini 3.6 Flash (High)",pricing:{input:1.5,output:7.5,cacheRead:0.15,...fe},limits:Be},{id:"gemini-3.6-flash-medium",label:"Gemini 3.6 Flash (Medium)",pricing:{input:1.5,output:7.5,cacheRead:0.15,...fe},limits:Be},{id:"gemini-3.6-flash-low",label:"Gemini 3.6 Flash (Low)",pricing:{input:1.5,output:7.5,cacheRead:0.15,...fe},limits:Be},{id:"gemini-3-flash-agent",label:"Gemini 3.5 Flash (High)",pricing:{input:1.5,output:9,cacheRead:0.15,...fe},limits:Be},{id:"gemini-3.5-flash-low",label:"Gemini 3.5 Flash (Medium)",pricing:{input:1.5,output:9,cacheRead:0.15,...fe},limits:Be},{id:"gemini-3.5-flash-extra-low",label:"Gemini 3.5 Flash (Low)",pricing:{input:1.5,output:9,cacheRead:0.15,...fe},limits:Be},{id:"gemini-3-flash",label:"Gemini 3 Flash",pricing:WA,limits:Be},{id:"gemini-3.5-flash-lite",label:"Gemini 3.5 Flash Lite",pricing:{input:0.3,output:2.5,cacheRead:0.03,...fe},limits:Cr},{id:"gemini-pro-agent",label:"Gemini 3.1 Pro (High)",pricing:{input:2,output:12,cacheRead:0.2,...fe},limits:Cr},{id:"gemini-3.1-pro-low",label:"Gemini 3.1 Pro (Low)",pricing:{input:2,output:12,cacheRead:0.2,...fe},limits:Cr},{id:"gemini-3.1-flash-lite",label:"Gemini 3.1 Flash Lite",pricing:{input:0.25,output:1.5,cacheRead:0.025,...fe},limits:Cr},{id:"gemini-2.5-pro",label:"Gemini 2.5 Pro",pricing:{input:1.25,output:10,cacheRead:0.125,...fe},limits:Cr}]};var Ei={id:"antigravity",capabilities:{tools:!0,images:!0,reasoning:!0},writeOverInput:{fiveMinute:0,oneHour:0},catalog:ki,modelPrefixes:["gemini-"],callback:{uri:"https://antigravity.google/oauth-callback",label:"Antigravity"},presentation:{label:"Antigravity",order:6,tone:"violet",colour:{light:"oklch(0.52 0.14 277)",dark:"oklch(0.74 0.14 277)"},pasteHint:"Approve in any browser, then paste the whole URL it lands on. A code shown on its own works too."}};var vi={defaultModel:"",authTypes:["apiKey"],models:[]};var Ti={id:"custom",capabilities:{tools:!0,images:!0,reasoning:!0},writeOverInput:{fiveMinute:0,oneHour:0},catalog:vi,modelPrefixes:[],presentation:{label:"OpenAI Compatible",order:8,tone:"cyan",colour:{light:"oklch(0.5 0.03 258)",dark:"oklch(0.72 0.03 258)"},pasteHint:"Enter endpoint metadata and API key."}};var Ri={defaultModel:"grok-4.6",authTypes:["oauth","apiKey"],models:[{id:"grok-4.6",label:"Grok 4.6",pricing:{input:2,output:6,cacheRead:0.5,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:500000,maxOutputTokens:128000}},{id:"grok-4.5",label:"Grok 4.5",pricing:{input:2,output:6,cacheRead:0.3,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:500000,maxOutputTokens:128000}},{id:"grok-4.3",label:"Grok 4.3",pricing:{input:1.25,output:2.5,cacheRead:0.2,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:1e6,maxOutputTokens:128000}},{id:"grok-4.20-0309-reasoning",label:"Grok 4.20 \u2014 reasoning",pricing:{input:1.25,output:2.5,cacheRead:0.2,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:1e6,maxOutputTokens:128000}},{id:"grok-4.20-0309-non-reasoning",label:"Grok 4.20 \u2014 non-reasoning",pricing:{input:1.25,output:2.5,cacheRead:0.2,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:1e6,maxOutputTokens:128000}},{id:"grok-4.20-multi-agent-0309",label:"Grok 4.20 \u2014 multi-agent",pricing:{input:1.25,output:2.5,cacheRead:0.2,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:1e6,maxOutputTokens:128000}}]};var Si={id:"grok",capabilities:{tools:!0,images:!0,reasoning:!0},writeOverInput:{fiveMinute:0,oneHour:0},catalog:Ri,modelPrefixes:["grok-"],callback:{uri:"http://127.0.0.1:56121/callback",label:"Grok"},presentation:{label:"Grok",order:5,tone:"yellow",colour:{light:"oklch(0.52 0.14 125)",dark:"oklch(0.74 0.14 125)"},pasteHint:"Authorize in the browser. When it redirects to 127.0.0.1, paste the whole URL."}};var xi={defaultModel:"anthropic/claude-sonnet-5",authTypes:["oauth","apiKey"],models:[{id:"anthropic/claude-fable-5",label:"Claude Fable 5",pricing:{input:10,output:50,cacheRead:1,cacheWrite5m:12.5,cacheWrite1h:12.5},limits:{contextWindow:1e6,maxOutputTokens:128000}},{id:"anthropic/claude-opus-5",label:"Claude Opus 5",pricing:{input:5,output:25,cacheRead:0.5,cacheWrite5m:6.25,cacheWrite1h:6.25},limits:{contextWindow:1e6,maxOutputTokens:128000}},{id:"anthropic/claude-sonnet-5",label:"Claude Sonnet 5",pricing:{input:2,output:10,cacheRead:0.2,cacheWrite5m:2.5,cacheWrite1h:2.5},limits:{contextWindow:1e6,maxOutputTokens:128000}},{id:"anthropic/claude-haiku-4.5",label:"Claude Haiku 4.5",pricing:{input:1,output:5,cacheRead:0.1,cacheWrite5m:1.25,cacheWrite1h:1.25},limits:{contextWindow:200000,maxOutputTokens:64000}},{id:"openai/gpt-5.6-sol",label:"GPT-5.6 Sol",pricing:{input:5,output:30,cacheRead:0.5,cacheWrite5m:6.25,cacheWrite1h:6.25},limits:{contextWindow:1050000,maxOutputTokens:128000}},{id:"openai/gpt-5.6-terra",label:"GPT-5.6 Terra",pricing:{input:2,output:12,cacheRead:0.2,cacheWrite5m:2.5,cacheWrite1h:2.5},limits:{contextWindow:1050000,maxOutputTokens:128000}},{id:"openai/gpt-5.6-luna",label:"GPT-5.6 Luna",pricing:{input:0.2,output:1.2,cacheRead:0.02,cacheWrite5m:0.25,cacheWrite1h:0.25},limits:{contextWindow:1050000,maxOutputTokens:128000}},{id:"google/gemini-3.1-pro-preview",label:"Gemini 3.1 Pro Preview",pricing:{input:2,output:12,cacheRead:0.2,cacheWrite5m:0.375,cacheWrite1h:0.375},limits:{contextWindow:1048576,maxOutputTokens:65536}},{id:"google/gemini-3.7-flash",label:"Gemini 3.7 Flash",pricing:{input:0.75,output:3.75,cacheRead:0.075,cacheWrite5m:0.041667,cacheWrite1h:0.041667},limits:{contextWindow:1048576,maxOutputTokens:65536}},{id:"moonshotai/kimi-k3",label:"Kimi K3",pricing:{input:3,output:15,cacheRead:0.3,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:1048576,maxOutputTokens:131072}},{id:"nvidia/nemotron-3-ultra-550b-a55b:free",label:"Nemotron 3 Ultra 550B \u2014 free",pricing:{input:0,output:0,cacheRead:0,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:1e6,maxOutputTokens:65536},auth:["apiKey"]},{id:"nvidia/nemotron-3.5-lightning:free",label:"Nemotron 3.5 Lightning \u2014 free",pricing:{input:0,output:0,cacheRead:0,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:1e6,maxOutputTokens:65536},auth:["apiKey"]},{id:"dots-studio/dots-3-note-preview:free",label:"Dots 3 Note Preview \u2014 free",pricing:{input:0,output:0,cacheRead:0,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:512000,maxOutputTokens:512000},auth:["apiKey"]},{id:"cohere/north-mini-code:free",label:"North Mini Code \u2014 free",pricing:{input:0,output:0,cacheRead:0,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:256000,maxOutputTokens:64000},auth:["apiKey"]},{id:"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free",label:"Nemotron 3 Nano Omni 30B Reasoning \u2014 free",pricing:{input:0,output:0,cacheRead:0,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:256000,maxOutputTokens:65536},auth:["apiKey"]},{id:"stepfun/step-3.7-flash:free",label:"Step 3.7 Flash \u2014 free",pricing:{input:0,output:0,cacheRead:0,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:262144,maxOutputTokens:262144},auth:["apiKey"]},{id:"nvidia/nemotron-3-super-120b-a12b:free",label:"Nemotron 3 Super 120B \u2014 free",pricing:{input:0,output:0,cacheRead:0,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:262144,maxOutputTokens:262144},auth:["apiKey"]},{id:"tencent/hy3:free",label:"Tencent HY3 \u2014 free",pricing:{input:0,output:0,cacheRead:0,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:262144,maxOutputTokens:128000},auth:["apiKey"]},{id:"poolside/laguna-s-2.1:free",label:"Laguna S 2.1 \u2014 free",pricing:{input:0,output:0,cacheRead:0,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:262144,maxOutputTokens:32768},auth:["apiKey"]},{id:"poolside/laguna-xs-2.1:free",label:"Laguna XS 2.1 \u2014 free",pricing:{input:0,output:0,cacheRead:0,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:262144,maxOutputTokens:32768},auth:["apiKey"]},{id:"liquid/lfm-2.5-2.6b:free",label:"LFM 2.5 2.6B \u2014 free",pricing:{input:0,output:0,cacheRead:0,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:128000,maxOutputTokens:8192},auth:["apiKey"]},{id:"nvidia/nemotron-3.5-content-safety:free",label:"Nemotron 3.5 Content Safety \u2014 free",pricing:{input:0,output:0,cacheRead:0,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:128000,maxOutputTokens:8192},auth:["apiKey"]},{id:"kilo-auto/frontier",label:"Kilo Auto \u2014 Frontier",pricing:{input:0,output:0,cacheRead:0,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:1e6,maxOutputTokens:128000},auth:["apiKey"]},{id:"kilo-auto/balanced",label:"Kilo Auto \u2014 Balanced",pricing:{input:0,output:0,cacheRead:0,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:1e6,maxOutputTokens:65536},auth:["apiKey"]},{id:"kilo-auto/efficient",label:"Kilo Auto \u2014 Efficient",pricing:{input:0,output:0,cacheRead:0,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:1e6,maxOutputTokens:65536},auth:["apiKey"]},{id:"kilo-auto/small",label:"Kilo Auto \u2014 Small",pricing:{input:0.05,output:0.4,cacheRead:0.005,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:262144,maxOutputTokens:32768},auth:["apiKey"]},{id:"kilo-auto/free",label:"Kilo Auto \u2014 Free",pricing:{input:0,output:0,cacheRead:0,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:256000,maxOutputTokens:1e4},auth:["apiKey"]}]};var Ai={id:"kilo",capabilities:{tools:!0,images:!0,reasoning:!0},writeOverInput:{fiveMinute:0,oneHour:0},catalog:xi,modelPrefixes:[],presentation:{label:"Kilo",order:4,tone:"orange",colour:{light:"oklch(0.52 0.14 224)",dark:"oklch(0.74 0.14 224)"},pasteHint:"Approve the code on Kilo's device page. This dialog finishes on its own."}};var Oi={defaultModel:"k3-256k",authTypes:["oauth","apiKey"],models:[{id:"k3-256k",label:"Kimi K3 \u2014 256K",pricing:{input:3,output:15,cacheRead:0.3,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:262144,maxOutputTokens:131072}},{id:"k3",label:"Kimi K3 \u2014 up to 1M",pricing:{input:3,output:15,cacheRead:0.3,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:1048576,maxOutputTokens:131072}},{id:"kimi-for-coding",label:"Kimi K2.7 Code",pricing:{input:0.95,output:4,cacheRead:0.19,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:262144,maxOutputTokens:131072}},{id:"kimi-for-coding-highspeed",label:"Kimi K2.7 Code \u2014 High Speed",pricing:{input:0.95,output:8,cacheRead:0.19,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:262144,maxOutputTokens:131072}}]};var Ci={id:"kimi",capabilities:{tools:!0,images:!1,reasoning:!1},writeOverInput:{fiveMinute:0,oneHour:0},catalog:Oi,modelPrefixes:["kimi-","moonshot"],presentation:{label:"Kimi",order:3,tone:"blue",colour:{light:"oklch(0.53 0.17 330)",dark:"oklch(0.72 0.16 330)"},pasteHint:"Enter the code on Kimi's device page. This dialog finishes on its own."}};var Pi={defaultModel:"muse-spark-1.3",authTypes:["oauth","apiKey"],models:[{id:"muse-spark-1.3",label:"Muse Spark 1.3",pricing:{input:1.25,output:4.25,cacheRead:0.15,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:1048576,maxOutputTokens:943718}},{id:"muse-spark-1.3-contributor",label:"Muse Spark 1.3 \u2014 Meta trains on this traffic",pricing:{input:0.1,output:0.2,cacheRead:0.002,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:1048576,maxOutputTokens:943718}},{id:"muse-spark-1.2",label:"Muse Spark 1.2",pricing:{input:1.25,output:4.25,cacheRead:0.15,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:1048576,maxOutputTokens:943718}},{id:"muse-spark-1.2-contributor",label:"Muse Spark 1.2 \u2014 Meta trains on this traffic",pricing:{input:0.1,output:0.2,cacheRead:0.002,cacheWrite5m:0,cacheWrite1h:0},limits:{contextWindow:1048576,maxOutputTokens:943718}}]};var Ii={id:"muse",capabilities:{tools:!0,images:!0,reasoning:!0},writeOverInput:{fiveMinute:0,oneHour:0},catalog:Pi,modelPrefixes:["muse-","muse-spark"],presentation:{label:"Muse",order:7,tone:"azure",colour:{light:"oklch(0.55 0.23 262)",dark:"oklch(0.72 0.17 262)"},pasteHint:"Enter the code on Meta's device page. This dialog finishes on its own."}};var Li={defaultModel:"gpt-6.1-sol",authTypes:["oauth","apiKey"],models:[{id:"gpt-6-astra",label:"GPT-6 Astra",pricing:{input:10,output:50,cacheRead:1,cacheWrite5m:12.5,cacheWrite1h:0},limits:{contextWindow:922000,maxOutputTokens:128000},oauthLimits:{contextWindow:272000,maxOutputTokens:128000}},{id:"gpt-6.1-sol",label:"GPT-6.1 Sol",pricing:{input:2,output:10,cacheRead:0.1,cacheWrite5m:2.5,cacheWrite1h:0},limits:{contextWindow:922000,maxOutputTokens:128000},oauthLimits:{contextWindow:272000,maxOutputTokens:128000}},{id:"gpt-6.1-terra",label:"GPT-6.1 Terra",pricing:{input:1,output:5,cacheRead:0.05,cacheWrite5m:1.25,cacheWrite1h:0},limits:{contextWindow:922000,maxOutputTokens:128000},oauthLimits:{contextWindow:500000,maxOutputTokens:128000}},{id:"gpt-6-sol",label:"GPT-6 Sol",pricing:{input:2,output:10,cacheRead:0.2,cacheWrite5m:2.5,cacheWrite1h:0},limits:{contextWindow:922000,maxOutputTokens:128000},oauthLimits:{contextWindow:272000,maxOutputTokens:128000}},{id:"gpt-6-luna",label:"GPT-6 Luna",pricing:{input:0.1,output:0.5,cacheRead:0.01,cacheWrite5m:0.125,cacheWrite1h:0},limits:{contextWindow:922000,maxOutputTokens:128000},oauthLimits:{contextWindow:272000,maxOutputTokens:128000}},{id:"gpt-5.6",label:"GPT-5.6 \u2014 routes to Sol",pricing:{input:4,output:20,cacheRead:0.4,cacheWrite5m:5,cacheWrite1h:0},limits:{contextWindow:922000,maxOutputTokens:128000},oauthLimits:{contextWindow:272000,maxOutputTokens:128000}},{id:"gpt-5.6-sol",label:"GPT-5.6 Sol",pricing:{input:4,output:20,cacheRead:0.4,cacheWrite5m:5,cacheWrite1h:0},limits:{contextWindow:922000,maxOutputTokens:128000},oauthLimits:{contextWindow:272000,maxOutputTokens:128000}},{id:"gpt-5.6-terra",label:"GPT-5.6 Terra",pricing:{input:2,output:12,cacheRead:0.2,cacheWrite5m:2.5,cacheWrite1h:0},limits:{contextWindow:922000,maxOutputTokens:128000},oauthLimits:{contextWindow:272000,maxOutputTokens:128000}},{id:"gpt-5.6-luna",label:"GPT-5.6 Luna",pricing:{input:0.2,output:1.2,cacheRead:0.02,cacheWrite5m:0.25,cacheWrite1h:0},limits:{contextWindow:922000,maxOutputTokens:128000},oauthLimits:{contextWindow:272000,maxOutputTokens:128000}}]};var Ni={id:"openai",capabilities:{tools:!0,images:!0,reasoning:!0},writeOverInput:{fiveMinute:0,oneHour:0},catalog:Li,modelPrefixes:["gpt-","o1","o3","o4"],callback:{uri:"http://localhost:1455/auth/callback",label:"OpenAI"},presentation:{label:"OpenAI",order:2,tone:"green",colour:{light:"oklch(0.5 0.09 190)",dark:"oklch(0.76 0.1 190)"},pasteHint:"Authorize in the browser. When it redirects to localhost, paste the whole URL."}};var cn=/^[a-z][a-z0-9-]{0,31}$/;function zu(e){return typeof e==="string"&&cn.test(e)}var M={anthropic:wi,openai:Ni,kimi:Ci,kilo:Ai,grok:Si,antigravity:Ei,muse:Ii,custom:Ti};Object.setPrototypeOf(M,null);var w_=Object.keys(M);var b_=16,k_=new Set(["1","true","yes","on"]),E_=/^\d+$/,jA=/^-?\d+$/;function qu(e,t){return e?.trim()||t}function Hu(e){let t=e.OMNI_ENCRYPTION_KEY;if(typeof t!=="string"||t.length<b_)throw Error(`OMNI_ENCRYPTION_KEY must be set to at least ${b_} characters. Generate one with: openssl rand -base64 32`);let n=qu(e.OMNI_HOST,"127.0.0.1"),r=e.OMNI_PORT??"9000",o=Number(r);if(!E_.test(r)||!Number.isInteger(o)||o<1||o>65535)throw Error(`OMNI_PORT must be an integer between 1 and 65535, got "${r}"`);let i=`http://${n}:${o}`,s=qu(e.OMNI_BASE_URL,i).replace(/\/+$/,"")||i,a=e.OMNI_STATIC_DIR?.trim(),u=e.OMNI_LOG_FILE?.trim(),l=k_.has((e.OMNI_CLUSTER_MODE??"").trim().toLowerCase()),c=e.OMNI_DATABASE_URL?.trim()||void 0,p=e.OMNI_REDIS_URL?.trim()||void 0;if(l){if(c===void 0||!c.startsWith("postgres"))throw Error("OMNI_CLUSTER_MODE=true needs OMNI_DATABASE_URL to be a postgres:// URL");if(p===void 0)throw Error("OMNI_CLUSTER_MODE=true needs OMNI_REDIS_URL")}else if(c!==void 0||p!==void 0)throw Error("OMNI_DATABASE_URL and OMNI_REDIS_URL are cluster-mode settings; set OMNI_CLUSTER_MODE=true or unset them");let d=e.OMNI_DAY_OFFSET_MINUTES?.trim(),m=d===void 0?NaN:Number(d),g=d!==void 0&&jA.test(d)&&Number.isInteger(m)&&m>=-1440&&m<=1440,h=g?m:nt(),f=d!==void 0&&!g?d:null,y=k_.has((e.OMNI_BODY_LOGGING_ALLOWED??"").trim().toLowerCase()),_=e.OMNI_LOG_LEVEL?.trim(),w=Yo(_),v=e.OMNI_METRICS_TOKEN?.trim()||null,k=e.OMNI_METRICS_MAX_SERIES??"5000",T=Number(k);if(!E_.test(k)||T<1)throw Error(`OMNI_METRICS_MAX_SERIES must be a positive integer, got "${k}"`);let x=e.OMNI_OTLP_ENDPOINT?.trim().replace(/\/+$/,"")||null,Y=e.OMNI_OTLP_HEADERS?.trim()||null,_e=e.OMNI_TRACE_SAMPLE??"1.0",Ne=Number(_e);if(!Number.isFinite(Ne)||Ne<0||Ne>1)throw Error(`OMNI_TRACE_SAMPLE must be between 0 and 1, got "${_e}"`);return{logLevel:w??"info",logLevelFallbackFrom:w===null&&_?_:null,port:o,host:n,databasePath:qu(e.OMNI_DB_PATH,"./omnigateway.db"),encryptionKey:t,baseUrl:s,staticDir:a===void 0||a.length===0?null:a,bodyLoggingAllowed:y,logFile:u===void 0||u.length===0?null:u,clusterMode:l,databaseUrl:l?c??null:null,redisUrl:l?p??null:null,dayOffsetMinutes:h,dayOffsetFallbackFrom:f,metricsToken:v,metricsMaxSeries:T,otlpEndpoint:x,otlpHeaders:Y,traceSample:Ne}}var Di="oauth:pending:";function Wu(e){let t=e.coord??Ft({now:e.now});return{async put(n){let r=Buffer.from(crypto.getRandomValues(new Uint8Array(32))).toString("base64url");return await t.kv.set(Di+r,JSON.stringify(n),e.ttlMs),r},async take(n){let r=await t.kv.get(Di+n);if(r===null)return null;return await t.kv.del(Di+n),JSON.parse(r)},async peek(n){let r=await t.kv.get(Di+n);return r===null?null:JSON.parse(r)}}}function KA(e){if(e===401||e===403)return"AUTH";if(e===402)return"QUOTA_EXHAUSTED";if(e===404)return"MODEL_UNAVAILABLE";if(e===413||e===422||e===400)return"BAD_REQUEST";if(e===429)return"RATE_LIMIT";if(e===529)return"OVERLOADED";if(e>=500)return"UPSTREAM";return"UPSTREAM"}function v_(e,t){if(e===null)return;let n=Number(e);if(Number.isFinite(n))return Math.max(0,n*1000);let r=Date.parse(e);return Number.isNaN(r)?void 0:Math.max(0,r-t)}async function ju(e,t,n=Date.now()){let r=await e.text().catch(()=>""),o=r.slice(0,500),i=KA(e.status);try{let a=JSON.parse(r);if(typeof a.error?.message==="string")o=a.error.message.slice(0,500);else if(typeof a.detail==="string")o=a.detail.slice(0,500);let u=a.error?.type??a.error?.code;if(u==="overloaded_error")i="OVERLOADED";else if(u==="insufficient_quota")i="QUOTA_EXHAUSTED";else if(u==="context_length_exceeded")i="BAD_REQUEST";else if(u==="content_policy_violation")i="CONTENT_FILTER"}catch{}let s=v_(e.headers.get("retry-after"),n);return new b(i,o||`${t} returned ${e.status}`,{provider:t,status:e.status,...s===void 0?{}:{retryAfterMs:s}})}function Pr(e,t){let n;try{n=new URL(e)}catch{return!1}return t.some((r)=>{try{return new URL(r).origin===n.origin}catch{return!1}})}function Ir(e){if(typeof e!=="string")return!1;try{let t=new URL(e);return t.protocol==="https:"||t.protocol==="http:"}catch{return!1}}var GA=new Set(["GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS"]);function Lr(e){return typeof e==="string"&&GA.has(e)}function Dn(e,t,n){return new b("UPSTREAM",`${e} codec ${t} ${n}`,{provider:e,gatewayAuthored:!0})}function ZA(e,t,n){let r=(l)=>e.filter(([c])=>c.toLowerCase()===l),o=r("content-length"),i=r("content-encoding");if(n!==void 0)return o.length===0&&i.length===1&&i[0]?.[1].trim().toLowerCase()===n;if(o.length>1||i.length>1)return!1;let s=o[0]?.[1],a=new TextEncoder().encode(t).byteLength;if(s!==void 0&&s!==String(a))return!1;let u=i[0]?.[1];return u===void 0||u.trim().toLowerCase()==="identity"}function Mi(e){if(!Array.isArray(e))return[];return e.filter((t)=>typeof t==="string").slice(0,16).map((t)=>t.slice(0,64))}function T_(e,t){return new b(t.code,t.message,{provider:e,...t.upstreamStatus===void 0?{}:{status:t.upstreamStatus},...t.retryAfterMs===void 0?{}:{retryAfterMs:t.retryAfterMs},degradations:Mi(t.degradations),cause:t})}function XA(e){return e instanceof Error&&e.name==="GatewayError"}function Ku(e,t,n){try{return n()}catch(r){if(!(r instanceof b)&&XA(r))throw Dn(e,t,"threw a GatewayError from its own bundled copy, whose classification the host cannot trust; build the error with input.fail() instead");if(r instanceof b)throw T_(e,r);throw Dn(e,t,"threw")}}async function*VA(e,t){try{yield*t}catch(n){if(n instanceof b)throw n;throw Dn(e,"decode","threw")}}function le(e,t,n,r){return{id:e,capabilities:t,async send(o){let i=(m,g,h)=>new b(m,g,{provider:e,...h?.status===void 0?{}:{status:h.status},...h?.retryAfterMs===void 0?{}:{retryAfterMs:h.retryAfterMs},degradations:Mi(h?.degradations)}),s=Ku(e,"buildRequest",()=>n.buildRequest({request:o.request,model:o.model,credentials:o.credentials,fail:i,...o.requestId===void 0?{}:{requestId:o.requestId},...o.autoCache===void 0?{}:{autoCacheEnabled:o.autoCache},...o.maxOutputTokens===void 0?{}:{maxOutputTokens:o.maxOutputTokens},...o.requestStartedAt===void 0?{}:{requestStartedAt:o.requestStartedAt}})),a=s?.request??{},u={url:a.url,method:a.method,headers:Array.isArray(a.headers)?[...a.headers]:a.headers,body:a.body,bodyEncoding:a.bodyEncoding};if(typeof u.body!=="string"||u.bodyEncoding!==void 0&&u.bodyEncoding!=="zstd"||!Ir(u.url)||!Lr(u.method)||!Array.isArray(u.headers)||!u.headers.every((m)=>Array.isArray(m)&&m.length===2&&typeof m[0]==="string"&&typeof m[1]==="string")||!ZA(u.headers,u.body,u.bodyEncoding))throw Dn(e,"buildRequest","did not return a usable request");let l={url:u.url,method:u.method,headers:u.headers,body:u.body,...u.bodyEncoding==="zstd"?{bodyEncoding:u.bodyEncoding}:{}};if(r!==void 0&&!Pr(u.url,r))throw Dn(e,"buildRequest","described a request to an origin its manifest does not declare");let c=await o.http({provider:e,...l,signal:o.signal,...o.requestId===void 0?{}:{requestId:o.requestId}});if(c.status<200||c.status>=300){let m=await c.text().catch(()=>""),g=await ju({status:c.status,headers:c.headers,body:null,text:async()=>m},e);Object.freeze(g.degradations),Object.freeze(g);let h=Ku(e,"classifyError",()=>n.classifyError?.({status:c.status,body:m,headers:c.headers,fallback:g,fail:i,degradations:Mi(s.degradations),decodeState:s.decodeState}));if(h!==void 0){if(!(h instanceof b))throw Dn(e,"classifyError","returned something that is not an error");throw T_(e,h)}throw g}let p=c.body;if(p===null)throw new b("UPSTREAM","empty response body",{provider:e,gatewayAuthored:!0});let d=s.cloakedTools;return{events:VA(e,Ku(e,"decode",()=>n.decode({body:p,decodeState:s.decodeState,headers:c.headers,fail:i}))),degradations:Mi(s.degradations),...Number.isInteger(d)&&(d??0)>=0?{cloakedTools:d}:{}}}}}var Gu=/^[\x20-\x7E]{1,200}$/;function G(e,t){let n=Bun.env[e];if(typeof n!=="string"||n.length===0)return t;return Gu.test(n)?n:t}function Zu(e){let t=Bun.env[e];if(typeof t!=="string"||t.length===0)return null;return Gu.test(t)?t:null}function De(e,t){let n=Bun.env[e];if(typeof n!=="string"||n.length===0)return t;let r=n.split(",").map((o)=>o.trim()).filter((o)=>o.length>0&&Gu.test(o));return r.length>0?r:t}function Xu(e,t){return{os:e==="darwin"?"MacOS":e==="linux"?"Linux":e==="win32"?"Windows":"Unknown",arch:t}}function Vu(e,t){return{os:e.toLowerCase(),arch:t==="arm64"?"aarch64":t}}function ge(e,t){let n=[...e],r=[];for(let o of t){let i=o.toLowerCase(),s=n.findIndex(([a])=>a.toLowerCase()===i);if(s!==-1)r.push(...n.splice(s,1))}return r.push(...n),r}function he(e,t){let n=[...e];for(let[r,o]of t){let i=r.toLowerCase(),s=n.findIndex(([a])=>a.toLowerCase()===i);if(s===-1)n.push([r,o]);else n[s]=[r,o]}return n}var R_=Xu(process.platform,process.arch),ln=G("OMNI_ANTHROPIC_CLI_VERSION","2.1.296"),Xe={headers:[["User-Agent",G("OMNI_UA_ANTHROPIC",`claude-cli/${ln} (external, cli)`)],["x-app","cli"],["anthropic-dangerous-direct-browser-access","true"],["X-Stainless-Lang","js"],["X-Stainless-Package-Version",G("OMNI_ANTHROPIC_STAINLESS_PACKAGE_VERSION","0.128.0")],["X-Stainless-OS",Zu("OMNI_ANTHROPIC_STAINLESS_OS")??R_.os],["X-Stainless-Arch",Zu("OMNI_ANTHROPIC_STAINLESS_ARCH")??R_.arch],["X-Stainless-Runtime","node"],["X-Stainless-Runtime-Version",G("OMNI_ANTHROPIC_STAINLESS_RUNTIME_VERSION","v26.3.0")],["X-Stainless-Retry-Count","0"],["Accept","application/json"]],order:De("OMNI_ORDER_ANTHROPIC",["Accept","Authorization","Content-Type","User-Agent","X-Stainless-Arch","X-Stainless-Lang","X-Stainless-OS","X-Stainless-Package-Version","X-Stainless-Retry-Count","X-Stainless-Runtime","X-Stainless-Runtime-Version","X-Stainless-Timeout","anthropic-beta","anthropic-dangerous-direct-browser-access","anthropic-version","x-api-key","x-app","Connection","Host","Accept-Encoding","Content-Length"])},Nr=["model","messages","system","tools","tool_choice","metadata","max_tokens","temperature","thinking","context_management","output_config","stream"];var QA=G("OMNI_ANTIGRAVITY_IDE_VERSION","2.12.2"),YA="darwin/arm64",ot={headers:[["User-Agent",G("OMNI_UA_ANTIGRAVITY",`antigravity/ide/${QA} ${YA}`)],["Content-Type","application/json"],["Accept","text/event-stream"]],order:De("OMNI_ORDER_ANTIGRAVITY",["Host","Content-Type","Authorization","User-Agent","X-Goog-Api-Client","Accept","Accept-Encoding","Content-Length"])},S_=["project","requestId","model","userAgent","requestType","request"];var Qu={headers:[],order:[]},x_=[];var A_=G("OMNI_GROK_CLI_VERSION","0.2.120"),O_=Vu(process.platform,process.arch),Pt={headers:[["User-Agent",G("OMNI_UA_GROK",`grok-shell/${A_} (${O_.os}; ${O_.arch})`)],["x-grok-client-identifier","grok-shell"],["x-grok-client-version",A_],["x-grok-client-mode","headless"],["Accept","text/event-stream"]],order:De("OMNI_ORDER_GROK",["Host","Content-Type","Authorization","X-XAI-Token-Auth","x-authenticateresponse","x-grok-client-identifier","x-grok-client-version","x-grok-client-mode","x-grok-agent-id","x-grok-req-id","x-grok-conv-id","x-grok-session-id","x-grok-model-override","User-Agent","Accept","Accept-Encoding","Content-Length"])},Ui=["model","stream","input","instructions","store","reasoning","prompt_cache_key","tools","tool_choice","include","service_tier","client_metadata","parallel_tool_calls","metadata"];var JA=G("OMNI_KILO_CLI_VERSION","4.140.0"),yt={headers:[["User-Agent",G("OMNI_UA_KILO",`Kilo-Code/${JA}`)],["X-KILOCODE-EDITORNAME",G("OMNI_KILO_EDITOR_NAME","vscode")],["Accept","text/event-stream"]],order:De("OMNI_ORDER_KILO",["Host","Content-Type","Authorization","X-Kilocode-OrganizationID","X-KILOCODE-EDITORNAME","User-Agent","Accept","Accept-Encoding","Content-Length"])},$i=["model","messages","tools","tool_choice","max_tokens","temperature","reasoning","stream"];var C_=G("OMNI_KIMI_CLI_VERSION","0.26.0"),It={headers:[["User-Agent",G("OMNI_UA_KIMI",`kimi-code-cli/${C_}`)],["X-Msh-Platform","kimi_code_cli"],["X-Msh-Version",C_],["Accept","application/json"]],order:De("OMNI_ORDER_KIMI",["Host","Content-Type","Authorization","X-Msh-Platform","X-Msh-Version","X-Msh-Device-Id","X-Msh-Device-Name","X-Msh-Device-Model","X-Msh-Os-Version","User-Agent","Accept","Accept-Encoding","Content-Length"])},Fi=["model","messages","tools","tool_choice","max_tokens","temperature","stream"];var e0=G("OMNI_MUSE_CLI_VERSION","1.0.3"),_t={headers:[["User-Agent",G("OMNI_UA_MUSE",`muse-code/${e0}`)],["x-api-version",G("OMNI_MUSE_API_VERSION","1.0.0")],["Accept","text/event-stream"]],order:De("OMNI_ORDER_MUSE",["Host","Content-Type","Authorization","x-meta-ai-gateway-session-id","x-api-version","Accept","User-Agent","Accept-Encoding","Content-Length"])},Bi=["model","stream","input","instructions","store","reasoning","prompt_cache_key","max_output_tokens","temperature","tools","tool_choice","include","parallel_tool_calls","metadata"];var Yu=G("OMNI_OPENAI_CLI_VERSION","0.165.0"),Ju=G("OMNI_OPENAI_UA_PLATFORM","Windows 10.0.26200"),t0=G("OMNI_OPENAI_UA_ARCH","x86_64"),n0=G("OMNI_OPENAI_UA_TERMINAL","WindowsTerminal"),Dr=G("OMNI_OPENAI_ORIGINATOR","codex-tui"),P_=Ju.startsWith("Windows")?"windows_elevated":/^(Mac OS|macOS)/.test(Ju)?"seatbelt":"seccomp",it={headers:[["user-agent",G("OMNI_UA_OPENAI",`${Dr}/${Yu} (${Ju}; ${t0}) ${n0} (${Dr}; ${Yu})`)],["originator",Dr],["version",Yu],["x-codex-beta-features","remote_compaction_v2"],["accept","text/event-stream"]],order:De("OMNI_ORDER_OPENAI",["version","x-codex-beta-features","x-codex-window-id","x-codex-turn-metadata","x-openai-internal-codex-responses-lite","x-codex-routing-hint","x-client-request-id","session-id","thread-id","accept","content-encoding","content-type","authorization","chatgpt-account-id","originator","user-agent","host","content-length"])},zi=["model","stream","service_tier","input","instructions","tools","tool_choice","parallel_tool_calls","reasoning","store","stream_options","include","prompt_cache_key","text","client_metadata","access_programs","metadata"];var ec={anthropic:Nr,openai:zi,kimi:Fi,kilo:$i,grok:Ui,antigravity:S_,muse:Bi,custom:x_};Object.setPrototypeOf(ec,null);function ze(e,t){let n={},r=new Set;for(let o of t)if(Object.hasOwn(e,o))n[o]=e[o],r.add(o);for(let o of Object.keys(e))if(!r.has(o))n[o]=e[o];return n}var I_="00000",r0=0x6e52736ac806831en,o0=0xfffffn,i0="59cf53e54c78",Mr="x-anthropic-billing-header:",qi="You are a Claude agent, built on Anthropic's Claude Agent SDK.";function s0(e){let t=[4,7,20].map((n)=>e[n]??"0").join("");return Bun.CryptoHasher.hash("sha256",`${i0}${t}${ln}`,"hex").slice(0,3)}function a0(e){return`${Mr} cc_version=${ln}.${s0(e)}; cc_entrypoint=cli; cch=${I_};`}var u0=["github.com/anomalyco/opencode","opencode.ai/docs","github.com/cline/cline","github.com/getcursor/cursor","continue.dev","hermes-agent.nousresearch.com"],c0=["You are OpenCode","You are Hermes Agent"],l0=[["if OpenCode honestly","if the assistant honestly"],["Here is some useful information about the environment you are running in:","Environment context you are running in:"]];function L_(e,t){let n=[];for(let r of e){let i=r.text.split(/\n{2,}/).filter((s)=>!u0.some((a)=>s.includes(a))).filter((s)=>!c0.some((a)=>s.trimStart().startsWith(a))).filter((s)=>!s.includes(Mr)).filter((s)=>s.trim()!==qi).join(`
|
|
1682
|
+
|
|
1683
|
+
`);for(let[s,a]of l0)i=i.replaceAll(s,a);if(i.trim().length>0)n.push({type:"text",text:i,...r.cache_control===void 0?{}:{cache_control:r.cache_control}})}return[{type:"text",text:a0(t)},{type:"text",text:qi},...n]}function d0(e){return(Bun.hash.xxHash64(Buffer.from(e,"utf8"),r0)&o0).toString(16).padStart(5,"0")}var p0=`"system":[{"type":"text","text":"${Mr}`;function N_(e){let t=`cch=${I_};`,n=e.indexOf(p0);if(n<0)return e;let r=e.indexOf(t,n);if(r<0)return e;return`${e.slice(0,r)}cch=${d0(e)};${e.slice(r+t.length)}`}var D_={anthropic:Or,openai:Li,kimi:Oi,kilo:xi,grok:Ri,antigravity:ki,muse:Pi,custom:vi};Object.setPrototypeOf(D_,null);var m0=["oauth","apiKey"];function Hi(e,t){return e.models.find((n)=>n.id===t)?.pricing??null}function M_(e,t){return e.models.find((n)=>n.id===t)?.auth??e.authTypes}var U_=m0;function $_(e,t,n="apiKey"){let r=D_[e];return r===void 0?null:Ur(r,t,n)}function Ur(e,t,n="apiKey"){let r=e.models.find((o)=>o.id===t);return r===void 0?null:Wi(r,n)}function Wi(e,t="apiKey"){return(t==="oauth"?e.oauthLimits:void 0)??e.limits}var tc={anthropic:Xe,openai:it,kimi:It,kilo:yt,grok:Pt,antigravity:ot,muse:_t,custom:Qu};Object.setPrototypeOf(tc,null);var f0=2,F_=10485760;async function*we(e){let t=e.getReader(),n=new TextDecoder,r=[],o=0,i="";try{while(!0){let{done:a,value:u}=await t.read();if(a)break;let l=i+n.decode(u,{stream:!0}),c=0,p=l.indexOf(`
|
|
1684
|
+
`);while(p!==-1){let g=g0(l,p);if(g===-1){p=l.indexOf(`
|
|
1685
|
+
`,p+1);continue}B_(o+(p-c)),r.push(l.slice(c,p));let h=r.join("");r.length=0,o=0;let f=z_(h);if(f)yield f;c=g,p=l.indexOf(`
|
|
1686
|
+
`,g)}let d=Math.min(f0,l.length-c),m=l.slice(c,l.length-d);if(m.length>0)r.push(m),o+=m.length;i=l.slice(l.length-d),B_(o+i.length)}let s=z_(r.join("")+i);if(s)yield s}finally{t.releaseLock()}}function B_(e){if(e<=F_)return;throw new b("UPSTREAM",`upstream SSE record exceeded ${F_} characters`,{gatewayAuthored:!0})}function g0(e,t){let n=e.charCodeAt(t+1);if(n===10)return t+2;if(n===13&&e.charCodeAt(t+2)===10)return t+3;return-1}function z_(e){let t="message",n=[];for(let r of e.split(`
|
|
1659
1687
|
`)){let o=r.endsWith("\r")?r.slice(0,-1):r;if(o.length===0||o.startsWith(":"))continue;let i=o.indexOf(":"),s=i===-1?o:o.slice(0,i),a=i===-1?"":o.slice(i+1),u=a.startsWith(" ")?a.slice(1):a;if(s==="event")t=u;else if(s==="data")n.push(u)}return n.length===0?null:{event:t,data:n.join(`
|
|
1660
|
-
`)}}var o0=/^[A-Z][A-Za-z0-9]*$/;function i0(e){return o0.test(e)||e.startsWith("mcp__")}var I_=128,L_=6;function s0(e){let t=e.split(/[^A-Za-z0-9]+/).filter((n)=>n.length>0).map((n)=>n.charAt(0).toUpperCase()+n.slice(1)).join("");if(t==="")return{base:"Tool",forced:!0};if(t.length>I_)return{base:t.slice(0,I_-L_),forced:!0};return{base:t,forced:!1}}function a0(e){let t=new Set,n=new Set,r=(o)=>{(i0(o)?n:t).add(o)};for(let o of e.tools??[])if(o.kind==="portable")r(o.name);for(let o of e.messages)for(let i of o.content)if(i.type==="toolUse")r(i.name);if(e.toolChoice?.type==="tool")r(e.toolChoice.name);return{renamable:[...t],reserved:[...n]}}function u0(e){let n=(Bun.hash.xxHash64(Buffer.from(e,"utf8"))&0xffffffn).toString(16).padStart(L_,"0");return n.charAt(0).toUpperCase()+n.slice(1)}function N_(e){let{renamable:t,reserved:n}=a0(e),r=new Map,o=(u)=>{r.set(u,(r.get(u)??0)+1)};for(let u of e.tools??[])if(u.kind==="provider"&&u.name!=="")o(u.name);for(let u of n)o(u);let i=new Map;for(let u of t){let c=s0(u);i.set(u,c),o(c.base)}let s=new Map,a=new Map;for(let[u,{base:c,forced:d}]of i){let p=d||(r.get(c)??0)>1?c+u0(u):c;s.set(u,p),a.set(p,u)}return s.size===0?null:{toWire:s,fromWire:a}}function qi(e,t){return e?.toWire.get(t)??t}function D_(e,t){return e?.fromWire.get(t)??t}var we=["cache_control","strict","defer_loading","allowed_callers"],ht=[...we,"input_examples"],cn=["max_uses","allowed_domains","blocked_domains"],dq={web_search_20250305:{family:"webSearch",name:"web_search",required:[],optional:[...we,...cn,"user_location"]},web_search_20260209:{family:"webSearch",name:"web_search",required:[],optional:[...we,...cn,"user_location"]},web_search_20260318:{family:"webSearch",name:"web_search",required:[],optional:[...we,...cn,"user_location","response_inclusion"]},web_fetch_20250910:{family:"webFetch",name:"web_fetch",required:[],optional:[...we,...cn,"citations","max_content_tokens"]},web_fetch_20260209:{family:"webFetch",name:"web_fetch",required:[],optional:[...we,...cn,"citations","max_content_tokens"]},web_fetch_20260309:{family:"webFetch",name:"web_fetch",required:[],optional:[...we,...cn,"citations","max_content_tokens","use_cache"]},web_fetch_20260318:{family:"webFetch",name:"web_fetch",required:[],optional:[...we,...cn,"citations","max_content_tokens","use_cache","response_inclusion"]},code_execution_20250522:{family:"codeExecution",name:"code_execution",required:[],optional:[...we]},code_execution_20250825:{family:"codeExecution",name:"code_execution",required:[],optional:[...we]},code_execution_20260120:{family:"codeExecution",name:"code_execution",required:[],optional:[...we]},code_execution_20260521:{family:"codeExecution",name:"code_execution",required:[],optional:[...we]},bash_20241022:{family:"bash",name:"bash",required:[],optional:[...ht]},bash_20250124:{family:"bash",name:"bash",required:[],optional:[...ht]},text_editor_20241022:{family:"textEditor",name:"str_replace_editor",required:[],optional:[...ht]},text_editor_20250124:{family:"textEditor",name:"str_replace_editor",required:[],optional:[...ht]},text_editor_20250429:{family:"textEditor",name:"str_replace_based_edit_tool",required:[],optional:[...ht]},text_editor_20250728:{family:"textEditor",name:"str_replace_based_edit_tool",required:[],optional:[...ht,"max_characters"]},computer_20241022:{family:"computer",name:"computer",required:["display_width_px","display_height_px"],optional:[...ht,"display_number"]},computer_20250124:{family:"computer",name:"computer",required:["display_width_px","display_height_px"],optional:[...ht,"display_number"]},computer_20251124:{family:"computer",name:"computer",required:["display_width_px","display_height_px"],optional:[...ht,"display_number","enable_zoom"]},memory_20250818:{family:"memory",name:"memory",required:[],optional:[...ht]},tool_search_tool_regex_20251119:{family:"toolSearchRegex",name:"tool_search_tool_regex",required:[],optional:[...we]},tool_search_tool_regex:{family:"toolSearchRegex",name:"tool_search_tool_regex",required:[],optional:[...we]},tool_search_tool_bm25_20251119:{family:"toolSearchBm25",name:"tool_search_tool_bm25",required:[],optional:[...we]},tool_search_tool_bm25:{family:"toolSearchBm25",name:"tool_search_tool_bm25",required:[],optional:[...we]},advisor_20260301:{family:"advisor",name:"advisor",required:["model"],optional:[...we,"caching","max_uses","max_tokens"]},mcp_toolset:{family:"mcpToolset",required:["mcp_server_name"],optional:["cache_control","configs","default_config"]}};var U_=new Set(["server_tool_use","web_search_tool_result","web_fetch_tool_result","code_execution_tool_result","bash_code_execution_tool_result","text_editor_code_execution_tool_result","mcp_tool_use","mcp_tool_result","tool_search_tool_result","tool_reference","advisor_tool_result","advisor_result","advisor_redacted_result","container_upload","compaction","search_result","document","mid_conv_system","tool_addition","tool_removal","fallback","redacted_thinking"]);var M_={end_turn:"endTurn",max_tokens:"maxTokens",stop_sequence:"stopSequence",tool_use:"toolUse",refusal:"contentFilter",pause_turn:"pauseTurn"},c0=new Set(["message_start","content_block_start","content_block_delta","content_block_stop","message_delta","message_stop","error","ping"]),d0=new Set(["text_delta","thinking_delta","signature_delta","input_json_delta","citations_delta","compaction_delta"]),$_={overloaded_error:"OVERLOADED",rate_limit_error:"RATE_LIMIT",authentication_error:"AUTH",permission_error:"AUTH",invalid_request_error:"BAD_REQUEST",api_error:"UPSTREAM"},l0=["out of extra usage","draw from extra usage"];function Ju(e){let t=e.toLowerCase();return l0.some((n)=>t.includes(n))}function p0(e,t){return e==="invalid_request_error"&&Ju(t)}function m0(e){try{let t=JSON.parse(e);return typeof t==="object"&&t!==null?t:null}catch{return null}}async function*Hi(e,t={}){let n=t.cloak??null,r=0,o=0,i=0,s,a,u=0,c="endTurn",d=!1,p,l=new Set,m=(g)=>({type:"error",code:"UPSTREAM",message:g,retryable:!1});for await(let g of e){let h=m0(g.data);if(h===null)continue;if(!c0.has(g.event)){yield m(`unrecognized Anthropic stream event "${g.event}"`);return}switch(g.event){case"message_start":{let f=h.message??{};r=f.usage?.input_tokens??0,o=f.usage?.cache_read_input_tokens??0,i=f.usage?.cache_creation_input_tokens??0,s=f.usage?.cache_creation?.ephemeral_5m_input_tokens,a=f.usage?.cache_creation?.ephemeral_1h_input_tokens,yield{type:"start",id:String(f.id??""),model:String(f.model??"")};break}case"content_block_start":{let f=h.content_block??{},y=h.index??0;if(f.type==="text")yield{type:"blockStart",index:y,block:{type:"text"}};else if(f.type==="thinking")yield{type:"blockStart",index:y,block:{type:"thinking",signed:!0}};else if(f.type==="tool_use")yield{type:"blockStart",index:y,block:{type:"toolUse",id:String(f.id),name:D_(n,String(f.name))}};else if(f.type!==void 0&&U_.has(f.type)){l.add(y);let{type:_,...w}=f;yield{type:"blockStart",index:y,block:{type:"providerNative",provider:"anthropic",blockType:f.type,data:w}}}else{yield m(`unrecognized Anthropic content block type "${String(f.type)}"`);return}break}case"content_block_delta":{let f=h.index??0,y=h.delta??{};if(y.type==="text_delta")yield{type:"blockDelta",index:f,delta:{type:"text",text:y.text??""}};else if(y.type==="thinking_delta")yield{type:"blockDelta",index:f,delta:{type:"thinking",text:y.thinking??""}};else if(y.type==="signature_delta"&&(y.signature??"")!=="")yield{type:"blockDelta",index:f,delta:{type:"thinkingSignature",signature:y.signature??""}};else if(y.type==="input_json_delta")yield{type:"blockDelta",index:f,delta:l.has(f)?{type:"providerNativeJson",provider:"anthropic",partial:y.partial_json??""}:{type:"toolJson",partial:y.partial_json??""}};else if(y.type==="citations_delta")yield{type:"blockDelta",index:f,delta:{type:"providerNative",provider:"anthropic",deltaType:y.type,fold:"citation",data:{citation:y.citation}}};else if(y.type==="compaction_delta")yield{type:"blockDelta",index:f,delta:{type:"providerNative",provider:"anthropic",deltaType:y.type,fold:"merge",data:{...y.content===void 0?{}:{content:y.content},...y.encrypted_content===void 0?{}:{encrypted_content:y.encrypted_content}}}};else if(y.type===void 0||!d0.has(y.type)){yield m(`unrecognized Anthropic content block delta "${String(y.type)}"`);return}break}case"content_block_stop":l.delete(h.index??0),yield{type:"blockEnd",index:h.index??0};break;case"message_delta":{let f=h.delta!==void 0&&Object.hasOwn(h.delta,"safeguard_results")?h.delta:h;if(Object.hasOwn(f,"safeguard_results"))p={safeguard_results:f.safeguard_results};let y=h.delta?.stop_reason;if(typeof y==="string"){let _=Object.hasOwn(M_,y)?M_[y]:void 0;if(_===void 0){yield m(`unrecognized Anthropic stop reason "${y}"`);return}c=_}r=h.usage?.input_tokens??r,u=h.usage?.output_tokens??u;break}case"message_stop":if(Object.hasOwn(h,"safeguard_results"))p={safeguard_results:h.safeguard_results};d=!0,yield{type:"end",stopReason:c,...p===void 0?{}:{vendor:{anthropic:p}},usage:{inputTokens:r,outputTokens:u,cacheReadTokens:o,cacheWriteTokens:i,...s===void 0?{}:{cacheWrite5mTokens:s},...a===void 0?{}:{cacheWrite1hTokens:a}}};break;case"error":{d=!0;let f=String(h.error?.type),y=String(h.error?.message??"upstream error"),_=p0(f,y)?"FINGERPRINT_REFUSED":(Object.hasOwn($_,f)?$_[f]:void 0)??"UPSTREAM";yield{type:"error",code:_,message:y,retryable:ee[_]};break}default:break}}if(!d)yield{type:"error",code:"UPSTREAM",message:"upstream stream ended before message_stop",retryable:ee.UPSTREAM}}var le=(e)=>typeof e==="object"&&e!==null&&!Array.isArray(e);function ot(e){let t=e.vendor?.openai,n=t?.response_format;if(n!==void 0){if(!le(n)||n.type!=="json_schema")return{kind:"malformed"};return ec(n.json_schema)}let r=t?.text;if(le(r)&&r.format!==void 0)return ec(r.format);if(r!==void 0)return{kind:"malformed"};let o=e.vendor?.anthropic?.output_config;if(le(o)&&o.format!==void 0)return ec(o.format);if(o!==void 0)return{kind:"malformed"};return{kind:"absent"}}function Nr(e){return le(e)&&(e.type===void 0||e.type==="json_schema")&&le(e.schema)}function tc(e){if(typeof e==="bigint")return!1;if(typeof e!=="object"||e===null)return!0;let t=new WeakSet,n=[e];while(n.length>0){let r=n.pop();if(r===void 0)break;if(t.has(r))continue;if(t.add(r),typeof r.toJSON==="function")try{if(typeof r.toJSON()==="bigint")return!1}catch{return!1}let o=Array.isArray(r)?r:Object.values(r);for(let i of o){if(typeof i==="bigint")return!1;if(typeof i==="object"&&i!==null)n.push(i)}}return!0}function ec(e){if(!Nr(e))return{kind:"malformed"};let t=e.schema;if(!le(t))return{kind:"malformed"};if(g0(t)||h0(t)||!tc(t))return{kind:"tooDeep"};return{kind:"readable",format:{schema:t,name:typeof e.name==="string"&&e.name.length>0?e.name:"response"}}}function f0(e,t){for(let n of e)for(let[r,o]of Object.entries(n))if(q_.includes(r)&&le(o)){for(let i of Object.values(o))if(le(i))t(i,n)}else if(z_.includes(r)&&Array.isArray(o)){for(let i of o)if(le(i))t(i,n)}else if(B_.includes(r)&&le(o))t(o,n)}function g0(e){let t=new Set,n=new WeakSet,r=[{node:e,entering:!0}];while(r.length>0){let o=r.pop();if(o===void 0)break;let i=o.node;if(!o.entering){t.delete(i),n.add(i);continue}if(t.has(i))return!0;if(n.has(i))continue;if(t.add(i),r.push({node:i,entering:!1}),Array.isArray(i)){for(let s of i)if(typeof s==="object"&&s!==null)r.push({node:s,entering:!0})}else for(let s of Object.values(i))if(typeof s==="object"&&s!==null)r.push({node:s,entering:!0})}return!1}function h0(e){let t=[e];for(let n=0;n<H_;n++){let r=[],o=new WeakSet;if(f0(t,(i)=>{if(o.has(i))return;o.add(i),r.push(i)}),r.length===0)return!1;t=r}return!0}function qt(e,t,n){let r=t.response_format;delete t.response_format;let o=t.text!==void 0&&!le(t.text);if(o)delete t.text;let i=ot(e),s=le(t.text)?t.text:void 0,a=s?.format;if(Nr(a)&&i.kind==="readable")return;let u=s!==void 0&&a!==void 0,c=s===void 0?void 0:{...s};if(c!==void 0)delete c.format;if(u)t.text=c;if(i.kind==="readable"){let d=i.format;return t.text={...c,format:{type:"json_schema",name:d.name,schema:d.schema,strict:!0}},`${n}:response-format-translated`}if(le(r)&&r.type==="json_object")return t.text={...c,format:{type:"json_object"}},`${n}:response-format-translated`;if(i.kind==="tooDeep")return`${n}:response-schema-too-deep`;if(r!==void 0||o||u)return`${n}:response-format-dropped`;return}function F_(e,t){if(t!==void 0)t.changed=!1,t.truncated=!1;return Wi(e,0,t??{changed:!1,truncated:!1},new Map)}var B_=["items","additionalItems","additionalProperties","contains","contentSchema","if","then","else","not","propertyNames","unevaluatedItems","unevaluatedProperties"],z_=["anyOf","allOf","oneOf","prefixItems","items"],q_=["properties","patternProperties","$defs","definitions","dependentSchemas","dependencies"],H_=64;function Wi(e,t,n,r){if(t>=H_)return n.truncated=!0,e;let o=r.get(t);if(o===void 0)o=new WeakMap,r.set(t,o);let i=o.get(e);if(i!==void 0)return i;let s={};o.set(e,s);for(let[a,u]of Object.entries(e)){if(q_.includes(a)&&le(u)){let c={};for(let[d,p]of Object.entries(u))Object.defineProperty(c,d,{value:le(p)?Wi(p,t+1,n,r):p,writable:!0,enumerable:!0,configurable:!0});s[a]=c;continue}if(B_.includes(a)&&le(u)){s[a]=Wi(u,t+1,n,r);continue}if(z_.includes(a)&&Array.isArray(u)){s[a]=u.map((c)=>le(c)?Wi(c,t+1,n,r):c);continue}s[a]=u}if(s.type==="object"&&s.additionalProperties!==!1)s.additionalProperties=!1,n.changed=!0;return s}function nc(e,t,n){if(e===void 0)return[];let r=[];for(let o of e){if(o.type==="text"){r.push({type:"text",text:o.text,cacheControl:pt(o)});continue}n(`${t}:system-${o.type}-dropped`)}return r}function Oe(e,t,n){if(e===void 0)return;return nc(e,t,n).map((r)=>r.text).join(`
|
|
1661
|
-
|
|
1662
|
-
`)}function
|
|
1663
|
-
|
|
1664
|
-
`)}var
|
|
1665
|
-
`);return e.map((n)=>ji(n,t))}function E0(e){let t=e.messages.flatMap((i)=>i.role==="system"?i.content.filter((s)=>pt(s)!==void 0):[]),n=e.messages.at(-1),r=n?.role==="system"?n.content.findLast((i)=>pt(i)!==void 0):void 0,o=r===void 0?void 0:pt(r);return{...o===void 0?{}:{retarget:o},lost:t.length>(o===void 0?0:1)}}function v0(e,t){if(e.kind==="provider"){if(e.provider!=="anthropic")throw new b("INTERNAL",`anthropic adapter received a ${e.provider} provider-defined tool`);return{type:e.type,...e.name===""?{}:{name:e.name},...e.wire,...Dr(e.cacheControl)}}return{name:qi(t,e.name),...e.description===void 0?{}:{description:e.description},input_schema:e.inputSchema,...e.options??{},...Dr(e.cacheControl)}}function T0(e,t){switch(e.type){case"auto":return{type:"auto"};case"any":return{type:"any"};case"none":return{type:"none"};case"tool":return{type:"tool",name:qi(t,e.name)}}}function he(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}function R0(e,t){let n=e.output_config;if(!he(n))return e;let r=Object.entries(n),o=r.filter(([i])=>i!=="effort");if(o.length===r.length)return e;if(t("anthropic:effort-unsupported"),o.length===0)return Object.fromEntries(Object.entries(e).filter(([i])=>i!=="output_config"));return{...e,output_config:Object.fromEntries(o)}}var S0=new Set(["clear_thinking_20251015"]);function x0(e){if(!he(e))return e!==void 0;return e.type!=="adaptive"&&e.type!=="enabled"}function A0(e,t){if(!x0(e.thinking))return;let n=e.context_management;if(!he(n)||!Array.isArray(n.edits))return;let r=n.edits.filter((o)=>!(he(o)&&S0.has(String(o.type))));if(r.length===n.edits.length)return;if(t("anthropic:clear-thinking-unsupported"),r.length===0&&Object.keys(n).length===1){delete e.context_management;return}e.context_management={...n,edits:r}}var O0=1024;function K_(e){let t=e.vendor?.anthropic;return typeof t==="object"&&t!==null&&"cache_control"in t}var C0=new Set(["text","image","tool_use","tool_result","document"]);function G_(e){for(let t=e.length-1;t>=0;t--){let n=e[t];if(!he(n)||!Array.isArray(n.content))continue;for(let r=n.content.length-1;r>=0;r--){let o=n.content[r];if(!he(o))continue;if(typeof o.type==="string"&&C0.has(o.type))return o}}return}function P0(e,t,n){if(Yo(t)!==0||K_(t))return;let r=0,o=(l)=>l-r>=O0,i=!1,s=Hh(t),a=s.tools,u=e.tools?.at(-1);if(u!==void 0&&o(a))u.cache_control={type:"ephemeral"},r=a,i=!0;let c=s.toolsAndSystem,d=e.system?.at(-1);if(d!==void 0&&o(c))d.cache_control={type:"ephemeral"},r=c,i=!0;if(i)n("anthropic:cache-breakpoint-added");if(!o(s.total))return;let p=G_(e.messages);if(p===void 0)return;p.cache_control={type:"ephemeral"},n("anthropic:history-cache-breakpoint-added")}function I0(e,t){let n=u_(e);if(t===void 0)return n??4096;return n===void 0?t:Math.min(t,n)}function Ki(e,t,n){let r=n.cloak??null,o=[],i=(k)=>{if(!o.includes(k))o.push(k)},s=nc(e.system,"anthropic",i),a=e.vendor?.anthropic?.system,u=e.system===void 0?void 0:s.map((k,T)=>{let C=Array.isArray(a)?a[T]:void 0;return{...n.preserveSystem===!0&&he(C)?Object.fromEntries(Object.entries(C).filter(([Re])=>Re!=="type"&&Re!=="text"&&Re!=="cache_control")):{},type:"text",text:k.text,...Dr(k.cacheControl)}});if(n.oauth&&n.preserveSystem!==!0&&u?.[0]?.text!==j_)u=[{type:"text",text:j_},...u??[]],i("anthropic:oauth-system-prefix");if(r!==null)i("anthropic:tool-names-cloaked");let c=E0(e);if(c.lost)i("anthropic:system-turn-cache-control-dropped");for(let k of e.messages)for(let T of k.content)if(T.type==="toolResult"&&T.files!==void 0){let C=Ze(T.files,(V)=>V==="application/pdf");if(C.text.length>0)i("anthropic:tool-result-files-inlined");if(C.dropped)i("anthropic:files-dropped")}let d={model:t,messages:e.messages.flatMap((k)=>{if(k.role!=="system"){let T=k.content.filter(b0);if(T.length!==k.content.length)i("anthropic:unsigned-thinking-dropped");if(T.length===0)return[];return[{role:k.role,content:T.map((C)=>ji(C,r))}]}return[{role:k.role,content:k0(k.content,r)}]}),max_tokens:e.maxTokens??I0(t,n.maxOutputTokens),stream:e.stream};if(c.retarget!==void 0){let k=d.messages.at(-1);if(he(k)&&Array.isArray(k.content)){for(let T of k.content)if(he(T))delete T.cache_control}if(!K_(e)){let T=G_(d.messages.slice(0,-1));if(T===void 0)i("anthropic:system-turn-cache-control-dropped");else if(T.cache_control===void 0)Object.assign(T,Dr(c.retarget)),i("anthropic:system-turn-cache-control-retargeted")}}if(u!==void 0&&u.length>0)d.system=u;if(e.temperature!==void 0)d.temperature=e.temperature;if(e.stopSequences!==void 0)d.stop_sequences=e.stopSequences;if(e.tools!==void 0)d.tools=e.tools.map((k)=>v0(k,r));if(e.toolChoice!==void 0)d.tool_choice=T0(e.toolChoice,r);if(n.autoCache===!0)P0(d,e,i);if(e.reasoning!==void 0)switch(e.reasoning.mode){case"betweenTools":d.thinking={type:"between_tools"};break;case"adaptive":if(Mu(t)==="budget"){d.thinking={type:"disabled"},i("anthropic:adaptive-thinking-unsupported");break}if(d.thinking={type:"adaptive",...e.reasoning.display===void 0?{}:{display:e.reasoning.display}},e.reasoning.effort!==void 0)d.output_config={...he(d.output_config)?d.output_config:{},effort:e.reasoning.effort};break;case"budget":d.thinking={type:"enabled",budget_tokens:e.reasoning.budgetTokens};break;case"off":d.thinking={type:"disabled"};break}let p=e.vendor?.anthropic?.output_config,l=he(p)&&Nr(p.format),m=ot(e),g=!l&&m.kind==="readable"?m.format:void 0;if(g!==void 0)d.output_config={...he(d.output_config)?d.output_config:{},format:{type:"json_schema",schema:g.schema}},i("anthropic:response-format-translated");else if(!l&&m.kind==="tooDeep")i("anthropic:response-schema-too-deep");let{thinking:h,...f}=e.vendor?.anthropic??{};if(d.thinking!==void 0&&he(h))d.thinking={...h,...d.thinking};let y=f.output_config,_=he(d.output_config)?d.output_config:void 0,w=!1,v=f;if(_!==void 0&&y!==void 0)if(!he(y)){let{output_config:k,...T}=f;v=T,w=!0}else{let k=Nr(y.format),{format:T,...C}=y;v={...f,output_config:{..._,...k?y:C}},w=!k&&y.format!==void 0}if(Object.assign(d,Mu(t)==="budget"?R0(v,i):v),n.preserveSystem===!0&&a!==void 0&&u!==void 0){if(!(typeof a==="string"&&u.length===1&&u[0]?.text===a&&u[0]?.cache_control===void 0))d.system=u}if(w)i("anthropic:response-format-dropped");return L0(d,i),A0(d,i),{body:d,degradations:o}}function L0(e,t){let n=e.output_config;if(!he(n))return;let r=n.format;if(!he(r)||!he(r.schema))return;let o={changed:!1,truncated:!1},i=F_(r.schema,o);if(o.truncated||!tc(i)){let{format:s,...a}=n;e.output_config=a,t("anthropic:response-schema-too-deep");return}if(!o.changed)return;e.output_config={...n,format:{...r,schema:i}},t("anthropic:response-schema-closed")}var N0="https://api.anthropic.com/v1/messages",D0="2023-06-01",U0="oauth-2025-04-20";function M0(e){if(e===null||typeof e!=="object")return null;let t=e.cloak;if(t===null||t===void 0||typeof t!=="object")return null;let{toWire:n,fromWire:r}=t;return n instanceof Map&&r instanceof Map?t:null}var Z_={buildRequest(e){let t=e.credentials.accessToken!==null,n=e.request.vendor?.anthropic?.safeguards,r=Array.isArray(n)&&n.length>0,o=e.request.providerHeaders?.anthropic??{},i=t&&!r?N_(e.request):null,{body:s,degradations:a}=Ki(e.request,e.model,{oauth:t,preserveSystem:r,cloak:i,autoCache:e.autoCacheEnabled===!0,...e.maxOutputTokens===void 0?{}:{maxOutputTokens:e.maxOutputTokens}}),c=e.request.messages.find((h)=>h.role==="user")?.content.find((h)=>h.type==="text"),d={...s,...!r?{system:v_(s.system??[],c?.text??"")}:{},stream:!0},p=[["Content-Type","application/json"],["anthropic-version",o["anthropic-version"]??D0],["Accept","text/event-stream"]];for(let[h,f]of Object.entries(o))if(h.startsWith("anthropic-")&&h!=="anthropic-version"&&h!=="anthropic-beta")p.push([h,f]);let l=new Set(e.request.betas??[]),m=[...a];if(l.has(Ee)){let f=A_("anthropic",e.model,t?"oauth":"apiKey")?.contextWindow;if(f!==void 0&&f<Mh)l.delete(Ee),m.push("anthropic:context-1m-dropped")}if(t)p.push(["Authorization",`Bearer ${e.credentials.accessToken}`]),l.add(U0);else if(e.credentials.apiKey!==null)p.push(["x-api-key",e.credentials.apiKey]);else throw e.fail("AUTH","anthropic credential has no token");if(l.size>0){let h=o["anthropic-beta"],f=h?.split(",").map((w)=>w.trim()).filter(Boolean),y=f?.every((w)=>l.has(w)),_=[...l].filter((w)=>!f?.includes(w));p.push(["anthropic-beta",y?[h,..._].join(","):[...l].join(",")])}let g=fe(ge(Ge.headers,p),Ge.order);return{request:{url:N0,method:"POST",headers:g,body:r?JSON.stringify(Be(d,Cr)):T_(JSON.stringify(Be(d,Cr)))},decodeState:{cloak:i},degradations:m,...i===null?{}:{cloakedTools:i.toWire.size}}},decode({body:e,decodeState:t}){return Hi(_e(e),{cloak:M0(t)})},classifyError(e){if(e.status!==400||!Ju(e.fallback.message))return;return e.fail("FINGERPRINT_REFUSED",e.fallback.message,{degradations:e.degradations,...e.fallback.upstreamStatus===void 0?{}:{status:e.fallback.upstreamStatus},...e.fallback.retryAfterMs===void 0?{}:{retryAfterMs:e.fallback.retryAfterMs}})}};var oc=de("anthropic",hi.capabilities,Z_);function Te(e){if(e===429)return"RATE_LIMIT";if(e>=400&&e<500)return"AUTH";return"UPSTREAM"}function ze(e,t){let n=typeof t==="object"&&t!==null&&typeof t.error==="string"?t.error:"";return`token endpoint rejected the request: ${/^[A-Za-z0-9_.:-]{1,64}$/.test(n)?n:`http_${e}`}`}var X_="__omni_authorization_pending";function Gi(e){return e instanceof b&&e[X_]===!0}function ic(e){let t=new b("AUTH",`authorization not yet complete: ${e}`);return t[X_]=!0,t}var sc=15000;function ue(e,t,n){return{url:e,method:"POST",headers:fe(ge(t.headers,[["Content-Type",n.contentType],["Accept","application/json"],...n.extraHeaders??[]]),t.order),body:n.body}}function V_(e,t,n,r,o=sc){return{url:e,method:"GET",headers:fe(ge(t.headers,[...n,["Accept","application/json"],...r]),t.order),body:"",timeoutMs:o}}function qe(e,t,n){return V_(e,t,[["Authorization",`Bearer ${n.accessToken}`]],n.extraHeaders??[])}function Zi(e,t,n=[],r){return V_(e,t,[],n,r)}function B(e){try{return JSON.parse(e)}catch{return null}}function Xe(e,t){if(e===429)throw new b("RATE_LIMIT",`${t} usage endpoint is rate limited`);return e>=200&&e<300}function D(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)?e:null}function it(e,t){for(let n of t){let r=e[n];if(typeof r==="number"&&Number.isFinite(r))return r;if(typeof r==="string"&&r.trim().length>0){let o=Number(r);if(Number.isFinite(o))return o}}return null}function Xi(e,t){for(let n of t){let r=D(e[n]);if(r!==null)return r}return null}function ac(e,t,n){for(let r of t.absolute){let o=e[r];if(typeof o==="number"&&Number.isFinite(o)&&o>0)return o<1000000000000?Math.round(o*1000):Math.round(o);if(typeof o==="string"){let i=Date.parse(o);if(!Number.isNaN(i))return i}}for(let r of t.relativeSeconds??[]){let o=e[r];if(typeof o==="number"&&Number.isFinite(o)&&o>=0)return n+Math.round(o*1000)}return null}var $0=["used","used_units","usage","consumed"],F0=["limit","limit_units","total","quota","allowed"],B0=["utilization","used_percent","usedPercent","percent_used","percentUsed","percent"],z0=["resets_at","resetsAt","reset_at","resetAt","resetTime","reset_time","resets_at_epoch","reset"],q0=["resets_in_seconds","resetsInSeconds","reset_after_seconds","resetAfterSeconds","seconds_until_reset","resets_in"];function st(e,t,n,r=null){let o=D(e);if(o===null)return null;let i=ac(o,{absolute:z0,relativeSeconds:q0},n),s=it(o,$0),a=it(o,F0);if(s!==null)return{windowType:t,used:Math.max(0,s),limit:a,resetsAt:i,windowMs:r};let u=it(o,["remaining","remaining_units","left"]);if(u!==null&&a!==null)return{windowType:t,used:Math.max(0,a-u),limit:a,resetsAt:i,windowMs:r};let c=it(o,B0);if(c!==null)return{windowType:t,used:Math.max(0,Math.min(100,c)),limit:100,resetsAt:i,windowMs:r};return null}function yt(e){let t=e.filter((n)=>n!==null);return t.length===0?null:{windows:t}}var tw="9d1c250a-e61b-44d9-88ed-5944d1962f5e",H0="https://claude.ai/oauth/authorize",W0="https://api.anthropic.com/v1/oauth/token",j0="https://platform.claude.com/oauth/code/callback",K0="org:create_api_key user:profile user:inference",nw="https://api.anthropic.com/api/oauth/usage";async function*Q_(e,t){let n=yield ue(W0,Ge,{contentType:"application/json",body:JSON.stringify({...e,client_id:tw})}),r=B(n.body);if(n.status<200||n.status>=300)throw t(Te(n.status),ze(n.status,r));if(!G0(r)||typeof r.access_token!=="string")throw t("AUTH","token endpoint returned no access_token");return r}function G0(e){return typeof e==="object"&&e!==null}function Y_(e,t,n){return{secrets:{accessToken:e.access_token??null,refreshToken:e.refresh_token??t,apiKey:null,idToken:null},expiresAt:typeof e.expires_in==="number"?n()+e.expires_in*1000:null,accountEmail:e.account?.email_address??null,providerData:{}}}function rw(e,t){let n=D(e);if(n===null)return null;let r=Xi(n,["usage","rate_limits","limits"])??n;return yt([st(r.five_hour??r.fiveHour??r.session,"fiveHour",t),st(r.seven_day??r.sevenDay??r.weekly,"weekly",t)])}var cc={kind:"pkce",supportsManualPaste:!0,async*start({redirectUri:e,pkce:t,randomState:n}){let{verifier:r,challenge:o}=t(),i=n(),s=j0,a=new URL(H0);return a.searchParams.set("code","true"),a.searchParams.set("client_id",tw),a.searchParams.set("response_type","code"),a.searchParams.set("redirect_uri",s),a.searchParams.set("scope",K0),a.searchParams.set("code_challenge",o),a.searchParams.set("code_challenge_method","S256"),a.searchParams.set("state",i),{authorizeUrl:a.toString(),pending:{verifier:r,challenge:o,state:i,redirectUri:s}}},async*exchange({code:e,pending:t,fail:n,now:r}){let[o,i]=e.split("#");if(i!==void 0&&i!==t.state)throw n("AUTH","authorization state mismatch");let s=yield*Q_({grant_type:"authorization_code",code:(o??"").trim(),redirect_uri:t.redirectUri,code_verifier:t.verifier,state:t.state},n);return Y_(s,null,r)},async*refresh({refreshToken:e,fail:t,now:n}){let r=yield*Q_({grant_type:"refresh_token",refresh_token:e},t);return Y_(r,e,n)},async*usage({secrets:e,now:t}){if(e.accessToken===null)return null;let n=yield qe(nw,Ge,{accessToken:e.accessToken,extraHeaders:[["anthropic-beta","oauth-2025-04-20"],["User-Agent",`claude-code/${un}`]]});if(!Xe(n.status,"anthropic"))return null;return rw(B(n.body),t())},async*resetCredits({secrets:e}){if(e.accessToken===null)return null;let t=yield qe(X0,Ge,{accessToken:e.accessToken,extraHeaders:uc});if(!Xe(t.status,"anthropic"))return null;let n=D(B(t.body));return n===null?null:ow(n.cedar_ember??null)},async*redeemReset({secrets:e,creditId:t,requestId:n,fail:r}){if(e.accessToken===null)throw r("AUTH","credential holds no access token");let o=eO(t);if(o===null)throw r("CONFLICT","that reset credit is not available");let i=yield qe(V0,Ge,{accessToken:e.accessToken,extraHeaders:uc});if(i.status<200||i.status>=300)throw r(J_(i.status),`profile read refused: http_${i.status}`,{status:i.status});let s=tO(B(i.body));if(s===null)throw r("UPSTREAM","profile names no organization");let a=yield ue(`https://api.anthropic.com/api/organizations/${s}/reset_rate_limits`,Ge,{contentType:"application/json",body:JSON.stringify({program:Z0,grant_id:o,request_id:n}),extraHeaders:[["Authorization",`Bearer ${e.accessToken}`],...uc]});if(a.status<200||a.status>=300)throw r(J_(a.status),`reset claim refused: http_${a.status}`,{status:a.status});return nO(B(a.body),r)}},Z0="cedar_ember",X0=`${nw}?cedar_ember=1&skip_spend=1`,V0="https://api.anthropic.com/api/oauth/profile",Q0=/^[A-Za-z0-9-]{1,64}$/,uc=[["anthropic-beta","oauth-2025-04-20"]],Y0=/-u(\d+)$/;function J0(e,t){return`${e}-u${t}`}function eO(e){let t=e.replace(Y0,"");return t===e||t===""?null:t}function tO(e){let n=D(D(e)?.organization)?.uuid;return typeof n==="string"&&Q0.test(n)?n:null}function ow(e){if(e===null)return{available:0,credits:[]};let t=D(e);if(t===null||!Array.isArray(t.grants))return null;let n=typeof t.next_grant_id==="string"?t.next_grant_id:null,r=t.at_limit===!0,o=0,i=t.grants.flatMap((s)=>{let a=D(s);if(a===null||typeof a.id!=="string")return[];let u=typeof a.resets_left==="number"?a.resets_left:0,c=u>0&&a.usable_now===!0&&a.paused!==!0&&(a.use_requires_limit!==!0||r)&&(n===null||n===a.id);if(c)o+=u;return[{id:J0(a.id,u),status:c?"available":u>0?"unavailable":"used",title:typeof a.label==="string"&&a.label!==""?a.label:null,grantedAt:ew(a.starts_at),expiresAt:ew(a.ends_at)}]});return{available:o,credits:i}}function nO(e,t){let n=D(e),r=typeof n?.result==="string"?n.result:null;if(r==="reset")return{windowsReset:Array.isArray(n?.cleared)?n.cleared.length:null};if(r==="cooldown")throw t("RATE_LIMIT","reset claim refused: cooldown");if(r==="already_used"||r==="not_limited"||r==="ineligible")throw t("CONFLICT",`reset claim refused: ${r}`);throw t("UPSTREAM","reset claim answered without a reset")}function J_(e){if(e===429)return"RATE_LIMIT";if(e===401||e===403)return"AUTH";if(e>=400&&e<500)return"CONFLICT";return"UPSTREAM"}function ew(e){if(typeof e!=="string")return null;let t=Date.parse(e);return Number.isNaN(t)?null:t}import{createHash as vO}from"crypto";var rO=/^[A-Za-z_][A-Za-z0-9_.-]{0,127}$/;function oO(e){let t=e.replace(/[^A-Za-z0-9_.-]+/g,"_");if(!/^[A-Za-z_]/.test(t))t=`_${t}`;if(t==="_")return{base:"_tool",forced:!0};if(t.length>128)return{base:t.slice(0,122),forced:!0};return{base:t,forced:!1}}function iO(e){let t=new Set,n=new Set,r=(i)=>{(rO.test(i)?n:t).add(i)},o=new Set;for(let i of e.messages)for(let s of i.content)if(s.type==="toolUse")o.add(s.id);for(let i of e.tools??[])if(i.kind==="portable")r(i.name);for(let i of e.messages)for(let s of i.content){if(s.type==="toolUse")r(s.name);if(s.type==="toolResult"&&!o.has(s.toolUseId))r(s.toolUseId)}if(e.toolChoice?.type==="tool")r(e.toolChoice.name);return{renamable:[...t],reserved:[...n]}}function sO(e){return(Bun.hash.xxHash64(Buffer.from(e,"utf8"))&0xffffffn).toString(16).padStart(6,"0")}function iw(e){let{renamable:t,reserved:n}=iO(e),r=new Map,o=(u)=>{r.set(u,(r.get(u)??0)+1)};for(let u of n)o(u);let i=new Map;for(let u of t){let c=oO(u);i.set(u,c),o(c.base)}let s=new Map,a=new Map;for(let[u,{base:c,forced:d}]of i){let p=d||(r.get(c)??0)>1?c+sO(u):c;s.set(u,p),a.set(p,u)}return s.size===0?null:{toWire:s,fromWire:a}}function Ur(e,t){return e?.toWire.get(t)??t}function sw(e,t){return e?.fromWire.get(t)??t}var aw={STOP:"endTurn",MAX_TOKENS:"maxTokens",SAFETY:"contentFilter",PROHIBITED_CONTENT:"contentFilter",SPII:"contentFilter",BLOCKLIST:"contentFilter",RECITATION:"contentFilter"},uw={RESOURCE_EXHAUSTED:"RATE_LIMIT",UNAUTHENTICATED:"AUTH",PERMISSION_DENIED:"AUTH",INVALID_ARGUMENT:"BAD_REQUEST",FAILED_PRECONDITION:"BAD_REQUEST",UNAVAILABLE:"UPSTREAM",INTERNAL:"UPSTREAM",DEADLINE_EXCEEDED:"TIMEOUT"};function aO(e){try{let t=JSON.parse(e);return typeof t==="object"&&t!==null?t:null}catch{return null}}function Vi(e){return typeof e==="number"&&Number.isFinite(e)?e:0}function cw(e){return xe(Vi(e?.promptTokenCount),Vi(e?.candidatesTokenCount)+Vi(e?.thoughtsTokenCount),Vi(e?.cachedContentTokenCount))}async function*Qi(e,t={}){let n=t.cloak??null,r=!1,o=!1,i=0,s=0,a=null,u=function*(){if(a===null)return;yield{type:"blockEnd",index:a.index},a=null};for await(let c of e){if(c.data==="[DONE]")continue;let d=aO(c.data);if(d===null)continue;let p=d.error??d.response?.error;if(p!==void 0){o=!0,yield*u();let w=String(p.status??""),v=(Object.hasOwn(uw,w)?uw[w]:void 0)??"UPSTREAM";yield{type:"error",code:v,message:String(p.message??"upstream error"),retryable:ee[v]};return}let l=d.response;if(l===void 0)continue;if(l.promptFeedback?.blockReason!==void 0&&(l.candidates??[]).length===0){if(o=!0,!r)yield{type:"start",id:"",model:""};yield*u(),yield{type:"end",stopReason:"contentFilter",usage:cw(l.usageMetadata)};return}if(!r)r=!0,yield{type:"start",id:String(l.responseId??""),model:String(l.modelVersion??"")};let g=l.candidates??[];if(g.length>1){o=!0,yield*u(),yield{type:"error",code:"UPSTREAM",message:`Antigravity returned ${g.length} candidates, which cannot be represented`,retryable:!1};return}let h=g[0];for(let w of h?.content?.parts??[]){let v=w.functionCall;if(v!==void 0&&typeof v.name==="string"){yield*u();let T=i++;yield{type:"blockStart",index:T,block:{type:"toolUse",id:typeof v.id==="string"&&v.id.length>0?v.id:`fc_${s}`,name:sw(n,v.name)}},yield{type:"blockDelta",index:T,delta:{type:"toolJson",partial:JSON.stringify(v.args??{})}},yield{type:"blockEnd",index:T},s++;continue}if(typeof w.text!=="string")continue;let k=w.thought===!0?"thinking":"text";if(a===null||a.kind!==k)yield*u(),a={kind:k,index:i++},yield{type:"blockStart",index:a.index,block:{type:k}};yield{type:"blockDelta",index:a.index,delta:k==="thinking"?{type:"thinking",text:w.text}:{type:"text",text:w.text}}}let f=h?.finishReason;if(f===void 0||f===null)continue;o=!0,yield*u();let y=String(f);if(y==="MALFORMED_FUNCTION_CALL"){yield{type:"error",code:"BAD_REQUEST",message:"the model emitted a malformed function call",retryable:!1};return}let _=Object.hasOwn(aw,y)?aw[y]:void 0;if(_===void 0){yield{type:"error",code:"UPSTREAM",message:`unrecognized Antigravity finish reason "${y}"`,retryable:!1};return}yield{type:"end",stopReason:s>0?"toolUse":_,usage:cw(l.usageMetadata)};return}if(!o)yield*u(),yield{type:"error",code:"UPSTREAM",message:"upstream stream ended before the response finished",retryable:ee.UPSTREAM}}var uO="skip_thought_signature_validator";function cO(e){let t=new Map;for(let n of e.messages)for(let r of n.content)if(r.type==="toolUse")t.set(r.id,r.name);return t}function dO(e){let t=[];for(let n of e){let r=t[t.length-1];if(r!==void 0&&r.role===n.role)r.parts.push(...n.parts);else t.push({role:n.role,parts:[...n.parts]})}return t}function lO(e,t){let n=e[0];if(n===void 0)return e;if(!(n.role==="model"||n.parts[0]!==void 0&&("functionResponse"in n.parts[0])))return e;return t("antigravity:opening-turn-added"),[{role:"user",parts:[{text:""}]},...e]}function pO(e,t){if(e[e.length-1]?.role!=="model")return e;return t("antigravity:closing-turn-added"),[...e,{role:"user",parts:[{text:" "}]}]}var mO=(e)=>("cacheControl"in e)&&e.cacheControl!==void 0,fO="antigravity:tool-schema-pruned",gO="antigravity:agent-preamble-dropped",hO="antigravity:billing-header-dropped";function yO(e,t){let n=e.split(/(?:\r?\n){2,}/),r=!1,o=!1,i=n.filter((s)=>{let a=s.trim();if(a===Fi)return r=!0,!1;if(a.startsWith(Ir))return o=!0,!1;return!0});if(i.length===n.length)return e;if(r)t(gO);if(o)t(hO);return i.join(`
|
|
1666
|
-
|
|
1667
|
-
`)}var dw=5,_O=65535;function wO(e,t){let n=(r,o)=>{if(typeof r==="number")return Number.isFinite(r)&&(!o||Number.isInteger(r));if(typeof r!=="string")return!1;if(o)return/^-?\d+$/.test(r);return r.trim().length>0&&Number.isFinite(Number(r))};switch(e){case"free":return t;case"text":return typeof t==="string"?t:void 0;case"texts":{if(typeof t==="string")return t;if(!Array.isArray(t))return;let r=t.filter((o)=>typeof o==="string");return r.length===0?void 0:r}case"int":return n(t,!0)?t:void 0;case"double":return n(t,!1)?t:void 0;case"walked":return t}}var bO=new Map([["type","walked"],["items","walked"],["properties","walked"],["anyOf","walked"],["allOf","walked"],["additionalProperties","walked"],["format","text"],["title","text"],["description","text"],["pattern","text"],["enum","texts"],["required","texts"],["propertyOrdering","texts"],["minItems","int"],["maxItems","int"],["minLength","int"],["maxLength","int"],["minProperties","int"],["maxProperties","int"],["minimum","double"],["maximum","double"],["default","free"],["example","free"],["nullable","free"]]),lw=new Set(["string","number","integer","boolean","array","object","null","type_unspecified"]),kO=24,dc=(e)=>typeof e==="object"&&e!==null&&!Array.isArray(e);function lc(e,t,n=0){let r={},o=()=>t(fO),i=(u)=>{if(!dc(u)||n>=kO){o();return}return lc(u,t,n+1)};for(let[u,c]of Object.entries(e)){if(u==="const"){if(o(),typeof c==="string"&&!Object.hasOwn(e,"enum"))r.enum=[c];continue}let d=bO.get(u);if(d===void 0){o();continue}switch(u){case"type":{if(typeof c==="string"){if(lw.has(c.toLowerCase()))r.type=c;else o();break}let p=Array.isArray(c)?c.filter((m)=>typeof m==="string"&&lw.has(m.toLowerCase())):[],l=p.filter((m)=>m.toLowerCase()!=="null");if(!Array.isArray(c)||p.length!==c.length||l.length!==1)o();if(l[0]!==void 0)r.type=l[0];if(p.length!==l.length)r.nullable=!0;break}case"properties":{if(!dc(c)){o();break}let p=[];for(let[l,m]of Object.entries(c)){if(l.length===0){o();continue}let g=i(m);if(g!==void 0)p.push([l,g])}r.properties=Object.fromEntries(p);break}case"items":{if(Array.isArray(c)){o();let l=i(c[0]);if(l!==void 0)r.items=l;break}let p=i(c);if(p!==void 0)r.items=p;break}case"anyOf":case"allOf":{if(!Array.isArray(c)){o();break}let p=[];for(let l of c){let m=i(l);if(m!==void 0)p.push(m)}r[u]=p;break}case"additionalProperties":{if(typeof c==="boolean"){r[u]=c;break}let p=i(c);if(p!==void 0)r[u]=p;break}default:{let p=wO(d,c);if(p===void 0)o();else{if(Array.isArray(p)&&Array.isArray(c)&&p.length!==c.length)o();r[u]=p}}}}let s=typeof r.type==="string"?r.type.toLowerCase():void 0,a=(u,c)=>{if(!c.some((d)=>r[d]!==void 0))return;if(s===u)return;if(s===void 0){r.type=u;return}o();for(let d of c)delete r[d]};a("object",["properties","required","propertyOrdering"]),a("array",["items"]);for(let u of["required","propertyOrdering"]){let c=r[u];if(!Array.isArray(c))continue;let d=dc(r.properties)?r.properties:{},p=c.filter((l)=>typeof l==="string"&&Object.hasOwn(d,l));if(p.length===c.length)continue;if(o(),p.length===0)delete r[u];else r[u]=p}if(r.type==="array"&&r.items===void 0)o(),delete r.type;return r}function EO(e,t){switch(e.type){case"auto":return{functionCallingConfig:{mode:"AUTO"}};case"any":return{functionCallingConfig:{mode:"ANY"}};case"none":return{functionCallingConfig:{mode:"NONE"}};case"tool":return{functionCallingConfig:{mode:"ANY",allowedFunctionNames:[Ur(t,e.name)]}}}}function Yi(e,t,n){let r=n.cloak??null,o=[],i=(h)=>{if(!o.includes(h))o.push(h)},s=cO(e),a=[];for(let h of e.messages){let f=[];if(h.role==="system")i("antigravity:system-turn-as-user");let y=h.role==="assistant"?"model":"user";for(let _ of h.content){if(mO(_))i("antigravity:cache-control-dropped");switch(_.type){case"text":f.push({text:_.text});break;case"image":f.push({inlineData:{mimeType:_.mediaType,data:_.data}});break;case"thinking":i("antigravity:thinking-dropped");break;case"toolUse":f.push({thoughtSignature:uO,functionCall:{name:Ur(r,_.name),args:_.input}});break;case"toolResult":{if(_.native!==void 0)i("antigravity:provider-native-block-dropped");let w=s.get(_.toolUseId);if(w===void 0)i("antigravity:tool-result-unmatched");if(_.isError===!0)i("antigravity:tool-result-error-flag-dropped");let v=Ze(_.files??[],()=>!0);if(v.text.length>0)i("antigravity:tool-result-files-inlined");f.push({functionResponse:{name:Ur(r,w??_.toolUseId),response:{output:be(_.content,v.text)}}});for(let k of _.images??[])f.push({inlineData:{mimeType:k.mediaType,data:k.data}});for(let k of v.carried)f.push({inlineData:{mimeType:k.mediaType,data:k.data}});y="user";break}case"providerNative":i("antigravity:provider-native-block-dropped");break}}if(f.length>0)a.push({role:y,parts:f})}let u={contents:pO(lO(dO(a),i),i)},c=Oe(e.system,"antigravity",i),d=c===void 0?void 0:yO(c,i);if(d!==void 0&&d.trim().length>0)u.systemInstruction={parts:[{text:d}]};let p={};if(e.maxTokens!==void 0)if(e.maxTokens>0)p.maxOutputTokens=e.maxTokens;else i("antigravity:max-tokens-dropped");if(e.temperature!==void 0){let h=Math.min(Math.max(e.temperature,0),2);if(h!==e.temperature)i("antigravity:temperature-clamped");p.temperature=h}if(e.stopSequences!==void 0){if(p.stopSequences=e.stopSequences.slice(0,dw),e.stopSequences.length>dw)i("antigravity:stop-sequences-dropped")}if(e.reasoning!==void 0)switch(e.reasoning.mode){case"betweenTools":i("antigravity:reasoning-between-tools-as-off"),p.thinkingConfig={thinkingBudget:0,includeThoughts:!1};break;case"off":p.thinkingConfig={thinkingBudget:0,includeThoughts:!1};break;case"budget":{let h=e.reasoning.budgetTokens,f=Math.min(Math.max(h,-1),_O);if(f!==h)i("antigravity:thinking-budget-clamped");p.thinkingConfig={thinkingBudget:f,includeThoughts:f!==0}}break;case"adaptive":if(p.thinkingConfig={includeThoughts:e.reasoning.display!=="omitted"&&e.reasoning.display!=="updates"},e.reasoning.effort!==void 0)i("antigravity:reasoning-effort-dropped");break}let l=ot(e);if(l.kind==="readable"){let h=l.format;p.responseSchema=lc(h.schema,i),i("antigravity:response-format-translated")}else if(l.kind==="tooDeep")i("antigravity:response-schema-too-deep");let m=p.maxOutputTokens;if(m!==void 0&&m>yi)p.maxOutputTokens=yi,i("antigravity:max-tokens-clamped");let g=p.thinkingConfig?.thinkingBudget;if(g!==void 0&&g>0){let h=p.maxOutputTokens;if(h===void 0||h<=g)p.maxOutputTokens=Math.min(g+1,yi)}if(Object.keys(p).length>0)u.generationConfig=p;if(e.tools!==void 0){let h=e.tools.filter((_)=>_.kind==="portable");if(h.length!==e.tools.length)i("antigravity:provider-tool-dropped");let f=new Set,y=[];for(let _ of h){let w=Ur(r,_.name);if(f.has(w)){i("antigravity:duplicate-tool-dropped");continue}f.add(w),y.push({name:w,description:_.description,inputSchema:_.inputSchema})}if(r!==null&&r.toWire.size>0)i("antigravity:tool-name-renamed");if(y.length>0)u.tools=[{functionDeclarations:y.map((_)=>({name:_.name,description:_.description,parameters:lc(_.inputSchema,i)}))}]}if(e.toolChoice!==void 0)u.toolConfig=EO(e.toolChoice,r);return Object.assign(u,e.vendor?.antigravity??{}),{body:{project:n.project,requestId:n.requestId,model:t,userAgent:"antigravity",requestType:"agent",request:u},degradations:o}}var TO="https://daily-cloudcode-pa.googleapis.com/v1internal:streamGenerateContent?alt=sse",RO="omni-antigravity-req";function SO(e){let t=vO("sha256").update(`${RO}:${e}`).digest("hex"),n=(Number.parseInt(t[16],16)&3|8).toString(16);return[t.slice(0,8),t.slice(8,12),`4${t.slice(13,16)}`,`${n}${t.slice(17,20)}`,t.slice(20,32)].join("-")}function xO(e){let t=e.credentials.providerData.projectId,n=typeof t==="string"?t.trim():"";if(n.length===0)throw e.fail("AUTH","antigravity credential has no Cloud Code project; reconnect the account");return n}function AO(e){if(e===null||typeof e!=="object")return null;let t=e.cloak;if(t===null||t===void 0||typeof t!=="object")return null;let{toWire:n,fromWire:r}=t;return n instanceof Map&&r instanceof Map?t:null}var pw={buildRequest(e){let t=e.credentials.accessToken;if(t===null||t.length===0)throw e.fail("AUTH","antigravity credential has no access token");let n=xO(e),r=e.requestId!==void 0&&e.requestId.length>0?e.requestId:SO(`${e.model}:${n}`),o=iw(e.request),{body:i,degradations:s}=Yi(e.request,e.model,{project:n,requestId:r,cloak:o}),a=[["Authorization",`Bearer ${t}`]],u=fe(ge(nt.headers,a),nt.order);return{request:{url:TO,method:"POST",headers:u,body:JSON.stringify(i)},decodeState:{cloak:o},degradations:s,...o===null?{}:{cloakedTools:o.toWire.size}}},decode({body:e,decodeState:t}){return Qi(_e(e),{cloak:AO(t)})}};var pc=de("antigravity",wi.capabilities,pw);var mw="omnigateway-public-v1";function bw(e){let t="";for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]^mw.charCodeAt(n%mw.length));return t}var kw=bw([94,93,89,88,87,81,66,85,65,81,76,20,65,88,22,1,1,16,94,31,95,93,5,92,88,11,2,6,0,69,82,76,91,4,26,14,3,3,11,25,17,5,95,94,11,25,73,0,4,21,4,79,30,66,31,18,14,9,28,16,72,4,82,0,3,26,12,9,21,90,6,24,12]),mc=kw,fw=bw([40,34,45,58,55,57,89,46,66,89,63,122,34,65,90,90,37,7,97,60,0,2,33,44,81,20,57,55,81,13,87,8,105,49,19]),OO="https://accounts.google.com/o/oauth2/v2/auth",CO="https://oauth2.googleapis.com/token",PO="https://www.googleapis.com/oauth2/v1/userinfo?alt=json",fc="https://cloudcode-pa.googleapis.com/v1internal",IO=`${fc}:loadCodeAssist`,LO=`${fc}:onboardUser`,NO=`${fc}:retrieveUserQuotaSummary`,DO=["https://www.googleapis.com/auth/cloud-platform","https://www.googleapis.com/auth/userinfo.email","https://www.googleapis.com/auth/userinfo.profile","https://www.googleapis.com/auth/cclog","https://www.googleapis.com/auth/experimentsandconfigs"].join(" "),gw={ideType:"ANTIGRAVITY"},UO="legacy-tier";function MO(e){let t=D(e);if(t===null||typeof t.access_token!=="string")return null;return{accessToken:t.access_token,refreshToken:typeof t.refresh_token==="string"?t.refresh_token:null,expiresIn:typeof t.expires_in==="number"?t.expires_in:null}}async function*hw(e,t){let n=yield ue(CO,nt,{contentType:"application/x-www-form-urlencoded",body:new URLSearchParams(e).toString()}),r=B(n.body);if(n.status<200||n.status>=300)throw t(Te(n.status),ze(n.status,r));let o=MO(r);if(o===null)throw t("AUTH","token endpoint returned no access_token");return o}function yw(e){let t=D(e);if(t===null)return"";let n=t.cloudaicompanionProject;if(typeof n==="string")return n.trim();let o=D(n)?.id;return typeof o==="string"?o.trim():""}function $O(e){let t=D(e),n=t?.allowedTiers;if(Array.isArray(n))for(let o of n){let i=D(o);if(i?.isDefault===!0&&typeof i.id==="string")return i.id}let r=D(t?.currentTier);return typeof r?.id==="string"?r.id:UO}function _w(e,t,n){return ue(e,nt,{contentType:"application/json",body:JSON.stringify(n),extraHeaders:[["Authorization",`Bearer ${t}`]]})}async function*FO(e){let t=yield _w(IO,e,{metadata:gw}),n=t.status>=200&&t.status<300?B(t.body):null,r=$O(n),o=yw(n);if(o.length>0)return{projectId:o,tier:r};let i=yield _w(LO,e,{tier_id:r,metadata:gw});if(i.status<200||i.status>=300)return{projectId:"",tier:r};let s=D(B(i.body));return{projectId:yw(s?.response),tier:r}}async function*BO(e){let t=yield qe(PO,nt,{accessToken:e});if(t.status<200||t.status>=300)return null;let r=D(B(t.body))?.email;return typeof r==="string"&&r.trim().length>0?r:null}function ww(e,t,n,r,o){return{secrets:{accessToken:e.accessToken,refreshToken:e.refreshToken??t,apiKey:null,idToken:null},expiresAt:e.expiresIn===null?null:o()+e.expiresIn*1000,accountEmail:n,providerData:r}}var zO=/\bgemini\b/;function qO(e){let t=`${String(e.bucketId??"")} ${String(e.displayName??"")}`.toLowerCase();if(/\bweekly\b|\bweek\b/.test(t))return"weekly";if(/\b5\s*-?\s*hour|\b5h\b|\bfive\s*hour/.test(t))return"fiveHour";return null}function HO(e){let t=D(e);if(t===null)return[];if(Array.isArray(t.groups))return t.groups;let n=D(t.quotaSummary)?.groups;return Array.isArray(n)?n:[]}function Ew(e,t){let n=[];for(let r of HO(e)){let o=D(r);if(o===null)continue;if(!zO.test(String(o.displayName??"").toLowerCase()))continue;let i=Array.isArray(o.buckets)?o.buckets:[];for(let s of i){let a=D(s);if(a===null||a.disabled===!0)continue;let u=qO(a);if(u===null)continue;let c=it(a,["remainingFraction"]);if(c===null)continue;let d=Math.max(0,Math.min(1,c));n.push({windowType:u,used:Math.round((1-d)*100),limit:100,resetsAt:ac(a,{absolute:["resetTime"]},t),windowMs:null})}}return yt(n)}var gc={kind:"pkce",supportsManualPaste:!0,async*start({redirectUri:e,randomState:t,pkce:n}){let r=t(),{verifier:o,challenge:i}=n(),s=new URL(OO);return s.searchParams.set("client_id",mc),s.searchParams.set("response_type","code"),s.searchParams.set("redirect_uri",e),s.searchParams.set("scope",DO),s.searchParams.set("state",r),s.searchParams.set("access_type","offline"),s.searchParams.set("prompt","consent"),s.searchParams.set("code_challenge",i),s.searchParams.set("code_challenge_method","S256"),{authorizeUrl:s.toString(),pending:{verifier:o,challenge:i,state:r,redirectUri:e}}},async*exchange({code:e,pending:t,fail:n,now:r}){let[o,i]=e.split("#");if(i!==void 0&&i!==t.state)throw n("AUTH","authorization state mismatch");let s=yield*hw({grant_type:"authorization_code",client_id:mc,client_secret:fw,code:(o??"").trim(),redirect_uri:t.redirectUri,code_verifier:t.verifier},n),a=yield*BO(s.accessToken),{projectId:u,tier:c}=yield*FO(s.accessToken);return ww(s,null,a,{projectId:u,tier:c},r)},async*refresh({refreshToken:e,providerData:t,fail:n,now:r}){let o=yield*hw({grant_type:"refresh_token",client_id:mc,client_secret:fw,refresh_token:e},n);return ww(o,e,null,t,r)},async*usage({secrets:e,providerData:t,now:n}){let r=typeof t.projectId==="string"?t.projectId:"";if(r.trim().length===0)return null;let o=yield{...ue(NO,nt,{contentType:"application/json",body:JSON.stringify({project:r}),extraHeaders:[["Authorization",`Bearer ${e.accessToken}`]]}),timeoutMs:sc};if(!Xe(o.status,"antigravity"))return null;return Ew(B(o.body),n())}};import{randomUUID as WO}from"crypto";function hc(){return{agentId:WO()}}function vw(e){let t=e.agentId;if(typeof t!=="string"||t.length===0)return[];return[["x-grok-agent-id",t]]}var yc="b1a00492-073a-47ea-816f-4c329264a828",jO="https://auth.x.ai",KO=`${jO}/.well-known/openid-configuration`,GO=["openid","profile","email","offline_access","grok-cli:access","api:access","conversations:read","conversations:write","workspaces:read","workspaces:write"].join(" "),_c="x.ai";function bc(e){return typeof e==="object"&&e!==null}function Tw(e,t,n){if(typeof e!=="string"||e.trim().length===0)throw n("UPSTREAM",`discovery document has no ${t}`);let r;try{r=new URL(e)}catch{throw n("UPSTREAM",`discovery document has an unusable ${t}`)}let o=r.hostname;if(r.protocol!=="https:"||o!==_c&&!o.endsWith(`.${_c}`))throw n("UPSTREAM",`discovery document ${t} is not an ${_c} https url`);return r.toString()}async function*wc(e){let t=yield Zi(KO,Ot);if(t.status<200||t.status>=300)throw e("UPSTREAM",`discovery endpoint returned http_${t.status}`);let n=B(t.body);if(!bc(n))throw e("UPSTREAM","discovery endpoint returned an unusable response");return{authorizeUrl:Tw(n.authorization_endpoint,"authorization_endpoint",e),tokenUrl:Tw(n.token_endpoint,"token_endpoint",e)}}function ZO(e){if(!bc(e)||typeof e.access_token!=="string")return null;return{accessToken:e.access_token,refreshToken:typeof e.refresh_token==="string"?e.refresh_token:null,expiresIn:typeof e.expires_in==="number"?e.expires_in:null,idToken:typeof e.id_token==="string"?e.id_token:null}}function XO(e){let t=typeof e==="string"?e.split("."):[],n=t[1];if(t.length!==3||n===void 0||n.length===0)return null;try{let r=JSON.parse(Buffer.from(n,"base64url").toString("utf8"));if(!bc(r))return null;return typeof r.email==="string"&&r.email.trim().length>0?r.email:null}catch{return null}}async function*Rw(e,t,n){let r=yield ue(e,Ot,{contentType:"application/x-www-form-urlencoded",body:new URLSearchParams(t).toString()}),o=B(r.body);if(r.status<200||r.status>=300)throw n(Te(r.status),ze(r.status,o));let i=ZO(o);if(i===null)throw n("AUTH","token endpoint returned no access_token");return i}function VO(e){let t=e.agentId;return typeof t==="string"&&t.trim().length>0?t:hc().agentId}function Sw(e,t,n,r){return{secrets:{accessToken:e.accessToken,refreshToken:e.refreshToken??t,apiKey:null,idToken:e.idToken},expiresAt:e.expiresIn===null?null:r()+e.expiresIn*1000,accountEmail:XO(e.idToken),providerData:{agentId:n}}}var kc={kind:"pkce",supportsManualPaste:!0,async*start({redirectUri:e,fail:t,pkce:n,randomState:r}){let{authorizeUrl:o}=yield*wc(t),{verifier:i,challenge:s}=n(),a=r(),u=new URL(o);return u.searchParams.set("response_type","code"),u.searchParams.set("client_id",yc),u.searchParams.set("redirect_uri",e),u.searchParams.set("scope",GO),u.searchParams.set("code_challenge",s),u.searchParams.set("code_challenge_method","S256"),u.searchParams.set("state",a),u.searchParams.set("nonce",r()),u.searchParams.set("referrer","grok-build"),{authorizeUrl:u.toString(),pending:{verifier:i,challenge:s,state:a,redirectUri:e}}},async*exchange({code:e,pending:t,fail:n,now:r}){let[o,i]=e.split("#");if(i!==void 0&&i!==t.state)throw n("AUTH","authorization state mismatch");let{tokenUrl:s}=yield*wc(n),a=yield*Rw(s,{grant_type:"authorization_code",code:(o??"").trim(),redirect_uri:t.redirectUri,client_id:yc,code_verifier:t.verifier},n);return Sw(a,null,hc().agentId,r)},async*refresh({refreshToken:e,providerData:t,fail:n,now:r}){let{tokenUrl:o}=yield*wc(n),i=yield*Rw(o,{grant_type:"refresh_token",client_id:yc,refresh_token:e},n);return Sw(i,e,VO(t),r)}};var xw="https://api.kilo.ai/api/device-auth/codes",QO="https://api.kilo.ai/api/profile",Aw="https://kilo.ai",YO=300,JO=3;function eC(e){return typeof e==="object"&&e!==null}function Ji(e){return eC(e)?e:null}function Nn(e,t){let n=e[t];return typeof n==="string"&&n.trim().length>0?n:null}function Ow(e,t){let n=e[t];return typeof n==="number"&&Number.isFinite(n)&&n>0?n:null}function tC(e,t){let n=Ji(e),r=n===null?null:Nn(n,"code");if(n===null||r===null)throw t("AUTH","device code endpoint returned an unusable response");return{code:r,verificationUrl:Nn(n,"verificationUrl")??Aw,expiresIn:Ow(n,"expiresIn")??YO}}async function*nC(e){try{let t=yield qe(QO,ft,{accessToken:e});if(t.status<200||t.status>=300)return null;let r=Ji(B(t.body))?.organizations;if(!Array.isArray(r))return null;let o=Ji(r[0]);return o===null?null:Nn(o,"id")}catch{return null}}var Ec={kind:"device",supportsManualPaste:!1,needsDeviceId:!1,async*start(){return{authorizeUrl:Aw,pending:{verifier:"",challenge:"",state:"",redirectUri:""}}},async*begin({fail:e,now:t}){let n=yield ue(xw,ft,{contentType:"application/json",body:""}),r=B(n.body);if(n.status===429)throw e("RATE_LIMIT","kilo has too many pending device authorizations; wait for one to expire and retry");if(n.status<200||n.status>=300)throw e(Te(n.status),`kilo refused a device code: http_${n.status}`);let o=tC(r,e);return{authorizeUrl:o.verificationUrl,userCode:o.code,pending:{verifier:"",challenge:"",state:"",redirectUri:"",deviceCode:o.code,interval:JO,extra:{expiresAt:t()+o.expiresIn*1000}}}},async*exchange({pending:e,fail:t,keepPolling:n,now:r}){let o=e.deviceCode;if(o===void 0)throw t("INTERNAL","kilo exchange requires a pending flow produced by begin()");let i=e.extra===void 0?null:Ow(e.extra,"expiresAt");if(i!==null&&r()>=i)throw t("AUTH","kilo device code expired; start the authorization again");let s=yield Zi(`${xw}/${encodeURIComponent(o)}`,ft);if(s.status===202)throw n("http_202");if(s.status===403)throw t("AUTH","kilo authorization was denied");if(s.status===410)throw t("AUTH","kilo device code expired; start the authorization again");if(s.status<200||s.status>=300)throw t(Te(s.status),`kilo refused the device code poll: http_${s.status}`);let a=Ji(B(s.body));if(a===null)throw n("http_200");if(Nn(a,"status")!=="approved")throw n("http_200");let u=Nn(a,"token");if(u===null)throw t("AUTH","kilo approved the authorization without a token");let c=yield*nC(u);return{secrets:{accessToken:u,refreshToken:null,apiKey:null,idToken:null},expiresAt:null,accountEmail:Nn(a,"userEmail"),providerData:c===null?{}:{orgId:c}}},async*refresh({fail:e}){throw e("AUTH","kilo tokens cannot be refreshed; reconnect the kilo account to get a new one")}};import{randomUUID as rC}from"crypto";function Mr(){return{deviceId:rC(),deviceName:"MacBook-Pro",deviceModel:"MacBookPro18,3",osVersion:"15.3.1"}}function $r(e){let t=e.deviceId;if(typeof t!=="string"||t.length===0)return[];let n=(r)=>typeof r==="string"&&r.length>0?r:"unknown";return[["X-Msh-Device-Id",t],["X-Msh-Device-Name",n(e.deviceName)],["X-Msh-Device-Model",n(e.deviceModel)],["X-Msh-Os-Version",n(e.osVersion)]]}var oC="17e5f671-d194-4dfb-9706-5516cb48c098",iC="https://auth.kimi.com/api/oauth/device_authorization",Cw="https://auth.kimi.com/api/oauth/token",sC="https://api.kimi.com/coding/v1/usages",aC=5,uC=new Set(["authorization_pending","slow_down"]);function cC(e){return typeof e==="object"&&e!==null}function Rc(e){return cC(e)?e:null}function Wt(e,t){let n=e[t];return typeof n==="string"&&n.trim().length>0?n:null}function Lw(e,t){let n=e[t];return typeof n==="number"&&Number.isFinite(n)&&n>0?n:null}function Pw(e,t){let n=Rc(e);if(n===null)throw t("AUTH","token endpoint returned no access_token");let r=Wt(n,"access_token");if(r===null)throw t("AUTH","token endpoint returned no access_token");return{accessToken:r,refreshToken:Wt(n,"refresh_token"),expiresIn:Lw(n,"expires_in"),email:Wt(n,"email")}}function dC(e,t){let n=Rc(e);if(n===null)throw t("AUTH","device code endpoint returned an unusable response");let r=Wt(n,"device_code"),o=Wt(n,"user_code");if(r===null||o===null)throw t("AUTH","device code endpoint returned an unusable response");return{deviceCode:r,userCode:o,verificationUri:Wt(n,"verification_uri_complete")??Wt(n,"verification_uri")??"https://www.kimi.com/device",interval:Lw(n,"interval")??aC}}async function*vc(e,t,n,r,o){let i=yield ue(e,Ct,{contentType:"application/x-www-form-urlencoded",body:new URLSearchParams({...t,client_id:oC}).toString(),extraHeaders:$r(n)}),s=B(i.body);if(i.status>=200&&i.status<300)return s;let a=Rc(s),u=a===null?`http_${i.status}`:Wt(a,"error")??`http_${i.status}`;if(uC.has(u))throw o(u);throw r(Te(i.status),ze(i.status,s))}function Tc(e){if(typeof e?.deviceId==="string"&&e.deviceId.length>0){let t=Mr(),n=(r,o)=>{let i=e[r];return typeof i==="string"&&i.length>0?i:o};return{deviceId:e.deviceId,deviceName:n("deviceName",t.deviceName),deviceModel:n("deviceModel",t.deviceModel),osVersion:n("osVersion",t.osVersion)}}return Mr()}function lC(e){return{...Mr(),deviceId:e}}function Iw(e,t,n,r){return{secrets:{accessToken:e.accessToken,refreshToken:e.refreshToken??n,apiKey:null,idToken:null},expiresAt:e.expiresIn===null?null:r()+e.expiresIn*1000,accountEmail:e.email,providerData:{...t}}}function Nw(e,t){let n=D(e);if(n===null)return null;return yt([st(n.usage??n.Usage,"weekly",t)])}var Sc={kind:"device",needsDeviceId:!0,supportsManualPaste:!1,async*start(){return{authorizeUrl:"https://www.kimi.com/device",pending:{verifier:"",challenge:"",state:"",redirectUri:"",extra:{...Mr()}}}},async*begin({deviceId:e,fail:t,keepPolling:n}){if(e.trim().length===0)throw t("INTERNAL","kimi begin requires a non-blank deviceId");let r=lC(e),o=dC(yield*vc(iC,{},r,t,n),t);return{authorizeUrl:o.verificationUri,userCode:o.userCode,pending:{verifier:"",challenge:"",state:"",redirectUri:"",deviceCode:o.deviceCode,interval:o.interval,extra:{...r}}}},async*exchange({pending:e,fail:t,keepPolling:n,now:r}){if(e.deviceCode===void 0)throw t("INTERNAL","kimi exchange requires a pending flow produced by begin()");let o=Tc(e.extra),i=Pw(yield*vc(Cw,{grant_type:"urn:ietf:params:oauth:grant-type:device_code",device_code:e.deviceCode,device_id:o.deviceId},o,t,n),t);return Iw(i,o,null,r)},async*refresh({refreshToken:e,providerData:t,fail:n,keepPolling:r,now:o}){let i=Tc(t),s=Pw(yield*vc(Cw,{grant_type:"refresh_token",refresh_token:e,device_id:i.deviceId},i,n,r),n);return Iw(s,i,e,o)},async*usage({secrets:e,providerData:t,now:n}){if(e.accessToken===null)return null;let r=Tc(t),o=yield qe(sC,Ct,{accessToken:e.accessToken,extraHeaders:$r(r)});if(!Xe(o.status,"kimi"))return null;return Nw(B(o.body),n())}};function xc(e){if(typeof e!=="string"||e.length===0)return null;let t;try{t=new URL(e)}catch{return null}if(t.protocol!=="https:")return null;let n=t.hostname;if(n!=="meta.ai"&&!n.endsWith(".meta.ai"))return null;return`${t.origin}${t.pathname}`.replace(/\/$/,"")}function Dw(e){return`${xc(e.baseUrl)??"https://api.meta.ai/v1"}/responses`}var Bw="https://auth.meta.com",pC=`${Bw}/oidc/device/authorization/`,Uw=`${Bw}/oidc/device/token/`,zw="https://api.meta.ai/muse-code/key",mC="1031625952748946",fC="urn:ietf:params:oauth:grant-type:device_code",qw="https://auth.meta.com/oauth/device/",gC=5,hC=new Set(["authorization_pending","slow_down"]);function yC(e){return typeof e==="object"&&e!==null}function es(e){return yC(e)?e:null}function _t(e,t){let n=e[t];return typeof n==="string"&&n.trim().length>0?n:null}function Hw(e,t){let n=e[t];return typeof n==="number"&&Number.isFinite(n)&&n>0?n:null}function Mw(e,t){let n=es(e),r=n===null?null:_t(n,"access_token");if(n===null||r===null)throw t("AUTH","token endpoint returned no access_token");return{accessToken:r,refreshToken:_t(n,"refresh_token"),expiresIn:Hw(n,"expires_in")}}function _C(e,t){let n=es(e),r=n===null?null:_t(n,"device_code"),o=n===null?null:_t(n,"user_code");if(n===null||r===null||o===null)throw t("AUTH","device authorization response missing user_code or verification_uri");return{deviceCode:r,userCode:o,verificationUri:_t(n,"verification_uri_complete")??_t(n,"verification_uri")??qw,interval:Hw(n,"interval")??gC}}async function*Ac(e,t,n,r){let o=yield ue(e,gt,{contentType:"application/x-www-form-urlencoded",body:new URLSearchParams({...t,client_id:mC}).toString(),extraHeaders:[["Accept","application/json"]]}),i=B(o.body);if(o.status>=200&&o.status<300)return i;let s=es(i),a=s===null?`http_${o.status}`:_t(s,"error")??`http_${o.status}`;if(hC.has(a))throw r(a);if(a==="expired_token")throw n("AUTH","muse device code expired; start the authorization again");throw n(Te(o.status),ze(o.status,i))}async function*$w(e,t){let n=yield ue(zw,gt,{contentType:"application/json",body:"{}",extraHeaders:[["Authorization",`Bearer ${e}`],["Accept","application/json"]]}),r=B(n.body);if(n.status<200||n.status>=300){if(n.status===401||n.status===403)throw t("AUTH","muse rejected the saved login; reconnect the account or use a different one");if(n.status===429)throw t("RATE_LIMIT",`muse rate limited the key mint: http_${n.status}`);throw t("UPSTREAM",`muse key mint failed: http_${n.status}`)}let o=es(r);if(o===null)throw t("UPSTREAM","muse key mint returned an unusable response");if(o.require_payment===!0)throw t("AUTH","muse requires a payment method on the Meta account; add one at https://dev.meta.ai and reconnect");let i=_t(o,"api_key");if(i===null)throw t("AUTH","muse key mint returned an empty api key; finish onboarding at https://dev.meta.ai and reconnect");return{apiKey:i,email:_t(o,"user_email"),tierName:_t(o,"subs_tier_name"),subscriptionActive:o.is_subs_active===!0,baseUrl:xc(o.base_url),usage:o.subs_usage}}function Fw(e,t,n,r){return{secrets:{accessToken:e.accessToken,refreshToken:e.refreshToken??n,apiKey:t.apiKey,idToken:null},expiresAt:e.expiresIn===null?null:r()+e.expiresIn*1000,accountEmail:t.email,providerData:{...t.tierName===null?{}:{subscriptionTier:t.tierName},subscriptionActive:t.subscriptionActive,...t.baseUrl===null?{}:{baseUrl:t.baseUrl}}}}var Oc={kind:"device",supportsManualPaste:!1,needsDeviceId:!1,async*start(){return{authorizeUrl:qw,pending:{verifier:"",challenge:"",state:"",redirectUri:""}}},async*begin({fail:e,keepPolling:t}){let n=_C(yield*Ac(pC,{},e,t),e);return{authorizeUrl:n.verificationUri,userCode:n.userCode,pending:{verifier:"",challenge:"",state:"",redirectUri:"",deviceCode:n.deviceCode,interval:n.interval}}},async*exchange({pending:e,fail:t,keepPolling:n,now:r}){if(e.deviceCode===void 0)throw t("INTERNAL","muse exchange requires a pending flow produced by begin()");let o=Mw(yield*Ac(Uw,{grant_type:fC,device_code:e.deviceCode},t,n),t);return Fw(o,yield*$w(o.accessToken,t),null,r)},async*refresh({refreshToken:e,fail:t,keepPolling:n,now:r}){let o=Mw(yield*Ac(Uw,{grant_type:"refresh_token",refresh_token:e},t,n),t);return Fw(o,yield*$w(o.accessToken,t),e,r)},async*usage({secrets:e,now:t}){if(e.accessToken===null)return null;let n=yield ue(zw,gt,{contentType:"application/json",body:"{}",extraHeaders:[["Authorization",`Bearer ${e.accessToken}`],["Accept","application/json"]]});if(!Xe(n.status,"muse"))return null;let r=D(B(n.body));return r===null?null:Ww(r.subs_usage,t())}};function Ww(e,t){let n=D(e);if(n===null)return null;let r=D(n.window),o=r===null?null:it(r,["window_duration_mins"]);return yt([st(n.window,"fiveHour",t,o===null?null:o*60000),st(n.weekly,"weekly",t)])}import{createHash as jw,createHmac as wC}from"crypto";var bC="6ba7b812-9dad-11d1-80b4-00c04fd430c8",kC=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,Kw=Date.UTC(2026,9,1),ts=31536000000;function Cc(e){return kC.test(e)}function Pc(e){let t=Buffer.from(e).toString("hex");return`${t.slice(0,8)}-${t.slice(8,12)}-${t.slice(12,16)}-${t.slice(16,20)}-${t.slice(20,32)}`}function Ic(e,t){let n=Uint8Array.from(e.subarray(0,16));return n[6]=(n[6]??0)&15|t<<4,n[8]=(n[8]??0)&63|128,n}var ns=(e)=>jw("sha256").update(e).digest();function rs(e,t){let n=jw("sha1").update(Buffer.from(e.replace(/-/g,""),"hex")).update(t,"utf8").digest();return Pc(Ic(n,5))}function Gw(e){return Pc(Ic(ns(e),4))}function Fr(e,t){let n=Uint8Array.from(ns(e).subarray(0,16)),r=Math.max(0,Math.floor(t));for(let o=5;o>=0;o--)n[o]=r%256,r=Math.floor(r/256);return Pc(Ic(n,7))}function Lc(e){let n=ns(`thread:${e}`).readUIntBE(0,6)%ts;return Fr(e,Kw-ts+n)}function Nc(e,t){let n=e.replace(/-/g,""),r=n[12],o=Number.parseInt(n.slice(0,12),16);if(r==="7"&&Number.isFinite(o)&&o<=t)return o;let i=ns(`thread:${e}`);return Kw-ts+i.readUIntBE(0,6)%ts}var EC=/^[0-9a-f]{64}$/;function Dc(e){let{installationId:t,idSalt:n}=e;return{...typeof t==="string"&&Cc(t)?{installationId:t}:{},...typeof n==="string"&&EC.test(n)?{idSalt:n}:{}}}function Zw(e){let t=Dc(e),n=()=>Buffer.from(globalThis.crypto.getRandomValues(new Uint8Array(32))).toString("hex");return{installationId:t.installationId??globalThis.crypto.randomUUID(),idSalt:t.idSalt??n()}}function dn(e,t){if(e===void 0)return t;return wC("sha256",e).update(t).digest("hex")}function Xw(e){return rs(bC,e)}var ob="app_EMoamEEZ73f0CkXaXp7hrann",vC="https://auth.openai.com/oauth/authorize",TC="https://auth.openai.com/oauth/token",Vw="openid profile email offline_access",RC="https://chatgpt.com/backend-api/wham/usage",Qw="https://chatgpt.com/backend-api/wham/rate-limit-reset-credits";function Uc(e){return typeof e==="object"&&e!==null}function ib(e){return typeof e==="string"&&e.trim().length>0?e:null}function Mc(e){return ib(e.accountId)}function SC(e){let t=typeof e==="string"?e.split("."):[],[n,r,o]=t;if(t.length!==3||n===void 0||r===void 0||o===void 0||n.length===0||r.length===0||o.length===0)return{email:null,accountId:null};try{let i=JSON.parse(Buffer.from(r,"base64url").toString("utf8"));if(!Uc(i))return{email:null,accountId:null};let s=i["https://api.openai.com/auth"];return{email:typeof i.email==="string"?i.email:null,accountId:Uc(s)?ib(s.chatgpt_account_id):null}}catch{return{email:null,accountId:null}}}function xC(e){if(!Uc(e)||typeof e.access_token!=="string")return null;return{accessToken:e.access_token,refreshToken:typeof e.refresh_token==="string"?e.refresh_token:null,expiresIn:typeof e.expires_in==="number"?e.expires_in:null,idToken:typeof e.id_token==="string"?e.id_token:null}}async function*Yw(e,t){let n=yield ue(TC,rt,{contentType:"application/x-www-form-urlencoded",body:new URLSearchParams({...e,client_id:ob}).toString()}),r=B(n.body);if(n.status<200||n.status>=300)throw t(Te(n.status),ze(n.status,r));let o=xC(r);if(o===null)throw t("AUTH","token endpoint returned no access_token");return o}function Jw(e,t,n,r,o){let i=SC(e.idToken);return{secrets:{accessToken:e.accessToken,refreshToken:e.refreshToken??t,apiKey:null,idToken:e.idToken},expiresAt:e.expiresIn===null?null:n()+e.expiresIn*1000,accountEmail:i.email,providerData:{accountId:i.accountId??r,...Zw(o)}}}function sb(e){let t=D(e);if(t===null)return null;let n=it(t,["limit_window_seconds","limitWindowSeconds","window_seconds","windowSeconds"]);return n===null||n<=0?null:n}function eb(e,t){let n=sb(e);if(n===null)return t;if(n<=21600)return"fiveHour";if(n<=129600)return"daily";return"weekly"}function tb(e){let t=sb(e);return t===null?null:t*1000}function ab(e,t){let n=D(e);if(n===null)return null;let r=Xi(n,["rate_limit","rateLimit"])??n,o=r.primary_window??r.primaryWindow,i=r.secondary_window??r.secondaryWindow;return yt([st(o,eb(o,"fiveHour"),t,tb(o)),st(i,eb(i,"weekly"),t,tb(i))])}var $c={kind:"pkce",supportsManualPaste:!0,async*start({redirectUri:e,pkce:t,randomState:n}){let{verifier:r,challenge:o}=t(),i=n(),s=new URL(vC);return s.searchParams.set("client_id",ob),s.searchParams.set("response_type","code"),s.searchParams.set("redirect_uri",e),s.searchParams.set("scope",Vw),s.searchParams.set("code_challenge",o),s.searchParams.set("code_challenge_method","S256"),s.searchParams.set("id_token_add_organizations","true"),s.searchParams.set("codex_cli_simplified_flow","true"),s.searchParams.set("state",i),s.searchParams.set("originator",Pr),s.searchParams.set("prompt","login"),{authorizeUrl:s.toString(),pending:{verifier:r,challenge:o,state:i,redirectUri:e}}},async*exchange({code:e,pending:t,providerData:n,fail:r,now:o}){let[i,s]=e.split("#");if(s!==void 0&&s!==t.state)throw r("AUTH","authorization state mismatch");let a=yield*Yw({grant_type:"authorization_code",code:(i??"").trim(),redirect_uri:t.redirectUri,code_verifier:t.verifier},r);return Jw(a,null,o,null,n??{})},async*refresh({refreshToken:e,providerData:t,fail:n,now:r}){let o=yield*Yw({grant_type:"refresh_token",refresh_token:e,scope:Vw},n);return Jw(o,e,r,Mc(t),t)},async*usage({secrets:e,providerData:t,now:n}){if(e.accessToken===null)return null;let r=Mc(t),o=yield qe(RC,rt,{accessToken:e.accessToken,...r===null?{}:{extraHeaders:[["chatgpt-account-id",r]]}});if(!Xe(o.status,"openai"))return null;return ab(B(o.body),n())},async*resetCredits({secrets:e,providerData:t}){if(e.accessToken===null)return null;let n=yield qe(Qw,rt,{accessToken:e.accessToken,extraHeaders:nb(t)});if(!Xe(n.status,"openai"))return null;return ub(B(n.body))},async*redeemReset({secrets:e,providerData:t,creditId:n,requestId:r,fail:o}){if(e.accessToken===null)throw o("AUTH","credential holds no access token");let i=yield ue(`${Qw}/consume`,rt,{contentType:"application/json",body:JSON.stringify({credit_id:n,redeem_request_id:r}),extraHeaders:[["Authorization",`Bearer ${e.accessToken}`],...nb(t)]});if(i.status<200||i.status>=300)throw o(AC(i.status),`reset credit redeem refused: http_${i.status}`,{status:i.status});let s=D(B(i.body));return{windowsReset:s===null?null:it(s,["windows_reset"])}}};function nb(e){let t=Mc(e);return t===null?[]:[["chatgpt-account-id",t]]}function AC(e){if(e===429)return"RATE_LIMIT";if(e===401||e===403)return"AUTH";if(e>=400&&e<500)return"CONFLICT";return"UPSTREAM"}function rb(e){if(typeof e!=="string")return null;let t=Date.parse(e);return Number.isFinite(t)?t:null}function ub(e){let t=D(e);if(t===null||!Array.isArray(t.credits))return null;let n=t.credits.flatMap((r)=>{let o=D(r);if(o===null||typeof o.id!=="string"||typeof o.status!=="string")return[];return[{id:o.id,status:o.status,title:typeof o.title==="string"?o.title:null,grantedAt:rb(o.granted_at),expiresAt:rb(o.expires_at)}]});return{available:n.filter((r)=>r.status==="available").length,credits:n}}function Fc(){return[["anthropic",cc],["openai",$c],["kimi",Sc],["kilo",Ec],["grok",kc],["antigravity",gc],["muse",Oc]]}var cb={stop:"endTurn",length:"maxTokens",tool_calls:"toolUse",content_filter:"contentFilter"};function OC(e){if(typeof e.reasoning==="string"&&e.reasoning.length>0)return e.reasoning;if(typeof e.reasoning_content==="string"&&e.reasoning_content.length>0)return e.reasoning_content;if(!Array.isArray(e.reasoning_details))return"";return e.reasoning_details.flatMap((t)=>{if(t===null||typeof t!=="object")return[];if(typeof t.text==="string"&&t.text.length>0)return[t.text];if(typeof t.summary==="string"&&t.summary.length>0)return[t.summary];return[]}).join("")}function lb(e){try{let t=JSON.parse(e);return typeof t==="object"&&t!==null?t:null}catch{return null}}async function*pb(e){let t=!1,n=!1,r="endTurn",o={inputTokens:0,outputTokens:0,cacheReadTokens:0,cacheWriteTokens:0},i=new Map,s=0,a,u=0;for await(let c of e){if(c.data==="[DONE]"){n=!0;break}let d=lb(c.data);if(d===null)continue;if(!t&&(d.id!==void 0||d.model!==void 0))t=!0,yield{type:"start",id:String(d.id??""),model:String(d.model??"")};if(d.usage){let g=d.usage.prompt_tokens_details;o=xe(d.usage.prompt_tokens??0,d.usage.completion_tokens??0,g?.cached_tokens??d.usage.prompt_cache_hit_tokens??0,g?.cache_creation_tokens??g?.cache_write_tokens??0)}let p=d.choices?.[0];if(!p)continue;let l=p.delta??{},m=OC(l);if(m.length>0){if(a!=="thinking"){if(a!==void 0)yield{type:"blockEnd",index:u};a="thinking",u=s++,yield{type:"blockStart",index:u,block:{type:"thinking"}}}yield{type:"blockDelta",index:u,delta:{type:"thinking",text:m}}}if(typeof l.content==="string"&&l.content.length>0){if(a!=="text"){if(a!==void 0)yield{type:"blockEnd",index:u};a="text",u=s++,yield{type:"blockStart",index:u,block:{type:"text"}}}yield{type:"blockDelta",index:u,delta:{type:"text",text:l.content}}}for(let g of l.tool_calls??[]){let h=g.index??0,f=i.get(h);if(f===void 0){if(a!==void 0)yield{type:"blockEnd",index:u};f=s++,i.set(h,f),a="tool",u=f,yield{type:"blockStart",index:f,block:{type:"toolUse",id:String(g.id??`call_${h}`),name:String(g.function?.name??"")}}}let y=g.function?.arguments;if(typeof y==="string"&&y.length>0)yield{type:"blockDelta",index:f,delta:{type:"toolJson",partial:y}}}if(typeof p.finish_reason==="string"){let g=p.finish_reason,h=Object.hasOwn(cb,g)?cb[g]:void 0;if(h===void 0){yield{type:"error",code:"UPSTREAM",message:`unrecognized custom endpoint finish reason "${g}"`,retryable:!1};return}r=h}}if(n){if(a!==void 0)yield{type:"blockEnd",index:u};yield{type:"end",stopReason:r,usage:o}}else yield{type:"error",code:"UPSTREAM",message:"upstream stream ended before [DONE]",retryable:ee.UPSTREAM}}var db={rate_limit_exceeded:"RATE_LIMIT",insufficient_quota:"QUOTA_EXHAUSTED",invalid_api_key:"AUTH",server_error:"UPSTREAM",context_length_exceeded:"BAD_REQUEST",content_policy_violation:"CONTENT_FILTER"},CC=new Set(["response.created","response.queued","response.in_progress","response.output_item.added","response.output_item.done","response.content_part.added","response.content_part.done","response.output_text.delta","response.output_text.done","response.output_text.annotation.added","response.refusal.delta","response.refusal.done","response.reasoning_summary_part.added","response.reasoning_summary_part.done","response.reasoning_summary_text.delta","response.reasoning_summary_text.done","response.reasoning_text.delta","response.reasoning_text.done","response.function_call_arguments.delta","response.function_call_arguments.done","response.completed","response.incomplete","response.failed","error"]);async function*mb(e){let t=new Map,n=0,r=(a,u=0)=>{let c=`${a}:${u}`,d=t.get(c);if(d!==void 0)return d;let p=n++;return t.set(c,p),p},o=!1,i=!1,s=new Set;for await(let a of e){if(a.data==="[DONE]")continue;if(!CC.has(a.event)){yield{type:"error",code:"UPSTREAM",message:`unrecognized custom endpoint stream event "${a.event}"`,retryable:!1};return}let u=lb(a.data);if(u===null)continue;switch(a.event){case"response.created":yield{type:"start",id:String(u.response?.id??""),model:String(u.response?.model??"")};break;case"response.output_item.added":{let c=u.item??{};if(c.type==="reasoning")s.add(u.output_index??0),yield{type:"blockStart",index:r(u.output_index??0),block:{type:"thinking"}};else if(c.type==="function_call")o=!0,s.add(u.output_index??0),yield{type:"blockStart",index:r(u.output_index??0),block:{type:"toolUse",id:String(c.call_id),name:String(c.name)}};break}case"response.content_part.added":if(u.part?.type==="output_text")yield{type:"blockStart",index:r(u.output_index??0,u.content_index??0),block:{type:"text"}};break;case"response.output_text.delta":yield{type:"blockDelta",index:r(u.output_index??0,u.content_index??0),delta:{type:"text",text:String(u.delta??"")}};break;case"response.reasoning_summary_text.delta":yield{type:"blockDelta",index:r(u.output_index??0),delta:{type:"thinking",text:String(u.delta??"")}};break;case"response.function_call_arguments.delta":yield{type:"blockDelta",index:r(u.output_index??0),delta:{type:"toolJson",partial:String(u.delta??"")}};break;case"response.content_part.done":yield{type:"blockEnd",index:r(u.output_index??0,u.content_index??0)};break;case"response.output_item.done":{let c=u.output_index??0;if(s.delete(c))yield{type:"blockEnd",index:r(c)};break}case"response.completed":case"response.incomplete":{i=!0;let c=u.response??{},d=c.incomplete_details?.reason,p=o?"toolUse":"endTurn";if(d==="max_output_tokens")p="maxTokens";else if(d==="content_filter")p="contentFilter";else if(d!==void 0||a.event==="response.incomplete"||c.status!==void 0&&c.status!=="completed"){yield{type:"error",code:"UPSTREAM",message:d!==void 0?`unrecognized custom endpoint incomplete reason "${String(d)}"`:c.status!==void 0&&c.status!=="incomplete"?`custom endpoint reported terminal response status "${String(c.status)}"`:"custom endpoint reported the response incomplete without a reason",retryable:!1};break}yield{type:"end",stopReason:p,usage:xe(c.usage?.input_tokens??0,c.usage?.output_tokens??0,c.usage?.input_tokens_details?.cached_tokens??c.usage?.prompt_tokens_details?.cached_tokens??0)};break}case"response.failed":case"error":{i=!0;let c=u.response?.error??u.error??{},d=String(c.code??c.type),p=(Object.hasOwn(db,d)?db[d]:void 0)??"UPSTREAM";yield{type:"error",code:p,message:String(c.message??"upstream error"),retryable:ee[p]};break}default:break}}if(!i)yield{type:"error",code:"UPSTREAM",message:"upstream stream ended before response completion",retryable:ee.UPSTREAM}}function PC(e){switch(e.type){case"auto":return"auto";case"any":return"required";case"none":return"none";case"tool":return{type:"function",function:{name:e.name}}}}function IC(e){switch(e.type){case"auto":return"auto";case"any":return"required";case"none":return"none";case"tool":return{type:"function",name:e.name}}}function fb(e){if(e===void 0||e.mode!=="adaptive")return;return e.effort??"medium"}function gb(e,t){let n=[],r=(p)=>{if(!n.includes(p))n.push(p)};if(e.betas?.includes(Ee))r("custom:context-1m-dropped");let o=[],i=Oe(e.system,"custom",r);if(i!==void 0&&i.length>0)o.push({role:"system",content:i});for(let p of e.messages){let l=[],m=[];for(let g of p.content)switch(g.type){case"text":l.push(g.text);break;case"image":r("custom:images-dropped");break;case"thinking":r("custom:thinking-dropped");break;case"toolUse":m.push({id:g.id,type:"function",function:{name:g.name,arguments:JSON.stringify(g.input)}});break;case"toolResult":{if(g.native!==void 0)r("custom:anthropic-native-block-dropped");let h=Ze(g.files??[],()=>!1);if(o.push({role:"tool",tool_call_id:g.toolUseId,content:be(g.content,h.text)}),g.images!==void 0)r("custom:images-dropped");if(h.text.length>0)r("custom:tool-result-files-inlined");if(h.dropped)r("custom:files-dropped");break}case"providerNative":r("custom:anthropic-native-block-dropped");break}if(m.length>0)o.push({role:p.role,content:l.length>0?l.join(`
|
|
1668
|
-
`):null,tool_calls:m});else if(
|
|
1669
|
-
`)})}let s={model:t,messages:o,stream:e.stream,stream_options:{include_usage:!0}};if(e.maxTokens!==void 0)s.max_tokens=e.maxTokens;if(e.temperature!==void 0)s.temperature=e.temperature;if(e.stopSequences!==void 0)s.stop=e.stopSequences;if(e.tools!==void 0){let p=e.tools.filter((l)=>l.kind==="portable");if(p.length!==e.tools.length)r("custom:anthropic-tool-dropped");s.tools=p.map((l)=>({type:"function",function:{name:l.name,description:l.description,parameters:l.inputSchema}}))}if(e.toolChoice!==void 0)s.tool_choice=PC(e.toolChoice);if(e.reasoning?.mode==="betweenTools")r("custom:reasoning-between-tools-as-off");let a=fb(e.reasoning);if(a!==void 0)s.reasoning_effort=a;else if(e.reasoning?.mode==="budget")r("custom:reasoning-budget-dropped");Object.assign(s,e.vendor?.openai??{});let u=s.text;delete s.text;let c=ot(e),d=c.kind==="readable"?c.format:void 0;if(d!==void 0){if(s.response_format===void 0)s.response_format={type:"json_schema",json_schema:{name:d.name,schema:d.schema,strict:!0}},r("custom:response-format-translated")}else if(le(u)&&u.format!==void 0)r("custom:response-format-dropped");else if(c.kind==="tooDeep")delete s.response_format,r("custom:response-schema-too-deep");return{body:s,degradations:n}}function hb(e,t){let n=[],r=(c)=>{if(!n.includes(c))n.push(c)},o=[];if(e.betas?.includes(Ee))r("custom:context-1m-dropped");for(let c of e.messages){let d=[],p=c.role==="system";if(p)r("custom:system-turn-as-developer");let l=p?"developer":c.role,m=()=>{if(d.length===0)return;o.push({type:"message",role:l,content:[...d]}),d.length=0};for(let g of c.content)switch(g.type){case"text":d.push({type:l==="assistant"?"output_text":"input_text",text:g.text});break;case"image":d.push({type:"input_image",image_url:`data:${g.mediaType};base64,${g.data}`});break;case"thinking":r("custom:thinking-dropped");break;case"toolUse":m(),o.push({type:"function_call",call_id:g.id,name:g.name,arguments:JSON.stringify(g.input)});break;case"toolResult":{if(g.native!==void 0)r("custom:anthropic-native-block-dropped");m();let h=Ht(g.files??[]);if(o.push({type:"function_call_output",call_id:g.toolUseId,output:be(g.content,h.text)}),g.images!==void 0){r("custom:tool-result-images-moved");for(let f of g.images)d.push({type:"input_image",image_url:`data:${f.mediaType};base64,${f.data}`})}if(h.parts.length>0)r("custom:tool-result-files-moved"),d.push(...h.parts);if(h.text.length>0)r("custom:tool-result-files-inlined");if(h.dropped)r("custom:files-dropped");break}case"providerNative":r("custom:anthropic-native-block-dropped");break}m()}let i={model:t,input:o,stream:e.stream,store:!1},s=Oe(e.system,"custom",r);if(s!==void 0&&s.length>0)i.instructions=s;if(e.maxTokens!==void 0)i.max_output_tokens=e.maxTokens;if(e.temperature!==void 0)i.temperature=e.temperature;if(e.tools!==void 0){let c=e.tools.filter((d)=>d.kind==="portable");if(c.length!==e.tools.length)r("custom:anthropic-tool-dropped");i.tools=c.map((d)=>({type:"function",name:d.name,description:d.description,parameters:d.inputSchema}))}if(e.toolChoice!==void 0)i.tool_choice=IC(e.toolChoice);if(e.reasoning?.mode==="betweenTools")r("custom:reasoning-between-tools-as-off");let a=fb(e.reasoning);if(a!==void 0)i.reasoning={effort:a,...e.reasoning?.mode==="adaptive"&&(e.reasoning.display==="omitted"||e.reasoning.display==="updates")?{}:{summary:"auto"}};else if(e.reasoning?.mode==="budget")r("custom:reasoning-budget-dropped");Object.assign(i,e.vendor?.openai??{});let u=qt(e,i,"custom");if(u!==void 0)r(u);return{body:i,degradations:n}}function LC(e,t){let{origin:n,protocol:r}=e;if(typeof n!=="string"||r!=="chat_completions"&&r!=="responses")throw t("BAD_REQUEST","custom credential has invalid endpoint metadata");let o=typeof e.basePath==="string"?e.basePath:"";return{origin:n,basePath:o,protocol:r}}function NC(e,t,n){let r=n==="chat_completions"?"chat/completions":"responses",o=`${e}${t}`.replace(/\/+$/,"");return/\/v\d+$/i.test(o)?`${o}/${r}`:`${o}/v1/${r}`}function DC(e,t){if(e!==null&&typeof e==="object"){let n=e.protocol;if(n==="responses"||n==="chat_completions")return n}throw t("INTERNAL","custom codec lost its endpoint protocol")}var yb={buildRequest(e){let t=e.credentials.apiKey;if(t===null)throw e.fail("AUTH","custom credential has no API key");let{origin:n,basePath:r,protocol:o}=LC(e.credentials.providerData,e.fail),i=o==="chat_completions"?gb(e.request,e.model):hb(e.request,e.model),s=[["Content-Type","application/json"],["Authorization",`Bearer ${t}`]];return{request:{url:NC(n,r,o),method:"POST",headers:s,body:JSON.stringify({...i.body,stream:!0})},decodeState:{protocol:o},degradations:i.degradations}},decode({body:e,decodeState:t,fail:n}){return DC(t,n)==="chat_completions"?pb(_e(e)):mb(_e(e))}};var Bc=de("custom",ki.capabilities,yb);import{createHash as zC}from"crypto";var _b={rate_limit_exceeded:"RATE_LIMIT",insufficient_quota:"QUOTA_EXHAUSTED",invalid_api_key:"AUTH",server_error:"UPSTREAM",context_length_exceeded:"BAD_REQUEST",content_policy_violation:"CONTENT_FILTER"},UC=new Set(["response.created","response.queued","response.in_progress","response.output_item.added","response.output_item.done","response.content_part.added","response.content_part.done","response.output_text.delta","response.output_text.done","response.output_text.annotation.added","response.refusal.delta","response.refusal.done","response.reasoning_summary_part.added","response.reasoning_summary_part.done","response.reasoning_summary_text.delta","response.reasoning_summary_text.done","response.reasoning_text.delta","response.reasoning_text.done","response.function_call_arguments.delta","response.function_call_arguments.done","response.completed","response.incomplete","response.failed","error"]);function MC(e){try{let t=JSON.parse(e);return typeof t==="object"&&t!==null?t:null}catch{return null}}async function*os(e){let t=new Map,n=0,r=(a,u=0)=>{let c=`${a}:${u}`,d=t.get(c);if(d!==void 0)return d;let p=n++;return t.set(c,p),p},o=!1,i=!1,s=new Set;for await(let a of e){if(a.data==="[DONE]")continue;if(!UC.has(a.event)){yield{type:"error",code:"UPSTREAM",message:`unrecognized xAI stream event "${a.event}"`,retryable:!1};return}let u=MC(a.data);if(u===null)continue;switch(a.event){case"response.created":yield{type:"start",id:String(u.response?.id??""),model:String(u.response?.model??"")};break;case"response.output_item.added":{let c=u.item??{};if(c.type==="reasoning")s.add(u.output_index??0),yield{type:"blockStart",index:r(u.output_index??0),block:{type:"thinking"}};else if(c.type==="function_call")o=!0,s.add(u.output_index??0),yield{type:"blockStart",index:r(u.output_index??0),block:{type:"toolUse",id:String(c.call_id),name:String(c.name)}};break}case"response.content_part.added":if(u.part?.type==="output_text")yield{type:"blockStart",index:r(u.output_index??0,u.content_index??0),block:{type:"text"}};break;case"response.output_text.delta":yield{type:"blockDelta",index:r(u.output_index??0,u.content_index??0),delta:{type:"text",text:String(u.delta??"")}};break;case"response.reasoning_summary_text.delta":case"response.reasoning_text.delta":yield{type:"blockDelta",index:r(u.output_index??0),delta:{type:"thinking",text:String(u.delta??"")}};break;case"response.function_call_arguments.delta":yield{type:"blockDelta",index:r(u.output_index??0),delta:{type:"toolJson",partial:String(u.delta??"")}};break;case"response.content_part.done":yield{type:"blockEnd",index:r(u.output_index??0,u.content_index??0)};break;case"response.output_item.done":{let c=u.output_index??0;if(s.delete(c))yield{type:"blockEnd",index:r(c)};break}case"response.completed":case"response.incomplete":{i=!0;let c=u.response??{},d=c.incomplete_details?.reason,p=o?"toolUse":"endTurn";if(d==="max_output_tokens")p="maxTokens";else if(d==="content_filter")p="contentFilter";else if(d!==void 0||a.event==="response.incomplete"||c.status!==void 0&&c.status!=="completed"){yield{type:"error",code:"UPSTREAM",message:d!==void 0?`unrecognized xAI incomplete reason "${String(d)}"`:c.status!==void 0&&c.status!=="incomplete"?`xAI reported terminal response status "${String(c.status)}"`:"xAI reported the response incomplete without a reason",retryable:!1};break}yield{type:"end",stopReason:p,usage:xe(c.usage?.input_tokens??0,c.usage?.output_tokens??0,c.usage?.input_tokens_details?.cached_tokens??0)};break}case"response.failed":case"error":{i=!0;let c=u.response?.error??u.error??{},d=String(c.code??c.type),p=(Object.hasOwn(_b,d)?_b[d]:void 0)??"UPSTREAM";yield{type:"error",code:p,message:String(c.message??"upstream error"),retryable:ee[p]};break}default:break}}if(!i)yield{type:"error",code:"UPSTREAM",message:"upstream stream ended before response completion",retryable:ee.UPSTREAM}}import{createHash as $C}from"crypto";var wb=200;function FC(e){switch(e.type){case"auto":return"auto";case"any":return"required";case"none":return"none";case"tool":return{type:"function",name:e.name}}}function BC(e,t){let n=JSON.stringify({instructions:e,firstInput:t});return $C("sha256").update(n).digest("hex").slice(0,32)}function is(e,t){let n=[],r=[],o=(u)=>{if(!n.includes(u))n.push(u)};if(e.betas?.includes(Ee))o("grok:context-1m-dropped");for(let u of e.messages){let c=[],d=u.role==="system";if(d)o("grok:system-turn-as-developer");let p=d?"developer":u.role,l=()=>{if(c.length===0)return;r.push({type:"message",role:p,content:[...c]}),c.length=0};for(let m of u.content)switch(m.type){case"text":c.push({type:p==="assistant"?"output_text":"input_text",text:m.text});break;case"image":c.push({type:"input_image",image_url:`data:${m.mediaType};base64,${m.data}`});break;case"thinking":o("grok:thinking-dropped");break;case"toolUse":l(),r.push({type:"function_call",call_id:m.id,name:m.name,arguments:JSON.stringify(m.input)});break;case"toolResult":{if(m.native!==void 0)o("grok:anthropic-native-block-dropped");l();let g=Ht(m.files??[]);if(r.push({type:"function_call_output",call_id:m.toolUseId,output:be(m.content,g.text)}),m.images!==void 0){o("grok:tool-result-images-moved");for(let h of m.images)c.push({type:"input_image",image_url:`data:${h.mediaType};base64,${h.data}`})}if(g.parts.length>0)o("grok:tool-result-files-moved"),c.push(...g.parts);if(g.text.length>0)o("grok:tool-result-files-inlined");if(g.dropped)o("grok:files-dropped");break}case"providerNative":o("grok:anthropic-native-block-dropped");break}l()}let i=Oe(e.system,"grok",o),s={model:t,input:r,stream:e.stream,store:!1,include:["reasoning.encrypted_content"],prompt_cache_key:BC(i??"",r[0])};if(i!==void 0&&i.length>0)s.instructions=i;if(e.maxTokens!==void 0)s.max_output_tokens=e.maxTokens;if(e.temperature!==void 0)s.temperature=e.temperature;if(e.tools!==void 0){let u=e.tools.filter((c)=>c.kind==="portable");if(u.length!==e.tools.length)o("grok:anthropic-tool-dropped");if(u.length>wb)o("grok:tools-truncated");s.tools=u.slice(0,wb).map((c)=>({type:"function",name:c.name,description:c.description,parameters:c.inputSchema}))}if(e.toolChoice!==void 0)s.tool_choice=FC(e.toolChoice);if(e.reasoning?.mode==="betweenTools")o("grok:reasoning-between-tools-as-off");if(e.reasoning!==void 0&&e.reasoning.mode!=="off"&&e.reasoning.mode!=="betweenTools")if(e.reasoning.mode==="budget")o("grok:reasoning-budget-dropped");else{let u=e.reasoning.effort??"medium";s.reasoning={effort:u,...e.reasoning.display==="omitted"||e.reasoning.display==="updates"?{}:{summary:"concise"}}}Object.assign(s,e.vendor?.grok??{});let a=qt(e,s,"grok");if(a!==void 0)o(a);return{body:s,degradations:n}}var qC="https://cli-chat-proxy.grok.com/v1/responses",HC="https://api.x.ai/v1/responses",WC="omni-grok-conv";function jC(e){let t=zC("sha256").update(`${WC}:${e}`).digest("hex"),n=(Number.parseInt(t[16],16)&3|8).toString(16);return[t.slice(0,8),t.slice(8,12),`5${t.slice(13,16)}`,`${n}${t.slice(17,20)}`,t.slice(20,32)].join("-")}function KC(e,t){let n=[["x-grok-model-override",e]];if(t===void 0||t.length===0)return n;let r=jC(t);return[...n,["x-grok-req-id",t],["x-grok-conv-id",r],["x-grok-session-id",r]]}var bb={buildRequest(e){let t=e.credentials.accessToken!==null,{body:n,degradations:r}=is(e.request,e.model),o=[["Content-Type","application/json"]];if(t)o.push(["Authorization",`Bearer ${e.credentials.accessToken}`]),o.push(["X-XAI-Token-Auth","xai-grok-cli"]),o.push(["x-authenticateresponse","authenticate-response"]);else if(e.credentials.apiKey!==null)o.push(["Authorization",`Bearer ${e.credentials.apiKey}`]);else throw e.fail("AUTH","grok credential has no token");o.push(...KC(e.model,e.requestId)),o.push(...vw(e.credentials.providerData));let i=fe(ge(Ot.headers,o),Ot.order);return{request:{url:t?qC:HC,method:"POST",headers:i,body:JSON.stringify(Be({...n,stream:!0},Ni))},degradations:r}},decode({body:e}){return os(_e(e))}};var zc=de("grok",vi.capabilities,bb);import{request as GC}from"http";import{request as ZC}from"https";import{Readable as XC}from"stream";import*as ss from"zlib";var VC=3000;function Dn(e={}){let t=e.logger??se,n=e.now??(()=>Date.now());return(r)=>QC(r).then((o)=>new Promise((i,s)=>{let a=new URL(r.url),u=n(),c=!1,d=(f,y=!1)=>{if(c)return;c=!0;let _=n()-u;try{e.onResponseHead?.({provider:r.provider,host:a.host,path:a.pathname,...f===void 0?{}:{status:f},durationMs:_,...r.requestId===void 0?{}:{requestId:r.requestId}})}catch{}if(!t.enabled("debug"))return;t.debug("upstream http",{provider:r.provider,status:f,host:a.host,path:a.pathname,durationMs:_,reason:y?"transport error":void 0})},p=a.protocol==="https:"?ZC:GC,l={};for(let[f,y]of r.headers)l[f]=y;if(r.body.length>0&&!kb(r,"content-length"))l["Content-Length"]=o.byteLength;let m={protocol:a.protocol,hostname:a.hostname,port:a.port||(a.protocol==="https:"?443:80),path:`${a.pathname}${a.search}`,method:r.method,headers:l,setHost:!kb(r,"host"),autoSelectFamilyAttemptTimeout:VC},g=p(m,(f)=>{let y=[],_=null,w=new Headers;for(let[v,k]of Object.entries(f.headers))if(Array.isArray(k))for(let T of k)w.append(v,T);else if(typeof k==="string")w.set(v,k);d(f.statusCode),i({status:f.statusCode??0,headers:w,body:XC.toWeb(f),text:()=>(_??=new Promise((v,k)=>{f.on("data",(T)=>y.push(T)),f.on("end",()=>v(Buffer.concat(y).toString("utf8"))),f.on("error",k)}),_)})}),h=()=>g.destroy(Error("aborted"));if(g.on("error",(f)=>{r.signal.removeEventListener("abort",h),d(void 0,!0),s(f)}),g.on("close",()=>r.signal.removeEventListener("abort",h)),r.signal.aborted){g.destroy(Error("aborted"));return}if(r.signal.addEventListener("abort",h,{once:!0}),o.byteLength>0)g.write(o);g.end()}))}function QC(e){let t=Buffer.from(e.body,"utf8");if(e.bodyEncoding!=="zstd")return Promise.resolve(t);return YC(t)}function YC(e,t=(n)=>ss.createZstdCompress(n)){return new Promise((n,r)=>{let o=t({params:{[ss.constants.ZSTD_c_compressionLevel]:3}}),i=[];o.on("data",(s)=>i.push(s)),o.on("end",()=>n(Buffer.concat(i))),o.on("error",r),o.end(e)})}function kb(e,t){return e.headers.some(([n])=>n.toLowerCase()===t)}var Eb={stop:"endTurn",length:"maxTokens",tool_calls:"toolUse",content_filter:"contentFilter"};function JC(e){if(typeof e.reasoning==="string"&&e.reasoning.length>0)return e.reasoning;if(typeof e.reasoning_content==="string"&&e.reasoning_content.length>0)return e.reasoning_content;if(!Array.isArray(e.reasoning_details))return"";return e.reasoning_details.flatMap((t)=>{if(t===null||typeof t!=="object")return[];if(typeof t.text==="string"&&t.text.length>0)return[t.text];if(typeof t.summary==="string"&&t.summary.length>0)return[t.summary];return[]}).join("")}function eP(e){try{let t=JSON.parse(e);return typeof t==="object"&&t!==null?t:null}catch{return null}}async function*as(e){let t=!1,n=!1,r="endTurn",o={inputTokens:0,outputTokens:0,cacheReadTokens:0,cacheWriteTokens:0},i=new Map,s=0,a,u=0;for await(let c of e){if(c.data==="[DONE]"){n=!0;break}let d=eP(c.data);if(d===null)continue;if(!t&&(d.id!==void 0||d.model!==void 0))t=!0,yield{type:"start",id:String(d.id??""),model:String(d.model??"")};if(d.usage){let h=d.usage.prompt_tokens_details;o=xe(d.usage.prompt_tokens??0,d.usage.completion_tokens??0,h?.cached_tokens??d.usage.prompt_cache_hit_tokens??0,h?.cache_creation_tokens??h?.cache_write_tokens??0)}let p=d.choices?.[0];if(!p)continue;let l=p.delta??{},m=JC(l);if(m.length>0){if(a!=="thinking"){if(a!==void 0)yield{type:"blockEnd",index:u};a="thinking",u=s++,yield{type:"blockStart",index:u,block:{type:"thinking"}}}yield{type:"blockDelta",index:u,delta:{type:"thinking",text:m}}}let g=l.tool_calls??[];if(typeof l.content==="string"&&l.content.length>0){if(a!=="text"){if(a!==void 0)yield{type:"blockEnd",index:u};a="text",u=s++,yield{type:"blockStart",index:u,block:{type:"text"}}}yield{type:"blockDelta",index:u,delta:{type:"text",text:l.content}}}for(let h of g){let f=h.index??0,y=i.get(f);if(y===void 0){if(a!==void 0)yield{type:"blockEnd",index:u};y=s++,i.set(f,y),a="tool",u=y,yield{type:"blockStart",index:y,block:{type:"toolUse",id:String(h.id??`call_${f}`),name:String(h.function?.name??"")}}}let _=h.function?.arguments;if(typeof _==="string"&&_.length>0)yield{type:"blockDelta",index:y,delta:{type:"toolJson",partial:_}}}if(typeof p.finish_reason==="string"){let h=p.finish_reason,f=Object.hasOwn(Eb,h)?Eb[h]:void 0;if(f===void 0){yield{type:"error",code:"UPSTREAM",message:`unrecognized Kilo finish reason "${h}"`,retryable:!1};return}r=f}}if(n){if(a!==void 0)yield{type:"blockEnd",index:u};yield{type:"end",stopReason:r,usage:o}}else yield{type:"error",code:"UPSTREAM",message:"upstream stream ended before [DONE]",retryable:ee.UPSTREAM}}function tP(e){switch(e.type){case"auto":return"auto";case"any":return"required";case"none":return"none";case"tool":return{type:"function",function:{name:e.name}}}}function nP(e){let t=(n)=>("cacheControl"in n)&&n.cacheControl!==void 0;if(e.system?.some(t)===!0)return!0;return e.messages.some((n)=>n.content.some(t))}function vb(e){if(e.length===0)return null;if(e.every((t)=>t.type==="text"))return e.map((t)=>t.type==="text"?t.text:"").join(`
|
|
1670
|
-
`);return[...e]}function
|
|
1671
|
-
`):null,tool_calls:
|
|
1672
|
-
`)})}let a={model:t,messages:i,stream:e.stream,stream_options:{include_usage:!0}};if(e.maxTokens!==void 0)a.max_tokens=e.maxTokens;if(e.temperature!==void 0)a.temperature=e.temperature;if(e.stopSequences!==void 0)a.stop=e.stopSequences;if(e.tools!==void 0){let d=e.tools.filter((p)=>p.kind==="portable");if(d.length!==e.tools.length)o("kimi:anthropic-tool-dropped");a.tools=d.map((p)=>({type:"function",function:{name:p.name,description:p.description,parameters:p.inputSchema}}))}if(e.toolChoice!==void 0)a.tool_choice=aP(e.toolChoice);if(e.reasoning?.mode==="betweenTools")o("kimi:reasoning-between-tools-as-off");if(e.reasoning!==void 0)o("kimi:reasoning-dropped");Object.assign(a,e.vendor?.[n]??{});let u=ot(e),c=u.kind==="readable"?u.format:void 0;if(c!==void 0&&a.response_format===void 0)a.response_format={type:"json_schema",json_schema:{name:c.name,schema:c.schema,strict:!0}},o("kimi:response-format-translated");else if(u.kind==="tooDeep")delete a.response_format,o("kimi:response-schema-too-deep");return{body:a,degradations:r}}var uP="https://api.kimi.com/coding/v1/chat/completions",Sb={buildRequest(e){let{body:t,degradations:n}=ds(e.request,e.model),r=e.credentials.accessToken??e.credentials.apiKey;if(r===null)throw e.fail("AUTH","kimi credential has no token");let o=[["Content-Type","application/json"],["Accept","text/event-stream"],["Authorization",`Bearer ${r}`],...$r(e.credentials.providerData)],i=fe(ge(Ct.headers,o),Ct.order);return{request:{url:uP,method:"POST",headers:i,body:JSON.stringify(Be({...t,stream:!0},Ui))},degradations:n}},decode({body:e}){return cs(_e(e))}};var Hc=de("kimi",xi.capabilities,Sb);var xb={rate_limit_exceeded:"RATE_LIMIT",insufficient_quota:"QUOTA_EXHAUSTED",invalid_api_key:"AUTH",server_error:"UPSTREAM",context_length_exceeded:"BAD_REQUEST",content_policy_violation:"CONTENT_FILTER"},cP=new Set(["keepalive","response.created","response.queued","response.in_progress","response.output_item.added","response.output_item.done","response.content_part.added","response.content_part.done","response.output_text.delta","response.output_text.done","response.output_text.annotation.added","response.refusal.delta","response.refusal.done","response.reasoning_summary_part.added","response.reasoning_summary_part.done","response.reasoning_summary_text.delta","response.reasoning_summary_text.done","response.reasoning_text.delta","response.reasoning_text.done","response.function_call_arguments.delta","response.function_call_arguments.done","response.completed","response.incomplete","response.failed","error"]);function dP(e){try{let t=JSON.parse(e);return typeof t==="object"&&t!==null?t:null}catch{return null}}async function*ls(e,t={}){let n=t.nativeReasoning===!0,r=new Map,o=0,i=(c,d=0)=>{let p=`${c}:${d}`,l=r.get(p);if(l!==void 0)return l;let m=o++;return r.set(p,m),m},s=!1,a=!1,u=new Set;for await(let c of e){if(c.data==="[DONE]")continue;if(!cP.has(c.event)){yield{type:"error",code:"UPSTREAM",message:`unrecognized muse stream event "${c.event}"`,retryable:!1};return}let d=dP(c.data);if(d===null)continue;switch(c.event){case"response.created":yield{type:"start",id:String(d.response?.id??""),model:String(d.response?.model??"")};break;case"response.output_item.added":{let p=d.item??{};if(p.type==="reasoning")u.add(d.output_index??0),yield{type:"blockStart",index:i(d.output_index??0),block:n?{type:"providerNative",provider:"muse",blockType:"reasoning",data:{}}:{type:"thinking"}};else if(p.type==="function_call")s=!0,u.add(d.output_index??0),yield{type:"blockStart",index:i(d.output_index??0),block:{type:"toolUse",id:String(p.call_id),name:String(p.name)}};break}case"response.content_part.added":if(d.part?.type==="output_text")yield{type:"blockStart",index:i(d.output_index??0,d.content_index??0),block:{type:"text"}};break;case"response.output_text.delta":yield{type:"blockDelta",index:i(d.output_index??0,d.content_index??0),delta:{type:"text",text:String(d.delta??"")}};break;case"response.reasoning_summary_text.delta":yield{type:"blockDelta",index:i(d.output_index??0),delta:n?{type:"providerNative",provider:"muse",deltaType:"reasoning_summary_text.delta",data:{text:String(d.delta??"")}}:{type:"thinking",text:String(d.delta??"")}};break;case"response.function_call_arguments.delta":yield{type:"blockDelta",index:i(d.output_index??0),delta:{type:"toolJson",partial:String(d.delta??"")}};break;case"response.content_part.done":yield{type:"blockEnd",index:i(d.output_index??0,d.content_index??0)};break;case"response.output_item.done":{let p=d.output_index??0;if(u.delete(p)){let l=d.item??{};if(n&&l.type==="reasoning")yield{type:"blockDelta",index:i(p),delta:{type:"providerNative",provider:"muse",deltaType:"response.output_item.done",fold:"merge",data:l}};yield{type:"blockEnd",index:i(p)}}break}case"response.completed":case"response.incomplete":{a=!0;let p=d.response??{},l=p.incomplete_details?.reason,m=s?"toolUse":"endTurn";if(l==="max_output_tokens")m="maxTokens";else if(l==="content_filter")m="contentFilter";else if(l!==void 0||c.event==="response.incomplete"||p.status!==void 0&&p.status!=="completed"){yield{type:"error",code:"UPSTREAM",message:l!==void 0?`unrecognized muse incomplete reason "${String(l)}"`:p.status!==void 0&&p.status!=="incomplete"?`muse reported terminal response status "${String(p.status)}"`:"muse reported the response incomplete without a reason",retryable:!1};break}yield{type:"end",stopReason:m,usage:xe(p.usage?.input_tokens??0,p.usage?.output_tokens??0,p.usage?.input_tokens_details?.cached_tokens??p.usage?.prompt_tokens_details?.cached_tokens??0)};break}case"response.failed":case"error":{a=!0;let p=d.response?.error??d.error??{},l=String(p.code??p.type),m=(Object.hasOwn(xb,l)?xb[l]:void 0)??"UPSTREAM";yield{type:"error",code:m,message:String(p.message??"upstream error"),retryable:ee[m]};break}default:break}}if(!a)yield{type:"error",code:"UPSTREAM",message:"upstream stream ended before response completion",retryable:ee.UPSTREAM}}import{createHash as lP}from"crypto";function pP(e){let t=e.vendor?.openai;for(let n of["prompt_cache_key","session_id"]){let r=t?.[n];if(typeof r==="string"&&r.length>0)return r}return}function mP(e,t,n){let r=e.conversationId!==void 0&&e.conversationId.length>0?JSON.stringify({conversation:e.conversationId}):JSON.stringify({instructions:t,firstInput:n??null});return lP("sha256").update(r).digest("hex").slice(0,32)}function fP(e){let t=new Set;for(let n of e){let r=n;if(r.type==="function_call_output"&&typeof r.call_id==="string")t.add(r.call_id)}for(let n=e.length-1;n>=0;n--){let r=e[n];if(r.type!=="function_call"||typeof r.call_id!=="string")continue;if(t.has(r.call_id))continue;e.splice(n+1,0,{type:"function_call_output",call_id:r.call_id,output:""})}}function gP(e){switch(e.type){case"auto":return"auto";case"any":return"required";case"none":return"none";case"tool":return{type:"function",name:e.name}}}function ps(e,t){let n=[],r=[],o=(c)=>{if(!n.includes(c))n.push(c)};if(e.betas?.includes(Ee))o("muse:context-1m-dropped");for(let c of e.messages){let d=[],p=c.role==="system";if(p)o("muse:system-turn-as-developer");let l=p?"developer":c.role,m=()=>{if(d.length===0)return;r.push({type:"message",role:l,content:[...d]}),d.length=0};for(let g of c.content)switch(g.type){case"text":d.push({type:l==="assistant"?"output_text":"input_text",text:g.text});break;case"image":d.push({type:"input_image",image_url:`data:${g.mediaType};base64,${g.data}`});break;case"thinking":o("muse:thinking-dropped");break;case"toolUse":m(),r.push({type:"function_call",call_id:g.id,name:g.name,arguments:JSON.stringify(g.input)});break;case"toolResult":{if(g.native!==void 0)o("muse:foreign-native-block-dropped");m();let h=Ht(g.files??[]);if(r.push({type:"function_call_output",call_id:g.toolUseId,output:be(g.content,h.text)}),g.images!==void 0){o("muse:tool-result-images-moved");for(let f of g.images)d.push({type:"input_image",image_url:`data:${f.mediaType};base64,${f.data}`})}if(h.parts.length>0)o("muse:tool-result-files-moved"),d.push(...h.parts);if(h.text.length>0)o("muse:tool-result-files-inlined");if(h.dropped)o("muse:files-dropped");break}case"providerNative":if(g.provider==="muse"){m();let{id:h,...f}=g.data;r.push({type:g.blockType,...f});break}o("muse:foreign-native-block-dropped");break}m()}fP(r);let i={model:t,input:r,stream:e.stream,store:!1},s=Oe(e.system,"muse",o);if(s!==void 0&&s.length>0)i.instructions=s;if(e.maxTokens!==void 0)i.max_output_tokens=e.maxTokens;if(e.temperature!==void 0)i.temperature=e.temperature;if(e.tools!==void 0){let c=e.tools.filter((d)=>d.kind==="portable");if(c.length!==e.tools.length)o("muse:provider-tool-dropped");i.tools=c.map((d)=>({type:"function",name:d.name,description:d.description,parameters:d.inputSchema}))}if(e.toolChoice!==void 0)i.tool_choice=gP(e.toolChoice);if(e.reasoning?.mode==="betweenTools")o("muse:reasoning-between-tools-as-off");if(e.reasoning!==void 0&&e.reasoning.mode!=="off"&&e.reasoning.mode!=="betweenTools")if(e.reasoning.mode==="budget")o("muse:reasoning-budget-dropped");else{let c=e.reasoning.effort??"medium";i.reasoning={effort:c,...e.reasoning.display==="omitted"||e.reasoning.display==="updates"?{}:{summary:"auto"}}}let a=pP(e)??mP(e,s??"",r[0]);Object.assign(i,e.vendor?.openai??{});let u=qt(e,i,"muse");if(u!==void 0)o(u);return i.prompt_cache_key=a,{body:i,degradations:n,cacheKey:a}}var Ab={buildRequest(e){let{body:t,degradations:n,cacheKey:r}=ps(e.request,e.model);if(e.credentials.apiKey===null)throw e.fail("AUTH","muse credential has no model api key");let o=[["Content-Type","application/json"],["Authorization",`Bearer ${e.credentials.apiKey}`],["x-meta-ai-gateway-session-id",r]],i=fe(ge(gt.headers,o),gt.order),s=t.include;return{decodeState:{nativeReasoning:Array.isArray(s)&&s.includes("reasoning.encrypted_content")},request:{url:Dw(e.credentials.providerData),method:"POST",headers:i,body:JSON.stringify(Be({...t,stream:!0},Mi))},degradations:n}},decode({body:e,decodeState:t}){let n=t;return ls(_e(e),{nativeReasoning:n?.nativeReasoning===!0})}};var Wc=de("muse",Oi.capabilities,Ab);var hP=new Set(["none","minimal","low","medium","high","xhigh","max","ultra","persistent"]);function Ob(e){return typeof e==="string"&&hP.has(e)}var Ve=(e,t,n={})=>({lite:!0,verbosity:"low",defaultEffort:e,lowestEffort:"low",nodeReplAutoReviewRequired:t,nodeReplDisabled:!1,supportsParallelToolCalls:!0,...n}),yP=Ve("low",!1),_P=Object.assign(Object.create(null),{"gpt-6-astra":Ve("low",!0),"gpt-6.1-sol":Ve("low",!0),"gpt-6-sol":Ve("medium",!0),"gpt-6-luna":Ve("medium",!1),"gpt-5.6-sol":Ve("low",!1),"gpt-5.6-terra":Ve("medium",!1),"gpt-5.6-luna":Ve("medium",!1),"gpt-daybreak-blue-latest":Ve("low",!1),"gpt-daybreak-red-latest":Ve("medium",!1,{verbosity:"high"}),"gpt-5.5":Ve("medium",!1,{lite:!1}),"codex-auto-review":Ve("medium",!1)});function wt(e){return _P[e]??yP}var Cb={rate_limit_exceeded:"RATE_LIMIT",insufficient_quota:"QUOTA_EXHAUSTED",invalid_api_key:"AUTH",server_error:"UPSTREAM",context_length_exceeded:"BAD_REQUEST",content_policy_violation:"CONTENT_FILTER"},wP=new Set(["keepalive","response.created","response.queued","response.in_progress","response.output_item.added","response.output_item.done","response.content_part.added","response.content_part.done","response.output_text.delta","response.output_text.done","response.output_text.annotation.added","response.refusal.delta","response.refusal.done","response.reasoning_summary_part.added","response.reasoning_summary_part.done","response.reasoning_summary_text.delta","response.reasoning_summary_text.done","response.reasoning_text.delta","response.reasoning_text.done","response.function_call_arguments.delta","response.function_call_arguments.done","response.metadata","response.completed","response.incomplete","response.failed","error"]);function bP(e){try{let t=JSON.parse(e);return typeof t==="object"&&t!==null?t:null}catch{return null}}async function*ms(e,t={}){let n=t.nativeReasoning===!0,r=new Map,o=0,i=(c,d=0)=>{let p=`${c}:${d}`,l=r.get(p);if(l!==void 0)return l;let m=o++;return r.set(p,m),m},s=!1,a=!1,u=new Set;for await(let c of e){if(c.data==="[DONE]")continue;if(!wP.has(c.event)){yield{type:"error",code:"UPSTREAM",message:`unrecognized OpenAI stream event "${c.event}"`,retryable:!1};return}let d=bP(c.data);if(d===null)continue;switch(c.event){case"response.created":yield{type:"start",id:String(d.response?.id??""),model:String(d.response?.model??"")};break;case"response.output_item.added":{let p=d.item??{};if(p.type==="reasoning")u.add(d.output_index??0),yield{type:"blockStart",index:i(d.output_index??0),block:n?{type:"providerNative",provider:"openai",blockType:"reasoning",data:{}}:{type:"thinking"}};else if(p.type==="function_call")s=!0,u.add(d.output_index??0),yield{type:"blockStart",index:i(d.output_index??0),block:{type:"toolUse",id:String(p.call_id),name:String(p.name)}};break}case"response.content_part.added":if(d.part?.type==="output_text")yield{type:"blockStart",index:i(d.output_index??0,d.content_index??0),block:{type:"text"}};break;case"response.output_text.delta":yield{type:"blockDelta",index:i(d.output_index??0,d.content_index??0),delta:{type:"text",text:String(d.delta??"")}};break;case"response.reasoning_summary_text.delta":yield{type:"blockDelta",index:i(d.output_index??0),delta:n?{type:"providerNative",provider:"openai",deltaType:"reasoning_summary_text.delta",data:{text:String(d.delta??"")}}:{type:"thinking",text:String(d.delta??"")}};break;case"response.function_call_arguments.delta":yield{type:"blockDelta",index:i(d.output_index??0),delta:{type:"toolJson",partial:String(d.delta??"")}};break;case"response.content_part.done":yield{type:"blockEnd",index:i(d.output_index??0,d.content_index??0)};break;case"response.output_item.done":{let p=d.output_index??0;if(u.delete(p)){let l=d.item??{};if(n&&l.type==="reasoning")yield{type:"blockDelta",index:i(p),delta:{type:"providerNative",provider:"openai",deltaType:"response.output_item.done",fold:"merge",data:l}};yield{type:"blockEnd",index:i(p)}}break}case"response.completed":case"response.incomplete":{a=!0;let p=d.response??{},l=p.incomplete_details?.reason,m=s?"toolUse":"endTurn";if(l==="max_output_tokens")m="maxTokens";else if(l==="content_filter")m="contentFilter";else if(l!==void 0||c.event==="response.incomplete"||p.status!==void 0&&p.status!=="completed"){yield{type:"error",code:"UPSTREAM",message:l!==void 0?`unrecognized OpenAI incomplete reason "${String(l)}"`:p.status!==void 0&&p.status!=="incomplete"?`OpenAI reported terminal response status "${String(p.status)}"`:"OpenAI reported the response incomplete without a reason",retryable:!1};break}yield{type:"end",stopReason:m,usage:xe(p.usage?.input_tokens??0,p.usage?.output_tokens??0,p.usage?.input_tokens_details?.cached_tokens??p.usage?.prompt_tokens_details?.cached_tokens??0)};break}case"response.failed":case"error":{a=!0;let p=d.response?.error??d.error??{},l=String(p.code??p.type),m=(Object.hasOwn(Cb,l)?Cb[l]:void 0)??"UPSTREAM";yield{type:"error",code:m,message:String(p.message??"upstream error"),retryable:ee[m]};break}default:break}}if(!a)yield{type:"error",code:"UPSTREAM",message:"upstream stream ended before response completion",retryable:ee.UPSTREAM}}var ln="internal_chat_message_metadata_passthrough";function Pb(e,t,n,r){return Fr(dn(r,`${e}:turn:${t}`),n+t)}function kP(e,t){if(!Array.isArray(e))return;if(t==="assistant")return e.map(()=>"unknown");let n=[];for(let r of e){let o=r.type;if(o==="input_text")n.push("user.text");else if(o==="input_image")n.push("user.image");else return}return n}function Ib(e){let{threadId:t}=e,n=Nc(t,e.startedAt??Number.POSITIVE_INFINITY),r=e.startedAt??n,o=e.requestId??t,i=e.idSalt,s=Xw(t),a=[];if(e.tools!==void 0&&e.tools.length>0){let d=[{type:"namespace",name:"functions",description:"",tools:e.tools}];a.push({type:"additional_tools",id:`at_${rs(s,JSON.stringify(d))}`,role:"developer",tools:d})}if(e.instructions!==void 0&&e.instructions.length>0)a.push({type:"message",id:`msg_${rs(s,e.instructions)}`,role:"developer",content:[{type:"input_text",text:e.instructions}],[ln]:{content_item_kinds:["model.base_instructions"]}});let u=0,c=e.input.map((d,p)=>{let l=d;u=e.turnOf.get(l)??u;let m=Pb(t,u,n,i),g=(f)=>`${f}_${Fr(dn(i,`${o}:item:${p}`),r)}`,h=(r*1000+p)/1e6;switch(l.type){case"message":{let f=String(l.role),y=kP(l.content,f);if(f==="assistant")return{type:"message",status:"completed",id:g("msg"),role:f,content:Array.isArray(l.content)?l.content.map((_)=>_.type==="output_text"?{..._,annotations:[]}:_):l.content,[ln]:{turn_id:m,...y===void 0?{}:{content_item_kinds:y}}};return{type:"message",id:g("msg"),role:f,content:l.content,[ln]:{turn_id:m,create_time:h,...y===void 0?{}:{content_item_kinds:y}}}}case"function_call":return{type:"function_call",status:"completed",id:g("fc"),name:l.name,arguments:l.arguments,call_id:l.call_id,[ln]:{turn_id:m}};case"function_call_output":return{type:"function_call_output",id:g("fco"),call_id:l.call_id,output:l.output,[ln]:{turn_id:m,create_time:h}};case"reasoning":{let{[ln]:f,...y}=l;return{...y,[ln]:{turn_id:m}}}default:return l}});return{input:[...a,...c],turnId:Pb(t,u,n,i),startedAt:r}}function EP(e){return JSON.stringify(e).replace(/[^\x20-\x7e]/g,(t)=>`\\u${t.charCodeAt(0).toString(16).padStart(4,"0")}`)}function Lb(e){let{threadId:t,turnId:n}=e,r=`${t}:0`,o=e.installationId??Gw(`installation:${e.installationSeed}`),i=Nc(t,e.startedAt),s=wt(e.model),a=EP({installation_id:o,session_id:t,thread_id:t,agent_name:"/root",turn_id:n,window_id:r,window_number:0,context_window_id:Fr(dn(e.idSalt,`${t}:context-window`),i),request_kind:"turn",history_initialization:"new",root_turn_id:n,thread_source:"user",turn_trigger:"user",sandbox:k_,sandbox_mode:"workspace-write",auto_review_enabled:!1,node_repl_auto_review_required:s.nodeReplAutoReviewRequired,node_repl_disabled:s.nodeReplDisabled,turn_started_at_unix_ms:e.startedAt,analytics_enabled:!1,model:e.model,reasoning_effort:e.effort});return{windowId:r,turnMetadata:a,clientMetadata:{turn_id:n,thread_id:t,"x-codex-turn-metadata":a,mcp_attribution:'{"status":"none"}',guardian_credits_requested:"true","x-codex-installation-id":o,"x-codex-window-id":r,root_turn_id:n,session_id:t}}}var vP=1024,TP=/^[\x21-\x7e]+$/;function RP(e){let t=e.vendor?.openai;for(let n of["prompt_cache_key","session_id"]){let r=t?.[n];if(typeof r==="string"&&r.length<=vP&&TP.test(r))return r}return}function SP(e,t,n,r){let o=RP(e);if(o!==void 0){if(Cc(o))return{key:o,seed:o};let s=JSON.stringify({key:o});return{key:Lc(dn(r,s)),seed:s}}let i=e.conversationId!==void 0&&e.conversationId.length>0?JSON.stringify({conversation:e.conversationId}):JSON.stringify({instructions:t,firstInput:n??null});return{key:Lc(dn(r,i)),seed:i}}function xP(e){let t=new Set;for(let n of e){let r=n;if(r.type==="function_call_output"&&typeof r.call_id==="string")t.add(r.call_id)}for(let n=e.length-1;n>=0;n--){let r=e[n];if(r.type!=="function_call"||typeof r.call_id!=="string")continue;if(t.has(r.call_id))continue;e.splice(n+1,0,{type:"function_call_output",call_id:r.call_id,output:""})}}function AP(e){switch(e.type){case"auto":return"auto";case"any":return"required";case"none":return"none";case"tool":return{type:"function",name:e.name}}}function OP(e,t,n){let r=wt(t),o=r.lite?{context:"all_turns"}:{},i=e.reasoning;if(i===void 0)return{effort:r.defaultEffort,...o};if(i.mode==="off")return n("openai:reasoning-off-as-lowest"),{effort:r.lowestEffort,...o};if(i.mode==="betweenTools")return{effort:r.lowestEffort,...o};if(i.mode==="budget")return n("openai:reasoning-budget-dropped"),{effort:r.defaultEffort,...o};return{effort:i.effort??r.defaultEffort,...i.display==="omitted"||i.display==="updates"?{}:{summary:"auto"},...o}}var Nb=(e)=>typeof e==="object"&&e!==null&&!Array.isArray(e);function CP(e,t,n){let r=e;for(let[o,i]of Object.entries(t)){if(o==="client_metadata"){n("openai:client-metadata-replaced");continue}let s=r[o];if((o==="text"||o==="reasoning")&&Nb(s)&&Nb(i)){r[o]={...s,...i};continue}r[o]=i}}function fs(e,t,n={oauth:!1}){let r=[],o=[],i=(v)=>{if(!r.includes(v))r.push(v)},s=new WeakMap,a=-1,u=(v)=>{o.push(v),s.set(v,Math.max(0,a))};if(e.betas?.includes(Ee))i("openai:context-1m-dropped");for(let v of e.messages){let k=[],T=v.role==="system";if(T)i("openai:system-turn-as-developer");let C=T?"developer":v.role,V=()=>{if(k.length===0)return;u({type:"message",role:C,content:[...k]}),k.length=0},Re=!1;for(let W of v.content){if(v.role==="user"&&!Re&&W.type!=="toolResult")Re=!0,a++;switch(W.type){case"text":k.push({type:C==="assistant"?"output_text":"input_text",text:W.text});break;case"image":k.push({type:"input_image",image_url:`data:${W.mediaType};base64,${W.data}`});break;case"thinking":if(!r.includes("openai:thinking-dropped"))i("openai:thinking-dropped");break;case"toolUse":V(),u({type:"function_call",call_id:W.id,name:W.name,arguments:JSON.stringify(W.input)});break;case"toolResult":{if(W.native!==void 0)i("openai:anthropic-native-block-dropped");V();let We=Ht(W.files??[]);if(u({type:"function_call_output",call_id:W.toolUseId,output:be(W.content,We.text)}),W.images!==void 0){i("openai:tool-result-images-moved");for(let Lt of W.images)k.push({type:"input_image",image_url:`data:${Lt.mediaType};base64,${Lt.data}`})}if(We.parts.length>0)i("openai:tool-result-files-moved"),k.push(...We.parts);if(We.text.length>0)i("openai:tool-result-files-inlined");if(We.dropped)i("openai:files-dropped");break}case"providerNative":if(W.provider==="openai"){V();let{id:We,...Lt}=W.data;u({type:W.blockType,...Lt});break}i("openai:anthropic-native-block-dropped");break}}V()}xP(o);let c={model:t,input:o,stream:e.stream,store:!1},d=Oe(e.system,"openai",i),p=n.oauth&&wt(t).lite;if(d!==void 0&&d.length>0&&!n.oauth)c.instructions=d;if(e.maxTokens!==void 0)if(n.oauth)i("openai:max-tokens-dropped");else c.max_output_tokens=e.maxTokens;if(e.temperature!==void 0)if(n.oauth)i("openai:temperature-dropped");else c.temperature=e.temperature;let l;if(e.tools!==void 0){let v=e.tools.filter((k)=>k.kind==="portable");if(v.length!==e.tools.length)i("openai:anthropic-tool-dropped");if(n.oauth){let k=v.map((T)=>({type:"function",name:T.name,description:T.description,strict:!1,parameters:T.inputSchema}));if(p)l=k;else c.tools=k}else c.tools=v.map((k)=>({type:"function",name:k.name,description:k.description,parameters:k.inputSchema}))}if(e.toolChoice!==void 0)c.tool_choice=AP(e.toolChoice);else if(n.oauth)c.tool_choice="auto";if(n.oauth)c.parallel_tool_calls=!p&&wt(t).supportsParallelToolCalls;if(e.reasoning?.mode==="betweenTools")i(n.oauth?"openai:reasoning-between-tools-as-lowest":"openai:reasoning-between-tools-as-off");if(n.oauth)c.reasoning=OP(e,t,i);else if(e.reasoning!==void 0&&e.reasoning.mode!=="off"&&e.reasoning.mode!=="betweenTools")if(e.reasoning.mode==="budget")r.push("openai:reasoning-budget-dropped");else{let v=e.reasoning.effort??"medium";c.reasoning={effort:v,...e.reasoning.display==="omitted"||e.reasoning.display==="updates"?{}:{summary:"auto"}}}let m=n.oauth?n.idSalt:void 0,{key:g,seed:h}=SP(e,d??"",o[0],m);if(n.oauth)c.include=["reasoning.encrypted_content"],c.text={verbosity:wt(t).verbosity},CP(c,e.vendor?.openai??{},i);else Object.assign(c,e.vendor?.openai??{});let f=qt(e,c,"openai");if(f!==void 0)i(f);if(c.prompt_cache_key=g,!n.oauth)return{body:c,degradations:r,cacheKey:g};let y=Ib({threadId:g,input:o,turnOf:s,tools:l,instructions:d,requestId:n.requestId,startedAt:n.startedAt,idSalt:m});c.input=y.input;let _=c.reasoning?.effort,w=Lb({threadId:g,turnId:y.turnId,installationId:n.installationId,installationSeed:n.accountId??h,idSalt:m,model:t,effort:Ob(_)?_:wt(t).defaultEffort,startedAt:y.startedAt});return c.client_metadata=w.clientMetadata,{body:c,degradations:r,cacheKey:g,codex:w}}var PP="https://chatgpt.com/backend-api/codex/responses",IP="https://api.openai.com/v1/responses",Db=/^[\x21-\x7e]+$/;function LP(e,t){if(!Db.test(e))return;if(typeof t==="string"&&Db.test(t)&&!t.includes(";"))return`model=${e};tier=${t}`;return`model=${e}`}var Ub={buildRequest(e){let t=e.credentials.accessToken!==null,n=e.credentials.providerData.accountId,r=t?Dc(e.credentials.providerData):{},{body:o,degradations:i,cacheKey:s,codex:a}=fs(e.request,e.model,{oauth:t,requestId:e.requestId,startedAt:e.requestStartedAt,accountId:typeof n==="string"?n:void 0,installationId:r.installationId,idSalt:r.idSalt}),u=[];if(a!==void 0){if(u.push(["x-codex-window-id",a.windowId],["x-codex-turn-metadata",a.turnMetadata]),wt(e.model).lite)u.push(["x-openai-internal-codex-responses-lite","true"]);let l=LP(e.model,o.service_tier);if(l!==void 0)u.push(["x-codex-routing-hint",l])}if(u.push(["x-client-request-id",s],["session-id",s],["thread-id",s]),t)u.push(["content-encoding","zstd"]);if(u.push(["content-type","application/json"]),t){if(u.push(["authorization",`Bearer ${e.credentials.accessToken}`]),typeof n==="string")u.push(["chatgpt-account-id",n]);u.push(["host","chatgpt.com"])}else if(e.credentials.apiKey!==null)u.push(["authorization",`Bearer ${e.credentials.apiKey}`]);else throw e.fail("AUTH","openai credential has no token");let c=fe(ge(rt.headers,u),rt.order),d=e.request.vendor?.openai?.include;return{decodeState:{nativeReasoning:Array.isArray(d)&&d.includes("reasoning.encrypted_content")},request:{url:t?PP:IP,method:"POST",headers:c,body:JSON.stringify(Be({...o,stream:!0},$i)),...t?{bodyEncoding:"zstd"}:{}},degradations:i}},decode({body:e,decodeState:t}){let n=t;return ms(_e(e),{nativeReasoning:n?.nativeReasoning===!0})}};var jc=de("openai",Pi.capabilities,Ub);var Kc={anthropic:oc,openai:jc,kimi:Hc,kilo:qc,grok:zc,antigravity:pc,muse:Wc,custom:Bc};Object.setPrototypeOf(Kc,null);var Mb=Object.fromEntries(Object.entries(M).flatMap(([e,t])=>{let n=Kc[e],r=Yu[e],o=Qu[e];if(n===void 0||r===void 0||o===void 0)return[];return[[e,{...t,adapter:n,profile:r,bodyOrder:o}]]}));Object.setPrototypeOf(Mb,null);var Gc=c_,NP=600000;function $b(e,t){return t[e]?.callback}function Zc(e){return typeof e==="string"&&Object.hasOwn(M,e)}function DP(e,t){let n=t.pending.extra?.deviceId;if(typeof n==="string"&&n.trim().length>0)return n;if(e.needsDeviceId)throw new b("INTERNAL","device authorization did not provide a device id");return""}function Xc(e){let t=e.logger??se,n=zu({now:e.now,ttlMs:NP,...e.coord===void 0?{}:{coord:e.coord}}),r=new Map,o=e.descriptors??M,i=(p)=>$b(p,o)?.uri??"",s=(p)=>typeof p==="string"&&Object.hasOwn(o,p),a=()=>Object.keys(e.providers);function u(p,l){let m=$b(p.provider,o);if(m===void 0)return l;let g=new URL(m.uri),h;try{h=new URL(l)}catch{return l}if(h.origin!==g.origin||h.pathname!==g.pathname)throw new b("BAD_REQUEST",`invalid ${m.label} callback URL`);let f=h.searchParams.get("code")?.trim()??"",y=h.searchParams.get("state")?.trim()??"";if(f.length===0||y.length===0)throw new b("BAD_REQUEST",`${m.label} callback URL must contain code and state`);if(y!==p.pending.state)throw new b("AUTH","authorization state mismatch");return`${f}#${y}`}async function c(p,l){let m=e.providers[p.provider];if(m===void 0)throw new b("BAD_REQUEST","provider does not support OAuth");let g=p.credentialId===void 0?null:await e.store.credentials.get(p.credentialId);if(p.credentialId!==void 0&&g===null)throw new b("BAD_REQUEST","credential not found");let h=g!==null&&g.provider===p.provider?g.providerData:void 0,f=await m.exchange({code:l,pending:p.pending,...h===void 0?{}:{providerData:h}},{http:e.http,now:e.now});if(p.credentialId!==void 0)return await e.store.credentials.updateSecrets(p.credentialId,f.secrets,f.expiresAt),await e.store.credentials.update(p.credentialId,{enabled:!0,disabledReason:null,disabledAt:null,accountEmail:f.accountEmail,providerData:f.providerData}),t.info("oauth reconnect completed",{provider:p.provider,credentialId:p.credentialId}),{id:p.credentialId};let y=crypto.randomUUID();return await e.store.credentials.create({id:y,provider:p.provider,label:p.label,authType:"oauth",enabled:!0,tier:1,weight:1,expiresAt:f.expiresAt,accountEmail:f.accountEmail,providerData:f.providerData,disabledReason:null,disabledAt:null,...f.secrets}),t.info("oauth connect completed",{provider:p.provider,credentialId:y}),{id:y}}async function d(p,l){try{let m=await l;return await n.take(p),{status:"complete",...m}}catch(m){if(Gi(m))return{status:"pending"};throw await n.take(p),m}}return{connectableIds:a,async start(p,l,m){let g=()=>new b("BAD_REQUEST",`provider must be one of ${a().join(", ")}`);if(!s(p))throw g();let h=e.providers[p];if(h===void 0)throw g();let f;if(m!==void 0){if(typeof m!=="string"||m.trim().length===0)throw new b("BAD_REQUEST","invalid credential for reconnect");let C=m.trim(),V=await e.store.credentials.get(C);if(V===null||V.provider!==p||V.authType!=="oauth")throw new b("BAD_REQUEST","invalid credential for reconnect");f=C}let y=typeof l==="string"&&l.trim().length>0?l.trim():p,_=i(p),w={http:e.http,now:e.now},v=await h.start({redirectUri:_},w),k=h.kind==="device"?await h.begin({deviceId:DP(h,v)},w):v;return{flowId:await n.put({provider:p,label:y,pending:k.pending,...f===void 0?{}:{credentialId:f},...k.userCode===void 0?{}:{userCode:k.userCode}}),authorizeUrl:k.authorizeUrl,userCode:k.userCode??null,kind:h.kind,supportsManualPaste:h.supportsManualPaste,pollIntervalMs:(k.pending.interval??5)*1000}},async finish(p,l){if(typeof p!=="string"||typeof l!=="string")throw new b("BAD_REQUEST","flowId and code are required");let m=await n.take(p);if(m===null)throw new b("BAD_REQUEST","unknown or expired authorization");return c(m,u(m,l))},async poll(p){if(typeof p!=="string")throw new b("BAD_REQUEST","flowId is required");let l=r.get(p);if(l!==void 0)return d(p,l);let m=(async()=>{let g=await n.peek(p);if(g===null)throw new b("BAD_REQUEST","unknown or expired authorization");return c(g,"")})().finally(()=>{r.delete(p)});return r.set(p,m),d(p,m)}}}function Q(e,t){let n=e.safeParse(t);if(n.success)return n.data;let r=n.error.issues[0],o=r?.path??[],i=o.length===0?"(root)":o.map((a)=>on(String(a))).join("."),s=r===void 0?"invalid request":r.code==="unrecognized_keys"?`unrecognized key "${on(r.keys[0])}"`:r.message;throw new b("BAD_REQUEST",`${i}: ${s}`)}function Pt(e,t){if(e===void 0)return t;if(typeof e==="string"&&e.trim().length===0)return t;let n=Number(e);return Number.isFinite(n)?n:t}var Un=K().regex(an,"must be a lowercase provider id"),Vc=re({tools:Me().default(!1),images:Me().default(!1),reasoning:Me().default(!1)}).strict(),UP=re({provider:Un,endpointId:K().trim().min(1).optional(),model:K().min(1),tier:N().int().min(1),weight:N().positive(),costPerMTok:re({input:N().min(0),output:N().min(0),cacheRead:N().min(0).optional(),cacheWrite5m:N().min(0).optional(),cacheWrite1h:N().min(0).optional()}),contextWindow:N().int().positive().optional(),maxOutputTokens:N().int().positive().optional(),credentialId:K().trim().min(1).max(64).regex(/^[A-Za-z0-9_-]+$/,"credentialId must be an account id").optional(),capabilities:re({tools:Me(),images:Me(),reasoning:Me()})}).strict().refine((e)=>e.provider!=="custom"||e.endpointId!==void 0,{message:"custom targets require an endpointId",path:["endpointId"]}).refine((e)=>e.provider==="custom"||e.endpointId===void 0,{message:"endpointId is only meaningful for a custom target",path:["endpointId"]}),Qc=re({id:K().min(1),strategy:St(["score","priority","roundRobin","weighted"]),isAlias:Me(),targets:Sn(UP).min(1,"a virtual model needs at least one target")}),Fb=8640000000000000,Bb=K().trim().min(1).max(uy),Yc=re({label:K().min(1).default("api key"),modelAllowlist:Sn(K().min(1)).nullable().default(null),limits:lr.default({}),bodyLoggingOptOut:Me().default(!1),expiresAt:N().int().positive().max(Fb).nullable().default(null),guardrailPolicy:Bb.nullable().default(null)}).strict(),zb=re({limits:lr}).strict(),qb=re({modelAllowlist:Sn(K().min(1)).nullable()}).strict(),Hb=re({expiresAt:N().int().positive().max(Fb).nullable()}).strict(),Wb=re({policy:Bb.nullable()}).strict(),Br=re({keepLatest:N().int().min(1).max(100),maxAgeDays:N().int().min(1).max(3650)}).strict(),Jc=re({weights:re({tier:N(),health:N(),quota:N(),cost:N(),latency:N(),load:N()}).strict(),maxAttempts:N().int().min(1).max(10),requestDeadlineMs:N().int().min(0),breakerThreshold:N().int().min(1),breakerCooldownMs:N().int().positive(),logRetentionDays:N().int().min(1),bodyRetentionDays:Br.shape.maxAgeDays.optional(),quotaPollIntervalMs:N().int().min(0),rtkEnabled:Me(),autoCacheEnabled:Me(),ponytailMode:St(lu),bodyLoggingEnabled:Me(),bodyLoggingCaptureStreamChunks:Me(),snapshotKeepLatest:Br.shape.keepLatest.optional(),snapshotMaxAgeDays:Br.shape.maxAgeDays.optional(),guardrailModel:K().trim().min(1).max(256).nullable().optional(),guardrailTimeoutMs:N().int().min(1).max(mu).optional(),guardrailHistoryTurns:N().int().min(1).max(fu).optional()}),ed=re({label:K().min(1).optional(),enabled:Me().optional(),tier:N().int().min(1).optional(),weight:N().positive().optional()}).strict(),MP=WR("kind",[re({kind:hh("one"),credentialId:K().trim().min(1).max(64).regex(/^[A-Za-z0-9_-]+$/,"credentialId must be an account id")}).strict(),re({kind:hh("all")}).strict()]),jb=(e)=>K().trim().min(1,e).max(64,e).regex(/^[A-Za-z0-9_-]+$/,e),td=jb("credentialId must be an account id"),Kb=jb("apiKeyId must be a key id"),$P=re({credentialId:td,creditId:K().min(1).max(128).regex(/^[A-Za-z0-9_-]+$/).optional()}).strict(),gs=St(["credential","model","requestedModel","apiKey","provider","hour","day"]),nd=St(["raw","daily"]),FP={raw:new Set(["credential","model","requestedModel","apiKey","provider","hour"]),daily:new Set(["credential","model","requestedModel","apiKey","provider","day"])};function hs(e,t){if(FP[e].has(t))return t;throw new b("BAD_REQUEST",`usage grain "${e}" cannot group by "${t}"`)}var rd="omnigateway.service",Gb=500,BP=200;function od(e){let t=e.logFile?.trim();if(t!==void 0&&t.length>0)return{kind:"file",path:t};if(e.unitInstalled)return{kind:"journal",unit:rd,scope:e.scope};return{kind:"none"}}function id(e){let t=Pt(e,BP);return Math.floor(Math.min(Math.max(1,t),Gb))}function zP(e,t){if(t.since!==void 0&&(e.at===null||e.at<=t.since))return!1;if(t.level===void 0||e.level===null)return!0;return Xo[e.level]>=Xo[t.level]}var qP=20,HP=5000;function WP(e){return e.level!==void 0||e.since!==void 0?Math.min(e.lines*qP,HP):e.lines}async function jP(e,t,n){if(t.kind==="none")return"";if(t.kind==="file")return e.readFile(t.path,n)??"";let r=t.scope==="system"?["-u",t.unit]:[`--user-unit=${t.unit}`],o=await e.run(["journalctl",...r,"-n",String(n),"--no-pager","--output=cat"]);return o.code===0?o.stdout:""}function Zb(e,t){let n=id(t.lines);return e.split(`
|
|
1673
|
-
`).filter((r)=>r.trim().length>0).map($h).filter((r)=>zP(r,t)).slice(-n)}async function Mn(e,t,n){let r={...n,lines:id(n.lines)},o=await jP(e,t,WP(r)),i=Zb(o,r);return t.kind==="file"?{source:"file",path:t.path,lines:i}:{source:t.kind,lines:i}}var KP=1000,Xb=["request bodies (the artifact corpus stays with the source; body rows are not written)","usage_daily older than the retained request logs (rebuilt from the rows that are carried)","quota readings and credential health (re-probed and re-measured within one poll interval)","sessions and pending OAuth flows (ephemeral; every operator logs in again)","plugin_* tables (their SQL is the source dialect's; carry them by hand)"];async function sd(e,t){let[n,r,o,i]=await Promise.all([t.keys.list(),t.config.listModels(),t.credentials.list(),t.config.getAdminPasswordHash()]);if(n.length>0||r.length>0||o.length>0||i!==null)throw new b("CONFLICT","the target already holds data; copy into an empty store");let s=await e.keys.list();for(let p of s)if(p.limits===null)throw new b("BAD_REQUEST",`api key ${p.id} has unreadable limits; repair it first`);let a={credentials:0,apiKeys:0,models:0,requestLogs:0,skippedPending:0},u=await e.config.getSettings();await t.config.putSettings(u);let c=await e.config.getAdminPasswordHash();if(c!==null)await t.config.setAdminPasswordHash(c);await t.config.setViewerPasswordHash(await e.config.getViewerPasswordHash());for(let p of await e.credentials.list()){let l=await p.secrets(),{secrets:m,openForInference:g,openForRefresh:h,openForUsage:f,createdAt:y,updatedAt:_,hasRefreshToken:w,tokenVersion:v,...k}=p;await t.credentials.create({...k,...l}),a.credentials+=1}for(let p of await e.config.listModels())await t.config.putModel(p),a.models+=1;for(let p of s)await t.keys.importRow(p),a.apiKeys+=1;let d=null;for(;;){let p=await e.usage.scan(d,KP);if(p.length===0)break;for(let m of p){if(m.state!=="done"){a.skippedPending+=1;continue}await t.usage.append(m),a.requestLogs+=1}let l=p[p.length-1];if(l===void 0)break;d={at:l.at,id:l.id}}return await t.usage.rebuildRollup(),{counts:a,notCarried:Xb}}function at(e,t){return e+"::"+t}async function zr(e,t){let[n,r,o,i,s]=await Promise.all([e.credentials.listRouting(),e.credentials.listHealth(),e.credentials.listQuota(),e.config.listModels(),e.config.getSettings()]),a=new Map(r.map((c)=>[at(c.credentialId,c.model),c])),u=new Map;for(let c of o){let d=u.get(c.credentialId);if(d===void 0)u.set(c.credentialId,[c]);else d.push(c)}return{credentials:n,health:a,quota:u,models:new Map(i.map((c)=>[c.id,c])),settings:s,builtAt:t}}function GP(e){let t=new Set;for(let n of e.tools??[])if(n.kind==="provider")t.add(n.provider);for(let n of e.system??[])if(n.type==="providerNative")t.add(n.provider);for(let n of e.messages)for(let r of n.content){if(r.type==="providerNative")t.add(r.provider);if(r.type==="toolResult")for(let o of r.native??[])t.add(o.provider)}return t}function Vb(e){let t=(r)=>r.some((o)=>o.type==="image"||o.type==="toolResult"&&(o.images!==void 0||o.files!==void 0)),n=t(e.system??[])||e.messages.some((r)=>t(r.content));return{tools:(e.tools?.length??0)>0,images:n,reasoning:e.reasoning!==void 0&&e.reasoning.mode!=="off"&&e.reasoning.mode!=="betweenTools"}}function ZP(e,t,n){let r=Math.max(0,e-t);return Math.min(n*2**r,3600000)}function ad(e){let{request:t,model:n,snapshot:r,now:o}=e,i=e.providers??M,{breakerThreshold:s,breakerCooldownMs:a}=r.settings,u=Vb(t),c=GP(t),d=[],p=[];for(let l of n.targets){if(!Object.hasOwn(i,l.provider)){p.push({kind:"target",credentialId:"",model:l.model,reason:"provider:missing"});continue}let m=c.size>1||c.size===1&&!c.has(l.provider)?"providerNative":["tools","images","reasoning"].find((_)=>u[_]&&!l.capabilities[_]),g=m==="providerNative"?"target":"account",h=!1,f=!1,y=!1;for(let _ of r.credentials){if(_.provider===l.provider)f=!0;if(!pu(l,_))continue;y=!0,h=l.credentialId!==void 0;let w=(C,V="account")=>{p.push({kind:V,credentialId:_.id,model:l.model,reason:C})};if(m!==void 0){w(`capability:${m}`,g);continue}if(!_.enabled){w("disabled");continue}if(oi(_,o)){w("expired");continue}let v=!1,k=r.health.get(at(_.id,l.model));if(k!==void 0){if(k.rateLimitedUntil!==null&&k.rateLimitedUntil>o){w("rateLimited");continue}if(k.breakerState==="open"){if(o-(k.openedAt??o)<ZP(k.consecutiveFailures,s,a)){w("breaker:open");continue}v=!0}else if(k.breakerState==="halfOpen")v=!0}let T=(r.quota.get(_.id)??[]).find((C)=>C.limit!==null&&C.used>=C.limit&&(C.resetsAt===null||C.resetsAt>o));if(T!==void 0){w(`quota:${T.windowType}`);continue}d.push({credential:_,target:l,probe:v})}if(l.credentialId===void 0&&f&&!y)p.push({kind:"target",credentialId:"",model:l.model,reason:"endpoint:unmatched"});if(l.credentialId!==void 0&&!h)p.push({kind:"account",credentialId:l.credentialId,model:l.model,reason:"pin:missing"})}return{pairs:d,excluded:p}}var Qb=0.5,ud=0.1;function qr(e){return Math.max(e,60000)*3}function XP(e,t){let n=e.limit;if(n===null||n<=0)return 1;let r=Math.max(0,Math.min(1,1-e.used/n));if(e.resetsAt===null)return r;let o=ni(e.windowType,e.windowMs),i=Math.max(0.05,Math.min(1,(e.resetsAt-t)/o));return Math.max(0,Math.min(1,r/i))}function Hr(e,t,n,r){let o=qr(r),i=t.filter((s)=>s.limit!==null&&s.limit>0&&s.observedAt>0&&n-s.observedAt<=o&&!_r(s,n));if(i.length===0)return e.authType==="apiKey"?1:Qb;return Math.min(...i.map((s)=>XP(s,n)))}var Yb=0.5;function VP(e,t,n){if(n===t)return 1;return(n-e)/(n-t)}function Jb(e,t){return Math.min(1,t/e)}function ek(e){let t=e.filter((n)=>n>0);return t.length>0?Math.min(...t):null}var tk=1000;function QP(e){let t=Yo(e),n=Math.max(0,qh(e)-t),r=Math.min(e.maxTokens??tk,tk);return{cachedTok:t,freshTok:n,outTok:r}}function YP(e,{cachedTok:t,freshTok:n,outTok:r}){return n*e.costPerMTok.input+t*ay(e.costPerMTok)+r*e.costPerMTok.output}function cd(e){let t=1/(1+(e?.consecutiveFailures??0));return e?.breakerState==="open"||e?.breakerState==="halfOpen"?t*0.5:t}function nk(e,t){let{snapshot:n,now:r,load:o,recent:i}=t,s=n.settings.weights,a=e.map((h)=>h.target.tier),u=Math.min(...a),c=Math.max(...a),d=QP(t.request),p=e.map((h)=>YP(h.target,d)),l=ek(p),m=(h)=>i?.get(h)?.ewmaTtftMs??null,g=ek(e.flatMap((h)=>{let f=m(at(h.credential.id,h.target.model));return f===null?[]:[f]}));return e.map((h,f)=>{let y=at(h.credential.id,h.target.model),_=n.health.get(y),w=VP(h.target.tier,u,c),k=1/(1+(o.get(y)??0)),T=cd(_),C=Hr(h.credential,n.quota.get(h.credential.id)??[],r,n.settings.quotaPollIntervalMs),V=p[f],Re=V<=0||l===null?Yb:Jb(V,l),W=m(y),We=W===null||W<=0||g===null?Yb:Jb(W,g),Lt={tier:w,health:T,quota:C,cost:Re,latency:We,load:k},Vs=w*s.tier+T*s.health+C*s.quota+Re*s.cost+We*s.latency+k*s.load;return{credential:h.credential,target:h.target,probe:h.probe,score:Vs*h.credential.weight*h.target.weight,reasons:Lt}})}function JP(e){return Object.entries(e).flatMap(([t,n])=>n.modelPrefixes.map((r)=>[r,t,n])).sort(([t],[n])=>n.length-t.length)}function rk(e,t,n){let r=Bi(n.catalog,t),o=Lr(n.catalog,t),i={provider:e,model:t,tier:1,weight:1,costPerMTok:r===null?{input:0,output:0}:{input:r.input,output:r.output,cacheRead:r.cacheRead,cacheWrite5m:r.cacheWrite5m,cacheWrite1h:r.cacheWrite1h},...o===null?{}:{contextWindow:o.contextWindow,maxOutputTokens:o.maxOutputTokens},capabilities:n.capabilities};return{id:`${e}/${t}`,targets:[i],strategy:"score",isAlias:!0}}function dd(e,t,n=M){let r=t.models.get(e);if(r!==void 0)return r;let o=e.search(/[/:]/);if(o>0){let i=e.slice(0,o),s=e.slice(o+1),a=Object.hasOwn(n,i)?n[i]:void 0;if(a!==void 0&&i!=="custom"&&s.length>0)return rk(i,s,a);throw new b("NO_CANDIDATES",`unknown provider "${on(i)}" in model "${on(e)}"`)}for(let[i,s,a]of JP(n))if(e.startsWith(i))return rk(s,e,a);throw new b("NO_CANDIDATES",`model "${on(e)}" is not a configured virtual model and its provider could not be inferred`)}function eI(e,t,n,r){let o=(d)=>d.credential.weight*d.target.weight*n(d)*r(d),i=e.reduce((d,p)=>d+o(p),0);if(i<=0)return[...e].sort((d,p)=>p.score-d.score);let s=t*i,a=e.length-1;for(let d=0;d<e.length;d++)if(s-=o(e[d]),s<0){a=d;break}let u=e[a],c=e.filter((d,p)=>p!==a).sort((d,p)=>p.score-d.score);return[u,...c]}function ok(e){let{pairs:t,excluded:n}=ad(e);if(t.length===0)return{candidates:[],excluded:n};let r=nk(t,e),o=(a)=>Hr(a.credential,e.snapshot.quota.get(a.credential.id)??[],e.now,e.snapshot.settings.quotaPollIntervalMs),i=(a)=>cd(e.snapshot.health.get(at(a.credential.id,a.target.model))),s=(a)=>e.load.get(at(a.credential.id,a.target.model))??0;switch(e.model.strategy){case"priority":r.sort((a,u)=>a.target.tier-u.target.tier||u.score-a.score);break;case"roundRobin":{let a=(c)=>{let d=e.recent?.get(at(c.credential.id,c.target.model))?.lastReleasedAt;return d===void 0?Number.POSITIVE_INFINITY:e.now-d},u=(c)=>o(c)<ud?1:0;r.sort((c,d)=>u(c)-u(d)||s(c)-s(d)||a(d)-a(c));break}case"weighted":return{candidates:eI(r,e.rand,o,i),excluded:n};case"score":r.sort((a,u)=>u.score-a.score);break}return{candidates:r,excluded:n}}var ik=3600000;function ys(e){if(e.resetsAt===null)return null;return e.resetsAt-ni(e.windowType,e.windowMs)}var ld=(e)=>({credentialId:e.credentialId,windowType:e.windowType,windowStartsAt:null,ratePerHour:null,exhaustsAt:null,survives:null,stale:!0});function pd(e,t){if(e.observedAt<=0)return ld(e);if(t.now-e.observedAt>qr(t.pollIntervalMs))return ld(e);if(_r(e,t.now))return{...ld(e),windowStartsAt:ys(e)};let n=ys(e),r=n===null?null:e.observedAt-n,o=r===null?null:r/ik,i=o===null?null:o<=0||e.used===0?0:e.used/o,s=e.limit===null||e.limit<=0||i===null||i<=0?null:e.observedAt+Math.max(0,e.limit-e.used)/i*ik;return{credentialId:e.credentialId,windowType:e.windowType,windowStartsAt:n,ratePerHour:i,exhaustsAt:s,survives:s===null||e.resetsAt===null||s>=e.resetsAt,stale:!1}}function Wr(e,t){return e.map((n)=>pd(n,t))}function md(e){return{id:e.id,provider:e.provider,label:e.label,authType:e.authType,enabled:e.enabled,tier:e.tier,weight:e.weight,expiresAt:e.expiresAt,accountEmail:e.accountEmail,providerData:e.providerData,disabledReason:e.disabledReason,disabledAt:e.disabledAt,hasRefreshToken:e.hasRefreshToken,tokenVersion:e.tokenVersion,createdAt:e.createdAt,updatedAt:e.updatedAt}}async function Qe(e){return(await e.credentials.list()).map(md)}async function ws(e,t){let n=await e.credentials.get(t);if(n===null)throw new b("BAD_REQUEST","no such credential");return md(n)}function _s(e,t){if(typeof e!=="string"||e.trim().length===0)throw new b("BAD_REQUEST",`${t}: must not be empty`);return e.trim()}function tI(e){let t=_s(e.endpointId,"endpointId"),n=_s(e.endpointLabel,"endpointLabel"),r=_s(e.origin,"origin");if(e.protocol!=="chat_completions"&&e.protocol!=="responses")throw new b("BAD_REQUEST","protocol: unsupported protocol");let o;try{o=new URL(r)}catch{throw new b("BAD_REQUEST","origin: must be a valid URL")}if(o.protocol!=="http:"&&o.protocol!=="https:"||o.hostname.length===0||o.username.length>0||o.password.length>0||o.search.length>0||o.hash.length>0)throw new b("BAD_REQUEST","origin: must be an HTTP(S) server origin");let i=o.pathname.replace(/\/+$/,"");return{endpointId:t,endpointLabel:n,origin:o.origin,basePath:i,protocol:e.protocol}}function nI(e,t){let n=typeof e.basePath==="string"?e.basePath:"";return e.endpointId===t.endpointId&&e.endpointLabel===t.endpointLabel&&e.origin===t.origin&&n===t.basePath&&e.protocol===t.protocol}async function fd(e,t,n=se,r=Zc){let o=Q(Un,t.provider);if(!r(o))throw new b("BAD_REQUEST",`provider: no provider named "${o}"`);let i=_s(t.apiKey,"apiKey");if(t.label!==void 0&&typeof t.label!=="string")throw new b("BAD_REQUEST","label: must be a string");let s={};if(o==="custom"){let c=tI(t);if((await e.credentials.list()).filter((p)=>p.provider==="custom"&&p.providerData.endpointId===c.endpointId).some((p)=>!nI(p.providerData,c)))throw new b("CONFLICT","endpointId: metadata conflicts with existing endpoint");s=c}let a=t.label?.trim()||`${o} api key`,u=await e.credentials.create({id:crypto.randomUUID(),provider:o,label:a,authType:"apiKey",enabled:!0,tier:1,weight:1,expiresAt:null,accountEmail:null,providerData:s,disabledReason:null,disabledAt:null,accessToken:null,refreshToken:null,apiKey:i,idToken:null});return n.info("credential added",{credentialId:u.id,provider:u.provider}),md(u)}async function gd(e,t){let n=await e.store.credentials.get(t);if(n===null)throw new b("BAD_REQUEST","no such credential");if(n.authType!=="oauth")throw new b("BAD_REQUEST",`credential "${t}" is an api key and has nothing to refresh`);return await e.refresh(n),ws(e.store,t)}async function hd(e){let[t,n,r,o]=await Promise.all([e.store.credentials.listHealth(),e.store.credentials.listQuota(),e.store.config.getSettings(),e.store.credentials.list()]),i={};for(let a of o){let u=await e.store.usage.lastUsedByCredential(a.id);if(u!==null)i[a.id]=u}let s=Wr(n,{now:e.now(),pollIntervalMs:r.quotaPollIntervalMs});return{health:t,quota:n,burn:s,lastUsed:i}}async function jr(e,t){let[n,r,o]=await Promise.all([Qe(e),e.credentials.listQuota(),Tr(e,{now:t.now,sessionTtlMs:0}).isConfigured()]),i=new Map;for(let s of r){let a=i.get(s.credentialId);if(a===void 0)i.set(s.credentialId,[s]);else a.push(s)}return{adminConfigured:o,credentials:n.map(({id:s,provider:a,label:u,enabled:c})=>({id:s,provider:a,label:u,enabled:c,quota:i.get(s)??[]}))}}async function bs(e,t,n){let r=Q(ed,n),o=await e.store.credentials.get(t);if(o===null)throw new b("BAD_REQUEST","no such credential");if(await e.store.credentials.update(t,{...r.label===void 0?{}:{label:r.label},...r.enabled===void 0?{}:{enabled:r.enabled,disabledReason:r.enabled?null:"manual",disabledAt:r.enabled?null:e.now()},...r.tier===void 0?{}:{tier:r.tier},...r.weight===void 0?{}:{weight:r.weight}}),r.enabled!==void 0&&r.enabled!==o.enabled)(e.logger??se).info(r.enabled?"credential enabled":"credential disabled",{credentialId:t,provider:o.provider})}async function yd(e,t){await e.credentials.remove(t)}import{basename as XG,dirname as Es,join as vs,resolve as sk}from"path";var ks=null;async function Ts(e,t){if(ks!==null)throw new b("CONFLICT",`${ks} is already running on this database`);ks=e;try{return await t()}finally{ks=null}}var ak="snapshots";function pn(e){return vs(Es(e.store.databasePath),ak)}function rI(e,t){return`db_${new Date(e).toISOString().replaceAll(":","-").replaceAll(".","-")}_${t}.sqlite`}var oI=/^db_(\d{4}-\d{2}-\d{2})T(\d{2})-(\d{2})-(\d{2})-(\d{3})Z_([A-Za-z]+)\.sqlite$/;function uk(e){let t=oI.exec(e);if(t===null)return null;let[,n,r,o,i,s,a]=t,u=Date.parse(`${n}T${r}:${o}:${i}.${s}Z`);if(Number.isNaN(u)||a===void 0)return null;return{at:u,reason:a}}function ck(e,t){let n=sk(pn(e)),r=sk(n,t);if(uk(t)===null||Es(r)!==n)throw new b("BAD_REQUEST","invalid snapshot id");let o=e.fs.realpath(r);if(o!==null&&Es(o)!==(e.fs.realpath(n)??n))throw new b("BAD_REQUEST","invalid snapshot id");return r}function Kr(e){let t=pn(e),n=[];for(let r of e.fs.readdir(t)){let o=uk(r);if(o===null)continue;n.push({id:r,filename:r,createdAt:o.at,sizeBytes:e.fs.stat(vs(t,r))?.size??0,reason:o.reason})}return n.sort((r,o)=>o.createdAt-r.createdAt)}var iI=86400000,dk=1.1;function lk(e){return{keepLatest:e.snapshotKeepLatest,maxAgeDays:e.snapshotMaxAgeDays}}function sI(e,t,n){let r=pn(e),o=n-t.maxAgeDays*iI,i=Kr(e),s=i.find((u)=>u.reason==="preRestore")?.id,a=0;return i.forEach((u,c)=>{if(c===0)return;if(u.id===s)return;if(c<t.keepLatest&&u.createdAt>=o)return;e.fs.unlink(vs(r,u.id)),a++}),a}async function pk(e,t){let n=pn(e),r=e.now(),o=rI(r,t.reason),i=vs(n,o);if(e.fs.mkdir(n),e.fs.stat(i)!==null)throw new b("CONFLICT","a snapshot for this instant already exists");let s=e.fs.freeBytes(n),a=Math.ceil((e.fs.stat(e.store.databasePath)?.size??0)*dk);if(s!==null&&s<a)throw new b("CONFLICT","not enough free disk space to write a snapshot");try{await e.store.maintenance.snapshotTo(i)}catch(c){throw e.fs.unlink(i),c}let u={id:o,filename:o,createdAt:r,sizeBytes:e.fs.stat(i)?.size??0,reason:t.reason};if(t.force!==!0)sI(e,lk(await e.store.config.getSettings()),r);return u}async function _d(e,t){return Ts("a snapshot",()=>pk(e,t))}class wd extends Error{preRestoreSnapshotId;cause;reopened;constructor(e,t,n){super("the database swap failed and the database may be incomplete");this.preRestoreSnapshotId=e;this.cause=t;this.reopened=n;this.name="SwapFailedError"}}var aI=5;function uI(e){if(e.length===0)return"it has no tables at all";let t=e.slice(0,aI),n=e.length-t.length;return`it has ${t.join(", ")}${n>0?` and ${n} more`:""}`}async function mk(e,t){let n=await e.store.maintenance.inspect(t);if(!n.ok)throw new b("BAD_REQUEST",n.quickCheck==="ok"?`that file is a database, but not one of ours: ${uI(n.tables)}`:`that file failed its integrity check: ${n.quickCheck}`);return n}async function cI(e,t){let n=await mk(e,t.path),r=await pk(e,{reason:"preRestore",force:!0}),o=await e.store.config.getAdminPasswordHash(),i=await e.store.config.getViewerPasswordHash(),s=e.store.databasePath,a=`${s}.incoming`;try{if(t.consume)e.fs.rename(t.path,a);else e.fs.copyFile(t.path,a)}catch(d){throw e.fs.unlink(a),d}try{e.store.close(),e.fs.unlink(`${s}-wal`),e.fs.unlink(`${s}-shm`),e.fs.rename(a,s),await e.store.reopen()}catch(d){let p=!0;try{await e.store.reopen()}catch{p=!1}throw new wd(r.id,d,p)}let u=await e.store.config.getAdminPasswordHash(),c=await e.store.config.getViewerPasswordHash();try{await e.store.usage.rebuildRollup()}catch(d){(e.logger??se).warn("usage rollup not rebuilt after the swap; run omni doctor",{reason:H(d,"unknown")})}try{await e.reapplyPluginSchema?.()}catch(d){(e.logger??se).warn("plugin schema not reapplied after the swap; restart",{reason:H(d,"unknown")})}return{ok:!0,counts:n.counts,preRestoreSnapshot:r,adminPasswordChanged:u!==o,viewerPasswordChanged:c!==i}}async function bd(e,t){let n=ck(e,t);if(e.fs.stat(n)===null)throw new b("BAD_REQUEST","no such snapshot");return Ts("a restore preview",async()=>{let r=await mk(e,n),o=await e.store.maintenance.inspect(e.store.databasePath);return{snapshot:r.counts,live:o.ok?o.counts:null}})}async function kd(e,t){let n=ck(e,t);if(e.fs.stat(n)===null)throw new b("BAD_REQUEST","no such snapshot");return Ts("a restore",()=>cI(e,{path:n,consume:!1}))}async function Ed(e){let t=await e.store.bodies.prune(e.now()),n=await e.store.bodies.sweepOrphans();return{removed:t,orphans:n}}async function vd(e){return Ts("a vacuum",async()=>{let t=e.fs.stat(e.store.databasePath)?.size??0,n=e.now();await e.store.maintenance.vacuum();let r=e.fs.stat(e.store.databasePath)?.size??0;return{reclaimedBytes:Math.max(0,t-r),durationMs:Math.max(0,e.now()-n)}})}async function Td(e){let t=e.store.databasePath,[n,r,o]=await Promise.all([e.store.maintenance.stats(),e.store.maintenance.tables(),e.store.config.getSettings()]),i={engine:e.store.engine,location:t,stats:n,logicalBytes:n.pageSize*n.pageCount,freePageBytes:n.pageSize*n.freelistCount,retention:lk(o),tables:r};if(e.store.engine==="postgres")return{...i,fileBytes:0,walBytes:0,bodiesBytes:r.find((a)=>a.name==="request_bodies")?.bytes??0,freeDiskBytes:null,snapshots:{count:0,totalBytes:0,latestAt:null}};let s=Kr(e);return{...i,fileBytes:e.fs.stat(t)?.size??0,walBytes:e.fs.stat(`${t}-wal`)?.size??0,bodiesBytes:e.fs.dirBytes(yr(t)),freeDiskBytes:e.fs.freeBytes(Es(t)),snapshots:{count:s.length,totalBytes:s.reduce((a,u)=>a+u.sizeBytes,0),latestAt:s[0]?.createdAt??null}}}async function Rd(e,t,n){let r=Q(Vc,n),o=e.now(),i=await zr(e.store,o),s=i.models.get(t);if(s===void 0)throw new b("MODEL_UNAVAILABLE",`no virtual model "${t}"`);let a={model:t,messages:[{role:"user",content:r.images?[{type:"image",mediaType:"image/png",data:""}]:[{type:"text",text:""}]}],stream:!1,...r.tools?{tools:[{kind:"portable",name:"probe",description:"",inputSchema:{type:"object"}}]}:{},...r.reasoning?{reasoning:{mode:"adaptive"}}:{}},u=ok({request:a,model:s,snapshot:i,now:o,rand:0,load:new Map,...e.providers===void 0?{}:{providers:e.providers}});return{modelId:s.id,strategy:s.strategy,deterministic:s.strategy!=="weighted",rankedAt:o,candidates:u.candidates.map((c)=>({credentialId:c.credential.id,credentialLabel:c.credential.label,provider:c.credential.provider,model:c.target.model,tier:c.target.tier,score:c.score,reasons:c.reasons})),excluded:u.excluded.map((c)=>({credentialId:c.credentialId,model:c.model,reason:c.reason}))}}async function Sd(e,t,n=Date.now()){let r=(await e.keys.list()).filter((s)=>s.revokedAt===null&&s.guardrailPolicy!==null).length,o=await zr(e,n),i=o.settings.guardrailModel;if(r===0)return{keysWithPolicy:r,model:i,problem:null};if(i===null)return{keysWithPolicy:r,model:i,problem:"unconfigured"};try{return dd(i,o,t),{keysWithPolicy:r,model:i,problem:null}}catch{return{keysWithPolicy:r,model:i,problem:"unresolved"}}}function dI(e){let t=new Set;for(let n of["requests","tokens","spend"]){let r=e[n];if(r===void 0)continue;for(let o of xn){let i=r[o];if(i!==void 0&&i!==null)t.add(o)}}return[...t]}async function lI(e,t,n,r){if(n===null)return[];let o=await fk(e,t,n,null,r);for(let i of Object.keys(n.models??{})){let s=Qa(n,i);if(s===void 0)continue;o.push(...await fk(e,t,s,i,r))}return o}async function fk(e,t,n,r,o){let i=new Map;for(let a of dI(n)){let u=o-Mo[a];i.set(a,await e.usage.sumSince(t,u,r??void 0))}let s=[];for(let a of["requests","tokens","spend"]){let u=n[a];if(u===void 0)continue;for(let c of xn){let d=u[c];if(d===void 0||d===null)continue;let p=i.get(c),l=p===void 0?null:a==="requests"?p.requests:a==="tokens"?p.tokens:p.costUsd;s.push({dimension:a,window:c,limit:d,used:l,model:r})}}if(n.concurrency!==void 0&&n.concurrency!==null)s.push({dimension:"concurrency",window:null,limit:n.concurrency,used:null,model:r});return s}async function Gr(e,t,n){return{id:t.id,label:t.label,prefix:t.prefix,modelAllowlist:t.modelAllowlist,limits:t.limits,limitUsage:await lI(e,t.id,t.limits,n),bodyLoggingOptOut:t.bodyLoggingOptOut,createdAt:t.createdAt,revokedAt:t.revokedAt,expiresAt:t.expiresAt,guardrailPolicy:t.guardrailPolicy}}async function jt(e,t=Date.now()){let n=await e.keys.list();return Promise.all(n.map((r)=>Gr(e,r,t)))}async function xd(e,t){let n=Q(Yc,t),r=Au(),o=await e.keys.create({id:crypto.randomUUID(),label:n.label,prefix:r.slice(0,12),hash:await vr(r),modelAllowlist:n.modelAllowlist,limits:n.limits,bodyLoggingOptOut:n.bodyLoggingOptOut,expiresAt:n.expiresAt,guardrailPolicy:n.guardrailPolicy});return{id:o.id,label:o.label,prefix:o.prefix,key:r}}async function Ad(e,t,n,r=Date.now()){let o=Q(zb,n),i=await e.keys.get(t);if(i===null)throw new b("BAD_REQUEST","no such api key");return await e.keys.setLimits(t,o.limits),Gr(e,{...i,limits:o.limits},r)}async function Od(e,t,n,r=Date.now()){let o=Q(qb,n),i=await e.keys.get(t);if(i===null)throw new b("BAD_REQUEST","no such api key");return await e.keys.setModelAllowlist(t,o.modelAllowlist),Gr(e,{...i,modelAllowlist:o.modelAllowlist},r)}async function Cd(e,t,n,r=Date.now()){let o=Q(Hb,n),i=await e.keys.get(t);if(i===null)throw new b("BAD_REQUEST","no such api key");return await e.keys.setExpiry(t,o.expiresAt),Gr(e,{...i,expiresAt:o.expiresAt},r)}async function Pd(e,t,n,r=Date.now()){let o=Q(Wb,n),i=await e.keys.get(t);if(i===null)throw new b("BAD_REQUEST","no such api key");return await e.keys.setGuardrailPolicy(t,o.policy),Gr(e,{...i,guardrailPolicy:o.policy},r)}async function Id(e,t){await e.keys.revoke(t)}var $n={kind:"all"};function Zr(e){return e.kind==="key"?e.apiKeyId:void 0}function Fn(e){return e.kind==="none"||e.kind==="key"&&e.apiKeyId===""}var gk=500,pI=100;async function Ld(e,t,n=$n){let r=Q(nd,t.grain??"raw"),o=hs(r,Q(gs,t.groupBy??"model")),i=t.splitBy===void 0?void 0:hs(r,Q(gs,t.splitBy));if(n.kind!=="all"){for(let c of[o,i])if(c==="credential")throw new b("BAD_REQUEST","this dimension is not available on this surface");if(t.credentialId!==void 0||t.apiKeyId!==void 0)throw new b("BAD_REQUEST","this filter is not available on this surface")}let s=t.credentialId===void 0?void 0:Q(td,t.credentialId),a=t.apiKeyId===void 0?void 0:Q(Kb,t.apiKeyId);if(Fn(n))return[];let u=n.kind==="all"?a:Zr(n);return e.store.usage.aggregate({grain:r,groupBy:o,...i===void 0?{}:{splitBy:i},...u===void 0?{}:{apiKeyId:u},...s===void 0?{}:{credentialId:s},since:Pt(t.since,0),until:Pt(t.until,e.now())})}function Nd(e){let t=Pt(e,pI);return Math.floor(Math.min(Math.max(1,t),gk))}var _k=1,wk=128,mI=256,hk=K().min(1).max(wk),Rs=K().min(1).max(mI),yk=Xa([N(),K().regex(/^-?\d+$/,"must be epoch milliseconds").transform(Number)]).pipe(N().int()),fI=re({cursor:K().max(512).optional(),limit:Xa([K(),N()]).optional(),since:yk.optional(),until:yk.optional(),state:St(["pending","done"]).optional(),failed:St(["true","false"]).optional(),provider:Un.optional(),requestedModel:Rs.optional(),resolvedModel:Rs.optional(),model:Rs.optional(),credentialId:hk.optional(),apiKeyId:hk.optional(),errorCode:Rs.optional()}).strict();function gI(e){let t={};for(let[n,r]of Object.entries(e)){if(r===void 0||r==="")continue;t[n]=typeof r==="boolean"?String(r):r}return t}function Md(e){let t=JSON.stringify({v:_k,at:e.at,id:e.id});return Buffer.from(t,"utf8").toString("base64url")}function bk(e){let t=()=>{throw new b("BAD_REQUEST","cursor: malformed")},n;try{n=JSON.parse(Buffer.from(e,"base64url").toString("utf8"))}catch{return t()}if(typeof n!=="object"||n===null||Array.isArray(n))return t();let r=n;if(Object.keys(r).length!==3)return t();if(r.v!==_k)throw new b("BAD_REQUEST","cursor: unknown version");let{at:i,id:s}=r;if(typeof i!=="number"||!Number.isSafeInteger(i))return t();if(typeof s!=="string"||s.length===0||s.length>wk)return t();let a={at:i,id:s};if(Md(a)!==e)return t();return a}function kk(e,t){let n=Q(fI,gI(e)),{since:r,until:o}=n;if(r!==void 0&&o!==void 0&&r>o)throw new b("BAD_REQUEST","since: must not be after until");let i=Zr(t);return{limit:Nd(n.limit),cursor:n.cursor===void 0?null:bk(n.cursor),...n.apiKeyId===void 0?{}:{apiKeyId:n.apiKeyId},...i===void 0?{}:{apiKeyId:i},...n.credentialId===void 0?{}:{credentialId:n.credentialId},...n.provider===void 0?{}:{provider:n.provider},...n.requestedModel===void 0?{}:{requestedModel:n.requestedModel},...n.resolvedModel===void 0?{}:{resolvedModel:n.resolvedModel},...n.model===void 0?{}:{model:n.model},...n.errorCode===void 0?{}:{errorCode:n.errorCode},...n.state===void 0?{}:{state:n.state},...n.failed==="true"?{failed:!0}:{},...r===void 0?{}:{since:r},...o===void 0?{}:{until:o}}}async function Ss(e,t={},n=$n){let r=kk(t,n);if(Fn(n))return{logs:[],nextCursor:null};let o=await e.usage.page(r);return{logs:o.logs,nextCursor:o.next===null?null:Md(o.next)}}var hI=500,Dd=["id","state","at","apiKeyId","requestedModel","resolvedProvider","resolvedModel","credentialId","attempts","status","errorCode","inputTokens","outputTokens","cacheReadTokens","cacheWriteTokens","ttftMs","durationMs","costUsd","degradations","rtkApplied","rtkFilterHits","rtkOriginalCodeUnits","rtkCompressedCodeUnits","rtkEstimatedTokensSaved","rtkFilters"];function Ek(e){if(e===null||e===void 0)return"";let t=Array.isArray(e)?JSON.stringify(e):String(e),n=t.trimStart().charAt(0),r="=+-@".includes(n)&&n!==""?`'${t}`:t;return/[",\r\n]/.test(r)?`"${r.replaceAll('"','""')}"`:r}var vk=(e)=>`${e.map(Ek).join(",")}\r
|
|
1674
|
-
`;function
|
|
1675
|
-
`}return vk(Dd.map((n)=>t[n]))}var yI=St(["csv","jsonl"]);async function*$d(e,t,n=$n){let{format:r,...o}=t,i=Q(yI,r??"csv");if(t.since===void 0||t.since==="")throw new b("BAD_REQUEST","since: required for export");if(t.until===void 0||t.until==="")throw new b("BAD_REQUEST","until: required for export");let s=kk({...o,limit:hI,cursor:void 0},n);if(Fn(n)){yield Ud(i);return}let a=await e.usage.page(s);yield Ud(i);for(;;){for(let u of a.logs)yield Tk(i,u);if(a.next===null)return;a=await e.usage.page({...s,cursor:a.next})}}function Rk(e,t){let n=[e.contextWindow,t.contextWindow].filter((o)=>o!==void 0),r=[e.maxOutputTokens,t.maxOutputTokens].filter((o)=>o!==void 0);return{...n.length===0?{}:{contextWindow:Math.min(...n)},...r.length===0?{}:{maxOutputTokens:Math.min(...r)}}}function _I(e,t,n,r){let o=n!==void 0?[n.authType]:t.size===0?["apiKey"]:[...t],i=r[e.provider]?.catalog,s={};for(let c of i===void 0?[]:o){let d=i===void 0?null:Lr(i,e.model,c);if(d===null)continue;s=Rk(s,{contextWindow:d.contextWindow,maxOutputTokens:d.maxOutputTokens})}let a=e.contextWindow??s.contextWindow,u=e.maxOutputTokens??s.maxOutputTokens;return{...a===void 0?{}:{contextWindow:a},...u===void 0?{}:{maxOutputTokens:u}}}function wI(e){let t=new Map,n=[];for(let r of e){if(!r.enabled)continue;let o=t.get(r.provider)??new Set;o.add(r.authType),t.set(r.provider,o),n.push(r)}return{byProvider:t,routable:n}}function Fd(e,t,n=M){let{byProvider:r,routable:o}=wI(t),i={};for(let s of e.targets)i=Rk(i,_I(s,r.get(s.provider)??new Set,Pn(s,o),n));return i}function Bd(e,t=M){let n=e.targets.length===1?e.targets[0]:void 0;if(n===void 0)return e.id;return t[n.provider]?.catalog.models.find((o)=>o.id===n.model)?.label??e.id}async function mn(e){return e.config.listModels()}async function xs(e,t){let n=(await e.config.listModels()).find((r)=>r.id===t);if(n===void 0)throw new b("MODEL_UNAVAILABLE",`no virtual model "${t}"`);return n}var bI={oauth:"OAuth",apiKey:"API key"};function zd(e){return e.map((t)=>bI[t]).join(" or ")}function kI(e){let t=new Map;for(let n of e){let r=t.get(n.provider)??new Set;r.add(n.authType),t.set(n.provider,r)}return t}function Sk(e){return`${e.provider}\x00${e.model}`}function EI(e,t,n){let r=kI(t),o=new Set((n?.targets??[]).map(Sk));for(let i of e.targets){let s=Pn(i,t);if(s===void 0&&o.has(Sk(i)))continue;let a=s===void 0?r.get(i.provider):new Set([s.authType]);if(a===void 0)continue;let u=M[i.provider]?.catalog,c=u===void 0?x_:S_(u,i.model);if(c.some((l)=>a.has(l)))continue;let d=s===void 0?`every ${i.provider} credential here is ${zd([...a])}`:`this target is pinned to "${s.label}", which is ${zd([...a])}`,p=s===void 0?"connect the other kind, or pick a model this one can reach":"pin it to the other kind, or pick a model this account can reach";return new b("BAD_REQUEST",`${i.provider} serves "${i.model}" to ${zd(c)} credentials only, and ${d} \u2014 ${p}`)}return null}async function qd(e,t,n){let r=Q(Qc,n);if(r.id!==t)throw new b("BAD_REQUEST","model id in the path and body must match");let o=await e.credentials.list(),i=new Set(o.filter((u)=>u.provider==="custom").map((u)=>u.providerData.endpointId).filter((u)=>typeof u==="string")),s=r.targets.find((u)=>u.provider==="custom"&&(u.endpointId===void 0||!i.has(u.endpointId)));if(s!==void 0)throw new b("BAD_REQUEST",`custom endpoint "${s.endpointId}" has no credential`);let a=EI(r,o,(await e.config.listModels()).find((u)=>u.id===t));if(a!==null)throw a;await e.config.putModel(r)}async function Hd(e,t){await e.config.removeModel(t)}import{copyFileSync as VI,mkdirSync as Fk,readdirSync as Jd,readFileSync as $k,realpathSync as QI,renameSync as Bk,rmSync as zk,statfsSync as YI,statSync as Ls,writeFileSync as JI}from"fs";import{join as eL}from"path";import{Buffer as AI}from"buffer";import{basename as OI,join as He,resolve as Pk,sep as CI}from"path";var Bn=3,As="0.1.9";var Ok=["storage","files","net:outbound","events:request","events:limit","channels","provider"],vI=/^[a-z][a-z0-9-]{0,31}$/,TI=K().regex(vI,"id must match /^[a-z][a-z0-9-]{0,31}$/"),xk=K().min(1).refine((e)=>!e.startsWith("/")&&!e.split("/").includes(".."),{message:"entry must be a relative path with no '..' segment"}),RI=K().refine((e)=>{let t;try{t=new URL(e)}catch{return!1}if(t.protocol!=="https:"&&t.protocol!=="http:")return!1;if(t.hostname==="")return!1;if(t.pathname!=="/"||t.search!==""||t.hash!=="")return!1;return e===t.origin||e===`${t.origin}/`},{message:"origin must be scheme://host with no path, query or fragment"}),SI=re({label:K().min(1).max(32)}).strict(),Ak=["net:outbound","provider"],xI=re({id:TI,name:K().min(1).max(64),version:K().min(1).max(32),api:N().int().nonnegative(),sdk:K().min(1).max(32).optional(),server:xk.optional(),ui:xk.optional(),nav:SI.optional(),capabilities:Sn(St(Ok)).default([]),origins:Sn(RI).min(1).optional(),defaults:gh(K(),Ga()).optional()}).strict().refine((e)=>e.server!==void 0||e.ui!==void 0,{message:"manifest must declare a server entry, a ui entry, or both"}).refine((e)=>e.ui===void 0||e.sdk!==void 0,{message:"a ui entry requires an sdk range"}).refine((e)=>!Ak.some((t)=>e.capabilities.includes(t))||e.origins!==void 0,{message:"net:outbound and provider each require origins"}).refine((e)=>Ak.some((t)=>e.capabilities.includes(t))||e.origins===void 0,{message:"origins requires the net:outbound or provider capability"});function Os(e){let t=xI.safeParse(e);if(t.success)return{ok:!0,manifest:t.data};let n=t.error.issues[0],r=n?.path.join(".")??"",o=n?.message??"invalid manifest";return{ok:!1,reason:r===""?o:`${r}: ${o}`}}function Wd(e){return e.api===Bn}var Ik="plugins";function Ce(e){return He(e,Ik)}var Kt="omni-plugin.json",Cs=".omni-install.json",gn=33554432,qn=/^[a-z][a-z0-9-]{0,31}$/,PI="package";function II(e,t){let n=e.readText(He(t,Kt));if(n===null)return{check:"manifest",reason:`no ${Kt}`,fatal:!0};let r;try{r=JSON.parse(n)}catch(i){let s=H(i,String(i));return{check:"manifest",reason:`${Kt} is not valid JSON: ${s}`,fatal:!0}}let o=Os(r);if(!o.ok)return{check:"manifest",reason:o.reason,fatal:!0};return o.manifest}function Ck(e,t,n,r,o){let i=Pk(t,n);if(i!==t&&!i.startsWith(`${t}${CI}`))return{check:"entry",reason:`${r} entry resolves outside the plugin directory`,fatal:o};if(!e.isFile(i))return{check:"entry",reason:`${r} entry ${n} does not exist`,fatal:o};return null}function Xd(e,t,n){let r=He(Ce(t),n);if(!qn.test(n)||!e.fs.isDirectory(r))throw new b("BAD_REQUEST",`no plugin "${n}" installed under ${Ce(t)}`);return Lk(e,r,n)}function Lk(e,t,n){let r=[],o=II(e.fs,t);if(!("id"in o))return r.push(o),{id:n,path:t,manifest:null,problems:r,loadable:!1};let i=o;if(i.id!==n)r.push({check:"id",reason:`manifest id ${i.id} does not match its directory ${n}`,fatal:!0});if(!Wd(i))r.push({check:"api",reason:`plugin api ${i.api} is not supported by this host (api ${Bn})`,fatal:!0});if(i.server!==void 0){let a=Ck(e.fs,t,i.server,"server",!0);if(a!==null)r.push(a)}if(i.ui!==void 0){let a=Ck(e.fs,t,i.ui,"ui",!1);if(a!==null)r.push(a)}let s=LI(e,i);if(s!==null)r.push(s);return{id:n,path:t,manifest:i,problems:r,loadable:!r.some((a)=>a.fatal)}}function LI(e,t){if(t.ui===void 0||t.sdk===void 0)return null;if(e.sdkVersion===void 0)return null;if(Bun.semver.satisfies(e.sdkVersion,t.sdk))return null;return{check:"sdk",reason:`requires dashboard sdk ${t.sdk}, host ships ${e.sdkVersion}`,fatal:!1}}function Gt(e,t){let n=Ce(t),r=[];for(let o of[...e.fs.readdir(n)].sort()){let i=He(n,o);if(!e.fs.isDirectory(i))continue;if(!qn.test(o)){r.push({id:o,path:i,manifest:null,problems:[{check:"id",reason:`directory name ${o} is not a valid plugin id`,fatal:!0}],loadable:!1,name:null,version:null,api:null,sdk:null,capabilities:[],origins:[]});continue}let s=Lk(e,i,o),a=s.manifest;r.push({...s,name:a?.name??null,version:a?.version??null,api:a?.api??null,sdk:a?.sdk??null,capabilities:a?.capabilities??[],origins:a?.origins??[]})}return r}var Xr=512,Ps=new TextDecoder,NI=new TextEncoder;function jd(e,t,n){let r=e.subarray(t,t+n),o=r.indexOf(0);return Ps.decode(o===-1?r:r.subarray(0,o))}function DI(e,t,n){let r=jd(e,t,n).trim();if(r.length===0)return 0;let o=Number.parseInt(r,8);return Number.isSafeInteger(o)&&o>=0?o:-1}function UI(e){if(e.length===0||e.startsWith("/")||e.includes("\x00"))return!1;if(e.includes("\\"))return!1;return!e.split("/").includes("..")}function Kd(e){let t=new Map,n=0,r=null,o=0;while(o+Xr<=e.length){let i=e.subarray(o,o+Xr);if(i.every((l)=>l===0))break;let s=DI(i,124,12);if(s<0)throw new b("BAD_REQUEST","archive has an unreadable entry size");let a=String.fromCharCode(i[156]??0),u=jd(i,0,100),c=jd(i,345,155);if(o+=Xr,n+=s,n>gn)throw new b("BAD_REQUEST",`archive unpacks to more than ${gn} bytes`);if(o+s>e.length)throw new b("BAD_REQUEST",`archive is truncated: entry ${u||"(unnamed)"} declares ${s} bytes and the archive ends before them`);let d=e.subarray(o,o+s);if(o+=Math.ceil(s/Xr)*Xr,a==="1"||a==="2")throw new b("BAD_REQUEST",`archive contains a link (${u}); plugin packages must be plain files`);if(a==="L"){r=Ps.decode(d).replace(/\0+$/,"");continue}if(a==="K"||a==="x"||a==="g")continue;if(a!=="0"&&a!=="\x00"){r=null;continue}let p=r??(c.length>0?`${c}/${u}`:u);if(r=null,!UI(p))throw new b("BAD_REQUEST",`archive contains an unsafe path: ${p}`);t.set(p,new Uint8Array(d))}return t}function Gd(e){if(e[0]!==31||e[1]!==139)return e;try{return Bun.gunzipSync(new Uint8Array(e))}catch(t){let n=H(t,String(t));throw new b("BAD_REQUEST",`could not decompress the archive: ${n}`)}}function Zd(e){let t=new Set;for(let o of e.keys()){let i=o.indexOf("/");if(i<=0)return{files:e,claimedId:null};t.add(o.slice(0,i))}let[n]=[...t];if(t.size!==1||n===void 0)return{files:e,claimedId:null};let r=new Map;for(let[o,i]of e)r.set(o.slice(n.length+1),i);return{files:r,claimedId:n===PI?null:n}}function Nk(e,t,n=""){let r=new Map,o=0;for(let i of e.readdir(t)){let s=He(t,i),a=n.length===0?i:`${n}/${i}`;if(e.isDirectory(s)){for(let[c,d]of Nk(e,s,a))r.set(c,d);continue}let u=e.readBytes(s);if(u===null)continue;if(o+=u.byteLength,o>gn)throw new b("BAD_REQUEST",`${t} holds more than ${gn} bytes`);r.set(a,u)}return r}var Dk="https://registry.npmjs.org",Uk="application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*",MI=/^(?:@[a-z0-9][a-z0-9._-]*\/)?[a-z0-9][a-z0-9._-]*$/,$I=/^\d+\.\d+\.\d+(?:[-+][0-9A-Za-z.-]+)*$/,FI=["sha512","sha384","sha256"];function zn(e){if(typeof e!=="object"||e===null||Array.isArray(e))return null;return e}function fn(e){return typeof e==="string"?e:null}function BI(e){let t=e.lastIndexOf("@"),n=t<=0?e:e.slice(0,t),r=t<=0?null:e.slice(t+1);if(n.length>214||!MI.test(n))return null;return{name:n,version:r}}function zI(e){let t=e.registry??Dk,n;try{n=new URL(t)}catch{throw new b("BAD_REQUEST",`registry ${t} is not a URL`)}if(n.protocol!=="https:")throw new b("BAD_REQUEST",`plugins may only be installed over https; ${t} is not`);return n}function qI(e,t){return`${e.href.replace(/\/+$/,"")}/${t.replace("/","%2f")}`}function HI(e,t){let n=zn(e);if(n===null)throw new b("BAD_REQUEST",`the registry's answer for ${t.name} is not a package`);let r=zn(n.versions);if(r===null)throw new b("BAD_REQUEST",`the registry lists no versions of ${t.name}`);let o=t.version;if(o===null){let u=zn(n["dist-tags"]);if(o=u===null?null:fn(u.latest),o===null)throw new b("BAD_REQUEST",`the registry names no dist-tags.latest for ${t.name}; install ${t.name}@<exact version>`)}let i=zn(r[o]);if(i===null)throw new b("BAD_REQUEST",`the registry has no version ${o} of ${t.name}`);let s=zn(i.dist),a=s===null?null:fn(s.tarball);if(s===null||a===null)throw new b("BAD_REQUEST",`the registry's entry for ${t.name}@${o} names no tarball`);return{version:o,dist:{tarball:a,integrity:fn(s.integrity),shasum:fn(s.shasum)}}}function WI(e,t,n){let r;try{r=new URL(e)}catch{throw new b("BAD_REQUEST",`the registry gave ${n} a tarball that is not a URL`)}if(r.protocol!=="https:")throw new b("BAD_REQUEST",`plugins may only be installed over https; the registry points ${n} at ${e}`);if(r.host!==t.host)throw new b("BAD_REQUEST",`registry ${t.host} points ${n} at ${r.host}; install that URL directly if it is the one you meant`)}function jI(e,t){let n=[];if(e.integrity!==null)for(let r of e.integrity.trim().split(/\s+/)){let o=r.indexOf("-"),i=o===-1?"":r.slice(0,o),s=o===-1?"":r.slice(o+1);if(s.length===0)continue;let a=FI.find((u)=>u===i);if(a===void 0)continue;n.push({algorithm:a,expected:AI.from(s,"base64").toString("hex"),source:`${a} integrity`})}if(n.length===0&&e.shasum!==null&&/^[0-9a-f]{40}$/i.test(e.shasum))n.push({algorithm:"sha1",expected:e.shasum.toLowerCase(),source:"sha1 shasum"});if(n.length===0)throw new b("BAD_REQUEST",`the registry advertises no usable integrity or shasum for ${t}; refusing to install bytes nothing vouches for`);return n}function KI(e,t,n){for(let o of t)if(new Bun.CryptoHasher(o.algorithm).update(e).digest("hex")===o.expected)return;let r=t[0];throw new b("BAD_REQUEST",`${n} does not match the ${r?.source??"digest"} the registry advertised; the download was corrupted or the registry served something else`)}async function GI(e,t){if(t.version!==null&&!$I.test(t.version))throw new b("BAD_REQUEST",`${t.name}@${t.version} is not an exact version; this installer resolves no ranges `+`or tags \u2014 install ${t.name}@1.2.3, or ${t.name} for the registry's latest`);let n=e.fetchBytes;if(n===void 0)throw new b("BAD_REQUEST","this caller cannot install from a registry");let r=zI(e),o=ZI(await n(qI(r,t.name),Uk),`the registry's answer for ${t.name}`),{version:i,dist:s}=HI(o,t),a=`${t.name}@${i}`;WI(s.tarball,r,a);let u=jI(s,a),c=await n(s.tarball);return KI(c,u,a),Zd(Kd(Gd(c)))}function ZI(e,t){try{return JSON.parse(Ps.decode(e))}catch(n){let r=H(n,String(n));throw new b("BAD_REQUEST",`${t} is not valid JSON: ${r}`)}}async function XI(e,t){if(t.startsWith("http://"))throw new b("BAD_REQUEST","plugins may only be installed over https");if(t.startsWith("https://")){if(e.fetchBytes===void 0)throw new b("BAD_REQUEST","this caller cannot install from a URL");return Zd(Kd(Gd(await e.fetchBytes(t))))}let n=Pk(t);if(e.fs.isDirectory(n)){let i=Nk(e.fs,n),s=OI(n);return{files:i,claimedId:qn.test(s)?s:null,recordSpec:n}}let r=e.fs.readBytes(n);if(r!==null)return{...Zd(Kd(Gd(r))),recordSpec:n};let o=BI(t);if(o!==null)return GI(e,o);throw new b("BAD_REQUEST",`no directory or archive at ${n}, and "${t}" is not a package name`)}async function Is(e,t,n,r={}){let o=await XI(e,n),i=o.files.get(Kt);if(i===void 0)throw new b("BAD_REQUEST",`${n} has no ${Kt} at its root`);let s;try{s=JSON.parse(Ps.decode(i))}catch(g){let h=H(g,String(g));throw new b("BAD_REQUEST",`${Kt} is not valid JSON: ${h}`)}let a=Os(s);if(!a.ok)throw new b("BAD_REQUEST",`invalid ${Kt}: ${a.reason}`);let u=a.manifest,c=o.claimedId??u.id;if(u.id!==c)throw new b("BAD_REQUEST",`manifest id ${u.id} does not match its directory ${c}; rename one of them so the gateway loads what you installed`);if(r.expectId!==void 0&&c!==r.expectId)throw new b("BAD_REQUEST",`${n} installs plugin "${c}", which does not match "${r.expectId}"; `+"an update reinstalls the plugin it names and nothing else \u2014 install the new id "+"separately if the rename was intended");let d=Ce(t),p=He(d,c),l=e.fs.isDirectory(p),m=He(d,`.staging-${c}`);e.fs.rm(m);try{for(let[h,f]of o.files){let y=He(m,h);e.fs.mkdir(He(y,"..")),e.fs.writeBytes(y,f)}let g={spec:o.recordSpec??n,installedAt:new Date((e.now??Date.now)()).toISOString(),version:u.version};e.fs.mkdir(m),e.fs.writeBytes(He(m,Cs),NI.encode(`${JSON.stringify(g,null,2)}
|
|
1676
|
-
`)),e.fs.rm(p),e.fs.rename(m,p)}finally{e.fs.rm(m)}return{id:c,name:u.name,version:u.version,path:p,spec:o.recordSpec??n,replaced:l,restartRequired:!0}}function Mk(e,t,n){if(!qn.test(n))return null;let r=e.fs.readText(He(Ce(t),n,Cs));if(r===null)return null;let o;try{o=JSON.parse(r)}catch{return null}let i=zn(o);if(i===null)return null;let s=fn(i.spec),a=fn(i.installedAt),u=fn(i.version);if(s===null||s.length===0||a===null||u===null)return null;return{spec:s,installedAt:a,version:u}}async function Vd(e,t,n){if(!qn.test(n)||!e.fs.isDirectory(He(Ce(t),n)))throw new b("BAD_REQUEST",`no plugin "${n}" installed under ${Ce(t)}`);let r=Mk(e,t,n);if(r===null)throw new b("BAD_REQUEST",`plugin "${n}" has no readable ${Cs}, so nothing here knows where it `+"came from; it was copied in by hand or installed before this host recorded a source \u2014 "+"reinstall it once with omni plugin install <spec> to seed the record");return Is(e,t,r.spec,{expectId:n})}async function Qd(e,t,n,r={}){if(!qn.test(n))throw new b("BAD_REQUEST",`"${n}" is not a valid plugin id`);let o=He(Ce(t),n),i=e.fs.isDirectory(o),s=r.purge===!0;if(s&&e.store===void 0)throw new b("INTERNAL","purging a plugin's data needs a database");let a=s&&e.store!==void 0?await e.store.plugins.listTables(n):[];if(!i&&a.length===0)throw new b("BAD_REQUEST",`no plugin "${n}" installed under ${Ce(t)}`);if(i)e.fs.rm(o);if(s&&e.store!==void 0)await e.store.plugins.dropAll(n);return{id:n,removed:i,droppedTables:a}}function Yd(e,t,n){let r=Gt(e,t).map((o)=>o.id);return n.plugins.orphanTables(r)}function el(){let e=(t)=>{let n;try{n=Jd(t,{withFileTypes:!0,encoding:"utf8"})}catch{return 0}let r=0;for(let o of n){let i=eL(t,o.name);if(o.isDirectory()){r+=e(i);continue}try{r+=Ls(i).size}catch{}}return r};return{readdir:(t)=>{try{return Jd(t)}catch{return[]}},stat:(t)=>{try{let n=Ls(t);return{size:n.size,mtimeMs:n.mtimeMs}}catch{return null}},unlink:(t)=>{zk(t,{force:!0})},rename:(t,n)=>Bk(t,n),copyFile:(t,n)=>VI(t,n),mkdir:(t)=>{Fk(t,{recursive:!0})},realpath:(t)=>{try{return QI(t)}catch{return null}},freeBytes:(t)=>{try{let n=YI(t);return Number(n.bavail)*Number(n.bsize)}catch{return null}},dirBytes:e}}function Vr(){return{readdir:(e)=>{try{return Jd(e)}catch{return[]}},readText:(e)=>{try{return $k(e,"utf8")}catch{return null}},readBytes:(e)=>{try{return new Uint8Array($k(e))}catch{return null}},writeBytes:(e,t)=>{JI(e,t)},isDirectory:(e)=>{try{return Ls(e).isDirectory()}catch{return!1}},isFile:(e)=>{try{return Ls(e).isFile()}catch{return!1}},mkdir:(e)=>{Fk(e,{recursive:!0})},rm:(e)=>{zk(e,{force:!0,recursive:!0})},rename:(e,t)=>Bk(e,t)}}function tl(e={}){let t=e.fetchImpl??fetch,n=e.maxBytes??gn;return async(r,o)=>{if(!r.startsWith("https://"))throw new b("BAD_REQUEST",`plugins may only be fetched over https; ${r} is not`);let i=await t(r,{headers:o===void 0?{}:{accept:o},redirect:"follow"});if(!i.ok)throw new b("BAD_REQUEST",`${r} answered ${i.status}`);let s=i.body?.getReader();if(s===void 0)return new Uint8Array(0);let a=[],u=0;for(;;){let{done:p,value:l}=await s.read();if(p)break;if(l===void 0)continue;if(u+=l.byteLength,u>n)throw await s.cancel(),new b("BAD_REQUEST",`${r} sent more than ${n} bytes`);a.push(l)}let c=new Uint8Array(u),d=0;for(let p of a)c.set(p,d),d+=p.byteLength;return c}}function qk(){return Buffer.from(crypto.getRandomValues(new Uint8Array(32))).toString("base64url")}function Hk(){let e=qk();return{verifier:e,challenge:Bun.SHA256.hash(e,"base64url")}}function Wk(){return qk()}var jk=4,Kk=30000,Gk=150000;function Zt(e,t,n){return new b("UPSTREAM",`${e} oauth ${t} ${n}`,{provider:e,gatewayAuthored:!0})}function tL(e){if(typeof e!=="object"||e===null)return!1;let t=e;return Ar(t.url)&&Or(t.method)&&Array.isArray(t.headers)&&t.headers.every((n)=>Array.isArray(n)&&n.length===2&&typeof n[0]==="string"&&typeof n[1]==="string")&&(t.body===void 0||typeof t.body==="string")&&(t.timeoutMs===void 0||typeof t.timeoutMs==="number"&&Number.isFinite(t.timeoutMs)&&t.timeoutMs>0)}async function hn(e,t,n,r,o){let i;try{return await Promise.race([nL(e,t,n,r,o),new Promise((s,a)=>{i=setTimeout(()=>{a(Zt(e,t,`did not finish within ${Gk}ms`))},Gk),i.unref?.()})])}finally{if(i!==void 0)clearTimeout(i);n.return(void 0).catch(()=>{})}}async function nL(e,t,n,r,o){let i=0,s;try{s=await n.next()}catch(u){throw Hn(e,t,u)}while(!s.done){if(++i>jk)throw Zt(e,t,`asked for more than ${jk} requests`);let u=s.value,c={url:u.url,method:u.method,headers:Array.isArray(u.headers)?[...u.headers]:[],...u.body===void 0?{}:{body:u.body},...u.timeoutMs===void 0?{}:{timeoutMs:u.timeoutMs}};if(!tL(c)||!Array.isArray(u.headers))throw Zt(e,t,"yielded something that is not a request");if(o!==void 0&&!xr(c.url,o))throw Zt(e,t,"described a request to an origin its manifest does not declare");let d;try{d=await r.http({provider:e,url:c.url,method:c.method,headers:c.headers,body:c.body??"",signal:AbortSignal.timeout(Math.min(c.timeoutMs??Kk,Kk))})}catch(l){try{s=await n.throw(Hn(e,t,l))}catch(m){throw Hn(e,t,m)}continue}let p;try{p=await d.text()}catch(l){try{s=await n.throw(Hn(e,t,l))}catch(m){throw Hn(e,t,m)}continue}try{s=await n.next({status:d.status,headers:d.headers,body:p})}catch(l){throw Hn(e,t,l)}}let a=iL[t];if(a!==void 0&&!a(s.value))throw Zt(e,t,"returned something the host cannot use");return s.value}function Hn(e,t,n){if(n instanceof b)return n;if(n instanceof Error&&n.name==="GatewayError")return Zt(e,t,"threw a GatewayError from its own bundled copy, whose classification the host cannot trust; build the error with the fail() it was handed");return Zt(e,t,"threw")}function Ns(e,t,n={}){let{origins:r,trusted:o=!1}=n,i=(u)=>({fail:(c,d,p)=>new b(c,d,{provider:e,...p?.status===void 0?{}:{status:p.status},...o?{gatewayAuthored:!0}:{}}),keepPolling:(c)=>ic(c),pkce:()=>Hk(),randomState:()=>Wk(),now:u.now}),s={id:e,supportsManualPaste:t.supportsManualPaste,start:(u,c)=>hn(e,"start",t.start({...u,...i(c)}),c,r),exchange:(u,c)=>hn(e,"exchange",t.exchange({...u,...i(c)}),c,r),refresh:(u,c,d)=>hn(e,"refresh",t.refresh({refreshToken:u,providerData:d,...i(c)}),c,r),...t.usage===void 0?{}:{usage:(u,c,d)=>{let p=t.usage?.({secrets:u,providerData:d,...i(c)});if(p===void 0)return Promise.resolve(null);return hn(e,"usage",p,c,r)}},...t.resetCredits===void 0?{}:{resetCredits:(u,c,d)=>{let p=t.resetCredits?.({secrets:u,providerData:d,...i(c)});if(p===void 0)return Promise.resolve(null);return hn(e,"resetCredits",p,c,r)}},...t.redeemReset===void 0?{}:{redeemReset:(u,c,d,p,l)=>{let m=t.redeemReset?.({secrets:u,providerData:d,creditId:p,requestId:l,...i(c)});if(m===void 0)return Promise.reject(Zt(e,"redeemReset","has no redeem step"));return hn(e,"redeemReset",m,c,r)}}};if(t.kind==="pkce")return{...s,kind:"pkce"};let a=t.begin;if(a===void 0)throw Error(`plugin ${e} declares a device oauth flow without a begin step`);return{...s,kind:"device",needsDeviceId:t.needsDeviceId===!0,begin:(u,c)=>hn(e,"begin",a({...u,...i(c)}),c,r)}}function Zk(e){if(typeof e!=="object"||e===null)return!1;let t=e;if(typeof t.secrets!=="object"||t.secrets===null)return!1;let n=t.secrets;for(let r of["accessToken","refreshToken","apiKey","idToken"]){let o=n[r];if(o!==null&&typeof o!=="string")return!1}return typeof t.providerData==="object"&&t.providerData!==null}function Xk(e){if(typeof e!=="object"||e===null)return!1;let t=e;return typeof t.authorizeUrl==="string"&&typeof t.pending==="object"&&t.pending!==null}function rL(e){if(e===null)return!0;if(typeof e!=="object")return!1;let t=e;return typeof t.available==="number"&&Array.isArray(t.credits)&&t.credits.every((n)=>{if(typeof n!=="object"||n===null)return!1;let r=n;return typeof r.id==="string"&&typeof r.status==="string"&&(r.title===null||typeof r.title==="string")&&(r.grantedAt===null||typeof r.grantedAt==="number")&&(r.expiresAt===null||typeof r.expiresAt==="number")})}function oL(e){if(typeof e!=="object"||e===null)return!1;let t=e.windowsReset;return t===null||typeof t==="number"}var iL={start:Xk,begin:Xk,exchange:Zk,refresh:Zk,resetCredits:rL,redeemReset:oL};var bt=Object.create(null),Vk=new WeakMap;function nl(e=bt){let t=Vk.get(e)??new Set;Vk.set(e,t);for(let[n,r]of Fc()){if(t.has(n)&&Object.hasOwn(e,n))continue;Qk(n,Ns(n,r,{trusted:!0}),e),t.add(n)}}function rl(e=bt){return Object.keys(e)}function Qk(e,t,n=bt){if(Object.hasOwn(n,e))throw Error(`an oauth flow for ${e} is already installed`);n[e]=t}var ol=300000;var Yk=30000;function Qr(e){let t=e.logger??se,n=e.coord??Mt(),r=new Map;async function o(s){try{return await n.mutex.withLock(`refresh:${s.id}`,Yk,Yk,async()=>{let a=await e.store.credentials.get(s.id);if(a!==null&&a.tokenVersion>s.tokenVersion)return a.secrets();return i(a??s)})}catch(a){if(!(a instanceof Fo))throw a;return t.warn("refresh lock unavailable; refreshing unserialised",{provider:s.provider,credentialId:s.id}),i(s)}}async function i(s){let a=await s.openForRefresh();if(a.refreshToken===null)throw new b("AUTH",`credential ${s.id} has no refresh token`);let u=e.providers[s.provider];if(u===void 0)throw new b("BAD_REQUEST","provider does not support OAuth refresh");t.debug("refreshing credential",{provider:s.provider,credentialId:s.id});let c;try{c=await u.refresh(a.refreshToken,{http:e.http,now:e.now},s.providerData)}catch(p){if(p instanceof b&&p.code==="AUTH")t.warn("credential disabled: refresh token rejected",{provider:s.provider,credentialId:s.id,code:"AUTH"}),await e.store.credentials.update(s.id,{enabled:!1,disabledReason:"tokenRejected",disabledAt:e.now()});throw p}if(!await e.store.credentials.updateSecrets(s.id,c.secrets,c.expiresAt,s.tokenVersion)){t.warn("refresh lost a race; using the stored rotation",{provider:s.provider,credentialId:s.id});let p=await e.store.credentials.get(s.id);if(p===null)throw new b("AUTH",`credential ${s.id} is gone`);return p.secrets()}return await e.store.credentials.update(s.id,{accountEmail:c.accountEmail??s.accountEmail,providerData:{...s.providerData,...c.providerData}}),t.debug("credential refreshed",{provider:s.provider,credentialId:s.id}),c.secrets}return function(a){let u=r.get(a.id);if(u!==void 0)return u;let c=o(a).finally(()=>{r.delete(a.id)});return r.set(a.id,c),c}}import{join as sL}from"path";function It(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}function Yr(e){return typeof e==="number"&&Number.isFinite(e)}function z(e,t,n,r){if(!e)throw Error(`provider ${t} descriptor: ${n} must be ${r}`)}function Jk(e,t,n){z(It(n),e,t,"an object");let r=n;z(Yr(r.contextWindow),e,`${t}.contextWindow`,"a finite number"),z(Yr(r.maxOutputTokens),e,`${t}.maxOutputTokens`,"a finite number")}function aL(e,t){for(let c of["capabilities","writeOverInput","catalog","modelPrefixes","presentation"])if(t[c]===void 0)throw Error(`provider ${e} is missing ${c}`);let n=t.capabilities;z(It(n),e,"capabilities","an object");for(let c of["tools","images","reasoning"]){let d=n[c];z(typeof d==="boolean",e,`capabilities.${c}`,"a boolean")}let r=t.writeOverInput;z(It(r),e,"writeOverInput","an object");for(let c of["fiveMinute","oneHour"]){let d=r[c];z(Yr(d),e,`writeOverInput.${c}`,"a finite number")}let o=t.catalog;z(It(o),e,"catalog","an object");let i=o;z(typeof i.defaultModel==="string",e,"catalog.defaultModel","a string"),z(Array.isArray(i.authTypes),e,"catalog.authTypes","an array");for(let[c,d]of i.authTypes.entries())z(d==="oauth"||d==="apiKey",e,`catalog.authTypes[${c}]`,'"oauth" or "apiKey"');z(Array.isArray(i.models),e,"catalog.models","an array");for(let[c,d]of i.models.entries()){let p=`catalog.models[${c}]`;z(It(d),e,p,"an object");let l=d;z(typeof l.id==="string",e,`${p}.id`,"a string"),z(typeof l.label==="string",e,`${p}.label`,"a string"),z(It(l.pricing),e,`${p}.pricing`,"an object");let m=l.pricing;for(let g of["input","output","cacheRead","cacheWrite5m","cacheWrite1h"])z(Yr(m[g]),e,`${p}.pricing.${g}`,"a finite number");if(Jk(e,`${p}.limits`,l.limits),l.oauthLimits!==void 0)Jk(e,`${p}.oauthLimits`,l.oauthLimits)}let s=t.modelPrefixes;z(Array.isArray(s),e,"modelPrefixes","an array");for(let[c,d]of s.entries())z(typeof d==="string",e,`modelPrefixes[${c}]`,"a string");let a=t.presentation;z(It(a),e,"presentation","an object");let u=a;for(let c of["label","tone"])z(typeof u[c]==="string",e,`presentation.${c}`,"a string");z(Yr(u.order),e,"presentation.order","a finite number"),z(It(u.colour),e,"presentation.colour","an object");for(let c of["light","dark"]){let d=u.colour[c];z(typeof d==="string",e,`presentation.colour.${c}`,"a string")}if(u.pasteHint!==void 0)z(typeof u.pasteHint==="string",e,"presentation.pasteHint","a string")}function uL(e,t){if(t===void 0)return;if(!It(t))throw Error(`provider ${e} oauth must be an object`);let n=t.kind;if(n!=="pkce"&&n!=="device")throw Error(`provider ${e} oauth kind must be "pkce" or "device"`);z(typeof t.supportsManualPaste==="boolean",e,"oauth.supportsManualPaste","a boolean");for(let r of["start","exchange","refresh"])z(typeof t[r]==="function",e,`oauth.${r}`,"a function");if(t.usage!==void 0)z(typeof t.usage==="function",e,"oauth.usage","a function");for(let r of["resetCredits","redeemReset"])if(t[r]!==void 0)z(typeof t[r]==="function",e,`oauth.${r}`,"a function");if(n==="device")z(typeof t.begin==="function",e,"oauth.begin","a function"),z(typeof t.needsDeviceId==="boolean",e,"oauth.needsDeviceId","a boolean");return t}function eE(e,t,n){let r=t.descriptor;if(typeof r!=="object"||r===null)throw Error("provider registration needs a descriptor object");let o=r,i=o.id;if(!$u(i))throw Error(`provider id ${JSON.stringify(i)} is not a usable provider id; expected ${an.source}`);if(i!==e)throw Error(`plugin ${e} registered a provider named ${i}; a plugin may only register its own id`);aL(i,o);let s=t.codec;if(typeof s!=="object"||s===null)throw Error(`provider ${i} registered no codec`);let a=s;for(let d of["buildRequest","decode"])if(typeof a[d]!=="function")throw Error(`provider ${i} codec has no ${d}`);if(a.classifyError!==void 0&&typeof a.classifyError!=="function")throw Error(`provider ${i} codec has a non-callable classifyError`);let u=uL(i,t.oauth),c=r;return{descriptor:c,adapter:de(i,c.capabilities,s,n),...u===void 0?{}:{oauth:Ns(i,u,{...n===void 0?{}:{origins:n}})}}}function tE(e,t,n){let r=n.providers??[];if(r.length===0)return[];if(!t.capabilities.includes("provider"))throw Error(`plugin ${e} declares a provider without the "provider" capability in its manifest`);if(r.length>1)throw Error(`plugin ${e} declares more than one provider`);for(let o of r){let i=o.descriptor?.id;if(typeof i==="string"&&Object.hasOwn(M,i))throw Error(`plugin ${e} declares a provider named ${i}, which is built in`)}return r.map((o)=>eE(e,o,t.origins))}var cL=5000;async function dL(e,t,n){let r;try{return await Promise.race([e,new Promise((o,i)=>{r=setTimeout(()=>i(Error(n)),t)})])}finally{if(r!==void 0)clearTimeout(r)}}async function Ds(e,t,n=cL){let r=Object.create(null),o=Object.create(null),i=[],s=(a,u)=>{let c=a.problems.filter((d)=>d.fatal);return c.length===0?u:`${u}: ${c.map((d)=>d.reason).join("; ")}`};for(let a of e){let u=a.manifest;if(typeof u!=="object"||u===null){i.push({id:a.id,reason:s(a,"manifest could not be read, so whether it supplies a provider is unknown")});continue}let c=u.capabilities;if(!Array.isArray(c)||!c.includes("provider"))continue;if(!a.loadable){i.push({id:a.id,reason:s(a,"declares a provider but will not load")});continue}let d=u.server;if(typeof d!=="string"){i.push({id:a.id,reason:"declares a provider but has no server entry"});continue}try{let l=(await dL(t(sL(a.path,d)),n,`reading its provider took longer than ${n}ms`)).default;if(typeof l!=="object"||l===null||typeof l.setup!=="function"){i.push({id:a.id,reason:"server entry has no default export with a setup"});continue}let m=u.origins;for(let g of tE(a.id,{capabilities:c,...Array.isArray(m)?{origins:m.filter((h)=>typeof h==="string")}:{}},l))if(r[g.descriptor.id]=g.descriptor,g.oauth!==void 0)o[g.descriptor.id]=g.oauth}catch(p){i.push({id:a.id,reason:H(p,String(p))})}}return{descriptors:r,oauth:o,failures:i}}var lL=86400000,pL=3600000,il=50000,nE=il+1;function rE(e){let t=e.length>il;return{page:t?e.slice(0,il):e,truncated:t}}async function sl(e,t,n){let r=e.now(),o=await e.store.config.getSettings(),i=r-o.logRetentionDays*lL,s=n===void 0?i:Math.max(i,r-n);return{since:Math.max(Pt(t.since,s),s),until:Math.min(Pt(t.until,r),r)}}async function mL(e,t){let n=[];for(let r of t){let o=ys(r);if(o===null||r.observedAt<=o){n.push({credentialId:r.credentialId,windowType:r.windowType,gatewayRatePerHour:null});continue}let s=(await e.usage.aggregate({grain:"raw",groupBy:"credential",since:o,until:r.observedAt})).find((u)=>u.key===r.credentialId),a=s===void 0?0:s.inputTokens+s.outputTokens+s.cacheReadTokens+s.cacheWriteTokens;n.push({credentialId:r.credentialId,windowType:r.windowType,gatewayRatePerHour:a/((r.observedAt-o)/pL)})}return n}async function al(e,t){let{since:n,until:r}=await sl(e,t),o=t.credentialId?.trim(),i=o===void 0||o.length===0?void 0:o,[s,a]=await Promise.all([e.store.credentials.listQuotaSamples({since:n,until:r,limit:nE,...i===void 0?{}:{credentialId:i}}),e.store.credentials.listQuota()]),u=i===void 0?a:a.filter((p)=>p.credentialId===i),{page:c,truncated:d}=rE(s);return{samples:c,truncated:d,gatewayRates:await mL(e.store,u)}}async function oE(e,t){let n=await e.store.credentials.get(t.trim());if(n===null)throw new b("BAD_REQUEST","no such credential");let r=e.providers[n.provider],o=r?.resetCredits,i=r?.redeemReset;if(n.authType!=="oauth"||o===void 0||i===void 0)throw new b("BAD_REQUEST","this account's provider has no quota resets");return{credential:n,list:o,redeem:i}}async function iE(e,t){let n=await Jr(e,t.credential),r=await t.list(n,{http:e.http,now:e.now},t.credential.providerData);if(r===null)throw new b("UPSTREAM","provider answered the reset list with nothing usable",{gatewayAuthored:!0});return r}async function ul(e,t){let n=await oE(e,t);return{credentialId:n.credential.id,...await iE(e,n)}}async function cl(e,t){let n=await oE(e,t.credentialId);return e.coord.mutex.withLock(dl+n.credential.id,ll,pl,()=>gL(e,n,t))}async function gL(e,t,n){let r=(await iE(e,t)).credits.filter((u)=>u.status==="available").sort((u,c)=>(u.expiresAt??Number.POSITIVE_INFINITY)-(c.expiresAt??Number.POSITIVE_INFINITY)),o=n.creditId===void 0?r[0]:r.find((u)=>u.id===n.creditId);if(o===void 0)throw new b("CONFLICT",n.creditId===void 0?"no reset credit is available for this account":"that reset credit is not available");let i=await Jr(e,t.credential),{windowsReset:s}=await t.redeem(i,{http:e.http,now:e.now},t.credential.providerData,o.id,crypto.randomUUID()),a=!1;try{a=await Us(e,t.credential)!==null}catch{}return{credentialId:t.credential.id,creditId:o.id,windowsReset:s,quotaRefreshed:a}}var hL=4,ml=180000,sE="quota:cooldown:",dl="quota:probe:",ll=60000,pl=30000;async function Jr(e,t){let n=t.hasRefreshToken&&t.expiresAt!==null&&t.expiresAt-ol<=e.now()?await e.refresh(t):null;return n===null?await t.openForUsage():{accessToken:n.accessToken}}async function Us(e,t){if(t.authType!=="oauth")return null;let n=e.providers[t.provider];if(n?.usage===void 0)return null;let r=await Jr(e,t),o=await n.usage(r,{http:e.http,now:e.now},t.providerData);if(o===null||o.windows.length===0)return null;let i=e.now(),s=o.windows.map((a)=>({credentialId:t.id,windowType:a.windowType,startsAt:i,used:a.used,limit:a.limit,resetsAt:a.resetsAt,observedAt:i,windowMs:a.windowMs}));return await e.store.credentials.saveQuota(s),(e.logger??se).debug("quota snapshot written",{provider:t.provider,credentialId:t.id,count:s.length}),s}async function aE(e,t){let n=Array(e.length).fill(void 0),r=0,o=async()=>{while(r<e.length){let i=r++,s=e[i];if(s===void 0)return;n[i]=await t(s)}};return await Promise.all(Array.from({length:Math.min(hL,e.length)},()=>o())),n}function fl(e){let t=e.logger??se,n=new Map;async function r(u,c,d){try{return await d()}catch(p){return t.warn("quota probe coordination unavailable",{provider:u.provider,credentialId:u.id,coordFallback:!0,reason:H(p,"unknown")}),c}}function o(u,c){let d=c instanceof b&&c.code==="RATE_LIMIT";return t.warn(d?"quota probe rate limited":"quota probe failed",{provider:u.provider,credentialId:u.id,code:c instanceof b?c.code:"INTERNAL",...d?{retryAfterMs:ml}:{},reason:H(c,"unknown")}),c instanceof b?c.code:"INTERNAL"}async function i(u){let c=u.id;try{let d=await Us(e,u);if(d===null)return{outcome:{kind:"noData",credentialId:c},wrote:!1};return{outcome:{kind:"refreshed",credentialId:c,windows:d.length},wrote:!0}}catch(d){if(d instanceof b&&d.code==="RATE_LIMIT")await r(u,void 0,()=>e.coord.kv.set(sE+c,"1",ml));return{outcome:{kind:"failed",credentialId:c,code:o(u,d)},wrote:!1}}}async function s(u,c){let d=u.id,p=!1,l=async()=>{p=!0;let m=(await e.store.credentials.listQuota()).filter((g)=>g.credentialId===d);if(m.some((g)=>g.observedAt>=c))return{outcome:{kind:"coalesced",credentialId:d,windows:m.length},wrote:!1};return i(u)};try{return await e.coord.mutex.withLock(dl+d,ll,pl,l)}catch(m){if(p)return{outcome:{kind:"failed",credentialId:d,code:"INTERNAL"},wrote:!1};return t.warn("quota probe lock unavailable",{provider:u.provider,credentialId:d,coordFallback:!0,reason:H(m,"unknown")}),i(u)}}function a(u){let c=u.id;if(!u.enabled)return Promise.resolve({outcome:{kind:"disabled",credentialId:c},wrote:!1});if(u.authType!=="oauth"||e.providers[u.provider]?.usage===void 0)return Promise.resolve({outcome:{kind:"unsupported",credentialId:c},wrote:!1});let d=n.get(c);if(d!==void 0)return d.then((m)=>m.outcome.kind==="refreshed"?{outcome:{kind:"coalesced",credentialId:c,windows:m.outcome.windows},wrote:!1}:{outcome:m.outcome,wrote:!1});let p=e.now(),l=(async()=>{if(await r(u,null,()=>e.coord.kv.get(sE+c))!==null)return{outcome:{kind:"cooldown",credentialId:c},wrote:!1};return s(u,p)})();return n.set(c,l),l.finally(()=>{n.delete(c)})}return{async poll(){let u=await e.store.credentials.list();return(await aE(u,a)).filter((d)=>d?.wrote===!0).length},async refresh(u){if(u.kind==="one"){let l=u.credentialId.trim();if(l==="")throw new b("BAD_REQUEST","no such credential");let m=await e.store.credentials.get(l);if(m===null)throw new b("BAD_REQUEST","no such credential");return{outcomes:[(await a(m)).outcome]}}let c=await e.store.credentials.list(),d=await aE(c,a),p=[];for(let[l,m]of c.entries()){let g=d[l];p.push(g?.outcome??{kind:"failed",credentialId:m.id,code:"INTERNAL"})}return{outcomes:p}},resetCredits:(u)=>ul(e,u),redeemReset:(u)=>cl(e,u),hasResets:(u)=>{let c=e.providers[u];return c?.resetCredits!==void 0&&c.redeemReset!==void 0}}}async function Wn(e){return e.config.getSettings()}async function gl(e,t){let{bodyRetentionDays:n,snapshotKeepLatest:r,snapshotMaxAgeDays:o,guardrailModel:i,guardrailTimeoutMs:s,guardrailHistoryTurns:a,...u}=Q(Jc,t),c={...u,...n===void 0?{}:{bodyRetentionDays:n},...r===void 0?{}:{snapshotKeepLatest:r},...o===void 0?{}:{snapshotMaxAgeDays:o},...i===void 0?{}:{guardrailModel:i},...s===void 0?{}:{guardrailTimeoutMs:s},...a===void 0?{}:{guardrailHistoryTurns:a}};return e.config.putSettings(c)}var Ms="<your OmniGateway key>";async function yl(e,t){let n=await mn(e),r=(await Qe(e)).map((o)=>({id:o.id,provider:o.provider,authType:o.authType,enabled:o.enabled,providerData:o.providerData}));return n.map((o)=>({model:o,limits:Fd(o,r,t),label:Bd(o,t)}))}var hl={defaultModel:"ANTHROPIC_MODEL",fableModel:"ANTHROPIC_DEFAULT_FABLE_MODEL",opusModel:"ANTHROPIC_DEFAULT_OPUS_MODEL",sonnetModel:"ANTHROPIC_DEFAULT_SONNET_MODEL",haikuModel:"ANTHROPIC_DEFAULT_HAIKU_MODEL"};function yL(e){if(e===void 0)return{};try{let t=JSON.parse(e);if(typeof t!=="object"||t===null||Array.isArray(t))throw Error("settings root is not an object");return t}catch(t){let n=H(t,"invalid JSON");throw Error(`cannot parse existing settings.json: ${n}`)}}function _l(e,t,n,r){if(n.defaultModel==="")throw Error("default model is required");let o=new Set(e.map(({model:c})=>c.id)),i=(c,d)=>{if(!o.has(d))throw Error(`${c} names unknown virtual model "${d}"`);return d},s=yL(r),a=s.env,u=typeof a==="object"&&a!==null&&!Array.isArray(a)?{...a}:{};for(let c of Object.values(hl))delete u[c];delete u.CLAUDE_CODE_MAX_CONTEXT_TOKENS,u.ANTHROPIC_BASE_URL=t.baseUrl,u.ANTHROPIC_AUTH_TOKEN=t.apiKey??Ms,u.CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY="1";for(let[c,d]of Object.entries(hl)){let p=n[c];if(p!==void 0&&p!=="")u[d]=i(c,p)}return{path:"settings.json",contents:`${JSON.stringify({...s,env:u},null,2)}
|
|
1677
|
-
`}}function
|
|
1678
|
-
`}}import{closeSync as
|
|
1679
|
-
`)){let r=n.trim();if(r.length===0||r.startsWith("#"))continue;let o=r.startsWith("export ")?r.slice(7).trim():r,i=o.indexOf("=");if(i<=0)continue;let s=o.slice(0,i).trim(),a=o.slice(i+1).trim(),u=a[0];if((u==='"'||u==="'")&&a.endsWith(u)&&a.length>=2)a=a.slice(1,-1);t[s]=a}return t}function
|
|
1688
|
+
`)}}var h0=/^[A-Z][A-Za-z0-9]*$/;function y0(e){return h0.test(e)||e.startsWith("mcp__")}var q_=128,H_=6;function _0(e){let t=e.split(/[^A-Za-z0-9]+/).filter((n)=>n.length>0).map((n)=>n.charAt(0).toUpperCase()+n.slice(1)).join("");if(t==="")return{base:"Tool",forced:!0};if(t.length>q_)return{base:t.slice(0,q_-H_),forced:!0};return{base:t,forced:!1}}function w0(e){let t=new Set,n=new Set,r=(o)=>{(y0(o)?n:t).add(o)};for(let o of e.tools??[])if(o.kind==="portable")r(o.name);for(let o of e.messages)for(let i of o.content)if(i.type==="toolUse")r(i.name);if(e.toolChoice?.type==="tool")r(e.toolChoice.name);return{renamable:[...t],reserved:[...n]}}function b0(e){let n=(Bun.hash.xxHash64(Buffer.from(e,"utf8"))&0xffffffn).toString(16).padStart(H_,"0");return n.charAt(0).toUpperCase()+n.slice(1)}function W_(e){let{renamable:t,reserved:n}=w0(e),r=new Map,o=(u)=>{r.set(u,(r.get(u)??0)+1)};for(let u of e.tools??[])if(u.kind==="provider"&&u.name!=="")o(u.name);for(let u of n)o(u);let i=new Map;for(let u of t){let l=_0(u);i.set(u,l),o(l.base)}let s=new Map,a=new Map;for(let[u,{base:l,forced:c}]of i){let p=c||(r.get(l)??0)>1?l+b0(u):l;s.set(u,p),a.set(p,u)}return s.size===0?null:{toWire:s,fromWire:a}}function ji(e,t){return e?.toWire.get(t)??t}function j_(e,t){return e?.fromWire.get(t)??t}var be=["cache_control","strict","defer_loading","allowed_callers"],wt=[...be,"input_examples"],dn=["max_uses","allowed_domains","blocked_domains"],_q={web_search_20250305:{family:"webSearch",name:"web_search",required:[],optional:[...be,...dn,"user_location"]},web_search_20260209:{family:"webSearch",name:"web_search",required:[],optional:[...be,...dn,"user_location"]},web_search_20260318:{family:"webSearch",name:"web_search",required:[],optional:[...be,...dn,"user_location","response_inclusion"]},web_fetch_20250910:{family:"webFetch",name:"web_fetch",required:[],optional:[...be,...dn,"citations","max_content_tokens"]},web_fetch_20260209:{family:"webFetch",name:"web_fetch",required:[],optional:[...be,...dn,"citations","max_content_tokens"]},web_fetch_20260309:{family:"webFetch",name:"web_fetch",required:[],optional:[...be,...dn,"citations","max_content_tokens","use_cache"]},web_fetch_20260318:{family:"webFetch",name:"web_fetch",required:[],optional:[...be,...dn,"citations","max_content_tokens","use_cache","response_inclusion"]},code_execution_20250522:{family:"codeExecution",name:"code_execution",required:[],optional:[...be]},code_execution_20250825:{family:"codeExecution",name:"code_execution",required:[],optional:[...be]},code_execution_20260120:{family:"codeExecution",name:"code_execution",required:[],optional:[...be]},code_execution_20260521:{family:"codeExecution",name:"code_execution",required:[],optional:[...be]},bash_20241022:{family:"bash",name:"bash",required:[],optional:[...wt]},bash_20250124:{family:"bash",name:"bash",required:[],optional:[...wt]},text_editor_20241022:{family:"textEditor",name:"str_replace_editor",required:[],optional:[...wt]},text_editor_20250124:{family:"textEditor",name:"str_replace_editor",required:[],optional:[...wt]},text_editor_20250429:{family:"textEditor",name:"str_replace_based_edit_tool",required:[],optional:[...wt]},text_editor_20250728:{family:"textEditor",name:"str_replace_based_edit_tool",required:[],optional:[...wt,"max_characters"]},computer_20241022:{family:"computer",name:"computer",required:["display_width_px","display_height_px"],optional:[...wt,"display_number"]},computer_20250124:{family:"computer",name:"computer",required:["display_width_px","display_height_px"],optional:[...wt,"display_number"]},computer_20251124:{family:"computer",name:"computer",required:["display_width_px","display_height_px"],optional:[...wt,"display_number","enable_zoom"]},memory_20250818:{family:"memory",name:"memory",required:[],optional:[...wt]},tool_search_tool_regex_20251119:{family:"toolSearchRegex",name:"tool_search_tool_regex",required:[],optional:[...be]},tool_search_tool_regex:{family:"toolSearchRegex",name:"tool_search_tool_regex",required:[],optional:[...be]},tool_search_tool_bm25_20251119:{family:"toolSearchBm25",name:"tool_search_tool_bm25",required:[],optional:[...be]},tool_search_tool_bm25:{family:"toolSearchBm25",name:"tool_search_tool_bm25",required:[],optional:[...be]},advisor_20260301:{family:"advisor",name:"advisor",required:["model"],optional:[...be,"caching","max_uses","max_tokens"]},mcp_toolset:{family:"mcpToolset",required:["mcp_server_name"],optional:["cache_control","configs","default_config"]}};var K_=new Set(["server_tool_use","web_search_tool_result","web_fetch_tool_result","code_execution_tool_result","bash_code_execution_tool_result","text_editor_code_execution_tool_result","mcp_tool_use","mcp_tool_result","tool_search_tool_result","tool_reference","advisor_tool_result","advisor_result","advisor_redacted_result","container_upload","compaction","search_result","document","mid_conv_system","tool_addition","tool_removal","fallback","redacted_thinking"]);var G_={end_turn:"endTurn",max_tokens:"maxTokens",stop_sequence:"stopSequence",tool_use:"toolUse",refusal:"contentFilter",pause_turn:"pauseTurn"},k0=new Set(["message_start","content_block_start","content_block_delta","content_block_stop","message_delta","message_stop","error","ping"]),E0=new Set(["text_delta","thinking_delta","signature_delta","input_json_delta","citations_delta","compaction_delta"]),Z_={overloaded_error:"OVERLOADED",rate_limit_error:"RATE_LIMIT",authentication_error:"AUTH",permission_error:"AUTH",invalid_request_error:"BAD_REQUEST",api_error:"UPSTREAM"},v0=["out of extra usage","draw from extra usage"];function nc(e){let t=e.toLowerCase();return v0.some((n)=>t.includes(n))}function T0(e,t){return e==="invalid_request_error"&&nc(t)}function R0(e){try{let t=JSON.parse(e);return typeof t==="object"&&t!==null?t:null}catch{return null}}async function*Ki(e,t={}){let n=t.cloak??null,r=0,o=0,i=0,s,a,u=0,l="endTurn",c=!1,p,d=new Set,m=(g)=>({type:"error",code:"UPSTREAM",message:g,retryable:!1});for await(let g of e){let h=R0(g.data);if(h===null)continue;if(!k0.has(g.event)){yield m(`unrecognized Anthropic stream event "${g.event}"`);return}switch(g.event){case"message_start":{let f=h.message??{};r=f.usage?.input_tokens??0,o=f.usage?.cache_read_input_tokens??0,i=f.usage?.cache_creation_input_tokens??0,s=f.usage?.cache_creation?.ephemeral_5m_input_tokens,a=f.usage?.cache_creation?.ephemeral_1h_input_tokens,yield{type:"start",id:String(f.id??""),model:String(f.model??"")};break}case"content_block_start":{let f=h.content_block??{},y=h.index??0;if(f.type==="text")yield{type:"blockStart",index:y,block:{type:"text"}};else if(f.type==="thinking")yield{type:"blockStart",index:y,block:{type:"thinking",signed:!0}};else if(f.type==="tool_use")yield{type:"blockStart",index:y,block:{type:"toolUse",id:String(f.id),name:j_(n,String(f.name))}};else if(f.type!==void 0&&K_.has(f.type)){d.add(y);let{type:_,...w}=f;yield{type:"blockStart",index:y,block:{type:"providerNative",provider:"anthropic",blockType:f.type,data:w}}}else{yield m(`unrecognized Anthropic content block type "${String(f.type)}"`);return}break}case"content_block_delta":{let f=h.index??0,y=h.delta??{};if(y.type==="text_delta")yield{type:"blockDelta",index:f,delta:{type:"text",text:y.text??""}};else if(y.type==="thinking_delta")yield{type:"blockDelta",index:f,delta:{type:"thinking",text:y.thinking??""}};else if(y.type==="signature_delta"&&(y.signature??"")!=="")yield{type:"blockDelta",index:f,delta:{type:"thinkingSignature",signature:y.signature??""}};else if(y.type==="input_json_delta")yield{type:"blockDelta",index:f,delta:d.has(f)?{type:"providerNativeJson",provider:"anthropic",partial:y.partial_json??""}:{type:"toolJson",partial:y.partial_json??""}};else if(y.type==="citations_delta")yield{type:"blockDelta",index:f,delta:{type:"providerNative",provider:"anthropic",deltaType:y.type,fold:"citation",data:{citation:y.citation}}};else if(y.type==="compaction_delta")yield{type:"blockDelta",index:f,delta:{type:"providerNative",provider:"anthropic",deltaType:y.type,fold:"merge",data:{...y.content===void 0?{}:{content:y.content},...y.encrypted_content===void 0?{}:{encrypted_content:y.encrypted_content}}}};else if(y.type===void 0||!E0.has(y.type)){yield m(`unrecognized Anthropic content block delta "${String(y.type)}"`);return}break}case"content_block_stop":d.delete(h.index??0),yield{type:"blockEnd",index:h.index??0};break;case"message_delta":{let f=h.delta!==void 0&&Object.hasOwn(h.delta,"safeguard_results")?h.delta:h;if(Object.hasOwn(f,"safeguard_results"))p={safeguard_results:f.safeguard_results};let y=h.delta?.stop_reason;if(typeof y==="string"){let _=Object.hasOwn(G_,y)?G_[y]:void 0;if(_===void 0){yield m(`unrecognized Anthropic stop reason "${y}"`);return}l=_}r=h.usage?.input_tokens??r,u=h.usage?.output_tokens??u;break}case"message_stop":if(Object.hasOwn(h,"safeguard_results"))p={safeguard_results:h.safeguard_results};c=!0,yield{type:"end",stopReason:l,...p===void 0?{}:{vendor:{anthropic:p}},usage:{inputTokens:r,outputTokens:u,cacheReadTokens:o,cacheWriteTokens:i,...s===void 0?{}:{cacheWrite5mTokens:s},...a===void 0?{}:{cacheWrite1hTokens:a}}};break;case"error":{c=!0;let f=String(h.error?.type),y=String(h.error?.message??"upstream error"),_=T0(f,y)?"FINGERPRINT_REFUSED":(Object.hasOwn(Z_,f)?Z_[f]:void 0)??"UPSTREAM";yield{type:"error",code:_,message:y,retryable:ee[_]};break}default:break}}if(!c)yield{type:"error",code:"UPSTREAM",message:"upstream stream ended before message_stop",retryable:ee.UPSTREAM}}var de=(e)=>typeof e==="object"&&e!==null&&!Array.isArray(e);function st(e){let t=e.vendor?.openai,n=t?.response_format;if(n!==void 0){if(!de(n)||n.type!=="json_schema")return{kind:"malformed"};return rc(n.json_schema)}let r=t?.text;if(de(r)&&r.format!==void 0)return rc(r.format);if(r!==void 0)return{kind:"malformed"};let o=e.vendor?.anthropic?.output_config;if(de(o)&&o.format!==void 0)return rc(o.format);if(o!==void 0)return{kind:"malformed"};return{kind:"absent"}}function $r(e){return de(e)&&(e.type===void 0||e.type==="json_schema")&&de(e.schema)}function oc(e){if(typeof e==="bigint")return!1;if(typeof e!=="object"||e===null)return!0;let t=new WeakSet,n=[e];while(n.length>0){let r=n.pop();if(r===void 0)break;if(t.has(r))continue;if(t.add(r),typeof r.toJSON==="function")try{if(typeof r.toJSON()==="bigint")return!1}catch{return!1}let o=Array.isArray(r)?r:Object.values(r);for(let i of o){if(typeof i==="bigint")return!1;if(typeof i==="object"&&i!==null)n.push(i)}}return!0}function rc(e){if(!$r(e))return{kind:"malformed"};let t=e.schema;if(!de(t))return{kind:"malformed"};if(x0(t)||A0(t)||!oc(t))return{kind:"tooDeep"};return{kind:"readable",format:{schema:t,name:typeof e.name==="string"&&e.name.length>0?e.name:"response"}}}function S0(e,t){for(let n of e)for(let[r,o]of Object.entries(n))if(Y_.includes(r)&&de(o)){for(let i of Object.values(o))if(de(i))t(i,n)}else if(Q_.includes(r)&&Array.isArray(o)){for(let i of o)if(de(i))t(i,n)}else if(V_.includes(r)&&de(o))t(o,n)}function x0(e){let t=new Set,n=new WeakSet,r=[{node:e,entering:!0}];while(r.length>0){let o=r.pop();if(o===void 0)break;let i=o.node;if(!o.entering){t.delete(i),n.add(i);continue}if(t.has(i))return!0;if(n.has(i))continue;if(t.add(i),r.push({node:i,entering:!1}),Array.isArray(i)){for(let s of i)if(typeof s==="object"&&s!==null)r.push({node:s,entering:!0})}else for(let s of Object.values(i))if(typeof s==="object"&&s!==null)r.push({node:s,entering:!0})}return!1}function A0(e){let t=[e];for(let n=0;n<J_;n++){let r=[],o=new WeakSet;if(S0(t,(i)=>{if(o.has(i))return;o.add(i),r.push(i)}),r.length===0)return!1;t=r}return!0}function Wt(e,t,n){let r=t.response_format;delete t.response_format;let o=t.text!==void 0&&!de(t.text);if(o)delete t.text;let i=st(e),s=de(t.text)?t.text:void 0,a=s?.format;if($r(a)&&i.kind==="readable")return;let u=s!==void 0&&a!==void 0,l=s===void 0?void 0:{...s};if(l!==void 0)delete l.format;if(u)t.text=l;if(i.kind==="readable"){let c=i.format;return t.text={...l,format:{type:"json_schema",name:c.name,schema:c.schema,strict:!0}},`${n}:response-format-translated`}if(de(r)&&r.type==="json_object")return t.text={...l,format:{type:"json_object"}},`${n}:response-format-translated`;if(i.kind==="tooDeep")return`${n}:response-schema-too-deep`;if(r!==void 0||o||u)return`${n}:response-format-dropped`;return}function X_(e,t){if(t!==void 0)t.changed=!1,t.truncated=!1;return Gi(e,0,t??{changed:!1,truncated:!1},new Map)}var V_=["items","additionalItems","additionalProperties","contains","contentSchema","if","then","else","not","propertyNames","unevaluatedItems","unevaluatedProperties"],Q_=["anyOf","allOf","oneOf","prefixItems","items"],Y_=["properties","patternProperties","$defs","definitions","dependentSchemas","dependencies"],J_=64;function Gi(e,t,n,r){if(t>=J_)return n.truncated=!0,e;let o=r.get(t);if(o===void 0)o=new WeakMap,r.set(t,o);let i=o.get(e);if(i!==void 0)return i;let s={};o.set(e,s);for(let[a,u]of Object.entries(e)){if(Y_.includes(a)&&de(u)){let l={};for(let[c,p]of Object.entries(u))Object.defineProperty(l,c,{value:de(p)?Gi(p,t+1,n,r):p,writable:!0,enumerable:!0,configurable:!0});s[a]=l;continue}if(V_.includes(a)&&de(u)){s[a]=Gi(u,t+1,n,r);continue}if(Q_.includes(a)&&Array.isArray(u)){s[a]=u.map((l)=>de(l)?Gi(l,t+1,n,r):l);continue}s[a]=u}if(s.type==="object"&&s.additionalProperties!==!1)s.additionalProperties=!1,n.changed=!0;return s}function ic(e,t,n){if(e===void 0)return[];let r=[];for(let o of e){if(o.type==="text"){r.push({type:"text",text:o.text,cacheControl:gt(o)});continue}n(`${t}:system-${o.type}-dropped`)}return r}function Ce(e,t,n){if(e===void 0)return;return ic(e,t,n).map((r)=>r.text).join(`
|
|
1689
|
+
|
|
1690
|
+
`)}function O0(e){let t=e.split(";")[0]?.trim().toLowerCase()??"";return t.startsWith("text/")||t.endsWith("+json")||t.endsWith("+xml")||C0.has(t)}var C0=new Set(["application/json","application/x-ndjson","application/xml","application/yaml","application/x-yaml","application/toml","application/javascript","application/typescript","application/sql","application/x-sh","message/rfc822"]);function P0(e){return Buffer.from(e.data,"base64").toString("utf8")}function Ve(e,t){let n=[],r=[],o=!1;for(let i of e)if(O0(i.mediaType))n.push(P0(i));else if(t(i.mediaType))r.push(i);else o=!0;return{text:n,carried:r,dropped:o}}function ke(e,t){return[e,...t].filter((n)=>n.length>0).join(`
|
|
1691
|
+
|
|
1692
|
+
`)}var ew=Object.assign(Object.create(null),{"application/pdf":"pdf","application/rtf":"rtf","application/msword":"doc","application/vnd.ms-excel":"xls","application/vnd.ms-powerpoint":"ppt","application/vnd.openxmlformats-officedocument.wordprocessingml.document":"docx","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":"xlsx","application/vnd.openxmlformats-officedocument.presentationml.presentation":"pptx"});function sc(e){return e.filename??`file.${ew[e.mediaType]??"bin"}`}function jt(e){let{text:t,carried:n,dropped:r}=Ve(e,(i)=>(i in ew));return{parts:n.map((i)=>({type:"input_file",filename:sc(i),file_data:`data:${i.mediaType};base64,${i.data}`})),text:t,dropped:r}}var tw="You are Claude Code, Anthropic's official CLI for Claude.";function Fr(e){if(e===void 0)return{};return{cache_control:{type:e.type,...e.ttl===void 0?{}:{ttl:e.ttl}}}}function I0(e){return e.type!=="thinking"||e.signature!==void 0&&e.signature!==""}function Zi(e,t){let n=Fr(gt(e));switch(e.type){case"text":return{type:"text",text:e.text,...e.citations===void 0?{}:{citations:e.citations},...n};case"image":return{type:"image",source:{type:"base64",media_type:e.mediaType,data:e.data},...n};case"thinking":return{type:"thinking",thinking:e.text,signature:e.signature};case"toolUse":return{type:"tool_use",id:e.id,name:ji(t,e.name),input:e.input,...n};case"toolResult":{let r=Ve(e.files??[],(a)=>a==="application/pdf"),o=ke(e.content,r.text),i=r.carried.map((a)=>({type:"document",source:{type:"base64",media_type:a.mediaType,data:a.data},...a.filename!==void 0&&{title:a.filename}})),s=[...(e.images??[]).map((a)=>Zi(a,t)),...i,...(e.native??[]).map((a)=>Zi(a,t))];return{type:"tool_result",tool_use_id:e.toolUseId,content:s.length===0?o:[...o.length>0?[{type:"text",text:o}]:[],...s],is_error:e.isError,...n}}case"providerNative":if(e.provider!=="anthropic")throw new b("INTERNAL",`anthropic adapter received a ${e.provider} provider-native block`);return{...e.data,type:e.blockType,...n}}}function L0(e,t){if(e.every((n)=>n.type==="text"))return e.map((n)=>n.text).join(`
|
|
1693
|
+
`);return e.map((n)=>Zi(n,t))}function N0(e){let t=e.messages.flatMap((i)=>i.role==="system"?i.content.filter((s)=>gt(s)!==void 0):[]),n=e.messages.at(-1),r=n?.role==="system"?n.content.findLast((i)=>gt(i)!==void 0):void 0,o=r===void 0?void 0:gt(r);return{...o===void 0?{}:{retarget:o},lost:t.length>(o===void 0?0:1)}}function D0(e,t){if(e.kind==="provider"){if(e.provider!=="anthropic")throw new b("INTERNAL",`anthropic adapter received a ${e.provider} provider-defined tool`);return{type:e.type,...e.name===""?{}:{name:e.name},...e.wire,...Fr(e.cacheControl)}}return{name:ji(t,e.name),...e.description===void 0?{}:{description:e.description},input_schema:e.inputSchema,...e.options??{},...Fr(e.cacheControl)}}function M0(e,t){switch(e.type){case"auto":return{type:"auto"};case"any":return{type:"any"};case"none":return{type:"none"};case"tool":return{type:"tool",name:ji(t,e.name)}}}function ye(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}function U0(e,t){let n=e.output_config;if(!ye(n))return e;let r=Object.entries(n),o=r.filter(([i])=>i!=="effort");if(o.length===r.length)return e;if(t("anthropic:effort-unsupported"),o.length===0)return Object.fromEntries(Object.entries(e).filter(([i])=>i!=="output_config"));return{...e,output_config:Object.fromEntries(o)}}var $0=new Set(["clear_thinking_20251015"]);function F0(e){if(!ye(e))return e!==void 0;return e.type!=="adaptive"&&e.type!=="enabled"}function B0(e,t){if(!F0(e.thinking))return;let n=e.context_management;if(!ye(n)||!Array.isArray(n.edits))return;let r=n.edits.filter((o)=>!(ye(o)&&$0.has(String(o.type))));if(r.length===n.edits.length)return;if(t("anthropic:clear-thinking-unsupported"),r.length===0&&Object.keys(n).length===1){delete e.context_management;return}e.context_management={...n,edits:r}}var z0=1024;function nw(e){let t=e.vendor?.anthropic;return typeof t==="object"&&t!==null&&"cache_control"in t}var q0=new Set(["text","image","tool_use","tool_result","document"]);function rw(e){for(let t=e.length-1;t>=0;t--){let n=e[t];if(!ye(n)||!Array.isArray(n.content))continue;for(let r=n.content.length-1;r>=0;r--){let o=n.content[r];if(!ye(o))continue;if(typeof o.type==="string"&&q0.has(o.type))return o}}return}function H0(e,t,n){if(ei(t)!==0||nw(t))return;let r=0,o=(d)=>d-r>=z0,i=!1,s=Vh(t),a=s.tools,u=e.tools?.at(-1);if(u!==void 0&&o(a))u.cache_control={type:"ephemeral"},r=a,i=!0;let l=s.toolsAndSystem,c=e.system?.at(-1);if(c!==void 0&&o(l))c.cache_control={type:"ephemeral"},r=l,i=!0;if(i)n("anthropic:cache-breakpoint-added");if(!o(s.total))return;let p=rw(e.messages);if(p===void 0)return;p.cache_control={type:"ephemeral"},n("anthropic:history-cache-breakpoint-added")}function W0(e,t){let n=__(e);if(t===void 0)return n??4096;return n===void 0?t:Math.min(t,n)}function Xi(e,t,n){let r=n.cloak??null,o=[],i=(k)=>{if(!o.includes(k))o.push(k)},s=ic(e.system,"anthropic",i),a=e.vendor?.anthropic?.system,u=e.system===void 0?void 0:s.map((k,T)=>{let x=Array.isArray(a)?a[T]:void 0;return{...n.preserveSystem===!0&&ye(x)?Object.fromEntries(Object.entries(x).filter(([_e])=>_e!=="type"&&_e!=="text"&&_e!=="cache_control")):{},type:"text",text:k.text,...Fr(k.cacheControl)}});if(n.oauth&&n.preserveSystem!==!0&&u?.[0]?.text!==tw)u=[{type:"text",text:tw},...u??[]],i("anthropic:oauth-system-prefix");if(r!==null)i("anthropic:tool-names-cloaked");let l=N0(e);if(l.lost)i("anthropic:system-turn-cache-control-dropped");for(let k of e.messages)for(let T of k.content)if(T.type==="toolResult"&&T.files!==void 0){let x=Ve(T.files,(Y)=>Y==="application/pdf");if(x.text.length>0)i("anthropic:tool-result-files-inlined");if(x.dropped)i("anthropic:files-dropped")}let c={model:t,messages:e.messages.flatMap((k)=>{if(k.role!=="system"){let T=k.content.filter(I0);if(T.length!==k.content.length)i("anthropic:unsigned-thinking-dropped");if(T.length===0)return[];return[{role:k.role,content:T.map((x)=>Zi(x,r))}]}return[{role:k.role,content:L0(k.content,r)}]}),max_tokens:e.maxTokens??W0(t,n.maxOutputTokens),stream:e.stream};if(l.retarget!==void 0){let k=c.messages.at(-1);if(ye(k)&&Array.isArray(k.content)){for(let T of k.content)if(ye(T))delete T.cache_control}if(!nw(e)){let T=rw(c.messages.slice(0,-1));if(T===void 0)i("anthropic:system-turn-cache-control-dropped");else if(T.cache_control===void 0)Object.assign(T,Fr(l.retarget)),i("anthropic:system-turn-cache-control-retargeted")}}if(u!==void 0&&u.length>0)c.system=u;if(e.temperature!==void 0)c.temperature=e.temperature;if(e.stopSequences!==void 0)c.stop_sequences=e.stopSequences;if(e.tools!==void 0)c.tools=e.tools.map((k)=>D0(k,r));if(e.toolChoice!==void 0)c.tool_choice=M0(e.toolChoice,r);if(n.autoCache===!0)H0(c,e,i);if(e.reasoning!==void 0)switch(e.reasoning.mode){case"betweenTools":c.thinking={type:"between_tools"};break;case"adaptive":if(Bu(t)==="budget"){c.thinking={type:"disabled"},i("anthropic:adaptive-thinking-unsupported");break}if(c.thinking={type:"adaptive",...e.reasoning.display===void 0?{}:{display:e.reasoning.display}},e.reasoning.effort!==void 0)c.output_config={...ye(c.output_config)?c.output_config:{},effort:e.reasoning.effort};break;case"budget":c.thinking={type:"enabled",budget_tokens:e.reasoning.budgetTokens};break;case"off":c.thinking={type:"disabled"};break}let p=e.vendor?.anthropic?.output_config,d=ye(p)&&$r(p.format),m=st(e),g=!d&&m.kind==="readable"?m.format:void 0;if(g!==void 0)c.output_config={...ye(c.output_config)?c.output_config:{},format:{type:"json_schema",schema:g.schema}},i("anthropic:response-format-translated");else if(!d&&m.kind==="tooDeep")i("anthropic:response-schema-too-deep");let{thinking:h,...f}=e.vendor?.anthropic??{};if(c.thinking!==void 0&&ye(h))c.thinking={...h,...c.thinking};let y=f.output_config,_=ye(c.output_config)?c.output_config:void 0,w=!1,v=f;if(_!==void 0&&y!==void 0)if(!ye(y)){let{output_config:k,...T}=f;v=T,w=!0}else{let k=$r(y.format),{format:T,...x}=y;v={...f,output_config:{..._,...k?y:x}},w=!k&&y.format!==void 0}if(Object.assign(c,Bu(t)==="budget"?U0(v,i):v),n.preserveSystem===!0&&a!==void 0&&u!==void 0){if(!(typeof a==="string"&&u.length===1&&u[0]?.text===a&&u[0]?.cache_control===void 0))c.system=u}if(w)i("anthropic:response-format-dropped");return j0(c,i),B0(c,i),{body:c,degradations:o}}function j0(e,t){let n=e.output_config;if(!ye(n))return;let r=n.format;if(!ye(r)||!ye(r.schema))return;let o={changed:!1,truncated:!1},i=X_(r.schema,o);if(o.truncated||!oc(i)){let{format:s,...a}=n;e.output_config=a,t("anthropic:response-schema-too-deep");return}if(!o.changed)return;e.output_config={...n,format:{...r,schema:i}},t("anthropic:response-schema-closed")}var K0="https://api.anthropic.com/v1/messages",G0="2023-06-01",Z0="oauth-2025-04-20";function X0(e){if(e===null||typeof e!=="object")return null;let t=e.cloak;if(t===null||t===void 0||typeof t!=="object")return null;let{toWire:n,fromWire:r}=t;return n instanceof Map&&r instanceof Map?t:null}var ow={buildRequest(e){let t=e.credentials.accessToken!==null,n=e.request.vendor?.anthropic?.safeguards,r=Array.isArray(n)&&n.length>0,o=e.request.providerHeaders?.anthropic??{},i=t&&!r?W_(e.request):null,{body:s,degradations:a}=Xi(e.request,e.model,{oauth:t,preserveSystem:r,cloak:i,autoCache:e.autoCacheEnabled===!0,...e.maxOutputTokens===void 0?{}:{maxOutputTokens:e.maxOutputTokens}}),l=e.request.messages.find((h)=>h.role==="user")?.content.find((h)=>h.type==="text"),c={...s,...!r?{system:L_(s.system??[],l?.text??"")}:{},stream:!0},p=[["Content-Type","application/json"],["anthropic-version",o["anthropic-version"]??G0],["Accept","text/event-stream"]];for(let[h,f]of Object.entries(o))if(h.startsWith("anthropic-")&&h!=="anthropic-version"&&h!=="anthropic-beta")p.push([h,f]);let d=new Set(e.request.betas??[]),m=[...a];if(d.has(Te)){let f=$_("anthropic",e.model,t?"oauth":"apiKey")?.contextWindow;if(f!==void 0&&f<Wh)d.delete(Te),m.push("anthropic:context-1m-dropped")}if(t)p.push(["Authorization",`Bearer ${e.credentials.accessToken}`]),d.add(Z0);else if(e.credentials.apiKey!==null)p.push(["x-api-key",e.credentials.apiKey]);else throw e.fail("AUTH","anthropic credential has no token");if(d.size>0){let h=o["anthropic-beta"],f=h?.split(",").map((w)=>w.trim()).filter(Boolean),y=f?.every((w)=>d.has(w)),_=[...d].filter((w)=>!f?.includes(w));p.push(["anthropic-beta",y?[h,..._].join(","):[...d].join(",")])}let g=ge(he(Xe.headers,p),Xe.order);return{request:{url:K0,method:"POST",headers:g,body:r?JSON.stringify(ze(c,Nr)):N_(JSON.stringify(ze(c,Nr)))},decodeState:{cloak:i},degradations:m,...i===null?{}:{cloakedTools:i.toWire.size}}},decode({body:e,decodeState:t}){return Ki(we(e),{cloak:X0(t)})},classifyError(e){if(e.status!==400||!nc(e.fallback.message))return;return e.fail("FINGERPRINT_REFUSED",e.fallback.message,{degradations:e.degradations,...e.fallback.upstreamStatus===void 0?{}:{status:e.fallback.upstreamStatus},...e.fallback.retryAfterMs===void 0?{}:{retryAfterMs:e.fallback.retryAfterMs}})}};var ac=le("anthropic",wi.capabilities,ow);function Se(e){if(e===429)return"RATE_LIMIT";if(e>=400&&e<500)return"AUTH";return"UPSTREAM"}function qe(e,t){let n=typeof t==="object"&&t!==null&&typeof t.error==="string"?t.error:"";return`token endpoint rejected the request: ${/^[A-Za-z0-9_.:-]{1,64}$/.test(n)?n:`http_${e}`}`}var iw="__omni_authorization_pending";function Vi(e){return e instanceof b&&e[iw]===!0}function uc(e){let t=new b("AUTH",`authorization not yet complete: ${e}`);return t[iw]=!0,t}var cc=15000;function ue(e,t,n){return{url:e,method:"POST",headers:ge(he(t.headers,[["Content-Type",n.contentType],["Accept","application/json"],...n.extraHeaders??[]]),t.order),body:n.body}}function sw(e,t,n,r,o=cc){return{url:e,method:"GET",headers:ge(he(t.headers,[...n,["Accept","application/json"],...r]),t.order),body:"",timeoutMs:o}}function He(e,t,n){return sw(e,t,[["Authorization",`Bearer ${n.accessToken}`]],n.extraHeaders??[])}function Qi(e,t,n=[],r){return sw(e,t,[],n,r)}function q(e){try{return JSON.parse(e)}catch{return null}}function Qe(e,t){if(e===429)throw new b("RATE_LIMIT",`${t} usage endpoint is rate limited`);return e>=200&&e<300}function U(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)?e:null}function at(e,t){for(let n of t){let r=e[n];if(typeof r==="number"&&Number.isFinite(r))return r;if(typeof r==="string"&&r.trim().length>0){let o=Number(r);if(Number.isFinite(o))return o}}return null}function Yi(e,t){for(let n of t){let r=U(e[n]);if(r!==null)return r}return null}function lc(e,t,n){for(let r of t.absolute){let o=e[r];if(typeof o==="number"&&Number.isFinite(o)&&o>0)return o<1000000000000?Math.round(o*1000):Math.round(o);if(typeof o==="string"){let i=Date.parse(o);if(!Number.isNaN(i))return i}}for(let r of t.relativeSeconds??[]){let o=e[r];if(typeof o==="number"&&Number.isFinite(o)&&o>=0)return n+Math.round(o*1000)}return null}var V0=["used","used_units","usage","consumed"],Q0=["limit","limit_units","total","quota","allowed"],Y0=["utilization","used_percent","usedPercent","percent_used","percentUsed","percent"],J0=["resets_at","resetsAt","reset_at","resetAt","resetTime","reset_time","resets_at_epoch","reset"],eO=["resets_in_seconds","resetsInSeconds","reset_after_seconds","resetAfterSeconds","seconds_until_reset","resets_in"];function ut(e,t,n,r=null){let o=U(e);if(o===null)return null;let i=lc(o,{absolute:J0,relativeSeconds:eO},n),s=at(o,V0),a=at(o,Q0);if(s!==null)return{windowType:t,used:Math.max(0,s),limit:a,resetsAt:i,windowMs:r};let u=at(o,["remaining","remaining_units","left"]);if(u!==null&&a!==null)return{windowType:t,used:Math.max(0,a-u),limit:a,resetsAt:i,windowMs:r};let l=at(o,Y0);if(l!==null)return{windowType:t,used:Math.max(0,Math.min(100,l)),limit:100,resetsAt:i,windowMs:r};return null}function bt(e){let t=e.filter((n)=>n!==null);return t.length===0?null:{windows:t}}var dw="9d1c250a-e61b-44d9-88ed-5944d1962f5e",tO="https://claude.ai/oauth/authorize",nO="https://api.anthropic.com/v1/oauth/token",rO="https://platform.claude.com/oauth/code/callback",oO="org:create_api_key user:profile user:inference",pw="https://api.anthropic.com/api/oauth/usage";async function*aw(e,t){let n=yield ue(nO,Xe,{contentType:"application/json",body:JSON.stringify({...e,client_id:dw})}),r=q(n.body);if(n.status<200||n.status>=300)throw t(Se(n.status),qe(n.status,r));if(!iO(r)||typeof r.access_token!=="string")throw t("AUTH","token endpoint returned no access_token");return r}function iO(e){return typeof e==="object"&&e!==null}function uw(e,t,n){return{secrets:{accessToken:e.access_token??null,refreshToken:e.refresh_token??t,apiKey:null,idToken:null},expiresAt:typeof e.expires_in==="number"?n()+e.expires_in*1000:null,accountEmail:e.account?.email_address??null,providerData:{}}}function mw(e,t){let n=U(e);if(n===null)return null;let r=Yi(n,["usage","rate_limits","limits"])??n;return bt([ut(r.five_hour??r.fiveHour??r.session,"fiveHour",t),ut(r.seven_day??r.sevenDay??r.weekly,"weekly",t)])}var pc={kind:"pkce",supportsManualPaste:!0,async*start({redirectUri:e,pkce:t,randomState:n}){let{verifier:r,challenge:o}=t(),i=n(),s=rO,a=new URL(tO);return a.searchParams.set("code","true"),a.searchParams.set("client_id",dw),a.searchParams.set("response_type","code"),a.searchParams.set("redirect_uri",s),a.searchParams.set("scope",oO),a.searchParams.set("code_challenge",o),a.searchParams.set("code_challenge_method","S256"),a.searchParams.set("state",i),{authorizeUrl:a.toString(),pending:{verifier:r,challenge:o,state:i,redirectUri:s}}},async*exchange({code:e,pending:t,fail:n,now:r}){let[o,i]=e.split("#");if(i!==void 0&&i!==t.state)throw n("AUTH","authorization state mismatch");let s=yield*aw({grant_type:"authorization_code",code:(o??"").trim(),redirect_uri:t.redirectUri,code_verifier:t.verifier,state:t.state},n);return uw(s,null,r)},async*refresh({refreshToken:e,fail:t,now:n}){let r=yield*aw({grant_type:"refresh_token",refresh_token:e},t);return uw(r,e,n)},async*usage({secrets:e,now:t}){if(e.accessToken===null)return null;let n=yield He(pw,Xe,{accessToken:e.accessToken,extraHeaders:[["anthropic-beta","oauth-2025-04-20"],["User-Agent",`claude-code/${ln}`]]});if(!Qe(n.status,"anthropic"))return null;return mw(q(n.body),t())},async*resetCredits({secrets:e}){if(e.accessToken===null)return null;let t=yield He(aO,Xe,{accessToken:e.accessToken,extraHeaders:dc});if(!Qe(t.status,"anthropic"))return null;let n=U(q(t.body));return n===null?null:fw(n.cedar_ember??null)},async*redeemReset({secrets:e,creditId:t,requestId:n,fail:r}){if(e.accessToken===null)throw r("AUTH","credential holds no access token");let o=pO(t);if(o===null)throw r("CONFLICT","that reset credit is not available");let i=yield He(uO,Xe,{accessToken:e.accessToken,extraHeaders:dc});if(i.status<200||i.status>=300)throw r(cw(i.status),`profile read refused: http_${i.status}`,{status:i.status});let s=mO(q(i.body));if(s===null)throw r("UPSTREAM","profile names no organization");let a=yield ue(`https://api.anthropic.com/api/organizations/${s}/reset_rate_limits`,Xe,{contentType:"application/json",body:JSON.stringify({program:sO,grant_id:o,request_id:n}),extraHeaders:[["Authorization",`Bearer ${e.accessToken}`],...dc]});if(a.status<200||a.status>=300)throw r(cw(a.status),`reset claim refused: http_${a.status}`,{status:a.status});return fO(q(a.body),r)}},sO="cedar_ember",aO=`${pw}?cedar_ember=1&skip_spend=1`,uO="https://api.anthropic.com/api/oauth/profile",cO=/^[A-Za-z0-9-]{1,64}$/,dc=[["anthropic-beta","oauth-2025-04-20"]],lO=/-u(\d+)$/;function dO(e,t){return`${e}-u${t}`}function pO(e){let t=e.replace(lO,"");return t===e||t===""?null:t}function mO(e){let n=U(U(e)?.organization)?.uuid;return typeof n==="string"&&cO.test(n)?n:null}function fw(e){if(e===null)return{available:0,credits:[]};let t=U(e);if(t===null||!Array.isArray(t.grants))return null;let n=typeof t.next_grant_id==="string"?t.next_grant_id:null,r=t.at_limit===!0,o=0,i=t.grants.flatMap((s)=>{let a=U(s);if(a===null||typeof a.id!=="string")return[];let u=typeof a.resets_left==="number"?a.resets_left:0,l=u>0&&a.usable_now===!0&&a.paused!==!0&&(a.use_requires_limit!==!0||r)&&(n===null||n===a.id);if(l)o+=u;return[{id:dO(a.id,u),status:l?"available":u>0?"unavailable":"used",title:typeof a.label==="string"&&a.label!==""?a.label:null,grantedAt:lw(a.starts_at),expiresAt:lw(a.ends_at)}]});return{available:o,credits:i}}function fO(e,t){let n=U(e),r=typeof n?.result==="string"?n.result:null;if(r==="reset")return{windowsReset:Array.isArray(n?.cleared)?n.cleared.length:null};if(r==="cooldown")throw t("RATE_LIMIT","reset claim refused: cooldown");if(r==="already_used"||r==="not_limited"||r==="ineligible")throw t("CONFLICT",`reset claim refused: ${r}`);throw t("UPSTREAM","reset claim answered without a reset")}function cw(e){if(e===429)return"RATE_LIMIT";if(e===401||e===403)return"AUTH";if(e>=400&&e<500)return"CONFLICT";return"UPSTREAM"}function lw(e){if(typeof e!=="string")return null;let t=Date.parse(e);return Number.isNaN(t)?null:t}var gO=/^[A-Za-z_][A-Za-z0-9_.-]{0,127}$/;function hO(e){let t=e.replace(/[^A-Za-z0-9_.-]+/g,"_");if(!/^[A-Za-z_]/.test(t))t=`_${t}`;if(t==="_")return{base:"_tool",forced:!0};if(t.length>128)return{base:t.slice(0,122),forced:!0};return{base:t,forced:!1}}function yO(e){let t=new Set,n=new Set,r=(i)=>{(gO.test(i)?n:t).add(i)},o=new Set;for(let i of e.messages)for(let s of i.content)if(s.type==="toolUse")o.add(s.id);for(let i of e.tools??[])if(i.kind==="portable")r(i.name);for(let i of e.messages)for(let s of i.content){if(s.type==="toolUse")r(s.name);if(s.type==="toolResult"&&!o.has(s.toolUseId))r(s.toolUseId)}if(e.toolChoice?.type==="tool")r(e.toolChoice.name);return{renamable:[...t],reserved:[...n]}}function _O(e){return(Bun.hash.xxHash64(Buffer.from(e,"utf8"))&0xffffffn).toString(16).padStart(6,"0")}function gw(e){let{renamable:t,reserved:n}=yO(e),r=new Map,o=(u)=>{r.set(u,(r.get(u)??0)+1)};for(let u of n)o(u);let i=new Map;for(let u of t){let l=hO(u);i.set(u,l),o(l.base)}let s=new Map,a=new Map;for(let[u,{base:l,forced:c}]of i){let p=c||(r.get(l)??0)>1?l+_O(u):l;s.set(u,p),a.set(p,u)}return s.size===0?null:{toWire:s,fromWire:a}}function Br(e,t){return e?.toWire.get(t)??t}function hw(e,t){return e?.fromWire.get(t)??t}var yw={STOP:"endTurn",MAX_TOKENS:"maxTokens",SAFETY:"contentFilter",PROHIBITED_CONTENT:"contentFilter",SPII:"contentFilter",BLOCKLIST:"contentFilter",RECITATION:"contentFilter"},_w={RESOURCE_EXHAUSTED:"RATE_LIMIT",UNAUTHENTICATED:"AUTH",PERMISSION_DENIED:"AUTH",INVALID_ARGUMENT:"BAD_REQUEST",FAILED_PRECONDITION:"BAD_REQUEST",UNAVAILABLE:"UPSTREAM",INTERNAL:"UPSTREAM",DEADLINE_EXCEEDED:"TIMEOUT"};function wO(e){try{let t=JSON.parse(e);return typeof t==="object"&&t!==null?t:null}catch{return null}}function Ji(e){return typeof e==="number"&&Number.isFinite(e)?e:0}function ww(e){return Ae(Ji(e?.promptTokenCount),Ji(e?.candidatesTokenCount)+Ji(e?.thoughtsTokenCount),Ji(e?.cachedContentTokenCount))}async function*es(e,t={}){let n=t.cloak??null,r=!1,o=!1,i=0,s=0,a=null,u=function*(){if(a===null)return;yield{type:"blockEnd",index:a.index},a=null};for await(let l of e){if(l.data==="[DONE]")continue;let c=wO(l.data);if(c===null)continue;let p=c.error??c.response?.error;if(p!==void 0){o=!0,yield*u();let w=String(p.status??""),v=(Object.hasOwn(_w,w)?_w[w]:void 0)??"UPSTREAM";yield{type:"error",code:v,message:String(p.message??"upstream error"),retryable:ee[v]};return}let d=c.response;if(d===void 0)continue;if(d.promptFeedback?.blockReason!==void 0&&(d.candidates??[]).length===0){if(o=!0,!r)yield{type:"start",id:"",model:""};yield*u(),yield{type:"end",stopReason:"contentFilter",usage:ww(d.usageMetadata)};return}if(!r)r=!0,yield{type:"start",id:String(d.responseId??""),model:String(d.modelVersion??"")};let g=d.candidates??[];if(g.length>1){o=!0,yield*u(),yield{type:"error",code:"UPSTREAM",message:`Antigravity returned ${g.length} candidates, which cannot be represented`,retryable:!1};return}let h=g[0];for(let w of h?.content?.parts??[]){let v=w.functionCall;if(v!==void 0&&typeof v.name==="string"){yield*u();let T=i++;yield{type:"blockStart",index:T,block:{type:"toolUse",id:typeof v.id==="string"&&v.id.length>0?v.id:`fc_${s}`,name:hw(n,v.name)}},yield{type:"blockDelta",index:T,delta:{type:"toolJson",partial:JSON.stringify(v.args??{})}},yield{type:"blockEnd",index:T},s++;continue}if(typeof w.text!=="string")continue;let k=w.thought===!0?"thinking":"text";if(a===null||a.kind!==k)yield*u(),a={kind:k,index:i++},yield{type:"blockStart",index:a.index,block:{type:k}};yield{type:"blockDelta",index:a.index,delta:k==="thinking"?{type:"thinking",text:w.text}:{type:"text",text:w.text}}}let f=h?.finishReason;if(f===void 0||f===null)continue;o=!0,yield*u();let y=String(f);if(y==="MALFORMED_FUNCTION_CALL"){yield{type:"error",code:"BAD_REQUEST",message:"the model emitted a malformed function call",retryable:!1};return}let _=Object.hasOwn(yw,y)?yw[y]:void 0;if(_===void 0){yield{type:"error",code:"UPSTREAM",message:`unrecognized Antigravity finish reason "${y}"`,retryable:!1};return}yield{type:"end",stopReason:s>0?"toolUse":_,usage:ww(d.usageMetadata)};return}if(!o)yield*u(),yield{type:"error",code:"UPSTREAM",message:"upstream stream ended before the response finished",retryable:ee.UPSTREAM}}var bO="skip_thought_signature_validator";function kO(e){let t=new Map;for(let n of e.messages)for(let r of n.content)if(r.type==="toolUse")t.set(r.id,r.name);return t}function EO(e){let t=[];for(let n of e){let r=t[t.length-1];if(r!==void 0&&r.role===n.role)r.parts.push(...n.parts);else t.push({role:n.role,parts:[...n.parts]})}return t}function vO(e,t){let n=e[0];if(n===void 0)return e;if(!(n.role==="model"||n.parts[0]!==void 0&&("functionResponse"in n.parts[0])))return e;return t("antigravity:opening-turn-added"),[{role:"user",parts:[{text:""}]},...e]}function TO(e,t){if(e[e.length-1]?.role!=="model")return e;return t("antigravity:closing-turn-added"),[...e,{role:"user",parts:[{text:" "}]}]}var RO=(e)=>("cacheControl"in e)&&e.cacheControl!==void 0,SO="antigravity:tool-schema-pruned",xO="antigravity:agent-preamble-dropped",AO="antigravity:billing-header-dropped";function OO(e,t){let n=e.split(/(?:\r?\n){2,}/),r=!1,o=!1,i=n.filter((s)=>{let a=s.trim();if(a===qi)return r=!0,!1;if(a.startsWith(Mr))return o=!0,!1;return!0});if(i.length===n.length)return e;if(r)t(xO);if(o)t(AO);return i.join(`
|
|
1694
|
+
|
|
1695
|
+
`)}var bw=5,CO=65535;function PO(e,t){let n=(r,o)=>{if(typeof r==="number")return Number.isFinite(r)&&(!o||Number.isInteger(r));if(typeof r!=="string")return!1;if(o)return/^-?\d+$/.test(r);return r.trim().length>0&&Number.isFinite(Number(r))};switch(e){case"free":return t;case"text":return typeof t==="string"?t:void 0;case"texts":{if(typeof t==="string")return t;if(!Array.isArray(t))return;let r=t.filter((o)=>typeof o==="string");return r.length===0?void 0:r}case"int":return n(t,!0)?t:void 0;case"double":return n(t,!1)?t:void 0;case"walked":return t}}var IO=new Map([["type","walked"],["items","walked"],["properties","walked"],["anyOf","walked"],["allOf","walked"],["additionalProperties","walked"],["format","text"],["title","text"],["description","text"],["pattern","text"],["enum","texts"],["required","texts"],["propertyOrdering","texts"],["minItems","int"],["maxItems","int"],["minLength","int"],["maxLength","int"],["minProperties","int"],["maxProperties","int"],["minimum","double"],["maximum","double"],["default","free"],["example","free"],["nullable","free"]]),kw=new Set(["string","number","integer","boolean","array","object","null","type_unspecified"]),LO=24,mc=(e)=>typeof e==="object"&&e!==null&&!Array.isArray(e);function fc(e,t,n=0){let r={},o=()=>t(SO),i=(u)=>{if(!mc(u)||n>=LO){o();return}return fc(u,t,n+1)};for(let[u,l]of Object.entries(e)){if(u==="const"){if(o(),typeof l==="string"&&!Object.hasOwn(e,"enum"))r.enum=[l];continue}let c=IO.get(u);if(c===void 0){o();continue}switch(u){case"type":{if(typeof l==="string"){if(kw.has(l.toLowerCase()))r.type=l;else o();break}let p=Array.isArray(l)?l.filter((m)=>typeof m==="string"&&kw.has(m.toLowerCase())):[],d=p.filter((m)=>m.toLowerCase()!=="null");if(!Array.isArray(l)||p.length!==l.length||d.length!==1)o();if(d[0]!==void 0)r.type=d[0];if(p.length!==d.length)r.nullable=!0;break}case"properties":{if(!mc(l)){o();break}let p=[];for(let[d,m]of Object.entries(l)){if(d.length===0){o();continue}let g=i(m);if(g!==void 0)p.push([d,g])}r.properties=Object.fromEntries(p);break}case"items":{if(Array.isArray(l)){o();let d=i(l[0]);if(d!==void 0)r.items=d;break}let p=i(l);if(p!==void 0)r.items=p;break}case"anyOf":case"allOf":{if(!Array.isArray(l)){o();break}let p=[];for(let d of l){let m=i(d);if(m!==void 0)p.push(m)}r[u]=p;break}case"additionalProperties":{if(typeof l==="boolean"){r[u]=l;break}let p=i(l);if(p!==void 0)r[u]=p;break}default:{let p=PO(c,l);if(p===void 0)o();else{if(Array.isArray(p)&&Array.isArray(l)&&p.length!==l.length)o();r[u]=p}}}}let s=typeof r.type==="string"?r.type.toLowerCase():void 0,a=(u,l)=>{if(!l.some((c)=>r[c]!==void 0))return;if(s===u)return;if(s===void 0){r.type=u;return}o();for(let c of l)delete r[c]};a("object",["properties","required","propertyOrdering"]),a("array",["items"]);for(let u of["required","propertyOrdering"]){let l=r[u];if(!Array.isArray(l))continue;let c=mc(r.properties)?r.properties:{},p=l.filter((d)=>typeof d==="string"&&Object.hasOwn(c,d));if(p.length===l.length)continue;if(o(),p.length===0)delete r[u];else r[u]=p}if(r.type==="array"&&r.items===void 0)o(),delete r.type;return r}function NO(e,t){switch(e.type){case"auto":return{functionCallingConfig:{mode:"AUTO"}};case"any":return{functionCallingConfig:{mode:"ANY"}};case"none":return{functionCallingConfig:{mode:"NONE"}};case"tool":return{functionCallingConfig:{mode:"ANY",allowedFunctionNames:[Br(t,e.name)]}}}}function ts(e,t,n){let r=n.cloak??null,o=[],i=(h)=>{if(!o.includes(h))o.push(h)},s=kO(e),a=[];for(let h of e.messages){let f=[];if(h.role==="system")i("antigravity:system-turn-as-user");let y=h.role==="assistant"?"model":"user";for(let _ of h.content){if(RO(_))i("antigravity:cache-control-dropped");switch(_.type){case"text":f.push({text:_.text});break;case"image":f.push({inlineData:{mimeType:_.mediaType,data:_.data}});break;case"thinking":i("antigravity:thinking-dropped");break;case"toolUse":f.push({thoughtSignature:bO,functionCall:{name:Br(r,_.name),args:_.input}});break;case"toolResult":{if(_.native!==void 0)i("antigravity:provider-native-block-dropped");let w=s.get(_.toolUseId);if(w===void 0)i("antigravity:tool-result-unmatched");if(_.isError===!0)i("antigravity:tool-result-error-flag-dropped");let v=Ve(_.files??[],()=>!0);if(v.text.length>0)i("antigravity:tool-result-files-inlined");f.push({functionResponse:{name:Br(r,w??_.toolUseId),response:{output:ke(_.content,v.text)}}});for(let k of _.images??[])f.push({inlineData:{mimeType:k.mediaType,data:k.data}});for(let k of v.carried)f.push({inlineData:{mimeType:k.mediaType,data:k.data}});y="user";break}case"providerNative":i("antigravity:provider-native-block-dropped");break}}if(f.length>0)a.push({role:y,parts:f})}let u={contents:TO(vO(EO(a),i),i)},l=Ce(e.system,"antigravity",i),c=l===void 0?void 0:OO(l,i);if(c!==void 0&&c.trim().length>0)u.systemInstruction={parts:[{text:c}]};let p={};if(e.maxTokens!==void 0)if(e.maxTokens>0)p.maxOutputTokens=e.maxTokens;else i("antigravity:max-tokens-dropped");if(e.temperature!==void 0){let h=Math.min(Math.max(e.temperature,0),2);if(h!==e.temperature)i("antigravity:temperature-clamped");p.temperature=h}if(e.stopSequences!==void 0){if(p.stopSequences=e.stopSequences.slice(0,bw),e.stopSequences.length>bw)i("antigravity:stop-sequences-dropped")}if(e.reasoning!==void 0)switch(e.reasoning.mode){case"betweenTools":i("antigravity:reasoning-between-tools-as-off"),p.thinkingConfig={thinkingBudget:0,includeThoughts:!1};break;case"off":p.thinkingConfig={thinkingBudget:0,includeThoughts:!1};break;case"budget":{let h=e.reasoning.budgetTokens,f=Math.min(Math.max(h,-1),CO);if(f!==h)i("antigravity:thinking-budget-clamped");p.thinkingConfig={thinkingBudget:f,includeThoughts:f!==0}}break;case"adaptive":if(p.thinkingConfig={includeThoughts:e.reasoning.display!=="omitted"&&e.reasoning.display!=="updates"},e.reasoning.effort!==void 0)i("antigravity:reasoning-effort-dropped");break}let d=st(e);if(d.kind==="readable"){let h=d.format;p.responseSchema=fc(h.schema,i),i("antigravity:response-format-translated")}else if(d.kind==="tooDeep")i("antigravity:response-schema-too-deep");let m=p.maxOutputTokens;if(m!==void 0&&m>bi)p.maxOutputTokens=bi,i("antigravity:max-tokens-clamped");let g=p.thinkingConfig?.thinkingBudget;if(g!==void 0&&g>0){let h=p.maxOutputTokens;if(h===void 0||h<=g)p.maxOutputTokens=Math.min(g+1,bi)}if(Object.keys(p).length>0)u.generationConfig=p;if(e.tools!==void 0){let h=e.tools.filter((_)=>_.kind==="portable");if(h.length!==e.tools.length)i("antigravity:provider-tool-dropped");let f=new Set,y=[];for(let _ of h){let w=Br(r,_.name);if(f.has(w)){i("antigravity:duplicate-tool-dropped");continue}f.add(w),y.push({name:w,description:_.description,inputSchema:_.inputSchema})}if(r!==null&&r.toWire.size>0)i("antigravity:tool-name-renamed");if(y.length>0)u.tools=[{functionDeclarations:y.map((_)=>({name:_.name,description:_.description,parameters:fc(_.inputSchema,i)}))}]}if(e.toolChoice!==void 0)u.toolConfig=NO(e.toolChoice,r);return Object.assign(u,e.vendor?.antigravity??{}),{body:{project:n.project,requestId:n.requestId,model:t,userAgent:"antigravity",requestType:"agent",request:u},degradations:o}}var DO="https://daily-cloudcode-pa.googleapis.com/v1internal:streamGenerateContent?alt=sse",MO="omni-antigravity-req";function UO(e){let t=Bun.CryptoHasher.hash("sha256",`${MO}:${e}`,"hex"),n=(Number.parseInt(t[16],16)&3|8).toString(16);return[t.slice(0,8),t.slice(8,12),`4${t.slice(13,16)}`,`${n}${t.slice(17,20)}`,t.slice(20,32)].join("-")}function $O(e){let t=e.credentials.providerData.projectId,n=typeof t==="string"?t.trim():"";if(n.length===0)throw e.fail("AUTH","antigravity credential has no Cloud Code project; reconnect the account");return n}function FO(e){if(e===null||typeof e!=="object")return null;let t=e.cloak;if(t===null||t===void 0||typeof t!=="object")return null;let{toWire:n,fromWire:r}=t;return n instanceof Map&&r instanceof Map?t:null}var Ew={buildRequest(e){let t=e.credentials.accessToken;if(t===null||t.length===0)throw e.fail("AUTH","antigravity credential has no access token");let n=$O(e),r=e.requestId!==void 0&&e.requestId.length>0?e.requestId:UO(`${e.model}:${n}`),o=gw(e.request),{body:i,degradations:s}=ts(e.request,e.model,{project:n,requestId:r,cloak:o}),a=[["Authorization",`Bearer ${t}`]],u=ge(he(ot.headers,a),ot.order);return{request:{url:DO,method:"POST",headers:u,body:JSON.stringify(i)},decodeState:{cloak:o},degradations:s,...o===null?{}:{cloakedTools:o.toWire.size}}},decode({body:e,decodeState:t}){return es(we(e),{cloak:FO(t)})}};var gc=le("antigravity",Ei.capabilities,Ew);var vw="omnigateway-public-v1";function Cw(e){let t="";for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]^vw.charCodeAt(n%vw.length));return t}var Pw=Cw([94,93,89,88,87,81,66,85,65,81,76,20,65,88,22,1,1,16,94,31,95,93,5,92,88,11,2,6,0,69,82,76,91,4,26,14,3,3,11,25,17,5,95,94,11,25,73,0,4,21,4,79,30,66,31,18,14,9,28,16,72,4,82,0,3,26,12,9,21,90,6,24,12]),hc=Pw,Tw=Cw([40,34,45,58,55,57,89,46,66,89,63,122,34,65,90,90,37,7,97,60,0,2,33,44,81,20,57,55,81,13,87,8,105,49,19]),BO="https://accounts.google.com/o/oauth2/v2/auth",zO="https://oauth2.googleapis.com/token",qO="https://www.googleapis.com/oauth2/v1/userinfo?alt=json",yc="https://cloudcode-pa.googleapis.com/v1internal",HO=`${yc}:loadCodeAssist`,WO=`${yc}:onboardUser`,jO=`${yc}:retrieveUserQuotaSummary`,KO=["https://www.googleapis.com/auth/cloud-platform","https://www.googleapis.com/auth/userinfo.email","https://www.googleapis.com/auth/userinfo.profile","https://www.googleapis.com/auth/cclog","https://www.googleapis.com/auth/experimentsandconfigs"].join(" "),Rw={ideType:"ANTIGRAVITY"},GO="legacy-tier";function ZO(e){let t=U(e);if(t===null||typeof t.access_token!=="string")return null;return{accessToken:t.access_token,refreshToken:typeof t.refresh_token==="string"?t.refresh_token:null,expiresIn:typeof t.expires_in==="number"?t.expires_in:null}}async function*Sw(e,t){let n=yield ue(zO,ot,{contentType:"application/x-www-form-urlencoded",body:new URLSearchParams(e).toString()}),r=q(n.body);if(n.status<200||n.status>=300)throw t(Se(n.status),qe(n.status,r));let o=ZO(r);if(o===null)throw t("AUTH","token endpoint returned no access_token");return o}function xw(e){let t=U(e);if(t===null)return"";let n=t.cloudaicompanionProject;if(typeof n==="string")return n.trim();let o=U(n)?.id;return typeof o==="string"?o.trim():""}function XO(e){let t=U(e),n=t?.allowedTiers;if(Array.isArray(n))for(let o of n){let i=U(o);if(i?.isDefault===!0&&typeof i.id==="string")return i.id}let r=U(t?.currentTier);return typeof r?.id==="string"?r.id:GO}function Aw(e,t,n){return ue(e,ot,{contentType:"application/json",body:JSON.stringify(n),extraHeaders:[["Authorization",`Bearer ${t}`]]})}async function*VO(e){let t=yield Aw(HO,e,{metadata:Rw}),n=t.status>=200&&t.status<300?q(t.body):null,r=XO(n),o=xw(n);if(o.length>0)return{projectId:o,tier:r};let i=yield Aw(WO,e,{tier_id:r,metadata:Rw});if(i.status<200||i.status>=300)return{projectId:"",tier:r};let s=U(q(i.body));return{projectId:xw(s?.response),tier:r}}async function*QO(e){let t=yield He(qO,ot,{accessToken:e});if(t.status<200||t.status>=300)return null;let r=U(q(t.body))?.email;return typeof r==="string"&&r.trim().length>0?r:null}function Ow(e,t,n,r,o){return{secrets:{accessToken:e.accessToken,refreshToken:e.refreshToken??t,apiKey:null,idToken:null},expiresAt:e.expiresIn===null?null:o()+e.expiresIn*1000,accountEmail:n,providerData:r}}var YO=/\bgemini\b/;function JO(e){let t=`${String(e.bucketId??"")} ${String(e.displayName??"")}`.toLowerCase();if(/\bweekly\b|\bweek\b/.test(t))return"weekly";if(/\b5\s*-?\s*hour|\b5h\b|\bfive\s*hour/.test(t))return"fiveHour";return null}function eC(e){let t=U(e);if(t===null)return[];if(Array.isArray(t.groups))return t.groups;let n=U(t.quotaSummary)?.groups;return Array.isArray(n)?n:[]}function Iw(e,t){let n=[];for(let r of eC(e)){let o=U(r);if(o===null)continue;if(!YO.test(String(o.displayName??"").toLowerCase()))continue;let i=Array.isArray(o.buckets)?o.buckets:[];for(let s of i){let a=U(s);if(a===null||a.disabled===!0)continue;let u=JO(a);if(u===null)continue;let l=at(a,["remainingFraction"]);if(l===null)continue;let c=Math.max(0,Math.min(1,l));n.push({windowType:u,used:Math.round((1-c)*100),limit:100,resetsAt:lc(a,{absolute:["resetTime"]},t),windowMs:null})}}return bt(n)}var _c={kind:"pkce",supportsManualPaste:!0,async*start({redirectUri:e,randomState:t,pkce:n}){let r=t(),{verifier:o,challenge:i}=n(),s=new URL(BO);return s.searchParams.set("client_id",hc),s.searchParams.set("response_type","code"),s.searchParams.set("redirect_uri",e),s.searchParams.set("scope",KO),s.searchParams.set("state",r),s.searchParams.set("access_type","offline"),s.searchParams.set("prompt","consent"),s.searchParams.set("code_challenge",i),s.searchParams.set("code_challenge_method","S256"),{authorizeUrl:s.toString(),pending:{verifier:o,challenge:i,state:r,redirectUri:e}}},async*exchange({code:e,pending:t,fail:n,now:r}){let[o,i]=e.split("#");if(i!==void 0&&i!==t.state)throw n("AUTH","authorization state mismatch");let s=yield*Sw({grant_type:"authorization_code",client_id:hc,client_secret:Tw,code:(o??"").trim(),redirect_uri:t.redirectUri,code_verifier:t.verifier},n),a=yield*QO(s.accessToken),{projectId:u,tier:l}=yield*VO(s.accessToken);return Ow(s,null,a,{projectId:u,tier:l},r)},async*refresh({refreshToken:e,providerData:t,fail:n,now:r}){let o=yield*Sw({grant_type:"refresh_token",client_id:hc,client_secret:Tw,refresh_token:e},n);return Ow(o,e,null,t,r)},async*usage({secrets:e,providerData:t,now:n}){let r=typeof t.projectId==="string"?t.projectId:"";if(r.trim().length===0)return null;let o=yield{...ue(jO,ot,{contentType:"application/json",body:JSON.stringify({project:r}),extraHeaders:[["Authorization",`Bearer ${e.accessToken}`]]}),timeoutMs:cc};if(!Qe(o.status,"antigravity"))return null;return Iw(q(o.body),n())}};function wc(){return{agentId:globalThis.crypto.randomUUID()}}function Lw(e){let t=e.agentId;if(typeof t!=="string"||t.length===0)return[];return[["x-grok-agent-id",t]]}var bc="b1a00492-073a-47ea-816f-4c329264a828",tC="https://auth.x.ai",nC=`${tC}/.well-known/openid-configuration`,rC=["openid","profile","email","offline_access","grok-cli:access","api:access","conversations:read","conversations:write","workspaces:read","workspaces:write"].join(" "),kc="x.ai";function vc(e){return typeof e==="object"&&e!==null}function Nw(e,t,n){if(typeof e!=="string"||e.trim().length===0)throw n("UPSTREAM",`discovery document has no ${t}`);let r;try{r=new URL(e)}catch{throw n("UPSTREAM",`discovery document has an unusable ${t}`)}let o=r.hostname;if(r.protocol!=="https:"||o!==kc&&!o.endsWith(`.${kc}`))throw n("UPSTREAM",`discovery document ${t} is not an ${kc} https url`);return r.toString()}async function*Ec(e){let t=yield Qi(nC,Pt);if(t.status<200||t.status>=300)throw e("UPSTREAM",`discovery endpoint returned http_${t.status}`);let n=q(t.body);if(!vc(n))throw e("UPSTREAM","discovery endpoint returned an unusable response");return{authorizeUrl:Nw(n.authorization_endpoint,"authorization_endpoint",e),tokenUrl:Nw(n.token_endpoint,"token_endpoint",e)}}function oC(e){if(!vc(e)||typeof e.access_token!=="string")return null;return{accessToken:e.access_token,refreshToken:typeof e.refresh_token==="string"?e.refresh_token:null,expiresIn:typeof e.expires_in==="number"?e.expires_in:null,idToken:typeof e.id_token==="string"?e.id_token:null}}function iC(e){let t=typeof e==="string"?e.split("."):[],n=t[1];if(t.length!==3||n===void 0||n.length===0)return null;try{let r=JSON.parse(Buffer.from(n,"base64url").toString("utf8"));if(!vc(r))return null;return typeof r.email==="string"&&r.email.trim().length>0?r.email:null}catch{return null}}async function*Dw(e,t,n){let r=yield ue(e,Pt,{contentType:"application/x-www-form-urlencoded",body:new URLSearchParams(t).toString()}),o=q(r.body);if(r.status<200||r.status>=300)throw n(Se(r.status),qe(r.status,o));let i=oC(o);if(i===null)throw n("AUTH","token endpoint returned no access_token");return i}function sC(e){let t=e.agentId;return typeof t==="string"&&t.trim().length>0?t:wc().agentId}function Mw(e,t,n,r){return{secrets:{accessToken:e.accessToken,refreshToken:e.refreshToken??t,apiKey:null,idToken:e.idToken},expiresAt:e.expiresIn===null?null:r()+e.expiresIn*1000,accountEmail:iC(e.idToken),providerData:{agentId:n}}}var Tc={kind:"pkce",supportsManualPaste:!0,async*start({redirectUri:e,fail:t,pkce:n,randomState:r}){let{authorizeUrl:o}=yield*Ec(t),{verifier:i,challenge:s}=n(),a=r(),u=new URL(o);return u.searchParams.set("response_type","code"),u.searchParams.set("client_id",bc),u.searchParams.set("redirect_uri",e),u.searchParams.set("scope",rC),u.searchParams.set("code_challenge",s),u.searchParams.set("code_challenge_method","S256"),u.searchParams.set("state",a),u.searchParams.set("nonce",r()),u.searchParams.set("referrer","grok-build"),{authorizeUrl:u.toString(),pending:{verifier:i,challenge:s,state:a,redirectUri:e}}},async*exchange({code:e,pending:t,fail:n,now:r}){let[o,i]=e.split("#");if(i!==void 0&&i!==t.state)throw n("AUTH","authorization state mismatch");let{tokenUrl:s}=yield*Ec(n),a=yield*Dw(s,{grant_type:"authorization_code",code:(o??"").trim(),redirect_uri:t.redirectUri,client_id:bc,code_verifier:t.verifier},n);return Mw(a,null,wc().agentId,r)},async*refresh({refreshToken:e,providerData:t,fail:n,now:r}){let{tokenUrl:o}=yield*Ec(n),i=yield*Dw(o,{grant_type:"refresh_token",client_id:bc,refresh_token:e},n);return Mw(i,e,sC(t),r)}};var Uw="https://api.kilo.ai/api/device-auth/codes",aC="https://api.kilo.ai/api/profile",$w="https://kilo.ai",uC=300,cC=3;function lC(e){return typeof e==="object"&&e!==null}function ns(e){return lC(e)?e:null}function Mn(e,t){let n=e[t];return typeof n==="string"&&n.trim().length>0?n:null}function Fw(e,t){let n=e[t];return typeof n==="number"&&Number.isFinite(n)&&n>0?n:null}function dC(e,t){let n=ns(e),r=n===null?null:Mn(n,"code");if(n===null||r===null)throw t("AUTH","device code endpoint returned an unusable response");return{code:r,verificationUrl:Mn(n,"verificationUrl")??$w,expiresIn:Fw(n,"expiresIn")??uC}}async function*pC(e){try{let t=yield He(aC,yt,{accessToken:e});if(t.status<200||t.status>=300)return null;let r=ns(q(t.body))?.organizations;if(!Array.isArray(r))return null;let o=ns(r[0]);return o===null?null:Mn(o,"id")}catch{return null}}var Rc={kind:"device",supportsManualPaste:!1,needsDeviceId:!1,async*start(){return{authorizeUrl:$w,pending:{verifier:"",challenge:"",state:"",redirectUri:""}}},async*begin({fail:e,now:t}){let n=yield ue(Uw,yt,{contentType:"application/json",body:""}),r=q(n.body);if(n.status===429)throw e("RATE_LIMIT","kilo has too many pending device authorizations; wait for one to expire and retry");if(n.status<200||n.status>=300)throw e(Se(n.status),`kilo refused a device code: http_${n.status}`);let o=dC(r,e);return{authorizeUrl:o.verificationUrl,userCode:o.code,pending:{verifier:"",challenge:"",state:"",redirectUri:"",deviceCode:o.code,interval:cC,extra:{expiresAt:t()+o.expiresIn*1000}}}},async*exchange({pending:e,fail:t,keepPolling:n,now:r}){let o=e.deviceCode;if(o===void 0)throw t("INTERNAL","kilo exchange requires a pending flow produced by begin()");let i=e.extra===void 0?null:Fw(e.extra,"expiresAt");if(i!==null&&r()>=i)throw t("AUTH","kilo device code expired; start the authorization again");let s=yield Qi(`${Uw}/${encodeURIComponent(o)}`,yt);if(s.status===202)throw n("http_202");if(s.status===403)throw t("AUTH","kilo authorization was denied");if(s.status===410)throw t("AUTH","kilo device code expired; start the authorization again");if(s.status<200||s.status>=300)throw t(Se(s.status),`kilo refused the device code poll: http_${s.status}`);let a=ns(q(s.body));if(a===null)throw n("http_200");if(Mn(a,"status")!=="approved")throw n("http_200");let u=Mn(a,"token");if(u===null)throw t("AUTH","kilo approved the authorization without a token");let l=yield*pC(u);return{secrets:{accessToken:u,refreshToken:null,apiKey:null,idToken:null},expiresAt:null,accountEmail:Mn(a,"userEmail"),providerData:l===null?{}:{orgId:l}}},async*refresh({fail:e}){throw e("AUTH","kilo tokens cannot be refreshed; reconnect the kilo account to get a new one")}};function zr(){return{deviceId:globalThis.crypto.randomUUID(),deviceName:"MacBook-Pro",deviceModel:"MacBookPro18,3",osVersion:"15.3.1"}}function qr(e){let t=e.deviceId;if(typeof t!=="string"||t.length===0)return[];let n=(r)=>typeof r==="string"&&r.length>0?r:"unknown";return[["X-Msh-Device-Id",t],["X-Msh-Device-Name",n(e.deviceName)],["X-Msh-Device-Model",n(e.deviceModel)],["X-Msh-Os-Version",n(e.osVersion)]]}var mC="17e5f671-d194-4dfb-9706-5516cb48c098",fC="https://auth.kimi.com/api/oauth/device_authorization",Bw="https://auth.kimi.com/api/oauth/token",gC="https://api.kimi.com/coding/v1/usages",hC=5,yC=new Set(["authorization_pending","slow_down"]);function _C(e){return typeof e==="object"&&e!==null}function Ac(e){return _C(e)?e:null}function Kt(e,t){let n=e[t];return typeof n==="string"&&n.trim().length>0?n:null}function Hw(e,t){let n=e[t];return typeof n==="number"&&Number.isFinite(n)&&n>0?n:null}function zw(e,t){let n=Ac(e);if(n===null)throw t("AUTH","token endpoint returned no access_token");let r=Kt(n,"access_token");if(r===null)throw t("AUTH","token endpoint returned no access_token");return{accessToken:r,refreshToken:Kt(n,"refresh_token"),expiresIn:Hw(n,"expires_in"),email:Kt(n,"email")}}function wC(e,t){let n=Ac(e);if(n===null)throw t("AUTH","device code endpoint returned an unusable response");let r=Kt(n,"device_code"),o=Kt(n,"user_code");if(r===null||o===null)throw t("AUTH","device code endpoint returned an unusable response");return{deviceCode:r,userCode:o,verificationUri:Kt(n,"verification_uri_complete")??Kt(n,"verification_uri")??"https://www.kimi.com/device",interval:Hw(n,"interval")??hC}}async function*Sc(e,t,n,r,o){let i=yield ue(e,It,{contentType:"application/x-www-form-urlencoded",body:new URLSearchParams({...t,client_id:mC}).toString(),extraHeaders:qr(n)}),s=q(i.body);if(i.status>=200&&i.status<300)return s;let a=Ac(s),u=a===null?`http_${i.status}`:Kt(a,"error")??`http_${i.status}`;if(yC.has(u))throw o(u);throw r(Se(i.status),qe(i.status,s))}function xc(e){if(typeof e?.deviceId==="string"&&e.deviceId.length>0){let t=zr(),n=(r,o)=>{let i=e[r];return typeof i==="string"&&i.length>0?i:o};return{deviceId:e.deviceId,deviceName:n("deviceName",t.deviceName),deviceModel:n("deviceModel",t.deviceModel),osVersion:n("osVersion",t.osVersion)}}return zr()}function bC(e){return{...zr(),deviceId:e}}function qw(e,t,n,r){return{secrets:{accessToken:e.accessToken,refreshToken:e.refreshToken??n,apiKey:null,idToken:null},expiresAt:e.expiresIn===null?null:r()+e.expiresIn*1000,accountEmail:e.email,providerData:{...t}}}function Ww(e,t){let n=U(e);if(n===null)return null;return bt([ut(n.usage??n.Usage,"weekly",t)])}var Oc={kind:"device",needsDeviceId:!0,supportsManualPaste:!1,async*start(){return{authorizeUrl:"https://www.kimi.com/device",pending:{verifier:"",challenge:"",state:"",redirectUri:"",extra:{...zr()}}}},async*begin({deviceId:e,fail:t,keepPolling:n}){if(e.trim().length===0)throw t("INTERNAL","kimi begin requires a non-blank deviceId");let r=bC(e),o=wC(yield*Sc(fC,{},r,t,n),t);return{authorizeUrl:o.verificationUri,userCode:o.userCode,pending:{verifier:"",challenge:"",state:"",redirectUri:"",deviceCode:o.deviceCode,interval:o.interval,extra:{...r}}}},async*exchange({pending:e,fail:t,keepPolling:n,now:r}){if(e.deviceCode===void 0)throw t("INTERNAL","kimi exchange requires a pending flow produced by begin()");let o=xc(e.extra),i=zw(yield*Sc(Bw,{grant_type:"urn:ietf:params:oauth:grant-type:device_code",device_code:e.deviceCode,device_id:o.deviceId},o,t,n),t);return qw(i,o,null,r)},async*refresh({refreshToken:e,providerData:t,fail:n,keepPolling:r,now:o}){let i=xc(t),s=zw(yield*Sc(Bw,{grant_type:"refresh_token",refresh_token:e,device_id:i.deviceId},i,n,r),n);return qw(s,i,e,o)},async*usage({secrets:e,providerData:t,now:n}){if(e.accessToken===null)return null;let r=xc(t),o=yield He(gC,It,{accessToken:e.accessToken,extraHeaders:qr(r)});if(!Qe(o.status,"kimi"))return null;return Ww(q(o.body),n())}};function Cc(e){if(typeof e!=="string"||e.length===0)return null;let t;try{t=new URL(e)}catch{return null}if(t.protocol!=="https:")return null;let n=t.hostname;if(n!=="meta.ai"&&!n.endsWith(".meta.ai"))return null;return`${t.origin}${t.pathname}`.replace(/\/$/,"")}function jw(e){return`${Cc(e.baseUrl)??"https://api.meta.ai/v1"}/responses`}var Vw="https://auth.meta.com",kC=`${Vw}/oidc/device/authorization/`,Kw=`${Vw}/oidc/device/token/`,Qw="https://api.meta.ai/muse-code/key",EC="1031625952748946",vC="urn:ietf:params:oauth:grant-type:device_code",Yw="https://auth.meta.com/oauth/device/",TC=5,RC=new Set(["authorization_pending","slow_down"]);function SC(e){return typeof e==="object"&&e!==null}function rs(e){return SC(e)?e:null}function kt(e,t){let n=e[t];return typeof n==="string"&&n.trim().length>0?n:null}function Jw(e,t){let n=e[t];return typeof n==="number"&&Number.isFinite(n)&&n>0?n:null}function Gw(e,t){let n=rs(e),r=n===null?null:kt(n,"access_token");if(n===null||r===null)throw t("AUTH","token endpoint returned no access_token");return{accessToken:r,refreshToken:kt(n,"refresh_token"),expiresIn:Jw(n,"expires_in")}}function xC(e,t){let n=rs(e),r=n===null?null:kt(n,"device_code"),o=n===null?null:kt(n,"user_code");if(n===null||r===null||o===null)throw t("AUTH","device authorization response missing user_code or verification_uri");return{deviceCode:r,userCode:o,verificationUri:kt(n,"verification_uri_complete")??kt(n,"verification_uri")??Yw,interval:Jw(n,"interval")??TC}}async function*Pc(e,t,n,r){let o=yield ue(e,_t,{contentType:"application/x-www-form-urlencoded",body:new URLSearchParams({...t,client_id:EC}).toString(),extraHeaders:[["Accept","application/json"]]}),i=q(o.body);if(o.status>=200&&o.status<300)return i;let s=rs(i),a=s===null?`http_${o.status}`:kt(s,"error")??`http_${o.status}`;if(RC.has(a))throw r(a);if(a==="expired_token")throw n("AUTH","muse device code expired; start the authorization again");throw n(Se(o.status),qe(o.status,i))}async function*Zw(e,t){let n=yield ue(Qw,_t,{contentType:"application/json",body:"{}",extraHeaders:[["Authorization",`Bearer ${e}`],["Accept","application/json"]]}),r=q(n.body);if(n.status<200||n.status>=300){if(n.status===401||n.status===403)throw t("AUTH","muse rejected the saved login; reconnect the account or use a different one");if(n.status===429)throw t("RATE_LIMIT",`muse rate limited the key mint: http_${n.status}`);throw t("UPSTREAM",`muse key mint failed: http_${n.status}`)}let o=rs(r);if(o===null)throw t("UPSTREAM","muse key mint returned an unusable response");if(o.require_payment===!0)throw t("AUTH","muse requires a payment method on the Meta account; add one at https://dev.meta.ai and reconnect");let i=kt(o,"api_key");if(i===null)throw t("AUTH","muse key mint returned an empty api key; finish onboarding at https://dev.meta.ai and reconnect");return{apiKey:i,email:kt(o,"user_email"),tierName:kt(o,"subs_tier_name"),subscriptionActive:o.is_subs_active===!0,baseUrl:Cc(o.base_url),usage:o.subs_usage}}function Xw(e,t,n,r){return{secrets:{accessToken:e.accessToken,refreshToken:e.refreshToken??n,apiKey:t.apiKey,idToken:null},expiresAt:e.expiresIn===null?null:r()+e.expiresIn*1000,accountEmail:t.email,providerData:{...t.tierName===null?{}:{subscriptionTier:t.tierName},subscriptionActive:t.subscriptionActive,...t.baseUrl===null?{}:{baseUrl:t.baseUrl}}}}var Ic={kind:"device",supportsManualPaste:!1,needsDeviceId:!1,async*start(){return{authorizeUrl:Yw,pending:{verifier:"",challenge:"",state:"",redirectUri:""}}},async*begin({fail:e,keepPolling:t}){let n=xC(yield*Pc(kC,{},e,t),e);return{authorizeUrl:n.verificationUri,userCode:n.userCode,pending:{verifier:"",challenge:"",state:"",redirectUri:"",deviceCode:n.deviceCode,interval:n.interval}}},async*exchange({pending:e,fail:t,keepPolling:n,now:r}){if(e.deviceCode===void 0)throw t("INTERNAL","muse exchange requires a pending flow produced by begin()");let o=Gw(yield*Pc(Kw,{grant_type:vC,device_code:e.deviceCode},t,n),t);return Xw(o,yield*Zw(o.accessToken,t),null,r)},async*refresh({refreshToken:e,fail:t,keepPolling:n,now:r}){let o=Gw(yield*Pc(Kw,{grant_type:"refresh_token",refresh_token:e},t,n),t);return Xw(o,yield*Zw(o.accessToken,t),e,r)},async*usage({secrets:e,now:t}){if(e.accessToken===null)return null;let n=yield ue(Qw,_t,{contentType:"application/json",body:"{}",extraHeaders:[["Authorization",`Bearer ${e.accessToken}`],["Accept","application/json"]]});if(!Qe(n.status,"muse"))return null;let r=U(q(n.body));return r===null?null:eb(r.subs_usage,t())}};function eb(e,t){let n=U(e);if(n===null)return null;let r=U(n.window),o=r===null?null:at(r,["window_duration_mins"]);return bt([ut(n.window,"fiveHour",t,o===null?null:o*60000),ut(n.weekly,"weekly",t)])}var AC=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,tb=Date.UTC(2026,9,1);function Lc(e){return AC.test(e)}function Nc(e){let t=Buffer.from(e).toString("hex");return`${t.slice(0,8)}-${t.slice(8,12)}-${t.slice(12,16)}-${t.slice(16,20)}-${t.slice(20,32)}`}function Dc(e,t){let n=Uint8Array.from(e.subarray(0,16));return n[6]=(n[6]??0)&15|t<<4,n[8]=(n[8]??0)&63|128,n}var os=(e)=>Bun.CryptoHasher.hash("sha256",e);function is(e,t){let n=new Bun.CryptoHasher("sha1").update(Buffer.from(e.replace(/-/g,""),"hex")).update(t,"utf8").digest();return Nc(Dc(n,5))}function nb(e){return Nc(Dc(os(e),4))}function Hr(e,t){let n=Uint8Array.from(os(e).subarray(0,16)),r=Math.max(0,Math.floor(t));for(let o=5;o>=0;o--)n[o]=r%256,r=Math.floor(r/256);return Nc(Dc(n,7))}function Mc(e){let n=os(`thread:${e}`).readUIntBE(0,6)%31536000000;return Hr(e,tb-31536000000+n)}function Uc(e,t){let n=e.replace(/-/g,""),r=n[12],o=Number.parseInt(n.slice(0,12),16);if(r==="7"&&Number.isFinite(o)&&o<=t)return o;let i=os(`thread:${e}`);return tb-31536000000+i.readUIntBE(0,6)%31536000000}var OC=/^[0-9a-f]{64}$/;function $c(e){let{installationId:t,idSalt:n}=e;return{...typeof t==="string"&&Lc(t)?{installationId:t}:{},...typeof n==="string"&&OC.test(n)?{idSalt:n}:{}}}function rb(e){let t=$c(e),n=()=>Array.from(globalThis.crypto.getRandomValues(new Uint8Array(32)),(r)=>r.toString(16).padStart(2,"0")).join("");return{installationId:t.installationId??globalThis.crypto.randomUUID(),idSalt:t.idSalt??n()}}function pn(e,t){if(e===void 0)return t;return new Bun.CryptoHasher("sha256",e).update(t).digest("hex")}function ob(e){return is("6ba7b812-9dad-11d1-80b4-00c04fd430c8",e)}var mb="app_EMoamEEZ73f0CkXaXp7hrann",CC="https://auth.openai.com/oauth/authorize",PC="https://auth.openai.com/oauth/token",ib="openid profile email offline_access",IC="https://chatgpt.com/backend-api/wham/usage",sb="https://chatgpt.com/backend-api/wham/rate-limit-reset-credits";function Fc(e){return typeof e==="object"&&e!==null}function fb(e){return typeof e==="string"&&e.trim().length>0?e:null}function Bc(e){return fb(e.accountId)}function LC(e){let t=typeof e==="string"?e.split("."):[],[n,r,o]=t;if(t.length!==3||n===void 0||r===void 0||o===void 0||n.length===0||r.length===0||o.length===0)return{email:null,accountId:null};try{let i=JSON.parse(Buffer.from(r,"base64url").toString("utf8"));if(!Fc(i))return{email:null,accountId:null};let s=i["https://api.openai.com/auth"];return{email:typeof i.email==="string"?i.email:null,accountId:Fc(s)?fb(s.chatgpt_account_id):null}}catch{return{email:null,accountId:null}}}function NC(e){if(!Fc(e)||typeof e.access_token!=="string")return null;return{accessToken:e.access_token,refreshToken:typeof e.refresh_token==="string"?e.refresh_token:null,expiresIn:typeof e.expires_in==="number"?e.expires_in:null,idToken:typeof e.id_token==="string"?e.id_token:null}}async function*ab(e,t){let n=yield ue(PC,it,{contentType:"application/x-www-form-urlencoded",body:new URLSearchParams({...e,client_id:mb}).toString()}),r=q(n.body);if(n.status<200||n.status>=300)throw t(Se(n.status),qe(n.status,r));let o=NC(r);if(o===null)throw t("AUTH","token endpoint returned no access_token");return o}function ub(e,t,n,r,o){let i=LC(e.idToken);return{secrets:{accessToken:e.accessToken,refreshToken:e.refreshToken??t,apiKey:null,idToken:e.idToken},expiresAt:e.expiresIn===null?null:n()+e.expiresIn*1000,accountEmail:i.email,providerData:{accountId:i.accountId??r,...rb(o)}}}function gb(e){let t=U(e);if(t===null)return null;let n=at(t,["limit_window_seconds","limitWindowSeconds","window_seconds","windowSeconds"]);return n===null||n<=0?null:n}function cb(e,t){let n=gb(e);if(n===null)return t;if(n<=21600)return"fiveHour";if(n<=129600)return"daily";return"weekly"}function lb(e){let t=gb(e);return t===null?null:t*1000}function hb(e,t){let n=U(e);if(n===null)return null;let r=Yi(n,["rate_limit","rateLimit"])??n,o=r.primary_window??r.primaryWindow,i=r.secondary_window??r.secondaryWindow;return bt([ut(o,cb(o,"fiveHour"),t,lb(o)),ut(i,cb(i,"weekly"),t,lb(i))])}var zc={kind:"pkce",supportsManualPaste:!0,async*start({redirectUri:e,pkce:t,randomState:n}){let{verifier:r,challenge:o}=t(),i=n(),s=new URL(CC);return s.searchParams.set("client_id",mb),s.searchParams.set("response_type","code"),s.searchParams.set("redirect_uri",e),s.searchParams.set("scope",ib),s.searchParams.set("code_challenge",o),s.searchParams.set("code_challenge_method","S256"),s.searchParams.set("id_token_add_organizations","true"),s.searchParams.set("codex_cli_simplified_flow","true"),s.searchParams.set("state",i),s.searchParams.set("originator",Dr),s.searchParams.set("prompt","login"),{authorizeUrl:s.toString(),pending:{verifier:r,challenge:o,state:i,redirectUri:e}}},async*exchange({code:e,pending:t,providerData:n,fail:r,now:o}){let[i,s]=e.split("#");if(s!==void 0&&s!==t.state)throw r("AUTH","authorization state mismatch");let a=yield*ab({grant_type:"authorization_code",code:(i??"").trim(),redirect_uri:t.redirectUri,code_verifier:t.verifier},r);return ub(a,null,o,null,n??{})},async*refresh({refreshToken:e,providerData:t,fail:n,now:r}){let o=yield*ab({grant_type:"refresh_token",refresh_token:e,scope:ib},n);return ub(o,e,r,Bc(t),t)},async*usage({secrets:e,providerData:t,now:n}){if(e.accessToken===null)return null;let r=Bc(t),o=yield He(IC,it,{accessToken:e.accessToken,...r===null?{}:{extraHeaders:[["chatgpt-account-id",r]]}});if(!Qe(o.status,"openai"))return null;return hb(q(o.body),n())},async*resetCredits({secrets:e,providerData:t}){if(e.accessToken===null)return null;let n=yield He(sb,it,{accessToken:e.accessToken,extraHeaders:db(t)});if(!Qe(n.status,"openai"))return null;return yb(q(n.body))},async*redeemReset({secrets:e,providerData:t,creditId:n,requestId:r,fail:o}){if(e.accessToken===null)throw o("AUTH","credential holds no access token");let i=yield ue(`${sb}/consume`,it,{contentType:"application/json",body:JSON.stringify({credit_id:n,redeem_request_id:r}),extraHeaders:[["Authorization",`Bearer ${e.accessToken}`],...db(t)]});if(i.status<200||i.status>=300)throw o(DC(i.status),`reset credit redeem refused: http_${i.status}`,{status:i.status});let s=U(q(i.body));return{windowsReset:s===null?null:at(s,["windows_reset"])}}};function db(e){let t=Bc(e);return t===null?[]:[["chatgpt-account-id",t]]}function DC(e){if(e===429)return"RATE_LIMIT";if(e===401||e===403)return"AUTH";if(e>=400&&e<500)return"CONFLICT";return"UPSTREAM"}function pb(e){if(typeof e!=="string")return null;let t=Date.parse(e);return Number.isFinite(t)?t:null}function yb(e){let t=U(e);if(t===null||!Array.isArray(t.credits))return null;let n=t.credits.flatMap((r)=>{let o=U(r);if(o===null||typeof o.id!=="string"||typeof o.status!=="string")return[];return[{id:o.id,status:o.status,title:typeof o.title==="string"?o.title:null,grantedAt:pb(o.granted_at),expiresAt:pb(o.expires_at)}]});return{available:n.filter((r)=>r.status==="available").length,credits:n}}function qc(){return[["anthropic",pc],["openai",zc],["kimi",Oc],["kilo",Rc],["grok",Tc],["antigravity",_c],["muse",Ic]]}var _b={stop:"endTurn",length:"maxTokens",tool_calls:"toolUse",content_filter:"contentFilter"};function MC(e){if(typeof e.reasoning==="string"&&e.reasoning.length>0)return e.reasoning;if(typeof e.reasoning_content==="string"&&e.reasoning_content.length>0)return e.reasoning_content;if(!Array.isArray(e.reasoning_details))return"";return e.reasoning_details.flatMap((t)=>{if(t===null||typeof t!=="object")return[];if(typeof t.text==="string"&&t.text.length>0)return[t.text];if(typeof t.summary==="string"&&t.summary.length>0)return[t.summary];return[]}).join("")}function bb(e){try{let t=JSON.parse(e);return typeof t==="object"&&t!==null?t:null}catch{return null}}async function*kb(e){let t=!1,n=!1,r="endTurn",o={inputTokens:0,outputTokens:0,cacheReadTokens:0,cacheWriteTokens:0},i=new Map,s=0,a,u=0;for await(let l of e){if(l.data==="[DONE]"){n=!0;break}let c=bb(l.data);if(c===null)continue;if(!t&&(c.id!==void 0||c.model!==void 0))t=!0,yield{type:"start",id:String(c.id??""),model:String(c.model??"")};if(c.usage){let g=c.usage.prompt_tokens_details;o=Ae(c.usage.prompt_tokens??0,c.usage.completion_tokens??0,g?.cached_tokens??c.usage.prompt_cache_hit_tokens??0,g?.cache_creation_tokens??g?.cache_write_tokens??0)}let p=c.choices?.[0];if(!p)continue;let d=p.delta??{},m=MC(d);if(m.length>0){if(a!=="thinking"){if(a!==void 0)yield{type:"blockEnd",index:u};a="thinking",u=s++,yield{type:"blockStart",index:u,block:{type:"thinking"}}}yield{type:"blockDelta",index:u,delta:{type:"thinking",text:m}}}if(typeof d.content==="string"&&d.content.length>0){if(a!=="text"){if(a!==void 0)yield{type:"blockEnd",index:u};a="text",u=s++,yield{type:"blockStart",index:u,block:{type:"text"}}}yield{type:"blockDelta",index:u,delta:{type:"text",text:d.content}}}for(let g of d.tool_calls??[]){let h=g.index??0,f=i.get(h);if(f===void 0){if(a!==void 0)yield{type:"blockEnd",index:u};f=s++,i.set(h,f),a="tool",u=f,yield{type:"blockStart",index:f,block:{type:"toolUse",id:String(g.id??`call_${h}`),name:String(g.function?.name??"")}}}let y=g.function?.arguments;if(typeof y==="string"&&y.length>0)yield{type:"blockDelta",index:f,delta:{type:"toolJson",partial:y}}}if(typeof p.finish_reason==="string"){let g=p.finish_reason,h=Object.hasOwn(_b,g)?_b[g]:void 0;if(h===void 0){yield{type:"error",code:"UPSTREAM",message:`unrecognized custom endpoint finish reason "${g}"`,retryable:!1};return}r=h}}if(n){if(a!==void 0)yield{type:"blockEnd",index:u};yield{type:"end",stopReason:r,usage:o}}else yield{type:"error",code:"UPSTREAM",message:"upstream stream ended before [DONE]",retryable:ee.UPSTREAM}}var wb={rate_limit_exceeded:"RATE_LIMIT",insufficient_quota:"QUOTA_EXHAUSTED",invalid_api_key:"AUTH",server_error:"UPSTREAM",context_length_exceeded:"BAD_REQUEST",content_policy_violation:"CONTENT_FILTER"},UC=new Set(["response.created","response.queued","response.in_progress","response.output_item.added","response.output_item.done","response.content_part.added","response.content_part.done","response.output_text.delta","response.output_text.done","response.output_text.annotation.added","response.refusal.delta","response.refusal.done","response.reasoning_summary_part.added","response.reasoning_summary_part.done","response.reasoning_summary_text.delta","response.reasoning_summary_text.done","response.reasoning_text.delta","response.reasoning_text.done","response.function_call_arguments.delta","response.function_call_arguments.done","response.completed","response.incomplete","response.failed","error"]);async function*Eb(e){let t=new Map,n=0,r=(a,u=0)=>{let l=`${a}:${u}`,c=t.get(l);if(c!==void 0)return c;let p=n++;return t.set(l,p),p},o=!1,i=!1,s=new Set;for await(let a of e){if(a.data==="[DONE]")continue;if(!UC.has(a.event)){yield{type:"error",code:"UPSTREAM",message:`unrecognized custom endpoint stream event "${a.event}"`,retryable:!1};return}let u=bb(a.data);if(u===null)continue;switch(a.event){case"response.created":yield{type:"start",id:String(u.response?.id??""),model:String(u.response?.model??"")};break;case"response.output_item.added":{let l=u.item??{};if(l.type==="reasoning")s.add(u.output_index??0),yield{type:"blockStart",index:r(u.output_index??0),block:{type:"thinking"}};else if(l.type==="function_call")o=!0,s.add(u.output_index??0),yield{type:"blockStart",index:r(u.output_index??0),block:{type:"toolUse",id:String(l.call_id),name:String(l.name)}};break}case"response.content_part.added":if(u.part?.type==="output_text")yield{type:"blockStart",index:r(u.output_index??0,u.content_index??0),block:{type:"text"}};break;case"response.output_text.delta":yield{type:"blockDelta",index:r(u.output_index??0,u.content_index??0),delta:{type:"text",text:String(u.delta??"")}};break;case"response.reasoning_summary_text.delta":yield{type:"blockDelta",index:r(u.output_index??0),delta:{type:"thinking",text:String(u.delta??"")}};break;case"response.function_call_arguments.delta":yield{type:"blockDelta",index:r(u.output_index??0),delta:{type:"toolJson",partial:String(u.delta??"")}};break;case"response.content_part.done":yield{type:"blockEnd",index:r(u.output_index??0,u.content_index??0)};break;case"response.output_item.done":{let l=u.output_index??0;if(s.delete(l))yield{type:"blockEnd",index:r(l)};break}case"response.completed":case"response.incomplete":{i=!0;let l=u.response??{},c=l.incomplete_details?.reason,p=o?"toolUse":"endTurn";if(c==="max_output_tokens")p="maxTokens";else if(c==="content_filter")p="contentFilter";else if(c!==void 0||a.event==="response.incomplete"||l.status!==void 0&&l.status!=="completed"){yield{type:"error",code:"UPSTREAM",message:c!==void 0?`unrecognized custom endpoint incomplete reason "${String(c)}"`:l.status!==void 0&&l.status!=="incomplete"?`custom endpoint reported terminal response status "${String(l.status)}"`:"custom endpoint reported the response incomplete without a reason",retryable:!1};break}yield{type:"end",stopReason:p,usage:Ae(l.usage?.input_tokens??0,l.usage?.output_tokens??0,l.usage?.input_tokens_details?.cached_tokens??l.usage?.prompt_tokens_details?.cached_tokens??0)};break}case"response.failed":case"error":{i=!0;let l=u.response?.error??u.error??{},c=String(l.code??l.type),p=(Object.hasOwn(wb,c)?wb[c]:void 0)??"UPSTREAM";yield{type:"error",code:p,message:String(l.message??"upstream error"),retryable:ee[p]};break}default:break}}if(!i)yield{type:"error",code:"UPSTREAM",message:"upstream stream ended before response completion",retryable:ee.UPSTREAM}}function $C(e){switch(e.type){case"auto":return"auto";case"any":return"required";case"none":return"none";case"tool":return{type:"function",function:{name:e.name}}}}function FC(e){switch(e.type){case"auto":return"auto";case"any":return"required";case"none":return"none";case"tool":return{type:"function",name:e.name}}}function vb(e){if(e===void 0||e.mode!=="adaptive")return;return e.effort??"medium"}function Tb(e,t){let n=[],r=(p)=>{if(!n.includes(p))n.push(p)};if(e.betas?.includes(Te))r("custom:context-1m-dropped");let o=[],i=Ce(e.system,"custom",r);if(i!==void 0&&i.length>0)o.push({role:"system",content:i});for(let p of e.messages){let d=[],m=[];for(let g of p.content)switch(g.type){case"text":d.push(g.text);break;case"image":r("custom:images-dropped");break;case"thinking":r("custom:thinking-dropped");break;case"toolUse":m.push({id:g.id,type:"function",function:{name:g.name,arguments:JSON.stringify(g.input)}});break;case"toolResult":{if(g.native!==void 0)r("custom:anthropic-native-block-dropped");let h=Ve(g.files??[],()=>!1);if(o.push({role:"tool",tool_call_id:g.toolUseId,content:ke(g.content,h.text)}),g.images!==void 0)r("custom:images-dropped");if(h.text.length>0)r("custom:tool-result-files-inlined");if(h.dropped)r("custom:files-dropped");break}case"providerNative":r("custom:anthropic-native-block-dropped");break}if(m.length>0)o.push({role:p.role,content:d.length>0?d.join(`
|
|
1696
|
+
`):null,tool_calls:m});else if(d.length>0)o.push({role:p.role,content:d.join(`
|
|
1697
|
+
`)})}let s={model:t,messages:o,stream:e.stream,stream_options:{include_usage:!0}};if(e.maxTokens!==void 0)s.max_tokens=e.maxTokens;if(e.temperature!==void 0)s.temperature=e.temperature;if(e.stopSequences!==void 0)s.stop=e.stopSequences;if(e.tools!==void 0){let p=e.tools.filter((d)=>d.kind==="portable");if(p.length!==e.tools.length)r("custom:anthropic-tool-dropped");s.tools=p.map((d)=>({type:"function",function:{name:d.name,description:d.description,parameters:d.inputSchema}}))}if(e.toolChoice!==void 0)s.tool_choice=$C(e.toolChoice);if(e.reasoning?.mode==="betweenTools")r("custom:reasoning-between-tools-as-off");let a=vb(e.reasoning);if(a!==void 0)s.reasoning_effort=a;else if(e.reasoning?.mode==="budget")r("custom:reasoning-budget-dropped");Object.assign(s,e.vendor?.openai??{});let u=s.text;delete s.text;let l=st(e),c=l.kind==="readable"?l.format:void 0;if(c!==void 0){if(s.response_format===void 0)s.response_format={type:"json_schema",json_schema:{name:c.name,schema:c.schema,strict:!0}},r("custom:response-format-translated")}else if(de(u)&&u.format!==void 0)r("custom:response-format-dropped");else if(l.kind==="tooDeep")delete s.response_format,r("custom:response-schema-too-deep");return{body:s,degradations:n}}function Rb(e,t){let n=[],r=(l)=>{if(!n.includes(l))n.push(l)},o=[];if(e.betas?.includes(Te))r("custom:context-1m-dropped");for(let l of e.messages){let c=[],p=l.role==="system";if(p)r("custom:system-turn-as-developer");let d=p?"developer":l.role,m=()=>{if(c.length===0)return;o.push({type:"message",role:d,content:[...c]}),c.length=0};for(let g of l.content)switch(g.type){case"text":c.push({type:d==="assistant"?"output_text":"input_text",text:g.text});break;case"image":c.push({type:"input_image",image_url:`data:${g.mediaType};base64,${g.data}`});break;case"thinking":r("custom:thinking-dropped");break;case"toolUse":m(),o.push({type:"function_call",call_id:g.id,name:g.name,arguments:JSON.stringify(g.input)});break;case"toolResult":{if(g.native!==void 0)r("custom:anthropic-native-block-dropped");m();let h=jt(g.files??[]);if(o.push({type:"function_call_output",call_id:g.toolUseId,output:ke(g.content,h.text)}),g.images!==void 0){r("custom:tool-result-images-moved");for(let f of g.images)c.push({type:"input_image",image_url:`data:${f.mediaType};base64,${f.data}`})}if(h.parts.length>0)r("custom:tool-result-files-moved"),c.push(...h.parts);if(h.text.length>0)r("custom:tool-result-files-inlined");if(h.dropped)r("custom:files-dropped");break}case"providerNative":r("custom:anthropic-native-block-dropped");break}m()}let i={model:t,input:o,stream:e.stream,store:!1},s=Ce(e.system,"custom",r);if(s!==void 0&&s.length>0)i.instructions=s;if(e.maxTokens!==void 0)i.max_output_tokens=e.maxTokens;if(e.temperature!==void 0)i.temperature=e.temperature;if(e.tools!==void 0){let l=e.tools.filter((c)=>c.kind==="portable");if(l.length!==e.tools.length)r("custom:anthropic-tool-dropped");i.tools=l.map((c)=>({type:"function",name:c.name,description:c.description,parameters:c.inputSchema}))}if(e.toolChoice!==void 0)i.tool_choice=FC(e.toolChoice);if(e.reasoning?.mode==="betweenTools")r("custom:reasoning-between-tools-as-off");let a=vb(e.reasoning);if(a!==void 0)i.reasoning={effort:a,...e.reasoning?.mode==="adaptive"&&(e.reasoning.display==="omitted"||e.reasoning.display==="updates")?{}:{summary:"auto"}};else if(e.reasoning?.mode==="budget")r("custom:reasoning-budget-dropped");Object.assign(i,e.vendor?.openai??{});let u=Wt(e,i,"custom");if(u!==void 0)r(u);return{body:i,degradations:n}}function BC(e,t){let{origin:n,protocol:r}=e;if(typeof n!=="string"||r!=="chat_completions"&&r!=="responses")throw t("BAD_REQUEST","custom credential has invalid endpoint metadata");let o=typeof e.basePath==="string"?e.basePath:"";return{origin:n,basePath:o,protocol:r}}function zC(e,t,n){let r=n==="chat_completions"?"chat/completions":"responses",o=`${e}${t}`.replace(/\/+$/,"");return/\/v\d+$/i.test(o)?`${o}/${r}`:`${o}/v1/${r}`}function qC(e,t){if(e!==null&&typeof e==="object"){let n=e.protocol;if(n==="responses"||n==="chat_completions")return n}throw t("INTERNAL","custom codec lost its endpoint protocol")}var Sb={buildRequest(e){let t=e.credentials.apiKey;if(t===null)throw e.fail("AUTH","custom credential has no API key");let{origin:n,basePath:r,protocol:o}=BC(e.credentials.providerData,e.fail),i=o==="chat_completions"?Tb(e.request,e.model):Rb(e.request,e.model),s=[["Content-Type","application/json"],["Authorization",`Bearer ${t}`]];return{request:{url:zC(n,r,o),method:"POST",headers:s,body:JSON.stringify({...i.body,stream:!0})},decodeState:{protocol:o},degradations:i.degradations}},decode({body:e,decodeState:t,fail:n}){return qC(t,n)==="chat_completions"?kb(we(e)):Eb(we(e))}};var Hc=le("custom",Ti.capabilities,Sb);var xb={rate_limit_exceeded:"RATE_LIMIT",insufficient_quota:"QUOTA_EXHAUSTED",invalid_api_key:"AUTH",server_error:"UPSTREAM",context_length_exceeded:"BAD_REQUEST",content_policy_violation:"CONTENT_FILTER"},HC=new Set(["response.created","response.queued","response.in_progress","response.output_item.added","response.output_item.done","response.content_part.added","response.content_part.done","response.output_text.delta","response.output_text.done","response.output_text.annotation.added","response.refusal.delta","response.refusal.done","response.reasoning_summary_part.added","response.reasoning_summary_part.done","response.reasoning_summary_text.delta","response.reasoning_summary_text.done","response.reasoning_text.delta","response.reasoning_text.done","response.function_call_arguments.delta","response.function_call_arguments.done","response.completed","response.incomplete","response.failed","error"]);function WC(e){try{let t=JSON.parse(e);return typeof t==="object"&&t!==null?t:null}catch{return null}}async function*ss(e){let t=new Map,n=0,r=(a,u=0)=>{let l=`${a}:${u}`,c=t.get(l);if(c!==void 0)return c;let p=n++;return t.set(l,p),p},o=!1,i=!1,s=new Set;for await(let a of e){if(a.data==="[DONE]")continue;if(!HC.has(a.event)){yield{type:"error",code:"UPSTREAM",message:`unrecognized xAI stream event "${a.event}"`,retryable:!1};return}let u=WC(a.data);if(u===null)continue;switch(a.event){case"response.created":yield{type:"start",id:String(u.response?.id??""),model:String(u.response?.model??"")};break;case"response.output_item.added":{let l=u.item??{};if(l.type==="reasoning")s.add(u.output_index??0),yield{type:"blockStart",index:r(u.output_index??0),block:{type:"thinking"}};else if(l.type==="function_call")o=!0,s.add(u.output_index??0),yield{type:"blockStart",index:r(u.output_index??0),block:{type:"toolUse",id:String(l.call_id),name:String(l.name)}};break}case"response.content_part.added":if(u.part?.type==="output_text")yield{type:"blockStart",index:r(u.output_index??0,u.content_index??0),block:{type:"text"}};break;case"response.output_text.delta":yield{type:"blockDelta",index:r(u.output_index??0,u.content_index??0),delta:{type:"text",text:String(u.delta??"")}};break;case"response.reasoning_summary_text.delta":case"response.reasoning_text.delta":yield{type:"blockDelta",index:r(u.output_index??0),delta:{type:"thinking",text:String(u.delta??"")}};break;case"response.function_call_arguments.delta":yield{type:"blockDelta",index:r(u.output_index??0),delta:{type:"toolJson",partial:String(u.delta??"")}};break;case"response.content_part.done":yield{type:"blockEnd",index:r(u.output_index??0,u.content_index??0)};break;case"response.output_item.done":{let l=u.output_index??0;if(s.delete(l))yield{type:"blockEnd",index:r(l)};break}case"response.completed":case"response.incomplete":{i=!0;let l=u.response??{},c=l.incomplete_details?.reason,p=o?"toolUse":"endTurn";if(c==="max_output_tokens")p="maxTokens";else if(c==="content_filter")p="contentFilter";else if(c!==void 0||a.event==="response.incomplete"||l.status!==void 0&&l.status!=="completed"){yield{type:"error",code:"UPSTREAM",message:c!==void 0?`unrecognized xAI incomplete reason "${String(c)}"`:l.status!==void 0&&l.status!=="incomplete"?`xAI reported terminal response status "${String(l.status)}"`:"xAI reported the response incomplete without a reason",retryable:!1};break}yield{type:"end",stopReason:p,usage:Ae(l.usage?.input_tokens??0,l.usage?.output_tokens??0,l.usage?.input_tokens_details?.cached_tokens??0)};break}case"response.failed":case"error":{i=!0;let l=u.response?.error??u.error??{},c=String(l.code??l.type),p=(Object.hasOwn(xb,c)?xb[c]:void 0)??"UPSTREAM";yield{type:"error",code:p,message:String(l.message??"upstream error"),retryable:ee[p]};break}default:break}}if(!i)yield{type:"error",code:"UPSTREAM",message:"upstream stream ended before response completion",retryable:ee.UPSTREAM}}var Ab=200;function jC(e){switch(e.type){case"auto":return"auto";case"any":return"required";case"none":return"none";case"tool":return{type:"function",name:e.name}}}function KC(e,t){let n=JSON.stringify({instructions:e,firstInput:t});return Bun.CryptoHasher.hash("sha256",n,"hex").slice(0,32)}function as(e,t){let n=[],r=[],o=(u)=>{if(!n.includes(u))n.push(u)};if(e.betas?.includes(Te))o("grok:context-1m-dropped");for(let u of e.messages){let l=[],c=u.role==="system";if(c)o("grok:system-turn-as-developer");let p=c?"developer":u.role,d=()=>{if(l.length===0)return;r.push({type:"message",role:p,content:[...l]}),l.length=0};for(let m of u.content)switch(m.type){case"text":l.push({type:p==="assistant"?"output_text":"input_text",text:m.text});break;case"image":l.push({type:"input_image",image_url:`data:${m.mediaType};base64,${m.data}`});break;case"thinking":o("grok:thinking-dropped");break;case"toolUse":d(),r.push({type:"function_call",call_id:m.id,name:m.name,arguments:JSON.stringify(m.input)});break;case"toolResult":{if(m.native!==void 0)o("grok:anthropic-native-block-dropped");d();let g=jt(m.files??[]);if(r.push({type:"function_call_output",call_id:m.toolUseId,output:ke(m.content,g.text)}),m.images!==void 0){o("grok:tool-result-images-moved");for(let h of m.images)l.push({type:"input_image",image_url:`data:${h.mediaType};base64,${h.data}`})}if(g.parts.length>0)o("grok:tool-result-files-moved"),l.push(...g.parts);if(g.text.length>0)o("grok:tool-result-files-inlined");if(g.dropped)o("grok:files-dropped");break}case"providerNative":o("grok:anthropic-native-block-dropped");break}d()}let i=Ce(e.system,"grok",o),s={model:t,input:r,stream:e.stream,store:!1,include:["reasoning.encrypted_content"],prompt_cache_key:KC(i??"",r[0])};if(i!==void 0&&i.length>0)s.instructions=i;if(e.maxTokens!==void 0)s.max_output_tokens=e.maxTokens;if(e.temperature!==void 0)s.temperature=e.temperature;if(e.tools!==void 0){let u=e.tools.filter((l)=>l.kind==="portable");if(u.length!==e.tools.length)o("grok:anthropic-tool-dropped");if(u.length>Ab)o("grok:tools-truncated");s.tools=u.slice(0,Ab).map((l)=>({type:"function",name:l.name,description:l.description,parameters:l.inputSchema}))}if(e.toolChoice!==void 0)s.tool_choice=jC(e.toolChoice);if(e.reasoning?.mode==="betweenTools")o("grok:reasoning-between-tools-as-off");if(e.reasoning!==void 0&&e.reasoning.mode!=="off"&&e.reasoning.mode!=="betweenTools")if(e.reasoning.mode==="budget")o("grok:reasoning-budget-dropped");else{let u=e.reasoning.effort??"medium";s.reasoning={effort:u,...e.reasoning.display==="omitted"||e.reasoning.display==="updates"?{}:{summary:"concise"}}}Object.assign(s,e.vendor?.grok??{});let a=Wt(e,s,"grok");if(a!==void 0)o(a);return{body:s,degradations:n}}var GC="https://cli-chat-proxy.grok.com/v1/responses",ZC="https://api.x.ai/v1/responses",XC="omni-grok-conv";function VC(e){let t=Bun.CryptoHasher.hash("sha256",`${XC}:${e}`,"hex"),n=(Number.parseInt(t[16],16)&3|8).toString(16);return[t.slice(0,8),t.slice(8,12),`5${t.slice(13,16)}`,`${n}${t.slice(17,20)}`,t.slice(20,32)].join("-")}function QC(e,t){let n=[["x-grok-model-override",e]];if(t===void 0||t.length===0)return n;let r=VC(t);return[...n,["x-grok-req-id",t],["x-grok-conv-id",r],["x-grok-session-id",r]]}var Ob={buildRequest(e){let t=e.credentials.accessToken!==null,{body:n,degradations:r}=as(e.request,e.model),o=[["Content-Type","application/json"]];if(t)o.push(["Authorization",`Bearer ${e.credentials.accessToken}`]),o.push(["X-XAI-Token-Auth","xai-grok-cli"]),o.push(["x-authenticateresponse","authenticate-response"]);else if(e.credentials.apiKey!==null)o.push(["Authorization",`Bearer ${e.credentials.apiKey}`]);else throw e.fail("AUTH","grok credential has no token");o.push(...QC(e.model,e.requestId)),o.push(...Lw(e.credentials.providerData));let i=ge(he(Pt.headers,o),Pt.order);return{request:{url:t?GC:ZC,method:"POST",headers:i,body:JSON.stringify(ze({...n,stream:!0},Ui))},degradations:r}},decode({body:e}){return ss(we(e))}};var Wc=le("grok",Si.capabilities,Ob);import{request as YC}from"http";import{request as JC}from"https";import{Readable as eP}from"stream";var tP=3000;function Un(e={}){let t=e.logger??se,n=e.now??(()=>Date.now());return(r)=>nP(r).then((o)=>new Promise((i,s)=>{let a=new URL(r.url),u=n(),l=!1,c=(f,y=!1)=>{if(l)return;l=!0;let _=n()-u;try{e.onResponseHead?.({provider:r.provider,host:a.host,path:a.pathname,...f===void 0?{}:{status:f},durationMs:_,...r.requestId===void 0?{}:{requestId:r.requestId}})}catch{}if(!t.enabled("debug"))return;t.debug("upstream http",{provider:r.provider,status:f,host:a.host,path:a.pathname,durationMs:_,reason:y?"transport error":void 0})},p=a.protocol==="https:"?JC:YC,d={};for(let[f,y]of r.headers)d[f]=y;if(r.body.length>0&&!Cb(r,"content-length"))d["Content-Length"]=o.byteLength;let m={protocol:a.protocol,hostname:a.hostname,port:a.port||(a.protocol==="https:"?443:80),path:`${a.pathname}${a.search}`,method:r.method,headers:d,setHost:!Cb(r,"host"),autoSelectFamilyAttemptTimeout:tP},g=p(m,(f)=>{let y=[],_=null,w=new Headers;for(let[v,k]of Object.entries(f.headers))if(Array.isArray(k))for(let T of k)w.append(v,T);else if(typeof k==="string")w.set(v,k);c(f.statusCode),i({status:f.statusCode??0,headers:w,body:eP.toWeb(f),text:()=>(_??=new Promise((v,k)=>{f.on("data",(T)=>y.push(T)),f.on("end",()=>v(Buffer.concat(y).toString("utf8"))),f.on("error",k)}),_)})}),h=()=>g.destroy(Error("aborted"));if(g.on("error",(f)=>{r.signal.removeEventListener("abort",h),c(void 0,!0),s(f)}),g.on("close",()=>r.signal.removeEventListener("abort",h)),r.signal.aborted){g.destroy(Error("aborted"));return}if(r.signal.addEventListener("abort",h,{once:!0}),o.byteLength>0)g.write(o);g.end()}))}function nP(e){let t=Buffer.from(e.body,"utf8");if(e.bodyEncoding!=="zstd")return Promise.resolve(t);return rP(t)}async function rP(e,t=(n)=>new CompressionStream("zstd",n)){let n=new Uint8Array(e),r=t({level:3}),o=r.writable.getWriter(),[i]=await Promise.all([new Response(r.readable).arrayBuffer(),(async()=>{await o.write(n),await o.close()})()]);return Buffer.from(i)}function Cb(e,t){return e.headers.some(([n])=>n.toLowerCase()===t)}var Pb={stop:"endTurn",length:"maxTokens",tool_calls:"toolUse",content_filter:"contentFilter"};function oP(e){if(typeof e.reasoning==="string"&&e.reasoning.length>0)return e.reasoning;if(typeof e.reasoning_content==="string"&&e.reasoning_content.length>0)return e.reasoning_content;if(!Array.isArray(e.reasoning_details))return"";return e.reasoning_details.flatMap((t)=>{if(t===null||typeof t!=="object")return[];if(typeof t.text==="string"&&t.text.length>0)return[t.text];if(typeof t.summary==="string"&&t.summary.length>0)return[t.summary];return[]}).join("")}function iP(e){try{let t=JSON.parse(e);return typeof t==="object"&&t!==null?t:null}catch{return null}}async function*us(e){let t=!1,n=!1,r="endTurn",o={inputTokens:0,outputTokens:0,cacheReadTokens:0,cacheWriteTokens:0},i=new Map,s=0,a,u=0;for await(let l of e){if(l.data==="[DONE]"){n=!0;break}let c=iP(l.data);if(c===null)continue;if(!t&&(c.id!==void 0||c.model!==void 0))t=!0,yield{type:"start",id:String(c.id??""),model:String(c.model??"")};if(c.usage){let h=c.usage.prompt_tokens_details;o=Ae(c.usage.prompt_tokens??0,c.usage.completion_tokens??0,h?.cached_tokens??c.usage.prompt_cache_hit_tokens??0,h?.cache_creation_tokens??h?.cache_write_tokens??0)}let p=c.choices?.[0];if(!p)continue;let d=p.delta??{},m=oP(d);if(m.length>0){if(a!=="thinking"){if(a!==void 0)yield{type:"blockEnd",index:u};a="thinking",u=s++,yield{type:"blockStart",index:u,block:{type:"thinking"}}}yield{type:"blockDelta",index:u,delta:{type:"thinking",text:m}}}let g=d.tool_calls??[];if(typeof d.content==="string"&&d.content.length>0){if(a!=="text"){if(a!==void 0)yield{type:"blockEnd",index:u};a="text",u=s++,yield{type:"blockStart",index:u,block:{type:"text"}}}yield{type:"blockDelta",index:u,delta:{type:"text",text:d.content}}}for(let h of g){let f=h.index??0,y=i.get(f);if(y===void 0){if(a!==void 0)yield{type:"blockEnd",index:u};y=s++,i.set(f,y),a="tool",u=y,yield{type:"blockStart",index:y,block:{type:"toolUse",id:String(h.id??`call_${f}`),name:String(h.function?.name??"")}}}let _=h.function?.arguments;if(typeof _==="string"&&_.length>0)yield{type:"blockDelta",index:y,delta:{type:"toolJson",partial:_}}}if(typeof p.finish_reason==="string"){let h=p.finish_reason,f=Object.hasOwn(Pb,h)?Pb[h]:void 0;if(f===void 0){yield{type:"error",code:"UPSTREAM",message:`unrecognized Kilo finish reason "${h}"`,retryable:!1};return}r=f}}if(n){if(a!==void 0)yield{type:"blockEnd",index:u};yield{type:"end",stopReason:r,usage:o}}else yield{type:"error",code:"UPSTREAM",message:"upstream stream ended before [DONE]",retryable:ee.UPSTREAM}}function sP(e){switch(e.type){case"auto":return"auto";case"any":return"required";case"none":return"none";case"tool":return{type:"function",function:{name:e.name}}}}function aP(e){let t=(n)=>("cacheControl"in n)&&n.cacheControl!==void 0;if(e.system?.some(t)===!0)return!0;return e.messages.some((n)=>n.content.some(t))}function Ib(e){if(e.length===0)return null;if(e.every((t)=>t.type==="text"))return e.map((t)=>t.type==="text"?t.text:"").join(`
|
|
1698
|
+
`);return[...e]}function cs(e,t){let n=[],r=(l)=>{if(!n.includes(l))n.push(l)};if(e.betas?.includes(Te))r("kilo:context-1m-dropped");if(aP(e))r("kilo:cache-control-dropped");let o=[],i=Ce(e.system,"kilo",r);if(i!==void 0&&i.length>0)o.push({role:"system",content:i});for(let l of e.messages){let c=[],p=[],d=[],m=()=>{if(p.length>0)o.push({role:l.role,content:Ib(c),tool_calls:[...p]});else if(c.length>0)o.push({role:l.role,content:Ib(c)});c=[],p.length=0};for(let g of l.content)switch(g.type){case"text":c.push({type:"text",text:g.text});break;case"image":c.push({type:"image_url",image_url:{url:`data:${g.mediaType};base64,${g.data}`}});break;case"thinking":r("kilo:thinking-dropped");break;case"toolUse":p.push({id:g.id,type:"function",function:{name:g.name,arguments:JSON.stringify(g.input)}});break;case"toolResult":{if(g.native!==void 0)r("kilo:anthropic-native-block-dropped");m();let h=Ve(g.files??[],(f)=>f==="application/pdf");if(o.push({role:"tool",tool_call_id:g.toolUseId,content:ke(g.content,h.text)}),h.text.length>0)r("kilo:tool-result-files-inlined");if(h.dropped)r("kilo:files-dropped");for(let f of g.images??[])r("kilo:tool-result-images-moved"),d.push({type:"image_url",image_url:{url:`data:${f.mediaType};base64,${f.data}`}});for(let f of h.carried)r("kilo:tool-result-files-moved"),d.push({type:"file",file:{filename:sc(f),file_data:`data:${f.mediaType};base64,${f.data}`}});break}case"providerNative":r("kilo:anthropic-native-block-dropped");break}if(m(),d.length>0)o.push({role:"user",content:d})}let s={model:t,messages:o,stream:e.stream,stream_options:{include_usage:!0}};if(e.maxTokens!==void 0)s.max_tokens=e.maxTokens;if(e.temperature!==void 0)s.temperature=e.temperature;if(e.stopSequences!==void 0)s.stop=e.stopSequences;if(e.tools!==void 0){let l=e.tools.filter((c)=>c.kind==="portable");if(l.length!==e.tools.length)r("kilo:anthropic-tool-dropped");s.tools=l.map((c)=>({type:"function",function:{name:c.name,description:c.description,parameters:c.inputSchema}}))}if(e.toolChoice!==void 0)s.tool_choice=sP(e.toolChoice);if(e.reasoning?.mode==="betweenTools")r("kilo:reasoning-between-tools-as-off");if(e.reasoning!==void 0&&e.reasoning.mode!=="off"&&e.reasoning.mode!=="betweenTools")if(e.reasoning.mode==="budget")s.reasoning={max_tokens:e.reasoning.budgetTokens};else s.reasoning={effort:e.reasoning.effort??"medium"};Object.assign(s,e.vendor?.kilo??{});let a=st(e),u=a.kind==="readable"?a.format:void 0;if(u!==void 0&&s.response_format===void 0)s.response_format={type:"json_schema",json_schema:{name:u.name,schema:u.schema,strict:!0}},r("kilo:response-format-translated");else if(a.kind==="tooDeep")delete s.response_format,r("kilo:response-schema-too-deep");return{body:s,degradations:n}}var uP="https://api.kilo.ai/api/openrouter/chat/completions",cP="https://api.kilo.ai/api/gateway/chat/completions";function lP(e){let t=e.orgId;if(typeof t!=="string"||t.length===0)return[];return[["X-Kilocode-OrganizationID",t]]}var Lb={buildRequest(e){let t=e.credentials.accessToken!==null,n=e.credentials.accessToken??e.credentials.apiKey;if(n===null)throw e.fail("AUTH","kilo credential has no token");let{body:r,degradations:o}=cs(e.request,e.model),i=[["Content-Type","application/json"],["Authorization",`Bearer ${n}`],...lP(e.credentials.providerData)],s=ge(he(yt.headers,i),yt.order);return{request:{url:t?uP:cP,method:"POST",headers:s,body:JSON.stringify(ze({...r,stream:!0},$i))},degradations:o}},decode({body:e}){return us(we(e))}};var jc=le("kilo",Ai.capabilities,Lb);var Nb={stop:"endTurn",length:"maxTokens",tool_calls:"toolUse",content_filter:"contentFilter"};function dP(e){try{let t=JSON.parse(e);return typeof t==="object"&&t!==null?t:null}catch{return null}}async function*ls(e){let t=!1,n=!1,r="endTurn",o={inputTokens:0,outputTokens:0,cacheReadTokens:0,cacheWriteTokens:0},i=new Map,s=0,a,u=0;for await(let l of e){if(l.data==="[DONE]"){n=!0;break}let c=dP(l.data);if(c===null)continue;if(!t&&(c.id!==void 0||c.model!==void 0))t=!0,yield{type:"start",id:String(c.id??""),model:String(c.model??"")};if(c.usage){let m=c.usage.prompt_tokens_details;o=Ae(c.usage.prompt_tokens??0,c.usage.completion_tokens??0,m?.cached_tokens??c.usage.prompt_cache_hit_tokens??0,m?.cache_creation_tokens??m?.cache_write_tokens??0)}let p=c.choices?.[0];if(!p)continue;let d=p.delta??{};if(typeof d.content==="string"&&d.content.length>0){if(a!=="text"){if(a!==void 0)yield{type:"blockEnd",index:u};a="text",u=s++,yield{type:"blockStart",index:u,block:{type:"text"}}}yield{type:"blockDelta",index:u,delta:{type:"text",text:d.content}}}for(let m of d.tool_calls??[]){let g=m.index??0,h=i.get(g);if(h===void 0){if(a!==void 0)yield{type:"blockEnd",index:u};h=s++,i.set(g,h),a="tool",u=h,yield{type:"blockStart",index:h,block:{type:"toolUse",id:String(m.id??`call_${g}`),name:String(m.function?.name??"")}}}let f=m.function?.arguments;if(typeof f==="string"&&f.length>0)yield{type:"blockDelta",index:h,delta:{type:"toolJson",partial:f}}}if(typeof p.finish_reason==="string"){let m=p.finish_reason,g=Object.hasOwn(Nb,m)?Nb[m]:void 0;if(g===void 0){yield{type:"error",code:"UPSTREAM",message:`unrecognized Kimi finish reason "${m}"`,retryable:!1};return}r=g}}if(n){if(a!==void 0)yield{type:"blockEnd",index:u};yield{type:"end",stopReason:r,usage:o}}else yield{type:"error",code:"UPSTREAM",message:"upstream stream ended before [DONE]",retryable:ee.UPSTREAM}}function pP(e){switch(e.type){case"auto":return"auto";case"any":return"required";case"none":return"none";case"tool":return{type:"function",function:{name:e.name}}}}function ds(e,t,n="kimi"){let r=[],o=(c)=>{if(!r.includes(c))r.push(c)};if(e.betas?.includes(Te))o("kimi:context-1m-dropped");let i=[],s=Ce(e.system,"kimi",o);if(s!==void 0&&s.length>0)i.push({role:"system",content:s});for(let c of e.messages){let p=[],d=[];for(let m of c.content)switch(m.type){case"text":p.push(m.text);break;case"image":o("kimi:images-dropped");break;case"thinking":o("kimi:thinking-dropped");break;case"toolUse":d.push({id:m.id,type:"function",function:{name:m.name,arguments:JSON.stringify(m.input)}});break;case"toolResult":{if(m.native!==void 0)o("kimi:anthropic-native-block-dropped");let g=Ve(m.files??[],()=>!1);if(i.push({role:"tool",tool_call_id:m.toolUseId,content:ke(m.content,g.text)}),m.images!==void 0)o("kimi:images-dropped");if(g.text.length>0)o("kimi:tool-result-files-inlined");if(g.dropped)o("kimi:files-dropped");break}case"providerNative":o("kimi:anthropic-native-block-dropped");break}if(d.length>0)i.push({role:c.role,content:p.length>0?p.join(`
|
|
1699
|
+
`):null,tool_calls:d});else if(p.length>0)i.push({role:c.role,content:p.join(`
|
|
1700
|
+
`)})}let a={model:t,messages:i,stream:e.stream,stream_options:{include_usage:!0}};if(e.maxTokens!==void 0)a.max_tokens=e.maxTokens;if(e.temperature!==void 0)a.temperature=e.temperature;if(e.stopSequences!==void 0)a.stop=e.stopSequences;if(e.tools!==void 0){let c=e.tools.filter((p)=>p.kind==="portable");if(c.length!==e.tools.length)o("kimi:anthropic-tool-dropped");a.tools=c.map((p)=>({type:"function",function:{name:p.name,description:p.description,parameters:p.inputSchema}}))}if(e.toolChoice!==void 0)a.tool_choice=pP(e.toolChoice);if(e.reasoning?.mode==="betweenTools")o("kimi:reasoning-between-tools-as-off");if(e.reasoning!==void 0)o("kimi:reasoning-dropped");Object.assign(a,e.vendor?.[n]??{});let u=st(e),l=u.kind==="readable"?u.format:void 0;if(l!==void 0&&a.response_format===void 0)a.response_format={type:"json_schema",json_schema:{name:l.name,schema:l.schema,strict:!0}},o("kimi:response-format-translated");else if(u.kind==="tooDeep")delete a.response_format,o("kimi:response-schema-too-deep");return{body:a,degradations:r}}var mP="https://api.kimi.com/coding/v1/chat/completions",Db={buildRequest(e){let{body:t,degradations:n}=ds(e.request,e.model),r=e.credentials.accessToken??e.credentials.apiKey;if(r===null)throw e.fail("AUTH","kimi credential has no token");let o=[["Content-Type","application/json"],["Accept","text/event-stream"],["Authorization",`Bearer ${r}`],...qr(e.credentials.providerData)],i=ge(he(It.headers,o),It.order);return{request:{url:mP,method:"POST",headers:i,body:JSON.stringify(ze({...t,stream:!0},Fi))},degradations:n}},decode({body:e}){return ls(we(e))}};var Kc=le("kimi",Ci.capabilities,Db);var Mb={rate_limit_exceeded:"RATE_LIMIT",insufficient_quota:"QUOTA_EXHAUSTED",invalid_api_key:"AUTH",server_error:"UPSTREAM",context_length_exceeded:"BAD_REQUEST",content_policy_violation:"CONTENT_FILTER"},fP=new Set(["keepalive","response.created","response.queued","response.in_progress","response.output_item.added","response.output_item.done","response.content_part.added","response.content_part.done","response.output_text.delta","response.output_text.done","response.output_text.annotation.added","response.refusal.delta","response.refusal.done","response.reasoning_summary_part.added","response.reasoning_summary_part.done","response.reasoning_summary_text.delta","response.reasoning_summary_text.done","response.reasoning_text.delta","response.reasoning_text.done","response.function_call_arguments.delta","response.function_call_arguments.done","response.completed","response.incomplete","response.failed","error"]);function gP(e){try{let t=JSON.parse(e);return typeof t==="object"&&t!==null?t:null}catch{return null}}async function*ps(e,t={}){let n=t.nativeReasoning===!0,r=new Map,o=0,i=(l,c=0)=>{let p=`${l}:${c}`,d=r.get(p);if(d!==void 0)return d;let m=o++;return r.set(p,m),m},s=!1,a=!1,u=new Set;for await(let l of e){if(l.data==="[DONE]")continue;if(!fP.has(l.event)){yield{type:"error",code:"UPSTREAM",message:`unrecognized muse stream event "${l.event}"`,retryable:!1};return}let c=gP(l.data);if(c===null)continue;switch(l.event){case"response.created":yield{type:"start",id:String(c.response?.id??""),model:String(c.response?.model??"")};break;case"response.output_item.added":{let p=c.item??{};if(p.type==="reasoning")u.add(c.output_index??0),yield{type:"blockStart",index:i(c.output_index??0),block:n?{type:"providerNative",provider:"muse",blockType:"reasoning",data:{}}:{type:"thinking"}};else if(p.type==="function_call")s=!0,u.add(c.output_index??0),yield{type:"blockStart",index:i(c.output_index??0),block:{type:"toolUse",id:String(p.call_id),name:String(p.name)}};break}case"response.content_part.added":if(c.part?.type==="output_text")yield{type:"blockStart",index:i(c.output_index??0,c.content_index??0),block:{type:"text"}};break;case"response.output_text.delta":yield{type:"blockDelta",index:i(c.output_index??0,c.content_index??0),delta:{type:"text",text:String(c.delta??"")}};break;case"response.reasoning_summary_text.delta":yield{type:"blockDelta",index:i(c.output_index??0),delta:n?{type:"providerNative",provider:"muse",deltaType:"reasoning_summary_text.delta",data:{text:String(c.delta??"")}}:{type:"thinking",text:String(c.delta??"")}};break;case"response.function_call_arguments.delta":yield{type:"blockDelta",index:i(c.output_index??0),delta:{type:"toolJson",partial:String(c.delta??"")}};break;case"response.content_part.done":yield{type:"blockEnd",index:i(c.output_index??0,c.content_index??0)};break;case"response.output_item.done":{let p=c.output_index??0;if(u.delete(p)){let d=c.item??{};if(n&&d.type==="reasoning")yield{type:"blockDelta",index:i(p),delta:{type:"providerNative",provider:"muse",deltaType:"response.output_item.done",fold:"merge",data:d}};yield{type:"blockEnd",index:i(p)}}break}case"response.completed":case"response.incomplete":{a=!0;let p=c.response??{},d=p.incomplete_details?.reason,m=s?"toolUse":"endTurn";if(d==="max_output_tokens")m="maxTokens";else if(d==="content_filter")m="contentFilter";else if(d!==void 0||l.event==="response.incomplete"||p.status!==void 0&&p.status!=="completed"){yield{type:"error",code:"UPSTREAM",message:d!==void 0?`unrecognized muse incomplete reason "${String(d)}"`:p.status!==void 0&&p.status!=="incomplete"?`muse reported terminal response status "${String(p.status)}"`:"muse reported the response incomplete without a reason",retryable:!1};break}yield{type:"end",stopReason:m,usage:Ae(p.usage?.input_tokens??0,p.usage?.output_tokens??0,p.usage?.input_tokens_details?.cached_tokens??p.usage?.prompt_tokens_details?.cached_tokens??0)};break}case"response.failed":case"error":{a=!0;let p=c.response?.error??c.error??{},d=String(p.code??p.type),m=(Object.hasOwn(Mb,d)?Mb[d]:void 0)??"UPSTREAM";yield{type:"error",code:m,message:String(p.message??"upstream error"),retryable:ee[m]};break}default:break}}if(!a)yield{type:"error",code:"UPSTREAM",message:"upstream stream ended before response completion",retryable:ee.UPSTREAM}}function hP(e){let t=e.vendor?.openai;for(let n of["prompt_cache_key","session_id"]){let r=t?.[n];if(typeof r==="string"&&r.length>0)return r}return}function yP(e,t,n){let r=e.conversationId!==void 0&&e.conversationId.length>0?JSON.stringify({conversation:e.conversationId}):JSON.stringify({instructions:t,firstInput:n??null});return Bun.CryptoHasher.hash("sha256",r,"hex").slice(0,32)}function _P(e){let t=new Set;for(let n of e){let r=n;if(r.type==="function_call_output"&&typeof r.call_id==="string")t.add(r.call_id)}for(let n=e.length-1;n>=0;n--){let r=e[n];if(r.type!=="function_call"||typeof r.call_id!=="string")continue;if(t.has(r.call_id))continue;e.splice(n+1,0,{type:"function_call_output",call_id:r.call_id,output:""})}}function wP(e){switch(e.type){case"auto":return"auto";case"any":return"required";case"none":return"none";case"tool":return{type:"function",name:e.name}}}function ms(e,t){let n=[],r=[],o=(l)=>{if(!n.includes(l))n.push(l)};if(e.betas?.includes(Te))o("muse:context-1m-dropped");for(let l of e.messages){let c=[],p=l.role==="system";if(p)o("muse:system-turn-as-developer");let d=p?"developer":l.role,m=()=>{if(c.length===0)return;r.push({type:"message",role:d,content:[...c]}),c.length=0};for(let g of l.content)switch(g.type){case"text":c.push({type:d==="assistant"?"output_text":"input_text",text:g.text});break;case"image":c.push({type:"input_image",image_url:`data:${g.mediaType};base64,${g.data}`});break;case"thinking":o("muse:thinking-dropped");break;case"toolUse":m(),r.push({type:"function_call",call_id:g.id,name:g.name,arguments:JSON.stringify(g.input)});break;case"toolResult":{if(g.native!==void 0)o("muse:foreign-native-block-dropped");m();let h=jt(g.files??[]);if(r.push({type:"function_call_output",call_id:g.toolUseId,output:ke(g.content,h.text)}),g.images!==void 0){o("muse:tool-result-images-moved");for(let f of g.images)c.push({type:"input_image",image_url:`data:${f.mediaType};base64,${f.data}`})}if(h.parts.length>0)o("muse:tool-result-files-moved"),c.push(...h.parts);if(h.text.length>0)o("muse:tool-result-files-inlined");if(h.dropped)o("muse:files-dropped");break}case"providerNative":if(g.provider==="muse"){m();let{id:h,...f}=g.data;r.push({type:g.blockType,...f});break}o("muse:foreign-native-block-dropped");break}m()}_P(r);let i={model:t,input:r,stream:e.stream,store:!1},s=Ce(e.system,"muse",o);if(s!==void 0&&s.length>0)i.instructions=s;if(e.maxTokens!==void 0)i.max_output_tokens=e.maxTokens;if(e.temperature!==void 0)i.temperature=e.temperature;if(e.tools!==void 0){let l=e.tools.filter((c)=>c.kind==="portable");if(l.length!==e.tools.length)o("muse:provider-tool-dropped");i.tools=l.map((c)=>({type:"function",name:c.name,description:c.description,parameters:c.inputSchema}))}if(e.toolChoice!==void 0)i.tool_choice=wP(e.toolChoice);if(e.reasoning?.mode==="betweenTools")o("muse:reasoning-between-tools-as-off");if(e.reasoning!==void 0&&e.reasoning.mode!=="off"&&e.reasoning.mode!=="betweenTools")if(e.reasoning.mode==="budget")o("muse:reasoning-budget-dropped");else{let l=e.reasoning.effort??"medium";i.reasoning={effort:l,...e.reasoning.display==="omitted"||e.reasoning.display==="updates"?{}:{summary:"auto"}}}let a=hP(e)??yP(e,s??"",r[0]);Object.assign(i,e.vendor?.openai??{});let u=Wt(e,i,"muse");if(u!==void 0)o(u);return i.prompt_cache_key=a,{body:i,degradations:n,cacheKey:a}}var Ub={buildRequest(e){let{body:t,degradations:n,cacheKey:r}=ms(e.request,e.model);if(e.credentials.apiKey===null)throw e.fail("AUTH","muse credential has no model api key");let o=[["Content-Type","application/json"],["Authorization",`Bearer ${e.credentials.apiKey}`],["x-meta-ai-gateway-session-id",r]],i=ge(he(_t.headers,o),_t.order),s=t.include;return{decodeState:{nativeReasoning:Array.isArray(s)&&s.includes("reasoning.encrypted_content")},request:{url:jw(e.credentials.providerData),method:"POST",headers:i,body:JSON.stringify(ze({...t,stream:!0},Bi))},degradations:n}},decode({body:e,decodeState:t}){let n=t;return ps(we(e),{nativeReasoning:n?.nativeReasoning===!0})}};var Gc=le("muse",Ii.capabilities,Ub);var bP=new Set(["none","minimal","low","medium","high","xhigh","max","ultra","persistent"]);function Zc(e){return typeof e==="string"&&bP.has(e)}var We=(e,t,n={})=>({lite:!0,verbosity:"low",defaultEffort:e,lowestEffort:"low",nodeReplAutoReviewRequired:t,nodeReplDisabled:!1,supportsParallelToolCalls:!0,supportsReasoningEffortUpdates:!1,...n}),kP=We("low",!1),EP=Object.assign(Object.create(null),{"gpt-6-astra":We("low",!0,{supportsReasoningEffortUpdates:!0}),"gpt-6.1-sol":We("low",!0,{supportsReasoningEffortUpdates:!0}),"gpt-6.1-terra":We("low",!0,{supportsReasoningEffortUpdates:!0}),"gpt-6-sol":We("medium",!0),"gpt-6-luna":We("medium",!1),"gpt-5.6-sol":We("low",!1),"gpt-5.6-terra":We("medium",!1),"gpt-5.6-luna":We("medium",!1),"gpt-daybreak-blue-latest":We("low",!1),"gpt-daybreak-red-latest":We("medium",!1,{verbosity:"high"}),"gpt-5.5":We("medium",!1,{lite:!1}),"codex-auto-review":We("medium",!1)});function ct(e){return EP[e]??kP}var $b={rate_limit_exceeded:"RATE_LIMIT",insufficient_quota:"QUOTA_EXHAUSTED",invalid_api_key:"AUTH",server_error:"UPSTREAM",context_length_exceeded:"BAD_REQUEST",content_policy_violation:"CONTENT_FILTER"},vP=new Set(["keepalive","response.created","response.queued","response.in_progress","response.output_item.added","response.output_item.done","response.content_part.added","response.content_part.done","response.output_text.delta","response.output_text.done","response.output_text.annotation.added","response.refusal.delta","response.refusal.done","response.reasoning_summary_part.added","response.reasoning_summary_part.done","response.reasoning_summary_text.delta","response.reasoning_summary_text.done","response.reasoning_text.delta","response.reasoning_text.done","response.function_call_arguments.delta","response.function_call_arguments.done","response.metadata","response.completed","response.incomplete","response.failed","error"]);function TP(e){try{let t=JSON.parse(e);return typeof t==="object"&&t!==null?t:null}catch{return null}}async function*fs(e,t={}){let n=t.nativeReasoning===!0,r=new Map,o=0,i=(l,c=0)=>{let p=`${l}:${c}`,d=r.get(p);if(d!==void 0)return d;let m=o++;return r.set(p,m),m},s=!1,a=!1,u=new Set;for await(let l of e){if(l.data==="[DONE]")continue;if(!vP.has(l.event)){yield{type:"error",code:"UPSTREAM",message:`unrecognized OpenAI stream event "${l.event}"`,retryable:!1};return}let c=TP(l.data);if(c===null)continue;switch(l.event){case"response.created":yield{type:"start",id:String(c.response?.id??""),model:String(c.response?.model??"")};break;case"response.output_item.added":{let p=c.item??{};if(p.type==="reasoning")u.add(c.output_index??0),yield{type:"blockStart",index:i(c.output_index??0),block:n?{type:"providerNative",provider:"openai",blockType:"reasoning",data:{}}:{type:"thinking"}};else if(p.type==="function_call")s=!0,u.add(c.output_index??0),yield{type:"blockStart",index:i(c.output_index??0),block:{type:"toolUse",id:String(p.call_id),name:String(p.name)}};break}case"response.content_part.added":if(c.part?.type==="output_text")yield{type:"blockStart",index:i(c.output_index??0,c.content_index??0),block:{type:"text"}};break;case"response.output_text.delta":yield{type:"blockDelta",index:i(c.output_index??0,c.content_index??0),delta:{type:"text",text:String(c.delta??"")}};break;case"response.reasoning_summary_text.delta":yield{type:"blockDelta",index:i(c.output_index??0),delta:n?{type:"providerNative",provider:"openai",deltaType:"reasoning_summary_text.delta",data:{text:String(c.delta??"")}}:{type:"thinking",text:String(c.delta??"")}};break;case"response.function_call_arguments.delta":yield{type:"blockDelta",index:i(c.output_index??0),delta:{type:"toolJson",partial:String(c.delta??"")}};break;case"response.content_part.done":yield{type:"blockEnd",index:i(c.output_index??0,c.content_index??0)};break;case"response.output_item.done":{let p=c.output_index??0;if(u.delete(p)){let d=c.item??{};if(n&&d.type==="reasoning")yield{type:"blockDelta",index:i(p),delta:{type:"providerNative",provider:"openai",deltaType:"response.output_item.done",fold:"merge",data:d}};yield{type:"blockEnd",index:i(p)}}break}case"response.completed":case"response.incomplete":{a=!0;let p=c.response??{},d=p.incomplete_details?.reason,m=s?"toolUse":"endTurn";if(d==="max_output_tokens")m="maxTokens";else if(d==="content_filter")m="contentFilter";else if(d!==void 0||l.event==="response.incomplete"||p.status!==void 0&&p.status!=="completed"){yield{type:"error",code:"UPSTREAM",message:d!==void 0?`unrecognized OpenAI incomplete reason "${String(d)}"`:p.status!==void 0&&p.status!=="incomplete"?`OpenAI reported terminal response status "${String(p.status)}"`:"OpenAI reported the response incomplete without a reason",retryable:!1};break}yield{type:"end",stopReason:m,usage:Ae(p.usage?.input_tokens??0,p.usage?.output_tokens??0,p.usage?.input_tokens_details?.cached_tokens??p.usage?.prompt_tokens_details?.cached_tokens??0)};break}case"response.failed":case"error":{a=!0;let p=c.response?.error??c.error??{},d=String(p.code??p.type),m=(Object.hasOwn($b,d)?$b[d]:void 0)??"UPSTREAM";yield{type:"error",code:m,message:String(p.message??"upstream error"),retryable:ee[m]};break}default:break}}if(!a)yield{type:"error",code:"UPSTREAM",message:"upstream stream ended before response completion",retryable:ee.UPSTREAM}}var mn="internal_chat_message_metadata_passthrough";function Xc(e,t,n,r){return Hr(pn(r,`${e}:turn:${t}`),n+t)}function RP(e,t){if(!Array.isArray(e))return;if(t==="assistant")return e.map(()=>"unknown");let n=[];for(let r of e){let o=r.type;if(o==="input_text")n.push("user.text");else if(o==="input_image")n.push("user.image");else return}return n}function Fb(e){let{threadId:t}=e,n=Uc(t,e.startedAt??Number.POSITIVE_INFINITY),r=e.startedAt??n,o=e.requestId??t,i=e.idSalt,s=ob(t),a=[];if(e.tools!==void 0&&e.tools.length>0){let c=[{type:"namespace",name:"functions",description:"",tools:e.tools}];a.push({type:"additional_tools",id:`at_${is(s,JSON.stringify(c))}`,role:"developer",tools:c})}if(e.instructions!==void 0&&e.instructions.length>0)a.push({type:"message",id:`msg_${is(s,e.instructions)}`,role:"developer",content:[{type:"input_text",text:e.instructions}],[mn]:{turn_id:Xc(t,0,n,i),create_time:r/1000,content_item_kinds:["model.base_instructions"],...e.lite?{content_item_metadata:[{provenance:{type:"harness",hook:!1}}]}:{}}});let u=0,l=e.input.map((c,p)=>{let d=c;u=e.turnOf.get(d)??u;let m=Xc(t,u,n,i),g=(f)=>`${f}_${Hr(pn(i,`${o}:item:${p}`),r)}`,h=(r*1000+p)/1e6;switch(d.type){case"message":{let f=String(d.role),y=RP(d.content,f);if(f==="assistant")return{type:"message",status:"completed",id:g("msg"),role:f,content:Array.isArray(d.content)?d.content.map((_)=>_.type==="output_text"?{..._,annotations:[]}:_):d.content,[mn]:{turn_id:m,...y===void 0?{}:{content_item_kinds:y}}};return{type:"message",id:g("msg"),role:f,content:d.content,[mn]:{turn_id:m,create_time:h,...y===void 0?{}:{content_item_kinds:y},...e.lite&&Array.isArray(d.content)?{content_item_metadata:d.content.map((_)=>({provenance:e.toolParts.has(_)?{type:"tool"}:f==="user"?{type:"user"}:{type:"harness",hook:!1}}))}:{}}}}case"function_call":return{type:"function_call",status:"completed",id:g("fc"),name:d.name,arguments:d.arguments,call_id:d.call_id,[mn]:{turn_id:m}};case"function_call_output":return{type:"function_call_output",id:g("fco"),call_id:d.call_id,output:d.output,[mn]:{turn_id:m,create_time:h}};case"reasoning":{let{[mn]:f,...y}=d;return{...y,[mn]:{turn_id:m}}}default:return d}});if(e.effortUpdate!==void 0){let c=0;for(let p=0;p<e.input.length;p++){let d=e.input[p];if(d.type==="message"&&d.role==="user"&&Array.isArray(d.content)&&d.content.some((m)=>!e.toolParts.has(m)))c=p+1}l.splice(c,0,{type:"configuration_update",reasoning:{effort:e.effortUpdate}})}return{input:[...a,...l],turnId:Xc(t,u,n,i),startedAt:r}}function SP(e){return JSON.stringify(e).replace(/[^\x20-\x7e]/g,(t)=>`\\u${t.charCodeAt(0).toString(16).padStart(4,"0")}`)}function Bb(e){let{threadId:t,turnId:n}=e,r=`${t}:0`,o=e.installationId??nb(`installation:${e.installationSeed}`),i=Uc(t,e.startedAt),s=ct(e.model),a=SP({installation_id:o,session_id:t,thread_id:t,agent_name:"/root",turn_id:n,window_id:r,window_number:0,context_window_id:Hr(pn(e.idSalt,`${t}:context-window`),i),request_kind:"turn",history_initialization:"new",root_turn_id:n,thread_source:"user",turn_trigger:"user",sandbox:P_,sandbox_mode:"workspace-write",auto_review_enabled:!1,node_repl_auto_review_required:s.nodeReplAutoReviewRequired,node_repl_disabled:s.nodeReplDisabled,turn_started_at_unix_ms:e.startedAt,analytics_enabled:!1,model:e.model,reasoning_effort:e.effort});return{windowId:r,turnMetadata:a,clientMetadata:{turn_id:n,thread_id:t,"x-codex-turn-metadata":a,mcp_attribution:'{"status":"none"}',guardian_credits_requested:"true","x-codex-installation-id":o,"x-codex-window-id":r,root_turn_id:n,session_id:t}}}var xP=1024,AP=/^[\x21-\x7e]+$/;function OP(e){let t=e.vendor?.openai;for(let n of["prompt_cache_key","session_id"]){let r=t?.[n];if(typeof r==="string"&&r.length<=xP&&AP.test(r))return r}return}function CP(e,t,n,r){let o=OP(e);if(o!==void 0){if(Lc(o))return{key:o,seed:o};let s=JSON.stringify({key:o});return{key:Mc(pn(r,s)),seed:s}}let i=e.conversationId!==void 0&&e.conversationId.length>0?JSON.stringify({conversation:e.conversationId}):JSON.stringify({instructions:t,firstInput:n??null});return{key:Mc(pn(r,i)),seed:i}}function PP(e){let t=new Set;for(let n of e){let r=n;if(r.type==="function_call_output"&&typeof r.call_id==="string")t.add(r.call_id)}for(let n=e.length-1;n>=0;n--){let r=e[n];if(r.type!=="function_call"||typeof r.call_id!=="string")continue;if(t.has(r.call_id))continue;e.splice(n+1,0,{type:"function_call_output",call_id:r.call_id,output:""})}}function IP(e){switch(e.type){case"auto":return"auto";case"any":return"required";case"none":return"none";case"tool":return{type:"function",name:e.name}}}function LP(e,t,n){let r=ct(t),o=r.lite?{context:"all_turns"}:{},i=e.reasoning;if(i===void 0)return{effort:r.defaultEffort,...o};if(i.mode==="off")return n("openai:reasoning-off-as-lowest"),{effort:r.lowestEffort,...o};if(i.mode==="betweenTools")return{effort:r.lowestEffort,...o};if(i.mode==="budget")return n("openai:reasoning-budget-dropped"),{effort:r.defaultEffort,...o};return{effort:i.effort??r.defaultEffort,...i.display==="omitted"||i.display==="updates"?{}:{summary:"auto"},...o}}var zb=(e)=>typeof e==="object"&&e!==null&&!Array.isArray(e);function NP(e,t,n){let r=e;for(let[o,i]of Object.entries(t)){if(o==="client_metadata"){n("openai:client-metadata-replaced");continue}let s=r[o];if((o==="text"||o==="reasoning")&&zb(s)&&zb(i)){r[o]={...s,...i};continue}r[o]=i}}function gs(e,t,n={oauth:!1}){let r=[],o=[],i=(k)=>{if(!r.includes(k))r.push(k)},s=new WeakMap,a=new WeakSet,u=-1,l=(k)=>{o.push(k),s.set(k,Math.max(0,u))};if(e.betas?.includes(Te))i("openai:context-1m-dropped");for(let k of e.messages){let T=[],x=k.role==="system";if(x)i("openai:system-turn-as-developer");let Y=x?"developer":k.role,_e=()=>{if(T.length===0)return;l({type:"message",role:Y,content:[...T]}),T.length=0},Ne=!1;for(let te of k.content){if(k.role==="user"&&!Ne&&te.type!=="toolResult")Ne=!0,u++;switch(te.type){case"text":T.push({type:Y==="assistant"?"output_text":"input_text",text:te.text});break;case"image":T.push({type:"input_image",image_url:`data:${te.mediaType};base64,${te.data}`});break;case"thinking":if(!r.includes("openai:thinking-dropped"))i("openai:thinking-dropped");break;case"toolUse":_e(),l({type:"function_call",call_id:te.id,name:te.name,arguments:JSON.stringify(te.input)});break;case"toolResult":{if(te.native!==void 0)i("openai:anthropic-native-block-dropped");_e();let Je=jt(te.files??[]);if(l({type:"function_call_output",call_id:te.toolUseId,output:ke(te.content,Je.text)}),te.images!==void 0){i("openai:tool-result-images-moved");for(let Ke of te.images){let Qd={type:"input_image",image_url:`data:${Ke.mediaType};base64,${Ke.data}`};a.add(Qd),T.push(Qd)}}if(Je.parts.length>0){i("openai:tool-result-files-moved");for(let Ke of Je.parts)if(Ke!==null&&typeof Ke==="object")a.add(Ke);T.push(...Je.parts)}if(Je.text.length>0)i("openai:tool-result-files-inlined");if(Je.dropped)i("openai:files-dropped");break}case"providerNative":if(te.provider==="openai"){_e();let{id:Je,...Ke}=te.data;l({type:te.blockType,...Ke});break}i("openai:anthropic-native-block-dropped");break}}_e()}PP(o);let c={model:t,input:o,stream:e.stream,store:!1},p=Ce(e.system,"openai",i),d=n.oauth&&ct(t).lite;if(p!==void 0&&p.length>0&&!n.oauth)c.instructions=p;if(e.maxTokens!==void 0)if(n.oauth)i("openai:max-tokens-dropped");else c.max_output_tokens=e.maxTokens;if(e.temperature!==void 0)if(n.oauth)i("openai:temperature-dropped");else c.temperature=e.temperature;let m;if(e.tools!==void 0){let k=e.tools.filter((T)=>T.kind==="portable");if(k.length!==e.tools.length)i("openai:anthropic-tool-dropped");if(n.oauth){let T=k.map((x)=>({type:"function",name:x.name,description:x.description,strict:!1,parameters:x.inputSchema}));if(d)m=T;else c.tools=T}else c.tools=k.map((T)=>({type:"function",name:T.name,description:T.description,parameters:T.inputSchema}))}if(e.toolChoice!==void 0)c.tool_choice=IP(e.toolChoice);else if(n.oauth)c.tool_choice="auto";if(n.oauth)c.parallel_tool_calls=!d&&ct(t).supportsParallelToolCalls;if(e.reasoning?.mode==="betweenTools")i(n.oauth?"openai:reasoning-between-tools-as-lowest":"openai:reasoning-between-tools-as-off");if(n.oauth)c.reasoning=LP(e,t,i);else if(e.reasoning!==void 0&&e.reasoning.mode!=="off"&&e.reasoning.mode!=="betweenTools")if(e.reasoning.mode==="budget")r.push("openai:reasoning-budget-dropped");else{let k=e.reasoning.effort??"medium";c.reasoning={effort:k,...e.reasoning.display==="omitted"||e.reasoning.display==="updates"?{}:{summary:"auto"}}}let g=n.oauth?n.idSalt:void 0,{key:h,seed:f}=CP(e,p??"",o[0],g);if(n.oauth)c.include=["reasoning.encrypted_content"],c.text={verbosity:ct(t).verbosity},NP(c,e.vendor?.openai??{},i);else Object.assign(c,e.vendor?.openai??{});let y=Wt(e,c,"openai");if(y!==void 0)i(y);if(c.prompt_cache_key=h,!n.oauth)return{body:c,degradations:r,cacheKey:h};let _=Fb({threadId:h,input:o,turnOf:s,toolParts:a,tools:m,instructions:p,requestId:n.requestId,startedAt:n.startedAt,idSalt:g,lite:d,effortUpdate:ct(t).supportsReasoningEffortUpdates&&Zc(c.reasoning?.effort)?c.reasoning.effort:void 0});c.input=_.input;let w=c.reasoning?.effort,v=Bb({threadId:h,turnId:_.turnId,installationId:n.installationId,installationSeed:n.accountId??f,idSalt:g,model:t,effort:Zc(w)?w:ct(t).defaultEffort,startedAt:_.startedAt});return c.client_metadata=v.clientMetadata,{body:c,degradations:r,cacheKey:h,codex:v}}var DP="https://chatgpt.com/backend-api/codex/responses",MP="https://api.openai.com/v1/responses",qb=/^[\x21-\x7e]+$/;function UP(e,t){if(!qb.test(e))return;if(typeof t==="string"&&qb.test(t)&&!t.includes(";"))return`model=${e};tier=${t}`;return`model=${e}`}var Hb={buildRequest(e){let t=e.credentials.accessToken!==null,n=e.credentials.providerData.accountId,r=t?$c(e.credentials.providerData):{},{body:o,degradations:i,cacheKey:s,codex:a}=gs(e.request,e.model,{oauth:t,requestId:e.requestId,startedAt:e.requestStartedAt,accountId:typeof n==="string"?n:void 0,installationId:r.installationId,idSalt:r.idSalt}),u=[];if(a!==void 0){if(u.push(["x-codex-window-id",a.windowId],["x-codex-turn-metadata",a.turnMetadata]),ct(e.model).lite)u.push(["x-openai-internal-codex-responses-lite","true"]);let d=UP(e.model,o.service_tier);if(d!==void 0)u.push(["x-codex-routing-hint",d])}if(u.push(["x-client-request-id",s],["session-id",s],["thread-id",s]),t)u.push(["content-encoding","zstd"]);if(u.push(["content-type","application/json"]),t){if(u.push(["authorization",`Bearer ${e.credentials.accessToken}`]),typeof n==="string")u.push(["chatgpt-account-id",n]);u.push(["host","chatgpt.com"])}else if(e.credentials.apiKey!==null)u.push(["authorization",`Bearer ${e.credentials.apiKey}`]);else throw e.fail("AUTH","openai credential has no token");let l=ge(he(it.headers,u),it.order),c=e.request.vendor?.openai?.include;return{decodeState:{nativeReasoning:Array.isArray(c)&&c.includes("reasoning.encrypted_content")},request:{url:t?DP:MP,method:"POST",headers:l,body:JSON.stringify(ze({...o,stream:!0},zi)),...t?{bodyEncoding:"zstd"}:{}},degradations:i}},decode({body:e,decodeState:t}){let n=t;return fs(we(e),{nativeReasoning:n?.nativeReasoning===!0})}};var Vc=le("openai",Ni.capabilities,Hb);var Qc={anthropic:ac,openai:Vc,kimi:Kc,kilo:jc,grok:Wc,antigravity:gc,muse:Gc,custom:Hc};Object.setPrototypeOf(Qc,null);var Wb=Object.fromEntries(Object.entries(M).flatMap(([e,t])=>{let n=Qc[e],r=tc[e],o=ec[e];if(n===void 0||r===void 0||o===void 0)return[];return[[e,{...t,adapter:n,profile:r,bodyOrder:o}]]}));Object.setPrototypeOf(Wb,null);var Yc=w_,$P=600000;function jb(e,t){return t[e]?.callback}function Jc(e){return typeof e==="string"&&Object.hasOwn(M,e)}function FP(e,t){let n=t.pending.extra?.deviceId;if(typeof n==="string"&&n.trim().length>0)return n;if(e.needsDeviceId)throw new b("INTERNAL","device authorization did not provide a device id");return""}function el(e){let t=e.logger??se,n=Wu({now:e.now,ttlMs:$P,...e.coord===void 0?{}:{coord:e.coord}}),r=new Map,o=e.descriptors??M,i=(p)=>jb(p,o)?.uri??"",s=(p)=>typeof p==="string"&&Object.hasOwn(o,p),a=()=>Object.keys(e.providers);function u(p,d){let m=jb(p.provider,o);if(m===void 0)return d;let g=new URL(m.uri),h;try{h=new URL(d)}catch{return d}if(h.origin!==g.origin||h.pathname!==g.pathname)throw new b("BAD_REQUEST",`invalid ${m.label} callback URL`);let f=h.searchParams.get("code")?.trim()??"",y=h.searchParams.get("state")?.trim()??"";if(f.length===0||y.length===0)throw new b("BAD_REQUEST",`${m.label} callback URL must contain code and state`);if(y!==p.pending.state)throw new b("AUTH","authorization state mismatch");return`${f}#${y}`}async function l(p,d){let m=e.providers[p.provider];if(m===void 0)throw new b("BAD_REQUEST","provider does not support OAuth");let g=p.credentialId===void 0?null:await e.store.credentials.get(p.credentialId);if(p.credentialId!==void 0&&g===null)throw new b("BAD_REQUEST","credential not found");let h=g!==null&&g.provider===p.provider?g.providerData:void 0,f=await m.exchange({code:d,pending:p.pending,...h===void 0?{}:{providerData:h}},{http:e.http,now:e.now});if(p.credentialId!==void 0)return await e.store.credentials.updateSecrets(p.credentialId,f.secrets,f.expiresAt),await e.store.credentials.update(p.credentialId,{enabled:!0,disabledReason:null,disabledAt:null,accountEmail:f.accountEmail,providerData:f.providerData}),t.info("oauth reconnect completed",{provider:p.provider,credentialId:p.credentialId}),{id:p.credentialId};let y=crypto.randomUUID();return await e.store.credentials.create({id:y,provider:p.provider,label:p.label,authType:"oauth",enabled:!0,tier:1,weight:1,expiresAt:f.expiresAt,accountEmail:f.accountEmail,providerData:f.providerData,disabledReason:null,disabledAt:null,...f.secrets}),t.info("oauth connect completed",{provider:p.provider,credentialId:y}),{id:y}}async function c(p,d){try{let m=await d;return await n.take(p),{status:"complete",...m}}catch(m){if(Vi(m))return{status:"pending"};throw await n.take(p),m}}return{connectableIds:a,async start(p,d,m){let g=()=>new b("BAD_REQUEST",`provider must be one of ${a().join(", ")}`);if(!s(p))throw g();let h=e.providers[p];if(h===void 0)throw g();let f;if(m!==void 0){if(typeof m!=="string"||m.trim().length===0)throw new b("BAD_REQUEST","invalid credential for reconnect");let x=m.trim(),Y=await e.store.credentials.get(x);if(Y===null||Y.provider!==p||Y.authType!=="oauth")throw new b("BAD_REQUEST","invalid credential for reconnect");f=x}let y=typeof d==="string"&&d.trim().length>0?d.trim():p,_=i(p),w={http:e.http,now:e.now},v=await h.start({redirectUri:_},w),k=h.kind==="device"?await h.begin({deviceId:FP(h,v)},w):v;return{flowId:await n.put({provider:p,label:y,pending:k.pending,...f===void 0?{}:{credentialId:f},...k.userCode===void 0?{}:{userCode:k.userCode}}),authorizeUrl:k.authorizeUrl,userCode:k.userCode??null,kind:h.kind,supportsManualPaste:h.supportsManualPaste,pollIntervalMs:(k.pending.interval??5)*1000}},async finish(p,d){if(typeof p!=="string"||typeof d!=="string")throw new b("BAD_REQUEST","flowId and code are required");let m=await n.take(p);if(m===null)throw new b("BAD_REQUEST","unknown or expired authorization");return l(m,u(m,d))},async poll(p){if(typeof p!=="string")throw new b("BAD_REQUEST","flowId is required");let d=r.get(p);if(d!==void 0)return c(p,d);let m=(async()=>{let g=await n.peek(p);if(g===null)throw new b("BAD_REQUEST","unknown or expired authorization");return l(g,"")})().finally(()=>{r.delete(p)});return r.set(p,m),c(p,m)}}}function X(e,t){let n=e.safeParse(t);if(n.success)return n.data;let r=n.error.issues[0],o=r?.path??[],i=o.length===0?"(root)":o.map((a)=>an(String(a))).join("."),s=r===void 0?"invalid request":r.code==="unrecognized_keys"?`unrecognized key "${an(r.keys[0])}"`:r.message;throw new b("BAD_REQUEST",`${i}: ${s}`)}function Lt(e,t){if(e===void 0)return t;if(typeof e==="string"&&e.trim().length===0)return t;let n=Number(e);return Number.isFinite(n)?n:t}var $n=B().regex(cn,"must be a lowercase provider id"),tl=J({tools:ve().default(!1),images:ve().default(!1),reasoning:ve().default(!1)}).strict(),BP=J({provider:$n,endpointId:B().trim().min(1).optional(),model:B().min(1),tier:N().int().min(1),weight:N().positive(),costPerMTok:J({input:N().min(0),output:N().min(0),cacheRead:N().min(0).optional(),cacheWrite5m:N().min(0).optional(),cacheWrite1h:N().min(0).optional()}),contextWindow:N().int().positive().optional(),maxOutputTokens:N().int().positive().optional(),credentialId:B().trim().min(1).max(64).regex(/^[A-Za-z0-9_-]+$/,"credentialId must be an account id").optional(),capabilities:J({tools:ve(),images:ve(),reasoning:ve()})}).strict().refine((e)=>e.provider!=="custom"||e.endpointId!==void 0,{message:"custom targets require an endpointId",path:["endpointId"]}).refine((e)=>e.provider==="custom"||e.endpointId===void 0,{message:"endpointId is only meaningful for a custom target",path:["endpointId"]}),nl=J({id:B().min(1),strategy:At(["score","priority","roundRobin","weighted"]),isAlias:ve(),targets:An(BP).min(1,"a virtual model needs at least one target")}),Kb=8640000000000000,Gb=B().trim().min(1).max(hy),rl=J({label:B().min(1).default("api key"),modelAllowlist:An(B().min(1)).nullable().default(null),limits:gr.default({}),bodyLoggingOptOut:ve().default(!1),expiresAt:N().int().positive().max(Kb).nullable().default(null),guardrailPolicy:Gb.nullable().default(null),smartRouting:ve().default(!1)}).strict(),Zb=J({limits:gr}).strict(),Xb=J({modelAllowlist:An(B().min(1)).nullable()}).strict(),Vb=J({expiresAt:N().int().positive().max(Kb).nullable()}).strict(),Qb=J({policy:Gb.nullable()}).strict(),Yb=J({enabled:ve()}).strict(),Wr=J({keepLatest:N().int().min(1).max(100),maxAgeDays:N().int().min(1).max(3650)}).strict(),ol=J({weights:J({tier:N(),health:N(),quota:N(),cost:N(),latency:N(),load:N()}).strict(),maxAttempts:N().int().min(1).max(10),requestDeadlineMs:N().int().min(0),breakerThreshold:N().int().min(1),breakerCooldownMs:N().int().positive(),logRetentionDays:N().int().min(1),bodyRetentionDays:Wr.shape.maxAgeDays.optional(),quotaPollIntervalMs:N().int().min(0),rtkEnabled:ve(),autoCacheEnabled:ve(),ponytailMode:At(du),bodyLoggingEnabled:ve(),bodyLoggingCaptureStreamChunks:ve(),snapshotKeepLatest:Wr.shape.keepLatest.optional(),snapshotMaxAgeDays:Wr.shape.maxAgeDays.optional(),guardrailModel:B().trim().min(1).max(256).nullable().optional(),guardrailTimeoutMs:N().int().min(1).max(fu).optional(),guardrailHistoryTurns:N().int().min(1).max(yu).optional(),smartRouterEnabled:ve().optional(),smartRouterClassifierModel:B().trim().min(1).max(256).nullable().optional(),smartRouterLocalModel:B().trim().min(1).max(256).nullable().optional(),smartRouterPolicy:B().trim().min(1).max(gu).optional(),smartRouterTimeoutMs:N().int().min(1).max(hu).optional()}),il=J({label:B().min(1).optional(),enabled:ve().optional(),tier:N().int().min(1).optional(),weight:N().positive().optional()}).strict(),zP=tS("kind",[J({kind:Th("one"),credentialId:B().trim().min(1).max(64).regex(/^[A-Za-z0-9_-]+$/,"credentialId must be an account id")}).strict(),J({kind:Th("all")}).strict()]),Jb=(e)=>B().trim().min(1,e).max(64,e).regex(/^[A-Za-z0-9_-]+$/,e),sl=Jb("credentialId must be an account id"),ek=Jb("apiKeyId must be a key id"),qP=J({credentialId:sl,creditId:B().min(1).max(128).regex(/^[A-Za-z0-9_-]+$/).optional()}).strict(),hs=At(["credential","model","requestedModel","apiKey","provider","hour","day"]),al=At(["raw","daily"]),HP={raw:new Set(["credential","model","requestedModel","apiKey","provider","hour"]),daily:new Set(["credential","model","requestedModel","apiKey","provider","day"])};function ys(e,t){if(HP[e].has(t))return t;throw new b("BAD_REQUEST",`usage grain "${e}" cannot group by "${t}"`)}var ul="omnigateway.service",tk=500,WP=200;function cl(e){let t=e.logFile?.trim();if(t!==void 0&&t.length>0)return{kind:"file",path:t};if(e.unitInstalled)return{kind:"journal",unit:ul,scope:e.scope};return{kind:"none"}}function ll(e){let t=Lt(e,WP);return Math.floor(Math.min(Math.max(1,t),tk))}function jP(e,t){if(t.since!==void 0&&(e.at===null||e.at<=t.since))return!1;if(t.level===void 0||e.level===null)return!0;return Qo[e.level]>=Qo[t.level]}var KP=20,GP=5000;function ZP(e){return e.level!==void 0||e.since!==void 0?Math.min(e.lines*KP,GP):e.lines}async function XP(e,t,n){if(t.kind==="none")return"";if(t.kind==="file")return e.readFile(t.path,n)??"";let r=t.scope==="system"?["-u",t.unit]:[`--user-unit=${t.unit}`],o=await e.run(["journalctl",...r,"-n",String(n),"--no-pager","--output=cat"]);return o.code===0?o.stdout:""}function nk(e,t){let n=ll(t.lines);return e.split(`
|
|
1701
|
+
`).filter((r)=>r.trim().length>0).map(jh).filter((r)=>jP(r,t)).slice(-n)}async function Fn(e,t,n){let r={...n,lines:ll(n.lines)},o=await XP(e,t,ZP(r)),i=nk(o,r);return t.kind==="file"?{source:"file",path:t.path,lines:i}:{source:t.kind,lines:i}}var VP=1000,rk=["request bodies (the artifact corpus stays with the source; body rows are not written)","usage_daily older than the retained request logs (rebuilt from the rows that are carried)","quota readings and credential health (re-probed and re-measured within one poll interval)","sessions and pending OAuth flows (ephemeral; every operator logs in again)","plugin_* tables (their SQL is the source dialect's; carry them by hand)"];async function dl(e,t){let[n,r,o,i]=await Promise.all([t.keys.list(),t.config.listModels(),t.credentials.list(),t.config.getAdminPasswordHash()]);if(n.length>0||r.length>0||o.length>0||i!==null)throw new b("CONFLICT","the target already holds data; copy into an empty store");let s=await e.keys.list();for(let p of s)if(p.limits===null)throw new b("BAD_REQUEST",`api key ${p.id} has unreadable limits; repair it first`);let a={credentials:0,apiKeys:0,models:0,requestLogs:0,skippedPending:0},u=await e.config.getSettings();await t.config.putSettings(u);let l=await e.config.getAdminPasswordHash();if(l!==null)await t.config.setAdminPasswordHash(l);await t.config.setViewerPasswordHash(await e.config.getViewerPasswordHash());for(let p of await e.credentials.list()){let d=await p.secrets(),{secrets:m,openForInference:g,openForRefresh:h,openForUsage:f,createdAt:y,updatedAt:_,hasRefreshToken:w,tokenVersion:v,...k}=p;await t.credentials.create({...k,...d}),a.credentials+=1}for(let p of await e.config.listModels())await t.config.putModel(p),a.models+=1;for(let p of s)await t.keys.importRow(p),a.apiKeys+=1;let c=null;for(;;){let p=await e.usage.scan(c,VP);if(p.length===0)break;for(let m of p){if(m.state!=="done"){a.skippedPending+=1;continue}await t.usage.append(m),a.requestLogs+=1}let d=p[p.length-1];if(d===void 0)break;c={at:d.at,id:d.id}}return await t.usage.rebuildRollup(),{counts:a,notCarried:rk}}function lt(e,t){return e+"::"+t}async function fn(e,t){let[n,r,o,i,s]=await Promise.all([e.credentials.listRouting(),e.credentials.listHealth(),e.credentials.listQuota(),e.config.listModels(),e.config.getSettings()]),a=new Map(r.map((l)=>[lt(l.credentialId,l.model),l])),u=new Map;for(let l of o){let c=u.get(l.credentialId);if(c===void 0)u.set(l.credentialId,[l]);else c.push(l)}return{credentials:n,health:a,quota:u,models:new Map(i.map((l)=>[l.id,l])),settings:s,builtAt:t}}function QP(e){let t=new Set;for(let n of e.tools??[])if(n.kind==="provider")t.add(n.provider);for(let n of e.system??[])if(n.type==="providerNative")t.add(n.provider);for(let n of e.messages)for(let r of n.content){if(r.type==="providerNative")t.add(r.provider);if(r.type==="toolResult")for(let o of r.native??[])t.add(o.provider)}return t}function ok(e){let t=(r)=>r.some((o)=>o.type==="image"||o.type==="toolResult"&&(o.images!==void 0||o.files!==void 0)),n=t(e.system??[])||e.messages.some((r)=>t(r.content));return{tools:(e.tools?.length??0)>0,images:n,reasoning:e.reasoning!==void 0&&e.reasoning.mode!=="off"&&e.reasoning.mode!=="betweenTools"}}function YP(e,t,n){let r=Math.max(0,e-t);return Math.min(n*2**r,3600000)}function pl(e){let{request:t,model:n,snapshot:r,now:o}=e,i=e.providers??M,{breakerThreshold:s,breakerCooldownMs:a}=r.settings,u=ok(t),l=QP(t),c=[],p=[];for(let d of n.targets){if(!Object.hasOwn(i,d.provider)){p.push({kind:"target",credentialId:"",model:d.model,reason:"provider:missing"});continue}let m=l.size>1||l.size===1&&!l.has(d.provider)?"providerNative":["tools","images","reasoning"].find((_)=>u[_]&&!d.capabilities[_]),g=m==="providerNative"?"target":"account",h=!1,f=!1,y=!1;for(let _ of r.credentials){if(_.provider===d.provider)f=!0;if(!mu(d,_))continue;y=!0,h=d.credentialId!==void 0;let w=(x,Y="account")=>{p.push({kind:Y,credentialId:_.id,model:d.model,reason:x})};if(m!==void 0){w(`capability:${m}`,g);continue}if(!_.enabled){w("disabled");continue}if(si(_,o)){w("expired");continue}let v=!1,k=r.health.get(lt(_.id,d.model));if(k!==void 0){if(k.rateLimitedUntil!==null&&k.rateLimitedUntil>o){w("rateLimited");continue}if(k.breakerState==="open"){if(o-(k.openedAt??o)<YP(k.consecutiveFailures,s,a)){w("breaker:open");continue}v=!0}else if(k.breakerState==="halfOpen")v=!0}let T=(r.quota.get(_.id)??[]).find((x)=>x.limit!==null&&x.used>=x.limit&&(x.resetsAt===null||x.resetsAt>o));if(T!==void 0){w(`quota:${T.windowType}`);continue}c.push({credential:_,target:d,probe:v})}if(d.credentialId===void 0&&f&&!y)p.push({kind:"target",credentialId:"",model:d.model,reason:"endpoint:unmatched"});if(d.credentialId!==void 0&&!h)p.push({kind:"account",credentialId:d.credentialId,model:d.model,reason:"pin:missing"})}return{pairs:c,excluded:p}}var ik=0.5,ml=0.1;function jr(e){return Math.max(e,60000)*3}function JP(e,t){let n=e.limit;if(n===null||n<=0)return 1;let r=Math.max(0,Math.min(1,1-e.used/n));if(e.resetsAt===null)return r;let o=oi(e.windowType,e.windowMs),i=Math.max(0.05,Math.min(1,(e.resetsAt-t)/o));return Math.max(0,Math.min(1,r/i))}function Kr(e,t,n,r){let o=jr(r),i=t.filter((s)=>s.limit!==null&&s.limit>0&&s.observedAt>0&&n-s.observedAt<=o&&!Er(s,n));if(i.length===0)return e.authType==="apiKey"?1:ik;return Math.min(...i.map((s)=>JP(s,n)))}var sk=0.5;function eI(e,t,n){if(n===t)return 1;return(n-e)/(n-t)}function ak(e,t){return Math.min(1,t/e)}function uk(e){let t=e.filter((n)=>n>0);return t.length>0?Math.min(...t):null}var ck=1000;function tI(e){let t=ei(e),n=Math.max(0,Xh(e)-t),r=Math.min(e.maxTokens??ck,ck);return{cachedTok:t,freshTok:n,outTok:r}}function nI(e,{cachedTok:t,freshTok:n,outTok:r}){return n*e.costPerMTok.input+t*gy(e.costPerMTok)+r*e.costPerMTok.output}function fl(e){let t=1/(1+(e?.consecutiveFailures??0));return e?.breakerState==="open"||e?.breakerState==="halfOpen"?t*0.5:t}function lk(e,t){let{snapshot:n,now:r,load:o,recent:i}=t,s=n.settings.weights,a=e.map((h)=>h.target.tier),u=Math.min(...a),l=Math.max(...a),c=tI(t.request),p=e.map((h)=>nI(h.target,c)),d=uk(p),m=(h)=>i?.get(h)?.ewmaTtftMs??null,g=uk(e.flatMap((h)=>{let f=m(lt(h.credential.id,h.target.model));return f===null?[]:[f]}));return e.map((h,f)=>{let y=lt(h.credential.id,h.target.model),_=n.health.get(y),w=eI(h.target.tier,u,l),k=1/(1+(o.get(y)??0)),T=fl(_),x=Kr(h.credential,n.quota.get(h.credential.id)??[],r,n.settings.quotaPollIntervalMs),Y=p[f],_e=Y<=0||d===null?sk:ak(Y,d),Ne=m(y),te=Ne===null||Ne<=0||g===null?sk:ak(Ne,g),Je={tier:w,health:T,quota:x,cost:_e,latency:te,load:k},Ke=w*s.tier+T*s.health+x*s.quota+_e*s.cost+te*s.latency+k*s.load;return{credential:h.credential,target:h.target,probe:h.probe,score:Ke*h.credential.weight*h.target.weight,reasons:Je}})}function rI(e){return Object.entries(e).flatMap(([t,n])=>n.modelPrefixes.map((r)=>[r,t,n])).sort(([t],[n])=>n.length-t.length)}function dk(e,t,n){let r=Hi(n.catalog,t),o=Ur(n.catalog,t),i={provider:e,model:t,tier:1,weight:1,costPerMTok:r===null?{input:0,output:0}:{input:r.input,output:r.output,cacheRead:r.cacheRead,cacheWrite5m:r.cacheWrite5m,cacheWrite1h:r.cacheWrite1h},...o===null?{}:{contextWindow:o.contextWindow,maxOutputTokens:o.maxOutputTokens},capabilities:n.capabilities};return{id:`${e}/${t}`,targets:[i],strategy:"score",isAlias:!0}}function Bn(e,t,n=M){let r=t.models.get(e);if(r!==void 0)return r;let o=e.search(/[/:]/);if(o>0){let i=e.slice(0,o),s=e.slice(o+1),a=Object.hasOwn(n,i)?n[i]:void 0;if(a!==void 0&&i!=="custom"&&s.length>0)return dk(i,s,a);throw new b("NO_CANDIDATES",`unknown provider "${an(i)}" in model "${an(e)}"`)}for(let[i,s,a]of rI(n))if(e.startsWith(i))return dk(s,e,a);throw new b("NO_CANDIDATES",`model "${an(e)}" is not a configured virtual model and its provider could not be inferred`)}function gl(e,t,n=M){let r;try{r=Bn(e,t,n)}catch{return null}if(r.targets.length===0)return null;return r.targets.every((o)=>o.provider==="custom")?r:null}function oI(e,t,n,r){let o=(c)=>c.credential.weight*c.target.weight*n(c)*r(c),i=e.reduce((c,p)=>c+o(p),0);if(i<=0)return[...e].sort((c,p)=>p.score-c.score);let s=t*i,a=e.length-1;for(let c=0;c<e.length;c++)if(s-=o(e[c]),s<0){a=c;break}let u=e[a],l=e.filter((c,p)=>p!==a).sort((c,p)=>p.score-c.score);return[u,...l]}function pk(e){let{pairs:t,excluded:n}=pl(e);if(t.length===0)return{candidates:[],excluded:n};let r=lk(t,e),o=(a)=>Kr(a.credential,e.snapshot.quota.get(a.credential.id)??[],e.now,e.snapshot.settings.quotaPollIntervalMs),i=(a)=>fl(e.snapshot.health.get(lt(a.credential.id,a.target.model))),s=(a)=>e.load.get(lt(a.credential.id,a.target.model))??0;switch(e.model.strategy){case"priority":r.sort((a,u)=>a.target.tier-u.target.tier||u.score-a.score);break;case"roundRobin":{let a=(l)=>{let c=e.recent?.get(lt(l.credential.id,l.target.model))?.lastReleasedAt;return c===void 0?Number.POSITIVE_INFINITY:e.now-c},u=(l)=>o(l)<ml?1:0;r.sort((l,c)=>u(l)-u(c)||s(l)-s(c)||a(c)-a(l));break}case"weighted":return{candidates:oI(r,e.rand,o,i),excluded:n};case"score":r.sort((a,u)=>u.score-a.score);break}return{candidates:r,excluded:n}}var mk=3600000;function _s(e){if(e.resetsAt===null)return null;return e.resetsAt-oi(e.windowType,e.windowMs)}var hl=(e)=>({credentialId:e.credentialId,windowType:e.windowType,windowStartsAt:null,ratePerHour:null,exhaustsAt:null,survives:null,stale:!0});function yl(e,t){if(e.observedAt<=0)return hl(e);if(t.now-e.observedAt>jr(t.pollIntervalMs))return hl(e);if(Er(e,t.now))return{...hl(e),windowStartsAt:_s(e)};let n=_s(e),r=n===null?null:e.observedAt-n,o=r===null?null:r/mk,i=o===null?null:o<=0||e.used===0?0:e.used/o,s=e.limit===null||e.limit<=0||i===null||i<=0?null:e.observedAt+Math.max(0,e.limit-e.used)/i*mk;return{credentialId:e.credentialId,windowType:e.windowType,windowStartsAt:n,ratePerHour:i,exhaustsAt:s,survives:s===null||e.resetsAt===null||s>=e.resetsAt,stale:!1}}function Gr(e,t){return e.map((n)=>yl(n,t))}function _l(e){return{id:e.id,provider:e.provider,label:e.label,authType:e.authType,enabled:e.enabled,tier:e.tier,weight:e.weight,expiresAt:e.expiresAt,accountEmail:e.accountEmail,providerData:e.providerData,disabledReason:e.disabledReason,disabledAt:e.disabledAt,hasRefreshToken:e.hasRefreshToken,tokenVersion:e.tokenVersion,createdAt:e.createdAt,updatedAt:e.updatedAt}}async function Ye(e){return(await e.credentials.list()).map(_l)}async function bs(e,t){let n=await e.credentials.get(t);if(n===null)throw new b("BAD_REQUEST","no such credential");return _l(n)}function ws(e,t){if(typeof e!=="string"||e.trim().length===0)throw new b("BAD_REQUEST",`${t}: must not be empty`);return e.trim()}function iI(e){let t=ws(e.endpointId,"endpointId"),n=ws(e.endpointLabel,"endpointLabel"),r=ws(e.origin,"origin");if(e.protocol!=="chat_completions"&&e.protocol!=="responses")throw new b("BAD_REQUEST","protocol: unsupported protocol");let o;try{o=new URL(r)}catch{throw new b("BAD_REQUEST","origin: must be a valid URL")}if(o.protocol!=="http:"&&o.protocol!=="https:"||o.hostname.length===0||o.username.length>0||o.password.length>0||o.search.length>0||o.hash.length>0)throw new b("BAD_REQUEST","origin: must be an HTTP(S) server origin");let i=o.pathname.replace(/\/+$/,"");return{endpointId:t,endpointLabel:n,origin:o.origin,basePath:i,protocol:e.protocol}}function sI(e,t){let n=typeof e.basePath==="string"?e.basePath:"";return e.endpointId===t.endpointId&&e.endpointLabel===t.endpointLabel&&e.origin===t.origin&&n===t.basePath&&e.protocol===t.protocol}async function wl(e,t,n=se,r=Jc){let o=X($n,t.provider);if(!r(o))throw new b("BAD_REQUEST",`provider: no provider named "${o}"`);let i=ws(t.apiKey,"apiKey");if(t.label!==void 0&&typeof t.label!=="string")throw new b("BAD_REQUEST","label: must be a string");let s={};if(o==="custom"){let l=iI(t);if((await e.credentials.list()).filter((p)=>p.provider==="custom"&&p.providerData.endpointId===l.endpointId).some((p)=>!sI(p.providerData,l)))throw new b("CONFLICT","endpointId: metadata conflicts with existing endpoint");s=l}let a=t.label?.trim()||`${o} api key`,u=await e.credentials.create({id:crypto.randomUUID(),provider:o,label:a,authType:"apiKey",enabled:!0,tier:1,weight:1,expiresAt:null,accountEmail:null,providerData:s,disabledReason:null,disabledAt:null,accessToken:null,refreshToken:null,apiKey:i,idToken:null});return n.info("credential added",{credentialId:u.id,provider:u.provider}),_l(u)}async function bl(e,t){let n=await e.store.credentials.get(t);if(n===null)throw new b("BAD_REQUEST","no such credential");if(n.authType!=="oauth")throw new b("BAD_REQUEST",`credential "${t}" is an api key and has nothing to refresh`);return await e.refresh(n),bs(e.store,t)}async function kl(e){let[t,n,r,o]=await Promise.all([e.store.credentials.listHealth(),e.store.credentials.listQuota(),e.store.config.getSettings(),e.store.credentials.list()]),i={};for(let a of o){let u=await e.store.usage.lastUsedByCredential(a.id);if(u!==null)i[a.id]=u}let s=Gr(n,{now:e.now(),pollIntervalMs:r.quotaPollIntervalMs});return{health:t,quota:n,burn:s,lastUsed:i}}async function Zr(e,t){let[n,r,o]=await Promise.all([Ye(e),e.credentials.listQuota(),Ar(e,{now:t.now,sessionTtlMs:0}).isConfigured()]),i=new Map;for(let s of r){let a=i.get(s.credentialId);if(a===void 0)i.set(s.credentialId,[s]);else a.push(s)}return{adminConfigured:o,credentials:n.map(({id:s,provider:a,label:u,enabled:l})=>({id:s,provider:a,label:u,enabled:l,quota:i.get(s)??[]}))}}async function ks(e,t,n){let r=X(il,n),o=await e.store.credentials.get(t);if(o===null)throw new b("BAD_REQUEST","no such credential");if(await e.store.credentials.update(t,{...r.label===void 0?{}:{label:r.label},...r.enabled===void 0?{}:{enabled:r.enabled,disabledReason:r.enabled?null:"manual",disabledAt:r.enabled?null:e.now()},...r.tier===void 0?{}:{tier:r.tier},...r.weight===void 0?{}:{weight:r.weight}}),r.enabled!==void 0&&r.enabled!==o.enabled)(e.logger??se).info(r.enabled?"credential enabled":"credential disabled",{credentialId:t,provider:o.provider})}async function El(e,t){await e.credentials.remove(t)}import{basename as VG,dirname as vs,join as Ts,resolve as fk}from"path";var Es=null;async function Rs(e,t){if(Es!==null)throw new b("CONFLICT",`${Es} is already running on this database`);Es=e;try{return await t()}finally{Es=null}}var gk="snapshots";function gn(e){return Ts(vs(e.store.databasePath),gk)}function aI(e,t){return`db_${new Date(e).toISOString().replaceAll(":","-").replaceAll(".","-")}_${t}.sqlite`}var uI=/^db_(\d{4}-\d{2}-\d{2})T(\d{2})-(\d{2})-(\d{2})-(\d{3})Z_([A-Za-z]+)\.sqlite$/;function hk(e){let t=uI.exec(e);if(t===null)return null;let[,n,r,o,i,s,a]=t,u=Date.parse(`${n}T${r}:${o}:${i}.${s}Z`);if(Number.isNaN(u)||a===void 0)return null;return{at:u,reason:a}}function yk(e,t){let n=fk(gn(e)),r=fk(n,t);if(hk(t)===null||vs(r)!==n)throw new b("BAD_REQUEST","invalid snapshot id");let o=e.fs.realpath(r);if(o!==null&&vs(o)!==(e.fs.realpath(n)??n))throw new b("BAD_REQUEST","invalid snapshot id");return r}function Xr(e){let t=gn(e),n=[];for(let r of e.fs.readdir(t)){let o=hk(r);if(o===null)continue;n.push({id:r,filename:r,createdAt:o.at,sizeBytes:e.fs.stat(Ts(t,r))?.size??0,reason:o.reason})}return n.sort((r,o)=>o.createdAt-r.createdAt)}var cI=86400000,_k=1.1;function wk(e){return{keepLatest:e.snapshotKeepLatest,maxAgeDays:e.snapshotMaxAgeDays}}function lI(e,t,n){let r=gn(e),o=n-t.maxAgeDays*cI,i=Xr(e),s=i.find((u)=>u.reason==="preRestore")?.id,a=0;return i.forEach((u,l)=>{if(l===0)return;if(u.id===s)return;if(l<t.keepLatest&&u.createdAt>=o)return;e.fs.unlink(Ts(r,u.id)),a++}),a}async function bk(e,t){let n=gn(e),r=e.now(),o=aI(r,t.reason),i=Ts(n,o);if(e.fs.mkdir(n),e.fs.stat(i)!==null)throw new b("CONFLICT","a snapshot for this instant already exists");let s=e.fs.freeBytes(n),a=Math.ceil((e.fs.stat(e.store.databasePath)?.size??0)*_k);if(s!==null&&s<a)throw new b("CONFLICT","not enough free disk space to write a snapshot");try{await e.store.maintenance.snapshotTo(i)}catch(l){throw e.fs.unlink(i),l}let u={id:o,filename:o,createdAt:r,sizeBytes:e.fs.stat(i)?.size??0,reason:t.reason};if(t.force!==!0)lI(e,wk(await e.store.config.getSettings()),r);return u}async function vl(e,t){return Rs("a snapshot",()=>bk(e,t))}class Tl extends Error{preRestoreSnapshotId;cause;reopened;constructor(e,t,n){super("the database swap failed and the database may be incomplete");this.preRestoreSnapshotId=e;this.cause=t;this.reopened=n;this.name="SwapFailedError"}}var dI=5;function pI(e){if(e.length===0)return"it has no tables at all";let t=e.slice(0,dI),n=e.length-t.length;return`it has ${t.join(", ")}${n>0?` and ${n} more`:""}`}async function kk(e,t){let n=await e.store.maintenance.inspect(t);if(!n.ok)throw new b("BAD_REQUEST",n.quickCheck==="ok"?`that file is a database, but not one of ours: ${pI(n.tables)}`:`that file failed its integrity check: ${n.quickCheck}`);return n}async function mI(e,t){let n=await kk(e,t.path),r=await bk(e,{reason:"preRestore",force:!0}),o=await e.store.config.getAdminPasswordHash(),i=await e.store.config.getViewerPasswordHash(),s=e.store.databasePath,a=`${s}.incoming`;try{if(t.consume)e.fs.rename(t.path,a);else e.fs.copyFile(t.path,a)}catch(c){throw e.fs.unlink(a),c}try{e.store.close(),e.fs.unlink(`${s}-wal`),e.fs.unlink(`${s}-shm`),e.fs.rename(a,s),await e.store.reopen()}catch(c){let p=!0;try{await e.store.reopen()}catch{p=!1}throw new Tl(r.id,c,p)}let u=await e.store.config.getAdminPasswordHash(),l=await e.store.config.getViewerPasswordHash();try{await e.store.usage.rebuildRollup()}catch(c){(e.logger??se).warn("usage rollup not rebuilt after the swap; run omni doctor",{reason:W(c,"unknown")})}try{await e.reapplyPluginSchema?.()}catch(c){(e.logger??se).warn("plugin schema not reapplied after the swap; restart",{reason:W(c,"unknown")})}return{ok:!0,counts:n.counts,preRestoreSnapshot:r,adminPasswordChanged:u!==o,viewerPasswordChanged:l!==i}}async function Rl(e,t){let n=yk(e,t);if(e.fs.stat(n)===null)throw new b("BAD_REQUEST","no such snapshot");return Rs("a restore preview",async()=>{let r=await kk(e,n),o=await e.store.maintenance.inspect(e.store.databasePath);return{snapshot:r.counts,live:o.ok?o.counts:null}})}async function Sl(e,t){let n=yk(e,t);if(e.fs.stat(n)===null)throw new b("BAD_REQUEST","no such snapshot");return Rs("a restore",()=>mI(e,{path:n,consume:!1}))}async function xl(e){let t=await e.store.bodies.prune(e.now()),n=await e.store.bodies.sweepOrphans();return{removed:t,orphans:n}}async function Al(e){return Rs("a vacuum",async()=>{let t=e.fs.stat(e.store.databasePath)?.size??0,n=e.now();await e.store.maintenance.vacuum();let r=e.fs.stat(e.store.databasePath)?.size??0;return{reclaimedBytes:Math.max(0,t-r),durationMs:Math.max(0,e.now()-n)}})}async function Ol(e){let t=e.store.databasePath,[n,r,o]=await Promise.all([e.store.maintenance.stats(),e.store.maintenance.tables(),e.store.config.getSettings()]),i={engine:e.store.engine,location:t,stats:n,logicalBytes:n.pageSize*n.pageCount,freePageBytes:n.pageSize*n.freelistCount,retention:wk(o),tables:r};if(e.store.engine==="postgres")return{...i,fileBytes:0,walBytes:0,bodiesBytes:r.find((a)=>a.name==="request_bodies")?.bytes??0,freeDiskBytes:null,snapshots:{count:0,totalBytes:0,latestAt:null}};let s=Xr(e);return{...i,fileBytes:e.fs.stat(t)?.size??0,walBytes:e.fs.stat(`${t}-wal`)?.size??0,bodiesBytes:e.fs.dirBytes(kr(t)),freeDiskBytes:e.fs.freeBytes(vs(t)),snapshots:{count:s.length,totalBytes:s.reduce((a,u)=>a+u.sizeBytes,0),latestAt:s[0]?.createdAt??null}}}async function Cl(e,t,n){let r=X(tl,n),o=e.now(),i=await fn(e.store,o),s=i.models.get(t);if(s===void 0)throw new b("MODEL_UNAVAILABLE",`no virtual model "${t}"`);let a={model:t,messages:[{role:"user",content:r.images?[{type:"image",mediaType:"image/png",data:""}]:[{type:"text",text:""}]}],stream:!1,...r.tools?{tools:[{kind:"portable",name:"probe",description:"",inputSchema:{type:"object"}}]}:{},...r.reasoning?{reasoning:{mode:"adaptive"}}:{}},u=pk({request:a,model:s,snapshot:i,now:o,rand:0,load:new Map,...e.providers===void 0?{}:{providers:e.providers}});return{modelId:s.id,strategy:s.strategy,deterministic:s.strategy!=="weighted",rankedAt:o,candidates:u.candidates.map((l)=>({credentialId:l.credential.id,credentialLabel:l.credential.label,provider:l.credential.provider,model:l.target.model,tier:l.target.tier,score:l.score,reasons:l.reasons})),excluded:u.excluded.map((l)=>({credentialId:l.credentialId,model:l.model,reason:l.reason}))}}async function Pl(e,t,n=Date.now()){let r=(await e.keys.list()).filter((s)=>s.revokedAt===null&&s.guardrailPolicy!==null).length,o=await fn(e,n),i=o.settings.guardrailModel;if(r===0)return{keysWithPolicy:r,model:i,problem:null};if(i===null)return{keysWithPolicy:r,model:i,problem:"unconfigured"};try{return Bn(i,o,t),{keysWithPolicy:r,model:i,problem:null}}catch{return{keysWithPolicy:r,model:i,problem:"unresolved"}}}function fI(e){let t=new Set;for(let n of["requests","tokens","spend"]){let r=e[n];if(r===void 0)continue;for(let o of On){let i=r[o];if(i!==void 0&&i!==null)t.add(o)}}return[...t]}async function gI(e,t,n,r){if(n===null)return[];let o=await Ek(e,t,n,null,r);for(let i of Object.keys(n.models??{})){let s=Qa(n,i);if(s===void 0)continue;o.push(...await Ek(e,t,s,i,r))}return o}async function Ek(e,t,n,r,o){let i=new Map;for(let a of fI(n)){let u=o-Fo[a];i.set(a,await e.usage.sumSince(t,u,r??void 0))}let s=[];for(let a of["requests","tokens","spend"]){let u=n[a];if(u===void 0)continue;for(let l of On){let c=u[l];if(c===void 0||c===null)continue;let p=i.get(l),d=p===void 0?null:a==="requests"?p.requests:a==="tokens"?p.tokens:p.costUsd;s.push({dimension:a,window:l,limit:c,used:d,model:r})}}if(n.concurrency!==void 0&&n.concurrency!==null)s.push({dimension:"concurrency",window:null,limit:n.concurrency,used:null,model:r});return s}async function zn(e,t,n){return{id:t.id,label:t.label,prefix:t.prefix,modelAllowlist:t.modelAllowlist,limits:t.limits,limitUsage:await gI(e,t.id,t.limits,n),bodyLoggingOptOut:t.bodyLoggingOptOut,createdAt:t.createdAt,revokedAt:t.revokedAt,expiresAt:t.expiresAt,guardrailPolicy:t.guardrailPolicy,smartRouting:t.smartRouting}}async function Nt(e,t=Date.now()){let n=await e.keys.list();return Promise.all(n.map((r)=>zn(e,r,t)))}async function Il(e,t){let n=X(rl,t),r=Pu(),o=await e.keys.create({id:crypto.randomUUID(),label:n.label,prefix:r.slice(0,12),hash:await xr(r),modelAllowlist:n.modelAllowlist,limits:n.limits,bodyLoggingOptOut:n.bodyLoggingOptOut,expiresAt:n.expiresAt,guardrailPolicy:n.guardrailPolicy,smartRouting:n.smartRouting});return{id:o.id,label:o.label,prefix:o.prefix,key:r}}async function Ll(e,t,n,r=Date.now()){let o=X(Zb,n),i=await e.keys.get(t);if(i===null)throw new b("BAD_REQUEST","no such api key");return await e.keys.setLimits(t,o.limits),zn(e,{...i,limits:o.limits},r)}async function Nl(e,t,n,r=Date.now()){let o=X(Xb,n),i=await e.keys.get(t);if(i===null)throw new b("BAD_REQUEST","no such api key");return await e.keys.setModelAllowlist(t,o.modelAllowlist),zn(e,{...i,modelAllowlist:o.modelAllowlist},r)}async function Dl(e,t,n,r=Date.now()){let o=X(Vb,n),i=await e.keys.get(t);if(i===null)throw new b("BAD_REQUEST","no such api key");return await e.keys.setExpiry(t,o.expiresAt),zn(e,{...i,expiresAt:o.expiresAt},r)}async function Ml(e,t,n,r=Date.now()){let o=X(Qb,n),i=await e.keys.get(t);if(i===null)throw new b("BAD_REQUEST","no such api key");return await e.keys.setGuardrailPolicy(t,o.policy),zn(e,{...i,guardrailPolicy:o.policy},r)}async function Ul(e,t,n,r=Date.now()){let o=X(Yb,n),i=await e.keys.get(t);if(i===null)throw new b("BAD_REQUEST","no such api key");return await e.keys.setSmartRouting(t,o.enabled),zn(e,{...i,smartRouting:o.enabled},r)}async function $l(e,t){await e.keys.revoke(t)}var qn={kind:"all"};function Vr(e){return e.kind==="key"?e.apiKeyId:void 0}function Hn(e){return e.kind==="none"||e.kind==="key"&&e.apiKeyId===""}var vk=500,hI=100;async function Fl(e,t,n=qn){let r=X(al,t.grain??"raw"),o=ys(r,X(hs,t.groupBy??"model")),i=t.splitBy===void 0?void 0:ys(r,X(hs,t.splitBy));if(n.kind!=="all"){for(let l of[o,i])if(l==="credential")throw new b("BAD_REQUEST","this dimension is not available on this surface");if(t.credentialId!==void 0||t.apiKeyId!==void 0)throw new b("BAD_REQUEST","this filter is not available on this surface")}let s=t.credentialId===void 0?void 0:X(sl,t.credentialId),a=t.apiKeyId===void 0?void 0:X(ek,t.apiKeyId);if(Hn(n))return[];let u=n.kind==="all"?a:Vr(n);return e.store.usage.aggregate({grain:r,groupBy:o,...i===void 0?{}:{splitBy:i},...u===void 0?{}:{apiKeyId:u},...s===void 0?{}:{credentialId:s},since:Lt(t.since,0),until:Lt(t.until,e.now())})}function Bl(e){let t=Lt(e,hI);return Math.floor(Math.min(Math.max(1,t),vk))}var Sk=1,xk=128,yI=256,Tk=B().min(1).max(xk),Ss=B().min(1).max(yI),Rk=Xa([N(),B().regex(/^-?\d+$/,"must be epoch milliseconds").transform(Number)]).pipe(N().int()),_I=J({cursor:B().max(512).optional(),limit:Xa([B(),N()]).optional(),since:Rk.optional(),until:Rk.optional(),state:At(["pending","done"]).optional(),failed:At(["true","false"]).optional(),provider:$n.optional(),requestedModel:Ss.optional(),resolvedModel:Ss.optional(),model:Ss.optional(),credentialId:Tk.optional(),apiKeyId:Tk.optional(),errorCode:Ss.optional()}).strict();function wI(e){let t={};for(let[n,r]of Object.entries(e)){if(r===void 0||r==="")continue;t[n]=typeof r==="boolean"?String(r):r}return t}function Hl(e){let t=JSON.stringify({v:Sk,at:e.at,id:e.id});return Buffer.from(t,"utf8").toString("base64url")}function Ak(e){let t=()=>{throw new b("BAD_REQUEST","cursor: malformed")},n;try{n=JSON.parse(Buffer.from(e,"base64url").toString("utf8"))}catch{return t()}if(typeof n!=="object"||n===null||Array.isArray(n))return t();let r=n;if(Object.keys(r).length!==3)return t();if(r.v!==Sk)throw new b("BAD_REQUEST","cursor: unknown version");let{at:i,id:s}=r;if(typeof i!=="number"||!Number.isSafeInteger(i))return t();if(typeof s!=="string"||s.length===0||s.length>xk)return t();let a={at:i,id:s};if(Hl(a)!==e)return t();return a}function Ok(e,t){let n=X(_I,wI(e)),{since:r,until:o}=n;if(r!==void 0&&o!==void 0&&r>o)throw new b("BAD_REQUEST","since: must not be after until");let i=Vr(t);return{limit:Bl(n.limit),cursor:n.cursor===void 0?null:Ak(n.cursor),...n.apiKeyId===void 0?{}:{apiKeyId:n.apiKeyId},...i===void 0?{}:{apiKeyId:i},...n.credentialId===void 0?{}:{credentialId:n.credentialId},...n.provider===void 0?{}:{provider:n.provider},...n.requestedModel===void 0?{}:{requestedModel:n.requestedModel},...n.resolvedModel===void 0?{}:{resolvedModel:n.resolvedModel},...n.model===void 0?{}:{model:n.model},...n.errorCode===void 0?{}:{errorCode:n.errorCode},...n.state===void 0?{}:{state:n.state},...n.failed==="true"?{failed:!0}:{},...r===void 0?{}:{since:r},...o===void 0?{}:{until:o}}}async function xs(e,t={},n=qn){let r=Ok(t,n);if(Hn(n))return{logs:[],nextCursor:null};let o=await e.usage.page(r);return{logs:o.logs,nextCursor:o.next===null?null:Hl(o.next)}}var bI=500,zl=["id","state","at","apiKeyId","requestedModel","resolvedProvider","resolvedModel","credentialId","attempts","status","errorCode","inputTokens","outputTokens","cacheReadTokens","cacheWriteTokens","ttftMs","durationMs","costUsd","degradations","rtkApplied","rtkFilterHits","rtkOriginalCodeUnits","rtkCompressedCodeUnits","rtkEstimatedTokensSaved","rtkFilters"];function Ck(e){if(e===null||e===void 0)return"";let t=Array.isArray(e)?JSON.stringify(e):String(e),n=t.trimStart().charAt(0),r="=+-@".includes(n)&&n!==""?`'${t}`:t;return/[",\r\n]/.test(r)?`"${r.replaceAll('"','""')}"`:r}var Pk=(e)=>`${e.map(Ck).join(",")}\r
|
|
1702
|
+
`;function ql(e){return e==="csv"?Pk(zl):""}function Ik(e,t){if(e==="jsonl"){let n={};for(let r of zl)n[r]=t[r];return`${JSON.stringify(n)}
|
|
1703
|
+
`}return Pk(zl.map((n)=>t[n]))}var kI=At(["csv","jsonl"]);async function*Wl(e,t,n=qn){let{format:r,...o}=t,i=X(kI,r??"csv");if(t.since===void 0||t.since==="")throw new b("BAD_REQUEST","since: required for export");if(t.until===void 0||t.until==="")throw new b("BAD_REQUEST","until: required for export");let s=Ok({...o,limit:bI,cursor:void 0},n);if(Hn(n)){yield ql(i);return}let a=await e.usage.page(s);yield ql(i);for(;;){for(let u of a.logs)yield Ik(i,u);if(a.next===null)return;a=await e.usage.page({...s,cursor:a.next})}}function Lk(e,t){let n=[e.contextWindow,t.contextWindow].filter((o)=>o!==void 0),r=[e.maxOutputTokens,t.maxOutputTokens].filter((o)=>o!==void 0);return{...n.length===0?{}:{contextWindow:Math.min(...n)},...r.length===0?{}:{maxOutputTokens:Math.min(...r)}}}function EI(e,t,n,r){let o=n!==void 0?[n.authType]:t.size===0?["apiKey"]:[...t],i=r[e.provider]?.catalog,s={};for(let l of i===void 0?[]:o){let c=i===void 0?null:Ur(i,e.model,l);if(c===null)continue;s=Lk(s,{contextWindow:c.contextWindow,maxOutputTokens:c.maxOutputTokens})}let a=e.contextWindow??s.contextWindow,u=e.maxOutputTokens??s.maxOutputTokens;return{...a===void 0?{}:{contextWindow:a},...u===void 0?{}:{maxOutputTokens:u}}}function vI(e){let t=new Map,n=[];for(let r of e){if(!r.enabled)continue;let o=t.get(r.provider)??new Set;o.add(r.authType),t.set(r.provider,o),n.push(r)}return{byProvider:t,routable:n}}function jl(e,t,n=M){let{byProvider:r,routable:o}=vI(t),i={};for(let s of e.targets)i=Lk(i,EI(s,r.get(s.provider)??new Set,Ln(s,o),n));return i}function Kl(e,t=M){let n=e.targets.length===1?e.targets[0]:void 0;if(n===void 0)return e.id;return t[n.provider]?.catalog.models.find((o)=>o.id===n.model)?.label??e.id}async function hn(e){return e.config.listModels()}async function As(e,t){let n=(await e.config.listModels()).find((r)=>r.id===t);if(n===void 0)throw new b("MODEL_UNAVAILABLE",`no virtual model "${t}"`);return n}var TI={oauth:"OAuth",apiKey:"API key"};function Gl(e){return e.map((t)=>TI[t]).join(" or ")}function RI(e){let t=new Map;for(let n of e){let r=t.get(n.provider)??new Set;r.add(n.authType),t.set(n.provider,r)}return t}function Nk(e){return`${e.provider}\x00${e.model}`}function SI(e,t,n){let r=RI(t),o=new Set((n?.targets??[]).map(Nk));for(let i of e.targets){let s=Ln(i,t);if(s===void 0&&o.has(Nk(i)))continue;let a=s===void 0?r.get(i.provider):new Set([s.authType]);if(a===void 0)continue;let u=M[i.provider]?.catalog,l=u===void 0?U_:M_(u,i.model);if(l.some((d)=>a.has(d)))continue;let c=s===void 0?`every ${i.provider} credential here is ${Gl([...a])}`:`this target is pinned to "${s.label}", which is ${Gl([...a])}`,p=s===void 0?"connect the other kind, or pick a model this one can reach":"pin it to the other kind, or pick a model this account can reach";return new b("BAD_REQUEST",`${i.provider} serves "${i.model}" to ${Gl(l)} credentials only, and ${c} \u2014 ${p}`)}return null}async function Zl(e,t,n){let r=X(nl,n);if(r.id!==t)throw new b("BAD_REQUEST","model id in the path and body must match");let o=await e.credentials.list(),i=new Set(o.filter((u)=>u.provider==="custom").map((u)=>u.providerData.endpointId).filter((u)=>typeof u==="string")),s=r.targets.find((u)=>u.provider==="custom"&&(u.endpointId===void 0||!i.has(u.endpointId)));if(s!==void 0)throw new b("BAD_REQUEST",`custom endpoint "${s.endpointId}" has no credential`);let a=SI(r,o,(await e.config.listModels()).find((u)=>u.id===t));if(a!==null)throw a;await e.config.putModel(r)}async function Xl(e,t){await e.config.removeModel(t)}import{copyFileSync as eL,mkdirSync as Gk,readdirSync as id,readFileSync as Kk,realpathSync as tL,renameSync as Zk,rmSync as Xk,statfsSync as nL,statSync as Ns,writeFileSync as rL}from"fs";import{join as oL}from"path";import{Buffer as II}from"buffer";import{basename as LI,join as je,resolve as Fk,sep as NI}from"path";var Wn=3,Os="0.1.9";var Uk=["storage","files","net:outbound","events:request","events:limit","channels","provider"],xI=/^[a-z][a-z0-9-]{0,31}$/,AI=B().regex(xI,"id must match /^[a-z][a-z0-9-]{0,31}$/"),Dk=B().min(1).refine((e)=>!e.startsWith("/")&&!e.split("/").includes(".."),{message:"entry must be a relative path with no '..' segment"}),OI=B().refine((e)=>{let t;try{t=new URL(e)}catch{return!1}if(t.protocol!=="https:"&&t.protocol!=="http:")return!1;if(t.hostname==="")return!1;if(t.pathname!=="/"||t.search!==""||t.hash!=="")return!1;return e===t.origin||e===`${t.origin}/`},{message:"origin must be scheme://host with no path, query or fragment"}),CI=J({label:B().min(1).max(32)}).strict(),Mk=["net:outbound","provider"],PI=J({id:AI,name:B().min(1).max(64),version:B().min(1).max(32),api:N().int().nonnegative(),sdk:B().min(1).max(32).optional(),server:Dk.optional(),ui:Dk.optional(),nav:CI.optional(),capabilities:An(At(Uk)).default([]),origins:An(OI).min(1).optional(),defaults:vh(B(),Ga()).optional()}).strict().refine((e)=>e.server!==void 0||e.ui!==void 0,{message:"manifest must declare a server entry, a ui entry, or both"}).refine((e)=>e.ui===void 0||e.sdk!==void 0,{message:"a ui entry requires an sdk range"}).refine((e)=>!Mk.some((t)=>e.capabilities.includes(t))||e.origins!==void 0,{message:"net:outbound and provider each require origins"}).refine((e)=>Mk.some((t)=>e.capabilities.includes(t))||e.origins===void 0,{message:"origins requires the net:outbound or provider capability"});function Cs(e){let t=PI.safeParse(e);if(t.success)return{ok:!0,manifest:t.data};let n=t.error.issues[0],r=n?.path.join(".")??"",o=n?.message??"invalid manifest";return{ok:!1,reason:r===""?o:`${r}: ${o}`}}function Vl(e){return e.api===Wn}var Bk="plugins";function Pe(e){return je(e,Bk)}var Gt="omni-plugin.json",Ps=".omni-install.json",_n=33554432,Kn=/^[a-z][a-z0-9-]{0,31}$/,DI="package";function MI(e,t){let n=e.readText(je(t,Gt));if(n===null)return{check:"manifest",reason:`no ${Gt}`,fatal:!0};let r;try{r=JSON.parse(n)}catch(i){let s=W(i,String(i));return{check:"manifest",reason:`${Gt} is not valid JSON: ${s}`,fatal:!0}}let o=Cs(r);if(!o.ok)return{check:"manifest",reason:o.reason,fatal:!0};return o.manifest}function $k(e,t,n,r,o){let i=Fk(t,n);if(i!==t&&!i.startsWith(`${t}${NI}`))return{check:"entry",reason:`${r} entry resolves outside the plugin directory`,fatal:o};if(!e.isFile(i))return{check:"entry",reason:`${r} entry ${n} does not exist`,fatal:o};return null}function td(e,t,n){let r=je(Pe(t),n);if(!Kn.test(n)||!e.fs.isDirectory(r))throw new b("BAD_REQUEST",`no plugin "${n}" installed under ${Pe(t)}`);return zk(e,r,n)}function zk(e,t,n){let r=[],o=MI(e.fs,t);if(!("id"in o))return r.push(o),{id:n,path:t,manifest:null,problems:r,loadable:!1};let i=o;if(i.id!==n)r.push({check:"id",reason:`manifest id ${i.id} does not match its directory ${n}`,fatal:!0});if(!Vl(i))r.push({check:"api",reason:`plugin api ${i.api} is not supported by this host (api ${Wn})`,fatal:!0});if(i.server!==void 0){let a=$k(e.fs,t,i.server,"server",!0);if(a!==null)r.push(a)}if(i.ui!==void 0){let a=$k(e.fs,t,i.ui,"ui",!1);if(a!==null)r.push(a)}let s=UI(e,i);if(s!==null)r.push(s);return{id:n,path:t,manifest:i,problems:r,loadable:!r.some((a)=>a.fatal)}}function UI(e,t){if(t.ui===void 0||t.sdk===void 0)return null;if(e.sdkVersion===void 0)return null;if(Bun.semver.satisfies(e.sdkVersion,t.sdk))return null;return{check:"sdk",reason:`requires dashboard sdk ${t.sdk}, host ships ${e.sdkVersion}`,fatal:!1}}function Zt(e,t){let n=Pe(t),r=[];for(let o of[...e.fs.readdir(n)].sort()){let i=je(n,o);if(!e.fs.isDirectory(i))continue;if(!Kn.test(o)){r.push({id:o,path:i,manifest:null,problems:[{check:"id",reason:`directory name ${o} is not a valid plugin id`,fatal:!0}],loadable:!1,name:null,version:null,api:null,sdk:null,capabilities:[],origins:[]});continue}let s=zk(e,i,o),a=s.manifest;r.push({...s,name:a?.name??null,version:a?.version??null,api:a?.api??null,sdk:a?.sdk??null,capabilities:a?.capabilities??[],origins:a?.origins??[]})}return r}var Qr=512,Is=new TextDecoder,$I=new TextEncoder;function Ql(e,t,n){let r=e.subarray(t,t+n),o=r.indexOf(0);return Is.decode(o===-1?r:r.subarray(0,o))}function FI(e,t,n){let r=Ql(e,t,n).trim();if(r.length===0)return 0;let o=Number.parseInt(r,8);return Number.isSafeInteger(o)&&o>=0?o:-1}function BI(e){if(e.length===0||e.startsWith("/")||e.includes("\x00"))return!1;if(e.includes("\\"))return!1;return!e.split("/").includes("..")}function Yl(e){let t=new Map,n=0,r=null,o=0;while(o+Qr<=e.length){let i=e.subarray(o,o+Qr);if(i.every((d)=>d===0))break;let s=FI(i,124,12);if(s<0)throw new b("BAD_REQUEST","archive has an unreadable entry size");let a=String.fromCharCode(i[156]??0),u=Ql(i,0,100),l=Ql(i,345,155);if(o+=Qr,n+=s,n>_n)throw new b("BAD_REQUEST",`archive unpacks to more than ${_n} bytes`);if(o+s>e.length)throw new b("BAD_REQUEST",`archive is truncated: entry ${u||"(unnamed)"} declares ${s} bytes and the archive ends before them`);let c=e.subarray(o,o+s);if(o+=Math.ceil(s/Qr)*Qr,a==="1"||a==="2")throw new b("BAD_REQUEST",`archive contains a link (${u}); plugin packages must be plain files`);if(a==="L"){r=Is.decode(c).replace(/\0+$/,"");continue}if(a==="K"||a==="x"||a==="g")continue;if(a!=="0"&&a!=="\x00"){r=null;continue}let p=r??(l.length>0?`${l}/${u}`:u);if(r=null,!BI(p))throw new b("BAD_REQUEST",`archive contains an unsafe path: ${p}`);t.set(p,new Uint8Array(c))}return t}function Jl(e){if(e[0]!==31||e[1]!==139)return e;try{return Bun.gunzipSync(new Uint8Array(e))}catch(t){let n=W(t,String(t));throw new b("BAD_REQUEST",`could not decompress the archive: ${n}`)}}function ed(e){let t=new Set;for(let o of e.keys()){let i=o.indexOf("/");if(i<=0)return{files:e,claimedId:null};t.add(o.slice(0,i))}let[n]=[...t];if(t.size!==1||n===void 0)return{files:e,claimedId:null};let r=new Map;for(let[o,i]of e)r.set(o.slice(n.length+1),i);return{files:r,claimedId:n===DI?null:n}}function qk(e,t,n=""){let r=new Map,o=0;for(let i of e.readdir(t)){let s=je(t,i),a=n.length===0?i:`${n}/${i}`;if(e.isDirectory(s)){for(let[l,c]of qk(e,s,a))r.set(l,c);continue}let u=e.readBytes(s);if(u===null)continue;if(o+=u.byteLength,o>_n)throw new b("BAD_REQUEST",`${t} holds more than ${_n} bytes`);r.set(a,u)}return r}var Hk="https://registry.npmjs.org",Wk="application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*",zI=/^(?:@[a-z0-9][a-z0-9._-]*\/)?[a-z0-9][a-z0-9._-]*$/,qI=/^\d+\.\d+\.\d+(?:[-+][0-9A-Za-z.-]+)*$/,HI=["sha512","sha384","sha256"];function jn(e){if(typeof e!=="object"||e===null||Array.isArray(e))return null;return e}function yn(e){return typeof e==="string"?e:null}function WI(e){let t=e.lastIndexOf("@"),n=t<=0?e:e.slice(0,t),r=t<=0?null:e.slice(t+1);if(n.length>214||!zI.test(n))return null;return{name:n,version:r}}function jI(e){let t=e.registry??Hk,n;try{n=new URL(t)}catch{throw new b("BAD_REQUEST",`registry ${t} is not a URL`)}if(n.protocol!=="https:")throw new b("BAD_REQUEST",`plugins may only be installed over https; ${t} is not`);return n}function KI(e,t){return`${e.href.replace(/\/+$/,"")}/${t.replace("/","%2f")}`}function GI(e,t){let n=jn(e);if(n===null)throw new b("BAD_REQUEST",`the registry's answer for ${t.name} is not a package`);let r=jn(n.versions);if(r===null)throw new b("BAD_REQUEST",`the registry lists no versions of ${t.name}`);let o=t.version;if(o===null){let u=jn(n["dist-tags"]);if(o=u===null?null:yn(u.latest),o===null)throw new b("BAD_REQUEST",`the registry names no dist-tags.latest for ${t.name}; install ${t.name}@<exact version>`)}let i=jn(r[o]);if(i===null)throw new b("BAD_REQUEST",`the registry has no version ${o} of ${t.name}`);let s=jn(i.dist),a=s===null?null:yn(s.tarball);if(s===null||a===null)throw new b("BAD_REQUEST",`the registry's entry for ${t.name}@${o} names no tarball`);return{version:o,dist:{tarball:a,integrity:yn(s.integrity),shasum:yn(s.shasum)}}}function ZI(e,t,n){let r;try{r=new URL(e)}catch{throw new b("BAD_REQUEST",`the registry gave ${n} a tarball that is not a URL`)}if(r.protocol!=="https:")throw new b("BAD_REQUEST",`plugins may only be installed over https; the registry points ${n} at ${e}`);if(r.host!==t.host)throw new b("BAD_REQUEST",`registry ${t.host} points ${n} at ${r.host}; install that URL directly if it is the one you meant`)}function XI(e,t){let n=[];if(e.integrity!==null)for(let r of e.integrity.trim().split(/\s+/)){let o=r.indexOf("-"),i=o===-1?"":r.slice(0,o),s=o===-1?"":r.slice(o+1);if(s.length===0)continue;let a=HI.find((u)=>u===i);if(a===void 0)continue;n.push({algorithm:a,expected:II.from(s,"base64").toString("hex"),source:`${a} integrity`})}if(n.length===0&&e.shasum!==null&&/^[0-9a-f]{40}$/i.test(e.shasum))n.push({algorithm:"sha1",expected:e.shasum.toLowerCase(),source:"sha1 shasum"});if(n.length===0)throw new b("BAD_REQUEST",`the registry advertises no usable integrity or shasum for ${t}; refusing to install bytes nothing vouches for`);return n}function VI(e,t,n){for(let o of t)if(new Bun.CryptoHasher(o.algorithm).update(e).digest("hex")===o.expected)return;let r=t[0];throw new b("BAD_REQUEST",`${n} does not match the ${r?.source??"digest"} the registry advertised; the download was corrupted or the registry served something else`)}async function QI(e,t){if(t.version!==null&&!qI.test(t.version))throw new b("BAD_REQUEST",`${t.name}@${t.version} is not an exact version; this installer resolves no ranges `+`or tags \u2014 install ${t.name}@1.2.3, or ${t.name} for the registry's latest`);let n=e.fetchBytes;if(n===void 0)throw new b("BAD_REQUEST","this caller cannot install from a registry");let r=jI(e),o=YI(await n(KI(r,t.name),Wk),`the registry's answer for ${t.name}`),{version:i,dist:s}=GI(o,t),a=`${t.name}@${i}`;ZI(s.tarball,r,a);let u=XI(s,a),l=await n(s.tarball);return VI(l,u,a),ed(Yl(Jl(l)))}function YI(e,t){try{return JSON.parse(Is.decode(e))}catch(n){let r=W(n,String(n));throw new b("BAD_REQUEST",`${t} is not valid JSON: ${r}`)}}async function JI(e,t){if(t.startsWith("http://"))throw new b("BAD_REQUEST","plugins may only be installed over https");if(t.startsWith("https://")){if(e.fetchBytes===void 0)throw new b("BAD_REQUEST","this caller cannot install from a URL");return ed(Yl(Jl(await e.fetchBytes(t))))}let n=Fk(t);if(e.fs.isDirectory(n)){let i=qk(e.fs,n),s=LI(n);return{files:i,claimedId:Kn.test(s)?s:null,recordSpec:n}}let r=e.fs.readBytes(n);if(r!==null)return{...ed(Yl(Jl(r))),recordSpec:n};let o=WI(t);if(o!==null)return QI(e,o);throw new b("BAD_REQUEST",`no directory or archive at ${n}, and "${t}" is not a package name`)}async function Ls(e,t,n,r={}){let o=await JI(e,n),i=o.files.get(Gt);if(i===void 0)throw new b("BAD_REQUEST",`${n} has no ${Gt} at its root`);let s;try{s=JSON.parse(Is.decode(i))}catch(g){let h=W(g,String(g));throw new b("BAD_REQUEST",`${Gt} is not valid JSON: ${h}`)}let a=Cs(s);if(!a.ok)throw new b("BAD_REQUEST",`invalid ${Gt}: ${a.reason}`);let u=a.manifest,l=o.claimedId??u.id;if(u.id!==l)throw new b("BAD_REQUEST",`manifest id ${u.id} does not match its directory ${l}; rename one of them so the gateway loads what you installed`);if(r.expectId!==void 0&&l!==r.expectId)throw new b("BAD_REQUEST",`${n} installs plugin "${l}", which does not match "${r.expectId}"; `+"an update reinstalls the plugin it names and nothing else \u2014 install the new id "+"separately if the rename was intended");let c=Pe(t),p=je(c,l),d=e.fs.isDirectory(p),m=je(c,`.staging-${l}`);e.fs.rm(m);try{for(let[h,f]of o.files){let y=je(m,h);e.fs.mkdir(je(y,"..")),e.fs.writeBytes(y,f)}let g={spec:o.recordSpec??n,installedAt:new Date((e.now??Date.now)()).toISOString(),version:u.version};e.fs.mkdir(m),e.fs.writeBytes(je(m,Ps),$I.encode(`${JSON.stringify(g,null,2)}
|
|
1704
|
+
`)),e.fs.rm(p),e.fs.rename(m,p)}finally{e.fs.rm(m)}return{id:l,name:u.name,version:u.version,path:p,spec:o.recordSpec??n,replaced:d,restartRequired:!0}}function jk(e,t,n){if(!Kn.test(n))return null;let r=e.fs.readText(je(Pe(t),n,Ps));if(r===null)return null;let o;try{o=JSON.parse(r)}catch{return null}let i=jn(o);if(i===null)return null;let s=yn(i.spec),a=yn(i.installedAt),u=yn(i.version);if(s===null||s.length===0||a===null||u===null)return null;return{spec:s,installedAt:a,version:u}}async function nd(e,t,n){if(!Kn.test(n)||!e.fs.isDirectory(je(Pe(t),n)))throw new b("BAD_REQUEST",`no plugin "${n}" installed under ${Pe(t)}`);let r=jk(e,t,n);if(r===null)throw new b("BAD_REQUEST",`plugin "${n}" has no readable ${Ps}, so nothing here knows where it `+"came from; it was copied in by hand or installed before this host recorded a source \u2014 "+"reinstall it once with omni plugin install <spec> to seed the record");return Ls(e,t,r.spec,{expectId:n})}async function rd(e,t,n,r={}){if(!Kn.test(n))throw new b("BAD_REQUEST",`"${n}" is not a valid plugin id`);let o=je(Pe(t),n),i=e.fs.isDirectory(o),s=r.purge===!0;if(s&&e.store===void 0)throw new b("INTERNAL","purging a plugin's data needs a database");let a=s&&e.store!==void 0?await e.store.plugins.listTables(n):[];if(!i&&a.length===0)throw new b("BAD_REQUEST",`no plugin "${n}" installed under ${Pe(t)}`);if(i)e.fs.rm(o);if(s&&e.store!==void 0)await e.store.plugins.dropAll(n);return{id:n,removed:i,droppedTables:a}}function od(e,t,n){let r=Zt(e,t).map((o)=>o.id);return n.plugins.orphanTables(r)}function sd(){let e=(t)=>{let n;try{n=id(t,{withFileTypes:!0,encoding:"utf8"})}catch{return 0}let r=0;for(let o of n){let i=oL(t,o.name);if(o.isDirectory()){r+=e(i);continue}try{r+=Ns(i).size}catch{}}return r};return{readdir:(t)=>{try{return id(t)}catch{return[]}},stat:(t)=>{try{let n=Ns(t);return{size:n.size,mtimeMs:n.mtimeMs}}catch{return null}},unlink:(t)=>{Xk(t,{force:!0})},rename:(t,n)=>Zk(t,n),copyFile:(t,n)=>eL(t,n),mkdir:(t)=>{Gk(t,{recursive:!0})},realpath:(t)=>{try{return tL(t)}catch{return null}},freeBytes:(t)=>{try{let n=nL(t);return Number(n.bavail)*Number(n.bsize)}catch{return null}},dirBytes:e}}function Yr(){return{readdir:(e)=>{try{return id(e)}catch{return[]}},readText:(e)=>{try{return Kk(e,"utf8")}catch{return null}},readBytes:(e)=>{try{return new Uint8Array(Kk(e))}catch{return null}},writeBytes:(e,t)=>{rL(e,t)},isDirectory:(e)=>{try{return Ns(e).isDirectory()}catch{return!1}},isFile:(e)=>{try{return Ns(e).isFile()}catch{return!1}},mkdir:(e)=>{Gk(e,{recursive:!0})},rm:(e)=>{Xk(e,{force:!0,recursive:!0})},rename:(e,t)=>Zk(e,t)}}function ad(e={}){let t=e.fetchImpl??fetch,n=e.maxBytes??_n;return async(r,o)=>{if(!r.startsWith("https://"))throw new b("BAD_REQUEST",`plugins may only be fetched over https; ${r} is not`);let i=await t(r,{headers:o===void 0?{}:{accept:o},redirect:"follow"});if(!i.ok)throw new b("BAD_REQUEST",`${r} answered ${i.status}`);let s=i.body?.getReader();if(s===void 0)return new Uint8Array(0);let a=[],u=0;for(;;){let{done:p,value:d}=await s.read();if(p)break;if(d===void 0)continue;if(u+=d.byteLength,u>n)throw await s.cancel(),new b("BAD_REQUEST",`${r} sent more than ${n} bytes`);a.push(d)}let l=new Uint8Array(u),c=0;for(let p of a)l.set(p,c),c+=p.byteLength;return l}}function Vk(){return Buffer.from(crypto.getRandomValues(new Uint8Array(32))).toString("base64url")}function Qk(){let e=Vk();return{verifier:e,challenge:Bun.SHA256.hash(e,"base64url")}}function Yk(){return Vk()}var Jk=4,eE=30000,tE=150000;function Xt(e,t,n){return new b("UPSTREAM",`${e} oauth ${t} ${n}`,{provider:e,gatewayAuthored:!0})}function iL(e){if(typeof e!=="object"||e===null)return!1;let t=e;return Ir(t.url)&&Lr(t.method)&&Array.isArray(t.headers)&&t.headers.every((n)=>Array.isArray(n)&&n.length===2&&typeof n[0]==="string"&&typeof n[1]==="string")&&(t.body===void 0||typeof t.body==="string")&&(t.timeoutMs===void 0||typeof t.timeoutMs==="number"&&Number.isFinite(t.timeoutMs)&&t.timeoutMs>0)}async function wn(e,t,n,r,o){let i;try{return await Promise.race([sL(e,t,n,r,o),new Promise((s,a)=>{i=setTimeout(()=>{a(Xt(e,t,`did not finish within ${tE}ms`))},tE),i.unref?.()})])}finally{if(i!==void 0)clearTimeout(i);n.return(void 0).catch(()=>{})}}async function sL(e,t,n,r,o){let i=0,s;try{s=await n.next()}catch(u){throw Gn(e,t,u)}while(!s.done){if(++i>Jk)throw Xt(e,t,`asked for more than ${Jk} requests`);let u=s.value,l={url:u.url,method:u.method,headers:Array.isArray(u.headers)?[...u.headers]:[],...u.body===void 0?{}:{body:u.body},...u.timeoutMs===void 0?{}:{timeoutMs:u.timeoutMs}};if(!iL(l)||!Array.isArray(u.headers))throw Xt(e,t,"yielded something that is not a request");if(o!==void 0&&!Pr(l.url,o))throw Xt(e,t,"described a request to an origin its manifest does not declare");let c;try{c=await r.http({provider:e,url:l.url,method:l.method,headers:l.headers,body:l.body??"",signal:AbortSignal.timeout(Math.min(l.timeoutMs??eE,eE))})}catch(d){try{s=await n.throw(Gn(e,t,d))}catch(m){throw Gn(e,t,m)}continue}let p;try{p=await c.text()}catch(d){try{s=await n.throw(Gn(e,t,d))}catch(m){throw Gn(e,t,m)}continue}try{s=await n.next({status:c.status,headers:c.headers,body:p})}catch(d){throw Gn(e,t,d)}}let a=cL[t];if(a!==void 0&&!a(s.value))throw Xt(e,t,"returned something the host cannot use");return s.value}function Gn(e,t,n){if(n instanceof b)return n;if(n instanceof Error&&n.name==="GatewayError")return Xt(e,t,"threw a GatewayError from its own bundled copy, whose classification the host cannot trust; build the error with the fail() it was handed");return Xt(e,t,"threw")}function Ds(e,t,n={}){let{origins:r,trusted:o=!1}=n,i=(u)=>({fail:(l,c,p)=>new b(l,c,{provider:e,...p?.status===void 0?{}:{status:p.status},...o?{gatewayAuthored:!0}:{}}),keepPolling:(l)=>uc(l),pkce:()=>Qk(),randomState:()=>Yk(),now:u.now}),s={id:e,supportsManualPaste:t.supportsManualPaste,start:(u,l)=>wn(e,"start",t.start({...u,...i(l)}),l,r),exchange:(u,l)=>wn(e,"exchange",t.exchange({...u,...i(l)}),l,r),refresh:(u,l,c)=>wn(e,"refresh",t.refresh({refreshToken:u,providerData:c,...i(l)}),l,r),...t.usage===void 0?{}:{usage:(u,l,c)=>{let p=t.usage?.({secrets:u,providerData:c,...i(l)});if(p===void 0)return Promise.resolve(null);return wn(e,"usage",p,l,r)}},...t.resetCredits===void 0?{}:{resetCredits:(u,l,c)=>{let p=t.resetCredits?.({secrets:u,providerData:c,...i(l)});if(p===void 0)return Promise.resolve(null);return wn(e,"resetCredits",p,l,r)}},...t.redeemReset===void 0?{}:{redeemReset:(u,l,c,p,d)=>{let m=t.redeemReset?.({secrets:u,providerData:c,creditId:p,requestId:d,...i(l)});if(m===void 0)return Promise.reject(Xt(e,"redeemReset","has no redeem step"));return wn(e,"redeemReset",m,l,r)}}};if(t.kind==="pkce")return{...s,kind:"pkce"};let a=t.begin;if(a===void 0)throw Error(`plugin ${e} declares a device oauth flow without a begin step`);return{...s,kind:"device",needsDeviceId:t.needsDeviceId===!0,begin:(u,l)=>wn(e,"begin",a({...u,...i(l)}),l,r)}}function nE(e){if(typeof e!=="object"||e===null)return!1;let t=e;if(typeof t.secrets!=="object"||t.secrets===null)return!1;let n=t.secrets;for(let r of["accessToken","refreshToken","apiKey","idToken"]){let o=n[r];if(o!==null&&typeof o!=="string")return!1}return typeof t.providerData==="object"&&t.providerData!==null}function rE(e){if(typeof e!=="object"||e===null)return!1;let t=e;return typeof t.authorizeUrl==="string"&&typeof t.pending==="object"&&t.pending!==null}function aL(e){if(e===null)return!0;if(typeof e!=="object")return!1;let t=e;return typeof t.available==="number"&&Array.isArray(t.credits)&&t.credits.every((n)=>{if(typeof n!=="object"||n===null)return!1;let r=n;return typeof r.id==="string"&&typeof r.status==="string"&&(r.title===null||typeof r.title==="string")&&(r.grantedAt===null||typeof r.grantedAt==="number")&&(r.expiresAt===null||typeof r.expiresAt==="number")})}function uL(e){if(typeof e!=="object"||e===null)return!1;let t=e.windowsReset;return t===null||typeof t==="number"}var cL={start:rE,begin:rE,exchange:nE,refresh:nE,resetCredits:aL,redeemReset:uL};var Et=Object.create(null),oE=new WeakMap;function ud(e=Et){let t=oE.get(e)??new Set;oE.set(e,t);for(let[n,r]of qc()){if(t.has(n)&&Object.hasOwn(e,n))continue;iE(n,Ds(n,r,{trusted:!0}),e),t.add(n)}}function cd(e=Et){return Object.keys(e)}function iE(e,t,n=Et){if(Object.hasOwn(n,e))throw Error(`an oauth flow for ${e} is already installed`);n[e]=t}var ld=300000;var sE=30000;function Jr(e){let t=e.logger??se,n=e.coord??Ft(),r=new Map;async function o(s){try{return await n.mutex.withLock(`refresh:${s.id}`,sE,sE,async()=>{let a=await e.store.credentials.get(s.id);if(a!==null&&a.tokenVersion>s.tokenVersion)return a.secrets();return i(a??s)})}catch(a){if(!(a instanceof zo))throw a;return t.warn("refresh lock unavailable; refreshing unserialised",{provider:s.provider,credentialId:s.id}),i(s)}}async function i(s){let a=await s.openForRefresh();if(a.refreshToken===null)throw new b("AUTH",`credential ${s.id} has no refresh token`);let u=e.providers[s.provider];if(u===void 0)throw new b("BAD_REQUEST","provider does not support OAuth refresh");t.debug("refreshing credential",{provider:s.provider,credentialId:s.id});let l;try{l=await u.refresh(a.refreshToken,{http:e.http,now:e.now},s.providerData)}catch(p){if(p instanceof b&&p.code==="AUTH")t.warn("credential disabled: refresh token rejected",{provider:s.provider,credentialId:s.id,code:"AUTH"}),await e.store.credentials.update(s.id,{enabled:!1,disabledReason:"tokenRejected",disabledAt:e.now()});throw p}if(!await e.store.credentials.updateSecrets(s.id,l.secrets,l.expiresAt,s.tokenVersion)){t.warn("refresh lost a race; using the stored rotation",{provider:s.provider,credentialId:s.id});let p=await e.store.credentials.get(s.id);if(p===null)throw new b("AUTH",`credential ${s.id} is gone`);return p.secrets()}return await e.store.credentials.update(s.id,{accountEmail:l.accountEmail??s.accountEmail,providerData:{...s.providerData,...l.providerData}}),t.debug("credential refreshed",{provider:s.provider,credentialId:s.id}),l.secrets}return function(a){let u=r.get(a.id);if(u!==void 0)return u;let l=o(a).finally(()=>{r.delete(a.id)});return r.set(a.id,l),l}}import{join as lL}from"path";function Dt(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}function eo(e){return typeof e==="number"&&Number.isFinite(e)}function H(e,t,n,r){if(!e)throw Error(`provider ${t} descriptor: ${n} must be ${r}`)}function aE(e,t,n){H(Dt(n),e,t,"an object");let r=n;H(eo(r.contextWindow),e,`${t}.contextWindow`,"a finite number"),H(eo(r.maxOutputTokens),e,`${t}.maxOutputTokens`,"a finite number")}function dL(e,t){for(let l of["capabilities","writeOverInput","catalog","modelPrefixes","presentation"])if(t[l]===void 0)throw Error(`provider ${e} is missing ${l}`);let n=t.capabilities;H(Dt(n),e,"capabilities","an object");for(let l of["tools","images","reasoning"]){let c=n[l];H(typeof c==="boolean",e,`capabilities.${l}`,"a boolean")}let r=t.writeOverInput;H(Dt(r),e,"writeOverInput","an object");for(let l of["fiveMinute","oneHour"]){let c=r[l];H(eo(c),e,`writeOverInput.${l}`,"a finite number")}let o=t.catalog;H(Dt(o),e,"catalog","an object");let i=o;H(typeof i.defaultModel==="string",e,"catalog.defaultModel","a string"),H(Array.isArray(i.authTypes),e,"catalog.authTypes","an array");for(let[l,c]of i.authTypes.entries())H(c==="oauth"||c==="apiKey",e,`catalog.authTypes[${l}]`,'"oauth" or "apiKey"');H(Array.isArray(i.models),e,"catalog.models","an array");for(let[l,c]of i.models.entries()){let p=`catalog.models[${l}]`;H(Dt(c),e,p,"an object");let d=c;H(typeof d.id==="string",e,`${p}.id`,"a string"),H(typeof d.label==="string",e,`${p}.label`,"a string"),H(Dt(d.pricing),e,`${p}.pricing`,"an object");let m=d.pricing;for(let g of["input","output","cacheRead","cacheWrite5m","cacheWrite1h"])H(eo(m[g]),e,`${p}.pricing.${g}`,"a finite number");if(aE(e,`${p}.limits`,d.limits),d.oauthLimits!==void 0)aE(e,`${p}.oauthLimits`,d.oauthLimits)}let s=t.modelPrefixes;H(Array.isArray(s),e,"modelPrefixes","an array");for(let[l,c]of s.entries())H(typeof c==="string",e,`modelPrefixes[${l}]`,"a string");let a=t.presentation;H(Dt(a),e,"presentation","an object");let u=a;for(let l of["label","tone"])H(typeof u[l]==="string",e,`presentation.${l}`,"a string");H(eo(u.order),e,"presentation.order","a finite number"),H(Dt(u.colour),e,"presentation.colour","an object");for(let l of["light","dark"]){let c=u.colour[l];H(typeof c==="string",e,`presentation.colour.${l}`,"a string")}if(u.pasteHint!==void 0)H(typeof u.pasteHint==="string",e,"presentation.pasteHint","a string")}function pL(e,t){if(t===void 0)return;if(!Dt(t))throw Error(`provider ${e} oauth must be an object`);let n=t.kind;if(n!=="pkce"&&n!=="device")throw Error(`provider ${e} oauth kind must be "pkce" or "device"`);H(typeof t.supportsManualPaste==="boolean",e,"oauth.supportsManualPaste","a boolean");for(let r of["start","exchange","refresh"])H(typeof t[r]==="function",e,`oauth.${r}`,"a function");if(t.usage!==void 0)H(typeof t.usage==="function",e,"oauth.usage","a function");for(let r of["resetCredits","redeemReset"])if(t[r]!==void 0)H(typeof t[r]==="function",e,`oauth.${r}`,"a function");if(n==="device")H(typeof t.begin==="function",e,"oauth.begin","a function"),H(typeof t.needsDeviceId==="boolean",e,"oauth.needsDeviceId","a boolean");return t}function uE(e,t,n){let r=t.descriptor;if(typeof r!=="object"||r===null)throw Error("provider registration needs a descriptor object");let o=r,i=o.id;if(!zu(i))throw Error(`provider id ${JSON.stringify(i)} is not a usable provider id; expected ${cn.source}`);if(i!==e)throw Error(`plugin ${e} registered a provider named ${i}; a plugin may only register its own id`);dL(i,o);let s=t.codec;if(typeof s!=="object"||s===null)throw Error(`provider ${i} registered no codec`);let a=s;for(let c of["buildRequest","decode"])if(typeof a[c]!=="function")throw Error(`provider ${i} codec has no ${c}`);if(a.classifyError!==void 0&&typeof a.classifyError!=="function")throw Error(`provider ${i} codec has a non-callable classifyError`);let u=pL(i,t.oauth),l=r;return{descriptor:l,adapter:le(i,l.capabilities,s,n),...u===void 0?{}:{oauth:Ds(i,u,{...n===void 0?{}:{origins:n}})}}}function cE(e,t,n){let r=n.providers??[];if(r.length===0)return[];if(!t.capabilities.includes("provider"))throw Error(`plugin ${e} declares a provider without the "provider" capability in its manifest`);if(r.length>1)throw Error(`plugin ${e} declares more than one provider`);for(let o of r){let i=o.descriptor?.id;if(typeof i==="string"&&Object.hasOwn(M,i))throw Error(`plugin ${e} declares a provider named ${i}, which is built in`)}return r.map((o)=>uE(e,o,t.origins))}var mL=5000;async function fL(e,t,n){let r;try{return await Promise.race([e,new Promise((o,i)=>{r=setTimeout(()=>i(Error(n)),t)})])}finally{if(r!==void 0)clearTimeout(r)}}async function Ms(e,t,n=mL){let r=Object.create(null),o=Object.create(null),i=[],s=(a,u)=>{let l=a.problems.filter((c)=>c.fatal);return l.length===0?u:`${u}: ${l.map((c)=>c.reason).join("; ")}`};for(let a of e){let u=a.manifest;if(typeof u!=="object"||u===null){i.push({id:a.id,reason:s(a,"manifest could not be read, so whether it supplies a provider is unknown")});continue}let l=u.capabilities;if(!Array.isArray(l)||!l.includes("provider"))continue;if(!a.loadable){i.push({id:a.id,reason:s(a,"declares a provider but will not load")});continue}let c=u.server;if(typeof c!=="string"){i.push({id:a.id,reason:"declares a provider but has no server entry"});continue}try{let d=(await fL(t(lL(a.path,c)),n,`reading its provider took longer than ${n}ms`)).default;if(typeof d!=="object"||d===null||typeof d.setup!=="function"){i.push({id:a.id,reason:"server entry has no default export with a setup"});continue}let m=u.origins;for(let g of cE(a.id,{capabilities:l,...Array.isArray(m)?{origins:m.filter((h)=>typeof h==="string")}:{}},d))if(r[g.descriptor.id]=g.descriptor,g.oauth!==void 0)o[g.descriptor.id]=g.oauth}catch(p){i.push({id:a.id,reason:W(p,String(p))})}}return{descriptors:r,oauth:o,failures:i}}var gL=86400000,hL=3600000,dd=50000,lE=dd+1;function dE(e){let t=e.length>dd;return{page:t?e.slice(0,dd):e,truncated:t}}async function pd(e,t,n){let r=e.now(),o=await e.store.config.getSettings(),i=r-o.logRetentionDays*gL,s=n===void 0?i:Math.max(i,r-n);return{since:Math.max(Lt(t.since,s),s),until:Math.min(Lt(t.until,r),r)}}async function yL(e,t){let n=[];for(let r of t){let o=_s(r);if(o===null||r.observedAt<=o){n.push({credentialId:r.credentialId,windowType:r.windowType,gatewayRatePerHour:null});continue}let s=(await e.usage.aggregate({grain:"raw",groupBy:"credential",since:o,until:r.observedAt})).find((u)=>u.key===r.credentialId),a=s===void 0?0:s.inputTokens+s.outputTokens+s.cacheReadTokens+s.cacheWriteTokens;n.push({credentialId:r.credentialId,windowType:r.windowType,gatewayRatePerHour:a/((r.observedAt-o)/hL)})}return n}async function md(e,t){let{since:n,until:r}=await pd(e,t),o=t.credentialId?.trim(),i=o===void 0||o.length===0?void 0:o,[s,a]=await Promise.all([e.store.credentials.listQuotaSamples({since:n,until:r,limit:lE,...i===void 0?{}:{credentialId:i}}),e.store.credentials.listQuota()]),u=i===void 0?a:a.filter((p)=>p.credentialId===i),{page:l,truncated:c}=dE(s);return{samples:l,truncated:c,gatewayRates:await yL(e.store,u)}}async function pE(e,t){let n=await e.store.credentials.get(t.trim());if(n===null)throw new b("BAD_REQUEST","no such credential");let r=e.providers[n.provider],o=r?.resetCredits,i=r?.redeemReset;if(n.authType!=="oauth"||o===void 0||i===void 0)throw new b("BAD_REQUEST","this account's provider has no quota resets");return{credential:n,list:o,redeem:i}}async function mE(e,t){let n=await to(e,t.credential),r=await t.list(n,{http:e.http,now:e.now},t.credential.providerData);if(r===null)throw new b("UPSTREAM","provider answered the reset list with nothing usable",{gatewayAuthored:!0});return r}async function fd(e,t){let n=await pE(e,t);return{credentialId:n.credential.id,...await mE(e,n)}}async function gd(e,t){let n=await pE(e,t.credentialId);return e.coord.mutex.withLock(hd+n.credential.id,yd,_d,()=>wL(e,n,t))}async function wL(e,t,n){let r=(await mE(e,t)).credits.filter((u)=>u.status==="available").sort((u,l)=>(u.expiresAt??Number.POSITIVE_INFINITY)-(l.expiresAt??Number.POSITIVE_INFINITY)),o=n.creditId===void 0?r[0]:r.find((u)=>u.id===n.creditId);if(o===void 0)throw new b("CONFLICT",n.creditId===void 0?"no reset credit is available for this account":"that reset credit is not available");let i=await to(e,t.credential),{windowsReset:s}=await t.redeem(i,{http:e.http,now:e.now},t.credential.providerData,o.id,crypto.randomUUID()),a=!1;try{a=await Us(e,t.credential)!==null}catch{}return{credentialId:t.credential.id,creditId:o.id,windowsReset:s,quotaRefreshed:a}}var bL=4,wd=180000,fE="quota:cooldown:",hd="quota:probe:",yd=60000,_d=30000;async function to(e,t){let n=t.hasRefreshToken&&t.expiresAt!==null&&t.expiresAt-ld<=e.now()?await e.refresh(t):null;return n===null?await t.openForUsage():{accessToken:n.accessToken}}async function Us(e,t){if(t.authType!=="oauth")return null;let n=e.providers[t.provider];if(n?.usage===void 0)return null;let r=await to(e,t),o=await n.usage(r,{http:e.http,now:e.now},t.providerData);if(o===null||o.windows.length===0)return null;let i=e.now(),s=o.windows.map((a)=>({credentialId:t.id,windowType:a.windowType,startsAt:i,used:a.used,limit:a.limit,resetsAt:a.resetsAt,observedAt:i,windowMs:a.windowMs}));return await e.store.credentials.saveQuota(s),(e.logger??se).debug("quota snapshot written",{provider:t.provider,credentialId:t.id,count:s.length}),s}async function gE(e,t){let n=Array(e.length).fill(void 0),r=0,o=async()=>{while(r<e.length){let i=r++,s=e[i];if(s===void 0)return;n[i]=await t(s)}};return await Promise.all(Array.from({length:Math.min(bL,e.length)},()=>o())),n}function bd(e){let t=e.logger??se,n=new Map;async function r(u,l,c){try{return await c()}catch(p){return t.warn("quota probe coordination unavailable",{provider:u.provider,credentialId:u.id,coordFallback:!0,reason:W(p,"unknown")}),l}}function o(u,l){let c=l instanceof b&&l.code==="RATE_LIMIT";return t.warn(c?"quota probe rate limited":"quota probe failed",{provider:u.provider,credentialId:u.id,code:l instanceof b?l.code:"INTERNAL",...c?{retryAfterMs:wd}:{},reason:W(l,"unknown")}),l instanceof b?l.code:"INTERNAL"}async function i(u){let l=u.id;try{let c=await Us(e,u);if(c===null)return{outcome:{kind:"noData",credentialId:l},wrote:!1};return{outcome:{kind:"refreshed",credentialId:l,windows:c.length},wrote:!0}}catch(c){if(c instanceof b&&c.code==="RATE_LIMIT")await r(u,void 0,()=>e.coord.kv.set(fE+l,"1",wd));return{outcome:{kind:"failed",credentialId:l,code:o(u,c)},wrote:!1}}}async function s(u,l){let c=u.id,p=!1,d=async()=>{p=!0;let m=(await e.store.credentials.listQuota()).filter((g)=>g.credentialId===c);if(m.some((g)=>g.observedAt>=l))return{outcome:{kind:"coalesced",credentialId:c,windows:m.length},wrote:!1};return i(u)};try{return await e.coord.mutex.withLock(hd+c,yd,_d,d)}catch(m){if(p)return{outcome:{kind:"failed",credentialId:c,code:"INTERNAL"},wrote:!1};return t.warn("quota probe lock unavailable",{provider:u.provider,credentialId:c,coordFallback:!0,reason:W(m,"unknown")}),i(u)}}function a(u){let l=u.id;if(!u.enabled)return Promise.resolve({outcome:{kind:"disabled",credentialId:l},wrote:!1});if(u.authType!=="oauth"||e.providers[u.provider]?.usage===void 0)return Promise.resolve({outcome:{kind:"unsupported",credentialId:l},wrote:!1});let c=n.get(l);if(c!==void 0)return c.then((m)=>m.outcome.kind==="refreshed"?{outcome:{kind:"coalesced",credentialId:l,windows:m.outcome.windows},wrote:!1}:{outcome:m.outcome,wrote:!1});let p=e.now(),d=(async()=>{if(await r(u,null,()=>e.coord.kv.get(fE+l))!==null)return{outcome:{kind:"cooldown",credentialId:l},wrote:!1};return s(u,p)})();return n.set(l,d),d.finally(()=>{n.delete(l)})}return{async poll(){let u=await e.store.credentials.list();return(await gE(u,a)).filter((c)=>c?.wrote===!0).length},async refresh(u){if(u.kind==="one"){let d=u.credentialId.trim();if(d==="")throw new b("BAD_REQUEST","no such credential");let m=await e.store.credentials.get(d);if(m===null)throw new b("BAD_REQUEST","no such credential");return{outcomes:[(await a(m)).outcome]}}let l=await e.store.credentials.list(),c=await gE(l,a),p=[];for(let[d,m]of l.entries()){let g=c[d];p.push(g?.outcome??{kind:"failed",credentialId:m.id,code:"INTERNAL"})}return{outcomes:p}},resetCredits:(u)=>fd(e,u),redeemReset:(u)=>gd(e,u),hasResets:(u)=>{let l=e.providers[u];return l?.resetCredits!==void 0&&l.redeemReset!==void 0}}}async function Zn(e){return e.config.getSettings()}async function kd(e,t){let{bodyRetentionDays:n,snapshotKeepLatest:r,snapshotMaxAgeDays:o,guardrailModel:i,guardrailTimeoutMs:s,guardrailHistoryTurns:a,smartRouterEnabled:u,smartRouterClassifierModel:l,smartRouterLocalModel:c,smartRouterPolicy:p,smartRouterTimeoutMs:d,...m}=X(ol,t),g={...m,...n===void 0?{}:{bodyRetentionDays:n},...r===void 0?{}:{snapshotKeepLatest:r},...o===void 0?{}:{snapshotMaxAgeDays:o},...i===void 0?{}:{guardrailModel:i},...s===void 0?{}:{guardrailTimeoutMs:s},...a===void 0?{}:{guardrailHistoryTurns:a},...u===void 0?{}:{smartRouterEnabled:u},...l===void 0?{}:{smartRouterClassifierModel:l},...c===void 0?{}:{smartRouterLocalModel:c},...p===void 0?{}:{smartRouterPolicy:p},...d===void 0?{}:{smartRouterTimeoutMs:d}};return e.config.putSettings(g)}var $s="<your OmniGateway key>";async function vd(e,t){let n=await hn(e),r=(await Ye(e)).map((o)=>({id:o.id,provider:o.provider,authType:o.authType,enabled:o.enabled,providerData:o.providerData}));return n.map((o)=>({model:o,limits:jl(o,r,t),label:Kl(o,t)}))}var Ed={defaultModel:"ANTHROPIC_MODEL",fableModel:"ANTHROPIC_DEFAULT_FABLE_MODEL",opusModel:"ANTHROPIC_DEFAULT_OPUS_MODEL",sonnetModel:"ANTHROPIC_DEFAULT_SONNET_MODEL",haikuModel:"ANTHROPIC_DEFAULT_HAIKU_MODEL"};function kL(e){if(e===void 0)return{};try{let t=JSON.parse(e);if(typeof t!=="object"||t===null||Array.isArray(t))throw Error("settings root is not an object");return t}catch(t){let n=W(t,"invalid JSON");throw Error(`cannot parse existing settings.json: ${n}`)}}function Td(e,t,n,r){if(n.defaultModel==="")throw Error("default model is required");let o=new Set(e.map(({model:l})=>l.id)),i=(l,c)=>{if(!o.has(c))throw Error(`${l} names unknown virtual model "${c}"`);return c},s=kL(r),a=s.env,u=typeof a==="object"&&a!==null&&!Array.isArray(a)?{...a}:{};for(let l of Object.values(Ed))delete u[l];delete u.CLAUDE_CODE_MAX_CONTEXT_TOKENS,u.ANTHROPIC_BASE_URL=t.baseUrl,u.ANTHROPIC_AUTH_TOKEN=t.apiKey??$s,u.CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY="1";for(let[l,c]of Object.entries(Ed)){let p=n[l];if(p!==void 0&&p!=="")u[c]=i(l,p)}return{path:"settings.json",contents:`${JSON.stringify({...s,env:u},null,2)}
|
|
1705
|
+
`}}function Rd(e,t,n){if(n.defaultModel==="")throw Error("default model is required");let r=new Map(e.map((u)=>[u.model.id,u])),o=[],i=new Set;for(let u of Object.keys(Ed)){let l=n[u];if(l===void 0||l==="")continue;let c=r.get(l);if(c===void 0)throw Error(`${u} names unknown virtual model "${l}"`);if(!i.has(l))i.add(l),o.push(c)}let s={};for(let{model:u,limits:l,label:c}of o){let p=l.contextWindow===void 0?void 0:{context:l.contextWindow,...l.maxOutputTokens===void 0?{}:{output:l.maxOutputTokens}};s[u.id]={name:c,...p===void 0?{}:{limit:p}}}return{path:"opencode.json",contents:`${JSON.stringify({$schema:"https://opencode.ai/config.json",model:`omnigateway/${n.defaultModel}`,provider:{omnigateway:{npm:"@ai-sdk/openai-compatible",name:"OmniGateway",options:{baseURL:`${t.baseUrl.replace(/\/+$/,"").replace(/(?:\/v1)+$/i,"")}/v1`,apiKey:t.apiKey??$s},models:s}}},null,2)}
|
|
1706
|
+
`}}async function Sd(e,t,n=Date.now()){let r=(await e.keys.list()).filter((d)=>d.revokedAt===null&&d.smartRouting).length,o=await fn(e,n),{smartRouterEnabled:i,smartRouterClassifierModel:s}=o.settings,a=o.settings.smartRouterLocalModel,u=(d)=>({enabled:i,keysWithFlag:r,classifierModel:s,localModel:a,problem:d});if(!i||r===0)return u(null);let{classifier:l,local:c}=yE(o,t),p=[l,c];if(p.includes("unset"))return u("unconfigured");if(p.includes("unresolved"))return u("unresolved");if(p.includes("notLocal"))return u("notLocal");return u(null)}function hE(e,t,n){if(e===null)return"unset";try{Bn(e,t,n)}catch{return"unresolved"}return gl(e,t,n)===null?"notLocal":"ok"}function yE(e,t){let{smartRouterClassifierModel:n,smartRouterLocalModel:r}=e.settings;return{classifier:hE(n,e,t),local:hE(r,e,t)}}import{closeSync as EL,fstatSync as vL,openSync as TL,readSync as RL,statSync as SL}from"fs";var xL=65536,AL=8388608;function xd(e,t){let n;try{n=TL(e,"r")}catch{return null}try{let r=vL(n).size;if(r===0)return"";let o=Math.min(r,AL),i=0,s=0,a=[];while(i<o&&s<=t){let u=Math.min(xL,o-i),l=Buffer.allocUnsafe(u),c=r-i-u;RL(n,l,0,u,c),a.unshift(l),i+=u;for(let p of l)if(p===10)s++}return Buffer.concat(a).toString("utf8")}catch{return null}finally{EL(n)}}function Fs(e){try{return SL(e).isFile()}catch{return!1}}import{parseArgs as OL}from"util";class P extends Error{}var CL={root:{type:"string"},db:{type:"string"},json:{type:"boolean"},"no-color":{type:"boolean"},yes:{type:"boolean",short:"y"},help:{type:"boolean",short:"h"},version:{type:"boolean"}};function _E(e,t={}){try{let n=OL({args:[...e],options:{...CL,...t},allowPositionals:!0,strict:!0});return{positionals:n.positionals,values:n.values}}catch(n){throw new P(W(n,"could not parse arguments"))}}function O(e,t){let n=e[t];return typeof n==="string"?n:void 0}function L(e,t){return e[t]===!0}function Ie(e,t){let n=e[t];if(Array.isArray(n))return n.filter((r)=>typeof r==="string");return typeof n==="string"?[n]:void 0}function bn(e,t){let n=O(e,t);if(n===void 0||n.trim().length===0)return;let r=Number(n);if(!Number.isFinite(r))throw new P(`--${t} must be a number, got "${n}"`);return r}function D(e,t,n){let r=e.positionals[t];if(r===void 0||r.length===0)throw new P(`${n} is required`);return r}var PL={dim:!0,red:!0,green:!0,yellow:!0,blue:!0,magenta:!0,cyan:!0,orange:!0,violet:!0,azure:!0};function IL(e){return Object.hasOwn(PL,e)}function LL(e){let t=M[e]?.presentation.tone;return t!==void 0&&IL(t)?t:"cyan"}function Le(e,t){return R(e,LL(t),t)}function j(e,t,n){return R(e,t?"green":"red",n)}import{existsSync as Bs,readFileSync as NL}from"fs";import{homedir as DL}from"os";import{isAbsolute as ML,join as no,resolve as Ad}from"path";class C extends Error{exitCode;constructor(e,t=1){super(e);this.name="CliError",this.exitCode=t}}var UL=no(DL(),".config","omnigateway");function $L(e){return Bs(no(e,".env"))||Bs(no(e,"omnigateway.db"))||Bs(no(e,"apps","gateway","src","index.ts"))}function FL(e,t,n){let r=(i,s)=>{let a=no(i,".env");return{root:i,source:s,envFile:Bs(a)?a:null}};if(e.root!==void 0&&e.root.length>0)return r(Ad(n,e.root),"flag");let o=t.OMNI_ROOT;if(typeof o==="string"&&o.length>0)return r(Ad(n,o),"env");if($L(n))return r(n,"cwd");return r(UL,"default")}function BL(e){let t={};for(let n of e.split(`
|
|
1707
|
+
`)){let r=n.trim();if(r.length===0||r.startsWith("#"))continue;let o=r.startsWith("export ")?r.slice(7).trim():r,i=o.indexOf("=");if(i<=0)continue;let s=o.slice(0,i).trim(),a=o.slice(i+1).trim(),u=a[0];if((u==='"'||u==="'")&&a.endsWith(u)&&a.length>=2)a=a.slice(1,-1);t[s]=a}return t}function wE(e,t={}){let n=t.env??process.env,r=t.cwd??process.cwd(),o=FL({root:O(e.values,"root")},n,r),i=o.envFile===null?{}:BL(NL(o.envFile,"utf8")),s={...n,...i},a=O(e.values,"db"),u=a===void 0||a.trim().length===0?void 0:a,l=n.OMNI_DB_PATH?.trim(),c=o.source==="flag"&&u===void 0&&i.OMNI_DB_PATH===void 0&&l!==void 0&&l.length>0?l:null;if(c!==null)delete s.OMNI_DB_PATH;let p=null,d=null;try{p=Hu(s)}catch(w){d=W(w,"invalid configuration")}let m=u??p?.databasePath??"omnigateway.db",g=ML(m)?m:Ad(o.root,m),h=c===null?[]:[`ignoring OMNI_DB_PATH=${c} from the environment because --root was given; using ${g}`],f=null,y=null,_=L(e.values,"no-color")||typeof n.NO_COLOR==="string"&&n.NO_COLOR.length>0;return{root:o,env:s,warnings:h,json:L(e.values,"json"),color:!_&&(t.isTty??process.stdout.isTTY===!0),assumeYes:L(e.values,"yes"),now:t.now??(()=>Date.now()),configError:d,databasePath:g,config(){if(p===null)throw new C(d??"invalid configuration");return p},store(){if(f===null){let w=p;if(w===null)throw new C(d??"invalid configuration");f=qo(w.encryptionKey).then((v)=>yi({path:g,encryptionKey:v,dayOffsetMinutes:w.dayOffsetMinutes})).then((v)=>(y=v,v))}return f},close(){y?.close(),y=null,f=null}}}function zs(){return{fs:Yr(),sdkVersion:Os}}function bE(e,t){let r=O(t.values,"registry")??e.env.OMNI_PLUGIN_REGISTRY,o=r===void 0||r.trim().length===0?void 0:r.trim();return{...zs(),fetchBytes:ad(),now:e.now,...o===void 0?{}:{registry:o}}}function zL(e,t){if(!t.loadable)return j(e,!1,"will not load");if(t.problems.length>0)return R(e,"yellow","loads, with warnings");return j(e,!0,"ok")}var kE={usage:"plugin list",summary:"List installed plugins and whether the gateway would load each one",async run(e,{ctx:t,writer:n}){let r=t.root.root,o=Zt(zs(),r);S(t,n,{pluginsDir:Pe(r),plugins:o},()=>{if(o.length===0)return`no plugins installed; unpack one into ${Pe(r)} with: omni plugin install <path-or-package>`;let i=o.map((u)=>[u.id,u.name??"\u2014",u.version??"\u2014",u.api===null?"\u2014":String(u.api),u.sdk??"\u2014",u.capabilities.length===0?"\u2014":u.capabilities.join(","),zL(t,u)]),s=K([{header:"ID"},{header:"NAME"},{header:"VERSION"},{header:"API"},{header:"SDK"},{header:"CAPABILITIES"},{header:"STATE"}],i),a=o.flatMap((u)=>u.problems.map((l)=>`${u.id}: ${R(t,l.fatal?"red":"yellow",l.reason)}`));return a.length===0?s:`${s}
|
|
1680
1708
|
|
|
1681
1709
|
${a.join(`
|
|
1682
|
-
`)}`})}},
|
|
1710
|
+
`)}`})}},EE={usage:"plugin verify <id>",summary:"Run every load-time check on one plugin without loading it",async run(e,{ctx:t,writer:n}){let r=D(e,0,"plugin id"),o=td(zs(),t.root.root,r);if(S(t,n,o,()=>{let i=o.manifest,s=z([["id",o.id],["path",o.path],["name",i?.name??"\u2014"],["version",i?.version??"\u2014"],["api",i===null?"\u2014":String(i.api)],["sdk",i?.sdk??"\u2014"],["server",i?.server??"\u2014"],["ui",i?.ui??"\u2014"],["capabilities",i===null||i.capabilities.length===0?"\u2014":i.capabilities.join(",")],["origins",i?.origins?.join(",")??"\u2014"]]);if(o.problems.length===0)return`${s}
|
|
1683
1711
|
|
|
1684
|
-
${
|
|
1712
|
+
${j(t,!0,"ok")}: this plugin would load`;let a=o.problems.map((l)=>` ${R(t,l.fatal?"red":"yellow",l.check)} ${l.reason}`),u=o.loadable?R(t,"yellow","this plugin would load, with the warnings above"):j(t,!1,"this plugin would be skipped at boot");return`${s}
|
|
1685
1713
|
|
|
1686
1714
|
${a.join(`
|
|
1687
1715
|
`)}
|
|
1688
1716
|
|
|
1689
|
-
${u}`}),!o.loadable)throw new
|
|
1690
|
-
`)))}},
|
|
1691
|
-
`)))}},
|
|
1692
|
-
`)})}};function
|
|
1693
|
-
${r}`}function
|
|
1717
|
+
${u}`}),!o.loadable)throw new C(`plugin "${r}" would not load`)}},vE={usage:"plugin install <path|tarball|https url|package[@version]> [--registry <url>]",summary:"Unpack a plugin into this installation, running nothing from it",options:{registry:{type:"string"}},async run(e,{ctx:t,writer:n}){let r=D(e,0,"plugin directory, tarball, url, or package name"),o=await Ls(bE(t,e),t.root.root,r);S(t,n,o,()=>(Z(t,n,R(t,"dim","no code from the package was executed; verify it before restarting")),[`${o.replaced?"replaced":"installed"} ${o.name} ${o.version} at ${o.path}`,R(t,"yellow","restart the gateway for this to take effect: omni restart")].join(`
|
|
1718
|
+
`)))}},TE={usage:"plugin update <id> [--registry <url>]",summary:"Reinstall a plugin from the source it was installed from",options:{registry:{type:"string"}},async run(e,{ctx:t,writer:n}){let r=D(e,0,"plugin id"),o=await nd(bE(t,e),t.root.root,r);S(t,n,o,()=>(Z(t,n,R(t,"dim",`re-run from ${o.spec}; no code from the package was executed`)),[`reinstalled ${o.name} ${o.version} at ${o.path}`,R(t,"yellow","restart the gateway for this to take effect: omni restart")].join(`
|
|
1719
|
+
`)))}},RE={usage:"plugin remove <id> [--purge]",summary:"Remove a plugin, optionally dropping its stored data too",options:{purge:{type:"boolean"}},async run(e,{ctx:t,writer:n,prompt:r}){let o=D(e,0,"plugin id"),i=L(e.values,"purge"),s=i?`remove plugin "${o}" AND permanently drop its stored data?`:`remove plugin "${o}"? its stored data is kept`;if(!await r.confirm(s))throw new C("cancelled");let a=i?{fs:Yr(),store:await t.store()}:{fs:Yr()},u=await rd(a,t.root.root,o,{purge:i});S(t,n,u,()=>{let l=[];if(l.push(u.removed?`removed ${o}`:`no directory for ${o} to remove`),i)l.push(u.droppedTables.length===0?"no stored tables to drop":`dropped ${u.droppedTables.length} table(s): ${u.droppedTables.join(", ")}`);else l.push(R(t,"dim","stored tables and migration history kept; --purge drops them"));return l.push(R(t,"yellow","restart the gateway for this to take effect: omni restart")),l.join(`
|
|
1720
|
+
`)})}};function ro(){return zs()}async function Vt(e){let t=await Ms(Zt(ro(),e),(r)=>import(r));return{descriptors:Object.assign(Object.create(null),M,t.descriptors),oauth:t.oauth,failures:t.failures}}function qL(e,t){return t.find((n)=>n.id===e&&n.capabilities.includes("provider"))}function Od(e,t){return Object.hasOwn(M,e)||qL(e,t)!==void 0}function SE(e,t){return t.map((n)=>{let r=n.version===null?"":` ${n.version}`,o=n.api===null?"api ?":`api ${n.api}`,i=n.sdk===null?"no ui":`sdk ${n.sdk}`,s=n.problems.filter((l)=>l.fatal).map((l)=>l.reason),a=n.problems.length-s.length,u=s.length>0?j(e,!1,`will not load: ${s.join("; ")}`):a>0?R(e,"yellow",`loads, ${a} warning(s); see omni plugin verify ${n.id}`):j(e,!0,"ok");return`${n.id}${r} (${o}, ${i}) ${u}`})}async function Xn(e){let t=await Ms(Zt(ro(),e),(n)=>import(n));return{providers:Object.assign(Object.create(null),Et,t.oauth),descriptors:Object.assign(Object.create(null),M,t.descriptors),failures:t.failures}}var HL={none:["not captured","Body capture was not running for this request. It needs OMNI_BODY_LOGGING_ALLOWED in the environment and bodyLoggingEnabled turned on, and the calling key must not have opted out."],missing:["captured, then lost","This request was captured, but its artifact is no longer on disk. Retention or the row cap has since pruned it, or something removed the file underneath the gateway."],corrupt:["captured, but unreadable","This request was captured and the artifact is still on disk, but it failed its checksum or would not decrypt. Changing OMNI_ENCRYPTION_KEY invalidates every artifact written under the old one."]},WL=new TextEncoder;function qs(e){if(e===null||e===void 0)return 0;return WL.encode(JSON.stringify(e)).length}function xE(e){return z([["STATE",e.detailState],["CAPTURED",oe(e.at)],["SIZE",`${ce(e.sizeBytes)} on disk`],["TRUNCATED",e.truncated?"yes":"no"]])}function jL(e,t){let n=t.attempts.some((o)=>o.streamChunks!==null),r=(o,i)=>i?`${o} (truncated)`:o;return K([{header:"PAIR"},{header:"PROVIDER"},{header:"REQUEST",align:"right"},{header:"RESPONSE",align:"right"},...n?[{header:"FRAMES",align:"right"}]:[],{header:"REQUEST IS"}],[[r("CLIENT",t.client.truncated),"",ce(qs(t.client.request)),ce(qs(t.client.response)),...n?["\u2014"]:[],"pre-RTK"],...t.attempts.map((o)=>[r(`ATTEMPT ${o.attempt}`,o.truncated),Le(e,o.provider),ce(qs(o.request)),ce(qs(o.response)),...n?[o.streamChunks===null?"\u2014":String(o.streamChunks.length)]:[],"post-RTK"])])}function Vn(e,t,n){let r=n===null||n===void 0?"(nothing recorded for this half \u2014 it never happened, or never completed)":JSON.stringify(n,null,2);return`${R(e,"dim",t)}
|
|
1721
|
+
${r}`}function KL(e,t){let n=[Vn(e,"CLIENT REQUEST (pre-RTK)",t.client.request),Vn(e,"CLIENT RESPONSE",t.client.response)];for(let r of t.attempts){let o=`ATTEMPT ${r.attempt} ${Le(e,r.provider)}`;if(n.push(Vn(e,`${o} REQUEST (post-RTK)`,r.request)),n.push(Vn(e,`${o} RESPONSE`,r.response)),r.streamChunks!==null)n.push(Vn(e,`${o} STREAM FRAMES (${r.streamChunks.length})`,r.streamChunks))}if(t.error!==null&&t.error!==void 0)n.push(Vn(e,"ERROR",t.error));return n.join(`
|
|
1694
1722
|
|
|
1695
|
-
`)}var
|
|
1696
|
-
`)}let s=[
|
|
1697
|
-
`)})}};var
|
|
1723
|
+
`)}var AE={usage:"bodies <request-id> [--full]",summary:"Show captured bodies for one request; withheld unless --full",options:{full:{type:"boolean"}},async run(e,{ctx:t,writer:n}){let r=D(e,0,"request id"),o=await Fu(await t.store(),r);S(t,n,o,()=>{let i=o.artifact;if(i===null){let[a,u]=HL[o.detailState==="ready"?"corrupt":o.detailState];return[xE(o),"",a,u].join(`
|
|
1724
|
+
`)}let s=[xE(o),"",jL(t,i),"",R(t,"dim","REQUEST and RESPONSE are the stored payload, after masking and bounding; neither is the size sent over the wire")];if(i.attempts.length>0)s.push("",R(t,"dim","the client request is pre-RTK and every attempt request is post-RTK; they are not the same payload"));if(i.error!==null&&i.error!==void 0)s.push("","an error was recorded for this request");if(L(e.values,"full"))s.push("",KL(t,i));else s.push("","bodies withheld; pass --full to print them, --json for the artifact");return s.join(`
|
|
1725
|
+
`)})}};var GL=600000,OE={usage:"connect <provider> [--label L] [--credential ID]",summary:"Authorize a provider account from the terminal",options:{label:{type:"string"},credential:{type:"string"}},async run(e,{ctx:t,writer:n,prompt:r,connect:o,connectable:i}){let s=D(e,0,"provider"),{ids:a,failures:u}=await i();if(!a.includes(s)){let m=u.find((g)=>g.id===s);throw new P(m===void 0?`provider must be one of ${a.join(", ")}`:`provider ${s} comes from a plugin that failed to load: ${m.reason}`)}let l=await o(await t.store()),c=O(e.values,"credential"),p=await l.start(s,O(e.values,"label"),c);if(n.err(""),n.err(`Open this URL to authorize ${s}:`),n.err(` ${p.authorizeUrl}`),p.userCode!==null)n.err(""),n.err(`Then enter the code: ${p.userCode}`);n.err("");let d=p.kind==="device"?await ZL(l,p,{sleep:(m)=>Bun.sleep(m),now:t.now,onWait:()=>Z(t,n,"waiting for approval\u2026")}):await l.finish(p.flowId,await r.secret("Paste the code or callback URL: "));S(t,n,{id:d.id,provider:s},()=>`connected ${s} as ${d.id}`)}};async function ZL(e,t,n){let r=n.now()+GL,o=!1;for(;;){let i=await e.poll(t.flowId);if(i.status==="complete")return{id:i.id};if(!o)n.onWait(),o=!0;if(n.now()>=r)throw new C("authorization timed out");await n.sleep(t.pollIntervalMs)}}import{existsSync as Hs,mkdirSync as Pd,readFileSync as XL,rmSync as Id,writeFileSync as IE}from"fs";import{homedir as LE}from"os";import{dirname as NE,join as kn}from"path";var Qt="omnigateway.service";function DE(e){return e==="system"?kn("/etc/systemd/system",Qt):kn(LE(),".config","systemd","user",Qt)}function Yt(e,t){return e==="system"?["systemctl",...t]:["systemctl","--user",...t]}function Ws(e){return kn(e,"gateway.pid")}function VL(e){return kn(e,"gateway.log")}function Qn(e){let t=e.logFile?.trim();return t!==void 0&&t.length>0?t:VL(e.stateDir)}function ME(e){let t=e.XDG_STATE_HOME,n=typeof t==="string"&&t.length>0?t:kn(LE(),".local","state");return kn(n,"omnigateway")}function QL(e){return`[Unit]
|
|
1698
1726
|
Description=${e.description??"OmniGateway"}
|
|
1699
1727
|
After=network-online.target
|
|
1700
1728
|
Wants=network-online.target
|
|
@@ -1702,57 +1730,57 @@ Wants=network-online.target
|
|
|
1702
1730
|
[Service]
|
|
1703
1731
|
Type=simple
|
|
1704
1732
|
WorkingDirectory=${e.root}
|
|
1705
|
-
EnvironmentFile=${
|
|
1733
|
+
EnvironmentFile=${kn(e.root,".env")}
|
|
1706
1734
|
ExecStart=${e.bun} ${e.entrypoint}
|
|
1707
1735
|
Restart=on-failure
|
|
1708
1736
|
RestartSec=2
|
|
1709
1737
|
|
|
1710
1738
|
[Install]
|
|
1711
1739
|
WantedBy=default.target
|
|
1712
|
-
`}function
|
|
1713
|
-
`),{supervisor:"pidfile",pid:o,healthy:await
|
|
1714
|
-
`)}var
|
|
1715
|
-
`)}function
|
|
1716
|
-
`)}var
|
|
1717
|
-
plugin ${_.id}: ${_.reason}`).join("");throw new
|
|
1718
|
-
`))}finally{
|
|
1740
|
+
`}function En(e){return Hs(e.unitPath)}function YL(e){let t=Ws(e);if(!Hs(t))return null;let n=Number(XL(t,"utf8").trim());return Number.isInteger(n)&&n>0?n:null}function Ld(e){let t=YL(e.stateDir);if(t===null)return null;if(e.alive(t))return t;return Id(Ws(e.stateDir),{force:!0}),null}async function vn(e){if(En(e)){let n=await e.run(Yt(e.scope,["is-active",Qt])),r=n.stdout.trim()||n.stderr.trim()||"unknown",o=await e.run(Yt(e.scope,["show",Qt,"--property=MainPID","--value"])),i=Number(o.stdout.trim());return{supervisor:"systemd",running:r==="active",pid:Number.isInteger(i)&&i>0?i:null,state:r,unitPath:e.unitPath,logFile:null}}let t=Ld(e);return{supervisor:t===null?"none":"pidfile",running:t!==null,pid:t,state:null,unitPath:null,logFile:Qn(e)}}async function Nd(e,t){if(En(e)){let i=await e.run(Yt(e.scope,["start",Qt]));if(i.code!==0)throw Error(i.stderr.trim()||`systemctl start exited ${i.code}`);return{supervisor:"systemd",pid:null,healthy:await Cd(e,t.baseUrl)}}let n=Ld(e);if(n!==null)return{supervisor:"pidfile",pid:n,healthy:await Cd(e,t.baseUrl)};Pd(e.stateDir,{recursive:!0});let r=Qn(e);Pd(NE(r),{recursive:!0});let o=e.spawn({argv:t.argv,cwd:e.root,env:{...t.env,OMNI_LOG_FILE:r},logFile:r});return IE(Ws(e.stateDir),`${o}
|
|
1741
|
+
`),{supervisor:"pidfile",pid:o,healthy:await Cd(e,t.baseUrl)}}var JL=1e4,CE=200;async function Cd(e,t){let n=Math.ceil(JL/CE);for(let r=0;r<n;r++){if(await e.probe(t))return!0;await e.sleep(CE)}return!1}var eN=5000,PE=100;async function Dd(e){if(En(e)){let r=await e.run(Yt(e.scope,["stop",Qt]));if(r.code!==0)throw Error(r.stderr.trim()||`systemctl stop exited ${r.code}`);return{supervisor:"systemd",stopped:!0}}let t=Ld(e);if(t===null)return{supervisor:"none",stopped:!1};e.kill(t,"SIGTERM");let n=Math.ceil(eN/PE);for(let r=0;e.alive(t);r++){if(r>=n){e.kill(t,"SIGKILL");break}await e.sleep(PE)}return Id(Ws(e.stateDir),{force:!0}),{supervisor:"pidfile",stopped:!0}}async function UE(e,t){let n=e.unitPath;if(Hs(n)&&!t.force)throw Error(`${n} already exists; pass --force to replace it`);Pd(NE(n),{recursive:!0}),IE(n,QL({root:e.root,bun:t.bun,entrypoint:t.entrypoint}));let r=await e.run(Yt(e.scope,["daemon-reload"])),o=!1;if(t.enable)o=(await e.run(Yt(e.scope,["enable",Qt]))).code===0;return{path:n,reloaded:r.code===0,enabled:o}}async function $E(e){let t=e.unitPath;if(!Hs(t))return{path:t,removed:!1};return await e.run(Yt(e.scope,["disable","--now",Qt])),Id(t,{force:!0}),await e.run(Yt(e.scope,["daemon-reload"])),{path:t,removed:!0}}function oo(e){let t=e.logFile?.trim(),n=t!==void 0&&t.length>0&&Fs(t)?t:En(e)?void 0:Fs(Qn(e))?Qn(e):void 0;return{source:cl({...n===void 0?{}:{logFile:n},unitInstalled:En(e),scope:e.scope}),deps:{readFile:(r,o)=>xd(r,o),run:e.run}}}async function FE(e,t){let{source:n,deps:r}=oo(e);return(await Fn(r,n,{lines:t})).lines.map((i)=>i.raw).join(`
|
|
1742
|
+
`)}var Md=2000,tN={debug:"dim",warn:"yellow",error:"red"};function BE(e,t){return t.map((n)=>{let r=n.level===null?void 0:tN[n.level];return r===void 0?n.raw:R(e,r,n.raw)}).join(`
|
|
1743
|
+
`)}function js(e){if(e.kind==="file")return`${e.path} (named by OMNI_LOG_FILE)`;if(e.kind==="journal")return`systemd journal for ${e.unit}`;return"not captured \u2014 run under systemd, or start it with `omni start`"}function nN(e){if(e.kind!=="none")return`no output yet in ${js(e)}`;return["this gateway's output is not being captured, so there is nothing to show.","run it in the foreground and its output goes to your terminal instead.","to capture it: `omni service install`, or `omni start`, which redirects","output to a file and points OMNI_LOG_FILE at it."].join(`
|
|
1744
|
+
`)}var zE={usage:"console [-n N] [--follow] [--level debug|info|warn|error]",summary:"Show the gateway process's own output",options:{number:{type:"string",short:"n"},follow:{type:"boolean"},level:{type:"string"},system:{type:"boolean"}},async run(e,{ctx:t,writer:n,service:r}){let o=bn(e.values,"number")??50,i=O(e.values,"level"),s=Yo(i);if(i!==void 0&&s===null)throw new P(`unknown level "${i}"; use debug, info, warn or error`);let{source:a,deps:u}=oo(r()),l={lines:o,...s===null?{}:{level:s}},c=await Fn(u,a,l);if(S(t,n,c,()=>c.lines.length===0?nN(a):BE(t,c.lines)),!t.json&&c.lines.length>0)Z(t,n,R(t,"dim",`reading ${js(a)}`));if(L(e.values,"follow")!==!0||t.json)return;let p=c.lines.at(-1)?.at??0;for(;;){await Bun.sleep(Md);let d=await Fn(u,a,{...l,since:p});if(d.lines.length===0)continue;p=d.lines.at(-1)?.at??p,n.out(BE(t,d.lines))}}};function qE(e,t){if(!e.enabled)return{ok:!1,text:e.disabledReason??"disabled"};if(si(e,t))return{ok:!1,text:"expired"};if(_u(e,t))return{ok:!0,text:"expired (refreshable)"};return{ok:!0,text:"enabled"}}var HE={usage:"credentials list",summary:"List provider accounts and whether the router may use them",async run(e,{ctx:t,writer:n}){let r=await Ye(await t.store());S(t,n,{credentials:r},()=>{if(r.length===0)return"no credentials; add one with: omni connect <provider>";return K([{header:"ID"},{header:"PROVIDER"},{header:"LABEL"},{header:"AUTH"},{header:"TIER",align:"right"},{header:"WEIGHT",align:"right"},{header:"STATE"},{header:"EXPIRES"}],r.map((o)=>{let i=qE(o,t.now());return[o.id,Le(t,o.provider),o.label,o.authType,String(o.tier),String(o.weight),j(t,i.ok,i.text),oe(o.expiresAt)]}))})}};async function Ud(e,t){return bs(await e.store(),t)}var WE={usage:"credentials show <id>",summary:"Show one account in full, without its secrets",async run(e,{ctx:t,writer:n}){let r=D(e,0,"credential id"),o=await Ud(t,r),i=qE(o,t.now()),s={id:o.id,provider:o.provider,label:o.label,authType:o.authType,enabled:o.enabled,tier:o.tier,weight:o.weight,expiresAt:o.expiresAt,accountEmail:o.accountEmail,providerData:o.providerData,disabledReason:o.disabledReason,disabledAt:o.disabledAt,hasRefreshToken:o.hasRefreshToken,createdAt:o.createdAt,updatedAt:o.updatedAt};S(t,n,s,()=>z([["id",o.id],["provider",Le(t,o.provider)],["label",o.label],["auth",o.authType],["state",j(t,i.ok,i.text)],["tier",String(o.tier)],["weight",String(o.weight)],["account",o.accountEmail??"\u2014"],["expires",oe(o.expiresAt)],["refresh token",o.hasRefreshToken?"yes":"no"],["created",oe(o.createdAt)],["updated",oe(o.updatedAt)]]))}};function jE(e){return{usage:`credentials ${e?"enable":"disable"} <id>`,summary:`${e?"Let":"Stop letting"} the router use an account`,async run(t,{ctx:n,writer:r}){let o=D(t,0,"credential id");await ks({store:await n.store(),now:n.now},o,{enabled:e}),S(n,r,{id:o,enabled:e},()=>`${o} ${e?"enabled":"disabled"}`)}}}var KE=jE(!0),GE=jE(!1),ZE={usage:"credentials set <id> [--label L] [--tier N] [--weight W]",summary:"Change an account's label, tier, or weight",options:{label:{type:"string"},tier:{type:"string"},weight:{type:"string"}},async run(e,{ctx:t,writer:n}){let r=D(e,0,"credential id"),o=O(e.values,"label"),i=bn(e.values,"tier"),s=bn(e.values,"weight");if(o===void 0&&i===void 0&&s===void 0)throw new P("nothing to change: pass --label, --tier, or --weight");let a={...o===void 0?{}:{label:o},...i===void 0?{}:{tier:i},...s===void 0?{}:{weight:s}};await ks({store:await t.store(),now:t.now},r,a),S(t,n,{id:r,...a},()=>`${r} updated`)}},XE={usage:"credentials rm <id>",summary:"Delete an account and its stored tokens",async run(e,{ctx:t,writer:n,prompt:r}){let o=D(e,0,"credential id"),i=await Ud(t,o),s=(await hn(await t.store())).filter((u)=>u.targets.some((l)=>l.credentialId===o)).map((u)=>u.id);if(!await r.confirm(`delete ${i.provider} credential "${i.label}" (${o})?`+(s.length===0?"":` ${s.length===1?"model":"models"} ${s.join(", ")} ${s.length===1?"pins a target":"pin targets"} to it, and ${s.length===1?"that target":"those targets"} will fail rather than fall back to another account.`)))throw new C("cancelled");await El(await t.store(),o),S(t,n,{id:o,removed:!0},()=>`${o} removed`)}},VE={usage:"credentials refresh <id>",summary:"Force an OAuth token refresh now",async run(e,{ctx:t,writer:n}){let r=D(e,0,"credential id"),o=await t.store(),i=await Ud(t,r),s=Jr({store:o,providers:Object.hasOwn(M,i.provider)?Et:(await Xn(t.root.root)).providers,http:Un(),now:t.now});Z(t,n,`refreshing ${i.provider} credential ${r}\u2026`);let a=await bl({store:o,refresh:s},r);S(t,n,{id:r,expiresAt:a.expiresAt},()=>`${r} refreshed; expires ${oe(a.expiresAt)}`)}},QE={usage:"credentials add-key <provider> [--label L] [--endpoint-id ID --endpoint-label L --origin URL --protocol P]",summary:"Store a provider API key, read from a prompt or stdin",options:{label:{type:"string"},"endpoint-id":{type:"string"},"endpoint-label":{type:"string"},origin:{type:"string"},protocol:{type:"string"}},async run(e,{ctx:t,writer:n,prompt:r}){let o=D(e,0,"provider"),i=Object.hasOwn(M,o),{descriptors:s,failures:a}=i?{descriptors:M,failures:[]}:await Vt(t.root.root),u=(y)=>Object.hasOwn(s,y);if(!u(o)){let y=a.map((_)=>`
|
|
1745
|
+
plugin ${_.id}: ${_.reason}`).join("");throw new P(`provider must be one of ${Yc.join(", ")}, or a plugin that loads and supplies one; omni plugin list shows which${y}`)}for(let y of a)Z(t,n,R(t,"yellow",`plugin ${y.id}: ${y.reason}`));let l=O(e.values,"protocol"),c=l==="chat-completions"?"chat_completions":l==="responses"?"responses":l,p=await r.secret(`${o} API key: `);if(p.length===0)throw new C("no API key given");let d=await t.store(),m=O(e.values,"endpoint-id"),g=o==="custom"&&m!==void 0?(await Ye(d)).find((y)=>y.provider==="custom"&&y.providerData.endpointId===m.trim()):void 0,h=g===void 0?void 0:`${String(g.providerData.origin)}${typeof g.providerData.basePath==="string"?g.providerData.basePath:""}`,f=await wl(d,{provider:o,apiKey:p,label:O(e.values,"label"),endpointId:m,endpointLabel:O(e.values,"endpoint-label")??g?.providerData.endpointLabel,origin:O(e.values,"origin")??h,protocol:c??g?.providerData.protocol},void 0,u);S(t,n,{id:f.id,provider:f.provider,pluginFailures:a},()=>`stored ${f.provider} api key as ${f.id}`)}},YE={usage:"credentials health",summary:"Show breaker state per credential and model",options:{all:{type:"boolean"}},async run(e,{ctx:t,writer:n}){let r=await t.store(),[{health:o,lastUsed:i},s]=await Promise.all([kl({store:r,now:t.now}),Ye(r)]),a=new Map(s.map((l)=>[l.id,l.label])),u=L(e.values,"all")?o:o.filter((l)=>l.breakerState!=="closed"||l.consecutiveFailures>0);S(t,n,{health:o,lastUsed:i},()=>{if(u.length===0)return"every credential is healthy";return K([{header:"CREDENTIAL"},{header:"MODEL"},{header:"BREAKER"},{header:"FAILS",align:"right"},{header:"LAST USED"}],u.map((l)=>[a.get(l.credentialId)??l.credentialId,l.model,j(t,l.breakerState==="closed",l.breakerState),String(l.consecutiveFailures),R(t,"dim",oe(i[l.credentialId]??null))]))})}};import{existsSync as rN}from"fs";function $d(e){try{let t=new URL(e);if(t.password!=="")t.password="***";return t.toString()}catch{return e}}async function Yn(e){return{store:await e.ctx.store(),fs:sd(),now:e.ctx.now}}var ev={usage:"db migrate [--to <postgres-url>]",summary:"Create or upgrade the database schema, or copy this installation onto Postgres",options:{to:{type:"string"}},async run(e,t){let{ctx:n,writer:r,prompt:o}=t,i=O(e.values,"to");if(i!==void 0){if(!i.startsWith("postgres"))throw new C("--to must be a postgres:// URL");if((await vn(t.service())).running)throw new C("a gateway is running against this installation; run omni stop first, so the copy misses nothing it is writing");if(!await o.confirm(`copy ${n.databasePath} into ${$d(i)}?`))throw new C("cancelled");let l=await n.store(),c=await gi({url:i,encryptionKey:await qo(n.config().encryptionKey),dayOffsetMinutes:n.config().dayOffsetMinutes});try{let p=await dl(l,c);S(n,r,{target:$d(i),...p},()=>[z([["target",$d(i)],...Object.entries(p.counts).map(([d,m])=>[d,String(m)])]),"","not carried:",...p.notCarried.map((d)=>` - ${d}`),"","next: set OMNI_DATABASE_URL and OMNI_REDIS_URL on every replica and start them."].join(`
|
|
1746
|
+
`))}finally{c.close()}return}let s=rN(n.databasePath);await(await n.store()).config.getSettings(),S(n,r,{path:n.databasePath,created:!s},()=>z([["database",n.databasePath],["schema",s?"up to date":"created"]]))}},tv={usage:"db stats",summary:"Show database size, free pages, and what snapshots are held",async run(e,t){let{ctx:n,writer:r}=t,o=await Ol(await Yn(t)),i=K([{header:"TABLE"},{header:"SIZE",align:"right"},{header:"ROWS",align:"right"}],o.tables.map((a)=>[a.name,ce(a.bytes),String(a.rows)])),s=o.engine==="postgres"?z([["database",o.location],["size",ce(o.logicalBytes)],["captured bodies",`${ce(o.bodiesBytes)} (request_bodies table)`],["schema version",String(o.stats.schemaVersion)]]):z([["database",n.databasePath],["size",ce(o.fileBytes)],["write-ahead log",ce(o.walBytes)],["captured bodies",`${ce(o.bodiesBytes)} (never snapshotted)`],["free pages",`${ce(o.freePageBytes)} \u2014 reclaimed by omni db vacuum`],["schema version",String(o.stats.schemaVersion)],["snapshots",`${o.snapshots.count} (${ce(o.snapshots.totalBytes)}), latest ${oe(o.snapshots.latestAt)}`],["retention",`keep ${o.retention.keepLatest}, up to ${o.retention.maxAgeDays} days`],["free disk",o.freeDiskBytes===null?"unknown":ce(o.freeDiskBytes)]]);S(n,r,o,()=>`${s}
|
|
1719
1747
|
|
|
1720
|
-
${i}`)}},
|
|
1748
|
+
${i}`)}},nv={usage:"db snapshots",summary:"List the snapshots held for this installation",async run(e,t){let{ctx:n,writer:r}=t,o=await Yn(t),i=Xr(o);S(n,r,{snapshots:i},()=>{if(i.length===0)return`no snapshots in ${gn(o)}; take one with omni db backup`;return K([{header:"ID"},{header:"TAKEN"},{header:"SIZE",align:"right"},{header:"REASON"}],i.map((s)=>[s.id,oe(s.createdAt),ce(s.sizeBytes),s.reason]))})}},rv={usage:"db backup",summary:"Take a snapshot of the database, pruning by the retention policy",async run(e,t){let{ctx:n,writer:r}=t,o=await vl(await Yn(t),{reason:"manual"});S(n,r,o,()=>(Z(n,r,"a snapshot carries encrypted credentials and key hashes; captured bodies are not in it"),z([["snapshot",o.id],["size",ce(o.sizeBytes)],["taken",oe(o.createdAt)]])))}},ov={usage:"db vacuum",summary:"Rewrite the database, reclaiming the pages deletion left free",async run(e,t){let{ctx:n,writer:r}=t;Z(n,r,"compacting; the gateway's writes will block until this finishes\u2026");let o=await Al(await Yn(t));S(n,r,o,()=>z([["reclaimed",ce(o.reclaimedBytes)],["took",`${o.durationMs} ms`]]))}},iv={usage:"db clear-bodies",summary:"Delete every captured request and response body; the requests stay logged",async run(e,t){let{ctx:n,writer:r,prompt:o}=t;if(!await o.confirm("delete every captured body? there is no snapshot of them"))throw new C("cancelled");let i=await xl(await Yn(t));S(n,r,i,()=>z([["removed",String(i.removed)],["orphaned files removed",String(i.orphans)]]))}};function JE(e){let t=e.live,n=[...new Set([...Object.keys(e.snapshot),...Object.keys(t??{})])].sort(),r=(i,s)=>{let a=i?.[s];return a===void 0?"\u2014":String(a)},o=K([{header:"TABLE"},{header:"SNAPSHOT",align:"right"},{header:"LIVE",align:"right"}],n.map((i)=>[i,r(e.snapshot,i),r(t,i)]));return t===null?`${o}
|
|
1721
1749
|
|
|
1722
|
-
the live database could not be read, so the LIVE column is unknown`:o}var
|
|
1750
|
+
the live database could not be read, so the LIVE column is unknown`:o}var sv={usage:"db restore <id> [--dry-run]",summary:"Replace the database with a snapshot, keeping a copy of what was there",options:{"dry-run":{type:"boolean"}},async run(e,t){let{ctx:n,writer:r,prompt:o}=t,i=D(e,0,"snapshot id"),s=await vn(t.service());if(s.running){let c=s.pid===null?s.supervisor:`${s.supervisor}, pid ${s.pid}`;throw new C(`a gateway is running (${c}) against this installation; run omni stop first, or restore from the dashboard, which swaps the file behind its own quiesce latch`)}let a=await Yn(t),u=await Rl(a,i);if(L(e.values,"dry-run")){S(n,r,{id:i,...u},()=>JE(u));return}if(r.err(JE(u)),!await o.confirm(`replace ${n.databasePath} with ${i}?`))throw new C("cancelled");let l=await Sl(a,i);S(n,r,l,()=>z([["restored",i],["undo",l.preRestoreSnapshot.id],...Object.entries(l.counts).map(([c,p])=>[c,String(p)])]))}};var Bd=new Set(["requests","tokens","spend"]),av="concurrency",Fd="models";function zd(){return{scope:{},models:Object.create(null)}}function mv(e){let t=Object.keys(e.models);if(t.length===0)return{...e.scope};let n={};for(let r of t){let o=e.models[r];if(o!==void 0)n[r]=o}return{...e.scope,[Fd]:n}}var uv="__proto__";function vt(e,t){if(t===uv)throw new P(`${e} cannot name "${uv}"`)}function fv(e,t,n={}){let r=n;for(let o of e){let i=o.indexOf("=");if(i<=0)throw new P(`${t} must be dimension:window=value, got "${o}"`);let s=o.slice(0,i),a=o.slice(i+1),u=Number(a);if(a.trim().length===0||!Number.isFinite(u))throw new P(`${t} ${s} must be a number, got "${a}"`);let l=s.indexOf(":");if(l<0){if(Bd.has(s))throw new P(`${t} ${s} needs a window, e.g. ${t} ${s}:1m=60`);vt(t,s),cv(t,s),r[s]=u;continue}let c=s.slice(0,l),p=s.slice(l+1);if(c.length===0||p.length===0)throw new P(`${t} must be dimension:window=value, got "${o}"`);vt(t,c),vt(t,p),cv(t,c),gv(r,c,p,u)}return r}function cv(e,t){if(t===Fd)throw new P(`${e} cannot name "${Fd}"; per-model limits use --model-limit`)}function gv(e,t,n,r){let o=e[t],i=typeof o==="object"?o:{};i[n]=r,e[t]=i}function hv(e,t,n){let r=()=>new P(`${t} must be ${n}, got "${e}"`),o=e.lastIndexOf(":");if(o<0)throw r();let i=e.slice(o+1);if(i===av){let c=e.slice(0,o);if(c.length===0)throw r();return vt(t,c),{model:c,dimension:av,window:null}}if(Bd.has(i))throw new P(`${t} ${e} needs a window, e.g. ${t} ${e}:1m`);let s=e.slice(0,o),a=s.lastIndexOf(":");if(a<0)throw r();let u=s.slice(0,a),l=s.slice(a+1);if(u.length===0||l.length===0||i.length===0)throw r();return vt(t,u),vt(t,l),vt(t,i),{model:u,dimension:l,window:i}}var lv="model:dimension:window=value or model:concurrency=value";function yv(e,t){for(let r of e){let o=r.lastIndexOf("=");if(o<=0)throw new P(`--model-limit must be ${lv}, got "${r}"`);let i=r.slice(0,o),s=r.slice(o+1),a=Number(s);if(s.trim().length===0||!Number.isFinite(a))throw new P(`--model-limit ${i} must be a number, got "${s}"`);let{model:u,dimension:l,window:c}=hv(i,"--model-limit",lv),p=t.models[u]??{};if(c===null)p[l]=a;else gv(p,l,c,a);t.models[u]=p}}function oN(e,t){for(let r of t){if(r.includes("="))throw new P(`--unset-model-limit names a limit to remove, not a value, got "${r}"`);let{model:o,dimension:i,window:s}=hv(r,"--unset-model-limit","model:dimension:window or model:concurrency"),a=e.models[o],u=()=>new P(`this key has no ${r} limit`);if(a===void 0||!Object.hasOwn(a,i))throw u();if(s===null)delete a[i];else{let l=a[i];if(typeof l!=="object"||!Object.hasOwn(l,s))throw u();if(delete l[s],Object.keys(l).length===0)delete a[i]}if(Object.keys(a).length===0)delete e.models[o]}}function iN(e){let t=zd();t.scope=dv(e);for(let[n,r]of Object.entries(e.models??{})){let o=dv(r);if(Object.keys(o).length>0)t.models[n]=o}return t}function dv(e){let t={};for(let n of["requests","tokens","spend"]){let r=e[n];if(r===void 0)continue;let o={};for(let[i,s]of Object.entries(r)){if(s===null||s===void 0)continue;o[i]=s}if(Object.keys(o).length>0)t[n]=o}if(e.concurrency!==void 0&&e.concurrency!==null)t.concurrency=e.concurrency;return t}function sN(e,t){for(let n of t){if(n.includes("="))throw new P(`--unset names a limit to remove, not a value, got "${n}"`);let r=n.indexOf(":");if(r<0){if(Bd.has(n))throw new P(`--unset ${n} needs a window, e.g. --unset ${n}:1m`);if(vt("--unset",n),e[n]===void 0)throw new P(`this key has no ${n} limit`);delete e[n];continue}let o=n.slice(0,r),i=n.slice(r+1);if(o.length===0||i.length===0)throw new P(`--unset must be dimension:window, got "${n}"`);vt("--unset",o),vt("--unset",i);let s=e[o];if(typeof s!=="object"||s[i]===void 0)throw new P(`this key has no ${n} limit`);if(delete s[i],Object.keys(s).length===0)delete e[o]}}function aN(e){let t=e.dimension==="spend",n=(r)=>t?Jn(r):String(r);return[e.model??"key",e.dimension,e.window??"\u2014",n(e.limit),e.used===null?"\u2014":n(e.used),e.used===null?"\u2014":`${Math.round(e.used/e.limit*100)}%`]}function uN(e){let t=pv(e,"");for(let[n,r]of Object.entries(e.models??{}))t.push(...pv(r,`${n}:`));return t.length===0?"\u2014":t.join(" ")}function pv(e,t){let n=[];for(let r of["requests","tokens","spend"]){let o=e[r];if(o===void 0)continue;for(let[i,s]of Object.entries(o)){if(s===null||s===void 0)continue;n.push(`${t}${r}:${i}=${s}`)}}if(e.concurrency!==void 0&&e.concurrency!==null)n.push(`${t}concurrency=${e.concurrency}`);return n}function _v(e,t){let n=Date.parse(t);if(!Number.isFinite(n))throw new P(`${e} must be a date, e.g. 2030-01-01, got "${t}"`);return n}function wv(e,t){if(e.revokedAt!==null)return"revoked";return vr(e,t)?"active":"expired"}var bv={usage:"keys list",summary:"List gateway API keys",async run(e,{ctx:t,writer:n}){let r=await Nt(await t.store()),o=Date.now();S(t,n,{keys:r},()=>{if(r.length===0)return"no api keys; create one with: omni keys create";return K([{header:"ID"},{header:"LABEL"},{header:"PREFIX"},{header:"MODELS"},{header:"LIMITS"},{header:"BODY CAPTURE"},{header:"POLICY"},{header:"SMART ROUTING"},{header:"STATE"},{header:"EXPIRES"},{header:"CREATED"}],r.map((i)=>[i.id,i.label,i.prefix,i.modelAllowlist===null?"all":i.modelAllowlist.length===0?"none":i.modelAllowlist.join(","),i.limits===null?R(t,"red","unreadable"):uN(i.limits),i.bodyLoggingOptOut?"no bodies":"\u2014",i.guardrailPolicy===null?"no":"yes",i.smartRouting?"yes":"no",((s)=>j(t,s==="active",s))(wv(i,o)),oe(i.expiresAt),oe(i.createdAt)]))})}},kv={usage:"keys create [--label L] [--allow <model> ...] [--limit <d>:<w>=N ...] [--model-limit <model>:<d>:<w>=N ...] [--expires <when>] [--policy <text>] [--smart-routing] [--no-bodies]",summary:"Mint a gateway API key, printed once",options:{label:{type:"string"},allow:{type:"string",multiple:!0},limit:{type:"string",multiple:!0},"model-limit":{type:"string",multiple:!0},expires:{type:"string"},policy:{type:"string"},"smart-routing":{type:"boolean"},"no-bodies":{type:"boolean"}},async run(e,{ctx:t,writer:n}){let r=Ie(e.values,"allow"),o=O(e.values,"policy"),i=O(e.values,"expires"),s=zd();fv(Ie(e.values,"limit")??[],"--limit",s.scope),yv(Ie(e.values,"model-limit")??[],s);let a=await Il(await t.store(),{...O(e.values,"label")===void 0?{}:{label:O(e.values,"label")},modelAllowlist:r??null,limits:mv(s),bodyLoggingOptOut:L(e.values,"no-bodies"),expiresAt:i===void 0?null:_v("--expires",i),guardrailPolicy:o??null,smartRouting:L(e.values,"smart-routing")});S(t,n,a,()=>(Z(t,n,R(t,"yellow","this key is shown once and stored only as a hash")),`${a.key}`))}},Ev={usage:"keys limits <id> [--set <d>:<w>=N ...] [--unset <d>:<w> ...] [--model-limit <model>:<d>:<w>=N ...] [--unset-model-limit <model>:<d>[:<w>] ...]",summary:"Show or edit one key's limits, with what has been used against them",options:{set:{type:"string",multiple:!0},unset:{type:"string",multiple:!0},"model-limit":{type:"string",multiple:!0},"unset-model-limit":{type:"string",multiple:!0}},async run(e,{ctx:t,writer:n}){let r=D(e,0,"key id"),o=[...Ie(e.values,"set")??[],...Ie(e.values,"model-limit")??[]],i=[...Ie(e.values,"unset")??[],...Ie(e.values,"unset-model-limit")??[]],s=await t.store(),a=(await Nt(s)).find((c)=>c.id===r);if(a===void 0)throw new C(`no api key "${r}"`);let u=a,l=!1;if(o.length>0||i.length>0){if(a.limits===null){if(i.length>0)throw new C(`the stored limits for "${r}" cannot be read, so there is nothing to unset; replace them with --set instead`);l=!0,Z(t,n,R(t,"yellow","the stored limits could not be read and are being replaced"))}let c=a.limits===null?zd():iN(a.limits);sN(c.scope,Ie(e.values,"unset")??[]),oN(c,Ie(e.values,"unset-model-limit")??[]),fv(Ie(e.values,"set")??[],"--set",c.scope),yv(Ie(e.values,"model-limit")??[],c),u=await Ll(s,r,{limits:mv(c)})}S(t,n,l?{...u,limitsReplaced:!0}:u,()=>{let c=z([["id",u.id],["label",u.label],["prefix",`${u.prefix}\u2026`]]);if(u.limits===null)return`${c}
|
|
1723
1751
|
|
|
1724
|
-
${
|
|
1752
|
+
${R(t,"red","limits unreadable")}: this key is refused at /v1 until they are replaced with --set`;if(u.limitUsage.length===0)return`${c}
|
|
1725
1753
|
|
|
1726
|
-
no limits configured; this key is unlimited`;return`${
|
|
1754
|
+
no limits configured; this key is unlimited`;return`${c}
|
|
1727
1755
|
|
|
1728
|
-
${
|
|
1729
|
-
${
|
|
1730
|
-
expires: never`;let
|
|
1731
|
-
expires: ${oe(u.expiresAt)}${
|
|
1756
|
+
${K([{header:"SCOPE"},{header:"DIMENSION"},{header:"WINDOW"},{header:"LIMIT",align:"right"},{header:"USED",align:"right"},{header:"USE%",align:"right"}],u.limitUsage.map(aN))}
|
|
1757
|
+
${R(t,"dim","usage is counted from completed requests still inside each window")}`})}},vv={usage:"keys expiry <id> [--at <when>] [--never]",summary:"Show or replace one key's expiry",options:{at:{type:"string"},never:{type:"boolean"}},async run(e,{ctx:t,writer:n}){let r=D(e,0,"key id"),o=O(e.values,"at"),i=L(e.values,"never"),s=await t.store(),a=(await Nt(s)).find((l)=>l.id===r);if(a===void 0)throw new C(`no api key "${r}"`);let u=a;if(i||o!==void 0){if(i&&o!==void 0)throw new P("--at and --never cannot be combined");let l=i?null:_v("--at",o);u=await Dl(s,r,{expiresAt:l})}S(t,n,u,()=>{let l=z([["id",u.id],["label",u.label],["prefix",`${u.prefix}\u2026`]]);if(u.expiresAt===null)return`${l}
|
|
1758
|
+
expires: never`;let c=wv(u,Date.now());return`${l}
|
|
1759
|
+
expires: ${oe(u.expiresAt)}${c==="expired"?` ${R(t,"red","(expired)")}`:""}`})}},Tv={usage:"keys guardrail <id> [--policy <text> | --policy-file <path> | --clear]",summary:"Show or replace one key's usage policy",options:{policy:{type:"string"},"policy-file":{type:"string"},clear:{type:"boolean"}},async run(e,{ctx:t,writer:n}){let r=D(e,0,"key id"),o=O(e.values,"policy"),i=O(e.values,"policy-file"),s=L(e.values,"clear"),a=[o!==void 0,i!==void 0,s].filter(Boolean).length;if(a>1)throw new P("pass one of --policy, --policy-file or --clear");let u=await t.store(),l=(await Nt(u)).find((p)=>p.id===r);if(l===void 0)throw new C(`no api key "${r}"`);let c=l;if(a===1){let p=s?null:i!==void 0?await Bun.file(i).text().catch(()=>{throw new C(`could not read ${i}`)}):o;c=await Ml(u,r,{policy:p})}S(t,n,c,()=>{let p=z([["id",c.id],["label",c.label],["prefix",`${c.prefix}\u2026`]]);if(c.guardrailPolicy===null)return`${p}
|
|
1732
1760
|
policy: none; requests are not judged`;return`${p}
|
|
1733
1761
|
policy:
|
|
1734
|
-
${
|
|
1735
|
-
models: ${p}`})}};var
|
|
1736
|
-
`))}};function
|
|
1762
|
+
${c.guardrailPolicy}`})}},Rv={usage:"keys smart-routing <id> (--on | --off)",summary:"Turn confidential-data routing on or off for one key",options:{on:{type:"boolean"},off:{type:"boolean"}},async run(e,{ctx:t,writer:n}){let r=D(e,0,"key id"),o=L(e.values,"on"),i=L(e.values,"off");if(o===i)throw new P("pass exactly one of --on or --off");let s=await t.store();if((await Nt(s)).find((l)=>l.id===r)===void 0)throw new C(`no api key "${r}"`);let u=await Ul(s,r,{enabled:o});S(t,n,u,()=>z([["id",u.id],["label",u.label],["prefix",`${u.prefix}\u2026`],["smart routing",u.smartRouting?"on":"off"]]))}},Sv={usage:"keys revoke <id>",summary:"Revoke a gateway API key, keeping its usage history",async run(e,{ctx:t,writer:n,prompt:r}){let o=D(e,0,"key id"),s=(await Nt(await t.store())).find((a)=>a.id===o);if(s===void 0)throw new C(`no api key "${o}"`);if(!await r.confirm(`revoke key "${s.label}" (${s.prefix}\u2026)?`))throw new C("cancelled");await $l(await t.store(),o),S(t,n,{id:o,revoked:!0},()=>`${o} revoked`)}},xv={usage:"keys models <id> [--allow <model> ...] [--all] [--none]",summary:"Show or replace one key's allowed models",options:{allow:{type:"string",multiple:!0},all:{type:"boolean"},none:{type:"boolean"}},async run(e,{ctx:t,writer:n}){let r=D(e,0,"key id"),o=Ie(e.values,"allow"),i=L(e.values,"all"),s=L(e.values,"none"),a=await t.store(),u=(await Nt(a)).find((c)=>c.id===r);if(u===void 0)throw new C(`no api key "${r}"`);let l=u;if(i||s||o!==void 0){if([i,s,o!==void 0].filter(Boolean).length>1)throw new P("--all, --none, and --allow cannot be combined");l=await Nl(a,r,{modelAllowlist:i?null:s?[]:o??[]})}S(t,n,l,()=>{let c=z([["id",l.id],["label",l.label],["prefix",`${l.prefix}\u2026`]]),p=l.modelAllowlist===null?"every model":l.modelAllowlist.length===0?"no models; every request this key makes is refused":l.modelAllowlist.join(", ");return`${c}
|
|
1763
|
+
models: ${p}`})}};var Av={usage:"models list",summary:"List virtual models and their targets",async run(e,{ctx:t,writer:n}){let r=await hn(await t.store());S(t,n,{models:r},()=>{if(r.length===0)return"no virtual models configured";return K([{header:"ID"},{header:"STRATEGY"},{header:"ALIAS"},{header:"TARGETS",align:"right"},{header:"PROVIDERS"}],r.map((o)=>[o.id,o.strategy,o.isAlias?"yes":"no",String(o.targets.length),[...new Set(o.targets.map((i)=>i.provider))].map((i)=>Le(t,i)).join(" ")]))})}},Ov={usage:"models show <id>",summary:"Show one virtual model's targets and pricing",async run(e,{ctx:t,writer:n}){let r=D(e,0,"model id"),o=await As(await t.store(),r),i=o.targets.some((s)=>s.credentialId!==void 0);S(t,n,{model:o},()=>[z([["id",o.id],["strategy",o.strategy],["alias",o.isAlias?"yes":"no"]]),"",K([{header:"PROVIDER"},{header:"MODEL"},...i?[{header:"ACCOUNT"}]:[],{header:"TIER",align:"right"},{header:"WEIGHT",align:"right"},{header:"IN $/MTOK",align:"right"},{header:"OUT $/MTOK",align:"right"},{header:"CACHE R",align:"right"},{header:"CACHE W 5M",align:"right"},{header:"CACHE W 1H",align:"right"},{header:"CONTEXT",align:"right"},{header:"MAX OUT",align:"right"},{header:"CAPABILITIES"}],o.targets.map((s)=>[Le(t,s.provider),s.model,...i?[s.credentialId??"any"]:[],String(s.tier),String(s.weight),s.costPerMTok.input.toFixed(2),s.costPerMTok.output.toFixed(2),Jt(s.costPerMTok.cacheRead),Jt(s.costPerMTok.cacheWrite5m),Jt(s.costPerMTok.cacheWrite1h),io(s.contextWindow),io(s.maxOutputTokens),cN(s)]))].join(`
|
|
1764
|
+
`))}};function Jt(e){return e===void 0?"\u2014":e.toFixed(2)}function io(e){return e===void 0?"\u2014":e.toLocaleString("en-US")}function cN(e){let t=Object.entries(e.capabilities).filter(([,n])=>n).map(([n])=>n);return t.length===0?"\u2014":t.join(",")}function lN(e,t){let n=e.indexOf(":");if(n<=0)throw new P(`--from-catalog expects <provider>:<model>, got "${e}"`);let r=e.slice(0,n),o=e.slice(n+1),i=t[r];if(i===void 0)throw new P(`unknown provider "${r}" in "${e}"`);let s=Hi(i.catalog,o);if(s===null)throw new P(`no catalog entry for "${e}"; see omni models catalog`);return{provider:r,model:o,tier:1,weight:1,costPerMTok:s,capabilities:i.capabilities}}function dN(e){return Object.entries(e).flatMap(([t,n])=>n.catalog.models.map((r)=>({...r,provider:t})))}var Cv={usage:"models catalog [--provider P]",summary:"List the built-in model catalog and its list pricing",options:{provider:{type:"string"}},async run(e,{ctx:t,writer:n}){let r=O(e.values,"provider"),{descriptors:o}=await Vt(t.root.root),i=dN(o).filter((s)=>r===void 0||s.provider===r);S(t,n,{models:i},()=>K([{header:"PROVIDER"},{header:"MODEL"},{header:"LABEL"},{header:"IN $/MTOK",align:"right"},{header:"OUT $/MTOK",align:"right"},{header:"CACHE R",align:"right"},{header:"CACHE W 5M",align:"right"},{header:"CACHE W 1H",align:"right"},{header:"CONTEXT",align:"right"},{header:"CONTEXT OAUTH",align:"right"},{header:"MAX OUT",align:"right"}],i.map((s)=>{let a=s.pricing,u=Wi(s),l=Wi(s,"oauth");return[Le(t,s.provider),s.id,s.label,Jt(a?.input),Jt(a?.output),Jt(a?.cacheRead),Jt(a?.cacheWrite5m),Jt(a?.cacheWrite1h),io(u?.contextWindow),l?.contextWindow===u?.contextWindow?"\u2014":io(l?.contextWindow),io(u?.maxOutputTokens)]})))}},Pv={usage:"models put <id> (-f model.json | --from-catalog <provider>:<model> ...)",summary:"Create or replace a virtual model",options:{file:{type:"string",short:"f"},"from-catalog":{type:"string",multiple:!0},strategy:{type:"string"},alias:{type:"boolean"}},async run(e,{ctx:t,writer:n}){let r=D(e,0,"model id"),o=O(e.values,"file"),i=Ie(e.values,"from-catalog");if(o!==void 0&&i!==void 0)throw new P("pass either -f or --from-catalog, not both");let s;if(o!==void 0){let a=await Bun.file(o).text().catch(()=>{throw new C(`could not read ${o}`)});try{s=JSON.parse(a)}catch{throw new C(`${o} is not valid JSON`)}}else if(i!==void 0){let{descriptors:a}=await Vt(t.root.root);s={id:r,strategy:O(e.values,"strategy")??"score",isAlias:L(e.values,"alias"),targets:i.map((l)=>lN(l,a))}}else throw new P("pass -f <file> or --from-catalog <provider>:<model>");await Zl(await t.store(),r,s),S(t,n,{id:r,ok:!0},()=>`${r} saved`)}},Iv={usage:"models rm <id>",summary:"Delete a virtual model",async run(e,{ctx:t,writer:n,prompt:r}){let o=D(e,0,"model id");if(await As(await t.store(),o),!await r.confirm(`delete virtual model "${o}"?`))throw new C("cancelled");await Xl(await t.store(),o),S(t,n,{id:o,removed:!0},()=>`${o} removed`)}},Lv={usage:"models dry-run <id> [--tools] [--images] [--reasoning]",summary:"Show where a request for this model would be sent, and why",options:{tools:{type:"boolean"},images:{type:"boolean"},reasoning:{type:"boolean"}},async run(e,{ctx:t,writer:n}){let r=D(e,0,"model id"),{descriptors:o,failures:i}=await Vt(t.root.root),s=await Cl({store:await t.store(),now:t.now,providers:o},r,{tools:L(e.values,"tools"),images:L(e.values,"images"),reasoning:L(e.values,"reasoning")});for(let a of i)Z(t,n,R(t,"yellow",`plugin ${a.id}: ${a.reason}`));S(t,n,{...s,pluginFailures:i},()=>{let a=z([["model",s.modelId],["strategy",s.strategy],["deterministic",s.deterministic?"yes":"no (weighted draw)"]]),u=s.candidates.length===0?j(t,!1,"no candidate can serve this request"):K([{header:"#",align:"right"},{header:"CREDENTIAL"},{header:"PROVIDER"},{header:"MODEL"},{header:"TIER",align:"right"},{header:"SCORE",align:"right"}],s.candidates.map((c,p)=>[String(p+1),c.credentialLabel,Le(t,c.provider),c.model,String(c.tier),c.score.toFixed(3)])),l=s.excluded.length===0?"":`
|
|
1737
1765
|
|
|
1738
|
-
${
|
|
1739
|
-
${
|
|
1766
|
+
${R(t,"dim","excluded")}
|
|
1767
|
+
${K([{header:"CREDENTIAL"},{header:"MODEL"},{header:"REASON"}],s.excluded.map((c)=>[c.credentialId,c.model,c.reason]))}`;return`${a}
|
|
1740
1768
|
|
|
1741
|
-
${u}${
|
|
1742
|
-
`)});let p=
|
|
1743
|
-
`))}},
|
|
1744
|
-
${
|
|
1769
|
+
${u}${l}`})}};var Nv={fiveHour:0,daily:1,weekly:2},qd={fiveHour:"5h",daily:"24h",weekly:"7d"};function Hd(e,t){return Nv[e.windowType]-Nv[t.windowType]}var Dv=(e,t)=>`${e}|${t}`,Ks=(e,t)=>e.get(Dv(t.credentialId,t.windowType));async function Wd(e,t,n){let r=await Zn(e),o=Gr(n,{now:t(),pollIntervalMs:r.quotaPollIntervalMs});return new Map(o.map((i)=>[Dv(i.credentialId,i.windowType),i]))}function jd(e,t,n){let r=fy(e,t);if(r!=="empty")return{kind:r};return{kind:r,inMs:(t?.exhaustsAt??n)-n}}function Mv(e){if(e.kind==="empty")return`~${ao(e.inMs)}`;return e.kind==="ok"?"ok":""}var en="\u2014";function pN(e,t){let n=t?.ratePerHour??null;if(n===null)return en;return e.limit===null||e.limit<=0?`${n.toFixed(1)}/h`:`${(n/e.limit*100).toFixed(1)}%/h`}var Uv={usage:"quota",summary:"Show provider quota use, burn rate, and when each window runs out",async run(e,{ctx:t,writer:n}){let r=await t.store(),o=t.now(),{credentials:i}=await Zr(r,{now:t.now}),s=i.flatMap((c)=>c.quota),a=await Wd(r,t.now,s),u=t.json?await md({store:r,now:t.now},{}):{samples:[],gatewayRates:[]},l={credentials:i.map((c)=>({id:c.id,provider:c.provider,label:c.label,windows:c.quota})),burn:[...a.values()],samples:u.samples,gatewayRates:u.gatewayRates};S(t,n,l,()=>{if(i.length===0)return"no credentials; add one with: omni connect <provider>";let c=i.flatMap((p)=>{let d=`${Le(t,p.provider)}:${p.label}`,m=[...p.quota].sort(Hd);if(m.length===0){let g=R(t,"dim","unknown");return[[d,en,g,en,g,en]]}return m.map((g)=>{let h=jd(g,Ks(a,g),o),f=h.kind==="empty"?`empty ~${ao(h.inMs)}`:h.kind==="ok"?"ok":R(t,"dim",h.kind);return[d,qd[g.windowType],`${g.used}/${g.limit??en}`,pN(g,Ks(a,g)),f,g.resetsAt===null?en:ao(g.resetsAt-o)]})});return K([{header:"ACCOUNT"},{header:"WINDOW"},{header:"USED",align:"right"},{header:"RATE",align:"right"},{header:"ESTIMATE"},{header:"RESETS",align:"right"}],c)})}},mN={refreshed:"refreshed",coalesced:"refreshed by a concurrent probe",noData:"provider reported nothing",cooldown:"cooling down after a rate limit",unsupported:"no usage endpoint",disabled:"disabled",failed:"failed"};function fN(e){return e.kind==="failed"||e.kind==="cooldown"}var $v={usage:"quota refresh <id> | --all",summary:"Read provider quota now, for one account or for every account",options:{all:{type:"boolean"}},async run(e,{ctx:t,writer:n}){let r=e.values.all===!0,o=e.positionals[0];if(r===(o!==void 0))throw new P("give an account id or --all, not both");let i=await t.store(),s=await Ye(i),a=o===void 0?s:s.filter((d)=>d.id===o),u=await Kd(t,a);Z(t,n,o===void 0?"refreshing every account\u2026":`refreshing ${o}\u2026`);let l=await u.refresh(o===void 0?{kind:"all"}:{kind:"one",credentialId:o}),c=new Map(s.map((d)=>[d.id,d.label]));S(t,n,l,()=>{let d=l.outcomes.map((f)=>[`${c.get(f.credentialId)??f.credentialId}`,mN[f.kind],f.kind==="refreshed"||f.kind==="coalesced"?`${f.windows} window${f.windows===1?"":"s"}`:f.kind==="failed"?f.code:en]),m=l.outcomes.filter((f)=>f.kind==="refreshed"||f.kind==="coalesced").length,g=l.outcomes.filter((f)=>f.kind==="failed").length,h=l.outcomes.length-m-g;return[K([{header:"ACCOUNT"},{header:"OUTCOME"},{header:"DETAIL",align:"right"}],d),"",`refreshed ${m}; failed ${g}; skipped ${h}`].join(`
|
|
1770
|
+
`)});let p=l.outcomes.filter(fN);if(p.length>0)throw new C(p.length===l.outcomes.length?"quota refresh did not run":`quota refresh did not run for ${p.length} of ${l.outcomes.length} accounts`)}};async function Kd(e,t){let n=await e.store(),r=t.every((i)=>Object.hasOwn(M,i.provider))?Et:(await Xn(e.root.root)).providers,o=Un();return bd({store:n,coord:Ft({now:e.now}),providers:r,http:o,refresh:Jr({store:n,providers:r,http:o,now:e.now}),now:e.now})}var Fv={usage:"quota resets <id>",summary:"List an account's banked quota resets (Codex, Claude)",async run(e,{ctx:t,writer:n}){let r=D(e,0,"credential id"),o=(await Ye(await t.store())).filter((s)=>s.id===r),i=await(await Kd(t,o)).resetCredits(r);S(t,n,i,()=>[K([{header:"CREDIT"},{header:"STATUS"},{header:"TITLE"},{header:"EXPIRES"}],i.credits.map((s)=>[s.id,s.status,s.title??en,oe(s.expiresAt)])),"",`${i.available} available`].join(`
|
|
1771
|
+
`))}},Bv={usage:"quota reset <id> [--credit CREDIT_ID]",summary:"Spend one banked quota reset on an account (irreversible)",options:{credit:{type:"string"}},async run(e,{ctx:t,writer:n,prompt:r}){let o=D(e,0,"credential id"),i=O(e.values,"credit"),s=(await Ye(await t.store())).filter((p)=>p.id===o),a=s[0]?.label??o,u=await Kd(t,s),l=s[0]?.provider;if(l===void 0)throw new C("no such credential");if(!u.hasResets(l))throw new C("this account's provider has no quota resets");if(!await r.confirm(`spend one banked quota reset on "${a}" (${o})?`))throw new C("cancelled");let c=await u.redeemReset({credentialId:o,...i===void 0?{}:{creditId:i}});S(t,n,c,()=>`${a}: reset ${c.creditId} redeemed`+(c.windowsReset===null?"":`, ${c.windowsReset} window(s) reset`)+(c.quotaRefreshed?"; quota re-read":"; quota re-read failed, next poll will update it"))}};import{existsSync as tn}from"fs";import{closeSync as gN,existsSync as hN,openSync as yN}from"fs";import{join as Gd}from"path";var _N=async(e)=>{let t=Bun.spawn([...e],{stdout:"pipe",stderr:"pipe"}),[n,r,o]=await Promise.all([new Response(t.stdout).text(),new Response(t.stderr).text(),t.exited]);return{code:o,stdout:n,stderr:r}},wN=({argv:e,cwd:t,env:n,logFile:r})=>{let o=yN(r,"a");try{let i=Bun.spawn([...e],{cwd:t,env:n,stdin:"ignore",stdout:o,stderr:o});return i.unref(),i.pid}finally{gN(o)}};async function zv(e){return Bun.spawn([...e.argv],{cwd:e.cwd,env:e.env,stdin:"inherit",stdout:"inherit",stderr:"inherit"}).exited}var bN=1000;async function kN(e){try{return(await fetch(new URL("/health",e),{signal:AbortSignal.timeout(bN)})).ok}catch{return!1}}function EN(e){try{return process.kill(e,0),!0}catch{return!1}}function Gs(e,t=import.meta.dir){return[Gd(e,"apps","gateway","src","index.ts"),Gd(t,"..","gateway.js"),Gd(t,"gateway.js")].find((r)=>hN(r))??null}function qv(e){let t=e.env.OMNI_LOG_FILE?.trim();return{root:e.root,stateDir:ME(e.env),scope:e.scope,unitPath:DE(e.scope),...t===void 0||t.length===0?{}:{logFile:t},run:_N,spawn:wN,probe:kN,alive:EN,kill:(n,r)=>{process.kill(n,r)},sleep:(n)=>Bun.sleep(n),now:e.now}}var so="0.15.4";function Zd(e){let t=Gs(e);if(t===null)throw new C(`no gateway to run: ${e} is not an OmniGateway checkout, and no bundled server was found beside this CLI`);return[process.execPath,t]}var Hv={usage:"start [--foreground]",summary:"Start the gateway and wait until it is serving",options:{system:{type:"boolean"},foreground:{type:"boolean"}},async run(e,{ctx:t,writer:n,service:r,foreground:o}){let i=r(),s=t.config().baseUrl;if(L(e.values,"foreground")){let u=await o({argv:Zd(i.root),cwd:i.root,env:t.env});if(u!==0)throw new C(`gateway exited with code ${u}`,3);return}Z(t,n,`starting gateway at ${s}\u2026`);let a=await Nd(i,{argv:Zd(i.root),env:t.env,baseUrl:s});if(S(t,n,a,()=>{let u=a.supervisor==="systemd"?"systemd":`pid ${a.pid}`;if(!a.healthy){let l=a.supervisor==="systemd"?"journalctl -u omnigateway.service":Qn(i);return`${j(t,!1,"started but /health never answered")} (${u}); see ${l}`}return`${j(t,!0,"running")} (${u}) at ${s}`}),!a.healthy)throw new C("gateway did not become healthy",3)}},Wv={usage:"stop",summary:"Stop the gateway",async run(e,{ctx:t,writer:n,service:r}){let o=await Dd(r());S(t,n,o,()=>o.stopped?"stopped":"nothing to stop: the gateway is not running")}},jv={usage:"restart",summary:"Stop the gateway, then start it again",async run(e,{ctx:t,writer:n,service:r}){let o=r();await Dd(o);let i=await Nd(o,{argv:Zd(o.root),env:t.env,baseUrl:t.config().baseUrl});if(S(t,n,i,()=>i.healthy?"restarted":j(t,!1,"restarted but /health never answered")),!i.healthy)throw new C("gateway did not become healthy",3)}},Kv={usage:"service install [--system] [--enable] [--force]",summary:"Write a systemd unit for this installation",options:{system:{type:"boolean"},enable:{type:"boolean"},force:{type:"boolean"}},async run(e,{ctx:t,writer:n,service:r}){let o=r(),i=Gs(o.root);if(i===null)throw new C(`no gateway to run for ${o.root}`);let s=await UE(o,{bun:process.execPath,entrypoint:i,enable:L(e.values,"enable"),force:L(e.values,"force")});S(t,n,s,()=>z([["unit",s.path],["scope",o.scope],["daemon-reload",s.reloaded?"ok":"failed"],["enabled at boot",s.enabled?"yes":"no"]]))}},Gv={usage:"service uninstall [--system]",summary:"Disable and remove the systemd unit",options:{system:{type:"boolean"}},async run(e,{ctx:t,writer:n,prompt:r,service:o}){let i=o();if(!await r.confirm(`remove the ${i.scope} systemd unit for ${i.root}?`))throw new C("cancelled");let s=await $E(i);S(t,n,s,()=>s.removed?`removed ${s.path}`:`no unit at ${s.path}`)}};async function vN(e){if(e.configError!==null||!tn(e.databasePath))return null;try{let t=await(await e.store()).usage.auditRollup();return t.ok?`ok (${t.buckets} hourly buckets)`:`${t.mismatched} of ${t.buckets} hourly buckets disagree with request_logs`}catch{return null}}async function TN(e){if(e.configError!==null||!tn(e.databasePath))return null;try{return await od(ro(),e.root.root,await e.store())}catch{return null}}async function RN(e){if(e.configError!==null||!tn(e.databasePath))return null;try{let t=await e.store(),n=await t.credentials.list();return(await t.config.listModels()).flatMap((r)=>r.targets.filter((o)=>o.credentialId!==void 0&&Ln(o,n)===void 0).map((o)=>`${r.id}/${o.model} \u2192 ${o.credentialId}`))}catch{return null}}async function SN(e,t){if(e.configError!==null||!tn(e.databasePath))return null;try{return(await(await e.store()).config.listModels()).flatMap((r)=>r.targets.filter((o)=>!Od(o.provider,t)).map((o)=>`${r.id}/${o.model} \u2192 ${o.provider}`))}catch{return null}}async function xN(e,t){if(e.configError!==null||!tn(e.databasePath))return null;try{return(await(await e.store()).credentials.list()).filter((r)=>!Od(r.provider,t)).map((r)=>`${r.label} \u2192 ${r.provider}`)}catch{return null}}async function AN(e){if(e.configError!==null||!tn(e.databasePath))return null;try{return await Pl(await e.store(),M)}catch{return null}}function ON(e,t,n){if(t===null)return R(e,"dim","not checked");let{keysWithPolicy:r,model:o,problem:i}=t;if(r===0)return R(e,"dim","no key carries one");let s=`${r} key${r===1?"":"s"}`;if(i==="unconfigured")return R(e,"yellow",`${s} carry a policy and no classifier is set (guardrailModel); their requests are refused`);if(i==="unresolved")return n.length>0?R(e,"yellow",`${s} carry a policy; classifier "${o}" is not a built-in model (plugin providers not checked)`):R(e,"yellow",`${s} carry a policy and classifier "${o}" does not resolve; their requests are refused`);return j(e,!0,`${s}, judged by ${o}`)}async function CN(e){if(e.configError!==null||!tn(e.databasePath))return null;try{return await Sd(await e.store(),M)}catch{return null}}function PN(e,t){if(t===null)return R(e,"dim","not checked");let{enabled:n,keysWithFlag:r,problem:o}=t;if(r===0)return R(e,"dim","no key uses it");if(!n)return R(e,"dim","off (smartRouterEnabled)");let i=`${r} ${r===1?"key uses":"keys use"} smart routing`,s="smartRouterClassifierModel/smartRouterLocalModel";if(o==="unconfigured")return R(e,"yellow",`${i} and ${s} is unset; their requests are refused`);if(o==="unresolved")return R(e,"yellow",`${i} and ${s} does not resolve; their requests are refused`);if(o==="notLocal")return R(e,"yellow",`${i} and ${s} is not a local-only model (every target must be a custom provider); their requests are refused`);return j(e,!0,`${r} key${r===1?"":"s"}, kept local by ${t.localModel}`)}var Zv={usage:"doctor",summary:"Check what this CLI resolved, and whether it can do anything with it",options:{system:{type:"boolean"}},async run(e,{ctx:t,writer:n,service:r}){let o=r(),i=t.env.OMNI_ENCRYPTION_KEY,s=En(o),a=await vn(o),u=await vN(t),l=Zt(ro(),o.root),c=await TN(t),p=await RN(t),d=await SN(t,l),m=await xN(t,l),g=await AN(t),h=await CN(t),f={version:so,root:o.root,rootSource:t.root.source,envFile:t.root.envFile,databasePath:t.databasePath,databaseExists:tn(t.databasePath),encryptionKey:typeof i==="string"?`present (${i.length} chars)`:"missing",configError:t.configError,gatewayEntrypoint:Gs(o.root),usageRollup:u,unitInstalled:s,supervisor:a.supervisor,running:a.running,consoleSource:oo(o).source,pluginsDir:Pe(o.root),plugins:l,orphanPluginTables:c,danglingPins:p,missingProviders:d,danglingCredentials:m,guardrail:g,smartRouter:h,warnings:t.warnings};S(t,n,f,()=>{let y=(_,w)=>j(t,_,w);return`omni ${so}
|
|
1772
|
+
${z([["root",`${f.root} ${R(t,"dim",`(from ${f.rootSource})`)}`],["env file",f.envFile??R(t,"dim","none")],["database",`${f.databasePath} ${y(f.databaseExists,f.databaseExists?"exists":"missing")}`],["encryption key",f.encryptionKey],["config",f.configError===null?y(!0,"ok"):y(!1,f.configError)],["entrypoint",f.gatewayEntrypoint??y(!1,"not found")],["usage rollup",f.usageRollup===null?R(t,"dim","not checked"):y(f.usageRollup.startsWith("ok"),f.usageRollup)],["systemd unit",s?o.scope:R(t,"dim","none")],["gateway",y(a.running,a.running?"running":"stopped")],["console log",js(f.consoleSource)],...l.length===0?[["plugins",R(t,"dim","none")]]:SE(t,l).map((_,w)=>[w===0?"plugins":"",_]),["orphan plugin tables",c===null?R(t,"dim","not checked"):c.length===0?y(!0,"none"):R(t,"yellow",`${c.length}: ${c.join(", ")}`)],["dangling pins",p===null?R(t,"dim","not checked"):p.length===0?y(!0,"none"):R(t,"yellow",`${p.length}: ${p.join(", ")}`)],["missing providers",d===null?R(t,"dim","not checked"):d.length===0?y(!0,"none"):R(t,"yellow",`${d.length}: ${d.join(", ")}`)],["stranded credentials",m===null?R(t,"dim","not checked"):m.length===0?y(!0,"none"):R(t,"yellow",`${m.length}: ${m.join(", ")}`)],["usage policies",ON(t,g,l)],["smart routing",PN(t,h)],...f.warnings.map((_)=>["ignored",R(t,"yellow",_)])])}`})}};function IN(e){let t=[];for(let[n,r]of Object.entries(e)){if(r!==null&&typeof r==="object"){for(let[o,i]of Object.entries(r))t.push([`${n}.${o}`,String(i)]);continue}t.push([n,String(r)])}return t}var Xv={usage:"settings get",summary:"Show routing and retention settings",async run(e,{ctx:t,writer:n}){let r=await Zn(await t.store());S(t,n,{settings:r},()=>z(IN(r)))}};function Zs(e,t){return Object.hasOwn(e,t)}function LN(e,t,n){if(!Zs(e,t))return;let r=e[t];if(n===void 0)return r;if(r===null||typeof r!=="object")return;if(!Zs(r,n))return;return r[n]}function NN(e,t){let n=t.trim().length===0?Number.NaN:Number(t);if(!Number.isFinite(n))throw new P(`${e} must be a number, got "${t}"`);return n}function DN(e,t){let n=t.trim().toLowerCase();if(n==="true")return!0;if(n==="false")return!1;throw new P(`${e} must be true or false, got "${t}"`)}function Vv(e,t){let n=t.trim();if(n.length===0)throw new P(`${e} must not be blank`);return n}function MN(e,t){return t.trim()==="null"?null:Vv(e,t)}function UN(e){return Zs(me,e)&&me[e]===null}var Qv={usage:"settings set <path> <value>",summary:"Change one setting, e.g. weights.cost 0.4, rtkEnabled true, or guardrailModel null",async run(e,{ctx:t,writer:n}){let r=D(e,0,"setting path"),o=D(e,1,"value"),i=await t.store(),s=await Zn(i),[a,u]=r.split(".");if(a===void 0||!Zs(s,a))throw new P(`no setting "${r}"`);if(u!==void 0&&a!=="weights")throw new P(`"${a}" has no sub-settings`);let l=LN(s,a,u),c=u===void 0&&UN(a)?MN(r,o):typeof l==="boolean"?DN(r,o):typeof l==="string"?Vv(r,o):NN(r,o),p=u===void 0?{...s,[a]:c}:{...s,weights:{...s.weights,[u]:c}},d=await kd(i,p);S(t,n,{settings:d},()=>`${r} = ${c}`)}};import{join as Xd}from"path";var Yv={dir:{type:"string"},key:{type:"string"},"dry-run":{type:"boolean"}};async function Jv(e,t){let{descriptors:n,failures:r}=await Vt(e.root.root);for(let i of r)Z(e,t,R(e,"yellow",`plugin ${i.id}: ${i.reason}`));let o=await vd(await e.store(),n);if(o.length===0)throw new C("no virtual models configured; add one with `omni models put`");return{models:o,failures:r}}function eT(e){if(e.configError!==null)throw new C(e.configError);return e.config().baseUrl}function tT(e,t,n,r,o,i,s=[]){if(!r)for(let a of n)i(a.path,a.contents);if(S(e,t,{files:n,pluginFailures:s},()=>r?n.map((a)=>`--- ${a.path}
|
|
1745
1773
|
${a.contents}`).join(`
|
|
1746
1774
|
`):n.map((a)=>a.path).join(`
|
|
1747
|
-
`)),o===void 0)
|
|
1775
|
+
`)),o===void 0)Z(e,t,"no --key given: the files carry a placeholder, so paste your key over it")}function nT(e,t){return{path:Xd(e,t.path),contents:t.contents}}async function rT(e,t){let n=e.map(({model:l})=>l.id).join(", ");if(t.input===void 0)throw new C("model mapping requires an interactive terminal");let r=async(l,c)=>{let p=await t.input?.(`${l} model${c?"":" (blank to omit)"} [${n}]: `);if(c&&p==="")throw new C("default model is required");return p===""?void 0:p},o=await r("Default",!0);if(o===void 0)throw new C("default model is required");let i=await r("Fable",!1),s=await r("Opus",!1),a=await r("Sonnet",!1),u=await r("Haiku",!1);return{defaultModel:o,...i===void 0?{}:{fableModel:i},...s===void 0?{}:{opusModel:s},...a===void 0?{}:{sonnetModel:a},...u===void 0?{}:{haikuModel:u}}}var oT={usage:"setup claude [--dir <path>] [--key <key>] [--dry-run]",summary:"Write Claude Code settings for this gateway",options:Yv,async run(e,{ctx:t,writer:n,prompt:r,setupFs:o}){let{models:i,failures:s}=await Jv(t,n),a=O(e.values,"dir")??Xd(o.homeDir,".claude"),u=O(e.values,"key"),l=L(e.values,"dry-run"),c=await rT(i,r),p=Xd(a,"settings.json"),d=Td(i,{baseUrl:eT(t),...u===void 0?{}:{apiKey:u}},c,o.read(p)??void 0);tT(t,n,[nT(a,d)],l,u,o.write,s)}},iT={usage:"setup opencode [--dir <path>] [--key <key>] [--dry-run]",summary:"Write an opencode.json provider entry for this gateway",options:Yv,async run(e,{ctx:t,writer:n,prompt:r,setupFs:o}){let{models:i,failures:s}=await Jv(t,n),a=O(e.values,"dir")??o.cwd,u=O(e.values,"key"),l=L(e.values,"dry-run"),c=await rT(i,r),p=Rd(i,{baseUrl:eT(t),...u===void 0?{}:{apiKey:u}},c);tT(t,n,[nT(a,p)],l,u,o.write,s)}};function $N(e){return e.filter((t)=>t.limit!==null&&t.limit>0).sort(Hd)}function FN(e,t,n,r){let o=$N(t);if(o.length===0)return R(e,"dim","unknown");let i=o.map((a)=>{let u=Math.round(a.used/a.limit*100),l=j(e,u<90,`${qd[a.windowType]} ${u}%`),c=Mv(jd(a,Ks(r,a),n));return c.length===0?l:`${l} ${R(e,"dim",c)}`}),s=Math.min(...o.map((a)=>a.observedAt));return`${i.join(" \xB7 ")} ${R(e,"dim",`(${tp(s,n)} ago)`)}`}var sT={usage:"status",summary:"Show the gateway process, its accounts, and their quota",options:{system:{type:"boolean"}},async run(e,{ctx:t,writer:n,service:r}){let o=await vn(r()),i=null,s=null;try{i=await t.store()}catch(d){s=W(d,"could not open the database")}let a=i===null?{adminConfigured:!1,credentials:[]}:await Zr(i,{now:t.now}),{adminConfigured:u,credentials:l}=a,c=i===null?new Map:await Wd(i,t.now,l.flatMap((d)=>d.quota)),p={process:o,...a,storeError:s};S(t,n,p,()=>{let d=z([["gateway",j(t,o.running,o.running?"running":"stopped")+R(t,"dim",` (${o.supervisor})`)],["root",t.root.root],["admin password",u?"set":j(t,!1,"not set")]]);if(s!==null)return`${d}
|
|
1748
1776
|
|
|
1749
|
-
${
|
|
1777
|
+
${j(t,!1,s)}`;if(l.length===0)return`${d}
|
|
1750
1778
|
|
|
1751
|
-
no credentials; add one with: omni connect <provider>`;let m=
|
|
1779
|
+
no credentials; add one with: omni connect <provider>`;let m=l.map((g)=>[g.label,Le(t,g.provider),j(t,g.enabled,g.enabled?"enabled":"disabled"),FN(t,g.quota,t.now(),c)]);return`${d}
|
|
1752
1780
|
|
|
1753
|
-
${
|
|
1754
|
-
${
|
|
1755
|
-
`).trimEnd()}function
|
|
1756
|
-
`)}async function
|
|
1757
|
-
`)return n;if(i==="\x03")throw new
|
|
1758
|
-
`);if(o>=0)return t+r.slice(0,o);t+=r}return t}function
|
|
1781
|
+
${K([{header:"ACCOUNT"},{header:"PROVIDER"},{header:"STATE"},{header:"QUOTA"}],m)}`})}},aT={usage:"admin set-password",summary:"Set or replace the console password",async run(e,{ctx:t,writer:n,prompt:r}){let o=await t.store(),i=Ar(o,{now:t.now,sessionTtlMs:0}),s=await r.secret("New admin password: ");if(r.isTty){if(await r.secret("Repeat it: ")!==s)throw new C("the two passwords do not match")}try{await i.setPassword(s)}catch(a){throw new C(W(a,"could not set the password"))}Z(t,n,"restart the gateway to end sessions signed in with the old password"),S(t,n,{ok:!0},()=>"admin password set")}};function Xs(e,t){if(e===void 0)return t;if(/^\d+$/.test(e))return Number(e);let n=Date.parse(e);if(Number.isNaN(n))throw new P(`could not read "${e}" as a time`);return n}var cT={usage:"usage [--grain daily|raw] [--by DIMENSION] [--since T] [--until T]",summary:"Aggregate spend and tokens",options:{grain:{type:"string"},by:{type:"string"},split:{type:"string"},since:{type:"string"},until:{type:"string"},account:{type:"string"},key:{type:"string"}},async run(e,{ctx:t,writer:n}){let r=Xs(O(e.values,"until"),t.now()),o=Xs(O(e.values,"since"),0),i=await Fl({store:await t.store(),now:t.now},{grain:O(e.values,"grain"),groupBy:O(e.values,"by"),splitBy:O(e.values,"split"),since:o,until:r,credentialId:O(e.values,"account"),apiKeyId:O(e.values,"key")});S(t,n,{rows:i},()=>{if(i.length===0)return"no usage in this window";let s=i.some((a)=>a.split!==null&&a.split!==void 0);return K([{header:"KEY"},...s?[{header:"SPLIT"}]:[],{header:"REQUESTS",align:"right"},{header:"INPUT",align:"right"},{header:"OUTPUT",align:"right"},{header:"COST",align:"right"}],i.map((a)=>[a.key,...s?[a.split??"\u2014"]:[],String(a.requests),String(a.inputTokens),String(a.outputTokens),Jn(a.costUsd)]))})}},lT={since:{type:"string"},until:{type:"string"},state:{type:"string"},failed:{type:"boolean"},provider:{type:"string"},model:{type:"string"},"requested-model":{type:"string"},"resolved-model":{type:"string"},account:{type:"string"},key:{type:"string"},"error-code":{type:"string"}};function dT(e){let t=O(e,"since"),n=O(e,"until");return{...t===void 0?{}:{since:Xs(t,0)},...n===void 0?{}:{until:Xs(n,0)},state:O(e,"state"),...L(e,"failed")?{failed:"true"}:{},provider:O(e,"provider"),model:O(e,"model"),requestedModel:O(e,"requested-model"),resolvedModel:O(e,"resolved-model"),credentialId:O(e,"account"),apiKeyId:O(e,"key"),errorCode:O(e,"error-code")}}var pT={usage:"logs [-n N] [--follow] [--cursor C] [filters] [--service]",summary:"Show recent requests (--service is an alias for `omni console`)",options:{...lT,number:{type:"string",short:"n"},follow:{type:"boolean"},cursor:{type:"string"},service:{type:"boolean"},system:{type:"boolean"}},async run(e,{ctx:t,writer:n,service:r}){let o=bn(e.values,"number")??20;if(L(e.values,"service")){let p=await FE(r(),o);S(t,n,{log:p},()=>p.length===0?"no service output yet":p);return}let i=await t.store(),s=dT(e.values),a=(p)=>K([{header:"AT"},{header:"MODEL"},{header:"RESOLVED"},{header:"STATUS",align:"right"},{header:"TOKENS",align:"right"},{header:"COST",align:"right"},{header:"MS",align:"right"}],p.map((d)=>[R(t,"dim",oe(d.at)),d.requestedModel,`${d.resolvedProvider}/${d.resolvedModel}`,j(t,d.status<400,String(d.status)),`${d.inputTokens}+${d.outputTokens}`,Jn(d.costUsd),String(d.durationMs)])),u=await xs(i,{...s,limit:o,cursor:O(e.values,"cursor")}),l=u.logs;if(S(t,n,{logs:l,nextCursor:u.nextCursor},()=>l.length===0?"no requests match":u.nextCursor===null?a(l):`${a(l)}
|
|
1782
|
+
${R(t,"dim",`older: --cursor ${u.nextCursor}`)}`),e.values.follow!==!0||t.json)return;let c=l[0]===void 0?null:uT(l[0]);for(;;){await Bun.sleep(Md);let p=c,{rows:d,skipped:m}=await BN((h)=>xs(i,{...s,limit:o,cursor:h}),p);if(d.length===0)continue;let g=d[0];if(g!==void 0)c=uT(g);if(m)n.out(R(t,"dim",`more than ${mT*o} requests arrived since the last poll; older ones are not shown`));n.out(a(d.reverse()))}}},uT=(e)=>({at:e.at,id:e.id}),mT=10;async function BN(e,t){let n=[],r;for(let o=0;o<mT;o++){let i=await e(r);if(t===null)return{rows:i.logs,skipped:!1};let s=i.logs.filter((a)=>zN(a,t));if(n.push(...s),s.length<i.logs.length||i.nextCursor===null)return{rows:n,skipped:!1};r=i.nextCursor}return{rows:n,skipped:!0}}var zN=(e,t)=>e.at>t.at||e.at===t.at&&e.id>t.id,fT={usage:"logs export --since T --until T [--format csv|jsonl] [filters]",summary:"Write matching request metadata to stdout as CSV or JSONL",options:{...lT,format:{type:"string"}},async run(e,{ctx:t,writer:n}){let r=await t.store();for await(let o of Wl(r,{...dT(e.values),format:O(e.values,"format")??"csv"}))n.raw(o)}};var Vs={status:sT,start:Hv,stop:Wv,restart:jv,doctor:Zv,logs:pT,bodies:AE,console:zE,usage:cT,quota:Uv,connect:OE,"logs export":fT,"service install":Kv,"service uninstall":Gv,"credentials list":HE,"credentials show":WE,"credentials enable":KE,"credentials disable":GE,"credentials set":ZE,"credentials rm":XE,"credentials refresh":VE,"credentials add-key":QE,"credentials health":YE,"quota refresh":$v,"quota resets":Fv,"quota reset":Bv,"models list":Av,"models show":Ov,"models put":Pv,"models rm":Iv,"models dry-run":Lv,"models catalog":Cv,"keys list":bv,"keys create":kv,"keys limits":Ev,"keys models":xv,"keys expiry":vv,"keys guardrail":Tv,"keys smart-routing":Rv,"keys revoke":Sv,"plugin list":kE,"plugin verify":EE,"plugin install":vE,"plugin update":TE,"plugin remove":RE,"settings get":Xv,"settings set":Qv,"setup claude":oT,"setup opencode":iT,"admin set-password":aT,"db migrate":ev,"db stats":tv,"db snapshots":nv,"db backup":rv,"db restore":sv,"db vacuum":ov,"db clear-bodies":iv},qN=new Set(["--root","--db"]);function gT(e){let t=[],n=0;while(n<e.length){let o=e[n];if(o===void 0||!o.startsWith("-"))break;if(t.push(o),n+=1,qN.has(o)&&e[n]!==void 0)t.push(e[n]),n+=1}let r=[];for(let o of e.slice(n)){if(o.startsWith("-"))break;if(r.push(o),r.length===3)break}for(let o=Math.min(r.length,3);o>0;o--){let i=r.slice(0,o).join(" "),s=Vs[i];if(s!==void 0)return{name:i,command:s,rest:[...t,...e.slice(n+o)]}}return null}var HN=[{title:"Gateway",prefixes:["status","start","stop","restart","doctor","logs","bodies","console"]},{title:"Service",prefixes:["service "]},{title:"Accounts",prefixes:["connect","credentials "]},{title:"Models",prefixes:["models "]},{title:"Keys",prefixes:["keys "]},{title:"Plugins",prefixes:["plugin "]},{title:"Configuration",prefixes:["settings ","admin ","db "]},{title:"Reports",prefixes:["usage","quota"]}];function WN(e,t){return t.some((n)=>n.endsWith(" ")?e.startsWith(n):e===n)}function Vd(){let e=["omni \u2014 manage a local OmniGateway installation","","Usage: omni <command> [options]","","Global options:"," --root <path> installation to manage (default: $OMNI_ROOT, cwd, ~/.config/omnigateway)"," --db <path> database file, overriding OMNI_DB_PATH"," --json emit JSON instead of tables"," --no-color never colourise output"," --yes, -y answer confirmations without asking"," --system act on the system systemd unit rather than the user one"," --help, -h show this help",""];for(let t of HN){let n=Object.entries(Vs).filter(([o])=>WN(o,t.prefixes));if(n.length===0)continue;let r=n.reduce((o,[,i])=>Math.max(o,i.usage.length),0);e.push(`${t.title}:`);for(let[,o]of n)e.push(` ${o.usage.padEnd(r)} ${o.summary}`);e.push("")}return e.join(`
|
|
1783
|
+
`).trimEnd()}function hT(e){let t=Vs[e];if(t===void 0)return Vd();return[`omni ${t.usage}`,"",t.summary].join(`
|
|
1784
|
+
`)}async function jN(){let e=[];for await(let t of Bun.stdin.stream())e.push(t);return Buffer.concat(e).toString("utf8")}async function KN(){let e=process.stdin;e.setRawMode?.(!0),e.resume();try{let t=new TextDecoder,n="";for await(let r of e){let o=t.decode(r,{stream:!0});for(let i of o){if(i==="\r"||i===`
|
|
1785
|
+
`)return n;if(i==="\x03")throw new C("cancelled",1);if(i==="\x7F"||i==="\b"){n=n.slice(0,-1);continue}n+=i}}return n}finally{e.setRawMode?.(!1),e.pause()}}async function yT(){let e=new TextDecoder,t="";for await(let n of process.stdin){let r=e.decode(n,{stream:!0}),o=r.indexOf(`
|
|
1786
|
+
`);if(o>=0)return t+r.slice(0,o);t+=r}return t}function _T(e,t){let n=process.stdin.isTTY===!0;return{isTty:n,async input(r){if(!n)throw new C(`${r} \u2014 refusing without a terminal`);return t.err(r),(await yT()).trim()},async secret(r){if(!n)return(await jN()).trim();t.err(r);let o=await KN();return t.err(""),o.trim()},async confirm(r){if(e.assumeYes)return!0;if(!n)throw new C(`${r} \u2014 refusing without --yes`);t.err(`${r} [y/N] `);let o=(await yT()).trim().toLowerCase();return o==="y"||o==="yes"}}}import{dirname as GN}from"path";function wT(e,t,n){let r=`${e}.${process.pid}.tmp`;n.mkdir(GN(e));try{n.write(r,t),n.rename(r,e)}catch(o){throw n.remove(r),o}}async function bT(e,t,n={}){let r=(...d)=>e.some((m)=>d.includes(m));if(r("--version"))return t.out(so),0;let o=gT(e);if(o===null){let d=e.filter((m)=>!m.startsWith("-"));if(d.length>0&&!r("--help","-h"))return t.err(`unknown command: ${d.join(" ")}`),t.err("run omni --help for the command list"),2;return t.out(Vd()),0}if(r("--help","-h"))return t.out(hT(o.name)),0;let i;try{i=_E(o.rest,o.command.options??{})}catch(d){return t.err(W(d,"could not parse arguments")),t.err(`usage: omni ${o.command.usage}`),2}ud();let s=wE(i,n),a,u=()=>(a??=Xn(s.root.root),a);for(let d of s.warnings)t.err(d);let l=n.prompt??_T(s,t),c=L(i.values,"system")?"system":"user",p={ctx:s,writer:t,prompt:l,setupFs:n.setupFs??{homeDir:eD(),cwd:process.cwd(),read:(d)=>ZN(d)?VN(d,"utf8"):null,write:(d,m)=>wT(d,m,{mkdir:(g)=>XN(g,{recursive:!0}),write:(g,h)=>JN(g,h),rename:QN,remove:(g)=>YN(g,{force:!0})})},service:()=>n.service?.({root:s.root.root,env:s.env})??qv({root:s.root.root,env:s.env,scope:c,now:s.now}),foreground:n.foreground??zv,connect:async(d)=>{if(n.connect!==void 0)return n.connect(d);let m=await u();return el({store:d,providers:m.providers,descriptors:m.descriptors,http:Un(),now:s.now})},connectable:async()=>{let d=await u();return{ids:cd(d.providers),failures:d.failures}}};try{return await o.command.run(i,p),0}catch(d){if(d instanceof P)return t.err(d.message),t.err(`usage: omni ${o.command.usage}`),2;if(d instanceof C)return t.err(d.message),d.exitCode;if(d instanceof b)return t.err(`${d.code}: ${d.message}`),1;return t.err(W(d,"unknown error")),1}finally{s.close()}}process.exitCode=await bT(process.argv.slice(2),ep);
|