@exulu/frontend 1.9.0 → 1.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.next/BUILD_ID +1 -1
- package/dist/.next/app-build-manifest.json +140 -140
- package/dist/.next/app-path-routes-manifest.json +1 -1
- package/dist/.next/build-manifest.json +2 -2
- package/dist/.next/prerender-manifest.json +1 -1
- package/dist/.next/server/app/(application)/agents/edit/[id]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/agents/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/chat/[agent]/[session]/page.js +7 -7
- package/dist/.next/server/app/(application)/chat/[agent]/[session]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/chat/[agent]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/chat/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/configuration/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/dashboard/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/data/[[...query]]/page.js +3 -3
- package/dist/.next/server/app/(application)/data/[[...query]]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/evals/[id]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/evals/cases/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/evals/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/explorer/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/keys/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/projects/[project]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/projects/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/prompts/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/roles/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/token/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/users/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/variables/create/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/variables/edit/[variable_id]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/variables/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/variables/usage/[variable_id]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/workflows/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(authentication)/login/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/_not-found.html +1 -1
- package/dist/.next/server/app/_not-found.rsc +1 -1
- package/dist/.next/server/app-paths-manifest.json +6 -6
- package/dist/.next/server/chunks/2270.js +17 -6
- package/dist/.next/server/chunks/5485.js +1 -1
- package/dist/.next/server/chunks/5974.js +1 -1
- package/dist/.next/server/middleware-manifest.json +5 -5
- package/dist/.next/server/pages/404.html +1 -1
- package/dist/.next/server/pages/500.html +1 -1
- package/dist/.next/server/server-reference-manifest.json +1 -1
- package/dist/.next/static/chunks/3750-e3d1b2cccd265190.js +2 -0
- package/dist/.next/static/chunks/3750-e3d1b2cccd265190.js.map +1 -0
- package/dist/.next/static/chunks/{3832-417a5eeee712a793.js → 3832-d7782d6a2771ae6c.js} +1 -1
- package/dist/.next/static/chunks/{3832-417a5eeee712a793.js.map → 3832-d7782d6a2771ae6c.js.map} +1 -1
- package/dist/.next/static/chunks/6280-50b751f993f2fe4f.js +2 -0
- package/dist/.next/static/chunks/6280-50b751f993f2fe4f.js.map +1 -0
- package/dist/.next/static/chunks/{6373-601400fab8a3bb55.js → 6373-aef582adc575d3ca.js} +2 -2
- package/dist/.next/static/chunks/6373-aef582adc575d3ca.js.map +1 -0
- package/dist/.next/static/chunks/{8293-0e69d89d2dac7111.js → 8293-ba5cd36594e6fde1.js} +3 -3
- package/dist/.next/static/chunks/8293-ba5cd36594e6fde1.js.map +1 -0
- package/dist/.next/static/chunks/9105-d8ff41060f7ffc85.js +2 -0
- package/dist/.next/static/chunks/9105-d8ff41060f7ffc85.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/{page-7edb1c7c850f982c.js → page-d59534ca19eee51f.js} +1 -1
- package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/{page-7edb1c7c850f982c.js.map → page-d59534ca19eee51f.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/layout-0c7c1b0e1713bf60.js +2 -0
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/layout-0c7c1b0e1713bf60.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/page-7db6bfbf02606136.js +2 -0
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/page-7db6bfbf02606136.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/explorer/{page-1d676c9dfe3ed58b.js → page-e6b1c034c07776e2.js} +1 -1
- package/dist/.next/static/chunks/app/(application)/explorer/{page-1d676c9dfe3ed58b.js.map → page-e6b1c034c07776e2.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/token/{page-3f74f711f3d04fce.js → page-3acc39cb8a718331.js} +1 -1
- package/dist/.next/static/chunks/app/(application)/token/{page-3f74f711f3d04fce.js.map → page-3acc39cb8a718331.js.map} +1 -1
- package/dist/.next/static/chunks/ba12c10f-85ed008ce7746dbe.js +2 -0
- package/dist/.next/static/chunks/ba12c10f-85ed008ce7746dbe.js.map +1 -0
- package/dist/.next/static/css/9c08ae5d990a6b14.css +4 -0
- package/dist/.next/static/css/9c08ae5d990a6b14.css.map +1 -0
- package/dist/.next/static/css/e3f2a16ab7676b05.css.map +1 -1
- package/dist/package.json +1 -1
- package/package.json +1 -1
- package/dist/.next/static/chunks/3750-f45c59ef1cc79417.js +0 -2
- package/dist/.next/static/chunks/3750-f45c59ef1cc79417.js.map +0 -1
- package/dist/.next/static/chunks/572-2940a399da1e3a3b.js +0 -2
- package/dist/.next/static/chunks/572-2940a399da1e3a3b.js.map +0 -1
- package/dist/.next/static/chunks/6373-601400fab8a3bb55.js.map +0 -1
- package/dist/.next/static/chunks/8293-0e69d89d2dac7111.js.map +0 -1
- package/dist/.next/static/chunks/9105-dfbce1bad8e3e8dd.js +0 -2
- package/dist/.next/static/chunks/9105-dfbce1bad8e3e8dd.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/layout-2d47be0ee80dd89d.js +0 -2
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/layout-2d47be0ee80dd89d.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/page-8d2b3995cacfd832.js +0 -2
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/page-8d2b3995cacfd832.js.map +0 -1
- package/dist/.next/static/chunks/ba12c10f-aaafcb074f608624.js +0 -2
- package/dist/.next/static/chunks/ba12c10f-aaafcb074f608624.js.map +0 -1
- package/dist/.next/static/css/6f8c5212af8ef284.css +0 -4
- package/dist/.next/static/css/6f8c5212af8ef284.css.map +0 -1
- /package/dist/.next/static/{ls-syPkq9-MWp-VWWDEZJ → 3j63p6b3zZZB_v1Hn8Mxp}/_buildManifest.js +0 -0
- /package/dist/.next/static/{ls-syPkq9-MWp-VWWDEZJ → 3j63p6b3zZZB_v1Hn8Mxp}/_ssgManifest.js +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
(()=>{var e={};e.id=4709,e.ids=[4709],e.modules={57343:e=>{"use strict";e.exports=require("graphql")},72934:e=>{"use strict";e.exports=require("next/dist/client/components/action-async-storage.external.js")},54580:e=>{"use strict";e.exports=require("next/dist/client/components/request-async-storage.external.js")},45869:e=>{"use strict";e.exports=require("next/dist/client/components/static-generation-async-storage.external.js")},20399:e=>{"use strict";e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},27790:e=>{"use strict";e.exports=require("assert")},78893:e=>{"use strict";e.exports=require("buffer")},61282:e=>{"use strict";e.exports=require("child_process")},84770:e=>{"use strict";e.exports=require("crypto")},80665:e=>{"use strict";e.exports=require("dns")},17702:e=>{"use strict";e.exports=require("events")},92048:e=>{"use strict";e.exports=require("fs")},32615:e=>{"use strict";e.exports=require("http")},35240:e=>{"use strict";e.exports=require("https")},98216:e=>{"use strict";e.exports=require("net")},19801:e=>{"use strict";e.exports=require("os")},55315:e=>{"use strict";e.exports=require("path")},86624:e=>{"use strict";e.exports=require("querystring")},76162:e=>{"use strict";e.exports=require("stream")},82452:e=>{"use strict";e.exports=require("tls")},17360:e=>{"use strict";e.exports=require("url")},21764:e=>{"use strict";e.exports=require("util")},71568:e=>{"use strict";e.exports=require("zlib")},8678:e=>{"use strict";e.exports=import("pg")},49411:e=>{"use strict";e.exports=require("node:path")},97742:e=>{"use strict";e.exports=require("node:process")},41041:e=>{"use strict";e.exports=require("node:url")},91223:(e,t,o)=>{"use strict";o.a(e,async(e,i)=>{try{o.r(t),o.d(t,{GlobalError:()=>l.a,__next_app__:()=>h,originalPathname:()=>g,pages:()=>m,routeModule:()=>v,tree:()=>p}),o(40281),o(25436),o(90502);var a=o(71197);o(35866);var r=o(23191),s=o(88716),n=o(37922),l=o.n(n),d=o(95231),c={};for(let e in d)0>["default","tree","pages","GlobalError","originalPathname","__next_app__","routeModule"].indexOf(e)&&(c[e]=()=>d[e]);o.d(t,c);var u=e([a]);a=(u.then?(await u)():u)[0];let p=["",{children:["(application)",{children:["chat",{children:["[agent]",{children:["[session]",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(o.bind(o,40281)),"/home/runner/work/exulu-frontend/exulu-frontend/app/(application)/chat/[agent]/[session]/page.tsx"]}]},{}]},{layout:[()=>Promise.resolve().then(o.bind(o,25436)),"/home/runner/work/exulu-frontend/exulu-frontend/app/(application)/chat/[agent]/layout.tsx"]}]},{layout:[()=>Promise.resolve().then(o.bind(o,90502)),"/home/runner/work/exulu-frontend/exulu-frontend/app/(application)/chat/layout.tsx"]}]},{layout:[()=>Promise.resolve().then(o.bind(o,71197)),"/home/runner/work/exulu-frontend/exulu-frontend/app/(application)/layout.tsx"],"not-found":[()=>Promise.resolve().then(o.t.bind(o,35866,23)),"next/dist/client/components/not-found-error"]}]},{"not-found":[()=>Promise.resolve().then(o.t.bind(o,35866,23)),"next/dist/client/components/not-found-error"]}],m=["/home/runner/work/exulu-frontend/exulu-frontend/app/(application)/chat/[agent]/[session]/page.tsx"],g="/(application)/chat/[agent]/[session]/page",h={require:o,loadChunk:()=>Promise.resolve()},v=new r.AppPageRouteModule({definition:{kind:s.x.APP_PAGE,page:"/(application)/chat/[agent]/[session]/page",pathname:"/chat/[agent]/[session]",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:p}});i()}catch(e){i(e)}})},7717:(e,t,o)=>{Promise.resolve().then(o.bind(o,26627))},94166:(e,t,o)=>{Promise.resolve().then(o.bind(o,30574))},26627:(e,t,o)=>{"use strict";let i;o.r(t),o.d(t,{default:()=>
|
|
1
|
+
(()=>{var e={};e.id=4709,e.ids=[4709],e.modules={57343:e=>{"use strict";e.exports=require("graphql")},72934:e=>{"use strict";e.exports=require("next/dist/client/components/action-async-storage.external.js")},54580:e=>{"use strict";e.exports=require("next/dist/client/components/request-async-storage.external.js")},45869:e=>{"use strict";e.exports=require("next/dist/client/components/static-generation-async-storage.external.js")},20399:e=>{"use strict";e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},27790:e=>{"use strict";e.exports=require("assert")},78893:e=>{"use strict";e.exports=require("buffer")},61282:e=>{"use strict";e.exports=require("child_process")},84770:e=>{"use strict";e.exports=require("crypto")},80665:e=>{"use strict";e.exports=require("dns")},17702:e=>{"use strict";e.exports=require("events")},92048:e=>{"use strict";e.exports=require("fs")},32615:e=>{"use strict";e.exports=require("http")},35240:e=>{"use strict";e.exports=require("https")},98216:e=>{"use strict";e.exports=require("net")},19801:e=>{"use strict";e.exports=require("os")},55315:e=>{"use strict";e.exports=require("path")},86624:e=>{"use strict";e.exports=require("querystring")},76162:e=>{"use strict";e.exports=require("stream")},82452:e=>{"use strict";e.exports=require("tls")},17360:e=>{"use strict";e.exports=require("url")},21764:e=>{"use strict";e.exports=require("util")},71568:e=>{"use strict";e.exports=require("zlib")},8678:e=>{"use strict";e.exports=import("pg")},49411:e=>{"use strict";e.exports=require("node:path")},97742:e=>{"use strict";e.exports=require("node:process")},41041:e=>{"use strict";e.exports=require("node:url")},91223:(e,t,o)=>{"use strict";o.a(e,async(e,i)=>{try{o.r(t),o.d(t,{GlobalError:()=>l.a,__next_app__:()=>h,originalPathname:()=>g,pages:()=>m,routeModule:()=>v,tree:()=>p}),o(40281),o(25436),o(90502);var a=o(71197);o(35866);var r=o(23191),s=o(88716),n=o(37922),l=o.n(n),d=o(95231),c={};for(let e in d)0>["default","tree","pages","GlobalError","originalPathname","__next_app__","routeModule"].indexOf(e)&&(c[e]=()=>d[e]);o.d(t,c);var u=e([a]);a=(u.then?(await u)():u)[0];let p=["",{children:["(application)",{children:["chat",{children:["[agent]",{children:["[session]",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(o.bind(o,40281)),"/home/runner/work/exulu-frontend/exulu-frontend/app/(application)/chat/[agent]/[session]/page.tsx"]}]},{}]},{layout:[()=>Promise.resolve().then(o.bind(o,25436)),"/home/runner/work/exulu-frontend/exulu-frontend/app/(application)/chat/[agent]/layout.tsx"]}]},{layout:[()=>Promise.resolve().then(o.bind(o,90502)),"/home/runner/work/exulu-frontend/exulu-frontend/app/(application)/chat/layout.tsx"]}]},{layout:[()=>Promise.resolve().then(o.bind(o,71197)),"/home/runner/work/exulu-frontend/exulu-frontend/app/(application)/layout.tsx"],"not-found":[()=>Promise.resolve().then(o.t.bind(o,35866,23)),"next/dist/client/components/not-found-error"]}]},{"not-found":[()=>Promise.resolve().then(o.t.bind(o,35866,23)),"next/dist/client/components/not-found-error"]}],m=["/home/runner/work/exulu-frontend/exulu-frontend/app/(application)/chat/[agent]/[session]/page.tsx"],g="/(application)/chat/[agent]/[session]/page",h={require:o,loadChunk:()=>Promise.resolve()},v=new r.AppPageRouteModule({definition:{kind:s.x.APP_PAGE,page:"/(application)/chat/[agent]/[session]/page",pathname:"/chat/[agent]/[session]",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:p}});i()}catch(e){i(e)}})},7717:(e,t,o)=>{Promise.resolve().then(o.bind(o,26627))},94166:(e,t,o)=>{Promise.resolve().then(o.bind(o,30574))},26627:(e,t,o)=>{"use strict";let i;o.r(t),o.d(t,{default:()=>u1,dynamic:()=>u2});var a,r,s,n,l,d,c,u,p,m,g,h,v,f,x,b,k,y,M,I,w,S,A,T,P,N,O,_,z,E,q,B,j,C,R,L,D,$,Z,F,Q,G,U,V,K,W,J,Y,H=o(10326),X=o(17577),ee=o.n(X),et=o(35047),eo=o(43273),ei=o(39167),ea=o(18753),er="vercel.ai.error",es=Symbol.for(er),en=class e extends Error{constructor({name:e,message:t,cause:o}){super(t),this[a]=!0,this.name=e,this.cause=o}static isInstance(t){return e.hasMarker(t,er)}static hasMarker(e,t){let o=Symbol.for(t);return null!=e&&"object"==typeof e&&o in e&&"boolean"==typeof e[o]&&!0===e[o]}};a=es;var el=en;function ed(e){return null==e?"unknown error":"string"==typeof e?e:e instanceof Error?e.message:JSON.stringify(e)}Symbol.for("vercel.ai.error.AI_APICallError"),Symbol.for("vercel.ai.error.AI_EmptyResponseBodyError");var ec="AI_InvalidArgumentError",eu=`vercel.ai.error.${ec}`,ep=Symbol.for(eu),em=class extends el{constructor({message:e,cause:t,argument:o}){super({name:ec,message:e,cause:t}),this[r]=!0,this.argument=o}static isInstance(e){return el.hasMarker(e,eu)}};r=ep,Symbol.for("vercel.ai.error.AI_InvalidPromptError"),Symbol.for("vercel.ai.error.AI_InvalidResponseDataError");var eg="AI_JSONParseError",eh=`vercel.ai.error.${eg}`,ev=Symbol.for(eh),ef=class extends el{constructor({text:e,cause:t}){super({name:eg,message:`JSON parsing failed: Text: ${e}.
|
|
2
2
|
Error message: ${ed(t)}`,cause:t}),this[s]=!0,this.text=e}static isInstance(e){return el.hasMarker(e,eh)}};s=ev,Symbol.for("vercel.ai.error.AI_LoadAPIKeyError"),Symbol.for("vercel.ai.error.AI_LoadSettingError"),Symbol.for("vercel.ai.error.AI_NoContentGeneratedError");var ex="AI_NoSuchModelError",eb=`vercel.ai.error.${ex}`,ek=Symbol.for(eb),ey=class extends el{constructor({errorName:e=ex,modelId:t,modelType:o,message:i=`No such ${o}: ${t}`}){super({name:e,message:i}),this[n]=!0,this.modelId=t,this.modelType=o}static isInstance(e){return el.hasMarker(e,eb)}};n=ek,Symbol.for("vercel.ai.error.AI_TooManyEmbeddingValuesForCallError");var eM="AI_TypeValidationError",eI=`vercel.ai.error.${eM}`,ew=Symbol.for(eI),eS=class e extends el{constructor({value:e,cause:t}){super({name:eM,message:`Type validation failed: Value: ${JSON.stringify(e)}.
|
|
3
3
|
Error message: ${ed(t)}`,cause:t}),this[l]=!0,this.value=e}static isInstance(e){return el.hasMarker(e,eI)}static wrap({value:t,cause:o}){return e.isInstance(o)&&o.value===t?o:new e({value:t,cause:o})}};l=ew;var eA="AI_UnsupportedFunctionalityError",eT=`vercel.ai.error.${eA}`,eP=Symbol.for(eT),eN=class extends el{constructor({functionality:e,message:t=`'${e}' functionality not supported.`}){super({name:eA,message:t}),this[d]=!0,this.functionality=e}static isInstance(e){return el.hasMarker(e,eT)}};function eO(e){return null===e||"string"==typeof e||"number"==typeof e||"boolean"==typeof e||(Array.isArray(e)?e.every(eO):"object"==typeof e&&Object.entries(e).every(([e,t])=>"string"==typeof e&&eO(t)))}d=eP;class e_ extends Error{constructor(e,t){super(e),this.name="ParseError",this.type=t.type,this.field=t.field,this.value=t.value,this.line=t.line}}function ez(e){}class eE extends TransformStream{constructor({onError:e,onRetry:t,onComment:o}={}){let i;super({start(a){i=function(e){if("function"==typeof e)throw TypeError("`callbacks` must be an object, got a function instead. Did you mean `{onEvent: fn}`?");let{onEvent:t=ez,onError:o=ez,onRetry:i=ez,onComment:a}=e,r="",s=!0,n,l="",d="";function c(e){if(""===e){l.length>0&&t({id:n,event:d||void 0,data:l.endsWith(`
|
|
4
4
|
`)?l.slice(0,-1):l}),n=void 0,l="",d="";return}if(e.startsWith(":")){a&&a(e.slice(e.startsWith(": ")?2:1));return}let o=e.indexOf(":");if(-1!==o){let t=e.slice(0,o),i=" "===e[o+1]?2:1;u(t,e.slice(o+i),e);return}u(e,"",e)}function u(e,t,a){switch(e){case"event":d=t;break;case"data":l=`${l}${t}
|
|
@@ -6,11 +6,11 @@ Error message: ${ed(t)}`,cause:t}),this[l]=!0,this.value=e}static isInstance(e){
|
|
|
6
6
|
`,i),s=-1;if(-1!==a&&-1!==r?s=Math.min(a,r):-1!==a?s=a===e.length-1?-1:a:-1!==r&&(s=r),-1===s){o=e.slice(i);break}{let o=e.slice(i,s);t.push(o),"\r"===e[(i=s+1)-1]&&e[i]===`
|
|
7
7
|
`&&i++}}return[t,o]}(`${r}${t}`);for(let e of o)c(e);r=i,s=!1},reset:function(e={}){r&&e.consume&&c(r),s=!0,n=void 0,l="",d="",r=""}}}({onEvent:e=>{a.enqueue(e)},onError(t){"terminate"===e?a.error(t):"function"==typeof e&&e(t)},onRetry:t,onComment:o})},transform(e){i.feed(e)}})}}Symbol("ZodOutput"),Symbol("ZodInput");class eq{constructor(){this._map=new Map,this._idmap=new Map}add(e,...t){let o=t[0];if(this._map.set(e,o),o&&"object"==typeof o&&"id"in o){if(this._idmap.has(o.id))throw Error(`ID ${o.id} already exists in the registry`);this._idmap.set(o.id,e)}return this}clear(){return this._map=new Map,this._idmap=new Map,this}remove(e){let t=this._map.get(e);return t&&"object"==typeof t&&"id"in t&&this._idmap.delete(t.id),this._map.delete(e),this}get(e){let t=e._zod.parent;if(t){let o={...this.get(t)??{}};return delete o.id,{...o,...this._map.get(e)}}return this._map.get(e)}has(e){return this._map.has(e)}}let eB=new eq;function ej(e){let t=Object.values(e).filter(e=>"number"==typeof e);return Object.entries(e).filter(([e,o])=>-1===t.indexOf(+e)).map(([e,t])=>t)}function eC(e,t){return"bigint"==typeof t?t.toString():t}function eR(e){return{get value(){{let t=e();return Object.defineProperty(this,"value",{value:t}),t}}}}function eL(e){let t=e.startsWith("^")?1:0,o=e.endsWith("$")?e.length-1:e.length;return e.slice(t,o)}function eD(e,t,o){Object.defineProperty(e,t,{get(){{let i=o();return e[t]=i,i}},set(o){Object.defineProperty(e,t,{value:o})},configurable:!0})}function e$(e,t,o){Object.defineProperty(e,t,{value:o,writable:!0,enumerable:!0,configurable:!0})}function eZ(e){return JSON.stringify(e)}let eF=Error.captureStackTrace?Error.captureStackTrace:(...e)=>{};function eQ(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}let eG=eR(()=>{if("undefined"!=typeof navigator&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{return Function(""),!0}catch(e){return!1}});function eU(e){if(!1===eQ(e))return!1;let t=e.constructor;if(void 0===t)return!0;let o=t.prototype;return!1!==eQ(o)&&!1!==Object.prototype.hasOwnProperty.call(o,"isPrototypeOf")}let eV=new Set(["string","number","symbol"]);function eK(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function eW(e,t,o){let i=new e._zod.constr(t??e._zod.def);return(!t||o?.parent)&&(i._zod.parent=e),i}function eJ(e){if(!e)return{};if("string"==typeof e)return{error:()=>e};if(e?.message!==void 0){if(e?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");e.error=e.message}return(delete e.message,"string"==typeof e.error)?{...e,error:()=>e.error}:e}let eY={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]};function eH(e,t=0){for(let o=t;o<e.issues.length;o++)if(e.issues[o]?.continue!==!0)return!0;return!1}function eX(e,t){return t.map(t=>(t.path??(t.path=[]),t.path.unshift(e),t))}function e0(e){return"string"==typeof e?e:e?.message}function e2(e,t,o){let i={...e,path:e.path??[]};if(!e.message){let a=e0(e.inst?._zod.def?.error?.(e))??e0(t?.error?.(e))??e0(o.customError?.(e))??e0(o.localeError?.(e))??"Invalid input";i.message=a}return delete i.inst,delete i.continue,t?.reportInput||delete i.input,i}function e1(e){return Array.isArray(e)?"array":"string"==typeof e?"string":"unknown"}function e5(...e){let[t,o,i]=e;return"string"==typeof t?{message:t,code:"custom",input:o,inst:i}:{...t}}class e3{constructor(e){this.counter=0,this.metadataRegistry=e?.metadata??eB,this.target=e?.target??"draft-2020-12",this.unrepresentable=e?.unrepresentable??"throw",this.override=e?.override??(()=>{}),this.io=e?.io??"output",this.seen=new Map}process(e,t={path:[],schemaPath:[]}){var o;let i=e._zod.def,a=this.seen.get(e);if(a)return a.count++,t.schemaPath.includes(e)&&(a.cycle=t.path),a.schema;let r={schema:{},count:1,cycle:void 0,path:t.path};this.seen.set(e,r);let s=e._zod.toJSONSchema?.();if(s)r.schema=s;else{let o={...t,schemaPath:[...t.schemaPath,e],path:t.path},a=e._zod.parent;if(a)r.ref=a,this.process(a,o),this.seen.get(a).isParent=!0;else{let t=r.schema;switch(i.type){case"string":{t.type="string";let{minimum:o,maximum:i,format:a,patterns:s,contentEncoding:n}=e._zod.bag;if("number"==typeof o&&(t.minLength=o),"number"==typeof i&&(t.maxLength=i),a&&(t.format=({guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""})[a]??a,""===t.format&&delete t.format),n&&(t.contentEncoding=n),s&&s.size>0){let e=[...s];1===e.length?t.pattern=e[0].source:e.length>1&&(r.schema.allOf=[...e.map(e=>({..."draft-7"===this.target?{type:"string"}:{},pattern:e.source}))])}break}case"number":{let{minimum:o,maximum:i,format:a,multipleOf:r,exclusiveMaximum:s,exclusiveMinimum:n}=e._zod.bag;"string"==typeof a&&a.includes("int")?t.type="integer":t.type="number","number"==typeof n&&(t.exclusiveMinimum=n),"number"==typeof o&&(t.minimum=o,"number"==typeof n&&(n>=o?delete t.minimum:delete t.exclusiveMinimum)),"number"==typeof s&&(t.exclusiveMaximum=s),"number"==typeof i&&(t.maximum=i,"number"==typeof s&&(s<=i?delete t.maximum:delete t.exclusiveMaximum)),"number"==typeof r&&(t.multipleOf=r);break}case"boolean":case"success":t.type="boolean";break;case"bigint":if("throw"===this.unrepresentable)throw Error("BigInt cannot be represented in JSON Schema");break;case"symbol":if("throw"===this.unrepresentable)throw Error("Symbols cannot be represented in JSON Schema");break;case"null":t.type="null";break;case"any":case"unknown":break;case"undefined":if("throw"===this.unrepresentable)throw Error("Undefined cannot be represented in JSON Schema");break;case"void":if("throw"===this.unrepresentable)throw Error("Void cannot be represented in JSON Schema");break;case"never":t.not={};break;case"date":if("throw"===this.unrepresentable)throw Error("Date cannot be represented in JSON Schema");break;case"array":{let{minimum:a,maximum:r}=e._zod.bag;"number"==typeof a&&(t.minItems=a),"number"==typeof r&&(t.maxItems=r),t.type="array",t.items=this.process(i.element,{...o,path:[...o.path,"items"]});break}case"object":{t.type="object",t.properties={};let e=i.shape;for(let i in e)t.properties[i]=this.process(e[i],{...o,path:[...o.path,"properties",i]});let a=new Set([...new Set(Object.keys(e))].filter(e=>{let t=i.shape[e]._zod;return"input"===this.io?void 0===t.optin:void 0===t.optout}));a.size>0&&(t.required=Array.from(a)),i.catchall?._zod.def.type==="never"?t.additionalProperties=!1:i.catchall?i.catchall&&(t.additionalProperties=this.process(i.catchall,{...o,path:[...o.path,"additionalProperties"]})):"output"===this.io&&(t.additionalProperties=!1);break}case"union":t.anyOf=i.options.map((e,t)=>this.process(e,{...o,path:[...o.path,"anyOf",t]}));break;case"intersection":{let e=this.process(i.left,{...o,path:[...o.path,"allOf",0]}),a=this.process(i.right,{...o,path:[...o.path,"allOf",1]}),r=[..."allOf"in e&&1===Object.keys(e).length?e.allOf:[e],..."allOf"in a&&1===Object.keys(a).length?a.allOf:[a]];t.allOf=r;break}case"tuple":{t.type="array";let a=i.items.map((e,t)=>this.process(e,{...o,path:[...o.path,"prefixItems",t]}));if("draft-2020-12"===this.target?t.prefixItems=a:t.items=a,i.rest){let e=this.process(i.rest,{...o,path:[...o.path,"items"]});"draft-2020-12"===this.target?t.items=e:t.additionalItems=e}i.rest&&(t.items=this.process(i.rest,{...o,path:[...o.path,"items"]}));let{minimum:r,maximum:s}=e._zod.bag;"number"==typeof r&&(t.minItems=r),"number"==typeof s&&(t.maxItems=s);break}case"record":t.type="object",t.propertyNames=this.process(i.keyType,{...o,path:[...o.path,"propertyNames"]}),t.additionalProperties=this.process(i.valueType,{...o,path:[...o.path,"additionalProperties"]});break;case"map":if("throw"===this.unrepresentable)throw Error("Map cannot be represented in JSON Schema");break;case"set":if("throw"===this.unrepresentable)throw Error("Set cannot be represented in JSON Schema");break;case"enum":{let e=ej(i.entries);e.every(e=>"number"==typeof e)&&(t.type="number"),e.every(e=>"string"==typeof e)&&(t.type="string"),t.enum=e;break}case"literal":{let e=[];for(let t of i.values)if(void 0===t){if("throw"===this.unrepresentable)throw Error("Literal `undefined` cannot be represented in JSON Schema")}else if("bigint"==typeof t){if("throw"===this.unrepresentable)throw Error("BigInt literals cannot be represented in JSON Schema");e.push(Number(t))}else e.push(t);if(0===e.length);else if(1===e.length){let o=e[0];t.type=null===o?"null":typeof o,t.const=o}else e.every(e=>"number"==typeof e)&&(t.type="number"),e.every(e=>"string"==typeof e)&&(t.type="string"),e.every(e=>"boolean"==typeof e)&&(t.type="string"),e.every(e=>null===e)&&(t.type="null"),t.enum=e;break}case"file":{let o={type:"string",format:"binary",contentEncoding:"binary"},{minimum:i,maximum:a,mime:r}=e._zod.bag;void 0!==i&&(o.minLength=i),void 0!==a&&(o.maxLength=a),r?1===r.length?(o.contentMediaType=r[0],Object.assign(t,o)):t.anyOf=r.map(e=>({...o,contentMediaType:e})):Object.assign(t,o);break}case"transform":if("throw"===this.unrepresentable)throw Error("Transforms cannot be represented in JSON Schema");break;case"nullable":{let e=this.process(i.innerType,o);t.anyOf=[e,{type:"null"}];break}case"nonoptional":case"promise":case"optional":this.process(i.innerType,o),r.ref=i.innerType;break;case"default":this.process(i.innerType,o),r.ref=i.innerType,t.default=JSON.parse(JSON.stringify(i.defaultValue));break;case"prefault":this.process(i.innerType,o),r.ref=i.innerType,"input"===this.io&&(t._prefault=JSON.parse(JSON.stringify(i.defaultValue)));break;case"catch":{let e;this.process(i.innerType,o),r.ref=i.innerType;try{e=i.catchValue(void 0)}catch{throw Error("Dynamic catch values are not supported in JSON Schema")}t.default=e;break}case"nan":if("throw"===this.unrepresentable)throw Error("NaN cannot be represented in JSON Schema");break;case"template_literal":{let o=e._zod.pattern;if(!o)throw Error("Pattern not found in template literal");t.type="string",t.pattern=o.source;break}case"pipe":{let e="input"===this.io?"transform"===i.in._zod.def.type?i.out:i.in:i.out;this.process(e,o),r.ref=e;break}case"readonly":this.process(i.innerType,o),r.ref=i.innerType,t.readOnly=!0;break;case"lazy":{let t=e._zod.innerType;this.process(t,o),r.ref=t;break}case"custom":if("throw"===this.unrepresentable)throw Error("Custom types cannot be represented in JSON Schema")}}}let n=this.metadataRegistry.get(e);return n&&Object.assign(r.schema,n),"input"===this.io&&function e(t,o){let i=o??{seen:new Set};if(i.seen.has(t))return!1;i.seen.add(t);let a=t._zod.def;switch(a.type){case"string":case"number":case"bigint":case"boolean":case"date":case"symbol":case"undefined":case"null":case"any":case"unknown":case"never":case"void":case"literal":case"enum":case"nan":case"file":case"template_literal":case"custom":case"success":case"catch":return!1;case"array":return e(a.element,i);case"object":for(let t in a.shape)if(e(a.shape[t],i))return!0;return!1;case"union":for(let t of a.options)if(e(t,i))return!0;return!1;case"intersection":return e(a.left,i)||e(a.right,i);case"tuple":for(let t of a.items)if(e(t,i))return!0;if(a.rest&&e(a.rest,i))return!0;return!1;case"record":case"map":return e(a.keyType,i)||e(a.valueType,i);case"set":return e(a.valueType,i);case"promise":case"optional":case"nonoptional":case"nullable":case"readonly":case"default":case"prefault":return e(a.innerType,i);case"lazy":return e(a.getter(),i);case"transform":return!0;case"pipe":return e(a.in,i)||e(a.out,i)}throw Error(`Unknown schema type: ${a.type}`)}(e)&&(delete r.schema.examples,delete r.schema.default),"input"===this.io&&r.schema._prefault&&((o=r.schema).default??(o.default=r.schema._prefault)),delete r.schema._prefault,this.seen.get(e).schema}emit(e,t){let o={cycles:t?.cycles??"ref",reused:t?.reused??"inline",external:t?.external??void 0},i=this.seen.get(e);if(!i)throw Error("Unprocessed schema. This is a bug in Zod.");let a=e=>{let t="draft-2020-12"===this.target?"$defs":"definitions";if(o.external){let i=o.external.registry.get(e[0])?.id,a=o.external.uri??(e=>e);if(i)return{ref:a(i)};let r=e[1].defId??e[1].schema.id??`schema${this.counter++}`;return e[1].defId=r,{defId:r,ref:`${a("__shared")}#/${t}/${r}`}}if(e[1]===i)return{ref:"#"};let a=`#/${t}/`,r=e[1].schema.id??`__schema${this.counter++}`;return{defId:r,ref:a+r}},r=e=>{if(e[1].schema.$ref)return;let t=e[1],{ref:o,defId:i}=a(e);t.def={...t.schema},i&&(t.defId=i);let r=t.schema;for(let e in r)delete r[e];r.$ref=o};if("throw"===o.cycles)for(let e of this.seen.entries()){let t=e[1];if(t.cycle)throw Error(`Cycle detected: #/${t.cycle?.join("/")}/<root>
|
|
8
8
|
|
|
9
|
-
Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let t of this.seen.entries()){let i=t[1];if(e===t[0]){r(t);continue}if(o.external){let i=o.external.registry.get(t[0])?.id;if(e!==t[0]&&i){r(t);continue}}if(this.metadataRegistry.get(t[0])?.id||i.cycle||i.count>1&&"ref"===o.reused){r(t);continue}}let s=(e,t)=>{let o=this.seen.get(e),i=o.def??o.schema,a={...i};if(null===o.ref)return;let r=o.ref;if(o.ref=null,r){s(r,t);let e=this.seen.get(r).schema;e.$ref&&"draft-7"===t.target?(i.allOf=i.allOf??[],i.allOf.push(e)):(Object.assign(i,e),Object.assign(i,a))}o.isParent||this.override({zodSchema:e,jsonSchema:i,path:o.path??[]})};for(let e of[...this.seen.entries()].reverse())s(e[0],{target:this.target});let n={};if("draft-2020-12"===this.target?n.$schema="https://json-schema.org/draft/2020-12/schema":"draft-7"===this.target?n.$schema="http://json-schema.org/draft-07/schema#":console.warn(`Invalid target: ${this.target}`),o.external?.uri){let t=o.external.registry.get(e)?.id;if(!t)throw Error("Schema is missing an `id` property");n.$id=o.external.uri(t)}Object.assign(n,i.def);let l=o.external?.defs??{};for(let e of this.seen.entries()){let t=e[1];t.def&&t.defId&&(l[t.defId]=t.def)}o.external||Object.keys(l).length>0&&("draft-2020-12"===this.target?n.$defs=l:n.definitions=l);try{return JSON.parse(JSON.stringify(n))}catch(e){throw Error("Error converting schema to JSON.")}}}function e4(e,t){if(e instanceof eq){let o=new e3(t),i={};for(let t of e._idmap.entries()){let[e,i]=t;o.process(i)}let a={},r={registry:e,uri:t?.uri,defs:i};for(let i of e._idmap.entries()){let[e,s]=i;a[e]=o.emit(s,{...t,external:r})}if(Object.keys(i).length>0){let e="draft-2020-12"===o.target?"$defs":"definitions";a.__shared={[e]:i}}return{schemas:a}}let o=new e3(t);return o.process(e),o.emit(e,t)}function e7(e,t,o){function i(o,i){var a;for(let r in Object.defineProperty(o,"_zod",{value:o._zod??{},enumerable:!1}),(a=o._zod).traits??(a.traits=new Set),o._zod.traits.add(e),t(o,i),s.prototype)r in o||Object.defineProperty(o,r,{value:s.prototype[r].bind(o)});o._zod.constr=s,o._zod.def=i}let a=o?.Parent??Object;class r extends a{}function s(e){var t;let a=o?.Parent?new r:this;for(let o of(i(a,e),(t=a._zod).deferred??(t.deferred=[]),a._zod.deferred))o();return a}return Object.defineProperty(r,"name",{value:e}),Object.defineProperty(s,"init",{value:i}),Object.defineProperty(s,Symbol.hasInstance,{value:t=>!!o?.Parent&&t instanceof o.Parent||t?._zod?.traits?.has(e)}),Object.defineProperty(s,"name",{value:e}),s}Object.freeze({status:"aborted"}),Symbol("zod_brand");class e8 extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}}let e6={};function e9(e){return e&&Object.assign(e6,e),e6}let te=(e,t)=>{e.name="$ZodError",Object.defineProperty(e,"_zod",{value:e._zod,enumerable:!1}),Object.defineProperty(e,"issues",{value:t,enumerable:!1}),Object.defineProperty(e,"message",{get:()=>JSON.stringify(t,eC,2),enumerable:!0}),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},tt=e7("$ZodError",te),to=e7("$ZodError",te,{Parent:Error}),ti=e=>(t,o,i)=>{let a=i?{...i,async:!1}:{async:!1},r=t._zod.run({value:o,issues:[]},a);if(r instanceof Promise)throw new e8;return r.issues.length?{success:!1,error:new(e??tt)(r.issues.map(e=>e2(e,a,e9())))}:{success:!0,data:r.value}},ta=ti(to),tr=e=>async(t,o,i)=>{let a=i?Object.assign(i,{async:!0}):{async:!0},r=t._zod.run({value:o,issues:[]},a);return r instanceof Promise&&(r=await r),r.issues.length?{success:!1,error:new e(r.issues.map(e=>e2(e,a,e9())))}:{success:!0,data:r.value}},ts=tr(to),tn=(e,t)=>{tt.init(e,t),e.name="ZodError",Object.defineProperties(e,{format:{value:t=>(function(e,t){let o=t||function(e){return e.message},i={_errors:[]},a=e=>{for(let t of e.issues)if("invalid_union"===t.code&&t.errors.length)t.errors.map(e=>a({issues:e}));else if("invalid_key"===t.code)a({issues:t.issues});else if("invalid_element"===t.code)a({issues:t.issues});else if(0===t.path.length)i._errors.push(o(t));else{let e=i,a=0;for(;a<t.path.length;){let i=t.path[a];a===t.path.length-1?(e[i]=e[i]||{_errors:[]},e[i]._errors.push(o(t))):e[i]=e[i]||{_errors:[]},e=e[i],a++}}};return a(e),i})(e,t)},flatten:{value:t=>(function(e,t=e=>e.message){let o={},i=[];for(let a of e.issues)a.path.length>0?(o[a.path[0]]=o[a.path[0]]||[],o[a.path[0]].push(t(a))):i.push(t(a));return{formErrors:i,fieldErrors:o}})(e,t)},addIssue:{value:t=>e.issues.push(t)},addIssues:{value:t=>e.issues.push(...t)},isEmpty:{get:()=>0===e.issues.length}})};e7("ZodError",tn);let tl=e7("ZodError",tn,{Parent:Error}),td=(e,t,o,i)=>{let a=o?Object.assign(o,{async:!1}):{async:!1},r=e._zod.run({value:t,issues:[]},a);if(r instanceof Promise)throw new e8;if(r.issues.length){let e=new(i?.Err??tl)(r.issues.map(e=>e2(e,a,e9())));throw eF(e,i?.callee),e}return r.value},tc=async(e,t,o,i)=>{let a=o?Object.assign(o,{async:!0}):{async:!0},r=e._zod.run({value:t,issues:[]},a);if(r instanceof Promise&&(r=await r),r.issues.length){let e=new(i?.Err??tl)(r.issues.map(e=>e2(e,a,e9())));throw eF(e,i?.callee),e}return r.value},tu=ti(tl),tp=tr(tl);var tm=o(770),tg=({prefix:e,size:t=16,alphabet:o="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",separator:i="-"}={})=>{let a=()=>{let e=o.length,i=Array(t);for(let a=0;a<t;a++)i[a]=o[Math.random()*e|0];return i.join("")};if(null==e)return a;if(o.includes(i))throw new em({argument:"separator",message:`The separator "${i}" must not be part of the alphabet "${o}".`});return()=>`${e}${i}${a()}`};tg();var th=/"__proto__"\s*:/,tv=/"constructor"\s*:/,tf=Symbol.for("vercel.ai.validator");async function tx({value:e,schema:t}){let o="object"==typeof t&&null!==t&&tf in t&&!0===t[tf]&&"validate"in t?t:{[tf]:!0,validate:async e=>{let o=await t["~standard"].validate(e);return null==o.issues?{success:!0,value:o.value}:{success:!1,error:new eS({value:e,cause:o.issues})}}};try{if(null==o.validate)return{success:!0,value:e,rawValue:e};let t=await o.validate(e);if(t.success)return{success:!0,value:t.value,rawValue:e};return{success:!1,error:eS.wrap({value:e,cause:t.error}),rawValue:e}}catch(t){return{success:!1,error:eS.wrap({value:e,cause:t}),rawValue:e}}}async function tb({text:e,schema:t}){try{let o=function(e){let{stackTraceLimit:t}=Error;Error.stackTraceLimit=0;try{return function(e){let t=JSON.parse(e);return null===t||"object"!=typeof t||!1===th.test(e)&&!1===tv.test(e)?t:function(e){let t=[e];for(;t.length;){let e=t;for(let o of(t=[],e)){if(Object.prototype.hasOwnProperty.call(o,"__proto__")||Object.prototype.hasOwnProperty.call(o,"constructor")&&Object.prototype.hasOwnProperty.call(o.constructor,"prototype"))throw SyntaxError("Object contains forbidden prototype property");for(let e in o){let i=o[e];i&&"object"==typeof i&&t.push(i)}}}return e}(t)}(e)}finally{Error.stackTraceLimit=t}}(e);if(null==t)return{success:!0,value:o,rawValue:o};return await tx({value:o,schema:t})}catch(t){return{success:!1,error:ef.isInstance(t)?t:new ef({text:e,cause:t}),rawValue:void 0}}}async function tk(e){return"function"==typeof e&&(e=e()),Promise.resolve(e)}var ty=(e,t)=>{let o=0;for(;o<e.length&&o<t.length&&e[o]===t[o];o++);return[(e.length-o).toString(),...t.slice(o)].join("/")},tM=Symbol("Let zodToJsonSchema decide on which parser to use"),tI={name:void 0,$refStrategy:"root",basePath:["#"],effectStrategy:"input",pipeStrategy:"all",dateStrategy:"format:date-time",mapStrategy:"entries",removeAdditionalStrategy:"passthrough",allowedAdditionalProperties:!0,rejectedAdditionalProperties:!1,definitionPath:"definitions",strictUnions:!1,definitions:{},errorMessages:!1,patternStrategy:"escape",applyRegexFlags:!1,emailStrategy:"format:email",base64Strategy:"contentEncoding:base64",nameStrategy:"ref"},tw=e=>"string"==typeof e?{...tI,name:e}:{...tI,...e};function tS(e,t){return tQ(e.type._def,t)}var tA=(e,t)=>tQ(e.innerType._def,t),tT=e=>{let t={type:"integer",format:"unix-time"};for(let o of e.checks)switch(o.kind){case"min":t.minimum=o.value;break;case"max":t.maximum=o.value}return t},tP=e=>(!("type"in e)||"string"!==e.type)&&"allOf"in e,tN=void 0,tO={cuid:/^[cC][^\s-]{8,}$/,cuid2:/^[0-9a-z]+$/,ulid:/^[0-9A-HJKMNP-TV-Z]{26}$/,email:/^(?!\.)(?!.*\.\.)([a-zA-Z0-9_'+\-\.]*)[a-zA-Z0-9_+-]@([a-zA-Z0-9][a-zA-Z0-9\-]*\.)+[a-zA-Z]{2,}$/,emoji:()=>(void 0===tN&&(tN=RegExp("^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$","u")),tN),ipv4Cidr:/^(?:(?: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])\/(3[0-2]|[12]?[0-9])$/,ipv6Cidr:/^(([0-9a-fA-F]{1,4}:){7,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}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,base64:/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,base64url:/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,nanoid:/^[a-zA-Z0-9_-]{21}$/,jwt:/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/};function t_(e,t){let o={type:"string"};if(e.checks)for(let i of e.checks)switch(i.kind){case"min":o.minLength="number"==typeof o.minLength?Math.max(o.minLength,i.value):i.value;break;case"max":o.maxLength="number"==typeof o.maxLength?Math.min(o.maxLength,i.value):i.value;break;case"email":switch(t.emailStrategy){case"format:email":tq(o,"email",i.message,t);break;case"format:idn-email":tq(o,"idn-email",i.message,t);break;case"pattern:zod":tB(o,tO.email,i.message,t)}break;case"url":tq(o,"uri",i.message,t);break;case"uuid":tq(o,"uuid",i.message,t);break;case"regex":tB(o,i.regex,i.message,t);break;case"cuid":tB(o,tO.cuid,i.message,t);break;case"cuid2":tB(o,tO.cuid2,i.message,t);break;case"startsWith":tB(o,RegExp(`^${tz(i.value,t)}`),i.message,t);break;case"endsWith":tB(o,RegExp(`${tz(i.value,t)}$`),i.message,t);break;case"datetime":tq(o,"date-time",i.message,t);break;case"date":tq(o,"date",i.message,t);break;case"time":tq(o,"time",i.message,t);break;case"duration":tq(o,"duration",i.message,t);break;case"length":o.minLength="number"==typeof o.minLength?Math.max(o.minLength,i.value):i.value,o.maxLength="number"==typeof o.maxLength?Math.min(o.maxLength,i.value):i.value;break;case"includes":tB(o,RegExp(tz(i.value,t)),i.message,t);break;case"ip":"v6"!==i.version&&tq(o,"ipv4",i.message,t),"v4"!==i.version&&tq(o,"ipv6",i.message,t);break;case"base64url":tB(o,tO.base64url,i.message,t);break;case"jwt":tB(o,tO.jwt,i.message,t);break;case"cidr":"v6"!==i.version&&tB(o,tO.ipv4Cidr,i.message,t),"v4"!==i.version&&tB(o,tO.ipv6Cidr,i.message,t);break;case"emoji":tB(o,tO.emoji(),i.message,t);break;case"ulid":tB(o,tO.ulid,i.message,t);break;case"base64":switch(t.base64Strategy){case"format:binary":tq(o,"binary",i.message,t);break;case"contentEncoding:base64":o.contentEncoding="base64";break;case"pattern:zod":tB(o,tO.base64,i.message,t)}break;case"nanoid":tB(o,tO.nanoid,i.message,t)}return o}function tz(e,t){return"escape"===t.patternStrategy?function(e){let t="";for(let o=0;o<e.length;o++)tE.has(e[o])||(t+="\\"),t+=e[o];return t}(e):e}var tE=new Set("ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789");function tq(e,t,o,i){var a;e.format||(null==(a=e.anyOf)?void 0:a.some(e=>e.format))?(e.anyOf||(e.anyOf=[]),e.format&&(e.anyOf.push({format:e.format}),delete e.format),e.anyOf.push({format:t,...o&&i.errorMessages&&{errorMessage:{format:o}}})):e.format=t}function tB(e,t,o,i){var a;e.pattern||(null==(a=e.allOf)?void 0:a.some(e=>e.pattern))?(e.allOf||(e.allOf=[]),e.pattern&&(e.allOf.push({pattern:e.pattern}),delete e.pattern),e.allOf.push({pattern:tj(t,i),...o&&i.errorMessages&&{errorMessage:{pattern:o}}})):e.pattern=tj(t,i)}function tj(e,t){var o;if(!t.applyRegexFlags||!e.flags)return e.source;let i={i:e.flags.includes("i"),m:e.flags.includes("m"),s:e.flags.includes("s")},a=i.i?e.source.toLowerCase():e.source,r="",s=!1,n=!1,l=!1;for(let e=0;e<a.length;e++){if(s){r+=a[e],s=!1;continue}if(i.i){if(n){if(a[e].match(/[a-z]/)){l?(r+=a[e]+`${a[e-2]}-${a[e]}`.toUpperCase(),l=!1):"-"===a[e+1]&&(null==(o=a[e+2])?void 0:o.match(/[a-z]/))?(r+=a[e],l=!0):r+=`${a[e]}${a[e].toUpperCase()}`;continue}}else if(a[e].match(/[a-z]/)){r+=`[${a[e]}${a[e].toUpperCase()}]`;continue}}if(i.m){if("^"===a[e]){r+=`(^|(?<=[\r
|
|
9
|
+
Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let t of this.seen.entries()){let i=t[1];if(e===t[0]){r(t);continue}if(o.external){let i=o.external.registry.get(t[0])?.id;if(e!==t[0]&&i){r(t);continue}}if(this.metadataRegistry.get(t[0])?.id||i.cycle||i.count>1&&"ref"===o.reused){r(t);continue}}let s=(e,t)=>{let o=this.seen.get(e),i=o.def??o.schema,a={...i};if(null===o.ref)return;let r=o.ref;if(o.ref=null,r){s(r,t);let e=this.seen.get(r).schema;e.$ref&&"draft-7"===t.target?(i.allOf=i.allOf??[],i.allOf.push(e)):(Object.assign(i,e),Object.assign(i,a))}o.isParent||this.override({zodSchema:e,jsonSchema:i,path:o.path??[]})};for(let e of[...this.seen.entries()].reverse())s(e[0],{target:this.target});let n={};if("draft-2020-12"===this.target?n.$schema="https://json-schema.org/draft/2020-12/schema":"draft-7"===this.target?n.$schema="http://json-schema.org/draft-07/schema#":console.warn(`Invalid target: ${this.target}`),o.external?.uri){let t=o.external.registry.get(e)?.id;if(!t)throw Error("Schema is missing an `id` property");n.$id=o.external.uri(t)}Object.assign(n,i.def);let l=o.external?.defs??{};for(let e of this.seen.entries()){let t=e[1];t.def&&t.defId&&(l[t.defId]=t.def)}o.external||Object.keys(l).length>0&&("draft-2020-12"===this.target?n.$defs=l:n.definitions=l);try{return JSON.parse(JSON.stringify(n))}catch(e){throw Error("Error converting schema to JSON.")}}}function e4(e,t){if(e instanceof eq){let o=new e3(t),i={};for(let t of e._idmap.entries()){let[e,i]=t;o.process(i)}let a={},r={registry:e,uri:t?.uri,defs:i};for(let i of e._idmap.entries()){let[e,s]=i;a[e]=o.emit(s,{...t,external:r})}if(Object.keys(i).length>0){let e="draft-2020-12"===o.target?"$defs":"definitions";a.__shared={[e]:i}}return{schemas:a}}let o=new e3(t);return o.process(e),o.emit(e,t)}function e7(e,t,o){function i(o,i){var a;for(let r in Object.defineProperty(o,"_zod",{value:o._zod??{},enumerable:!1}),(a=o._zod).traits??(a.traits=new Set),o._zod.traits.add(e),t(o,i),s.prototype)r in o||Object.defineProperty(o,r,{value:s.prototype[r].bind(o)});o._zod.constr=s,o._zod.def=i}let a=o?.Parent??Object;class r extends a{}function s(e){var t;let a=o?.Parent?new r:this;for(let o of(i(a,e),(t=a._zod).deferred??(t.deferred=[]),a._zod.deferred))o();return a}return Object.defineProperty(r,"name",{value:e}),Object.defineProperty(s,"init",{value:i}),Object.defineProperty(s,Symbol.hasInstance,{value:t=>!!o?.Parent&&t instanceof o.Parent||t?._zod?.traits?.has(e)}),Object.defineProperty(s,"name",{value:e}),s}Object.freeze({status:"aborted"}),Symbol("zod_brand");class e8 extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}}let e6={};function e9(e){return e&&Object.assign(e6,e),e6}let te=(e,t)=>{e.name="$ZodError",Object.defineProperty(e,"_zod",{value:e._zod,enumerable:!1}),Object.defineProperty(e,"issues",{value:t,enumerable:!1}),Object.defineProperty(e,"message",{get:()=>JSON.stringify(t,eC,2),enumerable:!0}),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},tt=e7("$ZodError",te),to=e7("$ZodError",te,{Parent:Error}),ti=e=>(t,o,i)=>{let a=i?{...i,async:!1}:{async:!1},r=t._zod.run({value:o,issues:[]},a);if(r instanceof Promise)throw new e8;return r.issues.length?{success:!1,error:new(e??tt)(r.issues.map(e=>e2(e,a,e9())))}:{success:!0,data:r.value}},ta=ti(to),tr=e=>async(t,o,i)=>{let a=i?Object.assign(i,{async:!0}):{async:!0},r=t._zod.run({value:o,issues:[]},a);return r instanceof Promise&&(r=await r),r.issues.length?{success:!1,error:new e(r.issues.map(e=>e2(e,a,e9())))}:{success:!0,data:r.value}},ts=tr(to),tn=(e,t)=>{tt.init(e,t),e.name="ZodError",Object.defineProperties(e,{format:{value:t=>(function(e,t){let o=t||function(e){return e.message},i={_errors:[]},a=e=>{for(let t of e.issues)if("invalid_union"===t.code&&t.errors.length)t.errors.map(e=>a({issues:e}));else if("invalid_key"===t.code)a({issues:t.issues});else if("invalid_element"===t.code)a({issues:t.issues});else if(0===t.path.length)i._errors.push(o(t));else{let e=i,a=0;for(;a<t.path.length;){let i=t.path[a];a===t.path.length-1?(e[i]=e[i]||{_errors:[]},e[i]._errors.push(o(t))):e[i]=e[i]||{_errors:[]},e=e[i],a++}}};return a(e),i})(e,t)},flatten:{value:t=>(function(e,t=e=>e.message){let o={},i=[];for(let a of e.issues)a.path.length>0?(o[a.path[0]]=o[a.path[0]]||[],o[a.path[0]].push(t(a))):i.push(t(a));return{formErrors:i,fieldErrors:o}})(e,t)},addIssue:{value:t=>e.issues.push(t)},addIssues:{value:t=>e.issues.push(...t)},isEmpty:{get:()=>0===e.issues.length}})};e7("ZodError",tn);let tl=e7("ZodError",tn,{Parent:Error}),td=(e,t,o,i)=>{let a=o?Object.assign(o,{async:!1}):{async:!1},r=e._zod.run({value:t,issues:[]},a);if(r instanceof Promise)throw new e8;if(r.issues.length){let e=new(i?.Err??tl)(r.issues.map(e=>e2(e,a,e9())));throw eF(e,i?.callee),e}return r.value},tc=async(e,t,o,i)=>{let a=o?Object.assign(o,{async:!0}):{async:!0},r=e._zod.run({value:t,issues:[]},a);if(r instanceof Promise&&(r=await r),r.issues.length){let e=new(i?.Err??tl)(r.issues.map(e=>e2(e,a,e9())));throw eF(e,i?.callee),e}return r.value},tu=ti(tl),tp=tr(tl);var tm=o(770),tg=({prefix:e,size:t=16,alphabet:o="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",separator:i="-"}={})=>{let a=()=>{let e=o.length,i=Array(t);for(let a=0;a<t;a++)i[a]=o[Math.random()*e|0];return i.join("")};if(null==e)return a;if(o.includes(i))throw new em({argument:"separator",message:`The separator "${i}" must not be part of the alphabet "${o}".`});return()=>`${e}${i}${a()}`};function th(e=globalThis){var t,o,i;return e.window?"runtime/browser":(null==(t=e.navigator)?void 0:t.userAgent)?`runtime/${e.navigator.userAgent.toLowerCase()}`:(null==(i=null==(o=e.process)?void 0:o.versions)?void 0:i.node)?`runtime/node.js/${e.process.version.substring(0)}`:e.EdgeRuntime?"runtime/vercel-edge":"runtime/unknown"}function tv(e,...t){let o=new Headers(Object.fromEntries(Object.entries(null!=e?e:{}).filter(([e,t])=>null!=t))),i=o.get("user-agent")||"";return o.set("user-agent",[i,...t].filter(Boolean).join(" ")),Object.fromEntries(o)}tg();var tf=/"__proto__"\s*:/,tx=/"constructor"\s*:/,tb=Symbol.for("vercel.ai.validator");function tk(e){let t;return()=>(null==t&&(t=e()),t)}async function ty({value:e,schema:t}){let o="object"==typeof t&&null!==t&&tb in t&&!0===t[tb]&&"validate"in t?t:"function"==typeof t?t():{[tb]:!0,validate:async e=>{let o=await t["~standard"].validate(e);return null==o.issues?{success:!0,value:o.value}:{success:!1,error:new eS({value:e,cause:o.issues})}}};try{if(null==o.validate)return{success:!0,value:e,rawValue:e};let t=await o.validate(e);if(t.success)return{success:!0,value:t.value,rawValue:e};return{success:!1,error:eS.wrap({value:e,cause:t.error}),rawValue:e}}catch(t){return{success:!1,error:eS.wrap({value:e,cause:t}),rawValue:e}}}async function tM({text:e,schema:t}){try{let o=function(e){let{stackTraceLimit:t}=Error;Error.stackTraceLimit=0;try{return function(e){let t=JSON.parse(e);return null===t||"object"!=typeof t||!1===tf.test(e)&&!1===tx.test(e)?t:function(e){let t=[e];for(;t.length;){let e=t;for(let o of(t=[],e)){if(Object.prototype.hasOwnProperty.call(o,"__proto__")||Object.prototype.hasOwnProperty.call(o,"constructor")&&Object.prototype.hasOwnProperty.call(o.constructor,"prototype"))throw SyntaxError("Object contains forbidden prototype property");for(let e in o){let i=o[e];i&&"object"==typeof i&&t.push(i)}}}return e}(t)}(e)}finally{Error.stackTraceLimit=t}}(e);if(null==t)return{success:!0,value:o,rawValue:o};return await ty({value:o,schema:t})}catch(t){return{success:!1,error:ef.isInstance(t)?t:new ef({text:e,cause:t}),rawValue:void 0}}}async function tI(e){return"function"==typeof e&&(e=e()),Promise.resolve(e)}var tw=(e,t)=>{let o=0;for(;o<e.length&&o<t.length&&e[o]===t[o];o++);return[(e.length-o).toString(),...t.slice(o)].join("/")},tS=Symbol("Let zodToJsonSchema decide on which parser to use"),tA={name:void 0,$refStrategy:"root",basePath:["#"],effectStrategy:"input",pipeStrategy:"all",dateStrategy:"format:date-time",mapStrategy:"entries",removeAdditionalStrategy:"passthrough",allowedAdditionalProperties:!0,rejectedAdditionalProperties:!1,definitionPath:"definitions",strictUnions:!1,definitions:{},errorMessages:!1,patternStrategy:"escape",applyRegexFlags:!1,emailStrategy:"format:email",base64Strategy:"contentEncoding:base64",nameStrategy:"ref"},tT=e=>"string"==typeof e?{...tA,name:e}:{...tA,...e};function tP(e,t){return tV(e.type._def,t)}var tN=(e,t)=>tV(e.innerType._def,t),tO=e=>{let t={type:"integer",format:"unix-time"};for(let o of e.checks)switch(o.kind){case"min":t.minimum=o.value;break;case"max":t.maximum=o.value}return t},t_=e=>(!("type"in e)||"string"!==e.type)&&"allOf"in e,tz=void 0,tE={cuid:/^[cC][^\s-]{8,}$/,cuid2:/^[0-9a-z]+$/,ulid:/^[0-9A-HJKMNP-TV-Z]{26}$/,email:/^(?!\.)(?!.*\.\.)([a-zA-Z0-9_'+\-\.]*)[a-zA-Z0-9_+-]@([a-zA-Z0-9][a-zA-Z0-9\-]*\.)+[a-zA-Z]{2,}$/,emoji:()=>(void 0===tz&&(tz=RegExp("^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$","u")),tz),ipv4Cidr:/^(?:(?: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])\/(3[0-2]|[12]?[0-9])$/,ipv6Cidr:/^(([0-9a-fA-F]{1,4}:){7,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}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,base64:/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,base64url:/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,nanoid:/^[a-zA-Z0-9_-]{21}$/,jwt:/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/};function tq(e,t){let o={type:"string"};if(e.checks)for(let i of e.checks)switch(i.kind){case"min":o.minLength="number"==typeof o.minLength?Math.max(o.minLength,i.value):i.value;break;case"max":o.maxLength="number"==typeof o.maxLength?Math.min(o.maxLength,i.value):i.value;break;case"email":switch(t.emailStrategy){case"format:email":tC(o,"email",i.message,t);break;case"format:idn-email":tC(o,"idn-email",i.message,t);break;case"pattern:zod":tR(o,tE.email,i.message,t)}break;case"url":tC(o,"uri",i.message,t);break;case"uuid":tC(o,"uuid",i.message,t);break;case"regex":tR(o,i.regex,i.message,t);break;case"cuid":tR(o,tE.cuid,i.message,t);break;case"cuid2":tR(o,tE.cuid2,i.message,t);break;case"startsWith":tR(o,RegExp(`^${tB(i.value,t)}`),i.message,t);break;case"endsWith":tR(o,RegExp(`${tB(i.value,t)}$`),i.message,t);break;case"datetime":tC(o,"date-time",i.message,t);break;case"date":tC(o,"date",i.message,t);break;case"time":tC(o,"time",i.message,t);break;case"duration":tC(o,"duration",i.message,t);break;case"length":o.minLength="number"==typeof o.minLength?Math.max(o.minLength,i.value):i.value,o.maxLength="number"==typeof o.maxLength?Math.min(o.maxLength,i.value):i.value;break;case"includes":tR(o,RegExp(tB(i.value,t)),i.message,t);break;case"ip":"v6"!==i.version&&tC(o,"ipv4",i.message,t),"v4"!==i.version&&tC(o,"ipv6",i.message,t);break;case"base64url":tR(o,tE.base64url,i.message,t);break;case"jwt":tR(o,tE.jwt,i.message,t);break;case"cidr":"v6"!==i.version&&tR(o,tE.ipv4Cidr,i.message,t),"v4"!==i.version&&tR(o,tE.ipv6Cidr,i.message,t);break;case"emoji":tR(o,tE.emoji(),i.message,t);break;case"ulid":tR(o,tE.ulid,i.message,t);break;case"base64":switch(t.base64Strategy){case"format:binary":tC(o,"binary",i.message,t);break;case"contentEncoding:base64":o.contentEncoding="base64";break;case"pattern:zod":tR(o,tE.base64,i.message,t)}break;case"nanoid":tR(o,tE.nanoid,i.message,t)}return o}function tB(e,t){return"escape"===t.patternStrategy?function(e){let t="";for(let o=0;o<e.length;o++)tj.has(e[o])||(t+="\\"),t+=e[o];return t}(e):e}var tj=new Set("ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789");function tC(e,t,o,i){var a;e.format||(null==(a=e.anyOf)?void 0:a.some(e=>e.format))?(e.anyOf||(e.anyOf=[]),e.format&&(e.anyOf.push({format:e.format}),delete e.format),e.anyOf.push({format:t,...o&&i.errorMessages&&{errorMessage:{format:o}}})):e.format=t}function tR(e,t,o,i){var a;e.pattern||(null==(a=e.allOf)?void 0:a.some(e=>e.pattern))?(e.allOf||(e.allOf=[]),e.pattern&&(e.allOf.push({pattern:e.pattern}),delete e.pattern),e.allOf.push({pattern:tL(t,i),...o&&i.errorMessages&&{errorMessage:{pattern:o}}})):e.pattern=tL(t,i)}function tL(e,t){var o;if(!t.applyRegexFlags||!e.flags)return e.source;let i={i:e.flags.includes("i"),m:e.flags.includes("m"),s:e.flags.includes("s")},a=i.i?e.source.toLowerCase():e.source,r="",s=!1,n=!1,l=!1;for(let e=0;e<a.length;e++){if(s){r+=a[e],s=!1;continue}if(i.i){if(n){if(a[e].match(/[a-z]/)){l?(r+=a[e]+`${a[e-2]}-${a[e]}`.toUpperCase(),l=!1):"-"===a[e+1]&&(null==(o=a[e+2])?void 0:o.match(/[a-z]/))?(r+=a[e],l=!0):r+=`${a[e]}${a[e].toUpperCase()}`;continue}}else if(a[e].match(/[a-z]/)){r+=`[${a[e]}${a[e].toUpperCase()}]`;continue}}if(i.m){if("^"===a[e]){r+=`(^|(?<=[\r
|
|
10
10
|
]))`;continue}if("$"===a[e]){r+=`($|(?=[\r
|
|
11
11
|
]))`;continue}}if(i.s&&"."===a[e]){r+=n?`${a[e]}\r
|
|
12
12
|
`:`[${a[e]}\r
|
|
13
|
-
]`;continue}r+=a[e],"\\"===a[e]?s=!0:n&&"]"===a[e]?n=!1:n||"["!==a[e]||(n=!0)}try{new RegExp(r)}catch(o){return console.warn(`Could not convert regex pattern at ${t.currentPath.join("/")} to a flag-independent form! Falling back to the flag-ignorant source`),e.source}return r}function tC(e,t){var o,i,a,r,s,n;let l={type:"object",additionalProperties:null!=(o=tQ(e.valueType._def,{...t,currentPath:[...t.currentPath,"additionalProperties"]}))?o:t.allowedAdditionalProperties};if((null==(i=e.keyType)?void 0:i._def.typeName)===tm.pA.ZodString&&(null==(a=e.keyType._def.checks)?void 0:a.length)){let{type:o,...i}=t_(e.keyType._def,t);return{...l,propertyNames:i}}if((null==(r=e.keyType)?void 0:r._def.typeName)===tm.pA.ZodEnum)return{...l,propertyNames:{enum:e.keyType._def.values}};if((null==(s=e.keyType)?void 0:s._def.typeName)===tm.pA.ZodBranded&&e.keyType._def.type._def.typeName===tm.pA.ZodString&&(null==(n=e.keyType._def.type._def.checks)?void 0:n.length)){let{type:o,...i}=tS(e.keyType._def,t);return{...l,propertyNames:i}}return l}var tR={ZodString:"string",ZodNumber:"number",ZodBigInt:"integer",ZodBoolean:"boolean",ZodNull:"null"},tL=(e,t)=>{let o=(e.options instanceof Map?Array.from(e.options.values()):e.options).map((e,o)=>tQ(e._def,{...t,currentPath:[...t.currentPath,"anyOf",`${o}`]})).filter(e=>!!e&&(!t.strictUnions||"object"==typeof e&&Object.keys(e).length>0));return o.length?{anyOf:o}:void 0},tD=(e,t)=>{var o;if(t.currentPath.toString()===(null==(o=t.propertyPath)?void 0:o.toString()))return tQ(e.innerType._def,t);let i=tQ(e.innerType._def,{...t,currentPath:[...t.currentPath,"anyOf","1"]});return i?{anyOf:[{not:{}},i]}:{}},t$=(e,t)=>{if("input"===t.pipeStrategy)return tQ(e.in._def,t);if("output"===t.pipeStrategy)return tQ(e.out._def,t);let o=tQ(e.in._def,{...t,currentPath:[...t.currentPath,"allOf","0"]}),i=tQ(e.out._def,{...t,currentPath:[...t.currentPath,"allOf",o?"1":"0"]});return{allOf:[o,i].filter(e=>void 0!==e)}},tZ=(e,t)=>tQ(e.innerType._def,t),tF=(e,t,o)=>{switch(t){case tm.pA.ZodString:return t_(e,o);case tm.pA.ZodNumber:return function(e){let t={type:"number"};if(!e.checks)return t;for(let o of e.checks)switch(o.kind){case"int":t.type="integer";break;case"min":o.inclusive?t.minimum=o.value:t.exclusiveMinimum=o.value;break;case"max":o.inclusive?t.maximum=o.value:t.exclusiveMaximum=o.value;break;case"multipleOf":t.multipleOf=o.value}return t}(e);case tm.pA.ZodObject:return function(e,t){let o={type:"object",properties:{}},i=[],a=e.shape();for(let e in a){let r=a[e];if(void 0===r||void 0===r._def)continue;let s=function(e){try{return e.isOptional()}catch(e){return!0}}(r),n=tQ(r._def,{...t,currentPath:[...t.currentPath,"properties",e],propertyPath:[...t.currentPath,"properties",e]});void 0!==n&&(o.properties[e]=n,s||i.push(e))}i.length&&(o.required=i);let r=function(e,t){if("ZodNever"!==e.catchall._def.typeName)return tQ(e.catchall._def,{...t,currentPath:[...t.currentPath,"additionalProperties"]});switch(e.unknownKeys){case"passthrough":return t.allowedAdditionalProperties;case"strict":return t.rejectedAdditionalProperties;case"strip":return"strict"===t.removeAdditionalStrategy?t.allowedAdditionalProperties:t.rejectedAdditionalProperties}}(e,t);return void 0!==r&&(o.additionalProperties=r),o}(e,o);case tm.pA.ZodBigInt:return function(e){let t={type:"integer",format:"int64"};if(!e.checks)return t;for(let o of e.checks)switch(o.kind){case"min":o.inclusive?t.minimum=o.value:t.exclusiveMinimum=o.value;break;case"max":o.inclusive?t.maximum=o.value:t.exclusiveMaximum=o.value;break;case"multipleOf":t.multipleOf=o.value}return t}(e);case tm.pA.ZodBoolean:return{type:"boolean"};case tm.pA.ZodDate:return function e(t,o,i){let a=null!=i?i:o.dateStrategy;if(Array.isArray(a))return{anyOf:a.map((i,a)=>e(t,o,i))};switch(a){case"string":case"format:date-time":return{type:"string",format:"date-time"};case"format:date":return{type:"string",format:"date"};case"integer":return tT(t)}}(e,o);case tm.pA.ZodUndefined:return{not:{}};case tm.pA.ZodNull:return{type:"null"};case tm.pA.ZodArray:return function(e,t){var o,i,a;let r={type:"array"};return(null==(o=e.type)?void 0:o._def)&&(null==(a=null==(i=e.type)?void 0:i._def)?void 0:a.typeName)!==tm.pA.ZodAny&&(r.items=tQ(e.type._def,{...t,currentPath:[...t.currentPath,"items"]})),e.minLength&&(r.minItems=e.minLength.value),e.maxLength&&(r.maxItems=e.maxLength.value),e.exactLength&&(r.minItems=e.exactLength.value,r.maxItems=e.exactLength.value),r}(e,o);case tm.pA.ZodUnion:case tm.pA.ZodDiscriminatedUnion:return function(e,t){let o=e.options instanceof Map?Array.from(e.options.values()):e.options;if(o.every(e=>e._def.typeName in tR&&(!e._def.checks||!e._def.checks.length))){let e=o.reduce((e,t)=>{let o=tR[t._def.typeName];return o&&!e.includes(o)?[...e,o]:e},[]);return{type:e.length>1?e:e[0]}}if(o.every(e=>"ZodLiteral"===e._def.typeName&&!e.description)){let e=o.reduce((e,t)=>{let o=typeof t._def.value;switch(o){case"string":case"number":case"boolean":return[...e,o];case"bigint":return[...e,"integer"];case"object":if(null===t._def.value)return[...e,"null"];default:return e}},[]);if(e.length===o.length){let t=e.filter((e,t,o)=>o.indexOf(e)===t);return{type:t.length>1?t:t[0],enum:o.reduce((e,t)=>e.includes(t._def.value)?e:[...e,t._def.value],[])}}}else if(o.every(e=>"ZodEnum"===e._def.typeName))return{type:"string",enum:o.reduce((e,t)=>[...e,...t._def.values.filter(t=>!e.includes(t))],[])};return tL(e,t)}(e,o);case tm.pA.ZodIntersection:return function(e,t){let o=[tQ(e.left._def,{...t,currentPath:[...t.currentPath,"allOf","0"]}),tQ(e.right._def,{...t,currentPath:[...t.currentPath,"allOf","1"]})].filter(e=>!!e),i=[];return o.forEach(e=>{if(tP(e))i.push(...e.allOf);else{let t=e;if("additionalProperties"in e&&!1===e.additionalProperties){let{additionalProperties:o,...i}=e;t=i}i.push(t)}}),i.length?{allOf:i}:void 0}(e,o);case tm.pA.ZodTuple:return function(e,t){return e.rest?{type:"array",minItems:e.items.length,items:e.items.map((e,o)=>tQ(e._def,{...t,currentPath:[...t.currentPath,"items",`${o}`]})).reduce((e,t)=>void 0===t?e:[...e,t],[]),additionalItems:tQ(e.rest._def,{...t,currentPath:[...t.currentPath,"additionalItems"]})}:{type:"array",minItems:e.items.length,maxItems:e.items.length,items:e.items.map((e,o)=>tQ(e._def,{...t,currentPath:[...t.currentPath,"items",`${o}`]})).reduce((e,t)=>void 0===t?e:[...e,t],[])}}(e,o);case tm.pA.ZodRecord:return tC(e,o);case tm.pA.ZodLiteral:return function(e){let t=typeof e.value;return"bigint"!==t&&"number"!==t&&"boolean"!==t&&"string"!==t?{type:Array.isArray(e.value)?"array":"object"}:{type:"bigint"===t?"integer":t,const:e.value}}(e);case tm.pA.ZodEnum:return{type:"string",enum:Array.from(e.values)};case tm.pA.ZodNativeEnum:return function(e){let t=e.values,o=Object.keys(e.values).filter(e=>"number"!=typeof t[t[e]]).map(e=>t[e]),i=Array.from(new Set(o.map(e=>typeof e)));return{type:1===i.length?"string"===i[0]?"string":"number":["string","number"],enum:o}}(e);case tm.pA.ZodNullable:return function(e,t){if(["ZodString","ZodNumber","ZodBigInt","ZodBoolean","ZodNull"].includes(e.innerType._def.typeName)&&(!e.innerType._def.checks||!e.innerType._def.checks.length))return{type:[tR[e.innerType._def.typeName],"null"]};let o=tQ(e.innerType._def,{...t,currentPath:[...t.currentPath,"anyOf","0"]});return o&&{anyOf:[o,{type:"null"}]}}(e,o);case tm.pA.ZodOptional:return tD(e,o);case tm.pA.ZodMap:return function(e,t){return"record"===t.mapStrategy?tC(e,t):{type:"array",maxItems:125,items:{type:"array",items:[tQ(e.keyType._def,{...t,currentPath:[...t.currentPath,"items","items","0"]})||{},tQ(e.valueType._def,{...t,currentPath:[...t.currentPath,"items","items","1"]})||{}],minItems:2,maxItems:2}}}(e,o);case tm.pA.ZodSet:return function(e,t){let o={type:"array",uniqueItems:!0,items:tQ(e.valueType._def,{...t,currentPath:[...t.currentPath,"items"]})};return e.minSize&&(o.minItems=e.minSize.value),e.maxSize&&(o.maxItems=e.maxSize.value),o}(e,o);case tm.pA.ZodLazy:return()=>e.getter()._def;case tm.pA.ZodPromise:return tQ(e.type._def,o);case tm.pA.ZodNaN:case tm.pA.ZodNever:return{not:{}};case tm.pA.ZodEffects:return function(e,t){return"input"===t.effectStrategy?tQ(e.schema._def,t):{}}(e,o);case tm.pA.ZodAny:case tm.pA.ZodUnknown:return{};case tm.pA.ZodDefault:return function(e,t){return{...tQ(e.innerType._def,t),default:e.defaultValue()}}(e,o);case tm.pA.ZodBranded:return tS(e,o);case tm.pA.ZodReadonly:return tZ(e,o);case tm.pA.ZodCatch:return tA(e,o);case tm.pA.ZodPipeline:return t$(e,o);case tm.pA.ZodFunction:case tm.pA.ZodVoid:case tm.pA.ZodSymbol:default:return}};function tQ(e,t,o=!1){var i;let a=t.seen.get(e);if(t.override){let r=null==(i=t.override)?void 0:i.call(t,e,t,a,o);if(r!==tM)return r}if(a&&!o){let e=tG(a,t);if(void 0!==e)return e}let r={def:e,path:t.currentPath,jsonSchema:void 0};t.seen.set(e,r);let s=tF(e,e.typeName,t),n="function"==typeof s?tQ(s(),t):s;if(n&&tU(e,t,n),t.postProcess){let o=t.postProcess(n,e,t);return r.jsonSchema=n,o}return r.jsonSchema=n,n}var tG=(e,t)=>{switch(t.$refStrategy){case"root":return{$ref:e.path.join("/")};case"relative":return{$ref:ty(t.currentPath,e.path)};case"none":case"seen":if(e.path.length<t.currentPath.length&&e.path.every((e,o)=>t.currentPath[o]===e))return console.warn(`Recursive reference detected at ${t.currentPath.join("/")}! Defaulting to any`),{};return"seen"===t.$refStrategy?{}:void 0}},tU=(e,t,o)=>(e.description&&(o.description=e.description),o),tV=e=>{let t=tw(e),o=void 0!==t.name?[...t.basePath,t.definitionPath,t.name]:t.basePath;return{...t,currentPath:o,propertyPath:void 0,seen:new Map(Object.entries(t.definitions).map(([e,o])=>[o._def,{def:o._def,path:[...t.basePath,t.definitionPath,e],jsonSchema:void 0}]))}},tK=(e,t)=>{var o;let i=tV(t),a="object"==typeof t&&t.definitions?Object.entries(t.definitions).reduce((e,[t,o])=>{var a;return{...e,[t]:null!=(a=tQ(o._def,{...i,currentPath:[...i.basePath,i.definitionPath,t]},!0))?a:{}}},{}):void 0,r="string"==typeof t?t:(null==t?void 0:t.nameStrategy)==="title"?void 0:null==t?void 0:t.name,s=null!=(o=tQ(e._def,void 0===r?i:{...i,currentPath:[...i.basePath,i.definitionPath,r]},!1))?o:{},n="object"==typeof t&&void 0!==t.name&&"title"===t.nameStrategy?t.name:void 0;void 0!==n&&(s.title=n);let l=void 0===r?a?{...s,[i.definitionPath]:a}:s:{$ref:[..."relative"===i.$refStrategy?[]:i.basePath,i.definitionPath,r].join("/"),[i.definitionPath]:{...a,[r]:s}};return l.$schema="http://json-schema.org/draft-07/schema#",l},tW=Symbol.for("vercel.ai.schema");function tJ(e,{validate:t}={}){return{[tW]:!0,_type:void 0,[tf]:!0,jsonSchema:e,validate:t}}var{btoa:tY,atob:tH}=globalThis;let tX=/^[cC][^\s-]{8,}$/,t0=/^[0-9a-z]+$/,t2=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,t1=/^[0-9a-vA-V]{20}$/,t5=/^[A-Za-z0-9]{27}$/,t3=/^[a-zA-Z0-9_-]{21}$/,t4=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,t7=/^([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})$/,t8=e=>e?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})$`):/^([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)$/,t6=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,t9=/^(?:(?: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])$/,oe=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})$/,ot=/^((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])$/,oo=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,oi=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,oa=/^[A-Za-z0-9_-]*$/,or=/^([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+$/,os=/^\+(?:[0-9]){6,14}[0-9]$/,on="(?:(?:\\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])))",ol=RegExp(`^${on}$`);function od(e){let t="(?:[01]\\d|2[0-3]):[0-5]\\d";return"number"==typeof e.precision?-1===e.precision?`${t}`:0===e.precision?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}let oc=e=>{let t=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??""}}`:"[\\s\\S]*";return RegExp(`^${t}$`)},ou=/^\d+$/,op=/^-?\d+(?:\.\d+)?/i,om=/true|false/i,og=/null/i,oh=/^[^A-Z]*$/,ov=/^[^a-z]*$/,of=e7("$ZodCheck",(e,t)=>{var o;e._zod??(e._zod={}),e._zod.def=t,(o=e._zod).onattach??(o.onattach=[])}),ox={number:"number",bigint:"bigint",object:"date"},ob=e7("$ZodCheckLessThan",(e,t)=>{of.init(e,t);let o=ox[typeof t.value];e._zod.onattach.push(e=>{let o=e._zod.bag,i=(t.inclusive?o.maximum:o.exclusiveMaximum)??Number.POSITIVE_INFINITY;t.value<i&&(t.inclusive?o.maximum=t.value:o.exclusiveMaximum=t.value)}),e._zod.check=i=>{(t.inclusive?i.value<=t.value:i.value<t.value)||i.issues.push({origin:o,code:"too_big",maximum:t.value,input:i.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),ok=e7("$ZodCheckGreaterThan",(e,t)=>{of.init(e,t);let o=ox[typeof t.value];e._zod.onattach.push(e=>{let o=e._zod.bag,i=(t.inclusive?o.minimum:o.exclusiveMinimum)??Number.NEGATIVE_INFINITY;t.value>i&&(t.inclusive?o.minimum=t.value:o.exclusiveMinimum=t.value)}),e._zod.check=i=>{(t.inclusive?i.value>=t.value:i.value>t.value)||i.issues.push({origin:o,code:"too_small",minimum:t.value,input:i.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),oy=e7("$ZodCheckMultipleOf",(e,t)=>{of.init(e,t),e._zod.onattach.push(e=>{var o;(o=e._zod.bag).multipleOf??(o.multipleOf=t.value)}),e._zod.check=o=>{if(typeof o.value!=typeof t.value)throw Error("Cannot mix number and bigint in multiple_of check.");("bigint"==typeof o.value?o.value%t.value===BigInt(0):0===function(e,t){let o=(e.toString().split(".")[1]||"").length,i=(t.toString().split(".")[1]||"").length,a=o>i?o:i;return Number.parseInt(e.toFixed(a).replace(".",""))%Number.parseInt(t.toFixed(a).replace(".",""))/10**a}(o.value,t.value))||o.issues.push({origin:typeof o.value,code:"not_multiple_of",divisor:t.value,input:o.value,inst:e,continue:!t.abort})}}),oM=e7("$ZodCheckNumberFormat",(e,t)=>{of.init(e,t),t.format=t.format||"float64";let o=t.format?.includes("int"),i=o?"int":"number",[a,r]=eY[t.format];e._zod.onattach.push(e=>{let i=e._zod.bag;i.format=t.format,i.minimum=a,i.maximum=r,o&&(i.pattern=ou)}),e._zod.check=s=>{let n=s.value;if(o){if(!Number.isInteger(n)){s.issues.push({expected:i,format:t.format,code:"invalid_type",input:n,inst:e});return}if(!Number.isSafeInteger(n)){n>0?s.issues.push({input:n,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:i,continue:!t.abort}):s.issues.push({input:n,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:i,continue:!t.abort});return}}n<a&&s.issues.push({origin:"number",input:n,code:"too_small",minimum:a,inclusive:!0,inst:e,continue:!t.abort}),n>r&&s.issues.push({origin:"number",input:n,code:"too_big",maximum:r,inst:e})}}),oI=e7("$ZodCheckMaxLength",(e,t)=>{var o;of.init(e,t),(o=e._zod.def).when??(o.when=e=>{let t=e.value;return null!=t&&void 0!==t.length}),e._zod.onattach.push(e=>{let o=e._zod.bag.maximum??Number.POSITIVE_INFINITY;t.maximum<o&&(e._zod.bag.maximum=t.maximum)}),e._zod.check=o=>{let i=o.value;if(i.length<=t.maximum)return;let a=e1(i);o.issues.push({origin:a,code:"too_big",maximum:t.maximum,inclusive:!0,input:i,inst:e,continue:!t.abort})}}),ow=e7("$ZodCheckMinLength",(e,t)=>{var o;of.init(e,t),(o=e._zod.def).when??(o.when=e=>{let t=e.value;return null!=t&&void 0!==t.length}),e._zod.onattach.push(e=>{let o=e._zod.bag.minimum??Number.NEGATIVE_INFINITY;t.minimum>o&&(e._zod.bag.minimum=t.minimum)}),e._zod.check=o=>{let i=o.value;if(i.length>=t.minimum)return;let a=e1(i);o.issues.push({origin:a,code:"too_small",minimum:t.minimum,inclusive:!0,input:i,inst:e,continue:!t.abort})}}),oS=e7("$ZodCheckLengthEquals",(e,t)=>{var o;of.init(e,t),(o=e._zod.def).when??(o.when=e=>{let t=e.value;return null!=t&&void 0!==t.length}),e._zod.onattach.push(e=>{let o=e._zod.bag;o.minimum=t.length,o.maximum=t.length,o.length=t.length}),e._zod.check=o=>{let i=o.value,a=i.length;if(a===t.length)return;let r=e1(i),s=a>t.length;o.issues.push({origin:r,...s?{code:"too_big",maximum:t.length}:{code:"too_small",minimum:t.length},inclusive:!0,exact:!0,input:o.value,inst:e,continue:!t.abort})}}),oA=e7("$ZodCheckStringFormat",(e,t)=>{var o,i;of.init(e,t),e._zod.onattach.push(e=>{let o=e._zod.bag;o.format=t.format,t.pattern&&(o.patterns??(o.patterns=new Set),o.patterns.add(t.pattern))}),t.pattern?(o=e._zod).check??(o.check=o=>{t.pattern.lastIndex=0,t.pattern.test(o.value)||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})}):(i=e._zod).check??(i.check=()=>{})}),oT=e7("$ZodCheckRegex",(e,t)=>{oA.init(e,t),e._zod.check=o=>{t.pattern.lastIndex=0,t.pattern.test(o.value)||o.issues.push({origin:"string",code:"invalid_format",format:"regex",input:o.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),oP=e7("$ZodCheckLowerCase",(e,t)=>{t.pattern??(t.pattern=oh),oA.init(e,t)}),oN=e7("$ZodCheckUpperCase",(e,t)=>{t.pattern??(t.pattern=ov),oA.init(e,t)}),oO=e7("$ZodCheckIncludes",(e,t)=>{of.init(e,t);let o=eK(t.includes),i=new RegExp("number"==typeof t.position?`^.{${t.position}}${o}`:o);t.pattern=i,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??(t.patterns=new Set),t.patterns.add(i)}),e._zod.check=o=>{o.value.includes(t.includes,t.position)||o.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:t.includes,input:o.value,inst:e,continue:!t.abort})}}),o_=e7("$ZodCheckStartsWith",(e,t)=>{of.init(e,t);let o=RegExp(`^${eK(t.prefix)}.*`);t.pattern??(t.pattern=o),e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??(t.patterns=new Set),t.patterns.add(o)}),e._zod.check=o=>{o.value.startsWith(t.prefix)||o.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:t.prefix,input:o.value,inst:e,continue:!t.abort})}}),oz=e7("$ZodCheckEndsWith",(e,t)=>{of.init(e,t);let o=RegExp(`.*${eK(t.suffix)}$`);t.pattern??(t.pattern=o),e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??(t.patterns=new Set),t.patterns.add(o)}),e._zod.check=o=>{o.value.endsWith(t.suffix)||o.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:t.suffix,input:o.value,inst:e,continue:!t.abort})}}),oE=e7("$ZodCheckOverwrite",(e,t)=>{of.init(e,t),e._zod.check=e=>{e.value=t.tx(e.value)}});class oq{constructor(e=[]){this.content=[],this.indent=0,this&&(this.args=e)}indented(e){this.indent+=1,e(this),this.indent-=1}write(e){if("function"==typeof e){e(this,{execution:"sync"}),e(this,{execution:"async"});return}let t=e.split("\n").filter(e=>e),o=Math.min(...t.map(e=>e.length-e.trimStart().length));for(let e of t.map(e=>e.slice(o)).map(e=>" ".repeat(2*this.indent)+e))this.content.push(e)}compile(){return Function(...this?.args,[...(this?.content??[""]).map(e=>` ${e}`)].join("\n"))}}let oB={major:4,minor:0,patch:0},oj=e7("$ZodType",(e,t)=>{var o;e??(e={}),e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=oB;let i=[...e._zod.def.checks??[]];for(let t of(e._zod.traits.has("$ZodCheck")&&i.unshift(e),i))for(let o of t._zod.onattach)o(e);if(0===i.length)(o=e._zod).deferred??(o.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{let t=(e,t,o)=>{let i,a=eH(e);for(let r of t){if(r._zod.def.when){if(!r._zod.def.when(e))continue}else if(a)continue;let t=e.issues.length,s=r._zod.check(e);if(s instanceof Promise&&o?.async===!1)throw new e8;if(i||s instanceof Promise)i=(i??Promise.resolve()).then(async()=>{await s,e.issues.length===t||a||(a=eH(e,t))});else{if(e.issues.length===t)continue;a||(a=eH(e,t))}}return i?i.then(()=>e):e};e._zod.run=(o,a)=>{let r=e._zod.parse(o,a);if(r instanceof Promise){if(!1===a.async)throw new e8;return r.then(e=>t(e,i,a))}return t(r,i,a)}}e["~standard"]={validate:t=>{try{let o=ta(e,t);return o.success?{value:o.data}:{issues:o.error?.issues}}catch(o){return ts(e,t).then(e=>e.success?{value:e.data}:{issues:e.error?.issues})}},vendor:"zod",version:1}}),oC=e7("$ZodString",(e,t)=>{oj.init(e,t),e._zod.pattern=[...e?._zod.bag?.patterns??[]].pop()??oc(e._zod.bag),e._zod.parse=(o,i)=>{if(t.coerce)try{o.value=String(o.value)}catch(e){}return"string"==typeof o.value||o.issues.push({expected:"string",code:"invalid_type",input:o.value,inst:e}),o}}),oR=e7("$ZodStringFormat",(e,t)=>{oA.init(e,t),oC.init(e,t)}),oL=e7("$ZodGUID",(e,t)=>{t.pattern??(t.pattern=t7),oR.init(e,t)}),oD=e7("$ZodUUID",(e,t)=>{if(t.version){let e={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[t.version];if(void 0===e)throw Error(`Invalid UUID version: "${t.version}"`);t.pattern??(t.pattern=t8(e))}else t.pattern??(t.pattern=t8());oR.init(e,t)}),o$=e7("$ZodEmail",(e,t)=>{t.pattern??(t.pattern=t6),oR.init(e,t)}),oZ=e7("$ZodURL",(e,t)=>{oR.init(e,t),e._zod.check=o=>{try{let i=o.value,a=new URL(i),r=a.href;t.hostname&&(t.hostname.lastIndex=0,t.hostname.test(a.hostname)||o.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:or.source,input:o.value,inst:e,continue:!t.abort})),t.protocol&&(t.protocol.lastIndex=0,t.protocol.test(a.protocol.endsWith(":")?a.protocol.slice(0,-1):a.protocol)||o.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:t.protocol.source,input:o.value,inst:e,continue:!t.abort})),!i.endsWith("/")&&r.endsWith("/")?o.value=r.slice(0,-1):o.value=r;return}catch(i){o.issues.push({code:"invalid_format",format:"url",input:o.value,inst:e,continue:!t.abort})}}}),oF=e7("$ZodEmoji",(e,t)=>{t.pattern??(t.pattern=RegExp("^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$","u")),oR.init(e,t)}),oQ=e7("$ZodNanoID",(e,t)=>{t.pattern??(t.pattern=t3),oR.init(e,t)}),oG=e7("$ZodCUID",(e,t)=>{t.pattern??(t.pattern=tX),oR.init(e,t)}),oU=e7("$ZodCUID2",(e,t)=>{t.pattern??(t.pattern=t0),oR.init(e,t)}),oV=e7("$ZodULID",(e,t)=>{t.pattern??(t.pattern=t2),oR.init(e,t)}),oK=e7("$ZodXID",(e,t)=>{t.pattern??(t.pattern=t1),oR.init(e,t)}),oW=e7("$ZodKSUID",(e,t)=>{t.pattern??(t.pattern=t5),oR.init(e,t)}),oJ=e7("$ZodISODateTime",(e,t)=>{t.pattern??(t.pattern=function(e){let t=od({precision:e.precision}),o=["Z"];e.local&&o.push(""),e.offset&&o.push("([+-]\\d{2}:\\d{2})");let i=`${t}(?:${o.join("|")})`;return RegExp(`^${on}T(?:${i})$`)}(t)),oR.init(e,t)}),oY=e7("$ZodISODate",(e,t)=>{t.pattern??(t.pattern=ol),oR.init(e,t)}),oH=e7("$ZodISOTime",(e,t)=>{t.pattern??(t.pattern=RegExp(`^${od(t)}$`)),oR.init(e,t)}),oX=e7("$ZodISODuration",(e,t)=>{t.pattern??(t.pattern=t4),oR.init(e,t)}),o0=e7("$ZodIPv4",(e,t)=>{t.pattern??(t.pattern=t9),oR.init(e,t),e._zod.onattach.push(e=>{e._zod.bag.format="ipv4"})}),o2=e7("$ZodIPv6",(e,t)=>{t.pattern??(t.pattern=oe),oR.init(e,t),e._zod.onattach.push(e=>{e._zod.bag.format="ipv6"}),e._zod.check=o=>{try{new URL(`http://[${o.value}]`)}catch{o.issues.push({code:"invalid_format",format:"ipv6",input:o.value,inst:e,continue:!t.abort})}}}),o1=e7("$ZodCIDRv4",(e,t)=>{t.pattern??(t.pattern=ot),oR.init(e,t)}),o5=e7("$ZodCIDRv6",(e,t)=>{t.pattern??(t.pattern=oo),oR.init(e,t),e._zod.check=o=>{let[i,a]=o.value.split("/");try{if(!a)throw Error();let e=Number(a);if(`${e}`!==a||e<0||e>128)throw Error();new URL(`http://[${i}]`)}catch{o.issues.push({code:"invalid_format",format:"cidrv6",input:o.value,inst:e,continue:!t.abort})}}});function o3(e){if(""===e)return!0;if(e.length%4!=0)return!1;try{return atob(e),!0}catch{return!1}}let o4=e7("$ZodBase64",(e,t)=>{t.pattern??(t.pattern=oi),oR.init(e,t),e._zod.onattach.push(e=>{e._zod.bag.contentEncoding="base64"}),e._zod.check=o=>{o3(o.value)||o.issues.push({code:"invalid_format",format:"base64",input:o.value,inst:e,continue:!t.abort})}}),o7=e7("$ZodBase64URL",(e,t)=>{t.pattern??(t.pattern=oa),oR.init(e,t),e._zod.onattach.push(e=>{e._zod.bag.contentEncoding="base64url"}),e._zod.check=o=>{!function(e){if(!oa.test(e))return!1;let t=e.replace(/[-_]/g,e=>"-"===e?"+":"/");return o3(t.padEnd(4*Math.ceil(t.length/4),"="))}(o.value)&&o.issues.push({code:"invalid_format",format:"base64url",input:o.value,inst:e,continue:!t.abort})}}),o8=e7("$ZodE164",(e,t)=>{t.pattern??(t.pattern=os),oR.init(e,t)}),o6=e7("$ZodJWT",(e,t)=>{oR.init(e,t),e._zod.check=o=>{!function(e,t=null){try{let o=e.split(".");if(3!==o.length)return!1;let[i]=o;if(!i)return!1;let a=JSON.parse(atob(i));if("typ"in a&&a?.typ!=="JWT"||!a.alg||t&&(!("alg"in a)||a.alg!==t))return!1;return!0}catch{return!1}}(o.value,t.alg)&&o.issues.push({code:"invalid_format",format:"jwt",input:o.value,inst:e,continue:!t.abort})}}),o9=e7("$ZodNumber",(e,t)=>{oj.init(e,t),e._zod.pattern=e._zod.bag.pattern??op,e._zod.parse=(o,i)=>{if(t.coerce)try{o.value=Number(o.value)}catch(e){}let a=o.value;if("number"==typeof a&&!Number.isNaN(a)&&Number.isFinite(a))return o;let r="number"==typeof a?Number.isNaN(a)?"NaN":Number.isFinite(a)?void 0:"Infinity":void 0;return o.issues.push({expected:"number",code:"invalid_type",input:a,inst:e,...r?{received:r}:{}}),o}}),ie=e7("$ZodNumber",(e,t)=>{oM.init(e,t),o9.init(e,t)}),it=e7("$ZodBoolean",(e,t)=>{oj.init(e,t),e._zod.pattern=om,e._zod.parse=(o,i)=>{if(t.coerce)try{o.value=!!o.value}catch(e){}let a=o.value;return"boolean"==typeof a||o.issues.push({expected:"boolean",code:"invalid_type",input:a,inst:e}),o}}),io=e7("$ZodNull",(e,t)=>{oj.init(e,t),e._zod.pattern=og,e._zod.values=new Set([null]),e._zod.parse=(t,o)=>{let i=t.value;return null===i||t.issues.push({expected:"null",code:"invalid_type",input:i,inst:e}),t}}),ii=e7("$ZodUnknown",(e,t)=>{oj.init(e,t),e._zod.parse=e=>e}),ia=e7("$ZodNever",(e,t)=>{oj.init(e,t),e._zod.parse=(t,o)=>(t.issues.push({expected:"never",code:"invalid_type",input:t.value,inst:e}),t)});function ir(e,t,o){e.issues.length&&t.issues.push(...eX(o,e.issues)),t.value[o]=e.value}let is=e7("$ZodArray",(e,t)=>{oj.init(e,t),e._zod.parse=(o,i)=>{let a=o.value;if(!Array.isArray(a))return o.issues.push({expected:"array",code:"invalid_type",input:a,inst:e}),o;o.value=Array(a.length);let r=[];for(let e=0;e<a.length;e++){let s=a[e],n=t.element._zod.run({value:s,issues:[]},i);n instanceof Promise?r.push(n.then(t=>ir(t,o,e))):ir(n,o,e)}return r.length?Promise.all(r).then(()=>o):o}});function il(e,t,o){e.issues.length&&t.issues.push(...eX(o,e.issues)),t.value[o]=e.value}function id(e,t,o,i){e.issues.length?void 0===i[o]?o in i?t.value[o]=void 0:t.value[o]=e.value:t.issues.push(...eX(o,e.issues)):void 0===e.value?o in i&&(t.value[o]=void 0):t.value[o]=e.value}let ic=e7("$ZodObject",(e,t)=>{let o,i;oj.init(e,t);let a=eR(()=>{let e=Object.keys(t.shape);for(let o of e)if(!(t.shape[o]instanceof oj))throw Error(`Invalid element at key "${o}": expected a Zod schema`);let o=function(e){return Object.keys(e).filter(t=>"optional"===e[t]._zod.optin&&"optional"===e[t]._zod.optout)}(t.shape);return{shape:t.shape,keys:e,keySet:new Set(e),numKeys:e.length,optionalKeys:new Set(o)}});eD(e._zod,"propValues",()=>{let e=t.shape,o={};for(let t in e){let i=e[t]._zod;if(i.values)for(let e of(o[t]??(o[t]=new Set),i.values))o[t].add(e)}return o});let r=e=>{let t=new oq(["shape","payload","ctx"]),o=a.value,i=e=>{let t=eZ(e);return`shape[${t}]._zod.run({ value: input[${t}], issues: [] }, ctx)`};t.write("const input = payload.value;");let r=Object.create(null),s=0;for(let e of o.keys)r[e]=`key_${s++}`;for(let e of(t.write("const newResult = {}"),o.keys))if(o.optionalKeys.has(e)){let o=r[e];t.write(`const ${o} = ${i(e)};`);let a=eZ(e);t.write(`
|
|
13
|
+
]`;continue}r+=a[e],"\\"===a[e]?s=!0:n&&"]"===a[e]?n=!1:n||"["!==a[e]||(n=!0)}try{new RegExp(r)}catch(o){return console.warn(`Could not convert regex pattern at ${t.currentPath.join("/")} to a flag-independent form! Falling back to the flag-ignorant source`),e.source}return r}function tD(e,t){var o,i,a,r,s,n;let l={type:"object",additionalProperties:null!=(o=tV(e.valueType._def,{...t,currentPath:[...t.currentPath,"additionalProperties"]}))?o:t.allowedAdditionalProperties};if((null==(i=e.keyType)?void 0:i._def.typeName)===tm.pA.ZodString&&(null==(a=e.keyType._def.checks)?void 0:a.length)){let{type:o,...i}=tq(e.keyType._def,t);return{...l,propertyNames:i}}if((null==(r=e.keyType)?void 0:r._def.typeName)===tm.pA.ZodEnum)return{...l,propertyNames:{enum:e.keyType._def.values}};if((null==(s=e.keyType)?void 0:s._def.typeName)===tm.pA.ZodBranded&&e.keyType._def.type._def.typeName===tm.pA.ZodString&&(null==(n=e.keyType._def.type._def.checks)?void 0:n.length)){let{type:o,...i}=tP(e.keyType._def,t);return{...l,propertyNames:i}}return l}var t$={ZodString:"string",ZodNumber:"number",ZodBigInt:"integer",ZodBoolean:"boolean",ZodNull:"null"},tZ=(e,t)=>{let o=(e.options instanceof Map?Array.from(e.options.values()):e.options).map((e,o)=>tV(e._def,{...t,currentPath:[...t.currentPath,"anyOf",`${o}`]})).filter(e=>!!e&&(!t.strictUnions||"object"==typeof e&&Object.keys(e).length>0));return o.length?{anyOf:o}:void 0},tF=(e,t)=>{var o;if(t.currentPath.toString()===(null==(o=t.propertyPath)?void 0:o.toString()))return tV(e.innerType._def,t);let i=tV(e.innerType._def,{...t,currentPath:[...t.currentPath,"anyOf","1"]});return i?{anyOf:[{not:{}},i]}:{}},tQ=(e,t)=>{if("input"===t.pipeStrategy)return tV(e.in._def,t);if("output"===t.pipeStrategy)return tV(e.out._def,t);let o=tV(e.in._def,{...t,currentPath:[...t.currentPath,"allOf","0"]}),i=tV(e.out._def,{...t,currentPath:[...t.currentPath,"allOf",o?"1":"0"]});return{allOf:[o,i].filter(e=>void 0!==e)}},tG=(e,t)=>tV(e.innerType._def,t),tU=(e,t,o)=>{switch(t){case tm.pA.ZodString:return tq(e,o);case tm.pA.ZodNumber:return function(e){let t={type:"number"};if(!e.checks)return t;for(let o of e.checks)switch(o.kind){case"int":t.type="integer";break;case"min":o.inclusive?t.minimum=o.value:t.exclusiveMinimum=o.value;break;case"max":o.inclusive?t.maximum=o.value:t.exclusiveMaximum=o.value;break;case"multipleOf":t.multipleOf=o.value}return t}(e);case tm.pA.ZodObject:return function(e,t){let o={type:"object",properties:{}},i=[],a=e.shape();for(let e in a){let r=a[e];if(void 0===r||void 0===r._def)continue;let s=function(e){try{return e.isOptional()}catch(e){return!0}}(r),n=tV(r._def,{...t,currentPath:[...t.currentPath,"properties",e],propertyPath:[...t.currentPath,"properties",e]});void 0!==n&&(o.properties[e]=n,s||i.push(e))}i.length&&(o.required=i);let r=function(e,t){if("ZodNever"!==e.catchall._def.typeName)return tV(e.catchall._def,{...t,currentPath:[...t.currentPath,"additionalProperties"]});switch(e.unknownKeys){case"passthrough":return t.allowedAdditionalProperties;case"strict":return t.rejectedAdditionalProperties;case"strip":return"strict"===t.removeAdditionalStrategy?t.allowedAdditionalProperties:t.rejectedAdditionalProperties}}(e,t);return void 0!==r&&(o.additionalProperties=r),o}(e,o);case tm.pA.ZodBigInt:return function(e){let t={type:"integer",format:"int64"};if(!e.checks)return t;for(let o of e.checks)switch(o.kind){case"min":o.inclusive?t.minimum=o.value:t.exclusiveMinimum=o.value;break;case"max":o.inclusive?t.maximum=o.value:t.exclusiveMaximum=o.value;break;case"multipleOf":t.multipleOf=o.value}return t}(e);case tm.pA.ZodBoolean:return{type:"boolean"};case tm.pA.ZodDate:return function e(t,o,i){let a=null!=i?i:o.dateStrategy;if(Array.isArray(a))return{anyOf:a.map((i,a)=>e(t,o,i))};switch(a){case"string":case"format:date-time":return{type:"string",format:"date-time"};case"format:date":return{type:"string",format:"date"};case"integer":return tO(t)}}(e,o);case tm.pA.ZodUndefined:return{not:{}};case tm.pA.ZodNull:return{type:"null"};case tm.pA.ZodArray:return function(e,t){var o,i,a;let r={type:"array"};return(null==(o=e.type)?void 0:o._def)&&(null==(a=null==(i=e.type)?void 0:i._def)?void 0:a.typeName)!==tm.pA.ZodAny&&(r.items=tV(e.type._def,{...t,currentPath:[...t.currentPath,"items"]})),e.minLength&&(r.minItems=e.minLength.value),e.maxLength&&(r.maxItems=e.maxLength.value),e.exactLength&&(r.minItems=e.exactLength.value,r.maxItems=e.exactLength.value),r}(e,o);case tm.pA.ZodUnion:case tm.pA.ZodDiscriminatedUnion:return function(e,t){let o=e.options instanceof Map?Array.from(e.options.values()):e.options;if(o.every(e=>e._def.typeName in t$&&(!e._def.checks||!e._def.checks.length))){let e=o.reduce((e,t)=>{let o=t$[t._def.typeName];return o&&!e.includes(o)?[...e,o]:e},[]);return{type:e.length>1?e:e[0]}}if(o.every(e=>"ZodLiteral"===e._def.typeName&&!e.description)){let e=o.reduce((e,t)=>{let o=typeof t._def.value;switch(o){case"string":case"number":case"boolean":return[...e,o];case"bigint":return[...e,"integer"];case"object":if(null===t._def.value)return[...e,"null"];default:return e}},[]);if(e.length===o.length){let t=e.filter((e,t,o)=>o.indexOf(e)===t);return{type:t.length>1?t:t[0],enum:o.reduce((e,t)=>e.includes(t._def.value)?e:[...e,t._def.value],[])}}}else if(o.every(e=>"ZodEnum"===e._def.typeName))return{type:"string",enum:o.reduce((e,t)=>[...e,...t._def.values.filter(t=>!e.includes(t))],[])};return tZ(e,t)}(e,o);case tm.pA.ZodIntersection:return function(e,t){let o=[tV(e.left._def,{...t,currentPath:[...t.currentPath,"allOf","0"]}),tV(e.right._def,{...t,currentPath:[...t.currentPath,"allOf","1"]})].filter(e=>!!e),i=[];return o.forEach(e=>{if(t_(e))i.push(...e.allOf);else{let t=e;if("additionalProperties"in e&&!1===e.additionalProperties){let{additionalProperties:o,...i}=e;t=i}i.push(t)}}),i.length?{allOf:i}:void 0}(e,o);case tm.pA.ZodTuple:return function(e,t){return e.rest?{type:"array",minItems:e.items.length,items:e.items.map((e,o)=>tV(e._def,{...t,currentPath:[...t.currentPath,"items",`${o}`]})).reduce((e,t)=>void 0===t?e:[...e,t],[]),additionalItems:tV(e.rest._def,{...t,currentPath:[...t.currentPath,"additionalItems"]})}:{type:"array",minItems:e.items.length,maxItems:e.items.length,items:e.items.map((e,o)=>tV(e._def,{...t,currentPath:[...t.currentPath,"items",`${o}`]})).reduce((e,t)=>void 0===t?e:[...e,t],[])}}(e,o);case tm.pA.ZodRecord:return tD(e,o);case tm.pA.ZodLiteral:return function(e){let t=typeof e.value;return"bigint"!==t&&"number"!==t&&"boolean"!==t&&"string"!==t?{type:Array.isArray(e.value)?"array":"object"}:{type:"bigint"===t?"integer":t,const:e.value}}(e);case tm.pA.ZodEnum:return{type:"string",enum:Array.from(e.values)};case tm.pA.ZodNativeEnum:return function(e){let t=e.values,o=Object.keys(e.values).filter(e=>"number"!=typeof t[t[e]]).map(e=>t[e]),i=Array.from(new Set(o.map(e=>typeof e)));return{type:1===i.length?"string"===i[0]?"string":"number":["string","number"],enum:o}}(e);case tm.pA.ZodNullable:return function(e,t){if(["ZodString","ZodNumber","ZodBigInt","ZodBoolean","ZodNull"].includes(e.innerType._def.typeName)&&(!e.innerType._def.checks||!e.innerType._def.checks.length))return{type:[t$[e.innerType._def.typeName],"null"]};let o=tV(e.innerType._def,{...t,currentPath:[...t.currentPath,"anyOf","0"]});return o&&{anyOf:[o,{type:"null"}]}}(e,o);case tm.pA.ZodOptional:return tF(e,o);case tm.pA.ZodMap:return function(e,t){return"record"===t.mapStrategy?tD(e,t):{type:"array",maxItems:125,items:{type:"array",items:[tV(e.keyType._def,{...t,currentPath:[...t.currentPath,"items","items","0"]})||{},tV(e.valueType._def,{...t,currentPath:[...t.currentPath,"items","items","1"]})||{}],minItems:2,maxItems:2}}}(e,o);case tm.pA.ZodSet:return function(e,t){let o={type:"array",uniqueItems:!0,items:tV(e.valueType._def,{...t,currentPath:[...t.currentPath,"items"]})};return e.minSize&&(o.minItems=e.minSize.value),e.maxSize&&(o.maxItems=e.maxSize.value),o}(e,o);case tm.pA.ZodLazy:return()=>e.getter()._def;case tm.pA.ZodPromise:return tV(e.type._def,o);case tm.pA.ZodNaN:case tm.pA.ZodNever:return{not:{}};case tm.pA.ZodEffects:return function(e,t){return"input"===t.effectStrategy?tV(e.schema._def,t):{}}(e,o);case tm.pA.ZodAny:case tm.pA.ZodUnknown:return{};case tm.pA.ZodDefault:return function(e,t){return{...tV(e.innerType._def,t),default:e.defaultValue()}}(e,o);case tm.pA.ZodBranded:return tP(e,o);case tm.pA.ZodReadonly:return tG(e,o);case tm.pA.ZodCatch:return tN(e,o);case tm.pA.ZodPipeline:return tQ(e,o);case tm.pA.ZodFunction:case tm.pA.ZodVoid:case tm.pA.ZodSymbol:default:return}};function tV(e,t,o=!1){var i;let a=t.seen.get(e);if(t.override){let r=null==(i=t.override)?void 0:i.call(t,e,t,a,o);if(r!==tS)return r}if(a&&!o){let e=tK(a,t);if(void 0!==e)return e}let r={def:e,path:t.currentPath,jsonSchema:void 0};t.seen.set(e,r);let s=tU(e,e.typeName,t),n="function"==typeof s?tV(s(),t):s;if(n&&tW(e,t,n),t.postProcess){let o=t.postProcess(n,e,t);return r.jsonSchema=n,o}return r.jsonSchema=n,n}var tK=(e,t)=>{switch(t.$refStrategy){case"root":return{$ref:e.path.join("/")};case"relative":return{$ref:tw(t.currentPath,e.path)};case"none":case"seen":if(e.path.length<t.currentPath.length&&e.path.every((e,o)=>t.currentPath[o]===e))return console.warn(`Recursive reference detected at ${t.currentPath.join("/")}! Defaulting to any`),{};return"seen"===t.$refStrategy?{}:void 0}},tW=(e,t,o)=>(e.description&&(o.description=e.description),o),tJ=e=>{let t=tT(e),o=void 0!==t.name?[...t.basePath,t.definitionPath,t.name]:t.basePath;return{...t,currentPath:o,propertyPath:void 0,seen:new Map(Object.entries(t.definitions).map(([e,o])=>[o._def,{def:o._def,path:[...t.basePath,t.definitionPath,e],jsonSchema:void 0}]))}},tY=(e,t)=>{var o;let i=tJ(t),a="object"==typeof t&&t.definitions?Object.entries(t.definitions).reduce((e,[t,o])=>{var a;return{...e,[t]:null!=(a=tV(o._def,{...i,currentPath:[...i.basePath,i.definitionPath,t]},!0))?a:{}}},{}):void 0,r="string"==typeof t?t:(null==t?void 0:t.nameStrategy)==="title"?void 0:null==t?void 0:t.name,s=null!=(o=tV(e._def,void 0===r?i:{...i,currentPath:[...i.basePath,i.definitionPath,r]},!1))?o:{},n="object"==typeof t&&void 0!==t.name&&"title"===t.nameStrategy?t.name:void 0;void 0!==n&&(s.title=n);let l=void 0===r?a?{...s,[i.definitionPath]:a}:s:{$ref:[..."relative"===i.$refStrategy?[]:i.basePath,i.definitionPath,r].join("/"),[i.definitionPath]:{...a,[r]:s}};return l.$schema="http://json-schema.org/draft-07/schema#",l};function tH(e,t){return"_zod"in e?function(e,t){var o;let i=null!=(o=null==t?void 0:t.useReferences)&&o;return t0(()=>e4(e,{target:"draft-7",io:"output",reused:i?"ref":"inline"}),{validate:async t=>{let o=await tp(e,t);return o.success?{success:!0,value:o.data}:{success:!1,error:o.error}}})}(e,t):function(e,t){var o;let i=null!=(o=null==t?void 0:t.useReferences)&&o;return t0(()=>tY(e,{$refStrategy:i?"root":"none"}),{validate:async t=>{let o=await e.safeParseAsync(t);return o.success?{success:!0,value:o.data}:{success:!1,error:o.error}}})}(e,t)}var tX=Symbol.for("vercel.ai.schema");function t0(e,{validate:t}={}){return{[tX]:!0,_type:void 0,[tb]:!0,get jsonSchema(){return"function"==typeof e&&(e=e()),e},validate:t}}var{btoa:t2,atob:t1}=globalThis;let t5=/^[cC][^\s-]{8,}$/,t3=/^[0-9a-z]+$/,t4=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,t7=/^[0-9a-vA-V]{20}$/,t8=/^[A-Za-z0-9]{27}$/,t6=/^[a-zA-Z0-9_-]{21}$/,t9=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,oe=/^([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})$/,ot=e=>e?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})$`):/^([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)$/,oo=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,oi=/^(?:(?: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])$/,oa=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})$/,or=/^((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])$/,os=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,on=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,ol=/^[A-Za-z0-9_-]*$/,od=/^([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+$/,oc=/^\+(?:[0-9]){6,14}[0-9]$/,ou="(?:(?:\\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])))",op=RegExp(`^${ou}$`);function om(e){let t="(?:[01]\\d|2[0-3]):[0-5]\\d";return"number"==typeof e.precision?-1===e.precision?`${t}`:0===e.precision?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}let og=e=>{let t=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??""}}`:"[\\s\\S]*";return RegExp(`^${t}$`)},oh=/^\d+$/,ov=/^-?\d+(?:\.\d+)?/i,of=/true|false/i,ox=/null/i,ob=/^[^A-Z]*$/,ok=/^[^a-z]*$/,oy=e7("$ZodCheck",(e,t)=>{var o;e._zod??(e._zod={}),e._zod.def=t,(o=e._zod).onattach??(o.onattach=[])}),oM={number:"number",bigint:"bigint",object:"date"},oI=e7("$ZodCheckLessThan",(e,t)=>{oy.init(e,t);let o=oM[typeof t.value];e._zod.onattach.push(e=>{let o=e._zod.bag,i=(t.inclusive?o.maximum:o.exclusiveMaximum)??Number.POSITIVE_INFINITY;t.value<i&&(t.inclusive?o.maximum=t.value:o.exclusiveMaximum=t.value)}),e._zod.check=i=>{(t.inclusive?i.value<=t.value:i.value<t.value)||i.issues.push({origin:o,code:"too_big",maximum:t.value,input:i.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),ow=e7("$ZodCheckGreaterThan",(e,t)=>{oy.init(e,t);let o=oM[typeof t.value];e._zod.onattach.push(e=>{let o=e._zod.bag,i=(t.inclusive?o.minimum:o.exclusiveMinimum)??Number.NEGATIVE_INFINITY;t.value>i&&(t.inclusive?o.minimum=t.value:o.exclusiveMinimum=t.value)}),e._zod.check=i=>{(t.inclusive?i.value>=t.value:i.value>t.value)||i.issues.push({origin:o,code:"too_small",minimum:t.value,input:i.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),oS=e7("$ZodCheckMultipleOf",(e,t)=>{oy.init(e,t),e._zod.onattach.push(e=>{var o;(o=e._zod.bag).multipleOf??(o.multipleOf=t.value)}),e._zod.check=o=>{if(typeof o.value!=typeof t.value)throw Error("Cannot mix number and bigint in multiple_of check.");("bigint"==typeof o.value?o.value%t.value===BigInt(0):0===function(e,t){let o=(e.toString().split(".")[1]||"").length,i=(t.toString().split(".")[1]||"").length,a=o>i?o:i;return Number.parseInt(e.toFixed(a).replace(".",""))%Number.parseInt(t.toFixed(a).replace(".",""))/10**a}(o.value,t.value))||o.issues.push({origin:typeof o.value,code:"not_multiple_of",divisor:t.value,input:o.value,inst:e,continue:!t.abort})}}),oA=e7("$ZodCheckNumberFormat",(e,t)=>{oy.init(e,t),t.format=t.format||"float64";let o=t.format?.includes("int"),i=o?"int":"number",[a,r]=eY[t.format];e._zod.onattach.push(e=>{let i=e._zod.bag;i.format=t.format,i.minimum=a,i.maximum=r,o&&(i.pattern=oh)}),e._zod.check=s=>{let n=s.value;if(o){if(!Number.isInteger(n)){s.issues.push({expected:i,format:t.format,code:"invalid_type",input:n,inst:e});return}if(!Number.isSafeInteger(n)){n>0?s.issues.push({input:n,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:i,continue:!t.abort}):s.issues.push({input:n,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:i,continue:!t.abort});return}}n<a&&s.issues.push({origin:"number",input:n,code:"too_small",minimum:a,inclusive:!0,inst:e,continue:!t.abort}),n>r&&s.issues.push({origin:"number",input:n,code:"too_big",maximum:r,inst:e})}}),oT=e7("$ZodCheckMaxLength",(e,t)=>{var o;oy.init(e,t),(o=e._zod.def).when??(o.when=e=>{let t=e.value;return null!=t&&void 0!==t.length}),e._zod.onattach.push(e=>{let o=e._zod.bag.maximum??Number.POSITIVE_INFINITY;t.maximum<o&&(e._zod.bag.maximum=t.maximum)}),e._zod.check=o=>{let i=o.value;if(i.length<=t.maximum)return;let a=e1(i);o.issues.push({origin:a,code:"too_big",maximum:t.maximum,inclusive:!0,input:i,inst:e,continue:!t.abort})}}),oP=e7("$ZodCheckMinLength",(e,t)=>{var o;oy.init(e,t),(o=e._zod.def).when??(o.when=e=>{let t=e.value;return null!=t&&void 0!==t.length}),e._zod.onattach.push(e=>{let o=e._zod.bag.minimum??Number.NEGATIVE_INFINITY;t.minimum>o&&(e._zod.bag.minimum=t.minimum)}),e._zod.check=o=>{let i=o.value;if(i.length>=t.minimum)return;let a=e1(i);o.issues.push({origin:a,code:"too_small",minimum:t.minimum,inclusive:!0,input:i,inst:e,continue:!t.abort})}}),oN=e7("$ZodCheckLengthEquals",(e,t)=>{var o;oy.init(e,t),(o=e._zod.def).when??(o.when=e=>{let t=e.value;return null!=t&&void 0!==t.length}),e._zod.onattach.push(e=>{let o=e._zod.bag;o.minimum=t.length,o.maximum=t.length,o.length=t.length}),e._zod.check=o=>{let i=o.value,a=i.length;if(a===t.length)return;let r=e1(i),s=a>t.length;o.issues.push({origin:r,...s?{code:"too_big",maximum:t.length}:{code:"too_small",minimum:t.length},inclusive:!0,exact:!0,input:o.value,inst:e,continue:!t.abort})}}),oO=e7("$ZodCheckStringFormat",(e,t)=>{var o,i;oy.init(e,t),e._zod.onattach.push(e=>{let o=e._zod.bag;o.format=t.format,t.pattern&&(o.patterns??(o.patterns=new Set),o.patterns.add(t.pattern))}),t.pattern?(o=e._zod).check??(o.check=o=>{t.pattern.lastIndex=0,t.pattern.test(o.value)||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})}):(i=e._zod).check??(i.check=()=>{})}),o_=e7("$ZodCheckRegex",(e,t)=>{oO.init(e,t),e._zod.check=o=>{t.pattern.lastIndex=0,t.pattern.test(o.value)||o.issues.push({origin:"string",code:"invalid_format",format:"regex",input:o.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),oz=e7("$ZodCheckLowerCase",(e,t)=>{t.pattern??(t.pattern=ob),oO.init(e,t)}),oE=e7("$ZodCheckUpperCase",(e,t)=>{t.pattern??(t.pattern=ok),oO.init(e,t)}),oq=e7("$ZodCheckIncludes",(e,t)=>{oy.init(e,t);let o=eK(t.includes),i=new RegExp("number"==typeof t.position?`^.{${t.position}}${o}`:o);t.pattern=i,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??(t.patterns=new Set),t.patterns.add(i)}),e._zod.check=o=>{o.value.includes(t.includes,t.position)||o.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:t.includes,input:o.value,inst:e,continue:!t.abort})}}),oB=e7("$ZodCheckStartsWith",(e,t)=>{oy.init(e,t);let o=RegExp(`^${eK(t.prefix)}.*`);t.pattern??(t.pattern=o),e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??(t.patterns=new Set),t.patterns.add(o)}),e._zod.check=o=>{o.value.startsWith(t.prefix)||o.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:t.prefix,input:o.value,inst:e,continue:!t.abort})}}),oj=e7("$ZodCheckEndsWith",(e,t)=>{oy.init(e,t);let o=RegExp(`.*${eK(t.suffix)}$`);t.pattern??(t.pattern=o),e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??(t.patterns=new Set),t.patterns.add(o)}),e._zod.check=o=>{o.value.endsWith(t.suffix)||o.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:t.suffix,input:o.value,inst:e,continue:!t.abort})}}),oC=e7("$ZodCheckOverwrite",(e,t)=>{oy.init(e,t),e._zod.check=e=>{e.value=t.tx(e.value)}});class oR{constructor(e=[]){this.content=[],this.indent=0,this&&(this.args=e)}indented(e){this.indent+=1,e(this),this.indent-=1}write(e){if("function"==typeof e){e(this,{execution:"sync"}),e(this,{execution:"async"});return}let t=e.split("\n").filter(e=>e),o=Math.min(...t.map(e=>e.length-e.trimStart().length));for(let e of t.map(e=>e.slice(o)).map(e=>" ".repeat(2*this.indent)+e))this.content.push(e)}compile(){return Function(...this?.args,[...(this?.content??[""]).map(e=>` ${e}`)].join("\n"))}}let oL={major:4,minor:0,patch:0},oD=e7("$ZodType",(e,t)=>{var o;e??(e={}),e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=oL;let i=[...e._zod.def.checks??[]];for(let t of(e._zod.traits.has("$ZodCheck")&&i.unshift(e),i))for(let o of t._zod.onattach)o(e);if(0===i.length)(o=e._zod).deferred??(o.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{let t=(e,t,o)=>{let i,a=eH(e);for(let r of t){if(r._zod.def.when){if(!r._zod.def.when(e))continue}else if(a)continue;let t=e.issues.length,s=r._zod.check(e);if(s instanceof Promise&&o?.async===!1)throw new e8;if(i||s instanceof Promise)i=(i??Promise.resolve()).then(async()=>{await s,e.issues.length===t||a||(a=eH(e,t))});else{if(e.issues.length===t)continue;a||(a=eH(e,t))}}return i?i.then(()=>e):e};e._zod.run=(o,a)=>{let r=e._zod.parse(o,a);if(r instanceof Promise){if(!1===a.async)throw new e8;return r.then(e=>t(e,i,a))}return t(r,i,a)}}e["~standard"]={validate:t=>{try{let o=ta(e,t);return o.success?{value:o.data}:{issues:o.error?.issues}}catch(o){return ts(e,t).then(e=>e.success?{value:e.data}:{issues:e.error?.issues})}},vendor:"zod",version:1}}),o$=e7("$ZodString",(e,t)=>{oD.init(e,t),e._zod.pattern=[...e?._zod.bag?.patterns??[]].pop()??og(e._zod.bag),e._zod.parse=(o,i)=>{if(t.coerce)try{o.value=String(o.value)}catch(e){}return"string"==typeof o.value||o.issues.push({expected:"string",code:"invalid_type",input:o.value,inst:e}),o}}),oZ=e7("$ZodStringFormat",(e,t)=>{oO.init(e,t),o$.init(e,t)}),oF=e7("$ZodGUID",(e,t)=>{t.pattern??(t.pattern=oe),oZ.init(e,t)}),oQ=e7("$ZodUUID",(e,t)=>{if(t.version){let e={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[t.version];if(void 0===e)throw Error(`Invalid UUID version: "${t.version}"`);t.pattern??(t.pattern=ot(e))}else t.pattern??(t.pattern=ot());oZ.init(e,t)}),oG=e7("$ZodEmail",(e,t)=>{t.pattern??(t.pattern=oo),oZ.init(e,t)}),oU=e7("$ZodURL",(e,t)=>{oZ.init(e,t),e._zod.check=o=>{try{let i=o.value,a=new URL(i),r=a.href;t.hostname&&(t.hostname.lastIndex=0,t.hostname.test(a.hostname)||o.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:od.source,input:o.value,inst:e,continue:!t.abort})),t.protocol&&(t.protocol.lastIndex=0,t.protocol.test(a.protocol.endsWith(":")?a.protocol.slice(0,-1):a.protocol)||o.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:t.protocol.source,input:o.value,inst:e,continue:!t.abort})),!i.endsWith("/")&&r.endsWith("/")?o.value=r.slice(0,-1):o.value=r;return}catch(i){o.issues.push({code:"invalid_format",format:"url",input:o.value,inst:e,continue:!t.abort})}}}),oV=e7("$ZodEmoji",(e,t)=>{t.pattern??(t.pattern=RegExp("^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$","u")),oZ.init(e,t)}),oK=e7("$ZodNanoID",(e,t)=>{t.pattern??(t.pattern=t6),oZ.init(e,t)}),oW=e7("$ZodCUID",(e,t)=>{t.pattern??(t.pattern=t5),oZ.init(e,t)}),oJ=e7("$ZodCUID2",(e,t)=>{t.pattern??(t.pattern=t3),oZ.init(e,t)}),oY=e7("$ZodULID",(e,t)=>{t.pattern??(t.pattern=t4),oZ.init(e,t)}),oH=e7("$ZodXID",(e,t)=>{t.pattern??(t.pattern=t7),oZ.init(e,t)}),oX=e7("$ZodKSUID",(e,t)=>{t.pattern??(t.pattern=t8),oZ.init(e,t)}),o0=e7("$ZodISODateTime",(e,t)=>{t.pattern??(t.pattern=function(e){let t=om({precision:e.precision}),o=["Z"];e.local&&o.push(""),e.offset&&o.push("([+-]\\d{2}:\\d{2})");let i=`${t}(?:${o.join("|")})`;return RegExp(`^${ou}T(?:${i})$`)}(t)),oZ.init(e,t)}),o2=e7("$ZodISODate",(e,t)=>{t.pattern??(t.pattern=op),oZ.init(e,t)}),o1=e7("$ZodISOTime",(e,t)=>{t.pattern??(t.pattern=RegExp(`^${om(t)}$`)),oZ.init(e,t)}),o5=e7("$ZodISODuration",(e,t)=>{t.pattern??(t.pattern=t9),oZ.init(e,t)}),o3=e7("$ZodIPv4",(e,t)=>{t.pattern??(t.pattern=oi),oZ.init(e,t),e._zod.onattach.push(e=>{e._zod.bag.format="ipv4"})}),o4=e7("$ZodIPv6",(e,t)=>{t.pattern??(t.pattern=oa),oZ.init(e,t),e._zod.onattach.push(e=>{e._zod.bag.format="ipv6"}),e._zod.check=o=>{try{new URL(`http://[${o.value}]`)}catch{o.issues.push({code:"invalid_format",format:"ipv6",input:o.value,inst:e,continue:!t.abort})}}}),o7=e7("$ZodCIDRv4",(e,t)=>{t.pattern??(t.pattern=or),oZ.init(e,t)}),o8=e7("$ZodCIDRv6",(e,t)=>{t.pattern??(t.pattern=os),oZ.init(e,t),e._zod.check=o=>{let[i,a]=o.value.split("/");try{if(!a)throw Error();let e=Number(a);if(`${e}`!==a||e<0||e>128)throw Error();new URL(`http://[${i}]`)}catch{o.issues.push({code:"invalid_format",format:"cidrv6",input:o.value,inst:e,continue:!t.abort})}}});function o6(e){if(""===e)return!0;if(e.length%4!=0)return!1;try{return atob(e),!0}catch{return!1}}let o9=e7("$ZodBase64",(e,t)=>{t.pattern??(t.pattern=on),oZ.init(e,t),e._zod.onattach.push(e=>{e._zod.bag.contentEncoding="base64"}),e._zod.check=o=>{o6(o.value)||o.issues.push({code:"invalid_format",format:"base64",input:o.value,inst:e,continue:!t.abort})}}),ie=e7("$ZodBase64URL",(e,t)=>{t.pattern??(t.pattern=ol),oZ.init(e,t),e._zod.onattach.push(e=>{e._zod.bag.contentEncoding="base64url"}),e._zod.check=o=>{!function(e){if(!ol.test(e))return!1;let t=e.replace(/[-_]/g,e=>"-"===e?"+":"/");return o6(t.padEnd(4*Math.ceil(t.length/4),"="))}(o.value)&&o.issues.push({code:"invalid_format",format:"base64url",input:o.value,inst:e,continue:!t.abort})}}),it=e7("$ZodE164",(e,t)=>{t.pattern??(t.pattern=oc),oZ.init(e,t)}),io=e7("$ZodJWT",(e,t)=>{oZ.init(e,t),e._zod.check=o=>{!function(e,t=null){try{let o=e.split(".");if(3!==o.length)return!1;let[i]=o;if(!i)return!1;let a=JSON.parse(atob(i));if("typ"in a&&a?.typ!=="JWT"||!a.alg||t&&(!("alg"in a)||a.alg!==t))return!1;return!0}catch{return!1}}(o.value,t.alg)&&o.issues.push({code:"invalid_format",format:"jwt",input:o.value,inst:e,continue:!t.abort})}}),ii=e7("$ZodNumber",(e,t)=>{oD.init(e,t),e._zod.pattern=e._zod.bag.pattern??ov,e._zod.parse=(o,i)=>{if(t.coerce)try{o.value=Number(o.value)}catch(e){}let a=o.value;if("number"==typeof a&&!Number.isNaN(a)&&Number.isFinite(a))return o;let r="number"==typeof a?Number.isNaN(a)?"NaN":Number.isFinite(a)?void 0:"Infinity":void 0;return o.issues.push({expected:"number",code:"invalid_type",input:a,inst:e,...r?{received:r}:{}}),o}}),ia=e7("$ZodNumber",(e,t)=>{oA.init(e,t),ii.init(e,t)}),ir=e7("$ZodBoolean",(e,t)=>{oD.init(e,t),e._zod.pattern=of,e._zod.parse=(o,i)=>{if(t.coerce)try{o.value=!!o.value}catch(e){}let a=o.value;return"boolean"==typeof a||o.issues.push({expected:"boolean",code:"invalid_type",input:a,inst:e}),o}}),is=e7("$ZodNull",(e,t)=>{oD.init(e,t),e._zod.pattern=ox,e._zod.values=new Set([null]),e._zod.parse=(t,o)=>{let i=t.value;return null===i||t.issues.push({expected:"null",code:"invalid_type",input:i,inst:e}),t}}),il=e7("$ZodUnknown",(e,t)=>{oD.init(e,t),e._zod.parse=e=>e}),id=e7("$ZodNever",(e,t)=>{oD.init(e,t),e._zod.parse=(t,o)=>(t.issues.push({expected:"never",code:"invalid_type",input:t.value,inst:e}),t)});function ic(e,t,o){e.issues.length&&t.issues.push(...eX(o,e.issues)),t.value[o]=e.value}let iu=e7("$ZodArray",(e,t)=>{oD.init(e,t),e._zod.parse=(o,i)=>{let a=o.value;if(!Array.isArray(a))return o.issues.push({expected:"array",code:"invalid_type",input:a,inst:e}),o;o.value=Array(a.length);let r=[];for(let e=0;e<a.length;e++){let s=a[e],n=t.element._zod.run({value:s,issues:[]},i);n instanceof Promise?r.push(n.then(t=>ic(t,o,e))):ic(n,o,e)}return r.length?Promise.all(r).then(()=>o):o}});function ip(e,t,o){e.issues.length&&t.issues.push(...eX(o,e.issues)),t.value[o]=e.value}function im(e,t,o,i){e.issues.length?void 0===i[o]?o in i?t.value[o]=void 0:t.value[o]=e.value:t.issues.push(...eX(o,e.issues)):void 0===e.value?o in i&&(t.value[o]=void 0):t.value[o]=e.value}let ig=e7("$ZodObject",(e,t)=>{let o,i;oD.init(e,t);let a=eR(()=>{let e=Object.keys(t.shape);for(let o of e)if(!(t.shape[o]instanceof oD))throw Error(`Invalid element at key "${o}": expected a Zod schema`);let o=function(e){return Object.keys(e).filter(t=>"optional"===e[t]._zod.optin&&"optional"===e[t]._zod.optout)}(t.shape);return{shape:t.shape,keys:e,keySet:new Set(e),numKeys:e.length,optionalKeys:new Set(o)}});eD(e._zod,"propValues",()=>{let e=t.shape,o={};for(let t in e){let i=e[t]._zod;if(i.values)for(let e of(o[t]??(o[t]=new Set),i.values))o[t].add(e)}return o});let r=e=>{let t=new oR(["shape","payload","ctx"]),o=a.value,i=e=>{let t=eZ(e);return`shape[${t}]._zod.run({ value: input[${t}], issues: [] }, ctx)`};t.write("const input = payload.value;");let r=Object.create(null),s=0;for(let e of o.keys)r[e]=`key_${s++}`;for(let e of(t.write("const newResult = {}"),o.keys))if(o.optionalKeys.has(e)){let o=r[e];t.write(`const ${o} = ${i(e)};`);let a=eZ(e);t.write(`
|
|
14
14
|
if (${o}.issues.length) {
|
|
15
15
|
if (input[${a}] === undefined) {
|
|
16
16
|
if (${a} in input) {
|
|
@@ -33,15 +33,15 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
33
33
|
if (${o}.issues.length) payload.issues = payload.issues.concat(${o}.issues.map(iss => ({
|
|
34
34
|
...iss,
|
|
35
35
|
path: iss.path ? [${eZ(e)}, ...iss.path] : [${eZ(e)}]
|
|
36
|
-
})));`),t.write(`newResult[${eZ(e)}] = ${o}.value`)}t.write("payload.value = newResult;"),t.write("return payload;");let n=t.compile();return(t,o)=>n(e,t,o)},s=!e6.jitless,n=s&&eG.value,l=t.catchall;e._zod.parse=(d,c)=>{i??(i=a.value);let u=d.value;if(!eQ(u))return d.issues.push({expected:"object",code:"invalid_type",input:u,inst:e}),d;let p=[];if(s&&n&&c?.async===!1&&!0!==c.jitless)o||(o=r(t.shape)),d=o(d,c);else{d.value={};let e=i.shape;for(let t of i.keys){let o=e[t],i=o._zod.run({value:u[t],issues:[]},c),a="optional"===o._zod.optin&&"optional"===o._zod.optout;i instanceof Promise?p.push(i.then(e=>a?id(e,d,t,u):il(e,d,t))):a?id(i,d,t,u):il(i,d,t)}}if(!l)return p.length?Promise.all(p).then(()=>d):d;let m=[],g=i.keySet,h=l._zod,v=h.def.type;for(let e of Object.keys(u)){if(g.has(e))continue;if("never"===v){m.push(e);continue}let t=h.run({value:u[e],issues:[]},c);t instanceof Promise?p.push(t.then(t=>il(t,d,e))):il(t,d,e)}return(m.length&&d.issues.push({code:"unrecognized_keys",keys:m,input:u,inst:e}),p.length)?Promise.all(p).then(()=>d):d}});function iu(e,t,o,i){for(let o of e)if(0===o.issues.length)return t.value=o.value,t;return t.issues.push({code:"invalid_union",input:t.value,inst:o,errors:e.map(e=>e.issues.map(e=>e2(e,i,e9())))}),t}let ip=e7("$ZodUnion",(e,t)=>{oj.init(e,t),eD(e._zod,"optin",()=>t.options.some(e=>"optional"===e._zod.optin)?"optional":void 0),eD(e._zod,"optout",()=>t.options.some(e=>"optional"===e._zod.optout)?"optional":void 0),eD(e._zod,"values",()=>{if(t.options.every(e=>e._zod.values))return new Set(t.options.flatMap(e=>Array.from(e._zod.values)))}),eD(e._zod,"pattern",()=>{if(t.options.every(e=>e._zod.pattern)){let e=t.options.map(e=>e._zod.pattern);return RegExp(`^(${e.map(e=>eL(e.source)).join("|")})$`)}}),e._zod.parse=(o,i)=>{let a=!1,r=[];for(let e of t.options){let t=e._zod.run({value:o.value,issues:[]},i);if(t instanceof Promise)r.push(t),a=!0;else{if(0===t.issues.length)return t;r.push(t)}}return a?Promise.all(r).then(t=>iu(t,o,e,i)):iu(r,o,e,i)}}),im=e7("$ZodDiscriminatedUnion",(e,t)=>{ip.init(e,t);let o=e._zod.parse;eD(e._zod,"propValues",()=>{let e={};for(let o of t.options){let i=o._zod.propValues;if(!i||0===Object.keys(i).length)throw Error(`Invalid discriminated union option at index "${t.options.indexOf(o)}"`);for(let[t,o]of Object.entries(i))for(let i of(e[t]||(e[t]=new Set),o))e[t].add(i)}return e});let i=eR(()=>{let e=t.options,o=new Map;for(let i of e){let e=i._zod.propValues[t.discriminator];if(!e||0===e.size)throw Error(`Invalid discriminated union option at index "${t.options.indexOf(i)}"`);for(let t of e){if(o.has(t))throw Error(`Duplicate discriminator value "${String(t)}"`);o.set(t,i)}}return o});e._zod.parse=(a,r)=>{let s=a.value;if(!eQ(s))return a.issues.push({code:"invalid_type",expected:"object",input:s,inst:e}),a;let n=i.value.get(s?.[t.discriminator]);return n?n._zod.run(a,r):t.unionFallback?o(a,r):(a.issues.push({code:"invalid_union",errors:[],note:"No matching discriminator",input:s,path:[t.discriminator],inst:e}),a)}}),ig=e7("$ZodIntersection",(e,t)=>{oj.init(e,t),e._zod.parse=(e,o)=>{let i=e.value,a=t.left._zod.run({value:i,issues:[]},o),r=t.right._zod.run({value:i,issues:[]},o);return a instanceof Promise||r instanceof Promise?Promise.all([a,r]).then(([t,o])=>ih(e,t,o)):ih(e,a,r)}});function ih(e,t,o){if(t.issues.length&&e.issues.push(...t.issues),o.issues.length&&e.issues.push(...o.issues),eH(e))return e;let i=function e(t,o){if(t===o||t instanceof Date&&o instanceof Date&&+t==+o)return{valid:!0,data:t};if(eU(t)&&eU(o)){let i=Object.keys(o),a=Object.keys(t).filter(e=>-1!==i.indexOf(e)),r={...t,...o};for(let i of a){let a=e(t[i],o[i]);if(!a.valid)return{valid:!1,mergeErrorPath:[i,...a.mergeErrorPath]};r[i]=a.data}return{valid:!0,data:r}}if(Array.isArray(t)&&Array.isArray(o)){if(t.length!==o.length)return{valid:!1,mergeErrorPath:[]};let i=[];for(let a=0;a<t.length;a++){let r=e(t[a],o[a]);if(!r.valid)return{valid:!1,mergeErrorPath:[a,...r.mergeErrorPath]};i.push(r.data)}return{valid:!0,data:i}}return{valid:!1,mergeErrorPath:[]}}(t.value,o.value);if(!i.valid)throw Error(`Unmergable intersection. Error path: ${JSON.stringify(i.mergeErrorPath)}`);return e.value=i.data,e}let iv=e7("$ZodRecord",(e,t)=>{oj.init(e,t),e._zod.parse=(o,i)=>{let a=o.value;if(!eU(a))return o.issues.push({expected:"record",code:"invalid_type",input:a,inst:e}),o;let r=[];if(t.keyType._zod.values){let s;let n=t.keyType._zod.values;for(let e of(o.value={},n))if("string"==typeof e||"number"==typeof e||"symbol"==typeof e){let s=t.valueType._zod.run({value:a[e],issues:[]},i);s instanceof Promise?r.push(s.then(t=>{t.issues.length&&o.issues.push(...eX(e,t.issues)),o.value[e]=t.value})):(s.issues.length&&o.issues.push(...eX(e,s.issues)),o.value[e]=s.value)}for(let e in a)n.has(e)||(s=s??[]).push(e);s&&s.length>0&&o.issues.push({code:"unrecognized_keys",input:a,inst:e,keys:s})}else for(let s of(o.value={},Reflect.ownKeys(a))){if("__proto__"===s)continue;let n=t.keyType._zod.run({value:s,issues:[]},i);if(n instanceof Promise)throw Error("Async schemas not supported in object keys currently");if(n.issues.length){o.issues.push({origin:"record",code:"invalid_key",issues:n.issues.map(e=>e2(e,i,e9())),input:s,path:[s],inst:e}),o.value[n.value]=n.value;continue}let l=t.valueType._zod.run({value:a[s],issues:[]},i);l instanceof Promise?r.push(l.then(e=>{e.issues.length&&o.issues.push(...eX(s,e.issues)),o.value[n.value]=e.value})):(l.issues.length&&o.issues.push(...eX(s,l.issues)),o.value[n.value]=l.value)}return r.length?Promise.all(r).then(()=>o):o}}),ix=e7("$ZodEnum",(e,t)=>{oj.init(e,t);let o=ej(t.entries);e._zod.values=new Set(o),e._zod.pattern=RegExp(`^(${o.filter(e=>eV.has(typeof e)).map(e=>"string"==typeof e?eK(e):e.toString()).join("|")})$`),e._zod.parse=(t,i)=>{let a=t.value;return e._zod.values.has(a)||t.issues.push({code:"invalid_value",values:o,input:a,inst:e}),t}}),ib=e7("$ZodLiteral",(e,t)=>{oj.init(e,t),e._zod.values=new Set(t.values),e._zod.pattern=RegExp(`^(${t.values.map(e=>"string"==typeof e?eK(e):e?e.toString():String(e)).join("|")})$`),e._zod.parse=(o,i)=>{let a=o.value;return e._zod.values.has(a)||o.issues.push({code:"invalid_value",values:t.values,input:a,inst:e}),o}}),ik=e7("$ZodTransform",(e,t)=>{oj.init(e,t),e._zod.parse=(e,o)=>{let i=t.transform(e.value,e);if(o.async)return(i instanceof Promise?i:Promise.resolve(i)).then(t=>(e.value=t,e));if(i instanceof Promise)throw new e8;return e.value=i,e}}),iy=e7("$ZodOptional",(e,t)=>{oj.init(e,t),e._zod.optin="optional",e._zod.optout="optional",eD(e._zod,"values",()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,void 0]):void 0),eD(e._zod,"pattern",()=>{let e=t.innerType._zod.pattern;return e?RegExp(`^(${eL(e.source)})?$`):void 0}),e._zod.parse=(e,o)=>"optional"===t.innerType._zod.optin?t.innerType._zod.run(e,o):void 0===e.value?e:t.innerType._zod.run(e,o)}),iM=e7("$ZodNullable",(e,t)=>{oj.init(e,t),eD(e._zod,"optin",()=>t.innerType._zod.optin),eD(e._zod,"optout",()=>t.innerType._zod.optout),eD(e._zod,"pattern",()=>{let e=t.innerType._zod.pattern;return e?RegExp(`^(${eL(e.source)}|null)$`):void 0}),eD(e._zod,"values",()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,null]):void 0),e._zod.parse=(e,o)=>null===e.value?e:t.innerType._zod.run(e,o)}),iI=e7("$ZodDefault",(e,t)=>{oj.init(e,t),e._zod.optin="optional",eD(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(e,o)=>{if(void 0===e.value)return e.value=t.defaultValue,e;let i=t.innerType._zod.run(e,o);return i instanceof Promise?i.then(e=>iw(e,t)):iw(i,t)}});function iw(e,t){return void 0===e.value&&(e.value=t.defaultValue),e}let iS=e7("$ZodPrefault",(e,t)=>{oj.init(e,t),e._zod.optin="optional",eD(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(e,o)=>(void 0===e.value&&(e.value=t.defaultValue),t.innerType._zod.run(e,o))}),iA=e7("$ZodNonOptional",(e,t)=>{oj.init(e,t),eD(e._zod,"values",()=>{let e=t.innerType._zod.values;return e?new Set([...e].filter(e=>void 0!==e)):void 0}),e._zod.parse=(o,i)=>{let a=t.innerType._zod.run(o,i);return a instanceof Promise?a.then(t=>iT(t,e)):iT(a,e)}});function iT(e,t){return e.issues.length||void 0!==e.value||e.issues.push({code:"invalid_type",expected:"nonoptional",input:e.value,inst:t}),e}let iP=e7("$ZodCatch",(e,t)=>{oj.init(e,t),e._zod.optin="optional",eD(e._zod,"optout",()=>t.innerType._zod.optout),eD(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(e,o)=>{let i=t.innerType._zod.run(e,o);return i instanceof Promise?i.then(i=>(e.value=i.value,i.issues.length&&(e.value=t.catchValue({...e,error:{issues:i.issues.map(e=>e2(e,o,e9()))},input:e.value}),e.issues=[]),e)):(e.value=i.value,i.issues.length&&(e.value=t.catchValue({...e,error:{issues:i.issues.map(e=>e2(e,o,e9()))},input:e.value}),e.issues=[]),e)}}),iN=e7("$ZodPipe",(e,t)=>{oj.init(e,t),eD(e._zod,"values",()=>t.in._zod.values),eD(e._zod,"optin",()=>t.in._zod.optin),eD(e._zod,"optout",()=>t.out._zod.optout),e._zod.parse=(e,o)=>{let i=t.in._zod.run(e,o);return i instanceof Promise?i.then(e=>iO(e,t,o)):iO(i,t,o)}});function iO(e,t,o){return eH(e)?e:t.out._zod.run({value:e.value,issues:e.issues},o)}let i_=e7("$ZodReadonly",(e,t)=>{oj.init(e,t),eD(e._zod,"propValues",()=>t.innerType._zod.propValues),eD(e._zod,"values",()=>t.innerType._zod.values),eD(e._zod,"optin",()=>t.innerType._zod.optin),eD(e._zod,"optout",()=>t.innerType._zod.optout),e._zod.parse=(e,o)=>{let i=t.innerType._zod.run(e,o);return i instanceof Promise?i.then(iz):iz(i)}});function iz(e){return e.value=Object.freeze(e.value),e}let iE=e7("$ZodLazy",(e,t)=>{oj.init(e,t),eD(e._zod,"innerType",()=>t.getter()),eD(e._zod,"pattern",()=>e._zod.innerType._zod.pattern),eD(e._zod,"propValues",()=>e._zod.innerType._zod.propValues),eD(e._zod,"optin",()=>e._zod.innerType._zod.optin),eD(e._zod,"optout",()=>e._zod.innerType._zod.optout),e._zod.parse=(t,o)=>e._zod.innerType._zod.run(t,o)}),iq=e7("$ZodCustom",(e,t)=>{of.init(e,t),oj.init(e,t),e._zod.parse=(e,t)=>e,e._zod.check=o=>{let i=o.value,a=t.fn(i);if(a instanceof Promise)return a.then(t=>iB(t,o,i,e));iB(a,o,i,e)}});function iB(e,t,o,i){if(!e){let e={code:"custom",input:o,inst:i,path:[...i._zod.def.path??[]],continue:!i._zod.def.abort};i._zod.def.params&&(e.params=i._zod.def.params),t.issues.push(e5(e))}}function ij(e,t){return new e({type:"string",format:"guid",check:"string_format",abort:!1,...eJ(t)})}function iC(e,t){return new e({type:"string",format:"base64",check:"string_format",abort:!1,...eJ(t)})}function iR(e,t){return new ob({check:"less_than",...eJ(t),value:e,inclusive:!1})}function iL(e,t){return new ob({check:"less_than",...eJ(t),value:e,inclusive:!0})}function iD(e,t){return new ok({check:"greater_than",...eJ(t),value:e,inclusive:!1})}function i$(e,t){return new ok({check:"greater_than",...eJ(t),value:e,inclusive:!0})}function iZ(e,t){return new oy({check:"multiple_of",...eJ(t),value:e})}function iF(e,t){return new oI({check:"max_length",...eJ(t),maximum:e})}function iQ(e,t){return new ow({check:"min_length",...eJ(t),minimum:e})}function iG(e,t){return new oS({check:"length_equals",...eJ(t),length:e})}function iU(e){return new oE({check:"overwrite",tx:e})}let iV=e7("ZodISODateTime",(e,t)=>{oJ.init(e,t),i2.init(e,t)}),iK=e7("ZodISODate",(e,t)=>{oY.init(e,t),i2.init(e,t)}),iW=e7("ZodISOTime",(e,t)=>{oH.init(e,t),i2.init(e,t)}),iJ=e7("ZodISODuration",(e,t)=>{oX.init(e,t),i2.init(e,t)}),iY=e7("ZodType",(e,t)=>(oj.init(e,t),e.def=t,Object.defineProperty(e,"_def",{value:t}),e.check=(...o)=>e.clone({...t,checks:[...t.checks??[],...o.map(e=>"function"==typeof e?{_zod:{check:e,def:{check:"custom"},onattach:[]}}:e)]}),e.clone=(t,o)=>eW(e,t,o),e.brand=()=>e,e.register=(t,o)=>(t.add(e,o),e),e.parse=(t,o)=>td(e,t,o,{callee:e.parse}),e.safeParse=(t,o)=>tu(e,t,o),e.parseAsync=async(t,o)=>tc(e,t,o,{callee:e.parseAsync}),e.safeParseAsync=async(t,o)=>tp(e,t,o),e.spa=e.safeParseAsync,e.refine=(t,o)=>e.check(function(e,t={}){return new a0({type:"custom",check:"custom",fn:e,...eJ(t)})}(t,o)),e.superRefine=t=>e.check(function(e){let t=function(e){let t=new of({check:"custom"});return t._zod.check=e,t}(o=>(o.addIssue=e=>{"string"==typeof e?o.issues.push(e5(e,o.value,t._zod.def)):(e.fatal&&(e.continue=!1),e.code??(e.code="custom"),e.input??(e.input=o.value),e.inst??(e.inst=t),e.continue??(e.continue=!t._zod.def.abort),o.issues.push(e5(e)))},e(o.value,o)));return t}(t)),e.overwrite=t=>e.check(iU(t)),e.optional=()=>aZ(e),e.nullable=()=>aQ(e),e.nullish=()=>aZ(aQ(e)),e.nonoptional=t=>new aV({type:"nonoptional",innerType:e,...eJ(t)}),e.array=()=>aw(e),e.or=t=>aO([e,t]),e.and=t=>new aE({type:"intersection",left:e,right:t}),e.transform=t=>aJ(e,new aD({type:"transform",transform:t})),e.default=t=>(function(e,t){return new aG({type:"default",innerType:e,get defaultValue(){return"function"==typeof t?t():t}})})(e,t),e.prefault=t=>(function(e,t){return new aU({type:"prefault",innerType:e,get defaultValue(){return"function"==typeof t?t():t}})})(e,t),e.catch=t=>(function(e,t){return new aK({type:"catch",innerType:e,catchValue:"function"==typeof t?t:()=>t})})(e,t),e.pipe=t=>aJ(e,t),e.readonly=()=>new aY({type:"readonly",innerType:e}),e.describe=t=>{let o=e.clone();return eB.add(o,{description:t}),o},Object.defineProperty(e,"description",{get:()=>eB.get(e)?.description,configurable:!0}),e.meta=(...t)=>{if(0===t.length)return eB.get(e);let o=e.clone();return eB.add(o,t[0]),o},e.isOptional=()=>e.safeParse(void 0).success,e.isNullable=()=>e.safeParse(null).success,e)),iH=e7("_ZodString",(e,t)=>{oC.init(e,t),iY.init(e,t);let o=e._zod.bag;e.format=o.format??null,e.minLength=o.minimum??null,e.maxLength=o.maximum??null,e.regex=(...t)=>e.check(function(e,t){return new oT({check:"string_format",format:"regex",...eJ(t),pattern:e})}(...t)),e.includes=(...t)=>e.check(function(e,t){return new oO({check:"string_format",format:"includes",...eJ(t),includes:e})}(...t)),e.startsWith=(...t)=>e.check(function(e,t){return new o_({check:"string_format",format:"starts_with",...eJ(t),prefix:e})}(...t)),e.endsWith=(...t)=>e.check(function(e,t){return new oz({check:"string_format",format:"ends_with",...eJ(t),suffix:e})}(...t)),e.min=(...t)=>e.check(iQ(...t)),e.max=(...t)=>e.check(iF(...t)),e.length=(...t)=>e.check(iG(...t)),e.nonempty=(...t)=>e.check(iQ(1,...t)),e.lowercase=t=>e.check(new oP({check:"string_format",format:"lowercase",...eJ(t)})),e.uppercase=t=>e.check(new oN({check:"string_format",format:"uppercase",...eJ(t)})),e.trim=()=>e.check(iU(e=>e.trim())),e.normalize=(...t)=>e.check(function(e){return iU(t=>t.normalize(e))}(...t)),e.toLowerCase=()=>e.check(iU(e=>e.toLowerCase())),e.toUpperCase=()=>e.check(iU(e=>e.toUpperCase()))}),iX=e7("ZodString",(e,t)=>{oC.init(e,t),iH.init(e,t),e.email=t=>e.check(new i1({type:"string",format:"email",check:"string_format",abort:!1,...eJ(t)})),e.url=t=>e.check(new i4({type:"string",format:"url",check:"string_format",abort:!1,...eJ(t)})),e.jwt=t=>e.check(new ac({type:"string",format:"jwt",check:"string_format",abort:!1,...eJ(t)})),e.emoji=t=>e.check(new i7({type:"string",format:"emoji",check:"string_format",abort:!1,...eJ(t)})),e.guid=t=>e.check(ij(i5,t)),e.uuid=t=>e.check(new i3({type:"string",format:"uuid",check:"string_format",abort:!1,...eJ(t)})),e.uuidv4=t=>e.check(new i3({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...eJ(t)})),e.uuidv6=t=>e.check(new i3({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...eJ(t)})),e.uuidv7=t=>e.check(new i3({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...eJ(t)})),e.nanoid=t=>e.check(new i8({type:"string",format:"nanoid",check:"string_format",abort:!1,...eJ(t)})),e.guid=t=>e.check(ij(i5,t)),e.cuid=t=>e.check(new i6({type:"string",format:"cuid",check:"string_format",abort:!1,...eJ(t)})),e.cuid2=t=>e.check(new i9({type:"string",format:"cuid2",check:"string_format",abort:!1,...eJ(t)})),e.ulid=t=>e.check(new ae({type:"string",format:"ulid",check:"string_format",abort:!1,...eJ(t)})),e.base64=t=>e.check(iC(an,t)),e.base64url=t=>e.check(new al({type:"string",format:"base64url",check:"string_format",abort:!1,...eJ(t)})),e.xid=t=>e.check(new at({type:"string",format:"xid",check:"string_format",abort:!1,...eJ(t)})),e.ksuid=t=>e.check(new ao({type:"string",format:"ksuid",check:"string_format",abort:!1,...eJ(t)})),e.ipv4=t=>e.check(new ai({type:"string",format:"ipv4",check:"string_format",abort:!1,...eJ(t)})),e.ipv6=t=>e.check(new aa({type:"string",format:"ipv6",check:"string_format",abort:!1,...eJ(t)})),e.cidrv4=t=>e.check(new ar({type:"string",format:"cidrv4",check:"string_format",abort:!1,...eJ(t)})),e.cidrv6=t=>e.check(new as({type:"string",format:"cidrv6",check:"string_format",abort:!1,...eJ(t)})),e.e164=t=>e.check(new ad({type:"string",format:"e164",check:"string_format",abort:!1,...eJ(t)})),e.datetime=t=>e.check(new iV({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...eJ(t)})),e.date=t=>e.check(new iK({type:"string",format:"date",check:"string_format",...eJ(t)})),e.time=t=>e.check(new iW({type:"string",format:"time",check:"string_format",precision:null,...eJ(t)})),e.duration=t=>e.check(new iJ({type:"string",format:"duration",check:"string_format",...eJ(t)}))});function i0(e){return new iX({type:"string",...eJ(e)})}let i2=e7("ZodStringFormat",(e,t)=>{oR.init(e,t),iH.init(e,t)}),i1=e7("ZodEmail",(e,t)=>{o$.init(e,t),i2.init(e,t)}),i5=e7("ZodGUID",(e,t)=>{oL.init(e,t),i2.init(e,t)}),i3=e7("ZodUUID",(e,t)=>{oD.init(e,t),i2.init(e,t)}),i4=e7("ZodURL",(e,t)=>{oZ.init(e,t),i2.init(e,t)}),i7=e7("ZodEmoji",(e,t)=>{oF.init(e,t),i2.init(e,t)}),i8=e7("ZodNanoID",(e,t)=>{oQ.init(e,t),i2.init(e,t)}),i6=e7("ZodCUID",(e,t)=>{oG.init(e,t),i2.init(e,t)}),i9=e7("ZodCUID2",(e,t)=>{oU.init(e,t),i2.init(e,t)}),ae=e7("ZodULID",(e,t)=>{oV.init(e,t),i2.init(e,t)}),at=e7("ZodXID",(e,t)=>{oK.init(e,t),i2.init(e,t)}),ao=e7("ZodKSUID",(e,t)=>{oW.init(e,t),i2.init(e,t)}),ai=e7("ZodIPv4",(e,t)=>{o0.init(e,t),i2.init(e,t)}),aa=e7("ZodIPv6",(e,t)=>{o2.init(e,t),i2.init(e,t)}),ar=e7("ZodCIDRv4",(e,t)=>{o1.init(e,t),i2.init(e,t)}),as=e7("ZodCIDRv6",(e,t)=>{o5.init(e,t),i2.init(e,t)}),an=e7("ZodBase64",(e,t)=>{o4.init(e,t),i2.init(e,t)}),al=e7("ZodBase64URL",(e,t)=>{o7.init(e,t),i2.init(e,t)}),ad=e7("ZodE164",(e,t)=>{o8.init(e,t),i2.init(e,t)}),ac=e7("ZodJWT",(e,t)=>{o6.init(e,t),i2.init(e,t)}),au=e7("ZodNumber",(e,t)=>{o9.init(e,t),iY.init(e,t),e.gt=(t,o)=>e.check(iD(t,o)),e.gte=(t,o)=>e.check(i$(t,o)),e.min=(t,o)=>e.check(i$(t,o)),e.lt=(t,o)=>e.check(iR(t,o)),e.lte=(t,o)=>e.check(iL(t,o)),e.max=(t,o)=>e.check(iL(t,o)),e.int=t=>e.check(ag(t)),e.safe=t=>e.check(ag(t)),e.positive=t=>e.check(iD(0,t)),e.nonnegative=t=>e.check(i$(0,t)),e.negative=t=>e.check(iR(0,t)),e.nonpositive=t=>e.check(iL(0,t)),e.multipleOf=(t,o)=>e.check(iZ(t,o)),e.step=(t,o)=>e.check(iZ(t,o)),e.finite=()=>e;let o=e._zod.bag;e.minValue=Math.max(o.minimum??Number.NEGATIVE_INFINITY,o.exclusiveMinimum??Number.NEGATIVE_INFINITY)??null,e.maxValue=Math.min(o.maximum??Number.POSITIVE_INFINITY,o.exclusiveMaximum??Number.POSITIVE_INFINITY)??null,e.isInt=(o.format??"").includes("int")||Number.isSafeInteger(o.multipleOf??.5),e.isFinite=!0,e.format=o.format??null});function ap(e){return new au({type:"number",checks:[],...eJ(e)})}let am=e7("ZodNumberFormat",(e,t)=>{ie.init(e,t),au.init(e,t)});function ag(e){return new am({type:"number",check:"number_format",abort:!1,format:"safeint",...eJ(e)})}let ah=e7("ZodBoolean",(e,t)=>{it.init(e,t),iY.init(e,t)});function av(e){return new ah({type:"boolean",...eJ(e)})}let af=e7("ZodNull",(e,t)=>{io.init(e,t),iY.init(e,t)});function ax(e){return new af({type:"null",...eJ(e)})}let ab=e7("ZodUnknown",(e,t)=>{ii.init(e,t),iY.init(e,t)});function ak(){return new ab({type:"unknown"})}let ay=e7("ZodNever",(e,t)=>{ia.init(e,t),iY.init(e,t)});function aM(e){return new ay({type:"never",...eJ(e)})}let aI=e7("ZodArray",(e,t)=>{is.init(e,t),iY.init(e,t),e.element=t.element,e.min=(t,o)=>e.check(iQ(t,o)),e.nonempty=t=>e.check(iQ(1,t)),e.max=(t,o)=>e.check(iF(t,o)),e.length=(t,o)=>e.check(iG(t,o)),e.unwrap=()=>e.element});function aw(e,t){return new aI({type:"array",element:e,...eJ(t)})}let aS=e7("ZodObject",(e,t)=>{ic.init(e,t),iY.init(e,t),eD(e,"shape",()=>t.shape),e.keyof=()=>aC(Object.keys(e._zod.def.shape)),e.catchall=t=>e.clone({...e._zod.def,catchall:t}),e.passthrough=()=>e.clone({...e._zod.def,catchall:ak()}),e.loose=()=>e.clone({...e._zod.def,catchall:ak()}),e.strict=()=>e.clone({...e._zod.def,catchall:aM()}),e.strip=()=>e.clone({...e._zod.def,catchall:void 0}),e.extend=t=>(function(e,t){if(!eU(t))throw Error("Invalid input to extend: expected a plain object");let o={...e._zod.def,get shape(){let o={...e._zod.def.shape,...t};return e$(this,"shape",o),o},checks:[]};return eW(e,o)})(e,t),e.merge=t=>(function(e,t){return eW(e,{...e._zod.def,get shape(){let o={...e._zod.def.shape,...t._zod.def.shape};return e$(this,"shape",o),o},catchall:t._zod.def.catchall,checks:[]})})(e,t),e.pick=t=>(function(e,t){let o={},i=e._zod.def;for(let e in t){if(!(e in i.shape))throw Error(`Unrecognized key: "${e}"`);t[e]&&(o[e]=i.shape[e])}return eW(e,{...e._zod.def,shape:o,checks:[]})})(e,t),e.omit=t=>(function(e,t){let o={...e._zod.def.shape},i=e._zod.def;for(let e in t){if(!(e in i.shape))throw Error(`Unrecognized key: "${e}"`);t[e]&&delete o[e]}return eW(e,{...e._zod.def,shape:o,checks:[]})})(e,t),e.partial=(...t)=>(function(e,t,o){let i=t._zod.def.shape,a={...i};if(o)for(let t in o){if(!(t in i))throw Error(`Unrecognized key: "${t}"`);o[t]&&(a[t]=e?new e({type:"optional",innerType:i[t]}):i[t])}else for(let t in i)a[t]=e?new e({type:"optional",innerType:i[t]}):i[t];return eW(t,{...t._zod.def,shape:a,checks:[]})})(a$,e,t[0]),e.required=(...t)=>(function(e,t,o){let i=t._zod.def.shape,a={...i};if(o)for(let t in o){if(!(t in a))throw Error(`Unrecognized key: "${t}"`);o[t]&&(a[t]=new e({type:"nonoptional",innerType:i[t]}))}else for(let t in i)a[t]=new e({type:"nonoptional",innerType:i[t]});return eW(t,{...t._zod.def,shape:a,checks:[]})})(aV,e,t[0])});function aA(e,t){return new aS({type:"object",get shape(){return e$(this,"shape",{...e}),this.shape},...eJ(t)})}function aT(e,t){return new aS({type:"object",get shape(){return e$(this,"shape",{...e}),this.shape},catchall:aM(),...eJ(t)})}function aP(e,t){return new aS({type:"object",get shape(){return e$(this,"shape",{...e}),this.shape},catchall:ak(),...eJ(t)})}let aN=e7("ZodUnion",(e,t)=>{ip.init(e,t),iY.init(e,t),e.options=t.options});function aO(e,t){return new aN({type:"union",options:e,...eJ(t)})}let a_=e7("ZodDiscriminatedUnion",(e,t)=>{aN.init(e,t),im.init(e,t)});function az(e,t,o){return new a_({type:"union",options:t,discriminator:e,...eJ(o)})}let aE=e7("ZodIntersection",(e,t)=>{ig.init(e,t),iY.init(e,t)}),aq=e7("ZodRecord",(e,t)=>{iv.init(e,t),iY.init(e,t),e.keyType=t.keyType,e.valueType=t.valueType});function aB(e,t,o){return new aq({type:"record",keyType:e,valueType:t,...eJ(o)})}let aj=e7("ZodEnum",(e,t)=>{ix.init(e,t),iY.init(e,t),e.enum=t.entries,e.options=Object.values(t.entries);let o=new Set(Object.keys(t.entries));e.extract=(e,i)=>{let a={};for(let i of e)if(o.has(i))a[i]=t.entries[i];else throw Error(`Key ${i} not found in enum`);return new aj({...t,checks:[],...eJ(i),entries:a})},e.exclude=(e,i)=>{let a={...t.entries};for(let t of e)if(o.has(t))delete a[t];else throw Error(`Key ${t} not found in enum`);return new aj({...t,checks:[],...eJ(i),entries:a})}});function aC(e,t){return new aj({type:"enum",entries:Array.isArray(e)?Object.fromEntries(e.map(e=>[e,e])):e,...eJ(t)})}let aR=e7("ZodLiteral",(e,t)=>{ib.init(e,t),iY.init(e,t),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 aL(e,t){return new aR({type:"literal",values:Array.isArray(e)?e:[e],...eJ(t)})}let aD=e7("ZodTransform",(e,t)=>{ik.init(e,t),iY.init(e,t),e._zod.parse=(o,i)=>{o.addIssue=i=>{"string"==typeof i?o.issues.push(e5(i,o.value,t)):(i.fatal&&(i.continue=!1),i.code??(i.code="custom"),i.input??(i.input=o.value),i.inst??(i.inst=e),i.continue??(i.continue=!0),o.issues.push(e5(i)))};let a=t.transform(o.value,o);return a instanceof Promise?a.then(e=>(o.value=e,o)):(o.value=a,o)}}),a$=e7("ZodOptional",(e,t)=>{iy.init(e,t),iY.init(e,t),e.unwrap=()=>e._zod.def.innerType});function aZ(e){return new a$({type:"optional",innerType:e})}let aF=e7("ZodNullable",(e,t)=>{iM.init(e,t),iY.init(e,t),e.unwrap=()=>e._zod.def.innerType});function aQ(e){return new aF({type:"nullable",innerType:e})}let aG=e7("ZodDefault",(e,t)=>{iI.init(e,t),iY.init(e,t),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap}),aU=e7("ZodPrefault",(e,t)=>{iS.init(e,t),iY.init(e,t),e.unwrap=()=>e._zod.def.innerType}),aV=e7("ZodNonOptional",(e,t)=>{iA.init(e,t),iY.init(e,t),e.unwrap=()=>e._zod.def.innerType}),aK=e7("ZodCatch",(e,t)=>{iP.init(e,t),iY.init(e,t),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap}),aW=e7("ZodPipe",(e,t)=>{iN.init(e,t),iY.init(e,t),e.in=t.in,e.out=t.out});function aJ(e,t){return new aW({type:"pipe",in:e,out:t})}let aY=e7("ZodReadonly",(e,t)=>{i_.init(e,t),iY.init(e,t)}),aH=e7("ZodLazy",(e,t)=>{iE.init(e,t),iY.init(e,t),e.unwrap=()=>e._zod.def.getter()});function aX(e){return new aH({type:"lazy",getter:e})}let a0=e7("ZodCustom",(e,t)=>{iq.init(e,t),iY.init(e,t)});function a2(e,t){return function(e,t,o){let i=eJ(o);return i.abort??(i.abort=!0),new e({type:"custom",check:"custom",fn:t,...i})}(a0,e??(()=>!0),t)}function a1(e,t={error:`Input not instance of ${e.name}`}){let o=new a0({type:"custom",check:"custom",fn:t=>t instanceof e,abort:!0,...eJ(t)});return o._zod.bag.Class=e,o}var a5=Object.defineProperty,a3="AI_NoOutputSpecifiedError",a4=`vercel.ai.error.${a3}`,a7=Symbol.for(a4),a8=class extends el{constructor({message:e="No output specified."}={}){super({name:a3,message:e}),this[c]=!0}static isInstance(e){return el.hasMarker(e,a4)}};c=a7;var a6=!1,a9="AI_InvalidArgumentError",re=`vercel.ai.error.${a9}`,rt=Symbol.for(re),ro=class extends el{constructor({parameter:e,value:t,message:o}){super({name:a9,message:`Invalid argument for parameter ${e}: ${o}`}),this[u]=!0,this.parameter=e,this.value=t}static isInstance(e){return el.hasMarker(e,re)}};u=rt,Symbol.for("vercel.ai.error.AI_InvalidStreamPartError");var ri="AI_InvalidToolInputError",ra=`vercel.ai.error.${ri}`,rr=Symbol.for(ra),rs=class extends el{constructor({toolInput:e,toolName:t,cause:o,message:i=`Invalid input for tool ${t}: ${ed(o)}`}){super({name:ri,message:i,cause:o}),this[p]=!0,this.toolInput=e,this.toolName=t}static isInstance(e){return el.hasMarker(e,ra)}};p=rr;var rn="vercel.ai.error.AI_MCPClientError",rl=Symbol.for(rn),rd=class extends el{constructor({name:e="MCPClientError",message:t,cause:o}){super({name:e,message:t,cause:o}),this[m]=!0}static isInstance(e){return el.hasMarker(e,rn)}};m=rl,Symbol.for("vercel.ai.error.AI_NoImageGeneratedError");var rc="AI_NoObjectGeneratedError",ru=`vercel.ai.error.${rc}`,rp=Symbol.for(ru),rm=class extends el{constructor({message:e="No object generated.",cause:t,text:o,response:i,usage:a,finishReason:r}){super({name:rc,message:e,cause:t}),this[h]=!0,this.text=o,this.response=i,this.usage=a,this.finishReason=r}static isInstance(e){return el.hasMarker(e,ru)}};h=rp;var rg="AI_NoOutputGeneratedError",rh=`vercel.ai.error.${rg}`;v=Symbol.for(rh);var rv="AI_NoSuchToolError",rf=`vercel.ai.error.${rv}`,rx=Symbol.for(rf),rb=class extends el{constructor({toolName:e,availableTools:t,message:o=`Model tried to call unavailable tool '${e}'. ${void 0===t?"No tools are available.":`Available tools: ${t.join(", ")}.`}`}){super({name:rv,message:o}),this[f]=!0,this.toolName=e,this.availableTools=t}static isInstance(e){return el.hasMarker(e,rf)}};f=rx;var rk="AI_ToolCallRepairError",ry=`vercel.ai.error.${rk}`,rM=Symbol.for(ry),rI=class extends el{constructor({cause:e,originalError:t,message:o=`Error repairing tool call: ${ed(e)}`}){super({name:rk,message:o,cause:e}),this[x]=!0,this.originalError=t}static isInstance(e){return el.hasMarker(e,ry)}};x=rM;var rw=class extends el{constructor(e){super({name:"AI_UnsupportedModelVersionError",message:`Unsupported model version ${e.version} for provider "${e.provider}" and model "${e.modelId}". AI SDK 5 only supports models that implement specification version "v2".`}),this.version=e.version,this.provider=e.provider,this.modelId=e.modelId}};Symbol.for("vercel.ai.error.AI_InvalidDataContentError");var rS="AI_InvalidMessageRoleError",rA=`vercel.ai.error.${rS}`,rT=Symbol.for(rA),rP=class extends el{constructor({role:e,message:t=`Invalid message role: '${e}'. Must be one of: "system", "user", "assistant", "tool".`}){super({name:rS,message:t}),this[k]=!0,this.role=e}static isInstance(e){return el.hasMarker(e,rA)}};k=rT,Symbol.for("vercel.ai.error.AI_MessageConversionError");var rN="AI_DownloadError",rO=`vercel.ai.error.${rN}`,r_=Symbol.for(rO),rz=class extends el{constructor({url:e,statusCode:t,statusText:o,cause:i,message:a=null==i?`Failed to download ${e}: ${t} ${o}`:`Failed to download ${e}: ${i}`}){super({name:rN,message:a,cause:i}),this[M]=!0,this.url=e,this.statusCode=t,this.statusText=o}static isInstance(e){return el.hasMarker(e,rO)}};M=r_;var rE="AI_RetryError",rq=`vercel.ai.error.${rE}`,rB=Symbol.for(rq),rj=class extends el{constructor({message:e,reason:t,errors:o}){super({name:rE,message:e}),this[I]=!0,this.reason=t,this.errors=o,this.lastError=o[o.length-1]}static isInstance(e){return el.hasMarker(e,rq)}};I=rB;var rC=[{mediaType:"image/gif",bytesPrefix:[71,73,70],base64Prefix:"R0lG"},{mediaType:"image/png",bytesPrefix:[137,80,78,71],base64Prefix:"iVBORw"},{mediaType:"image/jpeg",bytesPrefix:[255,216],base64Prefix:"/9j/"},{mediaType:"image/webp",bytesPrefix:[82,73,70,70],base64Prefix:"UklGRg"},{mediaType:"image/bmp",bytesPrefix:[66,77],base64Prefix:"Qk"},{mediaType:"image/tiff",bytesPrefix:[73,73,42,0],base64Prefix:"SUkqAA"},{mediaType:"image/tiff",bytesPrefix:[77,77,0,42],base64Prefix:"TU0AKg"},{mediaType:"image/avif",bytesPrefix:[0,0,0,32,102,116,121,112,97,118,105,102],base64Prefix:"AAAAIGZ0eXBhdmlm"},{mediaType:"image/heic",bytesPrefix:[0,0,0,32,102,116,121,112,104,101,105,99],base64Prefix:"AAAAIGZ0eXBoZWlj"}],rR=e=>{let t="string"==typeof e?convertBase64ToUint8Array(e):e,o=(127&t[6])<<21|(127&t[7])<<14|(127&t[8])<<7|127&t[9];return t.slice(o+10)},rL=async({url:e})=>{var t;let o=e.toString();try{let e=await fetch(o);if(!e.ok)throw new rz({url:o,statusCode:e.status,statusText:e.statusText});return{data:new Uint8Array(await e.arrayBuffer()),mediaType:null!=(t=e.headers.get("content-type"))?t:void 0}}catch(e){if(rz.isInstance(e))throw e;throw new rz({url:o,cause:e})}},rD=(e=rL)=>t=>Promise.all(t.map(async t=>t.isUrlSupportedByModel?null:e(t))),r$=aO([i0(),a1(Uint8Array),a1(ArrayBuffer),a2(e=>{var t,o;return null!=(o=null==(t=globalThis.Buffer)?void 0:t.isBuffer(e))&&o},{message:"Must be a Buffer"})]);function rZ(e){if(e instanceof Uint8Array)return{data:e,mediaType:void 0};if(e instanceof ArrayBuffer)return{data:new Uint8Array(e),mediaType:void 0};if("string"==typeof e)try{e=new URL(e)}catch(e){}if(e instanceof URL&&"data:"===e.protocol){let{mediaType:t,base64Content:o}=function(e){try{let[t,o]=e.split(",");return{mediaType:t.split(";")[0].split(":")[1],base64Content:o}}catch(e){return{mediaType:void 0,base64Content:void 0}}}(e.toString());if(null==t||null==o)throw new AISDKError18({name:"InvalidDataContentError",message:`Invalid data URL format in content ${e.toString()}`});return{data:o,mediaType:t}}return{data:e,mediaType:void 0}}async function rF(e,t,o){let i=e.filter(e=>"user"===e.role).map(e=>e.content).filter(e=>Array.isArray(e)).flat().filter(e=>"image"===e.type||"file"===e.type).map(e=>{var t;let o=null!=(t=e.mediaType)?t:"image"===e.type?"image/*":void 0,i="image"===e.type?e.image:e.data;if("string"==typeof i)try{i=new URL(i)}catch(e){}return{mediaType:o,data:i}}).filter(e=>e.data instanceof URL).map(e=>({url:e.data,isUrlSupportedByModel:null!=e.mediaType&&isUrlSupported({url:e.data.toString(),mediaType:e.mediaType,supportedUrls:o})}));return Object.fromEntries((await t(i)).filter(e=>(null==e?void 0:e.data)!=null).map(({data:e,mediaType:t},o)=>[i[o].url.toString(),{data:e,mediaType:t}]))}var rQ=aX(()=>aO([ax(),i0(),ap(),av(),aB(i0(),rQ),aw(rQ)])),rG=aB(i0(),aB(i0(),rQ)),rU=aA({type:aL("text"),text:i0(),providerOptions:rG.optional()}),rV=aA({type:aL("image"),image:aO([r$,a1(URL)]),mediaType:i0().optional(),providerOptions:rG.optional()}),rK=aA({type:aL("file"),data:aO([r$,a1(URL)]),filename:i0().optional(),mediaType:i0(),providerOptions:rG.optional()}),rW=aA({type:aL("reasoning"),text:i0(),providerOptions:rG.optional()}),rJ=aA({type:aL("tool-call"),toolCallId:i0(),toolName:i0(),input:ak(),providerOptions:rG.optional(),providerExecuted:av().optional()}),rY=az("type",[aA({type:aL("text"),value:i0()}),aA({type:aL("json"),value:rQ}),aA({type:aL("error-text"),value:i0()}),aA({type:aL("error-json"),value:rQ}),aA({type:aL("content"),value:aw(aO([aA({type:aL("text"),text:i0()}),aA({type:aL("media"),data:i0(),mediaType:i0()})]))})]),rH=aA({type:aL("tool-result"),toolCallId:i0(),toolName:i0(),output:rY,providerOptions:rG.optional()}),rX=aA({role:aL("system"),content:i0(),providerOptions:rG.optional()}),r0=aA({role:aL("user"),content:aO([i0(),aw(aO([rU,rV,rK]))]),providerOptions:rG.optional()}),r2=aA({role:aL("assistant"),content:aO([i0(),aw(aO([rU,rK,rW,rJ,rH]))]),providerOptions:rG.optional()}),r1=aO([rX,r0,r2,aA({role:aL("tool"),content:aw(rH),providerOptions:rG.optional()})]),r5={startSpan:()=>r3,startActiveSpan:(e,t,o,i)=>"function"==typeof t?t(r3):"function"==typeof o?o(r3):"function"==typeof i?i(r3):void 0},r3={spanContext:()=>r4,setAttribute(){return this},setAttributes(){return this},addEvent(){return this},addLink(){return this},addLinks(){return this},setStatus(){return this},updateName(){return this},end(){return this},isRecording:()=>!1,recordException(){return this}},r4={traceId:"",spanId:"",traceFlags:0};function r7(e,t){t instanceof Error?(e.recordException({name:t.name,message:t.message,stack:t.stack}),e.setStatus({code:SpanStatusCode.ERROR,message:t.message})):e.setStatus({code:SpanStatusCode.ERROR})}function r8({telemetry:e,attributes:t}){return(null==e?void 0:e.isEnabled)!==!0?{}:Object.entries(t).reduce((t,[o,i])=>{if(null==i)return t;if("object"==typeof i&&"input"in i&&"function"==typeof i.input){if((null==e?void 0:e.recordInputs)===!1)return t;let a=i.input();return null==a?t:{...t,[o]:a}}if("object"==typeof i&&"output"in i&&"function"==typeof i.output){if((null==e?void 0:e.recordOutputs)===!1)return t;let a=i.output();return null==a?t:{...t,[o]:a}}return{...t,[o]:i}},{})}function r6(e,t){return null==e&&null==t?void 0:(null!=e?e:0)+(null!=t?t:0)}var r9=({maxRetries:e=2,initialDelayInMs:t=2e3,backoffFactor:o=2,abortSignal:i}={})=>async a=>se(a,{maxRetries:e,delayInMs:t,backoffFactor:o,abortSignal:i});async function se(e,{maxRetries:t,delayInMs:o,backoffFactor:i,abortSignal:a},r=[]){try{return await e()}catch(d){if(isAbortError(d)||0===t)throw d;let s=getErrorMessage3(d),n=[...r,d],l=n.length;if(l>t)throw new rj({message:`Failed after ${l} attempts. Last error: ${s}`,reason:"maxRetriesExceeded",errors:n});if(d instanceof Error&&APICallError2.isInstance(d)&&!0===d.isRetryable&&l<=t)return await delay(function({error:e,exponentialBackoffDelay:t}){let o;let i=e.responseHeaders;if(!i)return t;let a=i["retry-after-ms"];if(a){let e=parseFloat(a);Number.isNaN(e)||(o=e)}let r=i["retry-after"];if(r&&void 0===o){let e=parseFloat(r);o=Number.isNaN(e)?Date.parse(r)-Date.now():1e3*e}return null!=o&&!Number.isNaN(o)&&0<=o&&(o<6e4||o<t)?o:t}({error:d,exponentialBackoffDelay:o}),{abortSignal:a}),se(e,{maxRetries:t,delayInMs:i*o,backoffFactor:i,abortSignal:a},n);if(1===l)throw d;throw new rj({message:`Failed after ${l} attempts with non-retryable error: '${s}'`,reason:"errorNotRetryable",errors:n})}}var st=class{constructor({data:e,mediaType:t}){let o=e instanceof Uint8Array;this.base64Data=o?void 0:e,this.uint8ArrayData=o?e:void 0,this.mediaType=t}get base64(){return null==this.base64Data&&(this.base64Data=function(e){let t="";for(let o=0;o<e.length;o++)t+=String.fromCodePoint(e[o]);return tY(t)}(this.uint8ArrayData)),this.base64Data}get uint8Array(){return null==this.uint8ArrayData&&(this.uint8ArrayData=function(e){let t=tH(e.replace(/-/g,"+").replace(/_/g,"/"));return Uint8Array.from(t,e=>e.codePointAt(0))}(this.base64Data)),this.uint8ArrayData}};async function so({toolCall:e,tools:t}){let o=e.toolName,i=t[o];if(null==i)throw new rb({toolName:e.toolName,availableTools:Object.keys(t)});let a=asSchema2(i.inputSchema),r=""===e.input.trim()?await safeValidateTypes2({value:{},schema:a}):await safeParseJSON({text:e.input,schema:a});if(!1===r.success)throw new rs({toolName:o,toolInput:e.input,cause:r.error});return"dynamic"===i.type?{type:"tool-call",toolCallId:e.toolCallId,toolName:e.toolName,input:r.value,providerExecuted:e.providerExecuted,providerMetadata:e.providerMetadata,dynamic:!0}:{type:"tool-call",toolCallId:e.toolCallId,toolName:o,input:r.value,providerExecuted:e.providerExecuted,providerMetadata:e.providerMetadata}}function si({output:e,tool:t,errorMode:o}){return"text"===o?{type:"error-text",value:getErrorMessage4(e)}:"json"===o?{type:"error-json",value:sa(e)}:(null==t?void 0:t.toModelOutput)?t.toModelOutput(e):"string"==typeof e?{type:"text",value:e}:{type:"json",value:sa(e)}}function sa(e){return void 0===e?null:e}tg({prefix:"aitxt",size:24});function sr(e,t){let o=new Headers(null!=e?e:{});for(let[e,i]of Object.entries(t))o.has(e)||o.set(e,i);return o}TransformStream;var ss=aO([aT({type:aL("text-start"),id:i0(),providerMetadata:rG.optional()}),aT({type:aL("text-delta"),id:i0(),delta:i0(),providerMetadata:rG.optional()}),aT({type:aL("text-end"),id:i0(),providerMetadata:rG.optional()}),aT({type:aL("error"),errorText:i0()}),aT({type:aL("tool-input-start"),toolCallId:i0(),toolName:i0(),providerExecuted:av().optional(),dynamic:av().optional()}),aT({type:aL("tool-input-delta"),toolCallId:i0(),inputTextDelta:i0()}),aT({type:aL("tool-input-available"),toolCallId:i0(),toolName:i0(),input:ak(),providerExecuted:av().optional(),providerMetadata:rG.optional(),dynamic:av().optional()}),aT({type:aL("tool-input-error"),toolCallId:i0(),toolName:i0(),input:ak(),providerExecuted:av().optional(),providerMetadata:rG.optional(),dynamic:av().optional(),errorText:i0()}),aT({type:aL("tool-output-available"),toolCallId:i0(),output:ak(),providerExecuted:av().optional(),dynamic:av().optional(),preliminary:av().optional()}),aT({type:aL("tool-output-error"),toolCallId:i0(),errorText:i0(),providerExecuted:av().optional(),dynamic:av().optional()}),aT({type:aL("reasoning"),text:i0(),providerMetadata:rG.optional()}),aT({type:aL("reasoning-start"),id:i0(),providerMetadata:rG.optional()}),aT({type:aL("reasoning-delta"),id:i0(),delta:i0(),providerMetadata:rG.optional()}),aT({type:aL("reasoning-end"),id:i0(),providerMetadata:rG.optional()}),aT({type:aL("reasoning-part-finish")}),aT({type:aL("source-url"),sourceId:i0(),url:i0(),title:i0().optional(),providerMetadata:rG.optional()}),aT({type:aL("source-document"),sourceId:i0(),mediaType:i0(),title:i0(),filename:i0().optional(),providerMetadata:rG.optional()}),aT({type:aL("file"),url:i0(),mediaType:i0(),providerMetadata:rG.optional()}),aT({type:i0().startsWith("data-"),id:i0().optional(),data:ak(),transient:av().optional()}),aT({type:aL("start-step")}),aT({type:aL("finish-step")}),aT({type:aL("start"),messageId:i0().optional(),messageMetadata:ak().optional()}),aT({type:aL("finish"),messageMetadata:ak().optional()}),aT({type:aL("abort")}),aT({type:aL("message-metadata"),messageMetadata:ak()})]);async function sn(e){if(void 0===e)return{value:void 0,state:"undefined-input"};let t=await tb({text:e});return t.success?{value:t.value,state:"successful-parse"}:(t=await tb({text:function(e){let t=["ROOT"],o=-1,i=null;function a(e,a,r){switch(e){case'"':o=a,t.pop(),t.push(r),t.push("INSIDE_STRING");break;case"f":case"t":case"n":o=a,i=a,t.pop(),t.push(r),t.push("INSIDE_LITERAL");break;case"-":t.pop(),t.push(r),t.push("INSIDE_NUMBER");break;case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":o=a,t.pop(),t.push(r),t.push("INSIDE_NUMBER");break;case"{":o=a,t.pop(),t.push(r),t.push("INSIDE_OBJECT_START");break;case"[":o=a,t.pop(),t.push(r),t.push("INSIDE_ARRAY_START")}}function r(e,i){switch(e){case",":t.pop(),t.push("INSIDE_OBJECT_AFTER_COMMA");break;case"}":o=i,t.pop()}}function s(e,i){switch(e){case",":t.pop(),t.push("INSIDE_ARRAY_AFTER_COMMA");break;case"]":o=i,t.pop()}}for(let n=0;n<e.length;n++){let l=e[n];switch(t[t.length-1]){case"ROOT":a(l,n,"FINISH");break;case"INSIDE_OBJECT_START":switch(l){case'"':t.pop(),t.push("INSIDE_OBJECT_KEY");break;case"}":o=n,t.pop()}break;case"INSIDE_OBJECT_AFTER_COMMA":'"'===l&&(t.pop(),t.push("INSIDE_OBJECT_KEY"));break;case"INSIDE_OBJECT_KEY":'"'===l&&(t.pop(),t.push("INSIDE_OBJECT_AFTER_KEY"));break;case"INSIDE_OBJECT_AFTER_KEY":":"===l&&(t.pop(),t.push("INSIDE_OBJECT_BEFORE_VALUE"));break;case"INSIDE_OBJECT_BEFORE_VALUE":a(l,n,"INSIDE_OBJECT_AFTER_VALUE");break;case"INSIDE_OBJECT_AFTER_VALUE":r(l,n);break;case"INSIDE_STRING":switch(l){case'"':t.pop(),o=n;break;case"\\":t.push("INSIDE_STRING_ESCAPE");break;default:o=n}break;case"INSIDE_ARRAY_START":"]"===l?(o=n,t.pop()):(o=n,a(l,n,"INSIDE_ARRAY_AFTER_VALUE"));break;case"INSIDE_ARRAY_AFTER_VALUE":switch(l){case",":t.pop(),t.push("INSIDE_ARRAY_AFTER_COMMA");break;case"]":o=n,t.pop();break;default:o=n}break;case"INSIDE_ARRAY_AFTER_COMMA":a(l,n,"INSIDE_ARRAY_AFTER_VALUE");break;case"INSIDE_STRING_ESCAPE":t.pop(),o=n;break;case"INSIDE_NUMBER":switch(l){case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":o=n;break;case"e":case"E":case"-":case".":break;case",":t.pop(),"INSIDE_ARRAY_AFTER_VALUE"===t[t.length-1]&&s(l,n),"INSIDE_OBJECT_AFTER_VALUE"===t[t.length-1]&&r(l,n);break;case"}":t.pop(),"INSIDE_OBJECT_AFTER_VALUE"===t[t.length-1]&&r(l,n);break;case"]":t.pop(),"INSIDE_ARRAY_AFTER_VALUE"===t[t.length-1]&&s(l,n);break;default:t.pop()}break;case"INSIDE_LITERAL":{let a=e.substring(i,n+1);"false".startsWith(a)||"true".startsWith(a)||"null".startsWith(a)?o=n:(t.pop(),"INSIDE_OBJECT_AFTER_VALUE"===t[t.length-1]?r(l,n):"INSIDE_ARRAY_AFTER_VALUE"===t[t.length-1]&&s(l,n))}}}let n=e.slice(0,o+1);for(let o=t.length-1;o>=0;o--)switch(t[o]){case"INSIDE_STRING":n+='"';break;case"INSIDE_OBJECT_KEY":case"INSIDE_OBJECT_AFTER_KEY":case"INSIDE_OBJECT_AFTER_COMMA":case"INSIDE_OBJECT_START":case"INSIDE_OBJECT_BEFORE_VALUE":case"INSIDE_OBJECT_AFTER_VALUE":n+="}";break;case"INSIDE_ARRAY_START":case"INSIDE_ARRAY_AFTER_COMMA":case"INSIDE_ARRAY_AFTER_VALUE":n+="]";break;case"INSIDE_LITERAL":{let t=e.substring(i,e.length);"true".startsWith(t)?n+="true".slice(t.length):"false".startsWith(t)?n+="false".slice(t.length):"null".startsWith(t)&&(n+="null".slice(t.length))}}return n}(e)})).success?{value:t.value,state:"repaired-parse"}:{value:void 0,state:"failed-parse"}}function sl(e){return e.type.startsWith("tool-")||"dynamic-tool"===e.type}function sd(){let e,t;return{promise:new Promise((o,i)=>{e=o,t=i}),resolve:e,reject:t}}tg({prefix:"aitxt",size:24});async function sc(e,t,o){let i=await safeParseJSON3({text:e});if(!i.success)throw new rm({message:"No object generated: could not parse the response.",cause:i.error,text:e,response:o.response,usage:o.usage,finishReason:o.finishReason});let a=await t.validateFinalResult(i.value,{text:e,response:o.response,usage:o.usage});if(!a.success)throw new rm({message:"No object generated: response did not match schema.",cause:a.error,text:e,response:o.response,usage:o.usage,finishReason:o.finishReason});return a.value}tg({prefix:"aiobj",size:24}),tg({prefix:"aiobj",size:24}),((e,t)=>{for(var o in t)a5(e,o,{get:t[o],enumerable:!0})})({},{object:()=>sp,text:()=>su});var su=()=>({type:"text",responseFormat:{type:"text"},parsePartial:async({text:e})=>({partial:e}),parseOutput:async({text:e})=>e}),sp=({schema:e})=>{let t=function(e){return null==e?tJ({properties:{},additionalProperties:!1}):"object"==typeof e&&null!==e&&tW in e&&!0===e[tW]&&"jsonSchema"in e&&"validate"in e?e:function(e,t){return"_zod"in e?tJ(e4(e,{target:"draft-7",io:"output",reused:"inline"}),{validate:async t=>{let o=await tp(e,t);return o.success?{success:!0,value:o.data}:{success:!1,error:o.error}}}):tJ(tK(e,{$refStrategy:"none"}),{validate:async t=>{let o=await e.safeParseAsync(t);return o.success?{success:!0,value:o.data}:{success:!1,error:o.error}}})}(e)}(e);return{type:"object",responseFormat:{type:"json",schema:t.jsonSchema},async parsePartial({text:e}){let t=await sn(e);switch(t.state){case"failed-parse":case"undefined-input":return;case"repaired-parse":case"successful-parse":return{partial:t.value};default:{let e=t.state;throw Error(`Unsupported parse state: ${e}`)}}},async parseOutput({text:e},o){let i=await tb({text:e});if(!i.success)throw new rm({message:"No object generated: could not parse the response.",cause:i.error,text:e,response:o.response,usage:o.usage,finishReason:o.finishReason});let a=await tx({value:i.value,schema:t});if(!a.success)throw new rm({message:"No object generated: response did not match schema.",cause:a.error,text:e,response:o.response,usage:o.usage,finishReason:o.finishReason});return a.value}}},sm=({model:e,middleware:{transformParams:t,wrapGenerate:o,wrapStream:i,overrideProvider:a,overrideModelId:r,overrideSupportedUrls:s},modelId:n,providerId:l})=>{var d,c,u;async function p({params:o,type:i}){return t?await t({params:o,type:i,model:e}):o}return{specificationVersion:"v2",provider:null!=(d=null!=l?l:null==a?void 0:a({model:e}))?d:e.provider,modelId:null!=(c=null!=n?n:null==r?void 0:r({model:e}))?c:e.modelId,supportedUrls:null!=(u=null==s?void 0:s({model:e}))?u:e.supportedUrls,async doGenerate(t){let i=await p({params:t,type:"generate"}),a=async()=>e.doGenerate(i),r=async()=>e.doStream(i);return o?o({doGenerate:a,doStream:r,params:i,model:e}):a()},async doStream(t){let o=await p({params:t,type:"stream"}),a=async()=>e.doGenerate(o),r=async()=>e.doStream(o);return i?i({doGenerate:a,doStream:r,params:o,model:e}):r()}}},sg="AI_NoSuchProviderError",sh=`vercel.ai.error.${sg}`;w=Symbol.for(sh);var sv=aP({name:i0(),version:i0()}),sf=aP({_meta:aZ(aA({}).loose())}),sx=aA({method:i0(),params:aZ(sf)}),sb=aP({experimental:aZ(aA({}).loose()),logging:aZ(aA({}).loose()),prompts:aZ(aP({listChanged:aZ(av())})),resources:aZ(aP({subscribe:aZ(av()),listChanged:aZ(av())})),tools:aZ(aP({listChanged:aZ(av())}))}),sk=(sf.extend({protocolVersion:i0(),capabilities:sb,serverInfo:sv,instructions:aZ(i0())}),sf.extend({nextCursor:aZ(i0())})),sy=aA({name:i0(),description:aZ(i0()),inputSchema:aA({type:aL("object"),properties:aZ(aA({}).loose())}).loose()}).loose(),sM=(sk.extend({tools:aw(sy)}),aA({type:aL("text"),text:i0()}).loose()),sI=aA({type:aL("image"),data:iC(an,void 0),mimeType:i0()}).loose(),sw=aA({uri:i0(),mimeType:aZ(i0())}).loose(),sS=sw.extend({text:i0()}),sA=sw.extend({blob:iC(an,void 0)}),sT=aA({type:aL("resource"),resource:aO([sS,sA])}).loose(),sP=(sf.extend({content:aw(aO([sM,sI,sT])),isError:av().default(!1).optional()}).or(sf.extend({toolResult:ak()})),aA({jsonrpc:aL("2.0"),id:aO([i0(),ap().int()])}).merge(sx).strict()),sN=aA({jsonrpc:aL("2.0"),id:aO([i0(),ap().int()]),result:sf}).strict(),sO=aA({jsonrpc:aL("2.0"),id:aO([i0(),ap().int()]),error:aA({code:ap().int(),message:i0(),data:aZ(ak())})}).strict(),s_=aO([sP,aA({jsonrpc:aL("2.0")}).merge(aA({method:i0(),params:aZ(sf)})).strict(),sN,sO]),sz=class{constructor({api:e="/api/chat",credentials:t,headers:o,body:i,fetch:a,prepareSendMessagesRequest:r,prepareReconnectToStreamRequest:s}){this.api=e,this.credentials=t,this.headers=o,this.body=i,this.fetch=a,this.prepareSendMessagesRequest=r,this.prepareReconnectToStreamRequest=s}async sendMessages({abortSignal:e,...t}){var o,i,a,r,s;let n=await tk(this.body),l=await tk(this.headers),d=await tk(this.credentials),c=await (null==(o=this.prepareSendMessagesRequest)?void 0:o.call(this,{api:this.api,id:t.chatId,messages:t.messages,body:{...n,...t.body},headers:{...l,...t.headers},credentials:d,requestMetadata:t.metadata,trigger:t.trigger,messageId:t.messageId})),u=null!=(i=null==c?void 0:c.api)?i:this.api,p=(null==c?void 0:c.headers)!==void 0?c.headers:{...l,...t.headers},m=(null==c?void 0:c.body)!==void 0?c.body:{...n,...t.body,id:t.chatId,messages:t.messages,trigger:t.trigger,messageId:t.messageId},g=null!=(a=null==c?void 0:c.credentials)?a:d,h=null!=(r=this.fetch)?r:globalThis.fetch,v=await h(u,{method:"POST",headers:{"Content-Type":"application/json",...p},body:JSON.stringify(m),credentials:g,signal:e});if(!v.ok)throw Error(null!=(s=await v.text())?s:"Failed to fetch the chat response.");if(!v.body)throw Error("The response body is empty.");return this.processResponseStream(v.body)}async reconnectToStream(e){var t,o,i,a,r;let s=await tk(this.body),n=await tk(this.headers),l=await tk(this.credentials),d=await (null==(t=this.prepareReconnectToStreamRequest)?void 0:t.call(this,{api:this.api,id:e.chatId,body:{...s,...e.body},headers:{...n,...e.headers},credentials:l,requestMetadata:e.metadata})),c=null!=(o=null==d?void 0:d.api)?o:`${this.api}/${e.chatId}/stream`,u=(null==d?void 0:d.headers)!==void 0?d.headers:{...n,...e.headers},p=null!=(i=null==d?void 0:d.credentials)?i:l,m=null!=(a=this.fetch)?a:globalThis.fetch,g=await m(c,{method:"GET",headers:u,credentials:p});if(204===g.status)return null;if(!g.ok)throw Error(null!=(r=await g.text())?r:"Failed to fetch the chat response.");if(!g.body)throw Error("The response body is empty.");return this.processResponseStream(g.body)}},sE=class extends sz{constructor(e={}){super(e)}processResponseStream(e){return(function({stream:e,schema:t}){return e.pipeThrough(new TextDecoderStream).pipeThrough(new eE).pipeThrough(new TransformStream({async transform({data:e},o){"[DONE]"!==e&&o.enqueue(await tb({text:e,schema:t}))}}))})({stream:e,schema:ss}).pipeThrough(new TransformStream({async transform(e,t){if(!e.success)throw e.error;t.enqueue(e.value)}}))}};function sq({messages:e}){let t=e[e.length-1];if(!t||"assistant"!==t.role)return!1;let o=t.parts.reduce((e,t,o)=>"step-start"===t.type?o:e,-1),i=t.parts.slice(o+1).filter(sl);return i.length>0&&i.every(e=>"output-available"===e.state)}var sB=aA({type:aL("text"),text:i0(),state:aC(["streaming","done"]).optional(),providerMetadata:rG.optional()}),sj=aA({type:aL("reasoning"),text:i0(),state:aC(["streaming","done"]).optional(),providerMetadata:rG.optional()}),sC=aA({type:aL("source-url"),sourceId:i0(),url:i0(),title:i0().optional(),providerMetadata:rG.optional()}),sR=aA({type:aL("source-document"),sourceId:i0(),mediaType:i0(),title:i0(),filename:i0().optional(),providerMetadata:rG.optional()}),sL=aA({type:aL("file"),mediaType:i0(),filename:i0().optional(),url:i0(),providerMetadata:rG.optional()}),sD=aA({type:aL("step-start")}),s$=aA({type:i0().startsWith("data-"),id:i0().optional(),data:ak()}),sZ=[aA({type:aL("dynamic-tool"),toolName:i0(),toolCallId:i0(),state:aL("input-streaming"),input:ak().optional(),output:aM().optional(),errorText:aM().optional()}),aA({type:aL("dynamic-tool"),toolName:i0(),toolCallId:i0(),state:aL("input-available"),input:ak(),output:aM().optional(),errorText:aM().optional(),callProviderMetadata:rG.optional()}),aA({type:aL("dynamic-tool"),toolName:i0(),toolCallId:i0(),state:aL("output-available"),input:ak(),output:ak(),errorText:aM().optional(),callProviderMetadata:rG.optional(),preliminary:av().optional()}),aA({type:aL("dynamic-tool"),toolName:i0(),toolCallId:i0(),state:aL("output-error"),input:ak(),output:aM().optional(),errorText:i0(),callProviderMetadata:rG.optional()})],sF=[aA({type:i0().startsWith("tool-"),toolCallId:i0(),state:aL("input-streaming"),input:ak().optional(),output:aM().optional(),errorText:aM().optional()}),aA({type:i0().startsWith("tool-"),toolCallId:i0(),state:aL("input-available"),input:ak(),output:aM().optional(),errorText:aM().optional(),callProviderMetadata:rG.optional()}),aA({type:i0().startsWith("tool-"),toolCallId:i0(),state:aL("output-available"),input:ak(),output:ak(),errorText:aM().optional(),callProviderMetadata:rG.optional(),preliminary:av().optional()}),aA({type:i0().startsWith("tool-"),toolCallId:i0(),state:aL("output-error"),input:ak(),output:aM().optional(),errorText:i0(),callProviderMetadata:rG.optional()})];aA({id:i0(),role:aC(["system","user","assistant"]),metadata:ak().optional(),parts:aw(aO([sB,sj,sC,sR,sL,sD,s$,...sZ,...sF]))});let sQ=Symbol("Let zodToJsonSchema decide on which parser to use"),sG={name:void 0,$refStrategy:"root",basePath:["#"],effectStrategy:"input",pipeStrategy:"all",dateStrategy:"format:date-time",mapStrategy:"entries",removeAdditionalStrategy:"passthrough",allowedAdditionalProperties:!0,rejectedAdditionalProperties:!1,definitionPath:"definitions",target:"jsonSchema7",strictUnions:!1,definitions:{},errorMessages:!1,markdownDescription:!1,patternStrategy:"escape",applyRegexFlags:!1,emailStrategy:"format:email",base64Strategy:"contentEncoding:base64",nameStrategy:"ref",openAiAnyTypeName:"OpenAiAnyType"},sU=e=>"string"==typeof e?{...sG,name:e}:{...sG,...e},sV=e=>{let t=sU(e),o=void 0!==t.name?[...t.basePath,t.definitionPath,t.name]:t.basePath;return{...t,flags:{hasReferencedOpenAiAnyType:!1},currentPath:o,propertyPath:void 0,seen:new Map(Object.entries(t.definitions).map(([e,o])=>[o._def,{def:o._def,path:[...t.basePath,t.definitionPath,e],jsonSchema:void 0}]))}},sK=(e,t)=>{let o=0;for(;o<e.length&&o<t.length&&e[o]===t[o];o++);return[(e.length-o).toString(),...t.slice(o)].join("/")};function sW(e){if("openAi"!==e.target)return{};let t=[...e.basePath,e.definitionPath,e.openAiAnyTypeName];return e.flags.hasReferencedOpenAiAnyType=!0,{$ref:"relative"===e.$refStrategy?sK(t,e.currentPath):t.join("/")}}function sJ(e,t,o,i){i?.errorMessages&&o&&(e.errorMessage={...e.errorMessage,[t]:o})}function sY(e,t,o,i,a){e[t]=o,sJ(e,t,i,a)}function sH(e,t){return ns(e.type._def,t)}let sX=(e,t)=>ns(e.innerType._def,t),s0=(e,t)=>{let o={type:"integer",format:"unix-time"};if("openApi3"===t.target)return o;for(let i of e.checks)switch(i.kind){case"min":sY(o,"minimum",i.value,i.message,t);break;case"max":sY(o,"maximum",i.value,i.message,t)}return o},s2=e=>(!("type"in e)||"string"!==e.type)&&"allOf"in e,s1={cuid:/^[cC][^\s-]{8,}$/,cuid2:/^[0-9a-z]+$/,ulid:/^[0-9A-HJKMNP-TV-Z]{26}$/,email:/^(?!\.)(?!.*\.\.)([a-zA-Z0-9_'+\-\.]*)[a-zA-Z0-9_+-]@([a-zA-Z0-9][a-zA-Z0-9\-]*\.)+[a-zA-Z]{2,}$/,emoji:()=>(void 0===i&&(i=RegExp("^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$","u")),i),ipv4Cidr:/^(?:(?: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])\/(3[0-2]|[12]?[0-9])$/,ipv6Cidr:/^(([0-9a-fA-F]{1,4}:){7,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}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,base64:/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,base64url:/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,nanoid:/^[a-zA-Z0-9_-]{21}$/,jwt:/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/};function s5(e,t){let o={type:"string"};if(e.checks)for(let i of e.checks)switch(i.kind){case"min":sY(o,"minLength","number"==typeof o.minLength?Math.max(o.minLength,i.value):i.value,i.message,t);break;case"max":sY(o,"maxLength","number"==typeof o.maxLength?Math.min(o.maxLength,i.value):i.value,i.message,t);break;case"email":switch(t.emailStrategy){case"format:email":s7(o,"email",i.message,t);break;case"format:idn-email":s7(o,"idn-email",i.message,t);break;case"pattern:zod":s8(o,s1.email,i.message,t)}break;case"url":s7(o,"uri",i.message,t);break;case"uuid":s7(o,"uuid",i.message,t);break;case"regex":s8(o,i.regex,i.message,t);break;case"cuid":s8(o,s1.cuid,i.message,t);break;case"cuid2":s8(o,s1.cuid2,i.message,t);break;case"startsWith":s8(o,RegExp(`^${s3(i.value,t)}`),i.message,t);break;case"endsWith":s8(o,RegExp(`${s3(i.value,t)}$`),i.message,t);break;case"datetime":s7(o,"date-time",i.message,t);break;case"date":s7(o,"date",i.message,t);break;case"time":s7(o,"time",i.message,t);break;case"duration":s7(o,"duration",i.message,t);break;case"length":sY(o,"minLength","number"==typeof o.minLength?Math.max(o.minLength,i.value):i.value,i.message,t),sY(o,"maxLength","number"==typeof o.maxLength?Math.min(o.maxLength,i.value):i.value,i.message,t);break;case"includes":s8(o,RegExp(s3(i.value,t)),i.message,t);break;case"ip":"v6"!==i.version&&s7(o,"ipv4",i.message,t),"v4"!==i.version&&s7(o,"ipv6",i.message,t);break;case"base64url":s8(o,s1.base64url,i.message,t);break;case"jwt":s8(o,s1.jwt,i.message,t);break;case"cidr":"v6"!==i.version&&s8(o,s1.ipv4Cidr,i.message,t),"v4"!==i.version&&s8(o,s1.ipv6Cidr,i.message,t);break;case"emoji":s8(o,s1.emoji(),i.message,t);break;case"ulid":s8(o,s1.ulid,i.message,t);break;case"base64":switch(t.base64Strategy){case"format:binary":s7(o,"binary",i.message,t);break;case"contentEncoding:base64":sY(o,"contentEncoding","base64",i.message,t);break;case"pattern:zod":s8(o,s1.base64,i.message,t)}break;case"nanoid":s8(o,s1.nanoid,i.message,t)}return o}function s3(e,t){return"escape"===t.patternStrategy?function(e){let t="";for(let o=0;o<e.length;o++)s4.has(e[o])||(t+="\\"),t+=e[o];return t}(e):e}let s4=new Set("ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789");function s7(e,t,o,i){e.format||e.anyOf?.some(e=>e.format)?(e.anyOf||(e.anyOf=[]),e.format&&(e.anyOf.push({format:e.format,...e.errorMessage&&i.errorMessages&&{errorMessage:{format:e.errorMessage.format}}}),delete e.format,e.errorMessage&&(delete e.errorMessage.format,0===Object.keys(e.errorMessage).length&&delete e.errorMessage)),e.anyOf.push({format:t,...o&&i.errorMessages&&{errorMessage:{format:o}}})):sY(e,"format",t,o,i)}function s8(e,t,o,i){e.pattern||e.allOf?.some(e=>e.pattern)?(e.allOf||(e.allOf=[]),e.pattern&&(e.allOf.push({pattern:e.pattern,...e.errorMessage&&i.errorMessages&&{errorMessage:{pattern:e.errorMessage.pattern}}}),delete e.pattern,e.errorMessage&&(delete e.errorMessage.pattern,0===Object.keys(e.errorMessage).length&&delete e.errorMessage)),e.allOf.push({pattern:s6(t,i),...o&&i.errorMessages&&{errorMessage:{pattern:o}}})):sY(e,"pattern",s6(t,i),o,i)}function s6(e,t){if(!t.applyRegexFlags||!e.flags)return e.source;let o={i:e.flags.includes("i"),m:e.flags.includes("m"),s:e.flags.includes("s")},i=o.i?e.source.toLowerCase():e.source,a="",r=!1,s=!1,n=!1;for(let e=0;e<i.length;e++){if(r){a+=i[e],r=!1;continue}if(o.i){if(s){if(i[e].match(/[a-z]/)){n?(a+=i[e]+`${i[e-2]}-${i[e]}`.toUpperCase(),n=!1):"-"===i[e+1]&&i[e+2]?.match(/[a-z]/)?(a+=i[e],n=!0):a+=`${i[e]}${i[e].toUpperCase()}`;continue}}else if(i[e].match(/[a-z]/)){a+=`[${i[e]}${i[e].toUpperCase()}]`;continue}}if(o.m){if("^"===i[e]){a+=`(^|(?<=[\r
|
|
36
|
+
})));`),t.write(`newResult[${eZ(e)}] = ${o}.value`)}t.write("payload.value = newResult;"),t.write("return payload;");let n=t.compile();return(t,o)=>n(e,t,o)},s=!e6.jitless,n=s&&eG.value,l=t.catchall;e._zod.parse=(d,c)=>{i??(i=a.value);let u=d.value;if(!eQ(u))return d.issues.push({expected:"object",code:"invalid_type",input:u,inst:e}),d;let p=[];if(s&&n&&c?.async===!1&&!0!==c.jitless)o||(o=r(t.shape)),d=o(d,c);else{d.value={};let e=i.shape;for(let t of i.keys){let o=e[t],i=o._zod.run({value:u[t],issues:[]},c),a="optional"===o._zod.optin&&"optional"===o._zod.optout;i instanceof Promise?p.push(i.then(e=>a?im(e,d,t,u):ip(e,d,t))):a?im(i,d,t,u):ip(i,d,t)}}if(!l)return p.length?Promise.all(p).then(()=>d):d;let m=[],g=i.keySet,h=l._zod,v=h.def.type;for(let e of Object.keys(u)){if(g.has(e))continue;if("never"===v){m.push(e);continue}let t=h.run({value:u[e],issues:[]},c);t instanceof Promise?p.push(t.then(t=>ip(t,d,e))):ip(t,d,e)}return(m.length&&d.issues.push({code:"unrecognized_keys",keys:m,input:u,inst:e}),p.length)?Promise.all(p).then(()=>d):d}});function ih(e,t,o,i){for(let o of e)if(0===o.issues.length)return t.value=o.value,t;return t.issues.push({code:"invalid_union",input:t.value,inst:o,errors:e.map(e=>e.issues.map(e=>e2(e,i,e9())))}),t}let iv=e7("$ZodUnion",(e,t)=>{oD.init(e,t),eD(e._zod,"optin",()=>t.options.some(e=>"optional"===e._zod.optin)?"optional":void 0),eD(e._zod,"optout",()=>t.options.some(e=>"optional"===e._zod.optout)?"optional":void 0),eD(e._zod,"values",()=>{if(t.options.every(e=>e._zod.values))return new Set(t.options.flatMap(e=>Array.from(e._zod.values)))}),eD(e._zod,"pattern",()=>{if(t.options.every(e=>e._zod.pattern)){let e=t.options.map(e=>e._zod.pattern);return RegExp(`^(${e.map(e=>eL(e.source)).join("|")})$`)}}),e._zod.parse=(o,i)=>{let a=!1,r=[];for(let e of t.options){let t=e._zod.run({value:o.value,issues:[]},i);if(t instanceof Promise)r.push(t),a=!0;else{if(0===t.issues.length)return t;r.push(t)}}return a?Promise.all(r).then(t=>ih(t,o,e,i)):ih(r,o,e,i)}}),ix=e7("$ZodDiscriminatedUnion",(e,t)=>{iv.init(e,t);let o=e._zod.parse;eD(e._zod,"propValues",()=>{let e={};for(let o of t.options){let i=o._zod.propValues;if(!i||0===Object.keys(i).length)throw Error(`Invalid discriminated union option at index "${t.options.indexOf(o)}"`);for(let[t,o]of Object.entries(i))for(let i of(e[t]||(e[t]=new Set),o))e[t].add(i)}return e});let i=eR(()=>{let e=t.options,o=new Map;for(let i of e){let e=i._zod.propValues[t.discriminator];if(!e||0===e.size)throw Error(`Invalid discriminated union option at index "${t.options.indexOf(i)}"`);for(let t of e){if(o.has(t))throw Error(`Duplicate discriminator value "${String(t)}"`);o.set(t,i)}}return o});e._zod.parse=(a,r)=>{let s=a.value;if(!eQ(s))return a.issues.push({code:"invalid_type",expected:"object",input:s,inst:e}),a;let n=i.value.get(s?.[t.discriminator]);return n?n._zod.run(a,r):t.unionFallback?o(a,r):(a.issues.push({code:"invalid_union",errors:[],note:"No matching discriminator",input:s,path:[t.discriminator],inst:e}),a)}}),ib=e7("$ZodIntersection",(e,t)=>{oD.init(e,t),e._zod.parse=(e,o)=>{let i=e.value,a=t.left._zod.run({value:i,issues:[]},o),r=t.right._zod.run({value:i,issues:[]},o);return a instanceof Promise||r instanceof Promise?Promise.all([a,r]).then(([t,o])=>ik(e,t,o)):ik(e,a,r)}});function ik(e,t,o){if(t.issues.length&&e.issues.push(...t.issues),o.issues.length&&e.issues.push(...o.issues),eH(e))return e;let i=function e(t,o){if(t===o||t instanceof Date&&o instanceof Date&&+t==+o)return{valid:!0,data:t};if(eU(t)&&eU(o)){let i=Object.keys(o),a=Object.keys(t).filter(e=>-1!==i.indexOf(e)),r={...t,...o};for(let i of a){let a=e(t[i],o[i]);if(!a.valid)return{valid:!1,mergeErrorPath:[i,...a.mergeErrorPath]};r[i]=a.data}return{valid:!0,data:r}}if(Array.isArray(t)&&Array.isArray(o)){if(t.length!==o.length)return{valid:!1,mergeErrorPath:[]};let i=[];for(let a=0;a<t.length;a++){let r=e(t[a],o[a]);if(!r.valid)return{valid:!1,mergeErrorPath:[a,...r.mergeErrorPath]};i.push(r.data)}return{valid:!0,data:i}}return{valid:!1,mergeErrorPath:[]}}(t.value,o.value);if(!i.valid)throw Error(`Unmergable intersection. Error path: ${JSON.stringify(i.mergeErrorPath)}`);return e.value=i.data,e}let iy=e7("$ZodRecord",(e,t)=>{oD.init(e,t),e._zod.parse=(o,i)=>{let a=o.value;if(!eU(a))return o.issues.push({expected:"record",code:"invalid_type",input:a,inst:e}),o;let r=[];if(t.keyType._zod.values){let s;let n=t.keyType._zod.values;for(let e of(o.value={},n))if("string"==typeof e||"number"==typeof e||"symbol"==typeof e){let s=t.valueType._zod.run({value:a[e],issues:[]},i);s instanceof Promise?r.push(s.then(t=>{t.issues.length&&o.issues.push(...eX(e,t.issues)),o.value[e]=t.value})):(s.issues.length&&o.issues.push(...eX(e,s.issues)),o.value[e]=s.value)}for(let e in a)n.has(e)||(s=s??[]).push(e);s&&s.length>0&&o.issues.push({code:"unrecognized_keys",input:a,inst:e,keys:s})}else for(let s of(o.value={},Reflect.ownKeys(a))){if("__proto__"===s)continue;let n=t.keyType._zod.run({value:s,issues:[]},i);if(n instanceof Promise)throw Error("Async schemas not supported in object keys currently");if(n.issues.length){o.issues.push({origin:"record",code:"invalid_key",issues:n.issues.map(e=>e2(e,i,e9())),input:s,path:[s],inst:e}),o.value[n.value]=n.value;continue}let l=t.valueType._zod.run({value:a[s],issues:[]},i);l instanceof Promise?r.push(l.then(e=>{e.issues.length&&o.issues.push(...eX(s,e.issues)),o.value[n.value]=e.value})):(l.issues.length&&o.issues.push(...eX(s,l.issues)),o.value[n.value]=l.value)}return r.length?Promise.all(r).then(()=>o):o}}),iM=e7("$ZodEnum",(e,t)=>{oD.init(e,t);let o=ej(t.entries);e._zod.values=new Set(o),e._zod.pattern=RegExp(`^(${o.filter(e=>eV.has(typeof e)).map(e=>"string"==typeof e?eK(e):e.toString()).join("|")})$`),e._zod.parse=(t,i)=>{let a=t.value;return e._zod.values.has(a)||t.issues.push({code:"invalid_value",values:o,input:a,inst:e}),t}}),iI=e7("$ZodLiteral",(e,t)=>{oD.init(e,t),e._zod.values=new Set(t.values),e._zod.pattern=RegExp(`^(${t.values.map(e=>"string"==typeof e?eK(e):e?e.toString():String(e)).join("|")})$`),e._zod.parse=(o,i)=>{let a=o.value;return e._zod.values.has(a)||o.issues.push({code:"invalid_value",values:t.values,input:a,inst:e}),o}}),iw=e7("$ZodTransform",(e,t)=>{oD.init(e,t),e._zod.parse=(e,o)=>{let i=t.transform(e.value,e);if(o.async)return(i instanceof Promise?i:Promise.resolve(i)).then(t=>(e.value=t,e));if(i instanceof Promise)throw new e8;return e.value=i,e}}),iS=e7("$ZodOptional",(e,t)=>{oD.init(e,t),e._zod.optin="optional",e._zod.optout="optional",eD(e._zod,"values",()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,void 0]):void 0),eD(e._zod,"pattern",()=>{let e=t.innerType._zod.pattern;return e?RegExp(`^(${eL(e.source)})?$`):void 0}),e._zod.parse=(e,o)=>"optional"===t.innerType._zod.optin?t.innerType._zod.run(e,o):void 0===e.value?e:t.innerType._zod.run(e,o)}),iA=e7("$ZodNullable",(e,t)=>{oD.init(e,t),eD(e._zod,"optin",()=>t.innerType._zod.optin),eD(e._zod,"optout",()=>t.innerType._zod.optout),eD(e._zod,"pattern",()=>{let e=t.innerType._zod.pattern;return e?RegExp(`^(${eL(e.source)}|null)$`):void 0}),eD(e._zod,"values",()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,null]):void 0),e._zod.parse=(e,o)=>null===e.value?e:t.innerType._zod.run(e,o)}),iT=e7("$ZodDefault",(e,t)=>{oD.init(e,t),e._zod.optin="optional",eD(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(e,o)=>{if(void 0===e.value)return e.value=t.defaultValue,e;let i=t.innerType._zod.run(e,o);return i instanceof Promise?i.then(e=>iP(e,t)):iP(i,t)}});function iP(e,t){return void 0===e.value&&(e.value=t.defaultValue),e}let iN=e7("$ZodPrefault",(e,t)=>{oD.init(e,t),e._zod.optin="optional",eD(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(e,o)=>(void 0===e.value&&(e.value=t.defaultValue),t.innerType._zod.run(e,o))}),iO=e7("$ZodNonOptional",(e,t)=>{oD.init(e,t),eD(e._zod,"values",()=>{let e=t.innerType._zod.values;return e?new Set([...e].filter(e=>void 0!==e)):void 0}),e._zod.parse=(o,i)=>{let a=t.innerType._zod.run(o,i);return a instanceof Promise?a.then(t=>i_(t,e)):i_(a,e)}});function i_(e,t){return e.issues.length||void 0!==e.value||e.issues.push({code:"invalid_type",expected:"nonoptional",input:e.value,inst:t}),e}let iz=e7("$ZodCatch",(e,t)=>{oD.init(e,t),e._zod.optin="optional",eD(e._zod,"optout",()=>t.innerType._zod.optout),eD(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(e,o)=>{let i=t.innerType._zod.run(e,o);return i instanceof Promise?i.then(i=>(e.value=i.value,i.issues.length&&(e.value=t.catchValue({...e,error:{issues:i.issues.map(e=>e2(e,o,e9()))},input:e.value}),e.issues=[]),e)):(e.value=i.value,i.issues.length&&(e.value=t.catchValue({...e,error:{issues:i.issues.map(e=>e2(e,o,e9()))},input:e.value}),e.issues=[]),e)}}),iE=e7("$ZodPipe",(e,t)=>{oD.init(e,t),eD(e._zod,"values",()=>t.in._zod.values),eD(e._zod,"optin",()=>t.in._zod.optin),eD(e._zod,"optout",()=>t.out._zod.optout),e._zod.parse=(e,o)=>{let i=t.in._zod.run(e,o);return i instanceof Promise?i.then(e=>iq(e,t,o)):iq(i,t,o)}});function iq(e,t,o){return eH(e)?e:t.out._zod.run({value:e.value,issues:e.issues},o)}let iB=e7("$ZodReadonly",(e,t)=>{oD.init(e,t),eD(e._zod,"propValues",()=>t.innerType._zod.propValues),eD(e._zod,"values",()=>t.innerType._zod.values),eD(e._zod,"optin",()=>t.innerType._zod.optin),eD(e._zod,"optout",()=>t.innerType._zod.optout),e._zod.parse=(e,o)=>{let i=t.innerType._zod.run(e,o);return i instanceof Promise?i.then(ij):ij(i)}});function ij(e){return e.value=Object.freeze(e.value),e}let iC=e7("$ZodLazy",(e,t)=>{oD.init(e,t),eD(e._zod,"innerType",()=>t.getter()),eD(e._zod,"pattern",()=>e._zod.innerType._zod.pattern),eD(e._zod,"propValues",()=>e._zod.innerType._zod.propValues),eD(e._zod,"optin",()=>e._zod.innerType._zod.optin),eD(e._zod,"optout",()=>e._zod.innerType._zod.optout),e._zod.parse=(t,o)=>e._zod.innerType._zod.run(t,o)}),iR=e7("$ZodCustom",(e,t)=>{oy.init(e,t),oD.init(e,t),e._zod.parse=(e,t)=>e,e._zod.check=o=>{let i=o.value,a=t.fn(i);if(a instanceof Promise)return a.then(t=>iL(t,o,i,e));iL(a,o,i,e)}});function iL(e,t,o,i){if(!e){let e={code:"custom",input:o,inst:i,path:[...i._zod.def.path??[]],continue:!i._zod.def.abort};i._zod.def.params&&(e.params=i._zod.def.params),t.issues.push(e5(e))}}function iD(e,t){return new e({type:"string",format:"guid",check:"string_format",abort:!1,...eJ(t)})}function i$(e,t){return new e({type:"string",format:"base64",check:"string_format",abort:!1,...eJ(t)})}function iZ(e,t){return new oI({check:"less_than",...eJ(t),value:e,inclusive:!1})}function iF(e,t){return new oI({check:"less_than",...eJ(t),value:e,inclusive:!0})}function iQ(e,t){return new ow({check:"greater_than",...eJ(t),value:e,inclusive:!1})}function iG(e,t){return new ow({check:"greater_than",...eJ(t),value:e,inclusive:!0})}function iU(e,t){return new oS({check:"multiple_of",...eJ(t),value:e})}function iV(e,t){return new oT({check:"max_length",...eJ(t),maximum:e})}function iK(e,t){return new oP({check:"min_length",...eJ(t),minimum:e})}function iW(e,t){return new oN({check:"length_equals",...eJ(t),length:e})}function iJ(e){return new oC({check:"overwrite",tx:e})}let iY=e7("ZodISODateTime",(e,t)=>{o0.init(e,t),i4.init(e,t)}),iH=e7("ZodISODate",(e,t)=>{o2.init(e,t),i4.init(e,t)}),iX=e7("ZodISOTime",(e,t)=>{o1.init(e,t),i4.init(e,t)}),i0=e7("ZodISODuration",(e,t)=>{o5.init(e,t),i4.init(e,t)}),i2=e7("ZodType",(e,t)=>(oD.init(e,t),e.def=t,Object.defineProperty(e,"_def",{value:t}),e.check=(...o)=>e.clone({...t,checks:[...t.checks??[],...o.map(e=>"function"==typeof e?{_zod:{check:e,def:{check:"custom"},onattach:[]}}:e)]}),e.clone=(t,o)=>eW(e,t,o),e.brand=()=>e,e.register=(t,o)=>(t.add(e,o),e),e.parse=(t,o)=>td(e,t,o,{callee:e.parse}),e.safeParse=(t,o)=>tu(e,t,o),e.parseAsync=async(t,o)=>tc(e,t,o,{callee:e.parseAsync}),e.safeParseAsync=async(t,o)=>tp(e,t,o),e.spa=e.safeParseAsync,e.refine=(t,o)=>e.check(function(e,t={}){return new a3({type:"custom",check:"custom",fn:e,...eJ(t)})}(t,o)),e.superRefine=t=>e.check(function(e){let t=function(e){let t=new oy({check:"custom"});return t._zod.check=e,t}(o=>(o.addIssue=e=>{"string"==typeof e?o.issues.push(e5(e,o.value,t._zod.def)):(e.fatal&&(e.continue=!1),e.code??(e.code="custom"),e.input??(e.input=o.value),e.inst??(e.inst=t),e.continue??(e.continue=!t._zod.def.abort),o.issues.push(e5(e)))},e(o.value,o)));return t}(t)),e.overwrite=t=>e.check(iJ(t)),e.optional=()=>aU(e),e.nullable=()=>aK(e),e.nullish=()=>aU(aK(e)),e.nonoptional=t=>new aY({type:"nonoptional",innerType:e,...eJ(t)}),e.array=()=>aP(e),e.or=t=>aq([e,t]),e.and=t=>new aC({type:"intersection",left:e,right:t}),e.transform=t=>a0(e,new aQ({type:"transform",transform:t})),e.default=t=>(function(e,t){return new aW({type:"default",innerType:e,get defaultValue(){return"function"==typeof t?t():t}})})(e,t),e.prefault=t=>(function(e,t){return new aJ({type:"prefault",innerType:e,get defaultValue(){return"function"==typeof t?t():t}})})(e,t),e.catch=t=>(function(e,t){return new aH({type:"catch",innerType:e,catchValue:"function"==typeof t?t:()=>t})})(e,t),e.pipe=t=>a0(e,t),e.readonly=()=>new a2({type:"readonly",innerType:e}),e.describe=t=>{let o=e.clone();return eB.add(o,{description:t}),o},Object.defineProperty(e,"description",{get:()=>eB.get(e)?.description,configurable:!0}),e.meta=(...t)=>{if(0===t.length)return eB.get(e);let o=e.clone();return eB.add(o,t[0]),o},e.isOptional=()=>e.safeParse(void 0).success,e.isNullable=()=>e.safeParse(null).success,e)),i1=e7("_ZodString",(e,t)=>{o$.init(e,t),i2.init(e,t);let o=e._zod.bag;e.format=o.format??null,e.minLength=o.minimum??null,e.maxLength=o.maximum??null,e.regex=(...t)=>e.check(function(e,t){return new o_({check:"string_format",format:"regex",...eJ(t),pattern:e})}(...t)),e.includes=(...t)=>e.check(function(e,t){return new oq({check:"string_format",format:"includes",...eJ(t),includes:e})}(...t)),e.startsWith=(...t)=>e.check(function(e,t){return new oB({check:"string_format",format:"starts_with",...eJ(t),prefix:e})}(...t)),e.endsWith=(...t)=>e.check(function(e,t){return new oj({check:"string_format",format:"ends_with",...eJ(t),suffix:e})}(...t)),e.min=(...t)=>e.check(iK(...t)),e.max=(...t)=>e.check(iV(...t)),e.length=(...t)=>e.check(iW(...t)),e.nonempty=(...t)=>e.check(iK(1,...t)),e.lowercase=t=>e.check(new oz({check:"string_format",format:"lowercase",...eJ(t)})),e.uppercase=t=>e.check(new oE({check:"string_format",format:"uppercase",...eJ(t)})),e.trim=()=>e.check(iJ(e=>e.trim())),e.normalize=(...t)=>e.check(function(e){return iJ(t=>t.normalize(e))}(...t)),e.toLowerCase=()=>e.check(iJ(e=>e.toLowerCase())),e.toUpperCase=()=>e.check(iJ(e=>e.toUpperCase()))}),i5=e7("ZodString",(e,t)=>{o$.init(e,t),i1.init(e,t),e.email=t=>e.check(new i7({type:"string",format:"email",check:"string_format",abort:!1,...eJ(t)})),e.url=t=>e.check(new i9({type:"string",format:"url",check:"string_format",abort:!1,...eJ(t)})),e.jwt=t=>e.check(new ag({type:"string",format:"jwt",check:"string_format",abort:!1,...eJ(t)})),e.emoji=t=>e.check(new ae({type:"string",format:"emoji",check:"string_format",abort:!1,...eJ(t)})),e.guid=t=>e.check(iD(i8,t)),e.uuid=t=>e.check(new i6({type:"string",format:"uuid",check:"string_format",abort:!1,...eJ(t)})),e.uuidv4=t=>e.check(new i6({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...eJ(t)})),e.uuidv6=t=>e.check(new i6({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...eJ(t)})),e.uuidv7=t=>e.check(new i6({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...eJ(t)})),e.nanoid=t=>e.check(new at({type:"string",format:"nanoid",check:"string_format",abort:!1,...eJ(t)})),e.guid=t=>e.check(iD(i8,t)),e.cuid=t=>e.check(new ao({type:"string",format:"cuid",check:"string_format",abort:!1,...eJ(t)})),e.cuid2=t=>e.check(new ai({type:"string",format:"cuid2",check:"string_format",abort:!1,...eJ(t)})),e.ulid=t=>e.check(new aa({type:"string",format:"ulid",check:"string_format",abort:!1,...eJ(t)})),e.base64=t=>e.check(i$(au,t)),e.base64url=t=>e.check(new ap({type:"string",format:"base64url",check:"string_format",abort:!1,...eJ(t)})),e.xid=t=>e.check(new ar({type:"string",format:"xid",check:"string_format",abort:!1,...eJ(t)})),e.ksuid=t=>e.check(new as({type:"string",format:"ksuid",check:"string_format",abort:!1,...eJ(t)})),e.ipv4=t=>e.check(new an({type:"string",format:"ipv4",check:"string_format",abort:!1,...eJ(t)})),e.ipv6=t=>e.check(new al({type:"string",format:"ipv6",check:"string_format",abort:!1,...eJ(t)})),e.cidrv4=t=>e.check(new ad({type:"string",format:"cidrv4",check:"string_format",abort:!1,...eJ(t)})),e.cidrv6=t=>e.check(new ac({type:"string",format:"cidrv6",check:"string_format",abort:!1,...eJ(t)})),e.e164=t=>e.check(new am({type:"string",format:"e164",check:"string_format",abort:!1,...eJ(t)})),e.datetime=t=>e.check(new iY({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...eJ(t)})),e.date=t=>e.check(new iH({type:"string",format:"date",check:"string_format",...eJ(t)})),e.time=t=>e.check(new iX({type:"string",format:"time",check:"string_format",precision:null,...eJ(t)})),e.duration=t=>e.check(new i0({type:"string",format:"duration",check:"string_format",...eJ(t)}))});function i3(e){return new i5({type:"string",...eJ(e)})}let i4=e7("ZodStringFormat",(e,t)=>{oZ.init(e,t),i1.init(e,t)}),i7=e7("ZodEmail",(e,t)=>{oG.init(e,t),i4.init(e,t)}),i8=e7("ZodGUID",(e,t)=>{oF.init(e,t),i4.init(e,t)}),i6=e7("ZodUUID",(e,t)=>{oQ.init(e,t),i4.init(e,t)}),i9=e7("ZodURL",(e,t)=>{oU.init(e,t),i4.init(e,t)}),ae=e7("ZodEmoji",(e,t)=>{oV.init(e,t),i4.init(e,t)}),at=e7("ZodNanoID",(e,t)=>{oK.init(e,t),i4.init(e,t)}),ao=e7("ZodCUID",(e,t)=>{oW.init(e,t),i4.init(e,t)}),ai=e7("ZodCUID2",(e,t)=>{oJ.init(e,t),i4.init(e,t)}),aa=e7("ZodULID",(e,t)=>{oY.init(e,t),i4.init(e,t)}),ar=e7("ZodXID",(e,t)=>{oH.init(e,t),i4.init(e,t)}),as=e7("ZodKSUID",(e,t)=>{oX.init(e,t),i4.init(e,t)}),an=e7("ZodIPv4",(e,t)=>{o3.init(e,t),i4.init(e,t)}),al=e7("ZodIPv6",(e,t)=>{o4.init(e,t),i4.init(e,t)}),ad=e7("ZodCIDRv4",(e,t)=>{o7.init(e,t),i4.init(e,t)}),ac=e7("ZodCIDRv6",(e,t)=>{o8.init(e,t),i4.init(e,t)}),au=e7("ZodBase64",(e,t)=>{o9.init(e,t),i4.init(e,t)}),ap=e7("ZodBase64URL",(e,t)=>{ie.init(e,t),i4.init(e,t)}),am=e7("ZodE164",(e,t)=>{it.init(e,t),i4.init(e,t)}),ag=e7("ZodJWT",(e,t)=>{io.init(e,t),i4.init(e,t)}),ah=e7("ZodNumber",(e,t)=>{ii.init(e,t),i2.init(e,t),e.gt=(t,o)=>e.check(iQ(t,o)),e.gte=(t,o)=>e.check(iG(t,o)),e.min=(t,o)=>e.check(iG(t,o)),e.lt=(t,o)=>e.check(iZ(t,o)),e.lte=(t,o)=>e.check(iF(t,o)),e.max=(t,o)=>e.check(iF(t,o)),e.int=t=>e.check(ax(t)),e.safe=t=>e.check(ax(t)),e.positive=t=>e.check(iQ(0,t)),e.nonnegative=t=>e.check(iG(0,t)),e.negative=t=>e.check(iZ(0,t)),e.nonpositive=t=>e.check(iF(0,t)),e.multipleOf=(t,o)=>e.check(iU(t,o)),e.step=(t,o)=>e.check(iU(t,o)),e.finite=()=>e;let o=e._zod.bag;e.minValue=Math.max(o.minimum??Number.NEGATIVE_INFINITY,o.exclusiveMinimum??Number.NEGATIVE_INFINITY)??null,e.maxValue=Math.min(o.maximum??Number.POSITIVE_INFINITY,o.exclusiveMaximum??Number.POSITIVE_INFINITY)??null,e.isInt=(o.format??"").includes("int")||Number.isSafeInteger(o.multipleOf??.5),e.isFinite=!0,e.format=o.format??null});function av(e){return new ah({type:"number",checks:[],...eJ(e)})}let af=e7("ZodNumberFormat",(e,t)=>{ia.init(e,t),ah.init(e,t)});function ax(e){return new af({type:"number",check:"number_format",abort:!1,format:"safeint",...eJ(e)})}let ab=e7("ZodBoolean",(e,t)=>{ir.init(e,t),i2.init(e,t)});function ak(e){return new ab({type:"boolean",...eJ(e)})}let ay=e7("ZodNull",(e,t)=>{is.init(e,t),i2.init(e,t)});function aM(e){return new ay({type:"null",...eJ(e)})}let aI=e7("ZodUnknown",(e,t)=>{il.init(e,t),i2.init(e,t)});function aw(){return new aI({type:"unknown"})}let aS=e7("ZodNever",(e,t)=>{id.init(e,t),i2.init(e,t)});function aA(e){return new aS({type:"never",...eJ(e)})}let aT=e7("ZodArray",(e,t)=>{iu.init(e,t),i2.init(e,t),e.element=t.element,e.min=(t,o)=>e.check(iK(t,o)),e.nonempty=t=>e.check(iK(1,t)),e.max=(t,o)=>e.check(iV(t,o)),e.length=(t,o)=>e.check(iW(t,o)),e.unwrap=()=>e.element});function aP(e,t){return new aT({type:"array",element:e,...eJ(t)})}let aN=e7("ZodObject",(e,t)=>{ig.init(e,t),i2.init(e,t),eD(e,"shape",()=>t.shape),e.keyof=()=>a$(Object.keys(e._zod.def.shape)),e.catchall=t=>e.clone({...e._zod.def,catchall:t}),e.passthrough=()=>e.clone({...e._zod.def,catchall:aw()}),e.loose=()=>e.clone({...e._zod.def,catchall:aw()}),e.strict=()=>e.clone({...e._zod.def,catchall:aA()}),e.strip=()=>e.clone({...e._zod.def,catchall:void 0}),e.extend=t=>(function(e,t){if(!eU(t))throw Error("Invalid input to extend: expected a plain object");let o={...e._zod.def,get shape(){let o={...e._zod.def.shape,...t};return e$(this,"shape",o),o},checks:[]};return eW(e,o)})(e,t),e.merge=t=>(function(e,t){return eW(e,{...e._zod.def,get shape(){let o={...e._zod.def.shape,...t._zod.def.shape};return e$(this,"shape",o),o},catchall:t._zod.def.catchall,checks:[]})})(e,t),e.pick=t=>(function(e,t){let o={},i=e._zod.def;for(let e in t){if(!(e in i.shape))throw Error(`Unrecognized key: "${e}"`);t[e]&&(o[e]=i.shape[e])}return eW(e,{...e._zod.def,shape:o,checks:[]})})(e,t),e.omit=t=>(function(e,t){let o={...e._zod.def.shape},i=e._zod.def;for(let e in t){if(!(e in i.shape))throw Error(`Unrecognized key: "${e}"`);t[e]&&delete o[e]}return eW(e,{...e._zod.def,shape:o,checks:[]})})(e,t),e.partial=(...t)=>(function(e,t,o){let i=t._zod.def.shape,a={...i};if(o)for(let t in o){if(!(t in i))throw Error(`Unrecognized key: "${t}"`);o[t]&&(a[t]=e?new e({type:"optional",innerType:i[t]}):i[t])}else for(let t in i)a[t]=e?new e({type:"optional",innerType:i[t]}):i[t];return eW(t,{...t._zod.def,shape:a,checks:[]})})(aG,e,t[0]),e.required=(...t)=>(function(e,t,o){let i=t._zod.def.shape,a={...i};if(o)for(let t in o){if(!(t in a))throw Error(`Unrecognized key: "${t}"`);o[t]&&(a[t]=new e({type:"nonoptional",innerType:i[t]}))}else for(let t in i)a[t]=new e({type:"nonoptional",innerType:i[t]});return eW(t,{...t._zod.def,shape:a,checks:[]})})(aY,e,t[0])});function aO(e,t){return new aN({type:"object",get shape(){return e$(this,"shape",{...e}),this.shape},...eJ(t)})}function a_(e,t){return new aN({type:"object",get shape(){return e$(this,"shape",{...e}),this.shape},catchall:aA(),...eJ(t)})}function az(e,t){return new aN({type:"object",get shape(){return e$(this,"shape",{...e}),this.shape},catchall:aw(),...eJ(t)})}let aE=e7("ZodUnion",(e,t)=>{iv.init(e,t),i2.init(e,t),e.options=t.options});function aq(e,t){return new aE({type:"union",options:e,...eJ(t)})}let aB=e7("ZodDiscriminatedUnion",(e,t)=>{aE.init(e,t),ix.init(e,t)});function aj(e,t,o){return new aB({type:"union",options:t,discriminator:e,...eJ(o)})}let aC=e7("ZodIntersection",(e,t)=>{ib.init(e,t),i2.init(e,t)}),aR=e7("ZodRecord",(e,t)=>{iy.init(e,t),i2.init(e,t),e.keyType=t.keyType,e.valueType=t.valueType});function aL(e,t,o){return new aR({type:"record",keyType:e,valueType:t,...eJ(o)})}let aD=e7("ZodEnum",(e,t)=>{iM.init(e,t),i2.init(e,t),e.enum=t.entries,e.options=Object.values(t.entries);let o=new Set(Object.keys(t.entries));e.extract=(e,i)=>{let a={};for(let i of e)if(o.has(i))a[i]=t.entries[i];else throw Error(`Key ${i} not found in enum`);return new aD({...t,checks:[],...eJ(i),entries:a})},e.exclude=(e,i)=>{let a={...t.entries};for(let t of e)if(o.has(t))delete a[t];else throw Error(`Key ${t} not found in enum`);return new aD({...t,checks:[],...eJ(i),entries:a})}});function a$(e,t){return new aD({type:"enum",entries:Array.isArray(e)?Object.fromEntries(e.map(e=>[e,e])):e,...eJ(t)})}let aZ=e7("ZodLiteral",(e,t)=>{iI.init(e,t),i2.init(e,t),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 aF(e,t){return new aZ({type:"literal",values:Array.isArray(e)?e:[e],...eJ(t)})}let aQ=e7("ZodTransform",(e,t)=>{iw.init(e,t),i2.init(e,t),e._zod.parse=(o,i)=>{o.addIssue=i=>{"string"==typeof i?o.issues.push(e5(i,o.value,t)):(i.fatal&&(i.continue=!1),i.code??(i.code="custom"),i.input??(i.input=o.value),i.inst??(i.inst=e),i.continue??(i.continue=!0),o.issues.push(e5(i)))};let a=t.transform(o.value,o);return a instanceof Promise?a.then(e=>(o.value=e,o)):(o.value=a,o)}}),aG=e7("ZodOptional",(e,t)=>{iS.init(e,t),i2.init(e,t),e.unwrap=()=>e._zod.def.innerType});function aU(e){return new aG({type:"optional",innerType:e})}let aV=e7("ZodNullable",(e,t)=>{iA.init(e,t),i2.init(e,t),e.unwrap=()=>e._zod.def.innerType});function aK(e){return new aV({type:"nullable",innerType:e})}let aW=e7("ZodDefault",(e,t)=>{iT.init(e,t),i2.init(e,t),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap}),aJ=e7("ZodPrefault",(e,t)=>{iN.init(e,t),i2.init(e,t),e.unwrap=()=>e._zod.def.innerType}),aY=e7("ZodNonOptional",(e,t)=>{iO.init(e,t),i2.init(e,t),e.unwrap=()=>e._zod.def.innerType}),aH=e7("ZodCatch",(e,t)=>{iz.init(e,t),i2.init(e,t),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap}),aX=e7("ZodPipe",(e,t)=>{iE.init(e,t),i2.init(e,t),e.in=t.in,e.out=t.out});function a0(e,t){return new aX({type:"pipe",in:e,out:t})}let a2=e7("ZodReadonly",(e,t)=>{iB.init(e,t),i2.init(e,t)}),a1=e7("ZodLazy",(e,t)=>{iC.init(e,t),i2.init(e,t),e.unwrap=()=>e._zod.def.getter()});function a5(e){return new a1({type:"lazy",getter:e})}let a3=e7("ZodCustom",(e,t)=>{iR.init(e,t),i2.init(e,t)});function a4(e,t){return function(e,t,o){let i=eJ(o);return i.abort??(i.abort=!0),new e({type:"custom",check:"custom",fn:t,...i})}(a3,e??(()=>!0),t)}function a7(e,t={error:`Input not instance of ${e.name}`}){let o=new a3({type:"custom",check:"custom",fn:t=>t instanceof e,abort:!0,...eJ(t)});return o._zod.bag.Class=e,o}var a8=Object.defineProperty,a6="AI_NoOutputSpecifiedError",a9=`vercel.ai.error.${a6}`,re=Symbol.for(a9),rt=class extends el{constructor({message:e="No output specified."}={}){super({name:a6,message:e}),this[c]=!0}static isInstance(e){return el.hasMarker(e,a9)}};c=re;var ro=!1,ri="AI_InvalidArgumentError",ra=`vercel.ai.error.${ri}`,rr=Symbol.for(ra),rs=class extends el{constructor({parameter:e,value:t,message:o}){super({name:ri,message:`Invalid argument for parameter ${e}: ${o}`}),this[u]=!0,this.parameter=e,this.value=t}static isInstance(e){return el.hasMarker(e,ra)}};u=rr,Symbol.for("vercel.ai.error.AI_InvalidStreamPartError");var rn="AI_InvalidToolInputError",rl=`vercel.ai.error.${rn}`,rd=Symbol.for(rl),rc=class extends el{constructor({toolInput:e,toolName:t,cause:o,message:i=`Invalid input for tool ${t}: ${ed(o)}`}){super({name:rn,message:i,cause:o}),this[p]=!0,this.toolInput=e,this.toolName=t}static isInstance(e){return el.hasMarker(e,rl)}};p=rd;var ru="vercel.ai.error.AI_MCPClientError",rp=Symbol.for(ru),rm=class extends el{constructor({name:e="MCPClientError",message:t,cause:o,data:i,code:a}){super({name:e,message:t,cause:o}),this[m]=!0,this.data=i,this.code=a}static isInstance(e){return el.hasMarker(e,ru)}};m=rp,Symbol.for("vercel.ai.error.AI_NoImageGeneratedError");var rg="AI_NoObjectGeneratedError",rh=`vercel.ai.error.${rg}`,rv=Symbol.for(rh),rf=class extends el{constructor({message:e="No object generated.",cause:t,text:o,response:i,usage:a,finishReason:r}){super({name:rg,message:e,cause:t}),this[h]=!0,this.text=o,this.response=i,this.usage=a,this.finishReason=r}static isInstance(e){return el.hasMarker(e,rh)}};h=rv;var rx="AI_NoOutputGeneratedError",rb=`vercel.ai.error.${rx}`;v=Symbol.for(rb);var rk="AI_NoSuchToolError",ry=`vercel.ai.error.${rk}`,rM=Symbol.for(ry),rI=class extends el{constructor({toolName:e,availableTools:t,message:o=`Model tried to call unavailable tool '${e}'. ${void 0===t?"No tools are available.":`Available tools: ${t.join(", ")}.`}`}){super({name:rk,message:o}),this[f]=!0,this.toolName=e,this.availableTools=t}static isInstance(e){return el.hasMarker(e,ry)}};f=rM;var rw="AI_ToolCallRepairError",rS=`vercel.ai.error.${rw}`,rA=Symbol.for(rS),rT=class extends el{constructor({cause:e,originalError:t,message:o=`Error repairing tool call: ${ed(e)}`}){super({name:rw,message:o,cause:e}),this[x]=!0,this.originalError=t}static isInstance(e){return el.hasMarker(e,rS)}};x=rA;var rP=class extends el{constructor(e){super({name:"AI_UnsupportedModelVersionError",message:`Unsupported model version ${e.version} for provider "${e.provider}" and model "${e.modelId}". AI SDK 5 only supports models that implement specification version "v2".`}),this.version=e.version,this.provider=e.provider,this.modelId=e.modelId}};Symbol.for("vercel.ai.error.AI_InvalidDataContentError");var rN="AI_InvalidMessageRoleError",rO=`vercel.ai.error.${rN}`,r_=Symbol.for(rO),rz=class extends el{constructor({role:e,message:t=`Invalid message role: '${e}'. Must be one of: "system", "user", "assistant", "tool".`}){super({name:rN,message:t}),this[k]=!0,this.role=e}static isInstance(e){return el.hasMarker(e,rO)}};k=r_,Symbol.for("vercel.ai.error.AI_MessageConversionError");var rE="AI_DownloadError",rq=`vercel.ai.error.${rE}`,rB=Symbol.for(rq),rj=class extends el{constructor({url:e,statusCode:t,statusText:o,cause:i,message:a=null==i?`Failed to download ${e}: ${t} ${o}`:`Failed to download ${e}: ${i}`}){super({name:rE,message:a,cause:i}),this[M]=!0,this.url=e,this.statusCode=t,this.statusText=o}static isInstance(e){return el.hasMarker(e,rq)}};M=rB;var rC="AI_RetryError",rR=`vercel.ai.error.${rC}`,rL=Symbol.for(rR),rD=class extends el{constructor({message:e,reason:t,errors:o}){super({name:rC,message:e}),this[I]=!0,this.reason=t,this.errors=o,this.lastError=o[o.length-1]}static isInstance(e){return el.hasMarker(e,rR)}};I=rL;var r$=[{mediaType:"image/gif",bytesPrefix:[71,73,70]},{mediaType:"image/png",bytesPrefix:[137,80,78,71]},{mediaType:"image/jpeg",bytesPrefix:[255,216]},{mediaType:"image/webp",bytesPrefix:[82,73,70,70,null,null,null,null,87,69,66,80]},{mediaType:"image/bmp",bytesPrefix:[66,77]},{mediaType:"image/tiff",bytesPrefix:[73,73,42,0]},{mediaType:"image/tiff",bytesPrefix:[77,77,0,42]},{mediaType:"image/avif",bytesPrefix:[0,0,0,32,102,116,121,112,97,118,105,102]},{mediaType:"image/heic",bytesPrefix:[0,0,0,32,102,116,121,112,104,101,105,99]}],rZ=e=>{let t="string"==typeof e?convertBase64ToUint8Array(e):e,o=(127&t[6])<<21|(127&t[7])<<14|(127&t[8])<<7|127&t[9];return t.slice(o+10)},rF="5.0.65",rQ=async({url:e})=>{var t;let o=e.toString();try{let e=await fetch(o,{headers:withUserAgentSuffix({},`ai-sdk/${rF}`,getRuntimeEnvironmentUserAgent())});if(!e.ok)throw new rj({url:o,statusCode:e.status,statusText:e.statusText});return{data:new Uint8Array(await e.arrayBuffer()),mediaType:null!=(t=e.headers.get("content-type"))?t:void 0}}catch(e){if(rj.isInstance(e))throw e;throw new rj({url:o,cause:e})}},rG=(e=rQ)=>t=>Promise.all(t.map(async t=>t.isUrlSupportedByModel?null:e(t))),rU=aq([i3(),a7(Uint8Array),a7(ArrayBuffer),a4(e=>{var t,o;return null!=(o=null==(t=globalThis.Buffer)?void 0:t.isBuffer(e))&&o},{message:"Must be a Buffer"})]);function rV(e){if(e instanceof Uint8Array)return{data:e,mediaType:void 0};if(e instanceof ArrayBuffer)return{data:new Uint8Array(e),mediaType:void 0};if("string"==typeof e)try{e=new URL(e)}catch(e){}if(e instanceof URL&&"data:"===e.protocol){let{mediaType:t,base64Content:o}=function(e){try{let[t,o]=e.split(",");return{mediaType:t.split(";")[0].split(":")[1],base64Content:o}}catch(e){return{mediaType:void 0,base64Content:void 0}}}(e.toString());if(null==t||null==o)throw new AISDKError19({name:"InvalidDataContentError",message:`Invalid data URL format in content ${e.toString()}`});return{data:o,mediaType:t}}return{data:e,mediaType:void 0}}async function rK(e,t,o){let i=e.filter(e=>"user"===e.role).map(e=>e.content).filter(e=>Array.isArray(e)).flat().filter(e=>"image"===e.type||"file"===e.type).map(e=>{var t;let o=null!=(t=e.mediaType)?t:"image"===e.type?"image/*":void 0,i="image"===e.type?e.image:e.data;if("string"==typeof i)try{i=new URL(i)}catch(e){}return{mediaType:o,data:i}}).filter(e=>e.data instanceof URL).map(e=>({url:e.data,isUrlSupportedByModel:null!=e.mediaType&&isUrlSupported({url:e.data.toString(),mediaType:e.mediaType,supportedUrls:o})}));return Object.fromEntries((await t(i)).map((e,t)=>null==e?null:[i[t].url.toString(),{data:e.data,mediaType:e.mediaType}]).filter(e=>null!=e))}var rW=a5(()=>aq([aM(),i3(),av(),ak(),aL(i3(),rW),aP(rW)])),rJ=aL(i3(),aL(i3(),rW)),rY=aO({type:aF("text"),text:i3(),providerOptions:rJ.optional()}),rH=aO({type:aF("image"),image:aq([rU,a7(URL)]),mediaType:i3().optional(),providerOptions:rJ.optional()}),rX=aO({type:aF("file"),data:aq([rU,a7(URL)]),filename:i3().optional(),mediaType:i3(),providerOptions:rJ.optional()}),r0=aO({type:aF("reasoning"),text:i3(),providerOptions:rJ.optional()}),r2=aO({type:aF("tool-call"),toolCallId:i3(),toolName:i3(),input:aw(),providerOptions:rJ.optional(),providerExecuted:ak().optional()}),r1=aj("type",[aO({type:aF("text"),value:i3()}),aO({type:aF("json"),value:rW}),aO({type:aF("error-text"),value:i3()}),aO({type:aF("error-json"),value:rW}),aO({type:aF("content"),value:aP(aq([aO({type:aF("text"),text:i3()}),aO({type:aF("media"),data:i3(),mediaType:i3()})]))})]),r5=aO({type:aF("tool-result"),toolCallId:i3(),toolName:i3(),output:r1,providerOptions:rJ.optional()}),r3=aO({role:aF("system"),content:i3(),providerOptions:rJ.optional()}),r4=aO({role:aF("user"),content:aq([i3(),aP(aq([rY,rH,rX]))]),providerOptions:rJ.optional()}),r7=aO({role:aF("assistant"),content:aq([i3(),aP(aq([rY,rX,r0,r2,r5]))]),providerOptions:rJ.optional()}),r8=aq([r3,r4,r7,aO({role:aF("tool"),content:aP(r5),providerOptions:rJ.optional()})]),r6={startSpan:()=>r9,startActiveSpan:(e,t,o,i)=>"function"==typeof t?t(r9):"function"==typeof o?o(r9):"function"==typeof i?i(r9):void 0},r9={spanContext:()=>se,setAttribute(){return this},setAttributes(){return this},addEvent(){return this},addLink(){return this},addLinks(){return this},setStatus(){return this},updateName(){return this},end(){return this},isRecording:()=>!1,recordException(){return this}},se={traceId:"",spanId:"",traceFlags:0};function st(e,t){t instanceof Error?(e.recordException({name:t.name,message:t.message,stack:t.stack}),e.setStatus({code:SpanStatusCode.ERROR,message:t.message})):e.setStatus({code:SpanStatusCode.ERROR})}function so({telemetry:e,attributes:t}){return(null==e?void 0:e.isEnabled)!==!0?{}:Object.entries(t).reduce((t,[o,i])=>{if(null==i)return t;if("object"==typeof i&&"input"in i&&"function"==typeof i.input){if((null==e?void 0:e.recordInputs)===!1)return t;let a=i.input();return null==a?t:{...t,[o]:a}}if("object"==typeof i&&"output"in i&&"function"==typeof i.output){if((null==e?void 0:e.recordOutputs)===!1)return t;let a=i.output();return null==a?t:{...t,[o]:a}}return{...t,[o]:i}},{})}function si(e,t){return null==e&&null==t?void 0:(null!=e?e:0)+(null!=t?t:0)}var sa=({maxRetries:e=2,initialDelayInMs:t=2e3,backoffFactor:o=2,abortSignal:i}={})=>async a=>sr(a,{maxRetries:e,delayInMs:t,backoffFactor:o,abortSignal:i});async function sr(e,{maxRetries:t,delayInMs:o,backoffFactor:i,abortSignal:a},r=[]){try{return await e()}catch(d){if(isAbortError(d)||0===t)throw d;let s=getErrorMessage3(d),n=[...r,d],l=n.length;if(l>t)throw new rD({message:`Failed after ${l} attempts. Last error: ${s}`,reason:"maxRetriesExceeded",errors:n});if(d instanceof Error&&APICallError2.isInstance(d)&&!0===d.isRetryable&&l<=t)return await delay(function({error:e,exponentialBackoffDelay:t}){let o;let i=e.responseHeaders;if(!i)return t;let a=i["retry-after-ms"];if(a){let e=parseFloat(a);Number.isNaN(e)||(o=e)}let r=i["retry-after"];if(r&&void 0===o){let e=parseFloat(r);o=Number.isNaN(e)?Date.parse(r)-Date.now():1e3*e}return null!=o&&!Number.isNaN(o)&&0<=o&&(o<6e4||o<t)?o:t}({error:d,exponentialBackoffDelay:o}),{abortSignal:a}),sr(e,{maxRetries:t,delayInMs:i*o,backoffFactor:i,abortSignal:a},n);if(1===l)throw d;throw new rD({message:`Failed after ${l} attempts with non-retryable error: '${s}'`,reason:"errorNotRetryable",errors:n})}}var ss=class{constructor({data:e,mediaType:t}){let o=e instanceof Uint8Array;this.base64Data=o?void 0:e,this.uint8ArrayData=o?e:void 0,this.mediaType=t}get base64(){return null==this.base64Data&&(this.base64Data=function(e){let t="";for(let o=0;o<e.length;o++)t+=String.fromCodePoint(e[o]);return t2(t)}(this.uint8ArrayData)),this.base64Data}get uint8Array(){return null==this.uint8ArrayData&&(this.uint8ArrayData=function(e){let t=t1(e.replace(/-/g,"+").replace(/_/g,"/"));return Uint8Array.from(t,e=>e.codePointAt(0))}(this.base64Data)),this.uint8ArrayData}};async function sn({toolCall:e,tools:t}){let o=e.toolName,i=t[o];if(null==i)throw new rI({toolName:e.toolName,availableTools:Object.keys(t)});let a=asSchema2(i.inputSchema),r=""===e.input.trim()?await safeValidateTypes2({value:{},schema:a}):await safeParseJSON({text:e.input,schema:a});if(!1===r.success)throw new rc({toolName:o,toolInput:e.input,cause:r.error});return"dynamic"===i.type?{type:"tool-call",toolCallId:e.toolCallId,toolName:e.toolName,input:r.value,providerExecuted:e.providerExecuted,providerMetadata:e.providerMetadata,dynamic:!0}:{type:"tool-call",toolCallId:e.toolCallId,toolName:o,input:r.value,providerExecuted:e.providerExecuted,providerMetadata:e.providerMetadata}}function sl({output:e,tool:t,errorMode:o}){return"text"===o?{type:"error-text",value:getErrorMessage4(e)}:"json"===o?{type:"error-json",value:sd(e)}:(null==t?void 0:t.toModelOutput)?t.toModelOutput(e):"string"==typeof e?{type:"text",value:e}:{type:"json",value:sd(e)}}function sd(e){return void 0===e?null:e}tg({prefix:"aitxt",size:24});function sc(e,t){let o=new Headers(null!=e?e:{});for(let[e,i]of Object.entries(t))o.has(e)||o.set(e,i);return o}TransformStream;var su=tk(()=>tH(aq([a_({type:aF("text-start"),id:i3(),providerMetadata:rJ.optional()}),a_({type:aF("text-delta"),id:i3(),delta:i3(),providerMetadata:rJ.optional()}),a_({type:aF("text-end"),id:i3(),providerMetadata:rJ.optional()}),a_({type:aF("error"),errorText:i3()}),a_({type:aF("tool-input-start"),toolCallId:i3(),toolName:i3(),providerExecuted:ak().optional(),dynamic:ak().optional()}),a_({type:aF("tool-input-delta"),toolCallId:i3(),inputTextDelta:i3()}),a_({type:aF("tool-input-available"),toolCallId:i3(),toolName:i3(),input:aw(),providerExecuted:ak().optional(),providerMetadata:rJ.optional(),dynamic:ak().optional()}),a_({type:aF("tool-input-error"),toolCallId:i3(),toolName:i3(),input:aw(),providerExecuted:ak().optional(),providerMetadata:rJ.optional(),dynamic:ak().optional(),errorText:i3()}),a_({type:aF("tool-output-available"),toolCallId:i3(),output:aw(),providerExecuted:ak().optional(),dynamic:ak().optional(),preliminary:ak().optional()}),a_({type:aF("tool-output-error"),toolCallId:i3(),errorText:i3(),providerExecuted:ak().optional(),dynamic:ak().optional()}),a_({type:aF("reasoning-start"),id:i3(),providerMetadata:rJ.optional()}),a_({type:aF("reasoning-delta"),id:i3(),delta:i3(),providerMetadata:rJ.optional()}),a_({type:aF("reasoning-end"),id:i3(),providerMetadata:rJ.optional()}),a_({type:aF("source-url"),sourceId:i3(),url:i3(),title:i3().optional(),providerMetadata:rJ.optional()}),a_({type:aF("source-document"),sourceId:i3(),mediaType:i3(),title:i3(),filename:i3().optional(),providerMetadata:rJ.optional()}),a_({type:aF("file"),url:i3(),mediaType:i3(),providerMetadata:rJ.optional()}),a_({type:a4(e=>"string"==typeof e&&e.startsWith("data-"),{message:'Type must start with "data-"'}),id:i3().optional(),data:aw(),transient:ak().optional()}),a_({type:aF("start-step")}),a_({type:aF("finish-step")}),a_({type:aF("start"),messageId:i3().optional(),messageMetadata:aw().optional()}),a_({type:aF("finish"),messageMetadata:aw().optional()}),a_({type:aF("abort")}),a_({type:aF("message-metadata"),messageMetadata:aw()})])));async function sp(e){if(void 0===e)return{value:void 0,state:"undefined-input"};let t=await tM({text:e});return t.success?{value:t.value,state:"successful-parse"}:(t=await tM({text:function(e){let t=["ROOT"],o=-1,i=null;function a(e,a,r){switch(e){case'"':o=a,t.pop(),t.push(r),t.push("INSIDE_STRING");break;case"f":case"t":case"n":o=a,i=a,t.pop(),t.push(r),t.push("INSIDE_LITERAL");break;case"-":t.pop(),t.push(r),t.push("INSIDE_NUMBER");break;case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":o=a,t.pop(),t.push(r),t.push("INSIDE_NUMBER");break;case"{":o=a,t.pop(),t.push(r),t.push("INSIDE_OBJECT_START");break;case"[":o=a,t.pop(),t.push(r),t.push("INSIDE_ARRAY_START")}}function r(e,i){switch(e){case",":t.pop(),t.push("INSIDE_OBJECT_AFTER_COMMA");break;case"}":o=i,t.pop()}}function s(e,i){switch(e){case",":t.pop(),t.push("INSIDE_ARRAY_AFTER_COMMA");break;case"]":o=i,t.pop()}}for(let n=0;n<e.length;n++){let l=e[n];switch(t[t.length-1]){case"ROOT":a(l,n,"FINISH");break;case"INSIDE_OBJECT_START":switch(l){case'"':t.pop(),t.push("INSIDE_OBJECT_KEY");break;case"}":o=n,t.pop()}break;case"INSIDE_OBJECT_AFTER_COMMA":'"'===l&&(t.pop(),t.push("INSIDE_OBJECT_KEY"));break;case"INSIDE_OBJECT_KEY":'"'===l&&(t.pop(),t.push("INSIDE_OBJECT_AFTER_KEY"));break;case"INSIDE_OBJECT_AFTER_KEY":":"===l&&(t.pop(),t.push("INSIDE_OBJECT_BEFORE_VALUE"));break;case"INSIDE_OBJECT_BEFORE_VALUE":a(l,n,"INSIDE_OBJECT_AFTER_VALUE");break;case"INSIDE_OBJECT_AFTER_VALUE":r(l,n);break;case"INSIDE_STRING":switch(l){case'"':t.pop(),o=n;break;case"\\":t.push("INSIDE_STRING_ESCAPE");break;default:o=n}break;case"INSIDE_ARRAY_START":"]"===l?(o=n,t.pop()):(o=n,a(l,n,"INSIDE_ARRAY_AFTER_VALUE"));break;case"INSIDE_ARRAY_AFTER_VALUE":switch(l){case",":t.pop(),t.push("INSIDE_ARRAY_AFTER_COMMA");break;case"]":o=n,t.pop();break;default:o=n}break;case"INSIDE_ARRAY_AFTER_COMMA":a(l,n,"INSIDE_ARRAY_AFTER_VALUE");break;case"INSIDE_STRING_ESCAPE":t.pop(),o=n;break;case"INSIDE_NUMBER":switch(l){case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":o=n;break;case"e":case"E":case"-":case".":break;case",":t.pop(),"INSIDE_ARRAY_AFTER_VALUE"===t[t.length-1]&&s(l,n),"INSIDE_OBJECT_AFTER_VALUE"===t[t.length-1]&&r(l,n);break;case"}":t.pop(),"INSIDE_OBJECT_AFTER_VALUE"===t[t.length-1]&&r(l,n);break;case"]":t.pop(),"INSIDE_ARRAY_AFTER_VALUE"===t[t.length-1]&&s(l,n);break;default:t.pop()}break;case"INSIDE_LITERAL":{let a=e.substring(i,n+1);"false".startsWith(a)||"true".startsWith(a)||"null".startsWith(a)?o=n:(t.pop(),"INSIDE_OBJECT_AFTER_VALUE"===t[t.length-1]?r(l,n):"INSIDE_ARRAY_AFTER_VALUE"===t[t.length-1]&&s(l,n))}}}let n=e.slice(0,o+1);for(let o=t.length-1;o>=0;o--)switch(t[o]){case"INSIDE_STRING":n+='"';break;case"INSIDE_OBJECT_KEY":case"INSIDE_OBJECT_AFTER_KEY":case"INSIDE_OBJECT_AFTER_COMMA":case"INSIDE_OBJECT_START":case"INSIDE_OBJECT_BEFORE_VALUE":case"INSIDE_OBJECT_AFTER_VALUE":n+="}";break;case"INSIDE_ARRAY_START":case"INSIDE_ARRAY_AFTER_COMMA":case"INSIDE_ARRAY_AFTER_VALUE":n+="]";break;case"INSIDE_LITERAL":{let t=e.substring(i,e.length);"true".startsWith(t)?n+="true".slice(t.length):"false".startsWith(t)?n+="false".slice(t.length):"null".startsWith(t)&&(n+="null".slice(t.length))}}return n}(e)})).success?{value:t.value,state:"repaired-parse"}:{value:void 0,state:"failed-parse"}}function sm(e){return e.type.startsWith("tool-")||"dynamic-tool"===e.type}function sg(){let e,t;return{promise:new Promise((o,i)=>{e=o,t=i}),resolve:e,reject:t}}tg({prefix:"aitxt",size:24});async function sh(e,t,o){let i=await safeParseJSON3({text:e});if(!i.success)throw new rf({message:"No object generated: could not parse the response.",cause:i.error,text:e,response:o.response,usage:o.usage,finishReason:o.finishReason});let a=await t.validateFinalResult(i.value,{text:e,response:o.response,usage:o.usage});if(!a.success)throw new rf({message:"No object generated: response did not match schema.",cause:a.error,text:e,response:o.response,usage:o.usage,finishReason:o.finishReason});return a.value}tg({prefix:"aiobj",size:24}),tg({prefix:"aiobj",size:24}),((e,t)=>{for(var o in t)a8(e,o,{get:t[o],enumerable:!0})})({},{object:()=>sf,text:()=>sv});var sv=()=>({type:"text",responseFormat:{type:"text"},parsePartial:async({text:e})=>({partial:e}),parseOutput:async({text:e})=>e}),sf=({schema:e})=>{let t=function(e){return null==e?t0({properties:{},additionalProperties:!1}):"object"==typeof e&&null!==e&&tX in e&&!0===e[tX]&&"jsonSchema"in e&&"validate"in e?e:"function"==typeof e?e():tH(e)}(e);return{type:"object",responseFormat:{type:"json",schema:t.jsonSchema},async parsePartial({text:e}){let t=await sp(e);switch(t.state){case"failed-parse":case"undefined-input":return;case"repaired-parse":case"successful-parse":return{partial:t.value};default:{let e=t.state;throw Error(`Unsupported parse state: ${e}`)}}},async parseOutput({text:e},o){let i=await tM({text:e});if(!i.success)throw new rf({message:"No object generated: could not parse the response.",cause:i.error,text:e,response:o.response,usage:o.usage,finishReason:o.finishReason});let a=await ty({value:i.value,schema:t});if(!a.success)throw new rf({message:"No object generated: response did not match schema.",cause:a.error,text:e,response:o.response,usage:o.usage,finishReason:o.finishReason});return a.value}}},sx=({model:e,middleware:{transformParams:t,wrapGenerate:o,wrapStream:i,overrideProvider:a,overrideModelId:r,overrideSupportedUrls:s},modelId:n,providerId:l})=>{var d,c,u;async function p({params:o,type:i}){return t?await t({params:o,type:i,model:e}):o}return{specificationVersion:"v2",provider:null!=(d=null!=l?l:null==a?void 0:a({model:e}))?d:e.provider,modelId:null!=(c=null!=n?n:null==r?void 0:r({model:e}))?c:e.modelId,supportedUrls:null!=(u=null==s?void 0:s({model:e}))?u:e.supportedUrls,async doGenerate(t){let i=await p({params:t,type:"generate"}),a=async()=>e.doGenerate(i),r=async()=>e.doStream(i);return o?o({doGenerate:a,doStream:r,params:i,model:e}):a()},async doStream(t){let o=await p({params:t,type:"stream"}),a=async()=>e.doGenerate(o),r=async()=>e.doStream(o);return i?i({doGenerate:a,doStream:r,params:o,model:e}):r()}}},sb="AI_NoSuchProviderError",sk=`vercel.ai.error.${sb}`;w=Symbol.for(sk);var sy=az({name:i3(),version:i3()}),sM=az({_meta:aU(aO({}).loose())}),sI=aO({method:i3(),params:aU(sM)}),sw=az({experimental:aU(aO({}).loose()),logging:aU(aO({}).loose()),prompts:aU(az({listChanged:aU(ak())})),resources:aU(az({subscribe:aU(ak()),listChanged:aU(ak())})),tools:aU(az({listChanged:aU(ak())}))}),sS=(sM.extend({protocolVersion:i3(),capabilities:sw,serverInfo:sy,instructions:aU(i3())}),sM.extend({nextCursor:aU(i3())})),sA=aO({name:i3(),description:aU(i3()),inputSchema:aO({type:aF("object"),properties:aU(aO({}).loose())}).loose()}).loose(),sT=(sS.extend({tools:aP(sA)}),aO({type:aF("text"),text:i3()}).loose()),sP=aO({type:aF("image"),data:i$(au,void 0),mimeType:i3()}).loose(),sN=aO({uri:i3(),mimeType:aU(i3())}).loose(),sO=sN.extend({text:i3()}),s_=sN.extend({blob:i$(au,void 0)}),sz=aO({type:aF("resource"),resource:aq([sO,s_])}).loose(),sE=(sM.extend({content:aP(aq([sT,sP,sz])),isError:ak().default(!1).optional()}).or(sM.extend({toolResult:aw()})),aO({jsonrpc:aF("2.0"),id:aq([i3(),av().int()])}).merge(sI).strict()),sq=aO({jsonrpc:aF("2.0"),id:aq([i3(),av().int()]),result:sM}).strict(),sB=aO({jsonrpc:aF("2.0"),id:aq([i3(),av().int()]),error:aO({code:av().int(),message:i3(),data:aU(aw())})}).strict(),sj=aq([sE,aO({jsonrpc:aF("2.0")}).merge(aO({method:i3(),params:aU(sM)})).strict(),sq,sB]),sC=class{constructor({api:e="/api/chat",credentials:t,headers:o,body:i,fetch:a,prepareSendMessagesRequest:r,prepareReconnectToStreamRequest:s}){this.api=e,this.credentials=t,this.headers=o,this.body=i,this.fetch=a,this.prepareSendMessagesRequest=r,this.prepareReconnectToStreamRequest=s}async sendMessages({abortSignal:e,...t}){var o,i,a,r,s;let n=await tI(this.body),l=await tI(this.headers),d=await tI(this.credentials),c=await (null==(o=this.prepareSendMessagesRequest)?void 0:o.call(this,{api:this.api,id:t.chatId,messages:t.messages,body:{...n,...t.body},headers:{...l,...t.headers},credentials:d,requestMetadata:t.metadata,trigger:t.trigger,messageId:t.messageId})),u=null!=(i=null==c?void 0:c.api)?i:this.api,p=(null==c?void 0:c.headers)!==void 0?c.headers:{...l,...t.headers},m=(null==c?void 0:c.body)!==void 0?c.body:{...n,...t.body,id:t.chatId,messages:t.messages,trigger:t.trigger,messageId:t.messageId},g=null!=(a=null==c?void 0:c.credentials)?a:d,h=null!=(r=this.fetch)?r:globalThis.fetch,v=await h(u,{method:"POST",headers:tv({"Content-Type":"application/json",...p},`ai-sdk/${rF}`,th()),body:JSON.stringify(m),credentials:g,signal:e});if(!v.ok)throw Error(null!=(s=await v.text())?s:"Failed to fetch the chat response.");if(!v.body)throw Error("The response body is empty.");return this.processResponseStream(v.body)}async reconnectToStream(e){var t,o,i,a,r;let s=await tI(this.body),n=await tI(this.headers),l=await tI(this.credentials),d=await (null==(t=this.prepareReconnectToStreamRequest)?void 0:t.call(this,{api:this.api,id:e.chatId,body:{...s,...e.body},headers:{...n,...e.headers},credentials:l,requestMetadata:e.metadata})),c=null!=(o=null==d?void 0:d.api)?o:`${this.api}/${e.chatId}/stream`,u=(null==d?void 0:d.headers)!==void 0?d.headers:{...n,...e.headers},p=null!=(i=null==d?void 0:d.credentials)?i:l,m=null!=(a=this.fetch)?a:globalThis.fetch,g=await m(c,{method:"GET",headers:tv(u,`ai-sdk/${rF}`,th()),credentials:p});if(204===g.status)return null;if(!g.ok)throw Error(null!=(r=await g.text())?r:"Failed to fetch the chat response.");if(!g.body)throw Error("The response body is empty.");return this.processResponseStream(g.body)}},sR=class extends sC{constructor(e={}){super(e)}processResponseStream(e){return(function({stream:e,schema:t}){return e.pipeThrough(new TextDecoderStream).pipeThrough(new eE).pipeThrough(new TransformStream({async transform({data:e},o){"[DONE]"!==e&&o.enqueue(await tM({text:e,schema:t}))}}))})({stream:e,schema:su}).pipeThrough(new TransformStream({async transform(e,t){if(!e.success)throw e.error;t.enqueue(e.value)}}))}};function sL({messages:e}){let t=e[e.length-1];if(!t||"assistant"!==t.role)return!1;let o=t.parts.reduce((e,t,o)=>"step-start"===t.type?o:e,-1),i=t.parts.slice(o+1).filter(sm);return i.length>0&&i.every(e=>"output-available"===e.state||"output-error"===e.state)}tk(()=>tH(aP(aO({id:i3(),role:a$(["system","user","assistant"]),metadata:aw().optional(),parts:aP(aq([aO({type:aF("text"),text:i3(),state:a$(["streaming","done"]).optional(),providerMetadata:rJ.optional()}),aO({type:aF("reasoning"),text:i3(),state:a$(["streaming","done"]).optional(),providerMetadata:rJ.optional()}),aO({type:aF("source-url"),sourceId:i3(),url:i3(),title:i3().optional(),providerMetadata:rJ.optional()}),aO({type:aF("source-document"),sourceId:i3(),mediaType:i3(),title:i3(),filename:i3().optional(),providerMetadata:rJ.optional()}),aO({type:aF("file"),mediaType:i3(),filename:i3().optional(),url:i3(),providerMetadata:rJ.optional()}),aO({type:aF("step-start")}),aO({type:i3().startsWith("data-"),id:i3().optional(),data:aw()}),aO({type:aF("dynamic-tool"),toolName:i3(),toolCallId:i3(),state:aF("input-streaming"),input:aw().optional(),output:aA().optional(),errorText:aA().optional()}),aO({type:aF("dynamic-tool"),toolName:i3(),toolCallId:i3(),state:aF("input-available"),input:aw(),output:aA().optional(),errorText:aA().optional(),callProviderMetadata:rJ.optional()}),aO({type:aF("dynamic-tool"),toolName:i3(),toolCallId:i3(),state:aF("output-available"),input:aw(),output:aw(),errorText:aA().optional(),callProviderMetadata:rJ.optional(),preliminary:ak().optional()}),aO({type:aF("dynamic-tool"),toolName:i3(),toolCallId:i3(),state:aF("output-error"),input:aw(),output:aA().optional(),errorText:i3(),callProviderMetadata:rJ.optional()}),aO({type:i3().startsWith("tool-"),toolCallId:i3(),state:aF("input-streaming"),providerExecuted:ak().optional(),input:aw().optional(),output:aA().optional(),errorText:aA().optional(),approval:aA().optional()}),aO({type:i3().startsWith("tool-"),toolCallId:i3(),state:aF("input-available"),providerExecuted:ak().optional(),input:aw(),output:aA().optional(),errorText:aA().optional(),callProviderMetadata:rJ.optional(),approval:aA().optional()}),aO({type:i3().startsWith("tool-"),toolCallId:i3(),state:aF("approval-requested"),input:aw(),providerExecuted:ak().optional(),output:aA().optional(),errorText:aA().optional(),callProviderMetadata:rJ.optional(),approval:aO({id:i3(),approved:aA().optional(),reason:aA().optional()})}),aO({type:i3().startsWith("tool-"),toolCallId:i3(),state:aF("approval-responded"),input:aw(),providerExecuted:ak().optional(),output:aA().optional(),errorText:aA().optional(),callProviderMetadata:rJ.optional(),approval:aO({id:i3(),approved:ak(),reason:i3().optional()})}),aO({type:i3().startsWith("tool-"),toolCallId:i3(),state:aF("output-available"),providerExecuted:ak().optional(),input:aw(),output:aw(),errorText:aA().optional(),callProviderMetadata:rJ.optional(),preliminary:ak().optional(),approval:aO({id:i3(),approved:aF(!0),reason:i3().optional()}).optional()}),aO({type:i3().startsWith("tool-"),toolCallId:i3(),state:aF("output-error"),providerExecuted:ak().optional(),input:aw(),output:aA().optional(),errorText:i3(),callProviderMetadata:rJ.optional(),approval:aO({id:i3(),approved:aF(!0),reason:i3().optional()}).optional()}),aO({type:i3().startsWith("tool-"),toolCallId:i3(),state:aF("output-denied"),providerExecuted:ak().optional(),input:aw(),output:aA().optional(),errorText:aA().optional(),callProviderMetadata:rJ.optional(),approval:aO({id:i3(),approved:aF(!1),reason:i3().optional()})})]))}))));let sD=Symbol("Let zodToJsonSchema decide on which parser to use"),s$={name:void 0,$refStrategy:"root",basePath:["#"],effectStrategy:"input",pipeStrategy:"all",dateStrategy:"format:date-time",mapStrategy:"entries",removeAdditionalStrategy:"passthrough",allowedAdditionalProperties:!0,rejectedAdditionalProperties:!1,definitionPath:"definitions",target:"jsonSchema7",strictUnions:!1,definitions:{},errorMessages:!1,markdownDescription:!1,patternStrategy:"escape",applyRegexFlags:!1,emailStrategy:"format:email",base64Strategy:"contentEncoding:base64",nameStrategy:"ref",openAiAnyTypeName:"OpenAiAnyType"},sZ=e=>"string"==typeof e?{...s$,name:e}:{...s$,...e},sF=e=>{let t=sZ(e),o=void 0!==t.name?[...t.basePath,t.definitionPath,t.name]:t.basePath;return{...t,flags:{hasReferencedOpenAiAnyType:!1},currentPath:o,propertyPath:void 0,seen:new Map(Object.entries(t.definitions).map(([e,o])=>[o._def,{def:o._def,path:[...t.basePath,t.definitionPath,e],jsonSchema:void 0}]))}},sQ=(e,t)=>{let o=0;for(;o<e.length&&o<t.length&&e[o]===t[o];o++);return[(e.length-o).toString(),...t.slice(o)].join("/")};function sG(e){if("openAi"!==e.target)return{};let t=[...e.basePath,e.definitionPath,e.openAiAnyTypeName];return e.flags.hasReferencedOpenAiAnyType=!0,{$ref:"relative"===e.$refStrategy?sQ(t,e.currentPath):t.join("/")}}function sU(e,t,o,i){i?.errorMessages&&o&&(e.errorMessage={...e.errorMessage,[t]:o})}function sV(e,t,o,i,a){e[t]=o,sU(e,t,i,a)}function sK(e,t){return no(e.type._def,t)}let sW=(e,t)=>no(e.innerType._def,t),sJ=(e,t)=>{let o={type:"integer",format:"unix-time"};if("openApi3"===t.target)return o;for(let i of e.checks)switch(i.kind){case"min":sV(o,"minimum",i.value,i.message,t);break;case"max":sV(o,"maximum",i.value,i.message,t)}return o},sY=e=>(!("type"in e)||"string"!==e.type)&&"allOf"in e,sH={cuid:/^[cC][^\s-]{8,}$/,cuid2:/^[0-9a-z]+$/,ulid:/^[0-9A-HJKMNP-TV-Z]{26}$/,email:/^(?!\.)(?!.*\.\.)([a-zA-Z0-9_'+\-\.]*)[a-zA-Z0-9_+-]@([a-zA-Z0-9][a-zA-Z0-9\-]*\.)+[a-zA-Z]{2,}$/,emoji:()=>(void 0===i&&(i=RegExp("^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$","u")),i),ipv4Cidr:/^(?:(?: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])\/(3[0-2]|[12]?[0-9])$/,ipv6Cidr:/^(([0-9a-fA-F]{1,4}:){7,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}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,base64:/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,base64url:/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,nanoid:/^[a-zA-Z0-9_-]{21}$/,jwt:/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/};function sX(e,t){let o={type:"string"};if(e.checks)for(let i of e.checks)switch(i.kind){case"min":sV(o,"minLength","number"==typeof o.minLength?Math.max(o.minLength,i.value):i.value,i.message,t);break;case"max":sV(o,"maxLength","number"==typeof o.maxLength?Math.min(o.maxLength,i.value):i.value,i.message,t);break;case"email":switch(t.emailStrategy){case"format:email":s1(o,"email",i.message,t);break;case"format:idn-email":s1(o,"idn-email",i.message,t);break;case"pattern:zod":s5(o,sH.email,i.message,t)}break;case"url":s1(o,"uri",i.message,t);break;case"uuid":s1(o,"uuid",i.message,t);break;case"regex":s5(o,i.regex,i.message,t);break;case"cuid":s5(o,sH.cuid,i.message,t);break;case"cuid2":s5(o,sH.cuid2,i.message,t);break;case"startsWith":s5(o,RegExp(`^${s0(i.value,t)}`),i.message,t);break;case"endsWith":s5(o,RegExp(`${s0(i.value,t)}$`),i.message,t);break;case"datetime":s1(o,"date-time",i.message,t);break;case"date":s1(o,"date",i.message,t);break;case"time":s1(o,"time",i.message,t);break;case"duration":s1(o,"duration",i.message,t);break;case"length":sV(o,"minLength","number"==typeof o.minLength?Math.max(o.minLength,i.value):i.value,i.message,t),sV(o,"maxLength","number"==typeof o.maxLength?Math.min(o.maxLength,i.value):i.value,i.message,t);break;case"includes":s5(o,RegExp(s0(i.value,t)),i.message,t);break;case"ip":"v6"!==i.version&&s1(o,"ipv4",i.message,t),"v4"!==i.version&&s1(o,"ipv6",i.message,t);break;case"base64url":s5(o,sH.base64url,i.message,t);break;case"jwt":s5(o,sH.jwt,i.message,t);break;case"cidr":"v6"!==i.version&&s5(o,sH.ipv4Cidr,i.message,t),"v4"!==i.version&&s5(o,sH.ipv6Cidr,i.message,t);break;case"emoji":s5(o,sH.emoji(),i.message,t);break;case"ulid":s5(o,sH.ulid,i.message,t);break;case"base64":switch(t.base64Strategy){case"format:binary":s1(o,"binary",i.message,t);break;case"contentEncoding:base64":sV(o,"contentEncoding","base64",i.message,t);break;case"pattern:zod":s5(o,sH.base64,i.message,t)}break;case"nanoid":s5(o,sH.nanoid,i.message,t)}return o}function s0(e,t){return"escape"===t.patternStrategy?function(e){let t="";for(let o=0;o<e.length;o++)s2.has(e[o])||(t+="\\"),t+=e[o];return t}(e):e}let s2=new Set("ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789");function s1(e,t,o,i){e.format||e.anyOf?.some(e=>e.format)?(e.anyOf||(e.anyOf=[]),e.format&&(e.anyOf.push({format:e.format,...e.errorMessage&&i.errorMessages&&{errorMessage:{format:e.errorMessage.format}}}),delete e.format,e.errorMessage&&(delete e.errorMessage.format,0===Object.keys(e.errorMessage).length&&delete e.errorMessage)),e.anyOf.push({format:t,...o&&i.errorMessages&&{errorMessage:{format:o}}})):sV(e,"format",t,o,i)}function s5(e,t,o,i){e.pattern||e.allOf?.some(e=>e.pattern)?(e.allOf||(e.allOf=[]),e.pattern&&(e.allOf.push({pattern:e.pattern,...e.errorMessage&&i.errorMessages&&{errorMessage:{pattern:e.errorMessage.pattern}}}),delete e.pattern,e.errorMessage&&(delete e.errorMessage.pattern,0===Object.keys(e.errorMessage).length&&delete e.errorMessage)),e.allOf.push({pattern:s3(t,i),...o&&i.errorMessages&&{errorMessage:{pattern:o}}})):sV(e,"pattern",s3(t,i),o,i)}function s3(e,t){if(!t.applyRegexFlags||!e.flags)return e.source;let o={i:e.flags.includes("i"),m:e.flags.includes("m"),s:e.flags.includes("s")},i=o.i?e.source.toLowerCase():e.source,a="",r=!1,s=!1,n=!1;for(let e=0;e<i.length;e++){if(r){a+=i[e],r=!1;continue}if(o.i){if(s){if(i[e].match(/[a-z]/)){n?(a+=i[e]+`${i[e-2]}-${i[e]}`.toUpperCase(),n=!1):"-"===i[e+1]&&i[e+2]?.match(/[a-z]/)?(a+=i[e],n=!0):a+=`${i[e]}${i[e].toUpperCase()}`;continue}}else if(i[e].match(/[a-z]/)){a+=`[${i[e]}${i[e].toUpperCase()}]`;continue}}if(o.m){if("^"===i[e]){a+=`(^|(?<=[\r
|
|
37
37
|
]))`;continue}if("$"===i[e]){a+=`($|(?=[\r
|
|
38
38
|
]))`;continue}}if(o.s&&"."===i[e]){a+=s?`${i[e]}\r
|
|
39
39
|
`:`[${i[e]}\r
|
|
40
|
-
]`;continue}a+=i[e],"\\"===i[e]?r=!0:s&&"]"===i[e]?s=!1:s||"["!==i[e]||(s=!0)}try{new RegExp(a)}catch{return console.warn(`Could not convert regex pattern at ${t.currentPath.join("/")} to a flag-independent form! Falling back to the flag-ignorant source`),e.source}return a}function s9(e,t){if("openAi"===t.target&&console.warn("Warning: OpenAI may not support records in schemas! Try an array of key-value pairs instead."),"openApi3"===t.target&&e.keyType?._def.typeName===tm.pA.ZodEnum)return{type:"object",required:e.keyType._def.values,properties:e.keyType._def.values.reduce((o,i)=>({...o,[i]:ns(e.valueType._def,{...t,currentPath:[...t.currentPath,"properties",i]})??sW(t)}),{}),additionalProperties:t.rejectedAdditionalProperties};let o={type:"object",additionalProperties:ns(e.valueType._def,{...t,currentPath:[...t.currentPath,"additionalProperties"]})??t.allowedAdditionalProperties};if("openApi3"===t.target)return o;if(e.keyType?._def.typeName===tm.pA.ZodString&&e.keyType._def.checks?.length){let{type:i,...a}=s5(e.keyType._def,t);return{...o,propertyNames:a}}if(e.keyType?._def.typeName===tm.pA.ZodEnum)return{...o,propertyNames:{enum:e.keyType._def.values}};if(e.keyType?._def.typeName===tm.pA.ZodBranded&&e.keyType._def.type._def.typeName===tm.pA.ZodString&&e.keyType._def.type._def.checks?.length){let{type:i,...a}=sH(e.keyType._def,t);return{...o,propertyNames:a}}return o}let ne={ZodString:"string",ZodNumber:"number",ZodBigInt:"integer",ZodBoolean:"boolean",ZodNull:"null"},nt=(e,t)=>{let o=(e.options instanceof Map?Array.from(e.options.values()):e.options).map((e,o)=>ns(e._def,{...t,currentPath:[...t.currentPath,"anyOf",`${o}`]})).filter(e=>!!e&&(!t.strictUnions||"object"==typeof e&&Object.keys(e).length>0));return o.length?{anyOf:o}:void 0},no=(e,t)=>{if(t.currentPath.toString()===t.propertyPath?.toString())return ns(e.innerType._def,t);let o=ns(e.innerType._def,{...t,currentPath:[...t.currentPath,"anyOf","1"]});return o?{anyOf:[{not:sW(t)},o]}:sW(t)},ni=(e,t)=>{if("input"===t.pipeStrategy)return ns(e.in._def,t);if("output"===t.pipeStrategy)return ns(e.out._def,t);let o=ns(e.in._def,{...t,currentPath:[...t.currentPath,"allOf","0"]}),i=ns(e.out._def,{...t,currentPath:[...t.currentPath,"allOf",o?"1":"0"]});return{allOf:[o,i].filter(e=>void 0!==e)}},na=(e,t)=>ns(e.innerType._def,t),nr=(e,t,o)=>{switch(t){case tm.pA.ZodString:return s5(e,o);case tm.pA.ZodNumber:return function(e,t){let o={type:"number"};if(!e.checks)return o;for(let i of e.checks)switch(i.kind){case"int":o.type="integer",sJ(o,"type",i.message,t);break;case"min":"jsonSchema7"===t.target?i.inclusive?sY(o,"minimum",i.value,i.message,t):sY(o,"exclusiveMinimum",i.value,i.message,t):(i.inclusive||(o.exclusiveMinimum=!0),sY(o,"minimum",i.value,i.message,t));break;case"max":"jsonSchema7"===t.target?i.inclusive?sY(o,"maximum",i.value,i.message,t):sY(o,"exclusiveMaximum",i.value,i.message,t):(i.inclusive||(o.exclusiveMaximum=!0),sY(o,"maximum",i.value,i.message,t));break;case"multipleOf":sY(o,"multipleOf",i.value,i.message,t)}return o}(e,o);case tm.pA.ZodObject:return function(e,t){let o="openAi"===t.target,i={type:"object",properties:{}},a=[],r=e.shape();for(let e in r){let s=r[e];if(void 0===s||void 0===s._def)continue;let n=function(e){try{return e.isOptional()}catch{return!0}}(s);n&&o&&("ZodOptional"===s._def.typeName&&(s=s._def.innerType),s.isNullable()||(s=s.nullable()),n=!1);let l=ns(s._def,{...t,currentPath:[...t.currentPath,"properties",e],propertyPath:[...t.currentPath,"properties",e]});void 0!==l&&(i.properties[e]=l,n||a.push(e))}a.length&&(i.required=a);let s=function(e,t){if("ZodNever"!==e.catchall._def.typeName)return ns(e.catchall._def,{...t,currentPath:[...t.currentPath,"additionalProperties"]});switch(e.unknownKeys){case"passthrough":return t.allowedAdditionalProperties;case"strict":return t.rejectedAdditionalProperties;case"strip":return"strict"===t.removeAdditionalStrategy?t.allowedAdditionalProperties:t.rejectedAdditionalProperties}}(e,t);return void 0!==s&&(i.additionalProperties=s),i}(e,o);case tm.pA.ZodBigInt:return function(e,t){let o={type:"integer",format:"int64"};if(!e.checks)return o;for(let i of e.checks)switch(i.kind){case"min":"jsonSchema7"===t.target?i.inclusive?sY(o,"minimum",i.value,i.message,t):sY(o,"exclusiveMinimum",i.value,i.message,t):(i.inclusive||(o.exclusiveMinimum=!0),sY(o,"minimum",i.value,i.message,t));break;case"max":"jsonSchema7"===t.target?i.inclusive?sY(o,"maximum",i.value,i.message,t):sY(o,"exclusiveMaximum",i.value,i.message,t):(i.inclusive||(o.exclusiveMaximum=!0),sY(o,"maximum",i.value,i.message,t));break;case"multipleOf":sY(o,"multipleOf",i.value,i.message,t)}return o}(e,o);case tm.pA.ZodBoolean:return{type:"boolean"};case tm.pA.ZodDate:return function e(t,o,i){let a=i??o.dateStrategy;if(Array.isArray(a))return{anyOf:a.map((i,a)=>e(t,o,i))};switch(a){case"string":case"format:date-time":return{type:"string",format:"date-time"};case"format:date":return{type:"string",format:"date"};case"integer":return s0(t,o)}}(e,o);case tm.pA.ZodUndefined:return{not:sW(o)};case tm.pA.ZodNull:return"openApi3"===o.target?{enum:["null"],nullable:!0}:{type:"null"};case tm.pA.ZodArray:return function(e,t){let o={type:"array"};return e.type?._def&&e.type?._def?.typeName!==tm.pA.ZodAny&&(o.items=ns(e.type._def,{...t,currentPath:[...t.currentPath,"items"]})),e.minLength&&sY(o,"minItems",e.minLength.value,e.minLength.message,t),e.maxLength&&sY(o,"maxItems",e.maxLength.value,e.maxLength.message,t),e.exactLength&&(sY(o,"minItems",e.exactLength.value,e.exactLength.message,t),sY(o,"maxItems",e.exactLength.value,e.exactLength.message,t)),o}(e,o);case tm.pA.ZodUnion:case tm.pA.ZodDiscriminatedUnion:return function(e,t){if("openApi3"===t.target)return nt(e,t);let o=e.options instanceof Map?Array.from(e.options.values()):e.options;if(o.every(e=>e._def.typeName in ne&&(!e._def.checks||!e._def.checks.length))){let e=o.reduce((e,t)=>{let o=ne[t._def.typeName];return o&&!e.includes(o)?[...e,o]:e},[]);return{type:e.length>1?e:e[0]}}if(o.every(e=>"ZodLiteral"===e._def.typeName&&!e.description)){let e=o.reduce((e,t)=>{let o=typeof t._def.value;switch(o){case"string":case"number":case"boolean":return[...e,o];case"bigint":return[...e,"integer"];case"object":if(null===t._def.value)return[...e,"null"];default:return e}},[]);if(e.length===o.length){let t=e.filter((e,t,o)=>o.indexOf(e)===t);return{type:t.length>1?t:t[0],enum:o.reduce((e,t)=>e.includes(t._def.value)?e:[...e,t._def.value],[])}}}else if(o.every(e=>"ZodEnum"===e._def.typeName))return{type:"string",enum:o.reduce((e,t)=>[...e,...t._def.values.filter(t=>!e.includes(t))],[])};return nt(e,t)}(e,o);case tm.pA.ZodIntersection:return function(e,t){let o=[ns(e.left._def,{...t,currentPath:[...t.currentPath,"allOf","0"]}),ns(e.right._def,{...t,currentPath:[...t.currentPath,"allOf","1"]})].filter(e=>!!e),i="jsonSchema2019-09"===t.target?{unevaluatedProperties:!1}:void 0,a=[];return o.forEach(e=>{if(s2(e))a.push(...e.allOf),void 0===e.unevaluatedProperties&&(i=void 0);else{let t=e;if("additionalProperties"in e&&!1===e.additionalProperties){let{additionalProperties:o,...i}=e;t=i}else i=void 0;a.push(t)}}),a.length?{allOf:a,...i}:void 0}(e,o);case tm.pA.ZodTuple:return function(e,t){return e.rest?{type:"array",minItems:e.items.length,items:e.items.map((e,o)=>ns(e._def,{...t,currentPath:[...t.currentPath,"items",`${o}`]})).reduce((e,t)=>void 0===t?e:[...e,t],[]),additionalItems:ns(e.rest._def,{...t,currentPath:[...t.currentPath,"additionalItems"]})}:{type:"array",minItems:e.items.length,maxItems:e.items.length,items:e.items.map((e,o)=>ns(e._def,{...t,currentPath:[...t.currentPath,"items",`${o}`]})).reduce((e,t)=>void 0===t?e:[...e,t],[])}}(e,o);case tm.pA.ZodRecord:return s9(e,o);case tm.pA.ZodLiteral:return function(e,t){let o=typeof e.value;return"bigint"!==o&&"number"!==o&&"boolean"!==o&&"string"!==o?{type:Array.isArray(e.value)?"array":"object"}:"openApi3"===t.target?{type:"bigint"===o?"integer":o,enum:[e.value]}:{type:"bigint"===o?"integer":o,const:e.value}}(e,o);case tm.pA.ZodEnum:return{type:"string",enum:Array.from(e.values)};case tm.pA.ZodNativeEnum:return function(e){let t=e.values,o=Object.keys(e.values).filter(e=>"number"!=typeof t[t[e]]).map(e=>t[e]),i=Array.from(new Set(o.map(e=>typeof e)));return{type:1===i.length?"string"===i[0]?"string":"number":["string","number"],enum:o}}(e);case tm.pA.ZodNullable:return function(e,t){if(["ZodString","ZodNumber","ZodBigInt","ZodBoolean","ZodNull"].includes(e.innerType._def.typeName)&&(!e.innerType._def.checks||!e.innerType._def.checks.length))return"openApi3"===t.target?{type:ne[e.innerType._def.typeName],nullable:!0}:{type:[ne[e.innerType._def.typeName],"null"]};if("openApi3"===t.target){let o=ns(e.innerType._def,{...t,currentPath:[...t.currentPath]});return o&&"$ref"in o?{allOf:[o],nullable:!0}:o&&{...o,nullable:!0}}let o=ns(e.innerType._def,{...t,currentPath:[...t.currentPath,"anyOf","0"]});return o&&{anyOf:[o,{type:"null"}]}}(e,o);case tm.pA.ZodOptional:return no(e,o);case tm.pA.ZodMap:return function(e,t){return"record"===t.mapStrategy?s9(e,t):{type:"array",maxItems:125,items:{type:"array",items:[ns(e.keyType._def,{...t,currentPath:[...t.currentPath,"items","items","0"]})||sW(t),ns(e.valueType._def,{...t,currentPath:[...t.currentPath,"items","items","1"]})||sW(t)],minItems:2,maxItems:2}}}(e,o);case tm.pA.ZodSet:return function(e,t){let o={type:"array",uniqueItems:!0,items:ns(e.valueType._def,{...t,currentPath:[...t.currentPath,"items"]})};return e.minSize&&sY(o,"minItems",e.minSize.value,e.minSize.message,t),e.maxSize&&sY(o,"maxItems",e.maxSize.value,e.maxSize.message,t),o}(e,o);case tm.pA.ZodLazy:return()=>e.getter()._def;case tm.pA.ZodPromise:return ns(e.type._def,o);case tm.pA.ZodNaN:case tm.pA.ZodNever:return function(e){return"openAi"===e.target?void 0:{not:sW({...e,currentPath:[...e.currentPath,"not"]})}}(o);case tm.pA.ZodEffects:return function(e,t){return"input"===t.effectStrategy?ns(e.schema._def,t):sW(t)}(e,o);case tm.pA.ZodAny:case tm.pA.ZodUnknown:return sW(o);case tm.pA.ZodDefault:return function(e,t){return{...ns(e.innerType._def,t),default:e.defaultValue()}}(e,o);case tm.pA.ZodBranded:return sH(e,o);case tm.pA.ZodReadonly:return na(e,o);case tm.pA.ZodCatch:return sX(e,o);case tm.pA.ZodPipeline:return ni(e,o);case tm.pA.ZodFunction:case tm.pA.ZodVoid:case tm.pA.ZodSymbol:default:return}};function ns(e,t,o=!1){let i=t.seen.get(e);if(t.override){let a=t.override?.(e,t,i,o);if(a!==sQ)return a}if(i&&!o){let e=nn(i,t);if(void 0!==e)return e}let a={def:e,path:t.currentPath,jsonSchema:void 0};t.seen.set(e,a);let r=nr(e,e.typeName,t),s="function"==typeof r?ns(r(),t):r;if(s&&nl(e,t,s),t.postProcess){let o=t.postProcess(s,e,t);return a.jsonSchema=s,o}return a.jsonSchema=s,s}let nn=(e,t)=>{switch(t.$refStrategy){case"root":return{$ref:e.path.join("/")};case"relative":return{$ref:sK(t.currentPath,e.path)};case"none":case"seen":if(e.path.length<t.currentPath.length&&e.path.every((e,o)=>t.currentPath[o]===e))return console.warn(`Recursive reference detected at ${t.currentPath.join("/")}! Defaulting to any`),sW(t);return"seen"===t.$refStrategy?sW(t):void 0}},nl=(e,t,o)=>(e.description&&(o.description=e.description,t.markdownDescription&&(o.markdownDescription=e.description)),o),nd=(e,t)=>{let o=sV(t),i="object"==typeof t&&t.definitions?Object.entries(t.definitions).reduce((e,[t,i])=>({...e,[t]:ns(i._def,{...o,currentPath:[...o.basePath,o.definitionPath,t]},!0)??sW(o)}),{}):void 0,a="string"==typeof t?t:t?.nameStrategy==="title"?void 0:t?.name,r=ns(e._def,void 0===a?o:{...o,currentPath:[...o.basePath,o.definitionPath,a]},!1)??sW(o),s="object"==typeof t&&void 0!==t.name&&"title"===t.nameStrategy?t.name:void 0;void 0!==s&&(r.title=s),o.flags.hasReferencedOpenAiAnyType&&(i||(i={}),i[o.openAiAnyTypeName]||(i[o.openAiAnyTypeName]={type:["string","number","integer","boolean","array","null"],items:{$ref:"relative"===o.$refStrategy?"1":[...o.basePath,o.definitionPath,o.openAiAnyTypeName].join("/")}}));let n=void 0===a?i?{...r,[o.definitionPath]:i}:r:{$ref:[..."relative"===o.$refStrategy?[]:o.basePath,o.definitionPath,a].join("/"),[o.definitionPath]:{...i,[a]:r}};return"jsonSchema7"===o.target?n.$schema="http://json-schema.org/draft-07/schema#":("jsonSchema2019-09"===o.target||"openAi"===o.target)&&(n.$schema="https://json-schema.org/draft/2019-09/schema#"),"openAi"===o.target&&("anyOf"in n||"oneOf"in n||"allOf"in n||"type"in n&&Array.isArray(n.type))&&console.warn("Warning: OpenAI may not support schemas with unions as roots! Try wrapping it in an object property."),n};var nc=({prefix:e,size:t=16,alphabet:o="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",separator:i="-"}={})=>{let a=()=>{let e=o.length,i=Array(t);for(let a=0;a<t;a++)i[a]=o[Math.random()*e|0];return i.join("")};if(null==e)return a;if(o.includes(i))throw new em({argument:"separator",message:`The separator "${i}" must not be part of the alphabet "${o}".`});return()=>`${e}${i}${a()}`},nu=nc(),np=/"__proto__"\s*:/,nm=/"constructor"\s*:/,ng=Symbol.for("vercel.ai.validator");async function nh({value:e,schema:t}){let o=await nv({value:e,schema:t});if(!o.success)throw eS.wrap({value:e,cause:o.error});return o.value}async function nv({value:e,schema:t}){let o="object"==typeof t&&null!==t&&ng in t&&!0===t[ng]&&"validate"in t?t:{[ng]:!0,validate:async e=>{let o=await t["~standard"].validate(e);return null==o.issues?{success:!0,value:o.value}:{success:!1,error:new eS({value:e,cause:o.issues})}}};try{if(null==o.validate)return{success:!0,value:e,rawValue:e};let t=await o.validate(e);if(t.success)return{success:!0,value:t.value,rawValue:e};return{success:!1,error:eS.wrap({value:e,cause:t.error}),rawValue:e}}catch(t){return{success:!1,error:eS.wrap({value:e,cause:t}),rawValue:e}}}async function nf({text:e,schema:t}){try{let o=function(e){let{stackTraceLimit:t}=Error;Error.stackTraceLimit=0;try{return function(e){let t=JSON.parse(e);return null===t||"object"!=typeof t||!1===np.test(e)&&!1===nm.test(e)?t:function(e){let t=[e];for(;t.length;){let e=t;for(let o of(t=[],e)){if(Object.prototype.hasOwnProperty.call(o,"__proto__")||Object.prototype.hasOwnProperty.call(o,"constructor")&&Object.prototype.hasOwnProperty.call(o.constructor,"prototype"))throw SyntaxError("Object contains forbidden prototype property");for(let e in o){let i=o[e];i&&"object"==typeof i&&t.push(i)}}}return e}(t)}(e)}finally{Error.stackTraceLimit=t}}(e);if(null==t)return{success:!0,value:o,rawValue:o};return await nv({value:o,schema:t})}catch(t){return{success:!1,error:ef.isInstance(t)?t:new ef({text:e,cause:t}),rawValue:void 0}}}async function nx(e){return"function"==typeof e&&(e=e()),Promise.resolve(e)}var nb=Symbol.for("vercel.ai.schema");function nk(e,{validate:t}={}){return{[nb]:!0,_type:void 0,[ng]:!0,jsonSchema:e,validate:t}}var{btoa:ny,atob:nM}=globalThis,nI=Object.defineProperty,nw="AI_NoOutputSpecifiedError",nS=`vercel.ai.error.${nw}`,nA=Symbol.for(nS),nT=class extends el{constructor({message:e="No output specified."}={}){super({name:nw,message:e}),this[S]=!0}static isInstance(e){return el.hasMarker(e,nS)}};S=nA;var nP="AI_InvalidArgumentError",nN=`vercel.ai.error.${nP}`,nO=Symbol.for(nN),n_=class extends el{constructor({parameter:e,value:t,message:o}){super({name:nP,message:`Invalid argument for parameter ${e}: ${o}`}),this[A]=!0,this.parameter=e,this.value=t}static isInstance(e){return el.hasMarker(e,nN)}};A=nO,Symbol.for("vercel.ai.error.AI_InvalidStreamPartError");var nz="AI_InvalidToolInputError",nE=`vercel.ai.error.${nz}`,nq=Symbol.for(nE),nB=class extends el{constructor({toolInput:e,toolName:t,cause:o,message:i=`Invalid input for tool ${t}: ${ed(o)}`}){super({name:nz,message:i,cause:o}),this[T]=!0,this.toolInput=e,this.toolName=t}static isInstance(e){return el.hasMarker(e,nE)}};T=nq;var nj="vercel.ai.error.AI_MCPClientError",nC=Symbol.for(nj),nR=class extends el{constructor({name:e="MCPClientError",message:t,cause:o}){super({name:e,message:t,cause:o}),this[P]=!0}static isInstance(e){return el.hasMarker(e,nj)}};P=nC,Symbol.for("vercel.ai.error.AI_NoImageGeneratedError");var nL="AI_NoObjectGeneratedError",nD=`vercel.ai.error.${nL}`,n$=Symbol.for(nD),nZ=class extends el{constructor({message:e="No object generated.",cause:t,text:o,response:i,usage:a,finishReason:r}){super({name:nL,message:e,cause:t}),this[O]=!0,this.text=o,this.response=i,this.usage=a,this.finishReason=r}static isInstance(e){return el.hasMarker(e,nD)}};O=n$;var nF="AI_NoOutputGeneratedError",nQ=`vercel.ai.error.${nF}`;_=Symbol.for(nQ);var nG="AI_NoSuchToolError",nU=`vercel.ai.error.${nG}`,nV=Symbol.for(nU),nK=class extends el{constructor({toolName:e,availableTools:t,message:o=`Model tried to call unavailable tool '${e}'. ${void 0===t?"No tools are available.":`Available tools: ${t.join(", ")}.`}`}){super({name:nG,message:o}),this[z]=!0,this.toolName=e,this.availableTools=t}static isInstance(e){return el.hasMarker(e,nU)}};z=nV;var nW="AI_ToolCallRepairError",nJ=`vercel.ai.error.${nW}`,nY=Symbol.for(nJ),nH=class extends el{constructor({cause:e,originalError:t,message:o=`Error repairing tool call: ${ed(e)}`}){super({name:nW,message:o,cause:e}),this[E]=!0,this.originalError=t}static isInstance(e){return el.hasMarker(e,nJ)}};E=nY;var nX=class extends el{constructor(e){super({name:"AI_UnsupportedModelVersionError",message:`Unsupported model version ${e.version} for provider "${e.provider}" and model "${e.modelId}". AI SDK 5 only supports models that implement specification version "v2".`}),this.version=e.version,this.provider=e.provider,this.modelId=e.modelId}};Symbol.for("vercel.ai.error.AI_InvalidDataContentError");var n0="AI_InvalidMessageRoleError",n2=`vercel.ai.error.${n0}`,n1=Symbol.for(n2),n5=class extends el{constructor({role:e,message:t=`Invalid message role: '${e}'. Must be one of: "system", "user", "assistant", "tool".`}){super({name:n0,message:t}),this[B]=!0,this.role=e}static isInstance(e){return el.hasMarker(e,n2)}};B=n1,Symbol.for("vercel.ai.error.AI_MessageConversionError");var n3="AI_DownloadError",n4=`vercel.ai.error.${n3}`,n7=Symbol.for(n4),n8=class extends el{constructor({url:e,statusCode:t,statusText:o,cause:i,message:a=null==i?`Failed to download ${e}: ${t} ${o}`:`Failed to download ${e}: ${i}`}){super({name:n3,message:a,cause:i}),this[C]=!0,this.url=e,this.statusCode=t,this.statusText=o}static isInstance(e){return el.hasMarker(e,n4)}};C=n7;var n6="AI_RetryError",n9=`vercel.ai.error.${n6}`,le=Symbol.for(n9),lt=class extends el{constructor({message:e,reason:t,errors:o}){super({name:n6,message:e}),this[R]=!0,this.reason=t,this.errors=o,this.lastError=o[o.length-1]}static isInstance(e){return el.hasMarker(e,n9)}};R=le;var lo=[{mediaType:"image/gif",bytesPrefix:[71,73,70],base64Prefix:"R0lG"},{mediaType:"image/png",bytesPrefix:[137,80,78,71],base64Prefix:"iVBORw"},{mediaType:"image/jpeg",bytesPrefix:[255,216],base64Prefix:"/9j/"},{mediaType:"image/webp",bytesPrefix:[82,73,70,70],base64Prefix:"UklGRg"},{mediaType:"image/bmp",bytesPrefix:[66,77],base64Prefix:"Qk"},{mediaType:"image/tiff",bytesPrefix:[73,73,42,0],base64Prefix:"SUkqAA"},{mediaType:"image/tiff",bytesPrefix:[77,77,0,42],base64Prefix:"TU0AKg"},{mediaType:"image/avif",bytesPrefix:[0,0,0,32,102,116,121,112,97,118,105,102],base64Prefix:"AAAAIGZ0eXBhdmlm"},{mediaType:"image/heic",bytesPrefix:[0,0,0,32,102,116,121,112,104,101,105,99],base64Prefix:"AAAAIGZ0eXBoZWlj"}],li=e=>{let t="string"==typeof e?convertBase64ToUint8Array(e):e,o=(127&t[6])<<21|(127&t[7])<<14|(127&t[8])<<7|127&t[9];return t.slice(o+10)};async function la({url:e}){var t;let o=e.toString();try{let e=await fetch(o);if(!e.ok)throw new n8({url:o,statusCode:e.status,statusText:e.statusText});return{data:new Uint8Array(await e.arrayBuffer()),mediaType:null!=(t=e.headers.get("content-type"))?t:void 0}}catch(e){if(n8.isInstance(e))throw e;throw new n8({url:o,cause:e})}}var lr=aO([i0(),a1(Uint8Array),a1(ArrayBuffer),a2(e=>{var t,o;return null!=(o=null==(t=globalThis.Buffer)?void 0:t.isBuffer(e))&&o},{message:"Must be a Buffer"})]);function ls(e){if(e instanceof Uint8Array)return{data:e,mediaType:void 0};if(e instanceof ArrayBuffer)return{data:new Uint8Array(e),mediaType:void 0};if("string"==typeof e)try{e=new URL(e)}catch(e){}if(e instanceof URL&&"data:"===e.protocol){let{mediaType:t,base64Content:o}=function(e){try{let[t,o]=e.split(",");return{mediaType:t.split(";")[0].split(":")[1],base64Content:o}}catch(e){return{mediaType:void 0,base64Content:void 0}}}(e.toString());if(null==t||null==o)throw new AISDKError18({name:"InvalidDataContentError",message:`Invalid data URL format in content ${e.toString()}`});return{data:o,mediaType:t}}return{data:e,mediaType:void 0}}async function ln(e,t,o){let i=e.filter(e=>"user"===e.role).map(e=>e.content).filter(e=>Array.isArray(e)).flat().filter(e=>"image"===e.type||"file"===e.type).map(e=>{var t;let o=null!=(t=e.mediaType)?t:"image"===e.type?"image/*":void 0,i="image"===e.type?e.image:e.data;if("string"==typeof i)try{i=new URL(i)}catch(e){}return{mediaType:o,data:i}}).filter(e=>e.data instanceof URL&&null!=e.mediaType&&!isUrlSupported({url:e.data.toString(),mediaType:e.mediaType,supportedUrls:o})).map(e=>e.data);return Object.fromEntries((await Promise.all(i.map(async e=>({url:e,data:await t({url:e})})))).map(({url:e,data:t})=>[e.toString(),t]))}var ll=aX(()=>aO([ax(),i0(),ap(),av(),aB(i0(),ll),aw(ll)])),ld=aB(i0(),aB(i0(),ll)),lc=aA({type:aL("text"),text:i0(),providerOptions:ld.optional()}),lu=aA({type:aL("image"),image:aO([lr,a1(URL)]),mediaType:i0().optional(),providerOptions:ld.optional()}),lp=aA({type:aL("file"),data:aO([lr,a1(URL)]),filename:i0().optional(),mediaType:i0(),providerOptions:ld.optional()}),lm=aA({type:aL("reasoning"),text:i0(),providerOptions:ld.optional()}),lg=aA({type:aL("tool-call"),toolCallId:i0(),toolName:i0(),input:ak(),providerOptions:ld.optional(),providerExecuted:av().optional()}),lh=az("type",[aA({type:aL("text"),value:i0()}),aA({type:aL("json"),value:ll}),aA({type:aL("error-text"),value:i0()}),aA({type:aL("error-json"),value:ll}),aA({type:aL("content"),value:aw(aO([aA({type:aL("text"),text:i0()}),aA({type:aL("media"),data:i0(),mediaType:i0()})]))})]),lv=aA({type:aL("tool-result"),toolCallId:i0(),toolName:i0(),output:lh,providerOptions:ld.optional()}),lf=aA({role:aL("system"),content:i0(),providerOptions:ld.optional()}),lx=aA({role:aL("user"),content:aO([i0(),aw(aO([lc,lu,lp]))]),providerOptions:ld.optional()}),lb=aA({role:aL("assistant"),content:aO([i0(),aw(aO([lc,lp,lm,lg,lv]))]),providerOptions:ld.optional()}),lk=aO([lf,lx,lb,aA({role:aL("tool"),content:aw(lv),providerOptions:ld.optional()})]),ly={startSpan:()=>lM,startActiveSpan:(e,t,o,i)=>"function"==typeof t?t(lM):"function"==typeof o?o(lM):"function"==typeof i?i(lM):void 0},lM={spanContext:()=>lI,setAttribute(){return this},setAttributes(){return this},addEvent(){return this},addLink(){return this},addLinks(){return this},setStatus(){return this},updateName(){return this},end(){return this},isRecording:()=>!1,recordException(){return this}},lI={traceId:"",spanId:"",traceFlags:0};function lw(e,t){t instanceof Error?(e.recordException({name:t.name,message:t.message,stack:t.stack}),e.setStatus({code:SpanStatusCode.ERROR,message:t.message})):e.setStatus({code:SpanStatusCode.ERROR})}function lS({telemetry:e,attributes:t}){return(null==e?void 0:e.isEnabled)!==!0?{}:Object.entries(t).reduce((t,[o,i])=>{if(null==i)return t;if("object"==typeof i&&"input"in i&&"function"==typeof i.input){if((null==e?void 0:e.recordInputs)===!1)return t;let a=i.input();return null==a?t:{...t,[o]:a}}if("object"==typeof i&&"output"in i&&"function"==typeof i.output){if((null==e?void 0:e.recordOutputs)===!1)return t;let a=i.output();return null==a?t:{...t,[o]:a}}return{...t,[o]:i}},{})}function lA(e,t){return null==e&&null==t?void 0:(null!=e?e:0)+(null!=t?t:0)}var lT=({maxRetries:e=2,initialDelayInMs:t=2e3,backoffFactor:o=2,abortSignal:i}={})=>async a=>lP(a,{maxRetries:e,delayInMs:t,backoffFactor:o,abortSignal:i});async function lP(e,{maxRetries:t,delayInMs:o,backoffFactor:i,abortSignal:a},r=[]){try{return await e()}catch(d){if(isAbortError(d)||0===t)throw d;let s=getErrorMessage3(d),n=[...r,d],l=n.length;if(l>t)throw new lt({message:`Failed after ${l} attempts. Last error: ${s}`,reason:"maxRetriesExceeded",errors:n});if(d instanceof Error&&APICallError2.isInstance(d)&&!0===d.isRetryable&&l<=t)return await delay(function({error:e,exponentialBackoffDelay:t}){let o;let i=e.responseHeaders;if(!i)return t;let a=i["retry-after-ms"];if(a){let e=parseFloat(a);Number.isNaN(e)||(o=e)}let r=i["retry-after"];if(r&&void 0===o){let e=parseFloat(r);o=Number.isNaN(e)?Date.parse(r)-Date.now():1e3*e}return null!=o&&!Number.isNaN(o)&&0<=o&&(o<6e4||o<t)?o:t}({error:d,exponentialBackoffDelay:o}),{abortSignal:a}),lP(e,{maxRetries:t,delayInMs:i*o,backoffFactor:i,abortSignal:a},n);if(1===l)throw d;throw new lt({message:`Failed after ${l} attempts with non-retryable error: '${s}'`,reason:"errorNotRetryable",errors:n})}}var lN=class{constructor({data:e,mediaType:t}){let o=e instanceof Uint8Array;this.base64Data=o?void 0:e,this.uint8ArrayData=o?e:void 0,this.mediaType=t}get base64(){return null==this.base64Data&&(this.base64Data=function(e){let t="";for(let o=0;o<e.length;o++)t+=String.fromCodePoint(e[o]);return ny(t)}(this.uint8ArrayData)),this.base64Data}get uint8Array(){return null==this.uint8ArrayData&&(this.uint8ArrayData=function(e){let t=nM(e.replace(/-/g,"+").replace(/_/g,"/"));return Uint8Array.from(t,e=>e.codePointAt(0))}(this.base64Data)),this.uint8ArrayData}};async function lO({toolCall:e,tools:t}){let o=e.toolName,i=t[o];if(null==i)throw new nK({toolName:e.toolName,availableTools:Object.keys(t)});let a=asSchema2(i.inputSchema),r=""===e.input.trim()?await safeValidateTypes2({value:{},schema:a}):await safeParseJSON({text:e.input,schema:a});if(!1===r.success)throw new nB({toolName:o,toolInput:e.input,cause:r.error});return"dynamic"===i.type?{type:"tool-call",toolCallId:e.toolCallId,toolName:e.toolName,input:r.value,providerExecuted:e.providerExecuted,providerMetadata:e.providerMetadata,dynamic:!0}:{type:"tool-call",toolCallId:e.toolCallId,toolName:o,input:r.value,providerExecuted:e.providerExecuted,providerMetadata:e.providerMetadata}}function l_({output:e,tool:t,errorMode:o}){return"text"===o?{type:"error-text",value:getErrorMessage4(e)}:"json"===o?{type:"error-json",value:lz(e)}:(null==t?void 0:t.toModelOutput)?t.toModelOutput(e):"string"==typeof e?{type:"text",value:e}:{type:"json",value:lz(e)}}function lz(e){return void 0===e?null:e}nc({prefix:"aitxt",size:24});function lE(e,t){let o=new Headers(null!=e?e:{});for(let[e,i]of Object.entries(t))o.has(e)||o.set(e,i);return o}TransformStream;var lq=aO([aT({type:aL("text-start"),id:i0(),providerMetadata:ld.optional()}),aT({type:aL("text-delta"),id:i0(),delta:i0(),providerMetadata:ld.optional()}),aT({type:aL("text-end"),id:i0(),providerMetadata:ld.optional()}),aT({type:aL("error"),errorText:i0()}),aT({type:aL("tool-input-start"),toolCallId:i0(),toolName:i0(),providerExecuted:av().optional(),dynamic:av().optional()}),aT({type:aL("tool-input-delta"),toolCallId:i0(),inputTextDelta:i0()}),aT({type:aL("tool-input-available"),toolCallId:i0(),toolName:i0(),input:ak(),providerExecuted:av().optional(),providerMetadata:ld.optional(),dynamic:av().optional()}),aT({type:aL("tool-input-error"),toolCallId:i0(),toolName:i0(),input:ak(),providerExecuted:av().optional(),providerMetadata:ld.optional(),dynamic:av().optional(),errorText:i0()}),aT({type:aL("tool-output-available"),toolCallId:i0(),output:ak(),providerExecuted:av().optional(),dynamic:av().optional(),preliminary:av().optional()}),aT({type:aL("tool-output-error"),toolCallId:i0(),errorText:i0(),providerExecuted:av().optional(),dynamic:av().optional()}),aT({type:aL("reasoning"),text:i0(),providerMetadata:ld.optional()}),aT({type:aL("reasoning-start"),id:i0(),providerMetadata:ld.optional()}),aT({type:aL("reasoning-delta"),id:i0(),delta:i0(),providerMetadata:ld.optional()}),aT({type:aL("reasoning-end"),id:i0(),providerMetadata:ld.optional()}),aT({type:aL("reasoning-part-finish")}),aT({type:aL("source-url"),sourceId:i0(),url:i0(),title:i0().optional(),providerMetadata:ld.optional()}),aT({type:aL("source-document"),sourceId:i0(),mediaType:i0(),title:i0(),filename:i0().optional(),providerMetadata:ld.optional()}),aT({type:aL("file"),url:i0(),mediaType:i0(),providerMetadata:ld.optional()}),aT({type:i0().startsWith("data-"),id:i0().optional(),data:ak(),transient:av().optional()}),aT({type:aL("start-step")}),aT({type:aL("finish-step")}),aT({type:aL("start"),messageId:i0().optional(),messageMetadata:ak().optional()}),aT({type:aL("finish"),messageMetadata:ak().optional()}),aT({type:aL("abort")}),aT({type:aL("message-metadata"),messageMetadata:ak()})]);async function lB(e){if(void 0===e)return{value:void 0,state:"undefined-input"};let t=await nf({text:e});return t.success?{value:t.value,state:"successful-parse"}:(t=await nf({text:function(e){let t=["ROOT"],o=-1,i=null;function a(e,a,r){switch(e){case'"':o=a,t.pop(),t.push(r),t.push("INSIDE_STRING");break;case"f":case"t":case"n":o=a,i=a,t.pop(),t.push(r),t.push("INSIDE_LITERAL");break;case"-":t.pop(),t.push(r),t.push("INSIDE_NUMBER");break;case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":o=a,t.pop(),t.push(r),t.push("INSIDE_NUMBER");break;case"{":o=a,t.pop(),t.push(r),t.push("INSIDE_OBJECT_START");break;case"[":o=a,t.pop(),t.push(r),t.push("INSIDE_ARRAY_START")}}function r(e,i){switch(e){case",":t.pop(),t.push("INSIDE_OBJECT_AFTER_COMMA");break;case"}":o=i,t.pop()}}function s(e,i){switch(e){case",":t.pop(),t.push("INSIDE_ARRAY_AFTER_COMMA");break;case"]":o=i,t.pop()}}for(let n=0;n<e.length;n++){let l=e[n];switch(t[t.length-1]){case"ROOT":a(l,n,"FINISH");break;case"INSIDE_OBJECT_START":switch(l){case'"':t.pop(),t.push("INSIDE_OBJECT_KEY");break;case"}":o=n,t.pop()}break;case"INSIDE_OBJECT_AFTER_COMMA":'"'===l&&(t.pop(),t.push("INSIDE_OBJECT_KEY"));break;case"INSIDE_OBJECT_KEY":'"'===l&&(t.pop(),t.push("INSIDE_OBJECT_AFTER_KEY"));break;case"INSIDE_OBJECT_AFTER_KEY":":"===l&&(t.pop(),t.push("INSIDE_OBJECT_BEFORE_VALUE"));break;case"INSIDE_OBJECT_BEFORE_VALUE":a(l,n,"INSIDE_OBJECT_AFTER_VALUE");break;case"INSIDE_OBJECT_AFTER_VALUE":r(l,n);break;case"INSIDE_STRING":switch(l){case'"':t.pop(),o=n;break;case"\\":t.push("INSIDE_STRING_ESCAPE");break;default:o=n}break;case"INSIDE_ARRAY_START":"]"===l?(o=n,t.pop()):(o=n,a(l,n,"INSIDE_ARRAY_AFTER_VALUE"));break;case"INSIDE_ARRAY_AFTER_VALUE":switch(l){case",":t.pop(),t.push("INSIDE_ARRAY_AFTER_COMMA");break;case"]":o=n,t.pop();break;default:o=n}break;case"INSIDE_ARRAY_AFTER_COMMA":a(l,n,"INSIDE_ARRAY_AFTER_VALUE");break;case"INSIDE_STRING_ESCAPE":t.pop(),o=n;break;case"INSIDE_NUMBER":switch(l){case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":o=n;break;case"e":case"E":case"-":case".":break;case",":t.pop(),"INSIDE_ARRAY_AFTER_VALUE"===t[t.length-1]&&s(l,n),"INSIDE_OBJECT_AFTER_VALUE"===t[t.length-1]&&r(l,n);break;case"}":t.pop(),"INSIDE_OBJECT_AFTER_VALUE"===t[t.length-1]&&r(l,n);break;case"]":t.pop(),"INSIDE_ARRAY_AFTER_VALUE"===t[t.length-1]&&s(l,n);break;default:t.pop()}break;case"INSIDE_LITERAL":{let a=e.substring(i,n+1);"false".startsWith(a)||"true".startsWith(a)||"null".startsWith(a)?o=n:(t.pop(),"INSIDE_OBJECT_AFTER_VALUE"===t[t.length-1]?r(l,n):"INSIDE_ARRAY_AFTER_VALUE"===t[t.length-1]&&s(l,n))}}}let n=e.slice(0,o+1);for(let o=t.length-1;o>=0;o--)switch(t[o]){case"INSIDE_STRING":n+='"';break;case"INSIDE_OBJECT_KEY":case"INSIDE_OBJECT_AFTER_KEY":case"INSIDE_OBJECT_AFTER_COMMA":case"INSIDE_OBJECT_START":case"INSIDE_OBJECT_BEFORE_VALUE":case"INSIDE_OBJECT_AFTER_VALUE":n+="}";break;case"INSIDE_ARRAY_START":case"INSIDE_ARRAY_AFTER_COMMA":case"INSIDE_ARRAY_AFTER_VALUE":n+="]";break;case"INSIDE_LITERAL":{let t=e.substring(i,e.length);"true".startsWith(t)?n+="true".slice(t.length):"false".startsWith(t)?n+="false".slice(t.length):"null".startsWith(t)&&(n+="null".slice(t.length))}}return n}(e)})).success?{value:t.value,state:"repaired-parse"}:{value:void 0,state:"failed-parse"}}function lj(e){return e.type.startsWith("tool-")}function lC(e){return e.type.split("-").slice(1).join("-")}async function lR({stream:e,onError:t}){let o=e.getReader();try{for(;;){let{done:e}=await o.read();if(e)break}}catch(e){null==t||t(e)}finally{o.releaseLock()}}function lL(){let e,t;return{promise:new Promise((o,i)=>{e=o,t=i}),resolve:e,reject:t}}nc({prefix:"aitxt",size:24});async function lD(e,t,o){let i=await safeParseJSON3({text:e});if(!i.success)throw new nZ({message:"No object generated: could not parse the response.",cause:i.error,text:e,response:o.response,usage:o.usage,finishReason:o.finishReason});let a=await t.validateFinalResult(i.value,{text:e,response:o.response,usage:o.usage});if(!a.success)throw new nZ({message:"No object generated: response did not match schema.",cause:a.error,text:e,response:o.response,usage:o.usage,finishReason:o.finishReason});return a.value}nc({prefix:"aiobj",size:24});var l$=class{constructor(){this.queue=[],this.isProcessing=!1}async processQueue(){if(!this.isProcessing){for(this.isProcessing=!0;this.queue.length>0;)await this.queue[0](),this.queue.shift();this.isProcessing=!1}}async run(e){return new Promise((t,o)=>{this.queue.push(async()=>{try{await e(),t()}catch(e){o(e)}}),this.processQueue()})}};nc({prefix:"aiobj",size:24}),((e,t)=>{for(var o in t)nI(e,o,{get:t[o],enumerable:!0})})({},{object:()=>lF,text:()=>lZ});var lZ=()=>({type:"text",responseFormat:{type:"text"},parsePartial:async({text:e})=>({partial:e}),parseOutput:async({text:e})=>e}),lF=({schema:e})=>{let t=function(e){return null==e?nk({properties:{},additionalProperties:!1}):"object"==typeof e&&null!==e&&nb in e&&!0===e[nb]&&"jsonSchema"in e&&"validate"in e?e:function(e,t){return"_zod"in e?nk(e4(e,{target:"draft-7",io:"output",reused:"inline"}),{validate:async t=>{let o=await tp(e,t);return o.success?{success:!0,value:o.data}:{success:!1,error:o.error}}}):nk(nd(e,{$refStrategy:"none",target:"jsonSchema7"}),{validate:async t=>{let o=await e.safeParseAsync(t);return o.success?{success:!0,value:o.data}:{success:!1,error:o.error}}})}(e)}(e);return{type:"object",responseFormat:{type:"json",schema:t.jsonSchema},async parsePartial({text:e}){let t=await lB(e);switch(t.state){case"failed-parse":case"undefined-input":return;case"repaired-parse":case"successful-parse":return{partial:t.value};default:{let e=t.state;throw Error(`Unsupported parse state: ${e}`)}}},async parseOutput({text:e},o){let i=await nf({text:e});if(!i.success)throw new nZ({message:"No object generated: could not parse the response.",cause:i.error,text:e,response:o.response,usage:o.usage,finishReason:o.finishReason});let a=await nv({value:i.value,schema:t});if(!a.success)throw new nZ({message:"No object generated: response did not match schema.",cause:a.error,text:e,response:o.response,usage:o.usage,finishReason:o.finishReason});return a.value}}},lQ=({model:e,middleware:{transformParams:t,wrapGenerate:o,wrapStream:i,overrideProvider:a,overrideModelId:r,overrideSupportedUrls:s},modelId:n,providerId:l})=>{var d,c,u;async function p({params:o,type:i}){return t?await t({params:o,type:i,model:e}):o}return{specificationVersion:"v2",provider:null!=(d=null!=l?l:null==a?void 0:a({model:e}))?d:e.provider,modelId:null!=(c=null!=n?n:null==r?void 0:r({model:e}))?c:e.modelId,supportedUrls:null!=(u=null==s?void 0:s({model:e}))?u:e.supportedUrls,async doGenerate(t){let i=await p({params:t,type:"generate"}),a=async()=>e.doGenerate(i),r=async()=>e.doStream(i);return o?o({doGenerate:a,doStream:r,params:i,model:e}):a()},async doStream(t){let o=await p({params:t,type:"stream"}),a=async()=>e.doGenerate(o),r=async()=>e.doStream(o);return i?i({doGenerate:a,doStream:r,params:o,model:e}):r()}}},lG="AI_NoSuchProviderError",lU=`vercel.ai.error.${lG}`;L=Symbol.for(lU);var lV=aP({name:i0(),version:i0()}),lK=aP({_meta:aZ(aA({}).loose())}),lW=aA({method:i0(),params:aZ(lK)}),lJ=aP({experimental:aZ(aA({}).loose()),logging:aZ(aA({}).loose()),prompts:aZ(aP({listChanged:aZ(av())})),resources:aZ(aP({subscribe:aZ(av()),listChanged:aZ(av())})),tools:aZ(aP({listChanged:aZ(av())}))}),lY=(lK.extend({protocolVersion:i0(),capabilities:lJ,serverInfo:lV,instructions:aZ(i0())}),lK.extend({nextCursor:aZ(i0())})),lH=aA({name:i0(),description:aZ(i0()),inputSchema:aA({type:aL("object"),properties:aZ(aA({}).loose())}).loose()}).loose(),lX=(lY.extend({tools:aw(lH)}),aA({type:aL("text"),text:i0()}).loose()),l0=aA({type:aL("image"),data:iC(an,void 0),mimeType:i0()}).loose(),l2=aA({uri:i0(),mimeType:aZ(i0())}).loose(),l1=l2.extend({text:i0()}),l5=l2.extend({blob:iC(an,void 0)}),l3=aA({type:aL("resource"),resource:aO([l1,l5])}).loose(),l4=(lK.extend({content:aw(aO([lX,l0,l3])),isError:av().default(!1).optional()}).or(lK.extend({toolResult:ak()})),aA({jsonrpc:aL("2.0"),id:aO([i0(),ap().int()])}).merge(lW).strict()),l7=aA({jsonrpc:aL("2.0"),id:aO([i0(),ap().int()]),result:lK}).strict(),l8=aA({jsonrpc:aL("2.0"),id:aO([i0(),ap().int()]),error:aA({code:ap().int(),message:i0(),data:aZ(ak())})}).strict(),l6=aO([l4,aA({jsonrpc:aL("2.0")}).merge(aA({method:i0(),params:aZ(lK)})).strict(),l7,l8]);async function l9(e){if(null==e)return[];if(!globalThis.FileList||!(e instanceof globalThis.FileList))throw Error("FileList is not supported in the current environment");return Promise.all(Array.from(e).map(async e=>{let{name:t,type:o}=e;return{type:"file",mediaType:o,filename:t,url:await new Promise((t,o)=>{let i=new FileReader;i.onload=e=>{var o;t(null==(o=e.target)?void 0:o.result)},i.onerror=e=>o(e),i.readAsDataURL(e)})}}))}var de=class{constructor({api:e="/api/chat",credentials:t,headers:o,body:i,fetch:a,prepareSendMessagesRequest:r,prepareReconnectToStreamRequest:s}){this.api=e,this.credentials=t,this.headers=o,this.body=i,this.fetch=a,this.prepareSendMessagesRequest=r,this.prepareReconnectToStreamRequest=s}async sendMessages({abortSignal:e,...t}){var o,i,a,r,s;let n=await nx(this.body),l=await nx(this.headers),d=await nx(this.credentials),c=await (null==(o=this.prepareSendMessagesRequest)?void 0:o.call(this,{api:this.api,id:t.chatId,messages:t.messages,body:{...n,...t.body},headers:{...l,...t.headers},credentials:d,requestMetadata:t.metadata,trigger:t.trigger,messageId:t.messageId})),u=null!=(i=null==c?void 0:c.api)?i:this.api,p=(null==c?void 0:c.headers)!==void 0?c.headers:{...l,...t.headers},m=(null==c?void 0:c.body)!==void 0?c.body:{...n,...t.body,id:t.chatId,messages:t.messages,trigger:t.trigger,messageId:t.messageId},g=null!=(a=null==c?void 0:c.credentials)?a:d,h=null!=(r=this.fetch)?r:globalThis.fetch,v=await h(u,{method:"POST",headers:{"Content-Type":"application/json",...p},body:JSON.stringify(m),credentials:g,signal:e});if(!v.ok)throw Error(null!=(s=await v.text())?s:"Failed to fetch the chat response.");if(!v.body)throw Error("The response body is empty.");return this.processResponseStream(v.body)}async reconnectToStream(e){var t,o,i,a,r;let s=await nx(this.body),n=await nx(this.headers),l=await nx(this.credentials),d=await (null==(t=this.prepareReconnectToStreamRequest)?void 0:t.call(this,{api:this.api,id:e.chatId,body:{...s,...e.body},headers:{...n,...e.headers},credentials:l,requestMetadata:e.metadata})),c=null!=(o=null==d?void 0:d.api)?o:`${this.api}/${e.chatId}/stream`,u=(null==d?void 0:d.headers)!==void 0?d.headers:{...n,...e.headers},p=null!=(i=null==d?void 0:d.credentials)?i:l,m=null!=(a=this.fetch)?a:globalThis.fetch,g=await m(c,{method:"GET",headers:u,credentials:p});if(204===g.status)return null;if(!g.ok)throw Error(null!=(r=await g.text())?r:"Failed to fetch the chat response.");if(!g.body)throw Error("The response body is empty.");return this.processResponseStream(g.body)}},dt=class extends de{constructor(e={}){super(e)}processResponseStream(e){return(function({stream:e,schema:t}){return e.pipeThrough(new TextDecoderStream).pipeThrough(new eE).pipeThrough(new TransformStream({async transform({data:e},o){"[DONE]"!==e&&o.enqueue(await nf({text:e,schema:t}))}}))})({stream:e,schema:lq}).pipeThrough(new TransformStream({async transform(e,t){if(!e.success)throw e.error;t.enqueue(e.value)}}))}},di=class{constructor({generateId:e=nu,id:t=e(),transport:o=new dt,messageMetadataSchema:i,dataPartSchemas:a,state:r,onError:s,onToolCall:n,onFinish:l,onData:d,sendAutomaticallyWhen:c}){this.activeResponse=void 0,this.jobExecutor=new l$,this.sendMessage=async(e,t)=>{var o,i,a,r;let s;if(null==e){await this.makeRequest({trigger:"submit-message",messageId:null==(o=this.lastMessage)?void 0:o.id,...t});return}if(s="text"in e||"files"in e?{parts:[...Array.isArray(e.files)?e.files:await l9(e.files),..."text"in e&&null!=e.text?[{type:"text",text:e.text}]:[]]}:e,null!=e.messageId){let t=this.state.messages.findIndex(t=>t.id===e.messageId);if(-1===t)throw Error(`message with id ${e.messageId} not found`);if("user"!==this.state.messages[t].role)throw Error(`message with id ${e.messageId} is not a user message`);this.state.messages=this.state.messages.slice(0,t+1),this.state.replaceMessage(t,{...s,id:e.messageId,role:null!=(i=s.role)?i:"user",metadata:e.metadata})}else this.state.pushMessage({...s,id:null!=(a=s.id)?a:this.generateId(),role:null!=(r=s.role)?r:"user",metadata:e.metadata});await this.makeRequest({trigger:"submit-message",messageId:e.messageId,...t})},this.regenerate=async({messageId:e,...t}={})=>{let o=null==e?this.state.messages.length-1:this.state.messages.findIndex(t=>t.id===e);if(-1===o)throw Error(`message ${e} not found`);this.state.messages=this.state.messages.slice(0,"assistant"===this.messages[o].role?o:o+1),await this.makeRequest({trigger:"regenerate-message",messageId:e,...t})},this.resumeStream=async(e={})=>{await this.makeRequest({trigger:"resume-stream",...e})},this.clearError=()=>{"error"===this.status&&(this.state.error=void 0,this.setStatus({status:"ready"}))},this.addToolResult=async({tool:e,toolCallId:t,output:o})=>this.jobExecutor.run(async()=>{var e,i;let a=this.state.messages,r=a[a.length-1];this.state.replaceMessage(a.length-1,{...r,parts:r.parts.map(e=>lj(e)&&e.toolCallId===t?{...e,state:"output-available",output:o}:e)}),this.activeResponse&&(this.activeResponse.state.message.parts=this.activeResponse.state.message.parts.map(e=>lj(e)&&e.toolCallId===t?{...e,state:"output-available",output:o,errorText:void 0}:e)),"streaming"!==this.status&&"submitted"!==this.status&&(null==(e=this.sendAutomaticallyWhen)?void 0:e.call(this,{messages:this.state.messages}))&&this.makeRequest({trigger:"submit-message",messageId:null==(i=this.lastMessage)?void 0:i.id})}),this.stop=async()=>{var e;("streaming"===this.status||"submitted"===this.status)&&(null==(e=this.activeResponse)?void 0:e.abortController)&&this.activeResponse.abortController.abort()},this.id=t,this.transport=o,this.generateId=e,this.messageMetadataSchema=i,this.dataPartSchemas=a,this.state=r,this.onError=s,this.onToolCall=n,this.onFinish=l,this.onData=d,this.sendAutomaticallyWhen=c}get status(){return this.state.status}setStatus({status:e,error:t}){this.status!==e&&(this.state.status=e,this.state.error=t)}get error(){return this.state.error}get messages(){return this.state.messages}get lastMessage(){return this.state.messages[this.state.messages.length-1]}set messages(e){this.state.messages=e}async makeRequest({trigger:e,metadata:t,headers:o,body:i,messageId:a}){var r,s,n;this.setStatus({status:"submitted",error:void 0});let l=this.lastMessage;try{let s;let n={state:function({lastMessage:e,messageId:t}){return{message:(null==e?void 0:e.role)==="assistant"?e:{id:t,metadata:void 0,role:"assistant",parts:[]},activeTextParts:{},activeReasoningParts:{},partialToolCalls:{}}}({lastMessage:this.state.snapshot(l),messageId:this.generateId()}),abortController:new AbortController};if(this.activeResponse=n,"resume-stream"===e){let e=await this.transport.reconnectToStream({chatId:this.id,metadata:t,headers:o,body:i});if(null==e){this.setStatus({status:"ready"});return}s=e}else s=await this.transport.sendMessages({chatId:this.id,messages:this.state.messages,abortSignal:n.abortController.signal,metadata:t,headers:o,body:i,trigger:e,messageId:a});await lR({stream:function({stream:e,messageMetadataSchema:t,dataPartSchemas:o,runUpdateMessageJob:i,onError:a,onToolCall:r,onData:s}){return e.pipeThrough(new TransformStream({async transform(e,n){await i(async({state:i,write:l})=>{var d,c,u,p;function m(e){let t=i.message.parts.filter(lj).find(t=>t.toolCallId===e);if(null==t)throw Error("tool-output-error must be preceded by a tool-input-available");return t}function g(e){let t=i.message.parts.filter(e=>"dynamic-tool"===e.type).find(t=>t.toolCallId===e);if(null==t)throw Error("tool-output-error must be preceded by a tool-input-available");return t}function h(e){var t;let o=i.message.parts.find(t=>lj(t)&&t.toolCallId===e.toolCallId);null!=o?(o.state=e.state,o.input=e.input,o.output=e.output,o.errorText=e.errorText,o.rawInput=e.rawInput,o.preliminary=e.preliminary,o.providerExecuted=null!=(t=e.providerExecuted)?t:o.providerExecuted,null!=e.providerMetadata&&"input-available"===o.state&&(o.callProviderMetadata=e.providerMetadata)):i.message.parts.push({type:`tool-${e.toolName}`,toolCallId:e.toolCallId,state:e.state,input:e.input,output:e.output,rawInput:e.rawInput,errorText:e.errorText,providerExecuted:e.providerExecuted,preliminary:e.preliminary,...null!=e.providerMetadata?{callProviderMetadata:e.providerMetadata}:{}})}function v(e){var t;let o=i.message.parts.find(t=>"dynamic-tool"===t.type&&t.toolCallId===e.toolCallId);null!=o?(o.state=e.state,o.toolName=e.toolName,o.input=e.input,o.output=e.output,o.errorText=e.errorText,o.rawInput=null!=(t=e.rawInput)?t:o.rawInput,o.preliminary=e.preliminary,null!=e.providerMetadata&&"input-available"===o.state&&(o.callProviderMetadata=e.providerMetadata)):i.message.parts.push({type:"dynamic-tool",toolName:e.toolName,toolCallId:e.toolCallId,state:e.state,input:e.input,output:e.output,errorText:e.errorText,preliminary:e.preliminary,...null!=e.providerMetadata?{callProviderMetadata:e.providerMetadata}:{}})}async function f(e){if(null!=e){let o=null!=i.message.metadata?function e(t,o){if(void 0===t&&void 0===o)return;if(void 0===t)return o;if(void 0===o)return t;let i={...t};for(let a in o)if(Object.prototype.hasOwnProperty.call(o,a)){let r=o[a];if(void 0===r)continue;let s=a in t?t[a]:void 0,n=null!==r&&"object"==typeof r&&!Array.isArray(r)&&!(r instanceof Date)&&!(r instanceof RegExp),l=null!=s&&"object"==typeof s&&!Array.isArray(s)&&!(s instanceof Date)&&!(s instanceof RegExp);n&&l?i[a]=e(s,r):i[a]=r}return i}(i.message.metadata,e):e;null!=t&&await nh({value:o,schema:t}),i.message.metadata=o}}switch(e.type){case"text-start":{let t={type:"text",text:"",providerMetadata:e.providerMetadata,state:"streaming"};i.activeTextParts[e.id]=t,i.message.parts.push(t),l();break}case"text-delta":{let t=i.activeTextParts[e.id];t.text+=e.delta,t.providerMetadata=null!=(d=e.providerMetadata)?d:t.providerMetadata,l();break}case"text-end":{let t=i.activeTextParts[e.id];t.state="done",t.providerMetadata=null!=(c=e.providerMetadata)?c:t.providerMetadata,delete i.activeTextParts[e.id],l();break}case"reasoning-start":{let t={type:"reasoning",text:"",providerMetadata:e.providerMetadata,state:"streaming"};i.activeReasoningParts[e.id]=t,i.message.parts.push(t),l();break}case"reasoning-delta":{let t=i.activeReasoningParts[e.id];t.text+=e.delta,t.providerMetadata=null!=(u=e.providerMetadata)?u:t.providerMetadata,l();break}case"reasoning-end":{let t=i.activeReasoningParts[e.id];t.providerMetadata=null!=(p=e.providerMetadata)?p:t.providerMetadata,t.state="done",delete i.activeReasoningParts[e.id],l();break}case"file":i.message.parts.push({type:"file",mediaType:e.mediaType,url:e.url}),l();break;case"source-url":i.message.parts.push({type:"source-url",sourceId:e.sourceId,url:e.url,title:e.title,providerMetadata:e.providerMetadata}),l();break;case"source-document":i.message.parts.push({type:"source-document",sourceId:e.sourceId,mediaType:e.mediaType,title:e.title,filename:e.filename,providerMetadata:e.providerMetadata}),l();break;case"tool-input-start":{let t=i.message.parts.filter(lj);i.partialToolCalls[e.toolCallId]={text:"",toolName:e.toolName,index:t.length,dynamic:e.dynamic},e.dynamic?v({toolCallId:e.toolCallId,toolName:e.toolName,state:"input-streaming",input:void 0}):h({toolCallId:e.toolCallId,toolName:e.toolName,state:"input-streaming",input:void 0,providerExecuted:e.providerExecuted}),l();break}case"tool-input-delta":{let t=i.partialToolCalls[e.toolCallId];t.text+=e.inputTextDelta;let{value:o}=await lB(t.text);t.dynamic?v({toolCallId:e.toolCallId,toolName:t.toolName,state:"input-streaming",input:o}):h({toolCallId:e.toolCallId,toolName:t.toolName,state:"input-streaming",input:o}),l();break}case"tool-input-available":e.dynamic?v({toolCallId:e.toolCallId,toolName:e.toolName,state:"input-available",input:e.input,providerMetadata:e.providerMetadata}):h({toolCallId:e.toolCallId,toolName:e.toolName,state:"input-available",input:e.input,providerExecuted:e.providerExecuted,providerMetadata:e.providerMetadata}),l(),r&&!e.providerExecuted&&await r({toolCall:e});break;case"tool-input-error":e.dynamic?v({toolCallId:e.toolCallId,toolName:e.toolName,state:"output-error",input:e.input,errorText:e.errorText,providerMetadata:e.providerMetadata}):h({toolCallId:e.toolCallId,toolName:e.toolName,state:"output-error",input:void 0,rawInput:e.input,errorText:e.errorText,providerExecuted:e.providerExecuted,providerMetadata:e.providerMetadata}),l();break;case"tool-output-available":if(e.dynamic){let t=g(e.toolCallId);v({toolCallId:e.toolCallId,toolName:t.toolName,state:"output-available",input:t.input,output:e.output,preliminary:e.preliminary})}else{let t=m(e.toolCallId);h({toolCallId:e.toolCallId,toolName:lC(t),state:"output-available",input:t.input,output:e.output,providerExecuted:e.providerExecuted,preliminary:e.preliminary})}l();break;case"tool-output-error":if(e.dynamic){let t=g(e.toolCallId);v({toolCallId:e.toolCallId,toolName:t.toolName,state:"output-error",input:t.input,errorText:e.errorText})}else{let t=m(e.toolCallId);h({toolCallId:e.toolCallId,toolName:lC(t),state:"output-error",input:t.input,rawInput:t.rawInput,errorText:e.errorText})}l();break;case"start-step":i.message.parts.push({type:"step-start"});break;case"finish-step":i.activeTextParts={},i.activeReasoningParts={};break;case"start":null!=e.messageId&&(i.message.id=e.messageId),await f(e.messageMetadata),(null!=e.messageId||null!=e.messageMetadata)&&l();break;case"finish":case"message-metadata":await f(e.messageMetadata),null!=e.messageMetadata&&l();break;case"error":null==a||a(Error(e.errorText));break;default:if(e.type.startsWith("data-")){if((null==o?void 0:o[e.type])!=null&&await nh({value:e.data,schema:o[e.type]}),e.transient){null==s||s(e);break}let t=null!=e.id?i.message.parts.find(t=>e.type===t.type&&e.id===t.id):void 0;null!=t?t.data=e.data:i.message.parts.push(e),null==s||s(e),l()}}n.enqueue(e)})}}))}({stream:s,onToolCall:this.onToolCall,onData:this.onData,messageMetadataSchema:this.messageMetadataSchema,dataPartSchemas:this.dataPartSchemas,runUpdateMessageJob:e=>this.jobExecutor.run(()=>e({state:n.state,write:()=>{var e;this.setStatus({status:"streaming"}),n.state.message.id===(null==(e=this.lastMessage)?void 0:e.id)?this.state.replaceMessage(this.state.messages.length-1,n.state.message):this.state.pushMessage(n.state.message)}})),onError:e=>{throw e}}),onError:e=>{throw e}}),null==(r=this.onFinish)||r.call(this,{message:n.state.message}),this.setStatus({status:"ready"})}catch(e){if("AbortError"===e.name)return this.setStatus({status:"ready"}),null;this.onError&&e instanceof Error&&this.onError(e),this.setStatus({status:"error",error:e})}finally{this.activeResponse=void 0}(null==(s=this.sendAutomaticallyWhen)?void 0:s.call(this,{messages:this.state.messages}))&&await this.makeRequest({trigger:"submit-message",messageId:null==(n=this.lastMessage)?void 0:n.id,metadata:t,headers:o,body:i})}},da=aA({type:aL("text"),text:i0(),state:aC(["streaming","done"]).optional(),providerMetadata:ld.optional()}),dr=aA({type:aL("reasoning"),text:i0(),state:aC(["streaming","done"]).optional(),providerMetadata:ld.optional()}),ds=aA({type:aL("source-url"),sourceId:i0(),url:i0(),title:i0().optional(),providerMetadata:ld.optional()}),dn=aA({type:aL("source-document"),sourceId:i0(),mediaType:i0(),title:i0(),filename:i0().optional(),providerMetadata:ld.optional()}),dl=aA({type:aL("file"),mediaType:i0(),filename:i0().optional(),url:i0(),providerMetadata:ld.optional()}),dd=aA({type:aL("step-start")}),dc=aA({type:i0().startsWith("data-"),id:i0().optional(),data:ak()}),du=[aA({type:aL("dynamic-tool"),toolName:i0(),toolCallId:i0(),state:aL("input-streaming"),input:ak().optional(),output:aM().optional(),errorText:aM().optional()}),aA({type:aL("dynamic-tool"),toolName:i0(),toolCallId:i0(),state:aL("input-available"),input:ak(),output:aM().optional(),errorText:aM().optional(),callProviderMetadata:ld.optional()}),aA({type:aL("dynamic-tool"),toolName:i0(),toolCallId:i0(),state:aL("output-available"),input:ak(),output:ak(),errorText:aM().optional(),callProviderMetadata:ld.optional(),preliminary:av().optional()}),aA({type:aL("dynamic-tool"),toolName:i0(),toolCallId:i0(),state:aL("output-error"),input:ak(),output:aM().optional(),errorText:i0(),callProviderMetadata:ld.optional()})],dp=[aA({type:i0().startsWith("tool-"),toolCallId:i0(),state:aL("input-streaming"),input:ak().optional(),output:aM().optional(),errorText:aM().optional()}),aA({type:i0().startsWith("tool-"),toolCallId:i0(),state:aL("input-available"),input:ak(),output:aM().optional(),errorText:aM().optional(),callProviderMetadata:ld.optional()}),aA({type:i0().startsWith("tool-"),toolCallId:i0(),state:aL("output-available"),input:ak(),output:ak(),errorText:aM().optional(),callProviderMetadata:ld.optional(),preliminary:av().optional()}),aA({type:i0().startsWith("tool-"),toolCallId:i0(),state:aL("output-error"),input:ak(),output:aM().optional(),errorText:i0(),callProviderMetadata:ld.optional()})],dm=(aA({id:i0(),role:aC(["system","user","assistant"]),metadata:ak().optional(),parts:aw(aO([da,dr,ds,dn,dl,dd,dc,...du,...dp]))}),o(68301)),dg=(e,t,o)=>{if(!t.has(e))throw TypeError("Cannot "+o)},dh=(e,t,o)=>(dg(e,t,"read from private field"),o?o.call(e):t.get(e)),dv=(e,t,o)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,o)},df=(e,t,o,i)=>(dg(e,t,"write to private field"),i?i.call(e,o):t.set(e,o),o),dx=class{constructor(e=[]){dv(this,D,void 0),dv(this,$,"ready"),dv(this,Z,void 0),dv(this,F,new Set),dv(this,Q,new Set),dv(this,G,new Set),this.pushMessage=e=>{df(this,D,dh(this,D).concat(e)),dh(this,U).call(this)},this.popMessage=()=>{df(this,D,dh(this,D).slice(0,-1)),dh(this,U).call(this)},this.replaceMessage=(e,t)=>{df(this,D,[...dh(this,D).slice(0,e),this.snapshot(t),...dh(this,D).slice(e+1)]),dh(this,U).call(this)},this.snapshot=e=>structuredClone(e),this["~registerMessagesCallback"]=(e,t)=>{let o=t?function(e,t){return null!=t?dm(e,t):e}(e,t):e;return dh(this,F).add(o),()=>{dh(this,F).delete(o)}},this["~registerStatusCallback"]=e=>(dh(this,Q).add(e),()=>{dh(this,Q).delete(e)}),this["~registerErrorCallback"]=e=>(dh(this,G).add(e),()=>{dh(this,G).delete(e)}),dv(this,U,()=>{dh(this,F).forEach(e=>e())}),dv(this,V,()=>{dh(this,Q).forEach(e=>e())}),dv(this,K,()=>{dh(this,G).forEach(e=>e())}),df(this,D,e)}get status(){return dh(this,$)}set status(e){df(this,$,e),dh(this,V).call(this)}get error(){return dh(this,Z)}set error(e){df(this,Z,e),dh(this,K).call(this)}get messages(){return dh(this,D)}set messages(e){df(this,D,[...e]),dh(this,U).call(this)}};D=new WeakMap,$=new WeakMap,Z=new WeakMap,F=new WeakMap,Q=new WeakMap,G=new WeakMap,U=new WeakMap,V=new WeakMap,K=new WeakMap;var db=class extends di{constructor({messages:e,...t}){let o=new dx(e);super({...t,state:o}),dv(this,W,void 0),this["~registerMessagesCallback"]=(e,t)=>dh(this,W)["~registerMessagesCallback"](e,t),this["~registerStatusCallback"]=e=>dh(this,W)["~registerStatusCallback"](e),this["~registerErrorCallback"]=e=>dh(this,W)["~registerErrorCallback"](e),df(this,W,o)}};W=new WeakMap;var dk=o(15211),dy=o(76812),dM=o(77863);let dI=({size:e=16})=>(0,H.jsxs)("svg",{height:e,strokeLinejoin:"round",style:{color:"currentcolor"},viewBox:"0 0 16 16",width:e,children:[H.jsx("title",{children:"Loader"}),(0,H.jsxs)("g",{clipPath:"url(#clip0_2393_1490)",children:[H.jsx("path",{d:"M8 0V4",stroke:"currentColor",strokeWidth:"1.5"}),H.jsx("path",{d:"M8 16V12",opacity:"0.5",stroke:"currentColor",strokeWidth:"1.5"}),H.jsx("path",{d:"M3.29773 1.52783L5.64887 4.7639",opacity:"0.9",stroke:"currentColor",strokeWidth:"1.5"}),H.jsx("path",{d:"M12.7023 1.52783L10.3511 4.7639",opacity:"0.1",stroke:"currentColor",strokeWidth:"1.5"}),H.jsx("path",{d:"M12.7023 14.472L10.3511 11.236",opacity:"0.4",stroke:"currentColor",strokeWidth:"1.5"}),H.jsx("path",{d:"M3.29773 14.472L5.64887 11.236",opacity:"0.6",stroke:"currentColor",strokeWidth:"1.5"}),H.jsx("path",{d:"M15.6085 5.52783L11.8043 6.7639",opacity:"0.2",stroke:"currentColor",strokeWidth:"1.5"}),H.jsx("path",{d:"M0.391602 10.472L4.19583 9.23598",opacity:"0.7",stroke:"currentColor",strokeWidth:"1.5"}),H.jsx("path",{d:"M15.6085 10.4722L11.8043 9.2361",opacity:"0.3",stroke:"currentColor",strokeWidth:"1.5"}),H.jsx("path",{d:"M0.391602 5.52783L4.19583 6.7639",opacity:"0.8",stroke:"currentColor",strokeWidth:"1.5"})]}),H.jsx("defs",{children:H.jsx("clipPath",{id:"clip0_2393_1490",children:H.jsx("rect",{fill:"white",height:"16",width:"16"})})})]}),dw=({className:e,size:t=16,...o})=>H.jsx("div",{className:(0,dM.cn)("inline-flex animate-spin items-center justify-center",e),...o,children:H.jsx(dI,{size:t})});var dS=o(45353),dA="undefined"!=typeof document?X.useLayoutEffect:function(){},dT=function(e){var t=ee().useRef(e);return dA(function(){t.current=e}),t},dP=function(e,t){if("function"==typeof e){e(t);return}e.current=t},dN=function(e,t){var o=ee().useRef();return ee().useCallback(function(i){e.current=i,o.current&&dP(o.current,null),o.current=t,t&&dP(t,i)},[t])},dO="undefined"!=typeof document,d_={"min-height":"0","max-height":"none",height:"0",visibility:"hidden",overflow:"hidden",position:"absolute","z-index":"-1000",top:"0",right:"0",display:"block"},dz=function(e){Object.keys(d_).forEach(function(t){e.style.setProperty(t,d_[t],"important")})},dE=null,dq=function(e,t){var o=e.scrollHeight;return"border-box"===t.sizingStyle.boxSizing?o+t.borderSize:o-t.paddingSize},dB=function(){},dj=["borderBottomWidth","borderLeftWidth","borderRightWidth","borderTopWidth","boxSizing","fontFamily","fontSize","fontStyle","fontWeight","letterSpacing","lineHeight","paddingBottom","paddingLeft","paddingRight","paddingTop","tabSize","textIndent","textRendering","textTransform","width","wordBreak","wordSpacing","scrollbarGutter"],dC=!!dO&&!!document.documentElement.currentStyle,dR=function(e){var t=window.getComputedStyle(e);if(null===t)return null;var o=dj.reduce(function(e,o){return e[o]=t[o],e},{}),i=o.boxSizing;if(""===i)return null;dC&&"border-box"===i&&(o.width=parseFloat(o.width)+parseFloat(o.borderRightWidth)+parseFloat(o.borderLeftWidth)+parseFloat(o.paddingRight)+parseFloat(o.paddingLeft)+"px");var a=parseFloat(o.paddingBottom)+parseFloat(o.paddingTop),r=parseFloat(o.borderBottomWidth)+parseFloat(o.borderTopWidth);return{sizingStyle:o,paddingSize:a,borderSize:r}};function dL(e,t,o){var i=dT(o);X.useLayoutEffect(function(){var o=function(e){return i.current(e)};if(e)return e.addEventListener(t,o),function(){return e.removeEventListener(t,o)}},[])}var dD=function(e,t){dL(document.body,"reset",function(o){e.current.form===o.target&&t(o)})},d$=function(e){dL(window,"resize",e)},dZ=function(e){dL(document.fonts,"loadingdone",e)},dF=["cacheMeasurements","maxRows","minRows","onChange","onHeightChange"],dQ=X.forwardRef(function(e,t){var o=e.cacheMeasurements,i=e.maxRows,a=e.minRows,r=e.onChange,s=void 0===r?dB:r,n=e.onHeightChange,l=void 0===n?dB:n,d=function(e,t){if(null==e)return{};var o={};for(var i in e)if(({}).hasOwnProperty.call(e,i)){if(-1!==t.indexOf(i))continue;o[i]=e[i]}return o}(e,dF),c=void 0!==d.value,u=X.useRef(null),p=dN(u,t),m=X.useRef(0),g=X.useRef(),h=function(){var e,t,r,s,n,d,c,p,h,v,f,x=u.current,b=o&&g.current?g.current:dR(x);if(b){g.current=b;var k=(e=x.value||x.placeholder||"x",void 0===(t=a)&&(t=1),void 0===(r=i)&&(r=1/0),dE||((dE=document.createElement("textarea")).setAttribute("tabindex","-1"),dE.setAttribute("aria-hidden","true"),dz(dE)),null===dE.parentNode&&document.body.appendChild(dE),s=b.paddingSize,n=b.borderSize,c=(d=b.sizingStyle).boxSizing,Object.keys(d).forEach(function(e){dE.style[e]=d[e]}),dz(dE),dE.value=e,p=dq(dE,b),dE.value=e,p=dq(dE,b),dE.value="x",v=(h=dE.scrollHeight-s)*t,"border-box"===c&&(v=v+s+n),p=Math.max(v,p),f=h*r,"border-box"===c&&(f=f+s+n),[p=Math.min(f,p),h]),y=k[0],M=k[1];m.current!==y&&(m.current=y,x.style.setProperty("height",y+"px","important"),l(y,{rowHeight:M}))}};return dO?(X.useLayoutEffect(h),dD(u,function(){if(!c){var e=u.current.value;requestAnimationFrame(function(){var t=u.current;t&&e!==t.value&&h()})}}),d$(h),dZ(h),X.createElement("textarea",(0,dS.Z)({},d,{onChange:function(e){c||h(),s(e)},ref:p}))):X.createElement("textarea",(0,dS.Z)({},d,{onChange:s,ref:p}))}),dG=o(68232),dU=o(42270),dV=o(59161),dK=o(30463),dW=o(36283);let dJ=(0,o(76557).Z)("ArrowUp",[["path",{d:"m5 12 7-7 7 7",key:"hav0vg"}],["path",{d:"M12 19V5",key:"x0mq9r"}]]);var dY=o(47206),dH=o(34789),dX=o(360),d0=o(90772),d2=o(33261),d1=o(33071),d5=o(5354),d3=o(13854),d4=o(15286),d7=o(24295),d8=o(37859),d6=o(567),d9=o(43641),ce=o(77961);function ct(e,t,{checkForDefaultPrevented:o=!0}={}){return function(i){if(e?.(i),!1===o||!i.defaultPrevented)return t?.(i)}}"undefined"!=typeof window&&window.document&&window.document.createElement;var co=o(93095),ci=o(52067),ca=o(48051),cr=o(77192),cs=o(87389),cn=o(92764),cl=o(45226),cd=o(55049),cc=o(65819),cu=o(2566),cp="Popper",[cm,cg]=(0,co.b)(cp),[ch,cv]=cm(cp),cf=e=>{let{__scopePopper:t,children:o}=e,[i,a]=X.useState(null);return(0,H.jsx)(ch,{scope:t,anchor:i,onAnchorChange:a,children:o})};cf.displayName=cp;var cx="PopperAnchor",cb=X.forwardRef((e,t)=>{let{__scopePopper:o,virtualRef:i,...a}=e,r=cv(cx,o),s=X.useRef(null),n=(0,ca.e)(t,s),l=X.useRef(null);return X.useEffect(()=>{let e=l.current;l.current=i?.current||s.current,e!==l.current&&r.onAnchorChange(l.current)}),i?null:(0,H.jsx)(cl.WV.div,{...a,ref:n})});cb.displayName=cx;var ck="PopperContent",[cy,cM]=cm(ck),cI=X.forwardRef((e,t)=>{let{__scopePopper:o,side:i="bottom",sideOffset:a=0,align:r="center",alignOffset:s=0,arrowPadding:n=0,avoidCollisions:l=!0,collisionBoundary:d=[],collisionPadding:c=0,sticky:u="partial",hideWhenDetached:p=!1,updatePositionStrategy:m="optimized",onPlaced:g,...h}=e,v=cv(ck,o),[f,x]=X.useState(null),b=(0,ca.e)(t,e=>x(e)),[k,y]=X.useState(null),M=(0,cu.t)(k),I=M?.width??0,w=M?.height??0,S="number"==typeof c?c:{top:0,right:0,bottom:0,left:0,...c},A=Array.isArray(d)?d:[d],T=A.length>0,P={padding:S,boundary:A.filter(cT),altBoundary:T},{refs:N,floatingStyles:O,placement:_,isPositioned:z,middlewareData:E}=(0,cr.YF)({strategy:"fixed",placement:i+("center"!==r?"-"+r:""),whileElementsMounted:(...e)=>(0,cs.Me)(...e,{animationFrame:"always"===m}),elements:{reference:v.anchor},middleware:[(0,cr.cv)({mainAxis:a+w,alignmentAxis:s}),l&&(0,cr.uY)({mainAxis:!0,crossAxis:!1,limiter:"partial"===u?(0,cr.dr)():void 0,...P}),l&&(0,cr.RR)({...P}),(0,cr.dp)({...P,apply:({elements:e,rects:t,availableWidth:o,availableHeight:i})=>{let{width:a,height:r}=t.reference,s=e.floating.style;s.setProperty("--radix-popper-available-width",`${o}px`),s.setProperty("--radix-popper-available-height",`${i}px`),s.setProperty("--radix-popper-anchor-width",`${a}px`),s.setProperty("--radix-popper-anchor-height",`${r}px`)}}),k&&(0,cr.x7)({element:k,padding:n}),cP({arrowWidth:I,arrowHeight:w}),p&&(0,cr.Cp)({strategy:"referenceHidden",...P})]}),[q,B]=cN(_),j=(0,cd.W)(g);(0,cc.b)(()=>{z&&j?.()},[z,j]);let C=E.arrow?.x,R=E.arrow?.y,L=E.arrow?.centerOffset!==0,[D,$]=X.useState();return(0,cc.b)(()=>{f&&$(window.getComputedStyle(f).zIndex)},[f]),(0,H.jsx)("div",{ref:N.setFloating,"data-radix-popper-content-wrapper":"",style:{...O,transform:z?O.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:D,"--radix-popper-transform-origin":[E.transformOrigin?.x,E.transformOrigin?.y].join(" "),...E.hide?.referenceHidden&&{visibility:"hidden",pointerEvents:"none"}},dir:e.dir,children:(0,H.jsx)(cy,{scope:o,placedSide:q,onArrowChange:y,arrowX:C,arrowY:R,shouldHideArrow:L,children:(0,H.jsx)(cl.WV.div,{"data-side":q,"data-align":B,...h,ref:b,style:{...h.style,animation:z?void 0:"none"}})})})});cI.displayName=ck;var cw="PopperArrow",cS={top:"bottom",right:"left",bottom:"top",left:"right"},cA=X.forwardRef(function(e,t){let{__scopePopper:o,...i}=e,a=cM(cw,o),r=cS[a.placedSide];return(0,H.jsx)("span",{ref:a.onArrowChange,style:{position:"absolute",left:a.arrowX,top:a.arrowY,[r]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[a.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[a.placedSide],visibility:a.shouldHideArrow?"hidden":void 0},children:(0,H.jsx)(cn.f,{...i,ref:t,style:{...i.style,display:"block"}})})});function cT(e){return null!==e}cA.displayName=cw;var cP=e=>({name:"transformOrigin",options:e,fn(t){let{placement:o,rects:i,middlewareData:a}=t,r=a.arrow?.centerOffset!==0,s=r?0:e.arrowWidth,n=r?0:e.arrowHeight,[l,d]=cN(o),c={start:"0%",center:"50%",end:"100%"}[d],u=(a.arrow?.x??0)+s/2,p=(a.arrow?.y??0)+n/2,m="",g="";return"bottom"===l?(m=r?c:`${u}px`,g=`${-n}px`):"top"===l?(m=r?c:`${u}px`,g=`${i.floating.height+n}px`):"right"===l?(m=`${-n}px`,g=r?c:`${p}px`):"left"===l&&(m=`${i.floating.width+n}px`,g=r?c:`${p}px`),{data:{x:m,y:g}}}});function cN(e){let[t,o="center"]=e.split("-");return[t,o]}o(83078);var cO=e=>{let{present:t,children:o}=e,i=function(e){var t,o;let[i,a]=X.useState(),r=X.useRef(null),s=X.useRef(e),n=X.useRef("none"),[l,d]=(t=e?"mounted":"unmounted",o={mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}},X.useReducer((e,t)=>o[e][t]??e,t));return X.useEffect(()=>{let e=c_(r.current);n.current="mounted"===l?e:"none"},[l]),(0,cc.b)(()=>{let t=r.current,o=s.current;if(o!==e){let i=n.current,a=c_(t);e?d("MOUNT"):"none"===a||t?.display==="none"?d("UNMOUNT"):o&&i!==a?d("ANIMATION_OUT"):d("UNMOUNT"),s.current=e}},[e,d]),(0,cc.b)(()=>{if(i){let e;let t=i.ownerDocument.defaultView??window,o=o=>{let a=c_(r.current).includes(CSS.escape(o.animationName));if(o.target===i&&a&&(d("ANIMATION_END"),!s.current)){let o=i.style.animationFillMode;i.style.animationFillMode="forwards",e=t.setTimeout(()=>{"forwards"===i.style.animationFillMode&&(i.style.animationFillMode=o)})}},a=e=>{e.target===i&&(n.current=c_(r.current))};return i.addEventListener("animationstart",a),i.addEventListener("animationcancel",o),i.addEventListener("animationend",o),()=>{t.clearTimeout(e),i.removeEventListener("animationstart",a),i.removeEventListener("animationcancel",o),i.removeEventListener("animationend",o)}}d("ANIMATION_END")},[i,d]),{isPresent:["mounted","unmountSuspended"].includes(l),ref:X.useCallback(e=>{r.current=e?getComputedStyle(e):null,a(e)},[])}}(t),a="function"==typeof o?o({present:i.isPresent}):X.Children.only(o),r=(0,ca.e)(i.ref,function(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,o=t&&"isReactWarning"in t&&t.isReactWarning;return o?e.ref:(o=(t=Object.getOwnPropertyDescriptor(e,"ref")?.get)&&"isReactWarning"in t&&t.isReactWarning)?e.props.ref:e.props.ref||e.ref}(a));return"function"==typeof o||i.isPresent?X.cloneElement(a,{ref:r}):null};function c_(e){return e?.animationName||"none"}cO.displayName="Presence";var cz=o(77575),cE="dismissableLayer.update",cq=X.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),cB=X.forwardRef((e,t)=>{let{disableOutsidePointerEvents:o=!1,onEscapeKeyDown:i,onPointerDownOutside:a,onFocusOutside:r,onInteractOutside:s,onDismiss:n,...l}=e,d=X.useContext(cq),[c,u]=X.useState(null),p=c?.ownerDocument??globalThis?.document,[,m]=X.useState({}),g=(0,ca.e)(t,e=>u(e)),h=Array.from(d.layers),[v]=[...d.layersWithOutsidePointerEventsDisabled].slice(-1),f=h.indexOf(v),x=c?h.indexOf(c):-1,b=d.layersWithOutsidePointerEventsDisabled.size>0,k=x>=f,y=function(e,t=globalThis?.document){let o=(0,cd.W)(e),i=X.useRef(!1),a=X.useRef(()=>{});return X.useEffect(()=>{let e=e=>{if(e.target&&!i.current){let i=function(){cC("dismissableLayer.pointerDownOutside",o,r,{discrete:!0})},r={originalEvent:e};"touch"===e.pointerType?(t.removeEventListener("click",a.current),a.current=i,t.addEventListener("click",a.current,{once:!0})):i()}else t.removeEventListener("click",a.current);i.current=!1},r=window.setTimeout(()=>{t.addEventListener("pointerdown",e)},0);return()=>{window.clearTimeout(r),t.removeEventListener("pointerdown",e),t.removeEventListener("click",a.current)}},[t,o]),{onPointerDownCapture:()=>i.current=!0}}(e=>{let t=e.target,o=[...d.branches].some(e=>e.contains(t));!k||o||(a?.(e),s?.(e),e.defaultPrevented||n?.())},p),M=function(e,t=globalThis?.document){let o=(0,cd.W)(e),i=X.useRef(!1);return X.useEffect(()=>{let e=e=>{e.target&&!i.current&&cC("dismissableLayer.focusOutside",o,{originalEvent:e},{discrete:!1})};return t.addEventListener("focusin",e),()=>t.removeEventListener("focusin",e)},[t,o]),{onFocusCapture:()=>i.current=!0,onBlurCapture:()=>i.current=!1}}(e=>{let t=e.target;[...d.branches].some(e=>e.contains(t))||(r?.(e),s?.(e),e.defaultPrevented||n?.())},p);return(0,cz.e)(e=>{x!==d.layers.size-1||(i?.(e),!e.defaultPrevented&&n&&(e.preventDefault(),n()))},p),X.useEffect(()=>{if(c)return o&&(0===d.layersWithOutsidePointerEventsDisabled.size&&(J=p.body.style.pointerEvents,p.body.style.pointerEvents="none"),d.layersWithOutsidePointerEventsDisabled.add(c)),d.layers.add(c),cj(),()=>{o&&1===d.layersWithOutsidePointerEventsDisabled.size&&(p.body.style.pointerEvents=J)}},[c,p,o,d]),X.useEffect(()=>()=>{c&&(d.layers.delete(c),d.layersWithOutsidePointerEventsDisabled.delete(c),cj())},[c,d]),X.useEffect(()=>{let e=()=>m({});return document.addEventListener(cE,e),()=>document.removeEventListener(cE,e)},[]),(0,H.jsx)(cl.WV.div,{...l,ref:g,style:{pointerEvents:b?k?"auto":"none":void 0,...e.style},onFocusCapture:ct(e.onFocusCapture,M.onFocusCapture),onBlurCapture:ct(e.onBlurCapture,M.onBlurCapture),onPointerDownCapture:ct(e.onPointerDownCapture,y.onPointerDownCapture)})});function cj(){let e=new CustomEvent(cE);document.dispatchEvent(e)}function cC(e,t,o,{discrete:i}){let a=o.originalEvent.target,r=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:o});t&&a.addEventListener(e,t,{once:!0}),i?(0,cl.jH)(a,r):a.dispatchEvent(r)}cB.displayName="DismissableLayer",X.forwardRef((e,t)=>{let o=X.useContext(cq),i=X.useRef(null),a=(0,ca.e)(t,i);return X.useEffect(()=>{let e=i.current;if(e)return o.branches.add(e),()=>{o.branches.delete(e)}},[o.branches]),(0,H.jsx)(cl.WV.div,{...e,ref:a})}).displayName="DismissableLayerBranch";var cR="HoverCard",[cL,cD]=(0,co.b)(cR,[cg]),c$=cg(),[cZ,cF]=cL(cR),cQ=e=>{let{__scopeHoverCard:t,children:o,open:i,defaultOpen:a,onOpenChange:r,openDelay:s=700,closeDelay:n=300}=e,l=c$(t),d=X.useRef(0),c=X.useRef(0),u=X.useRef(!1),p=X.useRef(!1),[m,g]=(0,ci.T)({prop:i,defaultProp:a??!1,onChange:r,caller:cR}),h=X.useCallback(()=>{clearTimeout(c.current),d.current=window.setTimeout(()=>g(!0),s)},[s,g]),v=X.useCallback(()=>{clearTimeout(d.current),u.current||p.current||(c.current=window.setTimeout(()=>g(!1),n))},[n,g]),f=X.useCallback(()=>g(!1),[g]);return X.useEffect(()=>()=>{clearTimeout(d.current),clearTimeout(c.current)},[]),(0,H.jsx)(cZ,{scope:t,open:m,onOpenChange:g,onOpen:h,onClose:v,onDismiss:f,hasSelectionRef:u,isPointerDownOnContentRef:p,children:(0,H.jsx)(cf,{...l,children:o})})};cQ.displayName=cR;var cG="HoverCardTrigger",cU=X.forwardRef((e,t)=>{let{__scopeHoverCard:o,...i}=e,a=cF(cG,o),r=c$(o);return(0,H.jsx)(cb,{asChild:!0,...r,children:(0,H.jsx)(cl.WV.a,{"data-state":a.open?"open":"closed",...i,ref:t,onPointerEnter:ct(e.onPointerEnter,cH(a.onOpen)),onPointerLeave:ct(e.onPointerLeave,cH(a.onClose)),onFocus:ct(e.onFocus,a.onOpen),onBlur:ct(e.onBlur,a.onClose),onTouchStart:ct(e.onTouchStart,e=>e.preventDefault())})})});cU.displayName=cG;var[cV,cK]=cL("HoverCardPortal",{forceMount:void 0}),cW="HoverCardContent",cJ=X.forwardRef((e,t)=>{let o=cK(cW,e.__scopeHoverCard),{forceMount:i=o.forceMount,...a}=e,r=cF(cW,e.__scopeHoverCard);return(0,H.jsx)(cO,{present:i||r.open,children:(0,H.jsx)(cY,{"data-state":r.open?"open":"closed",...a,onPointerEnter:ct(e.onPointerEnter,cH(r.onOpen)),onPointerLeave:ct(e.onPointerLeave,cH(r.onClose)),ref:t})})});cJ.displayName=cW;var cY=X.forwardRef((e,t)=>{let{__scopeHoverCard:o,onEscapeKeyDown:i,onPointerDownOutside:a,onFocusOutside:r,onInteractOutside:s,...n}=e,l=cF(cW,o),d=c$(o),c=X.useRef(null),u=(0,ca.e)(t,c),[p,m]=X.useState(!1);return X.useEffect(()=>{if(p){let e=document.body;return Y=e.style.userSelect||e.style.webkitUserSelect,e.style.userSelect="none",e.style.webkitUserSelect="none",()=>{e.style.userSelect=Y,e.style.webkitUserSelect=Y}}},[p]),X.useEffect(()=>{if(c.current){let e=()=>{m(!1),l.isPointerDownOnContentRef.current=!1,setTimeout(()=>{document.getSelection()?.toString()!==""&&(l.hasSelectionRef.current=!0)})};return document.addEventListener("pointerup",e),()=>{document.removeEventListener("pointerup",e),l.hasSelectionRef.current=!1,l.isPointerDownOnContentRef.current=!1}}},[l.isPointerDownOnContentRef,l.hasSelectionRef]),X.useEffect(()=>{c.current&&(function(e){let t=[],o=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>e.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP});for(;o.nextNode();)t.push(o.currentNode);return t})(c.current).forEach(e=>e.setAttribute("tabindex","-1"))}),(0,H.jsx)(cB,{asChild:!0,disableOutsidePointerEvents:!1,onInteractOutside:s,onEscapeKeyDown:i,onPointerDownOutside:a,onFocusOutside:ct(r,e=>{e.preventDefault()}),onDismiss:l.onDismiss,children:(0,H.jsx)(cI,{...d,...n,onPointerDown:ct(n.onPointerDown,e=>{e.currentTarget.contains(e.target)&&m(!0),l.hasSelectionRef.current=!1,l.isPointerDownOnContentRef.current=!0}),ref:u,style:{...n.style,userSelect:p?"text":void 0,WebkitUserSelect:p?"text":void 0,"--radix-hover-card-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-hover-card-content-available-width":"var(--radix-popper-available-width)","--radix-hover-card-content-available-height":"var(--radix-popper-available-height)","--radix-hover-card-trigger-width":"var(--radix-popper-anchor-width)","--radix-hover-card-trigger-height":"var(--radix-popper-anchor-height)"}})})});function cH(e){return t=>"touch"===t.pointerType?void 0:e()}X.forwardRef((e,t)=>{let{__scopeHoverCard:o,...i}=e,a=c$(o);return(0,H.jsx)(cA,{...a,...i,ref:t})}).displayName="HoverCardArrow";let cX=X.forwardRef(({className:e,align:t="center",sideOffset:o=4,...i},a)=>H.jsx(cJ,{ref:a,align:t,sideOffset:o,className:(0,dM.cn)("z-50 w-64 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",e),...i}));cX.displayName=cJ.displayName;var c0="Progress",[c2,c1]=(0,co.b)(c0),[c5,c3]=c2(c0),c4=X.forwardRef((e,t)=>{var o,i;let{__scopeProgress:a,value:r=null,max:s,getValueLabel:n=c6,...l}=e;(s||0===s)&&!ut(s)&&console.error((o=`${s}`,`Invalid prop \`max\` of value \`${o}\` supplied to \`Progress\`. Only numbers greater than 0 are valid max values. Defaulting to \`100\`.`));let d=ut(s)?s:100;null===r||uo(r,d)||console.error((i=`${r}`,`Invalid prop \`value\` of value \`${i}\` supplied to \`Progress\`. The \`value\` prop must be:
|
|
40
|
+
]`;continue}a+=i[e],"\\"===i[e]?r=!0:s&&"]"===i[e]?s=!1:s||"["!==i[e]||(s=!0)}try{new RegExp(a)}catch{return console.warn(`Could not convert regex pattern at ${t.currentPath.join("/")} to a flag-independent form! Falling back to the flag-ignorant source`),e.source}return a}function s4(e,t){if("openAi"===t.target&&console.warn("Warning: OpenAI may not support records in schemas! Try an array of key-value pairs instead."),"openApi3"===t.target&&e.keyType?._def.typeName===tm.pA.ZodEnum)return{type:"object",required:e.keyType._def.values,properties:e.keyType._def.values.reduce((o,i)=>({...o,[i]:no(e.valueType._def,{...t,currentPath:[...t.currentPath,"properties",i]})??sG(t)}),{}),additionalProperties:t.rejectedAdditionalProperties};let o={type:"object",additionalProperties:no(e.valueType._def,{...t,currentPath:[...t.currentPath,"additionalProperties"]})??t.allowedAdditionalProperties};if("openApi3"===t.target)return o;if(e.keyType?._def.typeName===tm.pA.ZodString&&e.keyType._def.checks?.length){let{type:i,...a}=sX(e.keyType._def,t);return{...o,propertyNames:a}}if(e.keyType?._def.typeName===tm.pA.ZodEnum)return{...o,propertyNames:{enum:e.keyType._def.values}};if(e.keyType?._def.typeName===tm.pA.ZodBranded&&e.keyType._def.type._def.typeName===tm.pA.ZodString&&e.keyType._def.type._def.checks?.length){let{type:i,...a}=sK(e.keyType._def,t);return{...o,propertyNames:a}}return o}let s7={ZodString:"string",ZodNumber:"number",ZodBigInt:"integer",ZodBoolean:"boolean",ZodNull:"null"},s8=(e,t)=>{let o=(e.options instanceof Map?Array.from(e.options.values()):e.options).map((e,o)=>no(e._def,{...t,currentPath:[...t.currentPath,"anyOf",`${o}`]})).filter(e=>!!e&&(!t.strictUnions||"object"==typeof e&&Object.keys(e).length>0));return o.length?{anyOf:o}:void 0},s6=(e,t)=>{if(t.currentPath.toString()===t.propertyPath?.toString())return no(e.innerType._def,t);let o=no(e.innerType._def,{...t,currentPath:[...t.currentPath,"anyOf","1"]});return o?{anyOf:[{not:sG(t)},o]}:sG(t)},s9=(e,t)=>{if("input"===t.pipeStrategy)return no(e.in._def,t);if("output"===t.pipeStrategy)return no(e.out._def,t);let o=no(e.in._def,{...t,currentPath:[...t.currentPath,"allOf","0"]}),i=no(e.out._def,{...t,currentPath:[...t.currentPath,"allOf",o?"1":"0"]});return{allOf:[o,i].filter(e=>void 0!==e)}},ne=(e,t)=>no(e.innerType._def,t),nt=(e,t,o)=>{switch(t){case tm.pA.ZodString:return sX(e,o);case tm.pA.ZodNumber:return function(e,t){let o={type:"number"};if(!e.checks)return o;for(let i of e.checks)switch(i.kind){case"int":o.type="integer",sU(o,"type",i.message,t);break;case"min":"jsonSchema7"===t.target?i.inclusive?sV(o,"minimum",i.value,i.message,t):sV(o,"exclusiveMinimum",i.value,i.message,t):(i.inclusive||(o.exclusiveMinimum=!0),sV(o,"minimum",i.value,i.message,t));break;case"max":"jsonSchema7"===t.target?i.inclusive?sV(o,"maximum",i.value,i.message,t):sV(o,"exclusiveMaximum",i.value,i.message,t):(i.inclusive||(o.exclusiveMaximum=!0),sV(o,"maximum",i.value,i.message,t));break;case"multipleOf":sV(o,"multipleOf",i.value,i.message,t)}return o}(e,o);case tm.pA.ZodObject:return function(e,t){let o="openAi"===t.target,i={type:"object",properties:{}},a=[],r=e.shape();for(let e in r){let s=r[e];if(void 0===s||void 0===s._def)continue;let n=function(e){try{return e.isOptional()}catch{return!0}}(s);n&&o&&("ZodOptional"===s._def.typeName&&(s=s._def.innerType),s.isNullable()||(s=s.nullable()),n=!1);let l=no(s._def,{...t,currentPath:[...t.currentPath,"properties",e],propertyPath:[...t.currentPath,"properties",e]});void 0!==l&&(i.properties[e]=l,n||a.push(e))}a.length&&(i.required=a);let s=function(e,t){if("ZodNever"!==e.catchall._def.typeName)return no(e.catchall._def,{...t,currentPath:[...t.currentPath,"additionalProperties"]});switch(e.unknownKeys){case"passthrough":return t.allowedAdditionalProperties;case"strict":return t.rejectedAdditionalProperties;case"strip":return"strict"===t.removeAdditionalStrategy?t.allowedAdditionalProperties:t.rejectedAdditionalProperties}}(e,t);return void 0!==s&&(i.additionalProperties=s),i}(e,o);case tm.pA.ZodBigInt:return function(e,t){let o={type:"integer",format:"int64"};if(!e.checks)return o;for(let i of e.checks)switch(i.kind){case"min":"jsonSchema7"===t.target?i.inclusive?sV(o,"minimum",i.value,i.message,t):sV(o,"exclusiveMinimum",i.value,i.message,t):(i.inclusive||(o.exclusiveMinimum=!0),sV(o,"minimum",i.value,i.message,t));break;case"max":"jsonSchema7"===t.target?i.inclusive?sV(o,"maximum",i.value,i.message,t):sV(o,"exclusiveMaximum",i.value,i.message,t):(i.inclusive||(o.exclusiveMaximum=!0),sV(o,"maximum",i.value,i.message,t));break;case"multipleOf":sV(o,"multipleOf",i.value,i.message,t)}return o}(e,o);case tm.pA.ZodBoolean:return{type:"boolean"};case tm.pA.ZodDate:return function e(t,o,i){let a=i??o.dateStrategy;if(Array.isArray(a))return{anyOf:a.map((i,a)=>e(t,o,i))};switch(a){case"string":case"format:date-time":return{type:"string",format:"date-time"};case"format:date":return{type:"string",format:"date"};case"integer":return sJ(t,o)}}(e,o);case tm.pA.ZodUndefined:return{not:sG(o)};case tm.pA.ZodNull:return"openApi3"===o.target?{enum:["null"],nullable:!0}:{type:"null"};case tm.pA.ZodArray:return function(e,t){let o={type:"array"};return e.type?._def&&e.type?._def?.typeName!==tm.pA.ZodAny&&(o.items=no(e.type._def,{...t,currentPath:[...t.currentPath,"items"]})),e.minLength&&sV(o,"minItems",e.minLength.value,e.minLength.message,t),e.maxLength&&sV(o,"maxItems",e.maxLength.value,e.maxLength.message,t),e.exactLength&&(sV(o,"minItems",e.exactLength.value,e.exactLength.message,t),sV(o,"maxItems",e.exactLength.value,e.exactLength.message,t)),o}(e,o);case tm.pA.ZodUnion:case tm.pA.ZodDiscriminatedUnion:return function(e,t){if("openApi3"===t.target)return s8(e,t);let o=e.options instanceof Map?Array.from(e.options.values()):e.options;if(o.every(e=>e._def.typeName in s7&&(!e._def.checks||!e._def.checks.length))){let e=o.reduce((e,t)=>{let o=s7[t._def.typeName];return o&&!e.includes(o)?[...e,o]:e},[]);return{type:e.length>1?e:e[0]}}if(o.every(e=>"ZodLiteral"===e._def.typeName&&!e.description)){let e=o.reduce((e,t)=>{let o=typeof t._def.value;switch(o){case"string":case"number":case"boolean":return[...e,o];case"bigint":return[...e,"integer"];case"object":if(null===t._def.value)return[...e,"null"];default:return e}},[]);if(e.length===o.length){let t=e.filter((e,t,o)=>o.indexOf(e)===t);return{type:t.length>1?t:t[0],enum:o.reduce((e,t)=>e.includes(t._def.value)?e:[...e,t._def.value],[])}}}else if(o.every(e=>"ZodEnum"===e._def.typeName))return{type:"string",enum:o.reduce((e,t)=>[...e,...t._def.values.filter(t=>!e.includes(t))],[])};return s8(e,t)}(e,o);case tm.pA.ZodIntersection:return function(e,t){let o=[no(e.left._def,{...t,currentPath:[...t.currentPath,"allOf","0"]}),no(e.right._def,{...t,currentPath:[...t.currentPath,"allOf","1"]})].filter(e=>!!e),i="jsonSchema2019-09"===t.target?{unevaluatedProperties:!1}:void 0,a=[];return o.forEach(e=>{if(sY(e))a.push(...e.allOf),void 0===e.unevaluatedProperties&&(i=void 0);else{let t=e;if("additionalProperties"in e&&!1===e.additionalProperties){let{additionalProperties:o,...i}=e;t=i}else i=void 0;a.push(t)}}),a.length?{allOf:a,...i}:void 0}(e,o);case tm.pA.ZodTuple:return function(e,t){return e.rest?{type:"array",minItems:e.items.length,items:e.items.map((e,o)=>no(e._def,{...t,currentPath:[...t.currentPath,"items",`${o}`]})).reduce((e,t)=>void 0===t?e:[...e,t],[]),additionalItems:no(e.rest._def,{...t,currentPath:[...t.currentPath,"additionalItems"]})}:{type:"array",minItems:e.items.length,maxItems:e.items.length,items:e.items.map((e,o)=>no(e._def,{...t,currentPath:[...t.currentPath,"items",`${o}`]})).reduce((e,t)=>void 0===t?e:[...e,t],[])}}(e,o);case tm.pA.ZodRecord:return s4(e,o);case tm.pA.ZodLiteral:return function(e,t){let o=typeof e.value;return"bigint"!==o&&"number"!==o&&"boolean"!==o&&"string"!==o?{type:Array.isArray(e.value)?"array":"object"}:"openApi3"===t.target?{type:"bigint"===o?"integer":o,enum:[e.value]}:{type:"bigint"===o?"integer":o,const:e.value}}(e,o);case tm.pA.ZodEnum:return{type:"string",enum:Array.from(e.values)};case tm.pA.ZodNativeEnum:return function(e){let t=e.values,o=Object.keys(e.values).filter(e=>"number"!=typeof t[t[e]]).map(e=>t[e]),i=Array.from(new Set(o.map(e=>typeof e)));return{type:1===i.length?"string"===i[0]?"string":"number":["string","number"],enum:o}}(e);case tm.pA.ZodNullable:return function(e,t){if(["ZodString","ZodNumber","ZodBigInt","ZodBoolean","ZodNull"].includes(e.innerType._def.typeName)&&(!e.innerType._def.checks||!e.innerType._def.checks.length))return"openApi3"===t.target?{type:s7[e.innerType._def.typeName],nullable:!0}:{type:[s7[e.innerType._def.typeName],"null"]};if("openApi3"===t.target){let o=no(e.innerType._def,{...t,currentPath:[...t.currentPath]});return o&&"$ref"in o?{allOf:[o],nullable:!0}:o&&{...o,nullable:!0}}let o=no(e.innerType._def,{...t,currentPath:[...t.currentPath,"anyOf","0"]});return o&&{anyOf:[o,{type:"null"}]}}(e,o);case tm.pA.ZodOptional:return s6(e,o);case tm.pA.ZodMap:return function(e,t){return"record"===t.mapStrategy?s4(e,t):{type:"array",maxItems:125,items:{type:"array",items:[no(e.keyType._def,{...t,currentPath:[...t.currentPath,"items","items","0"]})||sG(t),no(e.valueType._def,{...t,currentPath:[...t.currentPath,"items","items","1"]})||sG(t)],minItems:2,maxItems:2}}}(e,o);case tm.pA.ZodSet:return function(e,t){let o={type:"array",uniqueItems:!0,items:no(e.valueType._def,{...t,currentPath:[...t.currentPath,"items"]})};return e.minSize&&sV(o,"minItems",e.minSize.value,e.minSize.message,t),e.maxSize&&sV(o,"maxItems",e.maxSize.value,e.maxSize.message,t),o}(e,o);case tm.pA.ZodLazy:return()=>e.getter()._def;case tm.pA.ZodPromise:return no(e.type._def,o);case tm.pA.ZodNaN:case tm.pA.ZodNever:return function(e){return"openAi"===e.target?void 0:{not:sG({...e,currentPath:[...e.currentPath,"not"]})}}(o);case tm.pA.ZodEffects:return function(e,t){return"input"===t.effectStrategy?no(e.schema._def,t):sG(t)}(e,o);case tm.pA.ZodAny:case tm.pA.ZodUnknown:return sG(o);case tm.pA.ZodDefault:return function(e,t){return{...no(e.innerType._def,t),default:e.defaultValue()}}(e,o);case tm.pA.ZodBranded:return sK(e,o);case tm.pA.ZodReadonly:return ne(e,o);case tm.pA.ZodCatch:return sW(e,o);case tm.pA.ZodPipeline:return s9(e,o);case tm.pA.ZodFunction:case tm.pA.ZodVoid:case tm.pA.ZodSymbol:default:return}};function no(e,t,o=!1){let i=t.seen.get(e);if(t.override){let a=t.override?.(e,t,i,o);if(a!==sD)return a}if(i&&!o){let e=ni(i,t);if(void 0!==e)return e}let a={def:e,path:t.currentPath,jsonSchema:void 0};t.seen.set(e,a);let r=nt(e,e.typeName,t),s="function"==typeof r?no(r(),t):r;if(s&&na(e,t,s),t.postProcess){let o=t.postProcess(s,e,t);return a.jsonSchema=s,o}return a.jsonSchema=s,s}let ni=(e,t)=>{switch(t.$refStrategy){case"root":return{$ref:e.path.join("/")};case"relative":return{$ref:sQ(t.currentPath,e.path)};case"none":case"seen":if(e.path.length<t.currentPath.length&&e.path.every((e,o)=>t.currentPath[o]===e))return console.warn(`Recursive reference detected at ${t.currentPath.join("/")}! Defaulting to any`),sG(t);return"seen"===t.$refStrategy?sG(t):void 0}},na=(e,t,o)=>(e.description&&(o.description=e.description,t.markdownDescription&&(o.markdownDescription=e.description)),o),nr=(e,t)=>{let o=sF(t),i="object"==typeof t&&t.definitions?Object.entries(t.definitions).reduce((e,[t,i])=>({...e,[t]:no(i._def,{...o,currentPath:[...o.basePath,o.definitionPath,t]},!0)??sG(o)}),{}):void 0,a="string"==typeof t?t:t?.nameStrategy==="title"?void 0:t?.name,r=no(e._def,void 0===a?o:{...o,currentPath:[...o.basePath,o.definitionPath,a]},!1)??sG(o),s="object"==typeof t&&void 0!==t.name&&"title"===t.nameStrategy?t.name:void 0;void 0!==s&&(r.title=s),o.flags.hasReferencedOpenAiAnyType&&(i||(i={}),i[o.openAiAnyTypeName]||(i[o.openAiAnyTypeName]={type:["string","number","integer","boolean","array","null"],items:{$ref:"relative"===o.$refStrategy?"1":[...o.basePath,o.definitionPath,o.openAiAnyTypeName].join("/")}}));let n=void 0===a?i?{...r,[o.definitionPath]:i}:r:{$ref:[..."relative"===o.$refStrategy?[]:o.basePath,o.definitionPath,a].join("/"),[o.definitionPath]:{...i,[a]:r}};return"jsonSchema7"===o.target?n.$schema="http://json-schema.org/draft-07/schema#":("jsonSchema2019-09"===o.target||"openAi"===o.target)&&(n.$schema="https://json-schema.org/draft/2019-09/schema#"),"openAi"===o.target&&("anyOf"in n||"oneOf"in n||"allOf"in n||"type"in n&&Array.isArray(n.type))&&console.warn("Warning: OpenAI may not support schemas with unions as roots! Try wrapping it in an object property."),n};var ns=({prefix:e,size:t=16,alphabet:o="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",separator:i="-"}={})=>{let a=()=>{let e=o.length,i=Array(t);for(let a=0;a<t;a++)i[a]=o[Math.random()*e|0];return i.join("")};if(null==e)return a;if(o.includes(i))throw new em({argument:"separator",message:`The separator "${i}" must not be part of the alphabet "${o}".`});return()=>`${e}${i}${a()}`},nn=ns(),nl=/"__proto__"\s*:/,nd=/"constructor"\s*:/,nc=Symbol.for("vercel.ai.validator");async function nu({value:e,schema:t}){let o=await np({value:e,schema:t});if(!o.success)throw eS.wrap({value:e,cause:o.error});return o.value}async function np({value:e,schema:t}){let o="object"==typeof t&&null!==t&&nc in t&&!0===t[nc]&&"validate"in t?t:{[nc]:!0,validate:async e=>{let o=await t["~standard"].validate(e);return null==o.issues?{success:!0,value:o.value}:{success:!1,error:new eS({value:e,cause:o.issues})}}};try{if(null==o.validate)return{success:!0,value:e,rawValue:e};let t=await o.validate(e);if(t.success)return{success:!0,value:t.value,rawValue:e};return{success:!1,error:eS.wrap({value:e,cause:t.error}),rawValue:e}}catch(t){return{success:!1,error:eS.wrap({value:e,cause:t}),rawValue:e}}}async function nm({text:e,schema:t}){try{let o=function(e){let{stackTraceLimit:t}=Error;Error.stackTraceLimit=0;try{return function(e){let t=JSON.parse(e);return null===t||"object"!=typeof t||!1===nl.test(e)&&!1===nd.test(e)?t:function(e){let t=[e];for(;t.length;){let e=t;for(let o of(t=[],e)){if(Object.prototype.hasOwnProperty.call(o,"__proto__")||Object.prototype.hasOwnProperty.call(o,"constructor")&&Object.prototype.hasOwnProperty.call(o.constructor,"prototype"))throw SyntaxError("Object contains forbidden prototype property");for(let e in o){let i=o[e];i&&"object"==typeof i&&t.push(i)}}}return e}(t)}(e)}finally{Error.stackTraceLimit=t}}(e);if(null==t)return{success:!0,value:o,rawValue:o};return await np({value:o,schema:t})}catch(t){return{success:!1,error:ef.isInstance(t)?t:new ef({text:e,cause:t}),rawValue:void 0}}}async function ng(e){return"function"==typeof e&&(e=e()),Promise.resolve(e)}var nh=Symbol.for("vercel.ai.schema");function nv(e,{validate:t}={}){return{[nh]:!0,_type:void 0,[nc]:!0,jsonSchema:e,validate:t}}var{btoa:nf,atob:nx}=globalThis,nb=Object.defineProperty,nk="AI_NoOutputSpecifiedError",ny=`vercel.ai.error.${nk}`,nM=Symbol.for(ny),nI=class extends el{constructor({message:e="No output specified."}={}){super({name:nk,message:e}),this[S]=!0}static isInstance(e){return el.hasMarker(e,ny)}};S=nM;var nw="AI_InvalidArgumentError",nS=`vercel.ai.error.${nw}`,nA=Symbol.for(nS),nT=class extends el{constructor({parameter:e,value:t,message:o}){super({name:nw,message:`Invalid argument for parameter ${e}: ${o}`}),this[A]=!0,this.parameter=e,this.value=t}static isInstance(e){return el.hasMarker(e,nS)}};A=nA,Symbol.for("vercel.ai.error.AI_InvalidStreamPartError");var nP="AI_InvalidToolInputError",nN=`vercel.ai.error.${nP}`,nO=Symbol.for(nN),n_=class extends el{constructor({toolInput:e,toolName:t,cause:o,message:i=`Invalid input for tool ${t}: ${ed(o)}`}){super({name:nP,message:i,cause:o}),this[T]=!0,this.toolInput=e,this.toolName=t}static isInstance(e){return el.hasMarker(e,nN)}};T=nO;var nz="vercel.ai.error.AI_MCPClientError",nE=Symbol.for(nz),nq=class extends el{constructor({name:e="MCPClientError",message:t,cause:o}){super({name:e,message:t,cause:o}),this[P]=!0}static isInstance(e){return el.hasMarker(e,nz)}};P=nE,Symbol.for("vercel.ai.error.AI_NoImageGeneratedError");var nB="AI_NoObjectGeneratedError",nj=`vercel.ai.error.${nB}`,nC=Symbol.for(nj),nR=class extends el{constructor({message:e="No object generated.",cause:t,text:o,response:i,usage:a,finishReason:r}){super({name:nB,message:e,cause:t}),this[O]=!0,this.text=o,this.response=i,this.usage=a,this.finishReason=r}static isInstance(e){return el.hasMarker(e,nj)}};O=nC;var nL="AI_NoOutputGeneratedError",nD=`vercel.ai.error.${nL}`;_=Symbol.for(nD);var n$="AI_NoSuchToolError",nZ=`vercel.ai.error.${n$}`,nF=Symbol.for(nZ),nQ=class extends el{constructor({toolName:e,availableTools:t,message:o=`Model tried to call unavailable tool '${e}'. ${void 0===t?"No tools are available.":`Available tools: ${t.join(", ")}.`}`}){super({name:n$,message:o}),this[z]=!0,this.toolName=e,this.availableTools=t}static isInstance(e){return el.hasMarker(e,nZ)}};z=nF;var nG="AI_ToolCallRepairError",nU=`vercel.ai.error.${nG}`,nV=Symbol.for(nU),nK=class extends el{constructor({cause:e,originalError:t,message:o=`Error repairing tool call: ${ed(e)}`}){super({name:nG,message:o,cause:e}),this[E]=!0,this.originalError=t}static isInstance(e){return el.hasMarker(e,nU)}};E=nV;var nW=class extends el{constructor(e){super({name:"AI_UnsupportedModelVersionError",message:`Unsupported model version ${e.version} for provider "${e.provider}" and model "${e.modelId}". AI SDK 5 only supports models that implement specification version "v2".`}),this.version=e.version,this.provider=e.provider,this.modelId=e.modelId}};Symbol.for("vercel.ai.error.AI_InvalidDataContentError");var nJ="AI_InvalidMessageRoleError",nY=`vercel.ai.error.${nJ}`,nH=Symbol.for(nY),nX=class extends el{constructor({role:e,message:t=`Invalid message role: '${e}'. Must be one of: "system", "user", "assistant", "tool".`}){super({name:nJ,message:t}),this[B]=!0,this.role=e}static isInstance(e){return el.hasMarker(e,nY)}};B=nH,Symbol.for("vercel.ai.error.AI_MessageConversionError");var n0="AI_DownloadError",n2=`vercel.ai.error.${n0}`,n1=Symbol.for(n2),n5=class extends el{constructor({url:e,statusCode:t,statusText:o,cause:i,message:a=null==i?`Failed to download ${e}: ${t} ${o}`:`Failed to download ${e}: ${i}`}){super({name:n0,message:a,cause:i}),this[C]=!0,this.url=e,this.statusCode=t,this.statusText=o}static isInstance(e){return el.hasMarker(e,n2)}};C=n1;var n3="AI_RetryError",n4=`vercel.ai.error.${n3}`,n7=Symbol.for(n4),n8=class extends el{constructor({message:e,reason:t,errors:o}){super({name:n3,message:e}),this[R]=!0,this.reason=t,this.errors=o,this.lastError=o[o.length-1]}static isInstance(e){return el.hasMarker(e,n4)}};R=n7;var n6=[{mediaType:"image/gif",bytesPrefix:[71,73,70],base64Prefix:"R0lG"},{mediaType:"image/png",bytesPrefix:[137,80,78,71],base64Prefix:"iVBORw"},{mediaType:"image/jpeg",bytesPrefix:[255,216],base64Prefix:"/9j/"},{mediaType:"image/webp",bytesPrefix:[82,73,70,70],base64Prefix:"UklGRg"},{mediaType:"image/bmp",bytesPrefix:[66,77],base64Prefix:"Qk"},{mediaType:"image/tiff",bytesPrefix:[73,73,42,0],base64Prefix:"SUkqAA"},{mediaType:"image/tiff",bytesPrefix:[77,77,0,42],base64Prefix:"TU0AKg"},{mediaType:"image/avif",bytesPrefix:[0,0,0,32,102,116,121,112,97,118,105,102],base64Prefix:"AAAAIGZ0eXBhdmlm"},{mediaType:"image/heic",bytesPrefix:[0,0,0,32,102,116,121,112,104,101,105,99],base64Prefix:"AAAAIGZ0eXBoZWlj"}],n9=e=>{let t="string"==typeof e?convertBase64ToUint8Array(e):e,o=(127&t[6])<<21|(127&t[7])<<14|(127&t[8])<<7|127&t[9];return t.slice(o+10)};async function le({url:e}){var t;let o=e.toString();try{let e=await fetch(o);if(!e.ok)throw new n5({url:o,statusCode:e.status,statusText:e.statusText});return{data:new Uint8Array(await e.arrayBuffer()),mediaType:null!=(t=e.headers.get("content-type"))?t:void 0}}catch(e){if(n5.isInstance(e))throw e;throw new n5({url:o,cause:e})}}var lt=aq([i3(),a7(Uint8Array),a7(ArrayBuffer),a4(e=>{var t,o;return null!=(o=null==(t=globalThis.Buffer)?void 0:t.isBuffer(e))&&o},{message:"Must be a Buffer"})]);function lo(e){if(e instanceof Uint8Array)return{data:e,mediaType:void 0};if(e instanceof ArrayBuffer)return{data:new Uint8Array(e),mediaType:void 0};if("string"==typeof e)try{e=new URL(e)}catch(e){}if(e instanceof URL&&"data:"===e.protocol){let{mediaType:t,base64Content:o}=function(e){try{let[t,o]=e.split(",");return{mediaType:t.split(";")[0].split(":")[1],base64Content:o}}catch(e){return{mediaType:void 0,base64Content:void 0}}}(e.toString());if(null==t||null==o)throw new AISDKError18({name:"InvalidDataContentError",message:`Invalid data URL format in content ${e.toString()}`});return{data:o,mediaType:t}}return{data:e,mediaType:void 0}}async function li(e,t,o){let i=e.filter(e=>"user"===e.role).map(e=>e.content).filter(e=>Array.isArray(e)).flat().filter(e=>"image"===e.type||"file"===e.type).map(e=>{var t;let o=null!=(t=e.mediaType)?t:"image"===e.type?"image/*":void 0,i="image"===e.type?e.image:e.data;if("string"==typeof i)try{i=new URL(i)}catch(e){}return{mediaType:o,data:i}}).filter(e=>e.data instanceof URL&&null!=e.mediaType&&!isUrlSupported({url:e.data.toString(),mediaType:e.mediaType,supportedUrls:o})).map(e=>e.data);return Object.fromEntries((await Promise.all(i.map(async e=>({url:e,data:await t({url:e})})))).map(({url:e,data:t})=>[e.toString(),t]))}var la=a5(()=>aq([aM(),i3(),av(),ak(),aL(i3(),la),aP(la)])),lr=aL(i3(),aL(i3(),la)),ls=aO({type:aF("text"),text:i3(),providerOptions:lr.optional()}),ln=aO({type:aF("image"),image:aq([lt,a7(URL)]),mediaType:i3().optional(),providerOptions:lr.optional()}),ll=aO({type:aF("file"),data:aq([lt,a7(URL)]),filename:i3().optional(),mediaType:i3(),providerOptions:lr.optional()}),ld=aO({type:aF("reasoning"),text:i3(),providerOptions:lr.optional()}),lc=aO({type:aF("tool-call"),toolCallId:i3(),toolName:i3(),input:aw(),providerOptions:lr.optional(),providerExecuted:ak().optional()}),lu=aj("type",[aO({type:aF("text"),value:i3()}),aO({type:aF("json"),value:la}),aO({type:aF("error-text"),value:i3()}),aO({type:aF("error-json"),value:la}),aO({type:aF("content"),value:aP(aq([aO({type:aF("text"),text:i3()}),aO({type:aF("media"),data:i3(),mediaType:i3()})]))})]),lp=aO({type:aF("tool-result"),toolCallId:i3(),toolName:i3(),output:lu,providerOptions:lr.optional()}),lm=aO({role:aF("system"),content:i3(),providerOptions:lr.optional()}),lg=aO({role:aF("user"),content:aq([i3(),aP(aq([ls,ln,ll]))]),providerOptions:lr.optional()}),lh=aO({role:aF("assistant"),content:aq([i3(),aP(aq([ls,ll,ld,lc,lp]))]),providerOptions:lr.optional()}),lv=aq([lm,lg,lh,aO({role:aF("tool"),content:aP(lp),providerOptions:lr.optional()})]),lf={startSpan:()=>lx,startActiveSpan:(e,t,o,i)=>"function"==typeof t?t(lx):"function"==typeof o?o(lx):"function"==typeof i?i(lx):void 0},lx={spanContext:()=>lb,setAttribute(){return this},setAttributes(){return this},addEvent(){return this},addLink(){return this},addLinks(){return this},setStatus(){return this},updateName(){return this},end(){return this},isRecording:()=>!1,recordException(){return this}},lb={traceId:"",spanId:"",traceFlags:0};function lk(e,t){t instanceof Error?(e.recordException({name:t.name,message:t.message,stack:t.stack}),e.setStatus({code:SpanStatusCode.ERROR,message:t.message})):e.setStatus({code:SpanStatusCode.ERROR})}function ly({telemetry:e,attributes:t}){return(null==e?void 0:e.isEnabled)!==!0?{}:Object.entries(t).reduce((t,[o,i])=>{if(null==i)return t;if("object"==typeof i&&"input"in i&&"function"==typeof i.input){if((null==e?void 0:e.recordInputs)===!1)return t;let a=i.input();return null==a?t:{...t,[o]:a}}if("object"==typeof i&&"output"in i&&"function"==typeof i.output){if((null==e?void 0:e.recordOutputs)===!1)return t;let a=i.output();return null==a?t:{...t,[o]:a}}return{...t,[o]:i}},{})}function lM(e,t){return null==e&&null==t?void 0:(null!=e?e:0)+(null!=t?t:0)}var lI=({maxRetries:e=2,initialDelayInMs:t=2e3,backoffFactor:o=2,abortSignal:i}={})=>async a=>lw(a,{maxRetries:e,delayInMs:t,backoffFactor:o,abortSignal:i});async function lw(e,{maxRetries:t,delayInMs:o,backoffFactor:i,abortSignal:a},r=[]){try{return await e()}catch(d){if(isAbortError(d)||0===t)throw d;let s=getErrorMessage3(d),n=[...r,d],l=n.length;if(l>t)throw new n8({message:`Failed after ${l} attempts. Last error: ${s}`,reason:"maxRetriesExceeded",errors:n});if(d instanceof Error&&APICallError2.isInstance(d)&&!0===d.isRetryable&&l<=t)return await delay(function({error:e,exponentialBackoffDelay:t}){let o;let i=e.responseHeaders;if(!i)return t;let a=i["retry-after-ms"];if(a){let e=parseFloat(a);Number.isNaN(e)||(o=e)}let r=i["retry-after"];if(r&&void 0===o){let e=parseFloat(r);o=Number.isNaN(e)?Date.parse(r)-Date.now():1e3*e}return null!=o&&!Number.isNaN(o)&&0<=o&&(o<6e4||o<t)?o:t}({error:d,exponentialBackoffDelay:o}),{abortSignal:a}),lw(e,{maxRetries:t,delayInMs:i*o,backoffFactor:i,abortSignal:a},n);if(1===l)throw d;throw new n8({message:`Failed after ${l} attempts with non-retryable error: '${s}'`,reason:"errorNotRetryable",errors:n})}}var lS=class{constructor({data:e,mediaType:t}){let o=e instanceof Uint8Array;this.base64Data=o?void 0:e,this.uint8ArrayData=o?e:void 0,this.mediaType=t}get base64(){return null==this.base64Data&&(this.base64Data=function(e){let t="";for(let o=0;o<e.length;o++)t+=String.fromCodePoint(e[o]);return nf(t)}(this.uint8ArrayData)),this.base64Data}get uint8Array(){return null==this.uint8ArrayData&&(this.uint8ArrayData=function(e){let t=nx(e.replace(/-/g,"+").replace(/_/g,"/"));return Uint8Array.from(t,e=>e.codePointAt(0))}(this.base64Data)),this.uint8ArrayData}};async function lA({toolCall:e,tools:t}){let o=e.toolName,i=t[o];if(null==i)throw new nQ({toolName:e.toolName,availableTools:Object.keys(t)});let a=asSchema2(i.inputSchema),r=""===e.input.trim()?await safeValidateTypes2({value:{},schema:a}):await safeParseJSON({text:e.input,schema:a});if(!1===r.success)throw new n_({toolName:o,toolInput:e.input,cause:r.error});return"dynamic"===i.type?{type:"tool-call",toolCallId:e.toolCallId,toolName:e.toolName,input:r.value,providerExecuted:e.providerExecuted,providerMetadata:e.providerMetadata,dynamic:!0}:{type:"tool-call",toolCallId:e.toolCallId,toolName:o,input:r.value,providerExecuted:e.providerExecuted,providerMetadata:e.providerMetadata}}function lT({output:e,tool:t,errorMode:o}){return"text"===o?{type:"error-text",value:getErrorMessage4(e)}:"json"===o?{type:"error-json",value:lP(e)}:(null==t?void 0:t.toModelOutput)?t.toModelOutput(e):"string"==typeof e?{type:"text",value:e}:{type:"json",value:lP(e)}}function lP(e){return void 0===e?null:e}ns({prefix:"aitxt",size:24});function lN(e,t){let o=new Headers(null!=e?e:{});for(let[e,i]of Object.entries(t))o.has(e)||o.set(e,i);return o}TransformStream;var lO=aq([a_({type:aF("text-start"),id:i3(),providerMetadata:lr.optional()}),a_({type:aF("text-delta"),id:i3(),delta:i3(),providerMetadata:lr.optional()}),a_({type:aF("text-end"),id:i3(),providerMetadata:lr.optional()}),a_({type:aF("error"),errorText:i3()}),a_({type:aF("tool-input-start"),toolCallId:i3(),toolName:i3(),providerExecuted:ak().optional(),dynamic:ak().optional()}),a_({type:aF("tool-input-delta"),toolCallId:i3(),inputTextDelta:i3()}),a_({type:aF("tool-input-available"),toolCallId:i3(),toolName:i3(),input:aw(),providerExecuted:ak().optional(),providerMetadata:lr.optional(),dynamic:ak().optional()}),a_({type:aF("tool-input-error"),toolCallId:i3(),toolName:i3(),input:aw(),providerExecuted:ak().optional(),providerMetadata:lr.optional(),dynamic:ak().optional(),errorText:i3()}),a_({type:aF("tool-output-available"),toolCallId:i3(),output:aw(),providerExecuted:ak().optional(),dynamic:ak().optional(),preliminary:ak().optional()}),a_({type:aF("tool-output-error"),toolCallId:i3(),errorText:i3(),providerExecuted:ak().optional(),dynamic:ak().optional()}),a_({type:aF("reasoning"),text:i3(),providerMetadata:lr.optional()}),a_({type:aF("reasoning-start"),id:i3(),providerMetadata:lr.optional()}),a_({type:aF("reasoning-delta"),id:i3(),delta:i3(),providerMetadata:lr.optional()}),a_({type:aF("reasoning-end"),id:i3(),providerMetadata:lr.optional()}),a_({type:aF("reasoning-part-finish")}),a_({type:aF("source-url"),sourceId:i3(),url:i3(),title:i3().optional(),providerMetadata:lr.optional()}),a_({type:aF("source-document"),sourceId:i3(),mediaType:i3(),title:i3(),filename:i3().optional(),providerMetadata:lr.optional()}),a_({type:aF("file"),url:i3(),mediaType:i3(),providerMetadata:lr.optional()}),a_({type:i3().startsWith("data-"),id:i3().optional(),data:aw(),transient:ak().optional()}),a_({type:aF("start-step")}),a_({type:aF("finish-step")}),a_({type:aF("start"),messageId:i3().optional(),messageMetadata:aw().optional()}),a_({type:aF("finish"),messageMetadata:aw().optional()}),a_({type:aF("abort")}),a_({type:aF("message-metadata"),messageMetadata:aw()})]);async function l_(e){if(void 0===e)return{value:void 0,state:"undefined-input"};let t=await nm({text:e});return t.success?{value:t.value,state:"successful-parse"}:(t=await nm({text:function(e){let t=["ROOT"],o=-1,i=null;function a(e,a,r){switch(e){case'"':o=a,t.pop(),t.push(r),t.push("INSIDE_STRING");break;case"f":case"t":case"n":o=a,i=a,t.pop(),t.push(r),t.push("INSIDE_LITERAL");break;case"-":t.pop(),t.push(r),t.push("INSIDE_NUMBER");break;case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":o=a,t.pop(),t.push(r),t.push("INSIDE_NUMBER");break;case"{":o=a,t.pop(),t.push(r),t.push("INSIDE_OBJECT_START");break;case"[":o=a,t.pop(),t.push(r),t.push("INSIDE_ARRAY_START")}}function r(e,i){switch(e){case",":t.pop(),t.push("INSIDE_OBJECT_AFTER_COMMA");break;case"}":o=i,t.pop()}}function s(e,i){switch(e){case",":t.pop(),t.push("INSIDE_ARRAY_AFTER_COMMA");break;case"]":o=i,t.pop()}}for(let n=0;n<e.length;n++){let l=e[n];switch(t[t.length-1]){case"ROOT":a(l,n,"FINISH");break;case"INSIDE_OBJECT_START":switch(l){case'"':t.pop(),t.push("INSIDE_OBJECT_KEY");break;case"}":o=n,t.pop()}break;case"INSIDE_OBJECT_AFTER_COMMA":'"'===l&&(t.pop(),t.push("INSIDE_OBJECT_KEY"));break;case"INSIDE_OBJECT_KEY":'"'===l&&(t.pop(),t.push("INSIDE_OBJECT_AFTER_KEY"));break;case"INSIDE_OBJECT_AFTER_KEY":":"===l&&(t.pop(),t.push("INSIDE_OBJECT_BEFORE_VALUE"));break;case"INSIDE_OBJECT_BEFORE_VALUE":a(l,n,"INSIDE_OBJECT_AFTER_VALUE");break;case"INSIDE_OBJECT_AFTER_VALUE":r(l,n);break;case"INSIDE_STRING":switch(l){case'"':t.pop(),o=n;break;case"\\":t.push("INSIDE_STRING_ESCAPE");break;default:o=n}break;case"INSIDE_ARRAY_START":"]"===l?(o=n,t.pop()):(o=n,a(l,n,"INSIDE_ARRAY_AFTER_VALUE"));break;case"INSIDE_ARRAY_AFTER_VALUE":switch(l){case",":t.pop(),t.push("INSIDE_ARRAY_AFTER_COMMA");break;case"]":o=n,t.pop();break;default:o=n}break;case"INSIDE_ARRAY_AFTER_COMMA":a(l,n,"INSIDE_ARRAY_AFTER_VALUE");break;case"INSIDE_STRING_ESCAPE":t.pop(),o=n;break;case"INSIDE_NUMBER":switch(l){case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":o=n;break;case"e":case"E":case"-":case".":break;case",":t.pop(),"INSIDE_ARRAY_AFTER_VALUE"===t[t.length-1]&&s(l,n),"INSIDE_OBJECT_AFTER_VALUE"===t[t.length-1]&&r(l,n);break;case"}":t.pop(),"INSIDE_OBJECT_AFTER_VALUE"===t[t.length-1]&&r(l,n);break;case"]":t.pop(),"INSIDE_ARRAY_AFTER_VALUE"===t[t.length-1]&&s(l,n);break;default:t.pop()}break;case"INSIDE_LITERAL":{let a=e.substring(i,n+1);"false".startsWith(a)||"true".startsWith(a)||"null".startsWith(a)?o=n:(t.pop(),"INSIDE_OBJECT_AFTER_VALUE"===t[t.length-1]?r(l,n):"INSIDE_ARRAY_AFTER_VALUE"===t[t.length-1]&&s(l,n))}}}let n=e.slice(0,o+1);for(let o=t.length-1;o>=0;o--)switch(t[o]){case"INSIDE_STRING":n+='"';break;case"INSIDE_OBJECT_KEY":case"INSIDE_OBJECT_AFTER_KEY":case"INSIDE_OBJECT_AFTER_COMMA":case"INSIDE_OBJECT_START":case"INSIDE_OBJECT_BEFORE_VALUE":case"INSIDE_OBJECT_AFTER_VALUE":n+="}";break;case"INSIDE_ARRAY_START":case"INSIDE_ARRAY_AFTER_COMMA":case"INSIDE_ARRAY_AFTER_VALUE":n+="]";break;case"INSIDE_LITERAL":{let t=e.substring(i,e.length);"true".startsWith(t)?n+="true".slice(t.length):"false".startsWith(t)?n+="false".slice(t.length):"null".startsWith(t)&&(n+="null".slice(t.length))}}return n}(e)})).success?{value:t.value,state:"repaired-parse"}:{value:void 0,state:"failed-parse"}}function lz(e){return e.type.startsWith("tool-")}function lE(e){return e.type.split("-").slice(1).join("-")}async function lq({stream:e,onError:t}){let o=e.getReader();try{for(;;){let{done:e}=await o.read();if(e)break}}catch(e){null==t||t(e)}finally{o.releaseLock()}}function lB(){let e,t;return{promise:new Promise((o,i)=>{e=o,t=i}),resolve:e,reject:t}}ns({prefix:"aitxt",size:24});async function lj(e,t,o){let i=await safeParseJSON3({text:e});if(!i.success)throw new nR({message:"No object generated: could not parse the response.",cause:i.error,text:e,response:o.response,usage:o.usage,finishReason:o.finishReason});let a=await t.validateFinalResult(i.value,{text:e,response:o.response,usage:o.usage});if(!a.success)throw new nR({message:"No object generated: response did not match schema.",cause:a.error,text:e,response:o.response,usage:o.usage,finishReason:o.finishReason});return a.value}ns({prefix:"aiobj",size:24});var lC=class{constructor(){this.queue=[],this.isProcessing=!1}async processQueue(){if(!this.isProcessing){for(this.isProcessing=!0;this.queue.length>0;)await this.queue[0](),this.queue.shift();this.isProcessing=!1}}async run(e){return new Promise((t,o)=>{this.queue.push(async()=>{try{await e(),t()}catch(e){o(e)}}),this.processQueue()})}};ns({prefix:"aiobj",size:24}),((e,t)=>{for(var o in t)nb(e,o,{get:t[o],enumerable:!0})})({},{object:()=>lL,text:()=>lR});var lR=()=>({type:"text",responseFormat:{type:"text"},parsePartial:async({text:e})=>({partial:e}),parseOutput:async({text:e})=>e}),lL=({schema:e})=>{let t=function(e){return null==e?nv({properties:{},additionalProperties:!1}):"object"==typeof e&&null!==e&&nh in e&&!0===e[nh]&&"jsonSchema"in e&&"validate"in e?e:function(e,t){return"_zod"in e?nv(e4(e,{target:"draft-7",io:"output",reused:"inline"}),{validate:async t=>{let o=await tp(e,t);return o.success?{success:!0,value:o.data}:{success:!1,error:o.error}}}):nv(nr(e,{$refStrategy:"none",target:"jsonSchema7"}),{validate:async t=>{let o=await e.safeParseAsync(t);return o.success?{success:!0,value:o.data}:{success:!1,error:o.error}}})}(e)}(e);return{type:"object",responseFormat:{type:"json",schema:t.jsonSchema},async parsePartial({text:e}){let t=await l_(e);switch(t.state){case"failed-parse":case"undefined-input":return;case"repaired-parse":case"successful-parse":return{partial:t.value};default:{let e=t.state;throw Error(`Unsupported parse state: ${e}`)}}},async parseOutput({text:e},o){let i=await nm({text:e});if(!i.success)throw new nR({message:"No object generated: could not parse the response.",cause:i.error,text:e,response:o.response,usage:o.usage,finishReason:o.finishReason});let a=await np({value:i.value,schema:t});if(!a.success)throw new nR({message:"No object generated: response did not match schema.",cause:a.error,text:e,response:o.response,usage:o.usage,finishReason:o.finishReason});return a.value}}},lD=({model:e,middleware:{transformParams:t,wrapGenerate:o,wrapStream:i,overrideProvider:a,overrideModelId:r,overrideSupportedUrls:s},modelId:n,providerId:l})=>{var d,c,u;async function p({params:o,type:i}){return t?await t({params:o,type:i,model:e}):o}return{specificationVersion:"v2",provider:null!=(d=null!=l?l:null==a?void 0:a({model:e}))?d:e.provider,modelId:null!=(c=null!=n?n:null==r?void 0:r({model:e}))?c:e.modelId,supportedUrls:null!=(u=null==s?void 0:s({model:e}))?u:e.supportedUrls,async doGenerate(t){let i=await p({params:t,type:"generate"}),a=async()=>e.doGenerate(i),r=async()=>e.doStream(i);return o?o({doGenerate:a,doStream:r,params:i,model:e}):a()},async doStream(t){let o=await p({params:t,type:"stream"}),a=async()=>e.doGenerate(o),r=async()=>e.doStream(o);return i?i({doGenerate:a,doStream:r,params:o,model:e}):r()}}},l$="AI_NoSuchProviderError",lZ=`vercel.ai.error.${l$}`;L=Symbol.for(lZ);var lF=az({name:i3(),version:i3()}),lQ=az({_meta:aU(aO({}).loose())}),lG=aO({method:i3(),params:aU(lQ)}),lU=az({experimental:aU(aO({}).loose()),logging:aU(aO({}).loose()),prompts:aU(az({listChanged:aU(ak())})),resources:aU(az({subscribe:aU(ak()),listChanged:aU(ak())})),tools:aU(az({listChanged:aU(ak())}))}),lV=(lQ.extend({protocolVersion:i3(),capabilities:lU,serverInfo:lF,instructions:aU(i3())}),lQ.extend({nextCursor:aU(i3())})),lK=aO({name:i3(),description:aU(i3()),inputSchema:aO({type:aF("object"),properties:aU(aO({}).loose())}).loose()}).loose(),lW=(lV.extend({tools:aP(lK)}),aO({type:aF("text"),text:i3()}).loose()),lJ=aO({type:aF("image"),data:i$(au,void 0),mimeType:i3()}).loose(),lY=aO({uri:i3(),mimeType:aU(i3())}).loose(),lH=lY.extend({text:i3()}),lX=lY.extend({blob:i$(au,void 0)}),l0=aO({type:aF("resource"),resource:aq([lH,lX])}).loose(),l2=(lQ.extend({content:aP(aq([lW,lJ,l0])),isError:ak().default(!1).optional()}).or(lQ.extend({toolResult:aw()})),aO({jsonrpc:aF("2.0"),id:aq([i3(),av().int()])}).merge(lG).strict()),l1=aO({jsonrpc:aF("2.0"),id:aq([i3(),av().int()]),result:lQ}).strict(),l5=aO({jsonrpc:aF("2.0"),id:aq([i3(),av().int()]),error:aO({code:av().int(),message:i3(),data:aU(aw())})}).strict(),l3=aq([l2,aO({jsonrpc:aF("2.0")}).merge(aO({method:i3(),params:aU(lQ)})).strict(),l1,l5]);async function l4(e){if(null==e)return[];if(!globalThis.FileList||!(e instanceof globalThis.FileList))throw Error("FileList is not supported in the current environment");return Promise.all(Array.from(e).map(async e=>{let{name:t,type:o}=e;return{type:"file",mediaType:o,filename:t,url:await new Promise((t,o)=>{let i=new FileReader;i.onload=e=>{var o;t(null==(o=e.target)?void 0:o.result)},i.onerror=e=>o(e),i.readAsDataURL(e)})}}))}var l7=class{constructor({api:e="/api/chat",credentials:t,headers:o,body:i,fetch:a,prepareSendMessagesRequest:r,prepareReconnectToStreamRequest:s}){this.api=e,this.credentials=t,this.headers=o,this.body=i,this.fetch=a,this.prepareSendMessagesRequest=r,this.prepareReconnectToStreamRequest=s}async sendMessages({abortSignal:e,...t}){var o,i,a,r,s;let n=await ng(this.body),l=await ng(this.headers),d=await ng(this.credentials),c=await (null==(o=this.prepareSendMessagesRequest)?void 0:o.call(this,{api:this.api,id:t.chatId,messages:t.messages,body:{...n,...t.body},headers:{...l,...t.headers},credentials:d,requestMetadata:t.metadata,trigger:t.trigger,messageId:t.messageId})),u=null!=(i=null==c?void 0:c.api)?i:this.api,p=(null==c?void 0:c.headers)!==void 0?c.headers:{...l,...t.headers},m=(null==c?void 0:c.body)!==void 0?c.body:{...n,...t.body,id:t.chatId,messages:t.messages,trigger:t.trigger,messageId:t.messageId},g=null!=(a=null==c?void 0:c.credentials)?a:d,h=null!=(r=this.fetch)?r:globalThis.fetch,v=await h(u,{method:"POST",headers:{"Content-Type":"application/json",...p},body:JSON.stringify(m),credentials:g,signal:e});if(!v.ok)throw Error(null!=(s=await v.text())?s:"Failed to fetch the chat response.");if(!v.body)throw Error("The response body is empty.");return this.processResponseStream(v.body)}async reconnectToStream(e){var t,o,i,a,r;let s=await ng(this.body),n=await ng(this.headers),l=await ng(this.credentials),d=await (null==(t=this.prepareReconnectToStreamRequest)?void 0:t.call(this,{api:this.api,id:e.chatId,body:{...s,...e.body},headers:{...n,...e.headers},credentials:l,requestMetadata:e.metadata})),c=null!=(o=null==d?void 0:d.api)?o:`${this.api}/${e.chatId}/stream`,u=(null==d?void 0:d.headers)!==void 0?d.headers:{...n,...e.headers},p=null!=(i=null==d?void 0:d.credentials)?i:l,m=null!=(a=this.fetch)?a:globalThis.fetch,g=await m(c,{method:"GET",headers:u,credentials:p});if(204===g.status)return null;if(!g.ok)throw Error(null!=(r=await g.text())?r:"Failed to fetch the chat response.");if(!g.body)throw Error("The response body is empty.");return this.processResponseStream(g.body)}},l8=class extends l7{constructor(e={}){super(e)}processResponseStream(e){return(function({stream:e,schema:t}){return e.pipeThrough(new TextDecoderStream).pipeThrough(new eE).pipeThrough(new TransformStream({async transform({data:e},o){"[DONE]"!==e&&o.enqueue(await nm({text:e,schema:t}))}}))})({stream:e,schema:lO}).pipeThrough(new TransformStream({async transform(e,t){if(!e.success)throw e.error;t.enqueue(e.value)}}))}},l6=class{constructor({generateId:e=nn,id:t=e(),transport:o=new l8,messageMetadataSchema:i,dataPartSchemas:a,state:r,onError:s,onToolCall:n,onFinish:l,onData:d,sendAutomaticallyWhen:c}){this.activeResponse=void 0,this.jobExecutor=new lC,this.sendMessage=async(e,t)=>{var o,i,a,r;let s;if(null==e){await this.makeRequest({trigger:"submit-message",messageId:null==(o=this.lastMessage)?void 0:o.id,...t});return}if(s="text"in e||"files"in e?{parts:[...Array.isArray(e.files)?e.files:await l4(e.files),..."text"in e&&null!=e.text?[{type:"text",text:e.text}]:[]]}:e,null!=e.messageId){let t=this.state.messages.findIndex(t=>t.id===e.messageId);if(-1===t)throw Error(`message with id ${e.messageId} not found`);if("user"!==this.state.messages[t].role)throw Error(`message with id ${e.messageId} is not a user message`);this.state.messages=this.state.messages.slice(0,t+1),this.state.replaceMessage(t,{...s,id:e.messageId,role:null!=(i=s.role)?i:"user",metadata:e.metadata})}else this.state.pushMessage({...s,id:null!=(a=s.id)?a:this.generateId(),role:null!=(r=s.role)?r:"user",metadata:e.metadata});await this.makeRequest({trigger:"submit-message",messageId:e.messageId,...t})},this.regenerate=async({messageId:e,...t}={})=>{let o=null==e?this.state.messages.length-1:this.state.messages.findIndex(t=>t.id===e);if(-1===o)throw Error(`message ${e} not found`);this.state.messages=this.state.messages.slice(0,"assistant"===this.messages[o].role?o:o+1),await this.makeRequest({trigger:"regenerate-message",messageId:e,...t})},this.resumeStream=async(e={})=>{await this.makeRequest({trigger:"resume-stream",...e})},this.clearError=()=>{"error"===this.status&&(this.state.error=void 0,this.setStatus({status:"ready"}))},this.addToolResult=async({tool:e,toolCallId:t,output:o})=>this.jobExecutor.run(async()=>{var e,i;let a=this.state.messages,r=a[a.length-1];this.state.replaceMessage(a.length-1,{...r,parts:r.parts.map(e=>lz(e)&&e.toolCallId===t?{...e,state:"output-available",output:o}:e)}),this.activeResponse&&(this.activeResponse.state.message.parts=this.activeResponse.state.message.parts.map(e=>lz(e)&&e.toolCallId===t?{...e,state:"output-available",output:o,errorText:void 0}:e)),"streaming"!==this.status&&"submitted"!==this.status&&(null==(e=this.sendAutomaticallyWhen)?void 0:e.call(this,{messages:this.state.messages}))&&this.makeRequest({trigger:"submit-message",messageId:null==(i=this.lastMessage)?void 0:i.id})}),this.stop=async()=>{var e;("streaming"===this.status||"submitted"===this.status)&&(null==(e=this.activeResponse)?void 0:e.abortController)&&this.activeResponse.abortController.abort()},this.id=t,this.transport=o,this.generateId=e,this.messageMetadataSchema=i,this.dataPartSchemas=a,this.state=r,this.onError=s,this.onToolCall=n,this.onFinish=l,this.onData=d,this.sendAutomaticallyWhen=c}get status(){return this.state.status}setStatus({status:e,error:t}){this.status!==e&&(this.state.status=e,this.state.error=t)}get error(){return this.state.error}get messages(){return this.state.messages}get lastMessage(){return this.state.messages[this.state.messages.length-1]}set messages(e){this.state.messages=e}async makeRequest({trigger:e,metadata:t,headers:o,body:i,messageId:a}){var r,s,n;this.setStatus({status:"submitted",error:void 0});let l=this.lastMessage;try{let s;let n={state:function({lastMessage:e,messageId:t}){return{message:(null==e?void 0:e.role)==="assistant"?e:{id:t,metadata:void 0,role:"assistant",parts:[]},activeTextParts:{},activeReasoningParts:{},partialToolCalls:{}}}({lastMessage:this.state.snapshot(l),messageId:this.generateId()}),abortController:new AbortController};if(this.activeResponse=n,"resume-stream"===e){let e=await this.transport.reconnectToStream({chatId:this.id,metadata:t,headers:o,body:i});if(null==e){this.setStatus({status:"ready"});return}s=e}else s=await this.transport.sendMessages({chatId:this.id,messages:this.state.messages,abortSignal:n.abortController.signal,metadata:t,headers:o,body:i,trigger:e,messageId:a});await lq({stream:function({stream:e,messageMetadataSchema:t,dataPartSchemas:o,runUpdateMessageJob:i,onError:a,onToolCall:r,onData:s}){return e.pipeThrough(new TransformStream({async transform(e,n){await i(async({state:i,write:l})=>{var d,c,u,p;function m(e){let t=i.message.parts.filter(lz).find(t=>t.toolCallId===e);if(null==t)throw Error("tool-output-error must be preceded by a tool-input-available");return t}function g(e){let t=i.message.parts.filter(e=>"dynamic-tool"===e.type).find(t=>t.toolCallId===e);if(null==t)throw Error("tool-output-error must be preceded by a tool-input-available");return t}function h(e){var t;let o=i.message.parts.find(t=>lz(t)&&t.toolCallId===e.toolCallId);null!=o?(o.state=e.state,o.input=e.input,o.output=e.output,o.errorText=e.errorText,o.rawInput=e.rawInput,o.preliminary=e.preliminary,o.providerExecuted=null!=(t=e.providerExecuted)?t:o.providerExecuted,null!=e.providerMetadata&&"input-available"===o.state&&(o.callProviderMetadata=e.providerMetadata)):i.message.parts.push({type:`tool-${e.toolName}`,toolCallId:e.toolCallId,state:e.state,input:e.input,output:e.output,rawInput:e.rawInput,errorText:e.errorText,providerExecuted:e.providerExecuted,preliminary:e.preliminary,...null!=e.providerMetadata?{callProviderMetadata:e.providerMetadata}:{}})}function v(e){var t;let o=i.message.parts.find(t=>"dynamic-tool"===t.type&&t.toolCallId===e.toolCallId);null!=o?(o.state=e.state,o.toolName=e.toolName,o.input=e.input,o.output=e.output,o.errorText=e.errorText,o.rawInput=null!=(t=e.rawInput)?t:o.rawInput,o.preliminary=e.preliminary,null!=e.providerMetadata&&"input-available"===o.state&&(o.callProviderMetadata=e.providerMetadata)):i.message.parts.push({type:"dynamic-tool",toolName:e.toolName,toolCallId:e.toolCallId,state:e.state,input:e.input,output:e.output,errorText:e.errorText,preliminary:e.preliminary,...null!=e.providerMetadata?{callProviderMetadata:e.providerMetadata}:{}})}async function f(e){if(null!=e){let o=null!=i.message.metadata?function e(t,o){if(void 0===t&&void 0===o)return;if(void 0===t)return o;if(void 0===o)return t;let i={...t};for(let a in o)if(Object.prototype.hasOwnProperty.call(o,a)){let r=o[a];if(void 0===r)continue;let s=a in t?t[a]:void 0,n=null!==r&&"object"==typeof r&&!Array.isArray(r)&&!(r instanceof Date)&&!(r instanceof RegExp),l=null!=s&&"object"==typeof s&&!Array.isArray(s)&&!(s instanceof Date)&&!(s instanceof RegExp);n&&l?i[a]=e(s,r):i[a]=r}return i}(i.message.metadata,e):e;null!=t&&await nu({value:o,schema:t}),i.message.metadata=o}}switch(e.type){case"text-start":{let t={type:"text",text:"",providerMetadata:e.providerMetadata,state:"streaming"};i.activeTextParts[e.id]=t,i.message.parts.push(t),l();break}case"text-delta":{let t=i.activeTextParts[e.id];t.text+=e.delta,t.providerMetadata=null!=(d=e.providerMetadata)?d:t.providerMetadata,l();break}case"text-end":{let t=i.activeTextParts[e.id];t.state="done",t.providerMetadata=null!=(c=e.providerMetadata)?c:t.providerMetadata,delete i.activeTextParts[e.id],l();break}case"reasoning-start":{let t={type:"reasoning",text:"",providerMetadata:e.providerMetadata,state:"streaming"};i.activeReasoningParts[e.id]=t,i.message.parts.push(t),l();break}case"reasoning-delta":{let t=i.activeReasoningParts[e.id];t.text+=e.delta,t.providerMetadata=null!=(u=e.providerMetadata)?u:t.providerMetadata,l();break}case"reasoning-end":{let t=i.activeReasoningParts[e.id];t.providerMetadata=null!=(p=e.providerMetadata)?p:t.providerMetadata,t.state="done",delete i.activeReasoningParts[e.id],l();break}case"file":i.message.parts.push({type:"file",mediaType:e.mediaType,url:e.url}),l();break;case"source-url":i.message.parts.push({type:"source-url",sourceId:e.sourceId,url:e.url,title:e.title,providerMetadata:e.providerMetadata}),l();break;case"source-document":i.message.parts.push({type:"source-document",sourceId:e.sourceId,mediaType:e.mediaType,title:e.title,filename:e.filename,providerMetadata:e.providerMetadata}),l();break;case"tool-input-start":{let t=i.message.parts.filter(lz);i.partialToolCalls[e.toolCallId]={text:"",toolName:e.toolName,index:t.length,dynamic:e.dynamic},e.dynamic?v({toolCallId:e.toolCallId,toolName:e.toolName,state:"input-streaming",input:void 0}):h({toolCallId:e.toolCallId,toolName:e.toolName,state:"input-streaming",input:void 0,providerExecuted:e.providerExecuted}),l();break}case"tool-input-delta":{let t=i.partialToolCalls[e.toolCallId];t.text+=e.inputTextDelta;let{value:o}=await l_(t.text);t.dynamic?v({toolCallId:e.toolCallId,toolName:t.toolName,state:"input-streaming",input:o}):h({toolCallId:e.toolCallId,toolName:t.toolName,state:"input-streaming",input:o}),l();break}case"tool-input-available":e.dynamic?v({toolCallId:e.toolCallId,toolName:e.toolName,state:"input-available",input:e.input,providerMetadata:e.providerMetadata}):h({toolCallId:e.toolCallId,toolName:e.toolName,state:"input-available",input:e.input,providerExecuted:e.providerExecuted,providerMetadata:e.providerMetadata}),l(),r&&!e.providerExecuted&&await r({toolCall:e});break;case"tool-input-error":e.dynamic?v({toolCallId:e.toolCallId,toolName:e.toolName,state:"output-error",input:e.input,errorText:e.errorText,providerMetadata:e.providerMetadata}):h({toolCallId:e.toolCallId,toolName:e.toolName,state:"output-error",input:void 0,rawInput:e.input,errorText:e.errorText,providerExecuted:e.providerExecuted,providerMetadata:e.providerMetadata}),l();break;case"tool-output-available":if(e.dynamic){let t=g(e.toolCallId);v({toolCallId:e.toolCallId,toolName:t.toolName,state:"output-available",input:t.input,output:e.output,preliminary:e.preliminary})}else{let t=m(e.toolCallId);h({toolCallId:e.toolCallId,toolName:lE(t),state:"output-available",input:t.input,output:e.output,providerExecuted:e.providerExecuted,preliminary:e.preliminary})}l();break;case"tool-output-error":if(e.dynamic){let t=g(e.toolCallId);v({toolCallId:e.toolCallId,toolName:t.toolName,state:"output-error",input:t.input,errorText:e.errorText})}else{let t=m(e.toolCallId);h({toolCallId:e.toolCallId,toolName:lE(t),state:"output-error",input:t.input,rawInput:t.rawInput,errorText:e.errorText})}l();break;case"start-step":i.message.parts.push({type:"step-start"});break;case"finish-step":i.activeTextParts={},i.activeReasoningParts={};break;case"start":null!=e.messageId&&(i.message.id=e.messageId),await f(e.messageMetadata),(null!=e.messageId||null!=e.messageMetadata)&&l();break;case"finish":case"message-metadata":await f(e.messageMetadata),null!=e.messageMetadata&&l();break;case"error":null==a||a(Error(e.errorText));break;default:if(e.type.startsWith("data-")){if((null==o?void 0:o[e.type])!=null&&await nu({value:e.data,schema:o[e.type]}),e.transient){null==s||s(e);break}let t=null!=e.id?i.message.parts.find(t=>e.type===t.type&&e.id===t.id):void 0;null!=t?t.data=e.data:i.message.parts.push(e),null==s||s(e),l()}}n.enqueue(e)})}}))}({stream:s,onToolCall:this.onToolCall,onData:this.onData,messageMetadataSchema:this.messageMetadataSchema,dataPartSchemas:this.dataPartSchemas,runUpdateMessageJob:e=>this.jobExecutor.run(()=>e({state:n.state,write:()=>{var e;this.setStatus({status:"streaming"}),n.state.message.id===(null==(e=this.lastMessage)?void 0:e.id)?this.state.replaceMessage(this.state.messages.length-1,n.state.message):this.state.pushMessage(n.state.message)}})),onError:e=>{throw e}}),onError:e=>{throw e}}),null==(r=this.onFinish)||r.call(this,{message:n.state.message}),this.setStatus({status:"ready"})}catch(e){if("AbortError"===e.name)return this.setStatus({status:"ready"}),null;this.onError&&e instanceof Error&&this.onError(e),this.setStatus({status:"error",error:e})}finally{this.activeResponse=void 0}(null==(s=this.sendAutomaticallyWhen)?void 0:s.call(this,{messages:this.state.messages}))&&await this.makeRequest({trigger:"submit-message",messageId:null==(n=this.lastMessage)?void 0:n.id,metadata:t,headers:o,body:i})}},l9=aO({type:aF("text"),text:i3(),state:a$(["streaming","done"]).optional(),providerMetadata:lr.optional()}),de=aO({type:aF("reasoning"),text:i3(),state:a$(["streaming","done"]).optional(),providerMetadata:lr.optional()}),dt=aO({type:aF("source-url"),sourceId:i3(),url:i3(),title:i3().optional(),providerMetadata:lr.optional()}),di=aO({type:aF("source-document"),sourceId:i3(),mediaType:i3(),title:i3(),filename:i3().optional(),providerMetadata:lr.optional()}),da=aO({type:aF("file"),mediaType:i3(),filename:i3().optional(),url:i3(),providerMetadata:lr.optional()}),dr=aO({type:aF("step-start")}),ds=aO({type:i3().startsWith("data-"),id:i3().optional(),data:aw()}),dn=[aO({type:aF("dynamic-tool"),toolName:i3(),toolCallId:i3(),state:aF("input-streaming"),input:aw().optional(),output:aA().optional(),errorText:aA().optional()}),aO({type:aF("dynamic-tool"),toolName:i3(),toolCallId:i3(),state:aF("input-available"),input:aw(),output:aA().optional(),errorText:aA().optional(),callProviderMetadata:lr.optional()}),aO({type:aF("dynamic-tool"),toolName:i3(),toolCallId:i3(),state:aF("output-available"),input:aw(),output:aw(),errorText:aA().optional(),callProviderMetadata:lr.optional(),preliminary:ak().optional()}),aO({type:aF("dynamic-tool"),toolName:i3(),toolCallId:i3(),state:aF("output-error"),input:aw(),output:aA().optional(),errorText:i3(),callProviderMetadata:lr.optional()})],dl=[aO({type:i3().startsWith("tool-"),toolCallId:i3(),state:aF("input-streaming"),input:aw().optional(),output:aA().optional(),errorText:aA().optional()}),aO({type:i3().startsWith("tool-"),toolCallId:i3(),state:aF("input-available"),input:aw(),output:aA().optional(),errorText:aA().optional(),callProviderMetadata:lr.optional()}),aO({type:i3().startsWith("tool-"),toolCallId:i3(),state:aF("output-available"),input:aw(),output:aw(),errorText:aA().optional(),callProviderMetadata:lr.optional(),preliminary:ak().optional()}),aO({type:i3().startsWith("tool-"),toolCallId:i3(),state:aF("output-error"),input:aw(),output:aA().optional(),errorText:i3(),callProviderMetadata:lr.optional()})],dd=(aO({id:i3(),role:a$(["system","user","assistant"]),metadata:aw().optional(),parts:aP(aq([l9,de,dt,di,da,dr,ds,...dn,...dl]))}),o(68301)),dc=(e,t,o)=>{if(!t.has(e))throw TypeError("Cannot "+o)},du=(e,t,o)=>(dc(e,t,"read from private field"),o?o.call(e):t.get(e)),dp=(e,t,o)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,o)},dm=(e,t,o,i)=>(dc(e,t,"write to private field"),i?i.call(e,o):t.set(e,o),o),dg=class{constructor(e=[]){dp(this,D,void 0),dp(this,$,"ready"),dp(this,Z,void 0),dp(this,F,new Set),dp(this,Q,new Set),dp(this,G,new Set),this.pushMessage=e=>{dm(this,D,du(this,D).concat(e)),du(this,U).call(this)},this.popMessage=()=>{dm(this,D,du(this,D).slice(0,-1)),du(this,U).call(this)},this.replaceMessage=(e,t)=>{dm(this,D,[...du(this,D).slice(0,e),this.snapshot(t),...du(this,D).slice(e+1)]),du(this,U).call(this)},this.snapshot=e=>structuredClone(e),this["~registerMessagesCallback"]=(e,t)=>{let o=t?function(e,t){return null!=t?dd(e,t):e}(e,t):e;return du(this,F).add(o),()=>{du(this,F).delete(o)}},this["~registerStatusCallback"]=e=>(du(this,Q).add(e),()=>{du(this,Q).delete(e)}),this["~registerErrorCallback"]=e=>(du(this,G).add(e),()=>{du(this,G).delete(e)}),dp(this,U,()=>{du(this,F).forEach(e=>e())}),dp(this,V,()=>{du(this,Q).forEach(e=>e())}),dp(this,K,()=>{du(this,G).forEach(e=>e())}),dm(this,D,e)}get status(){return du(this,$)}set status(e){dm(this,$,e),du(this,V).call(this)}get error(){return du(this,Z)}set error(e){dm(this,Z,e),du(this,K).call(this)}get messages(){return du(this,D)}set messages(e){dm(this,D,[...e]),du(this,U).call(this)}};D=new WeakMap,$=new WeakMap,Z=new WeakMap,F=new WeakMap,Q=new WeakMap,G=new WeakMap,U=new WeakMap,V=new WeakMap,K=new WeakMap;var dh=class extends l6{constructor({messages:e,...t}){let o=new dg(e);super({...t,state:o}),dp(this,W,void 0),this["~registerMessagesCallback"]=(e,t)=>du(this,W)["~registerMessagesCallback"](e,t),this["~registerStatusCallback"]=e=>du(this,W)["~registerStatusCallback"](e),this["~registerErrorCallback"]=e=>du(this,W)["~registerErrorCallback"](e),dm(this,W,o)}};W=new WeakMap;var dv=o(15211),df=o(76812),dx=o(77863);let db=({size:e=16})=>(0,H.jsxs)("svg",{height:e,strokeLinejoin:"round",style:{color:"currentcolor"},viewBox:"0 0 16 16",width:e,children:[H.jsx("title",{children:"Loader"}),(0,H.jsxs)("g",{clipPath:"url(#clip0_2393_1490)",children:[H.jsx("path",{d:"M8 0V4",stroke:"currentColor",strokeWidth:"1.5"}),H.jsx("path",{d:"M8 16V12",opacity:"0.5",stroke:"currentColor",strokeWidth:"1.5"}),H.jsx("path",{d:"M3.29773 1.52783L5.64887 4.7639",opacity:"0.9",stroke:"currentColor",strokeWidth:"1.5"}),H.jsx("path",{d:"M12.7023 1.52783L10.3511 4.7639",opacity:"0.1",stroke:"currentColor",strokeWidth:"1.5"}),H.jsx("path",{d:"M12.7023 14.472L10.3511 11.236",opacity:"0.4",stroke:"currentColor",strokeWidth:"1.5"}),H.jsx("path",{d:"M3.29773 14.472L5.64887 11.236",opacity:"0.6",stroke:"currentColor",strokeWidth:"1.5"}),H.jsx("path",{d:"M15.6085 5.52783L11.8043 6.7639",opacity:"0.2",stroke:"currentColor",strokeWidth:"1.5"}),H.jsx("path",{d:"M0.391602 10.472L4.19583 9.23598",opacity:"0.7",stroke:"currentColor",strokeWidth:"1.5"}),H.jsx("path",{d:"M15.6085 10.4722L11.8043 9.2361",opacity:"0.3",stroke:"currentColor",strokeWidth:"1.5"}),H.jsx("path",{d:"M0.391602 5.52783L4.19583 6.7639",opacity:"0.8",stroke:"currentColor",strokeWidth:"1.5"})]}),H.jsx("defs",{children:H.jsx("clipPath",{id:"clip0_2393_1490",children:H.jsx("rect",{fill:"white",height:"16",width:"16"})})})]}),dk=({className:e,size:t=16,...o})=>H.jsx("div",{className:(0,dx.cn)("inline-flex animate-spin items-center justify-center",e),...o,children:H.jsx(db,{size:t})});var dy=o(45353),dM="undefined"!=typeof document?X.useLayoutEffect:function(){},dI=function(e){var t=ee().useRef(e);return dM(function(){t.current=e}),t},dw=function(e,t){if("function"==typeof e){e(t);return}e.current=t},dS=function(e,t){var o=ee().useRef();return ee().useCallback(function(i){e.current=i,o.current&&dw(o.current,null),o.current=t,t&&dw(t,i)},[t])},dA="undefined"!=typeof document,dT={"min-height":"0","max-height":"none",height:"0",visibility:"hidden",overflow:"hidden",position:"absolute","z-index":"-1000",top:"0",right:"0",display:"block"},dP=function(e){Object.keys(dT).forEach(function(t){e.style.setProperty(t,dT[t],"important")})},dN=null,dO=function(e,t){var o=e.scrollHeight;return"border-box"===t.sizingStyle.boxSizing?o+t.borderSize:o-t.paddingSize},d_=function(){},dz=["borderBottomWidth","borderLeftWidth","borderRightWidth","borderTopWidth","boxSizing","fontFamily","fontSize","fontStyle","fontWeight","letterSpacing","lineHeight","paddingBottom","paddingLeft","paddingRight","paddingTop","tabSize","textIndent","textRendering","textTransform","width","wordBreak","wordSpacing","scrollbarGutter"],dE=!!dA&&!!document.documentElement.currentStyle,dq=function(e){var t=window.getComputedStyle(e);if(null===t)return null;var o=dz.reduce(function(e,o){return e[o]=t[o],e},{}),i=o.boxSizing;if(""===i)return null;dE&&"border-box"===i&&(o.width=parseFloat(o.width)+parseFloat(o.borderRightWidth)+parseFloat(o.borderLeftWidth)+parseFloat(o.paddingRight)+parseFloat(o.paddingLeft)+"px");var a=parseFloat(o.paddingBottom)+parseFloat(o.paddingTop),r=parseFloat(o.borderBottomWidth)+parseFloat(o.borderTopWidth);return{sizingStyle:o,paddingSize:a,borderSize:r}};function dB(e,t,o){var i=dI(o);X.useLayoutEffect(function(){var o=function(e){return i.current(e)};if(e)return e.addEventListener(t,o),function(){return e.removeEventListener(t,o)}},[])}var dj=function(e,t){dB(document.body,"reset",function(o){e.current.form===o.target&&t(o)})},dC=function(e){dB(window,"resize",e)},dR=function(e){dB(document.fonts,"loadingdone",e)},dL=["cacheMeasurements","maxRows","minRows","onChange","onHeightChange"],dD=X.forwardRef(function(e,t){var o=e.cacheMeasurements,i=e.maxRows,a=e.minRows,r=e.onChange,s=void 0===r?d_:r,n=e.onHeightChange,l=void 0===n?d_:n,d=function(e,t){if(null==e)return{};var o={};for(var i in e)if(({}).hasOwnProperty.call(e,i)){if(-1!==t.indexOf(i))continue;o[i]=e[i]}return o}(e,dL),c=void 0!==d.value,u=X.useRef(null),p=dS(u,t),m=X.useRef(0),g=X.useRef(),h=function(){var e,t,r,s,n,d,c,p,h,v,f,x=u.current,b=o&&g.current?g.current:dq(x);if(b){g.current=b;var k=(e=x.value||x.placeholder||"x",void 0===(t=a)&&(t=1),void 0===(r=i)&&(r=1/0),dN||((dN=document.createElement("textarea")).setAttribute("tabindex","-1"),dN.setAttribute("aria-hidden","true"),dP(dN)),null===dN.parentNode&&document.body.appendChild(dN),s=b.paddingSize,n=b.borderSize,c=(d=b.sizingStyle).boxSizing,Object.keys(d).forEach(function(e){dN.style[e]=d[e]}),dP(dN),dN.value=e,p=dO(dN,b),dN.value=e,p=dO(dN,b),dN.value="x",v=(h=dN.scrollHeight-s)*t,"border-box"===c&&(v=v+s+n),p=Math.max(v,p),f=h*r,"border-box"===c&&(f=f+s+n),[p=Math.min(f,p),h]),y=k[0],M=k[1];m.current!==y&&(m.current=y,x.style.setProperty("height",y+"px","important"),l(y,{rowHeight:M}))}};return dA?(X.useLayoutEffect(h),dj(u,function(){if(!c){var e=u.current.value;requestAnimationFrame(function(){var t=u.current;t&&e!==t.value&&h()})}}),dC(h),dR(h),X.createElement("textarea",(0,dy.Z)({},d,{onChange:function(e){c||h(),s(e)},ref:p}))):X.createElement("textarea",(0,dy.Z)({},d,{onChange:s,ref:p}))}),d$=o(68232),dZ=o(42270),dF=o(59161),dQ=o(30463),dG=o(36283);let dU=(0,o(76557).Z)("ArrowUp",[["path",{d:"m5 12 7-7 7 7",key:"hav0vg"}],["path",{d:"M12 19V5",key:"x0mq9r"}]]);var dV=o(47206),dK=o(34789),dW=o(360),dJ=o(90772),dY=o(33261),dH=o(33071),dX=o(5354),d0=o(13854),d2=o(15286),d1=o(24295),d5=o(37859),d3=o(567),d4=o(43641),d7=o(77961);function d8(e,t,{checkForDefaultPrevented:o=!0}={}){return function(i){if(e?.(i),!1===o||!i.defaultPrevented)return t?.(i)}}"undefined"!=typeof window&&window.document&&window.document.createElement;var d6=o(93095),d9=o(52067),ce=o(48051),ct=o(77192),co=o(87389),ci=o(92764),ca=o(45226),cr=o(55049),cs=o(65819),cn=o(2566),cl="Popper",[cd,cc]=(0,d6.b)(cl),[cu,cp]=cd(cl),cm=e=>{let{__scopePopper:t,children:o}=e,[i,a]=X.useState(null);return(0,H.jsx)(cu,{scope:t,anchor:i,onAnchorChange:a,children:o})};cm.displayName=cl;var cg="PopperAnchor",ch=X.forwardRef((e,t)=>{let{__scopePopper:o,virtualRef:i,...a}=e,r=cp(cg,o),s=X.useRef(null),n=(0,ce.e)(t,s),l=X.useRef(null);return X.useEffect(()=>{let e=l.current;l.current=i?.current||s.current,e!==l.current&&r.onAnchorChange(l.current)}),i?null:(0,H.jsx)(ca.WV.div,{...a,ref:n})});ch.displayName=cg;var cv="PopperContent",[cf,cx]=cd(cv),cb=X.forwardRef((e,t)=>{let{__scopePopper:o,side:i="bottom",sideOffset:a=0,align:r="center",alignOffset:s=0,arrowPadding:n=0,avoidCollisions:l=!0,collisionBoundary:d=[],collisionPadding:c=0,sticky:u="partial",hideWhenDetached:p=!1,updatePositionStrategy:m="optimized",onPlaced:g,...h}=e,v=cp(cv,o),[f,x]=X.useState(null),b=(0,ce.e)(t,e=>x(e)),[k,y]=X.useState(null),M=(0,cn.t)(k),I=M?.width??0,w=M?.height??0,S="number"==typeof c?c:{top:0,right:0,bottom:0,left:0,...c},A=Array.isArray(d)?d:[d],T=A.length>0,P={padding:S,boundary:A.filter(cI),altBoundary:T},{refs:N,floatingStyles:O,placement:_,isPositioned:z,middlewareData:E}=(0,ct.YF)({strategy:"fixed",placement:i+("center"!==r?"-"+r:""),whileElementsMounted:(...e)=>(0,co.Me)(...e,{animationFrame:"always"===m}),elements:{reference:v.anchor},middleware:[(0,ct.cv)({mainAxis:a+w,alignmentAxis:s}),l&&(0,ct.uY)({mainAxis:!0,crossAxis:!1,limiter:"partial"===u?(0,ct.dr)():void 0,...P}),l&&(0,ct.RR)({...P}),(0,ct.dp)({...P,apply:({elements:e,rects:t,availableWidth:o,availableHeight:i})=>{let{width:a,height:r}=t.reference,s=e.floating.style;s.setProperty("--radix-popper-available-width",`${o}px`),s.setProperty("--radix-popper-available-height",`${i}px`),s.setProperty("--radix-popper-anchor-width",`${a}px`),s.setProperty("--radix-popper-anchor-height",`${r}px`)}}),k&&(0,ct.x7)({element:k,padding:n}),cw({arrowWidth:I,arrowHeight:w}),p&&(0,ct.Cp)({strategy:"referenceHidden",...P})]}),[q,B]=cS(_),j=(0,cr.W)(g);(0,cs.b)(()=>{z&&j?.()},[z,j]);let C=E.arrow?.x,R=E.arrow?.y,L=E.arrow?.centerOffset!==0,[D,$]=X.useState();return(0,cs.b)(()=>{f&&$(window.getComputedStyle(f).zIndex)},[f]),(0,H.jsx)("div",{ref:N.setFloating,"data-radix-popper-content-wrapper":"",style:{...O,transform:z?O.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:D,"--radix-popper-transform-origin":[E.transformOrigin?.x,E.transformOrigin?.y].join(" "),...E.hide?.referenceHidden&&{visibility:"hidden",pointerEvents:"none"}},dir:e.dir,children:(0,H.jsx)(cf,{scope:o,placedSide:q,onArrowChange:y,arrowX:C,arrowY:R,shouldHideArrow:L,children:(0,H.jsx)(ca.WV.div,{"data-side":q,"data-align":B,...h,ref:b,style:{...h.style,animation:z?void 0:"none"}})})})});cb.displayName=cv;var ck="PopperArrow",cy={top:"bottom",right:"left",bottom:"top",left:"right"},cM=X.forwardRef(function(e,t){let{__scopePopper:o,...i}=e,a=cx(ck,o),r=cy[a.placedSide];return(0,H.jsx)("span",{ref:a.onArrowChange,style:{position:"absolute",left:a.arrowX,top:a.arrowY,[r]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[a.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[a.placedSide],visibility:a.shouldHideArrow?"hidden":void 0},children:(0,H.jsx)(ci.f,{...i,ref:t,style:{...i.style,display:"block"}})})});function cI(e){return null!==e}cM.displayName=ck;var cw=e=>({name:"transformOrigin",options:e,fn(t){let{placement:o,rects:i,middlewareData:a}=t,r=a.arrow?.centerOffset!==0,s=r?0:e.arrowWidth,n=r?0:e.arrowHeight,[l,d]=cS(o),c={start:"0%",center:"50%",end:"100%"}[d],u=(a.arrow?.x??0)+s/2,p=(a.arrow?.y??0)+n/2,m="",g="";return"bottom"===l?(m=r?c:`${u}px`,g=`${-n}px`):"top"===l?(m=r?c:`${u}px`,g=`${i.floating.height+n}px`):"right"===l?(m=`${-n}px`,g=r?c:`${p}px`):"left"===l&&(m=`${i.floating.width+n}px`,g=r?c:`${p}px`),{data:{x:m,y:g}}}});function cS(e){let[t,o="center"]=e.split("-");return[t,o]}o(83078);var cA=e=>{let{present:t,children:o}=e,i=function(e){var t,o;let[i,a]=X.useState(),r=X.useRef(null),s=X.useRef(e),n=X.useRef("none"),[l,d]=(t=e?"mounted":"unmounted",o={mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}},X.useReducer((e,t)=>o[e][t]??e,t));return X.useEffect(()=>{let e=cT(r.current);n.current="mounted"===l?e:"none"},[l]),(0,cs.b)(()=>{let t=r.current,o=s.current;if(o!==e){let i=n.current,a=cT(t);e?d("MOUNT"):"none"===a||t?.display==="none"?d("UNMOUNT"):o&&i!==a?d("ANIMATION_OUT"):d("UNMOUNT"),s.current=e}},[e,d]),(0,cs.b)(()=>{if(i){let e;let t=i.ownerDocument.defaultView??window,o=o=>{let a=cT(r.current).includes(CSS.escape(o.animationName));if(o.target===i&&a&&(d("ANIMATION_END"),!s.current)){let o=i.style.animationFillMode;i.style.animationFillMode="forwards",e=t.setTimeout(()=>{"forwards"===i.style.animationFillMode&&(i.style.animationFillMode=o)})}},a=e=>{e.target===i&&(n.current=cT(r.current))};return i.addEventListener("animationstart",a),i.addEventListener("animationcancel",o),i.addEventListener("animationend",o),()=>{t.clearTimeout(e),i.removeEventListener("animationstart",a),i.removeEventListener("animationcancel",o),i.removeEventListener("animationend",o)}}d("ANIMATION_END")},[i,d]),{isPresent:["mounted","unmountSuspended"].includes(l),ref:X.useCallback(e=>{r.current=e?getComputedStyle(e):null,a(e)},[])}}(t),a="function"==typeof o?o({present:i.isPresent}):X.Children.only(o),r=(0,ce.e)(i.ref,function(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,o=t&&"isReactWarning"in t&&t.isReactWarning;return o?e.ref:(o=(t=Object.getOwnPropertyDescriptor(e,"ref")?.get)&&"isReactWarning"in t&&t.isReactWarning)?e.props.ref:e.props.ref||e.ref}(a));return"function"==typeof o||i.isPresent?X.cloneElement(a,{ref:r}):null};function cT(e){return e?.animationName||"none"}cA.displayName="Presence";var cP=o(77575),cN="dismissableLayer.update",cO=X.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),c_=X.forwardRef((e,t)=>{let{disableOutsidePointerEvents:o=!1,onEscapeKeyDown:i,onPointerDownOutside:a,onFocusOutside:r,onInteractOutside:s,onDismiss:n,...l}=e,d=X.useContext(cO),[c,u]=X.useState(null),p=c?.ownerDocument??globalThis?.document,[,m]=X.useState({}),g=(0,ce.e)(t,e=>u(e)),h=Array.from(d.layers),[v]=[...d.layersWithOutsidePointerEventsDisabled].slice(-1),f=h.indexOf(v),x=c?h.indexOf(c):-1,b=d.layersWithOutsidePointerEventsDisabled.size>0,k=x>=f,y=function(e,t=globalThis?.document){let o=(0,cr.W)(e),i=X.useRef(!1),a=X.useRef(()=>{});return X.useEffect(()=>{let e=e=>{if(e.target&&!i.current){let i=function(){cE("dismissableLayer.pointerDownOutside",o,r,{discrete:!0})},r={originalEvent:e};"touch"===e.pointerType?(t.removeEventListener("click",a.current),a.current=i,t.addEventListener("click",a.current,{once:!0})):i()}else t.removeEventListener("click",a.current);i.current=!1},r=window.setTimeout(()=>{t.addEventListener("pointerdown",e)},0);return()=>{window.clearTimeout(r),t.removeEventListener("pointerdown",e),t.removeEventListener("click",a.current)}},[t,o]),{onPointerDownCapture:()=>i.current=!0}}(e=>{let t=e.target,o=[...d.branches].some(e=>e.contains(t));!k||o||(a?.(e),s?.(e),e.defaultPrevented||n?.())},p),M=function(e,t=globalThis?.document){let o=(0,cr.W)(e),i=X.useRef(!1);return X.useEffect(()=>{let e=e=>{e.target&&!i.current&&cE("dismissableLayer.focusOutside",o,{originalEvent:e},{discrete:!1})};return t.addEventListener("focusin",e),()=>t.removeEventListener("focusin",e)},[t,o]),{onFocusCapture:()=>i.current=!0,onBlurCapture:()=>i.current=!1}}(e=>{let t=e.target;[...d.branches].some(e=>e.contains(t))||(r?.(e),s?.(e),e.defaultPrevented||n?.())},p);return(0,cP.e)(e=>{x!==d.layers.size-1||(i?.(e),!e.defaultPrevented&&n&&(e.preventDefault(),n()))},p),X.useEffect(()=>{if(c)return o&&(0===d.layersWithOutsidePointerEventsDisabled.size&&(J=p.body.style.pointerEvents,p.body.style.pointerEvents="none"),d.layersWithOutsidePointerEventsDisabled.add(c)),d.layers.add(c),cz(),()=>{o&&1===d.layersWithOutsidePointerEventsDisabled.size&&(p.body.style.pointerEvents=J)}},[c,p,o,d]),X.useEffect(()=>()=>{c&&(d.layers.delete(c),d.layersWithOutsidePointerEventsDisabled.delete(c),cz())},[c,d]),X.useEffect(()=>{let e=()=>m({});return document.addEventListener(cN,e),()=>document.removeEventListener(cN,e)},[]),(0,H.jsx)(ca.WV.div,{...l,ref:g,style:{pointerEvents:b?k?"auto":"none":void 0,...e.style},onFocusCapture:d8(e.onFocusCapture,M.onFocusCapture),onBlurCapture:d8(e.onBlurCapture,M.onBlurCapture),onPointerDownCapture:d8(e.onPointerDownCapture,y.onPointerDownCapture)})});function cz(){let e=new CustomEvent(cN);document.dispatchEvent(e)}function cE(e,t,o,{discrete:i}){let a=o.originalEvent.target,r=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:o});t&&a.addEventListener(e,t,{once:!0}),i?(0,ca.jH)(a,r):a.dispatchEvent(r)}c_.displayName="DismissableLayer",X.forwardRef((e,t)=>{let o=X.useContext(cO),i=X.useRef(null),a=(0,ce.e)(t,i);return X.useEffect(()=>{let e=i.current;if(e)return o.branches.add(e),()=>{o.branches.delete(e)}},[o.branches]),(0,H.jsx)(ca.WV.div,{...e,ref:a})}).displayName="DismissableLayerBranch";var cq="HoverCard",[cB,cj]=(0,d6.b)(cq,[cc]),cC=cc(),[cR,cL]=cB(cq),cD=e=>{let{__scopeHoverCard:t,children:o,open:i,defaultOpen:a,onOpenChange:r,openDelay:s=700,closeDelay:n=300}=e,l=cC(t),d=X.useRef(0),c=X.useRef(0),u=X.useRef(!1),p=X.useRef(!1),[m,g]=(0,d9.T)({prop:i,defaultProp:a??!1,onChange:r,caller:cq}),h=X.useCallback(()=>{clearTimeout(c.current),d.current=window.setTimeout(()=>g(!0),s)},[s,g]),v=X.useCallback(()=>{clearTimeout(d.current),u.current||p.current||(c.current=window.setTimeout(()=>g(!1),n))},[n,g]),f=X.useCallback(()=>g(!1),[g]);return X.useEffect(()=>()=>{clearTimeout(d.current),clearTimeout(c.current)},[]),(0,H.jsx)(cR,{scope:t,open:m,onOpenChange:g,onOpen:h,onClose:v,onDismiss:f,hasSelectionRef:u,isPointerDownOnContentRef:p,children:(0,H.jsx)(cm,{...l,children:o})})};cD.displayName=cq;var c$="HoverCardTrigger",cZ=X.forwardRef((e,t)=>{let{__scopeHoverCard:o,...i}=e,a=cL(c$,o),r=cC(o);return(0,H.jsx)(ch,{asChild:!0,...r,children:(0,H.jsx)(ca.WV.a,{"data-state":a.open?"open":"closed",...i,ref:t,onPointerEnter:d8(e.onPointerEnter,cK(a.onOpen)),onPointerLeave:d8(e.onPointerLeave,cK(a.onClose)),onFocus:d8(e.onFocus,a.onOpen),onBlur:d8(e.onBlur,a.onClose),onTouchStart:d8(e.onTouchStart,e=>e.preventDefault())})})});cZ.displayName=c$;var[cF,cQ]=cB("HoverCardPortal",{forceMount:void 0}),cG="HoverCardContent",cU=X.forwardRef((e,t)=>{let o=cQ(cG,e.__scopeHoverCard),{forceMount:i=o.forceMount,...a}=e,r=cL(cG,e.__scopeHoverCard);return(0,H.jsx)(cA,{present:i||r.open,children:(0,H.jsx)(cV,{"data-state":r.open?"open":"closed",...a,onPointerEnter:d8(e.onPointerEnter,cK(r.onOpen)),onPointerLeave:d8(e.onPointerLeave,cK(r.onClose)),ref:t})})});cU.displayName=cG;var cV=X.forwardRef((e,t)=>{let{__scopeHoverCard:o,onEscapeKeyDown:i,onPointerDownOutside:a,onFocusOutside:r,onInteractOutside:s,...n}=e,l=cL(cG,o),d=cC(o),c=X.useRef(null),u=(0,ce.e)(t,c),[p,m]=X.useState(!1);return X.useEffect(()=>{if(p){let e=document.body;return Y=e.style.userSelect||e.style.webkitUserSelect,e.style.userSelect="none",e.style.webkitUserSelect="none",()=>{e.style.userSelect=Y,e.style.webkitUserSelect=Y}}},[p]),X.useEffect(()=>{if(c.current){let e=()=>{m(!1),l.isPointerDownOnContentRef.current=!1,setTimeout(()=>{document.getSelection()?.toString()!==""&&(l.hasSelectionRef.current=!0)})};return document.addEventListener("pointerup",e),()=>{document.removeEventListener("pointerup",e),l.hasSelectionRef.current=!1,l.isPointerDownOnContentRef.current=!1}}},[l.isPointerDownOnContentRef,l.hasSelectionRef]),X.useEffect(()=>{c.current&&(function(e){let t=[],o=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>e.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP});for(;o.nextNode();)t.push(o.currentNode);return t})(c.current).forEach(e=>e.setAttribute("tabindex","-1"))}),(0,H.jsx)(c_,{asChild:!0,disableOutsidePointerEvents:!1,onInteractOutside:s,onEscapeKeyDown:i,onPointerDownOutside:a,onFocusOutside:d8(r,e=>{e.preventDefault()}),onDismiss:l.onDismiss,children:(0,H.jsx)(cb,{...d,...n,onPointerDown:d8(n.onPointerDown,e=>{e.currentTarget.contains(e.target)&&m(!0),l.hasSelectionRef.current=!1,l.isPointerDownOnContentRef.current=!0}),ref:u,style:{...n.style,userSelect:p?"text":void 0,WebkitUserSelect:p?"text":void 0,"--radix-hover-card-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-hover-card-content-available-width":"var(--radix-popper-available-width)","--radix-hover-card-content-available-height":"var(--radix-popper-available-height)","--radix-hover-card-trigger-width":"var(--radix-popper-anchor-width)","--radix-hover-card-trigger-height":"var(--radix-popper-anchor-height)"}})})});function cK(e){return t=>"touch"===t.pointerType?void 0:e()}X.forwardRef((e,t)=>{let{__scopeHoverCard:o,...i}=e,a=cC(o);return(0,H.jsx)(cM,{...a,...i,ref:t})}).displayName="HoverCardArrow";let cW=X.forwardRef(({className:e,align:t="center",sideOffset:o=4,...i},a)=>H.jsx(cU,{ref:a,align:t,sideOffset:o,className:(0,dx.cn)("z-50 w-64 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",e),...i}));cW.displayName=cU.displayName;var cJ="Progress",[cY,cH]=(0,d6.b)(cJ),[cX,c0]=cY(cJ),c2=X.forwardRef((e,t)=>{var o,i;let{__scopeProgress:a,value:r=null,max:s,getValueLabel:n=c3,...l}=e;(s||0===s)&&!c8(s)&&console.error((o=`${s}`,`Invalid prop \`max\` of value \`${o}\` supplied to \`Progress\`. Only numbers greater than 0 are valid max values. Defaulting to \`100\`.`));let d=c8(s)?s:100;null===r||c6(r,d)||console.error((i=`${r}`,`Invalid prop \`value\` of value \`${i}\` supplied to \`Progress\`. The \`value\` prop must be:
|
|
41
41
|
- a positive number
|
|
42
42
|
- less than the value passed to \`max\` (or 100 if no \`max\` prop is set)
|
|
43
43
|
- \`null\` or \`undefined\` if the progress is indeterminate.
|
|
44
44
|
|
|
45
|
-
Defaulting to \`null\`.`));let c=uo(r,d)?r:null,u=ue(c)?n(c,d):void 0;return(0,H.jsx)(c5,{scope:a,value:c,max:d,children:(0,H.jsx)(cl.WV.div,{"aria-valuemax":d,"aria-valuemin":0,"aria-valuenow":ue(c)?c:void 0,"aria-valuetext":u,role:"progressbar","data-state":c9(c,d),"data-value":c??void 0,"data-max":d,...l,ref:t})})});c4.displayName=c0;var c7="ProgressIndicator",c8=X.forwardRef((e,t)=>{let{__scopeProgress:o,...i}=e,a=c3(c7,o);return(0,H.jsx)(cl.WV.div,{"data-state":c9(a.value,a.max),"data-value":a.value??void 0,"data-max":a.max,...i,ref:t})});function c6(e,t){return`${Math.round(e/t*100)}%`}function c9(e,t){return null==e?"indeterminate":e===t?"complete":"loading"}function ue(e){return"number"==typeof e}function ut(e){return ue(e)&&!isNaN(e)&&e>0}function uo(e,t){return ue(e)&&!isNaN(e)&&e<=t&&e>=0}c8.displayName=c7;let ui=X.forwardRef(({className:e,value:t,...o},i)=>H.jsx(c4,{ref:i,className:(0,dM.cn)("relative h-4 w-full overflow-hidden rounded-full bg-secondary",e),...o,children:H.jsx(c8,{className:"size-full flex-1 bg-primary transition-all",style:{transform:`translateX(-${100-(t||0)}%)`}})}));ui.displayName=c4.displayName;let ua=[{id:"alibaba:qwen3-coder-plus",provider:"alibaba",vendorId:"qwen3-coder-plus",displayName:"Qwen3 Coder Plus",family:"qwen3-coder-plus",status:"stable",context:{combinedMax:1048576,outputMax:65536},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1,outputPerMTokens:5},pricingSource:"models.dev",aliases:["alibaba/qwen3-coder-plus"],releasedAt:"2025-07-23",source:"https://www.alibabacloud.com/help/en/model-studio/models",contextSource:"https://www.alibabacloud.com/help/en/model-studio/models",verifiedAt:"2025-07-23"},{id:"amazon-bedrock:ai21.jamba-1-5-large-v1:0",provider:"amazon-bedrock",vendorId:"ai21.jamba-1-5-large-v1:0",displayName:"Jamba 1.5 Large",family:"ai21.jamba-1-5-large-v1:0",status:"stable",context:{combinedMax:256e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:2,outputPerMTokens:8},pricingSource:"models.dev",aliases:["amazon-bedrock/ai21.jamba-1-5-large-v1:0"],releasedAt:"2024-08-15",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2024-08-15"},{id:"amazon-bedrock:ai21.jamba-1-5-mini-v1:0",provider:"amazon-bedrock",vendorId:"ai21.jamba-1-5-mini-v1:0",displayName:"Jamba 1.5 Mini",family:"ai21.jamba-1-5-mini-v1:0",status:"stable",context:{combinedMax:256e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.2,outputPerMTokens:.4},pricingSource:"models.dev",aliases:["amazon-bedrock/ai21.jamba-1-5-mini-v1:0"],releasedAt:"2024-08-15",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2024-08-15"},{id:"amazon-bedrock:amazon.nova-lite-v1:0",provider:"amazon-bedrock",vendorId:"amazon.nova-lite-v1:0",displayName:"Nova Lite",family:"amazon.nova-lite-v1:0",status:"stable",context:{combinedMax:3e5,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.06,outputPerMTokens:.24},pricingSource:"models.dev",aliases:["amazon-bedrock/amazon.nova-lite-v1:0"],releasedAt:"2024-12-03",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2024-12-03"},{id:"amazon-bedrock:amazon.nova-micro-v1:0",provider:"amazon-bedrock",vendorId:"amazon.nova-micro-v1:0",displayName:"Nova Micro",family:"amazon.nova-micro-v1:0",status:"stable",context:{combinedMax:128e3,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.035,outputPerMTokens:.14},pricingSource:"models.dev",aliases:["amazon-bedrock/amazon.nova-micro-v1:0"],releasedAt:"2024-12-03",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2024-12-03"},{id:"amazon-bedrock:amazon.nova-premier-v1:0",provider:"amazon-bedrock",vendorId:"amazon.nova-premier-v1:0",displayName:"Nova Premier",family:"amazon.nova-premier-v1:0",status:"stable",context:{combinedMax:1e6,outputMax:16384},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:2.5,outputPerMTokens:12.5},pricingSource:"models.dev",aliases:["amazon-bedrock/amazon.nova-premier-v1:0"],releasedAt:"2024-12-03",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2024-12-03"},{id:"amazon-bedrock:amazon.nova-pro-v1:0",provider:"amazon-bedrock",vendorId:"amazon.nova-pro-v1:0",displayName:"Nova Pro",family:"amazon.nova-pro-v1:0",status:"stable",context:{combinedMax:3e5,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.8,outputPerMTokens:3.2},pricingSource:"models.dev",aliases:["amazon-bedrock/amazon.nova-pro-v1:0"],releasedAt:"2024-12-03",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2024-12-03"},{id:"amazon-bedrock:anthropic.claude-3-5-haiku-20241022-v1:0",provider:"amazon-bedrock",vendorId:"anthropic.claude-3-5-haiku-20241022-v1:0",displayName:"Claude Haiku 3.5",family:"anthropic.claude-3-5-haiku-20241022-v1:0",status:"stable",context:{combinedMax:2e5,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.8,outputPerMTokens:4},pricingSource:"models.dev",aliases:["amazon-bedrock/anthropic.claude-3-5-haiku-20241022-v1:0"],releasedAt:"2024-10-22",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2024-10-22"},{id:"amazon-bedrock:anthropic.claude-3-5-sonnet-20240620-v1:0",provider:"amazon-bedrock",vendorId:"anthropic.claude-3-5-sonnet-20240620-v1:0",displayName:"Claude Sonnet 3.5",family:"anthropic.claude-3-5-sonnet-20240620-v1:0",status:"stable",context:{combinedMax:2e5,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["amazon-bedrock/anthropic.claude-3-5-sonnet-20240620-v1:0"],releasedAt:"2024-06-20",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2024-06-20"},{id:"amazon-bedrock:anthropic.claude-3-5-sonnet-20241022-v2:0",provider:"amazon-bedrock",vendorId:"anthropic.claude-3-5-sonnet-20241022-v2:0",displayName:"Claude Sonnet 3.5 v2",family:"anthropic.claude-3-5-sonnet-20241022-v2:0",status:"stable",context:{combinedMax:2e5,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["amazon-bedrock/anthropic.claude-3-5-sonnet-20241022-v2:0"],releasedAt:"2024-10-22",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2024-10-22"},{id:"amazon-bedrock:anthropic.claude-3-7-sonnet-20250219-v1:0",provider:"amazon-bedrock",vendorId:"anthropic.claude-3-7-sonnet-20250219-v1:0",displayName:"Claude Sonnet 3.7",family:"anthropic.claude-3-7-sonnet-20250219-v1:0",status:"stable",context:{combinedMax:2e5,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["amazon-bedrock/anthropic.claude-3-7-sonnet-20250219-v1:0"],releasedAt:"2025-02-19",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2025-02-19"},{id:"amazon-bedrock:anthropic.claude-3-haiku-20240307-v1:0",provider:"amazon-bedrock",vendorId:"anthropic.claude-3-haiku-20240307-v1:0",displayName:"Claude Haiku 3",family:"anthropic.claude-3-haiku-20240307-v1:0",status:"stable",context:{combinedMax:2e5,outputMax:4096},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.25,outputPerMTokens:1.25},pricingSource:"models.dev",aliases:["amazon-bedrock/anthropic.claude-3-haiku-20240307-v1:0"],releasedAt:"2024-03-13",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2024-03-13"},{id:"amazon-bedrock:anthropic.claude-3-opus-20240229-v1:0",provider:"amazon-bedrock",vendorId:"anthropic.claude-3-opus-20240229-v1:0",displayName:"Claude Opus 3",family:"anthropic.claude-3-opus-20240229-v1:0",status:"stable",context:{combinedMax:2e5,outputMax:4096},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:15,outputPerMTokens:75},pricingSource:"models.dev",aliases:["amazon-bedrock/anthropic.claude-3-opus-20240229-v1:0"],releasedAt:"2024-02-29",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2024-02-29"},{id:"amazon-bedrock:anthropic.claude-3-sonnet-20240229-v1:0",provider:"amazon-bedrock",vendorId:"anthropic.claude-3-sonnet-20240229-v1:0",displayName:"Claude Sonnet 3",family:"anthropic.claude-3-sonnet-20240229-v1:0",status:"stable",context:{combinedMax:2e5,outputMax:4096},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["amazon-bedrock/anthropic.claude-3-sonnet-20240229-v1:0"],releasedAt:"2024-03-04",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2024-03-04"},{id:"amazon-bedrock:anthropic.claude-instant-v1",provider:"amazon-bedrock",vendorId:"anthropic.claude-instant-v1",displayName:"Claude Instant",family:"anthropic.claude-instant-v1",status:"stable",context:{combinedMax:1e5,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.8,outputPerMTokens:2.4},pricingSource:"models.dev",aliases:["amazon-bedrock/anthropic.claude-instant-v1"],releasedAt:"2023-03-01",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2023-03-01"},{id:"amazon-bedrock:anthropic.claude-opus-4-1-20250805-v1:0",provider:"amazon-bedrock",vendorId:"anthropic.claude-opus-4-1-20250805-v1:0",displayName:"Claude Opus 4.1",family:"anthropic.claude-opus-4-1-20250805-v1:0",status:"stable",context:{combinedMax:2e5,outputMax:32e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:15,outputPerMTokens:75},pricingSource:"models.dev",aliases:["amazon-bedrock/anthropic.claude-opus-4-1-20250805-v1:0"],releasedAt:"2025-08-05",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2025-08-05"},{id:"amazon-bedrock:anthropic.claude-opus-4-20250514-v1:0",provider:"amazon-bedrock",vendorId:"anthropic.claude-opus-4-20250514-v1:0",displayName:"Claude Opus 4",family:"anthropic.claude-opus-4-20250514-v1:0",status:"stable",context:{combinedMax:2e5,outputMax:32e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:15,outputPerMTokens:75},pricingSource:"models.dev",aliases:["amazon-bedrock/anthropic.claude-opus-4-20250514-v1:0"],releasedAt:"2025-05-22",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2025-05-22"},{id:"amazon-bedrock:anthropic.claude-sonnet-4-20250514-v1:0",provider:"amazon-bedrock",vendorId:"anthropic.claude-sonnet-4-20250514-v1:0",displayName:"Claude Sonnet 4",family:"anthropic.claude-sonnet-4-20250514-v1:0",status:"stable",context:{combinedMax:2e5,outputMax:64e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["amazon-bedrock/anthropic.claude-sonnet-4-20250514-v1:0"],releasedAt:"2025-05-22",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2025-05-22"},{id:"amazon-bedrock:anthropic.claude-v2",provider:"amazon-bedrock",vendorId:"anthropic.claude-v2",displayName:"Claude 2",family:"anthropic.claude-v2",status:"stable",context:{combinedMax:1e5,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:8,outputPerMTokens:24},pricingSource:"models.dev",aliases:["amazon-bedrock/anthropic.claude-v2"],releasedAt:"2023-07-11",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2023-07-11"},{id:"amazon-bedrock:anthropic.claude-v2:1",provider:"amazon-bedrock",vendorId:"anthropic.claude-v2:1",displayName:"Claude 2.1",family:"anthropic.claude-v2:1",status:"stable",context:{combinedMax:2e5,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:8,outputPerMTokens:24},pricingSource:"models.dev",aliases:["amazon-bedrock/anthropic.claude-v2:1"],releasedAt:"2023-11-21",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2023-11-21"},{id:"amazon-bedrock:cohere.command-light-text-v14",provider:"amazon-bedrock",vendorId:"cohere.command-light-text-v14",displayName:"Command Light",family:"cohere.command-light-text-v14",status:"stable",context:{combinedMax:4096,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.3,outputPerMTokens:.6},pricingSource:"models.dev",aliases:["amazon-bedrock/cohere.command-light-text-v14"],releasedAt:"2023-11-01",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2023-11-01"},{id:"amazon-bedrock:cohere.command-r-plus-v1:0",provider:"amazon-bedrock",vendorId:"cohere.command-r-plus-v1:0",displayName:"Command R+",family:"cohere.command-r-plus-v1:0",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["amazon-bedrock/cohere.command-r-plus-v1:0"],releasedAt:"2024-04-04",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2024-04-04"},{id:"amazon-bedrock:cohere.command-r-v1:0",provider:"amazon-bedrock",vendorId:"cohere.command-r-v1:0",displayName:"Command R",family:"cohere.command-r-v1:0",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.5,outputPerMTokens:1.5},pricingSource:"models.dev",aliases:["amazon-bedrock/cohere.command-r-v1:0"],releasedAt:"2024-03-11",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2024-03-11"},{id:"amazon-bedrock:cohere.command-text-v14",provider:"amazon-bedrock",vendorId:"cohere.command-text-v14",displayName:"Command",family:"cohere.command-text-v14",status:"stable",context:{combinedMax:4096,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1.5,outputPerMTokens:2},pricingSource:"models.dev",aliases:["amazon-bedrock/cohere.command-text-v14"],releasedAt:"2023-11-01",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2023-11-01"},{id:"amazon-bedrock:deepseek.r1-v1:0",provider:"amazon-bedrock",vendorId:"deepseek.r1-v1:0",displayName:"DeepSeek-R1",family:"deepseek.r1-v1:0",status:"stable",context:{combinedMax:128e3,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1.35,outputPerMTokens:5.4},pricingSource:"models.dev",aliases:["amazon-bedrock/deepseek.r1-v1:0"],releasedAt:"2025-01-20",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2025-05-29"},{id:"amazon-bedrock:meta.llama3-1-70b-instruct-v1:0",provider:"amazon-bedrock",vendorId:"meta.llama3-1-70b-instruct-v1:0",displayName:"Llama 3.1 70B Instruct",family:"meta.llama3-1-70b-instruct-v1:0",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.72,outputPerMTokens:.72},pricingSource:"models.dev",aliases:["amazon-bedrock/meta.llama3-1-70b-instruct-v1:0"],releasedAt:"2024-07-23",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2024-07-23"},{id:"amazon-bedrock:meta.llama3-1-8b-instruct-v1:0",provider:"amazon-bedrock",vendorId:"meta.llama3-1-8b-instruct-v1:0",displayName:"Llama 3.1 8B Instruct",family:"meta.llama3-1-8b-instruct-v1:0",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.22,outputPerMTokens:.22},pricingSource:"models.dev",aliases:["amazon-bedrock/meta.llama3-1-8b-instruct-v1:0"],releasedAt:"2024-07-23",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2024-07-23"},{id:"amazon-bedrock:meta.llama3-2-11b-instruct-v1:0",provider:"amazon-bedrock",vendorId:"meta.llama3-2-11b-instruct-v1:0",displayName:"Llama 3.2 11B Instruct",family:"meta.llama3-2-11b-instruct-v1:0",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.16,outputPerMTokens:.16},pricingSource:"models.dev",aliases:["amazon-bedrock/meta.llama3-2-11b-instruct-v1:0"],releasedAt:"2024-09-25",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2024-09-25"},{id:"amazon-bedrock:meta.llama3-2-1b-instruct-v1:0",provider:"amazon-bedrock",vendorId:"meta.llama3-2-1b-instruct-v1:0",displayName:"Llama 3.2 1B Instruct",family:"meta.llama3-2-1b-instruct-v1:0",status:"stable",context:{combinedMax:131e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.1,outputPerMTokens:.1},pricingSource:"models.dev",aliases:["amazon-bedrock/meta.llama3-2-1b-instruct-v1:0"],releasedAt:"2024-09-25",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2024-09-25"},{id:"amazon-bedrock:meta.llama3-2-3b-instruct-v1:0",provider:"amazon-bedrock",vendorId:"meta.llama3-2-3b-instruct-v1:0",displayName:"Llama 3.2 3B Instruct",family:"meta.llama3-2-3b-instruct-v1:0",status:"stable",context:{combinedMax:131e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.15,outputPerMTokens:.15},pricingSource:"models.dev",aliases:["amazon-bedrock/meta.llama3-2-3b-instruct-v1:0"],releasedAt:"2024-09-25",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2024-09-25"},{id:"amazon-bedrock:meta.llama3-2-90b-instruct-v1:0",provider:"amazon-bedrock",vendorId:"meta.llama3-2-90b-instruct-v1:0",displayName:"Llama 3.2 90B Instruct",family:"meta.llama3-2-90b-instruct-v1:0",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.72,outputPerMTokens:.72},pricingSource:"models.dev",aliases:["amazon-bedrock/meta.llama3-2-90b-instruct-v1:0"],releasedAt:"2024-09-25",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2024-09-25"},{id:"amazon-bedrock:meta.llama3-3-70b-instruct-v1:0",provider:"amazon-bedrock",vendorId:"meta.llama3-3-70b-instruct-v1:0",displayName:"Llama 3.3 70B Instruct",family:"meta.llama3-3-70b-instruct-v1:0",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.72,outputPerMTokens:.72},pricingSource:"models.dev",aliases:["amazon-bedrock/meta.llama3-3-70b-instruct-v1:0"],releasedAt:"2024-12-06",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2024-12-06"},{id:"amazon-bedrock:meta.llama3-70b-instruct-v1:0",provider:"amazon-bedrock",vendorId:"meta.llama3-70b-instruct-v1:0",displayName:"Llama 3 70B Instruct",family:"meta.llama3-70b-instruct-v1:0",status:"stable",context:{combinedMax:8192,outputMax:2048},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:2.65,outputPerMTokens:3.5},pricingSource:"models.dev",aliases:["amazon-bedrock/meta.llama3-70b-instruct-v1:0"],releasedAt:"2024-07-23",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2024-07-23"},{id:"amazon-bedrock:meta.llama3-8b-instruct-v1:0",provider:"amazon-bedrock",vendorId:"meta.llama3-8b-instruct-v1:0",displayName:"Llama 3 8B Instruct",family:"meta.llama3-8b-instruct-v1:0",status:"stable",context:{combinedMax:8192,outputMax:2048},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.3,outputPerMTokens:.6},pricingSource:"models.dev",aliases:["amazon-bedrock/meta.llama3-8b-instruct-v1:0"],releasedAt:"2024-07-23",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2024-07-23"},{id:"amazon-bedrock:meta.llama4-maverick-17b-instruct-v1:0",provider:"amazon-bedrock",vendorId:"meta.llama4-maverick-17b-instruct-v1:0",displayName:"Llama 4 Maverick 17B Instruct",family:"meta.llama4-maverick-17b-instruct-v1:0",status:"stable",context:{combinedMax:1e6,outputMax:16384},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.24,outputPerMTokens:.97},pricingSource:"models.dev",aliases:["amazon-bedrock/meta.llama4-maverick-17b-instruct-v1:0"],releasedAt:"2025-04-05",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2025-04-05"},{id:"amazon-bedrock:meta.llama4-scout-17b-instruct-v1:0",provider:"amazon-bedrock",vendorId:"meta.llama4-scout-17b-instruct-v1:0",displayName:"Llama 4 Scout 17B Instruct",family:"meta.llama4-scout-17b-instruct-v1:0",status:"stable",context:{combinedMax:35e5,outputMax:16384},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.17,outputPerMTokens:.66},pricingSource:"models.dev",aliases:["amazon-bedrock/meta.llama4-scout-17b-instruct-v1:0"],releasedAt:"2025-04-05",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2025-04-05"},{id:"anthropic:claude-3-5-haiku-20241022",provider:"anthropic",vendorId:"claude-3-5-haiku-20241022",displayName:"Claude Haiku 3.5",family:"claude-3-5-haiku-20241022",status:"stable",context:{combinedMax:2e5,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.8,outputPerMTokens:4},pricingSource:"models.dev",aliases:["anthropic/claude-3-5-haiku-20241022"],releasedAt:"2024-10-22",source:"https://docs.anthropic.com/en/docs/about-claude/models",contextSource:"https://docs.anthropic.com/en/docs/about-claude/models",verifiedAt:"2024-10-22"},{id:"anthropic:claude-3-5-sonnet-20240620",provider:"anthropic",vendorId:"claude-3-5-sonnet-20240620",displayName:"Claude Sonnet 3.5",family:"claude-3-5-sonnet-20240620",status:"stable",context:{combinedMax:2e5,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["anthropic/claude-3-5-sonnet-20240620"],releasedAt:"2024-06-20",source:"https://docs.anthropic.com/en/docs/about-claude/models",contextSource:"https://docs.anthropic.com/en/docs/about-claude/models",verifiedAt:"2024-06-20"},{id:"anthropic:claude-3-5-sonnet-20241022",provider:"anthropic",vendorId:"claude-3-5-sonnet-20241022",displayName:"Claude Sonnet 3.5 v2",family:"claude-3-5-sonnet-20241022",status:"stable",context:{combinedMax:2e5,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["anthropic/claude-3-5-sonnet-20241022"],releasedAt:"2024-10-22",source:"https://docs.anthropic.com/en/docs/about-claude/models",contextSource:"https://docs.anthropic.com/en/docs/about-claude/models",verifiedAt:"2024-10-22"},{id:"anthropic:claude-3-7-sonnet-20250219",provider:"anthropic",vendorId:"claude-3-7-sonnet-20250219",displayName:"Claude Sonnet 3.7",family:"claude-3-7-sonnet-20250219",status:"stable",context:{combinedMax:2e5,outputMax:64e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["anthropic/claude-3-7-sonnet-20250219"],releasedAt:"2025-02-19",source:"https://docs.anthropic.com/en/docs/about-claude/models",contextSource:"https://docs.anthropic.com/en/docs/about-claude/models",verifiedAt:"2025-02-19"},{id:"anthropic:claude-3-haiku-20240307",provider:"anthropic",vendorId:"claude-3-haiku-20240307",displayName:"Claude Haiku 3",family:"claude-3-haiku-20240307",status:"stable",context:{combinedMax:2e5,outputMax:4096},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.25,outputPerMTokens:1.25},pricingSource:"models.dev",aliases:["anthropic/claude-3-haiku-20240307"],releasedAt:"2024-03-13",source:"https://docs.anthropic.com/en/docs/about-claude/models",contextSource:"https://docs.anthropic.com/en/docs/about-claude/models",verifiedAt:"2024-03-13"},{id:"anthropic:claude-3-opus-20240229",provider:"anthropic",vendorId:"claude-3-opus-20240229",displayName:"Claude Opus 3",family:"claude-3-opus-20240229",status:"stable",context:{combinedMax:2e5,outputMax:4096},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:15,outputPerMTokens:75},pricingSource:"models.dev",aliases:["anthropic/claude-3-opus-20240229"],releasedAt:"2024-02-29",source:"https://docs.anthropic.com/en/docs/about-claude/models",contextSource:"https://docs.anthropic.com/en/docs/about-claude/models",verifiedAt:"2024-02-29"},{id:"anthropic:claude-3-sonnet-20240229",provider:"anthropic",vendorId:"claude-3-sonnet-20240229",displayName:"Claude Sonnet 3",family:"claude-3-sonnet-20240229",status:"stable",context:{combinedMax:2e5,outputMax:4096},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["anthropic/claude-3-sonnet-20240229"],releasedAt:"2024-03-04",source:"https://docs.anthropic.com/en/docs/about-claude/models",contextSource:"https://docs.anthropic.com/en/docs/about-claude/models",verifiedAt:"2024-03-04"},{id:"anthropic:claude-opus-4-1-20250805",provider:"anthropic",vendorId:"claude-opus-4-1-20250805",displayName:"Claude Opus 4.1",family:"claude-opus-4-1-20250805",status:"stable",context:{combinedMax:2e5,outputMax:32e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:15,outputPerMTokens:75},pricingSource:"models.dev",aliases:["anthropic/claude-opus-4-1-20250805"],releasedAt:"2025-08-05",source:"https://docs.anthropic.com/en/docs/about-claude/models",contextSource:"https://docs.anthropic.com/en/docs/about-claude/models",verifiedAt:"2025-08-05"},{id:"anthropic:claude-opus-4-20250514",provider:"anthropic",vendorId:"claude-opus-4-20250514",displayName:"Claude Opus 4",family:"claude-opus-4-20250514",status:"stable",context:{combinedMax:2e5,outputMax:32e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:15,outputPerMTokens:75},pricingSource:"models.dev",aliases:["anthropic/claude-opus-4-20250514"],releasedAt:"2025-05-22",source:"https://docs.anthropic.com/en/docs/about-claude/models",contextSource:"https://docs.anthropic.com/en/docs/about-claude/models",verifiedAt:"2025-05-22"},{id:"anthropic:claude-sonnet-4-20250514",provider:"anthropic",vendorId:"claude-sonnet-4-20250514",displayName:"Claude Sonnet 4",family:"claude-sonnet-4-20250514",status:"stable",context:{combinedMax:2e5,outputMax:64e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["anthropic/claude-sonnet-4-20250514"],releasedAt:"2025-05-22",source:"https://docs.anthropic.com/en/docs/about-claude/models",contextSource:"https://docs.anthropic.com/en/docs/about-claude/models",verifiedAt:"2025-05-22"},{id:"azure:codex-mini",provider:"azure",vendorId:"codex-mini",displayName:"Codex Mini",family:"codex-mini",status:"stable",context:{combinedMax:2e5,outputMax:1e5},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1.5,outputPerMTokens:6},pricingSource:"models.dev",aliases:["azure/codex-mini"],releasedAt:"2025-05-16",source:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",contextSource:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",verifiedAt:"2025-05-16"},{id:"azure:gpt-3.5-turbo-0125",provider:"azure",vendorId:"gpt-3.5-turbo-0125",displayName:"GPT-3.5 Turbo 0125",family:"gpt-3.5-turbo-0125",status:"stable",context:{combinedMax:16384,outputMax:16384},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.5,outputPerMTokens:1.5},pricingSource:"models.dev",aliases:["azure/gpt-3.5-turbo-0125"],releasedAt:"2024-01-25",source:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",contextSource:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",verifiedAt:"2024-01-25"},{id:"azure:gpt-3.5-turbo-0301",provider:"azure",vendorId:"gpt-3.5-turbo-0301",displayName:"GPT-3.5 Turbo 0301",family:"gpt-3.5-turbo-0301",status:"stable",context:{combinedMax:4096,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1.5,outputPerMTokens:2},pricingSource:"models.dev",aliases:["azure/gpt-3.5-turbo-0301"],releasedAt:"2023-03-01",source:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",contextSource:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",verifiedAt:"2023-03-01"},{id:"azure:gpt-3.5-turbo-0613",provider:"azure",vendorId:"gpt-3.5-turbo-0613",displayName:"GPT-3.5 Turbo 0613",family:"gpt-3.5-turbo-0613",status:"stable",context:{combinedMax:16384,outputMax:16384},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:3,outputPerMTokens:4},pricingSource:"models.dev",aliases:["azure/gpt-3.5-turbo-0613"],releasedAt:"2023-06-13",source:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",contextSource:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",verifiedAt:"2023-06-13"},{id:"azure:gpt-3.5-turbo-1106",provider:"azure",vendorId:"gpt-3.5-turbo-1106",displayName:"GPT-3.5 Turbo 1106",family:"gpt-3.5-turbo-1106",status:"stable",context:{combinedMax:16384,outputMax:16384},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1,outputPerMTokens:2},pricingSource:"models.dev",aliases:["azure/gpt-3.5-turbo-1106"],releasedAt:"2023-11-06",source:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",contextSource:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",verifiedAt:"2023-11-06"},{id:"azure:gpt-3.5-turbo-instruct",provider:"azure",vendorId:"gpt-3.5-turbo-instruct",displayName:"GPT-3.5 Turbo Instruct",family:"gpt-3.5-turbo-instruct",status:"stable",context:{combinedMax:4096,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1.5,outputPerMTokens:2},pricingSource:"models.dev",aliases:["azure/gpt-3.5-turbo-instruct"],releasedAt:"2023-09-21",source:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",contextSource:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",verifiedAt:"2023-09-21"},{id:"azure:gpt-4",provider:"azure",vendorId:"gpt-4",displayName:"GPT-4",family:"gpt-4",status:"stable",context:{combinedMax:8192,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:60,outputPerMTokens:120},pricingSource:"models.dev",aliases:["azure/gpt-4"],releasedAt:"2023-03-14",source:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",contextSource:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",verifiedAt:"2023-03-14"},{id:"azure:gpt-4-32k",provider:"azure",vendorId:"gpt-4-32k",displayName:"GPT-4 32K",family:"gpt-4-32k",status:"stable",context:{combinedMax:32768,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:60,outputPerMTokens:120},pricingSource:"models.dev",aliases:["azure/gpt-4-32k"],releasedAt:"2023-03-14",source:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",contextSource:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",verifiedAt:"2023-03-14"},{id:"azure:gpt-4-turbo",provider:"azure",vendorId:"gpt-4-turbo",displayName:"GPT-4 Turbo",family:"gpt-4-turbo",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:10,outputPerMTokens:30},pricingSource:"models.dev",aliases:["azure/gpt-4-turbo"],releasedAt:"2023-11-06",source:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",contextSource:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",verifiedAt:"2024-04-09"},{id:"azure:gpt-4-turbo-vision",provider:"azure",vendorId:"gpt-4-turbo-vision",displayName:"GPT-4 Turbo Vision",family:"gpt-4-turbo-vision",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:10,outputPerMTokens:30},pricingSource:"models.dev",aliases:["azure/gpt-4-turbo-vision"],releasedAt:"2023-11-06",source:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",contextSource:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",verifiedAt:"2024-04-09"},{id:"azure:gpt-4.1",provider:"azure",vendorId:"gpt-4.1",displayName:"GPT-4.1",family:"gpt-4.1",status:"stable",context:{combinedMax:1047576,outputMax:32768},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:2,outputPerMTokens:8},pricingSource:"models.dev",aliases:["azure/gpt-4.1"],releasedAt:"2025-04-14",source:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",contextSource:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",verifiedAt:"2025-04-14"},{id:"azure:gpt-4.1-mini",provider:"azure",vendorId:"gpt-4.1-mini",displayName:"GPT-4.1 mini",family:"gpt-4.1-mini",status:"stable",context:{combinedMax:1047576,outputMax:32768},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.4,outputPerMTokens:1.6},pricingSource:"models.dev",aliases:["azure/gpt-4.1-mini"],releasedAt:"2025-04-14",source:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",contextSource:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",verifiedAt:"2025-04-14"},{id:"azure:gpt-4.1-nano",provider:"azure",vendorId:"gpt-4.1-nano",displayName:"GPT-4.1 nano",family:"gpt-4.1-nano",status:"stable",context:{combinedMax:1047576,outputMax:32768},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.1,outputPerMTokens:.4},pricingSource:"models.dev",aliases:["azure/gpt-4.1-nano"],releasedAt:"2025-04-14",source:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",contextSource:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",verifiedAt:"2025-04-14"},{id:"azure:gpt-4o",provider:"azure",vendorId:"gpt-4o",displayName:"GPT-4o",family:"gpt-4o",status:"stable",context:{combinedMax:128e3,outputMax:16384},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:2.5,outputPerMTokens:10},pricingSource:"models.dev",aliases:["azure/gpt-4o"],releasedAt:"2024-05-13",source:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",contextSource:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",verifiedAt:"2024-05-13"},{id:"azure:gpt-4o-mini",provider:"azure",vendorId:"gpt-4o-mini",displayName:"GPT-4o mini",family:"gpt-4o-mini",status:"stable",context:{combinedMax:128e3,outputMax:16384},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.15,outputPerMTokens:.6},pricingSource:"models.dev",aliases:["azure/gpt-4o-mini"],releasedAt:"2024-07-18",source:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",contextSource:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",verifiedAt:"2024-07-18"},{id:"azure:gpt-5",provider:"azure",vendorId:"gpt-5",displayName:"GPT-5",family:"gpt-5",status:"stable",context:{combinedMax:272e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:1.25,outputPerMTokens:10},pricingSource:"models.dev",aliases:["azure/gpt-5"],releasedAt:"2025-08-07",source:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",contextSource:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",verifiedAt:"2025-08-07"},{id:"azure:gpt-5-chat",provider:"azure",vendorId:"gpt-5-chat",displayName:"GPT-5 Chat",family:"gpt-5-chat",status:"stable",context:{combinedMax:128e3,outputMax:16384},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:1.25,outputPerMTokens:10},pricingSource:"models.dev",aliases:["azure/gpt-5-chat"],releasedAt:"2025-08-07",source:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",contextSource:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",verifiedAt:"2025-08-07"},{id:"azure:gpt-5-mini",provider:"azure",vendorId:"gpt-5-mini",displayName:"GPT-5 Mini",family:"gpt-5-mini",status:"stable",context:{combinedMax:272e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.25,outputPerMTokens:2},pricingSource:"models.dev",aliases:["azure/gpt-5-mini"],releasedAt:"2025-08-07",source:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",contextSource:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",verifiedAt:"2025-08-07"},{id:"azure:gpt-5-nano",provider:"azure",vendorId:"gpt-5-nano",displayName:"GPT-5 Nano",family:"gpt-5-nano",status:"stable",context:{combinedMax:272e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.05,outputPerMTokens:.4},pricingSource:"models.dev",aliases:["azure/gpt-5-nano"],releasedAt:"2025-08-07",source:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",contextSource:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",verifiedAt:"2025-08-07"},{id:"azure:o1",provider:"azure",vendorId:"o1",displayName:"o1",family:"o1",status:"stable",context:{combinedMax:2e5,outputMax:1e5},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:15,outputPerMTokens:60},pricingSource:"models.dev",aliases:["azure/o1"],releasedAt:"2024-12-05",source:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",contextSource:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",verifiedAt:"2024-12-05"},{id:"azure:o1-mini",provider:"azure",vendorId:"o1-mini",displayName:"o1-mini",family:"o1-mini",status:"stable",context:{combinedMax:128e3,outputMax:65536},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1.1,outputPerMTokens:4.4},pricingSource:"models.dev",aliases:["azure/o1-mini"],releasedAt:"2024-09-12",source:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",contextSource:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",verifiedAt:"2024-09-12"},{id:"azure:o1-preview",provider:"azure",vendorId:"o1-preview",displayName:"o1-preview",family:"o1-preview",status:"stable",context:{combinedMax:128e3,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:16.5,outputPerMTokens:66},pricingSource:"models.dev",aliases:["azure/o1-preview"],releasedAt:"2024-09-12",source:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",contextSource:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",verifiedAt:"2024-09-12"},{id:"azure:o3",provider:"azure",vendorId:"o3",displayName:"o3",family:"o3",status:"stable",context:{combinedMax:2e5,outputMax:1e5},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:2,outputPerMTokens:8},pricingSource:"models.dev",aliases:["azure/o3"],releasedAt:"2025-04-16",source:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",contextSource:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",verifiedAt:"2025-04-16"},{id:"azure:o3-mini",provider:"azure",vendorId:"o3-mini",displayName:"o3-mini",family:"o3-mini",status:"stable",context:{combinedMax:2e5,outputMax:1e5},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1.1,outputPerMTokens:4.4},pricingSource:"models.dev",aliases:["azure/o3-mini"],releasedAt:"2024-12-20",source:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",contextSource:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",verifiedAt:"2025-01-29"},{id:"azure:o4-mini",provider:"azure",vendorId:"o4-mini",displayName:"o4-mini",family:"o4-mini",status:"stable",context:{combinedMax:2e5,outputMax:1e5},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:1.1,outputPerMTokens:4.4},pricingSource:"models.dev",aliases:["azure/o4-mini"],releasedAt:"2025-04-16",source:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",contextSource:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",verifiedAt:"2025-04-16"},{id:"baseten:Moonshotai-Kimi-K2-Instruct-0905",provider:"baseten",vendorId:"Moonshotai-Kimi-K2-Instruct-0905",displayName:"moonshotai/Kimi-K2-Instruct-0905",family:"Moonshotai-Kimi-K2-Instruct-0905",status:"stable",context:{combinedMax:262144,outputMax:262144},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.6,outputPerMTokens:2.5},pricingSource:"models.dev",aliases:["baseten/Moonshotai-Kimi-K2-Instruct-0905"],releasedAt:"2025-09-05",source:"https://docs.baseten.co/development/model-apis/overview",contextSource:"https://docs.baseten.co/development/model-apis/overview",verifiedAt:"2025-09-05"},{id:"baseten:Qwen-Qwen3-Coder-480B-A35B-Instruct",provider:"baseten",vendorId:"Qwen-Qwen3-Coder-480B-A35B-Instruct",displayName:"Qwen/Qwen3-Coder-480B-A35B-Instruct",family:"Qwen-Qwen3-Coder-480B-A35B-Instruct",status:"stable",context:{combinedMax:262144,outputMax:66536},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.38,outputPerMTokens:1.53},pricingSource:"models.dev",aliases:["baseten/Qwen-Qwen3-Coder-480B-A35B-Instruct"],releasedAt:"2025-07-23",source:"https://docs.baseten.co/development/model-apis/overview",contextSource:"https://docs.baseten.co/development/model-apis/overview",verifiedAt:"2025-07-23"},{id:"cerebras:gpt-oss-120b",provider:"cerebras",vendorId:"gpt-oss-120b",displayName:"GPT OSS 120B",family:"gpt-oss-120b",status:"stable",context:{combinedMax:131072,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.25,outputPerMTokens:.69},pricingSource:"models.dev",aliases:["cerebras/gpt-oss-120b"],releasedAt:"2025-08-05",source:"https://inference-docs.cerebras.ai/models/overview",contextSource:"https://inference-docs.cerebras.ai/models/overview",verifiedAt:"2025-08-05"},{id:"cerebras:qwen-3-235b-a22b-instruct-2507",provider:"cerebras",vendorId:"qwen-3-235b-a22b-instruct-2507",displayName:"Qwen 3 235B Instruct",family:"qwen-3-235b-a22b-instruct-2507",status:"stable",context:{combinedMax:131e3,outputMax:32e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.6,outputPerMTokens:1.2},pricingSource:"models.dev",aliases:["cerebras/qwen-3-235b-a22b-instruct-2507"],releasedAt:"2025-07-22",source:"https://inference-docs.cerebras.ai/models/overview",contextSource:"https://inference-docs.cerebras.ai/models/overview",verifiedAt:"2025-07-22"},{id:"cerebras:qwen-3-coder-480b",provider:"cerebras",vendorId:"qwen-3-coder-480b",displayName:"Qwen 3 Coder 480B",family:"qwen-3-coder-480b",status:"stable",context:{combinedMax:131e3,outputMax:32e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:2,outputPerMTokens:2},pricingSource:"models.dev",aliases:["cerebras/qwen-3-coder-480b"],releasedAt:"2025-07-23",source:"https://inference-docs.cerebras.ai/models/overview",contextSource:"https://inference-docs.cerebras.ai/models/overview",verifiedAt:"2025-07-23"},{id:"chutes:chutesai/Devstral-Small-2505",provider:"chutes",vendorId:"chutesai/Devstral-Small-2505",displayName:"Devstral Small (2505)",family:"chutesai/Devstral-Small-2505",status:"stable",context:{combinedMax:32768,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.02,outputPerMTokens:.08},pricingSource:"models.dev",aliases:["chutes/chutesai/Devstral-Small-2505"],releasedAt:"2025-05-21",source:"https://llm.chutes.ai/v1/models",contextSource:"https://llm.chutes.ai/v1/models",verifiedAt:"2025-05-21"},{id:"chutes:chutesai/Mistral-Small-3.2-24B-Instruct-2506",provider:"chutes",vendorId:"chutesai/Mistral-Small-3.2-24B-Instruct-2506",displayName:"Mistral Small 3.2 24B Instruct (2506)",family:"chutesai/Mistral-Small-3.2-24B-Instruct-2506",status:"stable",context:{combinedMax:131072,outputMax:131072},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.02,outputPerMTokens:.08},pricingSource:"models.dev",aliases:["chutes/chutesai/Mistral-Small-3.2-24B-Instruct-2506"],releasedAt:"2025-06-20",source:"https://llm.chutes.ai/v1/models",contextSource:"https://llm.chutes.ai/v1/models",verifiedAt:"2025-06-20"},{id:"chutes:deepseek-ai/DeepSeek-R1-0528",provider:"chutes",vendorId:"deepseek-ai/DeepSeek-R1-0528",displayName:"DeepSeek R1 (0528)",family:"deepseek-ai/DeepSeek-R1-0528",status:"stable",context:{combinedMax:75e3,outputMax:163840},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.18,outputPerMTokens:.72},pricingSource:"models.dev",aliases:["chutes/deepseek-ai/DeepSeek-R1-0528"],releasedAt:"2025-08-01",source:"https://llm.chutes.ai/v1/models",contextSource:"https://llm.chutes.ai/v1/models",verifiedAt:"2025-08-01"},{id:"chutes:deepseek-ai/DeepSeek-R1-0528-Qwen3-8B",provider:"chutes",vendorId:"deepseek-ai/DeepSeek-R1-0528-Qwen3-8B",displayName:"DeepSeek R1 0528 Qwen3 8B",family:"deepseek-ai/DeepSeek-R1-0528-Qwen3-8B",status:"stable",context:{combinedMax:131072,outputMax:131072},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.02,outputPerMTokens:.07},pricingSource:"models.dev",aliases:["chutes/deepseek-ai/DeepSeek-R1-0528-Qwen3-8B"],releasedAt:"2025-05-29",source:"https://llm.chutes.ai/v1/models",contextSource:"https://llm.chutes.ai/v1/models",verifiedAt:"2025-05-29"},{id:"chutes:deepseek-ai/DeepSeek-R1-Distill-Llama-70B",provider:"chutes",vendorId:"deepseek-ai/DeepSeek-R1-Distill-Llama-70B",displayName:"DeepSeek R1 Distill Llama 70B",family:"deepseek-ai/DeepSeek-R1-Distill-Llama-70B",status:"stable",context:{combinedMax:131072,outputMax:131072},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.03,outputPerMTokens:.14},pricingSource:"models.dev",aliases:["chutes/deepseek-ai/DeepSeek-R1-Distill-Llama-70B"],releasedAt:"2025-01-23",source:"https://llm.chutes.ai/v1/models",contextSource:"https://llm.chutes.ai/v1/models",verifiedAt:"2025-01-23"},{id:"chutes:deepseek-ai/DeepSeek-V3-0324",provider:"chutes",vendorId:"deepseek-ai/DeepSeek-V3-0324",displayName:"DeepSeek V3 (0324)",family:"deepseek-ai/DeepSeek-V3-0324",status:"stable",context:{combinedMax:75e3,outputMax:163840},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.18,outputPerMTokens:.72},pricingSource:"models.dev",aliases:["chutes/deepseek-ai/DeepSeek-V3-0324"],releasedAt:"2025-08-01",source:"https://llm.chutes.ai/v1/models",contextSource:"https://llm.chutes.ai/v1/models",verifiedAt:"2025-08-01"},{id:"chutes:deepseek-ai/DeepSeek-V3.1",provider:"chutes",vendorId:"deepseek-ai/DeepSeek-V3.1",displayName:"DeepSeek V3.1",family:"deepseek-ai/DeepSeek-V3.1",status:"stable",context:{combinedMax:163840,outputMax:163840},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.2,outputPerMTokens:.8},pricingSource:"models.dev",aliases:["chutes/deepseek-ai/DeepSeek-V3.1"],releasedAt:"2025-08-21",source:"https://llm.chutes.ai/v1/models",contextSource:"https://llm.chutes.ai/v1/models",verifiedAt:"2025-08-21"},{id:"chutes:deepseek-ai/DeepSeek-V3.1:THINKING",provider:"chutes",vendorId:"deepseek-ai/DeepSeek-V3.1:THINKING",displayName:"DeepSeek V3.1 Reasoning",family:"deepseek-ai/DeepSeek-V3.1:THINKING",status:"stable",context:{combinedMax:163840,outputMax:163840},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.2,outputPerMTokens:.8},pricingSource:"models.dev",aliases:["chutes/deepseek-ai/DeepSeek-V3.1:THINKING"],releasedAt:"2025-08-21",source:"https://llm.chutes.ai/v1/models",contextSource:"https://llm.chutes.ai/v1/models",verifiedAt:"2025-08-21"},{id:"chutes:moonshotai/Kimi-K2-Instruct-75k",provider:"chutes",vendorId:"moonshotai/Kimi-K2-Instruct-75k",displayName:"Kimi K2 Instruct",family:"moonshotai/Kimi-K2-Instruct-75k",status:"stable",context:{combinedMax:75e3,outputMax:75e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.15,outputPerMTokens:.59},pricingSource:"models.dev",aliases:["chutes/moonshotai/Kimi-K2-Instruct-75k"],releasedAt:"2025-08-01",source:"https://llm.chutes.ai/v1/models",contextSource:"https://llm.chutes.ai/v1/models",verifiedAt:"2025-08-01"},{id:"chutes:openai/gpt-oss-120b",provider:"chutes",vendorId:"openai/gpt-oss-120b",displayName:"GPT OSS 120B",family:"openai/gpt-oss-120b",status:"stable",context:{combinedMax:131072,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.1,outputPerMTokens:.41},pricingSource:"models.dev",aliases:["chutes/openai/gpt-oss-120b"],releasedAt:"2025-08-05",source:"https://llm.chutes.ai/v1/models",contextSource:"https://llm.chutes.ai/v1/models",verifiedAt:"2025-08-05"},{id:"chutes:Qwen/Qwen3-235B-A22B-Instruct-2507",provider:"chutes",vendorId:"Qwen/Qwen3-235B-A22B-Instruct-2507",displayName:"Qwen3 235B A22B Instruct 2507",family:"Qwen/Qwen3-235B-A22B-Instruct-2507",status:"stable",context:{combinedMax:262144,outputMax:131072},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.078,outputPerMTokens:.312},pricingSource:"models.dev",aliases:["chutes/Qwen/Qwen3-235B-A22B-Instruct-2507"],releasedAt:"2025-04-28",source:"https://llm.chutes.ai/v1/models",contextSource:"https://llm.chutes.ai/v1/models",verifiedAt:"2025-07-21"},{id:"chutes:Qwen/Qwen3-235B-A22B-Thinking-2507",provider:"chutes",vendorId:"Qwen/Qwen3-235B-A22B-Thinking-2507",displayName:"Qwen3-235B-A22B-Thinking-2507",family:"Qwen/Qwen3-235B-A22B-Thinking-2507",status:"stable",context:{combinedMax:262144,outputMax:262144},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.078,outputPerMTokens:.312},pricingSource:"models.dev",aliases:["chutes/Qwen/Qwen3-235B-A22B-Thinking-2507"],releasedAt:"2025-07-25",source:"https://llm.chutes.ai/v1/models",contextSource:"https://llm.chutes.ai/v1/models",verifiedAt:"2025-07-25"},{id:"chutes:Qwen/Qwen3-30B-A3B",provider:"chutes",vendorId:"Qwen/Qwen3-30B-A3B",displayName:"Qwen3 30B A3B",family:"Qwen/Qwen3-30B-A3B",status:"stable",context:{combinedMax:40960,outputMax:40960},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.02,outputPerMTokens:.08},pricingSource:"models.dev",aliases:["chutes/Qwen/Qwen3-30B-A3B"],releasedAt:"2025-04-28",source:"https://llm.chutes.ai/v1/models",contextSource:"https://llm.chutes.ai/v1/models",verifiedAt:"2025-04-28"},{id:"chutes:Qwen/Qwen3-30B-A3B-Instruct-2507",provider:"chutes",vendorId:"Qwen/Qwen3-30B-A3B-Instruct-2507",displayName:"Qwen3 30B A3B Instruct 2507",family:"Qwen/Qwen3-30B-A3B-Instruct-2507",status:"stable",context:{combinedMax:262144,outputMax:262144},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.05,outputPerMTokens:.2},pricingSource:"models.dev",aliases:["chutes/Qwen/Qwen3-30B-A3B-Instruct-2507"],releasedAt:"2025-07-25",source:"https://llm.chutes.ai/v1/models",contextSource:"https://llm.chutes.ai/v1/models",verifiedAt:"2025-07-25"},{id:"chutes:Qwen/Qwen3-Coder-30B-A3B-Instruct",provider:"chutes",vendorId:"Qwen/Qwen3-Coder-30B-A3B-Instruct",displayName:"Qwen3 Coder 30B A3B Instruct",family:"Qwen/Qwen3-Coder-30B-A3B-Instruct",status:"stable",context:{combinedMax:262144,outputMax:262144},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["chutes/Qwen/Qwen3-Coder-30B-A3B-Instruct"],releasedAt:"2025-07-25",source:"https://llm.chutes.ai/v1/models",contextSource:"https://llm.chutes.ai/v1/models",verifiedAt:"2025-07-25"},{id:"chutes:Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8",provider:"chutes",vendorId:"Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8",displayName:"Qwen3 Coder 480B A35B Instruct (FP8)",family:"Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8",status:"stable",context:{combinedMax:262144,outputMax:262144},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.2,outputPerMTokens:.8},pricingSource:"models.dev",aliases:["chutes/Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8"],releasedAt:"2025-08-01",source:"https://llm.chutes.ai/v1/models",contextSource:"https://llm.chutes.ai/v1/models",verifiedAt:"2025-08-01"},{id:"chutes:tngtech/DeepSeek-R1T-Chimera",provider:"chutes",vendorId:"tngtech/DeepSeek-R1T-Chimera",displayName:"DeepSeek R1T Chimera",family:"tngtech/DeepSeek-R1T-Chimera",status:"stable",context:{combinedMax:163840,outputMax:163840},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.18,outputPerMTokens:.72},pricingSource:"models.dev",aliases:["chutes/tngtech/DeepSeek-R1T-Chimera"],releasedAt:"2025-04-26",source:"https://llm.chutes.ai/v1/models",contextSource:"https://llm.chutes.ai/v1/models",verifiedAt:"2025-04-26"},{id:"chutes:tngtech/DeepSeek-TNG-R1T2-Chimera",provider:"chutes",vendorId:"tngtech/DeepSeek-TNG-R1T2-Chimera",displayName:"DeepSeek TNG R1T2 Chimera",family:"tngtech/DeepSeek-TNG-R1T2-Chimera",status:"stable",context:{combinedMax:163840,outputMax:163840},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.2,outputPerMTokens:.8},pricingSource:"models.dev",aliases:["chutes/tngtech/DeepSeek-TNG-R1T2-Chimera"],releasedAt:"2025-07-08",source:"https://llm.chutes.ai/v1/models",contextSource:"https://llm.chutes.ai/v1/models",verifiedAt:"2025-07-08"},{id:"chutes:zai-org/GLM-4.5-Air",provider:"chutes",vendorId:"zai-org/GLM-4.5-Air",displayName:"GLM 4.5 Air",family:"zai-org/GLM-4.5-Air",status:"stable",context:{combinedMax:131072,outputMax:98304},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["chutes/zai-org/GLM-4.5-Air"],releasedAt:"2025-07-28",source:"https://llm.chutes.ai/v1/models",contextSource:"https://llm.chutes.ai/v1/models",verifiedAt:"2025-07-28"},{id:"chutes:zai-org/GLM-4.5-FP8",provider:"chutes",vendorId:"zai-org/GLM-4.5-FP8",displayName:"GLM 4.5 FP8",family:"zai-org/GLM-4.5-FP8",status:"stable",context:{combinedMax:131072,outputMax:131072},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["chutes/zai-org/GLM-4.5-FP8"],releasedAt:"2025-07-28",source:"https://llm.chutes.ai/v1/models",contextSource:"https://llm.chutes.ai/v1/models",verifiedAt:"2025-07-28"},{id:"cloudflare-workers-ai:bart-large-cnn",provider:"cloudflare-workers-ai",vendorId:"bart-large-cnn",displayName:"@cf/facebook/bart-large-cnn",family:"bart-large-cnn",status:"stable",context:{combinedMax:0,outputMax:0},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/bart-large-cnn"],releasedAt:"2022-03-02",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-02-13"},{id:"cloudflare-workers-ai:deepseek-coder-6.7b-base-awq",provider:"cloudflare-workers-ai",vendorId:"deepseek-coder-6.7b-base-awq",displayName:"@hf/thebloke/deepseek-coder-6.7b-base-awq",family:"deepseek-coder-6.7b-base-awq",status:"stable",context:{combinedMax:4096,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/deepseek-coder-6.7b-base-awq"],releasedAt:"2023-11-05",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2023-11-09"},{id:"cloudflare-workers-ai:deepseek-coder-6.7b-instruct-awq",provider:"cloudflare-workers-ai",vendorId:"deepseek-coder-6.7b-instruct-awq",displayName:"@hf/thebloke/deepseek-coder-6.7b-instruct-awq",family:"deepseek-coder-6.7b-instruct-awq",status:"stable",context:{combinedMax:4096,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/deepseek-coder-6.7b-instruct-awq"],releasedAt:"2023-11-05",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2023-11-13"},{id:"cloudflare-workers-ai:deepseek-math-7b-instruct",provider:"cloudflare-workers-ai",vendorId:"deepseek-math-7b-instruct",displayName:"@cf/deepseek-ai/deepseek-math-7b-instruct",family:"deepseek-math-7b-instruct",status:"stable",context:{combinedMax:4096,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/deepseek-math-7b-instruct"],releasedAt:"2024-02-05",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-02-06"},{id:"cloudflare-workers-ai:deepseek-r1-distill-qwen-32b",provider:"cloudflare-workers-ai",vendorId:"deepseek-r1-distill-qwen-32b",displayName:"@cf/deepseek-ai/deepseek-r1-distill-qwen-32b",family:"deepseek-r1-distill-qwen-32b",status:"stable",context:{combinedMax:8e4,outputMax:8e4},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.5,outputPerMTokens:4.88},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/deepseek-r1-distill-qwen-32b"],releasedAt:"2025-01-20",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2025-02-24"},{id:"cloudflare-workers-ai:discolm-german-7b-v1-awq",provider:"cloudflare-workers-ai",vendorId:"discolm-german-7b-v1-awq",displayName:"@cf/thebloke/discolm-german-7b-v1-awq",family:"discolm-german-7b-v1-awq",status:"stable",context:{combinedMax:4096,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/discolm-german-7b-v1-awq"],releasedAt:"2024-01-18",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-01-24"},{id:"cloudflare-workers-ai:dreamshaper-8-lcm",provider:"cloudflare-workers-ai",vendorId:"dreamshaper-8-lcm",displayName:"@cf/lykon/dreamshaper-8-lcm",family:"dreamshaper-8-lcm",status:"stable",context:{combinedMax:0,outputMax:0},modalities:{textIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/dreamshaper-8-lcm"],releasedAt:"2023-12-06",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2023-12-07"},{id:"cloudflare-workers-ai:falcon-7b-instruct",provider:"cloudflare-workers-ai",vendorId:"falcon-7b-instruct",displayName:"@cf/tiiuae/falcon-7b-instruct",family:"falcon-7b-instruct",status:"stable",context:{combinedMax:4096,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/falcon-7b-instruct"],releasedAt:"2023-04-25",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-10-12"},{id:"cloudflare-workers-ai:flux-1-schnell",provider:"cloudflare-workers-ai",vendorId:"flux-1-schnell",displayName:"@cf/black-forest-labs/flux-1-schnell",family:"flux-1-schnell",status:"stable",context:{combinedMax:2048,outputMax:0},modalities:{textIn:!0},pricing:{inputPerMTokens:53e-6,outputPerMTokens:11e-5},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/flux-1-schnell"],releasedAt:"2024-07-31",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-08-16"},{id:"cloudflare-workers-ai:gemma-2b-it-lora",provider:"cloudflare-workers-ai",vendorId:"gemma-2b-it-lora",displayName:"@cf/google/gemma-2b-it-lora",family:"gemma-2b-it-lora",status:"stable",context:{combinedMax:8192,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/gemma-2b-it-lora"],releasedAt:"2024-04-02",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-04-02"},{id:"cloudflare-workers-ai:gemma-3-12b-it",provider:"cloudflare-workers-ai",vendorId:"gemma-3-12b-it",displayName:"@cf/google/gemma-3-12b-it",family:"gemma-3-12b-it",status:"stable",context:{combinedMax:8e4,outputMax:8e4},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.35,outputPerMTokens:.56},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/gemma-3-12b-it"],releasedAt:"2025-03-01",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2025-03-21"},{id:"cloudflare-workers-ai:gemma-7b-it",provider:"cloudflare-workers-ai",vendorId:"gemma-7b-it",displayName:"@hf/google/gemma-7b-it",family:"gemma-7b-it",status:"stable",context:{combinedMax:8192,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/gemma-7b-it"],releasedAt:"2024-02-13",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-08-14"},{id:"cloudflare-workers-ai:gemma-7b-it-lora",provider:"cloudflare-workers-ai",vendorId:"gemma-7b-it-lora",displayName:"@cf/google/gemma-7b-it-lora",family:"gemma-7b-it-lora",status:"stable",context:{combinedMax:3500,outputMax:3500},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/gemma-7b-it-lora"],releasedAt:"2024-04-02",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-04-02"},{id:"cloudflare-workers-ai:gpt-oss-120b",provider:"cloudflare-workers-ai",vendorId:"gpt-oss-120b",displayName:"@cf/openai/gpt-oss-120b",family:"gpt-oss-120b",status:"stable",context:{combinedMax:128e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.35,outputPerMTokens:.75},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/gpt-oss-120b"],releasedAt:"2025-08-04",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2025-08-14"},{id:"cloudflare-workers-ai:gpt-oss-20b",provider:"cloudflare-workers-ai",vendorId:"gpt-oss-20b",displayName:"@cf/openai/gpt-oss-20b",family:"gpt-oss-20b",status:"stable",context:{combinedMax:128e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.2,outputPerMTokens:.3},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/gpt-oss-20b"],releasedAt:"2025-08-04",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2025-08-14"},{id:"cloudflare-workers-ai:hermes-2-pro-mistral-7b",provider:"cloudflare-workers-ai",vendorId:"hermes-2-pro-mistral-7b",displayName:"@hf/nousresearch/hermes-2-pro-mistral-7b",family:"hermes-2-pro-mistral-7b",status:"stable",context:{combinedMax:24e3,outputMax:24e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/hermes-2-pro-mistral-7b"],releasedAt:"2024-03-11",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-09-08"},{id:"cloudflare-workers-ai:llama-2-13b-chat-awq",provider:"cloudflare-workers-ai",vendorId:"llama-2-13b-chat-awq",displayName:"@hf/thebloke/llama-2-13b-chat-awq",family:"llama-2-13b-chat-awq",status:"stable",context:{combinedMax:4096,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/llama-2-13b-chat-awq"],releasedAt:"2023-09-19",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2023-11-09"},{id:"cloudflare-workers-ai:llama-2-7b-chat-fp16",provider:"cloudflare-workers-ai",vendorId:"llama-2-7b-chat-fp16",displayName:"@cf/meta/llama-2-7b-chat-fp16",family:"llama-2-7b-chat-fp16",status:"stable",context:{combinedMax:4096,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.56,outputPerMTokens:6.67},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/llama-2-7b-chat-fp16"],releasedAt:"2023-07-26",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2023-07-26"},{id:"cloudflare-workers-ai:llama-2-7b-chat-hf-lora",provider:"cloudflare-workers-ai",vendorId:"llama-2-7b-chat-hf-lora",displayName:"@cf/meta-llama/llama-2-7b-chat-hf-lora",family:"llama-2-7b-chat-hf-lora",status:"stable",context:{combinedMax:8192,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/llama-2-7b-chat-hf-lora"],releasedAt:"2023-07-13",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-04-17"},{id:"cloudflare-workers-ai:llama-2-7b-chat-int8",provider:"cloudflare-workers-ai",vendorId:"llama-2-7b-chat-int8",displayName:"@cf/meta/llama-2-7b-chat-int8",family:"llama-2-7b-chat-int8",status:"stable",context:{combinedMax:8192,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/llama-2-7b-chat-int8"],releasedAt:"2023-09-25",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2023-09-25"},{id:"cloudflare-workers-ai:llama-3-8b-instruct",provider:"cloudflare-workers-ai",vendorId:"llama-3-8b-instruct",displayName:"@cf/meta/llama-3-8b-instruct",family:"llama-3-8b-instruct",status:"stable",context:{combinedMax:7968,outputMax:7968},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.28,outputPerMTokens:.83},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/llama-3-8b-instruct"],releasedAt:"2024-04-17",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2025-06-19"},{id:"cloudflare-workers-ai:llama-3-8b-instruct-awq",provider:"cloudflare-workers-ai",vendorId:"llama-3-8b-instruct-awq",displayName:"@cf/meta/llama-3-8b-instruct-awq",family:"llama-3-8b-instruct-awq",status:"stable",context:{combinedMax:8192,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.12,outputPerMTokens:.27},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/llama-3-8b-instruct-awq"],releasedAt:"2024-05-09",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-05-09"},{id:"cloudflare-workers-ai:llama-3.1-70b-instruct",provider:"cloudflare-workers-ai",vendorId:"llama-3.1-70b-instruct",displayName:"@cf/meta/llama-3.1-70b-instruct",family:"llama-3.1-70b-instruct",status:"stable",context:{combinedMax:24e3,outputMax:24e3},modalities:{textIn:!0,textOut:!0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/llama-3.1-70b-instruct"],releasedAt:"2024-07-16",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-12-15"},{id:"cloudflare-workers-ai:llama-3.1-8b-instruct",provider:"cloudflare-workers-ai",vendorId:"llama-3.1-8b-instruct",displayName:"@cf/meta/llama-3.1-8b-instruct",family:"llama-3.1-8b-instruct",status:"stable",context:{combinedMax:7968,outputMax:7968},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.28,outputPerMTokens:.83},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/llama-3.1-8b-instruct"],releasedAt:"2024-07-18",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-09-25"},{id:"cloudflare-workers-ai:llama-3.1-8b-instruct-awq",provider:"cloudflare-workers-ai",vendorId:"llama-3.1-8b-instruct-awq",displayName:"@cf/meta/llama-3.1-8b-instruct-awq",family:"llama-3.1-8b-instruct-awq",status:"stable",context:{combinedMax:8192,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.12,outputPerMTokens:.27},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/llama-3.1-8b-instruct-awq"],releasedAt:"2024-07-25",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-07-25"},{id:"cloudflare-workers-ai:llama-3.1-8b-instruct-fast",provider:"cloudflare-workers-ai",vendorId:"llama-3.1-8b-instruct-fast",displayName:"@cf/meta/llama-3.1-8b-instruct-fast",family:"llama-3.1-8b-instruct-fast",status:"stable",context:{combinedMax:128e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/llama-3.1-8b-instruct-fast"],releasedAt:"2024-07-18",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-09-25"},{id:"cloudflare-workers-ai:llama-3.1-8b-instruct-fp8",provider:"cloudflare-workers-ai",vendorId:"llama-3.1-8b-instruct-fp8",displayName:"@cf/meta/llama-3.1-8b-instruct-fp8",family:"llama-3.1-8b-instruct-fp8",status:"stable",context:{combinedMax:32e3,outputMax:32e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.15,outputPerMTokens:.29},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/llama-3.1-8b-instruct-fp8"],releasedAt:"2024-07-25",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-07-25"},{id:"cloudflare-workers-ai:llama-3.2-11b-vision-instruct",provider:"cloudflare-workers-ai",vendorId:"llama-3.2-11b-vision-instruct",displayName:"@cf/meta/llama-3.2-11b-vision-instruct",family:"llama-3.2-11b-vision-instruct",status:"stable",context:{combinedMax:128e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.049,outputPerMTokens:.68},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/llama-3.2-11b-vision-instruct"],releasedAt:"2024-09-18",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-12-04"},{id:"cloudflare-workers-ai:llama-3.2-1b-instruct",provider:"cloudflare-workers-ai",vendorId:"llama-3.2-1b-instruct",displayName:"@cf/meta/llama-3.2-1b-instruct",family:"llama-3.2-1b-instruct",status:"stable",context:{combinedMax:6e4,outputMax:6e4},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.027,outputPerMTokens:.2},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/llama-3.2-1b-instruct"],releasedAt:"2024-09-18",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-10-24"},{id:"cloudflare-workers-ai:llama-3.2-3b-instruct",provider:"cloudflare-workers-ai",vendorId:"llama-3.2-3b-instruct",displayName:"@cf/meta/llama-3.2-3b-instruct",family:"llama-3.2-3b-instruct",status:"stable",context:{combinedMax:128e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.051,outputPerMTokens:.34},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/llama-3.2-3b-instruct"],releasedAt:"2024-09-18",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-10-24"},{id:"cloudflare-workers-ai:llama-3.3-70b-instruct-fp8-fast",provider:"cloudflare-workers-ai",vendorId:"llama-3.3-70b-instruct-fp8-fast",displayName:"@cf/meta/llama-3.3-70b-instruct-fp8-fast",family:"llama-3.3-70b-instruct-fp8-fast",status:"stable",context:{combinedMax:24e3,outputMax:24e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.29,outputPerMTokens:2.25},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/llama-3.3-70b-instruct-fp8-fast"],releasedAt:"2024-12-06",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-12-06"},{id:"cloudflare-workers-ai:llama-4-scout-17b-16e-instruct",provider:"cloudflare-workers-ai",vendorId:"llama-4-scout-17b-16e-instruct",displayName:"@cf/meta/llama-4-scout-17b-16e-instruct",family:"llama-4-scout-17b-16e-instruct",status:"stable",context:{combinedMax:131e3,outputMax:131e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.27,outputPerMTokens:.85},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/llama-4-scout-17b-16e-instruct"],releasedAt:"2025-04-02",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2025-05-23"},{id:"cloudflare-workers-ai:llama-guard-3-8b",provider:"cloudflare-workers-ai",vendorId:"llama-guard-3-8b",displayName:"@cf/meta/llama-guard-3-8b",family:"llama-guard-3-8b",status:"stable",context:{combinedMax:0,outputMax:0},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.48,outputPerMTokens:.03},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/llama-guard-3-8b"],releasedAt:"2024-07-22",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-10-11"},{id:"cloudflare-workers-ai:llamaguard-7b-awq",provider:"cloudflare-workers-ai",vendorId:"llamaguard-7b-awq",displayName:"@hf/thebloke/llamaguard-7b-awq",family:"llamaguard-7b-awq",status:"stable",context:{combinedMax:4096,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/llamaguard-7b-awq"],releasedAt:"2023-12-11",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2023-12-11"},{id:"cloudflare-workers-ai:llava-1.5-7b-hf",provider:"cloudflare-workers-ai",vendorId:"llava-1.5-7b-hf",displayName:"@cf/llava-hf/llava-1.5-7b-hf",family:"llava-1.5-7b-hf",status:"stable",context:{combinedMax:0,outputMax:0},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/llava-1.5-7b-hf"],releasedAt:"2023-12-05",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2025-06-06"},{id:"cloudflare-workers-ai:m2m100-1.2b",provider:"cloudflare-workers-ai",vendorId:"m2m100-1.2b",displayName:"@cf/meta/m2m100-1.2b",family:"m2m100-1.2b",status:"stable",context:{combinedMax:0,outputMax:0},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.34,outputPerMTokens:.34},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/m2m100-1.2b"],releasedAt:"2022-03-02",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2023-11-16"},{id:"cloudflare-workers-ai:melotts",provider:"cloudflare-workers-ai",vendorId:"melotts",displayName:"@cf/myshell-ai/melotts",family:"melotts",status:"stable",context:{combinedMax:0,outputMax:0},modalities:{textIn:!0},pricing:{inputPerMTokens:2e-4,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/melotts"],releasedAt:"2024-07-19",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-07-19"},{id:"cloudflare-workers-ai:mistral-7b-instruct-v0.1",provider:"cloudflare-workers-ai",vendorId:"mistral-7b-instruct-v0.1",displayName:"@cf/mistral/mistral-7b-instruct-v0.1",family:"mistral-7b-instruct-v0.1",status:"stable",context:{combinedMax:2824,outputMax:2824},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.11,outputPerMTokens:.19},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/mistral-7b-instruct-v0.1"],releasedAt:"2023-09-27",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2025-07-24"},{id:"cloudflare-workers-ai:mistral-7b-instruct-v0.1-awq",provider:"cloudflare-workers-ai",vendorId:"mistral-7b-instruct-v0.1-awq",displayName:"@hf/thebloke/mistral-7b-instruct-v0.1-awq",family:"mistral-7b-instruct-v0.1-awq",status:"stable",context:{combinedMax:4096,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/mistral-7b-instruct-v0.1-awq"],releasedAt:"2023-09-27",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2023-11-09"},{id:"cloudflare-workers-ai:mistral-7b-instruct-v0.2",provider:"cloudflare-workers-ai",vendorId:"mistral-7b-instruct-v0.2",displayName:"@hf/mistral/mistral-7b-instruct-v0.2",family:"mistral-7b-instruct-v0.2",status:"stable",context:{combinedMax:3072,outputMax:3072},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/mistral-7b-instruct-v0.2"],releasedAt:"2023-12-11",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2025-07-24"},{id:"cloudflare-workers-ai:mistral-7b-instruct-v0.2-lora",provider:"cloudflare-workers-ai",vendorId:"mistral-7b-instruct-v0.2-lora",displayName:"@cf/mistral/mistral-7b-instruct-v0.2-lora",family:"mistral-7b-instruct-v0.2-lora",status:"stable",context:{combinedMax:15e3,outputMax:15e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/mistral-7b-instruct-v0.2-lora"],releasedAt:"2024-04-01",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-04-01"},{id:"cloudflare-workers-ai:mistral-small-3.1-24b-instruct",provider:"cloudflare-workers-ai",vendorId:"mistral-small-3.1-24b-instruct",displayName:"@cf/mistralai/mistral-small-3.1-24b-instruct",family:"mistral-small-3.1-24b-instruct",status:"stable",context:{combinedMax:128e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.35,outputPerMTokens:.56},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/mistral-small-3.1-24b-instruct"],releasedAt:"2025-03-11",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2025-07-28"},{id:"cloudflare-workers-ai:neural-chat-7b-v3-1-awq",provider:"cloudflare-workers-ai",vendorId:"neural-chat-7b-v3-1-awq",displayName:"@hf/thebloke/neural-chat-7b-v3-1-awq",family:"neural-chat-7b-v3-1-awq",status:"stable",context:{combinedMax:4096,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/neural-chat-7b-v3-1-awq"],releasedAt:"2023-11-15",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2023-11-17"},{id:"cloudflare-workers-ai:openchat-3.5-0106",provider:"cloudflare-workers-ai",vendorId:"openchat-3.5-0106",displayName:"@cf/openchat/openchat-3.5-0106",family:"openchat-3.5-0106",status:"stable",context:{combinedMax:8192,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/openchat-3.5-0106"],releasedAt:"2024-01-07",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-05-18"},{id:"cloudflare-workers-ai:openhermes-2.5-mistral-7b-awq",provider:"cloudflare-workers-ai",vendorId:"openhermes-2.5-mistral-7b-awq",displayName:"@hf/thebloke/openhermes-2.5-mistral-7b-awq",family:"openhermes-2.5-mistral-7b-awq",status:"stable",context:{combinedMax:4096,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/openhermes-2.5-mistral-7b-awq"],releasedAt:"2023-11-02",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2023-11-09"},{id:"cloudflare-workers-ai:phi-2",provider:"cloudflare-workers-ai",vendorId:"phi-2",displayName:"@cf/microsoft/phi-2",family:"phi-2",status:"stable",context:{combinedMax:2048,outputMax:2048},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/phi-2"],releasedAt:"2023-12-13",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-04-29"},{id:"cloudflare-workers-ai:qwen1.5-0.5b-chat",provider:"cloudflare-workers-ai",vendorId:"qwen1.5-0.5b-chat",displayName:"@cf/qwen/qwen1.5-0.5b-chat",family:"qwen1.5-0.5b-chat",status:"stable",context:{combinedMax:32e3,outputMax:32e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/qwen1.5-0.5b-chat"],releasedAt:"2024-01-31",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-04-30"},{id:"cloudflare-workers-ai:qwen1.5-1.8b-chat",provider:"cloudflare-workers-ai",vendorId:"qwen1.5-1.8b-chat",displayName:"@cf/qwen/qwen1.5-1.8b-chat",family:"qwen1.5-1.8b-chat",status:"stable",context:{combinedMax:32e3,outputMax:32e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/qwen1.5-1.8b-chat"],releasedAt:"2024-01-30",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-04-30"},{id:"cloudflare-workers-ai:qwen1.5-14b-chat-awq",provider:"cloudflare-workers-ai",vendorId:"qwen1.5-14b-chat-awq",displayName:"@cf/qwen/qwen1.5-14b-chat-awq",family:"qwen1.5-14b-chat-awq",status:"stable",context:{combinedMax:7500,outputMax:7500},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/qwen1.5-14b-chat-awq"],releasedAt:"2024-02-03",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-04-30"},{id:"cloudflare-workers-ai:qwen1.5-7b-chat-awq",provider:"cloudflare-workers-ai",vendorId:"qwen1.5-7b-chat-awq",displayName:"@cf/qwen/qwen1.5-7b-chat-awq",family:"qwen1.5-7b-chat-awq",status:"stable",context:{combinedMax:2e4,outputMax:2e4},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/qwen1.5-7b-chat-awq"],releasedAt:"2024-02-03",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-04-30"},{id:"cloudflare-workers-ai:qwen2.5-coder-32b-instruct",provider:"cloudflare-workers-ai",vendorId:"qwen2.5-coder-32b-instruct",displayName:"@cf/qwen/qwen2.5-coder-32b-instruct",family:"qwen2.5-coder-32b-instruct",status:"stable",context:{combinedMax:32768,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.66,outputPerMTokens:1},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/qwen2.5-coder-32b-instruct"],releasedAt:"2024-11-06",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2025-01-12"},{id:"cloudflare-workers-ai:qwq-32b",provider:"cloudflare-workers-ai",vendorId:"qwq-32b",displayName:"@cf/qwen/qwq-32b",family:"qwq-32b",status:"stable",context:{combinedMax:24e3,outputMax:24e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.66,outputPerMTokens:1},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/qwq-32b"],releasedAt:"2025-03-05",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2025-03-11"},{id:"cloudflare-workers-ai:resnet-50",provider:"cloudflare-workers-ai",vendorId:"resnet-50",displayName:"@cf/microsoft/resnet-50",family:"resnet-50",status:"stable",context:{combinedMax:0,outputMax:0},modalities:{textOut:!0,imageIn:!0},pricing:{inputPerMTokens:25e-7,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/resnet-50"],releasedAt:"2022-03-16",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-02-13"},{id:"cloudflare-workers-ai:sqlcoder-7b-2",provider:"cloudflare-workers-ai",vendorId:"sqlcoder-7b-2",displayName:"@cf/defog/sqlcoder-7b-2",family:"sqlcoder-7b-2",status:"stable",context:{combinedMax:1e4,outputMax:1e4},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/sqlcoder-7b-2"],releasedAt:"2024-02-05",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-02-12"},{id:"cloudflare-workers-ai:stable-diffusion-v1-5-img2img",provider:"cloudflare-workers-ai",vendorId:"stable-diffusion-v1-5-img2img",displayName:"@cf/runwayml/stable-diffusion-v1-5-img2img",family:"stable-diffusion-v1-5-img2img",status:"stable",context:{combinedMax:0,outputMax:0},modalities:{textIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/stable-diffusion-v1-5-img2img"],releasedAt:"2024-02-27",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-02-27"},{id:"cloudflare-workers-ai:stable-diffusion-v1-5-inpainting",provider:"cloudflare-workers-ai",vendorId:"stable-diffusion-v1-5-inpainting",displayName:"@cf/runwayml/stable-diffusion-v1-5-inpainting",family:"stable-diffusion-v1-5-inpainting",status:"stable",context:{combinedMax:0,outputMax:0},modalities:{textIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/stable-diffusion-v1-5-inpainting"],releasedAt:"2024-02-27",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-02-27"},{id:"cloudflare-workers-ai:stable-diffusion-xl-base-1.0",provider:"cloudflare-workers-ai",vendorId:"stable-diffusion-xl-base-1.0",displayName:"@cf/stabilityai/stable-diffusion-xl-base-1.0",family:"stable-diffusion-xl-base-1.0",status:"stable",context:{combinedMax:0,outputMax:0},modalities:{textIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/stable-diffusion-xl-base-1.0"],releasedAt:"2023-07-25",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2023-10-30"},{id:"cloudflare-workers-ai:stable-diffusion-xl-lightning",provider:"cloudflare-workers-ai",vendorId:"stable-diffusion-xl-lightning",displayName:"@cf/bytedance/stable-diffusion-xl-lightning",family:"stable-diffusion-xl-lightning",status:"stable",context:{combinedMax:0,outputMax:0},modalities:{textIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/stable-diffusion-xl-lightning"],releasedAt:"2024-02-20",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-04-03"},{id:"cloudflare-workers-ai:starling-lm-7b-beta",provider:"cloudflare-workers-ai",vendorId:"starling-lm-7b-beta",displayName:"@hf/nexusflow/starling-lm-7b-beta",family:"starling-lm-7b-beta",status:"stable",context:{combinedMax:4096,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/starling-lm-7b-beta"],releasedAt:"2024-03-19",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-04-03"},{id:"cloudflare-workers-ai:tinyllama-1.1b-chat-v1.0",provider:"cloudflare-workers-ai",vendorId:"tinyllama-1.1b-chat-v1.0",displayName:"@cf/tinyllama/tinyllama-1.1b-chat-v1.0",family:"tinyllama-1.1b-chat-v1.0",status:"stable",context:{combinedMax:2048,outputMax:2048},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/tinyllama-1.1b-chat-v1.0"],releasedAt:"2023-12-30",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-03-17"},{id:"cloudflare-workers-ai:uform-gen2-qwen-500m",provider:"cloudflare-workers-ai",vendorId:"uform-gen2-qwen-500m",displayName:"@cf/unum/uform-gen2-qwen-500m",family:"uform-gen2-qwen-500m",status:"stable",context:{combinedMax:0,outputMax:0},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/uform-gen2-qwen-500m"],releasedAt:"2024-02-15",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-04-24"},{id:"cloudflare-workers-ai:una-cybertron-7b-v2-bf16",provider:"cloudflare-workers-ai",vendorId:"una-cybertron-7b-v2-bf16",displayName:"@cf/fblgit/una-cybertron-7b-v2-bf16",family:"una-cybertron-7b-v2-bf16",status:"stable",context:{combinedMax:15e3,outputMax:15e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/una-cybertron-7b-v2-bf16"],releasedAt:"2023-12-02",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-03-08"},{id:"cloudflare-workers-ai:whisper",provider:"cloudflare-workers-ai",vendorId:"whisper",displayName:"@cf/openai/whisper",family:"whisper",status:"stable",context:{combinedMax:0,outputMax:0},modalities:{textOut:!0},pricing:{inputPerMTokens:45e-5,outputPerMTokens:45e-5},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/whisper"],releasedAt:"2023-11-07",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-08-12"},{id:"cloudflare-workers-ai:whisper-large-v3-turbo",provider:"cloudflare-workers-ai",vendorId:"whisper-large-v3-turbo",displayName:"@cf/openai/whisper-large-v3-turbo",family:"whisper-large-v3-turbo",status:"stable",context:{combinedMax:0,outputMax:0},modalities:{textOut:!0},pricing:{inputPerMTokens:51e-5,outputPerMTokens:51e-5},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/whisper-large-v3-turbo"],releasedAt:"2024-10-01",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-10-04"},{id:"cloudflare-workers-ai:whisper-tiny-en",provider:"cloudflare-workers-ai",vendorId:"whisper-tiny-en",displayName:"@cf/openai/whisper-tiny-en",family:"whisper-tiny-en",status:"stable",context:{combinedMax:0,outputMax:0},modalities:{textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/whisper-tiny-en"],releasedAt:"2022-09-26",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-01-22"},{id:"cloudflare-workers-ai:zephyr-7b-beta-awq",provider:"cloudflare-workers-ai",vendorId:"zephyr-7b-beta-awq",displayName:"@hf/thebloke/zephyr-7b-beta-awq",family:"zephyr-7b-beta-awq",status:"stable",context:{combinedMax:4096,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/zephyr-7b-beta-awq"],releasedAt:"2023-10-27",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2023-11-09"},{id:"deepinfra:moonshotai/Kimi-K2-Instruct",provider:"deepinfra",vendorId:"moonshotai/Kimi-K2-Instruct",displayName:"Kimi K2",family:"moonshotai/Kimi-K2-Instruct",status:"stable",context:{combinedMax:131072,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.5,outputPerMTokens:2},pricingSource:"models.dev",aliases:["deepinfra/moonshotai/Kimi-K2-Instruct"],releasedAt:"2025-07-11",source:"https://deepinfra.com/models",contextSource:"https://deepinfra.com/models",verifiedAt:"2025-07-11"},{id:"deepinfra:Qwen/Qwen3-Coder-480B-A35B-Instruct",provider:"deepinfra",vendorId:"Qwen/Qwen3-Coder-480B-A35B-Instruct",displayName:"Qwen3 Coder 480B A35B Instruct",family:"Qwen/Qwen3-Coder-480B-A35B-Instruct",status:"stable",context:{combinedMax:262144,outputMax:66536},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.4,outputPerMTokens:1.6},pricingSource:"models.dev",aliases:["deepinfra/Qwen/Qwen3-Coder-480B-A35B-Instruct"],releasedAt:"2025-07-23",source:"https://deepinfra.com/models",contextSource:"https://deepinfra.com/models",verifiedAt:"2025-07-23"},{id:"deepinfra:Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo",provider:"deepinfra",vendorId:"Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo",displayName:"Qwen3 Coder 480B A35B Instruct Turbo",family:"Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo",status:"stable",context:{combinedMax:262144,outputMax:66536},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.3,outputPerMTokens:1.2},pricingSource:"models.dev",aliases:["deepinfra/Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo"],releasedAt:"2025-07-23",source:"https://deepinfra.com/models",contextSource:"https://deepinfra.com/models",verifiedAt:"2025-07-23"},{id:"deepinfra:zai-org/GLM-4.5",provider:"deepinfra",vendorId:"zai-org/GLM-4.5",displayName:"GLM-4.5",family:"zai-org/GLM-4.5",status:"stable",context:{combinedMax:131072,outputMax:98304},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.6,outputPerMTokens:2.2},pricingSource:"models.dev",aliases:["deepinfra/zai-org/GLM-4.5"],releasedAt:"2025-07-28",source:"https://deepinfra.com/models",contextSource:"https://deepinfra.com/models",verifiedAt:"2025-07-28"},{id:"deepseek:deepseek-chat",provider:"deepseek",vendorId:"deepseek-chat",displayName:"DeepSeek Chat",family:"deepseek-chat",status:"stable",context:{combinedMax:128e3,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.57,outputPerMTokens:1.68},pricingSource:"models.dev",aliases:["deepseek/deepseek-chat"],releasedAt:"2024-12-26",source:"https://platform.deepseek.com/api-docs/pricing",contextSource:"https://platform.deepseek.com/api-docs/pricing",verifiedAt:"2025-08-21"},{id:"deepseek:deepseek-reasoner",provider:"deepseek",vendorId:"deepseek-reasoner",displayName:"DeepSeek Reasoner",family:"deepseek-reasoner",status:"stable",context:{combinedMax:128e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.57,outputPerMTokens:1.68},pricingSource:"models.dev",aliases:["deepseek/deepseek-reasoner"],releasedAt:"2025-01-20",source:"https://platform.deepseek.com/api-docs/pricing",contextSource:"https://platform.deepseek.com/api-docs/pricing",verifiedAt:"2025-08-21"},{id:"fastrouter:anthropic/claude-opus-4.1",provider:"fastrouter",vendorId:"anthropic/claude-opus-4.1",displayName:"Claude Opus 4.1",family:"anthropic/claude-opus-4.1",status:"stable",context:{combinedMax:2e5,outputMax:32e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:15,outputPerMTokens:75},pricingSource:"models.dev",aliases:["fastrouter/anthropic/claude-opus-4.1"],releasedAt:"2025-08-05",source:"https://fastrouter.ai/models",contextSource:"https://fastrouter.ai/models",verifiedAt:"2025-08-05"},{id:"fastrouter:anthropic/claude-sonnet-4",provider:"fastrouter",vendorId:"anthropic/claude-sonnet-4",displayName:"Claude Sonnet 4",family:"anthropic/claude-sonnet-4",status:"stable",context:{combinedMax:2e5,outputMax:64e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["fastrouter/anthropic/claude-sonnet-4"],releasedAt:"2025-05-22",source:"https://fastrouter.ai/models",contextSource:"https://fastrouter.ai/models",verifiedAt:"2025-05-22"},{id:"fastrouter:deepseek-ai/deepseek-r1-distill-llama-70b",provider:"fastrouter",vendorId:"deepseek-ai/deepseek-r1-distill-llama-70b",displayName:"DeepSeek R1 Distill Llama 70B",family:"deepseek-ai/deepseek-r1-distill-llama-70b",status:"stable",context:{combinedMax:131072,outputMax:131072},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.03,outputPerMTokens:.14},pricingSource:"models.dev",aliases:["fastrouter/deepseek-ai/deepseek-r1-distill-llama-70b"],releasedAt:"2025-01-23",source:"https://fastrouter.ai/models",contextSource:"https://fastrouter.ai/models",verifiedAt:"2025-01-23"},{id:"fastrouter:google/gemini-2.5-flash",provider:"fastrouter",vendorId:"google/gemini-2.5-flash",displayName:"Gemini 2.5 Flash",family:"google/gemini-2.5-flash",status:"stable",context:{combinedMax:1048576,outputMax:65536},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.3,outputPerMTokens:2.5},pricingSource:"models.dev",aliases:["fastrouter/google/gemini-2.5-flash"],releasedAt:"2025-06-17",source:"https://fastrouter.ai/models",contextSource:"https://fastrouter.ai/models",verifiedAt:"2025-06-17"},{id:"fastrouter:google/gemini-2.5-pro",provider:"fastrouter",vendorId:"google/gemini-2.5-pro",displayName:"Gemini 2.5 Pro",family:"google/gemini-2.5-pro",status:"stable",context:{combinedMax:1048576,outputMax:65536},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:1.25,outputPerMTokens:10},pricingSource:"models.dev",aliases:["fastrouter/google/gemini-2.5-pro"],releasedAt:"2025-06-17",source:"https://fastrouter.ai/models",contextSource:"https://fastrouter.ai/models",verifiedAt:"2025-06-17"},{id:"fastrouter:moonshotai/kimi-k2",provider:"fastrouter",vendorId:"moonshotai/kimi-k2",displayName:"Kimi K2",family:"moonshotai/kimi-k2",status:"stable",context:{combinedMax:131072,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.55,outputPerMTokens:2.2},pricingSource:"models.dev",aliases:["fastrouter/moonshotai/kimi-k2"],releasedAt:"2025-07-11",source:"https://fastrouter.ai/models",contextSource:"https://fastrouter.ai/models",verifiedAt:"2025-07-11"},{id:"fastrouter:openai/gpt-4.1",provider:"fastrouter",vendorId:"openai/gpt-4.1",displayName:"GPT-4.1",family:"openai/gpt-4.1",status:"stable",context:{combinedMax:1047576,outputMax:32768},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:2,outputPerMTokens:8},pricingSource:"models.dev",aliases:["fastrouter/openai/gpt-4.1"],releasedAt:"2025-04-14",source:"https://fastrouter.ai/models",contextSource:"https://fastrouter.ai/models",verifiedAt:"2025-04-14"},{id:"fastrouter:openai/gpt-5",provider:"fastrouter",vendorId:"openai/gpt-5",displayName:"GPT-5",family:"openai/gpt-5",status:"stable",context:{combinedMax:4e5,outputMax:128e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:1.25,outputPerMTokens:10},pricingSource:"models.dev",aliases:["fastrouter/openai/gpt-5"],releasedAt:"2025-08-07",source:"https://fastrouter.ai/models",contextSource:"https://fastrouter.ai/models",verifiedAt:"2025-08-07"},{id:"fastrouter:openai/gpt-5-mini",provider:"fastrouter",vendorId:"openai/gpt-5-mini",displayName:"GPT-5 Mini",family:"openai/gpt-5-mini",status:"stable",context:{combinedMax:4e5,outputMax:128e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.25,outputPerMTokens:2},pricingSource:"models.dev",aliases:["fastrouter/openai/gpt-5-mini"],releasedAt:"2025-08-07",source:"https://fastrouter.ai/models",contextSource:"https://fastrouter.ai/models",verifiedAt:"2025-08-07"},{id:"fastrouter:openai/gpt-5-nano",provider:"fastrouter",vendorId:"openai/gpt-5-nano",displayName:"GPT-5 Nano",family:"openai/gpt-5-nano",status:"stable",context:{combinedMax:4e5,outputMax:128e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.05,outputPerMTokens:.4},pricingSource:"models.dev",aliases:["fastrouter/openai/gpt-5-nano"],releasedAt:"2025-08-07",source:"https://fastrouter.ai/models",contextSource:"https://fastrouter.ai/models",verifiedAt:"2025-08-07"},{id:"fastrouter:openai/gpt-oss-120b",provider:"fastrouter",vendorId:"openai/gpt-oss-120b",displayName:"GPT OSS 120B",family:"openai/gpt-oss-120b",status:"stable",context:{combinedMax:131072,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.15,outputPerMTokens:.6},pricingSource:"models.dev",aliases:["fastrouter/openai/gpt-oss-120b"],releasedAt:"2025-08-05",source:"https://fastrouter.ai/models",contextSource:"https://fastrouter.ai/models",verifiedAt:"2025-08-05"},{id:"fastrouter:openai/gpt-oss-20b",provider:"fastrouter",vendorId:"openai/gpt-oss-20b",displayName:"GPT OSS 20B",family:"openai/gpt-oss-20b",status:"stable",context:{combinedMax:131072,outputMax:65536},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.05,outputPerMTokens:.2},pricingSource:"models.dev",aliases:["fastrouter/openai/gpt-oss-20b"],releasedAt:"2025-08-05",source:"https://fastrouter.ai/models",contextSource:"https://fastrouter.ai/models",verifiedAt:"2025-08-05"},{id:"fastrouter:qwen/qwen3-coder",provider:"fastrouter",vendorId:"qwen/qwen3-coder",displayName:"Qwen3 Coder",family:"qwen/qwen3-coder",status:"stable",context:{combinedMax:262144,outputMax:66536},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.3,outputPerMTokens:1.2},pricingSource:"models.dev",aliases:["fastrouter/qwen/qwen3-coder"],releasedAt:"2025-07-23",source:"https://fastrouter.ai/models",contextSource:"https://fastrouter.ai/models",verifiedAt:"2025-07-23"},{id:"fastrouter:x-ai/grok-4",provider:"fastrouter",vendorId:"x-ai/grok-4",displayName:"Grok 4",family:"x-ai/grok-4",status:"stable",context:{combinedMax:256e3,outputMax:64e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["fastrouter/x-ai/grok-4"],releasedAt:"2025-07-09",source:"https://fastrouter.ai/models",contextSource:"https://fastrouter.ai/models",verifiedAt:"2025-07-09"},{id:"fireworks-ai:accounts/fireworks/gpt-oss-120b",provider:"fireworks-ai",vendorId:"accounts/fireworks/gpt-oss-120b",displayName:"GPT OSS 120B",family:"accounts/fireworks/gpt-oss-120b",status:"stable",context:{combinedMax:131072,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.15,outputPerMTokens:.6},pricingSource:"models.dev",aliases:["fireworks-ai/accounts/fireworks/gpt-oss-120b"],releasedAt:"2025-08-05",source:"https://fireworks.ai/docs/",contextSource:"https://fireworks.ai/docs/",verifiedAt:"2025-08-05"},{id:"fireworks-ai:accounts/fireworks/gpt-oss-20b",provider:"fireworks-ai",vendorId:"accounts/fireworks/gpt-oss-20b",displayName:"GPT OSS 20B",family:"accounts/fireworks/gpt-oss-20b",status:"stable",context:{combinedMax:131072,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.05,outputPerMTokens:.2},pricingSource:"models.dev",aliases:["fireworks-ai/accounts/fireworks/gpt-oss-20b"],releasedAt:"2025-08-05",source:"https://fireworks.ai/docs/",contextSource:"https://fireworks.ai/docs/",verifiedAt:"2025-08-05"},{id:"fireworks-ai:accounts/fireworks/models/deepseek-r1-0528",provider:"fireworks-ai",vendorId:"accounts/fireworks/models/deepseek-r1-0528",displayName:"Deepseek R1 05/28",family:"accounts/fireworks/models/deepseek-r1-0528",status:"stable",context:{combinedMax:16e4,outputMax:16384},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:3,outputPerMTokens:8},pricingSource:"models.dev",aliases:["fireworks-ai/accounts/fireworks/models/deepseek-r1-0528"],releasedAt:"2025-05-28",source:"https://fireworks.ai/docs/",contextSource:"https://fireworks.ai/docs/",verifiedAt:"2025-05-28"},{id:"fireworks-ai:accounts/fireworks/models/deepseek-v3-0324",provider:"fireworks-ai",vendorId:"accounts/fireworks/models/deepseek-v3-0324",displayName:"Deepseek V3 03-24",family:"accounts/fireworks/models/deepseek-v3-0324",status:"stable",context:{combinedMax:16e4,outputMax:16384},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.9,outputPerMTokens:.9},pricingSource:"models.dev",aliases:["fireworks-ai/accounts/fireworks/models/deepseek-v3-0324"],releasedAt:"2025-03-24",source:"https://fireworks.ai/docs/",contextSource:"https://fireworks.ai/docs/",verifiedAt:"2025-03-24"},{id:"fireworks-ai:accounts/fireworks/models/deepseek-v3p1",provider:"fireworks-ai",vendorId:"accounts/fireworks/models/deepseek-v3p1",displayName:"DeepSeek V3.1",family:"accounts/fireworks/models/deepseek-v3p1",status:"stable",context:{combinedMax:163840,outputMax:163840},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.56,outputPerMTokens:1.68},pricingSource:"models.dev",aliases:["fireworks-ai/accounts/fireworks/models/deepseek-v3p1"],releasedAt:"2025-08-21",source:"https://fireworks.ai/docs/",contextSource:"https://fireworks.ai/docs/",verifiedAt:"2025-08-21"},{id:"fireworks-ai:accounts/fireworks/models/glm-4p5",provider:"fireworks-ai",vendorId:"accounts/fireworks/models/glm-4p5",displayName:"GLM 4.5",family:"accounts/fireworks/models/glm-4p5",status:"stable",context:{combinedMax:131072,outputMax:131072},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.55,outputPerMTokens:2.19},pricingSource:"models.dev",aliases:["fireworks-ai/accounts/fireworks/models/glm-4p5"],releasedAt:"2025-07-29",source:"https://fireworks.ai/docs/",contextSource:"https://fireworks.ai/docs/",verifiedAt:"2025-07-29"},{id:"fireworks-ai:accounts/fireworks/models/glm-4p5-air",provider:"fireworks-ai",vendorId:"accounts/fireworks/models/glm-4p5-air",displayName:"GLM 4.5 Air",family:"accounts/fireworks/models/glm-4p5-air",status:"stable",context:{combinedMax:131072,outputMax:131072},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.22,outputPerMTokens:.88},pricingSource:"models.dev",aliases:["fireworks-ai/accounts/fireworks/models/glm-4p5-air"],releasedAt:"2025-08-01",source:"https://fireworks.ai/docs/",contextSource:"https://fireworks.ai/docs/",verifiedAt:"2025-08-01"},{id:"fireworks-ai:accounts/fireworks/models/kimi-k2-instruct",provider:"fireworks-ai",vendorId:"accounts/fireworks/models/kimi-k2-instruct",displayName:"Kimi K2 Instruct",family:"accounts/fireworks/models/kimi-k2-instruct",status:"stable",context:{combinedMax:128e3,outputMax:16384},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1,outputPerMTokens:3},pricingSource:"models.dev",aliases:["fireworks-ai/accounts/fireworks/models/kimi-k2-instruct"],releasedAt:"2025-07-11",source:"https://fireworks.ai/docs/",contextSource:"https://fireworks.ai/docs/",verifiedAt:"2025-07-11"},{id:"fireworks-ai:accounts/fireworks/models/qwen3-235b-a22b",provider:"fireworks-ai",vendorId:"accounts/fireworks/models/qwen3-235b-a22b",displayName:"Qwen3 235B-A22B",family:"accounts/fireworks/models/qwen3-235b-a22b",status:"stable",context:{combinedMax:128e3,outputMax:16384},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.22,outputPerMTokens:.88},pricingSource:"models.dev",aliases:["fireworks-ai/accounts/fireworks/models/qwen3-235b-a22b"],releasedAt:"2025-04-29",source:"https://fireworks.ai/docs/",contextSource:"https://fireworks.ai/docs/",verifiedAt:"2025-04-29"},{id:"fireworks-ai:accounts/fireworks/models/qwen3-coder-480b-a35b-instruct",provider:"fireworks-ai",vendorId:"accounts/fireworks/models/qwen3-coder-480b-a35b-instruct",displayName:"Qwen3 Coder 480B A35B Instruct",family:"accounts/fireworks/models/qwen3-coder-480b-a35b-instruct",status:"stable",context:{combinedMax:256e3,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.45,outputPerMTokens:1.8},pricingSource:"models.dev",aliases:["fireworks-ai/accounts/fireworks/models/qwen3-coder-480b-a35b-instruct"],releasedAt:"2025-07-22",source:"https://fireworks.ai/docs/",contextSource:"https://fireworks.ai/docs/",verifiedAt:"2025-07-22"},{id:"github-copilot:claude-3.5-sonnet",provider:"github-copilot",vendorId:"claude-3.5-sonnet",displayName:"Claude Sonnet 3.5",family:"claude-3.5-sonnet",status:"stable",context:{combinedMax:2e5,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricingSource:"models.dev",aliases:["github-copilot/claude-3.5-sonnet"],releasedAt:"2024-10-22",source:"https://docs.github.com/en/copilot",contextSource:"https://docs.github.com/en/copilot",verifiedAt:"2024-10-22"},{id:"github-copilot:claude-3.7-sonnet",provider:"github-copilot",vendorId:"claude-3.7-sonnet",displayName:"Claude Sonnet 3.7",family:"claude-3.7-sonnet",status:"stable",context:{combinedMax:2e5,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricingSource:"models.dev",aliases:["github-copilot/claude-3.7-sonnet"],releasedAt:"2025-02-19",source:"https://docs.github.com/en/copilot",contextSource:"https://docs.github.com/en/copilot",verifiedAt:"2025-02-19"},{id:"github-copilot:claude-3.7-sonnet-thought",provider:"github-copilot",vendorId:"claude-3.7-sonnet-thought",displayName:"Claude Sonnet 3.7 Thinking",family:"claude-3.7-sonnet-thought",status:"stable",context:{combinedMax:2e5,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricingSource:"models.dev",aliases:["github-copilot/claude-3.7-sonnet-thought"],releasedAt:"2025-02-19",source:"https://docs.github.com/en/copilot",contextSource:"https://docs.github.com/en/copilot",verifiedAt:"2025-02-19"},{id:"github-copilot:claude-opus-4",provider:"github-copilot",vendorId:"claude-opus-4",displayName:"Claude Opus 4",family:"claude-opus-4",status:"stable",context:{combinedMax:8e4,outputMax:16e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricingSource:"models.dev",aliases:["github-copilot/claude-opus-4"],releasedAt:"2025-05-22",source:"https://docs.github.com/en/copilot",contextSource:"https://docs.github.com/en/copilot",verifiedAt:"2025-05-22"},{id:"github-copilot:claude-opus-41",provider:"github-copilot",vendorId:"claude-opus-41",displayName:"Claude Opus 4.1",family:"claude-opus-41",status:"stable",context:{combinedMax:2e5,outputMax:32e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricingSource:"models.dev",aliases:["github-copilot/claude-opus-41"],releasedAt:"2025-08-05",source:"https://docs.github.com/en/copilot",contextSource:"https://docs.github.com/en/copilot",verifiedAt:"2025-08-05"},{id:"github-copilot:claude-sonnet-4",provider:"github-copilot",vendorId:"claude-sonnet-4",displayName:"Claude Sonnet 4",family:"claude-sonnet-4",status:"stable",context:{combinedMax:2e5,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricingSource:"models.dev",aliases:["github-copilot/claude-sonnet-4"],releasedAt:"2025-05-22",source:"https://docs.github.com/en/copilot",contextSource:"https://docs.github.com/en/copilot",verifiedAt:"2025-05-22"},{id:"github-copilot:gemini-2.0-flash-001",provider:"github-copilot",vendorId:"gemini-2.0-flash-001",displayName:"Gemini 2.0 Flash",family:"gemini-2.0-flash-001",status:"stable",context:{combinedMax:1e6,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricingSource:"models.dev",aliases:["github-copilot/gemini-2.0-flash-001"],releasedAt:"2024-12-11",source:"https://docs.github.com/en/copilot",contextSource:"https://docs.github.com/en/copilot",verifiedAt:"2024-12-11"},{id:"github-copilot:gemini-2.5-pro",provider:"github-copilot",vendorId:"gemini-2.5-pro",displayName:"Gemini 2.5 Pro",family:"gemini-2.5-pro",status:"stable",context:{combinedMax:1048576,outputMax:65536},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricingSource:"models.dev",aliases:["github-copilot/gemini-2.5-pro"],releasedAt:"2025-03-20",source:"https://docs.github.com/en/copilot",contextSource:"https://docs.github.com/en/copilot",verifiedAt:"2025-06-05"},{id:"github-copilot:gpt-4.1",provider:"github-copilot",vendorId:"gpt-4.1",displayName:"GPT-4.1",family:"gpt-4.1",status:"stable",context:{combinedMax:128e3,outputMax:16384},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricingSource:"models.dev",aliases:["github-copilot/gpt-4.1"],releasedAt:"2025-04-14",source:"https://docs.github.com/en/copilot",contextSource:"https://docs.github.com/en/copilot",verifiedAt:"2025-04-14"},{id:"github-copilot:gpt-4o",provider:"github-copilot",vendorId:"gpt-4o",displayName:"GPT-4o",family:"gpt-4o",status:"stable",context:{combinedMax:128e3,outputMax:16384},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricingSource:"models.dev",aliases:["github-copilot/gpt-4o"],releasedAt:"2024-05-13",source:"https://docs.github.com/en/copilot",contextSource:"https://docs.github.com/en/copilot",verifiedAt:"2024-05-13"},{id:"github-copilot:gpt-5",provider:"github-copilot",vendorId:"gpt-5",displayName:"GPT-5",family:"gpt-5",status:"stable",context:{combinedMax:128e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricingSource:"models.dev",aliases:["github-copilot/gpt-5"],releasedAt:"2025-08-07",source:"https://docs.github.com/en/copilot",contextSource:"https://docs.github.com/en/copilot",verifiedAt:"2025-08-07"},{id:"github-copilot:gpt-5-mini",provider:"github-copilot",vendorId:"gpt-5-mini",displayName:"GPT-5-mini",family:"gpt-5-mini",status:"stable",context:{combinedMax:128e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricingSource:"models.dev",aliases:["github-copilot/gpt-5-mini"],releasedAt:"2025-08-13",source:"https://docs.github.com/en/copilot",contextSource:"https://docs.github.com/en/copilot",verifiedAt:"2025-08-13"},{id:"github-copilot:grok-code-fast-1",provider:"github-copilot",vendorId:"grok-code-fast-1",displayName:"Grok Code Fast 1",family:"grok-code-fast-1",status:"stable",context:{combinedMax:256e3,outputMax:1e4},modalities:{textIn:!0,textOut:!0},pricingSource:"models.dev",aliases:["github-copilot/grok-code-fast-1"],releasedAt:"2025-08-27",source:"https://docs.github.com/en/copilot",contextSource:"https://docs.github.com/en/copilot",verifiedAt:"2025-08-27"},{id:"github-copilot:o3",provider:"github-copilot",vendorId:"o3",displayName:"o3 (Preview)",family:"o3",status:"stable",context:{combinedMax:128e3,outputMax:16384},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricingSource:"models.dev",aliases:["github-copilot/o3"],releasedAt:"2025-04-16",source:"https://docs.github.com/en/copilot",contextSource:"https://docs.github.com/en/copilot",verifiedAt:"2025-04-16"},{id:"github-copilot:o3-mini",provider:"github-copilot",vendorId:"o3-mini",displayName:"o3-mini",family:"o3-mini",status:"stable",context:{combinedMax:128e3,outputMax:65536},modalities:{textIn:!0,textOut:!0},pricingSource:"models.dev",aliases:["github-copilot/o3-mini"],releasedAt:"2024-12-20",source:"https://docs.github.com/en/copilot",contextSource:"https://docs.github.com/en/copilot",verifiedAt:"2025-01-29"},{id:"github-copilot:o4-mini",provider:"github-copilot",vendorId:"o4-mini",displayName:"o4-mini (Preview)",family:"o4-mini",status:"stable",context:{combinedMax:128e3,outputMax:65536},modalities:{textIn:!0,textOut:!0},pricingSource:"models.dev",aliases:["github-copilot/o4-mini"],releasedAt:"2025-04-16",source:"https://docs.github.com/en/copilot",contextSource:"https://docs.github.com/en/copilot",verifiedAt:"2025-04-16"},{id:"github-models:ai21-labs/ai21-jamba-1.5-large",provider:"github-models",vendorId:"ai21-labs/ai21-jamba-1.5-large",displayName:"AI21 Jamba 1.5 Large",family:"ai21-labs/ai21-jamba-1.5-large",status:"stable",context:{combinedMax:256e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/ai21-labs/ai21-jamba-1.5-large"],releasedAt:"2024-08-29",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-08-29"},{id:"github-models:ai21-labs/ai21-jamba-1.5-mini",provider:"github-models",vendorId:"ai21-labs/ai21-jamba-1.5-mini",displayName:"AI21 Jamba 1.5 Mini",family:"ai21-labs/ai21-jamba-1.5-mini",status:"stable",context:{combinedMax:256e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/ai21-labs/ai21-jamba-1.5-mini"],releasedAt:"2024-08-29",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-08-29"},{id:"github-models:cohere/cohere-command-a",provider:"github-models",vendorId:"cohere/cohere-command-a",displayName:"Cohere Command A",family:"cohere/cohere-command-a",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/cohere/cohere-command-a"],releasedAt:"2024-11-01",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-11-01"},{id:"github-models:cohere/cohere-command-r",provider:"github-models",vendorId:"cohere/cohere-command-r",displayName:"Cohere Command R",family:"cohere/cohere-command-r",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/cohere/cohere-command-r"],releasedAt:"2024-03-11",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-08-01"},{id:"github-models:cohere/cohere-command-r-08-2024",provider:"github-models",vendorId:"cohere/cohere-command-r-08-2024",displayName:"Cohere Command R 08-2024",family:"cohere/cohere-command-r-08-2024",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/cohere/cohere-command-r-08-2024"],releasedAt:"2024-08-01",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-08-01"},{id:"github-models:cohere/cohere-command-r-plus",provider:"github-models",vendorId:"cohere/cohere-command-r-plus",displayName:"Cohere Command R+",family:"cohere/cohere-command-r-plus",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/cohere/cohere-command-r-plus"],releasedAt:"2024-04-04",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-08-01"},{id:"github-models:cohere/cohere-command-r-plus-08-2024",provider:"github-models",vendorId:"cohere/cohere-command-r-plus-08-2024",displayName:"Cohere Command R+ 08-2024",family:"cohere/cohere-command-r-plus-08-2024",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/cohere/cohere-command-r-plus-08-2024"],releasedAt:"2024-08-01",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-08-01"},{id:"github-models:core42/jais-30b-chat",provider:"github-models",vendorId:"core42/jais-30b-chat",displayName:"JAIS 30b Chat",family:"core42/jais-30b-chat",status:"stable",context:{combinedMax:8192,outputMax:2048},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/core42/jais-30b-chat"],releasedAt:"2023-08-30",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2023-08-30"},{id:"github-models:deepseek/deepseek-r1",provider:"github-models",vendorId:"deepseek/deepseek-r1",displayName:"DeepSeek-R1",family:"deepseek/deepseek-r1",status:"stable",context:{combinedMax:65536,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/deepseek/deepseek-r1"],releasedAt:"2025-01-20",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2025-01-20"},{id:"github-models:deepseek/deepseek-r1-0528",provider:"github-models",vendorId:"deepseek/deepseek-r1-0528",displayName:"DeepSeek-R1-0528",family:"deepseek/deepseek-r1-0528",status:"stable",context:{combinedMax:65536,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/deepseek/deepseek-r1-0528"],releasedAt:"2025-05-28",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2025-05-28"},{id:"github-models:deepseek/deepseek-v3-0324",provider:"github-models",vendorId:"deepseek/deepseek-v3-0324",displayName:"DeepSeek-V3-0324",family:"deepseek/deepseek-v3-0324",status:"stable",context:{combinedMax:128e3,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/deepseek/deepseek-v3-0324"],releasedAt:"2025-03-24",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2025-03-24"},{id:"github-models:meta/llama-3.2-11b-vision-instruct",provider:"github-models",vendorId:"meta/llama-3.2-11b-vision-instruct",displayName:"Llama-3.2-11B-Vision-Instruct",family:"meta/llama-3.2-11b-vision-instruct",status:"stable",context:{combinedMax:128e3,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/meta/llama-3.2-11b-vision-instruct"],releasedAt:"2024-09-25",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-09-25"},{id:"github-models:meta/llama-3.2-90b-vision-instruct",provider:"github-models",vendorId:"meta/llama-3.2-90b-vision-instruct",displayName:"Llama-3.2-90B-Vision-Instruct",family:"meta/llama-3.2-90b-vision-instruct",status:"stable",context:{combinedMax:128e3,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/meta/llama-3.2-90b-vision-instruct"],releasedAt:"2024-09-25",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-09-25"},{id:"github-models:meta/llama-3.3-70b-instruct",provider:"github-models",vendorId:"meta/llama-3.3-70b-instruct",displayName:"Llama-3.3-70B-Instruct",family:"meta/llama-3.3-70b-instruct",status:"stable",context:{combinedMax:128e3,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/meta/llama-3.3-70b-instruct"],releasedAt:"2024-12-06",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-12-06"},{id:"github-models:meta/llama-4-maverick-17b-128e-instruct-fp8",provider:"github-models",vendorId:"meta/llama-4-maverick-17b-128e-instruct-fp8",displayName:"Llama 4 Maverick 17B 128E Instruct FP8",family:"meta/llama-4-maverick-17b-128e-instruct-fp8",status:"stable",context:{combinedMax:128e3,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/meta/llama-4-maverick-17b-128e-instruct-fp8"],releasedAt:"2025-01-31",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2025-01-31"},{id:"github-models:meta/llama-4-scout-17b-16e-instruct",provider:"github-models",vendorId:"meta/llama-4-scout-17b-16e-instruct",displayName:"Llama 4 Scout 17B 16E Instruct",family:"meta/llama-4-scout-17b-16e-instruct",status:"stable",context:{combinedMax:128e3,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/meta/llama-4-scout-17b-16e-instruct"],releasedAt:"2025-01-31",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2025-01-31"},{id:"github-models:meta/meta-llama-3-70b-instruct",provider:"github-models",vendorId:"meta/meta-llama-3-70b-instruct",displayName:"Meta-Llama-3-70B-Instruct",family:"meta/meta-llama-3-70b-instruct",status:"stable",context:{combinedMax:8192,outputMax:2048},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/meta/meta-llama-3-70b-instruct"],releasedAt:"2024-04-18",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-04-18"},{id:"github-models:meta/meta-llama-3-8b-instruct",provider:"github-models",vendorId:"meta/meta-llama-3-8b-instruct",displayName:"Meta-Llama-3-8B-Instruct",family:"meta/meta-llama-3-8b-instruct",status:"stable",context:{combinedMax:8192,outputMax:2048},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/meta/meta-llama-3-8b-instruct"],releasedAt:"2024-04-18",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-04-18"},{id:"github-models:meta/meta-llama-3.1-405b-instruct",provider:"github-models",vendorId:"meta/meta-llama-3.1-405b-instruct",displayName:"Meta-Llama-3.1-405B-Instruct",family:"meta/meta-llama-3.1-405b-instruct",status:"stable",context:{combinedMax:128e3,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/meta/meta-llama-3.1-405b-instruct"],releasedAt:"2024-07-23",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-07-23"},{id:"github-models:meta/meta-llama-3.1-70b-instruct",provider:"github-models",vendorId:"meta/meta-llama-3.1-70b-instruct",displayName:"Meta-Llama-3.1-70B-Instruct",family:"meta/meta-llama-3.1-70b-instruct",status:"stable",context:{combinedMax:128e3,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/meta/meta-llama-3.1-70b-instruct"],releasedAt:"2024-07-23",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-07-23"},{id:"github-models:meta/meta-llama-3.1-8b-instruct",provider:"github-models",vendorId:"meta/meta-llama-3.1-8b-instruct",displayName:"Meta-Llama-3.1-8B-Instruct",family:"meta/meta-llama-3.1-8b-instruct",status:"stable",context:{combinedMax:128e3,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/meta/meta-llama-3.1-8b-instruct"],releasedAt:"2024-07-23",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-07-23"},{id:"github-models:microsoft/mai-ds-r1",provider:"github-models",vendorId:"microsoft/mai-ds-r1",displayName:"MAI-DS-R1",family:"microsoft/mai-ds-r1",status:"stable",context:{combinedMax:65536,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/microsoft/mai-ds-r1"],releasedAt:"2025-01-20",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2025-01-20"},{id:"github-models:microsoft/phi-3-medium-128k-instruct",provider:"github-models",vendorId:"microsoft/phi-3-medium-128k-instruct",displayName:"Phi-3-medium instruct (128k)",family:"microsoft/phi-3-medium-128k-instruct",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/microsoft/phi-3-medium-128k-instruct"],releasedAt:"2024-04-23",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-04-23"},{id:"github-models:microsoft/phi-3-medium-4k-instruct",provider:"github-models",vendorId:"microsoft/phi-3-medium-4k-instruct",displayName:"Phi-3-medium instruct (4k)",family:"microsoft/phi-3-medium-4k-instruct",status:"stable",context:{combinedMax:4096,outputMax:1024},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/microsoft/phi-3-medium-4k-instruct"],releasedAt:"2024-04-23",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-04-23"},{id:"github-models:microsoft/phi-3-mini-128k-instruct",provider:"github-models",vendorId:"microsoft/phi-3-mini-128k-instruct",displayName:"Phi-3-mini instruct (128k)",family:"microsoft/phi-3-mini-128k-instruct",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/microsoft/phi-3-mini-128k-instruct"],releasedAt:"2024-04-23",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-04-23"},{id:"github-models:microsoft/phi-3-mini-4k-instruct",provider:"github-models",vendorId:"microsoft/phi-3-mini-4k-instruct",displayName:"Phi-3-mini instruct (4k)",family:"microsoft/phi-3-mini-4k-instruct",status:"stable",context:{combinedMax:4096,outputMax:1024},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/microsoft/phi-3-mini-4k-instruct"],releasedAt:"2024-04-23",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-04-23"},{id:"github-models:microsoft/phi-3-small-128k-instruct",provider:"github-models",vendorId:"microsoft/phi-3-small-128k-instruct",displayName:"Phi-3-small instruct (128k)",family:"microsoft/phi-3-small-128k-instruct",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/microsoft/phi-3-small-128k-instruct"],releasedAt:"2024-04-23",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-04-23"},{id:"github-models:microsoft/phi-3-small-8k-instruct",provider:"github-models",vendorId:"microsoft/phi-3-small-8k-instruct",displayName:"Phi-3-small instruct (8k)",family:"microsoft/phi-3-small-8k-instruct",status:"stable",context:{combinedMax:8192,outputMax:2048},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/microsoft/phi-3-small-8k-instruct"],releasedAt:"2024-04-23",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-04-23"},{id:"github-models:microsoft/phi-3.5-mini-instruct",provider:"github-models",vendorId:"microsoft/phi-3.5-mini-instruct",displayName:"Phi-3.5-mini instruct (128k)",family:"microsoft/phi-3.5-mini-instruct",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/microsoft/phi-3.5-mini-instruct"],releasedAt:"2024-08-20",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-08-20"},{id:"github-models:microsoft/phi-3.5-moe-instruct",provider:"github-models",vendorId:"microsoft/phi-3.5-moe-instruct",displayName:"Phi-3.5-MoE instruct (128k)",family:"microsoft/phi-3.5-moe-instruct",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/microsoft/phi-3.5-moe-instruct"],releasedAt:"2024-08-20",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-08-20"},{id:"github-models:microsoft/phi-3.5-vision-instruct",provider:"github-models",vendorId:"microsoft/phi-3.5-vision-instruct",displayName:"Phi-3.5-vision instruct (128k)",family:"microsoft/phi-3.5-vision-instruct",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/microsoft/phi-3.5-vision-instruct"],releasedAt:"2024-08-20",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-08-20"},{id:"github-models:microsoft/phi-4",provider:"github-models",vendorId:"microsoft/phi-4",displayName:"Phi-4",family:"microsoft/phi-4",status:"stable",context:{combinedMax:16e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/microsoft/phi-4"],releasedAt:"2024-12-11",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-12-11"},{id:"github-models:microsoft/phi-4-mini-instruct",provider:"github-models",vendorId:"microsoft/phi-4-mini-instruct",displayName:"Phi-4-mini-instruct",family:"microsoft/phi-4-mini-instruct",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/microsoft/phi-4-mini-instruct"],releasedAt:"2024-12-11",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-12-11"},{id:"github-models:microsoft/phi-4-mini-reasoning",provider:"github-models",vendorId:"microsoft/phi-4-mini-reasoning",displayName:"Phi-4-mini-reasoning",family:"microsoft/phi-4-mini-reasoning",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/microsoft/phi-4-mini-reasoning"],releasedAt:"2024-12-11",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-12-11"},{id:"github-models:microsoft/phi-4-multimodal-instruct",provider:"github-models",vendorId:"microsoft/phi-4-multimodal-instruct",displayName:"Phi-4-multimodal-instruct",family:"microsoft/phi-4-multimodal-instruct",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/microsoft/phi-4-multimodal-instruct"],releasedAt:"2024-12-11",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-12-11"},{id:"github-models:microsoft/phi-4-reasoning",provider:"github-models",vendorId:"microsoft/phi-4-reasoning",displayName:"Phi-4-Reasoning",family:"microsoft/phi-4-reasoning",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/microsoft/phi-4-reasoning"],releasedAt:"2024-12-11",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-12-11"},{id:"github-models:mistral-ai/codestral-2501",provider:"github-models",vendorId:"mistral-ai/codestral-2501",displayName:"Codestral 25.01",family:"mistral-ai/codestral-2501",status:"stable",context:{combinedMax:32e3,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/mistral-ai/codestral-2501"],releasedAt:"2025-01-01",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2025-01-01"},{id:"github-models:mistral-ai/ministral-3b",provider:"github-models",vendorId:"mistral-ai/ministral-3b",displayName:"Ministral 3B",family:"mistral-ai/ministral-3b",status:"stable",context:{combinedMax:128e3,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/mistral-ai/ministral-3b"],releasedAt:"2024-10-22",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-10-22"},{id:"github-models:mistral-ai/mistral-large-2411",provider:"github-models",vendorId:"mistral-ai/mistral-large-2411",displayName:"Mistral Large 24.11",family:"mistral-ai/mistral-large-2411",status:"stable",context:{combinedMax:128e3,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/mistral-ai/mistral-large-2411"],releasedAt:"2024-11-01",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-11-01"},{id:"github-models:mistral-ai/mistral-medium-2505",provider:"github-models",vendorId:"mistral-ai/mistral-medium-2505",displayName:"Mistral Medium 3 (25.05)",family:"mistral-ai/mistral-medium-2505",status:"stable",context:{combinedMax:128e3,outputMax:32768},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/mistral-ai/mistral-medium-2505"],releasedAt:"2025-05-01",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2025-05-01"},{id:"github-models:mistral-ai/mistral-nemo",provider:"github-models",vendorId:"mistral-ai/mistral-nemo",displayName:"Mistral Nemo",family:"mistral-ai/mistral-nemo",status:"stable",context:{combinedMax:128e3,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/mistral-ai/mistral-nemo"],releasedAt:"2024-07-18",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-07-18"},{id:"github-models:mistral-ai/mistral-small-2503",provider:"github-models",vendorId:"mistral-ai/mistral-small-2503",displayName:"Mistral Small 3.1",family:"mistral-ai/mistral-small-2503",status:"stable",context:{combinedMax:128e3,outputMax:32768},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/mistral-ai/mistral-small-2503"],releasedAt:"2025-03-01",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2025-03-01"},{id:"github-models:openai/gpt-4.1",provider:"github-models",vendorId:"openai/gpt-4.1",displayName:"GPT-4.1",family:"openai/gpt-4.1",status:"stable",context:{combinedMax:128e3,outputMax:16384},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/openai/gpt-4.1"],releasedAt:"2025-04-14",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2025-04-14"},{id:"github-models:openai/gpt-4.1-mini",provider:"github-models",vendorId:"openai/gpt-4.1-mini",displayName:"GPT-4.1-mini",family:"openai/gpt-4.1-mini",status:"stable",context:{combinedMax:128e3,outputMax:16384},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/openai/gpt-4.1-mini"],releasedAt:"2025-04-14",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2025-04-14"},{id:"github-models:openai/gpt-4.1-nano",provider:"github-models",vendorId:"openai/gpt-4.1-nano",displayName:"GPT-4.1-nano",family:"openai/gpt-4.1-nano",status:"stable",context:{combinedMax:128e3,outputMax:16384},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/openai/gpt-4.1-nano"],releasedAt:"2025-04-14",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2025-04-14"},{id:"github-models:openai/gpt-4o",provider:"github-models",vendorId:"openai/gpt-4o",displayName:"GPT-4o",family:"openai/gpt-4o",status:"stable",context:{combinedMax:128e3,outputMax:16384},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/openai/gpt-4o"],releasedAt:"2024-05-13",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-05-13"},{id:"github-models:openai/gpt-4o-mini",provider:"github-models",vendorId:"openai/gpt-4o-mini",displayName:"GPT-4o mini",family:"openai/gpt-4o-mini",status:"stable",context:{combinedMax:128e3,outputMax:16384},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/openai/gpt-4o-mini"],releasedAt:"2024-07-18",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-07-18"},{id:"github-models:openai/o1",provider:"github-models",vendorId:"openai/o1",displayName:"OpenAI o1",family:"openai/o1",status:"stable",context:{combinedMax:2e5,outputMax:1e5},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/openai/o1"],releasedAt:"2024-09-12",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-12-17"},{id:"github-models:openai/o1-mini",provider:"github-models",vendorId:"openai/o1-mini",displayName:"OpenAI o1-mini",family:"openai/o1-mini",status:"stable",context:{combinedMax:128e3,outputMax:65536},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/openai/o1-mini"],releasedAt:"2024-09-12",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-12-17"},{id:"github-models:openai/o1-preview",provider:"github-models",vendorId:"openai/o1-preview",displayName:"OpenAI o1-preview",family:"openai/o1-preview",status:"stable",context:{combinedMax:128e3,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/openai/o1-preview"],releasedAt:"2024-09-12",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-09-12"},{id:"github-models:openai/o3",provider:"github-models",vendorId:"openai/o3",displayName:"OpenAI o3",family:"openai/o3",status:"stable",context:{combinedMax:2e5,outputMax:1e5},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/openai/o3"],releasedAt:"2025-01-31",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2025-01-31"},{id:"github-models:openai/o3-mini",provider:"github-models",vendorId:"openai/o3-mini",displayName:"OpenAI o3-mini",family:"openai/o3-mini",status:"stable",context:{combinedMax:2e5,outputMax:1e5},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/openai/o3-mini"],releasedAt:"2025-01-31",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2025-01-31"},{id:"github-models:openai/o4-mini",provider:"github-models",vendorId:"openai/o4-mini",displayName:"OpenAI o4-mini",family:"openai/o4-mini",status:"stable",context:{combinedMax:2e5,outputMax:1e5},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/openai/o4-mini"],releasedAt:"2025-01-31",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2025-01-31"},{id:"github-models:xai/grok-3",provider:"github-models",vendorId:"xai/grok-3",displayName:"Grok 3",family:"xai/grok-3",status:"stable",context:{combinedMax:128e3,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/xai/grok-3"],releasedAt:"2024-12-09",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-12-09"},{id:"github-models:xai/grok-3-mini",provider:"github-models",vendorId:"xai/grok-3-mini",displayName:"Grok 3 Mini",family:"xai/grok-3-mini",status:"stable",context:{combinedMax:128e3,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/xai/grok-3-mini"],releasedAt:"2024-12-09",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-12-09"},{id:"google:gemini-1.5-flash",provider:"google",vendorId:"gemini-1.5-flash",displayName:"Gemini 1.5 Flash",family:"gemini-1.5-flash",status:"stable",context:{combinedMax:1e6,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.075,outputPerMTokens:.3},pricingSource:"models.dev",aliases:["google/gemini-1.5-flash"],releasedAt:"2024-05-14",source:"https://ai.google.dev/gemini-api/docs/pricing",contextSource:"https://ai.google.dev/gemini-api/docs/pricing",verifiedAt:"2024-05-14"},{id:"google:gemini-1.5-flash-8b",provider:"google",vendorId:"gemini-1.5-flash-8b",displayName:"Gemini 1.5 Flash-8B",family:"gemini-1.5-flash-8b",status:"stable",context:{combinedMax:1e6,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.0375,outputPerMTokens:.15},pricingSource:"models.dev",aliases:["google/gemini-1.5-flash-8b"],releasedAt:"2024-10-03",source:"https://ai.google.dev/gemini-api/docs/pricing",contextSource:"https://ai.google.dev/gemini-api/docs/pricing",verifiedAt:"2024-10-03"},{id:"google:gemini-1.5-pro",provider:"google",vendorId:"gemini-1.5-pro",displayName:"Gemini 1.5 Pro",family:"gemini-1.5-pro",status:"stable",context:{combinedMax:1e6,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:1.25,outputPerMTokens:5},pricingSource:"models.dev",aliases:["google/gemini-1.5-pro"],releasedAt:"2024-02-15",source:"https://ai.google.dev/gemini-api/docs/pricing",contextSource:"https://ai.google.dev/gemini-api/docs/pricing",verifiedAt:"2024-02-15"},{id:"google:gemini-2.0-flash",provider:"google",vendorId:"gemini-2.0-flash",displayName:"Gemini 2.0 Flash",family:"gemini-2.0-flash",status:"stable",context:{combinedMax:1048576,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.1,outputPerMTokens:.4},pricingSource:"models.dev",aliases:["google/gemini-2.0-flash"],releasedAt:"2024-12-11",source:"https://ai.google.dev/gemini-api/docs/pricing",contextSource:"https://ai.google.dev/gemini-api/docs/pricing",verifiedAt:"2024-12-11"},{id:"google:gemini-2.0-flash-lite",provider:"google",vendorId:"gemini-2.0-flash-lite",displayName:"Gemini 2.0 Flash Lite",family:"gemini-2.0-flash-lite",status:"stable",context:{combinedMax:1048576,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.075,outputPerMTokens:.3},pricingSource:"models.dev",aliases:["google/gemini-2.0-flash-lite"],releasedAt:"2024-12-11",source:"https://ai.google.dev/gemini-api/docs/pricing",contextSource:"https://ai.google.dev/gemini-api/docs/pricing",verifiedAt:"2024-12-11"},{id:"google:gemini-2.5-flash",provider:"google",vendorId:"gemini-2.5-flash",displayName:"Gemini 2.5 Flash",family:"gemini-2.5-flash",status:"stable",context:{combinedMax:1048576,outputMax:65536},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.3,outputPerMTokens:2.5},pricingSource:"models.dev",aliases:["google/gemini-2.5-flash"],releasedAt:"2025-03-20",source:"https://ai.google.dev/gemini-api/docs/pricing",contextSource:"https://ai.google.dev/gemini-api/docs/pricing",verifiedAt:"2025-06-05"},{id:"google:gemini-2.5-flash-lite-preview-06-17",provider:"google",vendorId:"gemini-2.5-flash-lite-preview-06-17",displayName:"Gemini 2.5 Flash Lite Preview 06-17",family:"gemini-2.5-flash-lite-preview-06-17",status:"stable",context:{combinedMax:65536,outputMax:65536},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.1,outputPerMTokens:.4},pricingSource:"models.dev",aliases:["google/gemini-2.5-flash-lite-preview-06-17"],releasedAt:"2025-06-17",source:"https://ai.google.dev/gemini-api/docs/pricing",contextSource:"https://ai.google.dev/gemini-api/docs/pricing",verifiedAt:"2025-06-17"},{id:"google:gemini-2.5-flash-preview-04-17",provider:"google",vendorId:"gemini-2.5-flash-preview-04-17",displayName:"Gemini 2.5 Flash Preview 04-17",family:"gemini-2.5-flash-preview-04-17",status:"stable",context:{combinedMax:1048576,outputMax:65536},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.15,outputPerMTokens:.6},pricingSource:"models.dev",aliases:["google/gemini-2.5-flash-preview-04-17"],releasedAt:"2025-04-17",source:"https://ai.google.dev/gemini-api/docs/pricing",contextSource:"https://ai.google.dev/gemini-api/docs/pricing",verifiedAt:"2025-04-17"},{id:"google:gemini-2.5-flash-preview-05-20",provider:"google",vendorId:"gemini-2.5-flash-preview-05-20",displayName:"Gemini 2.5 Flash Preview 05-20",family:"gemini-2.5-flash-preview-05-20",status:"stable",context:{combinedMax:1048576,outputMax:65536},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.15,outputPerMTokens:.6},pricingSource:"models.dev",aliases:["google/gemini-2.5-flash-preview-05-20"],releasedAt:"2025-05-20",source:"https://ai.google.dev/gemini-api/docs/pricing",contextSource:"https://ai.google.dev/gemini-api/docs/pricing",verifiedAt:"2025-05-20"},{id:"google:gemini-2.5-pro",provider:"google",vendorId:"gemini-2.5-pro",displayName:"Gemini 2.5 Pro",family:"gemini-2.5-pro",status:"stable",context:{combinedMax:1048576,outputMax:65536},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:1.25,outputPerMTokens:10},pricingSource:"models.dev",aliases:["google/gemini-2.5-pro"],releasedAt:"2025-03-20",source:"https://ai.google.dev/gemini-api/docs/pricing",contextSource:"https://ai.google.dev/gemini-api/docs/pricing",verifiedAt:"2025-06-05"},{id:"google:gemini-2.5-pro-preview-05-06",provider:"google",vendorId:"gemini-2.5-pro-preview-05-06",displayName:"Gemini 2.5 Pro Preview 05-06",family:"gemini-2.5-pro-preview-05-06",status:"stable",context:{combinedMax:1048576,outputMax:65536},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:1.25,outputPerMTokens:10},pricingSource:"models.dev",aliases:["google/gemini-2.5-pro-preview-05-06"],releasedAt:"2025-05-06",source:"https://ai.google.dev/gemini-api/docs/pricing",contextSource:"https://ai.google.dev/gemini-api/docs/pricing",verifiedAt:"2025-05-06"},{id:"google:gemini-2.5-pro-preview-06-05",provider:"google",vendorId:"gemini-2.5-pro-preview-06-05",displayName:"Gemini 2.5 Pro Preview 06-05",family:"gemini-2.5-pro-preview-06-05",status:"stable",context:{combinedMax:1048576,outputMax:65536},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:1.25,outputPerMTokens:10},pricingSource:"models.dev",aliases:["google/gemini-2.5-pro-preview-06-05"],releasedAt:"2025-06-05",source:"https://ai.google.dev/gemini-api/docs/pricing",contextSource:"https://ai.google.dev/gemini-api/docs/pricing",verifiedAt:"2025-06-05"},{id:"google-vertex:gemini-2.0-flash",provider:"google-vertex",vendorId:"gemini-2.0-flash",displayName:"Gemini 2.0 Flash",family:"gemini-2.0-flash",status:"stable",context:{combinedMax:1048576,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.1,outputPerMTokens:.4},pricingSource:"models.dev",aliases:["google-vertex/gemini-2.0-flash"],releasedAt:"2024-12-11",source:"https://cloud.google.com/vertex-ai/generative-ai/docs/models",contextSource:"https://cloud.google.com/vertex-ai/generative-ai/docs/models",verifiedAt:"2024-12-11"},{id:"google-vertex:gemini-2.0-flash-lite",provider:"google-vertex",vendorId:"gemini-2.0-flash-lite",displayName:"Gemini 2.0 Flash Lite",family:"gemini-2.0-flash-lite",status:"stable",context:{combinedMax:1048576,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.075,outputPerMTokens:.3},pricingSource:"models.dev",aliases:["google-vertex/gemini-2.0-flash-lite"],releasedAt:"2024-12-11",source:"https://cloud.google.com/vertex-ai/generative-ai/docs/models",contextSource:"https://cloud.google.com/vertex-ai/generative-ai/docs/models",verifiedAt:"2024-12-11"},{id:"google-vertex:gemini-2.5-flash",provider:"google-vertex",vendorId:"gemini-2.5-flash",displayName:"Gemini 2.5 Flash",family:"gemini-2.5-flash",status:"stable",context:{combinedMax:1048576,outputMax:65536},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.3,outputPerMTokens:2.5},pricingSource:"models.dev",aliases:["google-vertex/gemini-2.5-flash"],releasedAt:"2025-06-17",source:"https://cloud.google.com/vertex-ai/generative-ai/docs/models",contextSource:"https://cloud.google.com/vertex-ai/generative-ai/docs/models",verifiedAt:"2025-06-17"},{id:"google-vertex:gemini-2.5-flash-lite-preview-06-17",provider:"google-vertex",vendorId:"gemini-2.5-flash-lite-preview-06-17",displayName:"Gemini 2.5 Flash Lite Preview 06-17",family:"gemini-2.5-flash-lite-preview-06-17",status:"stable",context:{combinedMax:65536,outputMax:65536},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.1,outputPerMTokens:.4},pricingSource:"models.dev",aliases:["google-vertex/gemini-2.5-flash-lite-preview-06-17"],releasedAt:"2025-06-17",source:"https://cloud.google.com/vertex-ai/generative-ai/docs/models",contextSource:"https://cloud.google.com/vertex-ai/generative-ai/docs/models",verifiedAt:"2025-06-17"},{id:"google-vertex:gemini-2.5-flash-preview-04-17",provider:"google-vertex",vendorId:"gemini-2.5-flash-preview-04-17",displayName:"Gemini 2.5 Flash Preview 04-17",family:"gemini-2.5-flash-preview-04-17",status:"stable",context:{combinedMax:1048576,outputMax:65536},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.15,outputPerMTokens:.6},pricingSource:"models.dev",aliases:["google-vertex/gemini-2.5-flash-preview-04-17"],releasedAt:"2025-04-17",source:"https://cloud.google.com/vertex-ai/generative-ai/docs/models",contextSource:"https://cloud.google.com/vertex-ai/generative-ai/docs/models",verifiedAt:"2025-04-17"},{id:"google-vertex:gemini-2.5-flash-preview-05-20",provider:"google-vertex",vendorId:"gemini-2.5-flash-preview-05-20",displayName:"Gemini 2.5 Flash Preview 05-20",family:"gemini-2.5-flash-preview-05-20",status:"stable",context:{combinedMax:1048576,outputMax:65536},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.15,outputPerMTokens:.6},pricingSource:"models.dev",aliases:["google-vertex/gemini-2.5-flash-preview-05-20"],releasedAt:"2025-05-20",source:"https://cloud.google.com/vertex-ai/generative-ai/docs/models",contextSource:"https://cloud.google.com/vertex-ai/generative-ai/docs/models",verifiedAt:"2025-05-20"},{id:"google-vertex:gemini-2.5-pro",provider:"google-vertex",vendorId:"gemini-2.5-pro",displayName:"Gemini 2.5 Pro",family:"gemini-2.5-pro",status:"stable",context:{combinedMax:1048576,outputMax:65536},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:1.25,outputPerMTokens:10},pricingSource:"models.dev",aliases:["google-vertex/gemini-2.5-pro"],releasedAt:"2025-03-20",source:"https://cloud.google.com/vertex-ai/generative-ai/docs/models",contextSource:"https://cloud.google.com/vertex-ai/generative-ai/docs/models",verifiedAt:"2025-06-05"},{id:"google-vertex:gemini-2.5-pro-preview-05-06",provider:"google-vertex",vendorId:"gemini-2.5-pro-preview-05-06",displayName:"Gemini 2.5 Pro Preview 05-06",family:"gemini-2.5-pro-preview-05-06",status:"stable",context:{combinedMax:1048576,outputMax:65536},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:1.25,outputPerMTokens:10},pricingSource:"models.dev",aliases:["google-vertex/gemini-2.5-pro-preview-05-06"],releasedAt:"2025-05-06",source:"https://cloud.google.com/vertex-ai/generative-ai/docs/models",contextSource:"https://cloud.google.com/vertex-ai/generative-ai/docs/models",verifiedAt:"2025-05-06"},{id:"google-vertex:gemini-2.5-pro-preview-06-05",provider:"google-vertex",vendorId:"gemini-2.5-pro-preview-06-05",displayName:"Gemini 2.5 Pro Preview 06-05",family:"gemini-2.5-pro-preview-06-05",status:"stable",context:{combinedMax:1048576,outputMax:65536},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:1.25,outputPerMTokens:10},pricingSource:"models.dev",aliases:["google-vertex/gemini-2.5-pro-preview-06-05"],releasedAt:"2025-06-05",source:"https://cloud.google.com/vertex-ai/generative-ai/docs/models",contextSource:"https://cloud.google.com/vertex-ai/generative-ai/docs/models",verifiedAt:"2025-06-05"},{id:"google-vertex-anthropic:claude-3-5-haiku@20241022",provider:"google-vertex-anthropic",vendorId:"claude-3-5-haiku@20241022",displayName:"Claude Haiku 3.5",family:"claude-3-5-haiku@20241022",status:"stable",context:{combinedMax:2e5,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.8,outputPerMTokens:4},pricingSource:"models.dev",aliases:["google-vertex-anthropic/claude-3-5-haiku@20241022"],releasedAt:"2024-10-22",source:"https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/claude",contextSource:"https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/claude",verifiedAt:"2024-10-22"},{id:"google-vertex-anthropic:claude-3-5-sonnet@20241022",provider:"google-vertex-anthropic",vendorId:"claude-3-5-sonnet@20241022",displayName:"Claude Sonnet 3.5 v2",family:"claude-3-5-sonnet@20241022",status:"stable",context:{combinedMax:2e5,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["google-vertex-anthropic/claude-3-5-sonnet@20241022"],releasedAt:"2024-10-22",source:"https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/claude",contextSource:"https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/claude",verifiedAt:"2024-10-22"},{id:"google-vertex-anthropic:claude-3-7-sonnet@20250219",provider:"google-vertex-anthropic",vendorId:"claude-3-7-sonnet@20250219",displayName:"Claude Sonnet 3.7",family:"claude-3-7-sonnet@20250219",status:"stable",context:{combinedMax:2e5,outputMax:64e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["google-vertex-anthropic/claude-3-7-sonnet@20250219"],releasedAt:"2025-02-19",source:"https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/claude",contextSource:"https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/claude",verifiedAt:"2025-02-19"},{id:"google-vertex-anthropic:claude-opus-4-1@20250805",provider:"google-vertex-anthropic",vendorId:"claude-opus-4-1@20250805",displayName:"Claude Opus 4.1",family:"claude-opus-4-1@20250805",status:"stable",context:{combinedMax:2e5,outputMax:32e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:15,outputPerMTokens:75},pricingSource:"models.dev",aliases:["google-vertex-anthropic/claude-opus-4-1@20250805"],releasedAt:"2025-08-05",source:"https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/claude",contextSource:"https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/claude",verifiedAt:"2025-08-05"},{id:"google-vertex-anthropic:claude-opus-4@20250514",provider:"google-vertex-anthropic",vendorId:"claude-opus-4@20250514",displayName:"Claude Opus 4",family:"claude-opus-4@20250514",status:"stable",context:{combinedMax:2e5,outputMax:32e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:15,outputPerMTokens:75},pricingSource:"models.dev",aliases:["google-vertex-anthropic/claude-opus-4@20250514"],releasedAt:"2025-05-22",source:"https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/claude",contextSource:"https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/claude",verifiedAt:"2025-05-22"},{id:"google-vertex-anthropic:claude-sonnet-4@20250514",provider:"google-vertex-anthropic",vendorId:"claude-sonnet-4@20250514",displayName:"Claude Sonnet 4",family:"claude-sonnet-4@20250514",status:"stable",context:{combinedMax:2e5,outputMax:64e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["google-vertex-anthropic/claude-sonnet-4@20250514"],releasedAt:"2025-05-22",source:"https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/claude",contextSource:"https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/claude",verifiedAt:"2025-05-22"},{id:"groq:deepseek-r1-distill-llama-70b",provider:"groq",vendorId:"deepseek-r1-distill-llama-70b",displayName:"DeepSeek R1 Distill Llama 70B",family:"deepseek-r1-distill-llama-70b",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.75,outputPerMTokens:.99},pricingSource:"models.dev",aliases:["groq/deepseek-r1-distill-llama-70b"],releasedAt:"2025-01-20",source:"https://console.groq.com/docs/models",contextSource:"https://console.groq.com/docs/models",verifiedAt:"2025-01-20"},{id:"groq:gemma2-9b-it",provider:"groq",vendorId:"gemma2-9b-it",displayName:"Gemma 2 9B",family:"gemma2-9b-it",status:"stable",context:{combinedMax:8192,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.2,outputPerMTokens:.2},pricingSource:"models.dev",aliases:["groq/gemma2-9b-it"],releasedAt:"2024-06-27",source:"https://console.groq.com/docs/models",contextSource:"https://console.groq.com/docs/models",verifiedAt:"2024-06-27"},{id:"groq:llama-3.1-8b-instant",provider:"groq",vendorId:"llama-3.1-8b-instant",displayName:"Llama 3.1 8B Instant",family:"llama-3.1-8b-instant",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.05,outputPerMTokens:.08},pricingSource:"models.dev",aliases:["groq/llama-3.1-8b-instant"],releasedAt:"2024-07-23",source:"https://console.groq.com/docs/models",contextSource:"https://console.groq.com/docs/models",verifiedAt:"2024-07-23"},{id:"groq:llama-3.3-70b-versatile",provider:"groq",vendorId:"llama-3.3-70b-versatile",displayName:"Llama 3.3 70B Versatile",family:"llama-3.3-70b-versatile",status:"stable",context:{combinedMax:131072,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.59,outputPerMTokens:.79},pricingSource:"models.dev",aliases:["groq/llama-3.3-70b-versatile"],releasedAt:"2024-12-06",source:"https://console.groq.com/docs/models",contextSource:"https://console.groq.com/docs/models",verifiedAt:"2024-12-06"},{id:"groq:llama-guard-3-8b",provider:"groq",vendorId:"llama-guard-3-8b",displayName:"Llama Guard 3 8B",family:"llama-guard-3-8b",status:"stable",context:{combinedMax:8192,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.2,outputPerMTokens:.2},pricingSource:"models.dev",aliases:["groq/llama-guard-3-8b"],releasedAt:"2024-07-23",source:"https://console.groq.com/docs/models",contextSource:"https://console.groq.com/docs/models",verifiedAt:"2024-07-23"},{id:"groq:llama3-70b-8192",provider:"groq",vendorId:"llama3-70b-8192",displayName:"Llama 3 70B",family:"llama3-70b-8192",status:"stable",context:{combinedMax:8192,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.59,outputPerMTokens:.79},pricingSource:"models.dev",aliases:["groq/llama3-70b-8192"],releasedAt:"2024-04-18",source:"https://console.groq.com/docs/models",contextSource:"https://console.groq.com/docs/models",verifiedAt:"2024-04-18"},{id:"groq:llama3-8b-8192",provider:"groq",vendorId:"llama3-8b-8192",displayName:"Llama 3 8B",family:"llama3-8b-8192",status:"stable",context:{combinedMax:8192,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.05,outputPerMTokens:.08},pricingSource:"models.dev",aliases:["groq/llama3-8b-8192"],releasedAt:"2024-04-18",source:"https://console.groq.com/docs/models",contextSource:"https://console.groq.com/docs/models",verifiedAt:"2024-04-18"},{id:"groq:meta-llama/llama-4-maverick-17b-128e-instruct",provider:"groq",vendorId:"meta-llama/llama-4-maverick-17b-128e-instruct",displayName:"Llama 4 Maverick 17B",family:"meta-llama/llama-4-maverick-17b-128e-instruct",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.2,outputPerMTokens:.6},pricingSource:"models.dev",aliases:["groq/meta-llama/llama-4-maverick-17b-128e-instruct"],releasedAt:"2025-04-05",source:"https://console.groq.com/docs/models",contextSource:"https://console.groq.com/docs/models",verifiedAt:"2025-04-05"},{id:"groq:meta-llama/llama-4-scout-17b-16e-instruct",provider:"groq",vendorId:"meta-llama/llama-4-scout-17b-16e-instruct",displayName:"Llama 4 Scout 17B",family:"meta-llama/llama-4-scout-17b-16e-instruct",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.11,outputPerMTokens:.34},pricingSource:"models.dev",aliases:["groq/meta-llama/llama-4-scout-17b-16e-instruct"],releasedAt:"2025-04-05",source:"https://console.groq.com/docs/models",contextSource:"https://console.groq.com/docs/models",verifiedAt:"2025-04-05"},{id:"groq:meta-llama/llama-guard-4-12b",provider:"groq",vendorId:"meta-llama/llama-guard-4-12b",displayName:"Llama Guard 4 12B",family:"meta-llama/llama-guard-4-12b",status:"stable",context:{combinedMax:131072,outputMax:128},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.2,outputPerMTokens:.2},pricingSource:"models.dev",aliases:["groq/meta-llama/llama-guard-4-12b"],releasedAt:"2025-04-05",source:"https://console.groq.com/docs/models",contextSource:"https://console.groq.com/docs/models",verifiedAt:"2025-04-05"},{id:"groq:mistral-saba-24b",provider:"groq",vendorId:"mistral-saba-24b",displayName:"Mistral Saba 24B",family:"mistral-saba-24b",status:"stable",context:{combinedMax:32768,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.79,outputPerMTokens:.79},pricingSource:"models.dev",aliases:["groq/mistral-saba-24b"],releasedAt:"2025-02-06",source:"https://console.groq.com/docs/models",contextSource:"https://console.groq.com/docs/models",verifiedAt:"2025-02-06"},{id:"groq:moonshotai/kimi-k2-instruct",provider:"groq",vendorId:"moonshotai/kimi-k2-instruct",displayName:"Kimi K2 Instruct",family:"moonshotai/kimi-k2-instruct",status:"stable",context:{combinedMax:131072,outputMax:16384},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1,outputPerMTokens:3},pricingSource:"models.dev",aliases:["groq/moonshotai/kimi-k2-instruct"],releasedAt:"2025-07-14",source:"https://console.groq.com/docs/models",contextSource:"https://console.groq.com/docs/models",verifiedAt:"2025-07-14"},{id:"groq:moonshotai/kimi-k2-instruct-0905",provider:"groq",vendorId:"moonshotai/kimi-k2-instruct-0905",displayName:"Kimi K2 Instruct 0905",family:"moonshotai/kimi-k2-instruct-0905",status:"stable",context:{combinedMax:262144,outputMax:16384},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1,outputPerMTokens:3},pricingSource:"models.dev",aliases:["groq/moonshotai/kimi-k2-instruct-0905"],releasedAt:"2025-09-05",source:"https://console.groq.com/docs/models",contextSource:"https://console.groq.com/docs/models",verifiedAt:"2025-09-05"},{id:"groq:openai/gpt-oss-120b",provider:"groq",vendorId:"openai/gpt-oss-120b",displayName:"GPT OSS 120B",family:"openai/gpt-oss-120b",status:"stable",context:{combinedMax:131072,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.15,outputPerMTokens:.75},pricingSource:"models.dev",aliases:["groq/openai/gpt-oss-120b"],releasedAt:"2025-08-05",source:"https://console.groq.com/docs/models",contextSource:"https://console.groq.com/docs/models",verifiedAt:"2025-08-05"},{id:"groq:openai/gpt-oss-20b",provider:"groq",vendorId:"openai/gpt-oss-20b",displayName:"GPT OSS 20B",family:"openai/gpt-oss-20b",status:"stable",context:{combinedMax:131072,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.1,outputPerMTokens:.5},pricingSource:"models.dev",aliases:["groq/openai/gpt-oss-20b"],releasedAt:"2025-08-05",source:"https://console.groq.com/docs/models",contextSource:"https://console.groq.com/docs/models",verifiedAt:"2025-08-05"},{id:"groq:qwen-qwq-32b",provider:"groq",vendorId:"qwen-qwq-32b",displayName:"Qwen QwQ 32B",family:"qwen-qwq-32b",status:"stable",context:{combinedMax:131072,outputMax:16384},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.29,outputPerMTokens:.39},pricingSource:"models.dev",aliases:["groq/qwen-qwq-32b"],releasedAt:"2024-11-27",source:"https://console.groq.com/docs/models",contextSource:"https://console.groq.com/docs/models",verifiedAt:"2024-11-27"},{id:"groq:qwen/qwen3-32b",provider:"groq",vendorId:"qwen/qwen3-32b",displayName:"Qwen3 32B",family:"qwen/qwen3-32b",status:"stable",context:{combinedMax:131072,outputMax:16384},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.29,outputPerMTokens:.59},pricingSource:"models.dev",aliases:["groq/qwen/qwen3-32b"],releasedAt:"2024-12-23",source:"https://console.groq.com/docs/models",contextSource:"https://console.groq.com/docs/models",verifiedAt:"2024-12-23"},{id:"huggingface:deepseek-ai/DeepSeek-R1-0528",provider:"huggingface",vendorId:"deepseek-ai/DeepSeek-R1-0528",displayName:"DeepSeek-R1-0528",family:"deepseek-ai/DeepSeek-R1-0528",status:"stable",context:{combinedMax:163840,outputMax:163840},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:3,outputPerMTokens:5},pricingSource:"models.dev",aliases:["huggingface/deepseek-ai/DeepSeek-R1-0528"],releasedAt:"2025-05-28",source:"https://huggingface.co/docs/inference-providers",contextSource:"https://huggingface.co/docs/inference-providers",verifiedAt:"2025-05-28"},{id:"huggingface:deepseek-ai/Deepseek-V3-0324",provider:"huggingface",vendorId:"deepseek-ai/Deepseek-V3-0324",displayName:"DeepSeek-V3-0324",family:"deepseek-ai/Deepseek-V3-0324",status:"stable",context:{combinedMax:16384,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1.25,outputPerMTokens:1.25},pricingSource:"models.dev",aliases:["huggingface/deepseek-ai/Deepseek-V3-0324"],releasedAt:"2025-03-24",source:"https://huggingface.co/docs/inference-providers",contextSource:"https://huggingface.co/docs/inference-providers",verifiedAt:"2025-03-24"},{id:"huggingface:moonshotai/Kimi-K2-Instruct",provider:"huggingface",vendorId:"moonshotai/Kimi-K2-Instruct",displayName:"Kimi-K2-Instruct",family:"moonshotai/Kimi-K2-Instruct",status:"stable",context:{combinedMax:131072,outputMax:16384},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1,outputPerMTokens:3},pricingSource:"models.dev",aliases:["huggingface/moonshotai/Kimi-K2-Instruct"],releasedAt:"2025-07-14",source:"https://huggingface.co/docs/inference-providers",contextSource:"https://huggingface.co/docs/inference-providers",verifiedAt:"2025-07-14"},{id:"huggingface:Qwen/Qwen3-235B-A22B-Thinking-2507",provider:"huggingface",vendorId:"Qwen/Qwen3-235B-A22B-Thinking-2507",displayName:"Qwen3-235B-A22B-Thinking-2507",family:"Qwen/Qwen3-235B-A22B-Thinking-2507",status:"stable",context:{combinedMax:262144,outputMax:131072},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.3,outputPerMTokens:3},pricingSource:"models.dev",aliases:["huggingface/Qwen/Qwen3-235B-A22B-Thinking-2507"],releasedAt:"2025-07-25",source:"https://huggingface.co/docs/inference-providers",contextSource:"https://huggingface.co/docs/inference-providers",verifiedAt:"2025-07-25"},{id:"huggingface:Qwen/Qwen3-Coder-480B-A35B-Instruct",provider:"huggingface",vendorId:"Qwen/Qwen3-Coder-480B-A35B-Instruct",displayName:"Qwen3-Coder-480B-A35B-Instruct",family:"Qwen/Qwen3-Coder-480B-A35B-Instruct",status:"stable",context:{combinedMax:262144,outputMax:66536},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:2,outputPerMTokens:2},pricingSource:"models.dev",aliases:["huggingface/Qwen/Qwen3-Coder-480B-A35B-Instruct"],releasedAt:"2025-07-23",source:"https://huggingface.co/docs/inference-providers",contextSource:"https://huggingface.co/docs/inference-providers",verifiedAt:"2025-07-23"},{id:"huggingface:zai-org/GLM-4.5",provider:"huggingface",vendorId:"zai-org/GLM-4.5",displayName:"GLM-4.5",family:"zai-org/GLM-4.5",status:"stable",context:{combinedMax:131072,outputMax:98304},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.6,outputPerMTokens:2.2},pricingSource:"models.dev",aliases:["huggingface/zai-org/GLM-4.5"],releasedAt:"2025-07-28",source:"https://huggingface.co/docs/inference-providers",contextSource:"https://huggingface.co/docs/inference-providers",verifiedAt:"2025-07-28"},{id:"huggingface:zai-org/GLM-4.5-Air",provider:"huggingface",vendorId:"zai-org/GLM-4.5-Air",displayName:"GLM-4.5-Air",family:"zai-org/GLM-4.5-Air",status:"stable",context:{combinedMax:128e3,outputMax:96e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.2,outputPerMTokens:1.1},pricingSource:"models.dev",aliases:["huggingface/zai-org/GLM-4.5-Air"],releasedAt:"2025-07-28",source:"https://huggingface.co/docs/inference-providers",contextSource:"https://huggingface.co/docs/inference-providers",verifiedAt:"2025-07-28"},{id:"inception:mercury",provider:"inception",vendorId:"mercury",displayName:"Mercury",family:"mercury",status:"stable",context:{combinedMax:128e3,outputMax:16384},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.25,outputPerMTokens:1},pricingSource:"models.dev",aliases:["inception/mercury"],releasedAt:"2025-06-26",source:"https://platform.inceptionlabs.ai/docs",contextSource:"https://platform.inceptionlabs.ai/docs",verifiedAt:"2025-07-31"},{id:"inception:mercury-coder",provider:"inception",vendorId:"mercury-coder",displayName:"Mercury Coder",family:"mercury-coder",status:"stable",context:{combinedMax:128e3,outputMax:16384},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.25,outputPerMTokens:1},pricingSource:"models.dev",aliases:["inception/mercury-coder"],releasedAt:"2025-02-26",source:"https://platform.inceptionlabs.ai/docs",contextSource:"https://platform.inceptionlabs.ai/docs",verifiedAt:"2025-07-31"},{id:"inference:google/gemma-3",provider:"inference",vendorId:"google/gemma-3",displayName:"Google Gemma 3",family:"google/gemma-3",status:"stable",context:{combinedMax:125e3,outputMax:4096},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.15,outputPerMTokens:.3},pricingSource:"models.dev",aliases:["inference/google/gemma-3"],releasedAt:"2025-01-01",source:"https://inference.net/models",contextSource:"https://inference.net/models",verifiedAt:"2025-01-01"},{id:"inference:meta/llama-3.1-8b-instruct",provider:"inference",vendorId:"meta/llama-3.1-8b-instruct",displayName:"Llama 3.1 8B Instruct",family:"meta/llama-3.1-8b-instruct",status:"stable",context:{combinedMax:16e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.025,outputPerMTokens:.025},pricingSource:"models.dev",aliases:["inference/meta/llama-3.1-8b-instruct"],releasedAt:"2025-01-01",source:"https://inference.net/models",contextSource:"https://inference.net/models",verifiedAt:"2025-01-01"},{id:"inference:meta/llama-3.2-11b-vision-instruct",provider:"inference",vendorId:"meta/llama-3.2-11b-vision-instruct",displayName:"Llama 3.2 11B Vision Instruct",family:"meta/llama-3.2-11b-vision-instruct",status:"stable",context:{combinedMax:16e3,outputMax:4096},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.055,outputPerMTokens:.055},pricingSource:"models.dev",aliases:["inference/meta/llama-3.2-11b-vision-instruct"],releasedAt:"2025-01-01",source:"https://inference.net/models",contextSource:"https://inference.net/models",verifiedAt:"2025-01-01"},{id:"inference:meta/llama-3.2-1b-instruct",provider:"inference",vendorId:"meta/llama-3.2-1b-instruct",displayName:"Llama 3.2 1B Instruct",family:"meta/llama-3.2-1b-instruct",status:"stable",context:{combinedMax:16e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.01,outputPerMTokens:.01},pricingSource:"models.dev",aliases:["inference/meta/llama-3.2-1b-instruct"],releasedAt:"2025-01-01",source:"https://inference.net/models",contextSource:"https://inference.net/models",verifiedAt:"2025-01-01"},{id:"inference:meta/llama-3.2-3b-instruct",provider:"inference",vendorId:"meta/llama-3.2-3b-instruct",displayName:"Llama 3.2 3B Instruct",family:"meta/llama-3.2-3b-instruct",status:"stable",context:{combinedMax:16e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.02,outputPerMTokens:.02},pricingSource:"models.dev",aliases:["inference/meta/llama-3.2-3b-instruct"],releasedAt:"2025-01-01",source:"https://inference.net/models",contextSource:"https://inference.net/models",verifiedAt:"2025-01-01"},{id:"inference:mistral/mistral-nemo-12b-instruct",provider:"inference",vendorId:"mistral/mistral-nemo-12b-instruct",displayName:"Mistral Nemo 12B Instruct",family:"mistral/mistral-nemo-12b-instruct",status:"stable",context:{combinedMax:16e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.038,outputPerMTokens:.1},pricingSource:"models.dev",aliases:["inference/mistral/mistral-nemo-12b-instruct"],releasedAt:"2025-01-01",source:"https://inference.net/models",contextSource:"https://inference.net/models",verifiedAt:"2025-01-01"},{id:"inference:osmosis/osmosis-structure-0.6b",provider:"inference",vendorId:"osmosis/osmosis-structure-0.6b",displayName:"Osmosis Structure 0.6B",family:"osmosis/osmosis-structure-0.6b",status:"stable",context:{combinedMax:4e3,outputMax:2048},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.1,outputPerMTokens:.5},pricingSource:"models.dev",aliases:["inference/osmosis/osmosis-structure-0.6b"],releasedAt:"2025-01-01",source:"https://inference.net/models",contextSource:"https://inference.net/models",verifiedAt:"2025-01-01"},{id:"inference:qwen/qwen-2.5-7b-vision-instruct",provider:"inference",vendorId:"qwen/qwen-2.5-7b-vision-instruct",displayName:"Qwen 2.5 7B Vision Instruct",family:"qwen/qwen-2.5-7b-vision-instruct",status:"stable",context:{combinedMax:125e3,outputMax:4096},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.2,outputPerMTokens:.2},pricingSource:"models.dev",aliases:["inference/qwen/qwen-2.5-7b-vision-instruct"],releasedAt:"2025-01-01",source:"https://inference.net/models",contextSource:"https://inference.net/models",verifiedAt:"2025-01-01"},{id:"inference:qwen/qwen3-embedding-4b",provider:"inference",vendorId:"qwen/qwen3-embedding-4b",displayName:"Qwen 3 Embedding 4B",family:"qwen/qwen3-embedding-4b",status:"stable",context:{combinedMax:32e3,outputMax:2048},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.01,outputPerMTokens:0},pricingSource:"models.dev",aliases:["inference/qwen/qwen3-embedding-4b"],releasedAt:"2025-01-01",source:"https://inference.net/models",contextSource:"https://inference.net/models",verifiedAt:"2025-01-01"},{id:"llama:cerebras-llama-4-maverick-17b-128e-instruct",provider:"llama",vendorId:"cerebras-llama-4-maverick-17b-128e-instruct",displayName:"Cerebras-Llama-4-Maverick-17B-128E-Instruct",family:"cerebras-llama-4-maverick-17b-128e-instruct",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["llama/cerebras-llama-4-maverick-17b-128e-instruct"],releasedAt:"2025-04-05",source:"https://llama.developer.meta.com/docs/models",contextSource:"https://llama.developer.meta.com/docs/models",verifiedAt:"2025-04-05"},{id:"llama:cerebras-llama-4-scout-17b-16e-instruct",provider:"llama",vendorId:"cerebras-llama-4-scout-17b-16e-instruct",displayName:"Cerebras-Llama-4-Scout-17B-16E-Instruct",family:"cerebras-llama-4-scout-17b-16e-instruct",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["llama/cerebras-llama-4-scout-17b-16e-instruct"],releasedAt:"2025-04-05",source:"https://llama.developer.meta.com/docs/models",contextSource:"https://llama.developer.meta.com/docs/models",verifiedAt:"2025-04-05"},{id:"llama:groq-llama-4-maverick-17b-128e-instruct",provider:"llama",vendorId:"groq-llama-4-maverick-17b-128e-instruct",displayName:"Groq-Llama-4-Maverick-17B-128E-Instruct",family:"groq-llama-4-maverick-17b-128e-instruct",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["llama/groq-llama-4-maverick-17b-128e-instruct"],releasedAt:"2025-04-05",source:"https://llama.developer.meta.com/docs/models",contextSource:"https://llama.developer.meta.com/docs/models",verifiedAt:"2025-04-05"},{id:"llama:llama-3.3-70b-instruct",provider:"llama",vendorId:"llama-3.3-70b-instruct",displayName:"Llama-3.3-70B-Instruct",family:"llama-3.3-70b-instruct",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["llama/llama-3.3-70b-instruct"],releasedAt:"2024-12-06",source:"https://llama.developer.meta.com/docs/models",contextSource:"https://llama.developer.meta.com/docs/models",verifiedAt:"2024-12-06"},{id:"llama:llama-3.3-8b-instruct",provider:"llama",vendorId:"llama-3.3-8b-instruct",displayName:"Llama-3.3-8B-Instruct",family:"llama-3.3-8b-instruct",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["llama/llama-3.3-8b-instruct"],releasedAt:"2024-12-06",source:"https://llama.developer.meta.com/docs/models",contextSource:"https://llama.developer.meta.com/docs/models",verifiedAt:"2024-12-06"},{id:"llama:llama-4-maverick-17b-128e-instruct-fp8",provider:"llama",vendorId:"llama-4-maverick-17b-128e-instruct-fp8",displayName:"Llama-4-Maverick-17B-128E-Instruct-FP8",family:"llama-4-maverick-17b-128e-instruct-fp8",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["llama/llama-4-maverick-17b-128e-instruct-fp8"],releasedAt:"2025-04-05",source:"https://llama.developer.meta.com/docs/models",contextSource:"https://llama.developer.meta.com/docs/models",verifiedAt:"2025-04-05"},{id:"llama:llama-4-scout-17b-16e-instruct-fp8",provider:"llama",vendorId:"llama-4-scout-17b-16e-instruct-fp8",displayName:"Llama-4-Scout-17B-16E-Instruct-FP8",family:"llama-4-scout-17b-16e-instruct-fp8",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["llama/llama-4-scout-17b-16e-instruct-fp8"],releasedAt:"2025-04-05",source:"https://llama.developer.meta.com/docs/models",contextSource:"https://llama.developer.meta.com/docs/models",verifiedAt:"2025-04-05"},{id:"lmstudio:openai/gpt-oss-20b",provider:"lmstudio",vendorId:"openai/gpt-oss-20b",displayName:"GPT OSS 20B",family:"openai/gpt-oss-20b",status:"stable",context:{combinedMax:131072,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["lmstudio/openai/gpt-oss-20b"],releasedAt:"2025-08-05",source:"https://lmstudio.ai/models",contextSource:"https://lmstudio.ai/models",verifiedAt:"2025-08-05"},{id:"lmstudio:qwen/qwen3-30b-a3b-2507",provider:"lmstudio",vendorId:"qwen/qwen3-30b-a3b-2507",displayName:"Qwen3 30B A3B 2507",family:"qwen/qwen3-30b-a3b-2507",status:"stable",context:{combinedMax:262144,outputMax:16384},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["lmstudio/qwen/qwen3-30b-a3b-2507"],releasedAt:"2025-07-30",source:"https://lmstudio.ai/models",contextSource:"https://lmstudio.ai/models",verifiedAt:"2025-07-30"},{id:"lmstudio:qwen/qwen3-coder-30b",provider:"lmstudio",vendorId:"qwen/qwen3-coder-30b",displayName:"Qwen3 Coder 30B",family:"qwen/qwen3-coder-30b",status:"stable",context:{combinedMax:262144,outputMax:65536},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["lmstudio/qwen/qwen3-coder-30b"],releasedAt:"2025-07-23",source:"https://lmstudio.ai/models",contextSource:"https://lmstudio.ai/models",verifiedAt:"2025-07-23"},{id:"mistral:codestral-latest",provider:"mistral",vendorId:"codestral-latest",displayName:"Codestral",family:"codestral-latest",status:"stable",context:{combinedMax:256e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.3,outputPerMTokens:.9},pricingSource:"models.dev",aliases:["mistral/codestral-latest"],releasedAt:"2024-05-29",source:"https://docs.mistral.ai/getting-started/models/",contextSource:"https://docs.mistral.ai/getting-started/models/",verifiedAt:"2025-01-04"},{id:"mistral:devstral-medium-2507",provider:"mistral",vendorId:"devstral-medium-2507",displayName:"Devstral Medium",family:"devstral-medium-2507",status:"stable",context:{combinedMax:128e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.4,outputPerMTokens:2},pricingSource:"models.dev",aliases:["mistral/devstral-medium-2507"],releasedAt:"2025-07-10",source:"https://docs.mistral.ai/getting-started/models/",contextSource:"https://docs.mistral.ai/getting-started/models/",verifiedAt:"2025-07-10"},{id:"mistral:devstral-small-2505",provider:"mistral",vendorId:"devstral-small-2505",displayName:"Devstral Small 2505",family:"devstral-small-2505",status:"stable",context:{combinedMax:128e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.1,outputPerMTokens:.3},pricingSource:"models.dev",aliases:["mistral/devstral-small-2505"],releasedAt:"2025-05-07",source:"https://docs.mistral.ai/getting-started/models/",contextSource:"https://docs.mistral.ai/getting-started/models/",verifiedAt:"2025-05-07"},{id:"mistral:devstral-small-2507",provider:"mistral",vendorId:"devstral-small-2507",displayName:"Devstral Small",family:"devstral-small-2507",status:"stable",context:{combinedMax:128e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.1,outputPerMTokens:.3},pricingSource:"models.dev",aliases:["mistral/devstral-small-2507"],releasedAt:"2025-07-10",source:"https://docs.mistral.ai/getting-started/models/",contextSource:"https://docs.mistral.ai/getting-started/models/",verifiedAt:"2025-07-10"},{id:"mistral:magistral-medium-latest",provider:"mistral",vendorId:"magistral-medium-latest",displayName:"Magistral Medium",family:"magistral-medium-latest",status:"stable",context:{combinedMax:128e3,outputMax:16384},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:2,outputPerMTokens:5},pricingSource:"models.dev",aliases:["mistral/magistral-medium-latest"],releasedAt:"2025-03-17",source:"https://docs.mistral.ai/getting-started/models/",contextSource:"https://docs.mistral.ai/getting-started/models/",verifiedAt:"2025-03-20"},{id:"mistral:magistral-small",provider:"mistral",vendorId:"magistral-small",displayName:"Magistral Small",family:"magistral-small",status:"stable",context:{combinedMax:128e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.5,outputPerMTokens:1.5},pricingSource:"models.dev",aliases:["mistral/magistral-small"],releasedAt:"2025-03-17",source:"https://docs.mistral.ai/getting-started/models/",contextSource:"https://docs.mistral.ai/getting-started/models/",verifiedAt:"2025-03-17"},{id:"mistral:ministral-3b-latest",provider:"mistral",vendorId:"ministral-3b-latest",displayName:"Ministral 3B",family:"ministral-3b-latest",status:"stable",context:{combinedMax:128e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.04,outputPerMTokens:.04},pricingSource:"models.dev",aliases:["mistral/ministral-3b-latest"],releasedAt:"2024-10-01",source:"https://docs.mistral.ai/getting-started/models/",contextSource:"https://docs.mistral.ai/getting-started/models/",verifiedAt:"2024-10-04"},{id:"mistral:ministral-8b-latest",provider:"mistral",vendorId:"ministral-8b-latest",displayName:"Ministral 8B",family:"ministral-8b-latest",status:"stable",context:{combinedMax:128e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.1,outputPerMTokens:.1},pricingSource:"models.dev",aliases:["mistral/ministral-8b-latest"],releasedAt:"2024-10-01",source:"https://docs.mistral.ai/getting-started/models/",contextSource:"https://docs.mistral.ai/getting-started/models/",verifiedAt:"2024-10-04"},{id:"mistral:mistral-large-latest",provider:"mistral",vendorId:"mistral-large-latest",displayName:"Mistral Large",family:"mistral-large-latest",status:"stable",context:{combinedMax:131072,outputMax:16384},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:2,outputPerMTokens:6},pricingSource:"models.dev",aliases:["mistral/mistral-large-latest"],releasedAt:"2024-11-01",source:"https://docs.mistral.ai/getting-started/models/",contextSource:"https://docs.mistral.ai/getting-started/models/",verifiedAt:"2024-11-04"},{id:"mistral:mistral-medium-2505",provider:"mistral",vendorId:"mistral-medium-2505",displayName:"Mistral Medium 3",family:"mistral-medium-2505",status:"stable",context:{combinedMax:131072,outputMax:131072},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.4,outputPerMTokens:2},pricingSource:"models.dev",aliases:["mistral/mistral-medium-2505"],releasedAt:"2025-05-07",source:"https://docs.mistral.ai/getting-started/models/",contextSource:"https://docs.mistral.ai/getting-started/models/",verifiedAt:"2025-05-07"},{id:"mistral:mistral-medium-2508",provider:"mistral",vendorId:"mistral-medium-2508",displayName:"Mistral Medium 3.1",family:"mistral-medium-2508",status:"stable",context:{combinedMax:262144,outputMax:262144},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.4,outputPerMTokens:2},pricingSource:"models.dev",aliases:["mistral/mistral-medium-2508"],releasedAt:"2025-08-12",source:"https://docs.mistral.ai/getting-started/models/",contextSource:"https://docs.mistral.ai/getting-started/models/",verifiedAt:"2025-08-12"},{id:"mistral:mistral-medium-latest",provider:"mistral",vendorId:"mistral-medium-latest",displayName:"Mistral Medium",family:"mistral-medium-latest",status:"stable",context:{combinedMax:128e3,outputMax:16384},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.4,outputPerMTokens:2},pricingSource:"models.dev",aliases:["mistral/mistral-medium-latest"],releasedAt:"2025-05-07",source:"https://docs.mistral.ai/getting-started/models/",contextSource:"https://docs.mistral.ai/getting-started/models/",verifiedAt:"2025-05-10"},{id:"mistral:mistral-nemo",provider:"mistral",vendorId:"mistral-nemo",displayName:"Mistral Nemo",family:"mistral-nemo",status:"stable",context:{combinedMax:128e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.15,outputPerMTokens:.15},pricingSource:"models.dev",aliases:["mistral/mistral-nemo"],releasedAt:"2024-07-01",source:"https://docs.mistral.ai/getting-started/models/",contextSource:"https://docs.mistral.ai/getting-started/models/",verifiedAt:"2024-07-01"},{id:"mistral:mistral-small-latest",provider:"mistral",vendorId:"mistral-small-latest",displayName:"Mistral Small",family:"mistral-small-latest",status:"stable",context:{combinedMax:128e3,outputMax:16384},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.1,outputPerMTokens:.3},pricingSource:"models.dev",aliases:["mistral/mistral-small-latest"],releasedAt:"2024-09-01",source:"https://docs.mistral.ai/getting-started/models/",contextSource:"https://docs.mistral.ai/getting-started/models/",verifiedAt:"2024-09-04"},{id:"mistral:open-mistral-7b",provider:"mistral",vendorId:"open-mistral-7b",displayName:"Mistral 7B",family:"open-mistral-7b",status:"stable",context:{combinedMax:8e3,outputMax:8e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.25,outputPerMTokens:.25},pricingSource:"models.dev",aliases:["mistral/open-mistral-7b"],releasedAt:"2023-09-27",source:"https://docs.mistral.ai/getting-started/models/",contextSource:"https://docs.mistral.ai/getting-started/models/",verifiedAt:"2023-09-27"},{id:"mistral:open-mixtral-8x22b",provider:"mistral",vendorId:"open-mixtral-8x22b",displayName:"Mixtral 8x22B",family:"open-mixtral-8x22b",status:"stable",context:{combinedMax:64e3,outputMax:64e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:2,outputPerMTokens:6},pricingSource:"models.dev",aliases:["mistral/open-mixtral-8x22b"],releasedAt:"2024-04-17",source:"https://docs.mistral.ai/getting-started/models/",contextSource:"https://docs.mistral.ai/getting-started/models/",verifiedAt:"2024-04-17"},{id:"mistral:open-mixtral-8x7b",provider:"mistral",vendorId:"open-mixtral-8x7b",displayName:"Mixtral 8x7B",family:"open-mixtral-8x7b",status:"stable",context:{combinedMax:32e3,outputMax:32e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.7,outputPerMTokens:.7},pricingSource:"models.dev",aliases:["mistral/open-mixtral-8x7b"],releasedAt:"2023-12-11",source:"https://docs.mistral.ai/getting-started/models/",contextSource:"https://docs.mistral.ai/getting-started/models/",verifiedAt:"2023-12-11"},{id:"mistral:pixtral-12b",provider:"mistral",vendorId:"pixtral-12b",displayName:"Pixtral 12B",family:"pixtral-12b",status:"stable",context:{combinedMax:128e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.15,outputPerMTokens:.15},pricingSource:"models.dev",aliases:["mistral/pixtral-12b"],releasedAt:"2024-09-01",source:"https://docs.mistral.ai/getting-started/models/",contextSource:"https://docs.mistral.ai/getting-started/models/",verifiedAt:"2024-09-01"},{id:"mistral:pixtral-large-latest",provider:"mistral",vendorId:"pixtral-large-latest",displayName:"Pixtral Large",family:"pixtral-large-latest",status:"stable",context:{combinedMax:128e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:2,outputPerMTokens:6},pricingSource:"models.dev",aliases:["mistral/pixtral-large-latest"],releasedAt:"2024-11-01",source:"https://docs.mistral.ai/getting-started/models/",contextSource:"https://docs.mistral.ai/getting-started/models/",verifiedAt:"2024-11-04"},{id:"modelscope:moonshotai/Kimi-K2-Instruct",provider:"modelscope",vendorId:"moonshotai/Kimi-K2-Instruct",displayName:"Kimi-K2-Instruct",family:"moonshotai/Kimi-K2-Instruct",status:"stable",context:{combinedMax:128e3,outputMax:16384},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["modelscope/moonshotai/Kimi-K2-Instruct"],releasedAt:"2025-07-14",source:"https://modelscope.cn/docs/model-service/API-Inference/intro",contextSource:"https://modelscope.cn/docs/model-service/API-Inference/intro",verifiedAt:"2025-07-14"},{id:"modelscope:Qwen/Qwen3-235B-A22B-Instruct-2507",provider:"modelscope",vendorId:"Qwen/Qwen3-235B-A22B-Instruct-2507",displayName:"Qwen3 235B A22B Instruct 2507",family:"Qwen/Qwen3-235B-A22B-Instruct-2507",status:"stable",context:{combinedMax:262144,outputMax:131072},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["modelscope/Qwen/Qwen3-235B-A22B-Instruct-2507"],releasedAt:"2025-04-28",source:"https://modelscope.cn/docs/model-service/API-Inference/intro",contextSource:"https://modelscope.cn/docs/model-service/API-Inference/intro",verifiedAt:"2025-07-21"},{id:"modelscope:Qwen/Qwen3-235B-A22B-Thinking-2507",provider:"modelscope",vendorId:"Qwen/Qwen3-235B-A22B-Thinking-2507",displayName:"Qwen3-235B-A22B-Thinking-2507",family:"Qwen/Qwen3-235B-A22B-Thinking-2507",status:"stable",context:{combinedMax:262144,outputMax:131072},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["modelscope/Qwen/Qwen3-235B-A22B-Thinking-2507"],releasedAt:"2025-07-25",source:"https://modelscope.cn/docs/model-service/API-Inference/intro",contextSource:"https://modelscope.cn/docs/model-service/API-Inference/intro",verifiedAt:"2025-07-25"},{id:"modelscope:Qwen/Qwen3-30B-A3B-Instruct-2507",provider:"modelscope",vendorId:"Qwen/Qwen3-30B-A3B-Instruct-2507",displayName:"Qwen3 30B A3B Instruct 2507",family:"Qwen/Qwen3-30B-A3B-Instruct-2507",status:"stable",context:{combinedMax:262144,outputMax:16384},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["modelscope/Qwen/Qwen3-30B-A3B-Instruct-2507"],releasedAt:"2025-07-30",source:"https://modelscope.cn/docs/model-service/API-Inference/intro",contextSource:"https://modelscope.cn/docs/model-service/API-Inference/intro",verifiedAt:"2025-07-30"},{id:"modelscope:Qwen/Qwen3-30B-A3B-Thinking-2507",provider:"modelscope",vendorId:"Qwen/Qwen3-30B-A3B-Thinking-2507",displayName:"Qwen3 30B A3B Thinking 2507",family:"Qwen/Qwen3-30B-A3B-Thinking-2507",status:"stable",context:{combinedMax:262144,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["modelscope/Qwen/Qwen3-30B-A3B-Thinking-2507"],releasedAt:"2025-07-30",source:"https://modelscope.cn/docs/model-service/API-Inference/intro",contextSource:"https://modelscope.cn/docs/model-service/API-Inference/intro",verifiedAt:"2025-07-30"},{id:"modelscope:Qwen/Qwen3-Coder-30B-A3B-Instruct",provider:"modelscope",vendorId:"Qwen/Qwen3-Coder-30B-A3B-Instruct",displayName:"Qwen3 Coder 30B A3B Instruct",family:"Qwen/Qwen3-Coder-30B-A3B-Instruct",status:"stable",context:{combinedMax:262144,outputMax:65536},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["modelscope/Qwen/Qwen3-Coder-30B-A3B-Instruct"],releasedAt:"2025-07-31",source:"https://modelscope.cn/docs/model-service/API-Inference/intro",contextSource:"https://modelscope.cn/docs/model-service/API-Inference/intro",verifiedAt:"2025-07-31"},{id:"modelscope:Qwen/Qwen3-Coder-480B-A35B-Instruct",provider:"modelscope",vendorId:"Qwen/Qwen3-Coder-480B-A35B-Instruct",displayName:"Qwen3-Coder-480B-A35B-Instruct",family:"Qwen/Qwen3-Coder-480B-A35B-Instruct",status:"stable",context:{combinedMax:262144,outputMax:66536},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["modelscope/Qwen/Qwen3-Coder-480B-A35B-Instruct"],releasedAt:"2025-07-23",source:"https://modelscope.cn/docs/model-service/API-Inference/intro",contextSource:"https://modelscope.cn/docs/model-service/API-Inference/intro",verifiedAt:"2025-07-23"},{id:"modelscope:ZhipuAI/GLM-4.5",provider:"modelscope",vendorId:"ZhipuAI/GLM-4.5",displayName:"GLM-4.5",family:"ZhipuAI/GLM-4.5",status:"stable",context:{combinedMax:131072,outputMax:98304},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["modelscope/ZhipuAI/GLM-4.5"],releasedAt:"2025-07-28",source:"https://modelscope.cn/docs/model-service/API-Inference/intro",contextSource:"https://modelscope.cn/docs/model-service/API-Inference/intro",verifiedAt:"2025-07-28"},{id:"moonshotai:kimi-k2-0711-preview",provider:"moonshotai",vendorId:"kimi-k2-0711-preview",displayName:"Kimi K2 0711",family:"kimi-k2-0711-preview",status:"stable",context:{combinedMax:131072,outputMax:16384},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.6,outputPerMTokens:2.5},pricingSource:"models.dev",aliases:["moonshotai/kimi-k2-0711-preview"],releasedAt:"2025-07-14",source:"https://platform.moonshot.ai/docs/api/chat",contextSource:"https://platform.moonshot.ai/docs/api/chat",verifiedAt:"2025-07-14"},{id:"moonshotai:kimi-k2-0905-preview",provider:"moonshotai",vendorId:"kimi-k2-0905-preview",displayName:"Kimi K2 0905",family:"kimi-k2-0905-preview",status:"stable",context:{combinedMax:262144,outputMax:262144},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.6,outputPerMTokens:2.5},pricingSource:"models.dev",aliases:["moonshotai/kimi-k2-0905-preview"],releasedAt:"2025-09-05",source:"https://platform.moonshot.ai/docs/api/chat",contextSource:"https://platform.moonshot.ai/docs/api/chat",verifiedAt:"2025-09-05"},{id:"moonshotai:kimi-k2-turbo-preview",provider:"moonshotai",vendorId:"kimi-k2-turbo-preview",displayName:"Kimi K2 Turbo",family:"kimi-k2-turbo-preview",status:"stable",context:{combinedMax:131072,outputMax:16384},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:2.4,outputPerMTokens:10},pricingSource:"models.dev",aliases:["moonshotai/kimi-k2-turbo-preview"],releasedAt:"2025-07-14",source:"https://platform.moonshot.ai/docs/api/chat",contextSource:"https://platform.moonshot.ai/docs/api/chat",verifiedAt:"2025-07-14"},{id:"moonshotai-cn:kimi-k2-0711-preview",provider:"moonshotai-cn",vendorId:"kimi-k2-0711-preview",displayName:"Kimi K2 0711",family:"kimi-k2-0711-preview",status:"stable",context:{combinedMax:131072,outputMax:16384},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.6,outputPerMTokens:2.5},pricingSource:"models.dev",aliases:["moonshotai-cn/kimi-k2-0711-preview"],releasedAt:"2025-07-14",source:"https://platform.moonshot.cn/docs/api/chat",contextSource:"https://platform.moonshot.cn/docs/api/chat",verifiedAt:"2025-07-14"},{id:"moonshotai-cn:kimi-k2-0905-preview",provider:"moonshotai-cn",vendorId:"kimi-k2-0905-preview",displayName:"Kimi K2 0905",family:"kimi-k2-0905-preview",status:"stable",context:{combinedMax:262144,outputMax:262144},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.6,outputPerMTokens:2.5},pricingSource:"models.dev",aliases:["moonshotai-cn/kimi-k2-0905-preview"],releasedAt:"2025-09-05",source:"https://platform.moonshot.cn/docs/api/chat",contextSource:"https://platform.moonshot.cn/docs/api/chat",verifiedAt:"2025-09-05"},{id:"moonshotai-cn:kimi-k2-turbo-preview",provider:"moonshotai-cn",vendorId:"kimi-k2-turbo-preview",displayName:"Kimi K2 Turbo",family:"kimi-k2-turbo-preview",status:"stable",context:{combinedMax:131072,outputMax:16384},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:2.4,outputPerMTokens:10},pricingSource:"models.dev",aliases:["moonshotai-cn/kimi-k2-turbo-preview"],releasedAt:"2025-07-14",source:"https://platform.moonshot.cn/docs/api/chat",contextSource:"https://platform.moonshot.cn/docs/api/chat",verifiedAt:"2025-07-14"},{id:"morph:auto",provider:"morph",vendorId:"auto",displayName:"Auto",family:"auto",status:"stable",context:{combinedMax:32e3,outputMax:32e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.85,outputPerMTokens:1.55},pricingSource:"models.dev",aliases:["morph/auto"],releasedAt:"2024-06-01",source:"https://docs.morphllm.com/api-reference/introduction",contextSource:"https://docs.morphllm.com/api-reference/introduction",verifiedAt:"2024-06-01"},{id:"morph:morph-v3-fast",provider:"morph",vendorId:"morph-v3-fast",displayName:"Morph v3 Fast",family:"morph-v3-fast",status:"stable",context:{combinedMax:16e3,outputMax:16e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.8,outputPerMTokens:1.2},pricingSource:"models.dev",aliases:["morph/morph-v3-fast"],releasedAt:"2024-08-15",source:"https://docs.morphllm.com/api-reference/introduction",contextSource:"https://docs.morphllm.com/api-reference/introduction",verifiedAt:"2024-08-15"},{id:"morph:morph-v3-large",provider:"morph",vendorId:"morph-v3-large",displayName:"Morph v3 Large",family:"morph-v3-large",status:"stable",context:{combinedMax:32e3,outputMax:32e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.9,outputPerMTokens:1.9},pricingSource:"models.dev",aliases:["morph/morph-v3-large"],releasedAt:"2024-08-15",source:"https://docs.morphllm.com/api-reference/introduction",contextSource:"https://docs.morphllm.com/api-reference/introduction",verifiedAt:"2024-08-15"},{id:"nvidia:cosmos-nemotron-34b",provider:"nvidia",vendorId:"cosmos-nemotron-34b",displayName:"Cosmos Nemotron 34B",family:"cosmos-nemotron-34b",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["nvidia/cosmos-nemotron-34b"],releasedAt:"2024-01-01",source:"https://docs.api.nvidia.com/nim/",contextSource:"https://docs.api.nvidia.com/nim/",verifiedAt:"2025-09-05"},{id:"nvidia:deepseek-r1",provider:"nvidia",vendorId:"deepseek-r1",displayName:"DeepSeek R1",family:"deepseek-r1",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["nvidia/deepseek-r1"],releasedAt:"2024-11-01",source:"https://docs.api.nvidia.com/nim/",contextSource:"https://docs.api.nvidia.com/nim/",verifiedAt:"2025-09-05"},{id:"nvidia:deepseek-v3.1",provider:"nvidia",vendorId:"deepseek-v3.1",displayName:"DeepSeek V3.1",family:"deepseek-v3.1",status:"stable",context:{combinedMax:128e3,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["nvidia/deepseek-v3.1"],releasedAt:"2025-08-20",source:"https://docs.api.nvidia.com/nim/",contextSource:"https://docs.api.nvidia.com/nim/",verifiedAt:"2025-08-26"},{id:"nvidia:flux_1-dev",provider:"nvidia",vendorId:"flux_1-dev",displayName:"FLUX.1-dev",family:"flux_1-dev",status:"stable",context:{combinedMax:4096,outputMax:0},modalities:{textIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["nvidia/flux_1-dev"],releasedAt:"2024-08-01",source:"https://docs.api.nvidia.com/nim/",contextSource:"https://docs.api.nvidia.com/nim/",verifiedAt:"2025-09-05"},{id:"nvidia:gemma-3-27b-it",provider:"nvidia",vendorId:"gemma-3-27b-it",displayName:"Gemma-3-27B-IT",family:"gemma-3-27b-it",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["nvidia/gemma-3-27b-it"],releasedAt:"2024-12-01",source:"https://docs.api.nvidia.com/nim/",contextSource:"https://docs.api.nvidia.com/nim/",verifiedAt:"2025-09-05"},{id:"nvidia:llama-3.1-nemotron-ultra-253b-v1",provider:"nvidia",vendorId:"llama-3.1-nemotron-ultra-253b-v1",displayName:"Llama-3.1-Nemotron-Ultra-253B-v1",family:"llama-3.1-nemotron-ultra-253b-v1",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["nvidia/llama-3.1-nemotron-ultra-253b-v1"],releasedAt:"2024-07-01",source:"https://docs.api.nvidia.com/nim/",contextSource:"https://docs.api.nvidia.com/nim/",verifiedAt:"2025-09-05"},{id:"nvidia:llama-3.3-nemotron-super-49b-v1.5",provider:"nvidia",vendorId:"llama-3.3-nemotron-super-49b-v1.5",displayName:"Llama-3.3-Nemotron-Super-49B-v1.5",family:"llama-3.3-nemotron-super-49b-v1.5",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["nvidia/llama-3.3-nemotron-super-49b-v1.5"],releasedAt:"2025-07-25",source:"https://docs.api.nvidia.com/nim/",contextSource:"https://docs.api.nvidia.com/nim/",verifiedAt:"2025-09-05"},{id:"nvidia:mistral-small-3.1-24b-instruct-2503",provider:"nvidia",vendorId:"mistral-small-3.1-24b-instruct-2503",displayName:"Mistral-Small-3.1-24B-Instruct-2503",family:"mistral-small-3.1-24b-instruct-2503",status:"stable",context:{combinedMax:128e3,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["nvidia/mistral-small-3.1-24b-instruct-2503"],releasedAt:"2025-04-01",source:"https://docs.api.nvidia.com/nim/",contextSource:"https://docs.api.nvidia.com/nim/",verifiedAt:"2025-09-05"},{id:"nvidia:nemoretriever-ocr-v1",provider:"nvidia",vendorId:"nemoretriever-ocr-v1",displayName:"NeMo Retriever OCR v1",family:"nemoretriever-ocr-v1",status:"stable",context:{combinedMax:0,outputMax:4096},modalities:{textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["nvidia/nemoretriever-ocr-v1"],releasedAt:"2024-01-01",source:"https://docs.api.nvidia.com/nim/",contextSource:"https://docs.api.nvidia.com/nim/",verifiedAt:"2025-09-05"},{id:"nvidia:parakeet-tdt-0.6b-v2",provider:"nvidia",vendorId:"parakeet-tdt-0.6b-v2",displayName:"Parakeet TDT 0.6B v2",family:"parakeet-tdt-0.6b-v2",status:"stable",context:{combinedMax:0,outputMax:4096},modalities:{textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["nvidia/parakeet-tdt-0.6b-v2"],releasedAt:"2024-01-01",source:"https://docs.api.nvidia.com/nim/",contextSource:"https://docs.api.nvidia.com/nim/",verifiedAt:"2025-09-05"},{id:"nvidia:phi-4-multimodal-instruct",provider:"nvidia",vendorId:"phi-4-multimodal-instruct",displayName:"Phi-4-Multimodal-Instruct",family:"phi-4-multimodal-instruct",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["nvidia/phi-4-multimodal-instruct"],releasedAt:"2024-12-01",source:"https://docs.api.nvidia.com/nim/",contextSource:"https://docs.api.nvidia.com/nim/",verifiedAt:"2025-09-05"},{id:"nvidia:qwen3-235b-a22b",provider:"nvidia",vendorId:"qwen3-235b-a22b",displayName:"Qwen3-235B-A22B",family:"qwen3-235b-a22b",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["nvidia/qwen3-235b-a22b"],releasedAt:"2024-12-01",source:"https://docs.api.nvidia.com/nim/",contextSource:"https://docs.api.nvidia.com/nim/",verifiedAt:"2025-09-05"},{id:"nvidia:qwen3-coder-480b-a35b-instruct",provider:"nvidia",vendorId:"qwen3-coder-480b-a35b-instruct",displayName:"Qwen3 Coder 480B A35B Instruct",family:"qwen3-coder-480b-a35b-instruct",status:"stable",context:{combinedMax:262144,outputMax:66536},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["nvidia/qwen3-coder-480b-a35b-instruct"],releasedAt:"2025-07-23",source:"https://docs.api.nvidia.com/nim/",contextSource:"https://docs.api.nvidia.com/nim/",verifiedAt:"2025-07-23"},{id:"nvidia:whisper-large-v3",provider:"nvidia",vendorId:"whisper-large-v3",displayName:"Whisper Large v3",family:"whisper-large-v3",status:"stable",context:{combinedMax:0,outputMax:4096},modalities:{textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["nvidia/whisper-large-v3"],releasedAt:"2023-09-01",source:"https://docs.api.nvidia.com/nim/",contextSource:"https://docs.api.nvidia.com/nim/",verifiedAt:"2025-09-05"},{id:"openai:codex-mini-latest",provider:"openai",vendorId:"codex-mini-latest",displayName:"Codex Mini",family:"codex-mini-latest",status:"stable",context:{combinedMax:2e5,outputMax:1e5},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1.5,outputPerMTokens:6},pricingSource:"models.dev",aliases:["openai/codex-mini-latest"],releasedAt:"2025-05-16",source:"https://platform.openai.com/docs/models",contextSource:"https://platform.openai.com/docs/models",verifiedAt:"2025-05-16"},{id:"openai:gpt-3.5-turbo",provider:"openai",vendorId:"gpt-3.5-turbo",displayName:"GPT-3.5-turbo",family:"gpt-3.5-turbo",status:"stable",context:{combinedMax:16385,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.5,outputPerMTokens:1.5},pricingSource:"models.dev",aliases:["openai/gpt-3.5-turbo"],releasedAt:"2023-03-01",source:"https://platform.openai.com/docs/models",contextSource:"https://platform.openai.com/docs/models",verifiedAt:"2023-11-06"},{id:"openai:gpt-4",provider:"openai",vendorId:"gpt-4",displayName:"GPT-4",family:"gpt-4",status:"stable",context:{combinedMax:8192,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:30,outputPerMTokens:60},pricingSource:"models.dev",aliases:["openai/gpt-4"],releasedAt:"2023-11-06",source:"https://platform.openai.com/docs/models",contextSource:"https://platform.openai.com/docs/models",verifiedAt:"2024-04-09"},{id:"openai:gpt-4-turbo",provider:"openai",vendorId:"gpt-4-turbo",displayName:"GPT-4 Turbo",family:"gpt-4-turbo",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:10,outputPerMTokens:30},pricingSource:"models.dev",aliases:["openai/gpt-4-turbo"],releasedAt:"2023-11-06",source:"https://platform.openai.com/docs/models",contextSource:"https://platform.openai.com/docs/models",verifiedAt:"2024-04-09"},{id:"openai:gpt-4.1",provider:"openai",vendorId:"gpt-4.1",displayName:"GPT-4.1",family:"gpt-4.1",status:"stable",context:{combinedMax:1047576,outputMax:32768},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:2,outputPerMTokens:8},pricingSource:"models.dev",aliases:["openai/gpt-4.1"],releasedAt:"2025-04-14",source:"https://platform.openai.com/docs/models",contextSource:"https://platform.openai.com/docs/models",verifiedAt:"2025-04-14"},{id:"openai:gpt-4.1-mini",provider:"openai",vendorId:"gpt-4.1-mini",displayName:"GPT-4.1 mini",family:"gpt-4.1-mini",status:"stable",context:{combinedMax:1047576,outputMax:32768},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.4,outputPerMTokens:1.6},pricingSource:"models.dev",aliases:["openai/gpt-4.1-mini"],releasedAt:"2025-04-14",source:"https://platform.openai.com/docs/models",contextSource:"https://platform.openai.com/docs/models",verifiedAt:"2025-04-14"},{id:"openai:gpt-4.1-nano",provider:"openai",vendorId:"gpt-4.1-nano",displayName:"GPT-4.1 nano",family:"gpt-4.1-nano",status:"stable",context:{combinedMax:1047576,outputMax:32768},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.1,outputPerMTokens:.4},pricingSource:"models.dev",aliases:["openai/gpt-4.1-nano"],releasedAt:"2025-04-14",source:"https://platform.openai.com/docs/models",contextSource:"https://platform.openai.com/docs/models",verifiedAt:"2025-04-14"},{id:"openai:gpt-4o",provider:"openai",vendorId:"gpt-4o",displayName:"GPT-4o",family:"gpt-4o",status:"stable",context:{combinedMax:128e3,outputMax:16384},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:2.5,outputPerMTokens:10},pricingSource:"models.dev",aliases:["openai/gpt-4o"],releasedAt:"2024-05-13",source:"https://platform.openai.com/docs/models",contextSource:"https://platform.openai.com/docs/models",verifiedAt:"2024-05-13"},{id:"openai:gpt-4o-mini",provider:"openai",vendorId:"gpt-4o-mini",displayName:"GPT-4o mini",family:"gpt-4o-mini",status:"stable",context:{combinedMax:128e3,outputMax:16384},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.15,outputPerMTokens:.6},pricingSource:"models.dev",aliases:["openai/gpt-4o-mini"],releasedAt:"2024-07-18",source:"https://platform.openai.com/docs/models",contextSource:"https://platform.openai.com/docs/models",verifiedAt:"2024-07-18"},{id:"openai:gpt-5",provider:"openai",vendorId:"gpt-5",displayName:"GPT-5",family:"gpt-5",status:"stable",context:{combinedMax:4e5,outputMax:128e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:1.25,outputPerMTokens:10},pricingSource:"models.dev",aliases:["openai/gpt-5"],releasedAt:"2025-08-07",source:"https://platform.openai.com/docs/models",contextSource:"https://platform.openai.com/docs/models",verifiedAt:"2025-08-07"},{id:"openai:gpt-5-chat-latest",provider:"openai",vendorId:"gpt-5-chat-latest",displayName:"GPT-5 Chat (latest)",family:"gpt-5-chat-latest",status:"stable",context:{combinedMax:4e5,outputMax:128e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:1.25,outputPerMTokens:10},pricingSource:"models.dev",aliases:["openai/gpt-5-chat-latest"],releasedAt:"2025-08-07",source:"https://platform.openai.com/docs/models",contextSource:"https://platform.openai.com/docs/models",verifiedAt:"2025-08-07"},{id:"openai:gpt-5-mini",provider:"openai",vendorId:"gpt-5-mini",displayName:"GPT-5 Mini",family:"gpt-5-mini",status:"stable",context:{combinedMax:4e5,outputMax:128e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.25,outputPerMTokens:2},pricingSource:"models.dev",aliases:["openai/gpt-5-mini"],releasedAt:"2025-08-07",source:"https://platform.openai.com/docs/models",contextSource:"https://platform.openai.com/docs/models",verifiedAt:"2025-08-07"},{id:"openai:gpt-5-nano",provider:"openai",vendorId:"gpt-5-nano",displayName:"GPT-5 Nano",family:"gpt-5-nano",status:"stable",context:{combinedMax:4e5,outputMax:128e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.05,outputPerMTokens:.4},pricingSource:"models.dev",aliases:["openai/gpt-5-nano"],releasedAt:"2025-08-07",source:"https://platform.openai.com/docs/models",contextSource:"https://platform.openai.com/docs/models",verifiedAt:"2025-08-07"},{id:"openai:o1",provider:"openai",vendorId:"o1",displayName:"o1",family:"o1",status:"stable",context:{combinedMax:2e5,outputMax:1e5},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:15,outputPerMTokens:60},pricingSource:"models.dev",aliases:["openai/o1"],releasedAt:"2024-12-05",source:"https://platform.openai.com/docs/models",contextSource:"https://platform.openai.com/docs/models",verifiedAt:"2024-12-05"},{id:"openai:o1-mini",provider:"openai",vendorId:"o1-mini",displayName:"o1-mini",family:"o1-mini",status:"stable",context:{combinedMax:128e3,outputMax:65536},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1.1,outputPerMTokens:4.4},pricingSource:"models.dev",aliases:["openai/o1-mini"],releasedAt:"2024-09-12",source:"https://platform.openai.com/docs/models",contextSource:"https://platform.openai.com/docs/models",verifiedAt:"2024-09-12"},{id:"openai:o1-preview",provider:"openai",vendorId:"o1-preview",displayName:"o1-preview",family:"o1-preview",status:"stable",context:{combinedMax:128e3,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:15,outputPerMTokens:60},pricingSource:"models.dev",aliases:["openai/o1-preview"],releasedAt:"2024-09-12",source:"https://platform.openai.com/docs/models",contextSource:"https://platform.openai.com/docs/models",verifiedAt:"2024-09-12"},{id:"openai:o1-pro",provider:"openai",vendorId:"o1-pro",displayName:"o1-pro",family:"o1-pro",status:"stable",context:{combinedMax:2e5,outputMax:1e5},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:150,outputPerMTokens:600},pricingSource:"models.dev",aliases:["openai/o1-pro"],releasedAt:"2025-03-19",source:"https://platform.openai.com/docs/models",contextSource:"https://platform.openai.com/docs/models",verifiedAt:"2025-03-19"},{id:"openai:o3",provider:"openai",vendorId:"o3",displayName:"o3",family:"o3",status:"stable",context:{combinedMax:2e5,outputMax:1e5},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:2,outputPerMTokens:8},pricingSource:"models.dev",aliases:["openai/o3"],releasedAt:"2025-04-16",source:"https://platform.openai.com/docs/models",contextSource:"https://platform.openai.com/docs/models",verifiedAt:"2025-04-16"},{id:"openai:o3-deep-research",provider:"openai",vendorId:"o3-deep-research",displayName:"o3-deep-research",family:"o3-deep-research",status:"stable",context:{combinedMax:2e5,outputMax:1e5},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:10,outputPerMTokens:40},pricingSource:"models.dev",aliases:["openai/o3-deep-research"],releasedAt:"2024-06-26",source:"https://platform.openai.com/docs/models",contextSource:"https://platform.openai.com/docs/models",verifiedAt:"2024-06-26"},{id:"openai:o3-mini",provider:"openai",vendorId:"o3-mini",displayName:"o3-mini",family:"o3-mini",status:"stable",context:{combinedMax:2e5,outputMax:1e5},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1.1,outputPerMTokens:4.4},pricingSource:"models.dev",aliases:["openai/o3-mini"],releasedAt:"2024-12-20",source:"https://platform.openai.com/docs/models",contextSource:"https://platform.openai.com/docs/models",verifiedAt:"2025-01-29"},{id:"openai:o3-pro",provider:"openai",vendorId:"o3-pro",displayName:"o3-pro",family:"o3-pro",status:"stable",context:{combinedMax:2e5,outputMax:1e5},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:20,outputPerMTokens:80},pricingSource:"models.dev",aliases:["openai/o3-pro"],releasedAt:"2025-06-10",source:"https://platform.openai.com/docs/models",contextSource:"https://platform.openai.com/docs/models",verifiedAt:"2025-06-10"},{id:"openai:o4-mini",provider:"openai",vendorId:"o4-mini",displayName:"o4-mini",family:"o4-mini",status:"stable",context:{combinedMax:2e5,outputMax:1e5},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:1.1,outputPerMTokens:4.4},pricingSource:"models.dev",aliases:["openai/o4-mini"],releasedAt:"2025-04-16",source:"https://platform.openai.com/docs/models",contextSource:"https://platform.openai.com/docs/models",verifiedAt:"2025-04-16"},{id:"openai:o4-mini-deep-research",provider:"openai",vendorId:"o4-mini-deep-research",displayName:"o4-mini-deep-research",family:"o4-mini-deep-research",status:"stable",context:{combinedMax:2e5,outputMax:1e5},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:2,outputPerMTokens:8},pricingSource:"models.dev",aliases:["openai/o4-mini-deep-research"],releasedAt:"2024-06-26",source:"https://platform.openai.com/docs/models",contextSource:"https://platform.openai.com/docs/models",verifiedAt:"2024-06-26"},{id:"opencode:claude-3.5-haiku",provider:"opencode",vendorId:"claude-3.5-haiku",displayName:"Claude Haiku 3.5",family:"claude-3.5-haiku",status:"stable",context:{combinedMax:2e5,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.8,outputPerMTokens:4},pricingSource:"models.dev",aliases:["opencode/claude-3.5-haiku"],releasedAt:"2024-10-22",source:"https://opencode.ai/docs",contextSource:"https://opencode.ai/docs",verifiedAt:"2024-10-22"},{id:"opencode:claude-opus-4.1",provider:"opencode",vendorId:"claude-opus-4.1",displayName:"Claude Opus 4.1",family:"claude-opus-4.1",status:"stable",context:{combinedMax:2e5,outputMax:32e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:15,outputPerMTokens:75},pricingSource:"models.dev",aliases:["opencode/claude-opus-4.1"],releasedAt:"2025-08-05",source:"https://opencode.ai/docs",contextSource:"https://opencode.ai/docs",verifiedAt:"2025-08-05"},{id:"opencode:claude-sonnet-4",provider:"opencode",vendorId:"claude-sonnet-4",displayName:"Claude Sonnet 4",family:"claude-sonnet-4",status:"stable",context:{combinedMax:2e5,outputMax:64e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["opencode/claude-sonnet-4"],releasedAt:"2025-05-22",source:"https://opencode.ai/docs",contextSource:"https://opencode.ai/docs",verifiedAt:"2025-05-22"},{id:"opencode:gpt-5",provider:"opencode",vendorId:"gpt-5",displayName:"GPT-5",family:"gpt-5",status:"stable",context:{combinedMax:4e5,outputMax:128e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:1.25,outputPerMTokens:10},pricingSource:"models.dev",aliases:["opencode/gpt-5"],releasedAt:"2025-08-07",source:"https://opencode.ai/docs",contextSource:"https://opencode.ai/docs",verifiedAt:"2025-08-07"},{id:"opencode:grok-code",provider:"opencode",vendorId:"grok-code",displayName:"Grok Code Fast 1",family:"grok-code",status:"stable",context:{combinedMax:256e3,outputMax:32e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["opencode/grok-code"],releasedAt:"2025-08-20",source:"https://opencode.ai/docs",contextSource:"https://opencode.ai/docs",verifiedAt:"2025-08-20"},{id:"opencode:kimi-k2",provider:"opencode",vendorId:"kimi-k2",displayName:"Kimi K2",family:"kimi-k2",status:"stable",context:{combinedMax:262144,outputMax:262144},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.6,outputPerMTokens:2.5},pricingSource:"models.dev",aliases:["opencode/kimi-k2"],releasedAt:"2025-09-05",source:"https://opencode.ai/docs",contextSource:"https://opencode.ai/docs",verifiedAt:"2025-09-05"},{id:"opencode:qwen3-coder",provider:"opencode",vendorId:"qwen3-coder",displayName:"Qwen3 Coder",family:"qwen3-coder",status:"stable",context:{combinedMax:262144,outputMax:65536},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.3,outputPerMTokens:1.2},pricingSource:"models.dev",aliases:["opencode/qwen3-coder"],releasedAt:"2025-07-23",source:"https://opencode.ai/docs",contextSource:"https://opencode.ai/docs",verifiedAt:"2025-07-23"},{id:"openrouter:anthropic/claude-3.5-haiku",provider:"openrouter",vendorId:"anthropic/claude-3.5-haiku",displayName:"Claude Haiku 3.5",family:"anthropic/claude-3.5-haiku",status:"stable",context:{combinedMax:2e5,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.8,outputPerMTokens:4},pricingSource:"models.dev",aliases:["openrouter/anthropic/claude-3.5-haiku"],releasedAt:"2024-10-22",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2024-10-22"},{id:"openrouter:anthropic/claude-3.7-sonnet",provider:"openrouter",vendorId:"anthropic/claude-3.7-sonnet",displayName:"Claude Sonnet 3.7",family:"anthropic/claude-3.7-sonnet",status:"stable",context:{combinedMax:2e5,outputMax:128e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:15,outputPerMTokens:75},pricingSource:"models.dev",aliases:["openrouter/anthropic/claude-3.7-sonnet"],releasedAt:"2025-02-19",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-02-19"},{id:"openrouter:anthropic/claude-opus-4",provider:"openrouter",vendorId:"anthropic/claude-opus-4",displayName:"Claude Opus 4",family:"anthropic/claude-opus-4",status:"stable",context:{combinedMax:2e5,outputMax:32e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:15,outputPerMTokens:75},pricingSource:"models.dev",aliases:["openrouter/anthropic/claude-opus-4"],releasedAt:"2025-05-22",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-05-22"},{id:"openrouter:anthropic/claude-opus-4.1",provider:"openrouter",vendorId:"anthropic/claude-opus-4.1",displayName:"Claude Opus 4.1",family:"anthropic/claude-opus-4.1",status:"stable",context:{combinedMax:2e5,outputMax:32e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:15,outputPerMTokens:75},pricingSource:"models.dev",aliases:["openrouter/anthropic/claude-opus-4.1"],releasedAt:"2025-08-05",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-08-05"},{id:"openrouter:anthropic/claude-sonnet-4",provider:"openrouter",vendorId:"anthropic/claude-sonnet-4",displayName:"Claude Sonnet 4",family:"anthropic/claude-sonnet-4",status:"stable",context:{combinedMax:2e5,outputMax:64e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["openrouter/anthropic/claude-sonnet-4"],releasedAt:"2025-05-22",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-05-22"},{id:"openrouter:cognitivecomputations/dolphin3.0-mistral-24b",provider:"openrouter",vendorId:"cognitivecomputations/dolphin3.0-mistral-24b",displayName:"Dolphin3.0 Mistral 24B",family:"cognitivecomputations/dolphin3.0-mistral-24b",status:"stable",context:{combinedMax:32768,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/cognitivecomputations/dolphin3.0-mistral-24b"],releasedAt:"2025-02-13",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-02-13"},{id:"openrouter:cognitivecomputations/dolphin3.0-r1-mistral-24b",provider:"openrouter",vendorId:"cognitivecomputations/dolphin3.0-r1-mistral-24b",displayName:"Dolphin3.0 R1 Mistral 24B",family:"cognitivecomputations/dolphin3.0-r1-mistral-24b",status:"stable",context:{combinedMax:32768,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/cognitivecomputations/dolphin3.0-r1-mistral-24b"],releasedAt:"2025-02-13",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-02-13"},{id:"openrouter:deepseek/deepseek-chat-v3-0324",provider:"openrouter",vendorId:"deepseek/deepseek-chat-v3-0324",displayName:"DeepSeek V3 0324",family:"deepseek/deepseek-chat-v3-0324",status:"stable",context:{combinedMax:16384,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/deepseek/deepseek-chat-v3-0324"],releasedAt:"2025-03-24",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-03-24"},{id:"openrouter:deepseek/deepseek-chat-v3.1",provider:"openrouter",vendorId:"deepseek/deepseek-chat-v3.1",displayName:"DeepSeek-V3.1",family:"deepseek/deepseek-chat-v3.1",status:"stable",context:{combinedMax:163840,outputMax:163840},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.2,outputPerMTokens:.8},pricingSource:"models.dev",aliases:["openrouter/deepseek/deepseek-chat-v3.1"],releasedAt:"2025-08-21",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-08-21"},{id:"openrouter:deepseek/deepseek-r1-0528-qwen3-8b:free",provider:"openrouter",vendorId:"deepseek/deepseek-r1-0528-qwen3-8b:free",displayName:"Deepseek R1 0528 Qwen3 8B (free)",family:"deepseek/deepseek-r1-0528-qwen3-8b:free",status:"stable",context:{combinedMax:131072,outputMax:131072},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/deepseek/deepseek-r1-0528-qwen3-8b:free"],releasedAt:"2025-05-29",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-05-29"},{id:"openrouter:deepseek/deepseek-r1-0528:free",provider:"openrouter",vendorId:"deepseek/deepseek-r1-0528:free",displayName:"R1 0528 (free)",family:"deepseek/deepseek-r1-0528:free",status:"stable",context:{combinedMax:163840,outputMax:163840},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/deepseek/deepseek-r1-0528:free"],releasedAt:"2025-05-28",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-05-28"},{id:"openrouter:deepseek/deepseek-r1-distill-llama-70b",provider:"openrouter",vendorId:"deepseek/deepseek-r1-distill-llama-70b",displayName:"DeepSeek R1 Distill Llama 70B",family:"deepseek/deepseek-r1-distill-llama-70b",status:"stable",context:{combinedMax:8192,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/deepseek/deepseek-r1-distill-llama-70b"],releasedAt:"2025-01-23",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-01-23"},{id:"openrouter:deepseek/deepseek-r1-distill-qwen-14b",provider:"openrouter",vendorId:"deepseek/deepseek-r1-distill-qwen-14b",displayName:"DeepSeek R1 Distill Qwen 14B",family:"deepseek/deepseek-r1-distill-qwen-14b",status:"stable",context:{combinedMax:64e3,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/deepseek/deepseek-r1-distill-qwen-14b"],releasedAt:"2025-01-29",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-01-29"},{id:"openrouter:deepseek/deepseek-r1:free",provider:"openrouter",vendorId:"deepseek/deepseek-r1:free",displayName:"R1 (free)",family:"deepseek/deepseek-r1:free",status:"stable",context:{combinedMax:163840,outputMax:163840},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/deepseek/deepseek-r1:free"],releasedAt:"2025-01-20",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-01-20"},{id:"openrouter:deepseek/deepseek-v3-base:free",provider:"openrouter",vendorId:"deepseek/deepseek-v3-base:free",displayName:"DeepSeek V3 Base (free)",family:"deepseek/deepseek-v3-base:free",status:"stable",context:{combinedMax:163840,outputMax:163840},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/deepseek/deepseek-v3-base:free"],releasedAt:"2025-03-29",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-03-29"},{id:"openrouter:featherless/qwerky-72b",provider:"openrouter",vendorId:"featherless/qwerky-72b",displayName:"Qwerky 72B",family:"featherless/qwerky-72b",status:"stable",context:{combinedMax:32768,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/featherless/qwerky-72b"],releasedAt:"2025-03-20",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-03-20"},{id:"openrouter:google/gemini-2.0-flash-001",provider:"openrouter",vendorId:"google/gemini-2.0-flash-001",displayName:"Gemini 2.0 Flash",family:"google/gemini-2.0-flash-001",status:"stable",context:{combinedMax:1048576,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.1,outputPerMTokens:.4},pricingSource:"models.dev",aliases:["openrouter/google/gemini-2.0-flash-001"],releasedAt:"2024-12-11",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2024-12-11"},{id:"openrouter:google/gemini-2.0-flash-exp:free",provider:"openrouter",vendorId:"google/gemini-2.0-flash-exp:free",displayName:"Gemini 2.0 Flash Experimental (free)",family:"google/gemini-2.0-flash-exp:free",status:"stable",context:{combinedMax:1048576,outputMax:1048576},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/google/gemini-2.0-flash-exp:free"],releasedAt:"2024-12-11",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2024-12-11"},{id:"openrouter:google/gemini-2.5-flash",provider:"openrouter",vendorId:"google/gemini-2.5-flash",displayName:"Gemini 2.5 Flash",family:"google/gemini-2.5-flash",status:"stable",context:{combinedMax:1048576,outputMax:65536},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.3,outputPerMTokens:2.5},pricingSource:"models.dev",aliases:["openrouter/google/gemini-2.5-flash"],releasedAt:"2025-07-17",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-07-17"},{id:"openrouter:google/gemini-2.5-pro",provider:"openrouter",vendorId:"google/gemini-2.5-pro",displayName:"Gemini 2.5 Pro",family:"google/gemini-2.5-pro",status:"stable",context:{combinedMax:1048576,outputMax:65536},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:1.25,outputPerMTokens:10},pricingSource:"models.dev",aliases:["openrouter/google/gemini-2.5-pro"],releasedAt:"2025-03-20",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-06-05"},{id:"openrouter:google/gemini-2.5-pro-preview-05-06",provider:"openrouter",vendorId:"google/gemini-2.5-pro-preview-05-06",displayName:"Gemini 2.5 Pro Preview 05-06",family:"google/gemini-2.5-pro-preview-05-06",status:"stable",context:{combinedMax:1048576,outputMax:65536},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:1.25,outputPerMTokens:10},pricingSource:"models.dev",aliases:["openrouter/google/gemini-2.5-pro-preview-05-06"],releasedAt:"2025-05-06",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-05-06"},{id:"openrouter:google/gemini-2.5-pro-preview-06-05",provider:"openrouter",vendorId:"google/gemini-2.5-pro-preview-06-05",displayName:"Gemini 2.5 Pro Preview 06-05",family:"google/gemini-2.5-pro-preview-06-05",status:"stable",context:{combinedMax:1048576,outputMax:65536},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:1.25,outputPerMTokens:10},pricingSource:"models.dev",aliases:["openrouter/google/gemini-2.5-pro-preview-06-05"],releasedAt:"2025-06-05",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-06-05"},{id:"openrouter:google/gemma-2-9b-it:free",provider:"openrouter",vendorId:"google/gemma-2-9b-it:free",displayName:"Gemma 2 9B (free)",family:"google/gemma-2-9b-it:free",status:"stable",context:{combinedMax:8192,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/google/gemma-2-9b-it:free"],releasedAt:"2024-06-28",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2024-06-28"},{id:"openrouter:google/gemma-3-12b-it",provider:"openrouter",vendorId:"google/gemma-3-12b-it",displayName:"Gemma 3 12B IT",family:"google/gemma-3-12b-it",status:"stable",context:{combinedMax:96e3,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/google/gemma-3-12b-it"],releasedAt:"2025-03-13",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-03-13"},{id:"openrouter:google/gemma-3-27b-it",provider:"openrouter",vendorId:"google/gemma-3-27b-it",displayName:"Gemma 3 27B IT",family:"google/gemma-3-27b-it",status:"stable",context:{combinedMax:96e3,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/google/gemma-3-27b-it"],releasedAt:"2025-03-12",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-03-12"},{id:"openrouter:google/gemma-3n-e4b-it",provider:"openrouter",vendorId:"google/gemma-3n-e4b-it",displayName:"Gemma 3n E4B IT",family:"google/gemma-3n-e4b-it",status:"stable",context:{combinedMax:8192,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/google/gemma-3n-e4b-it"],releasedAt:"2025-05-20",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-05-20"},{id:"openrouter:google/gemma-3n-e4b-it:free",provider:"openrouter",vendorId:"google/gemma-3n-e4b-it:free",displayName:"Gemma 3n 4B (free)",family:"google/gemma-3n-e4b-it:free",status:"stable",context:{combinedMax:8192,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/google/gemma-3n-e4b-it:free"],releasedAt:"2025-05-20",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-05-20"},{id:"openrouter:meta-llama/llama-3.2-11b-vision-instruct",provider:"openrouter",vendorId:"meta-llama/llama-3.2-11b-vision-instruct",displayName:"Llama 3.2 11B Vision Instruct",family:"meta-llama/llama-3.2-11b-vision-instruct",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/meta-llama/llama-3.2-11b-vision-instruct"],releasedAt:"2024-09-25",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2024-09-25"},{id:"openrouter:meta-llama/llama-3.3-70b-instruct:free",provider:"openrouter",vendorId:"meta-llama/llama-3.3-70b-instruct:free",displayName:"Llama 3.3 70B Instruct (free)",family:"meta-llama/llama-3.3-70b-instruct:free",status:"stable",context:{combinedMax:65536,outputMax:65536},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/meta-llama/llama-3.3-70b-instruct:free"],releasedAt:"2024-12-06",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2024-12-06"},{id:"openrouter:meta-llama/llama-4-scout:free",provider:"openrouter",vendorId:"meta-llama/llama-4-scout:free",displayName:"Llama 4 Scout (free)",family:"meta-llama/llama-4-scout:free",status:"stable",context:{combinedMax:64e3,outputMax:64e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/meta-llama/llama-4-scout:free"],releasedAt:"2025-04-05",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-04-05"},{id:"openrouter:microsoft/mai-ds-r1:free",provider:"openrouter",vendorId:"microsoft/mai-ds-r1:free",displayName:"MAI DS R1 (free)",family:"microsoft/mai-ds-r1:free",status:"stable",context:{combinedMax:163840,outputMax:163840},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/microsoft/mai-ds-r1:free"],releasedAt:"2025-04-21",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-04-21"},{id:"openrouter:mistralai/codestral-2508",provider:"openrouter",vendorId:"mistralai/codestral-2508",displayName:"Codestral 2508",family:"mistralai/codestral-2508",status:"stable",context:{combinedMax:256e3,outputMax:256e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.3,outputPerMTokens:.9},pricingSource:"models.dev",aliases:["openrouter/mistralai/codestral-2508"],releasedAt:"2025-08-01",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-08-01"},{id:"openrouter:mistralai/devstral-medium-2507",provider:"openrouter",vendorId:"mistralai/devstral-medium-2507",displayName:"Devstral Medium",family:"mistralai/devstral-medium-2507",status:"stable",context:{combinedMax:131072,outputMax:131072},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.4,outputPerMTokens:2},pricingSource:"models.dev",aliases:["openrouter/mistralai/devstral-medium-2507"],releasedAt:"2025-07-10",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-07-10"},{id:"openrouter:mistralai/devstral-small-2505",provider:"openrouter",vendorId:"mistralai/devstral-small-2505",displayName:"Devstral Small",family:"mistralai/devstral-small-2505",status:"stable",context:{combinedMax:128e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.06,outputPerMTokens:.12},pricingSource:"models.dev",aliases:["openrouter/mistralai/devstral-small-2505"],releasedAt:"2025-05-07",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-05-07"},{id:"openrouter:mistralai/devstral-small-2505:free",provider:"openrouter",vendorId:"mistralai/devstral-small-2505:free",displayName:"Devstral Small 2505 (free)",family:"mistralai/devstral-small-2505:free",status:"stable",context:{combinedMax:32768,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/mistralai/devstral-small-2505:free"],releasedAt:"2025-05-21",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-05-21"},{id:"openrouter:mistralai/devstral-small-2507",provider:"openrouter",vendorId:"mistralai/devstral-small-2507",displayName:"Devstral Small 1.1",family:"mistralai/devstral-small-2507",status:"stable",context:{combinedMax:131072,outputMax:131072},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.1,outputPerMTokens:.3},pricingSource:"models.dev",aliases:["openrouter/mistralai/devstral-small-2507"],releasedAt:"2025-07-10",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-07-10"},{id:"openrouter:mistralai/mistral-7b-instruct:free",provider:"openrouter",vendorId:"mistralai/mistral-7b-instruct:free",displayName:"Mistral 7B Instruct (free)",family:"mistralai/mistral-7b-instruct:free",status:"stable",context:{combinedMax:32768,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/mistralai/mistral-7b-instruct:free"],releasedAt:"2024-05-27",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2024-05-27"},{id:"openrouter:mistralai/mistral-medium-3",provider:"openrouter",vendorId:"mistralai/mistral-medium-3",displayName:"Mistral Medium 3",family:"mistralai/mistral-medium-3",status:"stable",context:{combinedMax:131072,outputMax:131072},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.4,outputPerMTokens:2},pricingSource:"models.dev",aliases:["openrouter/mistralai/mistral-medium-3"],releasedAt:"2025-05-07",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-05-07"},{id:"openrouter:mistralai/mistral-medium-3.1",provider:"openrouter",vendorId:"mistralai/mistral-medium-3.1",displayName:"Mistral Medium 3.1",family:"mistralai/mistral-medium-3.1",status:"stable",context:{combinedMax:262144,outputMax:262144},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.4,outputPerMTokens:2},pricingSource:"models.dev",aliases:["openrouter/mistralai/mistral-medium-3.1"],releasedAt:"2025-08-12",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-08-12"},{id:"openrouter:mistralai/mistral-nemo:free",provider:"openrouter",vendorId:"mistralai/mistral-nemo:free",displayName:"Mistral Nemo (free)",family:"mistralai/mistral-nemo:free",status:"stable",context:{combinedMax:131072,outputMax:131072},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/mistralai/mistral-nemo:free"],releasedAt:"2024-07-19",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2024-07-19"},{id:"openrouter:mistralai/mistral-small-3.1-24b-instruct",provider:"openrouter",vendorId:"mistralai/mistral-small-3.1-24b-instruct",displayName:"Mistral Small 3.1 24B Instruct",family:"mistralai/mistral-small-3.1-24b-instruct",status:"stable",context:{combinedMax:128e3,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/mistralai/mistral-small-3.1-24b-instruct"],releasedAt:"2025-03-17",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-03-17"},{id:"openrouter:mistralai/mistral-small-3.2-24b-instruct",provider:"openrouter",vendorId:"mistralai/mistral-small-3.2-24b-instruct",displayName:"Mistral Small 3.2 24B Instruct",family:"mistralai/mistral-small-3.2-24b-instruct",status:"stable",context:{combinedMax:96e3,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/mistralai/mistral-small-3.2-24b-instruct"],releasedAt:"2025-06-20",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-06-20"},{id:"openrouter:mistralai/mistral-small-3.2-24b-instruct:free",provider:"openrouter",vendorId:"mistralai/mistral-small-3.2-24b-instruct:free",displayName:"Mistral Small 3.2 24B (free)",family:"mistralai/mistral-small-3.2-24b-instruct:free",status:"stable",context:{combinedMax:96e3,outputMax:96e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/mistralai/mistral-small-3.2-24b-instruct:free"],releasedAt:"2025-06-20",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-06-20"},{id:"openrouter:moonshotai/kimi-dev-72b:free",provider:"openrouter",vendorId:"moonshotai/kimi-dev-72b:free",displayName:"Kimi Dev 72b (free)",family:"moonshotai/kimi-dev-72b:free",status:"stable",context:{combinedMax:131072,outputMax:131072},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/moonshotai/kimi-dev-72b:free"],releasedAt:"2025-06-16",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-06-16"},{id:"openrouter:moonshotai/kimi-k2",provider:"openrouter",vendorId:"moonshotai/kimi-k2",displayName:"Kimi K2",family:"moonshotai/kimi-k2",status:"stable",context:{combinedMax:131072,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.55,outputPerMTokens:2.2},pricingSource:"models.dev",aliases:["openrouter/moonshotai/kimi-k2"],releasedAt:"2025-07-11",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-07-11"},{id:"openrouter:moonshotai/kimi-k2-0905",provider:"openrouter",vendorId:"moonshotai/kimi-k2-0905",displayName:"Kimi K2 Instruct 0905",family:"moonshotai/kimi-k2-0905",status:"stable",context:{combinedMax:262144,outputMax:16384},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.6,outputPerMTokens:2.5},pricingSource:"models.dev",aliases:["openrouter/moonshotai/kimi-k2-0905"],releasedAt:"2025-09-05",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-09-05"},{id:"openrouter:moonshotai/kimi-k2:free",provider:"openrouter",vendorId:"moonshotai/kimi-k2:free",displayName:"Kimi K2 (free)",family:"moonshotai/kimi-k2:free",status:"stable",context:{combinedMax:32800,outputMax:32800},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/moonshotai/kimi-k2:free"],releasedAt:"2025-07-11",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-07-11"},{id:"openrouter:nousresearch/deephermes-3-llama-3-8b-preview",provider:"openrouter",vendorId:"nousresearch/deephermes-3-llama-3-8b-preview",displayName:"DeepHermes 3 Llama 3 8B Preview",family:"nousresearch/deephermes-3-llama-3-8b-preview",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/nousresearch/deephermes-3-llama-3-8b-preview"],releasedAt:"2025-02-28",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-02-28"},{id:"openrouter:nousresearch/hermes-4-405b",provider:"openrouter",vendorId:"nousresearch/hermes-4-405b",displayName:"Hermes 4 405B",family:"nousresearch/hermes-4-405b",status:"stable",context:{combinedMax:131072,outputMax:131072},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1,outputPerMTokens:3},pricingSource:"models.dev",aliases:["openrouter/nousresearch/hermes-4-405b"],releasedAt:"2025-08-25",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-08-25"},{id:"openrouter:nousresearch/hermes-4-70b",provider:"openrouter",vendorId:"nousresearch/hermes-4-70b",displayName:"Hermes 4 70B",family:"nousresearch/hermes-4-70b",status:"stable",context:{combinedMax:131072,outputMax:131072},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.13,outputPerMTokens:.4},pricingSource:"models.dev",aliases:["openrouter/nousresearch/hermes-4-70b"],releasedAt:"2025-08-25",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-08-25"},{id:"openrouter:openai/gpt-4.1",provider:"openrouter",vendorId:"openai/gpt-4.1",displayName:"GPT-4.1",family:"openai/gpt-4.1",status:"stable",context:{combinedMax:1047576,outputMax:32768},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:2,outputPerMTokens:8},pricingSource:"models.dev",aliases:["openrouter/openai/gpt-4.1"],releasedAt:"2025-04-14",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-04-14"},{id:"openrouter:openai/gpt-4.1-mini",provider:"openrouter",vendorId:"openai/gpt-4.1-mini",displayName:"GPT-4.1 Mini",family:"openai/gpt-4.1-mini",status:"stable",context:{combinedMax:1047576,outputMax:32768},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.4,outputPerMTokens:1.6},pricingSource:"models.dev",aliases:["openrouter/openai/gpt-4.1-mini"],releasedAt:"2025-04-14",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-04-14"},{id:"openrouter:openai/gpt-4o-mini",provider:"openrouter",vendorId:"openai/gpt-4o-mini",displayName:"GPT-4o-mini",family:"openai/gpt-4o-mini",status:"stable",context:{combinedMax:128e3,outputMax:16384},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.15,outputPerMTokens:.6},pricingSource:"models.dev",aliases:["openrouter/openai/gpt-4o-mini"],releasedAt:"2024-07-18",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2024-07-18"},{id:"openrouter:openai/gpt-5",provider:"openrouter",vendorId:"openai/gpt-5",displayName:"GPT-5",family:"openai/gpt-5",status:"stable",context:{combinedMax:4e5,outputMax:128e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:1.25,outputPerMTokens:10},pricingSource:"models.dev",aliases:["openrouter/openai/gpt-5"],releasedAt:"2025-08-07",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-08-07"},{id:"openrouter:openai/gpt-5-chat",provider:"openrouter",vendorId:"openai/gpt-5-chat",displayName:"GPT-5 Chat (latest)",family:"openai/gpt-5-chat",status:"stable",context:{combinedMax:4e5,outputMax:128e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:1.25,outputPerMTokens:10},pricingSource:"models.dev",aliases:["openrouter/openai/gpt-5-chat"],releasedAt:"2025-08-07",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-08-07"},{id:"openrouter:openai/gpt-5-mini",provider:"openrouter",vendorId:"openai/gpt-5-mini",displayName:"GPT-5 Mini",family:"openai/gpt-5-mini",status:"stable",context:{combinedMax:4e5,outputMax:128e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.25,outputPerMTokens:2},pricingSource:"models.dev",aliases:["openrouter/openai/gpt-5-mini"],releasedAt:"2025-08-07",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-08-07"},{id:"openrouter:openai/gpt-5-nano",provider:"openrouter",vendorId:"openai/gpt-5-nano",displayName:"GPT-5 Nano",family:"openai/gpt-5-nano",status:"stable",context:{combinedMax:4e5,outputMax:128e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.05,outputPerMTokens:.4},pricingSource:"models.dev",aliases:["openrouter/openai/gpt-5-nano"],releasedAt:"2025-08-07",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-08-07"},{id:"openrouter:openai/gpt-oss-120b",provider:"openrouter",vendorId:"openai/gpt-oss-120b",displayName:"GPT OSS 120B",family:"openai/gpt-oss-120b",status:"stable",context:{combinedMax:131072,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.15,outputPerMTokens:.6},pricingSource:"models.dev",aliases:["openrouter/openai/gpt-oss-120b"],releasedAt:"2025-08-05",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-08-05"},{id:"openrouter:openai/gpt-oss-20b",provider:"openrouter",vendorId:"openai/gpt-oss-20b",displayName:"GPT OSS 20B",family:"openai/gpt-oss-20b",status:"stable",context:{combinedMax:131072,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.05,outputPerMTokens:.2},pricingSource:"models.dev",aliases:["openrouter/openai/gpt-oss-20b"],releasedAt:"2025-08-05",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-08-05"},{id:"openrouter:openai/o4-mini",provider:"openrouter",vendorId:"openai/o4-mini",displayName:"o4 Mini",family:"openai/o4-mini",status:"stable",context:{combinedMax:2e5,outputMax:1e5},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:1.1,outputPerMTokens:4.4},pricingSource:"models.dev",aliases:["openrouter/openai/o4-mini"],releasedAt:"2025-04-16",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-04-16"},{id:"openrouter:openrouter/cypher-alpha:free",provider:"openrouter",vendorId:"openrouter/cypher-alpha:free",displayName:"Cypher Alpha (free)",family:"openrouter/cypher-alpha:free",status:"stable",context:{combinedMax:1e6,outputMax:1e6},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/openrouter/cypher-alpha:free"],releasedAt:"2025-07-01",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-07-01"},{id:"openrouter:openrouter/horizon-alpha",provider:"openrouter",vendorId:"openrouter/horizon-alpha",displayName:"Horizon Alpha",family:"openrouter/horizon-alpha",status:"stable",context:{combinedMax:256e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/openrouter/horizon-alpha"],releasedAt:"2025-07-30",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-07-30"},{id:"openrouter:openrouter/horizon-beta",provider:"openrouter",vendorId:"openrouter/horizon-beta",displayName:"Horizon Beta",family:"openrouter/horizon-beta",status:"stable",context:{combinedMax:256e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/openrouter/horizon-beta"],releasedAt:"2025-08-01",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-08-01"},{id:"openrouter:openrouter/sonoma-dusk-alpha",provider:"openrouter",vendorId:"openrouter/sonoma-dusk-alpha",displayName:"Sonoma Dusk Alpha",family:"openrouter/sonoma-dusk-alpha",status:"stable",context:{combinedMax:2e6,outputMax:2e6},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/openrouter/sonoma-dusk-alpha"],releasedAt:"2024-09-05",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2024-09-05"},{id:"openrouter:openrouter/sonoma-sky-alpha",provider:"openrouter",vendorId:"openrouter/sonoma-sky-alpha",displayName:"Sonoma Sky Alpha",family:"openrouter/sonoma-sky-alpha",status:"stable",context:{combinedMax:2e6,outputMax:2e6},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/openrouter/sonoma-sky-alpha"],releasedAt:"2024-09-05",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2024-09-05"},{id:"openrouter:qwen/qwen-2.5-coder-32b-instruct",provider:"openrouter",vendorId:"qwen/qwen-2.5-coder-32b-instruct",displayName:"Qwen2.5 Coder 32B Instruct",family:"qwen/qwen-2.5-coder-32b-instruct",status:"stable",context:{combinedMax:32768,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/qwen/qwen-2.5-coder-32b-instruct"],releasedAt:"2024-11-11",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2024-11-11"},{id:"openrouter:qwen/qwen2.5-vl-32b-instruct:free",provider:"openrouter",vendorId:"qwen/qwen2.5-vl-32b-instruct:free",displayName:"Qwen2.5 VL 32B Instruct (free)",family:"qwen/qwen2.5-vl-32b-instruct:free",status:"stable",context:{combinedMax:8192,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/qwen/qwen2.5-vl-32b-instruct:free"],releasedAt:"2025-03-24",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-03-24"},{id:"openrouter:qwen/qwen2.5-vl-72b-instruct",provider:"openrouter",vendorId:"qwen/qwen2.5-vl-72b-instruct",displayName:"Qwen2.5 VL 72B Instruct",family:"qwen/qwen2.5-vl-72b-instruct",status:"stable",context:{combinedMax:32768,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/qwen/qwen2.5-vl-72b-instruct"],releasedAt:"2025-02-01",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-02-01"},{id:"openrouter:qwen/qwen2.5-vl-72b-instruct:free",provider:"openrouter",vendorId:"qwen/qwen2.5-vl-72b-instruct:free",displayName:"Qwen2.5 VL 72B Instruct (free)",family:"qwen/qwen2.5-vl-72b-instruct:free",status:"stable",context:{combinedMax:32768,outputMax:32768},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/qwen/qwen2.5-vl-72b-instruct:free"],releasedAt:"2025-02-01",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-02-01"},{id:"openrouter:qwen/qwen3-14b:free",provider:"openrouter",vendorId:"qwen/qwen3-14b:free",displayName:"Qwen3 14B (free)",family:"qwen/qwen3-14b:free",status:"stable",context:{combinedMax:40960,outputMax:40960},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/qwen/qwen3-14b:free"],releasedAt:"2025-04-28",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-04-28"},{id:"openrouter:qwen/qwen3-235b-a22b-07-25",provider:"openrouter",vendorId:"qwen/qwen3-235b-a22b-07-25",displayName:"Qwen3 235B A22B Instruct 2507",family:"qwen/qwen3-235b-a22b-07-25",status:"stable",context:{combinedMax:262144,outputMax:131072},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.15,outputPerMTokens:.85},pricingSource:"models.dev",aliases:["openrouter/qwen/qwen3-235b-a22b-07-25"],releasedAt:"2025-04-28",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-07-21"},{id:"openrouter:qwen/qwen3-235b-a22b-07-25:free",provider:"openrouter",vendorId:"qwen/qwen3-235b-a22b-07-25:free",displayName:"Qwen3 235B A22B Instruct 2507 (free)",family:"qwen/qwen3-235b-a22b-07-25:free",status:"stable",context:{combinedMax:262144,outputMax:131072},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/qwen/qwen3-235b-a22b-07-25:free"],releasedAt:"2025-04-28",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-07-21"},{id:"openrouter:qwen/qwen3-235b-a22b-thinking-2507",provider:"openrouter",vendorId:"qwen/qwen3-235b-a22b-thinking-2507",displayName:"Qwen3 235B A22B Thinking 2507",family:"qwen/qwen3-235b-a22b-thinking-2507",status:"stable",context:{combinedMax:262144,outputMax:81920},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.078,outputPerMTokens:.312},pricingSource:"models.dev",aliases:["openrouter/qwen/qwen3-235b-a22b-thinking-2507"],releasedAt:"2025-07-25",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-07-25"},{id:"openrouter:qwen/qwen3-235b-a22b:free",provider:"openrouter",vendorId:"qwen/qwen3-235b-a22b:free",displayName:"Qwen3 235B A22B (free)",family:"qwen/qwen3-235b-a22b:free",status:"stable",context:{combinedMax:131072,outputMax:131072},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/qwen/qwen3-235b-a22b:free"],releasedAt:"2025-04-28",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-04-28"},{id:"openrouter:qwen/qwen3-30b-a3b-instruct-2507",provider:"openrouter",vendorId:"qwen/qwen3-30b-a3b-instruct-2507",displayName:"Qwen3 30B A3B Instruct 2507",family:"qwen/qwen3-30b-a3b-instruct-2507",status:"stable",context:{combinedMax:131072,outputMax:33e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.2,outputPerMTokens:.8},pricingSource:"models.dev",aliases:["openrouter/qwen/qwen3-30b-a3b-instruct-2507"],releasedAt:"2025-07-29",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-07-29"},{id:"openrouter:qwen/qwen3-30b-a3b:free",provider:"openrouter",vendorId:"qwen/qwen3-30b-a3b:free",displayName:"Qwen3 30B A3B (free)",family:"qwen/qwen3-30b-a3b:free",status:"stable",context:{combinedMax:40960,outputMax:40960},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/qwen/qwen3-30b-a3b:free"],releasedAt:"2025-04-28",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-04-28"},{id:"openrouter:qwen/qwen3-32b:free",provider:"openrouter",vendorId:"qwen/qwen3-32b:free",displayName:"Qwen3 32B (free)",family:"qwen/qwen3-32b:free",status:"stable",context:{combinedMax:40960,outputMax:40960},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/qwen/qwen3-32b:free"],releasedAt:"2025-04-28",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-04-28"},{id:"openrouter:qwen/qwen3-8b:free",provider:"openrouter",vendorId:"qwen/qwen3-8b:free",displayName:"Qwen3 8B (free)",family:"qwen/qwen3-8b:free",status:"stable",context:{combinedMax:40960,outputMax:40960},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/qwen/qwen3-8b:free"],releasedAt:"2025-04-28",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-04-28"},{id:"openrouter:qwen/qwen3-coder",provider:"openrouter",vendorId:"qwen/qwen3-coder",displayName:"Qwen3 Coder",family:"qwen/qwen3-coder",status:"stable",context:{combinedMax:262144,outputMax:66536},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.3,outputPerMTokens:1.2},pricingSource:"models.dev",aliases:["openrouter/qwen/qwen3-coder"],releasedAt:"2025-07-23",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-07-23"},{id:"openrouter:qwen/qwen3-coder:free",provider:"openrouter",vendorId:"qwen/qwen3-coder:free",displayName:"Qwen3 Coder 480B A35B Instruct (free)",family:"qwen/qwen3-coder:free",status:"stable",context:{combinedMax:262144,outputMax:66536},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/qwen/qwen3-coder:free"],releasedAt:"2025-07-23",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-07-23"},{id:"openrouter:qwen/qwen3-max",provider:"openrouter",vendorId:"qwen/qwen3-max",displayName:"Qwen3 Max",family:"qwen/qwen3-max",status:"stable",context:{combinedMax:262144,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1.2,outputPerMTokens:6},pricingSource:"models.dev",aliases:["openrouter/qwen/qwen3-max"],releasedAt:"2025-09-05",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-09-05"},{id:"openrouter:qwen/qwq-32b:free",provider:"openrouter",vendorId:"qwen/qwq-32b:free",displayName:"QwQ 32B (free)",family:"qwen/qwq-32b:free",status:"stable",context:{combinedMax:32768,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/qwen/qwq-32b:free"],releasedAt:"2025-03-05",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-03-05"},{id:"openrouter:rekaai/reka-flash-3",provider:"openrouter",vendorId:"rekaai/reka-flash-3",displayName:"Reka Flash 3",family:"rekaai/reka-flash-3",status:"stable",context:{combinedMax:32768,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/rekaai/reka-flash-3"],releasedAt:"2025-03-12",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-03-12"},{id:"openrouter:sarvamai/sarvam-m:free",provider:"openrouter",vendorId:"sarvamai/sarvam-m:free",displayName:"Sarvam-M (free)",family:"sarvamai/sarvam-m:free",status:"stable",context:{combinedMax:32768,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/sarvamai/sarvam-m:free"],releasedAt:"2025-05-25",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-05-25"},{id:"openrouter:thudm/glm-z1-32b:free",provider:"openrouter",vendorId:"thudm/glm-z1-32b:free",displayName:"GLM Z1 32B (free)",family:"thudm/glm-z1-32b:free",status:"stable",context:{combinedMax:32768,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/thudm/glm-z1-32b:free"],releasedAt:"2025-04-17",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-04-17"},{id:"openrouter:tngtech/deepseek-r1t2-chimera:free",provider:"openrouter",vendorId:"tngtech/deepseek-r1t2-chimera:free",displayName:"DeepSeek R1T2 Chimera (free)",family:"tngtech/deepseek-r1t2-chimera:free",status:"stable",context:{combinedMax:163840,outputMax:163840},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/tngtech/deepseek-r1t2-chimera:free"],releasedAt:"2025-07-08",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-07-08"},{id:"openrouter:x-ai/grok-3",provider:"openrouter",vendorId:"x-ai/grok-3",displayName:"Grok 3",family:"x-ai/grok-3",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["openrouter/x-ai/grok-3"],releasedAt:"2025-02-17",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-02-17"},{id:"openrouter:x-ai/grok-3-beta",provider:"openrouter",vendorId:"x-ai/grok-3-beta",displayName:"Grok 3 Beta",family:"x-ai/grok-3-beta",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["openrouter/x-ai/grok-3-beta"],releasedAt:"2025-02-17",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-02-17"},{id:"openrouter:x-ai/grok-3-mini",provider:"openrouter",vendorId:"x-ai/grok-3-mini",displayName:"Grok 3 Mini",family:"x-ai/grok-3-mini",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.3,outputPerMTokens:.5},pricingSource:"models.dev",aliases:["openrouter/x-ai/grok-3-mini"],releasedAt:"2025-02-17",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-02-17"},{id:"openrouter:x-ai/grok-3-mini-beta",provider:"openrouter",vendorId:"x-ai/grok-3-mini-beta",displayName:"Grok 3 Mini Beta",family:"x-ai/grok-3-mini-beta",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.3,outputPerMTokens:.5},pricingSource:"models.dev",aliases:["openrouter/x-ai/grok-3-mini-beta"],releasedAt:"2025-02-17",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-02-17"},{id:"openrouter:x-ai/grok-4",provider:"openrouter",vendorId:"x-ai/grok-4",displayName:"Grok 4",family:"x-ai/grok-4",status:"stable",context:{combinedMax:256e3,outputMax:64e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["openrouter/x-ai/grok-4"],releasedAt:"2025-07-09",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-07-09"},{id:"openrouter:x-ai/grok-code-fast-1",provider:"openrouter",vendorId:"x-ai/grok-code-fast-1",displayName:"Grok Code Fast 1",family:"x-ai/grok-code-fast-1",status:"stable",context:{combinedMax:256e3,outputMax:1e4},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.2,outputPerMTokens:1.5},pricingSource:"models.dev",aliases:["openrouter/x-ai/grok-code-fast-1"],releasedAt:"2025-08-26",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-08-26"},{id:"openrouter:z-ai/glm-4.5",provider:"openrouter",vendorId:"z-ai/glm-4.5",displayName:"GLM 4.5",family:"z-ai/glm-4.5",status:"stable",context:{combinedMax:128e3,outputMax:96e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.6,outputPerMTokens:2.2},pricingSource:"models.dev",aliases:["openrouter/z-ai/glm-4.5"],releasedAt:"2025-07-28",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-07-28"},{id:"openrouter:z-ai/glm-4.5-air",provider:"openrouter",vendorId:"z-ai/glm-4.5-air",displayName:"GLM 4.5 Air",family:"z-ai/glm-4.5-air",status:"stable",context:{combinedMax:128e3,outputMax:96e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.2,outputPerMTokens:1.1},pricingSource:"models.dev",aliases:["openrouter/z-ai/glm-4.5-air"],releasedAt:"2025-07-28",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-07-28"},{id:"openrouter:z-ai/glm-4.5-air:free",provider:"openrouter",vendorId:"z-ai/glm-4.5-air:free",displayName:"GLM 4.5 Air (free)",family:"z-ai/glm-4.5-air:free",status:"stable",context:{combinedMax:128e3,outputMax:96e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/z-ai/glm-4.5-air:free"],releasedAt:"2025-07-28",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-07-28"},{id:"openrouter:z-ai/glm-4.5v",provider:"openrouter",vendorId:"z-ai/glm-4.5v",displayName:"GLM 4.5V",family:"z-ai/glm-4.5v",status:"stable",context:{combinedMax:64e3,outputMax:16384},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.6,outputPerMTokens:1.8},pricingSource:"models.dev",aliases:["openrouter/z-ai/glm-4.5v"],releasedAt:"2025-08-11",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-08-11"},{id:"requesty:anthropic/claude-3-7-sonnet",provider:"requesty",vendorId:"anthropic/claude-3-7-sonnet",displayName:"Claude Sonnet 3.7",family:"anthropic/claude-3-7-sonnet",status:"stable",context:{combinedMax:2e5,outputMax:64e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["requesty/anthropic/claude-3-7-sonnet"],releasedAt:"2025-02-19",source:"https://requesty.ai/solution/llm-routing/models",contextSource:"https://requesty.ai/solution/llm-routing/models",verifiedAt:"2025-02-19"},{id:"requesty:anthropic/claude-4-sonnet-20250522",provider:"requesty",vendorId:"anthropic/claude-4-sonnet-20250522",displayName:"Claude Sonnet 4",family:"anthropic/claude-4-sonnet-20250522",status:"stable",context:{combinedMax:2e5,outputMax:64e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["requesty/anthropic/claude-4-sonnet-20250522"],releasedAt:"2025-05-22",source:"https://requesty.ai/solution/llm-routing/models",contextSource:"https://requesty.ai/solution/llm-routing/models",verifiedAt:"2025-05-22"},{id:"requesty:anthropic/claude-opus-4",provider:"requesty",vendorId:"anthropic/claude-opus-4",displayName:"Claude Opus 4",family:"anthropic/claude-opus-4",status:"stable",context:{combinedMax:2e5,outputMax:32e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:15,outputPerMTokens:75},pricingSource:"models.dev",aliases:["requesty/anthropic/claude-opus-4"],releasedAt:"2025-05-22",source:"https://requesty.ai/solution/llm-routing/models",contextSource:"https://requesty.ai/solution/llm-routing/models",verifiedAt:"2025-05-22"},{id:"requesty:anthropic/claude-opus-4-1-20250805",provider:"requesty",vendorId:"anthropic/claude-opus-4-1-20250805",displayName:"Claude Opus 4.1",family:"anthropic/claude-opus-4-1-20250805",status:"stable",context:{combinedMax:2e5,outputMax:32e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:15,outputPerMTokens:75},pricingSource:"models.dev",aliases:["requesty/anthropic/claude-opus-4-1-20250805"],releasedAt:"2025-08-05",source:"https://requesty.ai/solution/llm-routing/models",contextSource:"https://requesty.ai/solution/llm-routing/models",verifiedAt:"2025-08-05"},{id:"requesty:google/gemini-2.5-flash",provider:"requesty",vendorId:"google/gemini-2.5-flash",displayName:"Gemini 2.5 Flash",family:"google/gemini-2.5-flash",status:"stable",context:{combinedMax:1048576,outputMax:65536},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.3,outputPerMTokens:2.5},pricingSource:"models.dev",aliases:["requesty/google/gemini-2.5-flash"],releasedAt:"2025-06-17",source:"https://requesty.ai/solution/llm-routing/models",contextSource:"https://requesty.ai/solution/llm-routing/models",verifiedAt:"2025-06-17"},{id:"requesty:google/gemini-2.5-pro",provider:"requesty",vendorId:"google/gemini-2.5-pro",displayName:"Gemini 2.5 Pro",family:"google/gemini-2.5-pro",status:"stable",context:{combinedMax:1048576,outputMax:65536},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:1.25,outputPerMTokens:10},pricingSource:"models.dev",aliases:["requesty/google/gemini-2.5-pro"],releasedAt:"2025-06-17",source:"https://requesty.ai/solution/llm-routing/models",contextSource:"https://requesty.ai/solution/llm-routing/models",verifiedAt:"2025-06-17"},{id:"requesty:openai/gpt-4.1",provider:"requesty",vendorId:"openai/gpt-4.1",displayName:"GPT-4.1",family:"openai/gpt-4.1",status:"stable",context:{combinedMax:1047576,outputMax:32768},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:2,outputPerMTokens:8},pricingSource:"models.dev",aliases:["requesty/openai/gpt-4.1"],releasedAt:"2025-04-14",source:"https://requesty.ai/solution/llm-routing/models",contextSource:"https://requesty.ai/solution/llm-routing/models",verifiedAt:"2025-04-14"},{id:"requesty:openai/gpt-4.1-mini",provider:"requesty",vendorId:"openai/gpt-4.1-mini",displayName:"GPT-4.1 Mini",family:"openai/gpt-4.1-mini",status:"stable",context:{combinedMax:1047576,outputMax:32768},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.4,outputPerMTokens:1.6},pricingSource:"models.dev",aliases:["requesty/openai/gpt-4.1-mini"],releasedAt:"2025-04-14",source:"https://requesty.ai/solution/llm-routing/models",contextSource:"https://requesty.ai/solution/llm-routing/models",verifiedAt:"2025-04-14"},{id:"requesty:openai/gpt-4o-mini",provider:"requesty",vendorId:"openai/gpt-4o-mini",displayName:"GPT-4o Mini",family:"openai/gpt-4o-mini",status:"stable",context:{combinedMax:128e3,outputMax:16384},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.15,outputPerMTokens:.6},pricingSource:"models.dev",aliases:["requesty/openai/gpt-4o-mini"],releasedAt:"2024-07-18",source:"https://requesty.ai/solution/llm-routing/models",contextSource:"https://requesty.ai/solution/llm-routing/models",verifiedAt:"2024-07-18"},{id:"requesty:openai/gpt-5",provider:"requesty",vendorId:"openai/gpt-5",displayName:"GPT-5",family:"openai/gpt-5",status:"stable",context:{combinedMax:4e5,outputMax:128e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:1.25,outputPerMTokens:10},pricingSource:"models.dev",aliases:["requesty/openai/gpt-5"],releasedAt:"2025-08-07",source:"https://requesty.ai/solution/llm-routing/models",contextSource:"https://requesty.ai/solution/llm-routing/models",verifiedAt:"2025-08-07"},{id:"requesty:openai/gpt-5-mini",provider:"requesty",vendorId:"openai/gpt-5-mini",displayName:"GPT-5 Mini",family:"openai/gpt-5-mini",status:"stable",context:{combinedMax:128e3,outputMax:32e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.25,outputPerMTokens:2},pricingSource:"models.dev",aliases:["requesty/openai/gpt-5-mini"],releasedAt:"2025-08-07",source:"https://requesty.ai/solution/llm-routing/models",contextSource:"https://requesty.ai/solution/llm-routing/models",verifiedAt:"2025-08-07"},{id:"requesty:openai/gpt-5-nano",provider:"requesty",vendorId:"openai/gpt-5-nano",displayName:"GPT-5 Nano",family:"openai/gpt-5-nano",status:"stable",context:{combinedMax:16e3,outputMax:4e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.05,outputPerMTokens:.4},pricingSource:"models.dev",aliases:["requesty/openai/gpt-5-nano"],releasedAt:"2025-08-07",source:"https://requesty.ai/solution/llm-routing/models",contextSource:"https://requesty.ai/solution/llm-routing/models",verifiedAt:"2025-08-07"},{id:"requesty:openai/o4-mini",provider:"requesty",vendorId:"openai/o4-mini",displayName:"o4 Mini",family:"openai/o4-mini",status:"stable",context:{combinedMax:2e5,outputMax:1e5},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:1.1,outputPerMTokens:4.4},pricingSource:"models.dev",aliases:["requesty/openai/o4-mini"],releasedAt:"2025-04-16",source:"https://requesty.ai/solution/llm-routing/models",contextSource:"https://requesty.ai/solution/llm-routing/models",verifiedAt:"2025-04-16"},{id:"submodel:deepseek-ai/DeepSeek-R1-0528",provider:"submodel",vendorId:"deepseek-ai/DeepSeek-R1-0528",displayName:"DeepSeek R1 0528",family:"deepseek-ai/DeepSeek-R1-0528",status:"stable",context:{combinedMax:75e3,outputMax:163840},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.5,outputPerMTokens:2.15},pricingSource:"models.dev",aliases:["submodel/deepseek-ai/DeepSeek-R1-0528"],releasedAt:"2025-08-23",source:"https://submodel.gitbook.io",contextSource:"https://submodel.gitbook.io",verifiedAt:"2025-08-23"},{id:"submodel:deepseek-ai/DeepSeek-V3-0324",provider:"submodel",vendorId:"deepseek-ai/DeepSeek-V3-0324",displayName:"DeepSeek V3 0324",family:"deepseek-ai/DeepSeek-V3-0324",status:"stable",context:{combinedMax:75e3,outputMax:163840},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.2,outputPerMTokens:.8},pricingSource:"models.dev",aliases:["submodel/deepseek-ai/DeepSeek-V3-0324"],releasedAt:"2025-08-23",source:"https://submodel.gitbook.io",contextSource:"https://submodel.gitbook.io",verifiedAt:"2025-08-23"},{id:"submodel:deepseek-ai/DeepSeek-V3.1",provider:"submodel",vendorId:"deepseek-ai/DeepSeek-V3.1",displayName:"DeepSeek V3.1",family:"deepseek-ai/DeepSeek-V3.1",status:"stable",context:{combinedMax:75e3,outputMax:163840},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.2,outputPerMTokens:.8},pricingSource:"models.dev",aliases:["submodel/deepseek-ai/DeepSeek-V3.1"],releasedAt:"2025-08-23",source:"https://submodel.gitbook.io",contextSource:"https://submodel.gitbook.io",verifiedAt:"2025-08-23"},{id:"submodel:openai/gpt-oss-120b",provider:"submodel",vendorId:"openai/gpt-oss-120b",displayName:"GPT OSS 120B",family:"openai/gpt-oss-120b",status:"stable",context:{combinedMax:131072,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.1,outputPerMTokens:.5},pricingSource:"models.dev",aliases:["submodel/openai/gpt-oss-120b"],releasedAt:"2025-08-23",source:"https://submodel.gitbook.io",contextSource:"https://submodel.gitbook.io",verifiedAt:"2025-08-23"},{id:"submodel:Qwen/Qwen3-235B-A22B-Instruct-2507",provider:"submodel",vendorId:"Qwen/Qwen3-235B-A22B-Instruct-2507",displayName:"Qwen3 235B A22B Instruct 2507",family:"Qwen/Qwen3-235B-A22B-Instruct-2507",status:"stable",context:{combinedMax:262144,outputMax:131072},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.2,outputPerMTokens:.3},pricingSource:"models.dev",aliases:["submodel/Qwen/Qwen3-235B-A22B-Instruct-2507"],releasedAt:"2025-08-23",source:"https://submodel.gitbook.io",contextSource:"https://submodel.gitbook.io",verifiedAt:"2025-08-23"},{id:"submodel:Qwen/Qwen3-235B-A22B-Thinking-2507",provider:"submodel",vendorId:"Qwen/Qwen3-235B-A22B-Thinking-2507",displayName:"Qwen3 235B A22B Thinking 2507",family:"Qwen/Qwen3-235B-A22B-Thinking-2507",status:"stable",context:{combinedMax:262144,outputMax:131072},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.2,outputPerMTokens:.6},pricingSource:"models.dev",aliases:["submodel/Qwen/Qwen3-235B-A22B-Thinking-2507"],releasedAt:"2025-08-23",source:"https://submodel.gitbook.io",contextSource:"https://submodel.gitbook.io",verifiedAt:"2025-08-23"},{id:"submodel:Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8",provider:"submodel",vendorId:"Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8",displayName:"Qwen3 Coder 480B A35B Instruct",family:"Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8",status:"stable",context:{combinedMax:262144,outputMax:262144},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.2,outputPerMTokens:.8},pricingSource:"models.dev",aliases:["submodel/Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8"],releasedAt:"2025-08-23",source:"https://submodel.gitbook.io",contextSource:"https://submodel.gitbook.io",verifiedAt:"2025-08-23"},{id:"submodel:zai-org/GLM-4.5-Air",provider:"submodel",vendorId:"zai-org/GLM-4.5-Air",displayName:"GLM 4.5 Air",family:"zai-org/GLM-4.5-Air",status:"stable",context:{combinedMax:131072,outputMax:131072},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.1,outputPerMTokens:.5},pricingSource:"models.dev",aliases:["submodel/zai-org/GLM-4.5-Air"],releasedAt:"2025-07-28",source:"https://submodel.gitbook.io",contextSource:"https://submodel.gitbook.io",verifiedAt:"2025-07-28"},{id:"submodel:zai-org/GLM-4.5-FP8",provider:"submodel",vendorId:"zai-org/GLM-4.5-FP8",displayName:"GLM 4.5 FP8",family:"zai-org/GLM-4.5-FP8",status:"stable",context:{combinedMax:131072,outputMax:131072},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.2,outputPerMTokens:.8},pricingSource:"models.dev",aliases:["submodel/zai-org/GLM-4.5-FP8"],releasedAt:"2025-07-28",source:"https://submodel.gitbook.io",contextSource:"https://submodel.gitbook.io",verifiedAt:"2025-07-28"},{id:"synthetic:hf:deepseek-ai/DeepSeek-R1",provider:"synthetic",vendorId:"hf:deepseek-ai/DeepSeek-R1",displayName:"DeepSeek R1",family:"hf:deepseek-ai/DeepSeek-R1",status:"stable",context:{combinedMax:128e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.55,outputPerMTokens:2.19},pricingSource:"models.dev",aliases:["synthetic/hf:deepseek-ai/DeepSeek-R1"],releasedAt:"2025-01-20",source:"https://synthetic.new/pricing",contextSource:"https://synthetic.new/pricing",verifiedAt:"2025-01-20"},{id:"synthetic:hf:deepseek-ai/DeepSeek-R1-0528",provider:"synthetic",vendorId:"hf:deepseek-ai/DeepSeek-R1-0528",displayName:"DeepSeek R1 (0528)",family:"hf:deepseek-ai/DeepSeek-R1-0528",status:"stable",context:{combinedMax:128e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:3,outputPerMTokens:8},pricingSource:"models.dev",aliases:["synthetic/hf:deepseek-ai/DeepSeek-R1-0528"],releasedAt:"2025-08-01",source:"https://synthetic.new/pricing",contextSource:"https://synthetic.new/pricing",verifiedAt:"2025-08-01"},{id:"synthetic:hf:deepseek-ai/DeepSeek-V3",provider:"synthetic",vendorId:"hf:deepseek-ai/DeepSeek-V3",displayName:"DeepSeek V3",family:"hf:deepseek-ai/DeepSeek-V3",status:"stable",context:{combinedMax:128e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1.25,outputPerMTokens:1.25},pricingSource:"models.dev",aliases:["synthetic/hf:deepseek-ai/DeepSeek-V3"],releasedAt:"2025-01-20",source:"https://synthetic.new/pricing",contextSource:"https://synthetic.new/pricing",verifiedAt:"2025-05-29"},{id:"synthetic:hf:deepseek-ai/DeepSeek-V3-0324",provider:"synthetic",vendorId:"hf:deepseek-ai/DeepSeek-V3-0324",displayName:"DeepSeek V3 (0324)",family:"hf:deepseek-ai/DeepSeek-V3-0324",status:"stable",context:{combinedMax:128e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1.2,outputPerMTokens:1.2},pricingSource:"models.dev",aliases:["synthetic/hf:deepseek-ai/DeepSeek-V3-0324"],releasedAt:"2025-08-01",source:"https://synthetic.new/pricing",contextSource:"https://synthetic.new/pricing",verifiedAt:"2025-08-01"},{id:"synthetic:hf:deepseek-ai/DeepSeek-V3.1",provider:"synthetic",vendorId:"hf:deepseek-ai/DeepSeek-V3.1",displayName:"DeepSeek V3.1",family:"hf:deepseek-ai/DeepSeek-V3.1",status:"stable",context:{combinedMax:128e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.56,outputPerMTokens:1.68},pricingSource:"models.dev",aliases:["synthetic/hf:deepseek-ai/DeepSeek-V3.1"],releasedAt:"2025-08-21",source:"https://synthetic.new/pricing",contextSource:"https://synthetic.new/pricing",verifiedAt:"2025-08-21"},{id:"synthetic:hf:meta-llama/Llama-3.1-405B-Instruct",provider:"synthetic",vendorId:"hf:meta-llama/Llama-3.1-405B-Instruct",displayName:"Llama-3.1-405B-Instruct",family:"hf:meta-llama/Llama-3.1-405B-Instruct",status:"stable",context:{combinedMax:128e3,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:3,outputPerMTokens:3},pricingSource:"models.dev",aliases:["synthetic/hf:meta-llama/Llama-3.1-405B-Instruct"],releasedAt:"2024-07-23",source:"https://synthetic.new/pricing",contextSource:"https://synthetic.new/pricing",verifiedAt:"2024-07-23"},{id:"synthetic:hf:meta-llama/Llama-3.1-70B-Instruct",provider:"synthetic",vendorId:"hf:meta-llama/Llama-3.1-70B-Instruct",displayName:"Llama-3.1-70B-Instruct",family:"hf:meta-llama/Llama-3.1-70B-Instruct",status:"stable",context:{combinedMax:128e3,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.9,outputPerMTokens:.9},pricingSource:"models.dev",aliases:["synthetic/hf:meta-llama/Llama-3.1-70B-Instruct"],releasedAt:"2024-07-23",source:"https://synthetic.new/pricing",contextSource:"https://synthetic.new/pricing",verifiedAt:"2024-07-23"},{id:"synthetic:hf:meta-llama/Llama-3.1-8B-Instruct",provider:"synthetic",vendorId:"hf:meta-llama/Llama-3.1-8B-Instruct",displayName:"Llama-3.1-8B-Instruct",family:"hf:meta-llama/Llama-3.1-8B-Instruct",status:"stable",context:{combinedMax:128e3,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.2,outputPerMTokens:.2},pricingSource:"models.dev",aliases:["synthetic/hf:meta-llama/Llama-3.1-8B-Instruct"],releasedAt:"2024-07-23",source:"https://synthetic.new/pricing",contextSource:"https://synthetic.new/pricing",verifiedAt:"2024-07-23"},{id:"synthetic:hf:meta-llama/Llama-3.3-70B-Instruct",provider:"synthetic",vendorId:"hf:meta-llama/Llama-3.3-70B-Instruct",displayName:"Llama-3.3-70B-Instruct",family:"hf:meta-llama/Llama-3.3-70B-Instruct",status:"stable",context:{combinedMax:128e3,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.9,outputPerMTokens:.9},pricingSource:"models.dev",aliases:["synthetic/hf:meta-llama/Llama-3.3-70B-Instruct"],releasedAt:"2024-12-06",source:"https://synthetic.new/pricing",contextSource:"https://synthetic.new/pricing",verifiedAt:"2024-12-06"},{id:"synthetic:hf:meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8",provider:"synthetic",vendorId:"hf:meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8",displayName:"Llama-4-Maverick-17B-128E-Instruct-FP8",family:"hf:meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8",status:"stable",context:{combinedMax:524e3,outputMax:4096},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.22,outputPerMTokens:.88},pricingSource:"models.dev",aliases:["synthetic/hf:meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8"],releasedAt:"2025-04-05",source:"https://synthetic.new/pricing",contextSource:"https://synthetic.new/pricing",verifiedAt:"2025-04-05"},{id:"synthetic:hf:meta-llama/Llama-4-Scout-17B-16E-Instruct",provider:"synthetic",vendorId:"hf:meta-llama/Llama-4-Scout-17B-16E-Instruct",displayName:"Llama-4-Scout-17B-16E-Instruct",family:"hf:meta-llama/Llama-4-Scout-17B-16E-Instruct",status:"stable",context:{combinedMax:328e3,outputMax:4096},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.15,outputPerMTokens:.6},pricingSource:"models.dev",aliases:["synthetic/hf:meta-llama/Llama-4-Scout-17B-16E-Instruct"],releasedAt:"2025-04-05",source:"https://synthetic.new/pricing",contextSource:"https://synthetic.new/pricing",verifiedAt:"2025-04-05"},{id:"synthetic:hf:moonshotai/Kimi-K2-Instruct",provider:"synthetic",vendorId:"hf:moonshotai/Kimi-K2-Instruct",displayName:"Kimi K2",family:"hf:moonshotai/Kimi-K2-Instruct",status:"stable",context:{combinedMax:128e3,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.6,outputPerMTokens:2.5},pricingSource:"models.dev",aliases:["synthetic/hf:moonshotai/Kimi-K2-Instruct"],releasedAt:"2025-07-11",source:"https://synthetic.new/pricing",contextSource:"https://synthetic.new/pricing",verifiedAt:"2025-07-11"},{id:"synthetic:hf:moonshotai/Kimi-K2-Instruct-0905",provider:"synthetic",vendorId:"hf:moonshotai/Kimi-K2-Instruct-0905",displayName:"Kimi K2 0905",family:"hf:moonshotai/Kimi-K2-Instruct-0905",status:"stable",context:{combinedMax:128e3,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1.2,outputPerMTokens:1.2},pricingSource:"models.dev",aliases:["synthetic/hf:moonshotai/Kimi-K2-Instruct-0905"],releasedAt:"2025-09-05",source:"https://synthetic.new/pricing",contextSource:"https://synthetic.new/pricing",verifiedAt:"2025-09-05"},{id:"synthetic:hf:openai/gpt-oss-120b",provider:"synthetic",vendorId:"hf:openai/gpt-oss-120b",displayName:"GPT OSS 120B",family:"hf:openai/gpt-oss-120b",status:"stable",context:{combinedMax:128e3,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.1,outputPerMTokens:.1},pricingSource:"models.dev",aliases:["synthetic/hf:openai/gpt-oss-120b"],releasedAt:"2025-08-05",source:"https://synthetic.new/pricing",contextSource:"https://synthetic.new/pricing",verifiedAt:"2025-08-05"},{id:"synthetic:hf:Qwen/Qwen2.5-Coder-32B-Instruct",provider:"synthetic",vendorId:"hf:Qwen/Qwen2.5-Coder-32B-Instruct",displayName:"Qwen2.5-Coder-32B-Instruct",family:"hf:Qwen/Qwen2.5-Coder-32B-Instruct",status:"stable",context:{combinedMax:32768,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.8,outputPerMTokens:.8},pricingSource:"models.dev",aliases:["synthetic/hf:Qwen/Qwen2.5-Coder-32B-Instruct"],releasedAt:"2024-11-11",source:"https://synthetic.new/pricing",contextSource:"https://synthetic.new/pricing",verifiedAt:"2024-11-11"},{id:"synthetic:hf:Qwen/Qwen3-235B-A22B-Instruct-2507",provider:"synthetic",vendorId:"hf:Qwen/Qwen3-235B-A22B-Instruct-2507",displayName:"Qwen 3 235B Instruct",family:"hf:Qwen/Qwen3-235B-A22B-Instruct-2507",status:"stable",context:{combinedMax:256e3,outputMax:32e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.2,outputPerMTokens:.6},pricingSource:"models.dev",aliases:["synthetic/hf:Qwen/Qwen3-235B-A22B-Instruct-2507"],releasedAt:"2025-04-28",source:"https://synthetic.new/pricing",contextSource:"https://synthetic.new/pricing",verifiedAt:"2025-07-21"},{id:"synthetic:hf:Qwen/Qwen3-235B-A22B-Thinking-2507",provider:"synthetic",vendorId:"hf:Qwen/Qwen3-235B-A22B-Thinking-2507",displayName:"Qwen3 235B A22B Thinking 2507",family:"hf:Qwen/Qwen3-235B-A22B-Thinking-2507",status:"stable",context:{combinedMax:256e3,outputMax:32e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.65,outputPerMTokens:3},pricingSource:"models.dev",aliases:["synthetic/hf:Qwen/Qwen3-235B-A22B-Thinking-2507"],releasedAt:"2025-07-25",source:"https://synthetic.new/pricing",contextSource:"https://synthetic.new/pricing",verifiedAt:"2025-07-25"},{id:"synthetic:hf:Qwen/Qwen3-Coder-480B-A35B-Instruct",provider:"synthetic",vendorId:"hf:Qwen/Qwen3-Coder-480B-A35B-Instruct",displayName:"Qwen 3 Coder 480B",family:"hf:Qwen/Qwen3-Coder-480B-A35B-Instruct",status:"stable",context:{combinedMax:256e3,outputMax:32e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:2,outputPerMTokens:2},pricingSource:"models.dev",aliases:["synthetic/hf:Qwen/Qwen3-Coder-480B-A35B-Instruct"],releasedAt:"2025-07-23",source:"https://synthetic.new/pricing",contextSource:"https://synthetic.new/pricing",verifiedAt:"2025-07-23"},{id:"synthetic:hf:zai-org/GLM-4.5",provider:"synthetic",vendorId:"hf:zai-org/GLM-4.5",displayName:"GLM 4.5",family:"hf:zai-org/GLM-4.5",status:"stable",context:{combinedMax:128e3,outputMax:96e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.55,outputPerMTokens:2.19},pricingSource:"models.dev",aliases:["synthetic/hf:zai-org/GLM-4.5"],releasedAt:"2025-07-28",source:"https://synthetic.new/pricing",contextSource:"https://synthetic.new/pricing",verifiedAt:"2025-07-28"},{id:"togetherai:deepseek-ai/DeepSeek-R1",provider:"togetherai",vendorId:"deepseek-ai/DeepSeek-R1",displayName:"DeepSeek R1",family:"deepseek-ai/DeepSeek-R1",status:"stable",context:{combinedMax:163839,outputMax:12288},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:3,outputPerMTokens:7},pricingSource:"models.dev",aliases:["togetherai/deepseek-ai/DeepSeek-R1"],releasedAt:"2024-12-26",source:"https://docs.together.ai/docs/serverless-models",contextSource:"https://docs.together.ai/docs/serverless-models",verifiedAt:"2025-03-24"},{id:"togetherai:deepseek-ai/DeepSeek-V3",provider:"togetherai",vendorId:"deepseek-ai/DeepSeek-V3",displayName:"DeepSeek V3",family:"deepseek-ai/DeepSeek-V3",status:"stable",context:{combinedMax:131072,outputMax:12288},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1.25,outputPerMTokens:1.25},pricingSource:"models.dev",aliases:["togetherai/deepseek-ai/DeepSeek-V3"],releasedAt:"2025-01-20",source:"https://docs.together.ai/docs/serverless-models",contextSource:"https://docs.together.ai/docs/serverless-models",verifiedAt:"2025-05-29"},{id:"togetherai:meta-llama/Llama-3.3-70B-Instruct-Turbo",provider:"togetherai",vendorId:"meta-llama/Llama-3.3-70B-Instruct-Turbo",displayName:"Llama 3.3 70B",family:"meta-llama/Llama-3.3-70B-Instruct-Turbo",status:"stable",context:{combinedMax:131072,outputMax:66536},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.88,outputPerMTokens:.88},pricingSource:"models.dev",aliases:["togetherai/meta-llama/Llama-3.3-70B-Instruct-Turbo"],releasedAt:"2024-12-06",source:"https://docs.together.ai/docs/serverless-models",contextSource:"https://docs.together.ai/docs/serverless-models",verifiedAt:"2024-12-06"},{id:"togetherai:moonshotai/Kimi-K2-Instruct",provider:"togetherai",vendorId:"moonshotai/Kimi-K2-Instruct",displayName:"Kimi K2 Instruct",family:"moonshotai/Kimi-K2-Instruct",status:"stable",context:{combinedMax:131072,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1,outputPerMTokens:3},pricingSource:"models.dev",aliases:["togetherai/moonshotai/Kimi-K2-Instruct"],releasedAt:"2025-07-14",source:"https://docs.together.ai/docs/serverless-models",contextSource:"https://docs.together.ai/docs/serverless-models",verifiedAt:"2025-07-14"},{id:"togetherai:openai/gpt-oss-120b",provider:"togetherai",vendorId:"openai/gpt-oss-120b",displayName:"GPT OSS 120B",family:"openai/gpt-oss-120b",status:"stable",context:{combinedMax:131072,outputMax:131072},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.15,outputPerMTokens:.6},pricingSource:"models.dev",aliases:["togetherai/openai/gpt-oss-120b"],releasedAt:"2025-08-05",source:"https://docs.together.ai/docs/serverless-models",contextSource:"https://docs.together.ai/docs/serverless-models",verifiedAt:"2025-08-05"},{id:"togetherai:Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8",provider:"togetherai",vendorId:"Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8",displayName:"Qwen3 Coder 480B A35B Instruct",family:"Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8",status:"stable",context:{combinedMax:262144,outputMax:66536},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:2,outputPerMTokens:2},pricingSource:"models.dev",aliases:["togetherai/Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8"],releasedAt:"2025-07-23",source:"https://docs.together.ai/docs/serverless-models",contextSource:"https://docs.together.ai/docs/serverless-models",verifiedAt:"2025-07-23"},{id:"upstage:solar-mini",provider:"upstage",vendorId:"solar-mini",displayName:"solar-mini",family:"solar-mini",status:"stable",context:{combinedMax:32768,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.15,outputPerMTokens:.15},pricingSource:"models.dev",aliases:["upstage/solar-mini"],releasedAt:"2024-06-12",source:"https://developers.upstage.ai/docs/apis/chat",contextSource:"https://developers.upstage.ai/docs/apis/chat",verifiedAt:"2025-04-22"},{id:"upstage:solar-pro2",provider:"upstage",vendorId:"solar-pro2",displayName:"solar-pro2",family:"solar-pro2",status:"stable",context:{combinedMax:65536,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.25,outputPerMTokens:.25},pricingSource:"models.dev",aliases:["upstage/solar-pro2"],releasedAt:"2025-05-20",source:"https://developers.upstage.ai/docs/apis/chat",contextSource:"https://developers.upstage.ai/docs/apis/chat",verifiedAt:"2025-05-20"},{id:"v0:v0-1.0-md",provider:"v0",vendorId:"v0-1.0-md",displayName:"v0-1.0-md",family:"v0-1.0-md",status:"stable",context:{combinedMax:128e3,outputMax:32e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["v0/v0-1.0-md"],releasedAt:"2025-05-22",source:"https://sdk.vercel.ai/providers/ai-sdk-providers/vercel",contextSource:"https://sdk.vercel.ai/providers/ai-sdk-providers/vercel",verifiedAt:"2025-05-22"},{id:"v0:v0-1.5-lg",provider:"v0",vendorId:"v0-1.5-lg",displayName:"v0-1.5-lg",family:"v0-1.5-lg",status:"stable",context:{combinedMax:512e3,outputMax:32e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:15,outputPerMTokens:75},pricingSource:"models.dev",aliases:["v0/v0-1.5-lg"],releasedAt:"2025-06-09",source:"https://sdk.vercel.ai/providers/ai-sdk-providers/vercel",contextSource:"https://sdk.vercel.ai/providers/ai-sdk-providers/vercel",verifiedAt:"2025-06-09"},{id:"v0:v0-1.5-md",provider:"v0",vendorId:"v0-1.5-md",displayName:"v0-1.5-md",family:"v0-1.5-md",status:"stable",context:{combinedMax:128e3,outputMax:32e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["v0/v0-1.5-md"],releasedAt:"2025-06-09",source:"https://sdk.vercel.ai/providers/ai-sdk-providers/vercel",contextSource:"https://sdk.vercel.ai/providers/ai-sdk-providers/vercel",verifiedAt:"2025-06-09"},{id:"venice:deepseek-coder-v2-lite",provider:"venice",vendorId:"deepseek-coder-v2-lite",displayName:"DeepSeek Coder V2 Lite",family:"deepseek-coder-v2-lite",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.5,outputPerMTokens:2},pricingSource:"models.dev",aliases:["venice/deepseek-coder-v2-lite"],releasedAt:"2025-06-22",source:"https://docs.venice.ai",contextSource:"https://docs.venice.ai",verifiedAt:"2025-06-22"},{id:"venice:deepseek-r1-671b",provider:"venice",vendorId:"deepseek-r1-671b",displayName:"DeepSeek R1 671B",family:"deepseek-r1-671b",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:3.5,outputPerMTokens:14},pricingSource:"models.dev",aliases:["venice/deepseek-r1-671b"],releasedAt:"2025-06-05",source:"https://docs.venice.ai",contextSource:"https://docs.venice.ai",verifiedAt:"2025-06-05"},{id:"venice:dolphin-2.9.2-qwen2-72b",provider:"venice",vendorId:"dolphin-2.9.2-qwen2-72b",displayName:"Dolphin 72B",family:"dolphin-2.9.2-qwen2-72b",status:"stable",context:{combinedMax:32768,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.7,outputPerMTokens:2.8},pricingSource:"models.dev",aliases:["venice/dolphin-2.9.2-qwen2-72b"],releasedAt:"2025-05-21",source:"https://docs.venice.ai",contextSource:"https://docs.venice.ai",verifiedAt:"2025-05-21"},{id:"venice:llama-3.1-405b",provider:"venice",vendorId:"llama-3.1-405b",displayName:"Llama 3.1 405B",family:"llama-3.1-405b",status:"stable",context:{combinedMax:65536,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1.5,outputPerMTokens:6},pricingSource:"models.dev",aliases:["venice/llama-3.1-405b"],releasedAt:"2025-06-30",source:"https://docs.venice.ai",contextSource:"https://docs.venice.ai",verifiedAt:"2025-06-30"},{id:"venice:llama-3.2-3b",provider:"venice",vendorId:"llama-3.2-3b",displayName:"Llama 3.2 3B",family:"llama-3.2-3b",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.15,outputPerMTokens:.6},pricingSource:"models.dev",aliases:["venice/llama-3.2-3b"],releasedAt:"2025-05-23",source:"https://docs.venice.ai",contextSource:"https://docs.venice.ai",verifiedAt:"2025-05-23"},{id:"venice:llama-3.3-70b",provider:"venice",vendorId:"llama-3.3-70b",displayName:"Llama 3.3 70B",family:"llama-3.3-70b",status:"stable",context:{combinedMax:65536,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.7,outputPerMTokens:2.8},pricingSource:"models.dev",aliases:["venice/llama-3.3-70b"],releasedAt:"2025-06-09",source:"https://docs.venice.ai",contextSource:"https://docs.venice.ai",verifiedAt:"2025-06-09"},{id:"venice:mistral-31-24b",provider:"venice",vendorId:"mistral-31-24b",displayName:"Venice Medium",family:"mistral-31-24b",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.5,outputPerMTokens:2},pricingSource:"models.dev",aliases:["venice/mistral-31-24b"],releasedAt:"2025-07-15",source:"https://docs.venice.ai",contextSource:"https://docs.venice.ai",verifiedAt:"2025-07-15"},{id:"venice:qwen-2.5-coder-32b",provider:"venice",vendorId:"qwen-2.5-coder-32b",displayName:"Qwen 2.5 Coder 32B",family:"qwen-2.5-coder-32b",status:"stable",context:{combinedMax:32768,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.5,outputPerMTokens:2},pricingSource:"models.dev",aliases:["venice/qwen-2.5-coder-32b"],releasedAt:"2025-06-14",source:"https://docs.venice.ai",contextSource:"https://docs.venice.ai",verifiedAt:"2025-06-14"},{id:"venice:qwen-2.5-qwq-32b",provider:"venice",vendorId:"qwen-2.5-qwq-32b",displayName:"Venice Reasoning",family:"qwen-2.5-qwq-32b",status:"stable",context:{combinedMax:32768,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.5,outputPerMTokens:2},pricingSource:"models.dev",aliases:["venice/qwen-2.5-qwq-32b"],releasedAt:"2025-07-08",source:"https://docs.venice.ai",contextSource:"https://docs.venice.ai",verifiedAt:"2025-07-08"},{id:"venice:qwen-2.5-vl",provider:"venice",vendorId:"qwen-2.5-vl",displayName:"Qwen 2.5 VL 72B",family:"qwen-2.5-vl",status:"stable",context:{combinedMax:32768,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.7,outputPerMTokens:2.8},pricingSource:"models.dev",aliases:["venice/qwen-2.5-vl"],releasedAt:"2025-06-09",source:"https://docs.venice.ai",contextSource:"https://docs.venice.ai",verifiedAt:"2025-06-09"},{id:"venice:qwen3-235b",provider:"venice",vendorId:"qwen3-235b",displayName:"Venice Large",family:"qwen3-235b",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1.5,outputPerMTokens:6},pricingSource:"models.dev",aliases:["venice/qwen3-235b"],releasedAt:"2025-07-27",source:"https://docs.venice.ai",contextSource:"https://docs.venice.ai",verifiedAt:"2025-07-27"},{id:"venice:qwen3-4b",provider:"venice",vendorId:"qwen3-4b",displayName:"Venice Small",family:"qwen3-4b",status:"stable",context:{combinedMax:32768,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.15,outputPerMTokens:.6},pricingSource:"models.dev",aliases:["venice/qwen3-4b"],releasedAt:"2025-07-27",source:"https://docs.venice.ai",contextSource:"https://docs.venice.ai",verifiedAt:"2025-07-27"},{id:"venice:venice-uncensored",provider:"venice",vendorId:"venice-uncensored",displayName:"Venice Uncensored 1.1",family:"venice-uncensored",status:"stable",context:{combinedMax:32768,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.5,outputPerMTokens:2},pricingSource:"models.dev",aliases:["venice/venice-uncensored"],releasedAt:"2025-07-15",source:"https://docs.venice.ai",contextSource:"https://docs.venice.ai",verifiedAt:"2025-07-15"},{id:"vercel:amazon/nova-lite",provider:"vercel",vendorId:"amazon/nova-lite",displayName:"Nova Lite",family:"amazon/nova-lite",status:"stable",context:{combinedMax:3e5,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.06,outputPerMTokens:.24},pricingSource:"models.dev",aliases:["vercel/amazon/nova-lite"],releasedAt:"2024-12-03",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2024-12-03"},{id:"vercel:amazon/nova-micro",provider:"vercel",vendorId:"amazon/nova-micro",displayName:"Nova Micro",family:"amazon/nova-micro",status:"stable",context:{combinedMax:128e3,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.035,outputPerMTokens:.14},pricingSource:"models.dev",aliases:["vercel/amazon/nova-micro"],releasedAt:"2024-12-03",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2024-12-03"},{id:"vercel:amazon/nova-pro",provider:"vercel",vendorId:"amazon/nova-pro",displayName:"Nova Pro",family:"amazon/nova-pro",status:"stable",context:{combinedMax:3e5,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.8,outputPerMTokens:3.2},pricingSource:"models.dev",aliases:["vercel/amazon/nova-pro"],releasedAt:"2024-12-03",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2024-12-03"},{id:"vercel:anthropic/claude-3-5-haiku",provider:"vercel",vendorId:"anthropic/claude-3-5-haiku",displayName:"Claude Haiku 3.5",family:"anthropic/claude-3-5-haiku",status:"stable",context:{combinedMax:2e5,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.8,outputPerMTokens:4},pricingSource:"models.dev",aliases:["vercel/anthropic/claude-3-5-haiku"],releasedAt:"2024-10-22",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2024-10-22"},{id:"vercel:anthropic/claude-3-haiku",provider:"vercel",vendorId:"anthropic/claude-3-haiku",displayName:"Claude Haiku 3",family:"anthropic/claude-3-haiku",status:"stable",context:{combinedMax:2e5,outputMax:4096},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.25,outputPerMTokens:1.25},pricingSource:"models.dev",aliases:["vercel/anthropic/claude-3-haiku"],releasedAt:"2024-03-13",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2024-03-13"},{id:"vercel:anthropic/claude-3-opus",provider:"vercel",vendorId:"anthropic/claude-3-opus",displayName:"Claude Opus 3",family:"anthropic/claude-3-opus",status:"stable",context:{combinedMax:2e5,outputMax:4096},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:15,outputPerMTokens:75},pricingSource:"models.dev",aliases:["vercel/anthropic/claude-3-opus"],releasedAt:"2024-02-29",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2024-02-29"},{id:"vercel:anthropic/claude-3.5-sonnet",provider:"vercel",vendorId:"anthropic/claude-3.5-sonnet",displayName:"Claude Sonnet 3.5 v2",family:"anthropic/claude-3.5-sonnet",status:"stable",context:{combinedMax:2e5,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["vercel/anthropic/claude-3.5-sonnet"],releasedAt:"2024-10-22",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2024-10-22"},{id:"vercel:anthropic/claude-3.7-sonnet",provider:"vercel",vendorId:"anthropic/claude-3.7-sonnet",displayName:"Claude Sonnet 3.7",family:"anthropic/claude-3.7-sonnet",status:"stable",context:{combinedMax:2e5,outputMax:64e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["vercel/anthropic/claude-3.7-sonnet"],releasedAt:"2025-02-19",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-02-19"},{id:"vercel:anthropic/claude-4-1-opus",provider:"vercel",vendorId:"anthropic/claude-4-1-opus",displayName:"Claude Opus 4",family:"anthropic/claude-4-1-opus",status:"stable",context:{combinedMax:2e5,outputMax:32e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:15,outputPerMTokens:75},pricingSource:"models.dev",aliases:["vercel/anthropic/claude-4-1-opus"],releasedAt:"2025-05-22",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-05-22"},{id:"vercel:anthropic/claude-4-opus",provider:"vercel",vendorId:"anthropic/claude-4-opus",displayName:"Claude Opus 4",family:"anthropic/claude-4-opus",status:"stable",context:{combinedMax:2e5,outputMax:32e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:15,outputPerMTokens:75},pricingSource:"models.dev",aliases:["vercel/anthropic/claude-4-opus"],releasedAt:"2025-05-22",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-05-22"},{id:"vercel:anthropic/claude-4-sonnet",provider:"vercel",vendorId:"anthropic/claude-4-sonnet",displayName:"Claude Sonnet 4",family:"anthropic/claude-4-sonnet",status:"stable",context:{combinedMax:2e5,outputMax:64e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["vercel/anthropic/claude-4-sonnet"],releasedAt:"2025-05-22",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-05-22"},{id:"vercel:cerebras/qwen3-coder",provider:"vercel",vendorId:"cerebras/qwen3-coder",displayName:"Qwen 3 Coder 480B",family:"cerebras/qwen3-coder",status:"stable",context:{combinedMax:131e3,outputMax:32e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:2,outputPerMTokens:2},pricingSource:"models.dev",aliases:["vercel/cerebras/qwen3-coder"],releasedAt:"2025-07-23",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-07-23"},{id:"vercel:deepseek/deepseek-r1",provider:"vercel",vendorId:"deepseek/deepseek-r1",displayName:"DeepSeek-R1",family:"deepseek/deepseek-r1",status:"stable",context:{combinedMax:128e3,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1.35,outputPerMTokens:5.4},pricingSource:"models.dev",aliases:["vercel/deepseek/deepseek-r1"],releasedAt:"2025-01-20",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-05-29"},{id:"vercel:deepseek/deepseek-r1-distill-llama-70b",provider:"vercel",vendorId:"deepseek/deepseek-r1-distill-llama-70b",displayName:"DeepSeek R1 Distill Llama 70B",family:"deepseek/deepseek-r1-distill-llama-70b",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.75,outputPerMTokens:.99},pricingSource:"models.dev",aliases:["vercel/deepseek/deepseek-r1-distill-llama-70b"],releasedAt:"2025-01-20",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-01-20"},{id:"vercel:google/gemini-2.0-flash",provider:"vercel",vendorId:"google/gemini-2.0-flash",displayName:"Gemini 2.0 Flash",family:"google/gemini-2.0-flash",status:"stable",context:{combinedMax:1048576,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.1,outputPerMTokens:.4},pricingSource:"models.dev",aliases:["vercel/google/gemini-2.0-flash"],releasedAt:"2024-12-11",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2024-12-11"},{id:"vercel:google/gemini-2.0-flash-lite",provider:"vercel",vendorId:"google/gemini-2.0-flash-lite",displayName:"Gemini 2.0 Flash Lite",family:"google/gemini-2.0-flash-lite",status:"stable",context:{combinedMax:1048576,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.075,outputPerMTokens:.3},pricingSource:"models.dev",aliases:["vercel/google/gemini-2.0-flash-lite"],releasedAt:"2024-12-11",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2024-12-11"},{id:"vercel:google/gemini-2.5-flash",provider:"vercel",vendorId:"google/gemini-2.5-flash",displayName:"Gemini 2.5 Flash",family:"google/gemini-2.5-flash",status:"stable",context:{combinedMax:1048576,outputMax:65536},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.3,outputPerMTokens:2.5},pricingSource:"models.dev",aliases:["vercel/google/gemini-2.5-flash"],releasedAt:"2025-03-20",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-06-05"},{id:"vercel:google/gemini-2.5-pro",provider:"vercel",vendorId:"google/gemini-2.5-pro",displayName:"Gemini 2.5 Pro",family:"google/gemini-2.5-pro",status:"stable",context:{combinedMax:1048576,outputMax:65536},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:1.25,outputPerMTokens:10},pricingSource:"models.dev",aliases:["vercel/google/gemini-2.5-pro"],releasedAt:"2025-03-20",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-06-05"},{id:"vercel:meta/llama-3.3-70b",provider:"vercel",vendorId:"meta/llama-3.3-70b",displayName:"Llama-3.3-70B-Instruct",family:"meta/llama-3.3-70b",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["vercel/meta/llama-3.3-70b"],releasedAt:"2024-12-06",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2024-12-06"},{id:"vercel:meta/llama-4-maverick",provider:"vercel",vendorId:"meta/llama-4-maverick",displayName:"Llama-4-Maverick-17B-128E-Instruct-FP8",family:"meta/llama-4-maverick",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["vercel/meta/llama-4-maverick"],releasedAt:"2025-04-05",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-04-05"},{id:"vercel:meta/llama-4-scout",provider:"vercel",vendorId:"meta/llama-4-scout",displayName:"Llama-4-Scout-17B-16E-Instruct-FP8",family:"meta/llama-4-scout",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["vercel/meta/llama-4-scout"],releasedAt:"2025-04-05",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-04-05"},{id:"vercel:mistral/codestral",provider:"vercel",vendorId:"mistral/codestral",displayName:"Codestral",family:"mistral/codestral",status:"stable",context:{combinedMax:256e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.3,outputPerMTokens:.9},pricingSource:"models.dev",aliases:["vercel/mistral/codestral"],releasedAt:"2024-05-29",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-01-04"},{id:"vercel:mistral/magistral-medium",provider:"vercel",vendorId:"mistral/magistral-medium",displayName:"Magistral Medium",family:"mistral/magistral-medium",status:"stable",context:{combinedMax:128e3,outputMax:16384},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:2,outputPerMTokens:5},pricingSource:"models.dev",aliases:["vercel/mistral/magistral-medium"],releasedAt:"2025-03-17",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-03-20"},{id:"vercel:mistral/magistral-small",provider:"vercel",vendorId:"mistral/magistral-small",displayName:"Magistral Small",family:"mistral/magistral-small",status:"stable",context:{combinedMax:128e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.5,outputPerMTokens:1.5},pricingSource:"models.dev",aliases:["vercel/mistral/magistral-small"],releasedAt:"2025-03-17",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-03-17"},{id:"vercel:mistral/ministral-3b",provider:"vercel",vendorId:"mistral/ministral-3b",displayName:"Ministral 3B",family:"mistral/ministral-3b",status:"stable",context:{combinedMax:128e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.04,outputPerMTokens:.04},pricingSource:"models.dev",aliases:["vercel/mistral/ministral-3b"],releasedAt:"2024-10-01",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2024-10-04"},{id:"vercel:mistral/ministral-8b",provider:"vercel",vendorId:"mistral/ministral-8b",displayName:"Ministral 8B",family:"mistral/ministral-8b",status:"stable",context:{combinedMax:128e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.1,outputPerMTokens:.1},pricingSource:"models.dev",aliases:["vercel/mistral/ministral-8b"],releasedAt:"2024-10-01",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2024-10-04"},{id:"vercel:mistral/mistral-large",provider:"vercel",vendorId:"mistral/mistral-large",displayName:"Mistral Large",family:"mistral/mistral-large",status:"stable",context:{combinedMax:131072,outputMax:16384},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:2,outputPerMTokens:6},pricingSource:"models.dev",aliases:["vercel/mistral/mistral-large"],releasedAt:"2024-11-01",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2024-11-04"},{id:"vercel:mistral/mistral-small",provider:"vercel",vendorId:"mistral/mistral-small",displayName:"Mistral Small",family:"mistral/mistral-small",status:"stable",context:{combinedMax:128e3,outputMax:16384},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.1,outputPerMTokens:.3},pricingSource:"models.dev",aliases:["vercel/mistral/mistral-small"],releasedAt:"2024-09-01",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2024-09-04"},{id:"vercel:mistral/mixtral-8x22b-instruct",provider:"vercel",vendorId:"mistral/mixtral-8x22b-instruct",displayName:"Mixtral 8x22B",family:"mistral/mixtral-8x22b-instruct",status:"stable",context:{combinedMax:64e3,outputMax:64e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:2,outputPerMTokens:6},pricingSource:"models.dev",aliases:["vercel/mistral/mixtral-8x22b-instruct"],releasedAt:"2024-04-17",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2024-04-17"},{id:"vercel:mistral/pixtral-12b",provider:"vercel",vendorId:"mistral/pixtral-12b",displayName:"Pixtral 12B",family:"mistral/pixtral-12b",status:"stable",context:{combinedMax:128e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.15,outputPerMTokens:.15},pricingSource:"models.dev",aliases:["vercel/mistral/pixtral-12b"],releasedAt:"2024-09-01",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2024-09-01"},{id:"vercel:mistral/pixtral-large",provider:"vercel",vendorId:"mistral/pixtral-large",displayName:"Pixtral Large",family:"mistral/pixtral-large",status:"stable",context:{combinedMax:128e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:2,outputPerMTokens:6},pricingSource:"models.dev",aliases:["vercel/mistral/pixtral-large"],releasedAt:"2024-11-01",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2024-11-04"},{id:"vercel:moonshotai/kimi-k2",provider:"vercel",vendorId:"moonshotai/kimi-k2",displayName:"Kimi K2 Instruct",family:"moonshotai/kimi-k2",status:"stable",context:{combinedMax:131072,outputMax:16384},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1,outputPerMTokens:3},pricingSource:"models.dev",aliases:["vercel/moonshotai/kimi-k2"],releasedAt:"2025-07-14",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-07-14"},{id:"vercel:morph/morph-v3-fast",provider:"vercel",vendorId:"morph/morph-v3-fast",displayName:"Morph v3 Fast",family:"morph/morph-v3-fast",status:"stable",context:{combinedMax:16e3,outputMax:16e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.8,outputPerMTokens:1.2},pricingSource:"models.dev",aliases:["vercel/morph/morph-v3-fast"],releasedAt:"2024-08-15",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2024-08-15"},{id:"vercel:morph/morph-v3-large",provider:"vercel",vendorId:"morph/morph-v3-large",displayName:"Morph v3 Large",family:"morph/morph-v3-large",status:"stable",context:{combinedMax:32e3,outputMax:32e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.9,outputPerMTokens:1.9},pricingSource:"models.dev",aliases:["vercel/morph/morph-v3-large"],releasedAt:"2024-08-15",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2024-08-15"},{id:"vercel:openai/gpt-4-turbo",provider:"vercel",vendorId:"openai/gpt-4-turbo",displayName:"GPT-4 Turbo",family:"openai/gpt-4-turbo",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:10,outputPerMTokens:30},pricingSource:"models.dev",aliases:["vercel/openai/gpt-4-turbo"],releasedAt:"2023-11-06",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2024-04-09"},{id:"vercel:openai/gpt-4.1",provider:"vercel",vendorId:"openai/gpt-4.1",displayName:"GPT-4.1",family:"openai/gpt-4.1",status:"stable",context:{combinedMax:1047576,outputMax:32768},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:2,outputPerMTokens:8},pricingSource:"models.dev",aliases:["vercel/openai/gpt-4.1"],releasedAt:"2025-04-14",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-04-14"},{id:"vercel:openai/gpt-4.1-mini",provider:"vercel",vendorId:"openai/gpt-4.1-mini",displayName:"GPT-4.1 mini",family:"openai/gpt-4.1-mini",status:"stable",context:{combinedMax:1047576,outputMax:32768},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.4,outputPerMTokens:1.6},pricingSource:"models.dev",aliases:["vercel/openai/gpt-4.1-mini"],releasedAt:"2025-04-14",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-04-14"},{id:"vercel:openai/gpt-4.1-nano",provider:"vercel",vendorId:"openai/gpt-4.1-nano",displayName:"GPT-4.1 nano",family:"openai/gpt-4.1-nano",status:"stable",context:{combinedMax:1047576,outputMax:32768},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.1,outputPerMTokens:.4},pricingSource:"models.dev",aliases:["vercel/openai/gpt-4.1-nano"],releasedAt:"2025-04-14",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-04-14"},{id:"vercel:openai/gpt-4o",provider:"vercel",vendorId:"openai/gpt-4o",displayName:"GPT-4o",family:"openai/gpt-4o",status:"stable",context:{combinedMax:128e3,outputMax:16384},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:2.5,outputPerMTokens:10},pricingSource:"models.dev",aliases:["vercel/openai/gpt-4o"],releasedAt:"2024-05-13",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2024-05-13"},{id:"vercel:openai/gpt-4o-mini",provider:"vercel",vendorId:"openai/gpt-4o-mini",displayName:"GPT-4o mini",family:"openai/gpt-4o-mini",status:"stable",context:{combinedMax:128e3,outputMax:16384},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.15,outputPerMTokens:.6},pricingSource:"models.dev",aliases:["vercel/openai/gpt-4o-mini"],releasedAt:"2024-07-18",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2024-07-18"},{id:"vercel:openai/gpt-5",provider:"vercel",vendorId:"openai/gpt-5",displayName:"GPT-5",family:"openai/gpt-5",status:"stable",context:{combinedMax:4e5,outputMax:128e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:1.25,outputPerMTokens:10},pricingSource:"models.dev",aliases:["vercel/openai/gpt-5"],releasedAt:"2025-08-07",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-08-07"},{id:"vercel:openai/gpt-5-mini",provider:"vercel",vendorId:"openai/gpt-5-mini",displayName:"GPT-5 Mini",family:"openai/gpt-5-mini",status:"stable",context:{combinedMax:4e5,outputMax:128e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.25,outputPerMTokens:2},pricingSource:"models.dev",aliases:["vercel/openai/gpt-5-mini"],releasedAt:"2025-08-07",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-08-07"},{id:"vercel:openai/gpt-5-nano",provider:"vercel",vendorId:"openai/gpt-5-nano",displayName:"GPT-5 Nano",family:"openai/gpt-5-nano",status:"stable",context:{combinedMax:4e5,outputMax:128e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.05,outputPerMTokens:.4},pricingSource:"models.dev",aliases:["vercel/openai/gpt-5-nano"],releasedAt:"2025-08-07",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-08-07"},{id:"vercel:openai/gpt-oss-120b",provider:"vercel",vendorId:"openai/gpt-oss-120b",displayName:"GPT OSS 120B",family:"openai/gpt-oss-120b",status:"stable",context:{combinedMax:131072,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.1,outputPerMTokens:.5},pricingSource:"models.dev",aliases:["vercel/openai/gpt-oss-120b"],releasedAt:"2025-08-05",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-08-05"},{id:"vercel:openai/gpt-oss-20b",provider:"vercel",vendorId:"openai/gpt-oss-20b",displayName:"GPT OSS 20B",family:"openai/gpt-oss-20b",status:"stable",context:{combinedMax:131072,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.07,outputPerMTokens:.3},pricingSource:"models.dev",aliases:["vercel/openai/gpt-oss-20b"],releasedAt:"2025-08-05",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-08-05"},{id:"vercel:openai/o1",provider:"vercel",vendorId:"openai/o1",displayName:"o1",family:"openai/o1",status:"stable",context:{combinedMax:2e5,outputMax:1e5},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:15,outputPerMTokens:60},pricingSource:"models.dev",aliases:["vercel/openai/o1"],releasedAt:"2024-12-05",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2024-12-05"},{id:"vercel:openai/o3",provider:"vercel",vendorId:"openai/o3",displayName:"o3",family:"openai/o3",status:"stable",context:{combinedMax:2e5,outputMax:1e5},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:2,outputPerMTokens:8},pricingSource:"models.dev",aliases:["vercel/openai/o3"],releasedAt:"2025-04-16",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-04-16"},{id:"vercel:openai/o3-mini",provider:"vercel",vendorId:"openai/o3-mini",displayName:"o3-mini",family:"openai/o3-mini",status:"stable",context:{combinedMax:2e5,outputMax:1e5},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1.1,outputPerMTokens:4.4},pricingSource:"models.dev",aliases:["vercel/openai/o3-mini"],releasedAt:"2024-12-20",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-01-29"},{id:"vercel:openai/o4-mini",provider:"vercel",vendorId:"openai/o4-mini",displayName:"o4-mini",family:"openai/o4-mini",status:"stable",context:{combinedMax:2e5,outputMax:1e5},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:1.1,outputPerMTokens:4.4},pricingSource:"models.dev",aliases:["vercel/openai/o4-mini"],releasedAt:"2025-04-16",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-04-16"},{id:"vercel:vercel/v0-1.0-md",provider:"vercel",vendorId:"vercel/v0-1.0-md",displayName:"v0-1.0-md",family:"vercel/v0-1.0-md",status:"stable",context:{combinedMax:128e3,outputMax:32e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["vercel/vercel/v0-1.0-md"],releasedAt:"2025-05-22",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-05-22"},{id:"vercel:vercel/v0-1.5-md",provider:"vercel",vendorId:"vercel/v0-1.5-md",displayName:"v0-1.5-md",family:"vercel/v0-1.5-md",status:"stable",context:{combinedMax:128e3,outputMax:32e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["vercel/vercel/v0-1.5-md"],releasedAt:"2025-06-09",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-06-09"},{id:"vercel:xai/grok-2",provider:"vercel",vendorId:"xai/grok-2",displayName:"Grok 2",family:"xai/grok-2",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:2,outputPerMTokens:10},pricingSource:"models.dev",aliases:["vercel/xai/grok-2"],releasedAt:"2024-08-20",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2024-08-20"},{id:"vercel:xai/grok-2-vision",provider:"vercel",vendorId:"xai/grok-2-vision",displayName:"Grok 2 Vision",family:"xai/grok-2-vision",status:"stable",context:{combinedMax:8192,outputMax:4096},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:2,outputPerMTokens:10},pricingSource:"models.dev",aliases:["vercel/xai/grok-2-vision"],releasedAt:"2024-08-20",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2024-08-20"},{id:"vercel:xai/grok-3",provider:"vercel",vendorId:"xai/grok-3",displayName:"Grok 3",family:"xai/grok-3",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["vercel/xai/grok-3"],releasedAt:"2025-02-17",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-02-17"},{id:"vercel:xai/grok-3-fast",provider:"vercel",vendorId:"xai/grok-3-fast",displayName:"Grok 3 Fast",family:"xai/grok-3-fast",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:5,outputPerMTokens:25},pricingSource:"models.dev",aliases:["vercel/xai/grok-3-fast"],releasedAt:"2025-02-17",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-02-17"},{id:"vercel:xai/grok-3-mini",provider:"vercel",vendorId:"xai/grok-3-mini",displayName:"Grok 3 Mini",family:"xai/grok-3-mini",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.3,outputPerMTokens:.5},pricingSource:"models.dev",aliases:["vercel/xai/grok-3-mini"],releasedAt:"2025-02-17",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-02-17"},{id:"vercel:xai/grok-3-mini-fast",provider:"vercel",vendorId:"xai/grok-3-mini-fast",displayName:"Grok 3 Mini Fast",family:"xai/grok-3-mini-fast",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.6,outputPerMTokens:4},pricingSource:"models.dev",aliases:["vercel/xai/grok-3-mini-fast"],releasedAt:"2025-02-17",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-02-17"},{id:"vercel:xai/grok-4",provider:"vercel",vendorId:"xai/grok-4",displayName:"Grok 4",family:"xai/grok-4",status:"stable",context:{combinedMax:256e3,outputMax:64e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["vercel/xai/grok-4"],releasedAt:"2025-07-09",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-07-09"},{id:"wandb:deepseek-ai/DeepSeek-R1-0528",provider:"wandb",vendorId:"deepseek-ai/DeepSeek-R1-0528",displayName:"DeepSeek-R1-0528",family:"deepseek-ai/DeepSeek-R1-0528",status:"stable",context:{combinedMax:161e3,outputMax:163840},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1.35,outputPerMTokens:5.4},pricingSource:"models.dev",aliases:["wandb/deepseek-ai/DeepSeek-R1-0528"],releasedAt:"2025-05-28",source:"https://weave-docs.wandb.ai/guides/integrations/inference/",contextSource:"https://weave-docs.wandb.ai/guides/integrations/inference/",verifiedAt:"2025-05-28"},{id:"wandb:deepseek-ai/DeepSeek-V3-0324",provider:"wandb",vendorId:"deepseek-ai/DeepSeek-V3-0324",displayName:"DeepSeek-V3-0324",family:"deepseek-ai/DeepSeek-V3-0324",status:"stable",context:{combinedMax:161e3,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1.14,outputPerMTokens:2.75},pricingSource:"models.dev",aliases:["wandb/deepseek-ai/DeepSeek-V3-0324"],releasedAt:"2025-03-24",source:"https://weave-docs.wandb.ai/guides/integrations/inference/",contextSource:"https://weave-docs.wandb.ai/guides/integrations/inference/",verifiedAt:"2025-03-24"},{id:"wandb:meta-llama/Llama-3.1-8B-Instruct",provider:"wandb",vendorId:"meta-llama/Llama-3.1-8B-Instruct",displayName:"Meta-Llama-3.1-8B-Instruct",family:"meta-llama/Llama-3.1-8B-Instruct",status:"stable",context:{combinedMax:128e3,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.22,outputPerMTokens:.22},pricingSource:"models.dev",aliases:["wandb/meta-llama/Llama-3.1-8B-Instruct"],releasedAt:"2024-07-23",source:"https://weave-docs.wandb.ai/guides/integrations/inference/",contextSource:"https://weave-docs.wandb.ai/guides/integrations/inference/",verifiedAt:"2024-07-23"},{id:"wandb:meta-llama/Llama-3.3-70B-Instruct",provider:"wandb",vendorId:"meta-llama/Llama-3.3-70B-Instruct",displayName:"Llama-3.3-70B-Instruct",family:"meta-llama/Llama-3.3-70B-Instruct",status:"stable",context:{combinedMax:128e3,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.71,outputPerMTokens:.71},pricingSource:"models.dev",aliases:["wandb/meta-llama/Llama-3.3-70B-Instruct"],releasedAt:"2024-12-06",source:"https://weave-docs.wandb.ai/guides/integrations/inference/",contextSource:"https://weave-docs.wandb.ai/guides/integrations/inference/",verifiedAt:"2024-12-06"},{id:"wandb:meta-llama/Llama-4-Scout-17B-16E-Instruct",provider:"wandb",vendorId:"meta-llama/Llama-4-Scout-17B-16E-Instruct",displayName:"Llama 4 Scout 17B 16E Instruct",family:"meta-llama/Llama-4-Scout-17B-16E-Instruct",status:"stable",context:{combinedMax:64e3,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.17,outputPerMTokens:.66},pricingSource:"models.dev",aliases:["wandb/meta-llama/Llama-4-Scout-17B-16E-Instruct"],releasedAt:"2025-01-31",source:"https://weave-docs.wandb.ai/guides/integrations/inference/",contextSource:"https://weave-docs.wandb.ai/guides/integrations/inference/",verifiedAt:"2025-01-31"},{id:"wandb:microsoft/Phi-4-mini-instruct",provider:"wandb",vendorId:"microsoft/Phi-4-mini-instruct",displayName:"Phi-4-mini-instruct",family:"microsoft/Phi-4-mini-instruct",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.08,outputPerMTokens:.35},pricingSource:"models.dev",aliases:["wandb/microsoft/Phi-4-mini-instruct"],releasedAt:"2024-12-11",source:"https://weave-docs.wandb.ai/guides/integrations/inference/",contextSource:"https://weave-docs.wandb.ai/guides/integrations/inference/",verifiedAt:"2024-12-11"},{id:"wandb:moonshotai/Kimi-K2-Instruct",provider:"wandb",vendorId:"moonshotai/Kimi-K2-Instruct",displayName:"Kimi-K2-Instruct",family:"moonshotai/Kimi-K2-Instruct",status:"stable",context:{combinedMax:128e3,outputMax:16384},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1.35,outputPerMTokens:4},pricingSource:"models.dev",aliases:["wandb/moonshotai/Kimi-K2-Instruct"],releasedAt:"2025-07-14",source:"https://weave-docs.wandb.ai/guides/integrations/inference/",contextSource:"https://weave-docs.wandb.ai/guides/integrations/inference/",verifiedAt:"2025-07-14"},{id:"wandb:Qwen/Qwen3-235B-A22B-Instruct-2507",provider:"wandb",vendorId:"Qwen/Qwen3-235B-A22B-Instruct-2507",displayName:"Qwen3 235B A22B Instruct 2507",family:"Qwen/Qwen3-235B-A22B-Instruct-2507",status:"stable",context:{combinedMax:262144,outputMax:131072},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.1,outputPerMTokens:.1},pricingSource:"models.dev",aliases:["wandb/Qwen/Qwen3-235B-A22B-Instruct-2507"],releasedAt:"2025-04-28",source:"https://weave-docs.wandb.ai/guides/integrations/inference/",contextSource:"https://weave-docs.wandb.ai/guides/integrations/inference/",verifiedAt:"2025-07-21"},{id:"wandb:Qwen/Qwen3-235B-A22B-Thinking-2507",provider:"wandb",vendorId:"Qwen/Qwen3-235B-A22B-Thinking-2507",displayName:"Qwen3-235B-A22B-Thinking-2507",family:"Qwen/Qwen3-235B-A22B-Thinking-2507",status:"stable",context:{combinedMax:262144,outputMax:131072},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.1,outputPerMTokens:.1},pricingSource:"models.dev",aliases:["wandb/Qwen/Qwen3-235B-A22B-Thinking-2507"],releasedAt:"2025-07-25",source:"https://weave-docs.wandb.ai/guides/integrations/inference/",contextSource:"https://weave-docs.wandb.ai/guides/integrations/inference/",verifiedAt:"2025-07-25"},{id:"wandb:Qwen/Qwen3-Coder-480B-A35B-Instruct",provider:"wandb",vendorId:"Qwen/Qwen3-Coder-480B-A35B-Instruct",displayName:"Qwen3-Coder-480B-A35B-Instruct",family:"Qwen/Qwen3-Coder-480B-A35B-Instruct",status:"stable",context:{combinedMax:262144,outputMax:66536},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1,outputPerMTokens:1.5},pricingSource:"models.dev",aliases:["wandb/Qwen/Qwen3-Coder-480B-A35B-Instruct"],releasedAt:"2025-07-23",source:"https://weave-docs.wandb.ai/guides/integrations/inference/",contextSource:"https://weave-docs.wandb.ai/guides/integrations/inference/",verifiedAt:"2025-07-23"},{id:"xai:grok-2",provider:"xai",vendorId:"grok-2",displayName:"Grok 2",family:"grok-2",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:2,outputPerMTokens:10},pricingSource:"models.dev",aliases:["xai/grok-2"],releasedAt:"2024-08-20",source:"https://docs.x.ai/docs/models",contextSource:"https://docs.x.ai/docs/models",verifiedAt:"2024-08-20"},{id:"xai:grok-2-1212",provider:"xai",vendorId:"grok-2-1212",displayName:"Grok 2 (1212)",family:"grok-2-1212",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:2,outputPerMTokens:10},pricingSource:"models.dev",aliases:["xai/grok-2-1212"],releasedAt:"2024-12-12",source:"https://docs.x.ai/docs/models",contextSource:"https://docs.x.ai/docs/models",verifiedAt:"2024-12-12"},{id:"xai:grok-2-latest",provider:"xai",vendorId:"grok-2-latest",displayName:"Grok 2 Latest",family:"grok-2-latest",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:2,outputPerMTokens:10},pricingSource:"models.dev",aliases:["xai/grok-2-latest"],releasedAt:"2024-08-20",source:"https://docs.x.ai/docs/models",contextSource:"https://docs.x.ai/docs/models",verifiedAt:"2024-12-12"},{id:"xai:grok-2-vision",provider:"xai",vendorId:"grok-2-vision",displayName:"Grok 2 Vision",family:"grok-2-vision",status:"stable",context:{combinedMax:8192,outputMax:4096},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:2,outputPerMTokens:10},pricingSource:"models.dev",aliases:["xai/grok-2-vision"],releasedAt:"2024-08-20",source:"https://docs.x.ai/docs/models",contextSource:"https://docs.x.ai/docs/models",verifiedAt:"2024-08-20"},{id:"xai:grok-2-vision-1212",provider:"xai",vendorId:"grok-2-vision-1212",displayName:"Grok 2 Vision (1212)",family:"grok-2-vision-1212",status:"stable",context:{combinedMax:8192,outputMax:4096},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:2,outputPerMTokens:10},pricingSource:"models.dev",aliases:["xai/grok-2-vision-1212"],releasedAt:"2024-08-20",source:"https://docs.x.ai/docs/models",contextSource:"https://docs.x.ai/docs/models",verifiedAt:"2024-12-12"},{id:"xai:grok-2-vision-latest",provider:"xai",vendorId:"grok-2-vision-latest",displayName:"Grok 2 Vision Latest",family:"grok-2-vision-latest",status:"stable",context:{combinedMax:8192,outputMax:4096},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:2,outputPerMTokens:10},pricingSource:"models.dev",aliases:["xai/grok-2-vision-latest"],releasedAt:"2024-08-20",source:"https://docs.x.ai/docs/models",contextSource:"https://docs.x.ai/docs/models",verifiedAt:"2024-12-12"},{id:"xai:grok-3",provider:"xai",vendorId:"grok-3",displayName:"Grok 3",family:"grok-3",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["xai/grok-3"],releasedAt:"2025-02-17",source:"https://docs.x.ai/docs/models",contextSource:"https://docs.x.ai/docs/models",verifiedAt:"2025-02-17"},{id:"xai:grok-3-fast",provider:"xai",vendorId:"grok-3-fast",displayName:"Grok 3 Fast",family:"grok-3-fast",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:5,outputPerMTokens:25},pricingSource:"models.dev",aliases:["xai/grok-3-fast"],releasedAt:"2025-02-17",source:"https://docs.x.ai/docs/models",contextSource:"https://docs.x.ai/docs/models",verifiedAt:"2025-02-17"},{id:"xai:grok-3-fast-latest",provider:"xai",vendorId:"grok-3-fast-latest",displayName:"Grok 3 Fast Latest",family:"grok-3-fast-latest",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:5,outputPerMTokens:25},pricingSource:"models.dev",aliases:["xai/grok-3-fast-latest"],releasedAt:"2025-02-17",source:"https://docs.x.ai/docs/models",contextSource:"https://docs.x.ai/docs/models",verifiedAt:"2025-02-17"},{id:"xai:grok-3-latest",provider:"xai",vendorId:"grok-3-latest",displayName:"Grok 3 Latest",family:"grok-3-latest",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["xai/grok-3-latest"],releasedAt:"2025-02-17",source:"https://docs.x.ai/docs/models",contextSource:"https://docs.x.ai/docs/models",verifiedAt:"2025-02-17"},{id:"xai:grok-3-mini",provider:"xai",vendorId:"grok-3-mini",displayName:"Grok 3 Mini",family:"grok-3-mini",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.3,outputPerMTokens:.5},pricingSource:"models.dev",aliases:["xai/grok-3-mini"],releasedAt:"2025-02-17",source:"https://docs.x.ai/docs/models",contextSource:"https://docs.x.ai/docs/models",verifiedAt:"2025-02-17"},{id:"xai:grok-3-mini-fast",provider:"xai",vendorId:"grok-3-mini-fast",displayName:"Grok 3 Mini Fast",family:"grok-3-mini-fast",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.6,outputPerMTokens:4},pricingSource:"models.dev",aliases:["xai/grok-3-mini-fast"],releasedAt:"2025-02-17",source:"https://docs.x.ai/docs/models",contextSource:"https://docs.x.ai/docs/models",verifiedAt:"2025-02-17"},{id:"xai:grok-3-mini-fast-latest",provider:"xai",vendorId:"grok-3-mini-fast-latest",displayName:"Grok 3 Mini Fast Latest",family:"grok-3-mini-fast-latest",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.6,outputPerMTokens:4},pricingSource:"models.dev",aliases:["xai/grok-3-mini-fast-latest"],releasedAt:"2025-02-17",source:"https://docs.x.ai/docs/models",contextSource:"https://docs.x.ai/docs/models",verifiedAt:"2025-02-17"},{id:"xai:grok-3-mini-latest",provider:"xai",vendorId:"grok-3-mini-latest",displayName:"Grok 3 Mini Latest",family:"grok-3-mini-latest",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.3,outputPerMTokens:.5},pricingSource:"models.dev",aliases:["xai/grok-3-mini-latest"],releasedAt:"2025-02-17",source:"https://docs.x.ai/docs/models",contextSource:"https://docs.x.ai/docs/models",verifiedAt:"2025-02-17"},{id:"xai:grok-4",provider:"xai",vendorId:"grok-4",displayName:"Grok 4",family:"grok-4",status:"stable",context:{combinedMax:256e3,outputMax:64e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["xai/grok-4"],releasedAt:"2025-07-09",source:"https://docs.x.ai/docs/models",contextSource:"https://docs.x.ai/docs/models",verifiedAt:"2025-07-09"},{id:"xai:grok-beta",provider:"xai",vendorId:"grok-beta",displayName:"Grok Beta",family:"grok-beta",status:"stable",context:{combinedMax:131072,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:5,outputPerMTokens:15},pricingSource:"models.dev",aliases:["xai/grok-beta"],releasedAt:"2024-11-01",source:"https://docs.x.ai/docs/models",contextSource:"https://docs.x.ai/docs/models",verifiedAt:"2024-11-01"},{id:"xai:grok-vision-beta",provider:"xai",vendorId:"grok-vision-beta",displayName:"Grok Vision Beta",family:"grok-vision-beta",status:"stable",context:{combinedMax:8192,outputMax:4096},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:5,outputPerMTokens:15},pricingSource:"models.dev",aliases:["xai/grok-vision-beta"],releasedAt:"2024-11-01",source:"https://docs.x.ai/docs/models",contextSource:"https://docs.x.ai/docs/models",verifiedAt:"2024-11-01"},{id:"zai:glm-4.5",provider:"zai",vendorId:"glm-4.5",displayName:"GLM-4.5",family:"glm-4.5",status:"stable",context:{combinedMax:131072,outputMax:98304},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.6,outputPerMTokens:2.2},pricingSource:"models.dev",aliases:["zai/glm-4.5"],releasedAt:"2025-07-28",source:"https://docs.z.ai/guides/overview/pricing",contextSource:"https://docs.z.ai/guides/overview/pricing",verifiedAt:"2025-07-28"},{id:"zai:glm-4.5-air",provider:"zai",vendorId:"glm-4.5-air",displayName:"GLM-4.5-Air",family:"glm-4.5-air",status:"stable",context:{combinedMax:131072,outputMax:98304},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.2,outputPerMTokens:1.1},pricingSource:"models.dev",aliases:["zai/glm-4.5-air"],releasedAt:"2025-07-28",source:"https://docs.z.ai/guides/overview/pricing",contextSource:"https://docs.z.ai/guides/overview/pricing",verifiedAt:"2025-07-28"},{id:"zai:glm-4.5-flash",provider:"zai",vendorId:"glm-4.5-flash",displayName:"GLM-4.5-Flash",family:"glm-4.5-flash",status:"stable",context:{combinedMax:131072,outputMax:98304},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["zai/glm-4.5-flash"],releasedAt:"2025-07-28",source:"https://docs.z.ai/guides/overview/pricing",contextSource:"https://docs.z.ai/guides/overview/pricing",verifiedAt:"2025-07-28"},{id:"zai:glm-4.5v",provider:"zai",vendorId:"glm-4.5v",displayName:"GLM 4.5V",family:"glm-4.5v",status:"stable",context:{combinedMax:64e3,outputMax:16384},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.6,outputPerMTokens:1.8},pricingSource:"models.dev",aliases:["zai/glm-4.5v"],releasedAt:"2025-08-11",source:"https://docs.z.ai/guides/overview/pricing",contextSource:"https://docs.z.ai/guides/overview/pricing",verifiedAt:"2025-08-11"},{id:"zhipuai:glm-4.5",provider:"zhipuai",vendorId:"glm-4.5",displayName:"GLM-4.5",family:"glm-4.5",status:"stable",context:{combinedMax:131072,outputMax:98304},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.6,outputPerMTokens:2.2},pricingSource:"models.dev",aliases:["zhipuai/glm-4.5"],releasedAt:"2025-07-28",source:"https://docs.z.ai/guides/overview/pricing",contextSource:"https://docs.z.ai/guides/overview/pricing",verifiedAt:"2025-07-28"},{id:"zhipuai:glm-4.5-air",provider:"zhipuai",vendorId:"glm-4.5-air",displayName:"GLM-4.5-Air",family:"glm-4.5-air",status:"stable",context:{combinedMax:131072,outputMax:98304},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.2,outputPerMTokens:1.1},pricingSource:"models.dev",aliases:["zhipuai/glm-4.5-air"],releasedAt:"2025-07-28",source:"https://docs.z.ai/guides/overview/pricing",contextSource:"https://docs.z.ai/guides/overview/pricing",verifiedAt:"2025-07-28"},{id:"zhipuai:glm-4.5-flash",provider:"zhipuai",vendorId:"glm-4.5-flash",displayName:"GLM-4.5-Flash",family:"glm-4.5-flash",status:"stable",context:{combinedMax:131072,outputMax:98304},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["zhipuai/glm-4.5-flash"],releasedAt:"2025-07-28",source:"https://docs.z.ai/guides/overview/pricing",contextSource:"https://docs.z.ai/guides/overview/pricing",verifiedAt:"2025-07-28"},{id:"zhipuai:glm-4.5v",provider:"zhipuai",vendorId:"glm-4.5v",displayName:"GLM 4.5V",family:"glm-4.5v",status:"stable",context:{combinedMax:64e3,outputMax:16384},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.6,outputPerMTokens:1.8},pricingSource:"models.dev",aliases:["zhipuai/glm-4.5v"],releasedAt:"2025-08-11",source:"https://docs.z.ai/guides/overview/pricing",contextSource:"https://docs.z.ai/guides/overview/pricing",verifiedAt:"2025-08-11"}],ur=(ua.map(e=>e.id),Object.freeze(Object.fromEntries(ua.map(e=>[e.id,e])))),us=[];for(let e of ua){let t=e.provider+":";for(let o of(e.vendorId&&us.push([e.vendorId.toLowerCase(),e.id]),e.family&&us.push([e.family.toLowerCase(),e.id]),e.id.startsWith(t)&&us.push([e.id.slice(t.length).toLowerCase(),e.id]),e.aliases??[]))us.push([o.toLowerCase(),e.id])}let un=new Map;for(let[e,t]of us)un.has(e)||un.set(e,t);let ul=Object.freeze(Object.fromEntries(un));function ud(e){if(!e)return{input:0,output:0,total:0};if("number"==typeof e.input&&"number"==typeof e.output)return{input:e.input,output:e.output,total:e.total??e.input+e.output};let t=[e.input_tokens,e.prompt_tokens,e.promptTokens,e.inputTokens].filter(e=>"number"==typeof e),o=[e.output_tokens,e.completion_tokens,e.completionTokens,e.outputTokens].filter(e=>"number"==typeof e),i=[e.total_tokens,e.totalTokens,e.totalTokens].filter(e=>"number"==typeof e),a=t[0]??0,r=o[0]??0,s=i[0];return void 0!==s?{input:a,output:r,total:s}:{input:a,output:r,total:a+r}}function uc({modelId:e,usage:t}){let o=function(e){let t=e.trim().toLowerCase(),o=ur[t]?t:ul[t];return o?ur[o]:void 0}(e);if(!o?.pricing)return{};let i=ud(t),a=function(e){if(!e)return{input:0,output:0,total:0,cacheReads:0,cacheWrites:0,reasoningTokens:0};if("number"==typeof e.input&&"number"==typeof e.output&&("cacheReads"in e||"cacheWrites"in e||"total"in e))return{input:e.input,output:e.output,total:e.total??e.input+e.output,cacheReads:e.cacheReads,cacheWrites:e.cacheWrites,reasoningTokens:e.reasoningTokens};let t=ud(e),o=[e.cache_read_input_tokens,e.cache_read_tokens,e.prompt_cache_hit_tokens,e.prompt_tokens_details?.cached_tokens,e.promptTokensDetails?.cachedTokens,e.cachedInputTokens].filter(e=>"number"==typeof e),i=[e.cache_creation_input_tokens,e.cache_creation_tokens,e.prompt_cache_write_tokens,e.promptTokensDetails?.cacheCreationTokens].filter(e=>"number"==typeof e),a=o[0],r=i[0],s=[e.reasoning_tokens,e.reasoningTokens].filter(e=>"number"==typeof e)[0];return{...t,cacheReads:a,cacheWrites:r,reasoningTokens:s}}(t),r=void 0!==o.pricing.inputPerMTokens?i.input/1e6*o.pricing.inputPerMTokens:void 0,s=void 0!==o.pricing.outputPerMTokens?i.output/1e6*o.pricing.outputPerMTokens:void 0,n=void 0!==o.pricing.reasoningPerMTokens&&"number"==typeof a.reasoningTokens?a.reasoningTokens/1e6*o.pricing.reasoningPerMTokens:void 0,l=void 0!==o.pricing.cacheReadPerMTokens&&"number"==typeof a.cacheReads?a.cacheReads/1e6*o.pricing.cacheReadPerMTokens:void 0,d=void 0!==o.pricing.cacheWritePerMTokens&&"number"==typeof a.cacheWrites?a.cacheWrites/1e6*o.pricing.cacheWritePerMTokens:void 0,c=[r,s,n,l,d].filter(e=>"number"==typeof e);return{inputUSD:r,outputUSD:s,reasoningUSD:n,cacheReadUSD:l,cacheWriteUSD:d,totalUSD:c.length?c.reduce((e,t)=>e+t,0):void 0}}let uu=(0,X.createContext)(null),up=()=>{let e=(0,X.useContext)(uu);if(!e)throw Error("Context components must be used within Context");return e},um=({usedTokens:e,maxTokens:t,usage:o,modelId:i,...a})=>H.jsx(uu.Provider,{value:{usedTokens:e,maxTokens:t,usage:o,modelId:i},children:H.jsx(cQ,{closeDelay:0,openDelay:0,...a})}),ug=()=>{let{usedTokens:e,maxTokens:t}=up(),o=2*Math.PI*10;return(0,H.jsxs)("svg",{"aria-label":"Model context usage",height:"20",role:"img",style:{color:"currentcolor"},viewBox:"0 0 24 24",width:"20",children:[H.jsx("circle",{cx:12,cy:12,fill:"none",opacity:"0.25",r:10,stroke:"currentColor",strokeWidth:2}),H.jsx("circle",{cx:12,cy:12,fill:"none",opacity:"0.7",r:10,stroke:"currentColor",strokeDasharray:`${o} ${o}`,strokeDashoffset:o*(1-e/t),strokeLinecap:"round",strokeWidth:2,style:{transformOrigin:"center",transform:"rotate(-90deg)"}})]})},uh=({children:e,...t})=>{let{usedTokens:o,maxTokens:i}=up(),a=new Intl.NumberFormat("en-US",{style:"percent",maximumFractionDigits:1}).format(o/i);return H.jsx(cU,{asChild:!0,children:e??(0,H.jsxs)(d0.z,{type:"button",variant:"ghost",...t,children:[H.jsx("span",{className:"font-medium text-muted-foreground",children:a}),H.jsx(ug,{})]})})},uv=({className:e,...t})=>H.jsx(cX,{className:(0,dM.cn)("min-w-[240px] divide-y overflow-hidden p-0",e),...t}),uf=({children:e,className:t,...o})=>{let{usedTokens:i,maxTokens:a}=up(),r=i/a,s=new Intl.NumberFormat("en-US",{style:"percent",maximumFractionDigits:1}).format(r),n=new Intl.NumberFormat("en-US",{notation:"compact"}).format(i),l=new Intl.NumberFormat("en-US",{notation:"compact"}).format(a);return H.jsx("div",{className:(0,dM.cn)("w-full space-y-2 p-3",t),...o,children:e??(0,H.jsxs)(H.Fragment,{children:[(0,H.jsxs)("div",{className:"flex items-center justify-between gap-3 text-xs",children:[H.jsx("p",{children:s}),(0,H.jsxs)("p",{className:"font-mono text-muted-foreground",children:[n," / ",l]})]}),H.jsx("div",{className:"space-y-2",children:H.jsx(ui,{className:"bg-muted",value:100*r})})]})})},ux=({children:e,className:t,...o})=>H.jsx("div",{className:(0,dM.cn)("w-full p-3",t),...o,children:e}),ub=({className:e,children:t,...o})=>{let{usage:i,modelId:a}=up(),r=i?.inputTokens??0;if(t)return t;if(!r)return null;let s=a?uc({modelId:a,usage:{input:r,output:0}}).totalUSD:void 0,n=new Intl.NumberFormat("en-US",{style:"currency",currency:"USD"}).format(s??0);return(0,H.jsxs)("div",{className:(0,dM.cn)("flex items-center justify-between text-xs",e),...o,children:[H.jsx("span",{className:"text-muted-foreground",children:"Input"}),H.jsx(uI,{costText:n,tokens:r})]})},uk=({className:e,children:t,...o})=>{let{usage:i,modelId:a}=up(),r=i?.outputTokens??0;if(t)return t;if(!r)return null;let s=a?uc({modelId:a,usage:{input:0,output:r}}).totalUSD:void 0,n=new Intl.NumberFormat("en-US",{style:"currency",currency:"USD"}).format(s??0);return(0,H.jsxs)("div",{className:(0,dM.cn)("flex items-center justify-between text-xs",e),...o,children:[H.jsx("span",{className:"text-muted-foreground",children:"Output"}),H.jsx(uI,{costText:n,tokens:r})]})},uy=({className:e,children:t,...o})=>{let{usage:i,modelId:a}=up(),r=i?.reasoningTokens??0;if(t)return t;if(!r)return null;let s=a?uc({modelId:a,usage:{reasoningTokens:r}}).totalUSD:void 0,n=new Intl.NumberFormat("en-US",{style:"currency",currency:"USD"}).format(s??0);return(0,H.jsxs)("div",{className:(0,dM.cn)("flex items-center justify-between text-xs",e),...o,children:[H.jsx("span",{className:"text-muted-foreground",children:"Reasoning"}),H.jsx(uI,{costText:n,tokens:r})]})},uM=({className:e,children:t,...o})=>{let{usage:i,modelId:a}=up(),r=i?.cachedInputTokens??0;if(t)return t;if(!r)return null;let s=a?uc({modelId:a,usage:{cacheReads:r,input:0,output:0}}).totalUSD:void 0,n=new Intl.NumberFormat("en-US",{style:"currency",currency:"USD"}).format(s??0);return(0,H.jsxs)("div",{className:(0,dM.cn)("flex items-center justify-between text-xs",e),...o,children:[H.jsx("span",{className:"text-muted-foreground",children:"Cache"}),H.jsx(uI,{costText:n,tokens:r})]})},uI=({tokens:e,costText:t})=>(0,H.jsxs)("span",{children:[void 0===e?"—":new Intl.NumberFormat("en-US",{notation:"compact"}).format(e),t?(0,H.jsxs)("span",{className:"ml-2 text-muted-foreground",children:["• ",t]}):null]});var uw=o(53982),uS=o(48998),uA=o(54659),uT=o(91470),uP=o(67048),uN=o(941),uO=o(51602);let u_=({className:e,...t})=>H.jsx(d7.zF,{className:(0,dM.cn)("not-prose mb-4 w-full rounded-md border",e),...t}),uz=e=>{let t={"input-streaming":H.jsx(uw.Z,{className:"size-4 mr-2"}),"input-available":H.jsx(uS.Z,{className:"size-4 animate-pulse mr-2"}),"output-available":H.jsx(uA.Z,{className:"size-4 text-green-600 mr-2"}),"output-error":H.jsx(uT.Z,{className:"size-4 text-red-600 mr-2"})};return(0,H.jsxs)(d6.C,{className:"rounded-full text-xs",variant:"secondary",children:[t[e],{"input-streaming":"Pending","input-available":"Running","output-available":"Completed","output-error":"Error"}[e]]})},uE=({className:e,type:t,state:o,...i})=>(0,H.jsxs)(d7.wy,{className:(0,dM.cn)("flex w-full items-center justify-between gap-4 p-3",e),...i,children:[(0,H.jsxs)("div",{className:"flex items-center gap-2",children:[H.jsx(uP.Z,{className:"size-4 text-muted-foreground"}),H.jsx("span",{className:"font-medium text-sm",children:t}),uz(o)]}),H.jsx(uN.Z,{className:"size-4 text-muted-foreground transition-transform group-data-[state=open]:rotate-180"})]}),uq=({className:e,...t})=>H.jsx(d7.Fw,{className:(0,dM.cn)("data-[state=closed]:fade-out-0 data-[state=closed]:slide-out-to-top-2 data-[state=open]:slide-in-from-top-2 text-popover-foreground outline-none data-[state=closed]:animate-out data-[state=open]:animate-in",e),...t}),uB=({className:e,input:t,...o})=>(0,H.jsxs)("div",{className:(0,dM.cn)("space-y-2 overflow-hidden p-4",e),...o,children:[H.jsx("h4",{className:"font-medium text-muted-foreground text-xs uppercase tracking-wide",children:"Parameters"}),H.jsx("div",{className:"rounded-md bg-muted/50",children:H.jsx(uO.d,{code:JSON.stringify(t,null,2),language:"json"})})]}),uj=({className:e,output:t,errorText:o,...i})=>t||o?(0,H.jsxs)("div",{className:(0,dM.cn)("space-y-2 p-4",e),...i,children:[H.jsx("h4",{className:"font-medium text-muted-foreground text-xs tracking-wide",children:o?"Error":"Result"}),(0,H.jsxs)("div",{className:(0,dM.cn)("overflow-x-auto rounded-md text-xs [&_table]:w-full p-5",o?"bg-destructive/10 text-destructive":"bg-muted/50 text-foreground"),children:[o&&H.jsx("div",{children:o}),t&&H.jsx("div",{children:t})]})]}):H.jsx(H.Fragment,{});var uC=o(65304),uR=o(87599),uL=o(36931),uD=o(14331),u$=o(3574),uZ=o(2424),uF=o(62288),uQ=o(54432),uG=o(88307),uU=o(59593),uV=o(12714),uK=o(52227),uW=o(3151),uJ=o(65685);function uY({open:e,onOpenChange:t,onSelectPrompt:o,agentId:i}){let[a,r]=(0,X.useState)(""),s=[];a&&s.push({or:[{name:{contains:a}},{description:{contains:a}},{content:{contains:a}}]});let{data:n,loading:l}=(0,uK.Sh)({page:1,limit:50,filters:s,sort:{field:"favorite_count",direction:"DESC"}}),d=n?.prompt_libraryPagination?.items||[],c=i?d.filter(e=>e.assigned_agents&&e.assigned_agents.includes(i)):[],u=i?d.filter(e=>!e.assigned_agents||!e.assigned_agents.includes(i)):d,p=e=>{o(e),t(!1),r("")};return H.jsx(uF.Vq,{open:e,onOpenChange:t,children:(0,H.jsxs)(uF.cZ,{className:"max-w-2xl max-h-[80vh]",children:[(0,H.jsxs)(uF.fK,{children:[H.jsx(uF.$N,{children:"Select a Prompt"}),H.jsx(uF.Be,{children:"Choose a prompt template to insert into your message"})]}),(0,H.jsxs)("div",{className:"relative",children:[H.jsx(uG.Z,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground"}),H.jsx(uQ.I,{placeholder:"Search prompts...",value:a,onChange:e=>r(e.target.value),className:"pl-10"})]}),H.jsx(uJ.x,{className:"h-[400px] pr-4",children:l?H.jsx("div",{className:"space-y-3",children:[1,2,3].map(e=>H.jsx(uC.O,{className:"h-24 w-full"},e))}):(0,H.jsxs)("div",{className:"space-y-4",children:[c.length>0&&(0,H.jsxs)("div",{children:[(0,H.jsxs)("div",{className:"flex items-center gap-2 mb-2",children:[H.jsx(uU.Z,{className:"h-4 w-4 text-yellow-500"}),H.jsx("h3",{className:"text-sm font-medium",children:"Recommended for this agent"})]}),H.jsx("div",{className:"space-y-2",children:c.map(e=>H.jsx(uH,{prompt:e,onSelect:p},e.id))})]}),u.length>0&&(0,H.jsxs)("div",{children:[c.length>0&&H.jsx("h3",{className:"text-sm font-medium mb-2",children:"All Prompts"}),H.jsx("div",{className:"space-y-2",children:u.map(e=>H.jsx(uH,{prompt:e,onSelect:p},e.id))})]}),0===d.length&&!l&&(0,H.jsxs)("div",{className:"flex flex-col items-center justify-center py-12 text-center",children:[H.jsx(dW.Z,{className:"h-12 w-12 text-muted-foreground mb-3"}),H.jsx("h3",{className:"text-lg font-medium",children:"No prompts found"}),H.jsx("p",{className:"text-sm text-muted-foreground",children:a?"Try a different search term":"Create your first prompt in the Prompt Library"})]})]})})]})})}function uH({prompt:e,onSelect:t}){let o=(0,uW.H)(e.content);return(0,H.jsxs)("button",{onClick:()=>t(e),className:"w-full text-left p-3 rounded-lg border hover:bg-accent transition-colors",children:[(0,H.jsxs)("div",{className:"flex items-start justify-between gap-2 mb-1",children:[H.jsx("h4",{className:"font-medium text-sm",children:e.name}),(0,H.jsxs)("div",{className:"flex items-center gap-2 text-xs text-muted-foreground flex-shrink-0",children:[(0,H.jsxs)("div",{className:"flex items-center gap-0.5",children:[H.jsx(uU.Z,{className:"h-3 w-3"}),H.jsx("span",{children:e.favorite_count||0})]}),(0,H.jsxs)("div",{className:"flex items-center gap-0.5",children:[H.jsx(uV.Z,{className:"h-3 w-3"}),H.jsx("span",{children:e.usage_count||0})]})]})]}),e.description&&H.jsx("p",{className:"text-xs text-muted-foreground line-clamp-2 mb-2",children:e.description}),(0,H.jsxs)("div",{className:"flex flex-wrap gap-1",children:[o.length>0&&(0,H.jsxs)(d6.C,{variant:"outline",className:"text-xs",children:[o.length," variable",1!==o.length?"s":""]}),e.tags?.slice(0,2).map(e=>H.jsx(d6.C,{variant:"secondary",className:"text-xs",children:e},e)),e.tags&&e.tags.length>2&&(0,H.jsxs)(d6.C,{variant:"secondary",className:"text-xs",children:["+",e.tags.length-2]})]})]})}var uX=o(31048);function u0(e){return e?e.split("_").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" "):""}function u2({open:e,onOpenChange:t,variables:o,promptName:i,onSubmit:a}){let[r,s]=(0,X.useState)({}),n=(e,t)=>{s(o=>({...o,[e]:t}))},l=o.every(e=>r[e]?.trim());return H.jsx(uF.Vq,{open:e,onOpenChange:t,children:(0,H.jsxs)(uF.cZ,{className:"max-w-md",children:[(0,H.jsxs)(uF.fK,{children:[H.jsx(uF.$N,{children:"Fill in Variables"}),(0,H.jsxs)(uF.Be,{children:['Complete the following fields for "',i,'"']})]}),H.jsx("div",{className:"space-y-4 py-4",children:o.map(e=>(0,H.jsxs)("div",{className:"space-y-2",children:[H.jsx(uX._,{htmlFor:e,children:u0(e)}),H.jsx(uQ.I,{id:e,placeholder:`Enter ${u0(e).toLowerCase()}...`,value:r[e]||"",onChange:t=>n(e,t.target.value)})]},e))}),(0,H.jsxs)(uF.cN,{children:[H.jsx(d0.z,{variant:"outline",onClick:()=>t(!1),children:"Cancel"}),H.jsx(d0.z,{onClick:()=>{a(r),s({})},disabled:!l,children:"Insert Prompt"})]})]})})}var u1=o(90434);function u5({session:e,agent:t,initialPromptId:o}){let[i,a]=(0,X.useState)(null),r=X.useContext(dK.E);(0,d3.d)();let{theme:s}=(0,u$.F)(),[n,l]=(0,X.useState)(null),[d,c]=(0,X.useState)(null),{user:u}=(0,X.useContext)(dk.S),[p,m]=(0,X.useState)(null),[g,h]=(0,X.useState)(!1),[v,f]=(0,X.useState)(""),[x,b]=(0,X.useState)([]),k=X.useRef(null),{toast:y}=(0,dH.pm)(),[M,I]=(0,X.useState)(!1),[w,S]=(0,X.useState)(!1),[A,T]=(0,X.useState)(null),[P]=(0,uK.VR)(),[N,O]=(0,X.useState)({rights_mode:e?.rights_mode||"private",users:e?.RBAC?.users||[],roles:e?.RBAC?.roles||[]}),_=(0,ei.aM)(dU.L5,{variables:{id:e.created_by},skip:!e.created_by}),z=(0,ei.aM)(dU.jL,{variables:{id:e.project},skip:!e.project}),{data:E}=(0,ei.aM)(dU.X0,{variables:{id:o},skip:!o}),[q,B]=(0,X.useState)(!1),[j,C]=(0,ea.D)(dU.r1),[R,L]=(0,X.useState)({totalTokens:0,reasoningTokens:0,inputTokens:0,outputTokens:0,cachedInputTokens:0});(0,ei.aM)(dU.N,{returnPartialData:!0,fetchPolicy:"network-only",nextFetchPolicy:"network-only",variables:{page:1,limit:50,filters:{session:{eq:e.id}}},onCompleted:e=>{e?.agent_messagesPagination&&G(e?.agent_messagesPagination.items.map(e=>JSON.parse(e.content)))}});let{messages:D,sendMessage:$,status:Z,stop:F,regenerate:Q,setMessages:G,addToolResult:U}=function({experimental_throttle:e,resume:t=!1,...o}={}){let i=(0,X.useRef)("chat"in o?o.chat:new db(o));("chat"in o&&o.chat!==i.current||"id"in o&&i.current.id!==o.id)&&(i.current="chat"in o?o.chat:new db(o));let a="id"in o?o.id:null,r=(0,X.useCallback)(t=>i.current["~registerMessagesCallback"](t,e),[e,a]),s=(0,X.useSyncExternalStore)(r,()=>i.current.messages,()=>i.current.messages),n=(0,X.useSyncExternalStore)(i.current["~registerStatusCallback"],()=>i.current.status,()=>i.current.status),l=(0,X.useSyncExternalStore)(i.current["~registerErrorCallback"],()=>i.current.error,()=>i.current.error),d=(0,X.useCallback)(e=>{"function"==typeof e&&(e=e(i.current.messages)),i.current.messages=e},[i]);return(0,X.useEffect)(()=>{t&&i.current.resumeStream()},[t,i]),{id:i.current.id,messages:s,setMessages:d,sendMessage:i.current.sendMessage,regenerate:i.current.regenerate,clearError:i.current.clearError,stop:i.current.stop,error:l,resumeStream:i.current.resumeStream,status:n,addToolResult:i.current.addToolResult}}({sendAutomaticallyWhen:sq,experimental_throttle:50,async onToolCall({toolCall:e}){if(!e.dynamic&&"getLocation"===e.toolName){let t=["New York","Los Angeles","Chicago","San Francisco"];U({tool:"confirm-tool-call",toolCallId:e.toolCallId,output:t[Math.floor(Math.random()*t.length)]})}},onError:e=>{console.log("error!!",e?.message);try{let{message:t}=JSON.parse(e?.message);a(t)}catch(t){a(e.message)}},transport:new sE({api:`${r?.backend}${t.slug}/${t.id}`,prepareSendMessagesRequest:async({messages:t,id:o,body:i})=>{let a=await (0,dV.LP)();if(!a)throw Error("No valid session token available.");return{body:{...i,message:t[t.length-1],id:o,session:e.id},headers:{User:u.id,Session:e.id,Authorization:`Bearer ${a}`,Stream:"true"}}}})}),V=((0,X.useMemo)(()=>{let e=D?.filter(e=>"user"===e.role)||[],t=D?.filter(e=>"assistant"===e.role)||[];return e.length>=1&&t.length>=1},[D]),e=>{f(t=>t?`${t}
|
|
45
|
+
Defaulting to \`null\`.`));let c=c6(r,d)?r:null,u=c7(c)?n(c,d):void 0;return(0,H.jsx)(cX,{scope:a,value:c,max:d,children:(0,H.jsx)(ca.WV.div,{"aria-valuemax":d,"aria-valuemin":0,"aria-valuenow":c7(c)?c:void 0,"aria-valuetext":u,role:"progressbar","data-state":c4(c,d),"data-value":c??void 0,"data-max":d,...l,ref:t})})});c2.displayName=cJ;var c1="ProgressIndicator",c5=X.forwardRef((e,t)=>{let{__scopeProgress:o,...i}=e,a=c0(c1,o);return(0,H.jsx)(ca.WV.div,{"data-state":c4(a.value,a.max),"data-value":a.value??void 0,"data-max":a.max,...i,ref:t})});function c3(e,t){return`${Math.round(e/t*100)}%`}function c4(e,t){return null==e?"indeterminate":e===t?"complete":"loading"}function c7(e){return"number"==typeof e}function c8(e){return c7(e)&&!isNaN(e)&&e>0}function c6(e,t){return c7(e)&&!isNaN(e)&&e<=t&&e>=0}c5.displayName=c1;let c9=X.forwardRef(({className:e,value:t,...o},i)=>H.jsx(c2,{ref:i,className:(0,dx.cn)("relative h-4 w-full overflow-hidden rounded-full bg-secondary",e),...o,children:H.jsx(c5,{className:"size-full flex-1 bg-primary transition-all",style:{transform:`translateX(-${100-(t||0)}%)`}})}));c9.displayName=c2.displayName;let ue=[{id:"alibaba:qwen3-coder-plus",provider:"alibaba",vendorId:"qwen3-coder-plus",displayName:"Qwen3 Coder Plus",family:"qwen3-coder-plus",status:"stable",context:{combinedMax:1048576,outputMax:65536},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1,outputPerMTokens:5},pricingSource:"models.dev",aliases:["alibaba/qwen3-coder-plus"],releasedAt:"2025-07-23",source:"https://www.alibabacloud.com/help/en/model-studio/models",contextSource:"https://www.alibabacloud.com/help/en/model-studio/models",verifiedAt:"2025-07-23"},{id:"amazon-bedrock:ai21.jamba-1-5-large-v1:0",provider:"amazon-bedrock",vendorId:"ai21.jamba-1-5-large-v1:0",displayName:"Jamba 1.5 Large",family:"ai21.jamba-1-5-large-v1:0",status:"stable",context:{combinedMax:256e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:2,outputPerMTokens:8},pricingSource:"models.dev",aliases:["amazon-bedrock/ai21.jamba-1-5-large-v1:0"],releasedAt:"2024-08-15",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2024-08-15"},{id:"amazon-bedrock:ai21.jamba-1-5-mini-v1:0",provider:"amazon-bedrock",vendorId:"ai21.jamba-1-5-mini-v1:0",displayName:"Jamba 1.5 Mini",family:"ai21.jamba-1-5-mini-v1:0",status:"stable",context:{combinedMax:256e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.2,outputPerMTokens:.4},pricingSource:"models.dev",aliases:["amazon-bedrock/ai21.jamba-1-5-mini-v1:0"],releasedAt:"2024-08-15",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2024-08-15"},{id:"amazon-bedrock:amazon.nova-lite-v1:0",provider:"amazon-bedrock",vendorId:"amazon.nova-lite-v1:0",displayName:"Nova Lite",family:"amazon.nova-lite-v1:0",status:"stable",context:{combinedMax:3e5,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.06,outputPerMTokens:.24},pricingSource:"models.dev",aliases:["amazon-bedrock/amazon.nova-lite-v1:0"],releasedAt:"2024-12-03",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2024-12-03"},{id:"amazon-bedrock:amazon.nova-micro-v1:0",provider:"amazon-bedrock",vendorId:"amazon.nova-micro-v1:0",displayName:"Nova Micro",family:"amazon.nova-micro-v1:0",status:"stable",context:{combinedMax:128e3,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.035,outputPerMTokens:.14},pricingSource:"models.dev",aliases:["amazon-bedrock/amazon.nova-micro-v1:0"],releasedAt:"2024-12-03",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2024-12-03"},{id:"amazon-bedrock:amazon.nova-premier-v1:0",provider:"amazon-bedrock",vendorId:"amazon.nova-premier-v1:0",displayName:"Nova Premier",family:"amazon.nova-premier-v1:0",status:"stable",context:{combinedMax:1e6,outputMax:16384},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:2.5,outputPerMTokens:12.5},pricingSource:"models.dev",aliases:["amazon-bedrock/amazon.nova-premier-v1:0"],releasedAt:"2024-12-03",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2024-12-03"},{id:"amazon-bedrock:amazon.nova-pro-v1:0",provider:"amazon-bedrock",vendorId:"amazon.nova-pro-v1:0",displayName:"Nova Pro",family:"amazon.nova-pro-v1:0",status:"stable",context:{combinedMax:3e5,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.8,outputPerMTokens:3.2},pricingSource:"models.dev",aliases:["amazon-bedrock/amazon.nova-pro-v1:0"],releasedAt:"2024-12-03",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2024-12-03"},{id:"amazon-bedrock:anthropic.claude-3-5-haiku-20241022-v1:0",provider:"amazon-bedrock",vendorId:"anthropic.claude-3-5-haiku-20241022-v1:0",displayName:"Claude Haiku 3.5",family:"anthropic.claude-3-5-haiku-20241022-v1:0",status:"stable",context:{combinedMax:2e5,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.8,outputPerMTokens:4},pricingSource:"models.dev",aliases:["amazon-bedrock/anthropic.claude-3-5-haiku-20241022-v1:0"],releasedAt:"2024-10-22",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2024-10-22"},{id:"amazon-bedrock:anthropic.claude-3-5-sonnet-20240620-v1:0",provider:"amazon-bedrock",vendorId:"anthropic.claude-3-5-sonnet-20240620-v1:0",displayName:"Claude Sonnet 3.5",family:"anthropic.claude-3-5-sonnet-20240620-v1:0",status:"stable",context:{combinedMax:2e5,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["amazon-bedrock/anthropic.claude-3-5-sonnet-20240620-v1:0"],releasedAt:"2024-06-20",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2024-06-20"},{id:"amazon-bedrock:anthropic.claude-3-5-sonnet-20241022-v2:0",provider:"amazon-bedrock",vendorId:"anthropic.claude-3-5-sonnet-20241022-v2:0",displayName:"Claude Sonnet 3.5 v2",family:"anthropic.claude-3-5-sonnet-20241022-v2:0",status:"stable",context:{combinedMax:2e5,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["amazon-bedrock/anthropic.claude-3-5-sonnet-20241022-v2:0"],releasedAt:"2024-10-22",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2024-10-22"},{id:"amazon-bedrock:anthropic.claude-3-7-sonnet-20250219-v1:0",provider:"amazon-bedrock",vendorId:"anthropic.claude-3-7-sonnet-20250219-v1:0",displayName:"Claude Sonnet 3.7",family:"anthropic.claude-3-7-sonnet-20250219-v1:0",status:"stable",context:{combinedMax:2e5,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["amazon-bedrock/anthropic.claude-3-7-sonnet-20250219-v1:0"],releasedAt:"2025-02-19",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2025-02-19"},{id:"amazon-bedrock:anthropic.claude-3-haiku-20240307-v1:0",provider:"amazon-bedrock",vendorId:"anthropic.claude-3-haiku-20240307-v1:0",displayName:"Claude Haiku 3",family:"anthropic.claude-3-haiku-20240307-v1:0",status:"stable",context:{combinedMax:2e5,outputMax:4096},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.25,outputPerMTokens:1.25},pricingSource:"models.dev",aliases:["amazon-bedrock/anthropic.claude-3-haiku-20240307-v1:0"],releasedAt:"2024-03-13",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2024-03-13"},{id:"amazon-bedrock:anthropic.claude-3-opus-20240229-v1:0",provider:"amazon-bedrock",vendorId:"anthropic.claude-3-opus-20240229-v1:0",displayName:"Claude Opus 3",family:"anthropic.claude-3-opus-20240229-v1:0",status:"stable",context:{combinedMax:2e5,outputMax:4096},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:15,outputPerMTokens:75},pricingSource:"models.dev",aliases:["amazon-bedrock/anthropic.claude-3-opus-20240229-v1:0"],releasedAt:"2024-02-29",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2024-02-29"},{id:"amazon-bedrock:anthropic.claude-3-sonnet-20240229-v1:0",provider:"amazon-bedrock",vendorId:"anthropic.claude-3-sonnet-20240229-v1:0",displayName:"Claude Sonnet 3",family:"anthropic.claude-3-sonnet-20240229-v1:0",status:"stable",context:{combinedMax:2e5,outputMax:4096},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["amazon-bedrock/anthropic.claude-3-sonnet-20240229-v1:0"],releasedAt:"2024-03-04",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2024-03-04"},{id:"amazon-bedrock:anthropic.claude-instant-v1",provider:"amazon-bedrock",vendorId:"anthropic.claude-instant-v1",displayName:"Claude Instant",family:"anthropic.claude-instant-v1",status:"stable",context:{combinedMax:1e5,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.8,outputPerMTokens:2.4},pricingSource:"models.dev",aliases:["amazon-bedrock/anthropic.claude-instant-v1"],releasedAt:"2023-03-01",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2023-03-01"},{id:"amazon-bedrock:anthropic.claude-opus-4-1-20250805-v1:0",provider:"amazon-bedrock",vendorId:"anthropic.claude-opus-4-1-20250805-v1:0",displayName:"Claude Opus 4.1",family:"anthropic.claude-opus-4-1-20250805-v1:0",status:"stable",context:{combinedMax:2e5,outputMax:32e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:15,outputPerMTokens:75},pricingSource:"models.dev",aliases:["amazon-bedrock/anthropic.claude-opus-4-1-20250805-v1:0"],releasedAt:"2025-08-05",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2025-08-05"},{id:"amazon-bedrock:anthropic.claude-opus-4-20250514-v1:0",provider:"amazon-bedrock",vendorId:"anthropic.claude-opus-4-20250514-v1:0",displayName:"Claude Opus 4",family:"anthropic.claude-opus-4-20250514-v1:0",status:"stable",context:{combinedMax:2e5,outputMax:32e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:15,outputPerMTokens:75},pricingSource:"models.dev",aliases:["amazon-bedrock/anthropic.claude-opus-4-20250514-v1:0"],releasedAt:"2025-05-22",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2025-05-22"},{id:"amazon-bedrock:anthropic.claude-sonnet-4-20250514-v1:0",provider:"amazon-bedrock",vendorId:"anthropic.claude-sonnet-4-20250514-v1:0",displayName:"Claude Sonnet 4",family:"anthropic.claude-sonnet-4-20250514-v1:0",status:"stable",context:{combinedMax:2e5,outputMax:64e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["amazon-bedrock/anthropic.claude-sonnet-4-20250514-v1:0"],releasedAt:"2025-05-22",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2025-05-22"},{id:"amazon-bedrock:anthropic.claude-v2",provider:"amazon-bedrock",vendorId:"anthropic.claude-v2",displayName:"Claude 2",family:"anthropic.claude-v2",status:"stable",context:{combinedMax:1e5,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:8,outputPerMTokens:24},pricingSource:"models.dev",aliases:["amazon-bedrock/anthropic.claude-v2"],releasedAt:"2023-07-11",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2023-07-11"},{id:"amazon-bedrock:anthropic.claude-v2:1",provider:"amazon-bedrock",vendorId:"anthropic.claude-v2:1",displayName:"Claude 2.1",family:"anthropic.claude-v2:1",status:"stable",context:{combinedMax:2e5,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:8,outputPerMTokens:24},pricingSource:"models.dev",aliases:["amazon-bedrock/anthropic.claude-v2:1"],releasedAt:"2023-11-21",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2023-11-21"},{id:"amazon-bedrock:cohere.command-light-text-v14",provider:"amazon-bedrock",vendorId:"cohere.command-light-text-v14",displayName:"Command Light",family:"cohere.command-light-text-v14",status:"stable",context:{combinedMax:4096,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.3,outputPerMTokens:.6},pricingSource:"models.dev",aliases:["amazon-bedrock/cohere.command-light-text-v14"],releasedAt:"2023-11-01",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2023-11-01"},{id:"amazon-bedrock:cohere.command-r-plus-v1:0",provider:"amazon-bedrock",vendorId:"cohere.command-r-plus-v1:0",displayName:"Command R+",family:"cohere.command-r-plus-v1:0",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["amazon-bedrock/cohere.command-r-plus-v1:0"],releasedAt:"2024-04-04",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2024-04-04"},{id:"amazon-bedrock:cohere.command-r-v1:0",provider:"amazon-bedrock",vendorId:"cohere.command-r-v1:0",displayName:"Command R",family:"cohere.command-r-v1:0",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.5,outputPerMTokens:1.5},pricingSource:"models.dev",aliases:["amazon-bedrock/cohere.command-r-v1:0"],releasedAt:"2024-03-11",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2024-03-11"},{id:"amazon-bedrock:cohere.command-text-v14",provider:"amazon-bedrock",vendorId:"cohere.command-text-v14",displayName:"Command",family:"cohere.command-text-v14",status:"stable",context:{combinedMax:4096,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1.5,outputPerMTokens:2},pricingSource:"models.dev",aliases:["amazon-bedrock/cohere.command-text-v14"],releasedAt:"2023-11-01",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2023-11-01"},{id:"amazon-bedrock:deepseek.r1-v1:0",provider:"amazon-bedrock",vendorId:"deepseek.r1-v1:0",displayName:"DeepSeek-R1",family:"deepseek.r1-v1:0",status:"stable",context:{combinedMax:128e3,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1.35,outputPerMTokens:5.4},pricingSource:"models.dev",aliases:["amazon-bedrock/deepseek.r1-v1:0"],releasedAt:"2025-01-20",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2025-05-29"},{id:"amazon-bedrock:meta.llama3-1-70b-instruct-v1:0",provider:"amazon-bedrock",vendorId:"meta.llama3-1-70b-instruct-v1:0",displayName:"Llama 3.1 70B Instruct",family:"meta.llama3-1-70b-instruct-v1:0",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.72,outputPerMTokens:.72},pricingSource:"models.dev",aliases:["amazon-bedrock/meta.llama3-1-70b-instruct-v1:0"],releasedAt:"2024-07-23",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2024-07-23"},{id:"amazon-bedrock:meta.llama3-1-8b-instruct-v1:0",provider:"amazon-bedrock",vendorId:"meta.llama3-1-8b-instruct-v1:0",displayName:"Llama 3.1 8B Instruct",family:"meta.llama3-1-8b-instruct-v1:0",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.22,outputPerMTokens:.22},pricingSource:"models.dev",aliases:["amazon-bedrock/meta.llama3-1-8b-instruct-v1:0"],releasedAt:"2024-07-23",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2024-07-23"},{id:"amazon-bedrock:meta.llama3-2-11b-instruct-v1:0",provider:"amazon-bedrock",vendorId:"meta.llama3-2-11b-instruct-v1:0",displayName:"Llama 3.2 11B Instruct",family:"meta.llama3-2-11b-instruct-v1:0",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.16,outputPerMTokens:.16},pricingSource:"models.dev",aliases:["amazon-bedrock/meta.llama3-2-11b-instruct-v1:0"],releasedAt:"2024-09-25",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2024-09-25"},{id:"amazon-bedrock:meta.llama3-2-1b-instruct-v1:0",provider:"amazon-bedrock",vendorId:"meta.llama3-2-1b-instruct-v1:0",displayName:"Llama 3.2 1B Instruct",family:"meta.llama3-2-1b-instruct-v1:0",status:"stable",context:{combinedMax:131e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.1,outputPerMTokens:.1},pricingSource:"models.dev",aliases:["amazon-bedrock/meta.llama3-2-1b-instruct-v1:0"],releasedAt:"2024-09-25",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2024-09-25"},{id:"amazon-bedrock:meta.llama3-2-3b-instruct-v1:0",provider:"amazon-bedrock",vendorId:"meta.llama3-2-3b-instruct-v1:0",displayName:"Llama 3.2 3B Instruct",family:"meta.llama3-2-3b-instruct-v1:0",status:"stable",context:{combinedMax:131e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.15,outputPerMTokens:.15},pricingSource:"models.dev",aliases:["amazon-bedrock/meta.llama3-2-3b-instruct-v1:0"],releasedAt:"2024-09-25",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2024-09-25"},{id:"amazon-bedrock:meta.llama3-2-90b-instruct-v1:0",provider:"amazon-bedrock",vendorId:"meta.llama3-2-90b-instruct-v1:0",displayName:"Llama 3.2 90B Instruct",family:"meta.llama3-2-90b-instruct-v1:0",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.72,outputPerMTokens:.72},pricingSource:"models.dev",aliases:["amazon-bedrock/meta.llama3-2-90b-instruct-v1:0"],releasedAt:"2024-09-25",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2024-09-25"},{id:"amazon-bedrock:meta.llama3-3-70b-instruct-v1:0",provider:"amazon-bedrock",vendorId:"meta.llama3-3-70b-instruct-v1:0",displayName:"Llama 3.3 70B Instruct",family:"meta.llama3-3-70b-instruct-v1:0",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.72,outputPerMTokens:.72},pricingSource:"models.dev",aliases:["amazon-bedrock/meta.llama3-3-70b-instruct-v1:0"],releasedAt:"2024-12-06",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2024-12-06"},{id:"amazon-bedrock:meta.llama3-70b-instruct-v1:0",provider:"amazon-bedrock",vendorId:"meta.llama3-70b-instruct-v1:0",displayName:"Llama 3 70B Instruct",family:"meta.llama3-70b-instruct-v1:0",status:"stable",context:{combinedMax:8192,outputMax:2048},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:2.65,outputPerMTokens:3.5},pricingSource:"models.dev",aliases:["amazon-bedrock/meta.llama3-70b-instruct-v1:0"],releasedAt:"2024-07-23",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2024-07-23"},{id:"amazon-bedrock:meta.llama3-8b-instruct-v1:0",provider:"amazon-bedrock",vendorId:"meta.llama3-8b-instruct-v1:0",displayName:"Llama 3 8B Instruct",family:"meta.llama3-8b-instruct-v1:0",status:"stable",context:{combinedMax:8192,outputMax:2048},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.3,outputPerMTokens:.6},pricingSource:"models.dev",aliases:["amazon-bedrock/meta.llama3-8b-instruct-v1:0"],releasedAt:"2024-07-23",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2024-07-23"},{id:"amazon-bedrock:meta.llama4-maverick-17b-instruct-v1:0",provider:"amazon-bedrock",vendorId:"meta.llama4-maverick-17b-instruct-v1:0",displayName:"Llama 4 Maverick 17B Instruct",family:"meta.llama4-maverick-17b-instruct-v1:0",status:"stable",context:{combinedMax:1e6,outputMax:16384},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.24,outputPerMTokens:.97},pricingSource:"models.dev",aliases:["amazon-bedrock/meta.llama4-maverick-17b-instruct-v1:0"],releasedAt:"2025-04-05",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2025-04-05"},{id:"amazon-bedrock:meta.llama4-scout-17b-instruct-v1:0",provider:"amazon-bedrock",vendorId:"meta.llama4-scout-17b-instruct-v1:0",displayName:"Llama 4 Scout 17B Instruct",family:"meta.llama4-scout-17b-instruct-v1:0",status:"stable",context:{combinedMax:35e5,outputMax:16384},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.17,outputPerMTokens:.66},pricingSource:"models.dev",aliases:["amazon-bedrock/meta.llama4-scout-17b-instruct-v1:0"],releasedAt:"2025-04-05",source:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",contextSource:"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",verifiedAt:"2025-04-05"},{id:"anthropic:claude-3-5-haiku-20241022",provider:"anthropic",vendorId:"claude-3-5-haiku-20241022",displayName:"Claude Haiku 3.5",family:"claude-3-5-haiku-20241022",status:"stable",context:{combinedMax:2e5,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.8,outputPerMTokens:4},pricingSource:"models.dev",aliases:["anthropic/claude-3-5-haiku-20241022"],releasedAt:"2024-10-22",source:"https://docs.anthropic.com/en/docs/about-claude/models",contextSource:"https://docs.anthropic.com/en/docs/about-claude/models",verifiedAt:"2024-10-22"},{id:"anthropic:claude-3-5-sonnet-20240620",provider:"anthropic",vendorId:"claude-3-5-sonnet-20240620",displayName:"Claude Sonnet 3.5",family:"claude-3-5-sonnet-20240620",status:"stable",context:{combinedMax:2e5,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["anthropic/claude-3-5-sonnet-20240620"],releasedAt:"2024-06-20",source:"https://docs.anthropic.com/en/docs/about-claude/models",contextSource:"https://docs.anthropic.com/en/docs/about-claude/models",verifiedAt:"2024-06-20"},{id:"anthropic:claude-3-5-sonnet-20241022",provider:"anthropic",vendorId:"claude-3-5-sonnet-20241022",displayName:"Claude Sonnet 3.5 v2",family:"claude-3-5-sonnet-20241022",status:"stable",context:{combinedMax:2e5,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["anthropic/claude-3-5-sonnet-20241022"],releasedAt:"2024-10-22",source:"https://docs.anthropic.com/en/docs/about-claude/models",contextSource:"https://docs.anthropic.com/en/docs/about-claude/models",verifiedAt:"2024-10-22"},{id:"anthropic:claude-3-7-sonnet-20250219",provider:"anthropic",vendorId:"claude-3-7-sonnet-20250219",displayName:"Claude Sonnet 3.7",family:"claude-3-7-sonnet-20250219",status:"stable",context:{combinedMax:2e5,outputMax:64e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["anthropic/claude-3-7-sonnet-20250219"],releasedAt:"2025-02-19",source:"https://docs.anthropic.com/en/docs/about-claude/models",contextSource:"https://docs.anthropic.com/en/docs/about-claude/models",verifiedAt:"2025-02-19"},{id:"anthropic:claude-3-haiku-20240307",provider:"anthropic",vendorId:"claude-3-haiku-20240307",displayName:"Claude Haiku 3",family:"claude-3-haiku-20240307",status:"stable",context:{combinedMax:2e5,outputMax:4096},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.25,outputPerMTokens:1.25},pricingSource:"models.dev",aliases:["anthropic/claude-3-haiku-20240307"],releasedAt:"2024-03-13",source:"https://docs.anthropic.com/en/docs/about-claude/models",contextSource:"https://docs.anthropic.com/en/docs/about-claude/models",verifiedAt:"2024-03-13"},{id:"anthropic:claude-3-opus-20240229",provider:"anthropic",vendorId:"claude-3-opus-20240229",displayName:"Claude Opus 3",family:"claude-3-opus-20240229",status:"stable",context:{combinedMax:2e5,outputMax:4096},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:15,outputPerMTokens:75},pricingSource:"models.dev",aliases:["anthropic/claude-3-opus-20240229"],releasedAt:"2024-02-29",source:"https://docs.anthropic.com/en/docs/about-claude/models",contextSource:"https://docs.anthropic.com/en/docs/about-claude/models",verifiedAt:"2024-02-29"},{id:"anthropic:claude-3-sonnet-20240229",provider:"anthropic",vendorId:"claude-3-sonnet-20240229",displayName:"Claude Sonnet 3",family:"claude-3-sonnet-20240229",status:"stable",context:{combinedMax:2e5,outputMax:4096},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["anthropic/claude-3-sonnet-20240229"],releasedAt:"2024-03-04",source:"https://docs.anthropic.com/en/docs/about-claude/models",contextSource:"https://docs.anthropic.com/en/docs/about-claude/models",verifiedAt:"2024-03-04"},{id:"anthropic:claude-opus-4-1-20250805",provider:"anthropic",vendorId:"claude-opus-4-1-20250805",displayName:"Claude Opus 4.1",family:"claude-opus-4-1-20250805",status:"stable",context:{combinedMax:2e5,outputMax:32e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:15,outputPerMTokens:75},pricingSource:"models.dev",aliases:["anthropic/claude-opus-4-1-20250805"],releasedAt:"2025-08-05",source:"https://docs.anthropic.com/en/docs/about-claude/models",contextSource:"https://docs.anthropic.com/en/docs/about-claude/models",verifiedAt:"2025-08-05"},{id:"anthropic:claude-opus-4-20250514",provider:"anthropic",vendorId:"claude-opus-4-20250514",displayName:"Claude Opus 4",family:"claude-opus-4-20250514",status:"stable",context:{combinedMax:2e5,outputMax:32e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:15,outputPerMTokens:75},pricingSource:"models.dev",aliases:["anthropic/claude-opus-4-20250514"],releasedAt:"2025-05-22",source:"https://docs.anthropic.com/en/docs/about-claude/models",contextSource:"https://docs.anthropic.com/en/docs/about-claude/models",verifiedAt:"2025-05-22"},{id:"anthropic:claude-sonnet-4-20250514",provider:"anthropic",vendorId:"claude-sonnet-4-20250514",displayName:"Claude Sonnet 4",family:"claude-sonnet-4-20250514",status:"stable",context:{combinedMax:2e5,outputMax:64e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["anthropic/claude-sonnet-4-20250514"],releasedAt:"2025-05-22",source:"https://docs.anthropic.com/en/docs/about-claude/models",contextSource:"https://docs.anthropic.com/en/docs/about-claude/models",verifiedAt:"2025-05-22"},{id:"azure:codex-mini",provider:"azure",vendorId:"codex-mini",displayName:"Codex Mini",family:"codex-mini",status:"stable",context:{combinedMax:2e5,outputMax:1e5},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1.5,outputPerMTokens:6},pricingSource:"models.dev",aliases:["azure/codex-mini"],releasedAt:"2025-05-16",source:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",contextSource:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",verifiedAt:"2025-05-16"},{id:"azure:gpt-3.5-turbo-0125",provider:"azure",vendorId:"gpt-3.5-turbo-0125",displayName:"GPT-3.5 Turbo 0125",family:"gpt-3.5-turbo-0125",status:"stable",context:{combinedMax:16384,outputMax:16384},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.5,outputPerMTokens:1.5},pricingSource:"models.dev",aliases:["azure/gpt-3.5-turbo-0125"],releasedAt:"2024-01-25",source:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",contextSource:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",verifiedAt:"2024-01-25"},{id:"azure:gpt-3.5-turbo-0301",provider:"azure",vendorId:"gpt-3.5-turbo-0301",displayName:"GPT-3.5 Turbo 0301",family:"gpt-3.5-turbo-0301",status:"stable",context:{combinedMax:4096,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1.5,outputPerMTokens:2},pricingSource:"models.dev",aliases:["azure/gpt-3.5-turbo-0301"],releasedAt:"2023-03-01",source:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",contextSource:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",verifiedAt:"2023-03-01"},{id:"azure:gpt-3.5-turbo-0613",provider:"azure",vendorId:"gpt-3.5-turbo-0613",displayName:"GPT-3.5 Turbo 0613",family:"gpt-3.5-turbo-0613",status:"stable",context:{combinedMax:16384,outputMax:16384},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:3,outputPerMTokens:4},pricingSource:"models.dev",aliases:["azure/gpt-3.5-turbo-0613"],releasedAt:"2023-06-13",source:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",contextSource:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",verifiedAt:"2023-06-13"},{id:"azure:gpt-3.5-turbo-1106",provider:"azure",vendorId:"gpt-3.5-turbo-1106",displayName:"GPT-3.5 Turbo 1106",family:"gpt-3.5-turbo-1106",status:"stable",context:{combinedMax:16384,outputMax:16384},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1,outputPerMTokens:2},pricingSource:"models.dev",aliases:["azure/gpt-3.5-turbo-1106"],releasedAt:"2023-11-06",source:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",contextSource:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",verifiedAt:"2023-11-06"},{id:"azure:gpt-3.5-turbo-instruct",provider:"azure",vendorId:"gpt-3.5-turbo-instruct",displayName:"GPT-3.5 Turbo Instruct",family:"gpt-3.5-turbo-instruct",status:"stable",context:{combinedMax:4096,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1.5,outputPerMTokens:2},pricingSource:"models.dev",aliases:["azure/gpt-3.5-turbo-instruct"],releasedAt:"2023-09-21",source:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",contextSource:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",verifiedAt:"2023-09-21"},{id:"azure:gpt-4",provider:"azure",vendorId:"gpt-4",displayName:"GPT-4",family:"gpt-4",status:"stable",context:{combinedMax:8192,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:60,outputPerMTokens:120},pricingSource:"models.dev",aliases:["azure/gpt-4"],releasedAt:"2023-03-14",source:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",contextSource:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",verifiedAt:"2023-03-14"},{id:"azure:gpt-4-32k",provider:"azure",vendorId:"gpt-4-32k",displayName:"GPT-4 32K",family:"gpt-4-32k",status:"stable",context:{combinedMax:32768,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:60,outputPerMTokens:120},pricingSource:"models.dev",aliases:["azure/gpt-4-32k"],releasedAt:"2023-03-14",source:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",contextSource:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",verifiedAt:"2023-03-14"},{id:"azure:gpt-4-turbo",provider:"azure",vendorId:"gpt-4-turbo",displayName:"GPT-4 Turbo",family:"gpt-4-turbo",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:10,outputPerMTokens:30},pricingSource:"models.dev",aliases:["azure/gpt-4-turbo"],releasedAt:"2023-11-06",source:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",contextSource:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",verifiedAt:"2024-04-09"},{id:"azure:gpt-4-turbo-vision",provider:"azure",vendorId:"gpt-4-turbo-vision",displayName:"GPT-4 Turbo Vision",family:"gpt-4-turbo-vision",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:10,outputPerMTokens:30},pricingSource:"models.dev",aliases:["azure/gpt-4-turbo-vision"],releasedAt:"2023-11-06",source:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",contextSource:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",verifiedAt:"2024-04-09"},{id:"azure:gpt-4.1",provider:"azure",vendorId:"gpt-4.1",displayName:"GPT-4.1",family:"gpt-4.1",status:"stable",context:{combinedMax:1047576,outputMax:32768},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:2,outputPerMTokens:8},pricingSource:"models.dev",aliases:["azure/gpt-4.1"],releasedAt:"2025-04-14",source:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",contextSource:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",verifiedAt:"2025-04-14"},{id:"azure:gpt-4.1-mini",provider:"azure",vendorId:"gpt-4.1-mini",displayName:"GPT-4.1 mini",family:"gpt-4.1-mini",status:"stable",context:{combinedMax:1047576,outputMax:32768},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.4,outputPerMTokens:1.6},pricingSource:"models.dev",aliases:["azure/gpt-4.1-mini"],releasedAt:"2025-04-14",source:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",contextSource:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",verifiedAt:"2025-04-14"},{id:"azure:gpt-4.1-nano",provider:"azure",vendorId:"gpt-4.1-nano",displayName:"GPT-4.1 nano",family:"gpt-4.1-nano",status:"stable",context:{combinedMax:1047576,outputMax:32768},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.1,outputPerMTokens:.4},pricingSource:"models.dev",aliases:["azure/gpt-4.1-nano"],releasedAt:"2025-04-14",source:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",contextSource:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",verifiedAt:"2025-04-14"},{id:"azure:gpt-4o",provider:"azure",vendorId:"gpt-4o",displayName:"GPT-4o",family:"gpt-4o",status:"stable",context:{combinedMax:128e3,outputMax:16384},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:2.5,outputPerMTokens:10},pricingSource:"models.dev",aliases:["azure/gpt-4o"],releasedAt:"2024-05-13",source:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",contextSource:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",verifiedAt:"2024-05-13"},{id:"azure:gpt-4o-mini",provider:"azure",vendorId:"gpt-4o-mini",displayName:"GPT-4o mini",family:"gpt-4o-mini",status:"stable",context:{combinedMax:128e3,outputMax:16384},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.15,outputPerMTokens:.6},pricingSource:"models.dev",aliases:["azure/gpt-4o-mini"],releasedAt:"2024-07-18",source:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",contextSource:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",verifiedAt:"2024-07-18"},{id:"azure:gpt-5",provider:"azure",vendorId:"gpt-5",displayName:"GPT-5",family:"gpt-5",status:"stable",context:{combinedMax:272e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:1.25,outputPerMTokens:10},pricingSource:"models.dev",aliases:["azure/gpt-5"],releasedAt:"2025-08-07",source:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",contextSource:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",verifiedAt:"2025-08-07"},{id:"azure:gpt-5-chat",provider:"azure",vendorId:"gpt-5-chat",displayName:"GPT-5 Chat",family:"gpt-5-chat",status:"stable",context:{combinedMax:128e3,outputMax:16384},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:1.25,outputPerMTokens:10},pricingSource:"models.dev",aliases:["azure/gpt-5-chat"],releasedAt:"2025-08-07",source:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",contextSource:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",verifiedAt:"2025-08-07"},{id:"azure:gpt-5-mini",provider:"azure",vendorId:"gpt-5-mini",displayName:"GPT-5 Mini",family:"gpt-5-mini",status:"stable",context:{combinedMax:272e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.25,outputPerMTokens:2},pricingSource:"models.dev",aliases:["azure/gpt-5-mini"],releasedAt:"2025-08-07",source:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",contextSource:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",verifiedAt:"2025-08-07"},{id:"azure:gpt-5-nano",provider:"azure",vendorId:"gpt-5-nano",displayName:"GPT-5 Nano",family:"gpt-5-nano",status:"stable",context:{combinedMax:272e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.05,outputPerMTokens:.4},pricingSource:"models.dev",aliases:["azure/gpt-5-nano"],releasedAt:"2025-08-07",source:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",contextSource:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",verifiedAt:"2025-08-07"},{id:"azure:o1",provider:"azure",vendorId:"o1",displayName:"o1",family:"o1",status:"stable",context:{combinedMax:2e5,outputMax:1e5},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:15,outputPerMTokens:60},pricingSource:"models.dev",aliases:["azure/o1"],releasedAt:"2024-12-05",source:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",contextSource:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",verifiedAt:"2024-12-05"},{id:"azure:o1-mini",provider:"azure",vendorId:"o1-mini",displayName:"o1-mini",family:"o1-mini",status:"stable",context:{combinedMax:128e3,outputMax:65536},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1.1,outputPerMTokens:4.4},pricingSource:"models.dev",aliases:["azure/o1-mini"],releasedAt:"2024-09-12",source:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",contextSource:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",verifiedAt:"2024-09-12"},{id:"azure:o1-preview",provider:"azure",vendorId:"o1-preview",displayName:"o1-preview",family:"o1-preview",status:"stable",context:{combinedMax:128e3,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:16.5,outputPerMTokens:66},pricingSource:"models.dev",aliases:["azure/o1-preview"],releasedAt:"2024-09-12",source:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",contextSource:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",verifiedAt:"2024-09-12"},{id:"azure:o3",provider:"azure",vendorId:"o3",displayName:"o3",family:"o3",status:"stable",context:{combinedMax:2e5,outputMax:1e5},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:2,outputPerMTokens:8},pricingSource:"models.dev",aliases:["azure/o3"],releasedAt:"2025-04-16",source:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",contextSource:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",verifiedAt:"2025-04-16"},{id:"azure:o3-mini",provider:"azure",vendorId:"o3-mini",displayName:"o3-mini",family:"o3-mini",status:"stable",context:{combinedMax:2e5,outputMax:1e5},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1.1,outputPerMTokens:4.4},pricingSource:"models.dev",aliases:["azure/o3-mini"],releasedAt:"2024-12-20",source:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",contextSource:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",verifiedAt:"2025-01-29"},{id:"azure:o4-mini",provider:"azure",vendorId:"o4-mini",displayName:"o4-mini",family:"o4-mini",status:"stable",context:{combinedMax:2e5,outputMax:1e5},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:1.1,outputPerMTokens:4.4},pricingSource:"models.dev",aliases:["azure/o4-mini"],releasedAt:"2025-04-16",source:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",contextSource:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models",verifiedAt:"2025-04-16"},{id:"baseten:Moonshotai-Kimi-K2-Instruct-0905",provider:"baseten",vendorId:"Moonshotai-Kimi-K2-Instruct-0905",displayName:"moonshotai/Kimi-K2-Instruct-0905",family:"Moonshotai-Kimi-K2-Instruct-0905",status:"stable",context:{combinedMax:262144,outputMax:262144},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.6,outputPerMTokens:2.5},pricingSource:"models.dev",aliases:["baseten/Moonshotai-Kimi-K2-Instruct-0905"],releasedAt:"2025-09-05",source:"https://docs.baseten.co/development/model-apis/overview",contextSource:"https://docs.baseten.co/development/model-apis/overview",verifiedAt:"2025-09-05"},{id:"baseten:Qwen-Qwen3-Coder-480B-A35B-Instruct",provider:"baseten",vendorId:"Qwen-Qwen3-Coder-480B-A35B-Instruct",displayName:"Qwen/Qwen3-Coder-480B-A35B-Instruct",family:"Qwen-Qwen3-Coder-480B-A35B-Instruct",status:"stable",context:{combinedMax:262144,outputMax:66536},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.38,outputPerMTokens:1.53},pricingSource:"models.dev",aliases:["baseten/Qwen-Qwen3-Coder-480B-A35B-Instruct"],releasedAt:"2025-07-23",source:"https://docs.baseten.co/development/model-apis/overview",contextSource:"https://docs.baseten.co/development/model-apis/overview",verifiedAt:"2025-07-23"},{id:"cerebras:gpt-oss-120b",provider:"cerebras",vendorId:"gpt-oss-120b",displayName:"GPT OSS 120B",family:"gpt-oss-120b",status:"stable",context:{combinedMax:131072,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.25,outputPerMTokens:.69},pricingSource:"models.dev",aliases:["cerebras/gpt-oss-120b"],releasedAt:"2025-08-05",source:"https://inference-docs.cerebras.ai/models/overview",contextSource:"https://inference-docs.cerebras.ai/models/overview",verifiedAt:"2025-08-05"},{id:"cerebras:qwen-3-235b-a22b-instruct-2507",provider:"cerebras",vendorId:"qwen-3-235b-a22b-instruct-2507",displayName:"Qwen 3 235B Instruct",family:"qwen-3-235b-a22b-instruct-2507",status:"stable",context:{combinedMax:131e3,outputMax:32e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.6,outputPerMTokens:1.2},pricingSource:"models.dev",aliases:["cerebras/qwen-3-235b-a22b-instruct-2507"],releasedAt:"2025-07-22",source:"https://inference-docs.cerebras.ai/models/overview",contextSource:"https://inference-docs.cerebras.ai/models/overview",verifiedAt:"2025-07-22"},{id:"cerebras:qwen-3-coder-480b",provider:"cerebras",vendorId:"qwen-3-coder-480b",displayName:"Qwen 3 Coder 480B",family:"qwen-3-coder-480b",status:"stable",context:{combinedMax:131e3,outputMax:32e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:2,outputPerMTokens:2},pricingSource:"models.dev",aliases:["cerebras/qwen-3-coder-480b"],releasedAt:"2025-07-23",source:"https://inference-docs.cerebras.ai/models/overview",contextSource:"https://inference-docs.cerebras.ai/models/overview",verifiedAt:"2025-07-23"},{id:"chutes:chutesai/Devstral-Small-2505",provider:"chutes",vendorId:"chutesai/Devstral-Small-2505",displayName:"Devstral Small (2505)",family:"chutesai/Devstral-Small-2505",status:"stable",context:{combinedMax:32768,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.02,outputPerMTokens:.08},pricingSource:"models.dev",aliases:["chutes/chutesai/Devstral-Small-2505"],releasedAt:"2025-05-21",source:"https://llm.chutes.ai/v1/models",contextSource:"https://llm.chutes.ai/v1/models",verifiedAt:"2025-05-21"},{id:"chutes:chutesai/Mistral-Small-3.2-24B-Instruct-2506",provider:"chutes",vendorId:"chutesai/Mistral-Small-3.2-24B-Instruct-2506",displayName:"Mistral Small 3.2 24B Instruct (2506)",family:"chutesai/Mistral-Small-3.2-24B-Instruct-2506",status:"stable",context:{combinedMax:131072,outputMax:131072},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.02,outputPerMTokens:.08},pricingSource:"models.dev",aliases:["chutes/chutesai/Mistral-Small-3.2-24B-Instruct-2506"],releasedAt:"2025-06-20",source:"https://llm.chutes.ai/v1/models",contextSource:"https://llm.chutes.ai/v1/models",verifiedAt:"2025-06-20"},{id:"chutes:deepseek-ai/DeepSeek-R1-0528",provider:"chutes",vendorId:"deepseek-ai/DeepSeek-R1-0528",displayName:"DeepSeek R1 (0528)",family:"deepseek-ai/DeepSeek-R1-0528",status:"stable",context:{combinedMax:75e3,outputMax:163840},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.18,outputPerMTokens:.72},pricingSource:"models.dev",aliases:["chutes/deepseek-ai/DeepSeek-R1-0528"],releasedAt:"2025-08-01",source:"https://llm.chutes.ai/v1/models",contextSource:"https://llm.chutes.ai/v1/models",verifiedAt:"2025-08-01"},{id:"chutes:deepseek-ai/DeepSeek-R1-0528-Qwen3-8B",provider:"chutes",vendorId:"deepseek-ai/DeepSeek-R1-0528-Qwen3-8B",displayName:"DeepSeek R1 0528 Qwen3 8B",family:"deepseek-ai/DeepSeek-R1-0528-Qwen3-8B",status:"stable",context:{combinedMax:131072,outputMax:131072},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.02,outputPerMTokens:.07},pricingSource:"models.dev",aliases:["chutes/deepseek-ai/DeepSeek-R1-0528-Qwen3-8B"],releasedAt:"2025-05-29",source:"https://llm.chutes.ai/v1/models",contextSource:"https://llm.chutes.ai/v1/models",verifiedAt:"2025-05-29"},{id:"chutes:deepseek-ai/DeepSeek-R1-Distill-Llama-70B",provider:"chutes",vendorId:"deepseek-ai/DeepSeek-R1-Distill-Llama-70B",displayName:"DeepSeek R1 Distill Llama 70B",family:"deepseek-ai/DeepSeek-R1-Distill-Llama-70B",status:"stable",context:{combinedMax:131072,outputMax:131072},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.03,outputPerMTokens:.14},pricingSource:"models.dev",aliases:["chutes/deepseek-ai/DeepSeek-R1-Distill-Llama-70B"],releasedAt:"2025-01-23",source:"https://llm.chutes.ai/v1/models",contextSource:"https://llm.chutes.ai/v1/models",verifiedAt:"2025-01-23"},{id:"chutes:deepseek-ai/DeepSeek-V3-0324",provider:"chutes",vendorId:"deepseek-ai/DeepSeek-V3-0324",displayName:"DeepSeek V3 (0324)",family:"deepseek-ai/DeepSeek-V3-0324",status:"stable",context:{combinedMax:75e3,outputMax:163840},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.18,outputPerMTokens:.72},pricingSource:"models.dev",aliases:["chutes/deepseek-ai/DeepSeek-V3-0324"],releasedAt:"2025-08-01",source:"https://llm.chutes.ai/v1/models",contextSource:"https://llm.chutes.ai/v1/models",verifiedAt:"2025-08-01"},{id:"chutes:deepseek-ai/DeepSeek-V3.1",provider:"chutes",vendorId:"deepseek-ai/DeepSeek-V3.1",displayName:"DeepSeek V3.1",family:"deepseek-ai/DeepSeek-V3.1",status:"stable",context:{combinedMax:163840,outputMax:163840},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.2,outputPerMTokens:.8},pricingSource:"models.dev",aliases:["chutes/deepseek-ai/DeepSeek-V3.1"],releasedAt:"2025-08-21",source:"https://llm.chutes.ai/v1/models",contextSource:"https://llm.chutes.ai/v1/models",verifiedAt:"2025-08-21"},{id:"chutes:deepseek-ai/DeepSeek-V3.1:THINKING",provider:"chutes",vendorId:"deepseek-ai/DeepSeek-V3.1:THINKING",displayName:"DeepSeek V3.1 Reasoning",family:"deepseek-ai/DeepSeek-V3.1:THINKING",status:"stable",context:{combinedMax:163840,outputMax:163840},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.2,outputPerMTokens:.8},pricingSource:"models.dev",aliases:["chutes/deepseek-ai/DeepSeek-V3.1:THINKING"],releasedAt:"2025-08-21",source:"https://llm.chutes.ai/v1/models",contextSource:"https://llm.chutes.ai/v1/models",verifiedAt:"2025-08-21"},{id:"chutes:moonshotai/Kimi-K2-Instruct-75k",provider:"chutes",vendorId:"moonshotai/Kimi-K2-Instruct-75k",displayName:"Kimi K2 Instruct",family:"moonshotai/Kimi-K2-Instruct-75k",status:"stable",context:{combinedMax:75e3,outputMax:75e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.15,outputPerMTokens:.59},pricingSource:"models.dev",aliases:["chutes/moonshotai/Kimi-K2-Instruct-75k"],releasedAt:"2025-08-01",source:"https://llm.chutes.ai/v1/models",contextSource:"https://llm.chutes.ai/v1/models",verifiedAt:"2025-08-01"},{id:"chutes:openai/gpt-oss-120b",provider:"chutes",vendorId:"openai/gpt-oss-120b",displayName:"GPT OSS 120B",family:"openai/gpt-oss-120b",status:"stable",context:{combinedMax:131072,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.1,outputPerMTokens:.41},pricingSource:"models.dev",aliases:["chutes/openai/gpt-oss-120b"],releasedAt:"2025-08-05",source:"https://llm.chutes.ai/v1/models",contextSource:"https://llm.chutes.ai/v1/models",verifiedAt:"2025-08-05"},{id:"chutes:Qwen/Qwen3-235B-A22B-Instruct-2507",provider:"chutes",vendorId:"Qwen/Qwen3-235B-A22B-Instruct-2507",displayName:"Qwen3 235B A22B Instruct 2507",family:"Qwen/Qwen3-235B-A22B-Instruct-2507",status:"stable",context:{combinedMax:262144,outputMax:131072},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.078,outputPerMTokens:.312},pricingSource:"models.dev",aliases:["chutes/Qwen/Qwen3-235B-A22B-Instruct-2507"],releasedAt:"2025-04-28",source:"https://llm.chutes.ai/v1/models",contextSource:"https://llm.chutes.ai/v1/models",verifiedAt:"2025-07-21"},{id:"chutes:Qwen/Qwen3-235B-A22B-Thinking-2507",provider:"chutes",vendorId:"Qwen/Qwen3-235B-A22B-Thinking-2507",displayName:"Qwen3-235B-A22B-Thinking-2507",family:"Qwen/Qwen3-235B-A22B-Thinking-2507",status:"stable",context:{combinedMax:262144,outputMax:262144},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.078,outputPerMTokens:.312},pricingSource:"models.dev",aliases:["chutes/Qwen/Qwen3-235B-A22B-Thinking-2507"],releasedAt:"2025-07-25",source:"https://llm.chutes.ai/v1/models",contextSource:"https://llm.chutes.ai/v1/models",verifiedAt:"2025-07-25"},{id:"chutes:Qwen/Qwen3-30B-A3B",provider:"chutes",vendorId:"Qwen/Qwen3-30B-A3B",displayName:"Qwen3 30B A3B",family:"Qwen/Qwen3-30B-A3B",status:"stable",context:{combinedMax:40960,outputMax:40960},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.02,outputPerMTokens:.08},pricingSource:"models.dev",aliases:["chutes/Qwen/Qwen3-30B-A3B"],releasedAt:"2025-04-28",source:"https://llm.chutes.ai/v1/models",contextSource:"https://llm.chutes.ai/v1/models",verifiedAt:"2025-04-28"},{id:"chutes:Qwen/Qwen3-30B-A3B-Instruct-2507",provider:"chutes",vendorId:"Qwen/Qwen3-30B-A3B-Instruct-2507",displayName:"Qwen3 30B A3B Instruct 2507",family:"Qwen/Qwen3-30B-A3B-Instruct-2507",status:"stable",context:{combinedMax:262144,outputMax:262144},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.05,outputPerMTokens:.2},pricingSource:"models.dev",aliases:["chutes/Qwen/Qwen3-30B-A3B-Instruct-2507"],releasedAt:"2025-07-25",source:"https://llm.chutes.ai/v1/models",contextSource:"https://llm.chutes.ai/v1/models",verifiedAt:"2025-07-25"},{id:"chutes:Qwen/Qwen3-Coder-30B-A3B-Instruct",provider:"chutes",vendorId:"Qwen/Qwen3-Coder-30B-A3B-Instruct",displayName:"Qwen3 Coder 30B A3B Instruct",family:"Qwen/Qwen3-Coder-30B-A3B-Instruct",status:"stable",context:{combinedMax:262144,outputMax:262144},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["chutes/Qwen/Qwen3-Coder-30B-A3B-Instruct"],releasedAt:"2025-07-25",source:"https://llm.chutes.ai/v1/models",contextSource:"https://llm.chutes.ai/v1/models",verifiedAt:"2025-07-25"},{id:"chutes:Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8",provider:"chutes",vendorId:"Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8",displayName:"Qwen3 Coder 480B A35B Instruct (FP8)",family:"Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8",status:"stable",context:{combinedMax:262144,outputMax:262144},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.2,outputPerMTokens:.8},pricingSource:"models.dev",aliases:["chutes/Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8"],releasedAt:"2025-08-01",source:"https://llm.chutes.ai/v1/models",contextSource:"https://llm.chutes.ai/v1/models",verifiedAt:"2025-08-01"},{id:"chutes:tngtech/DeepSeek-R1T-Chimera",provider:"chutes",vendorId:"tngtech/DeepSeek-R1T-Chimera",displayName:"DeepSeek R1T Chimera",family:"tngtech/DeepSeek-R1T-Chimera",status:"stable",context:{combinedMax:163840,outputMax:163840},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.18,outputPerMTokens:.72},pricingSource:"models.dev",aliases:["chutes/tngtech/DeepSeek-R1T-Chimera"],releasedAt:"2025-04-26",source:"https://llm.chutes.ai/v1/models",contextSource:"https://llm.chutes.ai/v1/models",verifiedAt:"2025-04-26"},{id:"chutes:tngtech/DeepSeek-TNG-R1T2-Chimera",provider:"chutes",vendorId:"tngtech/DeepSeek-TNG-R1T2-Chimera",displayName:"DeepSeek TNG R1T2 Chimera",family:"tngtech/DeepSeek-TNG-R1T2-Chimera",status:"stable",context:{combinedMax:163840,outputMax:163840},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.2,outputPerMTokens:.8},pricingSource:"models.dev",aliases:["chutes/tngtech/DeepSeek-TNG-R1T2-Chimera"],releasedAt:"2025-07-08",source:"https://llm.chutes.ai/v1/models",contextSource:"https://llm.chutes.ai/v1/models",verifiedAt:"2025-07-08"},{id:"chutes:zai-org/GLM-4.5-Air",provider:"chutes",vendorId:"zai-org/GLM-4.5-Air",displayName:"GLM 4.5 Air",family:"zai-org/GLM-4.5-Air",status:"stable",context:{combinedMax:131072,outputMax:98304},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["chutes/zai-org/GLM-4.5-Air"],releasedAt:"2025-07-28",source:"https://llm.chutes.ai/v1/models",contextSource:"https://llm.chutes.ai/v1/models",verifiedAt:"2025-07-28"},{id:"chutes:zai-org/GLM-4.5-FP8",provider:"chutes",vendorId:"zai-org/GLM-4.5-FP8",displayName:"GLM 4.5 FP8",family:"zai-org/GLM-4.5-FP8",status:"stable",context:{combinedMax:131072,outputMax:131072},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["chutes/zai-org/GLM-4.5-FP8"],releasedAt:"2025-07-28",source:"https://llm.chutes.ai/v1/models",contextSource:"https://llm.chutes.ai/v1/models",verifiedAt:"2025-07-28"},{id:"cloudflare-workers-ai:bart-large-cnn",provider:"cloudflare-workers-ai",vendorId:"bart-large-cnn",displayName:"@cf/facebook/bart-large-cnn",family:"bart-large-cnn",status:"stable",context:{combinedMax:0,outputMax:0},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/bart-large-cnn"],releasedAt:"2022-03-02",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-02-13"},{id:"cloudflare-workers-ai:deepseek-coder-6.7b-base-awq",provider:"cloudflare-workers-ai",vendorId:"deepseek-coder-6.7b-base-awq",displayName:"@hf/thebloke/deepseek-coder-6.7b-base-awq",family:"deepseek-coder-6.7b-base-awq",status:"stable",context:{combinedMax:4096,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/deepseek-coder-6.7b-base-awq"],releasedAt:"2023-11-05",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2023-11-09"},{id:"cloudflare-workers-ai:deepseek-coder-6.7b-instruct-awq",provider:"cloudflare-workers-ai",vendorId:"deepseek-coder-6.7b-instruct-awq",displayName:"@hf/thebloke/deepseek-coder-6.7b-instruct-awq",family:"deepseek-coder-6.7b-instruct-awq",status:"stable",context:{combinedMax:4096,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/deepseek-coder-6.7b-instruct-awq"],releasedAt:"2023-11-05",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2023-11-13"},{id:"cloudflare-workers-ai:deepseek-math-7b-instruct",provider:"cloudflare-workers-ai",vendorId:"deepseek-math-7b-instruct",displayName:"@cf/deepseek-ai/deepseek-math-7b-instruct",family:"deepseek-math-7b-instruct",status:"stable",context:{combinedMax:4096,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/deepseek-math-7b-instruct"],releasedAt:"2024-02-05",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-02-06"},{id:"cloudflare-workers-ai:deepseek-r1-distill-qwen-32b",provider:"cloudflare-workers-ai",vendorId:"deepseek-r1-distill-qwen-32b",displayName:"@cf/deepseek-ai/deepseek-r1-distill-qwen-32b",family:"deepseek-r1-distill-qwen-32b",status:"stable",context:{combinedMax:8e4,outputMax:8e4},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.5,outputPerMTokens:4.88},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/deepseek-r1-distill-qwen-32b"],releasedAt:"2025-01-20",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2025-02-24"},{id:"cloudflare-workers-ai:discolm-german-7b-v1-awq",provider:"cloudflare-workers-ai",vendorId:"discolm-german-7b-v1-awq",displayName:"@cf/thebloke/discolm-german-7b-v1-awq",family:"discolm-german-7b-v1-awq",status:"stable",context:{combinedMax:4096,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/discolm-german-7b-v1-awq"],releasedAt:"2024-01-18",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-01-24"},{id:"cloudflare-workers-ai:dreamshaper-8-lcm",provider:"cloudflare-workers-ai",vendorId:"dreamshaper-8-lcm",displayName:"@cf/lykon/dreamshaper-8-lcm",family:"dreamshaper-8-lcm",status:"stable",context:{combinedMax:0,outputMax:0},modalities:{textIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/dreamshaper-8-lcm"],releasedAt:"2023-12-06",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2023-12-07"},{id:"cloudflare-workers-ai:falcon-7b-instruct",provider:"cloudflare-workers-ai",vendorId:"falcon-7b-instruct",displayName:"@cf/tiiuae/falcon-7b-instruct",family:"falcon-7b-instruct",status:"stable",context:{combinedMax:4096,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/falcon-7b-instruct"],releasedAt:"2023-04-25",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-10-12"},{id:"cloudflare-workers-ai:flux-1-schnell",provider:"cloudflare-workers-ai",vendorId:"flux-1-schnell",displayName:"@cf/black-forest-labs/flux-1-schnell",family:"flux-1-schnell",status:"stable",context:{combinedMax:2048,outputMax:0},modalities:{textIn:!0},pricing:{inputPerMTokens:53e-6,outputPerMTokens:11e-5},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/flux-1-schnell"],releasedAt:"2024-07-31",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-08-16"},{id:"cloudflare-workers-ai:gemma-2b-it-lora",provider:"cloudflare-workers-ai",vendorId:"gemma-2b-it-lora",displayName:"@cf/google/gemma-2b-it-lora",family:"gemma-2b-it-lora",status:"stable",context:{combinedMax:8192,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/gemma-2b-it-lora"],releasedAt:"2024-04-02",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-04-02"},{id:"cloudflare-workers-ai:gemma-3-12b-it",provider:"cloudflare-workers-ai",vendorId:"gemma-3-12b-it",displayName:"@cf/google/gemma-3-12b-it",family:"gemma-3-12b-it",status:"stable",context:{combinedMax:8e4,outputMax:8e4},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.35,outputPerMTokens:.56},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/gemma-3-12b-it"],releasedAt:"2025-03-01",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2025-03-21"},{id:"cloudflare-workers-ai:gemma-7b-it",provider:"cloudflare-workers-ai",vendorId:"gemma-7b-it",displayName:"@hf/google/gemma-7b-it",family:"gemma-7b-it",status:"stable",context:{combinedMax:8192,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/gemma-7b-it"],releasedAt:"2024-02-13",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-08-14"},{id:"cloudflare-workers-ai:gemma-7b-it-lora",provider:"cloudflare-workers-ai",vendorId:"gemma-7b-it-lora",displayName:"@cf/google/gemma-7b-it-lora",family:"gemma-7b-it-lora",status:"stable",context:{combinedMax:3500,outputMax:3500},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/gemma-7b-it-lora"],releasedAt:"2024-04-02",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-04-02"},{id:"cloudflare-workers-ai:gpt-oss-120b",provider:"cloudflare-workers-ai",vendorId:"gpt-oss-120b",displayName:"@cf/openai/gpt-oss-120b",family:"gpt-oss-120b",status:"stable",context:{combinedMax:128e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.35,outputPerMTokens:.75},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/gpt-oss-120b"],releasedAt:"2025-08-04",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2025-08-14"},{id:"cloudflare-workers-ai:gpt-oss-20b",provider:"cloudflare-workers-ai",vendorId:"gpt-oss-20b",displayName:"@cf/openai/gpt-oss-20b",family:"gpt-oss-20b",status:"stable",context:{combinedMax:128e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.2,outputPerMTokens:.3},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/gpt-oss-20b"],releasedAt:"2025-08-04",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2025-08-14"},{id:"cloudflare-workers-ai:hermes-2-pro-mistral-7b",provider:"cloudflare-workers-ai",vendorId:"hermes-2-pro-mistral-7b",displayName:"@hf/nousresearch/hermes-2-pro-mistral-7b",family:"hermes-2-pro-mistral-7b",status:"stable",context:{combinedMax:24e3,outputMax:24e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/hermes-2-pro-mistral-7b"],releasedAt:"2024-03-11",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-09-08"},{id:"cloudflare-workers-ai:llama-2-13b-chat-awq",provider:"cloudflare-workers-ai",vendorId:"llama-2-13b-chat-awq",displayName:"@hf/thebloke/llama-2-13b-chat-awq",family:"llama-2-13b-chat-awq",status:"stable",context:{combinedMax:4096,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/llama-2-13b-chat-awq"],releasedAt:"2023-09-19",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2023-11-09"},{id:"cloudflare-workers-ai:llama-2-7b-chat-fp16",provider:"cloudflare-workers-ai",vendorId:"llama-2-7b-chat-fp16",displayName:"@cf/meta/llama-2-7b-chat-fp16",family:"llama-2-7b-chat-fp16",status:"stable",context:{combinedMax:4096,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.56,outputPerMTokens:6.67},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/llama-2-7b-chat-fp16"],releasedAt:"2023-07-26",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2023-07-26"},{id:"cloudflare-workers-ai:llama-2-7b-chat-hf-lora",provider:"cloudflare-workers-ai",vendorId:"llama-2-7b-chat-hf-lora",displayName:"@cf/meta-llama/llama-2-7b-chat-hf-lora",family:"llama-2-7b-chat-hf-lora",status:"stable",context:{combinedMax:8192,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/llama-2-7b-chat-hf-lora"],releasedAt:"2023-07-13",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-04-17"},{id:"cloudflare-workers-ai:llama-2-7b-chat-int8",provider:"cloudflare-workers-ai",vendorId:"llama-2-7b-chat-int8",displayName:"@cf/meta/llama-2-7b-chat-int8",family:"llama-2-7b-chat-int8",status:"stable",context:{combinedMax:8192,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/llama-2-7b-chat-int8"],releasedAt:"2023-09-25",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2023-09-25"},{id:"cloudflare-workers-ai:llama-3-8b-instruct",provider:"cloudflare-workers-ai",vendorId:"llama-3-8b-instruct",displayName:"@cf/meta/llama-3-8b-instruct",family:"llama-3-8b-instruct",status:"stable",context:{combinedMax:7968,outputMax:7968},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.28,outputPerMTokens:.83},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/llama-3-8b-instruct"],releasedAt:"2024-04-17",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2025-06-19"},{id:"cloudflare-workers-ai:llama-3-8b-instruct-awq",provider:"cloudflare-workers-ai",vendorId:"llama-3-8b-instruct-awq",displayName:"@cf/meta/llama-3-8b-instruct-awq",family:"llama-3-8b-instruct-awq",status:"stable",context:{combinedMax:8192,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.12,outputPerMTokens:.27},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/llama-3-8b-instruct-awq"],releasedAt:"2024-05-09",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-05-09"},{id:"cloudflare-workers-ai:llama-3.1-70b-instruct",provider:"cloudflare-workers-ai",vendorId:"llama-3.1-70b-instruct",displayName:"@cf/meta/llama-3.1-70b-instruct",family:"llama-3.1-70b-instruct",status:"stable",context:{combinedMax:24e3,outputMax:24e3},modalities:{textIn:!0,textOut:!0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/llama-3.1-70b-instruct"],releasedAt:"2024-07-16",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-12-15"},{id:"cloudflare-workers-ai:llama-3.1-8b-instruct",provider:"cloudflare-workers-ai",vendorId:"llama-3.1-8b-instruct",displayName:"@cf/meta/llama-3.1-8b-instruct",family:"llama-3.1-8b-instruct",status:"stable",context:{combinedMax:7968,outputMax:7968},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.28,outputPerMTokens:.83},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/llama-3.1-8b-instruct"],releasedAt:"2024-07-18",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-09-25"},{id:"cloudflare-workers-ai:llama-3.1-8b-instruct-awq",provider:"cloudflare-workers-ai",vendorId:"llama-3.1-8b-instruct-awq",displayName:"@cf/meta/llama-3.1-8b-instruct-awq",family:"llama-3.1-8b-instruct-awq",status:"stable",context:{combinedMax:8192,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.12,outputPerMTokens:.27},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/llama-3.1-8b-instruct-awq"],releasedAt:"2024-07-25",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-07-25"},{id:"cloudflare-workers-ai:llama-3.1-8b-instruct-fast",provider:"cloudflare-workers-ai",vendorId:"llama-3.1-8b-instruct-fast",displayName:"@cf/meta/llama-3.1-8b-instruct-fast",family:"llama-3.1-8b-instruct-fast",status:"stable",context:{combinedMax:128e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/llama-3.1-8b-instruct-fast"],releasedAt:"2024-07-18",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-09-25"},{id:"cloudflare-workers-ai:llama-3.1-8b-instruct-fp8",provider:"cloudflare-workers-ai",vendorId:"llama-3.1-8b-instruct-fp8",displayName:"@cf/meta/llama-3.1-8b-instruct-fp8",family:"llama-3.1-8b-instruct-fp8",status:"stable",context:{combinedMax:32e3,outputMax:32e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.15,outputPerMTokens:.29},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/llama-3.1-8b-instruct-fp8"],releasedAt:"2024-07-25",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-07-25"},{id:"cloudflare-workers-ai:llama-3.2-11b-vision-instruct",provider:"cloudflare-workers-ai",vendorId:"llama-3.2-11b-vision-instruct",displayName:"@cf/meta/llama-3.2-11b-vision-instruct",family:"llama-3.2-11b-vision-instruct",status:"stable",context:{combinedMax:128e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.049,outputPerMTokens:.68},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/llama-3.2-11b-vision-instruct"],releasedAt:"2024-09-18",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-12-04"},{id:"cloudflare-workers-ai:llama-3.2-1b-instruct",provider:"cloudflare-workers-ai",vendorId:"llama-3.2-1b-instruct",displayName:"@cf/meta/llama-3.2-1b-instruct",family:"llama-3.2-1b-instruct",status:"stable",context:{combinedMax:6e4,outputMax:6e4},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.027,outputPerMTokens:.2},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/llama-3.2-1b-instruct"],releasedAt:"2024-09-18",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-10-24"},{id:"cloudflare-workers-ai:llama-3.2-3b-instruct",provider:"cloudflare-workers-ai",vendorId:"llama-3.2-3b-instruct",displayName:"@cf/meta/llama-3.2-3b-instruct",family:"llama-3.2-3b-instruct",status:"stable",context:{combinedMax:128e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.051,outputPerMTokens:.34},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/llama-3.2-3b-instruct"],releasedAt:"2024-09-18",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-10-24"},{id:"cloudflare-workers-ai:llama-3.3-70b-instruct-fp8-fast",provider:"cloudflare-workers-ai",vendorId:"llama-3.3-70b-instruct-fp8-fast",displayName:"@cf/meta/llama-3.3-70b-instruct-fp8-fast",family:"llama-3.3-70b-instruct-fp8-fast",status:"stable",context:{combinedMax:24e3,outputMax:24e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.29,outputPerMTokens:2.25},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/llama-3.3-70b-instruct-fp8-fast"],releasedAt:"2024-12-06",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-12-06"},{id:"cloudflare-workers-ai:llama-4-scout-17b-16e-instruct",provider:"cloudflare-workers-ai",vendorId:"llama-4-scout-17b-16e-instruct",displayName:"@cf/meta/llama-4-scout-17b-16e-instruct",family:"llama-4-scout-17b-16e-instruct",status:"stable",context:{combinedMax:131e3,outputMax:131e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.27,outputPerMTokens:.85},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/llama-4-scout-17b-16e-instruct"],releasedAt:"2025-04-02",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2025-05-23"},{id:"cloudflare-workers-ai:llama-guard-3-8b",provider:"cloudflare-workers-ai",vendorId:"llama-guard-3-8b",displayName:"@cf/meta/llama-guard-3-8b",family:"llama-guard-3-8b",status:"stable",context:{combinedMax:0,outputMax:0},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.48,outputPerMTokens:.03},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/llama-guard-3-8b"],releasedAt:"2024-07-22",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-10-11"},{id:"cloudflare-workers-ai:llamaguard-7b-awq",provider:"cloudflare-workers-ai",vendorId:"llamaguard-7b-awq",displayName:"@hf/thebloke/llamaguard-7b-awq",family:"llamaguard-7b-awq",status:"stable",context:{combinedMax:4096,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/llamaguard-7b-awq"],releasedAt:"2023-12-11",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2023-12-11"},{id:"cloudflare-workers-ai:llava-1.5-7b-hf",provider:"cloudflare-workers-ai",vendorId:"llava-1.5-7b-hf",displayName:"@cf/llava-hf/llava-1.5-7b-hf",family:"llava-1.5-7b-hf",status:"stable",context:{combinedMax:0,outputMax:0},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/llava-1.5-7b-hf"],releasedAt:"2023-12-05",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2025-06-06"},{id:"cloudflare-workers-ai:m2m100-1.2b",provider:"cloudflare-workers-ai",vendorId:"m2m100-1.2b",displayName:"@cf/meta/m2m100-1.2b",family:"m2m100-1.2b",status:"stable",context:{combinedMax:0,outputMax:0},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.34,outputPerMTokens:.34},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/m2m100-1.2b"],releasedAt:"2022-03-02",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2023-11-16"},{id:"cloudflare-workers-ai:melotts",provider:"cloudflare-workers-ai",vendorId:"melotts",displayName:"@cf/myshell-ai/melotts",family:"melotts",status:"stable",context:{combinedMax:0,outputMax:0},modalities:{textIn:!0},pricing:{inputPerMTokens:2e-4,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/melotts"],releasedAt:"2024-07-19",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-07-19"},{id:"cloudflare-workers-ai:mistral-7b-instruct-v0.1",provider:"cloudflare-workers-ai",vendorId:"mistral-7b-instruct-v0.1",displayName:"@cf/mistral/mistral-7b-instruct-v0.1",family:"mistral-7b-instruct-v0.1",status:"stable",context:{combinedMax:2824,outputMax:2824},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.11,outputPerMTokens:.19},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/mistral-7b-instruct-v0.1"],releasedAt:"2023-09-27",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2025-07-24"},{id:"cloudflare-workers-ai:mistral-7b-instruct-v0.1-awq",provider:"cloudflare-workers-ai",vendorId:"mistral-7b-instruct-v0.1-awq",displayName:"@hf/thebloke/mistral-7b-instruct-v0.1-awq",family:"mistral-7b-instruct-v0.1-awq",status:"stable",context:{combinedMax:4096,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/mistral-7b-instruct-v0.1-awq"],releasedAt:"2023-09-27",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2023-11-09"},{id:"cloudflare-workers-ai:mistral-7b-instruct-v0.2",provider:"cloudflare-workers-ai",vendorId:"mistral-7b-instruct-v0.2",displayName:"@hf/mistral/mistral-7b-instruct-v0.2",family:"mistral-7b-instruct-v0.2",status:"stable",context:{combinedMax:3072,outputMax:3072},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/mistral-7b-instruct-v0.2"],releasedAt:"2023-12-11",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2025-07-24"},{id:"cloudflare-workers-ai:mistral-7b-instruct-v0.2-lora",provider:"cloudflare-workers-ai",vendorId:"mistral-7b-instruct-v0.2-lora",displayName:"@cf/mistral/mistral-7b-instruct-v0.2-lora",family:"mistral-7b-instruct-v0.2-lora",status:"stable",context:{combinedMax:15e3,outputMax:15e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/mistral-7b-instruct-v0.2-lora"],releasedAt:"2024-04-01",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-04-01"},{id:"cloudflare-workers-ai:mistral-small-3.1-24b-instruct",provider:"cloudflare-workers-ai",vendorId:"mistral-small-3.1-24b-instruct",displayName:"@cf/mistralai/mistral-small-3.1-24b-instruct",family:"mistral-small-3.1-24b-instruct",status:"stable",context:{combinedMax:128e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.35,outputPerMTokens:.56},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/mistral-small-3.1-24b-instruct"],releasedAt:"2025-03-11",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2025-07-28"},{id:"cloudflare-workers-ai:neural-chat-7b-v3-1-awq",provider:"cloudflare-workers-ai",vendorId:"neural-chat-7b-v3-1-awq",displayName:"@hf/thebloke/neural-chat-7b-v3-1-awq",family:"neural-chat-7b-v3-1-awq",status:"stable",context:{combinedMax:4096,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/neural-chat-7b-v3-1-awq"],releasedAt:"2023-11-15",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2023-11-17"},{id:"cloudflare-workers-ai:openchat-3.5-0106",provider:"cloudflare-workers-ai",vendorId:"openchat-3.5-0106",displayName:"@cf/openchat/openchat-3.5-0106",family:"openchat-3.5-0106",status:"stable",context:{combinedMax:8192,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/openchat-3.5-0106"],releasedAt:"2024-01-07",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-05-18"},{id:"cloudflare-workers-ai:openhermes-2.5-mistral-7b-awq",provider:"cloudflare-workers-ai",vendorId:"openhermes-2.5-mistral-7b-awq",displayName:"@hf/thebloke/openhermes-2.5-mistral-7b-awq",family:"openhermes-2.5-mistral-7b-awq",status:"stable",context:{combinedMax:4096,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/openhermes-2.5-mistral-7b-awq"],releasedAt:"2023-11-02",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2023-11-09"},{id:"cloudflare-workers-ai:phi-2",provider:"cloudflare-workers-ai",vendorId:"phi-2",displayName:"@cf/microsoft/phi-2",family:"phi-2",status:"stable",context:{combinedMax:2048,outputMax:2048},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/phi-2"],releasedAt:"2023-12-13",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-04-29"},{id:"cloudflare-workers-ai:qwen1.5-0.5b-chat",provider:"cloudflare-workers-ai",vendorId:"qwen1.5-0.5b-chat",displayName:"@cf/qwen/qwen1.5-0.5b-chat",family:"qwen1.5-0.5b-chat",status:"stable",context:{combinedMax:32e3,outputMax:32e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/qwen1.5-0.5b-chat"],releasedAt:"2024-01-31",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-04-30"},{id:"cloudflare-workers-ai:qwen1.5-1.8b-chat",provider:"cloudflare-workers-ai",vendorId:"qwen1.5-1.8b-chat",displayName:"@cf/qwen/qwen1.5-1.8b-chat",family:"qwen1.5-1.8b-chat",status:"stable",context:{combinedMax:32e3,outputMax:32e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/qwen1.5-1.8b-chat"],releasedAt:"2024-01-30",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-04-30"},{id:"cloudflare-workers-ai:qwen1.5-14b-chat-awq",provider:"cloudflare-workers-ai",vendorId:"qwen1.5-14b-chat-awq",displayName:"@cf/qwen/qwen1.5-14b-chat-awq",family:"qwen1.5-14b-chat-awq",status:"stable",context:{combinedMax:7500,outputMax:7500},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/qwen1.5-14b-chat-awq"],releasedAt:"2024-02-03",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-04-30"},{id:"cloudflare-workers-ai:qwen1.5-7b-chat-awq",provider:"cloudflare-workers-ai",vendorId:"qwen1.5-7b-chat-awq",displayName:"@cf/qwen/qwen1.5-7b-chat-awq",family:"qwen1.5-7b-chat-awq",status:"stable",context:{combinedMax:2e4,outputMax:2e4},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/qwen1.5-7b-chat-awq"],releasedAt:"2024-02-03",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-04-30"},{id:"cloudflare-workers-ai:qwen2.5-coder-32b-instruct",provider:"cloudflare-workers-ai",vendorId:"qwen2.5-coder-32b-instruct",displayName:"@cf/qwen/qwen2.5-coder-32b-instruct",family:"qwen2.5-coder-32b-instruct",status:"stable",context:{combinedMax:32768,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.66,outputPerMTokens:1},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/qwen2.5-coder-32b-instruct"],releasedAt:"2024-11-06",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2025-01-12"},{id:"cloudflare-workers-ai:qwq-32b",provider:"cloudflare-workers-ai",vendorId:"qwq-32b",displayName:"@cf/qwen/qwq-32b",family:"qwq-32b",status:"stable",context:{combinedMax:24e3,outputMax:24e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.66,outputPerMTokens:1},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/qwq-32b"],releasedAt:"2025-03-05",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2025-03-11"},{id:"cloudflare-workers-ai:resnet-50",provider:"cloudflare-workers-ai",vendorId:"resnet-50",displayName:"@cf/microsoft/resnet-50",family:"resnet-50",status:"stable",context:{combinedMax:0,outputMax:0},modalities:{textOut:!0,imageIn:!0},pricing:{inputPerMTokens:25e-7,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/resnet-50"],releasedAt:"2022-03-16",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-02-13"},{id:"cloudflare-workers-ai:sqlcoder-7b-2",provider:"cloudflare-workers-ai",vendorId:"sqlcoder-7b-2",displayName:"@cf/defog/sqlcoder-7b-2",family:"sqlcoder-7b-2",status:"stable",context:{combinedMax:1e4,outputMax:1e4},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/sqlcoder-7b-2"],releasedAt:"2024-02-05",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-02-12"},{id:"cloudflare-workers-ai:stable-diffusion-v1-5-img2img",provider:"cloudflare-workers-ai",vendorId:"stable-diffusion-v1-5-img2img",displayName:"@cf/runwayml/stable-diffusion-v1-5-img2img",family:"stable-diffusion-v1-5-img2img",status:"stable",context:{combinedMax:0,outputMax:0},modalities:{textIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/stable-diffusion-v1-5-img2img"],releasedAt:"2024-02-27",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-02-27"},{id:"cloudflare-workers-ai:stable-diffusion-v1-5-inpainting",provider:"cloudflare-workers-ai",vendorId:"stable-diffusion-v1-5-inpainting",displayName:"@cf/runwayml/stable-diffusion-v1-5-inpainting",family:"stable-diffusion-v1-5-inpainting",status:"stable",context:{combinedMax:0,outputMax:0},modalities:{textIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/stable-diffusion-v1-5-inpainting"],releasedAt:"2024-02-27",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-02-27"},{id:"cloudflare-workers-ai:stable-diffusion-xl-base-1.0",provider:"cloudflare-workers-ai",vendorId:"stable-diffusion-xl-base-1.0",displayName:"@cf/stabilityai/stable-diffusion-xl-base-1.0",family:"stable-diffusion-xl-base-1.0",status:"stable",context:{combinedMax:0,outputMax:0},modalities:{textIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/stable-diffusion-xl-base-1.0"],releasedAt:"2023-07-25",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2023-10-30"},{id:"cloudflare-workers-ai:stable-diffusion-xl-lightning",provider:"cloudflare-workers-ai",vendorId:"stable-diffusion-xl-lightning",displayName:"@cf/bytedance/stable-diffusion-xl-lightning",family:"stable-diffusion-xl-lightning",status:"stable",context:{combinedMax:0,outputMax:0},modalities:{textIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/stable-diffusion-xl-lightning"],releasedAt:"2024-02-20",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-04-03"},{id:"cloudflare-workers-ai:starling-lm-7b-beta",provider:"cloudflare-workers-ai",vendorId:"starling-lm-7b-beta",displayName:"@hf/nexusflow/starling-lm-7b-beta",family:"starling-lm-7b-beta",status:"stable",context:{combinedMax:4096,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/starling-lm-7b-beta"],releasedAt:"2024-03-19",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-04-03"},{id:"cloudflare-workers-ai:tinyllama-1.1b-chat-v1.0",provider:"cloudflare-workers-ai",vendorId:"tinyllama-1.1b-chat-v1.0",displayName:"@cf/tinyllama/tinyllama-1.1b-chat-v1.0",family:"tinyllama-1.1b-chat-v1.0",status:"stable",context:{combinedMax:2048,outputMax:2048},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/tinyllama-1.1b-chat-v1.0"],releasedAt:"2023-12-30",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-03-17"},{id:"cloudflare-workers-ai:uform-gen2-qwen-500m",provider:"cloudflare-workers-ai",vendorId:"uform-gen2-qwen-500m",displayName:"@cf/unum/uform-gen2-qwen-500m",family:"uform-gen2-qwen-500m",status:"stable",context:{combinedMax:0,outputMax:0},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/uform-gen2-qwen-500m"],releasedAt:"2024-02-15",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-04-24"},{id:"cloudflare-workers-ai:una-cybertron-7b-v2-bf16",provider:"cloudflare-workers-ai",vendorId:"una-cybertron-7b-v2-bf16",displayName:"@cf/fblgit/una-cybertron-7b-v2-bf16",family:"una-cybertron-7b-v2-bf16",status:"stable",context:{combinedMax:15e3,outputMax:15e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/una-cybertron-7b-v2-bf16"],releasedAt:"2023-12-02",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-03-08"},{id:"cloudflare-workers-ai:whisper",provider:"cloudflare-workers-ai",vendorId:"whisper",displayName:"@cf/openai/whisper",family:"whisper",status:"stable",context:{combinedMax:0,outputMax:0},modalities:{textOut:!0},pricing:{inputPerMTokens:45e-5,outputPerMTokens:45e-5},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/whisper"],releasedAt:"2023-11-07",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-08-12"},{id:"cloudflare-workers-ai:whisper-large-v3-turbo",provider:"cloudflare-workers-ai",vendorId:"whisper-large-v3-turbo",displayName:"@cf/openai/whisper-large-v3-turbo",family:"whisper-large-v3-turbo",status:"stable",context:{combinedMax:0,outputMax:0},modalities:{textOut:!0},pricing:{inputPerMTokens:51e-5,outputPerMTokens:51e-5},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/whisper-large-v3-turbo"],releasedAt:"2024-10-01",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-10-04"},{id:"cloudflare-workers-ai:whisper-tiny-en",provider:"cloudflare-workers-ai",vendorId:"whisper-tiny-en",displayName:"@cf/openai/whisper-tiny-en",family:"whisper-tiny-en",status:"stable",context:{combinedMax:0,outputMax:0},modalities:{textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/whisper-tiny-en"],releasedAt:"2022-09-26",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2024-01-22"},{id:"cloudflare-workers-ai:zephyr-7b-beta-awq",provider:"cloudflare-workers-ai",vendorId:"zephyr-7b-beta-awq",displayName:"@hf/thebloke/zephyr-7b-beta-awq",family:"zephyr-7b-beta-awq",status:"stable",context:{combinedMax:4096,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["cloudflare-workers-ai/zephyr-7b-beta-awq"],releasedAt:"2023-10-27",source:"https://developers.cloudflare.com/workers-ai/models/",contextSource:"https://developers.cloudflare.com/workers-ai/models/",verifiedAt:"2023-11-09"},{id:"deepinfra:moonshotai/Kimi-K2-Instruct",provider:"deepinfra",vendorId:"moonshotai/Kimi-K2-Instruct",displayName:"Kimi K2",family:"moonshotai/Kimi-K2-Instruct",status:"stable",context:{combinedMax:131072,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.5,outputPerMTokens:2},pricingSource:"models.dev",aliases:["deepinfra/moonshotai/Kimi-K2-Instruct"],releasedAt:"2025-07-11",source:"https://deepinfra.com/models",contextSource:"https://deepinfra.com/models",verifiedAt:"2025-07-11"},{id:"deepinfra:Qwen/Qwen3-Coder-480B-A35B-Instruct",provider:"deepinfra",vendorId:"Qwen/Qwen3-Coder-480B-A35B-Instruct",displayName:"Qwen3 Coder 480B A35B Instruct",family:"Qwen/Qwen3-Coder-480B-A35B-Instruct",status:"stable",context:{combinedMax:262144,outputMax:66536},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.4,outputPerMTokens:1.6},pricingSource:"models.dev",aliases:["deepinfra/Qwen/Qwen3-Coder-480B-A35B-Instruct"],releasedAt:"2025-07-23",source:"https://deepinfra.com/models",contextSource:"https://deepinfra.com/models",verifiedAt:"2025-07-23"},{id:"deepinfra:Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo",provider:"deepinfra",vendorId:"Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo",displayName:"Qwen3 Coder 480B A35B Instruct Turbo",family:"Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo",status:"stable",context:{combinedMax:262144,outputMax:66536},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.3,outputPerMTokens:1.2},pricingSource:"models.dev",aliases:["deepinfra/Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo"],releasedAt:"2025-07-23",source:"https://deepinfra.com/models",contextSource:"https://deepinfra.com/models",verifiedAt:"2025-07-23"},{id:"deepinfra:zai-org/GLM-4.5",provider:"deepinfra",vendorId:"zai-org/GLM-4.5",displayName:"GLM-4.5",family:"zai-org/GLM-4.5",status:"stable",context:{combinedMax:131072,outputMax:98304},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.6,outputPerMTokens:2.2},pricingSource:"models.dev",aliases:["deepinfra/zai-org/GLM-4.5"],releasedAt:"2025-07-28",source:"https://deepinfra.com/models",contextSource:"https://deepinfra.com/models",verifiedAt:"2025-07-28"},{id:"deepseek:deepseek-chat",provider:"deepseek",vendorId:"deepseek-chat",displayName:"DeepSeek Chat",family:"deepseek-chat",status:"stable",context:{combinedMax:128e3,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.57,outputPerMTokens:1.68},pricingSource:"models.dev",aliases:["deepseek/deepseek-chat"],releasedAt:"2024-12-26",source:"https://platform.deepseek.com/api-docs/pricing",contextSource:"https://platform.deepseek.com/api-docs/pricing",verifiedAt:"2025-08-21"},{id:"deepseek:deepseek-reasoner",provider:"deepseek",vendorId:"deepseek-reasoner",displayName:"DeepSeek Reasoner",family:"deepseek-reasoner",status:"stable",context:{combinedMax:128e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.57,outputPerMTokens:1.68},pricingSource:"models.dev",aliases:["deepseek/deepseek-reasoner"],releasedAt:"2025-01-20",source:"https://platform.deepseek.com/api-docs/pricing",contextSource:"https://platform.deepseek.com/api-docs/pricing",verifiedAt:"2025-08-21"},{id:"fastrouter:anthropic/claude-opus-4.1",provider:"fastrouter",vendorId:"anthropic/claude-opus-4.1",displayName:"Claude Opus 4.1",family:"anthropic/claude-opus-4.1",status:"stable",context:{combinedMax:2e5,outputMax:32e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:15,outputPerMTokens:75},pricingSource:"models.dev",aliases:["fastrouter/anthropic/claude-opus-4.1"],releasedAt:"2025-08-05",source:"https://fastrouter.ai/models",contextSource:"https://fastrouter.ai/models",verifiedAt:"2025-08-05"},{id:"fastrouter:anthropic/claude-sonnet-4",provider:"fastrouter",vendorId:"anthropic/claude-sonnet-4",displayName:"Claude Sonnet 4",family:"anthropic/claude-sonnet-4",status:"stable",context:{combinedMax:2e5,outputMax:64e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["fastrouter/anthropic/claude-sonnet-4"],releasedAt:"2025-05-22",source:"https://fastrouter.ai/models",contextSource:"https://fastrouter.ai/models",verifiedAt:"2025-05-22"},{id:"fastrouter:deepseek-ai/deepseek-r1-distill-llama-70b",provider:"fastrouter",vendorId:"deepseek-ai/deepseek-r1-distill-llama-70b",displayName:"DeepSeek R1 Distill Llama 70B",family:"deepseek-ai/deepseek-r1-distill-llama-70b",status:"stable",context:{combinedMax:131072,outputMax:131072},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.03,outputPerMTokens:.14},pricingSource:"models.dev",aliases:["fastrouter/deepseek-ai/deepseek-r1-distill-llama-70b"],releasedAt:"2025-01-23",source:"https://fastrouter.ai/models",contextSource:"https://fastrouter.ai/models",verifiedAt:"2025-01-23"},{id:"fastrouter:google/gemini-2.5-flash",provider:"fastrouter",vendorId:"google/gemini-2.5-flash",displayName:"Gemini 2.5 Flash",family:"google/gemini-2.5-flash",status:"stable",context:{combinedMax:1048576,outputMax:65536},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.3,outputPerMTokens:2.5},pricingSource:"models.dev",aliases:["fastrouter/google/gemini-2.5-flash"],releasedAt:"2025-06-17",source:"https://fastrouter.ai/models",contextSource:"https://fastrouter.ai/models",verifiedAt:"2025-06-17"},{id:"fastrouter:google/gemini-2.5-pro",provider:"fastrouter",vendorId:"google/gemini-2.5-pro",displayName:"Gemini 2.5 Pro",family:"google/gemini-2.5-pro",status:"stable",context:{combinedMax:1048576,outputMax:65536},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:1.25,outputPerMTokens:10},pricingSource:"models.dev",aliases:["fastrouter/google/gemini-2.5-pro"],releasedAt:"2025-06-17",source:"https://fastrouter.ai/models",contextSource:"https://fastrouter.ai/models",verifiedAt:"2025-06-17"},{id:"fastrouter:moonshotai/kimi-k2",provider:"fastrouter",vendorId:"moonshotai/kimi-k2",displayName:"Kimi K2",family:"moonshotai/kimi-k2",status:"stable",context:{combinedMax:131072,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.55,outputPerMTokens:2.2},pricingSource:"models.dev",aliases:["fastrouter/moonshotai/kimi-k2"],releasedAt:"2025-07-11",source:"https://fastrouter.ai/models",contextSource:"https://fastrouter.ai/models",verifiedAt:"2025-07-11"},{id:"fastrouter:openai/gpt-4.1",provider:"fastrouter",vendorId:"openai/gpt-4.1",displayName:"GPT-4.1",family:"openai/gpt-4.1",status:"stable",context:{combinedMax:1047576,outputMax:32768},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:2,outputPerMTokens:8},pricingSource:"models.dev",aliases:["fastrouter/openai/gpt-4.1"],releasedAt:"2025-04-14",source:"https://fastrouter.ai/models",contextSource:"https://fastrouter.ai/models",verifiedAt:"2025-04-14"},{id:"fastrouter:openai/gpt-5",provider:"fastrouter",vendorId:"openai/gpt-5",displayName:"GPT-5",family:"openai/gpt-5",status:"stable",context:{combinedMax:4e5,outputMax:128e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:1.25,outputPerMTokens:10},pricingSource:"models.dev",aliases:["fastrouter/openai/gpt-5"],releasedAt:"2025-08-07",source:"https://fastrouter.ai/models",contextSource:"https://fastrouter.ai/models",verifiedAt:"2025-08-07"},{id:"fastrouter:openai/gpt-5-mini",provider:"fastrouter",vendorId:"openai/gpt-5-mini",displayName:"GPT-5 Mini",family:"openai/gpt-5-mini",status:"stable",context:{combinedMax:4e5,outputMax:128e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.25,outputPerMTokens:2},pricingSource:"models.dev",aliases:["fastrouter/openai/gpt-5-mini"],releasedAt:"2025-08-07",source:"https://fastrouter.ai/models",contextSource:"https://fastrouter.ai/models",verifiedAt:"2025-08-07"},{id:"fastrouter:openai/gpt-5-nano",provider:"fastrouter",vendorId:"openai/gpt-5-nano",displayName:"GPT-5 Nano",family:"openai/gpt-5-nano",status:"stable",context:{combinedMax:4e5,outputMax:128e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.05,outputPerMTokens:.4},pricingSource:"models.dev",aliases:["fastrouter/openai/gpt-5-nano"],releasedAt:"2025-08-07",source:"https://fastrouter.ai/models",contextSource:"https://fastrouter.ai/models",verifiedAt:"2025-08-07"},{id:"fastrouter:openai/gpt-oss-120b",provider:"fastrouter",vendorId:"openai/gpt-oss-120b",displayName:"GPT OSS 120B",family:"openai/gpt-oss-120b",status:"stable",context:{combinedMax:131072,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.15,outputPerMTokens:.6},pricingSource:"models.dev",aliases:["fastrouter/openai/gpt-oss-120b"],releasedAt:"2025-08-05",source:"https://fastrouter.ai/models",contextSource:"https://fastrouter.ai/models",verifiedAt:"2025-08-05"},{id:"fastrouter:openai/gpt-oss-20b",provider:"fastrouter",vendorId:"openai/gpt-oss-20b",displayName:"GPT OSS 20B",family:"openai/gpt-oss-20b",status:"stable",context:{combinedMax:131072,outputMax:65536},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.05,outputPerMTokens:.2},pricingSource:"models.dev",aliases:["fastrouter/openai/gpt-oss-20b"],releasedAt:"2025-08-05",source:"https://fastrouter.ai/models",contextSource:"https://fastrouter.ai/models",verifiedAt:"2025-08-05"},{id:"fastrouter:qwen/qwen3-coder",provider:"fastrouter",vendorId:"qwen/qwen3-coder",displayName:"Qwen3 Coder",family:"qwen/qwen3-coder",status:"stable",context:{combinedMax:262144,outputMax:66536},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.3,outputPerMTokens:1.2},pricingSource:"models.dev",aliases:["fastrouter/qwen/qwen3-coder"],releasedAt:"2025-07-23",source:"https://fastrouter.ai/models",contextSource:"https://fastrouter.ai/models",verifiedAt:"2025-07-23"},{id:"fastrouter:x-ai/grok-4",provider:"fastrouter",vendorId:"x-ai/grok-4",displayName:"Grok 4",family:"x-ai/grok-4",status:"stable",context:{combinedMax:256e3,outputMax:64e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["fastrouter/x-ai/grok-4"],releasedAt:"2025-07-09",source:"https://fastrouter.ai/models",contextSource:"https://fastrouter.ai/models",verifiedAt:"2025-07-09"},{id:"fireworks-ai:accounts/fireworks/gpt-oss-120b",provider:"fireworks-ai",vendorId:"accounts/fireworks/gpt-oss-120b",displayName:"GPT OSS 120B",family:"accounts/fireworks/gpt-oss-120b",status:"stable",context:{combinedMax:131072,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.15,outputPerMTokens:.6},pricingSource:"models.dev",aliases:["fireworks-ai/accounts/fireworks/gpt-oss-120b"],releasedAt:"2025-08-05",source:"https://fireworks.ai/docs/",contextSource:"https://fireworks.ai/docs/",verifiedAt:"2025-08-05"},{id:"fireworks-ai:accounts/fireworks/gpt-oss-20b",provider:"fireworks-ai",vendorId:"accounts/fireworks/gpt-oss-20b",displayName:"GPT OSS 20B",family:"accounts/fireworks/gpt-oss-20b",status:"stable",context:{combinedMax:131072,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.05,outputPerMTokens:.2},pricingSource:"models.dev",aliases:["fireworks-ai/accounts/fireworks/gpt-oss-20b"],releasedAt:"2025-08-05",source:"https://fireworks.ai/docs/",contextSource:"https://fireworks.ai/docs/",verifiedAt:"2025-08-05"},{id:"fireworks-ai:accounts/fireworks/models/deepseek-r1-0528",provider:"fireworks-ai",vendorId:"accounts/fireworks/models/deepseek-r1-0528",displayName:"Deepseek R1 05/28",family:"accounts/fireworks/models/deepseek-r1-0528",status:"stable",context:{combinedMax:16e4,outputMax:16384},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:3,outputPerMTokens:8},pricingSource:"models.dev",aliases:["fireworks-ai/accounts/fireworks/models/deepseek-r1-0528"],releasedAt:"2025-05-28",source:"https://fireworks.ai/docs/",contextSource:"https://fireworks.ai/docs/",verifiedAt:"2025-05-28"},{id:"fireworks-ai:accounts/fireworks/models/deepseek-v3-0324",provider:"fireworks-ai",vendorId:"accounts/fireworks/models/deepseek-v3-0324",displayName:"Deepseek V3 03-24",family:"accounts/fireworks/models/deepseek-v3-0324",status:"stable",context:{combinedMax:16e4,outputMax:16384},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.9,outputPerMTokens:.9},pricingSource:"models.dev",aliases:["fireworks-ai/accounts/fireworks/models/deepseek-v3-0324"],releasedAt:"2025-03-24",source:"https://fireworks.ai/docs/",contextSource:"https://fireworks.ai/docs/",verifiedAt:"2025-03-24"},{id:"fireworks-ai:accounts/fireworks/models/deepseek-v3p1",provider:"fireworks-ai",vendorId:"accounts/fireworks/models/deepseek-v3p1",displayName:"DeepSeek V3.1",family:"accounts/fireworks/models/deepseek-v3p1",status:"stable",context:{combinedMax:163840,outputMax:163840},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.56,outputPerMTokens:1.68},pricingSource:"models.dev",aliases:["fireworks-ai/accounts/fireworks/models/deepseek-v3p1"],releasedAt:"2025-08-21",source:"https://fireworks.ai/docs/",contextSource:"https://fireworks.ai/docs/",verifiedAt:"2025-08-21"},{id:"fireworks-ai:accounts/fireworks/models/glm-4p5",provider:"fireworks-ai",vendorId:"accounts/fireworks/models/glm-4p5",displayName:"GLM 4.5",family:"accounts/fireworks/models/glm-4p5",status:"stable",context:{combinedMax:131072,outputMax:131072},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.55,outputPerMTokens:2.19},pricingSource:"models.dev",aliases:["fireworks-ai/accounts/fireworks/models/glm-4p5"],releasedAt:"2025-07-29",source:"https://fireworks.ai/docs/",contextSource:"https://fireworks.ai/docs/",verifiedAt:"2025-07-29"},{id:"fireworks-ai:accounts/fireworks/models/glm-4p5-air",provider:"fireworks-ai",vendorId:"accounts/fireworks/models/glm-4p5-air",displayName:"GLM 4.5 Air",family:"accounts/fireworks/models/glm-4p5-air",status:"stable",context:{combinedMax:131072,outputMax:131072},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.22,outputPerMTokens:.88},pricingSource:"models.dev",aliases:["fireworks-ai/accounts/fireworks/models/glm-4p5-air"],releasedAt:"2025-08-01",source:"https://fireworks.ai/docs/",contextSource:"https://fireworks.ai/docs/",verifiedAt:"2025-08-01"},{id:"fireworks-ai:accounts/fireworks/models/kimi-k2-instruct",provider:"fireworks-ai",vendorId:"accounts/fireworks/models/kimi-k2-instruct",displayName:"Kimi K2 Instruct",family:"accounts/fireworks/models/kimi-k2-instruct",status:"stable",context:{combinedMax:128e3,outputMax:16384},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1,outputPerMTokens:3},pricingSource:"models.dev",aliases:["fireworks-ai/accounts/fireworks/models/kimi-k2-instruct"],releasedAt:"2025-07-11",source:"https://fireworks.ai/docs/",contextSource:"https://fireworks.ai/docs/",verifiedAt:"2025-07-11"},{id:"fireworks-ai:accounts/fireworks/models/qwen3-235b-a22b",provider:"fireworks-ai",vendorId:"accounts/fireworks/models/qwen3-235b-a22b",displayName:"Qwen3 235B-A22B",family:"accounts/fireworks/models/qwen3-235b-a22b",status:"stable",context:{combinedMax:128e3,outputMax:16384},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.22,outputPerMTokens:.88},pricingSource:"models.dev",aliases:["fireworks-ai/accounts/fireworks/models/qwen3-235b-a22b"],releasedAt:"2025-04-29",source:"https://fireworks.ai/docs/",contextSource:"https://fireworks.ai/docs/",verifiedAt:"2025-04-29"},{id:"fireworks-ai:accounts/fireworks/models/qwen3-coder-480b-a35b-instruct",provider:"fireworks-ai",vendorId:"accounts/fireworks/models/qwen3-coder-480b-a35b-instruct",displayName:"Qwen3 Coder 480B A35B Instruct",family:"accounts/fireworks/models/qwen3-coder-480b-a35b-instruct",status:"stable",context:{combinedMax:256e3,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.45,outputPerMTokens:1.8},pricingSource:"models.dev",aliases:["fireworks-ai/accounts/fireworks/models/qwen3-coder-480b-a35b-instruct"],releasedAt:"2025-07-22",source:"https://fireworks.ai/docs/",contextSource:"https://fireworks.ai/docs/",verifiedAt:"2025-07-22"},{id:"github-copilot:claude-3.5-sonnet",provider:"github-copilot",vendorId:"claude-3.5-sonnet",displayName:"Claude Sonnet 3.5",family:"claude-3.5-sonnet",status:"stable",context:{combinedMax:2e5,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricingSource:"models.dev",aliases:["github-copilot/claude-3.5-sonnet"],releasedAt:"2024-10-22",source:"https://docs.github.com/en/copilot",contextSource:"https://docs.github.com/en/copilot",verifiedAt:"2024-10-22"},{id:"github-copilot:claude-3.7-sonnet",provider:"github-copilot",vendorId:"claude-3.7-sonnet",displayName:"Claude Sonnet 3.7",family:"claude-3.7-sonnet",status:"stable",context:{combinedMax:2e5,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricingSource:"models.dev",aliases:["github-copilot/claude-3.7-sonnet"],releasedAt:"2025-02-19",source:"https://docs.github.com/en/copilot",contextSource:"https://docs.github.com/en/copilot",verifiedAt:"2025-02-19"},{id:"github-copilot:claude-3.7-sonnet-thought",provider:"github-copilot",vendorId:"claude-3.7-sonnet-thought",displayName:"Claude Sonnet 3.7 Thinking",family:"claude-3.7-sonnet-thought",status:"stable",context:{combinedMax:2e5,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricingSource:"models.dev",aliases:["github-copilot/claude-3.7-sonnet-thought"],releasedAt:"2025-02-19",source:"https://docs.github.com/en/copilot",contextSource:"https://docs.github.com/en/copilot",verifiedAt:"2025-02-19"},{id:"github-copilot:claude-opus-4",provider:"github-copilot",vendorId:"claude-opus-4",displayName:"Claude Opus 4",family:"claude-opus-4",status:"stable",context:{combinedMax:8e4,outputMax:16e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricingSource:"models.dev",aliases:["github-copilot/claude-opus-4"],releasedAt:"2025-05-22",source:"https://docs.github.com/en/copilot",contextSource:"https://docs.github.com/en/copilot",verifiedAt:"2025-05-22"},{id:"github-copilot:claude-opus-41",provider:"github-copilot",vendorId:"claude-opus-41",displayName:"Claude Opus 4.1",family:"claude-opus-41",status:"stable",context:{combinedMax:2e5,outputMax:32e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricingSource:"models.dev",aliases:["github-copilot/claude-opus-41"],releasedAt:"2025-08-05",source:"https://docs.github.com/en/copilot",contextSource:"https://docs.github.com/en/copilot",verifiedAt:"2025-08-05"},{id:"github-copilot:claude-sonnet-4",provider:"github-copilot",vendorId:"claude-sonnet-4",displayName:"Claude Sonnet 4",family:"claude-sonnet-4",status:"stable",context:{combinedMax:2e5,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricingSource:"models.dev",aliases:["github-copilot/claude-sonnet-4"],releasedAt:"2025-05-22",source:"https://docs.github.com/en/copilot",contextSource:"https://docs.github.com/en/copilot",verifiedAt:"2025-05-22"},{id:"github-copilot:gemini-2.0-flash-001",provider:"github-copilot",vendorId:"gemini-2.0-flash-001",displayName:"Gemini 2.0 Flash",family:"gemini-2.0-flash-001",status:"stable",context:{combinedMax:1e6,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricingSource:"models.dev",aliases:["github-copilot/gemini-2.0-flash-001"],releasedAt:"2024-12-11",source:"https://docs.github.com/en/copilot",contextSource:"https://docs.github.com/en/copilot",verifiedAt:"2024-12-11"},{id:"github-copilot:gemini-2.5-pro",provider:"github-copilot",vendorId:"gemini-2.5-pro",displayName:"Gemini 2.5 Pro",family:"gemini-2.5-pro",status:"stable",context:{combinedMax:1048576,outputMax:65536},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricingSource:"models.dev",aliases:["github-copilot/gemini-2.5-pro"],releasedAt:"2025-03-20",source:"https://docs.github.com/en/copilot",contextSource:"https://docs.github.com/en/copilot",verifiedAt:"2025-06-05"},{id:"github-copilot:gpt-4.1",provider:"github-copilot",vendorId:"gpt-4.1",displayName:"GPT-4.1",family:"gpt-4.1",status:"stable",context:{combinedMax:128e3,outputMax:16384},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricingSource:"models.dev",aliases:["github-copilot/gpt-4.1"],releasedAt:"2025-04-14",source:"https://docs.github.com/en/copilot",contextSource:"https://docs.github.com/en/copilot",verifiedAt:"2025-04-14"},{id:"github-copilot:gpt-4o",provider:"github-copilot",vendorId:"gpt-4o",displayName:"GPT-4o",family:"gpt-4o",status:"stable",context:{combinedMax:128e3,outputMax:16384},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricingSource:"models.dev",aliases:["github-copilot/gpt-4o"],releasedAt:"2024-05-13",source:"https://docs.github.com/en/copilot",contextSource:"https://docs.github.com/en/copilot",verifiedAt:"2024-05-13"},{id:"github-copilot:gpt-5",provider:"github-copilot",vendorId:"gpt-5",displayName:"GPT-5",family:"gpt-5",status:"stable",context:{combinedMax:128e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricingSource:"models.dev",aliases:["github-copilot/gpt-5"],releasedAt:"2025-08-07",source:"https://docs.github.com/en/copilot",contextSource:"https://docs.github.com/en/copilot",verifiedAt:"2025-08-07"},{id:"github-copilot:gpt-5-mini",provider:"github-copilot",vendorId:"gpt-5-mini",displayName:"GPT-5-mini",family:"gpt-5-mini",status:"stable",context:{combinedMax:128e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricingSource:"models.dev",aliases:["github-copilot/gpt-5-mini"],releasedAt:"2025-08-13",source:"https://docs.github.com/en/copilot",contextSource:"https://docs.github.com/en/copilot",verifiedAt:"2025-08-13"},{id:"github-copilot:grok-code-fast-1",provider:"github-copilot",vendorId:"grok-code-fast-1",displayName:"Grok Code Fast 1",family:"grok-code-fast-1",status:"stable",context:{combinedMax:256e3,outputMax:1e4},modalities:{textIn:!0,textOut:!0},pricingSource:"models.dev",aliases:["github-copilot/grok-code-fast-1"],releasedAt:"2025-08-27",source:"https://docs.github.com/en/copilot",contextSource:"https://docs.github.com/en/copilot",verifiedAt:"2025-08-27"},{id:"github-copilot:o3",provider:"github-copilot",vendorId:"o3",displayName:"o3 (Preview)",family:"o3",status:"stable",context:{combinedMax:128e3,outputMax:16384},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricingSource:"models.dev",aliases:["github-copilot/o3"],releasedAt:"2025-04-16",source:"https://docs.github.com/en/copilot",contextSource:"https://docs.github.com/en/copilot",verifiedAt:"2025-04-16"},{id:"github-copilot:o3-mini",provider:"github-copilot",vendorId:"o3-mini",displayName:"o3-mini",family:"o3-mini",status:"stable",context:{combinedMax:128e3,outputMax:65536},modalities:{textIn:!0,textOut:!0},pricingSource:"models.dev",aliases:["github-copilot/o3-mini"],releasedAt:"2024-12-20",source:"https://docs.github.com/en/copilot",contextSource:"https://docs.github.com/en/copilot",verifiedAt:"2025-01-29"},{id:"github-copilot:o4-mini",provider:"github-copilot",vendorId:"o4-mini",displayName:"o4-mini (Preview)",family:"o4-mini",status:"stable",context:{combinedMax:128e3,outputMax:65536},modalities:{textIn:!0,textOut:!0},pricingSource:"models.dev",aliases:["github-copilot/o4-mini"],releasedAt:"2025-04-16",source:"https://docs.github.com/en/copilot",contextSource:"https://docs.github.com/en/copilot",verifiedAt:"2025-04-16"},{id:"github-models:ai21-labs/ai21-jamba-1.5-large",provider:"github-models",vendorId:"ai21-labs/ai21-jamba-1.5-large",displayName:"AI21 Jamba 1.5 Large",family:"ai21-labs/ai21-jamba-1.5-large",status:"stable",context:{combinedMax:256e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/ai21-labs/ai21-jamba-1.5-large"],releasedAt:"2024-08-29",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-08-29"},{id:"github-models:ai21-labs/ai21-jamba-1.5-mini",provider:"github-models",vendorId:"ai21-labs/ai21-jamba-1.5-mini",displayName:"AI21 Jamba 1.5 Mini",family:"ai21-labs/ai21-jamba-1.5-mini",status:"stable",context:{combinedMax:256e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/ai21-labs/ai21-jamba-1.5-mini"],releasedAt:"2024-08-29",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-08-29"},{id:"github-models:cohere/cohere-command-a",provider:"github-models",vendorId:"cohere/cohere-command-a",displayName:"Cohere Command A",family:"cohere/cohere-command-a",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/cohere/cohere-command-a"],releasedAt:"2024-11-01",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-11-01"},{id:"github-models:cohere/cohere-command-r",provider:"github-models",vendorId:"cohere/cohere-command-r",displayName:"Cohere Command R",family:"cohere/cohere-command-r",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/cohere/cohere-command-r"],releasedAt:"2024-03-11",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-08-01"},{id:"github-models:cohere/cohere-command-r-08-2024",provider:"github-models",vendorId:"cohere/cohere-command-r-08-2024",displayName:"Cohere Command R 08-2024",family:"cohere/cohere-command-r-08-2024",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/cohere/cohere-command-r-08-2024"],releasedAt:"2024-08-01",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-08-01"},{id:"github-models:cohere/cohere-command-r-plus",provider:"github-models",vendorId:"cohere/cohere-command-r-plus",displayName:"Cohere Command R+",family:"cohere/cohere-command-r-plus",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/cohere/cohere-command-r-plus"],releasedAt:"2024-04-04",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-08-01"},{id:"github-models:cohere/cohere-command-r-plus-08-2024",provider:"github-models",vendorId:"cohere/cohere-command-r-plus-08-2024",displayName:"Cohere Command R+ 08-2024",family:"cohere/cohere-command-r-plus-08-2024",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/cohere/cohere-command-r-plus-08-2024"],releasedAt:"2024-08-01",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-08-01"},{id:"github-models:core42/jais-30b-chat",provider:"github-models",vendorId:"core42/jais-30b-chat",displayName:"JAIS 30b Chat",family:"core42/jais-30b-chat",status:"stable",context:{combinedMax:8192,outputMax:2048},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/core42/jais-30b-chat"],releasedAt:"2023-08-30",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2023-08-30"},{id:"github-models:deepseek/deepseek-r1",provider:"github-models",vendorId:"deepseek/deepseek-r1",displayName:"DeepSeek-R1",family:"deepseek/deepseek-r1",status:"stable",context:{combinedMax:65536,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/deepseek/deepseek-r1"],releasedAt:"2025-01-20",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2025-01-20"},{id:"github-models:deepseek/deepseek-r1-0528",provider:"github-models",vendorId:"deepseek/deepseek-r1-0528",displayName:"DeepSeek-R1-0528",family:"deepseek/deepseek-r1-0528",status:"stable",context:{combinedMax:65536,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/deepseek/deepseek-r1-0528"],releasedAt:"2025-05-28",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2025-05-28"},{id:"github-models:deepseek/deepseek-v3-0324",provider:"github-models",vendorId:"deepseek/deepseek-v3-0324",displayName:"DeepSeek-V3-0324",family:"deepseek/deepseek-v3-0324",status:"stable",context:{combinedMax:128e3,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/deepseek/deepseek-v3-0324"],releasedAt:"2025-03-24",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2025-03-24"},{id:"github-models:meta/llama-3.2-11b-vision-instruct",provider:"github-models",vendorId:"meta/llama-3.2-11b-vision-instruct",displayName:"Llama-3.2-11B-Vision-Instruct",family:"meta/llama-3.2-11b-vision-instruct",status:"stable",context:{combinedMax:128e3,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/meta/llama-3.2-11b-vision-instruct"],releasedAt:"2024-09-25",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-09-25"},{id:"github-models:meta/llama-3.2-90b-vision-instruct",provider:"github-models",vendorId:"meta/llama-3.2-90b-vision-instruct",displayName:"Llama-3.2-90B-Vision-Instruct",family:"meta/llama-3.2-90b-vision-instruct",status:"stable",context:{combinedMax:128e3,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/meta/llama-3.2-90b-vision-instruct"],releasedAt:"2024-09-25",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-09-25"},{id:"github-models:meta/llama-3.3-70b-instruct",provider:"github-models",vendorId:"meta/llama-3.3-70b-instruct",displayName:"Llama-3.3-70B-Instruct",family:"meta/llama-3.3-70b-instruct",status:"stable",context:{combinedMax:128e3,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/meta/llama-3.3-70b-instruct"],releasedAt:"2024-12-06",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-12-06"},{id:"github-models:meta/llama-4-maverick-17b-128e-instruct-fp8",provider:"github-models",vendorId:"meta/llama-4-maverick-17b-128e-instruct-fp8",displayName:"Llama 4 Maverick 17B 128E Instruct FP8",family:"meta/llama-4-maverick-17b-128e-instruct-fp8",status:"stable",context:{combinedMax:128e3,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/meta/llama-4-maverick-17b-128e-instruct-fp8"],releasedAt:"2025-01-31",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2025-01-31"},{id:"github-models:meta/llama-4-scout-17b-16e-instruct",provider:"github-models",vendorId:"meta/llama-4-scout-17b-16e-instruct",displayName:"Llama 4 Scout 17B 16E Instruct",family:"meta/llama-4-scout-17b-16e-instruct",status:"stable",context:{combinedMax:128e3,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/meta/llama-4-scout-17b-16e-instruct"],releasedAt:"2025-01-31",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2025-01-31"},{id:"github-models:meta/meta-llama-3-70b-instruct",provider:"github-models",vendorId:"meta/meta-llama-3-70b-instruct",displayName:"Meta-Llama-3-70B-Instruct",family:"meta/meta-llama-3-70b-instruct",status:"stable",context:{combinedMax:8192,outputMax:2048},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/meta/meta-llama-3-70b-instruct"],releasedAt:"2024-04-18",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-04-18"},{id:"github-models:meta/meta-llama-3-8b-instruct",provider:"github-models",vendorId:"meta/meta-llama-3-8b-instruct",displayName:"Meta-Llama-3-8B-Instruct",family:"meta/meta-llama-3-8b-instruct",status:"stable",context:{combinedMax:8192,outputMax:2048},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/meta/meta-llama-3-8b-instruct"],releasedAt:"2024-04-18",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-04-18"},{id:"github-models:meta/meta-llama-3.1-405b-instruct",provider:"github-models",vendorId:"meta/meta-llama-3.1-405b-instruct",displayName:"Meta-Llama-3.1-405B-Instruct",family:"meta/meta-llama-3.1-405b-instruct",status:"stable",context:{combinedMax:128e3,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/meta/meta-llama-3.1-405b-instruct"],releasedAt:"2024-07-23",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-07-23"},{id:"github-models:meta/meta-llama-3.1-70b-instruct",provider:"github-models",vendorId:"meta/meta-llama-3.1-70b-instruct",displayName:"Meta-Llama-3.1-70B-Instruct",family:"meta/meta-llama-3.1-70b-instruct",status:"stable",context:{combinedMax:128e3,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/meta/meta-llama-3.1-70b-instruct"],releasedAt:"2024-07-23",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-07-23"},{id:"github-models:meta/meta-llama-3.1-8b-instruct",provider:"github-models",vendorId:"meta/meta-llama-3.1-8b-instruct",displayName:"Meta-Llama-3.1-8B-Instruct",family:"meta/meta-llama-3.1-8b-instruct",status:"stable",context:{combinedMax:128e3,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/meta/meta-llama-3.1-8b-instruct"],releasedAt:"2024-07-23",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-07-23"},{id:"github-models:microsoft/mai-ds-r1",provider:"github-models",vendorId:"microsoft/mai-ds-r1",displayName:"MAI-DS-R1",family:"microsoft/mai-ds-r1",status:"stable",context:{combinedMax:65536,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/microsoft/mai-ds-r1"],releasedAt:"2025-01-20",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2025-01-20"},{id:"github-models:microsoft/phi-3-medium-128k-instruct",provider:"github-models",vendorId:"microsoft/phi-3-medium-128k-instruct",displayName:"Phi-3-medium instruct (128k)",family:"microsoft/phi-3-medium-128k-instruct",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/microsoft/phi-3-medium-128k-instruct"],releasedAt:"2024-04-23",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-04-23"},{id:"github-models:microsoft/phi-3-medium-4k-instruct",provider:"github-models",vendorId:"microsoft/phi-3-medium-4k-instruct",displayName:"Phi-3-medium instruct (4k)",family:"microsoft/phi-3-medium-4k-instruct",status:"stable",context:{combinedMax:4096,outputMax:1024},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/microsoft/phi-3-medium-4k-instruct"],releasedAt:"2024-04-23",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-04-23"},{id:"github-models:microsoft/phi-3-mini-128k-instruct",provider:"github-models",vendorId:"microsoft/phi-3-mini-128k-instruct",displayName:"Phi-3-mini instruct (128k)",family:"microsoft/phi-3-mini-128k-instruct",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/microsoft/phi-3-mini-128k-instruct"],releasedAt:"2024-04-23",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-04-23"},{id:"github-models:microsoft/phi-3-mini-4k-instruct",provider:"github-models",vendorId:"microsoft/phi-3-mini-4k-instruct",displayName:"Phi-3-mini instruct (4k)",family:"microsoft/phi-3-mini-4k-instruct",status:"stable",context:{combinedMax:4096,outputMax:1024},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/microsoft/phi-3-mini-4k-instruct"],releasedAt:"2024-04-23",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-04-23"},{id:"github-models:microsoft/phi-3-small-128k-instruct",provider:"github-models",vendorId:"microsoft/phi-3-small-128k-instruct",displayName:"Phi-3-small instruct (128k)",family:"microsoft/phi-3-small-128k-instruct",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/microsoft/phi-3-small-128k-instruct"],releasedAt:"2024-04-23",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-04-23"},{id:"github-models:microsoft/phi-3-small-8k-instruct",provider:"github-models",vendorId:"microsoft/phi-3-small-8k-instruct",displayName:"Phi-3-small instruct (8k)",family:"microsoft/phi-3-small-8k-instruct",status:"stable",context:{combinedMax:8192,outputMax:2048},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/microsoft/phi-3-small-8k-instruct"],releasedAt:"2024-04-23",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-04-23"},{id:"github-models:microsoft/phi-3.5-mini-instruct",provider:"github-models",vendorId:"microsoft/phi-3.5-mini-instruct",displayName:"Phi-3.5-mini instruct (128k)",family:"microsoft/phi-3.5-mini-instruct",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/microsoft/phi-3.5-mini-instruct"],releasedAt:"2024-08-20",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-08-20"},{id:"github-models:microsoft/phi-3.5-moe-instruct",provider:"github-models",vendorId:"microsoft/phi-3.5-moe-instruct",displayName:"Phi-3.5-MoE instruct (128k)",family:"microsoft/phi-3.5-moe-instruct",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/microsoft/phi-3.5-moe-instruct"],releasedAt:"2024-08-20",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-08-20"},{id:"github-models:microsoft/phi-3.5-vision-instruct",provider:"github-models",vendorId:"microsoft/phi-3.5-vision-instruct",displayName:"Phi-3.5-vision instruct (128k)",family:"microsoft/phi-3.5-vision-instruct",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/microsoft/phi-3.5-vision-instruct"],releasedAt:"2024-08-20",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-08-20"},{id:"github-models:microsoft/phi-4",provider:"github-models",vendorId:"microsoft/phi-4",displayName:"Phi-4",family:"microsoft/phi-4",status:"stable",context:{combinedMax:16e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/microsoft/phi-4"],releasedAt:"2024-12-11",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-12-11"},{id:"github-models:microsoft/phi-4-mini-instruct",provider:"github-models",vendorId:"microsoft/phi-4-mini-instruct",displayName:"Phi-4-mini-instruct",family:"microsoft/phi-4-mini-instruct",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/microsoft/phi-4-mini-instruct"],releasedAt:"2024-12-11",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-12-11"},{id:"github-models:microsoft/phi-4-mini-reasoning",provider:"github-models",vendorId:"microsoft/phi-4-mini-reasoning",displayName:"Phi-4-mini-reasoning",family:"microsoft/phi-4-mini-reasoning",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/microsoft/phi-4-mini-reasoning"],releasedAt:"2024-12-11",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-12-11"},{id:"github-models:microsoft/phi-4-multimodal-instruct",provider:"github-models",vendorId:"microsoft/phi-4-multimodal-instruct",displayName:"Phi-4-multimodal-instruct",family:"microsoft/phi-4-multimodal-instruct",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/microsoft/phi-4-multimodal-instruct"],releasedAt:"2024-12-11",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-12-11"},{id:"github-models:microsoft/phi-4-reasoning",provider:"github-models",vendorId:"microsoft/phi-4-reasoning",displayName:"Phi-4-Reasoning",family:"microsoft/phi-4-reasoning",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/microsoft/phi-4-reasoning"],releasedAt:"2024-12-11",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-12-11"},{id:"github-models:mistral-ai/codestral-2501",provider:"github-models",vendorId:"mistral-ai/codestral-2501",displayName:"Codestral 25.01",family:"mistral-ai/codestral-2501",status:"stable",context:{combinedMax:32e3,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/mistral-ai/codestral-2501"],releasedAt:"2025-01-01",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2025-01-01"},{id:"github-models:mistral-ai/ministral-3b",provider:"github-models",vendorId:"mistral-ai/ministral-3b",displayName:"Ministral 3B",family:"mistral-ai/ministral-3b",status:"stable",context:{combinedMax:128e3,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/mistral-ai/ministral-3b"],releasedAt:"2024-10-22",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-10-22"},{id:"github-models:mistral-ai/mistral-large-2411",provider:"github-models",vendorId:"mistral-ai/mistral-large-2411",displayName:"Mistral Large 24.11",family:"mistral-ai/mistral-large-2411",status:"stable",context:{combinedMax:128e3,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/mistral-ai/mistral-large-2411"],releasedAt:"2024-11-01",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-11-01"},{id:"github-models:mistral-ai/mistral-medium-2505",provider:"github-models",vendorId:"mistral-ai/mistral-medium-2505",displayName:"Mistral Medium 3 (25.05)",family:"mistral-ai/mistral-medium-2505",status:"stable",context:{combinedMax:128e3,outputMax:32768},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/mistral-ai/mistral-medium-2505"],releasedAt:"2025-05-01",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2025-05-01"},{id:"github-models:mistral-ai/mistral-nemo",provider:"github-models",vendorId:"mistral-ai/mistral-nemo",displayName:"Mistral Nemo",family:"mistral-ai/mistral-nemo",status:"stable",context:{combinedMax:128e3,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/mistral-ai/mistral-nemo"],releasedAt:"2024-07-18",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-07-18"},{id:"github-models:mistral-ai/mistral-small-2503",provider:"github-models",vendorId:"mistral-ai/mistral-small-2503",displayName:"Mistral Small 3.1",family:"mistral-ai/mistral-small-2503",status:"stable",context:{combinedMax:128e3,outputMax:32768},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/mistral-ai/mistral-small-2503"],releasedAt:"2025-03-01",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2025-03-01"},{id:"github-models:openai/gpt-4.1",provider:"github-models",vendorId:"openai/gpt-4.1",displayName:"GPT-4.1",family:"openai/gpt-4.1",status:"stable",context:{combinedMax:128e3,outputMax:16384},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/openai/gpt-4.1"],releasedAt:"2025-04-14",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2025-04-14"},{id:"github-models:openai/gpt-4.1-mini",provider:"github-models",vendorId:"openai/gpt-4.1-mini",displayName:"GPT-4.1-mini",family:"openai/gpt-4.1-mini",status:"stable",context:{combinedMax:128e3,outputMax:16384},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/openai/gpt-4.1-mini"],releasedAt:"2025-04-14",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2025-04-14"},{id:"github-models:openai/gpt-4.1-nano",provider:"github-models",vendorId:"openai/gpt-4.1-nano",displayName:"GPT-4.1-nano",family:"openai/gpt-4.1-nano",status:"stable",context:{combinedMax:128e3,outputMax:16384},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/openai/gpt-4.1-nano"],releasedAt:"2025-04-14",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2025-04-14"},{id:"github-models:openai/gpt-4o",provider:"github-models",vendorId:"openai/gpt-4o",displayName:"GPT-4o",family:"openai/gpt-4o",status:"stable",context:{combinedMax:128e3,outputMax:16384},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/openai/gpt-4o"],releasedAt:"2024-05-13",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-05-13"},{id:"github-models:openai/gpt-4o-mini",provider:"github-models",vendorId:"openai/gpt-4o-mini",displayName:"GPT-4o mini",family:"openai/gpt-4o-mini",status:"stable",context:{combinedMax:128e3,outputMax:16384},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/openai/gpt-4o-mini"],releasedAt:"2024-07-18",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-07-18"},{id:"github-models:openai/o1",provider:"github-models",vendorId:"openai/o1",displayName:"OpenAI o1",family:"openai/o1",status:"stable",context:{combinedMax:2e5,outputMax:1e5},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/openai/o1"],releasedAt:"2024-09-12",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-12-17"},{id:"github-models:openai/o1-mini",provider:"github-models",vendorId:"openai/o1-mini",displayName:"OpenAI o1-mini",family:"openai/o1-mini",status:"stable",context:{combinedMax:128e3,outputMax:65536},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/openai/o1-mini"],releasedAt:"2024-09-12",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-12-17"},{id:"github-models:openai/o1-preview",provider:"github-models",vendorId:"openai/o1-preview",displayName:"OpenAI o1-preview",family:"openai/o1-preview",status:"stable",context:{combinedMax:128e3,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/openai/o1-preview"],releasedAt:"2024-09-12",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-09-12"},{id:"github-models:openai/o3",provider:"github-models",vendorId:"openai/o3",displayName:"OpenAI o3",family:"openai/o3",status:"stable",context:{combinedMax:2e5,outputMax:1e5},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/openai/o3"],releasedAt:"2025-01-31",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2025-01-31"},{id:"github-models:openai/o3-mini",provider:"github-models",vendorId:"openai/o3-mini",displayName:"OpenAI o3-mini",family:"openai/o3-mini",status:"stable",context:{combinedMax:2e5,outputMax:1e5},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/openai/o3-mini"],releasedAt:"2025-01-31",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2025-01-31"},{id:"github-models:openai/o4-mini",provider:"github-models",vendorId:"openai/o4-mini",displayName:"OpenAI o4-mini",family:"openai/o4-mini",status:"stable",context:{combinedMax:2e5,outputMax:1e5},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/openai/o4-mini"],releasedAt:"2025-01-31",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2025-01-31"},{id:"github-models:xai/grok-3",provider:"github-models",vendorId:"xai/grok-3",displayName:"Grok 3",family:"xai/grok-3",status:"stable",context:{combinedMax:128e3,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/xai/grok-3"],releasedAt:"2024-12-09",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-12-09"},{id:"github-models:xai/grok-3-mini",provider:"github-models",vendorId:"xai/grok-3-mini",displayName:"Grok 3 Mini",family:"xai/grok-3-mini",status:"stable",context:{combinedMax:128e3,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["github-models/xai/grok-3-mini"],releasedAt:"2024-12-09",source:"https://docs.github.com/en/github-models",contextSource:"https://docs.github.com/en/github-models",verifiedAt:"2024-12-09"},{id:"google:gemini-1.5-flash",provider:"google",vendorId:"gemini-1.5-flash",displayName:"Gemini 1.5 Flash",family:"gemini-1.5-flash",status:"stable",context:{combinedMax:1e6,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.075,outputPerMTokens:.3},pricingSource:"models.dev",aliases:["google/gemini-1.5-flash"],releasedAt:"2024-05-14",source:"https://ai.google.dev/gemini-api/docs/pricing",contextSource:"https://ai.google.dev/gemini-api/docs/pricing",verifiedAt:"2024-05-14"},{id:"google:gemini-1.5-flash-8b",provider:"google",vendorId:"gemini-1.5-flash-8b",displayName:"Gemini 1.5 Flash-8B",family:"gemini-1.5-flash-8b",status:"stable",context:{combinedMax:1e6,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.0375,outputPerMTokens:.15},pricingSource:"models.dev",aliases:["google/gemini-1.5-flash-8b"],releasedAt:"2024-10-03",source:"https://ai.google.dev/gemini-api/docs/pricing",contextSource:"https://ai.google.dev/gemini-api/docs/pricing",verifiedAt:"2024-10-03"},{id:"google:gemini-1.5-pro",provider:"google",vendorId:"gemini-1.5-pro",displayName:"Gemini 1.5 Pro",family:"gemini-1.5-pro",status:"stable",context:{combinedMax:1e6,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:1.25,outputPerMTokens:5},pricingSource:"models.dev",aliases:["google/gemini-1.5-pro"],releasedAt:"2024-02-15",source:"https://ai.google.dev/gemini-api/docs/pricing",contextSource:"https://ai.google.dev/gemini-api/docs/pricing",verifiedAt:"2024-02-15"},{id:"google:gemini-2.0-flash",provider:"google",vendorId:"gemini-2.0-flash",displayName:"Gemini 2.0 Flash",family:"gemini-2.0-flash",status:"stable",context:{combinedMax:1048576,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.1,outputPerMTokens:.4},pricingSource:"models.dev",aliases:["google/gemini-2.0-flash"],releasedAt:"2024-12-11",source:"https://ai.google.dev/gemini-api/docs/pricing",contextSource:"https://ai.google.dev/gemini-api/docs/pricing",verifiedAt:"2024-12-11"},{id:"google:gemini-2.0-flash-lite",provider:"google",vendorId:"gemini-2.0-flash-lite",displayName:"Gemini 2.0 Flash Lite",family:"gemini-2.0-flash-lite",status:"stable",context:{combinedMax:1048576,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.075,outputPerMTokens:.3},pricingSource:"models.dev",aliases:["google/gemini-2.0-flash-lite"],releasedAt:"2024-12-11",source:"https://ai.google.dev/gemini-api/docs/pricing",contextSource:"https://ai.google.dev/gemini-api/docs/pricing",verifiedAt:"2024-12-11"},{id:"google:gemini-2.5-flash",provider:"google",vendorId:"gemini-2.5-flash",displayName:"Gemini 2.5 Flash",family:"gemini-2.5-flash",status:"stable",context:{combinedMax:1048576,outputMax:65536},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.3,outputPerMTokens:2.5},pricingSource:"models.dev",aliases:["google/gemini-2.5-flash"],releasedAt:"2025-03-20",source:"https://ai.google.dev/gemini-api/docs/pricing",contextSource:"https://ai.google.dev/gemini-api/docs/pricing",verifiedAt:"2025-06-05"},{id:"google:gemini-2.5-flash-lite-preview-06-17",provider:"google",vendorId:"gemini-2.5-flash-lite-preview-06-17",displayName:"Gemini 2.5 Flash Lite Preview 06-17",family:"gemini-2.5-flash-lite-preview-06-17",status:"stable",context:{combinedMax:65536,outputMax:65536},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.1,outputPerMTokens:.4},pricingSource:"models.dev",aliases:["google/gemini-2.5-flash-lite-preview-06-17"],releasedAt:"2025-06-17",source:"https://ai.google.dev/gemini-api/docs/pricing",contextSource:"https://ai.google.dev/gemini-api/docs/pricing",verifiedAt:"2025-06-17"},{id:"google:gemini-2.5-flash-preview-04-17",provider:"google",vendorId:"gemini-2.5-flash-preview-04-17",displayName:"Gemini 2.5 Flash Preview 04-17",family:"gemini-2.5-flash-preview-04-17",status:"stable",context:{combinedMax:1048576,outputMax:65536},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.15,outputPerMTokens:.6},pricingSource:"models.dev",aliases:["google/gemini-2.5-flash-preview-04-17"],releasedAt:"2025-04-17",source:"https://ai.google.dev/gemini-api/docs/pricing",contextSource:"https://ai.google.dev/gemini-api/docs/pricing",verifiedAt:"2025-04-17"},{id:"google:gemini-2.5-flash-preview-05-20",provider:"google",vendorId:"gemini-2.5-flash-preview-05-20",displayName:"Gemini 2.5 Flash Preview 05-20",family:"gemini-2.5-flash-preview-05-20",status:"stable",context:{combinedMax:1048576,outputMax:65536},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.15,outputPerMTokens:.6},pricingSource:"models.dev",aliases:["google/gemini-2.5-flash-preview-05-20"],releasedAt:"2025-05-20",source:"https://ai.google.dev/gemini-api/docs/pricing",contextSource:"https://ai.google.dev/gemini-api/docs/pricing",verifiedAt:"2025-05-20"},{id:"google:gemini-2.5-pro",provider:"google",vendorId:"gemini-2.5-pro",displayName:"Gemini 2.5 Pro",family:"gemini-2.5-pro",status:"stable",context:{combinedMax:1048576,outputMax:65536},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:1.25,outputPerMTokens:10},pricingSource:"models.dev",aliases:["google/gemini-2.5-pro"],releasedAt:"2025-03-20",source:"https://ai.google.dev/gemini-api/docs/pricing",contextSource:"https://ai.google.dev/gemini-api/docs/pricing",verifiedAt:"2025-06-05"},{id:"google:gemini-2.5-pro-preview-05-06",provider:"google",vendorId:"gemini-2.5-pro-preview-05-06",displayName:"Gemini 2.5 Pro Preview 05-06",family:"gemini-2.5-pro-preview-05-06",status:"stable",context:{combinedMax:1048576,outputMax:65536},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:1.25,outputPerMTokens:10},pricingSource:"models.dev",aliases:["google/gemini-2.5-pro-preview-05-06"],releasedAt:"2025-05-06",source:"https://ai.google.dev/gemini-api/docs/pricing",contextSource:"https://ai.google.dev/gemini-api/docs/pricing",verifiedAt:"2025-05-06"},{id:"google:gemini-2.5-pro-preview-06-05",provider:"google",vendorId:"gemini-2.5-pro-preview-06-05",displayName:"Gemini 2.5 Pro Preview 06-05",family:"gemini-2.5-pro-preview-06-05",status:"stable",context:{combinedMax:1048576,outputMax:65536},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:1.25,outputPerMTokens:10},pricingSource:"models.dev",aliases:["google/gemini-2.5-pro-preview-06-05"],releasedAt:"2025-06-05",source:"https://ai.google.dev/gemini-api/docs/pricing",contextSource:"https://ai.google.dev/gemini-api/docs/pricing",verifiedAt:"2025-06-05"},{id:"google-vertex:gemini-2.0-flash",provider:"google-vertex",vendorId:"gemini-2.0-flash",displayName:"Gemini 2.0 Flash",family:"gemini-2.0-flash",status:"stable",context:{combinedMax:1048576,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.1,outputPerMTokens:.4},pricingSource:"models.dev",aliases:["google-vertex/gemini-2.0-flash"],releasedAt:"2024-12-11",source:"https://cloud.google.com/vertex-ai/generative-ai/docs/models",contextSource:"https://cloud.google.com/vertex-ai/generative-ai/docs/models",verifiedAt:"2024-12-11"},{id:"google-vertex:gemini-2.0-flash-lite",provider:"google-vertex",vendorId:"gemini-2.0-flash-lite",displayName:"Gemini 2.0 Flash Lite",family:"gemini-2.0-flash-lite",status:"stable",context:{combinedMax:1048576,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.075,outputPerMTokens:.3},pricingSource:"models.dev",aliases:["google-vertex/gemini-2.0-flash-lite"],releasedAt:"2024-12-11",source:"https://cloud.google.com/vertex-ai/generative-ai/docs/models",contextSource:"https://cloud.google.com/vertex-ai/generative-ai/docs/models",verifiedAt:"2024-12-11"},{id:"google-vertex:gemini-2.5-flash",provider:"google-vertex",vendorId:"gemini-2.5-flash",displayName:"Gemini 2.5 Flash",family:"gemini-2.5-flash",status:"stable",context:{combinedMax:1048576,outputMax:65536},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.3,outputPerMTokens:2.5},pricingSource:"models.dev",aliases:["google-vertex/gemini-2.5-flash"],releasedAt:"2025-06-17",source:"https://cloud.google.com/vertex-ai/generative-ai/docs/models",contextSource:"https://cloud.google.com/vertex-ai/generative-ai/docs/models",verifiedAt:"2025-06-17"},{id:"google-vertex:gemini-2.5-flash-lite-preview-06-17",provider:"google-vertex",vendorId:"gemini-2.5-flash-lite-preview-06-17",displayName:"Gemini 2.5 Flash Lite Preview 06-17",family:"gemini-2.5-flash-lite-preview-06-17",status:"stable",context:{combinedMax:65536,outputMax:65536},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.1,outputPerMTokens:.4},pricingSource:"models.dev",aliases:["google-vertex/gemini-2.5-flash-lite-preview-06-17"],releasedAt:"2025-06-17",source:"https://cloud.google.com/vertex-ai/generative-ai/docs/models",contextSource:"https://cloud.google.com/vertex-ai/generative-ai/docs/models",verifiedAt:"2025-06-17"},{id:"google-vertex:gemini-2.5-flash-preview-04-17",provider:"google-vertex",vendorId:"gemini-2.5-flash-preview-04-17",displayName:"Gemini 2.5 Flash Preview 04-17",family:"gemini-2.5-flash-preview-04-17",status:"stable",context:{combinedMax:1048576,outputMax:65536},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.15,outputPerMTokens:.6},pricingSource:"models.dev",aliases:["google-vertex/gemini-2.5-flash-preview-04-17"],releasedAt:"2025-04-17",source:"https://cloud.google.com/vertex-ai/generative-ai/docs/models",contextSource:"https://cloud.google.com/vertex-ai/generative-ai/docs/models",verifiedAt:"2025-04-17"},{id:"google-vertex:gemini-2.5-flash-preview-05-20",provider:"google-vertex",vendorId:"gemini-2.5-flash-preview-05-20",displayName:"Gemini 2.5 Flash Preview 05-20",family:"gemini-2.5-flash-preview-05-20",status:"stable",context:{combinedMax:1048576,outputMax:65536},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.15,outputPerMTokens:.6},pricingSource:"models.dev",aliases:["google-vertex/gemini-2.5-flash-preview-05-20"],releasedAt:"2025-05-20",source:"https://cloud.google.com/vertex-ai/generative-ai/docs/models",contextSource:"https://cloud.google.com/vertex-ai/generative-ai/docs/models",verifiedAt:"2025-05-20"},{id:"google-vertex:gemini-2.5-pro",provider:"google-vertex",vendorId:"gemini-2.5-pro",displayName:"Gemini 2.5 Pro",family:"gemini-2.5-pro",status:"stable",context:{combinedMax:1048576,outputMax:65536},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:1.25,outputPerMTokens:10},pricingSource:"models.dev",aliases:["google-vertex/gemini-2.5-pro"],releasedAt:"2025-03-20",source:"https://cloud.google.com/vertex-ai/generative-ai/docs/models",contextSource:"https://cloud.google.com/vertex-ai/generative-ai/docs/models",verifiedAt:"2025-06-05"},{id:"google-vertex:gemini-2.5-pro-preview-05-06",provider:"google-vertex",vendorId:"gemini-2.5-pro-preview-05-06",displayName:"Gemini 2.5 Pro Preview 05-06",family:"gemini-2.5-pro-preview-05-06",status:"stable",context:{combinedMax:1048576,outputMax:65536},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:1.25,outputPerMTokens:10},pricingSource:"models.dev",aliases:["google-vertex/gemini-2.5-pro-preview-05-06"],releasedAt:"2025-05-06",source:"https://cloud.google.com/vertex-ai/generative-ai/docs/models",contextSource:"https://cloud.google.com/vertex-ai/generative-ai/docs/models",verifiedAt:"2025-05-06"},{id:"google-vertex:gemini-2.5-pro-preview-06-05",provider:"google-vertex",vendorId:"gemini-2.5-pro-preview-06-05",displayName:"Gemini 2.5 Pro Preview 06-05",family:"gemini-2.5-pro-preview-06-05",status:"stable",context:{combinedMax:1048576,outputMax:65536},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:1.25,outputPerMTokens:10},pricingSource:"models.dev",aliases:["google-vertex/gemini-2.5-pro-preview-06-05"],releasedAt:"2025-06-05",source:"https://cloud.google.com/vertex-ai/generative-ai/docs/models",contextSource:"https://cloud.google.com/vertex-ai/generative-ai/docs/models",verifiedAt:"2025-06-05"},{id:"google-vertex-anthropic:claude-3-5-haiku@20241022",provider:"google-vertex-anthropic",vendorId:"claude-3-5-haiku@20241022",displayName:"Claude Haiku 3.5",family:"claude-3-5-haiku@20241022",status:"stable",context:{combinedMax:2e5,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.8,outputPerMTokens:4},pricingSource:"models.dev",aliases:["google-vertex-anthropic/claude-3-5-haiku@20241022"],releasedAt:"2024-10-22",source:"https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/claude",contextSource:"https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/claude",verifiedAt:"2024-10-22"},{id:"google-vertex-anthropic:claude-3-5-sonnet@20241022",provider:"google-vertex-anthropic",vendorId:"claude-3-5-sonnet@20241022",displayName:"Claude Sonnet 3.5 v2",family:"claude-3-5-sonnet@20241022",status:"stable",context:{combinedMax:2e5,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["google-vertex-anthropic/claude-3-5-sonnet@20241022"],releasedAt:"2024-10-22",source:"https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/claude",contextSource:"https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/claude",verifiedAt:"2024-10-22"},{id:"google-vertex-anthropic:claude-3-7-sonnet@20250219",provider:"google-vertex-anthropic",vendorId:"claude-3-7-sonnet@20250219",displayName:"Claude Sonnet 3.7",family:"claude-3-7-sonnet@20250219",status:"stable",context:{combinedMax:2e5,outputMax:64e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["google-vertex-anthropic/claude-3-7-sonnet@20250219"],releasedAt:"2025-02-19",source:"https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/claude",contextSource:"https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/claude",verifiedAt:"2025-02-19"},{id:"google-vertex-anthropic:claude-opus-4-1@20250805",provider:"google-vertex-anthropic",vendorId:"claude-opus-4-1@20250805",displayName:"Claude Opus 4.1",family:"claude-opus-4-1@20250805",status:"stable",context:{combinedMax:2e5,outputMax:32e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:15,outputPerMTokens:75},pricingSource:"models.dev",aliases:["google-vertex-anthropic/claude-opus-4-1@20250805"],releasedAt:"2025-08-05",source:"https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/claude",contextSource:"https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/claude",verifiedAt:"2025-08-05"},{id:"google-vertex-anthropic:claude-opus-4@20250514",provider:"google-vertex-anthropic",vendorId:"claude-opus-4@20250514",displayName:"Claude Opus 4",family:"claude-opus-4@20250514",status:"stable",context:{combinedMax:2e5,outputMax:32e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:15,outputPerMTokens:75},pricingSource:"models.dev",aliases:["google-vertex-anthropic/claude-opus-4@20250514"],releasedAt:"2025-05-22",source:"https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/claude",contextSource:"https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/claude",verifiedAt:"2025-05-22"},{id:"google-vertex-anthropic:claude-sonnet-4@20250514",provider:"google-vertex-anthropic",vendorId:"claude-sonnet-4@20250514",displayName:"Claude Sonnet 4",family:"claude-sonnet-4@20250514",status:"stable",context:{combinedMax:2e5,outputMax:64e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["google-vertex-anthropic/claude-sonnet-4@20250514"],releasedAt:"2025-05-22",source:"https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/claude",contextSource:"https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/claude",verifiedAt:"2025-05-22"},{id:"groq:deepseek-r1-distill-llama-70b",provider:"groq",vendorId:"deepseek-r1-distill-llama-70b",displayName:"DeepSeek R1 Distill Llama 70B",family:"deepseek-r1-distill-llama-70b",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.75,outputPerMTokens:.99},pricingSource:"models.dev",aliases:["groq/deepseek-r1-distill-llama-70b"],releasedAt:"2025-01-20",source:"https://console.groq.com/docs/models",contextSource:"https://console.groq.com/docs/models",verifiedAt:"2025-01-20"},{id:"groq:gemma2-9b-it",provider:"groq",vendorId:"gemma2-9b-it",displayName:"Gemma 2 9B",family:"gemma2-9b-it",status:"stable",context:{combinedMax:8192,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.2,outputPerMTokens:.2},pricingSource:"models.dev",aliases:["groq/gemma2-9b-it"],releasedAt:"2024-06-27",source:"https://console.groq.com/docs/models",contextSource:"https://console.groq.com/docs/models",verifiedAt:"2024-06-27"},{id:"groq:llama-3.1-8b-instant",provider:"groq",vendorId:"llama-3.1-8b-instant",displayName:"Llama 3.1 8B Instant",family:"llama-3.1-8b-instant",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.05,outputPerMTokens:.08},pricingSource:"models.dev",aliases:["groq/llama-3.1-8b-instant"],releasedAt:"2024-07-23",source:"https://console.groq.com/docs/models",contextSource:"https://console.groq.com/docs/models",verifiedAt:"2024-07-23"},{id:"groq:llama-3.3-70b-versatile",provider:"groq",vendorId:"llama-3.3-70b-versatile",displayName:"Llama 3.3 70B Versatile",family:"llama-3.3-70b-versatile",status:"stable",context:{combinedMax:131072,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.59,outputPerMTokens:.79},pricingSource:"models.dev",aliases:["groq/llama-3.3-70b-versatile"],releasedAt:"2024-12-06",source:"https://console.groq.com/docs/models",contextSource:"https://console.groq.com/docs/models",verifiedAt:"2024-12-06"},{id:"groq:llama-guard-3-8b",provider:"groq",vendorId:"llama-guard-3-8b",displayName:"Llama Guard 3 8B",family:"llama-guard-3-8b",status:"stable",context:{combinedMax:8192,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.2,outputPerMTokens:.2},pricingSource:"models.dev",aliases:["groq/llama-guard-3-8b"],releasedAt:"2024-07-23",source:"https://console.groq.com/docs/models",contextSource:"https://console.groq.com/docs/models",verifiedAt:"2024-07-23"},{id:"groq:llama3-70b-8192",provider:"groq",vendorId:"llama3-70b-8192",displayName:"Llama 3 70B",family:"llama3-70b-8192",status:"stable",context:{combinedMax:8192,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.59,outputPerMTokens:.79},pricingSource:"models.dev",aliases:["groq/llama3-70b-8192"],releasedAt:"2024-04-18",source:"https://console.groq.com/docs/models",contextSource:"https://console.groq.com/docs/models",verifiedAt:"2024-04-18"},{id:"groq:llama3-8b-8192",provider:"groq",vendorId:"llama3-8b-8192",displayName:"Llama 3 8B",family:"llama3-8b-8192",status:"stable",context:{combinedMax:8192,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.05,outputPerMTokens:.08},pricingSource:"models.dev",aliases:["groq/llama3-8b-8192"],releasedAt:"2024-04-18",source:"https://console.groq.com/docs/models",contextSource:"https://console.groq.com/docs/models",verifiedAt:"2024-04-18"},{id:"groq:meta-llama/llama-4-maverick-17b-128e-instruct",provider:"groq",vendorId:"meta-llama/llama-4-maverick-17b-128e-instruct",displayName:"Llama 4 Maverick 17B",family:"meta-llama/llama-4-maverick-17b-128e-instruct",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.2,outputPerMTokens:.6},pricingSource:"models.dev",aliases:["groq/meta-llama/llama-4-maverick-17b-128e-instruct"],releasedAt:"2025-04-05",source:"https://console.groq.com/docs/models",contextSource:"https://console.groq.com/docs/models",verifiedAt:"2025-04-05"},{id:"groq:meta-llama/llama-4-scout-17b-16e-instruct",provider:"groq",vendorId:"meta-llama/llama-4-scout-17b-16e-instruct",displayName:"Llama 4 Scout 17B",family:"meta-llama/llama-4-scout-17b-16e-instruct",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.11,outputPerMTokens:.34},pricingSource:"models.dev",aliases:["groq/meta-llama/llama-4-scout-17b-16e-instruct"],releasedAt:"2025-04-05",source:"https://console.groq.com/docs/models",contextSource:"https://console.groq.com/docs/models",verifiedAt:"2025-04-05"},{id:"groq:meta-llama/llama-guard-4-12b",provider:"groq",vendorId:"meta-llama/llama-guard-4-12b",displayName:"Llama Guard 4 12B",family:"meta-llama/llama-guard-4-12b",status:"stable",context:{combinedMax:131072,outputMax:128},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.2,outputPerMTokens:.2},pricingSource:"models.dev",aliases:["groq/meta-llama/llama-guard-4-12b"],releasedAt:"2025-04-05",source:"https://console.groq.com/docs/models",contextSource:"https://console.groq.com/docs/models",verifiedAt:"2025-04-05"},{id:"groq:mistral-saba-24b",provider:"groq",vendorId:"mistral-saba-24b",displayName:"Mistral Saba 24B",family:"mistral-saba-24b",status:"stable",context:{combinedMax:32768,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.79,outputPerMTokens:.79},pricingSource:"models.dev",aliases:["groq/mistral-saba-24b"],releasedAt:"2025-02-06",source:"https://console.groq.com/docs/models",contextSource:"https://console.groq.com/docs/models",verifiedAt:"2025-02-06"},{id:"groq:moonshotai/kimi-k2-instruct",provider:"groq",vendorId:"moonshotai/kimi-k2-instruct",displayName:"Kimi K2 Instruct",family:"moonshotai/kimi-k2-instruct",status:"stable",context:{combinedMax:131072,outputMax:16384},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1,outputPerMTokens:3},pricingSource:"models.dev",aliases:["groq/moonshotai/kimi-k2-instruct"],releasedAt:"2025-07-14",source:"https://console.groq.com/docs/models",contextSource:"https://console.groq.com/docs/models",verifiedAt:"2025-07-14"},{id:"groq:moonshotai/kimi-k2-instruct-0905",provider:"groq",vendorId:"moonshotai/kimi-k2-instruct-0905",displayName:"Kimi K2 Instruct 0905",family:"moonshotai/kimi-k2-instruct-0905",status:"stable",context:{combinedMax:262144,outputMax:16384},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1,outputPerMTokens:3},pricingSource:"models.dev",aliases:["groq/moonshotai/kimi-k2-instruct-0905"],releasedAt:"2025-09-05",source:"https://console.groq.com/docs/models",contextSource:"https://console.groq.com/docs/models",verifiedAt:"2025-09-05"},{id:"groq:openai/gpt-oss-120b",provider:"groq",vendorId:"openai/gpt-oss-120b",displayName:"GPT OSS 120B",family:"openai/gpt-oss-120b",status:"stable",context:{combinedMax:131072,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.15,outputPerMTokens:.75},pricingSource:"models.dev",aliases:["groq/openai/gpt-oss-120b"],releasedAt:"2025-08-05",source:"https://console.groq.com/docs/models",contextSource:"https://console.groq.com/docs/models",verifiedAt:"2025-08-05"},{id:"groq:openai/gpt-oss-20b",provider:"groq",vendorId:"openai/gpt-oss-20b",displayName:"GPT OSS 20B",family:"openai/gpt-oss-20b",status:"stable",context:{combinedMax:131072,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.1,outputPerMTokens:.5},pricingSource:"models.dev",aliases:["groq/openai/gpt-oss-20b"],releasedAt:"2025-08-05",source:"https://console.groq.com/docs/models",contextSource:"https://console.groq.com/docs/models",verifiedAt:"2025-08-05"},{id:"groq:qwen-qwq-32b",provider:"groq",vendorId:"qwen-qwq-32b",displayName:"Qwen QwQ 32B",family:"qwen-qwq-32b",status:"stable",context:{combinedMax:131072,outputMax:16384},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.29,outputPerMTokens:.39},pricingSource:"models.dev",aliases:["groq/qwen-qwq-32b"],releasedAt:"2024-11-27",source:"https://console.groq.com/docs/models",contextSource:"https://console.groq.com/docs/models",verifiedAt:"2024-11-27"},{id:"groq:qwen/qwen3-32b",provider:"groq",vendorId:"qwen/qwen3-32b",displayName:"Qwen3 32B",family:"qwen/qwen3-32b",status:"stable",context:{combinedMax:131072,outputMax:16384},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.29,outputPerMTokens:.59},pricingSource:"models.dev",aliases:["groq/qwen/qwen3-32b"],releasedAt:"2024-12-23",source:"https://console.groq.com/docs/models",contextSource:"https://console.groq.com/docs/models",verifiedAt:"2024-12-23"},{id:"huggingface:deepseek-ai/DeepSeek-R1-0528",provider:"huggingface",vendorId:"deepseek-ai/DeepSeek-R1-0528",displayName:"DeepSeek-R1-0528",family:"deepseek-ai/DeepSeek-R1-0528",status:"stable",context:{combinedMax:163840,outputMax:163840},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:3,outputPerMTokens:5},pricingSource:"models.dev",aliases:["huggingface/deepseek-ai/DeepSeek-R1-0528"],releasedAt:"2025-05-28",source:"https://huggingface.co/docs/inference-providers",contextSource:"https://huggingface.co/docs/inference-providers",verifiedAt:"2025-05-28"},{id:"huggingface:deepseek-ai/Deepseek-V3-0324",provider:"huggingface",vendorId:"deepseek-ai/Deepseek-V3-0324",displayName:"DeepSeek-V3-0324",family:"deepseek-ai/Deepseek-V3-0324",status:"stable",context:{combinedMax:16384,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1.25,outputPerMTokens:1.25},pricingSource:"models.dev",aliases:["huggingface/deepseek-ai/Deepseek-V3-0324"],releasedAt:"2025-03-24",source:"https://huggingface.co/docs/inference-providers",contextSource:"https://huggingface.co/docs/inference-providers",verifiedAt:"2025-03-24"},{id:"huggingface:moonshotai/Kimi-K2-Instruct",provider:"huggingface",vendorId:"moonshotai/Kimi-K2-Instruct",displayName:"Kimi-K2-Instruct",family:"moonshotai/Kimi-K2-Instruct",status:"stable",context:{combinedMax:131072,outputMax:16384},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1,outputPerMTokens:3},pricingSource:"models.dev",aliases:["huggingface/moonshotai/Kimi-K2-Instruct"],releasedAt:"2025-07-14",source:"https://huggingface.co/docs/inference-providers",contextSource:"https://huggingface.co/docs/inference-providers",verifiedAt:"2025-07-14"},{id:"huggingface:Qwen/Qwen3-235B-A22B-Thinking-2507",provider:"huggingface",vendorId:"Qwen/Qwen3-235B-A22B-Thinking-2507",displayName:"Qwen3-235B-A22B-Thinking-2507",family:"Qwen/Qwen3-235B-A22B-Thinking-2507",status:"stable",context:{combinedMax:262144,outputMax:131072},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.3,outputPerMTokens:3},pricingSource:"models.dev",aliases:["huggingface/Qwen/Qwen3-235B-A22B-Thinking-2507"],releasedAt:"2025-07-25",source:"https://huggingface.co/docs/inference-providers",contextSource:"https://huggingface.co/docs/inference-providers",verifiedAt:"2025-07-25"},{id:"huggingface:Qwen/Qwen3-Coder-480B-A35B-Instruct",provider:"huggingface",vendorId:"Qwen/Qwen3-Coder-480B-A35B-Instruct",displayName:"Qwen3-Coder-480B-A35B-Instruct",family:"Qwen/Qwen3-Coder-480B-A35B-Instruct",status:"stable",context:{combinedMax:262144,outputMax:66536},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:2,outputPerMTokens:2},pricingSource:"models.dev",aliases:["huggingface/Qwen/Qwen3-Coder-480B-A35B-Instruct"],releasedAt:"2025-07-23",source:"https://huggingface.co/docs/inference-providers",contextSource:"https://huggingface.co/docs/inference-providers",verifiedAt:"2025-07-23"},{id:"huggingface:zai-org/GLM-4.5",provider:"huggingface",vendorId:"zai-org/GLM-4.5",displayName:"GLM-4.5",family:"zai-org/GLM-4.5",status:"stable",context:{combinedMax:131072,outputMax:98304},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.6,outputPerMTokens:2.2},pricingSource:"models.dev",aliases:["huggingface/zai-org/GLM-4.5"],releasedAt:"2025-07-28",source:"https://huggingface.co/docs/inference-providers",contextSource:"https://huggingface.co/docs/inference-providers",verifiedAt:"2025-07-28"},{id:"huggingface:zai-org/GLM-4.5-Air",provider:"huggingface",vendorId:"zai-org/GLM-4.5-Air",displayName:"GLM-4.5-Air",family:"zai-org/GLM-4.5-Air",status:"stable",context:{combinedMax:128e3,outputMax:96e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.2,outputPerMTokens:1.1},pricingSource:"models.dev",aliases:["huggingface/zai-org/GLM-4.5-Air"],releasedAt:"2025-07-28",source:"https://huggingface.co/docs/inference-providers",contextSource:"https://huggingface.co/docs/inference-providers",verifiedAt:"2025-07-28"},{id:"inception:mercury",provider:"inception",vendorId:"mercury",displayName:"Mercury",family:"mercury",status:"stable",context:{combinedMax:128e3,outputMax:16384},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.25,outputPerMTokens:1},pricingSource:"models.dev",aliases:["inception/mercury"],releasedAt:"2025-06-26",source:"https://platform.inceptionlabs.ai/docs",contextSource:"https://platform.inceptionlabs.ai/docs",verifiedAt:"2025-07-31"},{id:"inception:mercury-coder",provider:"inception",vendorId:"mercury-coder",displayName:"Mercury Coder",family:"mercury-coder",status:"stable",context:{combinedMax:128e3,outputMax:16384},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.25,outputPerMTokens:1},pricingSource:"models.dev",aliases:["inception/mercury-coder"],releasedAt:"2025-02-26",source:"https://platform.inceptionlabs.ai/docs",contextSource:"https://platform.inceptionlabs.ai/docs",verifiedAt:"2025-07-31"},{id:"inference:google/gemma-3",provider:"inference",vendorId:"google/gemma-3",displayName:"Google Gemma 3",family:"google/gemma-3",status:"stable",context:{combinedMax:125e3,outputMax:4096},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.15,outputPerMTokens:.3},pricingSource:"models.dev",aliases:["inference/google/gemma-3"],releasedAt:"2025-01-01",source:"https://inference.net/models",contextSource:"https://inference.net/models",verifiedAt:"2025-01-01"},{id:"inference:meta/llama-3.1-8b-instruct",provider:"inference",vendorId:"meta/llama-3.1-8b-instruct",displayName:"Llama 3.1 8B Instruct",family:"meta/llama-3.1-8b-instruct",status:"stable",context:{combinedMax:16e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.025,outputPerMTokens:.025},pricingSource:"models.dev",aliases:["inference/meta/llama-3.1-8b-instruct"],releasedAt:"2025-01-01",source:"https://inference.net/models",contextSource:"https://inference.net/models",verifiedAt:"2025-01-01"},{id:"inference:meta/llama-3.2-11b-vision-instruct",provider:"inference",vendorId:"meta/llama-3.2-11b-vision-instruct",displayName:"Llama 3.2 11B Vision Instruct",family:"meta/llama-3.2-11b-vision-instruct",status:"stable",context:{combinedMax:16e3,outputMax:4096},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.055,outputPerMTokens:.055},pricingSource:"models.dev",aliases:["inference/meta/llama-3.2-11b-vision-instruct"],releasedAt:"2025-01-01",source:"https://inference.net/models",contextSource:"https://inference.net/models",verifiedAt:"2025-01-01"},{id:"inference:meta/llama-3.2-1b-instruct",provider:"inference",vendorId:"meta/llama-3.2-1b-instruct",displayName:"Llama 3.2 1B Instruct",family:"meta/llama-3.2-1b-instruct",status:"stable",context:{combinedMax:16e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.01,outputPerMTokens:.01},pricingSource:"models.dev",aliases:["inference/meta/llama-3.2-1b-instruct"],releasedAt:"2025-01-01",source:"https://inference.net/models",contextSource:"https://inference.net/models",verifiedAt:"2025-01-01"},{id:"inference:meta/llama-3.2-3b-instruct",provider:"inference",vendorId:"meta/llama-3.2-3b-instruct",displayName:"Llama 3.2 3B Instruct",family:"meta/llama-3.2-3b-instruct",status:"stable",context:{combinedMax:16e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.02,outputPerMTokens:.02},pricingSource:"models.dev",aliases:["inference/meta/llama-3.2-3b-instruct"],releasedAt:"2025-01-01",source:"https://inference.net/models",contextSource:"https://inference.net/models",verifiedAt:"2025-01-01"},{id:"inference:mistral/mistral-nemo-12b-instruct",provider:"inference",vendorId:"mistral/mistral-nemo-12b-instruct",displayName:"Mistral Nemo 12B Instruct",family:"mistral/mistral-nemo-12b-instruct",status:"stable",context:{combinedMax:16e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.038,outputPerMTokens:.1},pricingSource:"models.dev",aliases:["inference/mistral/mistral-nemo-12b-instruct"],releasedAt:"2025-01-01",source:"https://inference.net/models",contextSource:"https://inference.net/models",verifiedAt:"2025-01-01"},{id:"inference:osmosis/osmosis-structure-0.6b",provider:"inference",vendorId:"osmosis/osmosis-structure-0.6b",displayName:"Osmosis Structure 0.6B",family:"osmosis/osmosis-structure-0.6b",status:"stable",context:{combinedMax:4e3,outputMax:2048},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.1,outputPerMTokens:.5},pricingSource:"models.dev",aliases:["inference/osmosis/osmosis-structure-0.6b"],releasedAt:"2025-01-01",source:"https://inference.net/models",contextSource:"https://inference.net/models",verifiedAt:"2025-01-01"},{id:"inference:qwen/qwen-2.5-7b-vision-instruct",provider:"inference",vendorId:"qwen/qwen-2.5-7b-vision-instruct",displayName:"Qwen 2.5 7B Vision Instruct",family:"qwen/qwen-2.5-7b-vision-instruct",status:"stable",context:{combinedMax:125e3,outputMax:4096},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.2,outputPerMTokens:.2},pricingSource:"models.dev",aliases:["inference/qwen/qwen-2.5-7b-vision-instruct"],releasedAt:"2025-01-01",source:"https://inference.net/models",contextSource:"https://inference.net/models",verifiedAt:"2025-01-01"},{id:"inference:qwen/qwen3-embedding-4b",provider:"inference",vendorId:"qwen/qwen3-embedding-4b",displayName:"Qwen 3 Embedding 4B",family:"qwen/qwen3-embedding-4b",status:"stable",context:{combinedMax:32e3,outputMax:2048},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.01,outputPerMTokens:0},pricingSource:"models.dev",aliases:["inference/qwen/qwen3-embedding-4b"],releasedAt:"2025-01-01",source:"https://inference.net/models",contextSource:"https://inference.net/models",verifiedAt:"2025-01-01"},{id:"llama:cerebras-llama-4-maverick-17b-128e-instruct",provider:"llama",vendorId:"cerebras-llama-4-maverick-17b-128e-instruct",displayName:"Cerebras-Llama-4-Maverick-17B-128E-Instruct",family:"cerebras-llama-4-maverick-17b-128e-instruct",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["llama/cerebras-llama-4-maverick-17b-128e-instruct"],releasedAt:"2025-04-05",source:"https://llama.developer.meta.com/docs/models",contextSource:"https://llama.developer.meta.com/docs/models",verifiedAt:"2025-04-05"},{id:"llama:cerebras-llama-4-scout-17b-16e-instruct",provider:"llama",vendorId:"cerebras-llama-4-scout-17b-16e-instruct",displayName:"Cerebras-Llama-4-Scout-17B-16E-Instruct",family:"cerebras-llama-4-scout-17b-16e-instruct",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["llama/cerebras-llama-4-scout-17b-16e-instruct"],releasedAt:"2025-04-05",source:"https://llama.developer.meta.com/docs/models",contextSource:"https://llama.developer.meta.com/docs/models",verifiedAt:"2025-04-05"},{id:"llama:groq-llama-4-maverick-17b-128e-instruct",provider:"llama",vendorId:"groq-llama-4-maverick-17b-128e-instruct",displayName:"Groq-Llama-4-Maverick-17B-128E-Instruct",family:"groq-llama-4-maverick-17b-128e-instruct",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["llama/groq-llama-4-maverick-17b-128e-instruct"],releasedAt:"2025-04-05",source:"https://llama.developer.meta.com/docs/models",contextSource:"https://llama.developer.meta.com/docs/models",verifiedAt:"2025-04-05"},{id:"llama:llama-3.3-70b-instruct",provider:"llama",vendorId:"llama-3.3-70b-instruct",displayName:"Llama-3.3-70B-Instruct",family:"llama-3.3-70b-instruct",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["llama/llama-3.3-70b-instruct"],releasedAt:"2024-12-06",source:"https://llama.developer.meta.com/docs/models",contextSource:"https://llama.developer.meta.com/docs/models",verifiedAt:"2024-12-06"},{id:"llama:llama-3.3-8b-instruct",provider:"llama",vendorId:"llama-3.3-8b-instruct",displayName:"Llama-3.3-8B-Instruct",family:"llama-3.3-8b-instruct",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["llama/llama-3.3-8b-instruct"],releasedAt:"2024-12-06",source:"https://llama.developer.meta.com/docs/models",contextSource:"https://llama.developer.meta.com/docs/models",verifiedAt:"2024-12-06"},{id:"llama:llama-4-maverick-17b-128e-instruct-fp8",provider:"llama",vendorId:"llama-4-maverick-17b-128e-instruct-fp8",displayName:"Llama-4-Maverick-17B-128E-Instruct-FP8",family:"llama-4-maverick-17b-128e-instruct-fp8",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["llama/llama-4-maverick-17b-128e-instruct-fp8"],releasedAt:"2025-04-05",source:"https://llama.developer.meta.com/docs/models",contextSource:"https://llama.developer.meta.com/docs/models",verifiedAt:"2025-04-05"},{id:"llama:llama-4-scout-17b-16e-instruct-fp8",provider:"llama",vendorId:"llama-4-scout-17b-16e-instruct-fp8",displayName:"Llama-4-Scout-17B-16E-Instruct-FP8",family:"llama-4-scout-17b-16e-instruct-fp8",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["llama/llama-4-scout-17b-16e-instruct-fp8"],releasedAt:"2025-04-05",source:"https://llama.developer.meta.com/docs/models",contextSource:"https://llama.developer.meta.com/docs/models",verifiedAt:"2025-04-05"},{id:"lmstudio:openai/gpt-oss-20b",provider:"lmstudio",vendorId:"openai/gpt-oss-20b",displayName:"GPT OSS 20B",family:"openai/gpt-oss-20b",status:"stable",context:{combinedMax:131072,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["lmstudio/openai/gpt-oss-20b"],releasedAt:"2025-08-05",source:"https://lmstudio.ai/models",contextSource:"https://lmstudio.ai/models",verifiedAt:"2025-08-05"},{id:"lmstudio:qwen/qwen3-30b-a3b-2507",provider:"lmstudio",vendorId:"qwen/qwen3-30b-a3b-2507",displayName:"Qwen3 30B A3B 2507",family:"qwen/qwen3-30b-a3b-2507",status:"stable",context:{combinedMax:262144,outputMax:16384},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["lmstudio/qwen/qwen3-30b-a3b-2507"],releasedAt:"2025-07-30",source:"https://lmstudio.ai/models",contextSource:"https://lmstudio.ai/models",verifiedAt:"2025-07-30"},{id:"lmstudio:qwen/qwen3-coder-30b",provider:"lmstudio",vendorId:"qwen/qwen3-coder-30b",displayName:"Qwen3 Coder 30B",family:"qwen/qwen3-coder-30b",status:"stable",context:{combinedMax:262144,outputMax:65536},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["lmstudio/qwen/qwen3-coder-30b"],releasedAt:"2025-07-23",source:"https://lmstudio.ai/models",contextSource:"https://lmstudio.ai/models",verifiedAt:"2025-07-23"},{id:"mistral:codestral-latest",provider:"mistral",vendorId:"codestral-latest",displayName:"Codestral",family:"codestral-latest",status:"stable",context:{combinedMax:256e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.3,outputPerMTokens:.9},pricingSource:"models.dev",aliases:["mistral/codestral-latest"],releasedAt:"2024-05-29",source:"https://docs.mistral.ai/getting-started/models/",contextSource:"https://docs.mistral.ai/getting-started/models/",verifiedAt:"2025-01-04"},{id:"mistral:devstral-medium-2507",provider:"mistral",vendorId:"devstral-medium-2507",displayName:"Devstral Medium",family:"devstral-medium-2507",status:"stable",context:{combinedMax:128e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.4,outputPerMTokens:2},pricingSource:"models.dev",aliases:["mistral/devstral-medium-2507"],releasedAt:"2025-07-10",source:"https://docs.mistral.ai/getting-started/models/",contextSource:"https://docs.mistral.ai/getting-started/models/",verifiedAt:"2025-07-10"},{id:"mistral:devstral-small-2505",provider:"mistral",vendorId:"devstral-small-2505",displayName:"Devstral Small 2505",family:"devstral-small-2505",status:"stable",context:{combinedMax:128e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.1,outputPerMTokens:.3},pricingSource:"models.dev",aliases:["mistral/devstral-small-2505"],releasedAt:"2025-05-07",source:"https://docs.mistral.ai/getting-started/models/",contextSource:"https://docs.mistral.ai/getting-started/models/",verifiedAt:"2025-05-07"},{id:"mistral:devstral-small-2507",provider:"mistral",vendorId:"devstral-small-2507",displayName:"Devstral Small",family:"devstral-small-2507",status:"stable",context:{combinedMax:128e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.1,outputPerMTokens:.3},pricingSource:"models.dev",aliases:["mistral/devstral-small-2507"],releasedAt:"2025-07-10",source:"https://docs.mistral.ai/getting-started/models/",contextSource:"https://docs.mistral.ai/getting-started/models/",verifiedAt:"2025-07-10"},{id:"mistral:magistral-medium-latest",provider:"mistral",vendorId:"magistral-medium-latest",displayName:"Magistral Medium",family:"magistral-medium-latest",status:"stable",context:{combinedMax:128e3,outputMax:16384},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:2,outputPerMTokens:5},pricingSource:"models.dev",aliases:["mistral/magistral-medium-latest"],releasedAt:"2025-03-17",source:"https://docs.mistral.ai/getting-started/models/",contextSource:"https://docs.mistral.ai/getting-started/models/",verifiedAt:"2025-03-20"},{id:"mistral:magistral-small",provider:"mistral",vendorId:"magistral-small",displayName:"Magistral Small",family:"magistral-small",status:"stable",context:{combinedMax:128e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.5,outputPerMTokens:1.5},pricingSource:"models.dev",aliases:["mistral/magistral-small"],releasedAt:"2025-03-17",source:"https://docs.mistral.ai/getting-started/models/",contextSource:"https://docs.mistral.ai/getting-started/models/",verifiedAt:"2025-03-17"},{id:"mistral:ministral-3b-latest",provider:"mistral",vendorId:"ministral-3b-latest",displayName:"Ministral 3B",family:"ministral-3b-latest",status:"stable",context:{combinedMax:128e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.04,outputPerMTokens:.04},pricingSource:"models.dev",aliases:["mistral/ministral-3b-latest"],releasedAt:"2024-10-01",source:"https://docs.mistral.ai/getting-started/models/",contextSource:"https://docs.mistral.ai/getting-started/models/",verifiedAt:"2024-10-04"},{id:"mistral:ministral-8b-latest",provider:"mistral",vendorId:"ministral-8b-latest",displayName:"Ministral 8B",family:"ministral-8b-latest",status:"stable",context:{combinedMax:128e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.1,outputPerMTokens:.1},pricingSource:"models.dev",aliases:["mistral/ministral-8b-latest"],releasedAt:"2024-10-01",source:"https://docs.mistral.ai/getting-started/models/",contextSource:"https://docs.mistral.ai/getting-started/models/",verifiedAt:"2024-10-04"},{id:"mistral:mistral-large-latest",provider:"mistral",vendorId:"mistral-large-latest",displayName:"Mistral Large",family:"mistral-large-latest",status:"stable",context:{combinedMax:131072,outputMax:16384},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:2,outputPerMTokens:6},pricingSource:"models.dev",aliases:["mistral/mistral-large-latest"],releasedAt:"2024-11-01",source:"https://docs.mistral.ai/getting-started/models/",contextSource:"https://docs.mistral.ai/getting-started/models/",verifiedAt:"2024-11-04"},{id:"mistral:mistral-medium-2505",provider:"mistral",vendorId:"mistral-medium-2505",displayName:"Mistral Medium 3",family:"mistral-medium-2505",status:"stable",context:{combinedMax:131072,outputMax:131072},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.4,outputPerMTokens:2},pricingSource:"models.dev",aliases:["mistral/mistral-medium-2505"],releasedAt:"2025-05-07",source:"https://docs.mistral.ai/getting-started/models/",contextSource:"https://docs.mistral.ai/getting-started/models/",verifiedAt:"2025-05-07"},{id:"mistral:mistral-medium-2508",provider:"mistral",vendorId:"mistral-medium-2508",displayName:"Mistral Medium 3.1",family:"mistral-medium-2508",status:"stable",context:{combinedMax:262144,outputMax:262144},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.4,outputPerMTokens:2},pricingSource:"models.dev",aliases:["mistral/mistral-medium-2508"],releasedAt:"2025-08-12",source:"https://docs.mistral.ai/getting-started/models/",contextSource:"https://docs.mistral.ai/getting-started/models/",verifiedAt:"2025-08-12"},{id:"mistral:mistral-medium-latest",provider:"mistral",vendorId:"mistral-medium-latest",displayName:"Mistral Medium",family:"mistral-medium-latest",status:"stable",context:{combinedMax:128e3,outputMax:16384},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.4,outputPerMTokens:2},pricingSource:"models.dev",aliases:["mistral/mistral-medium-latest"],releasedAt:"2025-05-07",source:"https://docs.mistral.ai/getting-started/models/",contextSource:"https://docs.mistral.ai/getting-started/models/",verifiedAt:"2025-05-10"},{id:"mistral:mistral-nemo",provider:"mistral",vendorId:"mistral-nemo",displayName:"Mistral Nemo",family:"mistral-nemo",status:"stable",context:{combinedMax:128e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.15,outputPerMTokens:.15},pricingSource:"models.dev",aliases:["mistral/mistral-nemo"],releasedAt:"2024-07-01",source:"https://docs.mistral.ai/getting-started/models/",contextSource:"https://docs.mistral.ai/getting-started/models/",verifiedAt:"2024-07-01"},{id:"mistral:mistral-small-latest",provider:"mistral",vendorId:"mistral-small-latest",displayName:"Mistral Small",family:"mistral-small-latest",status:"stable",context:{combinedMax:128e3,outputMax:16384},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.1,outputPerMTokens:.3},pricingSource:"models.dev",aliases:["mistral/mistral-small-latest"],releasedAt:"2024-09-01",source:"https://docs.mistral.ai/getting-started/models/",contextSource:"https://docs.mistral.ai/getting-started/models/",verifiedAt:"2024-09-04"},{id:"mistral:open-mistral-7b",provider:"mistral",vendorId:"open-mistral-7b",displayName:"Mistral 7B",family:"open-mistral-7b",status:"stable",context:{combinedMax:8e3,outputMax:8e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.25,outputPerMTokens:.25},pricingSource:"models.dev",aliases:["mistral/open-mistral-7b"],releasedAt:"2023-09-27",source:"https://docs.mistral.ai/getting-started/models/",contextSource:"https://docs.mistral.ai/getting-started/models/",verifiedAt:"2023-09-27"},{id:"mistral:open-mixtral-8x22b",provider:"mistral",vendorId:"open-mixtral-8x22b",displayName:"Mixtral 8x22B",family:"open-mixtral-8x22b",status:"stable",context:{combinedMax:64e3,outputMax:64e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:2,outputPerMTokens:6},pricingSource:"models.dev",aliases:["mistral/open-mixtral-8x22b"],releasedAt:"2024-04-17",source:"https://docs.mistral.ai/getting-started/models/",contextSource:"https://docs.mistral.ai/getting-started/models/",verifiedAt:"2024-04-17"},{id:"mistral:open-mixtral-8x7b",provider:"mistral",vendorId:"open-mixtral-8x7b",displayName:"Mixtral 8x7B",family:"open-mixtral-8x7b",status:"stable",context:{combinedMax:32e3,outputMax:32e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.7,outputPerMTokens:.7},pricingSource:"models.dev",aliases:["mistral/open-mixtral-8x7b"],releasedAt:"2023-12-11",source:"https://docs.mistral.ai/getting-started/models/",contextSource:"https://docs.mistral.ai/getting-started/models/",verifiedAt:"2023-12-11"},{id:"mistral:pixtral-12b",provider:"mistral",vendorId:"pixtral-12b",displayName:"Pixtral 12B",family:"pixtral-12b",status:"stable",context:{combinedMax:128e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.15,outputPerMTokens:.15},pricingSource:"models.dev",aliases:["mistral/pixtral-12b"],releasedAt:"2024-09-01",source:"https://docs.mistral.ai/getting-started/models/",contextSource:"https://docs.mistral.ai/getting-started/models/",verifiedAt:"2024-09-01"},{id:"mistral:pixtral-large-latest",provider:"mistral",vendorId:"pixtral-large-latest",displayName:"Pixtral Large",family:"pixtral-large-latest",status:"stable",context:{combinedMax:128e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:2,outputPerMTokens:6},pricingSource:"models.dev",aliases:["mistral/pixtral-large-latest"],releasedAt:"2024-11-01",source:"https://docs.mistral.ai/getting-started/models/",contextSource:"https://docs.mistral.ai/getting-started/models/",verifiedAt:"2024-11-04"},{id:"modelscope:moonshotai/Kimi-K2-Instruct",provider:"modelscope",vendorId:"moonshotai/Kimi-K2-Instruct",displayName:"Kimi-K2-Instruct",family:"moonshotai/Kimi-K2-Instruct",status:"stable",context:{combinedMax:128e3,outputMax:16384},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["modelscope/moonshotai/Kimi-K2-Instruct"],releasedAt:"2025-07-14",source:"https://modelscope.cn/docs/model-service/API-Inference/intro",contextSource:"https://modelscope.cn/docs/model-service/API-Inference/intro",verifiedAt:"2025-07-14"},{id:"modelscope:Qwen/Qwen3-235B-A22B-Instruct-2507",provider:"modelscope",vendorId:"Qwen/Qwen3-235B-A22B-Instruct-2507",displayName:"Qwen3 235B A22B Instruct 2507",family:"Qwen/Qwen3-235B-A22B-Instruct-2507",status:"stable",context:{combinedMax:262144,outputMax:131072},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["modelscope/Qwen/Qwen3-235B-A22B-Instruct-2507"],releasedAt:"2025-04-28",source:"https://modelscope.cn/docs/model-service/API-Inference/intro",contextSource:"https://modelscope.cn/docs/model-service/API-Inference/intro",verifiedAt:"2025-07-21"},{id:"modelscope:Qwen/Qwen3-235B-A22B-Thinking-2507",provider:"modelscope",vendorId:"Qwen/Qwen3-235B-A22B-Thinking-2507",displayName:"Qwen3-235B-A22B-Thinking-2507",family:"Qwen/Qwen3-235B-A22B-Thinking-2507",status:"stable",context:{combinedMax:262144,outputMax:131072},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["modelscope/Qwen/Qwen3-235B-A22B-Thinking-2507"],releasedAt:"2025-07-25",source:"https://modelscope.cn/docs/model-service/API-Inference/intro",contextSource:"https://modelscope.cn/docs/model-service/API-Inference/intro",verifiedAt:"2025-07-25"},{id:"modelscope:Qwen/Qwen3-30B-A3B-Instruct-2507",provider:"modelscope",vendorId:"Qwen/Qwen3-30B-A3B-Instruct-2507",displayName:"Qwen3 30B A3B Instruct 2507",family:"Qwen/Qwen3-30B-A3B-Instruct-2507",status:"stable",context:{combinedMax:262144,outputMax:16384},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["modelscope/Qwen/Qwen3-30B-A3B-Instruct-2507"],releasedAt:"2025-07-30",source:"https://modelscope.cn/docs/model-service/API-Inference/intro",contextSource:"https://modelscope.cn/docs/model-service/API-Inference/intro",verifiedAt:"2025-07-30"},{id:"modelscope:Qwen/Qwen3-30B-A3B-Thinking-2507",provider:"modelscope",vendorId:"Qwen/Qwen3-30B-A3B-Thinking-2507",displayName:"Qwen3 30B A3B Thinking 2507",family:"Qwen/Qwen3-30B-A3B-Thinking-2507",status:"stable",context:{combinedMax:262144,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["modelscope/Qwen/Qwen3-30B-A3B-Thinking-2507"],releasedAt:"2025-07-30",source:"https://modelscope.cn/docs/model-service/API-Inference/intro",contextSource:"https://modelscope.cn/docs/model-service/API-Inference/intro",verifiedAt:"2025-07-30"},{id:"modelscope:Qwen/Qwen3-Coder-30B-A3B-Instruct",provider:"modelscope",vendorId:"Qwen/Qwen3-Coder-30B-A3B-Instruct",displayName:"Qwen3 Coder 30B A3B Instruct",family:"Qwen/Qwen3-Coder-30B-A3B-Instruct",status:"stable",context:{combinedMax:262144,outputMax:65536},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["modelscope/Qwen/Qwen3-Coder-30B-A3B-Instruct"],releasedAt:"2025-07-31",source:"https://modelscope.cn/docs/model-service/API-Inference/intro",contextSource:"https://modelscope.cn/docs/model-service/API-Inference/intro",verifiedAt:"2025-07-31"},{id:"modelscope:Qwen/Qwen3-Coder-480B-A35B-Instruct",provider:"modelscope",vendorId:"Qwen/Qwen3-Coder-480B-A35B-Instruct",displayName:"Qwen3-Coder-480B-A35B-Instruct",family:"Qwen/Qwen3-Coder-480B-A35B-Instruct",status:"stable",context:{combinedMax:262144,outputMax:66536},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["modelscope/Qwen/Qwen3-Coder-480B-A35B-Instruct"],releasedAt:"2025-07-23",source:"https://modelscope.cn/docs/model-service/API-Inference/intro",contextSource:"https://modelscope.cn/docs/model-service/API-Inference/intro",verifiedAt:"2025-07-23"},{id:"modelscope:ZhipuAI/GLM-4.5",provider:"modelscope",vendorId:"ZhipuAI/GLM-4.5",displayName:"GLM-4.5",family:"ZhipuAI/GLM-4.5",status:"stable",context:{combinedMax:131072,outputMax:98304},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["modelscope/ZhipuAI/GLM-4.5"],releasedAt:"2025-07-28",source:"https://modelscope.cn/docs/model-service/API-Inference/intro",contextSource:"https://modelscope.cn/docs/model-service/API-Inference/intro",verifiedAt:"2025-07-28"},{id:"moonshotai:kimi-k2-0711-preview",provider:"moonshotai",vendorId:"kimi-k2-0711-preview",displayName:"Kimi K2 0711",family:"kimi-k2-0711-preview",status:"stable",context:{combinedMax:131072,outputMax:16384},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.6,outputPerMTokens:2.5},pricingSource:"models.dev",aliases:["moonshotai/kimi-k2-0711-preview"],releasedAt:"2025-07-14",source:"https://platform.moonshot.ai/docs/api/chat",contextSource:"https://platform.moonshot.ai/docs/api/chat",verifiedAt:"2025-07-14"},{id:"moonshotai:kimi-k2-0905-preview",provider:"moonshotai",vendorId:"kimi-k2-0905-preview",displayName:"Kimi K2 0905",family:"kimi-k2-0905-preview",status:"stable",context:{combinedMax:262144,outputMax:262144},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.6,outputPerMTokens:2.5},pricingSource:"models.dev",aliases:["moonshotai/kimi-k2-0905-preview"],releasedAt:"2025-09-05",source:"https://platform.moonshot.ai/docs/api/chat",contextSource:"https://platform.moonshot.ai/docs/api/chat",verifiedAt:"2025-09-05"},{id:"moonshotai:kimi-k2-turbo-preview",provider:"moonshotai",vendorId:"kimi-k2-turbo-preview",displayName:"Kimi K2 Turbo",family:"kimi-k2-turbo-preview",status:"stable",context:{combinedMax:131072,outputMax:16384},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:2.4,outputPerMTokens:10},pricingSource:"models.dev",aliases:["moonshotai/kimi-k2-turbo-preview"],releasedAt:"2025-07-14",source:"https://platform.moonshot.ai/docs/api/chat",contextSource:"https://platform.moonshot.ai/docs/api/chat",verifiedAt:"2025-07-14"},{id:"moonshotai-cn:kimi-k2-0711-preview",provider:"moonshotai-cn",vendorId:"kimi-k2-0711-preview",displayName:"Kimi K2 0711",family:"kimi-k2-0711-preview",status:"stable",context:{combinedMax:131072,outputMax:16384},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.6,outputPerMTokens:2.5},pricingSource:"models.dev",aliases:["moonshotai-cn/kimi-k2-0711-preview"],releasedAt:"2025-07-14",source:"https://platform.moonshot.cn/docs/api/chat",contextSource:"https://platform.moonshot.cn/docs/api/chat",verifiedAt:"2025-07-14"},{id:"moonshotai-cn:kimi-k2-0905-preview",provider:"moonshotai-cn",vendorId:"kimi-k2-0905-preview",displayName:"Kimi K2 0905",family:"kimi-k2-0905-preview",status:"stable",context:{combinedMax:262144,outputMax:262144},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.6,outputPerMTokens:2.5},pricingSource:"models.dev",aliases:["moonshotai-cn/kimi-k2-0905-preview"],releasedAt:"2025-09-05",source:"https://platform.moonshot.cn/docs/api/chat",contextSource:"https://platform.moonshot.cn/docs/api/chat",verifiedAt:"2025-09-05"},{id:"moonshotai-cn:kimi-k2-turbo-preview",provider:"moonshotai-cn",vendorId:"kimi-k2-turbo-preview",displayName:"Kimi K2 Turbo",family:"kimi-k2-turbo-preview",status:"stable",context:{combinedMax:131072,outputMax:16384},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:2.4,outputPerMTokens:10},pricingSource:"models.dev",aliases:["moonshotai-cn/kimi-k2-turbo-preview"],releasedAt:"2025-07-14",source:"https://platform.moonshot.cn/docs/api/chat",contextSource:"https://platform.moonshot.cn/docs/api/chat",verifiedAt:"2025-07-14"},{id:"morph:auto",provider:"morph",vendorId:"auto",displayName:"Auto",family:"auto",status:"stable",context:{combinedMax:32e3,outputMax:32e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.85,outputPerMTokens:1.55},pricingSource:"models.dev",aliases:["morph/auto"],releasedAt:"2024-06-01",source:"https://docs.morphllm.com/api-reference/introduction",contextSource:"https://docs.morphllm.com/api-reference/introduction",verifiedAt:"2024-06-01"},{id:"morph:morph-v3-fast",provider:"morph",vendorId:"morph-v3-fast",displayName:"Morph v3 Fast",family:"morph-v3-fast",status:"stable",context:{combinedMax:16e3,outputMax:16e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.8,outputPerMTokens:1.2},pricingSource:"models.dev",aliases:["morph/morph-v3-fast"],releasedAt:"2024-08-15",source:"https://docs.morphllm.com/api-reference/introduction",contextSource:"https://docs.morphllm.com/api-reference/introduction",verifiedAt:"2024-08-15"},{id:"morph:morph-v3-large",provider:"morph",vendorId:"morph-v3-large",displayName:"Morph v3 Large",family:"morph-v3-large",status:"stable",context:{combinedMax:32e3,outputMax:32e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.9,outputPerMTokens:1.9},pricingSource:"models.dev",aliases:["morph/morph-v3-large"],releasedAt:"2024-08-15",source:"https://docs.morphllm.com/api-reference/introduction",contextSource:"https://docs.morphllm.com/api-reference/introduction",verifiedAt:"2024-08-15"},{id:"nvidia:cosmos-nemotron-34b",provider:"nvidia",vendorId:"cosmos-nemotron-34b",displayName:"Cosmos Nemotron 34B",family:"cosmos-nemotron-34b",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["nvidia/cosmos-nemotron-34b"],releasedAt:"2024-01-01",source:"https://docs.api.nvidia.com/nim/",contextSource:"https://docs.api.nvidia.com/nim/",verifiedAt:"2025-09-05"},{id:"nvidia:deepseek-r1",provider:"nvidia",vendorId:"deepseek-r1",displayName:"DeepSeek R1",family:"deepseek-r1",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["nvidia/deepseek-r1"],releasedAt:"2024-11-01",source:"https://docs.api.nvidia.com/nim/",contextSource:"https://docs.api.nvidia.com/nim/",verifiedAt:"2025-09-05"},{id:"nvidia:deepseek-v3.1",provider:"nvidia",vendorId:"deepseek-v3.1",displayName:"DeepSeek V3.1",family:"deepseek-v3.1",status:"stable",context:{combinedMax:128e3,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["nvidia/deepseek-v3.1"],releasedAt:"2025-08-20",source:"https://docs.api.nvidia.com/nim/",contextSource:"https://docs.api.nvidia.com/nim/",verifiedAt:"2025-08-26"},{id:"nvidia:flux_1-dev",provider:"nvidia",vendorId:"flux_1-dev",displayName:"FLUX.1-dev",family:"flux_1-dev",status:"stable",context:{combinedMax:4096,outputMax:0},modalities:{textIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["nvidia/flux_1-dev"],releasedAt:"2024-08-01",source:"https://docs.api.nvidia.com/nim/",contextSource:"https://docs.api.nvidia.com/nim/",verifiedAt:"2025-09-05"},{id:"nvidia:gemma-3-27b-it",provider:"nvidia",vendorId:"gemma-3-27b-it",displayName:"Gemma-3-27B-IT",family:"gemma-3-27b-it",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["nvidia/gemma-3-27b-it"],releasedAt:"2024-12-01",source:"https://docs.api.nvidia.com/nim/",contextSource:"https://docs.api.nvidia.com/nim/",verifiedAt:"2025-09-05"},{id:"nvidia:llama-3.1-nemotron-ultra-253b-v1",provider:"nvidia",vendorId:"llama-3.1-nemotron-ultra-253b-v1",displayName:"Llama-3.1-Nemotron-Ultra-253B-v1",family:"llama-3.1-nemotron-ultra-253b-v1",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["nvidia/llama-3.1-nemotron-ultra-253b-v1"],releasedAt:"2024-07-01",source:"https://docs.api.nvidia.com/nim/",contextSource:"https://docs.api.nvidia.com/nim/",verifiedAt:"2025-09-05"},{id:"nvidia:llama-3.3-nemotron-super-49b-v1.5",provider:"nvidia",vendorId:"llama-3.3-nemotron-super-49b-v1.5",displayName:"Llama-3.3-Nemotron-Super-49B-v1.5",family:"llama-3.3-nemotron-super-49b-v1.5",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["nvidia/llama-3.3-nemotron-super-49b-v1.5"],releasedAt:"2025-07-25",source:"https://docs.api.nvidia.com/nim/",contextSource:"https://docs.api.nvidia.com/nim/",verifiedAt:"2025-09-05"},{id:"nvidia:mistral-small-3.1-24b-instruct-2503",provider:"nvidia",vendorId:"mistral-small-3.1-24b-instruct-2503",displayName:"Mistral-Small-3.1-24B-Instruct-2503",family:"mistral-small-3.1-24b-instruct-2503",status:"stable",context:{combinedMax:128e3,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["nvidia/mistral-small-3.1-24b-instruct-2503"],releasedAt:"2025-04-01",source:"https://docs.api.nvidia.com/nim/",contextSource:"https://docs.api.nvidia.com/nim/",verifiedAt:"2025-09-05"},{id:"nvidia:nemoretriever-ocr-v1",provider:"nvidia",vendorId:"nemoretriever-ocr-v1",displayName:"NeMo Retriever OCR v1",family:"nemoretriever-ocr-v1",status:"stable",context:{combinedMax:0,outputMax:4096},modalities:{textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["nvidia/nemoretriever-ocr-v1"],releasedAt:"2024-01-01",source:"https://docs.api.nvidia.com/nim/",contextSource:"https://docs.api.nvidia.com/nim/",verifiedAt:"2025-09-05"},{id:"nvidia:parakeet-tdt-0.6b-v2",provider:"nvidia",vendorId:"parakeet-tdt-0.6b-v2",displayName:"Parakeet TDT 0.6B v2",family:"parakeet-tdt-0.6b-v2",status:"stable",context:{combinedMax:0,outputMax:4096},modalities:{textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["nvidia/parakeet-tdt-0.6b-v2"],releasedAt:"2024-01-01",source:"https://docs.api.nvidia.com/nim/",contextSource:"https://docs.api.nvidia.com/nim/",verifiedAt:"2025-09-05"},{id:"nvidia:phi-4-multimodal-instruct",provider:"nvidia",vendorId:"phi-4-multimodal-instruct",displayName:"Phi-4-Multimodal-Instruct",family:"phi-4-multimodal-instruct",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["nvidia/phi-4-multimodal-instruct"],releasedAt:"2024-12-01",source:"https://docs.api.nvidia.com/nim/",contextSource:"https://docs.api.nvidia.com/nim/",verifiedAt:"2025-09-05"},{id:"nvidia:qwen3-235b-a22b",provider:"nvidia",vendorId:"qwen3-235b-a22b",displayName:"Qwen3-235B-A22B",family:"qwen3-235b-a22b",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["nvidia/qwen3-235b-a22b"],releasedAt:"2024-12-01",source:"https://docs.api.nvidia.com/nim/",contextSource:"https://docs.api.nvidia.com/nim/",verifiedAt:"2025-09-05"},{id:"nvidia:qwen3-coder-480b-a35b-instruct",provider:"nvidia",vendorId:"qwen3-coder-480b-a35b-instruct",displayName:"Qwen3 Coder 480B A35B Instruct",family:"qwen3-coder-480b-a35b-instruct",status:"stable",context:{combinedMax:262144,outputMax:66536},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["nvidia/qwen3-coder-480b-a35b-instruct"],releasedAt:"2025-07-23",source:"https://docs.api.nvidia.com/nim/",contextSource:"https://docs.api.nvidia.com/nim/",verifiedAt:"2025-07-23"},{id:"nvidia:whisper-large-v3",provider:"nvidia",vendorId:"whisper-large-v3",displayName:"Whisper Large v3",family:"whisper-large-v3",status:"stable",context:{combinedMax:0,outputMax:4096},modalities:{textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["nvidia/whisper-large-v3"],releasedAt:"2023-09-01",source:"https://docs.api.nvidia.com/nim/",contextSource:"https://docs.api.nvidia.com/nim/",verifiedAt:"2025-09-05"},{id:"openai:codex-mini-latest",provider:"openai",vendorId:"codex-mini-latest",displayName:"Codex Mini",family:"codex-mini-latest",status:"stable",context:{combinedMax:2e5,outputMax:1e5},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1.5,outputPerMTokens:6},pricingSource:"models.dev",aliases:["openai/codex-mini-latest"],releasedAt:"2025-05-16",source:"https://platform.openai.com/docs/models",contextSource:"https://platform.openai.com/docs/models",verifiedAt:"2025-05-16"},{id:"openai:gpt-3.5-turbo",provider:"openai",vendorId:"gpt-3.5-turbo",displayName:"GPT-3.5-turbo",family:"gpt-3.5-turbo",status:"stable",context:{combinedMax:16385,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.5,outputPerMTokens:1.5},pricingSource:"models.dev",aliases:["openai/gpt-3.5-turbo"],releasedAt:"2023-03-01",source:"https://platform.openai.com/docs/models",contextSource:"https://platform.openai.com/docs/models",verifiedAt:"2023-11-06"},{id:"openai:gpt-4",provider:"openai",vendorId:"gpt-4",displayName:"GPT-4",family:"gpt-4",status:"stable",context:{combinedMax:8192,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:30,outputPerMTokens:60},pricingSource:"models.dev",aliases:["openai/gpt-4"],releasedAt:"2023-11-06",source:"https://platform.openai.com/docs/models",contextSource:"https://platform.openai.com/docs/models",verifiedAt:"2024-04-09"},{id:"openai:gpt-4-turbo",provider:"openai",vendorId:"gpt-4-turbo",displayName:"GPT-4 Turbo",family:"gpt-4-turbo",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:10,outputPerMTokens:30},pricingSource:"models.dev",aliases:["openai/gpt-4-turbo"],releasedAt:"2023-11-06",source:"https://platform.openai.com/docs/models",contextSource:"https://platform.openai.com/docs/models",verifiedAt:"2024-04-09"},{id:"openai:gpt-4.1",provider:"openai",vendorId:"gpt-4.1",displayName:"GPT-4.1",family:"gpt-4.1",status:"stable",context:{combinedMax:1047576,outputMax:32768},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:2,outputPerMTokens:8},pricingSource:"models.dev",aliases:["openai/gpt-4.1"],releasedAt:"2025-04-14",source:"https://platform.openai.com/docs/models",contextSource:"https://platform.openai.com/docs/models",verifiedAt:"2025-04-14"},{id:"openai:gpt-4.1-mini",provider:"openai",vendorId:"gpt-4.1-mini",displayName:"GPT-4.1 mini",family:"gpt-4.1-mini",status:"stable",context:{combinedMax:1047576,outputMax:32768},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.4,outputPerMTokens:1.6},pricingSource:"models.dev",aliases:["openai/gpt-4.1-mini"],releasedAt:"2025-04-14",source:"https://platform.openai.com/docs/models",contextSource:"https://platform.openai.com/docs/models",verifiedAt:"2025-04-14"},{id:"openai:gpt-4.1-nano",provider:"openai",vendorId:"gpt-4.1-nano",displayName:"GPT-4.1 nano",family:"gpt-4.1-nano",status:"stable",context:{combinedMax:1047576,outputMax:32768},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.1,outputPerMTokens:.4},pricingSource:"models.dev",aliases:["openai/gpt-4.1-nano"],releasedAt:"2025-04-14",source:"https://platform.openai.com/docs/models",contextSource:"https://platform.openai.com/docs/models",verifiedAt:"2025-04-14"},{id:"openai:gpt-4o",provider:"openai",vendorId:"gpt-4o",displayName:"GPT-4o",family:"gpt-4o",status:"stable",context:{combinedMax:128e3,outputMax:16384},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:2.5,outputPerMTokens:10},pricingSource:"models.dev",aliases:["openai/gpt-4o"],releasedAt:"2024-05-13",source:"https://platform.openai.com/docs/models",contextSource:"https://platform.openai.com/docs/models",verifiedAt:"2024-05-13"},{id:"openai:gpt-4o-mini",provider:"openai",vendorId:"gpt-4o-mini",displayName:"GPT-4o mini",family:"gpt-4o-mini",status:"stable",context:{combinedMax:128e3,outputMax:16384},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.15,outputPerMTokens:.6},pricingSource:"models.dev",aliases:["openai/gpt-4o-mini"],releasedAt:"2024-07-18",source:"https://platform.openai.com/docs/models",contextSource:"https://platform.openai.com/docs/models",verifiedAt:"2024-07-18"},{id:"openai:gpt-5",provider:"openai",vendorId:"gpt-5",displayName:"GPT-5",family:"gpt-5",status:"stable",context:{combinedMax:4e5,outputMax:128e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:1.25,outputPerMTokens:10},pricingSource:"models.dev",aliases:["openai/gpt-5"],releasedAt:"2025-08-07",source:"https://platform.openai.com/docs/models",contextSource:"https://platform.openai.com/docs/models",verifiedAt:"2025-08-07"},{id:"openai:gpt-5-chat-latest",provider:"openai",vendorId:"gpt-5-chat-latest",displayName:"GPT-5 Chat (latest)",family:"gpt-5-chat-latest",status:"stable",context:{combinedMax:4e5,outputMax:128e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:1.25,outputPerMTokens:10},pricingSource:"models.dev",aliases:["openai/gpt-5-chat-latest"],releasedAt:"2025-08-07",source:"https://platform.openai.com/docs/models",contextSource:"https://platform.openai.com/docs/models",verifiedAt:"2025-08-07"},{id:"openai:gpt-5-mini",provider:"openai",vendorId:"gpt-5-mini",displayName:"GPT-5 Mini",family:"gpt-5-mini",status:"stable",context:{combinedMax:4e5,outputMax:128e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.25,outputPerMTokens:2},pricingSource:"models.dev",aliases:["openai/gpt-5-mini"],releasedAt:"2025-08-07",source:"https://platform.openai.com/docs/models",contextSource:"https://platform.openai.com/docs/models",verifiedAt:"2025-08-07"},{id:"openai:gpt-5-nano",provider:"openai",vendorId:"gpt-5-nano",displayName:"GPT-5 Nano",family:"gpt-5-nano",status:"stable",context:{combinedMax:4e5,outputMax:128e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.05,outputPerMTokens:.4},pricingSource:"models.dev",aliases:["openai/gpt-5-nano"],releasedAt:"2025-08-07",source:"https://platform.openai.com/docs/models",contextSource:"https://platform.openai.com/docs/models",verifiedAt:"2025-08-07"},{id:"openai:o1",provider:"openai",vendorId:"o1",displayName:"o1",family:"o1",status:"stable",context:{combinedMax:2e5,outputMax:1e5},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:15,outputPerMTokens:60},pricingSource:"models.dev",aliases:["openai/o1"],releasedAt:"2024-12-05",source:"https://platform.openai.com/docs/models",contextSource:"https://platform.openai.com/docs/models",verifiedAt:"2024-12-05"},{id:"openai:o1-mini",provider:"openai",vendorId:"o1-mini",displayName:"o1-mini",family:"o1-mini",status:"stable",context:{combinedMax:128e3,outputMax:65536},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1.1,outputPerMTokens:4.4},pricingSource:"models.dev",aliases:["openai/o1-mini"],releasedAt:"2024-09-12",source:"https://platform.openai.com/docs/models",contextSource:"https://platform.openai.com/docs/models",verifiedAt:"2024-09-12"},{id:"openai:o1-preview",provider:"openai",vendorId:"o1-preview",displayName:"o1-preview",family:"o1-preview",status:"stable",context:{combinedMax:128e3,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:15,outputPerMTokens:60},pricingSource:"models.dev",aliases:["openai/o1-preview"],releasedAt:"2024-09-12",source:"https://platform.openai.com/docs/models",contextSource:"https://platform.openai.com/docs/models",verifiedAt:"2024-09-12"},{id:"openai:o1-pro",provider:"openai",vendorId:"o1-pro",displayName:"o1-pro",family:"o1-pro",status:"stable",context:{combinedMax:2e5,outputMax:1e5},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:150,outputPerMTokens:600},pricingSource:"models.dev",aliases:["openai/o1-pro"],releasedAt:"2025-03-19",source:"https://platform.openai.com/docs/models",contextSource:"https://platform.openai.com/docs/models",verifiedAt:"2025-03-19"},{id:"openai:o3",provider:"openai",vendorId:"o3",displayName:"o3",family:"o3",status:"stable",context:{combinedMax:2e5,outputMax:1e5},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:2,outputPerMTokens:8},pricingSource:"models.dev",aliases:["openai/o3"],releasedAt:"2025-04-16",source:"https://platform.openai.com/docs/models",contextSource:"https://platform.openai.com/docs/models",verifiedAt:"2025-04-16"},{id:"openai:o3-deep-research",provider:"openai",vendorId:"o3-deep-research",displayName:"o3-deep-research",family:"o3-deep-research",status:"stable",context:{combinedMax:2e5,outputMax:1e5},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:10,outputPerMTokens:40},pricingSource:"models.dev",aliases:["openai/o3-deep-research"],releasedAt:"2024-06-26",source:"https://platform.openai.com/docs/models",contextSource:"https://platform.openai.com/docs/models",verifiedAt:"2024-06-26"},{id:"openai:o3-mini",provider:"openai",vendorId:"o3-mini",displayName:"o3-mini",family:"o3-mini",status:"stable",context:{combinedMax:2e5,outputMax:1e5},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1.1,outputPerMTokens:4.4},pricingSource:"models.dev",aliases:["openai/o3-mini"],releasedAt:"2024-12-20",source:"https://platform.openai.com/docs/models",contextSource:"https://platform.openai.com/docs/models",verifiedAt:"2025-01-29"},{id:"openai:o3-pro",provider:"openai",vendorId:"o3-pro",displayName:"o3-pro",family:"o3-pro",status:"stable",context:{combinedMax:2e5,outputMax:1e5},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:20,outputPerMTokens:80},pricingSource:"models.dev",aliases:["openai/o3-pro"],releasedAt:"2025-06-10",source:"https://platform.openai.com/docs/models",contextSource:"https://platform.openai.com/docs/models",verifiedAt:"2025-06-10"},{id:"openai:o4-mini",provider:"openai",vendorId:"o4-mini",displayName:"o4-mini",family:"o4-mini",status:"stable",context:{combinedMax:2e5,outputMax:1e5},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:1.1,outputPerMTokens:4.4},pricingSource:"models.dev",aliases:["openai/o4-mini"],releasedAt:"2025-04-16",source:"https://platform.openai.com/docs/models",contextSource:"https://platform.openai.com/docs/models",verifiedAt:"2025-04-16"},{id:"openai:o4-mini-deep-research",provider:"openai",vendorId:"o4-mini-deep-research",displayName:"o4-mini-deep-research",family:"o4-mini-deep-research",status:"stable",context:{combinedMax:2e5,outputMax:1e5},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:2,outputPerMTokens:8},pricingSource:"models.dev",aliases:["openai/o4-mini-deep-research"],releasedAt:"2024-06-26",source:"https://platform.openai.com/docs/models",contextSource:"https://platform.openai.com/docs/models",verifiedAt:"2024-06-26"},{id:"opencode:claude-3.5-haiku",provider:"opencode",vendorId:"claude-3.5-haiku",displayName:"Claude Haiku 3.5",family:"claude-3.5-haiku",status:"stable",context:{combinedMax:2e5,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.8,outputPerMTokens:4},pricingSource:"models.dev",aliases:["opencode/claude-3.5-haiku"],releasedAt:"2024-10-22",source:"https://opencode.ai/docs",contextSource:"https://opencode.ai/docs",verifiedAt:"2024-10-22"},{id:"opencode:claude-opus-4.1",provider:"opencode",vendorId:"claude-opus-4.1",displayName:"Claude Opus 4.1",family:"claude-opus-4.1",status:"stable",context:{combinedMax:2e5,outputMax:32e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:15,outputPerMTokens:75},pricingSource:"models.dev",aliases:["opencode/claude-opus-4.1"],releasedAt:"2025-08-05",source:"https://opencode.ai/docs",contextSource:"https://opencode.ai/docs",verifiedAt:"2025-08-05"},{id:"opencode:claude-sonnet-4",provider:"opencode",vendorId:"claude-sonnet-4",displayName:"Claude Sonnet 4",family:"claude-sonnet-4",status:"stable",context:{combinedMax:2e5,outputMax:64e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["opencode/claude-sonnet-4"],releasedAt:"2025-05-22",source:"https://opencode.ai/docs",contextSource:"https://opencode.ai/docs",verifiedAt:"2025-05-22"},{id:"opencode:gpt-5",provider:"opencode",vendorId:"gpt-5",displayName:"GPT-5",family:"gpt-5",status:"stable",context:{combinedMax:4e5,outputMax:128e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:1.25,outputPerMTokens:10},pricingSource:"models.dev",aliases:["opencode/gpt-5"],releasedAt:"2025-08-07",source:"https://opencode.ai/docs",contextSource:"https://opencode.ai/docs",verifiedAt:"2025-08-07"},{id:"opencode:grok-code",provider:"opencode",vendorId:"grok-code",displayName:"Grok Code Fast 1",family:"grok-code",status:"stable",context:{combinedMax:256e3,outputMax:32e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["opencode/grok-code"],releasedAt:"2025-08-20",source:"https://opencode.ai/docs",contextSource:"https://opencode.ai/docs",verifiedAt:"2025-08-20"},{id:"opencode:kimi-k2",provider:"opencode",vendorId:"kimi-k2",displayName:"Kimi K2",family:"kimi-k2",status:"stable",context:{combinedMax:262144,outputMax:262144},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.6,outputPerMTokens:2.5},pricingSource:"models.dev",aliases:["opencode/kimi-k2"],releasedAt:"2025-09-05",source:"https://opencode.ai/docs",contextSource:"https://opencode.ai/docs",verifiedAt:"2025-09-05"},{id:"opencode:qwen3-coder",provider:"opencode",vendorId:"qwen3-coder",displayName:"Qwen3 Coder",family:"qwen3-coder",status:"stable",context:{combinedMax:262144,outputMax:65536},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.3,outputPerMTokens:1.2},pricingSource:"models.dev",aliases:["opencode/qwen3-coder"],releasedAt:"2025-07-23",source:"https://opencode.ai/docs",contextSource:"https://opencode.ai/docs",verifiedAt:"2025-07-23"},{id:"openrouter:anthropic/claude-3.5-haiku",provider:"openrouter",vendorId:"anthropic/claude-3.5-haiku",displayName:"Claude Haiku 3.5",family:"anthropic/claude-3.5-haiku",status:"stable",context:{combinedMax:2e5,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.8,outputPerMTokens:4},pricingSource:"models.dev",aliases:["openrouter/anthropic/claude-3.5-haiku"],releasedAt:"2024-10-22",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2024-10-22"},{id:"openrouter:anthropic/claude-3.7-sonnet",provider:"openrouter",vendorId:"anthropic/claude-3.7-sonnet",displayName:"Claude Sonnet 3.7",family:"anthropic/claude-3.7-sonnet",status:"stable",context:{combinedMax:2e5,outputMax:128e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:15,outputPerMTokens:75},pricingSource:"models.dev",aliases:["openrouter/anthropic/claude-3.7-sonnet"],releasedAt:"2025-02-19",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-02-19"},{id:"openrouter:anthropic/claude-opus-4",provider:"openrouter",vendorId:"anthropic/claude-opus-4",displayName:"Claude Opus 4",family:"anthropic/claude-opus-4",status:"stable",context:{combinedMax:2e5,outputMax:32e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:15,outputPerMTokens:75},pricingSource:"models.dev",aliases:["openrouter/anthropic/claude-opus-4"],releasedAt:"2025-05-22",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-05-22"},{id:"openrouter:anthropic/claude-opus-4.1",provider:"openrouter",vendorId:"anthropic/claude-opus-4.1",displayName:"Claude Opus 4.1",family:"anthropic/claude-opus-4.1",status:"stable",context:{combinedMax:2e5,outputMax:32e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:15,outputPerMTokens:75},pricingSource:"models.dev",aliases:["openrouter/anthropic/claude-opus-4.1"],releasedAt:"2025-08-05",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-08-05"},{id:"openrouter:anthropic/claude-sonnet-4",provider:"openrouter",vendorId:"anthropic/claude-sonnet-4",displayName:"Claude Sonnet 4",family:"anthropic/claude-sonnet-4",status:"stable",context:{combinedMax:2e5,outputMax:64e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["openrouter/anthropic/claude-sonnet-4"],releasedAt:"2025-05-22",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-05-22"},{id:"openrouter:cognitivecomputations/dolphin3.0-mistral-24b",provider:"openrouter",vendorId:"cognitivecomputations/dolphin3.0-mistral-24b",displayName:"Dolphin3.0 Mistral 24B",family:"cognitivecomputations/dolphin3.0-mistral-24b",status:"stable",context:{combinedMax:32768,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/cognitivecomputations/dolphin3.0-mistral-24b"],releasedAt:"2025-02-13",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-02-13"},{id:"openrouter:cognitivecomputations/dolphin3.0-r1-mistral-24b",provider:"openrouter",vendorId:"cognitivecomputations/dolphin3.0-r1-mistral-24b",displayName:"Dolphin3.0 R1 Mistral 24B",family:"cognitivecomputations/dolphin3.0-r1-mistral-24b",status:"stable",context:{combinedMax:32768,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/cognitivecomputations/dolphin3.0-r1-mistral-24b"],releasedAt:"2025-02-13",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-02-13"},{id:"openrouter:deepseek/deepseek-chat-v3-0324",provider:"openrouter",vendorId:"deepseek/deepseek-chat-v3-0324",displayName:"DeepSeek V3 0324",family:"deepseek/deepseek-chat-v3-0324",status:"stable",context:{combinedMax:16384,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/deepseek/deepseek-chat-v3-0324"],releasedAt:"2025-03-24",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-03-24"},{id:"openrouter:deepseek/deepseek-chat-v3.1",provider:"openrouter",vendorId:"deepseek/deepseek-chat-v3.1",displayName:"DeepSeek-V3.1",family:"deepseek/deepseek-chat-v3.1",status:"stable",context:{combinedMax:163840,outputMax:163840},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.2,outputPerMTokens:.8},pricingSource:"models.dev",aliases:["openrouter/deepseek/deepseek-chat-v3.1"],releasedAt:"2025-08-21",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-08-21"},{id:"openrouter:deepseek/deepseek-r1-0528-qwen3-8b:free",provider:"openrouter",vendorId:"deepseek/deepseek-r1-0528-qwen3-8b:free",displayName:"Deepseek R1 0528 Qwen3 8B (free)",family:"deepseek/deepseek-r1-0528-qwen3-8b:free",status:"stable",context:{combinedMax:131072,outputMax:131072},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/deepseek/deepseek-r1-0528-qwen3-8b:free"],releasedAt:"2025-05-29",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-05-29"},{id:"openrouter:deepseek/deepseek-r1-0528:free",provider:"openrouter",vendorId:"deepseek/deepseek-r1-0528:free",displayName:"R1 0528 (free)",family:"deepseek/deepseek-r1-0528:free",status:"stable",context:{combinedMax:163840,outputMax:163840},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/deepseek/deepseek-r1-0528:free"],releasedAt:"2025-05-28",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-05-28"},{id:"openrouter:deepseek/deepseek-r1-distill-llama-70b",provider:"openrouter",vendorId:"deepseek/deepseek-r1-distill-llama-70b",displayName:"DeepSeek R1 Distill Llama 70B",family:"deepseek/deepseek-r1-distill-llama-70b",status:"stable",context:{combinedMax:8192,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/deepseek/deepseek-r1-distill-llama-70b"],releasedAt:"2025-01-23",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-01-23"},{id:"openrouter:deepseek/deepseek-r1-distill-qwen-14b",provider:"openrouter",vendorId:"deepseek/deepseek-r1-distill-qwen-14b",displayName:"DeepSeek R1 Distill Qwen 14B",family:"deepseek/deepseek-r1-distill-qwen-14b",status:"stable",context:{combinedMax:64e3,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/deepseek/deepseek-r1-distill-qwen-14b"],releasedAt:"2025-01-29",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-01-29"},{id:"openrouter:deepseek/deepseek-r1:free",provider:"openrouter",vendorId:"deepseek/deepseek-r1:free",displayName:"R1 (free)",family:"deepseek/deepseek-r1:free",status:"stable",context:{combinedMax:163840,outputMax:163840},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/deepseek/deepseek-r1:free"],releasedAt:"2025-01-20",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-01-20"},{id:"openrouter:deepseek/deepseek-v3-base:free",provider:"openrouter",vendorId:"deepseek/deepseek-v3-base:free",displayName:"DeepSeek V3 Base (free)",family:"deepseek/deepseek-v3-base:free",status:"stable",context:{combinedMax:163840,outputMax:163840},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/deepseek/deepseek-v3-base:free"],releasedAt:"2025-03-29",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-03-29"},{id:"openrouter:featherless/qwerky-72b",provider:"openrouter",vendorId:"featherless/qwerky-72b",displayName:"Qwerky 72B",family:"featherless/qwerky-72b",status:"stable",context:{combinedMax:32768,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/featherless/qwerky-72b"],releasedAt:"2025-03-20",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-03-20"},{id:"openrouter:google/gemini-2.0-flash-001",provider:"openrouter",vendorId:"google/gemini-2.0-flash-001",displayName:"Gemini 2.0 Flash",family:"google/gemini-2.0-flash-001",status:"stable",context:{combinedMax:1048576,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.1,outputPerMTokens:.4},pricingSource:"models.dev",aliases:["openrouter/google/gemini-2.0-flash-001"],releasedAt:"2024-12-11",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2024-12-11"},{id:"openrouter:google/gemini-2.0-flash-exp:free",provider:"openrouter",vendorId:"google/gemini-2.0-flash-exp:free",displayName:"Gemini 2.0 Flash Experimental (free)",family:"google/gemini-2.0-flash-exp:free",status:"stable",context:{combinedMax:1048576,outputMax:1048576},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/google/gemini-2.0-flash-exp:free"],releasedAt:"2024-12-11",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2024-12-11"},{id:"openrouter:google/gemini-2.5-flash",provider:"openrouter",vendorId:"google/gemini-2.5-flash",displayName:"Gemini 2.5 Flash",family:"google/gemini-2.5-flash",status:"stable",context:{combinedMax:1048576,outputMax:65536},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.3,outputPerMTokens:2.5},pricingSource:"models.dev",aliases:["openrouter/google/gemini-2.5-flash"],releasedAt:"2025-07-17",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-07-17"},{id:"openrouter:google/gemini-2.5-pro",provider:"openrouter",vendorId:"google/gemini-2.5-pro",displayName:"Gemini 2.5 Pro",family:"google/gemini-2.5-pro",status:"stable",context:{combinedMax:1048576,outputMax:65536},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:1.25,outputPerMTokens:10},pricingSource:"models.dev",aliases:["openrouter/google/gemini-2.5-pro"],releasedAt:"2025-03-20",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-06-05"},{id:"openrouter:google/gemini-2.5-pro-preview-05-06",provider:"openrouter",vendorId:"google/gemini-2.5-pro-preview-05-06",displayName:"Gemini 2.5 Pro Preview 05-06",family:"google/gemini-2.5-pro-preview-05-06",status:"stable",context:{combinedMax:1048576,outputMax:65536},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:1.25,outputPerMTokens:10},pricingSource:"models.dev",aliases:["openrouter/google/gemini-2.5-pro-preview-05-06"],releasedAt:"2025-05-06",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-05-06"},{id:"openrouter:google/gemini-2.5-pro-preview-06-05",provider:"openrouter",vendorId:"google/gemini-2.5-pro-preview-06-05",displayName:"Gemini 2.5 Pro Preview 06-05",family:"google/gemini-2.5-pro-preview-06-05",status:"stable",context:{combinedMax:1048576,outputMax:65536},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:1.25,outputPerMTokens:10},pricingSource:"models.dev",aliases:["openrouter/google/gemini-2.5-pro-preview-06-05"],releasedAt:"2025-06-05",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-06-05"},{id:"openrouter:google/gemma-2-9b-it:free",provider:"openrouter",vendorId:"google/gemma-2-9b-it:free",displayName:"Gemma 2 9B (free)",family:"google/gemma-2-9b-it:free",status:"stable",context:{combinedMax:8192,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/google/gemma-2-9b-it:free"],releasedAt:"2024-06-28",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2024-06-28"},{id:"openrouter:google/gemma-3-12b-it",provider:"openrouter",vendorId:"google/gemma-3-12b-it",displayName:"Gemma 3 12B IT",family:"google/gemma-3-12b-it",status:"stable",context:{combinedMax:96e3,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/google/gemma-3-12b-it"],releasedAt:"2025-03-13",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-03-13"},{id:"openrouter:google/gemma-3-27b-it",provider:"openrouter",vendorId:"google/gemma-3-27b-it",displayName:"Gemma 3 27B IT",family:"google/gemma-3-27b-it",status:"stable",context:{combinedMax:96e3,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/google/gemma-3-27b-it"],releasedAt:"2025-03-12",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-03-12"},{id:"openrouter:google/gemma-3n-e4b-it",provider:"openrouter",vendorId:"google/gemma-3n-e4b-it",displayName:"Gemma 3n E4B IT",family:"google/gemma-3n-e4b-it",status:"stable",context:{combinedMax:8192,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/google/gemma-3n-e4b-it"],releasedAt:"2025-05-20",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-05-20"},{id:"openrouter:google/gemma-3n-e4b-it:free",provider:"openrouter",vendorId:"google/gemma-3n-e4b-it:free",displayName:"Gemma 3n 4B (free)",family:"google/gemma-3n-e4b-it:free",status:"stable",context:{combinedMax:8192,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/google/gemma-3n-e4b-it:free"],releasedAt:"2025-05-20",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-05-20"},{id:"openrouter:meta-llama/llama-3.2-11b-vision-instruct",provider:"openrouter",vendorId:"meta-llama/llama-3.2-11b-vision-instruct",displayName:"Llama 3.2 11B Vision Instruct",family:"meta-llama/llama-3.2-11b-vision-instruct",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/meta-llama/llama-3.2-11b-vision-instruct"],releasedAt:"2024-09-25",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2024-09-25"},{id:"openrouter:meta-llama/llama-3.3-70b-instruct:free",provider:"openrouter",vendorId:"meta-llama/llama-3.3-70b-instruct:free",displayName:"Llama 3.3 70B Instruct (free)",family:"meta-llama/llama-3.3-70b-instruct:free",status:"stable",context:{combinedMax:65536,outputMax:65536},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/meta-llama/llama-3.3-70b-instruct:free"],releasedAt:"2024-12-06",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2024-12-06"},{id:"openrouter:meta-llama/llama-4-scout:free",provider:"openrouter",vendorId:"meta-llama/llama-4-scout:free",displayName:"Llama 4 Scout (free)",family:"meta-llama/llama-4-scout:free",status:"stable",context:{combinedMax:64e3,outputMax:64e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/meta-llama/llama-4-scout:free"],releasedAt:"2025-04-05",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-04-05"},{id:"openrouter:microsoft/mai-ds-r1:free",provider:"openrouter",vendorId:"microsoft/mai-ds-r1:free",displayName:"MAI DS R1 (free)",family:"microsoft/mai-ds-r1:free",status:"stable",context:{combinedMax:163840,outputMax:163840},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/microsoft/mai-ds-r1:free"],releasedAt:"2025-04-21",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-04-21"},{id:"openrouter:mistralai/codestral-2508",provider:"openrouter",vendorId:"mistralai/codestral-2508",displayName:"Codestral 2508",family:"mistralai/codestral-2508",status:"stable",context:{combinedMax:256e3,outputMax:256e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.3,outputPerMTokens:.9},pricingSource:"models.dev",aliases:["openrouter/mistralai/codestral-2508"],releasedAt:"2025-08-01",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-08-01"},{id:"openrouter:mistralai/devstral-medium-2507",provider:"openrouter",vendorId:"mistralai/devstral-medium-2507",displayName:"Devstral Medium",family:"mistralai/devstral-medium-2507",status:"stable",context:{combinedMax:131072,outputMax:131072},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.4,outputPerMTokens:2},pricingSource:"models.dev",aliases:["openrouter/mistralai/devstral-medium-2507"],releasedAt:"2025-07-10",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-07-10"},{id:"openrouter:mistralai/devstral-small-2505",provider:"openrouter",vendorId:"mistralai/devstral-small-2505",displayName:"Devstral Small",family:"mistralai/devstral-small-2505",status:"stable",context:{combinedMax:128e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.06,outputPerMTokens:.12},pricingSource:"models.dev",aliases:["openrouter/mistralai/devstral-small-2505"],releasedAt:"2025-05-07",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-05-07"},{id:"openrouter:mistralai/devstral-small-2505:free",provider:"openrouter",vendorId:"mistralai/devstral-small-2505:free",displayName:"Devstral Small 2505 (free)",family:"mistralai/devstral-small-2505:free",status:"stable",context:{combinedMax:32768,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/mistralai/devstral-small-2505:free"],releasedAt:"2025-05-21",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-05-21"},{id:"openrouter:mistralai/devstral-small-2507",provider:"openrouter",vendorId:"mistralai/devstral-small-2507",displayName:"Devstral Small 1.1",family:"mistralai/devstral-small-2507",status:"stable",context:{combinedMax:131072,outputMax:131072},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.1,outputPerMTokens:.3},pricingSource:"models.dev",aliases:["openrouter/mistralai/devstral-small-2507"],releasedAt:"2025-07-10",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-07-10"},{id:"openrouter:mistralai/mistral-7b-instruct:free",provider:"openrouter",vendorId:"mistralai/mistral-7b-instruct:free",displayName:"Mistral 7B Instruct (free)",family:"mistralai/mistral-7b-instruct:free",status:"stable",context:{combinedMax:32768,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/mistralai/mistral-7b-instruct:free"],releasedAt:"2024-05-27",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2024-05-27"},{id:"openrouter:mistralai/mistral-medium-3",provider:"openrouter",vendorId:"mistralai/mistral-medium-3",displayName:"Mistral Medium 3",family:"mistralai/mistral-medium-3",status:"stable",context:{combinedMax:131072,outputMax:131072},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.4,outputPerMTokens:2},pricingSource:"models.dev",aliases:["openrouter/mistralai/mistral-medium-3"],releasedAt:"2025-05-07",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-05-07"},{id:"openrouter:mistralai/mistral-medium-3.1",provider:"openrouter",vendorId:"mistralai/mistral-medium-3.1",displayName:"Mistral Medium 3.1",family:"mistralai/mistral-medium-3.1",status:"stable",context:{combinedMax:262144,outputMax:262144},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.4,outputPerMTokens:2},pricingSource:"models.dev",aliases:["openrouter/mistralai/mistral-medium-3.1"],releasedAt:"2025-08-12",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-08-12"},{id:"openrouter:mistralai/mistral-nemo:free",provider:"openrouter",vendorId:"mistralai/mistral-nemo:free",displayName:"Mistral Nemo (free)",family:"mistralai/mistral-nemo:free",status:"stable",context:{combinedMax:131072,outputMax:131072},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/mistralai/mistral-nemo:free"],releasedAt:"2024-07-19",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2024-07-19"},{id:"openrouter:mistralai/mistral-small-3.1-24b-instruct",provider:"openrouter",vendorId:"mistralai/mistral-small-3.1-24b-instruct",displayName:"Mistral Small 3.1 24B Instruct",family:"mistralai/mistral-small-3.1-24b-instruct",status:"stable",context:{combinedMax:128e3,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/mistralai/mistral-small-3.1-24b-instruct"],releasedAt:"2025-03-17",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-03-17"},{id:"openrouter:mistralai/mistral-small-3.2-24b-instruct",provider:"openrouter",vendorId:"mistralai/mistral-small-3.2-24b-instruct",displayName:"Mistral Small 3.2 24B Instruct",family:"mistralai/mistral-small-3.2-24b-instruct",status:"stable",context:{combinedMax:96e3,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/mistralai/mistral-small-3.2-24b-instruct"],releasedAt:"2025-06-20",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-06-20"},{id:"openrouter:mistralai/mistral-small-3.2-24b-instruct:free",provider:"openrouter",vendorId:"mistralai/mistral-small-3.2-24b-instruct:free",displayName:"Mistral Small 3.2 24B (free)",family:"mistralai/mistral-small-3.2-24b-instruct:free",status:"stable",context:{combinedMax:96e3,outputMax:96e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/mistralai/mistral-small-3.2-24b-instruct:free"],releasedAt:"2025-06-20",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-06-20"},{id:"openrouter:moonshotai/kimi-dev-72b:free",provider:"openrouter",vendorId:"moonshotai/kimi-dev-72b:free",displayName:"Kimi Dev 72b (free)",family:"moonshotai/kimi-dev-72b:free",status:"stable",context:{combinedMax:131072,outputMax:131072},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/moonshotai/kimi-dev-72b:free"],releasedAt:"2025-06-16",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-06-16"},{id:"openrouter:moonshotai/kimi-k2",provider:"openrouter",vendorId:"moonshotai/kimi-k2",displayName:"Kimi K2",family:"moonshotai/kimi-k2",status:"stable",context:{combinedMax:131072,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.55,outputPerMTokens:2.2},pricingSource:"models.dev",aliases:["openrouter/moonshotai/kimi-k2"],releasedAt:"2025-07-11",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-07-11"},{id:"openrouter:moonshotai/kimi-k2-0905",provider:"openrouter",vendorId:"moonshotai/kimi-k2-0905",displayName:"Kimi K2 Instruct 0905",family:"moonshotai/kimi-k2-0905",status:"stable",context:{combinedMax:262144,outputMax:16384},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.6,outputPerMTokens:2.5},pricingSource:"models.dev",aliases:["openrouter/moonshotai/kimi-k2-0905"],releasedAt:"2025-09-05",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-09-05"},{id:"openrouter:moonshotai/kimi-k2:free",provider:"openrouter",vendorId:"moonshotai/kimi-k2:free",displayName:"Kimi K2 (free)",family:"moonshotai/kimi-k2:free",status:"stable",context:{combinedMax:32800,outputMax:32800},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/moonshotai/kimi-k2:free"],releasedAt:"2025-07-11",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-07-11"},{id:"openrouter:nousresearch/deephermes-3-llama-3-8b-preview",provider:"openrouter",vendorId:"nousresearch/deephermes-3-llama-3-8b-preview",displayName:"DeepHermes 3 Llama 3 8B Preview",family:"nousresearch/deephermes-3-llama-3-8b-preview",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/nousresearch/deephermes-3-llama-3-8b-preview"],releasedAt:"2025-02-28",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-02-28"},{id:"openrouter:nousresearch/hermes-4-405b",provider:"openrouter",vendorId:"nousresearch/hermes-4-405b",displayName:"Hermes 4 405B",family:"nousresearch/hermes-4-405b",status:"stable",context:{combinedMax:131072,outputMax:131072},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1,outputPerMTokens:3},pricingSource:"models.dev",aliases:["openrouter/nousresearch/hermes-4-405b"],releasedAt:"2025-08-25",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-08-25"},{id:"openrouter:nousresearch/hermes-4-70b",provider:"openrouter",vendorId:"nousresearch/hermes-4-70b",displayName:"Hermes 4 70B",family:"nousresearch/hermes-4-70b",status:"stable",context:{combinedMax:131072,outputMax:131072},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.13,outputPerMTokens:.4},pricingSource:"models.dev",aliases:["openrouter/nousresearch/hermes-4-70b"],releasedAt:"2025-08-25",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-08-25"},{id:"openrouter:openai/gpt-4.1",provider:"openrouter",vendorId:"openai/gpt-4.1",displayName:"GPT-4.1",family:"openai/gpt-4.1",status:"stable",context:{combinedMax:1047576,outputMax:32768},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:2,outputPerMTokens:8},pricingSource:"models.dev",aliases:["openrouter/openai/gpt-4.1"],releasedAt:"2025-04-14",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-04-14"},{id:"openrouter:openai/gpt-4.1-mini",provider:"openrouter",vendorId:"openai/gpt-4.1-mini",displayName:"GPT-4.1 Mini",family:"openai/gpt-4.1-mini",status:"stable",context:{combinedMax:1047576,outputMax:32768},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.4,outputPerMTokens:1.6},pricingSource:"models.dev",aliases:["openrouter/openai/gpt-4.1-mini"],releasedAt:"2025-04-14",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-04-14"},{id:"openrouter:openai/gpt-4o-mini",provider:"openrouter",vendorId:"openai/gpt-4o-mini",displayName:"GPT-4o-mini",family:"openai/gpt-4o-mini",status:"stable",context:{combinedMax:128e3,outputMax:16384},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.15,outputPerMTokens:.6},pricingSource:"models.dev",aliases:["openrouter/openai/gpt-4o-mini"],releasedAt:"2024-07-18",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2024-07-18"},{id:"openrouter:openai/gpt-5",provider:"openrouter",vendorId:"openai/gpt-5",displayName:"GPT-5",family:"openai/gpt-5",status:"stable",context:{combinedMax:4e5,outputMax:128e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:1.25,outputPerMTokens:10},pricingSource:"models.dev",aliases:["openrouter/openai/gpt-5"],releasedAt:"2025-08-07",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-08-07"},{id:"openrouter:openai/gpt-5-chat",provider:"openrouter",vendorId:"openai/gpt-5-chat",displayName:"GPT-5 Chat (latest)",family:"openai/gpt-5-chat",status:"stable",context:{combinedMax:4e5,outputMax:128e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:1.25,outputPerMTokens:10},pricingSource:"models.dev",aliases:["openrouter/openai/gpt-5-chat"],releasedAt:"2025-08-07",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-08-07"},{id:"openrouter:openai/gpt-5-mini",provider:"openrouter",vendorId:"openai/gpt-5-mini",displayName:"GPT-5 Mini",family:"openai/gpt-5-mini",status:"stable",context:{combinedMax:4e5,outputMax:128e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.25,outputPerMTokens:2},pricingSource:"models.dev",aliases:["openrouter/openai/gpt-5-mini"],releasedAt:"2025-08-07",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-08-07"},{id:"openrouter:openai/gpt-5-nano",provider:"openrouter",vendorId:"openai/gpt-5-nano",displayName:"GPT-5 Nano",family:"openai/gpt-5-nano",status:"stable",context:{combinedMax:4e5,outputMax:128e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.05,outputPerMTokens:.4},pricingSource:"models.dev",aliases:["openrouter/openai/gpt-5-nano"],releasedAt:"2025-08-07",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-08-07"},{id:"openrouter:openai/gpt-oss-120b",provider:"openrouter",vendorId:"openai/gpt-oss-120b",displayName:"GPT OSS 120B",family:"openai/gpt-oss-120b",status:"stable",context:{combinedMax:131072,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.15,outputPerMTokens:.6},pricingSource:"models.dev",aliases:["openrouter/openai/gpt-oss-120b"],releasedAt:"2025-08-05",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-08-05"},{id:"openrouter:openai/gpt-oss-20b",provider:"openrouter",vendorId:"openai/gpt-oss-20b",displayName:"GPT OSS 20B",family:"openai/gpt-oss-20b",status:"stable",context:{combinedMax:131072,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.05,outputPerMTokens:.2},pricingSource:"models.dev",aliases:["openrouter/openai/gpt-oss-20b"],releasedAt:"2025-08-05",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-08-05"},{id:"openrouter:openai/o4-mini",provider:"openrouter",vendorId:"openai/o4-mini",displayName:"o4 Mini",family:"openai/o4-mini",status:"stable",context:{combinedMax:2e5,outputMax:1e5},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:1.1,outputPerMTokens:4.4},pricingSource:"models.dev",aliases:["openrouter/openai/o4-mini"],releasedAt:"2025-04-16",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-04-16"},{id:"openrouter:openrouter/cypher-alpha:free",provider:"openrouter",vendorId:"openrouter/cypher-alpha:free",displayName:"Cypher Alpha (free)",family:"openrouter/cypher-alpha:free",status:"stable",context:{combinedMax:1e6,outputMax:1e6},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/openrouter/cypher-alpha:free"],releasedAt:"2025-07-01",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-07-01"},{id:"openrouter:openrouter/horizon-alpha",provider:"openrouter",vendorId:"openrouter/horizon-alpha",displayName:"Horizon Alpha",family:"openrouter/horizon-alpha",status:"stable",context:{combinedMax:256e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/openrouter/horizon-alpha"],releasedAt:"2025-07-30",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-07-30"},{id:"openrouter:openrouter/horizon-beta",provider:"openrouter",vendorId:"openrouter/horizon-beta",displayName:"Horizon Beta",family:"openrouter/horizon-beta",status:"stable",context:{combinedMax:256e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/openrouter/horizon-beta"],releasedAt:"2025-08-01",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-08-01"},{id:"openrouter:openrouter/sonoma-dusk-alpha",provider:"openrouter",vendorId:"openrouter/sonoma-dusk-alpha",displayName:"Sonoma Dusk Alpha",family:"openrouter/sonoma-dusk-alpha",status:"stable",context:{combinedMax:2e6,outputMax:2e6},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/openrouter/sonoma-dusk-alpha"],releasedAt:"2024-09-05",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2024-09-05"},{id:"openrouter:openrouter/sonoma-sky-alpha",provider:"openrouter",vendorId:"openrouter/sonoma-sky-alpha",displayName:"Sonoma Sky Alpha",family:"openrouter/sonoma-sky-alpha",status:"stable",context:{combinedMax:2e6,outputMax:2e6},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/openrouter/sonoma-sky-alpha"],releasedAt:"2024-09-05",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2024-09-05"},{id:"openrouter:qwen/qwen-2.5-coder-32b-instruct",provider:"openrouter",vendorId:"qwen/qwen-2.5-coder-32b-instruct",displayName:"Qwen2.5 Coder 32B Instruct",family:"qwen/qwen-2.5-coder-32b-instruct",status:"stable",context:{combinedMax:32768,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/qwen/qwen-2.5-coder-32b-instruct"],releasedAt:"2024-11-11",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2024-11-11"},{id:"openrouter:qwen/qwen2.5-vl-32b-instruct:free",provider:"openrouter",vendorId:"qwen/qwen2.5-vl-32b-instruct:free",displayName:"Qwen2.5 VL 32B Instruct (free)",family:"qwen/qwen2.5-vl-32b-instruct:free",status:"stable",context:{combinedMax:8192,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/qwen/qwen2.5-vl-32b-instruct:free"],releasedAt:"2025-03-24",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-03-24"},{id:"openrouter:qwen/qwen2.5-vl-72b-instruct",provider:"openrouter",vendorId:"qwen/qwen2.5-vl-72b-instruct",displayName:"Qwen2.5 VL 72B Instruct",family:"qwen/qwen2.5-vl-72b-instruct",status:"stable",context:{combinedMax:32768,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/qwen/qwen2.5-vl-72b-instruct"],releasedAt:"2025-02-01",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-02-01"},{id:"openrouter:qwen/qwen2.5-vl-72b-instruct:free",provider:"openrouter",vendorId:"qwen/qwen2.5-vl-72b-instruct:free",displayName:"Qwen2.5 VL 72B Instruct (free)",family:"qwen/qwen2.5-vl-72b-instruct:free",status:"stable",context:{combinedMax:32768,outputMax:32768},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/qwen/qwen2.5-vl-72b-instruct:free"],releasedAt:"2025-02-01",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-02-01"},{id:"openrouter:qwen/qwen3-14b:free",provider:"openrouter",vendorId:"qwen/qwen3-14b:free",displayName:"Qwen3 14B (free)",family:"qwen/qwen3-14b:free",status:"stable",context:{combinedMax:40960,outputMax:40960},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/qwen/qwen3-14b:free"],releasedAt:"2025-04-28",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-04-28"},{id:"openrouter:qwen/qwen3-235b-a22b-07-25",provider:"openrouter",vendorId:"qwen/qwen3-235b-a22b-07-25",displayName:"Qwen3 235B A22B Instruct 2507",family:"qwen/qwen3-235b-a22b-07-25",status:"stable",context:{combinedMax:262144,outputMax:131072},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.15,outputPerMTokens:.85},pricingSource:"models.dev",aliases:["openrouter/qwen/qwen3-235b-a22b-07-25"],releasedAt:"2025-04-28",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-07-21"},{id:"openrouter:qwen/qwen3-235b-a22b-07-25:free",provider:"openrouter",vendorId:"qwen/qwen3-235b-a22b-07-25:free",displayName:"Qwen3 235B A22B Instruct 2507 (free)",family:"qwen/qwen3-235b-a22b-07-25:free",status:"stable",context:{combinedMax:262144,outputMax:131072},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/qwen/qwen3-235b-a22b-07-25:free"],releasedAt:"2025-04-28",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-07-21"},{id:"openrouter:qwen/qwen3-235b-a22b-thinking-2507",provider:"openrouter",vendorId:"qwen/qwen3-235b-a22b-thinking-2507",displayName:"Qwen3 235B A22B Thinking 2507",family:"qwen/qwen3-235b-a22b-thinking-2507",status:"stable",context:{combinedMax:262144,outputMax:81920},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.078,outputPerMTokens:.312},pricingSource:"models.dev",aliases:["openrouter/qwen/qwen3-235b-a22b-thinking-2507"],releasedAt:"2025-07-25",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-07-25"},{id:"openrouter:qwen/qwen3-235b-a22b:free",provider:"openrouter",vendorId:"qwen/qwen3-235b-a22b:free",displayName:"Qwen3 235B A22B (free)",family:"qwen/qwen3-235b-a22b:free",status:"stable",context:{combinedMax:131072,outputMax:131072},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/qwen/qwen3-235b-a22b:free"],releasedAt:"2025-04-28",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-04-28"},{id:"openrouter:qwen/qwen3-30b-a3b-instruct-2507",provider:"openrouter",vendorId:"qwen/qwen3-30b-a3b-instruct-2507",displayName:"Qwen3 30B A3B Instruct 2507",family:"qwen/qwen3-30b-a3b-instruct-2507",status:"stable",context:{combinedMax:131072,outputMax:33e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.2,outputPerMTokens:.8},pricingSource:"models.dev",aliases:["openrouter/qwen/qwen3-30b-a3b-instruct-2507"],releasedAt:"2025-07-29",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-07-29"},{id:"openrouter:qwen/qwen3-30b-a3b:free",provider:"openrouter",vendorId:"qwen/qwen3-30b-a3b:free",displayName:"Qwen3 30B A3B (free)",family:"qwen/qwen3-30b-a3b:free",status:"stable",context:{combinedMax:40960,outputMax:40960},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/qwen/qwen3-30b-a3b:free"],releasedAt:"2025-04-28",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-04-28"},{id:"openrouter:qwen/qwen3-32b:free",provider:"openrouter",vendorId:"qwen/qwen3-32b:free",displayName:"Qwen3 32B (free)",family:"qwen/qwen3-32b:free",status:"stable",context:{combinedMax:40960,outputMax:40960},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/qwen/qwen3-32b:free"],releasedAt:"2025-04-28",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-04-28"},{id:"openrouter:qwen/qwen3-8b:free",provider:"openrouter",vendorId:"qwen/qwen3-8b:free",displayName:"Qwen3 8B (free)",family:"qwen/qwen3-8b:free",status:"stable",context:{combinedMax:40960,outputMax:40960},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/qwen/qwen3-8b:free"],releasedAt:"2025-04-28",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-04-28"},{id:"openrouter:qwen/qwen3-coder",provider:"openrouter",vendorId:"qwen/qwen3-coder",displayName:"Qwen3 Coder",family:"qwen/qwen3-coder",status:"stable",context:{combinedMax:262144,outputMax:66536},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.3,outputPerMTokens:1.2},pricingSource:"models.dev",aliases:["openrouter/qwen/qwen3-coder"],releasedAt:"2025-07-23",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-07-23"},{id:"openrouter:qwen/qwen3-coder:free",provider:"openrouter",vendorId:"qwen/qwen3-coder:free",displayName:"Qwen3 Coder 480B A35B Instruct (free)",family:"qwen/qwen3-coder:free",status:"stable",context:{combinedMax:262144,outputMax:66536},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/qwen/qwen3-coder:free"],releasedAt:"2025-07-23",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-07-23"},{id:"openrouter:qwen/qwen3-max",provider:"openrouter",vendorId:"qwen/qwen3-max",displayName:"Qwen3 Max",family:"qwen/qwen3-max",status:"stable",context:{combinedMax:262144,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1.2,outputPerMTokens:6},pricingSource:"models.dev",aliases:["openrouter/qwen/qwen3-max"],releasedAt:"2025-09-05",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-09-05"},{id:"openrouter:qwen/qwq-32b:free",provider:"openrouter",vendorId:"qwen/qwq-32b:free",displayName:"QwQ 32B (free)",family:"qwen/qwq-32b:free",status:"stable",context:{combinedMax:32768,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/qwen/qwq-32b:free"],releasedAt:"2025-03-05",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-03-05"},{id:"openrouter:rekaai/reka-flash-3",provider:"openrouter",vendorId:"rekaai/reka-flash-3",displayName:"Reka Flash 3",family:"rekaai/reka-flash-3",status:"stable",context:{combinedMax:32768,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/rekaai/reka-flash-3"],releasedAt:"2025-03-12",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-03-12"},{id:"openrouter:sarvamai/sarvam-m:free",provider:"openrouter",vendorId:"sarvamai/sarvam-m:free",displayName:"Sarvam-M (free)",family:"sarvamai/sarvam-m:free",status:"stable",context:{combinedMax:32768,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/sarvamai/sarvam-m:free"],releasedAt:"2025-05-25",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-05-25"},{id:"openrouter:thudm/glm-z1-32b:free",provider:"openrouter",vendorId:"thudm/glm-z1-32b:free",displayName:"GLM Z1 32B (free)",family:"thudm/glm-z1-32b:free",status:"stable",context:{combinedMax:32768,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/thudm/glm-z1-32b:free"],releasedAt:"2025-04-17",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-04-17"},{id:"openrouter:tngtech/deepseek-r1t2-chimera:free",provider:"openrouter",vendorId:"tngtech/deepseek-r1t2-chimera:free",displayName:"DeepSeek R1T2 Chimera (free)",family:"tngtech/deepseek-r1t2-chimera:free",status:"stable",context:{combinedMax:163840,outputMax:163840},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/tngtech/deepseek-r1t2-chimera:free"],releasedAt:"2025-07-08",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-07-08"},{id:"openrouter:x-ai/grok-3",provider:"openrouter",vendorId:"x-ai/grok-3",displayName:"Grok 3",family:"x-ai/grok-3",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["openrouter/x-ai/grok-3"],releasedAt:"2025-02-17",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-02-17"},{id:"openrouter:x-ai/grok-3-beta",provider:"openrouter",vendorId:"x-ai/grok-3-beta",displayName:"Grok 3 Beta",family:"x-ai/grok-3-beta",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["openrouter/x-ai/grok-3-beta"],releasedAt:"2025-02-17",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-02-17"},{id:"openrouter:x-ai/grok-3-mini",provider:"openrouter",vendorId:"x-ai/grok-3-mini",displayName:"Grok 3 Mini",family:"x-ai/grok-3-mini",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.3,outputPerMTokens:.5},pricingSource:"models.dev",aliases:["openrouter/x-ai/grok-3-mini"],releasedAt:"2025-02-17",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-02-17"},{id:"openrouter:x-ai/grok-3-mini-beta",provider:"openrouter",vendorId:"x-ai/grok-3-mini-beta",displayName:"Grok 3 Mini Beta",family:"x-ai/grok-3-mini-beta",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.3,outputPerMTokens:.5},pricingSource:"models.dev",aliases:["openrouter/x-ai/grok-3-mini-beta"],releasedAt:"2025-02-17",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-02-17"},{id:"openrouter:x-ai/grok-4",provider:"openrouter",vendorId:"x-ai/grok-4",displayName:"Grok 4",family:"x-ai/grok-4",status:"stable",context:{combinedMax:256e3,outputMax:64e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["openrouter/x-ai/grok-4"],releasedAt:"2025-07-09",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-07-09"},{id:"openrouter:x-ai/grok-code-fast-1",provider:"openrouter",vendorId:"x-ai/grok-code-fast-1",displayName:"Grok Code Fast 1",family:"x-ai/grok-code-fast-1",status:"stable",context:{combinedMax:256e3,outputMax:1e4},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.2,outputPerMTokens:1.5},pricingSource:"models.dev",aliases:["openrouter/x-ai/grok-code-fast-1"],releasedAt:"2025-08-26",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-08-26"},{id:"openrouter:z-ai/glm-4.5",provider:"openrouter",vendorId:"z-ai/glm-4.5",displayName:"GLM 4.5",family:"z-ai/glm-4.5",status:"stable",context:{combinedMax:128e3,outputMax:96e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.6,outputPerMTokens:2.2},pricingSource:"models.dev",aliases:["openrouter/z-ai/glm-4.5"],releasedAt:"2025-07-28",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-07-28"},{id:"openrouter:z-ai/glm-4.5-air",provider:"openrouter",vendorId:"z-ai/glm-4.5-air",displayName:"GLM 4.5 Air",family:"z-ai/glm-4.5-air",status:"stable",context:{combinedMax:128e3,outputMax:96e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.2,outputPerMTokens:1.1},pricingSource:"models.dev",aliases:["openrouter/z-ai/glm-4.5-air"],releasedAt:"2025-07-28",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-07-28"},{id:"openrouter:z-ai/glm-4.5-air:free",provider:"openrouter",vendorId:"z-ai/glm-4.5-air:free",displayName:"GLM 4.5 Air (free)",family:"z-ai/glm-4.5-air:free",status:"stable",context:{combinedMax:128e3,outputMax:96e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["openrouter/z-ai/glm-4.5-air:free"],releasedAt:"2025-07-28",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-07-28"},{id:"openrouter:z-ai/glm-4.5v",provider:"openrouter",vendorId:"z-ai/glm-4.5v",displayName:"GLM 4.5V",family:"z-ai/glm-4.5v",status:"stable",context:{combinedMax:64e3,outputMax:16384},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.6,outputPerMTokens:1.8},pricingSource:"models.dev",aliases:["openrouter/z-ai/glm-4.5v"],releasedAt:"2025-08-11",source:"https://openrouter.ai/models",contextSource:"https://openrouter.ai/models",verifiedAt:"2025-08-11"},{id:"requesty:anthropic/claude-3-7-sonnet",provider:"requesty",vendorId:"anthropic/claude-3-7-sonnet",displayName:"Claude Sonnet 3.7",family:"anthropic/claude-3-7-sonnet",status:"stable",context:{combinedMax:2e5,outputMax:64e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["requesty/anthropic/claude-3-7-sonnet"],releasedAt:"2025-02-19",source:"https://requesty.ai/solution/llm-routing/models",contextSource:"https://requesty.ai/solution/llm-routing/models",verifiedAt:"2025-02-19"},{id:"requesty:anthropic/claude-4-sonnet-20250522",provider:"requesty",vendorId:"anthropic/claude-4-sonnet-20250522",displayName:"Claude Sonnet 4",family:"anthropic/claude-4-sonnet-20250522",status:"stable",context:{combinedMax:2e5,outputMax:64e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["requesty/anthropic/claude-4-sonnet-20250522"],releasedAt:"2025-05-22",source:"https://requesty.ai/solution/llm-routing/models",contextSource:"https://requesty.ai/solution/llm-routing/models",verifiedAt:"2025-05-22"},{id:"requesty:anthropic/claude-opus-4",provider:"requesty",vendorId:"anthropic/claude-opus-4",displayName:"Claude Opus 4",family:"anthropic/claude-opus-4",status:"stable",context:{combinedMax:2e5,outputMax:32e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:15,outputPerMTokens:75},pricingSource:"models.dev",aliases:["requesty/anthropic/claude-opus-4"],releasedAt:"2025-05-22",source:"https://requesty.ai/solution/llm-routing/models",contextSource:"https://requesty.ai/solution/llm-routing/models",verifiedAt:"2025-05-22"},{id:"requesty:anthropic/claude-opus-4-1-20250805",provider:"requesty",vendorId:"anthropic/claude-opus-4-1-20250805",displayName:"Claude Opus 4.1",family:"anthropic/claude-opus-4-1-20250805",status:"stable",context:{combinedMax:2e5,outputMax:32e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:15,outputPerMTokens:75},pricingSource:"models.dev",aliases:["requesty/anthropic/claude-opus-4-1-20250805"],releasedAt:"2025-08-05",source:"https://requesty.ai/solution/llm-routing/models",contextSource:"https://requesty.ai/solution/llm-routing/models",verifiedAt:"2025-08-05"},{id:"requesty:google/gemini-2.5-flash",provider:"requesty",vendorId:"google/gemini-2.5-flash",displayName:"Gemini 2.5 Flash",family:"google/gemini-2.5-flash",status:"stable",context:{combinedMax:1048576,outputMax:65536},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.3,outputPerMTokens:2.5},pricingSource:"models.dev",aliases:["requesty/google/gemini-2.5-flash"],releasedAt:"2025-06-17",source:"https://requesty.ai/solution/llm-routing/models",contextSource:"https://requesty.ai/solution/llm-routing/models",verifiedAt:"2025-06-17"},{id:"requesty:google/gemini-2.5-pro",provider:"requesty",vendorId:"google/gemini-2.5-pro",displayName:"Gemini 2.5 Pro",family:"google/gemini-2.5-pro",status:"stable",context:{combinedMax:1048576,outputMax:65536},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:1.25,outputPerMTokens:10},pricingSource:"models.dev",aliases:["requesty/google/gemini-2.5-pro"],releasedAt:"2025-06-17",source:"https://requesty.ai/solution/llm-routing/models",contextSource:"https://requesty.ai/solution/llm-routing/models",verifiedAt:"2025-06-17"},{id:"requesty:openai/gpt-4.1",provider:"requesty",vendorId:"openai/gpt-4.1",displayName:"GPT-4.1",family:"openai/gpt-4.1",status:"stable",context:{combinedMax:1047576,outputMax:32768},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:2,outputPerMTokens:8},pricingSource:"models.dev",aliases:["requesty/openai/gpt-4.1"],releasedAt:"2025-04-14",source:"https://requesty.ai/solution/llm-routing/models",contextSource:"https://requesty.ai/solution/llm-routing/models",verifiedAt:"2025-04-14"},{id:"requesty:openai/gpt-4.1-mini",provider:"requesty",vendorId:"openai/gpt-4.1-mini",displayName:"GPT-4.1 Mini",family:"openai/gpt-4.1-mini",status:"stable",context:{combinedMax:1047576,outputMax:32768},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.4,outputPerMTokens:1.6},pricingSource:"models.dev",aliases:["requesty/openai/gpt-4.1-mini"],releasedAt:"2025-04-14",source:"https://requesty.ai/solution/llm-routing/models",contextSource:"https://requesty.ai/solution/llm-routing/models",verifiedAt:"2025-04-14"},{id:"requesty:openai/gpt-4o-mini",provider:"requesty",vendorId:"openai/gpt-4o-mini",displayName:"GPT-4o Mini",family:"openai/gpt-4o-mini",status:"stable",context:{combinedMax:128e3,outputMax:16384},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.15,outputPerMTokens:.6},pricingSource:"models.dev",aliases:["requesty/openai/gpt-4o-mini"],releasedAt:"2024-07-18",source:"https://requesty.ai/solution/llm-routing/models",contextSource:"https://requesty.ai/solution/llm-routing/models",verifiedAt:"2024-07-18"},{id:"requesty:openai/gpt-5",provider:"requesty",vendorId:"openai/gpt-5",displayName:"GPT-5",family:"openai/gpt-5",status:"stable",context:{combinedMax:4e5,outputMax:128e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:1.25,outputPerMTokens:10},pricingSource:"models.dev",aliases:["requesty/openai/gpt-5"],releasedAt:"2025-08-07",source:"https://requesty.ai/solution/llm-routing/models",contextSource:"https://requesty.ai/solution/llm-routing/models",verifiedAt:"2025-08-07"},{id:"requesty:openai/gpt-5-mini",provider:"requesty",vendorId:"openai/gpt-5-mini",displayName:"GPT-5 Mini",family:"openai/gpt-5-mini",status:"stable",context:{combinedMax:128e3,outputMax:32e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.25,outputPerMTokens:2},pricingSource:"models.dev",aliases:["requesty/openai/gpt-5-mini"],releasedAt:"2025-08-07",source:"https://requesty.ai/solution/llm-routing/models",contextSource:"https://requesty.ai/solution/llm-routing/models",verifiedAt:"2025-08-07"},{id:"requesty:openai/gpt-5-nano",provider:"requesty",vendorId:"openai/gpt-5-nano",displayName:"GPT-5 Nano",family:"openai/gpt-5-nano",status:"stable",context:{combinedMax:16e3,outputMax:4e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.05,outputPerMTokens:.4},pricingSource:"models.dev",aliases:["requesty/openai/gpt-5-nano"],releasedAt:"2025-08-07",source:"https://requesty.ai/solution/llm-routing/models",contextSource:"https://requesty.ai/solution/llm-routing/models",verifiedAt:"2025-08-07"},{id:"requesty:openai/o4-mini",provider:"requesty",vendorId:"openai/o4-mini",displayName:"o4 Mini",family:"openai/o4-mini",status:"stable",context:{combinedMax:2e5,outputMax:1e5},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:1.1,outputPerMTokens:4.4},pricingSource:"models.dev",aliases:["requesty/openai/o4-mini"],releasedAt:"2025-04-16",source:"https://requesty.ai/solution/llm-routing/models",contextSource:"https://requesty.ai/solution/llm-routing/models",verifiedAt:"2025-04-16"},{id:"submodel:deepseek-ai/DeepSeek-R1-0528",provider:"submodel",vendorId:"deepseek-ai/DeepSeek-R1-0528",displayName:"DeepSeek R1 0528",family:"deepseek-ai/DeepSeek-R1-0528",status:"stable",context:{combinedMax:75e3,outputMax:163840},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.5,outputPerMTokens:2.15},pricingSource:"models.dev",aliases:["submodel/deepseek-ai/DeepSeek-R1-0528"],releasedAt:"2025-08-23",source:"https://submodel.gitbook.io",contextSource:"https://submodel.gitbook.io",verifiedAt:"2025-08-23"},{id:"submodel:deepseek-ai/DeepSeek-V3-0324",provider:"submodel",vendorId:"deepseek-ai/DeepSeek-V3-0324",displayName:"DeepSeek V3 0324",family:"deepseek-ai/DeepSeek-V3-0324",status:"stable",context:{combinedMax:75e3,outputMax:163840},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.2,outputPerMTokens:.8},pricingSource:"models.dev",aliases:["submodel/deepseek-ai/DeepSeek-V3-0324"],releasedAt:"2025-08-23",source:"https://submodel.gitbook.io",contextSource:"https://submodel.gitbook.io",verifiedAt:"2025-08-23"},{id:"submodel:deepseek-ai/DeepSeek-V3.1",provider:"submodel",vendorId:"deepseek-ai/DeepSeek-V3.1",displayName:"DeepSeek V3.1",family:"deepseek-ai/DeepSeek-V3.1",status:"stable",context:{combinedMax:75e3,outputMax:163840},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.2,outputPerMTokens:.8},pricingSource:"models.dev",aliases:["submodel/deepseek-ai/DeepSeek-V3.1"],releasedAt:"2025-08-23",source:"https://submodel.gitbook.io",contextSource:"https://submodel.gitbook.io",verifiedAt:"2025-08-23"},{id:"submodel:openai/gpt-oss-120b",provider:"submodel",vendorId:"openai/gpt-oss-120b",displayName:"GPT OSS 120B",family:"openai/gpt-oss-120b",status:"stable",context:{combinedMax:131072,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.1,outputPerMTokens:.5},pricingSource:"models.dev",aliases:["submodel/openai/gpt-oss-120b"],releasedAt:"2025-08-23",source:"https://submodel.gitbook.io",contextSource:"https://submodel.gitbook.io",verifiedAt:"2025-08-23"},{id:"submodel:Qwen/Qwen3-235B-A22B-Instruct-2507",provider:"submodel",vendorId:"Qwen/Qwen3-235B-A22B-Instruct-2507",displayName:"Qwen3 235B A22B Instruct 2507",family:"Qwen/Qwen3-235B-A22B-Instruct-2507",status:"stable",context:{combinedMax:262144,outputMax:131072},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.2,outputPerMTokens:.3},pricingSource:"models.dev",aliases:["submodel/Qwen/Qwen3-235B-A22B-Instruct-2507"],releasedAt:"2025-08-23",source:"https://submodel.gitbook.io",contextSource:"https://submodel.gitbook.io",verifiedAt:"2025-08-23"},{id:"submodel:Qwen/Qwen3-235B-A22B-Thinking-2507",provider:"submodel",vendorId:"Qwen/Qwen3-235B-A22B-Thinking-2507",displayName:"Qwen3 235B A22B Thinking 2507",family:"Qwen/Qwen3-235B-A22B-Thinking-2507",status:"stable",context:{combinedMax:262144,outputMax:131072},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.2,outputPerMTokens:.6},pricingSource:"models.dev",aliases:["submodel/Qwen/Qwen3-235B-A22B-Thinking-2507"],releasedAt:"2025-08-23",source:"https://submodel.gitbook.io",contextSource:"https://submodel.gitbook.io",verifiedAt:"2025-08-23"},{id:"submodel:Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8",provider:"submodel",vendorId:"Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8",displayName:"Qwen3 Coder 480B A35B Instruct",family:"Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8",status:"stable",context:{combinedMax:262144,outputMax:262144},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.2,outputPerMTokens:.8},pricingSource:"models.dev",aliases:["submodel/Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8"],releasedAt:"2025-08-23",source:"https://submodel.gitbook.io",contextSource:"https://submodel.gitbook.io",verifiedAt:"2025-08-23"},{id:"submodel:zai-org/GLM-4.5-Air",provider:"submodel",vendorId:"zai-org/GLM-4.5-Air",displayName:"GLM 4.5 Air",family:"zai-org/GLM-4.5-Air",status:"stable",context:{combinedMax:131072,outputMax:131072},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.1,outputPerMTokens:.5},pricingSource:"models.dev",aliases:["submodel/zai-org/GLM-4.5-Air"],releasedAt:"2025-07-28",source:"https://submodel.gitbook.io",contextSource:"https://submodel.gitbook.io",verifiedAt:"2025-07-28"},{id:"submodel:zai-org/GLM-4.5-FP8",provider:"submodel",vendorId:"zai-org/GLM-4.5-FP8",displayName:"GLM 4.5 FP8",family:"zai-org/GLM-4.5-FP8",status:"stable",context:{combinedMax:131072,outputMax:131072},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.2,outputPerMTokens:.8},pricingSource:"models.dev",aliases:["submodel/zai-org/GLM-4.5-FP8"],releasedAt:"2025-07-28",source:"https://submodel.gitbook.io",contextSource:"https://submodel.gitbook.io",verifiedAt:"2025-07-28"},{id:"synthetic:hf:deepseek-ai/DeepSeek-R1",provider:"synthetic",vendorId:"hf:deepseek-ai/DeepSeek-R1",displayName:"DeepSeek R1",family:"hf:deepseek-ai/DeepSeek-R1",status:"stable",context:{combinedMax:128e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.55,outputPerMTokens:2.19},pricingSource:"models.dev",aliases:["synthetic/hf:deepseek-ai/DeepSeek-R1"],releasedAt:"2025-01-20",source:"https://synthetic.new/pricing",contextSource:"https://synthetic.new/pricing",verifiedAt:"2025-01-20"},{id:"synthetic:hf:deepseek-ai/DeepSeek-R1-0528",provider:"synthetic",vendorId:"hf:deepseek-ai/DeepSeek-R1-0528",displayName:"DeepSeek R1 (0528)",family:"hf:deepseek-ai/DeepSeek-R1-0528",status:"stable",context:{combinedMax:128e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:3,outputPerMTokens:8},pricingSource:"models.dev",aliases:["synthetic/hf:deepseek-ai/DeepSeek-R1-0528"],releasedAt:"2025-08-01",source:"https://synthetic.new/pricing",contextSource:"https://synthetic.new/pricing",verifiedAt:"2025-08-01"},{id:"synthetic:hf:deepseek-ai/DeepSeek-V3",provider:"synthetic",vendorId:"hf:deepseek-ai/DeepSeek-V3",displayName:"DeepSeek V3",family:"hf:deepseek-ai/DeepSeek-V3",status:"stable",context:{combinedMax:128e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1.25,outputPerMTokens:1.25},pricingSource:"models.dev",aliases:["synthetic/hf:deepseek-ai/DeepSeek-V3"],releasedAt:"2025-01-20",source:"https://synthetic.new/pricing",contextSource:"https://synthetic.new/pricing",verifiedAt:"2025-05-29"},{id:"synthetic:hf:deepseek-ai/DeepSeek-V3-0324",provider:"synthetic",vendorId:"hf:deepseek-ai/DeepSeek-V3-0324",displayName:"DeepSeek V3 (0324)",family:"hf:deepseek-ai/DeepSeek-V3-0324",status:"stable",context:{combinedMax:128e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1.2,outputPerMTokens:1.2},pricingSource:"models.dev",aliases:["synthetic/hf:deepseek-ai/DeepSeek-V3-0324"],releasedAt:"2025-08-01",source:"https://synthetic.new/pricing",contextSource:"https://synthetic.new/pricing",verifiedAt:"2025-08-01"},{id:"synthetic:hf:deepseek-ai/DeepSeek-V3.1",provider:"synthetic",vendorId:"hf:deepseek-ai/DeepSeek-V3.1",displayName:"DeepSeek V3.1",family:"hf:deepseek-ai/DeepSeek-V3.1",status:"stable",context:{combinedMax:128e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.56,outputPerMTokens:1.68},pricingSource:"models.dev",aliases:["synthetic/hf:deepseek-ai/DeepSeek-V3.1"],releasedAt:"2025-08-21",source:"https://synthetic.new/pricing",contextSource:"https://synthetic.new/pricing",verifiedAt:"2025-08-21"},{id:"synthetic:hf:meta-llama/Llama-3.1-405B-Instruct",provider:"synthetic",vendorId:"hf:meta-llama/Llama-3.1-405B-Instruct",displayName:"Llama-3.1-405B-Instruct",family:"hf:meta-llama/Llama-3.1-405B-Instruct",status:"stable",context:{combinedMax:128e3,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:3,outputPerMTokens:3},pricingSource:"models.dev",aliases:["synthetic/hf:meta-llama/Llama-3.1-405B-Instruct"],releasedAt:"2024-07-23",source:"https://synthetic.new/pricing",contextSource:"https://synthetic.new/pricing",verifiedAt:"2024-07-23"},{id:"synthetic:hf:meta-llama/Llama-3.1-70B-Instruct",provider:"synthetic",vendorId:"hf:meta-llama/Llama-3.1-70B-Instruct",displayName:"Llama-3.1-70B-Instruct",family:"hf:meta-llama/Llama-3.1-70B-Instruct",status:"stable",context:{combinedMax:128e3,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.9,outputPerMTokens:.9},pricingSource:"models.dev",aliases:["synthetic/hf:meta-llama/Llama-3.1-70B-Instruct"],releasedAt:"2024-07-23",source:"https://synthetic.new/pricing",contextSource:"https://synthetic.new/pricing",verifiedAt:"2024-07-23"},{id:"synthetic:hf:meta-llama/Llama-3.1-8B-Instruct",provider:"synthetic",vendorId:"hf:meta-llama/Llama-3.1-8B-Instruct",displayName:"Llama-3.1-8B-Instruct",family:"hf:meta-llama/Llama-3.1-8B-Instruct",status:"stable",context:{combinedMax:128e3,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.2,outputPerMTokens:.2},pricingSource:"models.dev",aliases:["synthetic/hf:meta-llama/Llama-3.1-8B-Instruct"],releasedAt:"2024-07-23",source:"https://synthetic.new/pricing",contextSource:"https://synthetic.new/pricing",verifiedAt:"2024-07-23"},{id:"synthetic:hf:meta-llama/Llama-3.3-70B-Instruct",provider:"synthetic",vendorId:"hf:meta-llama/Llama-3.3-70B-Instruct",displayName:"Llama-3.3-70B-Instruct",family:"hf:meta-llama/Llama-3.3-70B-Instruct",status:"stable",context:{combinedMax:128e3,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.9,outputPerMTokens:.9},pricingSource:"models.dev",aliases:["synthetic/hf:meta-llama/Llama-3.3-70B-Instruct"],releasedAt:"2024-12-06",source:"https://synthetic.new/pricing",contextSource:"https://synthetic.new/pricing",verifiedAt:"2024-12-06"},{id:"synthetic:hf:meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8",provider:"synthetic",vendorId:"hf:meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8",displayName:"Llama-4-Maverick-17B-128E-Instruct-FP8",family:"hf:meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8",status:"stable",context:{combinedMax:524e3,outputMax:4096},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.22,outputPerMTokens:.88},pricingSource:"models.dev",aliases:["synthetic/hf:meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8"],releasedAt:"2025-04-05",source:"https://synthetic.new/pricing",contextSource:"https://synthetic.new/pricing",verifiedAt:"2025-04-05"},{id:"synthetic:hf:meta-llama/Llama-4-Scout-17B-16E-Instruct",provider:"synthetic",vendorId:"hf:meta-llama/Llama-4-Scout-17B-16E-Instruct",displayName:"Llama-4-Scout-17B-16E-Instruct",family:"hf:meta-llama/Llama-4-Scout-17B-16E-Instruct",status:"stable",context:{combinedMax:328e3,outputMax:4096},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.15,outputPerMTokens:.6},pricingSource:"models.dev",aliases:["synthetic/hf:meta-llama/Llama-4-Scout-17B-16E-Instruct"],releasedAt:"2025-04-05",source:"https://synthetic.new/pricing",contextSource:"https://synthetic.new/pricing",verifiedAt:"2025-04-05"},{id:"synthetic:hf:moonshotai/Kimi-K2-Instruct",provider:"synthetic",vendorId:"hf:moonshotai/Kimi-K2-Instruct",displayName:"Kimi K2",family:"hf:moonshotai/Kimi-K2-Instruct",status:"stable",context:{combinedMax:128e3,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.6,outputPerMTokens:2.5},pricingSource:"models.dev",aliases:["synthetic/hf:moonshotai/Kimi-K2-Instruct"],releasedAt:"2025-07-11",source:"https://synthetic.new/pricing",contextSource:"https://synthetic.new/pricing",verifiedAt:"2025-07-11"},{id:"synthetic:hf:moonshotai/Kimi-K2-Instruct-0905",provider:"synthetic",vendorId:"hf:moonshotai/Kimi-K2-Instruct-0905",displayName:"Kimi K2 0905",family:"hf:moonshotai/Kimi-K2-Instruct-0905",status:"stable",context:{combinedMax:128e3,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1.2,outputPerMTokens:1.2},pricingSource:"models.dev",aliases:["synthetic/hf:moonshotai/Kimi-K2-Instruct-0905"],releasedAt:"2025-09-05",source:"https://synthetic.new/pricing",contextSource:"https://synthetic.new/pricing",verifiedAt:"2025-09-05"},{id:"synthetic:hf:openai/gpt-oss-120b",provider:"synthetic",vendorId:"hf:openai/gpt-oss-120b",displayName:"GPT OSS 120B",family:"hf:openai/gpt-oss-120b",status:"stable",context:{combinedMax:128e3,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.1,outputPerMTokens:.1},pricingSource:"models.dev",aliases:["synthetic/hf:openai/gpt-oss-120b"],releasedAt:"2025-08-05",source:"https://synthetic.new/pricing",contextSource:"https://synthetic.new/pricing",verifiedAt:"2025-08-05"},{id:"synthetic:hf:Qwen/Qwen2.5-Coder-32B-Instruct",provider:"synthetic",vendorId:"hf:Qwen/Qwen2.5-Coder-32B-Instruct",displayName:"Qwen2.5-Coder-32B-Instruct",family:"hf:Qwen/Qwen2.5-Coder-32B-Instruct",status:"stable",context:{combinedMax:32768,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.8,outputPerMTokens:.8},pricingSource:"models.dev",aliases:["synthetic/hf:Qwen/Qwen2.5-Coder-32B-Instruct"],releasedAt:"2024-11-11",source:"https://synthetic.new/pricing",contextSource:"https://synthetic.new/pricing",verifiedAt:"2024-11-11"},{id:"synthetic:hf:Qwen/Qwen3-235B-A22B-Instruct-2507",provider:"synthetic",vendorId:"hf:Qwen/Qwen3-235B-A22B-Instruct-2507",displayName:"Qwen 3 235B Instruct",family:"hf:Qwen/Qwen3-235B-A22B-Instruct-2507",status:"stable",context:{combinedMax:256e3,outputMax:32e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.2,outputPerMTokens:.6},pricingSource:"models.dev",aliases:["synthetic/hf:Qwen/Qwen3-235B-A22B-Instruct-2507"],releasedAt:"2025-04-28",source:"https://synthetic.new/pricing",contextSource:"https://synthetic.new/pricing",verifiedAt:"2025-07-21"},{id:"synthetic:hf:Qwen/Qwen3-235B-A22B-Thinking-2507",provider:"synthetic",vendorId:"hf:Qwen/Qwen3-235B-A22B-Thinking-2507",displayName:"Qwen3 235B A22B Thinking 2507",family:"hf:Qwen/Qwen3-235B-A22B-Thinking-2507",status:"stable",context:{combinedMax:256e3,outputMax:32e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.65,outputPerMTokens:3},pricingSource:"models.dev",aliases:["synthetic/hf:Qwen/Qwen3-235B-A22B-Thinking-2507"],releasedAt:"2025-07-25",source:"https://synthetic.new/pricing",contextSource:"https://synthetic.new/pricing",verifiedAt:"2025-07-25"},{id:"synthetic:hf:Qwen/Qwen3-Coder-480B-A35B-Instruct",provider:"synthetic",vendorId:"hf:Qwen/Qwen3-Coder-480B-A35B-Instruct",displayName:"Qwen 3 Coder 480B",family:"hf:Qwen/Qwen3-Coder-480B-A35B-Instruct",status:"stable",context:{combinedMax:256e3,outputMax:32e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:2,outputPerMTokens:2},pricingSource:"models.dev",aliases:["synthetic/hf:Qwen/Qwen3-Coder-480B-A35B-Instruct"],releasedAt:"2025-07-23",source:"https://synthetic.new/pricing",contextSource:"https://synthetic.new/pricing",verifiedAt:"2025-07-23"},{id:"synthetic:hf:zai-org/GLM-4.5",provider:"synthetic",vendorId:"hf:zai-org/GLM-4.5",displayName:"GLM 4.5",family:"hf:zai-org/GLM-4.5",status:"stable",context:{combinedMax:128e3,outputMax:96e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.55,outputPerMTokens:2.19},pricingSource:"models.dev",aliases:["synthetic/hf:zai-org/GLM-4.5"],releasedAt:"2025-07-28",source:"https://synthetic.new/pricing",contextSource:"https://synthetic.new/pricing",verifiedAt:"2025-07-28"},{id:"togetherai:deepseek-ai/DeepSeek-R1",provider:"togetherai",vendorId:"deepseek-ai/DeepSeek-R1",displayName:"DeepSeek R1",family:"deepseek-ai/DeepSeek-R1",status:"stable",context:{combinedMax:163839,outputMax:12288},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:3,outputPerMTokens:7},pricingSource:"models.dev",aliases:["togetherai/deepseek-ai/DeepSeek-R1"],releasedAt:"2024-12-26",source:"https://docs.together.ai/docs/serverless-models",contextSource:"https://docs.together.ai/docs/serverless-models",verifiedAt:"2025-03-24"},{id:"togetherai:deepseek-ai/DeepSeek-V3",provider:"togetherai",vendorId:"deepseek-ai/DeepSeek-V3",displayName:"DeepSeek V3",family:"deepseek-ai/DeepSeek-V3",status:"stable",context:{combinedMax:131072,outputMax:12288},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1.25,outputPerMTokens:1.25},pricingSource:"models.dev",aliases:["togetherai/deepseek-ai/DeepSeek-V3"],releasedAt:"2025-01-20",source:"https://docs.together.ai/docs/serverless-models",contextSource:"https://docs.together.ai/docs/serverless-models",verifiedAt:"2025-05-29"},{id:"togetherai:meta-llama/Llama-3.3-70B-Instruct-Turbo",provider:"togetherai",vendorId:"meta-llama/Llama-3.3-70B-Instruct-Turbo",displayName:"Llama 3.3 70B",family:"meta-llama/Llama-3.3-70B-Instruct-Turbo",status:"stable",context:{combinedMax:131072,outputMax:66536},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.88,outputPerMTokens:.88},pricingSource:"models.dev",aliases:["togetherai/meta-llama/Llama-3.3-70B-Instruct-Turbo"],releasedAt:"2024-12-06",source:"https://docs.together.ai/docs/serverless-models",contextSource:"https://docs.together.ai/docs/serverless-models",verifiedAt:"2024-12-06"},{id:"togetherai:moonshotai/Kimi-K2-Instruct",provider:"togetherai",vendorId:"moonshotai/Kimi-K2-Instruct",displayName:"Kimi K2 Instruct",family:"moonshotai/Kimi-K2-Instruct",status:"stable",context:{combinedMax:131072,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1,outputPerMTokens:3},pricingSource:"models.dev",aliases:["togetherai/moonshotai/Kimi-K2-Instruct"],releasedAt:"2025-07-14",source:"https://docs.together.ai/docs/serverless-models",contextSource:"https://docs.together.ai/docs/serverless-models",verifiedAt:"2025-07-14"},{id:"togetherai:openai/gpt-oss-120b",provider:"togetherai",vendorId:"openai/gpt-oss-120b",displayName:"GPT OSS 120B",family:"openai/gpt-oss-120b",status:"stable",context:{combinedMax:131072,outputMax:131072},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.15,outputPerMTokens:.6},pricingSource:"models.dev",aliases:["togetherai/openai/gpt-oss-120b"],releasedAt:"2025-08-05",source:"https://docs.together.ai/docs/serverless-models",contextSource:"https://docs.together.ai/docs/serverless-models",verifiedAt:"2025-08-05"},{id:"togetherai:Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8",provider:"togetherai",vendorId:"Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8",displayName:"Qwen3 Coder 480B A35B Instruct",family:"Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8",status:"stable",context:{combinedMax:262144,outputMax:66536},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:2,outputPerMTokens:2},pricingSource:"models.dev",aliases:["togetherai/Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8"],releasedAt:"2025-07-23",source:"https://docs.together.ai/docs/serverless-models",contextSource:"https://docs.together.ai/docs/serverless-models",verifiedAt:"2025-07-23"},{id:"upstage:solar-mini",provider:"upstage",vendorId:"solar-mini",displayName:"solar-mini",family:"solar-mini",status:"stable",context:{combinedMax:32768,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.15,outputPerMTokens:.15},pricingSource:"models.dev",aliases:["upstage/solar-mini"],releasedAt:"2024-06-12",source:"https://developers.upstage.ai/docs/apis/chat",contextSource:"https://developers.upstage.ai/docs/apis/chat",verifiedAt:"2025-04-22"},{id:"upstage:solar-pro2",provider:"upstage",vendorId:"solar-pro2",displayName:"solar-pro2",family:"solar-pro2",status:"stable",context:{combinedMax:65536,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.25,outputPerMTokens:.25},pricingSource:"models.dev",aliases:["upstage/solar-pro2"],releasedAt:"2025-05-20",source:"https://developers.upstage.ai/docs/apis/chat",contextSource:"https://developers.upstage.ai/docs/apis/chat",verifiedAt:"2025-05-20"},{id:"v0:v0-1.0-md",provider:"v0",vendorId:"v0-1.0-md",displayName:"v0-1.0-md",family:"v0-1.0-md",status:"stable",context:{combinedMax:128e3,outputMax:32e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["v0/v0-1.0-md"],releasedAt:"2025-05-22",source:"https://sdk.vercel.ai/providers/ai-sdk-providers/vercel",contextSource:"https://sdk.vercel.ai/providers/ai-sdk-providers/vercel",verifiedAt:"2025-05-22"},{id:"v0:v0-1.5-lg",provider:"v0",vendorId:"v0-1.5-lg",displayName:"v0-1.5-lg",family:"v0-1.5-lg",status:"stable",context:{combinedMax:512e3,outputMax:32e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:15,outputPerMTokens:75},pricingSource:"models.dev",aliases:["v0/v0-1.5-lg"],releasedAt:"2025-06-09",source:"https://sdk.vercel.ai/providers/ai-sdk-providers/vercel",contextSource:"https://sdk.vercel.ai/providers/ai-sdk-providers/vercel",verifiedAt:"2025-06-09"},{id:"v0:v0-1.5-md",provider:"v0",vendorId:"v0-1.5-md",displayName:"v0-1.5-md",family:"v0-1.5-md",status:"stable",context:{combinedMax:128e3,outputMax:32e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["v0/v0-1.5-md"],releasedAt:"2025-06-09",source:"https://sdk.vercel.ai/providers/ai-sdk-providers/vercel",contextSource:"https://sdk.vercel.ai/providers/ai-sdk-providers/vercel",verifiedAt:"2025-06-09"},{id:"venice:deepseek-coder-v2-lite",provider:"venice",vendorId:"deepseek-coder-v2-lite",displayName:"DeepSeek Coder V2 Lite",family:"deepseek-coder-v2-lite",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.5,outputPerMTokens:2},pricingSource:"models.dev",aliases:["venice/deepseek-coder-v2-lite"],releasedAt:"2025-06-22",source:"https://docs.venice.ai",contextSource:"https://docs.venice.ai",verifiedAt:"2025-06-22"},{id:"venice:deepseek-r1-671b",provider:"venice",vendorId:"deepseek-r1-671b",displayName:"DeepSeek R1 671B",family:"deepseek-r1-671b",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:3.5,outputPerMTokens:14},pricingSource:"models.dev",aliases:["venice/deepseek-r1-671b"],releasedAt:"2025-06-05",source:"https://docs.venice.ai",contextSource:"https://docs.venice.ai",verifiedAt:"2025-06-05"},{id:"venice:dolphin-2.9.2-qwen2-72b",provider:"venice",vendorId:"dolphin-2.9.2-qwen2-72b",displayName:"Dolphin 72B",family:"dolphin-2.9.2-qwen2-72b",status:"stable",context:{combinedMax:32768,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.7,outputPerMTokens:2.8},pricingSource:"models.dev",aliases:["venice/dolphin-2.9.2-qwen2-72b"],releasedAt:"2025-05-21",source:"https://docs.venice.ai",contextSource:"https://docs.venice.ai",verifiedAt:"2025-05-21"},{id:"venice:llama-3.1-405b",provider:"venice",vendorId:"llama-3.1-405b",displayName:"Llama 3.1 405B",family:"llama-3.1-405b",status:"stable",context:{combinedMax:65536,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1.5,outputPerMTokens:6},pricingSource:"models.dev",aliases:["venice/llama-3.1-405b"],releasedAt:"2025-06-30",source:"https://docs.venice.ai",contextSource:"https://docs.venice.ai",verifiedAt:"2025-06-30"},{id:"venice:llama-3.2-3b",provider:"venice",vendorId:"llama-3.2-3b",displayName:"Llama 3.2 3B",family:"llama-3.2-3b",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.15,outputPerMTokens:.6},pricingSource:"models.dev",aliases:["venice/llama-3.2-3b"],releasedAt:"2025-05-23",source:"https://docs.venice.ai",contextSource:"https://docs.venice.ai",verifiedAt:"2025-05-23"},{id:"venice:llama-3.3-70b",provider:"venice",vendorId:"llama-3.3-70b",displayName:"Llama 3.3 70B",family:"llama-3.3-70b",status:"stable",context:{combinedMax:65536,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.7,outputPerMTokens:2.8},pricingSource:"models.dev",aliases:["venice/llama-3.3-70b"],releasedAt:"2025-06-09",source:"https://docs.venice.ai",contextSource:"https://docs.venice.ai",verifiedAt:"2025-06-09"},{id:"venice:mistral-31-24b",provider:"venice",vendorId:"mistral-31-24b",displayName:"Venice Medium",family:"mistral-31-24b",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.5,outputPerMTokens:2},pricingSource:"models.dev",aliases:["venice/mistral-31-24b"],releasedAt:"2025-07-15",source:"https://docs.venice.ai",contextSource:"https://docs.venice.ai",verifiedAt:"2025-07-15"},{id:"venice:qwen-2.5-coder-32b",provider:"venice",vendorId:"qwen-2.5-coder-32b",displayName:"Qwen 2.5 Coder 32B",family:"qwen-2.5-coder-32b",status:"stable",context:{combinedMax:32768,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.5,outputPerMTokens:2},pricingSource:"models.dev",aliases:["venice/qwen-2.5-coder-32b"],releasedAt:"2025-06-14",source:"https://docs.venice.ai",contextSource:"https://docs.venice.ai",verifiedAt:"2025-06-14"},{id:"venice:qwen-2.5-qwq-32b",provider:"venice",vendorId:"qwen-2.5-qwq-32b",displayName:"Venice Reasoning",family:"qwen-2.5-qwq-32b",status:"stable",context:{combinedMax:32768,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.5,outputPerMTokens:2},pricingSource:"models.dev",aliases:["venice/qwen-2.5-qwq-32b"],releasedAt:"2025-07-08",source:"https://docs.venice.ai",contextSource:"https://docs.venice.ai",verifiedAt:"2025-07-08"},{id:"venice:qwen-2.5-vl",provider:"venice",vendorId:"qwen-2.5-vl",displayName:"Qwen 2.5 VL 72B",family:"qwen-2.5-vl",status:"stable",context:{combinedMax:32768,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.7,outputPerMTokens:2.8},pricingSource:"models.dev",aliases:["venice/qwen-2.5-vl"],releasedAt:"2025-06-09",source:"https://docs.venice.ai",contextSource:"https://docs.venice.ai",verifiedAt:"2025-06-09"},{id:"venice:qwen3-235b",provider:"venice",vendorId:"qwen3-235b",displayName:"Venice Large",family:"qwen3-235b",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1.5,outputPerMTokens:6},pricingSource:"models.dev",aliases:["venice/qwen3-235b"],releasedAt:"2025-07-27",source:"https://docs.venice.ai",contextSource:"https://docs.venice.ai",verifiedAt:"2025-07-27"},{id:"venice:qwen3-4b",provider:"venice",vendorId:"qwen3-4b",displayName:"Venice Small",family:"qwen3-4b",status:"stable",context:{combinedMax:32768,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.15,outputPerMTokens:.6},pricingSource:"models.dev",aliases:["venice/qwen3-4b"],releasedAt:"2025-07-27",source:"https://docs.venice.ai",contextSource:"https://docs.venice.ai",verifiedAt:"2025-07-27"},{id:"venice:venice-uncensored",provider:"venice",vendorId:"venice-uncensored",displayName:"Venice Uncensored 1.1",family:"venice-uncensored",status:"stable",context:{combinedMax:32768,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.5,outputPerMTokens:2},pricingSource:"models.dev",aliases:["venice/venice-uncensored"],releasedAt:"2025-07-15",source:"https://docs.venice.ai",contextSource:"https://docs.venice.ai",verifiedAt:"2025-07-15"},{id:"vercel:amazon/nova-lite",provider:"vercel",vendorId:"amazon/nova-lite",displayName:"Nova Lite",family:"amazon/nova-lite",status:"stable",context:{combinedMax:3e5,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.06,outputPerMTokens:.24},pricingSource:"models.dev",aliases:["vercel/amazon/nova-lite"],releasedAt:"2024-12-03",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2024-12-03"},{id:"vercel:amazon/nova-micro",provider:"vercel",vendorId:"amazon/nova-micro",displayName:"Nova Micro",family:"amazon/nova-micro",status:"stable",context:{combinedMax:128e3,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.035,outputPerMTokens:.14},pricingSource:"models.dev",aliases:["vercel/amazon/nova-micro"],releasedAt:"2024-12-03",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2024-12-03"},{id:"vercel:amazon/nova-pro",provider:"vercel",vendorId:"amazon/nova-pro",displayName:"Nova Pro",family:"amazon/nova-pro",status:"stable",context:{combinedMax:3e5,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.8,outputPerMTokens:3.2},pricingSource:"models.dev",aliases:["vercel/amazon/nova-pro"],releasedAt:"2024-12-03",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2024-12-03"},{id:"vercel:anthropic/claude-3-5-haiku",provider:"vercel",vendorId:"anthropic/claude-3-5-haiku",displayName:"Claude Haiku 3.5",family:"anthropic/claude-3-5-haiku",status:"stable",context:{combinedMax:2e5,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.8,outputPerMTokens:4},pricingSource:"models.dev",aliases:["vercel/anthropic/claude-3-5-haiku"],releasedAt:"2024-10-22",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2024-10-22"},{id:"vercel:anthropic/claude-3-haiku",provider:"vercel",vendorId:"anthropic/claude-3-haiku",displayName:"Claude Haiku 3",family:"anthropic/claude-3-haiku",status:"stable",context:{combinedMax:2e5,outputMax:4096},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.25,outputPerMTokens:1.25},pricingSource:"models.dev",aliases:["vercel/anthropic/claude-3-haiku"],releasedAt:"2024-03-13",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2024-03-13"},{id:"vercel:anthropic/claude-3-opus",provider:"vercel",vendorId:"anthropic/claude-3-opus",displayName:"Claude Opus 3",family:"anthropic/claude-3-opus",status:"stable",context:{combinedMax:2e5,outputMax:4096},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:15,outputPerMTokens:75},pricingSource:"models.dev",aliases:["vercel/anthropic/claude-3-opus"],releasedAt:"2024-02-29",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2024-02-29"},{id:"vercel:anthropic/claude-3.5-sonnet",provider:"vercel",vendorId:"anthropic/claude-3.5-sonnet",displayName:"Claude Sonnet 3.5 v2",family:"anthropic/claude-3.5-sonnet",status:"stable",context:{combinedMax:2e5,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["vercel/anthropic/claude-3.5-sonnet"],releasedAt:"2024-10-22",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2024-10-22"},{id:"vercel:anthropic/claude-3.7-sonnet",provider:"vercel",vendorId:"anthropic/claude-3.7-sonnet",displayName:"Claude Sonnet 3.7",family:"anthropic/claude-3.7-sonnet",status:"stable",context:{combinedMax:2e5,outputMax:64e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["vercel/anthropic/claude-3.7-sonnet"],releasedAt:"2025-02-19",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-02-19"},{id:"vercel:anthropic/claude-4-1-opus",provider:"vercel",vendorId:"anthropic/claude-4-1-opus",displayName:"Claude Opus 4",family:"anthropic/claude-4-1-opus",status:"stable",context:{combinedMax:2e5,outputMax:32e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:15,outputPerMTokens:75},pricingSource:"models.dev",aliases:["vercel/anthropic/claude-4-1-opus"],releasedAt:"2025-05-22",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-05-22"},{id:"vercel:anthropic/claude-4-opus",provider:"vercel",vendorId:"anthropic/claude-4-opus",displayName:"Claude Opus 4",family:"anthropic/claude-4-opus",status:"stable",context:{combinedMax:2e5,outputMax:32e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:15,outputPerMTokens:75},pricingSource:"models.dev",aliases:["vercel/anthropic/claude-4-opus"],releasedAt:"2025-05-22",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-05-22"},{id:"vercel:anthropic/claude-4-sonnet",provider:"vercel",vendorId:"anthropic/claude-4-sonnet",displayName:"Claude Sonnet 4",family:"anthropic/claude-4-sonnet",status:"stable",context:{combinedMax:2e5,outputMax:64e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["vercel/anthropic/claude-4-sonnet"],releasedAt:"2025-05-22",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-05-22"},{id:"vercel:cerebras/qwen3-coder",provider:"vercel",vendorId:"cerebras/qwen3-coder",displayName:"Qwen 3 Coder 480B",family:"cerebras/qwen3-coder",status:"stable",context:{combinedMax:131e3,outputMax:32e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:2,outputPerMTokens:2},pricingSource:"models.dev",aliases:["vercel/cerebras/qwen3-coder"],releasedAt:"2025-07-23",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-07-23"},{id:"vercel:deepseek/deepseek-r1",provider:"vercel",vendorId:"deepseek/deepseek-r1",displayName:"DeepSeek-R1",family:"deepseek/deepseek-r1",status:"stable",context:{combinedMax:128e3,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1.35,outputPerMTokens:5.4},pricingSource:"models.dev",aliases:["vercel/deepseek/deepseek-r1"],releasedAt:"2025-01-20",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-05-29"},{id:"vercel:deepseek/deepseek-r1-distill-llama-70b",provider:"vercel",vendorId:"deepseek/deepseek-r1-distill-llama-70b",displayName:"DeepSeek R1 Distill Llama 70B",family:"deepseek/deepseek-r1-distill-llama-70b",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.75,outputPerMTokens:.99},pricingSource:"models.dev",aliases:["vercel/deepseek/deepseek-r1-distill-llama-70b"],releasedAt:"2025-01-20",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-01-20"},{id:"vercel:google/gemini-2.0-flash",provider:"vercel",vendorId:"google/gemini-2.0-flash",displayName:"Gemini 2.0 Flash",family:"google/gemini-2.0-flash",status:"stable",context:{combinedMax:1048576,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.1,outputPerMTokens:.4},pricingSource:"models.dev",aliases:["vercel/google/gemini-2.0-flash"],releasedAt:"2024-12-11",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2024-12-11"},{id:"vercel:google/gemini-2.0-flash-lite",provider:"vercel",vendorId:"google/gemini-2.0-flash-lite",displayName:"Gemini 2.0 Flash Lite",family:"google/gemini-2.0-flash-lite",status:"stable",context:{combinedMax:1048576,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.075,outputPerMTokens:.3},pricingSource:"models.dev",aliases:["vercel/google/gemini-2.0-flash-lite"],releasedAt:"2024-12-11",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2024-12-11"},{id:"vercel:google/gemini-2.5-flash",provider:"vercel",vendorId:"google/gemini-2.5-flash",displayName:"Gemini 2.5 Flash",family:"google/gemini-2.5-flash",status:"stable",context:{combinedMax:1048576,outputMax:65536},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.3,outputPerMTokens:2.5},pricingSource:"models.dev",aliases:["vercel/google/gemini-2.5-flash"],releasedAt:"2025-03-20",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-06-05"},{id:"vercel:google/gemini-2.5-pro",provider:"vercel",vendorId:"google/gemini-2.5-pro",displayName:"Gemini 2.5 Pro",family:"google/gemini-2.5-pro",status:"stable",context:{combinedMax:1048576,outputMax:65536},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:1.25,outputPerMTokens:10},pricingSource:"models.dev",aliases:["vercel/google/gemini-2.5-pro"],releasedAt:"2025-03-20",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-06-05"},{id:"vercel:meta/llama-3.3-70b",provider:"vercel",vendorId:"meta/llama-3.3-70b",displayName:"Llama-3.3-70B-Instruct",family:"meta/llama-3.3-70b",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["vercel/meta/llama-3.3-70b"],releasedAt:"2024-12-06",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2024-12-06"},{id:"vercel:meta/llama-4-maverick",provider:"vercel",vendorId:"meta/llama-4-maverick",displayName:"Llama-4-Maverick-17B-128E-Instruct-FP8",family:"meta/llama-4-maverick",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["vercel/meta/llama-4-maverick"],releasedAt:"2025-04-05",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-04-05"},{id:"vercel:meta/llama-4-scout",provider:"vercel",vendorId:"meta/llama-4-scout",displayName:"Llama-4-Scout-17B-16E-Instruct-FP8",family:"meta/llama-4-scout",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["vercel/meta/llama-4-scout"],releasedAt:"2025-04-05",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-04-05"},{id:"vercel:mistral/codestral",provider:"vercel",vendorId:"mistral/codestral",displayName:"Codestral",family:"mistral/codestral",status:"stable",context:{combinedMax:256e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.3,outputPerMTokens:.9},pricingSource:"models.dev",aliases:["vercel/mistral/codestral"],releasedAt:"2024-05-29",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-01-04"},{id:"vercel:mistral/magistral-medium",provider:"vercel",vendorId:"mistral/magistral-medium",displayName:"Magistral Medium",family:"mistral/magistral-medium",status:"stable",context:{combinedMax:128e3,outputMax:16384},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:2,outputPerMTokens:5},pricingSource:"models.dev",aliases:["vercel/mistral/magistral-medium"],releasedAt:"2025-03-17",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-03-20"},{id:"vercel:mistral/magistral-small",provider:"vercel",vendorId:"mistral/magistral-small",displayName:"Magistral Small",family:"mistral/magistral-small",status:"stable",context:{combinedMax:128e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.5,outputPerMTokens:1.5},pricingSource:"models.dev",aliases:["vercel/mistral/magistral-small"],releasedAt:"2025-03-17",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-03-17"},{id:"vercel:mistral/ministral-3b",provider:"vercel",vendorId:"mistral/ministral-3b",displayName:"Ministral 3B",family:"mistral/ministral-3b",status:"stable",context:{combinedMax:128e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.04,outputPerMTokens:.04},pricingSource:"models.dev",aliases:["vercel/mistral/ministral-3b"],releasedAt:"2024-10-01",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2024-10-04"},{id:"vercel:mistral/ministral-8b",provider:"vercel",vendorId:"mistral/ministral-8b",displayName:"Ministral 8B",family:"mistral/ministral-8b",status:"stable",context:{combinedMax:128e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.1,outputPerMTokens:.1},pricingSource:"models.dev",aliases:["vercel/mistral/ministral-8b"],releasedAt:"2024-10-01",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2024-10-04"},{id:"vercel:mistral/mistral-large",provider:"vercel",vendorId:"mistral/mistral-large",displayName:"Mistral Large",family:"mistral/mistral-large",status:"stable",context:{combinedMax:131072,outputMax:16384},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:2,outputPerMTokens:6},pricingSource:"models.dev",aliases:["vercel/mistral/mistral-large"],releasedAt:"2024-11-01",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2024-11-04"},{id:"vercel:mistral/mistral-small",provider:"vercel",vendorId:"mistral/mistral-small",displayName:"Mistral Small",family:"mistral/mistral-small",status:"stable",context:{combinedMax:128e3,outputMax:16384},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.1,outputPerMTokens:.3},pricingSource:"models.dev",aliases:["vercel/mistral/mistral-small"],releasedAt:"2024-09-01",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2024-09-04"},{id:"vercel:mistral/mixtral-8x22b-instruct",provider:"vercel",vendorId:"mistral/mixtral-8x22b-instruct",displayName:"Mixtral 8x22B",family:"mistral/mixtral-8x22b-instruct",status:"stable",context:{combinedMax:64e3,outputMax:64e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:2,outputPerMTokens:6},pricingSource:"models.dev",aliases:["vercel/mistral/mixtral-8x22b-instruct"],releasedAt:"2024-04-17",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2024-04-17"},{id:"vercel:mistral/pixtral-12b",provider:"vercel",vendorId:"mistral/pixtral-12b",displayName:"Pixtral 12B",family:"mistral/pixtral-12b",status:"stable",context:{combinedMax:128e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.15,outputPerMTokens:.15},pricingSource:"models.dev",aliases:["vercel/mistral/pixtral-12b"],releasedAt:"2024-09-01",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2024-09-01"},{id:"vercel:mistral/pixtral-large",provider:"vercel",vendorId:"mistral/pixtral-large",displayName:"Pixtral Large",family:"mistral/pixtral-large",status:"stable",context:{combinedMax:128e3,outputMax:128e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:2,outputPerMTokens:6},pricingSource:"models.dev",aliases:["vercel/mistral/pixtral-large"],releasedAt:"2024-11-01",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2024-11-04"},{id:"vercel:moonshotai/kimi-k2",provider:"vercel",vendorId:"moonshotai/kimi-k2",displayName:"Kimi K2 Instruct",family:"moonshotai/kimi-k2",status:"stable",context:{combinedMax:131072,outputMax:16384},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1,outputPerMTokens:3},pricingSource:"models.dev",aliases:["vercel/moonshotai/kimi-k2"],releasedAt:"2025-07-14",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-07-14"},{id:"vercel:morph/morph-v3-fast",provider:"vercel",vendorId:"morph/morph-v3-fast",displayName:"Morph v3 Fast",family:"morph/morph-v3-fast",status:"stable",context:{combinedMax:16e3,outputMax:16e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.8,outputPerMTokens:1.2},pricingSource:"models.dev",aliases:["vercel/morph/morph-v3-fast"],releasedAt:"2024-08-15",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2024-08-15"},{id:"vercel:morph/morph-v3-large",provider:"vercel",vendorId:"morph/morph-v3-large",displayName:"Morph v3 Large",family:"morph/morph-v3-large",status:"stable",context:{combinedMax:32e3,outputMax:32e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.9,outputPerMTokens:1.9},pricingSource:"models.dev",aliases:["vercel/morph/morph-v3-large"],releasedAt:"2024-08-15",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2024-08-15"},{id:"vercel:openai/gpt-4-turbo",provider:"vercel",vendorId:"openai/gpt-4-turbo",displayName:"GPT-4 Turbo",family:"openai/gpt-4-turbo",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:10,outputPerMTokens:30},pricingSource:"models.dev",aliases:["vercel/openai/gpt-4-turbo"],releasedAt:"2023-11-06",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2024-04-09"},{id:"vercel:openai/gpt-4.1",provider:"vercel",vendorId:"openai/gpt-4.1",displayName:"GPT-4.1",family:"openai/gpt-4.1",status:"stable",context:{combinedMax:1047576,outputMax:32768},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:2,outputPerMTokens:8},pricingSource:"models.dev",aliases:["vercel/openai/gpt-4.1"],releasedAt:"2025-04-14",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-04-14"},{id:"vercel:openai/gpt-4.1-mini",provider:"vercel",vendorId:"openai/gpt-4.1-mini",displayName:"GPT-4.1 mini",family:"openai/gpt-4.1-mini",status:"stable",context:{combinedMax:1047576,outputMax:32768},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.4,outputPerMTokens:1.6},pricingSource:"models.dev",aliases:["vercel/openai/gpt-4.1-mini"],releasedAt:"2025-04-14",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-04-14"},{id:"vercel:openai/gpt-4.1-nano",provider:"vercel",vendorId:"openai/gpt-4.1-nano",displayName:"GPT-4.1 nano",family:"openai/gpt-4.1-nano",status:"stable",context:{combinedMax:1047576,outputMax:32768},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.1,outputPerMTokens:.4},pricingSource:"models.dev",aliases:["vercel/openai/gpt-4.1-nano"],releasedAt:"2025-04-14",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-04-14"},{id:"vercel:openai/gpt-4o",provider:"vercel",vendorId:"openai/gpt-4o",displayName:"GPT-4o",family:"openai/gpt-4o",status:"stable",context:{combinedMax:128e3,outputMax:16384},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:2.5,outputPerMTokens:10},pricingSource:"models.dev",aliases:["vercel/openai/gpt-4o"],releasedAt:"2024-05-13",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2024-05-13"},{id:"vercel:openai/gpt-4o-mini",provider:"vercel",vendorId:"openai/gpt-4o-mini",displayName:"GPT-4o mini",family:"openai/gpt-4o-mini",status:"stable",context:{combinedMax:128e3,outputMax:16384},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.15,outputPerMTokens:.6},pricingSource:"models.dev",aliases:["vercel/openai/gpt-4o-mini"],releasedAt:"2024-07-18",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2024-07-18"},{id:"vercel:openai/gpt-5",provider:"vercel",vendorId:"openai/gpt-5",displayName:"GPT-5",family:"openai/gpt-5",status:"stable",context:{combinedMax:4e5,outputMax:128e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:1.25,outputPerMTokens:10},pricingSource:"models.dev",aliases:["vercel/openai/gpt-5"],releasedAt:"2025-08-07",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-08-07"},{id:"vercel:openai/gpt-5-mini",provider:"vercel",vendorId:"openai/gpt-5-mini",displayName:"GPT-5 Mini",family:"openai/gpt-5-mini",status:"stable",context:{combinedMax:4e5,outputMax:128e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.25,outputPerMTokens:2},pricingSource:"models.dev",aliases:["vercel/openai/gpt-5-mini"],releasedAt:"2025-08-07",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-08-07"},{id:"vercel:openai/gpt-5-nano",provider:"vercel",vendorId:"openai/gpt-5-nano",displayName:"GPT-5 Nano",family:"openai/gpt-5-nano",status:"stable",context:{combinedMax:4e5,outputMax:128e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.05,outputPerMTokens:.4},pricingSource:"models.dev",aliases:["vercel/openai/gpt-5-nano"],releasedAt:"2025-08-07",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-08-07"},{id:"vercel:openai/gpt-oss-120b",provider:"vercel",vendorId:"openai/gpt-oss-120b",displayName:"GPT OSS 120B",family:"openai/gpt-oss-120b",status:"stable",context:{combinedMax:131072,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.1,outputPerMTokens:.5},pricingSource:"models.dev",aliases:["vercel/openai/gpt-oss-120b"],releasedAt:"2025-08-05",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-08-05"},{id:"vercel:openai/gpt-oss-20b",provider:"vercel",vendorId:"openai/gpt-oss-20b",displayName:"GPT OSS 20B",family:"openai/gpt-oss-20b",status:"stable",context:{combinedMax:131072,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.07,outputPerMTokens:.3},pricingSource:"models.dev",aliases:["vercel/openai/gpt-oss-20b"],releasedAt:"2025-08-05",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-08-05"},{id:"vercel:openai/o1",provider:"vercel",vendorId:"openai/o1",displayName:"o1",family:"openai/o1",status:"stable",context:{combinedMax:2e5,outputMax:1e5},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:15,outputPerMTokens:60},pricingSource:"models.dev",aliases:["vercel/openai/o1"],releasedAt:"2024-12-05",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2024-12-05"},{id:"vercel:openai/o3",provider:"vercel",vendorId:"openai/o3",displayName:"o3",family:"openai/o3",status:"stable",context:{combinedMax:2e5,outputMax:1e5},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:2,outputPerMTokens:8},pricingSource:"models.dev",aliases:["vercel/openai/o3"],releasedAt:"2025-04-16",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-04-16"},{id:"vercel:openai/o3-mini",provider:"vercel",vendorId:"openai/o3-mini",displayName:"o3-mini",family:"openai/o3-mini",status:"stable",context:{combinedMax:2e5,outputMax:1e5},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1.1,outputPerMTokens:4.4},pricingSource:"models.dev",aliases:["vercel/openai/o3-mini"],releasedAt:"2024-12-20",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-01-29"},{id:"vercel:openai/o4-mini",provider:"vercel",vendorId:"openai/o4-mini",displayName:"o4-mini",family:"openai/o4-mini",status:"stable",context:{combinedMax:2e5,outputMax:1e5},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:1.1,outputPerMTokens:4.4},pricingSource:"models.dev",aliases:["vercel/openai/o4-mini"],releasedAt:"2025-04-16",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-04-16"},{id:"vercel:vercel/v0-1.0-md",provider:"vercel",vendorId:"vercel/v0-1.0-md",displayName:"v0-1.0-md",family:"vercel/v0-1.0-md",status:"stable",context:{combinedMax:128e3,outputMax:32e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["vercel/vercel/v0-1.0-md"],releasedAt:"2025-05-22",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-05-22"},{id:"vercel:vercel/v0-1.5-md",provider:"vercel",vendorId:"vercel/v0-1.5-md",displayName:"v0-1.5-md",family:"vercel/v0-1.5-md",status:"stable",context:{combinedMax:128e3,outputMax:32e3},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["vercel/vercel/v0-1.5-md"],releasedAt:"2025-06-09",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-06-09"},{id:"vercel:xai/grok-2",provider:"vercel",vendorId:"xai/grok-2",displayName:"Grok 2",family:"xai/grok-2",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:2,outputPerMTokens:10},pricingSource:"models.dev",aliases:["vercel/xai/grok-2"],releasedAt:"2024-08-20",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2024-08-20"},{id:"vercel:xai/grok-2-vision",provider:"vercel",vendorId:"xai/grok-2-vision",displayName:"Grok 2 Vision",family:"xai/grok-2-vision",status:"stable",context:{combinedMax:8192,outputMax:4096},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:2,outputPerMTokens:10},pricingSource:"models.dev",aliases:["vercel/xai/grok-2-vision"],releasedAt:"2024-08-20",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2024-08-20"},{id:"vercel:xai/grok-3",provider:"vercel",vendorId:"xai/grok-3",displayName:"Grok 3",family:"xai/grok-3",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["vercel/xai/grok-3"],releasedAt:"2025-02-17",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-02-17"},{id:"vercel:xai/grok-3-fast",provider:"vercel",vendorId:"xai/grok-3-fast",displayName:"Grok 3 Fast",family:"xai/grok-3-fast",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:5,outputPerMTokens:25},pricingSource:"models.dev",aliases:["vercel/xai/grok-3-fast"],releasedAt:"2025-02-17",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-02-17"},{id:"vercel:xai/grok-3-mini",provider:"vercel",vendorId:"xai/grok-3-mini",displayName:"Grok 3 Mini",family:"xai/grok-3-mini",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.3,outputPerMTokens:.5},pricingSource:"models.dev",aliases:["vercel/xai/grok-3-mini"],releasedAt:"2025-02-17",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-02-17"},{id:"vercel:xai/grok-3-mini-fast",provider:"vercel",vendorId:"xai/grok-3-mini-fast",displayName:"Grok 3 Mini Fast",family:"xai/grok-3-mini-fast",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.6,outputPerMTokens:4},pricingSource:"models.dev",aliases:["vercel/xai/grok-3-mini-fast"],releasedAt:"2025-02-17",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-02-17"},{id:"vercel:xai/grok-4",provider:"vercel",vendorId:"xai/grok-4",displayName:"Grok 4",family:"xai/grok-4",status:"stable",context:{combinedMax:256e3,outputMax:64e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["vercel/xai/grok-4"],releasedAt:"2025-07-09",source:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",contextSource:"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",verifiedAt:"2025-07-09"},{id:"wandb:deepseek-ai/DeepSeek-R1-0528",provider:"wandb",vendorId:"deepseek-ai/DeepSeek-R1-0528",displayName:"DeepSeek-R1-0528",family:"deepseek-ai/DeepSeek-R1-0528",status:"stable",context:{combinedMax:161e3,outputMax:163840},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1.35,outputPerMTokens:5.4},pricingSource:"models.dev",aliases:["wandb/deepseek-ai/DeepSeek-R1-0528"],releasedAt:"2025-05-28",source:"https://weave-docs.wandb.ai/guides/integrations/inference/",contextSource:"https://weave-docs.wandb.ai/guides/integrations/inference/",verifiedAt:"2025-05-28"},{id:"wandb:deepseek-ai/DeepSeek-V3-0324",provider:"wandb",vendorId:"deepseek-ai/DeepSeek-V3-0324",displayName:"DeepSeek-V3-0324",family:"deepseek-ai/DeepSeek-V3-0324",status:"stable",context:{combinedMax:161e3,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1.14,outputPerMTokens:2.75},pricingSource:"models.dev",aliases:["wandb/deepseek-ai/DeepSeek-V3-0324"],releasedAt:"2025-03-24",source:"https://weave-docs.wandb.ai/guides/integrations/inference/",contextSource:"https://weave-docs.wandb.ai/guides/integrations/inference/",verifiedAt:"2025-03-24"},{id:"wandb:meta-llama/Llama-3.1-8B-Instruct",provider:"wandb",vendorId:"meta-llama/Llama-3.1-8B-Instruct",displayName:"Meta-Llama-3.1-8B-Instruct",family:"meta-llama/Llama-3.1-8B-Instruct",status:"stable",context:{combinedMax:128e3,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.22,outputPerMTokens:.22},pricingSource:"models.dev",aliases:["wandb/meta-llama/Llama-3.1-8B-Instruct"],releasedAt:"2024-07-23",source:"https://weave-docs.wandb.ai/guides/integrations/inference/",contextSource:"https://weave-docs.wandb.ai/guides/integrations/inference/",verifiedAt:"2024-07-23"},{id:"wandb:meta-llama/Llama-3.3-70B-Instruct",provider:"wandb",vendorId:"meta-llama/Llama-3.3-70B-Instruct",displayName:"Llama-3.3-70B-Instruct",family:"meta-llama/Llama-3.3-70B-Instruct",status:"stable",context:{combinedMax:128e3,outputMax:32768},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.71,outputPerMTokens:.71},pricingSource:"models.dev",aliases:["wandb/meta-llama/Llama-3.3-70B-Instruct"],releasedAt:"2024-12-06",source:"https://weave-docs.wandb.ai/guides/integrations/inference/",contextSource:"https://weave-docs.wandb.ai/guides/integrations/inference/",verifiedAt:"2024-12-06"},{id:"wandb:meta-llama/Llama-4-Scout-17B-16E-Instruct",provider:"wandb",vendorId:"meta-llama/Llama-4-Scout-17B-16E-Instruct",displayName:"Llama 4 Scout 17B 16E Instruct",family:"meta-llama/Llama-4-Scout-17B-16E-Instruct",status:"stable",context:{combinedMax:64e3,outputMax:8192},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.17,outputPerMTokens:.66},pricingSource:"models.dev",aliases:["wandb/meta-llama/Llama-4-Scout-17B-16E-Instruct"],releasedAt:"2025-01-31",source:"https://weave-docs.wandb.ai/guides/integrations/inference/",contextSource:"https://weave-docs.wandb.ai/guides/integrations/inference/",verifiedAt:"2025-01-31"},{id:"wandb:microsoft/Phi-4-mini-instruct",provider:"wandb",vendorId:"microsoft/Phi-4-mini-instruct",displayName:"Phi-4-mini-instruct",family:"microsoft/Phi-4-mini-instruct",status:"stable",context:{combinedMax:128e3,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.08,outputPerMTokens:.35},pricingSource:"models.dev",aliases:["wandb/microsoft/Phi-4-mini-instruct"],releasedAt:"2024-12-11",source:"https://weave-docs.wandb.ai/guides/integrations/inference/",contextSource:"https://weave-docs.wandb.ai/guides/integrations/inference/",verifiedAt:"2024-12-11"},{id:"wandb:moonshotai/Kimi-K2-Instruct",provider:"wandb",vendorId:"moonshotai/Kimi-K2-Instruct",displayName:"Kimi-K2-Instruct",family:"moonshotai/Kimi-K2-Instruct",status:"stable",context:{combinedMax:128e3,outputMax:16384},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1.35,outputPerMTokens:4},pricingSource:"models.dev",aliases:["wandb/moonshotai/Kimi-K2-Instruct"],releasedAt:"2025-07-14",source:"https://weave-docs.wandb.ai/guides/integrations/inference/",contextSource:"https://weave-docs.wandb.ai/guides/integrations/inference/",verifiedAt:"2025-07-14"},{id:"wandb:Qwen/Qwen3-235B-A22B-Instruct-2507",provider:"wandb",vendorId:"Qwen/Qwen3-235B-A22B-Instruct-2507",displayName:"Qwen3 235B A22B Instruct 2507",family:"Qwen/Qwen3-235B-A22B-Instruct-2507",status:"stable",context:{combinedMax:262144,outputMax:131072},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.1,outputPerMTokens:.1},pricingSource:"models.dev",aliases:["wandb/Qwen/Qwen3-235B-A22B-Instruct-2507"],releasedAt:"2025-04-28",source:"https://weave-docs.wandb.ai/guides/integrations/inference/",contextSource:"https://weave-docs.wandb.ai/guides/integrations/inference/",verifiedAt:"2025-07-21"},{id:"wandb:Qwen/Qwen3-235B-A22B-Thinking-2507",provider:"wandb",vendorId:"Qwen/Qwen3-235B-A22B-Thinking-2507",displayName:"Qwen3-235B-A22B-Thinking-2507",family:"Qwen/Qwen3-235B-A22B-Thinking-2507",status:"stable",context:{combinedMax:262144,outputMax:131072},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.1,outputPerMTokens:.1},pricingSource:"models.dev",aliases:["wandb/Qwen/Qwen3-235B-A22B-Thinking-2507"],releasedAt:"2025-07-25",source:"https://weave-docs.wandb.ai/guides/integrations/inference/",contextSource:"https://weave-docs.wandb.ai/guides/integrations/inference/",verifiedAt:"2025-07-25"},{id:"wandb:Qwen/Qwen3-Coder-480B-A35B-Instruct",provider:"wandb",vendorId:"Qwen/Qwen3-Coder-480B-A35B-Instruct",displayName:"Qwen3-Coder-480B-A35B-Instruct",family:"Qwen/Qwen3-Coder-480B-A35B-Instruct",status:"stable",context:{combinedMax:262144,outputMax:66536},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:1,outputPerMTokens:1.5},pricingSource:"models.dev",aliases:["wandb/Qwen/Qwen3-Coder-480B-A35B-Instruct"],releasedAt:"2025-07-23",source:"https://weave-docs.wandb.ai/guides/integrations/inference/",contextSource:"https://weave-docs.wandb.ai/guides/integrations/inference/",verifiedAt:"2025-07-23"},{id:"xai:grok-2",provider:"xai",vendorId:"grok-2",displayName:"Grok 2",family:"grok-2",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:2,outputPerMTokens:10},pricingSource:"models.dev",aliases:["xai/grok-2"],releasedAt:"2024-08-20",source:"https://docs.x.ai/docs/models",contextSource:"https://docs.x.ai/docs/models",verifiedAt:"2024-08-20"},{id:"xai:grok-2-1212",provider:"xai",vendorId:"grok-2-1212",displayName:"Grok 2 (1212)",family:"grok-2-1212",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:2,outputPerMTokens:10},pricingSource:"models.dev",aliases:["xai/grok-2-1212"],releasedAt:"2024-12-12",source:"https://docs.x.ai/docs/models",contextSource:"https://docs.x.ai/docs/models",verifiedAt:"2024-12-12"},{id:"xai:grok-2-latest",provider:"xai",vendorId:"grok-2-latest",displayName:"Grok 2 Latest",family:"grok-2-latest",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:2,outputPerMTokens:10},pricingSource:"models.dev",aliases:["xai/grok-2-latest"],releasedAt:"2024-08-20",source:"https://docs.x.ai/docs/models",contextSource:"https://docs.x.ai/docs/models",verifiedAt:"2024-12-12"},{id:"xai:grok-2-vision",provider:"xai",vendorId:"grok-2-vision",displayName:"Grok 2 Vision",family:"grok-2-vision",status:"stable",context:{combinedMax:8192,outputMax:4096},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:2,outputPerMTokens:10},pricingSource:"models.dev",aliases:["xai/grok-2-vision"],releasedAt:"2024-08-20",source:"https://docs.x.ai/docs/models",contextSource:"https://docs.x.ai/docs/models",verifiedAt:"2024-08-20"},{id:"xai:grok-2-vision-1212",provider:"xai",vendorId:"grok-2-vision-1212",displayName:"Grok 2 Vision (1212)",family:"grok-2-vision-1212",status:"stable",context:{combinedMax:8192,outputMax:4096},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:2,outputPerMTokens:10},pricingSource:"models.dev",aliases:["xai/grok-2-vision-1212"],releasedAt:"2024-08-20",source:"https://docs.x.ai/docs/models",contextSource:"https://docs.x.ai/docs/models",verifiedAt:"2024-12-12"},{id:"xai:grok-2-vision-latest",provider:"xai",vendorId:"grok-2-vision-latest",displayName:"Grok 2 Vision Latest",family:"grok-2-vision-latest",status:"stable",context:{combinedMax:8192,outputMax:4096},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:2,outputPerMTokens:10},pricingSource:"models.dev",aliases:["xai/grok-2-vision-latest"],releasedAt:"2024-08-20",source:"https://docs.x.ai/docs/models",contextSource:"https://docs.x.ai/docs/models",verifiedAt:"2024-12-12"},{id:"xai:grok-3",provider:"xai",vendorId:"grok-3",displayName:"Grok 3",family:"grok-3",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["xai/grok-3"],releasedAt:"2025-02-17",source:"https://docs.x.ai/docs/models",contextSource:"https://docs.x.ai/docs/models",verifiedAt:"2025-02-17"},{id:"xai:grok-3-fast",provider:"xai",vendorId:"grok-3-fast",displayName:"Grok 3 Fast",family:"grok-3-fast",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:5,outputPerMTokens:25},pricingSource:"models.dev",aliases:["xai/grok-3-fast"],releasedAt:"2025-02-17",source:"https://docs.x.ai/docs/models",contextSource:"https://docs.x.ai/docs/models",verifiedAt:"2025-02-17"},{id:"xai:grok-3-fast-latest",provider:"xai",vendorId:"grok-3-fast-latest",displayName:"Grok 3 Fast Latest",family:"grok-3-fast-latest",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:5,outputPerMTokens:25},pricingSource:"models.dev",aliases:["xai/grok-3-fast-latest"],releasedAt:"2025-02-17",source:"https://docs.x.ai/docs/models",contextSource:"https://docs.x.ai/docs/models",verifiedAt:"2025-02-17"},{id:"xai:grok-3-latest",provider:"xai",vendorId:"grok-3-latest",displayName:"Grok 3 Latest",family:"grok-3-latest",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["xai/grok-3-latest"],releasedAt:"2025-02-17",source:"https://docs.x.ai/docs/models",contextSource:"https://docs.x.ai/docs/models",verifiedAt:"2025-02-17"},{id:"xai:grok-3-mini",provider:"xai",vendorId:"grok-3-mini",displayName:"Grok 3 Mini",family:"grok-3-mini",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.3,outputPerMTokens:.5},pricingSource:"models.dev",aliases:["xai/grok-3-mini"],releasedAt:"2025-02-17",source:"https://docs.x.ai/docs/models",contextSource:"https://docs.x.ai/docs/models",verifiedAt:"2025-02-17"},{id:"xai:grok-3-mini-fast",provider:"xai",vendorId:"grok-3-mini-fast",displayName:"Grok 3 Mini Fast",family:"grok-3-mini-fast",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.6,outputPerMTokens:4},pricingSource:"models.dev",aliases:["xai/grok-3-mini-fast"],releasedAt:"2025-02-17",source:"https://docs.x.ai/docs/models",contextSource:"https://docs.x.ai/docs/models",verifiedAt:"2025-02-17"},{id:"xai:grok-3-mini-fast-latest",provider:"xai",vendorId:"grok-3-mini-fast-latest",displayName:"Grok 3 Mini Fast Latest",family:"grok-3-mini-fast-latest",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.6,outputPerMTokens:4},pricingSource:"models.dev",aliases:["xai/grok-3-mini-fast-latest"],releasedAt:"2025-02-17",source:"https://docs.x.ai/docs/models",contextSource:"https://docs.x.ai/docs/models",verifiedAt:"2025-02-17"},{id:"xai:grok-3-mini-latest",provider:"xai",vendorId:"grok-3-mini-latest",displayName:"Grok 3 Mini Latest",family:"grok-3-mini-latest",status:"stable",context:{combinedMax:131072,outputMax:8192},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.3,outputPerMTokens:.5},pricingSource:"models.dev",aliases:["xai/grok-3-mini-latest"],releasedAt:"2025-02-17",source:"https://docs.x.ai/docs/models",contextSource:"https://docs.x.ai/docs/models",verifiedAt:"2025-02-17"},{id:"xai:grok-4",provider:"xai",vendorId:"grok-4",displayName:"Grok 4",family:"grok-4",status:"stable",context:{combinedMax:256e3,outputMax:64e3},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:3,outputPerMTokens:15},pricingSource:"models.dev",aliases:["xai/grok-4"],releasedAt:"2025-07-09",source:"https://docs.x.ai/docs/models",contextSource:"https://docs.x.ai/docs/models",verifiedAt:"2025-07-09"},{id:"xai:grok-beta",provider:"xai",vendorId:"grok-beta",displayName:"Grok Beta",family:"grok-beta",status:"stable",context:{combinedMax:131072,outputMax:4096},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:5,outputPerMTokens:15},pricingSource:"models.dev",aliases:["xai/grok-beta"],releasedAt:"2024-11-01",source:"https://docs.x.ai/docs/models",contextSource:"https://docs.x.ai/docs/models",verifiedAt:"2024-11-01"},{id:"xai:grok-vision-beta",provider:"xai",vendorId:"grok-vision-beta",displayName:"Grok Vision Beta",family:"grok-vision-beta",status:"stable",context:{combinedMax:8192,outputMax:4096},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:5,outputPerMTokens:15},pricingSource:"models.dev",aliases:["xai/grok-vision-beta"],releasedAt:"2024-11-01",source:"https://docs.x.ai/docs/models",contextSource:"https://docs.x.ai/docs/models",verifiedAt:"2024-11-01"},{id:"zai:glm-4.5",provider:"zai",vendorId:"glm-4.5",displayName:"GLM-4.5",family:"glm-4.5",status:"stable",context:{combinedMax:131072,outputMax:98304},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.6,outputPerMTokens:2.2},pricingSource:"models.dev",aliases:["zai/glm-4.5"],releasedAt:"2025-07-28",source:"https://docs.z.ai/guides/overview/pricing",contextSource:"https://docs.z.ai/guides/overview/pricing",verifiedAt:"2025-07-28"},{id:"zai:glm-4.5-air",provider:"zai",vendorId:"glm-4.5-air",displayName:"GLM-4.5-Air",family:"glm-4.5-air",status:"stable",context:{combinedMax:131072,outputMax:98304},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.2,outputPerMTokens:1.1},pricingSource:"models.dev",aliases:["zai/glm-4.5-air"],releasedAt:"2025-07-28",source:"https://docs.z.ai/guides/overview/pricing",contextSource:"https://docs.z.ai/guides/overview/pricing",verifiedAt:"2025-07-28"},{id:"zai:glm-4.5-flash",provider:"zai",vendorId:"glm-4.5-flash",displayName:"GLM-4.5-Flash",family:"glm-4.5-flash",status:"stable",context:{combinedMax:131072,outputMax:98304},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["zai/glm-4.5-flash"],releasedAt:"2025-07-28",source:"https://docs.z.ai/guides/overview/pricing",contextSource:"https://docs.z.ai/guides/overview/pricing",verifiedAt:"2025-07-28"},{id:"zai:glm-4.5v",provider:"zai",vendorId:"glm-4.5v",displayName:"GLM 4.5V",family:"glm-4.5v",status:"stable",context:{combinedMax:64e3,outputMax:16384},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.6,outputPerMTokens:1.8},pricingSource:"models.dev",aliases:["zai/glm-4.5v"],releasedAt:"2025-08-11",source:"https://docs.z.ai/guides/overview/pricing",contextSource:"https://docs.z.ai/guides/overview/pricing",verifiedAt:"2025-08-11"},{id:"zhipuai:glm-4.5",provider:"zhipuai",vendorId:"glm-4.5",displayName:"GLM-4.5",family:"glm-4.5",status:"stable",context:{combinedMax:131072,outputMax:98304},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.6,outputPerMTokens:2.2},pricingSource:"models.dev",aliases:["zhipuai/glm-4.5"],releasedAt:"2025-07-28",source:"https://docs.z.ai/guides/overview/pricing",contextSource:"https://docs.z.ai/guides/overview/pricing",verifiedAt:"2025-07-28"},{id:"zhipuai:glm-4.5-air",provider:"zhipuai",vendorId:"glm-4.5-air",displayName:"GLM-4.5-Air",family:"glm-4.5-air",status:"stable",context:{combinedMax:131072,outputMax:98304},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:.2,outputPerMTokens:1.1},pricingSource:"models.dev",aliases:["zhipuai/glm-4.5-air"],releasedAt:"2025-07-28",source:"https://docs.z.ai/guides/overview/pricing",contextSource:"https://docs.z.ai/guides/overview/pricing",verifiedAt:"2025-07-28"},{id:"zhipuai:glm-4.5-flash",provider:"zhipuai",vendorId:"glm-4.5-flash",displayName:"GLM-4.5-Flash",family:"glm-4.5-flash",status:"stable",context:{combinedMax:131072,outputMax:98304},modalities:{textIn:!0,textOut:!0},pricing:{inputPerMTokens:0,outputPerMTokens:0},pricingSource:"models.dev",aliases:["zhipuai/glm-4.5-flash"],releasedAt:"2025-07-28",source:"https://docs.z.ai/guides/overview/pricing",contextSource:"https://docs.z.ai/guides/overview/pricing",verifiedAt:"2025-07-28"},{id:"zhipuai:glm-4.5v",provider:"zhipuai",vendorId:"glm-4.5v",displayName:"GLM 4.5V",family:"glm-4.5v",status:"stable",context:{combinedMax:64e3,outputMax:16384},modalities:{textIn:!0,textOut:!0,imageIn:!0},pricing:{inputPerMTokens:.6,outputPerMTokens:1.8},pricingSource:"models.dev",aliases:["zhipuai/glm-4.5v"],releasedAt:"2025-08-11",source:"https://docs.z.ai/guides/overview/pricing",contextSource:"https://docs.z.ai/guides/overview/pricing",verifiedAt:"2025-08-11"}],ut=(ue.map(e=>e.id),Object.freeze(Object.fromEntries(ue.map(e=>[e.id,e])))),uo=[];for(let e of ue){let t=e.provider+":";for(let o of(e.vendorId&&uo.push([e.vendorId.toLowerCase(),e.id]),e.family&&uo.push([e.family.toLowerCase(),e.id]),e.id.startsWith(t)&&uo.push([e.id.slice(t.length).toLowerCase(),e.id]),e.aliases??[]))uo.push([o.toLowerCase(),e.id])}let ui=new Map;for(let[e,t]of uo)ui.has(e)||ui.set(e,t);let ua=Object.freeze(Object.fromEntries(ui));function ur(e){if(!e)return{input:0,output:0,total:0};if("number"==typeof e.input&&"number"==typeof e.output)return{input:e.input,output:e.output,total:e.total??e.input+e.output};let t=[e.input_tokens,e.prompt_tokens,e.promptTokens,e.inputTokens].filter(e=>"number"==typeof e),o=[e.output_tokens,e.completion_tokens,e.completionTokens,e.outputTokens].filter(e=>"number"==typeof e),i=[e.total_tokens,e.totalTokens,e.totalTokens].filter(e=>"number"==typeof e),a=t[0]??0,r=o[0]??0,s=i[0];return void 0!==s?{input:a,output:r,total:s}:{input:a,output:r,total:a+r}}function us({modelId:e,usage:t}){let o=function(e){let t=e.trim().toLowerCase(),o=ut[t]?t:ua[t];return o?ut[o]:void 0}(e);if(!o?.pricing)return{};let i=ur(t),a=function(e){if(!e)return{input:0,output:0,total:0,cacheReads:0,cacheWrites:0,reasoningTokens:0};if("number"==typeof e.input&&"number"==typeof e.output&&("cacheReads"in e||"cacheWrites"in e||"total"in e))return{input:e.input,output:e.output,total:e.total??e.input+e.output,cacheReads:e.cacheReads,cacheWrites:e.cacheWrites,reasoningTokens:e.reasoningTokens};let t=ur(e),o=[e.cache_read_input_tokens,e.cache_read_tokens,e.prompt_cache_hit_tokens,e.prompt_tokens_details?.cached_tokens,e.promptTokensDetails?.cachedTokens,e.cachedInputTokens].filter(e=>"number"==typeof e),i=[e.cache_creation_input_tokens,e.cache_creation_tokens,e.prompt_cache_write_tokens,e.promptTokensDetails?.cacheCreationTokens].filter(e=>"number"==typeof e),a=o[0],r=i[0],s=[e.reasoning_tokens,e.reasoningTokens].filter(e=>"number"==typeof e)[0];return{...t,cacheReads:a,cacheWrites:r,reasoningTokens:s}}(t),r=void 0!==o.pricing.inputPerMTokens?i.input/1e6*o.pricing.inputPerMTokens:void 0,s=void 0!==o.pricing.outputPerMTokens?i.output/1e6*o.pricing.outputPerMTokens:void 0,n=void 0!==o.pricing.reasoningPerMTokens&&"number"==typeof a.reasoningTokens?a.reasoningTokens/1e6*o.pricing.reasoningPerMTokens:void 0,l=void 0!==o.pricing.cacheReadPerMTokens&&"number"==typeof a.cacheReads?a.cacheReads/1e6*o.pricing.cacheReadPerMTokens:void 0,d=void 0!==o.pricing.cacheWritePerMTokens&&"number"==typeof a.cacheWrites?a.cacheWrites/1e6*o.pricing.cacheWritePerMTokens:void 0,c=[r,s,n,l,d].filter(e=>"number"==typeof e);return{inputUSD:r,outputUSD:s,reasoningUSD:n,cacheReadUSD:l,cacheWriteUSD:d,totalUSD:c.length?c.reduce((e,t)=>e+t,0):void 0}}let un=(0,X.createContext)(null),ul=()=>{let e=(0,X.useContext)(un);if(!e)throw Error("Context components must be used within Context");return e},ud=({usedTokens:e,maxTokens:t,usage:o,modelId:i,...a})=>H.jsx(un.Provider,{value:{usedTokens:e,maxTokens:t,usage:o,modelId:i},children:H.jsx(cD,{closeDelay:0,openDelay:0,...a})}),uc=()=>{let{usedTokens:e,maxTokens:t}=ul(),o=2*Math.PI*10;return(0,H.jsxs)("svg",{"aria-label":"Model context usage",height:"20",role:"img",style:{color:"currentcolor"},viewBox:"0 0 24 24",width:"20",children:[H.jsx("circle",{cx:12,cy:12,fill:"none",opacity:"0.25",r:10,stroke:"currentColor",strokeWidth:2}),H.jsx("circle",{cx:12,cy:12,fill:"none",opacity:"0.7",r:10,stroke:"currentColor",strokeDasharray:`${o} ${o}`,strokeDashoffset:o*(1-e/t),strokeLinecap:"round",strokeWidth:2,style:{transformOrigin:"center",transform:"rotate(-90deg)"}})]})},uu=({children:e,...t})=>{let{usedTokens:o,maxTokens:i}=ul(),a=new Intl.NumberFormat("en-US",{style:"percent",maximumFractionDigits:1}).format(o/i);return H.jsx(cZ,{asChild:!0,children:e??(0,H.jsxs)(dJ.z,{type:"button",variant:"ghost",...t,children:[H.jsx("span",{className:"font-medium text-muted-foreground",children:a}),H.jsx(uc,{})]})})},up=({className:e,...t})=>H.jsx(cW,{className:(0,dx.cn)("min-w-[240px] divide-y overflow-hidden p-0",e),...t}),um=({children:e,className:t,...o})=>{let{usedTokens:i,maxTokens:a}=ul(),r=i/a,s=new Intl.NumberFormat("en-US",{style:"percent",maximumFractionDigits:1}).format(r),n=new Intl.NumberFormat("en-US",{notation:"compact"}).format(i),l=new Intl.NumberFormat("en-US",{notation:"compact"}).format(a);return H.jsx("div",{className:(0,dx.cn)("w-full space-y-2 p-3",t),...o,children:e??(0,H.jsxs)(H.Fragment,{children:[(0,H.jsxs)("div",{className:"flex items-center justify-between gap-3 text-xs",children:[H.jsx("p",{children:s}),(0,H.jsxs)("p",{className:"font-mono text-muted-foreground",children:[n," / ",l]})]}),H.jsx("div",{className:"space-y-2",children:H.jsx(c9,{className:"bg-muted",value:100*r})})]})})},ug=({children:e,className:t,...o})=>H.jsx("div",{className:(0,dx.cn)("w-full p-3",t),...o,children:e}),uh=({className:e,children:t,...o})=>{let{usage:i,modelId:a}=ul(),r=i?.inputTokens??0;if(t)return t;if(!r)return null;let s=a?us({modelId:a,usage:{input:r,output:0}}).totalUSD:void 0,n=new Intl.NumberFormat("en-US",{style:"currency",currency:"USD"}).format(s??0);return(0,H.jsxs)("div",{className:(0,dx.cn)("flex items-center justify-between text-xs",e),...o,children:[H.jsx("span",{className:"text-muted-foreground",children:"Input"}),H.jsx(ub,{costText:n,tokens:r})]})},uv=({className:e,children:t,...o})=>{let{usage:i,modelId:a}=ul(),r=i?.outputTokens??0;if(t)return t;if(!r)return null;let s=a?us({modelId:a,usage:{input:0,output:r}}).totalUSD:void 0,n=new Intl.NumberFormat("en-US",{style:"currency",currency:"USD"}).format(s??0);return(0,H.jsxs)("div",{className:(0,dx.cn)("flex items-center justify-between text-xs",e),...o,children:[H.jsx("span",{className:"text-muted-foreground",children:"Output"}),H.jsx(ub,{costText:n,tokens:r})]})},uf=({className:e,children:t,...o})=>{let{usage:i,modelId:a}=ul(),r=i?.reasoningTokens??0;if(t)return t;if(!r)return null;let s=a?us({modelId:a,usage:{reasoningTokens:r}}).totalUSD:void 0,n=new Intl.NumberFormat("en-US",{style:"currency",currency:"USD"}).format(s??0);return(0,H.jsxs)("div",{className:(0,dx.cn)("flex items-center justify-between text-xs",e),...o,children:[H.jsx("span",{className:"text-muted-foreground",children:"Reasoning"}),H.jsx(ub,{costText:n,tokens:r})]})},ux=({className:e,children:t,...o})=>{let{usage:i,modelId:a}=ul(),r=i?.cachedInputTokens??0;if(t)return t;if(!r)return null;let s=a?us({modelId:a,usage:{cacheReads:r,input:0,output:0}}).totalUSD:void 0,n=new Intl.NumberFormat("en-US",{style:"currency",currency:"USD"}).format(s??0);return(0,H.jsxs)("div",{className:(0,dx.cn)("flex items-center justify-between text-xs",e),...o,children:[H.jsx("span",{className:"text-muted-foreground",children:"Cache"}),H.jsx(ub,{costText:n,tokens:r})]})},ub=({tokens:e,costText:t})=>(0,H.jsxs)("span",{children:[void 0===e?"—":new Intl.NumberFormat("en-US",{notation:"compact"}).format(e),t?(0,H.jsxs)("span",{className:"ml-2 text-muted-foreground",children:["• ",t]}):null]});var uk=o(53982),uy=o(48998),uM=o(54659),uI=o(91470),uw=o(67048),uS=o(941),uA=o(51602);let uT=({className:e,...t})=>H.jsx(d1.zF,{className:(0,dx.cn)("not-prose mb-4 w-full rounded-md border",e),...t}),uP=e=>{let t={"input-streaming":H.jsx(uk.Z,{className:"size-4 mr-2"}),"input-available":H.jsx(uy.Z,{className:"size-4 animate-pulse mr-2"}),"output-available":H.jsx(uM.Z,{className:"size-4 text-green-600 mr-2"}),"output-error":H.jsx(uI.Z,{className:"size-4 text-red-600 mr-2"})};return(0,H.jsxs)(d3.C,{className:"rounded-full text-xs",variant:"secondary",children:[t[e],{"input-streaming":"Pending","input-available":"Running","output-available":"Completed","output-error":"Error"}[e]]})},uN=({className:e,type:t,state:o,...i})=>(0,H.jsxs)(d1.wy,{className:(0,dx.cn)("flex w-full items-center justify-between gap-4 p-3",e),...i,children:[(0,H.jsxs)("div",{className:"flex items-center gap-2",children:[H.jsx(uw.Z,{className:"size-4 text-muted-foreground"}),H.jsx("span",{className:"font-medium text-sm",children:t}),uP(o)]}),H.jsx(uS.Z,{className:"size-4 text-muted-foreground transition-transform group-data-[state=open]:rotate-180"})]}),uO=({className:e,...t})=>H.jsx(d1.Fw,{className:(0,dx.cn)("data-[state=closed]:fade-out-0 data-[state=closed]:slide-out-to-top-2 data-[state=open]:slide-in-from-top-2 text-popover-foreground outline-none data-[state=closed]:animate-out data-[state=open]:animate-in",e),...t}),u_=({className:e,input:t,...o})=>(0,H.jsxs)("div",{className:(0,dx.cn)("space-y-2 overflow-hidden p-4",e),...o,children:[H.jsx("h4",{className:"font-medium text-muted-foreground text-xs uppercase tracking-wide",children:"Parameters"}),H.jsx("div",{className:"rounded-md bg-muted/50",children:H.jsx(uA.d,{code:JSON.stringify(t,null,2),language:"json"})})]}),uz=({className:e,output:t,errorText:o,...i})=>t||o?(0,H.jsxs)("div",{className:(0,dx.cn)("space-y-2 p-4",e),...i,children:[H.jsx("h4",{className:"font-medium text-muted-foreground text-xs tracking-wide",children:o?"Error":"Result"}),(0,H.jsxs)("div",{className:(0,dx.cn)("overflow-x-auto rounded-md text-xs [&_table]:w-full p-5",o?"bg-destructive/10 text-destructive":"bg-muted/50 text-foreground"),children:[o&&H.jsx("div",{children:o}),t&&H.jsx("div",{children:t})]})]}):H.jsx(H.Fragment,{});var uE=o(65304),uq=o(87599),uB=o(36931),uj=o(14331),uC=o(3574),uR=o(2424),uL=o(62288),uD=o(54432),u$=o(88307),uZ=o(59593),uF=o(12714),uQ=o(52227),uG=o(3151),uU=o(65685);function uV({open:e,onOpenChange:t,onSelectPrompt:o,agentId:i}){let[a,r]=(0,X.useState)(""),s=[];a&&s.push({or:[{name:{contains:a}},{description:{contains:a}},{content:{contains:a}}]});let{data:n,loading:l}=(0,uQ.Sh)({page:1,limit:50,filters:s,sort:{field:"favorite_count",direction:"DESC"}}),d=n?.prompt_libraryPagination?.items||[],c=i?d.filter(e=>e.assigned_agents&&e.assigned_agents.includes(i)):[],u=i?d.filter(e=>!e.assigned_agents||!e.assigned_agents.includes(i)):d,p=e=>{o(e),t(!1),r("")};return H.jsx(uL.Vq,{open:e,onOpenChange:t,children:(0,H.jsxs)(uL.cZ,{className:"max-w-2xl max-h-[80vh]",children:[(0,H.jsxs)(uL.fK,{children:[H.jsx(uL.$N,{children:"Select a Prompt"}),H.jsx(uL.Be,{children:"Choose a prompt template to insert into your message"})]}),(0,H.jsxs)("div",{className:"relative",children:[H.jsx(u$.Z,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground"}),H.jsx(uD.I,{placeholder:"Search prompts...",value:a,onChange:e=>r(e.target.value),className:"pl-10"})]}),H.jsx(uU.x,{className:"h-[400px] pr-4",children:l?H.jsx("div",{className:"space-y-3",children:[1,2,3].map(e=>H.jsx(uE.O,{className:"h-24 w-full"},e))}):(0,H.jsxs)("div",{className:"space-y-4",children:[c.length>0&&(0,H.jsxs)("div",{children:[(0,H.jsxs)("div",{className:"flex items-center gap-2 mb-2",children:[H.jsx(uZ.Z,{className:"h-4 w-4 text-yellow-500"}),H.jsx("h3",{className:"text-sm font-medium",children:"Recommended for this agent"})]}),H.jsx("div",{className:"space-y-2",children:c.map(e=>H.jsx(uK,{prompt:e,onSelect:p},e.id))})]}),u.length>0&&(0,H.jsxs)("div",{children:[c.length>0&&H.jsx("h3",{className:"text-sm font-medium mb-2",children:"All Prompts"}),H.jsx("div",{className:"space-y-2",children:u.map(e=>H.jsx(uK,{prompt:e,onSelect:p},e.id))})]}),0===d.length&&!l&&(0,H.jsxs)("div",{className:"flex flex-col items-center justify-center py-12 text-center",children:[H.jsx(dG.Z,{className:"h-12 w-12 text-muted-foreground mb-3"}),H.jsx("h3",{className:"text-lg font-medium",children:"No prompts found"}),H.jsx("p",{className:"text-sm text-muted-foreground",children:a?"Try a different search term":"Create your first prompt in the Prompt Library"})]})]})})]})})}function uK({prompt:e,onSelect:t}){let o=(0,uG.H)(e.content);return(0,H.jsxs)("button",{onClick:()=>t(e),className:"w-full text-left p-3 rounded-lg border hover:bg-accent transition-colors",children:[(0,H.jsxs)("div",{className:"flex items-start justify-between gap-2 mb-1",children:[H.jsx("h4",{className:"font-medium text-sm",children:e.name}),(0,H.jsxs)("div",{className:"flex items-center gap-2 text-xs text-muted-foreground flex-shrink-0",children:[(0,H.jsxs)("div",{className:"flex items-center gap-0.5",children:[H.jsx(uZ.Z,{className:"h-3 w-3"}),H.jsx("span",{children:e.favorite_count||0})]}),(0,H.jsxs)("div",{className:"flex items-center gap-0.5",children:[H.jsx(uF.Z,{className:"h-3 w-3"}),H.jsx("span",{children:e.usage_count||0})]})]})]}),e.description&&H.jsx("p",{className:"text-xs text-muted-foreground line-clamp-2 mb-2",children:e.description}),(0,H.jsxs)("div",{className:"flex flex-wrap gap-1",children:[o.length>0&&(0,H.jsxs)(d3.C,{variant:"outline",className:"text-xs",children:[o.length," variable",1!==o.length?"s":""]}),e.tags?.slice(0,2).map(e=>H.jsx(d3.C,{variant:"secondary",className:"text-xs",children:e},e)),e.tags&&e.tags.length>2&&(0,H.jsxs)(d3.C,{variant:"secondary",className:"text-xs",children:["+",e.tags.length-2]})]})]})}var uW=o(31048);function uJ(e){return e?e.split("_").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" "):""}function uY({open:e,onOpenChange:t,variables:o,promptName:i,onSubmit:a}){let[r,s]=(0,X.useState)({}),n=(e,t)=>{s(o=>({...o,[e]:t}))},l=o.every(e=>r[e]?.trim());return H.jsx(uL.Vq,{open:e,onOpenChange:t,children:(0,H.jsxs)(uL.cZ,{className:"max-w-md",children:[(0,H.jsxs)(uL.fK,{children:[H.jsx(uL.$N,{children:"Fill in Variables"}),(0,H.jsxs)(uL.Be,{children:['Complete the following fields for "',i,'"']})]}),H.jsx("div",{className:"space-y-4 py-4",children:o.map(e=>(0,H.jsxs)("div",{className:"space-y-2",children:[H.jsx(uW._,{htmlFor:e,children:uJ(e)}),H.jsx(uD.I,{id:e,placeholder:`Enter ${uJ(e).toLowerCase()}...`,value:r[e]||"",onChange:t=>n(e,t.target.value)})]},e))}),(0,H.jsxs)(uL.cN,{children:[H.jsx(dJ.z,{variant:"outline",onClick:()=>t(!1),children:"Cancel"}),H.jsx(dJ.z,{onClick:()=>{a(r),s({})},disabled:!l,children:"Insert Prompt"})]})]})})}var uH=o(90434);function uX({session:e,agent:t,initialPromptId:o}){let[i,a]=(0,X.useState)(null),r=X.useContext(dQ.E);(0,d0.d)();let{theme:s}=(0,uC.F)(),[n,l]=(0,X.useState)(null),[d,c]=(0,X.useState)(null),{user:u}=(0,X.useContext)(dv.S),[p,m]=(0,X.useState)(null),[g,h]=(0,X.useState)(!1),[v,f]=(0,X.useState)(""),[x,b]=(0,X.useState)([]),k=X.useRef(null),{toast:y}=(0,dK.pm)(),[M,I]=(0,X.useState)(!1),[w,S]=(0,X.useState)(!1),[A,T]=(0,X.useState)(null),[P]=(0,uQ.VR)(),[N,O]=(0,X.useState)({rights_mode:e?.rights_mode||"private",users:e?.RBAC?.users||[],roles:e?.RBAC?.roles||[]}),_=(0,ei.aM)(dZ.L5,{variables:{id:e.created_by},skip:!e.created_by}),z=(0,ei.aM)(dZ.jL,{variables:{id:e.project},skip:!e.project}),{data:E}=(0,ei.aM)(dZ.X0,{variables:{id:o},skip:!o}),[q,B]=(0,X.useState)(!1),[j,C]=(0,ea.D)(dZ.r1),[R,L]=(0,X.useState)({totalTokens:0,reasoningTokens:0,inputTokens:0,outputTokens:0,cachedInputTokens:0});(0,ei.aM)(dZ.N,{returnPartialData:!0,fetchPolicy:"network-only",nextFetchPolicy:"network-only",variables:{page:1,limit:50,filters:{session:{eq:e.id}}},onCompleted:e=>{e?.agent_messagesPagination&&G(e?.agent_messagesPagination.items.map(e=>JSON.parse(e.content)))}});let{messages:D,sendMessage:$,status:Z,stop:F,regenerate:Q,setMessages:G,addToolResult:U}=function({experimental_throttle:e,resume:t=!1,...o}={}){let i=(0,X.useRef)("chat"in o?o.chat:new dh(o));("chat"in o&&o.chat!==i.current||"id"in o&&i.current.id!==o.id)&&(i.current="chat"in o?o.chat:new dh(o));let a="id"in o?o.id:null,r=(0,X.useCallback)(t=>i.current["~registerMessagesCallback"](t,e),[e,a]),s=(0,X.useSyncExternalStore)(r,()=>i.current.messages,()=>i.current.messages),n=(0,X.useSyncExternalStore)(i.current["~registerStatusCallback"],()=>i.current.status,()=>i.current.status),l=(0,X.useSyncExternalStore)(i.current["~registerErrorCallback"],()=>i.current.error,()=>i.current.error),d=(0,X.useCallback)(e=>{"function"==typeof e&&(e=e(i.current.messages)),i.current.messages=e},[i]);return(0,X.useEffect)(()=>{t&&i.current.resumeStream()},[t,i]),{id:i.current.id,messages:s,setMessages:d,sendMessage:i.current.sendMessage,regenerate:i.current.regenerate,clearError:i.current.clearError,stop:i.current.stop,error:l,resumeStream:i.current.resumeStream,status:n,addToolResult:i.current.addToolResult}}({sendAutomaticallyWhen:sL,experimental_throttle:50,async onToolCall({toolCall:e}){if(!e.dynamic&&"getLocation"===e.toolName){let t=["New York","Los Angeles","Chicago","San Francisco"];U({tool:"confirm-tool-call",toolCallId:e.toolCallId,output:t[Math.floor(Math.random()*t.length)]})}},onError:e=>{console.log("error!!",e?.message);try{let{message:t}=JSON.parse(e?.message);a(t)}catch(t){a(e.message)}},transport:new sR({api:`${r?.backend}${t.slug}/${t.id}`,prepareSendMessagesRequest:async({messages:t,id:o,body:i})=>{let a=await (0,dF.LP)();if(!a)throw Error("No valid session token available.");return{body:{...i,message:t[t.length-1],id:o,session:e.id},headers:{User:u.id,Session:e.id,Authorization:`Bearer ${a}`,Stream:"true"}}}})}),V=((0,X.useMemo)(()=>{let e=D?.filter(e=>"user"===e.role)||[],t=D?.filter(e=>"assistant"===e.role)||[];return e.length>=1&&t.length>=1},[D]),e=>{f(t=>t?`${t}
|
|
46
46
|
|
|
47
|
-
${e}`:e),k.current?.focus()}),K=async(e,t)=>{e.preventDefault(),$({text:v,files:n||[]},{body:{disabledTools:x}}),f(""),l(null),c(null)},W=e=>{b(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},J=(0,d9.I)(e,u);return H.jsx("div",{className:"flex flex-col w-full mx-auto relative size-full",children:H.jsx("div",{className:"mx-auto relative size-full",children:(0,H.jsxs)("div",{className:"flex h-full w-full max-h-[calc(100vh)] overflow-y-auto overflow-x-hidden",children:[(0,H.jsxs)("div",{className:"flex flex-col flex-1 pb-6",children:[(0,H.jsxs)(d5.ri,{className:"overflow-y-hidden",children:[t.maxContextLength?H.jsx(dG.pn,{children:(0,H.jsxs)(dG.u,{children:[H.jsx(dG.aJ,{asChild:!0,children:(0,H.jsxs)("div",{className:"absolute w-full top-0",children:[H.jsx(ui,{className:"w-full rounded-none",value:R.totalTokens/t.maxContextLength*100}),(0,H.jsxs)("div",{className:"justify-between flex felx-row",children:[H.jsx("div",{}),(0,H.jsxs)(um,{maxTokens:t.maxContextLength||0,usedTokens:R.totalTokens,usage:{inputTokens:R.inputTokens,outputTokens:R.outputTokens,totalTokens:R.totalTokens,cachedInputTokens:R.cachedInputTokens,reasoningTokens:R.reasoningTokens},children:[H.jsx(uh,{}),(0,H.jsxs)(uv,{children:[H.jsx(uf,{}),(0,H.jsxs)(ux,{children:[H.jsx(ub,{}),H.jsx(uk,{}),H.jsx(uy,{}),H.jsx(uM,{})]})]})]})]})]})}),H.jsx(dG._v,{children:(0,H.jsxs)("p",{children:[Intl.NumberFormat("en-US").format(R.totalTokens)," / ",Intl.NumberFormat("en-US").format(t.maxContextLength)," tokens in the context window used."]})})]})}):null,D?.length===0?H.jsx("div",{className:"size-full flex justify-center items-center",children:(0,H.jsxs)("div",{className:"flex flex-col gap-4 items-center max-w-2xl w-full px-4 my-auto",children:[H.jsx(uZ.default,{alt:"Logo",width:120,height:120,className:"h-30 w-40 object-contain"}),H.jsx("p",{className:"text-center text-lg text-muted-foreground",children:"How can I help you today?"}),H.jsx(uD.Z,{agent:t,status:Z,className:"w-80"})]})}):null,(0,H.jsxs)(d5.iG,{className:"px-6",children:[D?.length>0&&H.jsx(uR.K,{messages:D,config:{marginTopFirstMessage:"mt-12"},status:Z,onRegenerate:Q,onAddToolResult:U,UntypedToolPartComponent:u3,addToContext:e=>{c([...d||[],e])},writeAccess:J}),"streaming"===Z?H.jsx(dw,{}):null]})]}),!J&&H.jsx("div",{className:"px-6 mx-auto mt-3",children:H.jsx(d6.C,{variant:"outline",children:"Read access only"})}),i&&H.jsx("div",{className:"mx-5",children:(0,H.jsxs)(eo.bZ,{className:"mb-3",variant:"destructive",children:[H.jsx(dy.LPM,{className:"size-4"}),H.jsx(eo.Cd,{children:"Error"}),H.jsx(eo.X,{children:i})]})}),J&&(0,H.jsxs)("form",{onSubmit:K,className:"px-6 border-input border rounded flex mx-5 p-5 flex-col gap-2",children:[(0,H.jsxs)("div",{className:"items-center flex relative gap-2 w-full",children:[r?.fileUploads?.s3endpoint&&H.jsx(ce.ZP,{id:`chat-${e.id}`,selectionLimit:10,allowedFileTypes:[...t.capabilities?.audio||[],...t.capabilities?.video||[],...t.capabilities?.files||[],...t.capabilities?.images||[]],dependencies:[],onConfirm:e=>{c(e)}}),H.jsx(dG.pn,{children:(0,H.jsxs)(dG.u,{children:[H.jsx(dG.aJ,{asChild:!0,children:H.jsx(d0.z,{type:"button",variant:"outline",size:"icon",className:"shrink-0",onClick:()=>I(!0),children:H.jsx(dW.Z,{className:"h-5 w-5 text-muted-foreground"})})}),H.jsx(dG._v,{children:H.jsx("p",{children:"Insert prompt from library"})})]})}),H.jsx(dQ,{autoComplete:"off",autoFocus:!0,minRows:1,value:v,ref:k,onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),K(e))},onChange:e=>f(e.target.value),name:"message",placeholder:"Ask me anything...",className:"max-h-40 px-3 py-2 text-sm shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 w-full items-center h-28 resize-none overflow-hidden dark:bg-card/35"}),"streaming"!==Z?H.jsx(d0.z,{className:"shrink-0",variant:"secondary",size:"icon",disabled:"submitted"===Z||!v?.trim(),children:H.jsx(dJ,{className:" size-6 text-muted-foreground"})}):H.jsx(d0.z,{className:"shrink-0",variant:"secondary",size:"icon",onClick:F,children:H.jsx(dy.wNq,{className:"size-6 text-muted-foreground"})})]}),H.jsx("div",{className:"grid grid-cols-3 sm:grid-cols-4 gap-3",children:d?.map(e=>H.jsx(ce.jU,{s3Key:e,disabled:!0,active:!1,onRemove:()=>{c(d?.filter(t=>t!==e))}}))})]}),H.jsx(dX.x,{isOpen:g,onClose:()=>h(!1),messages:D||[],sessionTitle:e.title}),H.jsx(uY,{open:M,onOpenChange:I,onSelectPrompt:e=>{(0,uW.H)(e.content).length>0?(T(e),S(!0)):(V(e.content),P({variables:{id:e.id,usage_count:(e.usage_count||0)+1}}))},agentId:t.id}),A&&H.jsx(u2,{open:w,onOpenChange:S,variables:(0,uW.H)(A.content),promptName:A.name,onSubmit:e=>{A&&(V(function(e,t){if(!e)return"";if(!t||0===Object.keys(t).length)return e;let o=e;for(let[e,i]of Object.entries(t)){let t=e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),a=RegExp(`\\{\\{${t}\\}\\}`,"g");o=o.replace(a,i||"")}return o}(A.content,e)),P({variables:{id:A.id,usage_count:(A.usage_count||0)+1}}),S(!1),T(null))}})]}),J&&(0,H.jsxs)("div",{className:"w-80 border-l bg-muted/20 p-4 space-y-4",children:[D?.length>0&&H.jsx("div",{children:H.jsx(uD.Z,{agent:t,status:Z,className:"w-80"})}),H.jsx("div",{children:H.jsx("p",{className:"text-sm font-medium text-center",children:t.name})}),t.description&&H.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:t.description}),H.jsx("hr",{className:"my-2"}),H.jsx("div",{className:"mt-1",children:(0,H.jsxs)("div",{className:"border rounded",children:[_.loading&&(0,H.jsxs)("div",{className:"flex flex-row justify-between p-3",children:[H.jsx("p",{className:"text-sm font-medium",children:"Session created by"}),H.jsx(d8.g,{className:"ml-2"})]}),_.data?.userById&&!_.loading&&(0,H.jsxs)("div",{className:"flex flex-row justify-between p-3",children:[H.jsx("p",{className:"text-sm font-medium",children:"Session created by"}),H.jsx("div",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:H.jsx("p",{className:"text-sm font-medium capitalize",children:_.data.userById.name})})]})]})}),e.project&&H.jsx("div",{className:"mt-1",children:(0,H.jsxs)("div",{className:"border rounded",children:[z.loading&&(0,H.jsxs)("div",{className:"flex flex-row justify-between p-3",children:[H.jsx("p",{className:"text-sm font-medium",children:"This chat is part of a project:"}),H.jsx(d8.g,{className:"ml-2"})]}),z.data?.projectById&&!z.loading&&(0,H.jsxs)("div",{className:"flex flex-col p-3 gap-2",children:[H.jsx("p",{className:"text-sm font-medium",children:"Project"}),H.jsx(u1.default,{href:`/projects/${e.project}`,className:"text-sm text-primary hover:underline",children:z.data.projectById.name}),z.data.projectById.description&&H.jsx("p",{className:"text-xs text-muted-foreground",children:z.data.projectById.description})]})]})}),(0,H.jsxs)("div",{children:[H.jsx("p",{className:"text-xs font-medium text-muted-foreground pt-2",children:"You can disable tools for individual messages in this session by clicking the switch:"}),H.jsx(dG.pn,{children:H.jsx("div",{className:"space-y-1 pt-2",children:t.tools&&t.tools.length>0?t.tools.map(e=>{let t=!x.includes(e.id);return(0,H.jsxs)(dG.u,{children:[H.jsx(dG.aJ,{asChild:!0,children:(0,H.jsxs)("div",{className:"p-2 rounded-md border text-xs bg-background flex items-center justify-between",children:[H.jsx("p",{className:"font-medium flex items-center gap-2",children:e.name}),H.jsx(d2.r,{checked:t,onCheckedChange:()=>W(e.id)})]})}),H.jsx(dG._v,{children:H.jsx("p",{className:"max-w-[200px] text-wrap",children:e.description})})]},e.name)}):H.jsx("p",{className:"text-xs text-muted-foreground",children:"No tools enabled."})})})]}),H.jsx("div",{className:"mt-1",children:(0,H.jsxs)(d7.zF,{className:"border rounded",children:[H.jsx(d1.Ol,{className:"px-3 py-1",children:(0,H.jsxs)("div",{className:"flex items-center justify-between",children:[H.jsx("div",{className:"flex flex-col",children:(0,H.jsxs)("p",{className:"text-sm font-medium",children:["Access control (",e.rights_mode,")"]})}),H.jsx(d7.wy,{asChild:!0,children:(0,H.jsxs)(d0.z,{variant:"ghost",size:"icon",className:"size-8",children:[H.jsx(dY.Z,{className:"size-4"}),H.jsx("span",{className:"sr-only",children:"Toggle"})]})})]})}),H.jsx(d7.Fw,{children:(0,H.jsxs)(d1.aY,{className:"space-y-4 p-3",children:[H.jsx(d4.P,{allowedModes:["private","users","roles"],initialRightsMode:e.rights_mode,initialUsers:e.RBAC?.users,initialRoles:e.RBAC?.roles,onChange:(e,t,o)=>{O({rights_mode:e,users:t,roles:o})}}),(0,H.jsxs)(d0.z,{disabled:C.loading,onClick:()=>{j({variables:{id:e.id,rights_mode:N.rights_mode,RBAC:{users:N.users,roles:N.roles}}})},children:["Save access rights ",C.loading&&H.jsx(d8.g,{className:"ml-2"})," "]})]})})]})})]})]})})})}let u3=({untypedToolPart:e,callId:t,addToContext:o})=>{let i=e.output;console.log("output",i);let a=e.type?.replace(/ /g,"-");return a=a?.replace(/tool-/g,""),a=a?.replace(/_/g," "),a=a?.charAt(0).toUpperCase()+a?.slice(1),(0,H.jsxs)(u_,{className:"mt-3",defaultOpen:!1,children:[H.jsx(uE,{className:"capitalize",type:a,state:e.state}),(0,H.jsxs)(uq,{children:[H.jsx(uB,{input:e.input}),H.jsx(uj,{output:i?H.jsx(uL.H,{children:"string"==typeof i?i:JSON.stringify(i,null,2)}):!e.errorText&&H.jsx(uC.O,{className:"h-4 w-full"}),errorText:e.errorText})]})]},t)},u4="force-dynamic";function u7({params:e}){let t=(0,et.useSearchParams)().get("promptId"),{data:o,loading:i,error:a}=(0,ei.aM)(dU.lk,{returnPartialData:!0,fetchPolicy:"network-only",nextFetchPolicy:"network-only",variables:{id:e.session}}),{data:r,loading:s,error:n}=(0,ei.aM)(dU.as,{skip:!o?.agent_sessionById,variables:{id:e.agent,project:o?.agent_sessionById?.project||void 0}});return i||s?H.jsx("div",{children:H.jsx(uC.O,{className:"w-full h-full"})}):a||n?(0,H.jsxs)(eo.bZ,{variant:"destructive",children:[H.jsx(dy.LPM,{className:"size-4"}),H.jsx(eo.Cd,{children:"Error"}),(0,H.jsxs)(eo.X,{children:["Error loading agent ",n?.message||a?.message,"."]})]}):r?.agentById&&o?.agent_sessionById?H.jsx(u5,{session:o?.agent_sessionById,agent:r.agentById,initialPromptId:t||void 0}):(0,H.jsxs)(eo.bZ,{variant:"destructive",children:[H.jsx(dy.LPM,{className:"size-4"}),H.jsx(eo.Cd,{children:"Error"}),H.jsx(eo.X,{children:"Agent or session not found."})]})}},30574:(e,t,o)=>{"use strict";o.r(t),o.d(t,{default:()=>a});var i=o(10326);function a({children:e,params:t}){return i.jsx(i.Fragment,{children:e})}o(17577)},14331:(e,t,o)=>{"use strict";o.d(t,{Z:()=>l});var i=o(10326),a=o(19245),r=o(20108),s=o(77961);let n=({agent:e,status:t,className:o})=>{let{data:n}=(0,r.a)({queryKey:["defaultAnimation","idle"],queryFn:async()=>(await fetch("/agent-idle.json")).json(),staleTime:36e5,enabled:!e.animation_idle}),{data:l}=(0,r.a)({queryKey:["defaultAnimation","responding"],queryFn:async()=>(await fetch("/agent-responding.json")).json(),staleTime:36e5,enabled:!e.animation_responding}),{data:d}=(0,r.a)({queryKey:["customAnimation",e.animation_idle],queryFn:async()=>{if(!e.animation_idle)return null;let t=await (0,s.NF)(e.animation_idle);return(await fetch(t)).json()},enabled:!!e.animation_idle,staleTime:3e5}),{data:c}=(0,r.a)({queryKey:["customAnimation",e.animation_responding],queryFn:async()=>{if(!e.animation_responding)return null;let t=await (0,s.NF)(e.animation_responding);return(await fetch(t)).json()},enabled:!!e.animation_responding,staleTime:3e5}),{View:u}=(0,a.kJ)((()=>{switch(t){case"submitted":case"ready":case"error":default:return{animationData:d||n,loop:!0,autoplay:!0};case"streaming":return{animationData:c||l,loop:!0,autoplay:!0}}})());return i.jsx(i.Fragment,{children:i.jsx("div",{className:"",children:i.jsx("div",{className:o,children:u})})})},l=({agent:e,status:t,className:o})=>i.jsx(n,{className:o,agent:e,status:t})},33261:(e,t,o)=>{"use strict";o.d(t,{r:()=>n});var i=o(10326),a=o(41959),r=o(17577),s=o(77863);let n=r.forwardRef(({className:e,...t},o)=>i.jsx(a.fC,{className:(0,s.cn)("peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input",e),...t,ref:o,children:i.jsx(a.bU,{className:(0,s.cn)("pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0")})}));n.displayName=a.fC.displayName},52227:(e,t,o)=>{"use strict";o.d(t,{EE:()=>n,Lq:()=>m,Sh:()=>s,VR:()=>c,er:()=>l,iJ:()=>d});var i=o(39167),a=o(18753),r=o(42270);let s=e=>(0,i.aM)(r.xx,{variables:{page:e?.page??1,limit:e?.limit??20,filters:e?.filters??[],sort:e?.sort??{field:"updatedAt",direction:"DESC"}}}),n=()=>(0,a.D)(r.Iv,{refetchQueries:[{query:r.xx,variables:{page:1,limit:20}}]}),l=()=>(0,a.D)(r.jA),d=()=>(0,a.D)(r.Ll,{refetchQueries:[{query:r.xx,variables:{page:1,limit:20}}]}),c=()=>(0,a.D)(r.re),u=()=>(0,a.D)(r.Nl),p=()=>(0,a.D)(r.m8),m=()=>{let[e]=u(),[t]=p(),[o]=(0,a.D)(r.UK);return{toggleFavorite:async(i,a,r,s,n)=>{r&&n?(await t({variables:{id:n}}),await o({variables:{id:i,favorite_count:Math.max(0,s-1)}})):(await e({variables:{user_id:a,prompt_id:i}}),await o({variables:{id:i,favorite_count:s+1}}))}}}},3151:(e,t,o)=>{"use strict";function i(e){if(!e)return[];let t=e.matchAll(/\{\{([a-zA-Z0-9_]+)\}\}/g),o=new Set;for(let e of Array.from(t))o.add(e[1]);return Array.from(o).sort()}o.d(t,{H:()=>i})},68301:e=>{e.exports=function(e,t){let o;if("function"!=typeof e)throw TypeError(`Expected the first argument to be a \`function\`, got \`${typeof e}\`.`);let i=0;return function(...a){clearTimeout(o);let r=Date.now(),s=t-(r-i);s<=0?(i=r,e.apply(this,a)):o=setTimeout(()=>{i=Date.now(),e.apply(this,a)},s)}}},40281:(e,t,o)=>{"use strict";o.r(t),o.d(t,{default:()=>r,dynamic:()=>a});var i=o(68570);let a=(0,i.createProxy)(String.raw`/home/runner/work/exulu-frontend/exulu-frontend/app/(application)/chat/[agent]/[session]/page.tsx#dynamic`),r=(0,i.createProxy)(String.raw`/home/runner/work/exulu-frontend/exulu-frontend/app/(application)/chat/[agent]/[session]/page.tsx#default`)},25436:(e,t,o)=>{"use strict";o.r(t),o.d(t,{default:()=>i});let i=(0,o(68570).createProxy)(String.raw`/home/runner/work/exulu-frontend/exulu-frontend/app/(application)/chat/[agent]/layout.tsx#default`)}};var t=require("../../../../../webpack-runtime.js");t.C(e);var o=e=>t(t.s=e),i=t.X(0,[9276,3543,9049,590,814,931,6812,7344,1729,3738,5237,8212,4552,108,9874,3702,6226,1025,8315,1051,7944,2270,5600,5974,510,3575,3503,3434],()=>o(91223));module.exports=i})();
|
|
47
|
+
${e}`:e),k.current?.focus()}),K=async(e,t)=>{e.preventDefault(),$({text:v,files:n||[]},{body:{disabledTools:x}}),f(""),l(null),c(null)},W=e=>{b(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},J=(0,d4.I)(e,u);return H.jsx("div",{className:"flex flex-col w-full mx-auto relative size-full",children:H.jsx("div",{className:"mx-auto relative size-full",children:(0,H.jsxs)("div",{className:"flex h-full w-full max-h-[calc(100vh)] overflow-y-auto overflow-x-hidden",children:[(0,H.jsxs)("div",{className:"flex flex-col flex-1 pb-6",children:[(0,H.jsxs)(dX.ri,{className:"overflow-y-hidden",children:[t.maxContextLength?H.jsx(d$.pn,{children:(0,H.jsxs)(d$.u,{children:[H.jsx(d$.aJ,{asChild:!0,children:(0,H.jsxs)("div",{className:"absolute w-full top-0",children:[H.jsx(c9,{className:"w-full rounded-none",value:R.totalTokens/t.maxContextLength*100}),(0,H.jsxs)("div",{className:"justify-between flex felx-row",children:[H.jsx("div",{}),(0,H.jsxs)(ud,{maxTokens:t.maxContextLength||0,usedTokens:R.totalTokens,usage:{inputTokens:R.inputTokens,outputTokens:R.outputTokens,totalTokens:R.totalTokens,cachedInputTokens:R.cachedInputTokens,reasoningTokens:R.reasoningTokens},children:[H.jsx(uu,{}),(0,H.jsxs)(up,{children:[H.jsx(um,{}),(0,H.jsxs)(ug,{children:[H.jsx(uh,{}),H.jsx(uv,{}),H.jsx(uf,{}),H.jsx(ux,{})]})]})]})]})]})}),H.jsx(d$._v,{children:(0,H.jsxs)("p",{children:[Intl.NumberFormat("en-US").format(R.totalTokens)," / ",Intl.NumberFormat("en-US").format(t.maxContextLength)," tokens in the context window used."]})})]})}):null,D?.length===0?H.jsx("div",{className:"size-full flex justify-center items-center",children:(0,H.jsxs)("div",{className:"flex flex-col gap-4 items-center max-w-2xl w-full px-4 my-auto",children:[H.jsx(uR.default,{alt:"Logo",width:120,height:120,className:"h-30 w-40 object-contain"}),H.jsx("p",{className:"text-center text-lg text-muted-foreground",children:"How can I help you today?"}),H.jsx(uj.Z,{agent:t,status:Z,className:"w-80"})]})}):null,(0,H.jsxs)(dX.iG,{className:"px-6",children:[D?.length>0&&H.jsx(uq.K,{messages:D,config:{marginTopFirstMessage:"mt-12"},status:Z,onRegenerate:Q,onAddToolResult:U,UntypedToolPartComponent:u0,addToContext:e=>{c([...d||[],e])},writeAccess:J}),"streaming"===Z?H.jsx(dk,{}):null]})]}),!J&&H.jsx("div",{className:"px-6 mx-auto mt-3",children:H.jsx(d3.C,{variant:"outline",children:"Read access only"})}),i&&H.jsx("div",{className:"mx-5",children:(0,H.jsxs)(eo.bZ,{className:"mb-3",variant:"destructive",children:[H.jsx(df.LPM,{className:"size-4"}),H.jsx(eo.Cd,{children:"Error"}),H.jsx(eo.X,{children:i})]})}),J&&(0,H.jsxs)("form",{onSubmit:K,className:"px-6 border-input border rounded flex mx-5 p-5 flex-col gap-2",children:[(0,H.jsxs)("div",{className:"items-center flex relative gap-2 w-full",children:[r?.fileUploads?.s3endpoint&&H.jsx(d7.ZP,{id:`chat-${e.id}`,selectionLimit:10,allowedFileTypes:[...t.capabilities?.audio||[],...t.capabilities?.video||[],...t.capabilities?.files||[],...t.capabilities?.images||[]],dependencies:[],onConfirm:e=>{c(e)}}),H.jsx(d$.pn,{children:(0,H.jsxs)(d$.u,{children:[H.jsx(d$.aJ,{asChild:!0,children:H.jsx(dJ.z,{type:"button",variant:"outline",size:"icon",className:"shrink-0",onClick:()=>I(!0),children:H.jsx(dG.Z,{className:"h-5 w-5 text-muted-foreground"})})}),H.jsx(d$._v,{children:H.jsx("p",{children:"Insert prompt from library"})})]})}),H.jsx(dD,{autoComplete:"off",autoFocus:!0,minRows:1,value:v,ref:k,onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),K(e))},onChange:e=>f(e.target.value),name:"message",placeholder:"Ask me anything...",className:"max-h-40 px-3 py-2 text-sm shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 w-full items-center h-28 resize-none overflow-hidden dark:bg-card/35"}),"streaming"!==Z?H.jsx(dJ.z,{className:"shrink-0",variant:"secondary",size:"icon",disabled:"submitted"===Z||!v?.trim(),children:H.jsx(dU,{className:" size-6 text-muted-foreground"})}):H.jsx(dJ.z,{className:"shrink-0",variant:"secondary",size:"icon",onClick:F,children:H.jsx(df.wNq,{className:"size-6 text-muted-foreground"})})]}),H.jsx("div",{className:"grid grid-cols-3 sm:grid-cols-4 gap-3",children:d?.map(e=>H.jsx(d7.jU,{s3Key:e,disabled:!0,active:!1,onRemove:()=>{c(d?.filter(t=>t!==e))}}))})]}),H.jsx(dW.x,{isOpen:g,onClose:()=>h(!1),messages:D||[],sessionTitle:e.title}),H.jsx(uV,{open:M,onOpenChange:I,onSelectPrompt:e=>{(0,uG.H)(e.content).length>0?(T(e),S(!0)):(V(e.content),P({variables:{id:e.id,usage_count:(e.usage_count||0)+1}}))},agentId:t.id}),A&&H.jsx(uY,{open:w,onOpenChange:S,variables:(0,uG.H)(A.content),promptName:A.name,onSubmit:e=>{A&&(V(function(e,t){if(!e)return"";if(!t||0===Object.keys(t).length)return e;let o=e;for(let[e,i]of Object.entries(t)){let t=e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),a=RegExp(`\\{\\{${t}\\}\\}`,"g");o=o.replace(a,i||"")}return o}(A.content,e)),P({variables:{id:A.id,usage_count:(A.usage_count||0)+1}}),S(!1),T(null))}})]}),J&&(0,H.jsxs)("div",{className:"w-80 border-l bg-muted/20 p-4 space-y-4",children:[D?.length>0&&H.jsx("div",{children:H.jsx(uj.Z,{agent:t,status:Z,className:"w-80"})}),H.jsx("div",{children:H.jsx("p",{className:"text-sm font-medium text-center",children:t.name})}),t.description&&H.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:t.description}),H.jsx("hr",{className:"my-2"}),H.jsx("div",{className:"mt-1",children:(0,H.jsxs)("div",{className:"border rounded",children:[_.loading&&(0,H.jsxs)("div",{className:"flex flex-row justify-between p-3",children:[H.jsx("p",{className:"text-sm font-medium",children:"Session created by"}),H.jsx(d5.g,{className:"ml-2"})]}),_.data?.userById&&!_.loading&&(0,H.jsxs)("div",{className:"flex flex-row justify-between p-3",children:[H.jsx("p",{className:"text-sm font-medium",children:"Session created by"}),H.jsx("div",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:H.jsx("p",{className:"text-sm font-medium capitalize",children:_.data.userById.name})})]})]})}),e.project&&H.jsx("div",{className:"mt-1",children:(0,H.jsxs)("div",{className:"border rounded",children:[z.loading&&(0,H.jsxs)("div",{className:"flex flex-row justify-between p-3",children:[H.jsx("p",{className:"text-sm font-medium",children:"This chat is part of a project:"}),H.jsx(d5.g,{className:"ml-2"})]}),z.data?.projectById&&!z.loading&&(0,H.jsxs)("div",{className:"flex flex-col p-3 gap-2",children:[H.jsx("p",{className:"text-sm font-medium",children:"Project"}),H.jsx(uH.default,{href:`/projects/${e.project}`,className:"text-sm text-primary hover:underline",children:z.data.projectById.name}),z.data.projectById.description&&H.jsx("p",{className:"text-xs text-muted-foreground",children:z.data.projectById.description})]})]})}),(0,H.jsxs)("div",{children:[H.jsx("p",{className:"text-xs font-medium text-muted-foreground pt-2",children:"You can disable tools for individual messages in this session by clicking the switch:"}),H.jsx(d$.pn,{children:H.jsx("div",{className:"space-y-1 pt-2",children:t.tools&&t.tools.length>0?t.tools.map(e=>{let t=!x.includes(e.id);return(0,H.jsxs)(d$.u,{children:[H.jsx(d$.aJ,{asChild:!0,children:(0,H.jsxs)("div",{className:"p-2 rounded-md border text-xs bg-background flex items-center justify-between",children:[H.jsx("p",{className:"font-medium flex items-center gap-2",children:e.name}),H.jsx(dY.r,{checked:t,onCheckedChange:()=>W(e.id)})]})}),H.jsx(d$._v,{children:H.jsx("p",{className:"max-w-[200px] text-wrap",children:e.description})})]},e.name)}):H.jsx("p",{className:"text-xs text-muted-foreground",children:"No tools enabled."})})})]}),H.jsx("div",{className:"mt-1",children:(0,H.jsxs)(d1.zF,{className:"border rounded",children:[H.jsx(dH.Ol,{className:"px-3 py-1",children:(0,H.jsxs)("div",{className:"flex items-center justify-between",children:[H.jsx("div",{className:"flex flex-col",children:(0,H.jsxs)("p",{className:"text-sm font-medium",children:["Access control (",e.rights_mode,")"]})}),H.jsx(d1.wy,{asChild:!0,children:(0,H.jsxs)(dJ.z,{variant:"ghost",size:"icon",className:"size-8",children:[H.jsx(dV.Z,{className:"size-4"}),H.jsx("span",{className:"sr-only",children:"Toggle"})]})})]})}),H.jsx(d1.Fw,{children:(0,H.jsxs)(dH.aY,{className:"space-y-4 p-3",children:[H.jsx(d2.P,{allowedModes:["private","users","roles"],initialRightsMode:e.rights_mode,initialUsers:e.RBAC?.users,initialRoles:e.RBAC?.roles,onChange:(e,t,o)=>{O({rights_mode:e,users:t,roles:o})}}),(0,H.jsxs)(dJ.z,{disabled:C.loading,onClick:()=>{j({variables:{id:e.id,rights_mode:N.rights_mode,RBAC:{users:N.users,roles:N.roles}}})},children:["Save access rights ",C.loading&&H.jsx(d5.g,{className:"ml-2"})," "]})]})})]})})]})]})})})}let u0=({untypedToolPart:e,callId:t,addToContext:o})=>{let i=e.output;console.log("output",i);let a=e.type?.replace(/ /g,"-");return a=a?.replace(/tool-/g,""),a=a?.replace(/_/g," "),a=a?.charAt(0).toUpperCase()+a?.slice(1),(0,H.jsxs)(uT,{className:"mt-3",defaultOpen:!1,children:[H.jsx(uN,{className:"capitalize",type:a,state:e.state}),(0,H.jsxs)(uO,{children:[H.jsx(u_,{input:e.input}),H.jsx(uz,{output:i?H.jsx(uB.H,{children:"string"==typeof i?i:JSON.stringify(i,null,2)}):!e.errorText&&H.jsx(uE.O,{className:"h-4 w-full"}),errorText:e.errorText})]})]},t)},u2="force-dynamic";function u1({params:e}){let t=(0,et.useSearchParams)().get("promptId"),{data:o,loading:i,error:a}=(0,ei.aM)(dZ.lk,{returnPartialData:!0,fetchPolicy:"network-only",nextFetchPolicy:"network-only",variables:{id:e.session}}),{data:r,loading:s,error:n}=(0,ei.aM)(dZ.as,{skip:!o?.agent_sessionById,variables:{id:e.agent,project:o?.agent_sessionById?.project||void 0}});return i||s?H.jsx("div",{children:H.jsx(uE.O,{className:"w-full h-full"})}):a||n?(0,H.jsxs)(eo.bZ,{variant:"destructive",children:[H.jsx(df.LPM,{className:"size-4"}),H.jsx(eo.Cd,{children:"Error"}),(0,H.jsxs)(eo.X,{children:["Error loading agent ",n?.message||a?.message,"."]})]}):r?.agentById&&o?.agent_sessionById?H.jsx(uX,{session:o?.agent_sessionById,agent:r.agentById,initialPromptId:t||void 0}):(0,H.jsxs)(eo.bZ,{variant:"destructive",children:[H.jsx(df.LPM,{className:"size-4"}),H.jsx(eo.Cd,{children:"Error"}),H.jsx(eo.X,{children:"Agent or session not found."})]})}},30574:(e,t,o)=>{"use strict";o.r(t),o.d(t,{default:()=>a});var i=o(10326);function a({children:e,params:t}){return i.jsx(i.Fragment,{children:e})}o(17577)},14331:(e,t,o)=>{"use strict";o.d(t,{Z:()=>l});var i=o(10326),a=o(19245),r=o(20108),s=o(77961);let n=({agent:e,status:t,className:o})=>{let{data:n}=(0,r.a)({queryKey:["defaultAnimation","idle"],queryFn:async()=>(await fetch("/agent-idle.json")).json(),staleTime:36e5,enabled:!e.animation_idle}),{data:l}=(0,r.a)({queryKey:["defaultAnimation","responding"],queryFn:async()=>(await fetch("/agent-responding.json")).json(),staleTime:36e5,enabled:!e.animation_responding}),{data:d}=(0,r.a)({queryKey:["customAnimation",e.animation_idle],queryFn:async()=>{if(!e.animation_idle)return null;let t=await (0,s.NF)(e.animation_idle);return(await fetch(t)).json()},enabled:!!e.animation_idle,staleTime:3e5}),{data:c}=(0,r.a)({queryKey:["customAnimation",e.animation_responding],queryFn:async()=>{if(!e.animation_responding)return null;let t=await (0,s.NF)(e.animation_responding);return(await fetch(t)).json()},enabled:!!e.animation_responding,staleTime:3e5}),{View:u}=(0,a.kJ)((()=>{switch(t){case"submitted":case"ready":case"error":default:return{animationData:d||n,loop:!0,autoplay:!0};case"streaming":return{animationData:c||l,loop:!0,autoplay:!0}}})());return i.jsx(i.Fragment,{children:i.jsx("div",{className:"",children:i.jsx("div",{className:o,children:u})})})},l=({agent:e,status:t,className:o})=>i.jsx(n,{className:o,agent:e,status:t})},33261:(e,t,o)=>{"use strict";o.d(t,{r:()=>n});var i=o(10326),a=o(41959),r=o(17577),s=o(77863);let n=r.forwardRef(({className:e,...t},o)=>i.jsx(a.fC,{className:(0,s.cn)("peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input",e),...t,ref:o,children:i.jsx(a.bU,{className:(0,s.cn)("pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0")})}));n.displayName=a.fC.displayName},52227:(e,t,o)=>{"use strict";o.d(t,{EE:()=>n,Lq:()=>m,Sh:()=>s,VR:()=>c,er:()=>l,iJ:()=>d});var i=o(39167),a=o(18753),r=o(42270);let s=e=>(0,i.aM)(r.xx,{variables:{page:e?.page??1,limit:e?.limit??20,filters:e?.filters??[],sort:e?.sort??{field:"updatedAt",direction:"DESC"}}}),n=()=>(0,a.D)(r.Iv,{refetchQueries:[{query:r.xx,variables:{page:1,limit:20}}]}),l=()=>(0,a.D)(r.jA),d=()=>(0,a.D)(r.Ll,{refetchQueries:[{query:r.xx,variables:{page:1,limit:20}}]}),c=()=>(0,a.D)(r.re),u=()=>(0,a.D)(r.Nl),p=()=>(0,a.D)(r.m8),m=()=>{let[e]=u(),[t]=p(),[o]=(0,a.D)(r.UK);return{toggleFavorite:async(i,a,r,s,n)=>{r&&n?(await t({variables:{id:n}}),await o({variables:{id:i,favorite_count:Math.max(0,s-1)}})):(await e({variables:{user_id:a,prompt_id:i}}),await o({variables:{id:i,favorite_count:s+1}}))}}}},3151:(e,t,o)=>{"use strict";function i(e){if(!e)return[];let t=e.matchAll(/\{\{([a-zA-Z0-9_]+)\}\}/g),o=new Set;for(let e of Array.from(t))o.add(e[1]);return Array.from(o).sort()}o.d(t,{H:()=>i})},68301:e=>{e.exports=function(e,t){let o;if("function"!=typeof e)throw TypeError(`Expected the first argument to be a \`function\`, got \`${typeof e}\`.`);let i=0;return function(...a){clearTimeout(o);let r=Date.now(),s=t-(r-i);s<=0?(i=r,e.apply(this,a)):o=setTimeout(()=>{i=Date.now(),e.apply(this,a)},s)}}},40281:(e,t,o)=>{"use strict";o.r(t),o.d(t,{default:()=>r,dynamic:()=>a});var i=o(68570);let a=(0,i.createProxy)(String.raw`/home/runner/work/exulu-frontend/exulu-frontend/app/(application)/chat/[agent]/[session]/page.tsx#dynamic`),r=(0,i.createProxy)(String.raw`/home/runner/work/exulu-frontend/exulu-frontend/app/(application)/chat/[agent]/[session]/page.tsx#default`)},25436:(e,t,o)=>{"use strict";o.r(t),o.d(t,{default:()=>i});let i=(0,o(68570).createProxy)(String.raw`/home/runner/work/exulu-frontend/exulu-frontend/app/(application)/chat/[agent]/layout.tsx#default`)}};var t=require("../../../../../webpack-runtime.js");t.C(e);var o=e=>t(t.s=e),i=t.X(0,[9276,3543,9049,590,814,931,6812,7344,1729,3738,5237,8212,4552,108,9874,3702,6226,1025,8315,1051,7944,2270,5600,5974,510,3575,3503,3434],()=>o(91223));module.exports=i})();
|