omnigateway 0.15.2 → 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.
Files changed (98) hide show
  1. package/README.md +90 -6
  2. package/bin/omni.js +218 -190
  3. package/gateway.js +390 -338
  4. package/package.json +1 -1
  5. package/public/assets/_app-kgxk7ake.js +1 -0
  6. package/public/assets/_app.accounts-3jabfvcs.js +1 -0
  7. package/public/assets/_app.console-y69399jc.js +1 -0
  8. package/public/assets/_app.database-r5kg3838.js +1 -0
  9. package/public/assets/_app.index-22awhb38.js +1 -0
  10. package/public/assets/_app.keys-7vh81n1w.js +1 -0
  11. package/public/assets/_app.logs-rssv5a6z.js +1 -0
  12. package/public/assets/_app.models-82m2f0kr.js +1 -0
  13. package/public/assets/_app.plugins.$pluginId-e4xva5tz.js +1 -0
  14. package/public/assets/_app.settings-fqzg7wnn.js +1 -0
  15. package/public/assets/_app.usage-32vje0s7.js +1 -0
  16. package/public/assets/client-d3mjj5ey.js +1 -0
  17. package/public/assets/index-0j7sghrn.js +2 -0
  18. package/public/assets/index-4dz4bgrb.js +2 -0
  19. package/public/assets/index-85cnhw3e.js +2 -0
  20. package/public/assets/index-8bewp9z1.js +6 -0
  21. package/public/assets/index-938qd7p2.js +2 -0
  22. package/public/assets/index-d09hs7ex.js +2 -0
  23. package/public/assets/index-d0t1fj1y.js +2 -0
  24. package/public/assets/index-dq2f7yk0.js +2 -0
  25. package/public/assets/index-f7t0kve8.js +2 -0
  26. package/public/assets/index-fcew0gga.js +2 -0
  27. package/public/assets/index-h3nb7n4d.css +1 -0
  28. package/public/assets/index-hk28xepa.js +2 -0
  29. package/public/assets/index-nnpqs2w6.js +2 -0
  30. package/public/assets/index-p9vbm21a.js +46 -0
  31. package/public/assets/index-sbe0ydnc.js +2 -0
  32. package/public/assets/index-t1cs42r4.js +2 -0
  33. package/public/assets/index-v31xha7b.js +2 -0
  34. package/public/assets/index-wjqdtafp.js +2 -0
  35. package/public/assets/index-xdyjb1an.js +2 -0
  36. package/public/assets/index-z7c4qz9d.js +54 -0
  37. package/public/assets/index-zkt5p0qd.js +2 -0
  38. package/public/assets/login-p97b96t9.js +1 -0
  39. package/public/index.html +5 -13
  40. package/public/shared/chunks/react-e7vf2dk6.js +2 -0
  41. package/public/shared/chunks/react-mv7wrde1.js +2 -0
  42. package/public/shared/chunks/react-ybbhws22.js +2 -0
  43. package/public/shared/chunks/react-z0w6knjn.js +2 -0
  44. package/public/shared/dashboard-sdk.js +1 -1
  45. package/public/shared/jsx-runtime.js +1 -1
  46. package/public/shared/react-dom-client.js +9 -9
  47. package/public/shared/react-dom.js +1 -1
  48. package/public/shared/react-query.js +1 -1
  49. package/public/shared/react.js +1 -1
  50. package/public/shared/styled-components.js +5 -6
  51. package/public/assets/Chip-C3dIFd8s.js +0 -37
  52. package/public/assets/CopyValue-DG88CWpN.js +0 -27
  53. package/public/assets/Field-EvdVyEqx.js +0 -83
  54. package/public/assets/Lamp-CL0i4yaa.js +0 -26
  55. package/public/assets/Meter-stpt3vQu.js +0 -14
  56. package/public/assets/Panel-CsovmtxF.js +0 -225
  57. package/public/assets/Rack-DMrfn4-H.js +0 -483
  58. package/public/assets/Readout-DlT5oxGO.js +0 -31
  59. package/public/assets/RequestTable-CtuuMOT2.js +0 -93
  60. package/public/assets/SummaryDeck-DHsYYpYO.js +0 -15
  61. package/public/assets/Table-CVDZ69Zx.js +0 -38
  62. package/public/assets/Toggle-BTie3NY8.js +0 -39
  63. package/public/assets/TokenBreakdown-Bf0zsKcd.js +0 -32
  64. package/public/assets/WindowChart-CaPUJ4GJ.js +0 -11
  65. package/public/assets/_app-CSru2YTE.js +0 -1
  66. package/public/assets/_app.accounts-xCJhRd32.js +0 -70
  67. package/public/assets/_app.console-DS37cfIu.js +0 -24
  68. package/public/assets/_app.database-BCwEMrEA.js +0 -24
  69. package/public/assets/_app.index-DW6wain4.js +0 -67
  70. package/public/assets/_app.keys-CCU2NB3-.js +0 -120
  71. package/public/assets/_app.logs-CRC5qDK3.js +0 -46
  72. package/public/assets/_app.models-B4brzRdK.js +0 -148
  73. package/public/assets/_app.plugins._pluginId-CD9KXknf.js +0 -20
  74. package/public/assets/_app.settings-NJSb_L2B.js +0 -88
  75. package/public/assets/_app.usage-BR6a92zI.js +0 -78
  76. package/public/assets/chevron-down-3tlYNJqZ.js +0 -1
  77. package/public/assets/chevron-right-kvaJRnfj.js +0 -1
  78. package/public/assets/client-B9t0CsmA.js +0 -46
  79. package/public/assets/dist-B8iuo_hI.js +0 -1
  80. package/public/assets/index-6rZSWe9j.js +0 -14
  81. package/public/assets/index-Co2s5xMk.css +0 -1
  82. package/public/assets/limits-iRyDMg04.js +0 -1
  83. package/public/assets/login-NuwPF5SS.js +0 -45
  84. package/public/assets/plus-CVqm87L-.js +0 -1
  85. package/public/assets/preload-helper-1xe0b53X.js +0 -1
  86. package/public/assets/reasons-Du1OBWAM.js +0 -1
  87. package/public/assets/rotate-ccw-Dionx_MW.js +0 -1
  88. package/public/assets/shared-HVgLEGgl.js +0 -77
  89. package/public/assets/trash-Bsi60qJc.js +0 -1
  90. package/public/shared/chunks/jsx-runtime-CznXPbDH.js +0 -1
  91. package/public/shared/chunks/react-DK6rpPfu.js +0 -1
  92. package/public/shared/chunks/react-dom-Wr82bmbV.js +0 -1
  93. package/public/shared/chunks/rolldown-runtime-CbXtAM7H.js +0 -1
  94. /package/public/assets/{archivo-latin-ext-standard-normal-7khWdh9v.woff2 → archivo-latin-ext-standard-normal-5717f37059660ca5.woff2} +0 -0
  95. /package/public/assets/{archivo-latin-standard-normal-DY7AcnAa.woff2 → archivo-latin-standard-normal-e3a28eade21a900c.woff2} +0 -0
  96. /package/public/assets/{archivo-vietnamese-standard-normal-rJmnGBSt.woff2 → archivo-vietnamese-standard-normal-332e6f66de84927c.woff2} +0 -0
  97. /package/public/assets/{spline-sans-mono-latin-ext-wght-normal-Dh0aNLWd.woff2 → spline-sans-mono-latin-ext-wght-normal-0ca9a3989044d1f9.woff2} +0 -0
  98. /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 Wl={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"},Kl={out:(e)=>{process.stdout.write(`${e}
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 S(e,t,n){return e.color?`${Wl[t]}${n}${Wl.reset}`:n}function Qs(e){return e.replace(/\u001b\[[0-9;]*m/g,"").length}function j(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 q(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 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],C=typeof k==="symbol"?`syms[${h.indexOf(k)}]`:ep(k),V=`${C} in input`,Re=m[k],W=Re?._zod?.optin,We=W!==void 0,Lt=Re?._zod?.optout==="optional";if(f.write(`const ${T} = ${y(C)};`),We&&Lt){let Vs=W==="optional"?`${T}_present`:`${T}.value !== undefined || ${T}_present`;f.write(`
23
- const ${T}_present = ${V};
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,C)}
25
+ if (${T}.issues.length) {${_(T,x)}
26
26
  }
27
27
 
28
- if (${Vs}) {
29
- newResult[${C}] = ${T}.value;
28
+ if (${Ke}) {
29
+ newResult[${x}] = ${T}.value;
30
30
  }
31
31
  }
32
32
 
33
- `)}else if(!We)f.write(`
34
- const ${T}_present = ${V};
35
- if (${T}.issues.length) {${_(T,C)}
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: [${C}]
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[${C}] = ${T}.value;
51
+ newResult[${x}] = ${T}.value;
52
52
  }
53
53
 
54
54
  `);else f.write(`
55
- if (${T}.issues.length) {${_(T,C)}
55
+ if (${T}.issues.length) {${_(T,x)}
56
56
  }
57
57
 
58
58
  if (${T}.value === undefined) {
59
- if (${V}) {
60
- newResult[${C}] = undefined;
59
+ if (${Y}) {
60
+ newResult[${x}] = undefined;
61
61
  }
62
62
  } else {
63
- newResult[${C}] = ${T}.value;
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 ax(e,t){return[mt(e.at,t),e.resolvedProvider??"",e.credentialId??"",e.requestedModel,e.resolvedModel??"",e.apiKeyId??""]}function ux(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 cx=`
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 dx(e,t,n){e.run(cx,[...t,n.requests,n.errors,n.inputTokens,n.outputTokens,n.cacheReadTokens,n.cacheWriteTokens,n.costUsd,n.durationMsSum])}function lx(e,t,n){e.run(sx,[...t,n.requests,n.errors,n.inputTokens,n.outputTokens,n.cacheReadTokens,n.cacheWriteTokens,n.rtkSavedTokens,n.rtkAppliedRequests,n.costUsd,n.durationMsSum])}function jh(e,t,n){lx(e,ax(t,n),ux(t))}function Kh(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,
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=[mt(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())dx(e,r.key,r.counters);return n.size}var px=`
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 Gh(e,t){let n=t.apiKeyId;if(n===null)return;e.run(px,[n,$e(t.at),1,t.inputTokens,t.outputTokens,t.cacheReadTokens,t.cacheWriteTokens,t.costUsd])}var mx=`
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 Jo(e){e.run("DELETE FROM usage_rollup"),e.run(mx)}function Zh(e){let t=e.query(`WITH truth AS (
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 Xh(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,
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=[mt(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
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:kx}=globalThis.Bun;var Vh=`-- The SQLite schema as it stands after its migrations 001 through 012, written
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 Qh=`-- DEPLOY HAZARD \u2014 read before applying to a fleet.
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 Yh=`-- The Postgres half of the sqlite migration of the same name. \`BIGINT\`, like
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 Jh=`-- Indexes for the keyset traversal of \`request_logs\`. The SQLite copy,
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 ey=`-- An index for the provider filter on \`request_logs\`. Filtering by a provider
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 ty=`-- The per-model long-window reads behind a key's model overrides, on this
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 ny=`-- The Postgres half of the sqlite migration \`019_key_guardrail.sql\`: an
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 P=(e)=>Number(e),ae=(e)=>e===null?null:Number(e),ei=7140641,Ex=[{id:1,sql:Vh},{id:2,sql:Qh},{id:3,sql:Yh},{id:4,sql:Jh},{id:5,sql:ey},{id:6,sql:ty},{id:7,sql:ny}];async function ry(e){let t=new kx({url:e}),n=await t.reserve();try{await n.unsafe(`SELECT pg_advisory_lock(${ei})`);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 Ex){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(${ei})`)}}finally{n.release()}return t}function vx(e){return e==="ready"||e==="missing"||e==="corrupt"?e:"none"}var cu=(e)=>({requestId:e.request_id,at:P(e.at),relPath:e.rel_path,sizeBytes:P(e.size_bytes),sha256:e.sha256,detailState:vx(e.detail_state),truncated:e.truncated}),du="request_id, at, rel_path, size_bytes, sha256, detail_state, truncated";function oy(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(!Wo(o.requestId))throw Error("request id is not safe to use as an artifact path segment");let i=Ko(o),s=await Zo(t,i.json),a=jo(o.requestId,o.at),u=i.artifact.client.truncated||i.artifact.attempts.some((d)=>d.truncated),c={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
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`,[c.requestId,c.at,c.relPath,c.sizeBytes,c.sha256,c.detailState,c.truncated,s.bytes]),c},async get(o){let i=(await e.unsafe(`SELECT ${du},
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,Go]))[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 ${du} FROM request_bodies WHERE at < $1`,[o]);return n(i.map(cu))},async pruneToCap(o=hr){let i=P((await e.unsafe("SELECT COUNT(*) AS n FROM request_bodies"))[0]?.n??0);if(i<=o)return 0;let s=await e.unsafe(`SELECT ${du} FROM request_bodies ORDER BY at ASC, request_id ASC LIMIT $1`,[i-o]);return n(s.map(cu))},async sweepOrphans(){return 0}}}var lu=["off","lite","full","ultra"],Tx=new Set(lu);function ti(e){return Tx.has(e)}var Rx={fiveHour:18000000,daily:86400000,weekly:604800000};function ni(e,t){return t!==null&&t>0?t:Rx[e]}var Sx=60000;function ri(e,t){if(e===null||t===null)return e===t;return Math.abs(e-t)<=Sx}function _r(e,t){return e.resetsAt!==null&&e.resetsAt<=t}function sy(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 xx=0.1;function ay(e){return e.cacheRead??e.input*xx}function pu(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 Pn(e,t){if(e.credentialId===void 0)return;return t.find((n)=>pu(e,n))}var uy=4000,mu=60000,fu=10,wr=(e,t)=>e.revokedAt===null&&(e.expiresAt===null||e.expiresAt>t),gu=(e,t)=>e.authType==="oauth"&&e.expiresAt!==null&&e.expiresAt<=t,oi=(e,t)=>gu(e,t)&&!e.hasRefreshToken,Bt=60000,ye={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},iy=(e,t)=>typeof e==="number"&&Number.isInteger(e)&&e>=1&&e<=t;function ii(e){let{guardrailModel:t,guardrailTimeoutMs:n,guardrailHistoryTurns:r}=e;return{guardrailModel:typeof t==="string"&&t.trim()!==""?t:null,guardrailTimeoutMs:iy(n,mu)?n:ye.guardrailTimeoutMs,guardrailHistoryTurns:iy(r,fu)?r:ye.guardrailHistoryTurns}}var cy="settings",hu="adminPasswordHash",yu="viewerPasswordHash";function Ax(e){let t=ye.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 dy(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)
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(cy);if(o===null)return ye;try{let i=JSON.parse(o),s=i!==null&&typeof i==="object"&&!Array.isArray(i)?i:{};return{...ye,...s,rtkEnabled:s.rtkEnabled===!0,autoCacheEnabled:s.autoCacheEnabled===void 0?!0:s.autoCacheEnabled===!0,ponytailMode:ti(s.ponytailMode)?s.ponytailMode:"off",bodyRetentionDays:Number.isInteger(s.bodyRetentionDays)&&(s.bodyRetentionDays??0)>=1&&(s.bodyRetentionDays??0)<=3650?s.bodyRetentionDays:ye.bodyRetentionDays,bodyLoggingEnabled:s.bodyLoggingEnabled===!0,bodyLoggingCaptureStreamChunks:s.bodyLoggingCaptureStreamChunks===!0,weights:Ax(s.weights),...ii(s)}}catch{return ye}},async putSettings(o){let i=await this.getSettings(),s={...i,...o,weights:{...i.weights,...o.weights}};return await r(cy,JSON.stringify(s)),t({type:"settingsChanged"}),s},async getAdminPasswordHash(){return n(hu)},async setAdminPasswordHashIfAbsent(o){return(await e.unsafe("INSERT INTO settings (key, value) VALUES ($1, $2) ON CONFLICT (key) DO NOTHING",[hu,o])).count===1},async setAdminPasswordHash(o){await r(hu,o)},async getViewerPasswordHash(){return n(yu)},async setViewerPasswordHash(o){if(o===null){await e.unsafe("DELETE FROM settings WHERE key = $1",[yu]);return}await r(yu,o)}}}function ly(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 Ox=`INSERT INTO credential_health
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`,Cx=(e)=>[e.credentialId,e.model,e.breakerState,e.consecutiveFailures,e.openedAt,e.rateLimitedUntil];function py(e,t,n){let r=async(l)=>l===null?null:An(t,l),o=async(l)=>({accessToken:await r(l.access_token),refreshToken:await r(l.refresh_token),apiKey:await r(l.api_key),idToken:await r(l.id_token)}),i=async(l,m,g)=>{let f=(await l.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(l)=>o(await i(e,"access_token, refresh_token, api_key, id_token",l)),a=async(l,m)=>{if(m==="oauth"){let h=await i(e,"access_token",l);return{accessToken:await r(h.access_token),apiKey:null}}let g=await i(e,"api_key",l);return{accessToken:null,apiKey:await r(g.api_key)}},u=async(l)=>{let m=await i(e,"refresh_token",l);return{refreshToken:await r(m.refresh_token)}},c=async(l)=>{let m=await i(e,"access_token",l);return{accessToken:await r(m.access_token)}},d=(l,m=!1)=>({id:l.id,provider:l.provider,label:l.label,authType:l.auth_type,enabled:l.enabled,tier:l.tier,weight:l.weight,expiresAt:ae(l.expires_at),accountEmail:l.account_email,providerData:JSON.parse(l.provider_data),disabledReason:l.disabled_reason,disabledAt:ae(l.disabled_at),hasRefreshToken:l.refresh_token!==null,tokenVersion:l.token_version,createdAt:P(l.created_at),updatedAt:P(l.updated_at),secrets:()=>m?s(l.id):o(l),openForInference:async()=>{if(m)return a(l.id,l.auth_type);if(l.auth_type==="oauth")return{accessToken:await r(l.access_token),apiKey:null};return{accessToken:null,apiKey:await r(l.api_key)}},openForRefresh:async()=>m?u(l.id):{refreshToken:await r(l.refresh_token)},openForUsage:async()=>m?c(l.id):{accessToken:await r(l.access_token)}}),p=async(l)=>l===null||l===void 0?null:zo(t,l);return{async list(){return(await e.unsafe("SELECT * FROM credentials ORDER BY tier, label")).map((m)=>d(m))},async listRouting(){return(await e.unsafe(`SELECT id, provider, label, auth_type, enabled, tier, weight, expires_at,
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)=>d(m,!0))},async get(l){let g=(await e.unsafe("SELECT * FROM credentials WHERE id = $1",[l]))[0];return g===void 0?null:d(g)},async create(l){let m=Date.now();await e.unsafe(`INSERT INTO credentials
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)`,[l.id,l.provider,l.label,l.authType,l.enabled,l.tier,l.weight,l.expiresAt,l.accountEmail,JSON.stringify(l.providerData),l.disabledReason,l.disabledAt,await p(l.accessToken),await p(l.refreshToken),await p(l.apiKey),await p(l.idToken),m,m]);let{accessToken:g,refreshToken:h,apiKey:f,idToken:y,..._}=l;return n({type:"credentialsChanged"}),{..._,hasRefreshToken:h!=null,tokenVersion:0,createdAt:m,updatedAt:m}},async update(l,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,l]),n({type:"credentialsChanged"})},async updateSecrets(l,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(l);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(l){await e.unsafe("DELETE FROM credentials WHERE id = $1",[l]),n({type:"credentialsChanged"})},async listHealth(){return(await e.unsafe("SELECT * FROM credential_health")).map(ly)},async updateHealth(l,m,g){let h=await e.begin(async(f)=>{await f.unsafe("SELECT pg_advisory_xact_lock(hashtext($1))",[`${l}|${m}`]);let _=(await f.unsafe("SELECT * FROM credential_health WHERE credential_id = $1 AND model = $2 FOR UPDATE",[l,m]))[0],w=g(_===void 0?null:ly(_));return await f.unsafe(Ox,Cx(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:P(m.starts_at),used:P(m.used),limit:ae(m.limit_value),resetsAt:ae(m.resets_at),observedAt:P(m.observed_at),windowMs:ae(m.window_ms)}))},async saveQuota(l){let m=new Map;for(let g of l){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 l){await g.unsafe(`INSERT INTO quota_windows
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&&P(f.used)===h.used&&ae(f.limit_value)===h.limit&&ri(ae(f.resets_at),h.resetsAt)&&ae(f.window_ms)===h.windowMs)continue;await g.unsafe(`INSERT INTO quota_samples
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:l})},async listQuotaSamples(l){let m=l.limit!==void 0,g=[l.since,l.until],h="";if(l.credentialId!==void 0)g.push(l.credentialId),h=` AND credential_id = $${g.length}`;let f="";if(l.limit!==void 0)g.push(l.limit),f=`LIMIT $${g.length}`;let _=(await e.unsafe(`SELECT * FROM quota_samples
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:P(w.observed_at),used:P(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(l){return(await e.unsafe("DELETE FROM quota_samples WHERE observed_at < $1",[l])).count}}}function Px(e,t,n){try{let r=JSON.parse(t);return Je(r)}catch{return n.error("api key limits unreadable",{apiKeyId:e}),null}}var my=(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:Px(e.id,e.limits,t),bodyLoggingOptOut:e.body_logging_opt_out,createdAt:P(e.created_at),revokedAt:ae(e.revoked_at),expiresAt:ae(e.expires_at),guardrailPolicy:e.guardrail_policy});function fy(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:my(s,t)};return{async list(){return(await e.unsafe("SELECT * FROM api_keys ORDER BY created_at DESC")).map((o)=>my(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,
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(Je(r.limits)),r.bodyLoggingOptOut,o,r.expiresAt,r.guardrailPolicy]),{...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,
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(Je(r.limits)),r.bodyLoggingOptOut,r.createdAt,r.revokedAt,r.expiresAt,r.guardrailPolicy])},async setLimits(r,o){await e.unsafe("UPDATE api_keys SET limits = $1 WHERE id = $2",[JSON.stringify(Je(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 revoke(r){await e.unsafe("UPDATE api_keys SET revoked_at = $1 WHERE id = $2",[Date.now(),r])}}}var _u=()=>{throw new b("BAD_REQUEST","not available on a Postgres store; use pg_dump",{gatewayAuthored:!0})};function gy(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-Bt])).map((o)=>({id:o.id,seenAt:P(o.seen_at)}))},async stats(){let n=(await e.unsafe(`SELECT pg_database_size(current_database()) AS bytes,
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(P(n.bytes)/r),freelistCount:0,schemaVersion:n?.version??0}},async tables(){return(await e.unsafe(`SELECT c.relname AS name,
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:P(r.bytes),rows:P(r.rows),deadRows:P(r.dead_rows)}))},vacuum:async()=>_u(),snapshotTo:async()=>_u(),inspect:async()=>_u()}}import{AsyncLocalStorage as Fx}from"async_hooks";var br=/^[a-z][a-z0-9-]{0,31}$/,hy=/^[a-z][a-z0-9_]{0,31}$/,Ix=/\{\{([^{}]*)\}\}/g,yy=["api_keys","credential_health","credentials","migrations","nodes","plugin_migrations","quota_samples","quota_windows","request_bodies","request_logs","settings","usage_daily","usage_rollup","virtual_models"],Lx=["config_version"],Nx=new RegExp(`\\b(?:${[...yy,...Lx].join("|")})\\b`,"i"),si="plugin_";function Dx(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]!==`
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 Ux(e,t){return`"plugin_${e}_${t}"`}function sn(e){return`plugin_${e}_`}function tt(e){if(!br.test(e))throw Error(`plugin id ${JSON.stringify(e)} is not a valid identifier`)}var Mx=/^\s*(pragma|attach|detach|vacuum|set|reset)\b/i;function ai(e,t){tt(e);let n=t.replace(Ix,(s,a)=>{if(!hy.test(a))throw Error(`plugin table placeholder ${JSON.stringify(a)} must match ${hy.source}`);return Ux(e,a)}),r=Dx(n),o=Mx.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=Nx.exec(r);if(i!==null)throw Error(`plugin sql may not reference the core table ${i[0]}`);return n}function $x(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 zt=(e)=>(e??[]).map($x);var ui=ai;async function _y(e){let t=await e.unsafe(`SELECT c.relname FROM pg_class c
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 Bx(e,t,n){let r=sn(t);for(let o of await _y(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 wy(e){let t=new Fx,n=()=>t.getStore()??e,r=async()=>(await e.unsafe(`SELECT table_name FROM information_schema.tables
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(si)&&i!=="plugin_migrations"),o=async(i)=>{let s=sn(i);return(await r()).filter((a)=>a.startsWith(s))};return{async migrate(i,s){tt(i);let a=[],u=[...s].sort((c,d)=>c.version-d.version);for(let c of u)try{if(!Number.isSafeInteger(c.version)||c.version<1)throw Error("migration version must be a positive integer");let d=ui(i,c.sql);if(await e.begin(async(l)=>{if(await l.unsafe(`SELECT pg_advisory_xact_lock(${ei})`),(await l.unsafe("SELECT 1 FROM plugin_migrations WHERE plugin_id = $1 AND version = $2",[i,c.version])).length>0)return!1;let g=await _y(l);return await l.unsafe(d),await Bx(l,i,g),await l.unsafe("INSERT INTO plugin_migrations (plugin_id, version, applied_at) VALUES ($1,$2,$3)",[i,c.version,Date.now()]),!0}))a.push(c.version)}catch(d){return{applied:a,failed:{version:c.version,reason:H(d,String(d))}}}return{applied:a}},async run(i,s,a){await n().unsafe(ui(i,s),zt(a))},async all(i,s,a){return[...await n().unsafe(ui(i,s),zt(a))]},async get(i,s,a){return(await n().unsafe(ui(i,s),zt(a)))[0]??null},async transaction(i,s){return tt(i),e.begin((a)=>t.run(a,s))},async listTables(i){return tt(i),o(i)},async dropAll(i){tt(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)=>br.test(a)).map(sn);return(await r()).filter((a)=>!s.some((u)=>a.startsWith(u)))}}}var zx=["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"],qx=new Set(zx);function ci(e){return qx.has(e)}function di(e,t,n="LIKE"){let r=[],o=[],i=(u)=>(o.push(u),t(o.length)),s=(u,c)=>{if(c===void 0)return;let d=c.replace(/[\\%_]/g,"\\$&");r.push(`${u} ${n} ${i(`%${d}%`)} ESCAPE '\\'`)},a=(u,c)=>{if(c!==void 0)r.push(`${u} = ${i(c)}`)};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 li(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 Hx=`
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 by(e,t,n){await e.unsafe(Hx,[mt(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 Wx=`
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 ky(e,t){let n=t.apiKeyId;if(n===null)return;await e.unsafe(Wx,[n,$e(t.at),1,t.inputTokens,t.outputTokens,t.cacheReadTokens,t.cacheWriteTokens,t.costUsd])}var jx=`
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 Ey(e){await e.unsafe("DELETE FROM usage_rollup"),await e.unsafe(jx)}async function vy(e){let t=(await e.unsafe(`WITH truth AS (
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:P(t.buckets),r=t===void 0?0:P(t.mismatched)+P(t.orphans);return{buckets:n,mismatched:r,ok:r===0}}function Kx(e){try{let t=JSON.parse(e);return Array.isArray(t)?t.filter(ci):[]}catch{return[]}}var kr=(e)=>({id:e.id,state:e.state==="pending"?"pending":"done",at:P(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:P(e.input_tokens),outputTokens:P(e.output_tokens),cacheReadTokens:P(e.cache_read_tokens),cacheWriteTokens:P(e.cache_write_tokens),ttftMs:ae(e.ttft_ms),durationMs:P(e.duration_ms),costUsd:e.cost_usd,degradations:JSON.parse(e.degradations),rtkApplied:e.rtk_applied,rtkFilterHits:P(e.rtk_filter_hits),rtkOriginalCodeUnits:P(e.rtk_original_code_units),rtkCompressedCodeUnits:P(e.rtk_compressed_code_units),rtkEstimatedTokensSaved:P(e.rtk_estimated_tokens_saved),rtkFilters:Kx(e.rtk_filters)}),Gx={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 Ty(e,t){let n=Gx[e][t];if(n===null)throw Error(`usage grain ${e} cannot group by ${t}`);return n}var Zx={raw:`COUNT(*) AS requests,
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 Ry(e){if(e===null)return"unknown";let t=String(e);return t.length===0?"unknown":t}var xy=`(id, state, node_id, at, api_key_id, requested_model, resolved_provider,
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)`,Ay=`(${Array.from({length:26},(e,t)=>`$${t+1}`).join(",")})`;function Sy(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 Xx=`INSERT INTO request_logs ${xy} VALUES ${Ay}
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'`,Er=(e)=>({requests:e===void 0?0:P(e.requests),tokens:e===void 0?0:P(e.tokens),costUsd:e===void 0?0:e.cost_usd}),wu={sumSince:`SELECT COUNT(*) AS requests,
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 Oy(e,t,n){let r=async(o,i)=>{if((await o.unsafe(Xx,Sy(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=kr(a);await by(o,u,n),await ky(o,u)}};return{async begin(o){await e.unsafe(`INSERT INTO request_logs ${xy} VALUES ${Ay}`,Sy(o,"pending",t))},async route(o,i){await e.unsafe(`UPDATE request_logs
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-Bt])).map(kr);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(kr)},async page(o){let{where:i,bindings:s}=di(o,(u)=>`$${u}`,"ILIKE"),a=(await e.unsafe(`SELECT * FROM request_logs ${i}
814
- ORDER BY at DESC, id DESC LIMIT $${s.length+1}`,[...s,o.limit+1])).map(kr);return li(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
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(kr)},async sumSince(o,i,s){if(s!==void 0){let l=await e.unsafe(wu.sumSince,[o,s,i]);return Er(l[0])}let a=$e(i),u=await e.unsafe(`SELECT COALESCE(SUM(requests), 0) AS requests,
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]),c=await e.unsafe(`SELECT COUNT(*) AS requests,
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)*ve]),d=Er(u[0]),p=Er(c[0]);return{requests:d.requests+p.requests,tokens:d.tokens+p.tokens,costUsd:d.costUsd+p.costUsd}},async sumBuckets(o,i,s,a){if(a!==void 0){let c=s===ve?$e(i)*ve:i;return(await e.unsafe(wu.sumBuckets,[s,s,o,a,c])).map((p)=>[P(p.bucket),Er(p)])}return(s===ve?await e.unsafe(`SELECT hour * ${ve} AS bucket, requests,
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,$e(i)]):await e.unsafe(`SELECT (at / $1) * $2 AS bucket, COUNT(*) AS requests,
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((c)=>[P(c.bucket),Er(c)])},async rebuildRollup(){await e.begin((o)=>Ey(o))},async auditRollup(){return vy(e)},async oldestSince(o,i,s){let a=(s===void 0?await e.unsafe(`SELECT MIN(at) AS at
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(wu.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=Ty(i,o.groupBy),u=o.splitBy===void 0?null:Ty(i,o.splitBy),c=s?mt(o.since,n):o.since,d=o.until??Number.MAX_SAFE_INTEGER,p=s?"day":"at",l=[c,d],m="";if(o.apiKeyId!==void 0)l.push(o.apiKeyId),m+=` AND api_key_id = $${l.length}`;if(o.credentialId!==void 0)l.push(o.credentialId),m+=` AND credential_id = $${l.length}`;return(await e.unsafe(`SELECT ${a} AS key,
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
- ${Zx[i]},
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`,l)).map((h)=>{let f={key:Ry(h.key),requests:P(h.requests),inputTokens:P(h.input_tokens),outputTokens:P(h.output_tokens),cacheReadTokens:P(h.cache_read_tokens),cacheWriteTokens:P(h.cache_write_tokens),rtkSavedTokens:P(h.rtk_saved_tokens),rtkAppliedRequests:P(h.rtk_applied_requests),costUsd:h.cost_usd,errors:P(h.errors),durationMsSum:P(h.duration_ms_sum)};return u===null?f:{...f,split:Ry(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=$e(o);return await i.unsafe("DELETE FROM usage_rollup WHERE hour <= $1",[a]),await i.unsafe(`INSERT INTO usage_rollup
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*ve,(a+1)*ve]),s})},async pruneDaily(o){return(await e.unsafe("DELETE FROM usage_daily WHERE day < $1",[o])).count}}}function Cy(e){try{let t=new URL(e);if(t.password!=="")t.password="***";return t.toString()}catch{return"postgres://<unparseable>"}}async function pi(e){let t=e.logger??se,n=e.nodeId??crypto.randomUUID(),r=e.dayOffsetMinutes??et(),o=new Set,i=(p)=>{for(let l of o)try{l(p)}catch{}},s=await ry(e.url);t.debug("store opened",{path:Cy(e.url)});let a=await c(),u=null;async function c(){let p=await s.unsafe("SELECT version FROM config_version WHERE id = 1");return P(p[0]?.version??0)}let d=()=>{if(u!==null)return;u=c().then((p)=>{a=p}).catch(()=>{}).finally(()=>{u=null})};return{engine:"postgres",databasePath:Cy(e.url),credentials:py(s,e.encryptionKey,i),config:dy(s,i),keys:fy(s,t),usage:Oy(s,n,r),bodies:oy(s,e.encryptionKey),maintenance:gy(s,n),plugins:wy(s),routing:{version:()=>(d(),a),subscribe(p){return o.add(p),()=>o.delete(p)}},async reopen(){},close:()=>{s.close()}}}function Vx(e){return e==="ready"||e==="missing"||e==="corrupt"?e:"none"}var bu=(e)=>({requestId:e.request_id,at:e.at,relPath:e.rel_path,sizeBytes:e.size_bytes,sha256:e.sha256,detailState:Vx(e.detail_state),truncated:e.truncated===1});function ku(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(!Wo(i.requestId))throw Error("request id is not safe to use as an artifact path segment");let s=Ko(i),a=await Zo(t,s.json),u=jo(i.requestId,i.at);await Dh(n,u,a.bytes);let c=s.artifact.client.truncated||s.artifact.attempts.some((p)=>p.truncated),d={requestId:i.requestId,at:i.at,relPath:u,sizeBytes:a.bytes.length,sha256:a.sha256,detailState:"ready",truncated:c};return e.run(`INSERT INTO request_bodies (request_id, at, rel_path, size_bytes, sha256, detail_state, truncated)
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`,[d.requestId,d.at,d.relPath,d.sizeBytes,d.sha256,d.detailState,d.truncated?1:0]),d},async get(i){let s=e.query("SELECT * FROM request_bodies WHERE request_id = ?").get(i);if(s===null)return null;let a=bu(s);if(a.relPath===null||a.detailState==="none")return{row:a,artifact:null};let u=await Nh(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(bu);return r(s)},async pruneToCap(i=hr){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(bu);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 Uh(n)){if(i.has(u))continue;if((s.get(u)?.n??0)>0)continue;await au(n,u),a+=1}return a}}}var Py="settings",Eu="adminPasswordHash",vu="viewerPasswordHash";function Qx(e){let t=ye.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 Tu(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 (?,?,?,?)
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(Py);if(o===null)return ye;try{let i=JSON.parse(o),s=i!==null&&typeof i==="object"&&!Array.isArray(i)?i:{};return{...ye,...s,rtkEnabled:s.rtkEnabled===!0,autoCacheEnabled:s.autoCacheEnabled===void 0?!0:s.autoCacheEnabled===!0,ponytailMode:ti(s.ponytailMode)?s.ponytailMode:"off",bodyRetentionDays:Number.isInteger(s.bodyRetentionDays)&&(s.bodyRetentionDays??0)>=1&&(s.bodyRetentionDays??0)<=3650?s.bodyRetentionDays:ye.bodyRetentionDays,bodyLoggingEnabled:s.bodyLoggingEnabled===!0,bodyLoggingCaptureStreamChunks:s.bodyLoggingCaptureStreamChunks===!0,weights:Qx(s.weights),...ii(s)}}catch{return ye}},async putSettings(o){let i=await this.getSettings(),s={...i,...o,weights:{...i.weights,...o.weights}};return r(Py,JSON.stringify(s)),t({type:"settingsChanged"}),s},async getAdminPasswordHash(){return n(Eu)},async setAdminPasswordHashIfAbsent(o){return e.run("INSERT INTO settings (key, value) VALUES (?, ?) ON CONFLICT (key) DO NOTHING",[Eu,o]).changes===1},async setAdminPasswordHash(o){r(Eu,o)},async getViewerPasswordHash(){return n(vu)},async setViewerPasswordHash(o){if(o===null){e.run("DELETE FROM settings WHERE key = ?",[vu]);return}r(vu,o)}}}function Iy(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 Yx=`INSERT INTO credential_health
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 Ru(e,t,n=()=>{}){let r=async(l)=>l===null?null:An(t,l),o=async(l)=>({accessToken:await r(l.access_token),refreshToken:await r(l.refresh_token),apiKey:await r(l.api_key),idToken:await r(l.id_token)}),i=(l,m)=>{if(l===null)throw Error(`credential ${m} no longer exists`);return l},s=async(l)=>{let m=i(e.query("SELECT access_token, refresh_token, api_key, id_token FROM credentials WHERE id = ?").get(l),l);return o(m)},a=async(l,m)=>{if(m==="oauth"){let h=i(e.query("SELECT access_token FROM credentials WHERE id = ?").get(l),l);return{accessToken:await r(h.access_token),apiKey:null}}let g=i(e.query("SELECT api_key FROM credentials WHERE id = ?").get(l),l);return{accessToken:null,apiKey:await r(g.api_key)}},u=async(l)=>{let m=i(e.query("SELECT refresh_token FROM credentials WHERE id = ?").get(l),l);return{refreshToken:await r(m.refresh_token)}},c=async(l)=>{let m=i(e.query("SELECT access_token FROM credentials WHERE id = ?").get(l),l);return{accessToken:await r(m.access_token)}},d=(l,m=!1)=>({id:l.id,provider:l.provider,label:l.label,authType:l.auth_type,enabled:l.enabled===1,tier:l.tier,weight:l.weight,expiresAt:l.expires_at,accountEmail:l.account_email,providerData:JSON.parse(l.provider_data),disabledReason:l.disabled_reason,disabledAt:l.disabled_at,hasRefreshToken:l.refresh_token!==null,tokenVersion:l.token_version,createdAt:l.created_at,updatedAt:l.updated_at,secrets:()=>m?s(l.id):o(l),openForInference:async()=>{if(m)return a(l.id,l.auth_type);if(l.auth_type==="oauth")return{accessToken:await r(l.access_token),apiKey:null};return{accessToken:null,apiKey:await r(l.api_key)}},openForRefresh:async()=>m?u(l.id):{refreshToken:await r(l.refresh_token)},openForUsage:async()=>m?c(l.id):{accessToken:await r(l.access_token)}}),p=async(l)=>l===null||l===void 0?null:zo(t,l);return{async list(){return e.query("SELECT * FROM credentials ORDER BY tier, label").all().map((l)=>d(l))},async listRouting(){return e.query(`SELECT id, provider, label, auth_type, enabled, tier, weight, expires_at,
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((l)=>d(l,!0))},async get(l){let m=e.query("SELECT * FROM credentials WHERE id = ?").get(l);return m?d(m):null},async create(l){let m=Date.now();e.run(`INSERT INTO credentials
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 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)`,[l.id,l.provider,l.label,l.authType,l.enabled?1:0,l.tier,l.weight,l.expiresAt,l.accountEmail,JSON.stringify(l.providerData),l.disabledReason,l.disabledAt,await p(l.accessToken),await p(l.refreshToken),await p(l.apiKey),await p(l.idToken),m,m]);let{accessToken:g,refreshToken:h,apiKey:f,idToken:y,..._}=l;return n({type:"credentialsChanged"}),{..._,hasRefreshToken:h!=null,tokenVersion:0,createdAt:m,updatedAt:m}},async update(l,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,l]),n({type:"credentialsChanged"})},async updateSecrets(l,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,l]:[...y,l,h],v=e.run(`UPDATE credentials SET ${f.join(", ")} ${_}`,w).changes;if(v>0)n({type:"credentialsChanged"});return v>0},async remove(l){e.run("DELETE FROM credentials WHERE id = ?",[l]),n({type:"credentialsChanged"})},async listHealth(){return e.query("SELECT * FROM credential_health").all().map(Iy)},async updateHealth(l,m,g){let h=e.prepare("SELECT * FROM credential_health WHERE credential_id = ? AND model = ?"),f=e.prepare(Yx),y=e.transaction(()=>{let _=h.get(l,m),w=g(_===null?null:Iy(_));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((l)=>({credentialId:l.credential_id,windowType:l.window_type,startsAt:l.starts_at,used:l.used,limit:l.limit_value,resetsAt:l.resets_at,observedAt:l.observed_at,windowMs:l.window_ms}))},async saveQuota(l){let m=e.prepare(`INSERT INTO quota_windows
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 l){let w=y.get(_.credentialId);if(w===void 0)y.set(_.credentialId,[_.windowType]);else w.push(_.windowType)}e.transaction(()=>{for(let _ of l){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&&ri(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:l})},async listQuotaSamples(l){let m=l.limit!==void 0,g=(y)=>`SELECT * FROM quota_samples
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
- ${l.limit===void 0?"":"LIMIT ?"}`,h=[l.since,l.until];if(l.credentialId!==void 0)h.push(l.credentialId);if(l.limit!==void 0)h.push(l.limit);let f=e.query(g(l.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(l){return e.run("DELETE FROM quota_samples WHERE observed_at < ?",[l]),e.query("SELECT changes() AS n").get()?.n??0}}}import{Database as _A}from"bun:sqlite";var Ly=`CREATE TABLE credentials (
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 Ny=`-- Pre-aggregated request counters, one row per day and dimension tuple.
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 Dy=`-- Provider-reported quota, and why a credential stopped routing.
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 Uy=`-- Whether a request is still running.
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 My=`ALTER TABLE request_logs ADD COLUMN rtk_applied INTEGER NOT NULL DEFAULT 0;
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 $y=`ALTER TABLE usage_daily ADD COLUMN rtk_saved_tokens INTEGER NOT NULL DEFAULT 0;
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 Fy=`-- Retained provider quota readings, and the duration a window really runs for.
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 By=`-- Captured request and response bodies, and the api key opt-out that suppresses
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 zy=`-- Per-key limits as a sparse \`(dimension, window)\` matrix, replacing the single
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 qy=`-- Per-key hourly counters, so a long sliding window is read rather than scanned.
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 Hy=`-- The plugin migration ledger, kept deliberately apart from core's \`migrations\`.
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 Wy=`-- Which process owns a pending request, and which processes are alive.
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 jy=`-- DEPLOY HAZARD \u2014 read before upgrading an install that is still serving.
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 Ky=`-- An optional expiry on a gateway API key: an absolute epoch-ms instant after
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 Gy="-- 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 Zy=`-- An index for the provider filter on \`request_logs\`, which \`015_log_keyset.sql\`
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 Xy=`-- Indexes the typed log filters, which match substrings rather than values.
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 Vy=`-- An index for the per-model long-window reads behind a key's model overrides:
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 Qy=`-- An optional usage policy on a gateway API key: free text the operator wrote
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 wA=[{id:1,sql:Ly},{id:2,sql:Ny,after:Kh},{id:3,sql:Dy},{id:4,sql:Uy},{id:5,sql:My},{id:6,sql:$y,after:Xh},{id:7,sql:Fy},{id:8,sql:By},{id:9,sql:zy},{id:10,sql:qy,after:Jo},{id:11,sql:Hy},{id:12,sql:Wy},{id:13,sql:jy},{id:14,sql:Ky},{id:15,sql:Gy},{id:16,sql:Zy},{id:17,sql:Xy},{id:18,sql:Vy},{id:19,sql:Qy}];function bA(e){return e.split(`
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 Su(e,t=et()){let n=new _A(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 wA){if(r.has(o.id))continue;n.transaction(()=>{for(let i of bA(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 kA="sk-omni-";function Au(){let e=crypto.getRandomValues(new Uint8Array(32)),t=btoa(String.fromCharCode(...e)).replaceAll("+","-").replaceAll("/","_").replaceAll("=","");return kA+t}async function vr(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 EA(e,t,n){try{let r=JSON.parse(t);return Je(r)}catch{return n.error("api key limits unreadable",{apiKeyId:e}),null}}var xu=(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:EA(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});function Ou(e,t=se){return{async list(){return e.query("SELECT * FROM api_keys ORDER BY created_at DESC").all().map((n)=>xu(n,t))},async findByHash(n){let r=e.query("SELECT * FROM api_keys WHERE hash = ?").get(n);return r?xu(r,t):null},async get(n){let r=e.query("SELECT * FROM api_keys WHERE id = ?").get(n);return r?xu(r,t):null},async create(n){let r=Date.now();return e.run(`INSERT INTO api_keys (id, label, prefix, hash, model_allowlist, limits,
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,?,?)`,[n.id,n.label,n.prefix,n.hash,n.modelAllowlist===null?null:JSON.stringify(n.modelAllowlist),JSON.stringify(Je(n.limits)),n.bodyLoggingOptOut?1:0,r,n.expiresAt,n.guardrailPolicy]),{...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,
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 (?,?,?,?,?,?,?,?,?,?,?)`,[n.id,n.label,n.prefix,n.hash,n.modelAllowlist===null?null:JSON.stringify(n.modelAllowlist),JSON.stringify(Je(n.limits)),n.bodyLoggingOptOut?1:0,n.createdAt,n.revokedAt,n.expiresAt,n.guardrailPolicy])},async setLimits(n,r){e.run("UPDATE api_keys SET limits = ? WHERE id = ?",[JSON.stringify(Je(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 revoke(n){e.run("UPDATE api_keys SET revoked_at = ? WHERE id = ?",[Date.now(),n])}}}import{Database as vA}from"bun:sqlite";var Yy=["api_keys","credential_health","credentials","migrations","quota_windows","request_logs","settings","virtual_models"],Cu="unreadable";function TA(e){return`'${e.replaceAll("'","''")}'`}function Pu(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-Bt).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,
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 ${TA(n)}`)},async inspect(n){let r;try{r=new vA(n,{readonly:!0})}catch{return{ok:!1,quickCheck:Cu,tables:[],counts:{}}}try{let i=r.query("PRAGMA quick_check").all()[0]?.quick_check??Cu,s=r.query("SELECT name FROM sqlite_master WHERE type = 'table' AND name NOT LIKE 'sqlite_%' ORDER BY name").all().map((d)=>d.name),a=new Set(s),u={};for(let d of Yy){if(!a.has(d))continue;let p=r.query(`SELECT COUNT(*) AS n FROM ${d}`).get();u[d]=p?.n??0}let c=Yy.every((d)=>a.has(d));return{ok:i==="ok"&&c,quickCheck:i,tables:s,counts:u}}catch{return{ok:!1,quickCheck:Cu,tables:[],counts:{}}}finally{r.close()}}}}var mi=ai,Jy=si;function e_(e){let t=e.query("SELECT name FROM sqlite_master").all();return new Set(t.map((n)=>n.name))}function RA(e,t,n){let r=`${Jy}${t}_`;for(let o of e_(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 Iu(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(Jy)&&o!=="plugin_migrations"),n=(o)=>{let i=sn(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){tt(o);let s=r(o),a=[],u=[...i].sort((c,d)=>c.version-d.version);for(let c of u){if(s.has(c.version))continue;try{if(!Number.isSafeInteger(c.version)||c.version<1)throw Error("migration version must be a positive integer");let d=mi(o,c.sql),p=e_(e);e.transaction(()=>{e.run(d),RA(e,o,p),e.run("INSERT INTO plugin_migrations (plugin_id, version, applied_at) VALUES (?,?,?)",[o,c.version,Date.now()])})(),a.push(c.version)}catch(d){return{applied:a,failed:{version:c.version,reason:H(d,String(d))}}}}return{applied:a}},async run(o,i,s){e.run(mi(o,i),zt(s))},async all(o,i,s){return e.prepare(mi(o,i)).all(...zt(s))},async get(o,i,s){let a=e.prepare(mi(o,i)).get(...zt(s));return a===null||a===void 0?null:a},async transaction(o,i){tt(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 tt(o),n(o)},async dropAll(o){tt(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)=>br.test(s)).map(sn);return t().filter((s)=>!i.some((a)=>s.startsWith(a)))}}}function SA(e){try{let t=JSON.parse(e);return Array.isArray(t)?t.filter(ci):[]}catch{return[]}}var In=(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:SA(e.rtk_filters)}),xA={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 t_(e,t){let n=xA[e][t];if(n===null)throw Error(`usage grain ${e} cannot group by ${t}`);return n}var AA={raw:`COUNT(*) AS requests,
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 n_(e){if(e===null)return"unknown";let t=String(e);return t.length===0?"unknown":t}var o_=`(id, state, node_id, at, api_key_id, requested_model, resolved_provider,
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)`,i_="(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";function r_(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 OA=`INSERT INTO request_logs ${o_} VALUES ${i_}
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'`,Lu={sumSince:`SELECT COUNT(*) AS requests,
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 Nu(e,t,n=et()){let r=e.transaction((i)=>{if(e.run(OA,r_(i,"done",t)).changes===0)return;let s=e.query("SELECT * FROM request_logs WHERE id = ?").get(i.id);if(s!==null){let a=In(s);jh(e,a,n),Gh(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=$e(i);return e.run("DELETE FROM usage_rollup WHERE hour <= ?",[a]),e.run(`INSERT INTO usage_rollup
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*ve,(a+1)*ve]),s});return{async begin(i){e.run(`INSERT INTO request_logs ${o_} VALUES ${i_}`,r_(i,"pending",t))},async route(i,s){e.run(`UPDATE request_logs
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-Bt).map(In);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(In);return e.query("SELECT * FROM request_logs WHERE api_key_id = ? ORDER BY at DESC LIMIT ?").all(s,i).map(In)},async page(i){let{where:s,bindings:a}=di(i,()=>"?"),u=e.query(`SELECT * FROM request_logs ${s} ORDER BY at DESC, id DESC LIMIT ?`).all(...a,i.limit+1).map(In);return li(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
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(In)},async sumSince(i,s,a){if(a!==void 0){let p=e.query(Lu.sumSince).get(i,a,s);return{requests:p?.requests??0,tokens:p?.tokens??0,costUsd:p?.cost_usd??0}}let u=$e(s),c=e.query(`SELECT COALESCE(SUM(requests), 0) AS requests,
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),d=e.query(`SELECT COUNT(*) AS requests,
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)*ve);return{requests:(c?.requests??0)+(d?.requests??0),tokens:(c?.tokens??0)+(d?.tokens??0),costUsd:(c?.cost_usd??0)+(d?.cost_usd??0)}},async sumBuckets(i,s,a,u){if(u!==void 0){let d=a===ve?$e(s)*ve:s;return e.query(Lu.sumBuckets).all(a,a,i,u,d).map((l)=>[l.bucket,{requests:l.requests,tokens:l.tokens,costUsd:l.cost_usd}])}return(a===ve?e.query(`SELECT hour * ${ve} AS bucket, requests,
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,$e(s)):e.query(`SELECT (at / ?) * ? AS bucket, COUNT(*) AS requests,
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((d)=>[d.bucket,{requests:d.requests,tokens:d.tokens,costUsd:d.cost_usd}])},async rebuildRollup(){Jo(e)},async auditRollup(){return Zh(e)},async oldestSince(i,s,a){return(a===void 0?e.query(`SELECT MIN(at) AS at
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(Lu.oldestSince).get(i,a,s))?.at??null},async aggregate(i){let s=i.grain??"raw",a=s==="daily",u=t_(s,i.groupBy),c=i.splitBy===void 0?null:t_(s,i.splitBy),d=a?mt(i.since,n):i.since,p=i.until??Number.MAX_SAFE_INTEGER,l=a?"day":"at",m=[d,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,
1641
- ${c??"NULL"} AS split,
1642
- ${AA[s]},
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 "}${l} >= ? AND ${l} <= ?${g}
1652
- GROUP BY key${c===null?"":", split"}
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 YA)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:XA(t)},{type:"text",text:Fi},...n]}function JA(e){return(Bun.hash.xxHash64(Buffer.from(e,"utf8"),jA)&KA).toString(16).padStart(5,"0")}var e0=`"system":[{"type":"text","text":"${Ir}`;function T_(e){let t=`cch=${E_};`,n=e.indexOf(e0);if(n<0)return e;let r=e.indexOf(t,n);if(r<0)return e;return`${e.slice(0,r)}cch=${JA(e)};${e.slice(r+t.length)}`}var R_={anthropic:Rr,openai:Ci,kimi:Si,kilo:Ti,grok:Ei,antigravity:_i,muse:Ai,custom:bi};Object.setPrototypeOf(R_,null);var t0=["oauth","apiKey"];function Bi(e,t){return e.models.find((n)=>n.id===t)?.pricing??null}function S_(e,t){return e.models.find((n)=>n.id===t)?.auth??e.authTypes}var x_=t0;function A_(e,t,n="apiKey"){let r=R_[e];return r===void 0?null:Lr(r,t,n)}function Lr(e,t,n="apiKey"){let r=e.models.find((o)=>o.id===t);return r===void 0?null:zi(r,n)}function zi(e,t="apiKey"){return(t==="oauth"?e.oauthLimits:void 0)??e.limits}var Yu={anthropic:Ge,openai:rt,kimi:Ct,kilo:ft,grok:Ot,antigravity:nt,muse:gt,custom:Zu};Object.setPrototypeOf(Yu,null);var n0=2,O_=10485760;async function*_e(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 c=i+n.decode(u,{stream:!0}),d=0,p=c.indexOf(`
1656
- `);while(p!==-1){let g=r0(c,p);if(g===-1){p=c.indexOf(`
1657
- `,p+1);continue}C_(o+(p-d)),r.push(c.slice(d,p));let h=r.join("");r.length=0,o=0;let f=P_(h);if(f)yield f;d=g,p=c.indexOf(`
1658
- `,g)}let l=Math.min(n0,c.length-d),m=c.slice(d,c.length-l);if(m.length>0)r.push(m),o+=m.length;i=c.slice(c.length-l),C_(o+i.length)}let s=P_(r.join("")+i);if(s)yield s}finally{t.releaseLock()}}function C_(e){if(e<=O_)return;throw new b("UPSTREAM",`upstream SSE record exceeded ${O_} characters`,{gatewayAuthored:!0})}function r0(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 P_(e){let t="message",n=[];for(let r of e.split(`
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 y0(e){let t=e.split(";")[0]?.trim().toLowerCase()??"";return t.startsWith("text/")||t.endsWith("+json")||t.endsWith("+xml")||_0.has(t)}var _0=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 w0(e){return Buffer.from(e.data,"base64").toString("utf8")}function Ze(e,t){let n=[],r=[],o=!1;for(let i of e)if(y0(i.mediaType))n.push(w0(i));else if(t(i.mediaType))r.push(i);else o=!0;return{text:n,carried:r,dropped:o}}function be(e,t){return[e,...t].filter((n)=>n.length>0).join(`
1663
-
1664
- `)}var W_=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 rc(e){return e.filename??`file.${W_[e.mediaType]??"bin"}`}function Ht(e){let{text:t,carried:n,dropped:r}=Ze(e,(i)=>(i in W_));return{parts:n.map((i)=>({type:"input_file",filename:rc(i),file_data:`data:${i.mediaType};base64,${i.data}`})),text:t,dropped:r}}var j_="You are Claude Code, Anthropic's official CLI for Claude.";function Dr(e){if(e===void 0)return{};return{cache_control:{type:e.type,...e.ttl===void 0?{}:{ttl:e.ttl}}}}function b0(e){return e.type!=="thinking"||e.signature!==void 0&&e.signature!==""}function ji(e,t){let n=Dr(pt(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:qi(t,e.name),input:e.input,...n};case"toolResult":{let r=Ze(e.files??[],(a)=>a==="application/pdf"),o=be(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)=>ji(a,t)),...i,...(e.native??[]).map((a)=>ji(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 k0(e,t){if(e.every((n)=>n.type==="text"))return e.map((n)=>n.text).join(`
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(l.length>0)o.push({role:p.role,content:l.join(`
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 us(e,t){let n=[],r=(c)=>{if(!n.includes(c))n.push(c)};if(e.betas?.includes(Ee))r("kilo:context-1m-dropped");if(nP(e))r("kilo:cache-control-dropped");let o=[],i=Oe(e.system,"kilo",r);if(i!==void 0&&i.length>0)o.push({role:"system",content:i});for(let c of e.messages){let d=[],p=[],l=[],m=()=>{if(p.length>0)o.push({role:c.role,content:vb(d),tool_calls:[...p]});else if(d.length>0)o.push({role:c.role,content:vb(d)});d=[],p.length=0};for(let g of c.content)switch(g.type){case"text":d.push({type:"text",text:g.text});break;case"image":d.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=Ze(g.files??[],(f)=>f==="application/pdf");if(o.push({role:"tool",tool_call_id:g.toolUseId,content:be(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"),l.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"),l.push({type:"file",file:{filename:rc(f),file_data:`data:${f.mediaType};base64,${f.data}`}});break}case"providerNative":r("kilo:anthropic-native-block-dropped");break}if(m(),l.length>0)o.push({role:"user",content:l})}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 c=e.tools.filter((d)=>d.kind==="portable");if(c.length!==e.tools.length)r("kilo:anthropic-tool-dropped");s.tools=c.map((d)=>({type:"function",function:{name:d.name,description:d.description,parameters:d.inputSchema}}))}if(e.toolChoice!==void 0)s.tool_choice=tP(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=ot(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 rP="https://api.kilo.ai/api/openrouter/chat/completions",oP="https://api.kilo.ai/api/gateway/chat/completions";function iP(e){let t=e.orgId;if(typeof t!=="string"||t.length===0)return[];return[["X-Kilocode-OrganizationID",t]]}var Tb={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}=us(e.request,e.model),i=[["Content-Type","application/json"],["Authorization",`Bearer ${n}`],...iP(e.credentials.providerData)],s=fe(ge(ft.headers,i),ft.order);return{request:{url:t?rP:oP,method:"POST",headers:s,body:JSON.stringify(Be({...r,stream:!0},Di))},degradations:o}},decode({body:e}){return as(_e(e))}};var qc=de("kilo",Ri.capabilities,Tb);var Rb={stop:"endTurn",length:"maxTokens",tool_calls:"toolUse",content_filter:"contentFilter"};function sP(e){try{let t=JSON.parse(e);return typeof t==="object"&&t!==null?t:null}catch{return null}}async function*cs(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=sP(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 m=d.usage.prompt_tokens_details;o=xe(d.usage.prompt_tokens??0,d.usage.completion_tokens??0,m?.cached_tokens??d.usage.prompt_cache_hit_tokens??0,m?.cache_creation_tokens??m?.cache_write_tokens??0)}let p=d.choices?.[0];if(!p)continue;let l=p.delta??{};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 m of l.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(Rb,m)?Rb[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 aP(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=(d)=>{if(!r.includes(d))r.push(d)};if(e.betas?.includes(Ee))o("kimi:context-1m-dropped");let i=[],s=Oe(e.system,"kimi",o);if(s!==void 0&&s.length>0)i.push({role:"system",content:s});for(let d of e.messages){let p=[],l=[];for(let m of d.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":l.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=Ze(m.files??[],()=>!1);if(i.push({role:"tool",tool_call_id:m.toolUseId,content:be(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(l.length>0)i.push({role:d.role,content:p.length>0?p.join(`
1671
- `):null,tool_calls:l});else if(p.length>0)i.push({role:d.role,content:p.join(`
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 Ud(e){return e==="csv"?vk(Dd):""}function Tk(e,t){if(e==="jsonl"){let n={};for(let r of Dd)n[r]=t[r];return`${JSON.stringify(n)}
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 wl(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(hl)){let c=n[u];if(c===void 0||c==="")continue;let d=r.get(c);if(d===void 0)throw Error(`${u} names unknown virtual model "${c}"`);if(!i.has(c))i.add(c),o.push(d)}let s={};for(let{model:u,limits:c,label:d}of o){let p=c.contextWindow===void 0?void 0:{context:c.contextWindow,...c.maxOutputTokens===void 0?{}:{output:c.maxOutputTokens}};s[u.id]={name:d,...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??Ms},models:s}}},null,2)}
1678
- `}}import{closeSync as _L,fstatSync as wL,openSync as bL,readSync as kL,statSync as EL}from"fs";var vL=65536,TL=8388608;function bl(e,t){let n;try{n=bL(e,"r")}catch{return null}try{let r=wL(n).size;if(r===0)return"";let o=Math.min(r,TL),i=0,s=0,a=[];while(i<o&&s<=t){let u=Math.min(vL,o-i),c=Buffer.allocUnsafe(u),d=r-i-u;kL(n,c,0,u,d),a.unshift(c),i+=u;for(let p of c)if(p===10)s++}return Buffer.concat(a).toString("utf8")}catch{return null}finally{_L(n)}}function $s(e){try{return EL(e).isFile()}catch{return!1}}import{parseArgs as RL}from"util";class I extends Error{}var SL={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 uE(e,t={}){try{let n=RL({args:[...e],options:{...SL,...t},allowPositionals:!0,strict:!0});return{positionals:n.positionals,values:n.values}}catch(n){throw new I(H(n,"could not parse arguments"))}}function A(e,t){let n=e[t];return typeof n==="string"?n:void 0}function L(e,t){return e[t]===!0}function Pe(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 yn(e,t){let n=A(e,t);if(n===void 0||n.trim().length===0)return;let r=Number(n);if(!Number.isFinite(r))throw new I(`--${t} must be a number, got "${n}"`);return r}function U(e,t,n){let r=e.positionals[t];if(r===void 0||r.length===0)throw new I(`${n} is required`);return r}var xL={dim:!0,red:!0,green:!0,yellow:!0,blue:!0,magenta:!0,cyan:!0,orange:!0,violet:!0,azure:!0};function AL(e){return Object.hasOwn(xL,e)}function OL(e){let t=M[e]?.presentation.tone;return t!==void 0&&AL(t)?t:"cyan"}function Ie(e,t){return S(e,OL(t),t)}function Z(e,t,n){return S(e,t?"green":"red",n)}import{existsSync as Fs,readFileSync as CL}from"fs";import{homedir as PL}from"os";import{isAbsolute as IL,join as eo,resolve as kl}from"path";class O extends Error{exitCode;constructor(e,t=1){super(e);this.name="CliError",this.exitCode=t}}var LL=eo(PL(),".config","omnigateway");function NL(e){return Fs(eo(e,".env"))||Fs(eo(e,"omnigateway.db"))||Fs(eo(e,"apps","gateway","src","index.ts"))}function DL(e,t,n){let r=(i,s)=>{let a=eo(i,".env");return{root:i,source:s,envFile:Fs(a)?a:null}};if(e.root!==void 0&&e.root.length>0)return r(kl(n,e.root),"flag");let o=t.OMNI_ROOT;if(typeof o==="string"&&o.length>0)return r(kl(n,o),"env");if(NL(n))return r(n,"cwd");return r(LL,"default")}function UL(e){let t={};for(let n of e.split(`
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 cE(e,t={}){let n=t.env??process.env,r=t.cwd??process.cwd(),o=DL({root:A(e.values,"root")},n,r),i=o.envFile===null?{}:UL(CL(o.envFile,"utf8")),s={...n,...i},a=A(e.values,"db"),u=a===void 0||a.trim().length===0?void 0:a,c=n.OMNI_DB_PATH?.trim(),d=o.source==="flag"&&u===void 0&&i.OMNI_DB_PATH===void 0&&c!==void 0&&c.length>0?c:null;if(d!==null)delete s.OMNI_DB_PATH;let p=null,l=null;try{p=Bu(s)}catch(w){l=H(w,"invalid configuration")}let m=u??p?.databasePath??"omnigateway.db",g=IL(m)?m:kl(o.root,m),h=d===null?[]:[`ignoring OMNI_DB_PATH=${d} 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:l,databasePath:g,config(){if(p===null)throw new O(l??"invalid configuration");return p},store(){if(f===null){let w=p;if(w===null)throw new O(l??"invalid configuration");f=Bo(w.encryptionKey).then((v)=>fi({path:g,encryptionKey:v,dayOffsetMinutes:w.dayOffsetMinutes})).then((v)=>(y=v,v))}return f},close(){y?.close(),y=null,f=null}}}function Bs(){return{fs:Vr(),sdkVersion:As}}function dE(e,t){let r=A(t.values,"registry")??e.env.OMNI_PLUGIN_REGISTRY,o=r===void 0||r.trim().length===0?void 0:r.trim();return{...Bs(),fetchBytes:tl(),now:e.now,...o===void 0?{}:{registry:o}}}function ML(e,t){if(!t.loadable)return Z(e,!1,"will not load");if(t.problems.length>0)return S(e,"yellow","loads, with warnings");return Z(e,!0,"ok")}var lE={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=Gt(Bs(),r);R(t,n,{pluginsDir:Ce(r),plugins:o},()=>{if(o.length===0)return`no plugins installed; unpack one into ${Ce(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(","),ML(t,u)]),s=j([{header:"ID"},{header:"NAME"},{header:"VERSION"},{header:"API"},{header:"SDK"},{header:"CAPABILITIES"},{header:"STATE"}],i),a=o.flatMap((u)=>u.problems.map((c)=>`${u.id}: ${S(t,c.fatal?"red":"yellow",c.reason)}`));return a.length===0?s:`${s}
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
- `)}`})}},pE={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=U(e,0,"plugin id"),o=Xd(Bs(),t.root.root,r);if(R(t,n,o,()=>{let i=o.manifest,s=q([["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}
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
- ${Z(t,!0,"ok")}: this plugin would load`;let a=o.problems.map((c)=>` ${S(t,c.fatal?"red":"yellow",c.check)} ${c.reason}`),u=o.loadable?S(t,"yellow","this plugin would load, with the warnings above"):Z(t,!1,"this plugin would be skipped at boot");return`${s}
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 O(`plugin "${r}" would not load`)}},mE={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=U(e,0,"plugin directory, tarball, url, or package name"),o=await Is(dE(t,e),t.root.root,r);R(t,n,o,()=>(X(t,n,S(t,"dim","no code from the package was executed; verify it before restarting")),[`${o.replaced?"replaced":"installed"} ${o.name} ${o.version} at ${o.path}`,S(t,"yellow","restart the gateway for this to take effect: omni restart")].join(`
1690
- `)))}},fE={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=U(e,0,"plugin id"),o=await Vd(dE(t,e),t.root.root,r);R(t,n,o,()=>(X(t,n,S(t,"dim",`re-run from ${o.spec}; no code from the package was executed`)),[`reinstalled ${o.name} ${o.version} at ${o.path}`,S(t,"yellow","restart the gateway for this to take effect: omni restart")].join(`
1691
- `)))}},gE={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=U(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 O("cancelled");let a=i?{fs:Vr(),store:await t.store()}:{fs:Vr()},u=await Qd(a,t.root.root,o,{purge:i});R(t,n,u,()=>{let c=[];if(c.push(u.removed?`removed ${o}`:`no directory for ${o} to remove`),i)c.push(u.droppedTables.length===0?"no stored tables to drop":`dropped ${u.droppedTables.length} table(s): ${u.droppedTables.join(", ")}`);else c.push(S(t,"dim","stored tables and migration history kept; --purge drops them"));return c.push(S(t,"yellow","restart the gateway for this to take effect: omni restart")),c.join(`
1692
- `)})}};function to(){return Bs()}async function Xt(e){let t=await Ds(Gt(to(),e),(r)=>import(r));return{descriptors:Object.assign(Object.create(null),M,t.descriptors),oauth:t.oauth,failures:t.failures}}function $L(e,t){return t.find((n)=>n.id===e&&n.capabilities.includes("provider"))}function El(e,t){return Object.hasOwn(M,e)||$L(e,t)!==void 0}function hE(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((c)=>c.fatal).map((c)=>c.reason),a=n.problems.length-s.length,u=s.length>0?Z(e,!1,`will not load: ${s.join("; ")}`):a>0?S(e,"yellow",`loads, ${a} warning(s); see omni plugin verify ${n.id}`):Z(e,!0,"ok");return`${n.id}${r} (${o}, ${i}) ${u}`})}async function jn(e){let t=await Ds(Gt(to(),e),(n)=>import(n));return{providers:Object.assign(Object.create(null),bt,t.oauth),descriptors:Object.assign(Object.create(null),M,t.descriptors),failures:t.failures}}var FL={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."]},BL=new TextEncoder;function zs(e){if(e===null||e===void 0)return 0;return BL.encode(JSON.stringify(e)).length}function yE(e){return q([["STATE",e.detailState],["CAPTURED",oe(e.at)],["SIZE",`${ce(e.sizeBytes)} on disk`],["TRUNCATED",e.truncated?"yes":"no"]])}function zL(e,t){let n=t.attempts.some((o)=>o.streamChunks!==null),r=(o,i)=>i?`${o} (truncated)`:o;return j([{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(zs(t.client.request)),ce(zs(t.client.response)),...n?["\u2014"]:[],"pre-RTK"],...t.attempts.map((o)=>[r(`ATTEMPT ${o.attempt}`,o.truncated),Ie(e,o.provider),ce(zs(o.request)),ce(zs(o.response)),...n?[o.streamChunks===null?"\u2014":String(o.streamChunks.length)]:[],"post-RTK"])])}function Kn(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`${S(e,"dim",t)}
1693
- ${r}`}function qL(e,t){let n=[Kn(e,"CLIENT REQUEST (pre-RTK)",t.client.request),Kn(e,"CLIENT RESPONSE",t.client.response)];for(let r of t.attempts){let o=`ATTEMPT ${r.attempt} ${Ie(e,r.provider)}`;if(n.push(Kn(e,`${o} REQUEST (post-RTK)`,r.request)),n.push(Kn(e,`${o} RESPONSE`,r.response)),r.streamChunks!==null)n.push(Kn(e,`${o} STREAM FRAMES (${r.streamChunks.length})`,r.streamChunks))}if(t.error!==null&&t.error!==void 0)n.push(Kn(e,"ERROR",t.error));return n.join(`
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 _E={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=U(e,0,"request id"),o=await Uu(await t.store(),r);R(t,n,o,()=>{let i=o.artifact;if(i===null){let[a,u]=FL[o.detailState==="ready"?"corrupt":o.detailState];return[yE(o),"",a,u].join(`
1696
- `)}let s=[yE(o),"",zL(t,i),"",S(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("",S(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("",qL(t,i));else s.push("","bodies withheld; pass --full to print them, --json for the artifact");return s.join(`
1697
- `)})}};var HL=600000,wE={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=U(e,0,"provider"),{ids:a,failures:u}=await i();if(!a.includes(s)){let m=u.find((g)=>g.id===s);throw new I(m===void 0?`provider must be one of ${a.join(", ")}`:`provider ${s} comes from a plugin that failed to load: ${m.reason}`)}let c=await o(await t.store()),d=A(e.values,"credential"),p=await c.start(s,A(e.values,"label"),d);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 l=p.kind==="device"?await WL(c,p,{sleep:(m)=>Bun.sleep(m),now:t.now,onWait:()=>X(t,n,"waiting for approval\u2026")}):await c.finish(p.flowId,await r.secret("Paste the code or callback URL: "));R(t,n,{id:l.id,provider:s},()=>`connected ${s} as ${l.id}`)}};async function WL(e,t,n){let r=n.now()+HL,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 O("authorization timed out");await n.sleep(t.pollIntervalMs)}}import{existsSync as qs,mkdirSync as Tl,readFileSync as jL,rmSync as Rl,writeFileSync as EE}from"fs";import{homedir as vE}from"os";import{dirname as TE,join as _n}from"path";var Vt="omnigateway.service";function RE(e){return e==="system"?_n("/etc/systemd/system",Vt):_n(vE(),".config","systemd","user",Vt)}function Qt(e,t){return e==="system"?["systemctl",...t]:["systemctl","--user",...t]}function Hs(e){return _n(e,"gateway.pid")}function KL(e){return _n(e,"gateway.log")}function Gn(e){let t=e.logFile?.trim();return t!==void 0&&t.length>0?t:KL(e.stateDir)}function SE(e){let t=e.XDG_STATE_HOME,n=typeof t==="string"&&t.length>0?t:_n(vE(),".local","state");return _n(n,"omnigateway")}function GL(e){return`[Unit]
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=${_n(e.root,".env")}
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 wn(e){return qs(e.unitPath)}function ZL(e){let t=Hs(e);if(!qs(t))return null;let n=Number(jL(t,"utf8").trim());return Number.isInteger(n)&&n>0?n:null}function Sl(e){let t=ZL(e.stateDir);if(t===null)return null;if(e.alive(t))return t;return Rl(Hs(e.stateDir),{force:!0}),null}async function bn(e){if(wn(e)){let n=await e.run(Qt(e.scope,["is-active",Vt])),r=n.stdout.trim()||n.stderr.trim()||"unknown",o=await e.run(Qt(e.scope,["show",Vt,"--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=Sl(e);return{supervisor:t===null?"none":"pidfile",running:t!==null,pid:t,state:null,unitPath:null,logFile:Gn(e)}}async function xl(e,t){if(wn(e)){let i=await e.run(Qt(e.scope,["start",Vt]));if(i.code!==0)throw Error(i.stderr.trim()||`systemctl start exited ${i.code}`);return{supervisor:"systemd",pid:null,healthy:await vl(e,t.baseUrl)}}let n=Sl(e);if(n!==null)return{supervisor:"pidfile",pid:n,healthy:await vl(e,t.baseUrl)};Tl(e.stateDir,{recursive:!0});let r=Gn(e);Tl(TE(r),{recursive:!0});let o=e.spawn({argv:t.argv,cwd:e.root,env:{...t.env,OMNI_LOG_FILE:r},logFile:r});return EE(Hs(e.stateDir),`${o}
1713
- `),{supervisor:"pidfile",pid:o,healthy:await vl(e,t.baseUrl)}}var XL=1e4,bE=200;async function vl(e,t){let n=Math.ceil(XL/bE);for(let r=0;r<n;r++){if(await e.probe(t))return!0;await e.sleep(bE)}return!1}var VL=5000,kE=100;async function Al(e){if(wn(e)){let r=await e.run(Qt(e.scope,["stop",Vt]));if(r.code!==0)throw Error(r.stderr.trim()||`systemctl stop exited ${r.code}`);return{supervisor:"systemd",stopped:!0}}let t=Sl(e);if(t===null)return{supervisor:"none",stopped:!1};e.kill(t,"SIGTERM");let n=Math.ceil(VL/kE);for(let r=0;e.alive(t);r++){if(r>=n){e.kill(t,"SIGKILL");break}await e.sleep(kE)}return Rl(Hs(e.stateDir),{force:!0}),{supervisor:"pidfile",stopped:!0}}async function xE(e,t){let n=e.unitPath;if(qs(n)&&!t.force)throw Error(`${n} already exists; pass --force to replace it`);Tl(TE(n),{recursive:!0}),EE(n,GL({root:e.root,bun:t.bun,entrypoint:t.entrypoint}));let r=await e.run(Qt(e.scope,["daemon-reload"])),o=!1;if(t.enable)o=(await e.run(Qt(e.scope,["enable",Vt]))).code===0;return{path:n,reloaded:r.code===0,enabled:o}}async function AE(e){let t=e.unitPath;if(!qs(t))return{path:t,removed:!1};return await e.run(Qt(e.scope,["disable","--now",Vt])),Rl(t,{force:!0}),await e.run(Qt(e.scope,["daemon-reload"])),{path:t,removed:!0}}function no(e){let t=e.logFile?.trim(),n=t!==void 0&&t.length>0&&$s(t)?t:wn(e)?void 0:$s(Gn(e))?Gn(e):void 0;return{source:od({...n===void 0?{}:{logFile:n},unitInstalled:wn(e),scope:e.scope}),deps:{readFile:(r,o)=>bl(r,o),run:e.run}}}async function OE(e,t){let{source:n,deps:r}=no(e);return(await Mn(r,n,{lines:t})).lines.map((i)=>i.raw).join(`
1714
- `)}var Ol=2000,QL={debug:"dim",warn:"yellow",error:"red"};function CE(e,t){return t.map((n)=>{let r=n.level===null?void 0:QL[n.level];return r===void 0?n.raw:S(e,r,n.raw)}).join(`
1715
- `)}function Ws(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 YL(e){if(e.kind!=="none")return`no output yet in ${Ws(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(`
1716
- `)}var PE={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=yn(e.values,"number")??50,i=A(e.values,"level"),s=Vo(i);if(i!==void 0&&s===null)throw new I(`unknown level "${i}"; use debug, info, warn or error`);let{source:a,deps:u}=no(r()),c={lines:o,...s===null?{}:{level:s}},d=await Mn(u,a,c);if(R(t,n,d,()=>d.lines.length===0?YL(a):CE(t,d.lines)),!t.json&&d.lines.length>0)X(t,n,S(t,"dim",`reading ${Ws(a)}`));if(L(e.values,"follow")!==!0||t.json)return;let p=d.lines.at(-1)?.at??0;for(;;){await Bun.sleep(Ol);let l=await Mn(u,a,{...c,since:p});if(l.lines.length===0)continue;p=l.lines.at(-1)?.at??p,n.out(CE(t,l.lines))}}};function IE(e,t){if(!e.enabled)return{ok:!1,text:e.disabledReason??"disabled"};if(oi(e,t))return{ok:!1,text:"expired"};if(gu(e,t))return{ok:!0,text:"expired (refreshable)"};return{ok:!0,text:"enabled"}}var LE={usage:"credentials list",summary:"List provider accounts and whether the router may use them",async run(e,{ctx:t,writer:n}){let r=await Qe(await t.store());R(t,n,{credentials:r},()=>{if(r.length===0)return"no credentials; add one with: omni connect <provider>";return j([{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=IE(o,t.now());return[o.id,Ie(t,o.provider),o.label,o.authType,String(o.tier),String(o.weight),Z(t,i.ok,i.text),oe(o.expiresAt)]}))})}};async function Cl(e,t){return ws(await e.store(),t)}var NE={usage:"credentials show <id>",summary:"Show one account in full, without its secrets",async run(e,{ctx:t,writer:n}){let r=U(e,0,"credential id"),o=await Cl(t,r),i=IE(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};R(t,n,s,()=>q([["id",o.id],["provider",Ie(t,o.provider)],["label",o.label],["auth",o.authType],["state",Z(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 DE(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=U(t,0,"credential id");await bs({store:await n.store(),now:n.now},o,{enabled:e}),R(n,r,{id:o,enabled:e},()=>`${o} ${e?"enabled":"disabled"}`)}}}var UE=DE(!0),ME=DE(!1),$E={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=U(e,0,"credential id"),o=A(e.values,"label"),i=yn(e.values,"tier"),s=yn(e.values,"weight");if(o===void 0&&i===void 0&&s===void 0)throw new I("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 bs({store:await t.store(),now:t.now},r,a),R(t,n,{id:r,...a},()=>`${r} updated`)}},FE={usage:"credentials rm <id>",summary:"Delete an account and its stored tokens",async run(e,{ctx:t,writer:n,prompt:r}){let o=U(e,0,"credential id"),i=await Cl(t,o),s=(await mn(await t.store())).filter((u)=>u.targets.some((c)=>c.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 O("cancelled");await yd(await t.store(),o),R(t,n,{id:o,removed:!0},()=>`${o} removed`)}},BE={usage:"credentials refresh <id>",summary:"Force an OAuth token refresh now",async run(e,{ctx:t,writer:n}){let r=U(e,0,"credential id"),o=await t.store(),i=await Cl(t,r),s=Qr({store:o,providers:Object.hasOwn(M,i.provider)?bt:(await jn(t.root.root)).providers,http:Dn(),now:t.now});X(t,n,`refreshing ${i.provider} credential ${r}\u2026`);let a=await gd({store:o,refresh:s},r);R(t,n,{id:r,expiresAt:a.expiresAt},()=>`${r} refreshed; expires ${oe(a.expiresAt)}`)}},zE={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=U(e,0,"provider"),i=Object.hasOwn(M,o),{descriptors:s,failures:a}=i?{descriptors:M,failures:[]}:await Xt(t.root.root),u=(y)=>Object.hasOwn(s,y);if(!u(o)){let y=a.map((_)=>`
1717
- plugin ${_.id}: ${_.reason}`).join("");throw new I(`provider must be one of ${Gc.join(", ")}, or a plugin that loads and supplies one; omni plugin list shows which${y}`)}for(let y of a)X(t,n,S(t,"yellow",`plugin ${y.id}: ${y.reason}`));let c=A(e.values,"protocol"),d=c==="chat-completions"?"chat_completions":c==="responses"?"responses":c,p=await r.secret(`${o} API key: `);if(p.length===0)throw new O("no API key given");let l=await t.store(),m=A(e.values,"endpoint-id"),g=o==="custom"&&m!==void 0?(await Qe(l)).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 fd(l,{provider:o,apiKey:p,label:A(e.values,"label"),endpointId:m,endpointLabel:A(e.values,"endpoint-label")??g?.providerData.endpointLabel,origin:A(e.values,"origin")??h,protocol:d??g?.providerData.protocol},void 0,u);R(t,n,{id:f.id,provider:f.provider,pluginFailures:a},()=>`stored ${f.provider} api key as ${f.id}`)}},qE={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([hd({store:r,now:t.now}),Qe(r)]),a=new Map(s.map((c)=>[c.id,c.label])),u=L(e.values,"all")?o:o.filter((c)=>c.breakerState!=="closed"||c.consecutiveFailures>0);R(t,n,{health:o,lastUsed:i},()=>{if(u.length===0)return"every credential is healthy";return j([{header:"CREDENTIAL"},{header:"MODEL"},{header:"BREAKER"},{header:"FAILS",align:"right"},{header:"LAST USED"}],u.map((c)=>[a.get(c.credentialId)??c.credentialId,c.model,Z(t,c.breakerState==="closed",c.breakerState),String(c.consecutiveFailures),S(t,"dim",oe(i[c.credentialId]??null))]))})}};import{existsSync as JL}from"fs";function Pl(e){try{let t=new URL(e);if(t.password!=="")t.password="***";return t.toString()}catch{return e}}async function Zn(e){return{store:await e.ctx.store(),fs:el(),now:e.ctx.now}}var WE={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=A(e.values,"to");if(i!==void 0){if(!i.startsWith("postgres"))throw new O("--to must be a postgres:// URL");if((await bn(t.service())).running)throw new O("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 ${Pl(i)}?`))throw new O("cancelled");let c=await n.store(),d=await pi({url:i,encryptionKey:await Bo(n.config().encryptionKey),dayOffsetMinutes:n.config().dayOffsetMinutes});try{let p=await sd(c,d);R(n,r,{target:Pl(i),...p},()=>[q([["target",Pl(i)],...Object.entries(p.counts).map(([l,m])=>[l,String(m)])]),"","not carried:",...p.notCarried.map((l)=>` - ${l}`),"","next: set OMNI_DATABASE_URL and OMNI_REDIS_URL on every replica and start them."].join(`
1718
- `))}finally{d.close()}return}let s=JL(n.databasePath);await(await n.store()).config.getSettings(),R(n,r,{path:n.databasePath,created:!s},()=>q([["database",n.databasePath],["schema",s?"up to date":"created"]]))}},jE={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 Td(await Zn(t)),i=j([{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"?q([["database",o.location],["size",ce(o.logicalBytes)],["captured bodies",`${ce(o.bodiesBytes)} (request_bodies table)`],["schema version",String(o.stats.schemaVersion)]]):q([["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)]]);R(n,r,o,()=>`${s}
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}`)}},KE={usage:"db snapshots",summary:"List the snapshots held for this installation",async run(e,t){let{ctx:n,writer:r}=t,o=await Zn(t),i=Kr(o);R(n,r,{snapshots:i},()=>{if(i.length===0)return`no snapshots in ${pn(o)}; take one with omni db backup`;return j([{header:"ID"},{header:"TAKEN"},{header:"SIZE",align:"right"},{header:"REASON"}],i.map((s)=>[s.id,oe(s.createdAt),ce(s.sizeBytes),s.reason]))})}},GE={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 _d(await Zn(t),{reason:"manual"});R(n,r,o,()=>(X(n,r,"a snapshot carries encrypted credentials and key hashes; captured bodies are not in it"),q([["snapshot",o.id],["size",ce(o.sizeBytes)],["taken",oe(o.createdAt)]])))}},ZE={usage:"db vacuum",summary:"Rewrite the database, reclaiming the pages deletion left free",async run(e,t){let{ctx:n,writer:r}=t;X(n,r,"compacting; the gateway's writes will block until this finishes\u2026");let o=await vd(await Zn(t));R(n,r,o,()=>q([["reclaimed",ce(o.reclaimedBytes)],["took",`${o.durationMs} ms`]]))}},XE={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 O("cancelled");let i=await Ed(await Zn(t));R(n,r,i,()=>q([["removed",String(i.removed)],["orphaned files removed",String(i.orphans)]]))}};function HE(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=j([{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}
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 VE={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=U(e,0,"snapshot id"),s=await bn(t.service());if(s.running){let d=s.pid===null?s.supervisor:`${s.supervisor}, pid ${s.pid}`;throw new O(`a gateway is running (${d}) against this installation; run omni stop first, or restore from the dashboard, which swaps the file behind its own quiesce latch`)}let a=await Zn(t),u=await bd(a,i);if(L(e.values,"dry-run")){R(n,r,{id:i,...u},()=>HE(u));return}if(r.err(HE(u)),!await o.confirm(`replace ${n.databasePath} with ${i}?`))throw new O("cancelled");let c=await kd(a,i);R(n,r,c,()=>q([["restored",i],["undo",c.preRestoreSnapshot.id],...Object.entries(c.counts).map(([d,p])=>[d,String(p)])]))}};var Ll=new Set(["requests","tokens","spend"]),QE="concurrency",Il="models";function Nl(){return{scope:{},models:Object.create(null)}}function rv(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,[Il]:n}}var YE="__proto__";function kt(e,t){if(t===YE)throw new I(`${e} cannot name "${YE}"`)}function ov(e,t,n={}){let r=n;for(let o of e){let i=o.indexOf("=");if(i<=0)throw new I(`${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 I(`${t} ${s} must be a number, got "${a}"`);let c=s.indexOf(":");if(c<0){if(Ll.has(s))throw new I(`${t} ${s} needs a window, e.g. ${t} ${s}:1m=60`);kt(t,s),JE(t,s),r[s]=u;continue}let d=s.slice(0,c),p=s.slice(c+1);if(d.length===0||p.length===0)throw new I(`${t} must be dimension:window=value, got "${o}"`);kt(t,d),kt(t,p),JE(t,d),iv(r,d,p,u)}return r}function JE(e,t){if(t===Il)throw new I(`${e} cannot name "${Il}"; per-model limits use --model-limit`)}function iv(e,t,n,r){let o=e[t],i=typeof o==="object"?o:{};i[n]=r,e[t]=i}function sv(e,t,n){let r=()=>new I(`${t} must be ${n}, got "${e}"`),o=e.lastIndexOf(":");if(o<0)throw r();let i=e.slice(o+1);if(i===QE){let d=e.slice(0,o);if(d.length===0)throw r();return kt(t,d),{model:d,dimension:QE,window:null}}if(Ll.has(i))throw new I(`${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),c=s.slice(a+1);if(u.length===0||c.length===0||i.length===0)throw r();return kt(t,u),kt(t,c),kt(t,i),{model:u,dimension:c,window:i}}var ev="model:dimension:window=value or model:concurrency=value";function av(e,t){for(let r of e){let o=r.lastIndexOf("=");if(o<=0)throw new I(`--model-limit must be ${ev}, 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 I(`--model-limit ${i} must be a number, got "${s}"`);let{model:u,dimension:c,window:d}=sv(i,"--model-limit",ev),p=t.models[u]??{};if(d===null)p[c]=a;else iv(p,c,d,a);t.models[u]=p}}function eN(e,t){for(let r of t){if(r.includes("="))throw new I(`--unset-model-limit names a limit to remove, not a value, got "${r}"`);let{model:o,dimension:i,window:s}=sv(r,"--unset-model-limit","model:dimension:window or model:concurrency"),a=e.models[o],u=()=>new I(`this key has no ${r} limit`);if(a===void 0||!Object.hasOwn(a,i))throw u();if(s===null)delete a[i];else{let c=a[i];if(typeof c!=="object"||!Object.hasOwn(c,s))throw u();if(delete c[s],Object.keys(c).length===0)delete a[i]}if(Object.keys(a).length===0)delete e.models[o]}}function tN(e){let t=Nl();t.scope=tv(e);for(let[n,r]of Object.entries(e.models??{})){let o=tv(r);if(Object.keys(o).length>0)t.models[n]=o}return t}function tv(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 nN(e,t){for(let n of t){if(n.includes("="))throw new I(`--unset names a limit to remove, not a value, got "${n}"`);let r=n.indexOf(":");if(r<0){if(Ll.has(n))throw new I(`--unset ${n} needs a window, e.g. --unset ${n}:1m`);if(kt("--unset",n),e[n]===void 0)throw new I(`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 I(`--unset must be dimension:window, got "${n}"`);kt("--unset",o),kt("--unset",i);let s=e[o];if(typeof s!=="object"||s[i]===void 0)throw new I(`this key has no ${n} limit`);if(delete s[i],Object.keys(s).length===0)delete e[o]}}function rN(e){let t=e.dimension==="spend",n=(r)=>t?Xn(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 oN(e){let t=nv(e,"");for(let[n,r]of Object.entries(e.models??{}))t.push(...nv(r,`${n}:`));return t.length===0?"\u2014":t.join(" ")}function nv(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 uv(e,t){let n=Date.parse(t);if(!Number.isFinite(n))throw new I(`${e} must be a date, e.g. 2030-01-01, got "${t}"`);return n}function cv(e,t){if(e.revokedAt!==null)return"revoked";return wr(e,t)?"active":"expired"}var dv={usage:"keys list",summary:"List gateway API keys",async run(e,{ctx:t,writer:n}){let r=await jt(await t.store()),o=Date.now();R(t,n,{keys:r},()=>{if(r.length===0)return"no api keys; create one with: omni keys create";return j([{header:"ID"},{header:"LABEL"},{header:"PREFIX"},{header:"MODELS"},{header:"LIMITS"},{header:"BODY CAPTURE"},{header:"POLICY"},{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?S(t,"red","unreadable"):oN(i.limits),i.bodyLoggingOptOut?"no bodies":"\u2014",i.guardrailPolicy===null?"no":"yes",((s)=>Z(t,s==="active",s))(cv(i,o)),oe(i.expiresAt),oe(i.createdAt)]))})}},lv={usage:"keys create [--label L] [--allow <model> ...] [--limit <d>:<w>=N ...] [--model-limit <model>:<d>:<w>=N ...] [--expires <when>] [--policy <text>] [--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"},"no-bodies":{type:"boolean"}},async run(e,{ctx:t,writer:n}){let r=Pe(e.values,"allow"),o=A(e.values,"policy"),i=A(e.values,"expires"),s=Nl();ov(Pe(e.values,"limit")??[],"--limit",s.scope),av(Pe(e.values,"model-limit")??[],s);let a=await xd(await t.store(),{...A(e.values,"label")===void 0?{}:{label:A(e.values,"label")},modelAllowlist:r??null,limits:rv(s),bodyLoggingOptOut:L(e.values,"no-bodies"),expiresAt:i===void 0?null:uv("--expires",i),guardrailPolicy:o??null});R(t,n,a,()=>(X(t,n,S(t,"yellow","this key is shown once and stored only as a hash")),`${a.key}`))}},pv={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=U(e,0,"key id"),o=[...Pe(e.values,"set")??[],...Pe(e.values,"model-limit")??[]],i=[...Pe(e.values,"unset")??[],...Pe(e.values,"unset-model-limit")??[]],s=await t.store(),a=(await jt(s)).find((d)=>d.id===r);if(a===void 0)throw new O(`no api key "${r}"`);let u=a,c=!1;if(o.length>0||i.length>0){if(a.limits===null){if(i.length>0)throw new O(`the stored limits for "${r}" cannot be read, so there is nothing to unset; replace them with --set instead`);c=!0,X(t,n,S(t,"yellow","the stored limits could not be read and are being replaced"))}let d=a.limits===null?Nl():tN(a.limits);nN(d.scope,Pe(e.values,"unset")??[]),eN(d,Pe(e.values,"unset-model-limit")??[]),ov(Pe(e.values,"set")??[],"--set",d.scope),av(Pe(e.values,"model-limit")??[],d),u=await Ad(s,r,{limits:rv(d)})}R(t,n,c?{...u,limitsReplaced:!0}:u,()=>{let d=q([["id",u.id],["label",u.label],["prefix",`${u.prefix}\u2026`]]);if(u.limits===null)return`${d}
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
- ${S(t,"red","limits unreadable")}: this key is refused at /v1 until they are replaced with --set`;if(u.limitUsage.length===0)return`${d}
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`${d}
1754
+ no limits configured; this key is unlimited`;return`${c}
1727
1755
 
1728
- ${j([{header:"SCOPE"},{header:"DIMENSION"},{header:"WINDOW"},{header:"LIMIT",align:"right"},{header:"USED",align:"right"},{header:"USE%",align:"right"}],u.limitUsage.map(rN))}
1729
- ${S(t,"dim","usage is counted from completed requests still inside each window")}`})}},mv={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=U(e,0,"key id"),o=A(e.values,"at"),i=L(e.values,"never"),s=await t.store(),a=(await jt(s)).find((c)=>c.id===r);if(a===void 0)throw new O(`no api key "${r}"`);let u=a;if(i||o!==void 0){if(i&&o!==void 0)throw new I("--at and --never cannot be combined");let c=i?null:uv("--at",o);u=await Cd(s,r,{expiresAt:c})}R(t,n,u,()=>{let c=q([["id",u.id],["label",u.label],["prefix",`${u.prefix}\u2026`]]);if(u.expiresAt===null)return`${c}
1730
- expires: never`;let d=cv(u,Date.now());return`${c}
1731
- expires: ${oe(u.expiresAt)}${d==="expired"?` ${S(t,"red","(expired)")}`:""}`})}},fv={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=U(e,0,"key id"),o=A(e.values,"policy"),i=A(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 I("pass one of --policy, --policy-file or --clear");let u=await t.store(),c=(await jt(u)).find((p)=>p.id===r);if(c===void 0)throw new O(`no api key "${r}"`);let d=c;if(a===1){let p=s?null:i!==void 0?await Bun.file(i).text().catch(()=>{throw new O(`could not read ${i}`)}):o;d=await Pd(u,r,{policy:p})}R(t,n,d,()=>{let p=q([["id",d.id],["label",d.label],["prefix",`${d.prefix}\u2026`]]);if(d.guardrailPolicy===null)return`${p}
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
- ${d.guardrailPolicy}`})}},gv={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=U(e,0,"key id"),s=(await jt(await t.store())).find((a)=>a.id===o);if(s===void 0)throw new O(`no api key "${o}"`);if(!await r.confirm(`revoke key "${s.label}" (${s.prefix}\u2026)?`))throw new O("cancelled");await Id(await t.store(),o),R(t,n,{id:o,revoked:!0},()=>`${o} revoked`)}},hv={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=U(e,0,"key id"),o=Pe(e.values,"allow"),i=L(e.values,"all"),s=L(e.values,"none"),a=await t.store(),u=(await jt(a)).find((d)=>d.id===r);if(u===void 0)throw new O(`no api key "${r}"`);let c=u;if(i||s||o!==void 0){if([i,s,o!==void 0].filter(Boolean).length>1)throw new I("--all, --none, and --allow cannot be combined");c=await Od(a,r,{modelAllowlist:i?null:s?[]:o??[]})}R(t,n,c,()=>{let d=q([["id",c.id],["label",c.label],["prefix",`${c.prefix}\u2026`]]),p=c.modelAllowlist===null?"every model":c.modelAllowlist.length===0?"no models; every request this key makes is refused":c.modelAllowlist.join(", ");return`${d}
1735
- models: ${p}`})}};var yv={usage:"models list",summary:"List virtual models and their targets",async run(e,{ctx:t,writer:n}){let r=await mn(await t.store());R(t,n,{models:r},()=>{if(r.length===0)return"no virtual models configured";return j([{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)=>Ie(t,i)).join(" ")]))})}},_v={usage:"models show <id>",summary:"Show one virtual model's targets and pricing",async run(e,{ctx:t,writer:n}){let r=U(e,0,"model id"),o=await xs(await t.store(),r),i=o.targets.some((s)=>s.credentialId!==void 0);R(t,n,{model:o},()=>[q([["id",o.id],["strategy",o.strategy],["alias",o.isAlias?"yes":"no"]]),"",j([{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)=>[Ie(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),Yt(s.costPerMTok.cacheRead),Yt(s.costPerMTok.cacheWrite5m),Yt(s.costPerMTok.cacheWrite1h),ro(s.contextWindow),ro(s.maxOutputTokens),iN(s)]))].join(`
1736
- `))}};function Yt(e){return e===void 0?"\u2014":e.toFixed(2)}function ro(e){return e===void 0?"\u2014":e.toLocaleString("en-US")}function iN(e){let t=Object.entries(e.capabilities).filter(([,n])=>n).map(([n])=>n);return t.length===0?"\u2014":t.join(",")}function sN(e,t){let n=e.indexOf(":");if(n<=0)throw new I(`--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 I(`unknown provider "${r}" in "${e}"`);let s=Bi(i.catalog,o);if(s===null)throw new I(`no catalog entry for "${e}"; see omni models catalog`);return{provider:r,model:o,tier:1,weight:1,costPerMTok:s,capabilities:i.capabilities}}function aN(e){return Object.entries(e).flatMap(([t,n])=>n.catalog.models.map((r)=>({...r,provider:t})))}var wv={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=A(e.values,"provider"),{descriptors:o}=await Xt(t.root.root),i=aN(o).filter((s)=>r===void 0||s.provider===r);R(t,n,{models:i},()=>j([{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=zi(s),c=zi(s,"oauth");return[Ie(t,s.provider),s.id,s.label,Yt(a?.input),Yt(a?.output),Yt(a?.cacheRead),Yt(a?.cacheWrite5m),Yt(a?.cacheWrite1h),ro(u?.contextWindow),c?.contextWindow===u?.contextWindow?"\u2014":ro(c?.contextWindow),ro(u?.maxOutputTokens)]})))}},bv={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=U(e,0,"model id"),o=A(e.values,"file"),i=Pe(e.values,"from-catalog");if(o!==void 0&&i!==void 0)throw new I("pass either -f or --from-catalog, not both");let s;if(o!==void 0){let a=await Bun.file(o).text().catch(()=>{throw new O(`could not read ${o}`)});try{s=JSON.parse(a)}catch{throw new O(`${o} is not valid JSON`)}}else if(i!==void 0){let{descriptors:a}=await Xt(t.root.root);s={id:r,strategy:A(e.values,"strategy")??"score",isAlias:L(e.values,"alias"),targets:i.map((c)=>sN(c,a))}}else throw new I("pass -f <file> or --from-catalog <provider>:<model>");await qd(await t.store(),r,s),R(t,n,{id:r,ok:!0},()=>`${r} saved`)}},kv={usage:"models rm <id>",summary:"Delete a virtual model",async run(e,{ctx:t,writer:n,prompt:r}){let o=U(e,0,"model id");if(await xs(await t.store(),o),!await r.confirm(`delete virtual model "${o}"?`))throw new O("cancelled");await Hd(await t.store(),o),R(t,n,{id:o,removed:!0},()=>`${o} removed`)}},Ev={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=U(e,0,"model id"),{descriptors:o,failures:i}=await Xt(t.root.root),s=await Rd({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)X(t,n,S(t,"yellow",`plugin ${a.id}: ${a.reason}`));R(t,n,{...s,pluginFailures:i},()=>{let a=q([["model",s.modelId],["strategy",s.strategy],["deterministic",s.deterministic?"yes":"no (weighted draw)"]]),u=s.candidates.length===0?Z(t,!1,"no candidate can serve this request"):j([{header:"#",align:"right"},{header:"CREDENTIAL"},{header:"PROVIDER"},{header:"MODEL"},{header:"TIER",align:"right"},{header:"SCORE",align:"right"}],s.candidates.map((d,p)=>[String(p+1),d.credentialLabel,Ie(t,d.provider),d.model,String(d.tier),d.score.toFixed(3)])),c=s.excluded.length===0?"":`
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
- ${S(t,"dim","excluded")}
1739
- ${j([{header:"CREDENTIAL"},{header:"MODEL"},{header:"REASON"}],s.excluded.map((d)=>[d.credentialId,d.model,d.reason]))}`;return`${a}
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}${c}`})}};var vv={fiveHour:0,daily:1,weekly:2},Dl={fiveHour:"5h",daily:"24h",weekly:"7d"};function Ul(e,t){return vv[e.windowType]-vv[t.windowType]}var Tv=(e,t)=>`${e}|${t}`,js=(e,t)=>e.get(Tv(t.credentialId,t.windowType));async function Ml(e,t,n){let r=await Wn(e),o=Wr(n,{now:t(),pollIntervalMs:r.quotaPollIntervalMs});return new Map(o.map((i)=>[Tv(i.credentialId,i.windowType),i]))}function $l(e,t,n){let r=sy(e,t);if(r!=="empty")return{kind:r};return{kind:r,inMs:(t?.exhaustsAt??n)-n}}function Rv(e){if(e.kind==="empty")return`~${io(e.inMs)}`;return e.kind==="ok"?"ok":""}var Jt="\u2014";function uN(e,t){let n=t?.ratePerHour??null;if(n===null)return Jt;return e.limit===null||e.limit<=0?`${n.toFixed(1)}/h`:`${(n/e.limit*100).toFixed(1)}%/h`}var Sv={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 jr(r,{now:t.now}),s=i.flatMap((d)=>d.quota),a=await Ml(r,t.now,s),u=t.json?await al({store:r,now:t.now},{}):{samples:[],gatewayRates:[]},c={credentials:i.map((d)=>({id:d.id,provider:d.provider,label:d.label,windows:d.quota})),burn:[...a.values()],samples:u.samples,gatewayRates:u.gatewayRates};R(t,n,c,()=>{if(i.length===0)return"no credentials; add one with: omni connect <provider>";let d=i.flatMap((p)=>{let l=`${Ie(t,p.provider)}:${p.label}`,m=[...p.quota].sort(Ul);if(m.length===0){let g=S(t,"dim","unknown");return[[l,Jt,g,Jt,g,Jt]]}return m.map((g)=>{let h=$l(g,js(a,g),o),f=h.kind==="empty"?`empty ~${io(h.inMs)}`:h.kind==="ok"?"ok":S(t,"dim",h.kind);return[l,Dl[g.windowType],`${g.used}/${g.limit??Jt}`,uN(g,js(a,g)),f,g.resetsAt===null?Jt:io(g.resetsAt-o)]})});return j([{header:"ACCOUNT"},{header:"WINDOW"},{header:"USED",align:"right"},{header:"RATE",align:"right"},{header:"ESTIMATE"},{header:"RESETS",align:"right"}],d)})}},cN={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 dN(e){return e.kind==="failed"||e.kind==="cooldown"}var xv={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 I("give an account id or --all, not both");let i=await t.store(),s=await Qe(i),a=o===void 0?s:s.filter((l)=>l.id===o),u=await Fl(t,a);X(t,n,o===void 0?"refreshing every account\u2026":`refreshing ${o}\u2026`);let c=await u.refresh(o===void 0?{kind:"all"}:{kind:"one",credentialId:o}),d=new Map(s.map((l)=>[l.id,l.label]));R(t,n,c,()=>{let l=c.outcomes.map((f)=>[`${d.get(f.credentialId)??f.credentialId}`,cN[f.kind],f.kind==="refreshed"||f.kind==="coalesced"?`${f.windows} window${f.windows===1?"":"s"}`:f.kind==="failed"?f.code:Jt]),m=c.outcomes.filter((f)=>f.kind==="refreshed"||f.kind==="coalesced").length,g=c.outcomes.filter((f)=>f.kind==="failed").length,h=c.outcomes.length-m-g;return[j([{header:"ACCOUNT"},{header:"OUTCOME"},{header:"DETAIL",align:"right"}],l),"",`refreshed ${m}; failed ${g}; skipped ${h}`].join(`
1742
- `)});let p=c.outcomes.filter(dN);if(p.length>0)throw new O(p.length===c.outcomes.length?"quota refresh did not run":`quota refresh did not run for ${p.length} of ${c.outcomes.length} accounts`)}};async function Fl(e,t){let n=await e.store(),r=t.every((i)=>Object.hasOwn(M,i.provider))?bt:(await jn(e.root.root)).providers,o=Dn();return fl({store:n,coord:Mt({now:e.now}),providers:r,http:o,refresh:Qr({store:n,providers:r,http:o,now:e.now}),now:e.now})}var Av={usage:"quota resets <id>",summary:"List an account's banked quota resets (Codex, Claude)",async run(e,{ctx:t,writer:n}){let r=U(e,0,"credential id"),o=(await Qe(await t.store())).filter((s)=>s.id===r),i=await(await Fl(t,o)).resetCredits(r);R(t,n,i,()=>[j([{header:"CREDIT"},{header:"STATUS"},{header:"TITLE"},{header:"EXPIRES"}],i.credits.map((s)=>[s.id,s.status,s.title??Jt,oe(s.expiresAt)])),"",`${i.available} available`].join(`
1743
- `))}},Ov={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=U(e,0,"credential id"),i=A(e.values,"credit"),s=(await Qe(await t.store())).filter((p)=>p.id===o),a=s[0]?.label??o,u=await Fl(t,s),c=s[0]?.provider;if(c===void 0)throw new O("no such credential");if(!u.hasResets(c))throw new O("this account's provider has no quota resets");if(!await r.confirm(`spend one banked quota reset on "${a}" (${o})?`))throw new O("cancelled");let d=await u.redeemReset({credentialId:o,...i===void 0?{}:{creditId:i}});R(t,n,d,()=>`${a}: reset ${d.creditId} redeemed`+(d.windowsReset===null?"":`, ${d.windowsReset} window(s) reset`)+(d.quotaRefreshed?"; quota re-read":"; quota re-read failed, next poll will update it"))}};import{existsSync as kn}from"fs";import{closeSync as lN,existsSync as pN,openSync as mN}from"fs";import{join as Bl}from"path";var fN=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}},gN=({argv:e,cwd:t,env:n,logFile:r})=>{let o=mN(r,"a");try{let i=Bun.spawn([...e],{cwd:t,env:n,stdin:"ignore",stdout:o,stderr:o});return i.unref(),i.pid}finally{lN(o)}};async function Cv(e){return Bun.spawn([...e.argv],{cwd:e.cwd,env:e.env,stdin:"inherit",stdout:"inherit",stderr:"inherit"}).exited}var hN=1000;async function yN(e){try{return(await fetch(new URL("/health",e),{signal:AbortSignal.timeout(hN)})).ok}catch{return!1}}function _N(e){try{return process.kill(e,0),!0}catch{return!1}}function Ks(e,t=import.meta.dir){return[Bl(e,"apps","gateway","src","index.ts"),Bl(t,"..","gateway.js"),Bl(t,"gateway.js")].find((r)=>pN(r))??null}function Pv(e){let t=e.env.OMNI_LOG_FILE?.trim();return{root:e.root,stateDir:SE(e.env),scope:e.scope,unitPath:RE(e.scope),...t===void 0||t.length===0?{}:{logFile:t},run:fN,spawn:gN,probe:yN,alive:_N,kill:(n,r)=>{process.kill(n,r)},sleep:(n)=>Bun.sleep(n),now:e.now}}var oo="0.15.2";function zl(e){let t=Ks(e);if(t===null)throw new O(`no gateway to run: ${e} is not an OmniGateway checkout, and no bundled server was found beside this CLI`);return[process.execPath,t]}var Iv={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:zl(i.root),cwd:i.root,env:t.env});if(u!==0)throw new O(`gateway exited with code ${u}`,3);return}X(t,n,`starting gateway at ${s}\u2026`);let a=await xl(i,{argv:zl(i.root),env:t.env,baseUrl:s});if(R(t,n,a,()=>{let u=a.supervisor==="systemd"?"systemd":`pid ${a.pid}`;if(!a.healthy){let c=a.supervisor==="systemd"?"journalctl -u omnigateway.service":Gn(i);return`${Z(t,!1,"started but /health never answered")} (${u}); see ${c}`}return`${Z(t,!0,"running")} (${u}) at ${s}`}),!a.healthy)throw new O("gateway did not become healthy",3)}},Lv={usage:"stop",summary:"Stop the gateway",async run(e,{ctx:t,writer:n,service:r}){let o=await Al(r());R(t,n,o,()=>o.stopped?"stopped":"nothing to stop: the gateway is not running")}},Nv={usage:"restart",summary:"Stop the gateway, then start it again",async run(e,{ctx:t,writer:n,service:r}){let o=r();await Al(o);let i=await xl(o,{argv:zl(o.root),env:t.env,baseUrl:t.config().baseUrl});if(R(t,n,i,()=>i.healthy?"restarted":Z(t,!1,"restarted but /health never answered")),!i.healthy)throw new O("gateway did not become healthy",3)}},Dv={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=Ks(o.root);if(i===null)throw new O(`no gateway to run for ${o.root}`);let s=await xE(o,{bun:process.execPath,entrypoint:i,enable:L(e.values,"enable"),force:L(e.values,"force")});R(t,n,s,()=>q([["unit",s.path],["scope",o.scope],["daemon-reload",s.reloaded?"ok":"failed"],["enabled at boot",s.enabled?"yes":"no"]]))}},Uv={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 O("cancelled");let s=await AE(i);R(t,n,s,()=>s.removed?`removed ${s.path}`:`no unit at ${s.path}`)}};async function wN(e){if(e.configError!==null||!kn(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 bN(e){if(e.configError!==null||!kn(e.databasePath))return null;try{return await Yd(to(),e.root.root,await e.store())}catch{return null}}async function kN(e){if(e.configError!==null||!kn(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&&Pn(o,n)===void 0).map((o)=>`${r.id}/${o.model} \u2192 ${o.credentialId}`))}catch{return null}}async function EN(e,t){if(e.configError!==null||!kn(e.databasePath))return null;try{return(await(await e.store()).config.listModels()).flatMap((r)=>r.targets.filter((o)=>!El(o.provider,t)).map((o)=>`${r.id}/${o.model} \u2192 ${o.provider}`))}catch{return null}}async function vN(e,t){if(e.configError!==null||!kn(e.databasePath))return null;try{return(await(await e.store()).credentials.list()).filter((r)=>!El(r.provider,t)).map((r)=>`${r.label} \u2192 ${r.provider}`)}catch{return null}}async function TN(e){if(e.configError!==null||!kn(e.databasePath))return null;try{return await Sd(await e.store(),M)}catch{return null}}function RN(e,t,n){if(t===null)return S(e,"dim","not checked");let{keysWithPolicy:r,model:o,problem:i}=t;if(r===0)return S(e,"dim","no key carries one");let s=`${r} key${r===1?"":"s"}`;if(i==="unconfigured")return S(e,"yellow",`${s} carry a policy and no classifier is set (guardrailModel); their requests are refused`);if(i==="unresolved")return n.length>0?S(e,"yellow",`${s} carry a policy; classifier "${o}" is not a built-in model (plugin providers not checked)`):S(e,"yellow",`${s} carry a policy and classifier "${o}" does not resolve; their requests are refused`);return Z(e,!0,`${s}, judged by ${o}`)}var Mv={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=wn(o),a=await bn(o),u=await wN(t),c=Gt(to(),o.root),d=await bN(t),p=await kN(t),l=await EN(t,c),m=await vN(t,c),g=await TN(t),h={version:oo,root:o.root,rootSource:t.root.source,envFile:t.root.envFile,databasePath:t.databasePath,databaseExists:kn(t.databasePath),encryptionKey:typeof i==="string"?`present (${i.length} chars)`:"missing",configError:t.configError,gatewayEntrypoint:Ks(o.root),usageRollup:u,unitInstalled:s,supervisor:a.supervisor,running:a.running,consoleSource:no(o).source,pluginsDir:Ce(o.root),plugins:c,orphanPluginTables:d,danglingPins:p,missingProviders:l,danglingCredentials:m,guardrail:g,warnings:t.warnings};R(t,n,h,()=>{let f=(y,_)=>Z(t,y,_);return`omni ${oo}
1744
- ${q([["root",`${h.root} ${S(t,"dim",`(from ${h.rootSource})`)}`],["env file",h.envFile??S(t,"dim","none")],["database",`${h.databasePath} ${f(h.databaseExists,h.databaseExists?"exists":"missing")}`],["encryption key",h.encryptionKey],["config",h.configError===null?f(!0,"ok"):f(!1,h.configError)],["entrypoint",h.gatewayEntrypoint??f(!1,"not found")],["usage rollup",h.usageRollup===null?S(t,"dim","not checked"):f(h.usageRollup.startsWith("ok"),h.usageRollup)],["systemd unit",s?o.scope:S(t,"dim","none")],["gateway",f(a.running,a.running?"running":"stopped")],["console log",Ws(h.consoleSource)],...c.length===0?[["plugins",S(t,"dim","none")]]:hE(t,c).map((y,_)=>[_===0?"plugins":"",y]),["orphan plugin tables",d===null?S(t,"dim","not checked"):d.length===0?f(!0,"none"):S(t,"yellow",`${d.length}: ${d.join(", ")}`)],["dangling pins",p===null?S(t,"dim","not checked"):p.length===0?f(!0,"none"):S(t,"yellow",`${p.length}: ${p.join(", ")}`)],["missing providers",l===null?S(t,"dim","not checked"):l.length===0?f(!0,"none"):S(t,"yellow",`${l.length}: ${l.join(", ")}`)],["stranded credentials",m===null?S(t,"dim","not checked"):m.length===0?f(!0,"none"):S(t,"yellow",`${m.length}: ${m.join(", ")}`)],["usage policies",RN(t,g,c)],...h.warnings.map((y)=>["ignored",S(t,"yellow",y)])])}`})}};function SN(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 $v={usage:"settings get",summary:"Show routing and retention settings",async run(e,{ctx:t,writer:n}){let r=await Wn(await t.store());R(t,n,{settings:r},()=>q(SN(r)))}};function Gs(e,t){return Object.hasOwn(e,t)}function xN(e,t,n){if(!Gs(e,t))return;let r=e[t];if(n===void 0)return r;if(r===null||typeof r!=="object")return;if(!Gs(r,n))return;return r[n]}function AN(e,t){let n=t.trim().length===0?Number.NaN:Number(t);if(!Number.isFinite(n))throw new I(`${e} must be a number, got "${t}"`);return n}function ON(e,t){let n=t.trim().toLowerCase();if(n==="true")return!0;if(n==="false")return!1;throw new I(`${e} must be true or false, got "${t}"`)}function Fv(e,t){let n=t.trim();if(n.length===0)throw new I(`${e} must not be blank`);return n}function CN(e,t){return t.trim()==="null"?null:Fv(e,t)}function PN(e){return Gs(ye,e)&&ye[e]===null}var Bv={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=U(e,0,"setting path"),o=U(e,1,"value"),i=await t.store(),s=await Wn(i),[a,u]=r.split(".");if(a===void 0||!Gs(s,a))throw new I(`no setting "${r}"`);if(u!==void 0&&a!=="weights")throw new I(`"${a}" has no sub-settings`);let c=xN(s,a,u),d=u===void 0&&PN(a)?CN(r,o):typeof c==="boolean"?ON(r,o):typeof c==="string"?Fv(r,o):AN(r,o),p=u===void 0?{...s,[a]:d}:{...s,weights:{...s.weights,[u]:d}},l=await gl(i,p);R(t,n,{settings:l},()=>`${r} = ${d}`)}};import{join as ql}from"path";var zv={dir:{type:"string"},key:{type:"string"},"dry-run":{type:"boolean"}};async function qv(e,t){let{descriptors:n,failures:r}=await Xt(e.root.root);for(let i of r)X(e,t,S(e,"yellow",`plugin ${i.id}: ${i.reason}`));let o=await yl(await e.store(),n);if(o.length===0)throw new O("no virtual models configured; add one with `omni models put`");return{models:o,failures:r}}function Hv(e){if(e.configError!==null)throw new O(e.configError);return e.config().baseUrl}function Wv(e,t,n,r,o,i,s=[]){if(!r)for(let a of n)i(a.path,a.contents);if(R(e,t,{files:n,pluginFailures:s},()=>r?n.map((a)=>`--- ${a.path}
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)X(e,t,"no --key given: the files carry a placeholder, so paste your key over it")}function jv(e,t){return{path:ql(e,t.path),contents:t.contents}}async function Kv(e,t){let n=e.map(({model:c})=>c.id).join(", ");if(t.input===void 0)throw new O("model mapping requires an interactive terminal");let r=async(c,d)=>{let p=await t.input?.(`${c} model${d?"":" (blank to omit)"} [${n}]: `);if(d&&p==="")throw new O("default model is required");return p===""?void 0:p},o=await r("Default",!0);if(o===void 0)throw new O("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 Gv={usage:"setup claude [--dir <path>] [--key <key>] [--dry-run]",summary:"Write Claude Code settings for this gateway",options:zv,async run(e,{ctx:t,writer:n,prompt:r,setupFs:o}){let{models:i,failures:s}=await qv(t,n),a=A(e.values,"dir")??ql(o.homeDir,".claude"),u=A(e.values,"key"),c=L(e.values,"dry-run"),d=await Kv(i,r),p=ql(a,"settings.json"),l=_l(i,{baseUrl:Hv(t),...u===void 0?{}:{apiKey:u}},d,o.read(p)??void 0);Wv(t,n,[jv(a,l)],c,u,o.write,s)}},Zv={usage:"setup opencode [--dir <path>] [--key <key>] [--dry-run]",summary:"Write an opencode.json provider entry for this gateway",options:zv,async run(e,{ctx:t,writer:n,prompt:r,setupFs:o}){let{models:i,failures:s}=await qv(t,n),a=A(e.values,"dir")??o.cwd,u=A(e.values,"key"),c=L(e.values,"dry-run"),d=await Kv(i,r),p=wl(i,{baseUrl:Hv(t),...u===void 0?{}:{apiKey:u}},d);Wv(t,n,[jv(a,p)],c,u,o.write,s)}};function IN(e){return e.filter((t)=>t.limit!==null&&t.limit>0).sort(Ul)}function LN(e,t,n,r){let o=IN(t);if(o.length===0)return S(e,"dim","unknown");let i=o.map((a)=>{let u=Math.round(a.used/a.limit*100),c=Z(e,u<90,`${Dl[a.windowType]} ${u}%`),d=Rv($l(a,js(r,a),n));return d.length===0?c:`${c} ${S(e,"dim",d)}`}),s=Math.min(...o.map((a)=>a.observedAt));return`${i.join(" \xB7 ")} ${S(e,"dim",`(${Gl(s,n)} ago)`)}`}var Xv={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 bn(r()),i=null,s=null;try{i=await t.store()}catch(l){s=H(l,"could not open the database")}let a=i===null?{adminConfigured:!1,credentials:[]}:await jr(i,{now:t.now}),{adminConfigured:u,credentials:c}=a,d=i===null?new Map:await Ml(i,t.now,c.flatMap((l)=>l.quota)),p={process:o,...a,storeError:s};R(t,n,p,()=>{let l=q([["gateway",Z(t,o.running,o.running?"running":"stopped")+S(t,"dim",` (${o.supervisor})`)],["root",t.root.root],["admin password",u?"set":Z(t,!1,"not set")]]);if(s!==null)return`${l}
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
- ${Z(t,!1,s)}`;if(c.length===0)return`${l}
1777
+ ${j(t,!1,s)}`;if(l.length===0)return`${d}
1750
1778
 
1751
- no credentials; add one with: omni connect <provider>`;let m=c.map((g)=>[g.label,Ie(t,g.provider),Z(t,g.enabled,g.enabled?"enabled":"disabled"),LN(t,g.quota,t.now(),d)]);return`${l}
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
- ${j([{header:"ACCOUNT"},{header:"PROVIDER"},{header:"STATE"},{header:"QUOTA"}],m)}`})}},Vv={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=Tr(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 O("the two passwords do not match")}try{await i.setPassword(s)}catch(a){throw new O(H(a,"could not set the password"))}X(t,n,"restart the gateway to end sessions signed in with the old password"),R(t,n,{ok:!0},()=>"admin password set")}};function Zs(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 I(`could not read "${e}" as a time`);return n}var Yv={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=Zs(A(e.values,"until"),t.now()),o=Zs(A(e.values,"since"),0),i=await Ld({store:await t.store(),now:t.now},{grain:A(e.values,"grain"),groupBy:A(e.values,"by"),splitBy:A(e.values,"split"),since:o,until:r,credentialId:A(e.values,"account"),apiKeyId:A(e.values,"key")});R(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 j([{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),Xn(a.costUsd)]))})}},Jv={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 eT(e){let t=A(e,"since"),n=A(e,"until");return{...t===void 0?{}:{since:Zs(t,0)},...n===void 0?{}:{until:Zs(n,0)},state:A(e,"state"),...L(e,"failed")?{failed:"true"}:{},provider:A(e,"provider"),model:A(e,"model"),requestedModel:A(e,"requested-model"),resolvedModel:A(e,"resolved-model"),credentialId:A(e,"account"),apiKeyId:A(e,"key"),errorCode:A(e,"error-code")}}var tT={usage:"logs [-n N] [--follow] [--cursor C] [filters] [--service]",summary:"Show recent requests (--service is an alias for `omni console`)",options:{...Jv,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=yn(e.values,"number")??20;if(L(e.values,"service")){let p=await OE(r(),o);R(t,n,{log:p},()=>p.length===0?"no service output yet":p);return}let i=await t.store(),s=eT(e.values),a=(p)=>j([{header:"AT"},{header:"MODEL"},{header:"RESOLVED"},{header:"STATUS",align:"right"},{header:"TOKENS",align:"right"},{header:"COST",align:"right"},{header:"MS",align:"right"}],p.map((l)=>[S(t,"dim",oe(l.at)),l.requestedModel,`${l.resolvedProvider}/${l.resolvedModel}`,Z(t,l.status<400,String(l.status)),`${l.inputTokens}+${l.outputTokens}`,Xn(l.costUsd),String(l.durationMs)])),u=await Ss(i,{...s,limit:o,cursor:A(e.values,"cursor")}),c=u.logs;if(R(t,n,{logs:c,nextCursor:u.nextCursor},()=>c.length===0?"no requests match":u.nextCursor===null?a(c):`${a(c)}
1754
- ${S(t,"dim",`older: --cursor ${u.nextCursor}`)}`),e.values.follow!==!0||t.json)return;let d=c[0]===void 0?null:Qv(c[0]);for(;;){await Bun.sleep(Ol);let p=d,{rows:l,skipped:m}=await NN((h)=>Ss(i,{...s,limit:o,cursor:h}),p);if(l.length===0)continue;let g=l[0];if(g!==void 0)d=Qv(g);if(m)n.out(S(t,"dim",`more than ${nT*o} requests arrived since the last poll; older ones are not shown`));n.out(a(l.reverse()))}}},Qv=(e)=>({at:e.at,id:e.id}),nT=10;async function NN(e,t){let n=[],r;for(let o=0;o<nT;o++){let i=await e(r);if(t===null)return{rows:i.logs,skipped:!1};let s=i.logs.filter((a)=>DN(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 DN=(e,t)=>e.at>t.at||e.at===t.at&&e.id>t.id,rT={usage:"logs export --since T --until T [--format csv|jsonl] [filters]",summary:"Write matching request metadata to stdout as CSV or JSONL",options:{...Jv,format:{type:"string"}},async run(e,{ctx:t,writer:n}){let r=await t.store();for await(let o of $d(r,{...eT(e.values),format:A(e.values,"format")??"csv"}))n.raw(o)}};var Xs={status:Xv,start:Iv,stop:Lv,restart:Nv,doctor:Mv,logs:tT,bodies:_E,console:PE,usage:Yv,quota:Sv,connect:wE,"logs export":rT,"service install":Dv,"service uninstall":Uv,"credentials list":LE,"credentials show":NE,"credentials enable":UE,"credentials disable":ME,"credentials set":$E,"credentials rm":FE,"credentials refresh":BE,"credentials add-key":zE,"credentials health":qE,"quota refresh":xv,"quota resets":Av,"quota reset":Ov,"models list":yv,"models show":_v,"models put":bv,"models rm":kv,"models dry-run":Ev,"models catalog":wv,"keys list":dv,"keys create":lv,"keys limits":pv,"keys models":hv,"keys expiry":mv,"keys guardrail":fv,"keys revoke":gv,"plugin list":lE,"plugin verify":pE,"plugin install":mE,"plugin update":fE,"plugin remove":gE,"settings get":$v,"settings set":Bv,"setup claude":Gv,"setup opencode":Zv,"admin set-password":Vv,"db migrate":WE,"db stats":jE,"db snapshots":KE,"db backup":GE,"db restore":VE,"db vacuum":ZE,"db clear-bodies":XE},UN=new Set(["--root","--db"]);function oT(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,UN.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=Xs[i];if(s!==void 0)return{name:i,command:s,rest:[...t,...e.slice(n+o)]}}return null}var MN=[{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 $N(e,t){return t.some((n)=>n.endsWith(" ")?e.startsWith(n):e===n)}function Hl(){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 MN){let n=Object.entries(Xs).filter(([o])=>$N(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(`
1755
- `).trimEnd()}function iT(e){let t=Xs[e];if(t===void 0)return Hl();return[`omni ${t.usage}`,"",t.summary].join(`
1756
- `)}async function FN(){let e=[];for await(let t of Bun.stdin.stream())e.push(t);return Buffer.concat(e).toString("utf8")}async function BN(){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===`
1757
- `)return n;if(i==="\x03")throw new O("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 sT(){let e=new TextDecoder,t="";for await(let n of process.stdin){let r=e.decode(n,{stream:!0}),o=r.indexOf(`
1758
- `);if(o>=0)return t+r.slice(0,o);t+=r}return t}function aT(e,t){let n=process.stdin.isTTY===!0;return{isTty:n,async input(r){if(!n)throw new O(`${r} \u2014 refusing without a terminal`);return t.err(r),(await sT()).trim()},async secret(r){if(!n)return(await FN()).trim();t.err(r);let o=await BN();return t.err(""),o.trim()},async confirm(r){if(e.assumeYes)return!0;if(!n)throw new O(`${r} \u2014 refusing without --yes`);t.err(`${r} [y/N] `);let o=(await sT()).trim().toLowerCase();return o==="y"||o==="yes"}}}import{dirname as zN}from"path";function uT(e,t,n){let r=`${e}.${process.pid}.tmp`;n.mkdir(zN(e));try{n.write(r,t),n.rename(r,e)}catch(o){throw n.remove(r),o}}async function cT(e,t,n={}){let r=(...l)=>e.some((m)=>l.includes(m));if(r("--version"))return t.out(oo),0;let o=oT(e);if(o===null){let l=e.filter((m)=>!m.startsWith("-"));if(l.length>0&&!r("--help","-h"))return t.err(`unknown command: ${l.join(" ")}`),t.err("run omni --help for the command list"),2;return t.out(Hl()),0}if(r("--help","-h"))return t.out(iT(o.name)),0;let i;try{i=uE(o.rest,o.command.options??{})}catch(l){return t.err(H(l,"could not parse arguments")),t.err(`usage: omni ${o.command.usage}`),2}nl();let s=cE(i,n),a,u=()=>(a??=jn(s.root.root),a);for(let l of s.warnings)t.err(l);let c=n.prompt??aT(s,t),d=L(i.values,"system")?"system":"user",p={ctx:s,writer:t,prompt:c,setupFs:n.setupFs??{homeDir:ZN(),cwd:process.cwd(),read:(l)=>qN(l)?WN(l,"utf8"):null,write:(l,m)=>uT(l,m,{mkdir:(g)=>HN(g,{recursive:!0}),write:(g,h)=>GN(g,h),rename:jN,remove:(g)=>KN(g,{force:!0})})},service:()=>n.service?.({root:s.root.root,env:s.env})??Pv({root:s.root.root,env:s.env,scope:d,now:s.now}),foreground:n.foreground??Cv,connect:async(l)=>{if(n.connect!==void 0)return n.connect(l);let m=await u();return Xc({store:l,providers:m.providers,descriptors:m.descriptors,http:Dn(),now:s.now})},connectable:async()=>{let l=await u();return{ids:rl(l.providers),failures:l.failures}}};try{return await o.command.run(i,p),0}catch(l){if(l instanceof I)return t.err(l.message),t.err(`usage: omni ${o.command.usage}`),2;if(l instanceof O)return t.err(l.message),l.exitCode;if(l instanceof b)return t.err(`${l.code}: ${l.message}`),1;return t.err(H(l,"unknown error")),1}finally{s.close()}}process.exitCode=await cT(process.argv.slice(2),Kl);
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);